From ce570b1e96041bf14148b4d0afaa9b4b2ceef7ab Mon Sep 17 00:00:00 2001 From: Enji Cooper Date: Wed, 6 Apr 2016 03:12:44 +0000 Subject: [PATCH 001/159] Chase r296204 by renaming tzsetup(1) to tzsetup(8) in the tests MFC after: 3 days X-MFC with: r296204 Sponsored by: EMC / Isilon Storage Division --- usr.sbin/etcupdate/tests/tzsetup_test.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usr.sbin/etcupdate/tests/tzsetup_test.sh b/usr.sbin/etcupdate/tests/tzsetup_test.sh index dbdcc0ed598..5d3fe89d7a2 100644 --- a/usr.sbin/etcupdate/tests/tzsetup_test.sh +++ b/usr.sbin/etcupdate/tests/tzsetup_test.sh @@ -196,7 +196,7 @@ $COMMAND -nr -d $WORKDIR -D $TEST > $WORKDIR/testn.out cat > $WORKDIR/correct.out < Date: Wed, 6 Apr 2016 03:22:39 +0000 Subject: [PATCH 002/159] [wlanstats] Convert rssi / signal / rate to use float. * Convert rssi/signal/rate to be a single digit precision float * rssi is actually in 1/2 dBm units, so divide it by 2 --- tools/tools/net80211/wlanstats/wlanstats.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/tools/tools/net80211/wlanstats/wlanstats.c b/tools/tools/net80211/wlanstats/wlanstats.c index 50c86fc3fee..0e5556848da 100644 --- a/tools/tools/net80211/wlanstats/wlanstats.c +++ b/tools/tools/net80211/wlanstats/wlanstats.c @@ -365,13 +365,13 @@ static const struct fmt wlanstats[] = { #define S_TX_MCAST AFTER(S_TX_UCAST) { 8, "tx_mcast", "tx_mcast", "multicast data frames sent" }, #define S_RATE AFTER(S_TX_MCAST) - { 5, "rate", "rate", "current transmit rate" }, + { 7, "rate", "rate", "current transmit rate" }, #define S_RSSI AFTER(S_RATE) - { 5, "rssi", "rssi", "current rssi" }, + { 6, "rssi", "rssi", "current rssi" }, #define S_NOISE AFTER(S_RSSI) { 5, "noise", "noise", "current noise floor (dBm)" }, #define S_SIGNAL AFTER(S_NOISE) - { 5, "signal", "sig", "current signal (dBm)" }, + { 6, "signal", "sig", "current signal (dBm)" }, #define S_BEACON_BAD AFTER(S_SIGNAL) { 9, "beacon_bad", "beaconbad", "bad beacons received" }, #define S_AMPDU_BARTX AFTER(S_BEACON_BAD) @@ -635,16 +635,17 @@ wlan_getinfo(struct wlanstatfoo_p *wf, int s, char b[], size_t bs) switch (s) { case S_RATE: - snprintf(b, bs, "%uM", si->isi_txmbps/2); + snprintf(b, bs, "%.1fM", (float) si->isi_txmbps/2.0); return 1; case S_RSSI: - snprintf(b, bs, "%d", si->isi_rssi); + snprintf(b, bs, "%.1f", (float) si->isi_rssi/2.0); return 1; case S_NOISE: snprintf(b, bs, "%d", si->isi_noise); return 1; case S_SIGNAL: - snprintf(b, bs, "%d", si->isi_rssi + si->isi_noise); + snprintf(b, bs, "%.1f", (float) si->isi_rssi/2.0 + + (float) si->isi_noise); return 1; case S_RX_AUTH_FAIL_CODE: if (wf->cur.is_rx_authfail_code == 0) From 496dfa89a67177bd6204f2bd45a5dfd6f2fab781 Mon Sep 17 00:00:00 2001 From: John Baldwin Date: Wed, 6 Apr 2016 04:10:22 +0000 Subject: [PATCH 003/159] Convert pci_delete_child() to a bus_child_deleted() method. Instead of providing a wrapper around device_delete_child() that the PCI bus and child bus drivers must call explicitly, move the bulk of the logic from pci_delete_child() into a bus_child_deleted() method (pci_child_deleted()). This allows PCI devices to be safely deleted via device_delete_child(). - Add a bus_child_deleted method to the ACPI PCI bus which clears the device_t associated with the corresponding ACPI handle in addition to the normal PCI bus cleanup. - Change cardbus_detach_card to call device_delete_children() and move CardBus-specific delete logic into a new cardbus_child_deleted() method. - Use device_delete_child() instead of pci_delete_child() in the SRIOV code. - Add a bus_child_deleted method to the OpenFirmware PCI bus drivers which frees the OpenFirmware device info for each PCI device. Reviewed by: imp Tested on: amd64 (CardBus and PCI-e hotplug) Differential Revision: https://reviews.freebsd.org/D5831 --- sys/dev/acpica/acpi_pci.c | 12 ++++++++++++ sys/dev/cardbus/cardbus.c | 36 ++++++++++++++++++------------------ sys/dev/pci/pci.c | 15 ++++++++------- sys/dev/pci/pci_iov.c | 4 ++-- sys/dev/pci/pci_private.h | 2 +- sys/powerpc/ofw/ofw_pcibus.c | 12 ++++++++++++ sys/sparc64/pci/ofw_pcibus.c | 12 ++++++++++++ 7 files changed, 65 insertions(+), 28 deletions(-) diff --git a/sys/dev/acpica/acpi_pci.c b/sys/dev/acpica/acpi_pci.c index 9509f82313a..09cecc3283a 100644 --- a/sys/dev/acpica/acpi_pci.c +++ b/sys/dev/acpica/acpi_pci.c @@ -70,6 +70,7 @@ CTASSERT(ACPI_STATE_D2 == PCI_POWERSTATE_D2); CTASSERT(ACPI_STATE_D3 == PCI_POWERSTATE_D3); static int acpi_pci_attach(device_t dev); +static void acpi_pci_child_deleted(device_t dev, device_t child); static int acpi_pci_child_location_str_method(device_t cbdev, device_t child, char *buf, size_t buflen); static int acpi_pci_probe(device_t dev); @@ -97,6 +98,7 @@ static device_method_t acpi_pci_methods[] = { /* Bus interface */ DEVMETHOD(bus_read_ivar, acpi_pci_read_ivar), DEVMETHOD(bus_write_ivar, acpi_pci_write_ivar), + DEVMETHOD(bus_child_deleted, acpi_pci_child_deleted), DEVMETHOD(bus_child_location_str, acpi_pci_child_location_str_method), DEVMETHOD(bus_get_dma_tag, acpi_pci_get_dma_tag), DEVMETHOD(bus_get_domain, acpi_get_domain), @@ -153,6 +155,16 @@ acpi_pci_write_ivar(device_t dev, device_t child, int which, uintptr_t value) return (pci_write_ivar(dev, child, which, value)); } +static void +acpi_pci_child_deleted(device_t dev, device_t child) +{ + struct acpi_pci_devinfo *dinfo = device_get_ivars(child); + + if (acpi_get_device(dinfo->ap_handle) == child) + AcpiDetachData(dinfo->ap_handle, acpi_fake_objhandler); + pci_child_deleted(dev, child); +} + static int acpi_pci_child_location_str_method(device_t cbdev, device_t child, char *buf, size_t buflen) diff --git a/sys/dev/cardbus/cardbus.c b/sys/dev/cardbus/cardbus.c index b33f462a944..e785b0f26f7 100644 --- a/sys/dev/cardbus/cardbus.c +++ b/sys/dev/cardbus/cardbus.c @@ -226,31 +226,30 @@ cardbus_attach_card(device_t cbdev) return (ENOENT); } +static void +cardbus_child_deleted(device_t cbdev, device_t child) +{ + struct cardbus_devinfo *dinfo = device_get_ivars(child); + + if (dinfo->pci.cfg.dev != child) + device_printf(cbdev, "devinfo dev mismatch\n"); + cardbus_device_destroy(dinfo); + pci_child_deleted(cbdev, child); +} + static int cardbus_detach_card(device_t cbdev) { - int numdevs; - device_t *devlist; - int tmp; int err = 0; - if (device_get_children(cbdev, &devlist, &numdevs) != 0) - return (ENOENT); - if (numdevs == 0) { - free(devlist, M_TEMP); - return (ENOENT); - } + err = bus_generic_detach(cbdev); + if (err) + return (err); + err = device_delete_children(cbdev); + if (err) + return (err); - for (tmp = 0; tmp < numdevs; tmp++) { - struct cardbus_devinfo *dinfo = device_get_ivars(devlist[tmp]); - - if (dinfo->pci.cfg.dev != devlist[tmp]) - device_printf(cbdev, "devinfo dev mismatch\n"); - cardbus_device_destroy(dinfo); - pci_delete_child(cbdev, devlist[tmp]); - } POWER_DISABLE_SOCKET(device_get_parent(cbdev), cbdev); - free(devlist, M_TEMP); return (err); } @@ -335,6 +334,7 @@ static device_method_t cardbus_methods[] = { DEVMETHOD(device_resume, cardbus_resume), /* Bus interface */ + DEVMETHOD(bus_child_deleted, cardbus_child_deleted), DEVMETHOD(bus_get_dma_tag, bus_generic_get_dma_tag), DEVMETHOD(bus_read_ivar, cardbus_read_ivar), DEVMETHOD(bus_driver_added, cardbus_driver_added), diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c index 8343181781f..fbe9abde00c 100644 --- a/sys/dev/pci/pci.c +++ b/sys/dev/pci/pci.c @@ -161,6 +161,7 @@ static device_method_t pci_methods[] = { DEVMETHOD(bus_release_resource, pci_release_resource), DEVMETHOD(bus_activate_resource, pci_activate_resource), DEVMETHOD(bus_deactivate_resource, pci_deactivate_resource), + DEVMETHOD(bus_child_deleted, pci_child_deleted), DEVMETHOD(bus_child_detached, pci_child_detached), DEVMETHOD(bus_child_pnpinfo_str, pci_child_pnpinfo_str_method), DEVMETHOD(bus_child_location_str, pci_child_location_str_method), @@ -5194,7 +5195,7 @@ pci_deactivate_resource(device_t dev, device_t child, int type, } void -pci_delete_child(device_t dev, device_t child) +pci_child_deleted(device_t dev, device_t child) { struct resource_list_entry *rle; struct resource_list *rl; @@ -5203,12 +5204,13 @@ pci_delete_child(device_t dev, device_t child) dinfo = device_get_ivars(child); rl = &dinfo->resources; - if (device_is_attached(child)) - device_detach(child); - /* Turn off access to resources we're about to free */ - pci_write_config(child, PCIR_COMMAND, pci_read_config(child, - PCIR_COMMAND, 2) & ~(PCIM_CMD_MEMEN | PCIM_CMD_PORTEN), 2); + if (bus_child_present(child) != 0) { + pci_write_config(child, PCIR_COMMAND, pci_read_config(child, + PCIR_COMMAND, 2) & ~(PCIM_CMD_MEMEN | PCIM_CMD_PORTEN), 2); + + pci_disable_busmaster(child); + } /* Free all allocated resources */ STAILQ_FOREACH(rle, rl, link) { @@ -5229,7 +5231,6 @@ pci_delete_child(device_t dev, device_t child) } resource_list_free(rl); - device_delete_child(dev, child); pci_freecfg(dinfo); } diff --git a/sys/dev/pci/pci_iov.c b/sys/dev/pci/pci_iov.c index 8189ffbc337..d216557e638 100644 --- a/sys/dev/pci/pci_iov.c +++ b/sys/dev/pci/pci_iov.c @@ -640,7 +640,7 @@ pci_iov_enumerate_vfs(struct pci_devinfo *dinfo, const nvlist_t *config, error = PCI_IOV_ADD_VF(dev, i, driver_config); if (error != 0) { device_printf(dev, "Failed to add VF %d\n", i); - pci_delete_child(bus, vf); + device_delete_child(bus, vf); } } @@ -833,7 +833,7 @@ pci_iov_delete(struct cdev *cdev) vf = devlist[i]; if (pci_iov_is_child_vf(iov, vf)) - pci_delete_child(bus, vf); + device_delete_child(bus, vf); } PCI_IOV_UNINIT(dev); diff --git a/sys/dev/pci/pci_private.h b/sys/dev/pci/pci_private.h index 9b018ab4b93..e11dcfa32a2 100644 --- a/sys/dev/pci/pci_private.h +++ b/sys/dev/pci/pci_private.h @@ -57,7 +57,6 @@ void pci_add_resources(device_t bus, device_t dev, int force, uint32_t prefetchmask); void pci_add_resources_ea(device_t bus, device_t dev, int alloc_iov); int pci_attach_common(device_t dev); -void pci_delete_child(device_t dev, device_t child); void pci_driver_added(device_t dev, driver_t *driver); int pci_ea_is_enabled(device_t dev, int rid); int pci_print_child(device_t dev, device_t child); @@ -122,6 +121,7 @@ struct pci_devinfo *pci_read_device(device_t pcib, int d, int b, int s, int f, size_t size); void pci_print_verbose(struct pci_devinfo *dinfo); int pci_freecfg(struct pci_devinfo *dinfo); +void pci_child_deleted(device_t dev, device_t child); void pci_child_detached(device_t dev, device_t child); int pci_child_location_str_method(device_t cbdev, device_t child, char *buf, size_t buflen); diff --git a/sys/powerpc/ofw/ofw_pcibus.c b/sys/powerpc/ofw/ofw_pcibus.c index cde3c74ed78..4ce6e736348 100644 --- a/sys/powerpc/ofw/ofw_pcibus.c +++ b/sys/powerpc/ofw/ofw_pcibus.c @@ -61,6 +61,7 @@ static device_probe_t ofw_pcibus_probe; static device_attach_t ofw_pcibus_attach; static pci_assign_interrupt_t ofw_pcibus_assign_interrupt; static ofw_bus_get_devinfo_t ofw_pcibus_get_devinfo; +static bus_child_deleted_t ofw_pcibus_child_deleted; static int ofw_pcibus_child_pnpinfo_str_method(device_t cbdev, device_t child, char *buf, size_t buflen); @@ -73,6 +74,7 @@ static device_method_t ofw_pcibus_methods[] = { DEVMETHOD(device_attach, ofw_pcibus_attach), /* Bus interface */ + DEVMETHOD(bus_child_deleted, ofw_pcibus_child_deleted), DEVMETHOD(bus_child_pnpinfo_str, ofw_pcibus_child_pnpinfo_str_method), /* PCI interface */ @@ -269,6 +271,16 @@ ofw_pcibus_enum_bus(device_t dev, u_int domain, u_int busno) } } +static void +ofw_pcibus_child_deleted(device_t dev, device_t child) +{ + struct ofw_pcibus_devinfo *dinfo; + + dinfo = device_get_ivars(dev); + ofw_bus_gen_destroy_devinfo(&dinfo->opd_obdinfo); + pci_child_deleted(dev, child); +} + static int ofw_pcibus_child_pnpinfo_str_method(device_t cbdev, device_t child, char *buf, size_t buflen) diff --git a/sys/sparc64/pci/ofw_pcibus.c b/sys/sparc64/pci/ofw_pcibus.c index 92b9f76d1bc..08ffa5d69b8 100644 --- a/sys/sparc64/pci/ofw_pcibus.c +++ b/sys/sparc64/pci/ofw_pcibus.c @@ -65,6 +65,7 @@ static void ofw_pcibus_setup_device(device_t bridge, uint32_t clock, u_int busno, u_int slot, u_int func); /* Methods */ +static bus_child_deleted_t ofw_pcibus_child_deleted; static bus_child_pnpinfo_str_t ofw_pcibus_pnpinfo_str; static device_attach_t ofw_pcibus_attach; static device_probe_t ofw_pcibus_probe; @@ -77,6 +78,7 @@ static device_method_t ofw_pcibus_methods[] = { DEVMETHOD(device_attach, ofw_pcibus_attach), /* Bus interface */ + DEVMETHOD(bus_child_deleted, ofw_pcibus_child_deleted), DEVMETHOD(bus_child_pnpinfo_str, ofw_pcibus_pnpinfo_str), /* PCI interface */ @@ -327,6 +329,16 @@ ofw_pcibus_get_devinfo(device_t bus, device_t dev) return (&dinfo->opd_obdinfo); } +static void +ofw_pcibus_child_deleted(device_t dev, device_t child) +{ + struct ofw_pcibus_devinfo *dinfo; + + dinfo = device_get_ivars(dev); + ofw_bus_gen_destroy_devinfo(&dinfo->opd_obdinfo); + pci_child_deleted(dev, child); +} + static int ofw_pcibus_pnpinfo_str(device_t dev, device_t child, char *buf, size_t buflen) From 06152bf0e1fcc94e03f801c97876e9715d36abe2 Mon Sep 17 00:00:00 2001 From: Ravi Pokala Date: Wed, 6 Apr 2016 04:50:28 +0000 Subject: [PATCH 004/159] Storage Controller Interface driver - typo in unimplemented macro in scic_sds_controller_registers.h s/contoller/controller/ PR: 207336 Submitted by: Tony Narlock --- .../isci/scil/scic_sds_controller_registers.h | 2 +- sys/net/if_lagg.c | 263 +++++++++++++++--- sys/net/if_lagg.h | 54 +++- 3 files changed, 279 insertions(+), 40 deletions(-) diff --git a/sys/dev/isci/scil/scic_sds_controller_registers.h b/sys/dev/isci/scil/scic_sds_controller_registers.h index e4a0fb46c34..81a1f3f8f01 100644 --- a/sys/dev/isci/scil/scic_sds_controller_registers.h +++ b/sys/dev/isci/scil/scic_sds_controller_registers.h @@ -586,7 +586,7 @@ extern "C" { #define SCU_PTSGRTC_READ(controller) \ scu_ptsg_register_read( \ - contoller, \ + controller, \ real_time_clock \ ) /*@}*/ diff --git a/sys/net/if_lagg.c b/sys/net/if_lagg.c index 04771229b73..2f425a08943 100644 --- a/sys/net/if_lagg.c +++ b/sys/net/if_lagg.c @@ -101,7 +101,11 @@ static const char laggname[] = "lagg"; static void lagg_lladdr(struct lagg_softc *, uint8_t *); static void lagg_capabilities(struct lagg_softc *); static void lagg_port_lladdr(struct lagg_port *, uint8_t *, lagg_llqtype); -static void lagg_port_setlladdr(void *, int); +static void lagg_port_ops(void *, int); +static void lagg_llq_action_mtu(struct lagg_softc *, + struct lagg_llq_slist_entry *); +static void lagg_llq_action_lladdr(struct lagg_softc *, + struct lagg_llq_slist_entry *); static int lagg_port_create(struct lagg_softc *, struct ifnet *); static int lagg_port_destroy(struct lagg_port *, int); static struct mbuf *lagg_input(struct ifnet *, struct mbuf *); @@ -130,6 +134,9 @@ static int lagg_media_change(struct ifnet *); static void lagg_media_status(struct ifnet *, struct ifmediareq *); static struct lagg_port *lagg_link_active(struct lagg_softc *, struct lagg_port *); +static int lagg_change_mtu(struct ifnet *, struct ifreq *); +static void _lagg_free_llq_entries(struct lagg_llq_slist_entry *); +static void lagg_free_llq_entries(struct lagg_softc *, lagg_llq_idx); /* Simple round robin */ static void lagg_rr_attach(struct lagg_softc *); @@ -165,6 +172,24 @@ static struct mbuf *lagg_lacp_input(struct lagg_softc *, struct lagg_port *, struct mbuf *); static void lagg_lacp_lladdr(struct lagg_softc *); +/* + * This action handler shall be called from taskqueue handler for each + * submitted operation + */ +typedef void (*lagg_llq_action)(struct lagg_softc *, + struct lagg_llq_slist_entry *); + +/* + * lagg llq action Table: Called at the taskqueue context for each + * submitted operations. + * Contents SHOULD be in sync with lagg_llq_idx index. + * New entries shall be appended. + */ +static const lagg_llq_action llq_action[LAGG_LLQ_MAX] = { + lagg_llq_action_lladdr, /* Maps to LAGG_LLQ_LLADDR index */ + lagg_llq_action_mtu, /* Maps to LAGG_LLQ_MTU index */ +}; + /* lagg protocol table */ static const struct lagg_proto { lagg_proto pr_num; @@ -487,7 +512,7 @@ lagg_clone_create(struct if_clone *ifc, int unit, caddr_t params) LAGG_LOCK_INIT(sc); SLIST_INIT(&sc->sc_ports); - TASK_INIT(&sc->sc_lladdr_task, 0, lagg_port_setlladdr, sc); + TASK_INIT(&sc->sc_llq_task, 0, lagg_port_ops, sc); /* Initialise pseudo media types */ ifmedia_init(&sc->sc_media, 0, lagg_media_change, @@ -505,6 +530,10 @@ lagg_clone_create(struct if_clone *ifc, int unit, caddr_t params) ifp->if_flags = IFF_SIMPLEX | IFF_BROADCAST | IFF_MULTICAST; ifp->if_capenable = ifp->if_capabilities = IFCAP_HWSTATS; + mtx_init(&sc->sc_mtu_ctxt.mtu_sync.lock, ifp->if_xname, + "mtu_sync_lock", MTX_DEF); + cv_init(&sc->sc_mtu_ctxt.mtu_sync.cv, "mtu_sync_cv"); + /* * Attach as an ordinary ethernet device, children will be attached * as special device IFT_IEEE8023ADLAG. @@ -553,7 +582,9 @@ lagg_clone_destroy(struct ifnet *ifp) SLIST_REMOVE(&V_lagg_list, sc, lagg_softc, sc_entries); LAGG_LIST_UNLOCK(); - taskqueue_drain(taskqueue_swi, &sc->sc_lladdr_task); + taskqueue_drain(taskqueue_swi, &sc->sc_llq_task); + cv_destroy(&sc->sc_mtu_ctxt.mtu_sync.cv); + mtx_destroy(&sc->sc_mtu_ctxt.mtu_sync.lock); LAGG_LOCK_DESTROY(sc); free(sc, M_DEVBUF); } @@ -645,7 +676,8 @@ lagg_port_lladdr(struct lagg_port *lp, uint8_t *lladdr, lagg_llqtype llq_type) { struct lagg_softc *sc = lp->lp_softc; struct ifnet *ifp = lp->lp_ifp; - struct lagg_llq *llq; + struct lagg_llq_slist_entry *cmn_llq; + struct lagg_lladdr_llq_ctxt *llq_ctxt; LAGG_WLOCK_ASSERT(sc); @@ -658,51 +690,213 @@ lagg_port_lladdr(struct lagg_port *lp, uint8_t *lladdr, lagg_llqtype llq_type) return; /* Check to make sure its not already queued to be changed */ - SLIST_FOREACH(llq, &sc->sc_llq_head, llq_entries) { - if (llq->llq_ifp == ifp) { + SLIST_FOREACH(cmn_llq, &sc->sc_llq[LAGG_LLQ_LLADDR], + llq_entries) { + llq_ctxt = (struct lagg_lladdr_llq_ctxt *)cmn_llq; + if (llq_ctxt->llq_ifp == ifp) { /* Update lladdr, it may have changed */ - bcopy(lladdr, llq->llq_lladdr, ETHER_ADDR_LEN); + bcopy(lladdr, llq_ctxt->llq_lladdr, ETHER_ADDR_LEN); return; } } - llq = malloc(sizeof(struct lagg_llq), M_DEVBUF, M_NOWAIT | M_ZERO); - if (llq == NULL) /* XXX what to do */ + llq_ctxt = malloc(sizeof(struct lagg_lladdr_llq_ctxt), M_DEVBUF, + M_NOWAIT | M_ZERO); + if (llq_ctxt == NULL) /* XXX what to do */ return; - llq->llq_ifp = ifp; - llq->llq_type = llq_type; - bcopy(lladdr, llq->llq_lladdr, ETHER_ADDR_LEN); + llq_ctxt->llq_ifp = ifp; + llq_ctxt->llq_type = llq_type; + bcopy(lladdr, llq_ctxt->llq_lladdr, ETHER_ADDR_LEN); /* XXX: We should insert to tail */ - SLIST_INSERT_HEAD(&sc->sc_llq_head, llq, llq_entries); + SLIST_INSERT_HEAD(&sc->sc_llq[LAGG_LLQ_LLADDR], + (struct lagg_llq_slist_entry *)llq_ctxt, llq_entries); - taskqueue_enqueue(taskqueue_swi, &sc->sc_lladdr_task); + taskqueue_enqueue(taskqueue_swi, &sc->sc_llq_task); } /* - * Set the interface MAC address from a taskqueue to avoid a LOR. + * Set the interface MTU, MAC address from a taskqueue to avoid a LOR. * * Set noinline to be dtrace-friendly */ static __noinline void -lagg_port_setlladdr(void *arg, int pending) +lagg_port_ops(void *arg, int pending) { struct lagg_softc *sc = (struct lagg_softc *)arg; - struct lagg_llq *llq, *head; - struct ifnet *ifp; + struct lagg_llq_slist_entry *llq_first; + lagg_llq_idx llq_idx; - /* Grab a local reference of the queue and remove it from the softc */ + for (llq_idx = LAGG_LLQ_MIN; llq_idx < LAGG_LLQ_MAX; llq_idx++) { + LAGG_WLOCK(sc); + llq_first = SLIST_FIRST(&sc->sc_llq[llq_idx]); + SLIST_INIT(&sc->sc_llq[llq_idx]); + LAGG_WUNLOCK(sc); + + if (llq_first != NULL) + llq_action[llq_idx](sc, llq_first); + } +} + +static void +lagg_llq_action_mtu(struct lagg_softc *sc, struct lagg_llq_slist_entry *first) +{ + struct lagg_llq_slist_entry *llq; + int err; + + /* Set the new MTU on the lagg interface */ LAGG_WLOCK(sc); - head = SLIST_FIRST(&sc->sc_llq_head); - SLIST_FIRST(&sc->sc_llq_head) = NULL; + sc->sc_ifp->if_mtu = ((struct lagg_mtu_llq_ctxt *)first)->llq_ifr.ifr_mtu; LAGG_WUNLOCK(sc); + /* + * Traverse the queue and set the mtu on each ifp. It is safe to do + * unlocked as we have the only reference to it. + */ + err = EIO; /* In case the list is empty. */ + llq = first; + SLIST_FOREACH_FROM(llq, (struct __llqhd *)NULL, llq_entries) { + struct lagg_mtu_llq_ctxt *llq_ctxt; + + llq_ctxt = (struct lagg_mtu_llq_ctxt *)llq; + /* Set the new MTU on the physical interface */ + err = (*llq_ctxt->llq_ioctl)(llq_ctxt->llq_ifp, SIOCSIFMTU, + (caddr_t)&llq_ctxt->llq_ifr); + if (err) { + if_printf(llq_ctxt->llq_ifp, + "Failed to change MTU from %d to %d (err %d)\n", + llq_ctxt->llq_old_mtu, llq_ctxt->llq_ifr.ifr_mtu, err); + break; + } + } + + if (err) { + /* Restore the old MTU on the lagg interface */ + LAGG_WLOCK(sc); + sc->sc_ifp->if_mtu = ((struct lagg_mtu_llq_ctxt *)first)->llq_old_mtu; + LAGG_WUNLOCK(sc); + + /* Restore the old MTU on the physical interface */ + llq = first; + SLIST_FOREACH_FROM(llq, (struct __llqhd *)NULL, llq_entries) { + struct lagg_mtu_llq_ctxt *llq_ctxt; + + llq_ctxt = (struct lagg_mtu_llq_ctxt *)llq; + llq_ctxt->llq_ifr.ifr_mtu = llq_ctxt->llq_old_mtu; + err = (*llq_ctxt->llq_ioctl) + (llq_ctxt->llq_ifp, SIOCSIFMTU, (caddr_t)&llq_ctxt->llq_ifr); + if (err) { + if_printf(llq_ctxt->llq_ifp, + "Failed to restore MTU to %d (err %d)\n", + llq_ctxt->llq_old_mtu, err); + } + } + } + + /* Free the MTU LLQ entries */ + _lagg_free_llq_entries(first); + + mtx_lock(&sc->sc_mtu_ctxt.mtu_sync.lock); + sc->sc_mtu_ctxt.mtu_cmd_ret = err; + /* Signal for command completion */ + cv_signal(&sc->sc_mtu_ctxt.mtu_sync.cv); + mtx_unlock(&sc->sc_mtu_ctxt.mtu_sync.lock); +} + +static void +_lagg_free_llq_entries(struct lagg_llq_slist_entry *llq) +{ + struct lagg_llq_slist_entry *tmp_llq; + + SLIST_FOREACH_FROM_SAFE(llq, (struct __llqhd *)NULL, llq_entries, + tmp_llq) { + free(llq, M_DEVBUF); + } +} + +static void +lagg_free_llq_entries(struct lagg_softc *sc, lagg_llq_idx idx) +{ + struct lagg_llq_slist_entry *llq; + + LAGG_WLOCK_ASSERT(sc); + + llq = SLIST_FIRST(&sc->sc_llq[idx]); + SLIST_INIT(&sc->sc_llq[idx]); + + _lagg_free_llq_entries(llq); +} + +static int +lagg_change_mtu(struct ifnet *ifp, struct ifreq *ifr) +{ + struct lagg_softc *sc; + struct lagg_port *lp; + struct lagg_mtu_llq_ctxt *llq_ctxt; + int ret; + + sc = (struct lagg_softc *)ifp->if_softc; + ret = 0; + + LAGG_WLOCK(sc); + if (SLIST_EMPTY(&sc->sc_ports)) { + LAGG_WUNLOCK(sc); + return (EIO); + } else if (sc->sc_mtu_ctxt.busy) { + LAGG_WUNLOCK(sc); + return (EBUSY); + } else if (ifp->if_mtu == ifr->ifr_mtu) { + LAGG_WUNLOCK(sc); + return (0); + } + sc->sc_mtu_ctxt.busy = TRUE; + + SLIST_FOREACH(lp, &sc->sc_ports, lp_entries) { + llq_ctxt = malloc(sizeof(struct lagg_mtu_llq_ctxt), M_DEVBUF, + M_NOWAIT); + if (llq_ctxt == NULL) { + lagg_free_llq_entries(sc, LAGG_LLQ_MTU); + ret = ENOMEM; + goto out; + } + SLIST_INSERT_HEAD(&sc->sc_llq[LAGG_LLQ_MTU], + (struct lagg_llq_slist_entry *)llq_ctxt, llq_entries); + + bcopy(ifr, &llq_ctxt->llq_ifr, sizeof(struct ifreq)); + llq_ctxt->llq_old_mtu = ifp->if_mtu; + llq_ctxt->llq_ifp = lp->lp_ifp; + llq_ctxt->llq_ioctl = lp->lp_ioctl; + } + mtx_lock(&sc->sc_mtu_ctxt.mtu_sync.lock); + taskqueue_enqueue(taskqueue_swi, &sc->sc_llq_task); + LAGG_WUNLOCK(sc); + + /* Wait for the command completion */ + cv_wait(&sc->sc_mtu_ctxt.mtu_sync.cv, &sc->sc_mtu_ctxt.mtu_sync.lock); + ret = sc->sc_mtu_ctxt.mtu_cmd_ret; + mtx_unlock(&sc->sc_mtu_ctxt.mtu_sync.lock); + LAGG_WLOCK(sc); + +out: + sc->sc_mtu_ctxt.busy = FALSE; + LAGG_WUNLOCK(sc); + return (ret); +} + +static void +lagg_llq_action_lladdr(struct lagg_softc *sc, struct lagg_llq_slist_entry *head) +{ + struct lagg_lladdr_llq_ctxt *llq_ctxt; + struct lagg_llq_slist_entry *llq; + struct ifnet *ifp; + /* * Traverse the queue and set the lladdr on each ifp. It is safe to do * unlocked as we have the only reference to it. */ for (llq = head; llq != NULL; llq = head) { - ifp = llq->llq_ifp; + llq_ctxt = (struct lagg_lladdr_llq_ctxt *)llq; + ifp = llq_ctxt->llq_ifp; CURVNET_SET(ifp->if_vnet); @@ -711,9 +905,8 @@ lagg_port_setlladdr(void *arg, int pending) * Note that if_setlladdr() or iflladdr_event handler * may result in arp transmission / lltable updates. */ - if (llq->llq_type == LAGG_LLQTYPE_PHYS) - if_setlladdr(ifp, llq->llq_lladdr, - ETHER_ADDR_LEN); + if (llq_ctxt->llq_type == LAGG_LLQTYPE_PHYS) + if_setlladdr(ifp, llq_ctxt->llq_lladdr, ETHER_ADDR_LEN); else EVENTHANDLER_INVOKE(iflladdr_event, ifp); CURVNET_RESTORE(); @@ -877,7 +1070,8 @@ lagg_port_destroy(struct lagg_port *lp, int rundelport) { struct lagg_softc *sc = lp->lp_softc; struct lagg_port *lp_ptr, *lp0; - struct lagg_llq *llq; + struct lagg_llq_slist_entry *cmn_llq; + struct lagg_lladdr_llq_ctxt *llq_ctxt; struct ifnet *ifp = lp->lp_ifp; uint64_t *pval, vdiff; int i; @@ -940,11 +1134,12 @@ lagg_port_destroy(struct lagg_port *lp, int rundelport) /* Remove any pending lladdr changes from the queue */ if (lp->lp_detaching) { - SLIST_FOREACH(llq, &sc->sc_llq_head, llq_entries) { - if (llq->llq_ifp == ifp) { - SLIST_REMOVE(&sc->sc_llq_head, llq, lagg_llq, - llq_entries); - free(llq, M_DEVBUF); + SLIST_FOREACH(cmn_llq, &sc->sc_llq[LAGG_LLQ_LLADDR], llq_entries) { + llq_ctxt = (struct lagg_lladdr_llq_ctxt *)cmn_llq; + if (llq_ctxt->llq_ifp == ifp) { + SLIST_REMOVE(&sc->sc_llq[LAGG_LLQ_LLADDR], cmn_llq, + lagg_llq_slist_entry, llq_entries); + free(cmn_llq, M_DEVBUF); break; /* Only appears once */ } } @@ -1537,10 +1732,12 @@ lagg_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) break; case SIOCSIFCAP: - case SIOCSIFMTU: - /* Do not allow the MTU or caps to be directly changed */ + /* Do not allow the CAPs to be directly changed. */ error = EINVAL; break; + case SIOCSIFMTU: + error = lagg_change_mtu(ifp, ifr); + break; default: error = ether_ioctl(ifp, cmd, data); diff --git a/sys/net/if_lagg.h b/sys/net/if_lagg.h index 334995e5c33..11e9f2da1b5 100644 --- a/sys/net/if_lagg.h +++ b/sys/net/if_lagg.h @@ -21,6 +21,8 @@ #ifndef _NET_LAGG_H #define _NET_LAGG_H +#include + /* * Global definitions */ @@ -207,18 +209,55 @@ typedef enum { LAGG_LLQTYPE_VIRT, /* Task related to lagg interface itself */ } lagg_llqtype; -/* List of interfaces to have the MAC address modified */ -struct lagg_llq { +/* Adding new entry here, SHOULD also have relevant entry in llq_action */ +typedef enum { + LAGG_LLQ_MIN = 0, + LAGG_LLQ_LLADDR = LAGG_LLQ_MIN, /* MAC Address index */ + LAGG_LLQ_MTU, /* MTU index */ + LAGG_LLQ_MAX /* This SHOULD be the last entry */ +} lagg_llq_idx; + +/* Common list entry definition for each taskq operation */ +struct lagg_llq_slist_entry { + SLIST_ENTRY(lagg_llq_slist_entry) llq_entries; +}; + +/* Context for lladdr llq operation part of lagg soft context */ +struct lagg_lladdr_llq_ctxt { + struct lagg_llq_slist_entry llq_cmn; /* This SHOULD be the first + member */ struct ifnet *llq_ifp; uint8_t llq_lladdr[ETHER_ADDR_LEN]; lagg_llqtype llq_type; - SLIST_ENTRY(lagg_llq) llq_entries; +}; + +/* Context for mtu llq operation part of lagg soft context */ +struct lagg_mtu_llq_ctxt { + struct lagg_llq_slist_entry llq_cmn; /* This SHOULD be the first + member */ + struct ifnet *llq_ifp; + struct ifreq llq_ifr; + uint32_t llq_old_mtu; + int (*llq_ioctl)(struct ifnet *, u_long, caddr_t); }; struct lagg_counters { uint64_t val[IFCOUNTERS]; }; +/* Conditional variables context for lagg operations */ +struct lagg_signal { + struct mtx lock; + struct cv cv; +}; + +/* Lagg MTU context */ +struct lagg_mtu_ctxt { + struct lagg_signal mtu_sync; /* Synchronize cmd completion */ + int mtu_cmd_ret; + bool busy; +}; + struct lagg_softc { struct ifnet *sc_ifp; /* virtual interface */ struct rmlock sc_mtx; @@ -236,9 +275,12 @@ struct lagg_softc { SLIST_HEAD(__tplhd, lagg_port) sc_ports; /* list of interfaces */ SLIST_ENTRY(lagg_softc) sc_entries; - struct task sc_lladdr_task; - SLIST_HEAD(__llqhd, lagg_llq) sc_llq_head; /* interfaces to program - the lladdr on */ + struct task sc_llq_task; /* SYNC & ASYNC ops + enqueued here */ + struct lagg_mtu_ctxt sc_mtu_ctxt; /* MTU programming */ + /* List of LLQs */ + SLIST_HEAD(__llqhd, lagg_llq_slist_entry) sc_llq[LAGG_LLQ_MAX]; + eventhandler_tag vlan_attach; eventhandler_tag vlan_detach; struct callout sc_callout; From 729a4cff7e270b5a0d53a6e94347611d8d688160 Mon Sep 17 00:00:00 2001 From: Ravi Pokala Date: Wed, 6 Apr 2016 04:58:20 +0000 Subject: [PATCH 005/159] Revert accidental submit of WIP as part of r297609 Pointyhat to: rpokala --- sys/net/if_lagg.c | 267 ++++++---------------------------------------- sys/net/if_lagg.h | 54 ++-------- 2 files changed, 41 insertions(+), 280 deletions(-) diff --git a/sys/net/if_lagg.c b/sys/net/if_lagg.c index 2f425a08943..04771229b73 100644 --- a/sys/net/if_lagg.c +++ b/sys/net/if_lagg.c @@ -101,11 +101,7 @@ static const char laggname[] = "lagg"; static void lagg_lladdr(struct lagg_softc *, uint8_t *); static void lagg_capabilities(struct lagg_softc *); static void lagg_port_lladdr(struct lagg_port *, uint8_t *, lagg_llqtype); -static void lagg_port_ops(void *, int); -static void lagg_llq_action_mtu(struct lagg_softc *, - struct lagg_llq_slist_entry *); -static void lagg_llq_action_lladdr(struct lagg_softc *, - struct lagg_llq_slist_entry *); +static void lagg_port_setlladdr(void *, int); static int lagg_port_create(struct lagg_softc *, struct ifnet *); static int lagg_port_destroy(struct lagg_port *, int); static struct mbuf *lagg_input(struct ifnet *, struct mbuf *); @@ -134,9 +130,6 @@ static int lagg_media_change(struct ifnet *); static void lagg_media_status(struct ifnet *, struct ifmediareq *); static struct lagg_port *lagg_link_active(struct lagg_softc *, struct lagg_port *); -static int lagg_change_mtu(struct ifnet *, struct ifreq *); -static void _lagg_free_llq_entries(struct lagg_llq_slist_entry *); -static void lagg_free_llq_entries(struct lagg_softc *, lagg_llq_idx); /* Simple round robin */ static void lagg_rr_attach(struct lagg_softc *); @@ -172,24 +165,6 @@ static struct mbuf *lagg_lacp_input(struct lagg_softc *, struct lagg_port *, struct mbuf *); static void lagg_lacp_lladdr(struct lagg_softc *); -/* - * This action handler shall be called from taskqueue handler for each - * submitted operation - */ -typedef void (*lagg_llq_action)(struct lagg_softc *, - struct lagg_llq_slist_entry *); - -/* - * lagg llq action Table: Called at the taskqueue context for each - * submitted operations. - * Contents SHOULD be in sync with lagg_llq_idx index. - * New entries shall be appended. - */ -static const lagg_llq_action llq_action[LAGG_LLQ_MAX] = { - lagg_llq_action_lladdr, /* Maps to LAGG_LLQ_LLADDR index */ - lagg_llq_action_mtu, /* Maps to LAGG_LLQ_MTU index */ -}; - /* lagg protocol table */ static const struct lagg_proto { lagg_proto pr_num; @@ -512,7 +487,7 @@ lagg_clone_create(struct if_clone *ifc, int unit, caddr_t params) LAGG_LOCK_INIT(sc); SLIST_INIT(&sc->sc_ports); - TASK_INIT(&sc->sc_llq_task, 0, lagg_port_ops, sc); + TASK_INIT(&sc->sc_lladdr_task, 0, lagg_port_setlladdr, sc); /* Initialise pseudo media types */ ifmedia_init(&sc->sc_media, 0, lagg_media_change, @@ -530,10 +505,6 @@ lagg_clone_create(struct if_clone *ifc, int unit, caddr_t params) ifp->if_flags = IFF_SIMPLEX | IFF_BROADCAST | IFF_MULTICAST; ifp->if_capenable = ifp->if_capabilities = IFCAP_HWSTATS; - mtx_init(&sc->sc_mtu_ctxt.mtu_sync.lock, ifp->if_xname, - "mtu_sync_lock", MTX_DEF); - cv_init(&sc->sc_mtu_ctxt.mtu_sync.cv, "mtu_sync_cv"); - /* * Attach as an ordinary ethernet device, children will be attached * as special device IFT_IEEE8023ADLAG. @@ -582,9 +553,7 @@ lagg_clone_destroy(struct ifnet *ifp) SLIST_REMOVE(&V_lagg_list, sc, lagg_softc, sc_entries); LAGG_LIST_UNLOCK(); - taskqueue_drain(taskqueue_swi, &sc->sc_llq_task); - cv_destroy(&sc->sc_mtu_ctxt.mtu_sync.cv); - mtx_destroy(&sc->sc_mtu_ctxt.mtu_sync.lock); + taskqueue_drain(taskqueue_swi, &sc->sc_lladdr_task); LAGG_LOCK_DESTROY(sc); free(sc, M_DEVBUF); } @@ -676,8 +645,7 @@ lagg_port_lladdr(struct lagg_port *lp, uint8_t *lladdr, lagg_llqtype llq_type) { struct lagg_softc *sc = lp->lp_softc; struct ifnet *ifp = lp->lp_ifp; - struct lagg_llq_slist_entry *cmn_llq; - struct lagg_lladdr_llq_ctxt *llq_ctxt; + struct lagg_llq *llq; LAGG_WLOCK_ASSERT(sc); @@ -690,213 +658,51 @@ lagg_port_lladdr(struct lagg_port *lp, uint8_t *lladdr, lagg_llqtype llq_type) return; /* Check to make sure its not already queued to be changed */ - SLIST_FOREACH(cmn_llq, &sc->sc_llq[LAGG_LLQ_LLADDR], - llq_entries) { - llq_ctxt = (struct lagg_lladdr_llq_ctxt *)cmn_llq; - if (llq_ctxt->llq_ifp == ifp) { + SLIST_FOREACH(llq, &sc->sc_llq_head, llq_entries) { + if (llq->llq_ifp == ifp) { /* Update lladdr, it may have changed */ - bcopy(lladdr, llq_ctxt->llq_lladdr, ETHER_ADDR_LEN); + bcopy(lladdr, llq->llq_lladdr, ETHER_ADDR_LEN); return; } } - llq_ctxt = malloc(sizeof(struct lagg_lladdr_llq_ctxt), M_DEVBUF, - M_NOWAIT | M_ZERO); - if (llq_ctxt == NULL) /* XXX what to do */ + llq = malloc(sizeof(struct lagg_llq), M_DEVBUF, M_NOWAIT | M_ZERO); + if (llq == NULL) /* XXX what to do */ return; - llq_ctxt->llq_ifp = ifp; - llq_ctxt->llq_type = llq_type; - bcopy(lladdr, llq_ctxt->llq_lladdr, ETHER_ADDR_LEN); + llq->llq_ifp = ifp; + llq->llq_type = llq_type; + bcopy(lladdr, llq->llq_lladdr, ETHER_ADDR_LEN); /* XXX: We should insert to tail */ - SLIST_INSERT_HEAD(&sc->sc_llq[LAGG_LLQ_LLADDR], - (struct lagg_llq_slist_entry *)llq_ctxt, llq_entries); + SLIST_INSERT_HEAD(&sc->sc_llq_head, llq, llq_entries); - taskqueue_enqueue(taskqueue_swi, &sc->sc_llq_task); + taskqueue_enqueue(taskqueue_swi, &sc->sc_lladdr_task); } /* - * Set the interface MTU, MAC address from a taskqueue to avoid a LOR. + * Set the interface MAC address from a taskqueue to avoid a LOR. * * Set noinline to be dtrace-friendly */ static __noinline void -lagg_port_ops(void *arg, int pending) +lagg_port_setlladdr(void *arg, int pending) { struct lagg_softc *sc = (struct lagg_softc *)arg; - struct lagg_llq_slist_entry *llq_first; - lagg_llq_idx llq_idx; - - for (llq_idx = LAGG_LLQ_MIN; llq_idx < LAGG_LLQ_MAX; llq_idx++) { - LAGG_WLOCK(sc); - llq_first = SLIST_FIRST(&sc->sc_llq[llq_idx]); - SLIST_INIT(&sc->sc_llq[llq_idx]); - LAGG_WUNLOCK(sc); - - if (llq_first != NULL) - llq_action[llq_idx](sc, llq_first); - } -} - -static void -lagg_llq_action_mtu(struct lagg_softc *sc, struct lagg_llq_slist_entry *first) -{ - struct lagg_llq_slist_entry *llq; - int err; - - /* Set the new MTU on the lagg interface */ - LAGG_WLOCK(sc); - sc->sc_ifp->if_mtu = ((struct lagg_mtu_llq_ctxt *)first)->llq_ifr.ifr_mtu; - LAGG_WUNLOCK(sc); - - /* - * Traverse the queue and set the mtu on each ifp. It is safe to do - * unlocked as we have the only reference to it. - */ - err = EIO; /* In case the list is empty. */ - llq = first; - SLIST_FOREACH_FROM(llq, (struct __llqhd *)NULL, llq_entries) { - struct lagg_mtu_llq_ctxt *llq_ctxt; - - llq_ctxt = (struct lagg_mtu_llq_ctxt *)llq; - /* Set the new MTU on the physical interface */ - err = (*llq_ctxt->llq_ioctl)(llq_ctxt->llq_ifp, SIOCSIFMTU, - (caddr_t)&llq_ctxt->llq_ifr); - if (err) { - if_printf(llq_ctxt->llq_ifp, - "Failed to change MTU from %d to %d (err %d)\n", - llq_ctxt->llq_old_mtu, llq_ctxt->llq_ifr.ifr_mtu, err); - break; - } - } - - if (err) { - /* Restore the old MTU on the lagg interface */ - LAGG_WLOCK(sc); - sc->sc_ifp->if_mtu = ((struct lagg_mtu_llq_ctxt *)first)->llq_old_mtu; - LAGG_WUNLOCK(sc); - - /* Restore the old MTU on the physical interface */ - llq = first; - SLIST_FOREACH_FROM(llq, (struct __llqhd *)NULL, llq_entries) { - struct lagg_mtu_llq_ctxt *llq_ctxt; - - llq_ctxt = (struct lagg_mtu_llq_ctxt *)llq; - llq_ctxt->llq_ifr.ifr_mtu = llq_ctxt->llq_old_mtu; - err = (*llq_ctxt->llq_ioctl) - (llq_ctxt->llq_ifp, SIOCSIFMTU, (caddr_t)&llq_ctxt->llq_ifr); - if (err) { - if_printf(llq_ctxt->llq_ifp, - "Failed to restore MTU to %d (err %d)\n", - llq_ctxt->llq_old_mtu, err); - } - } - } - - /* Free the MTU LLQ entries */ - _lagg_free_llq_entries(first); - - mtx_lock(&sc->sc_mtu_ctxt.mtu_sync.lock); - sc->sc_mtu_ctxt.mtu_cmd_ret = err; - /* Signal for command completion */ - cv_signal(&sc->sc_mtu_ctxt.mtu_sync.cv); - mtx_unlock(&sc->sc_mtu_ctxt.mtu_sync.lock); -} - -static void -_lagg_free_llq_entries(struct lagg_llq_slist_entry *llq) -{ - struct lagg_llq_slist_entry *tmp_llq; - - SLIST_FOREACH_FROM_SAFE(llq, (struct __llqhd *)NULL, llq_entries, - tmp_llq) { - free(llq, M_DEVBUF); - } -} - -static void -lagg_free_llq_entries(struct lagg_softc *sc, lagg_llq_idx idx) -{ - struct lagg_llq_slist_entry *llq; - - LAGG_WLOCK_ASSERT(sc); - - llq = SLIST_FIRST(&sc->sc_llq[idx]); - SLIST_INIT(&sc->sc_llq[idx]); - - _lagg_free_llq_entries(llq); -} - -static int -lagg_change_mtu(struct ifnet *ifp, struct ifreq *ifr) -{ - struct lagg_softc *sc; - struct lagg_port *lp; - struct lagg_mtu_llq_ctxt *llq_ctxt; - int ret; - - sc = (struct lagg_softc *)ifp->if_softc; - ret = 0; - - LAGG_WLOCK(sc); - if (SLIST_EMPTY(&sc->sc_ports)) { - LAGG_WUNLOCK(sc); - return (EIO); - } else if (sc->sc_mtu_ctxt.busy) { - LAGG_WUNLOCK(sc); - return (EBUSY); - } else if (ifp->if_mtu == ifr->ifr_mtu) { - LAGG_WUNLOCK(sc); - return (0); - } - sc->sc_mtu_ctxt.busy = TRUE; - - SLIST_FOREACH(lp, &sc->sc_ports, lp_entries) { - llq_ctxt = malloc(sizeof(struct lagg_mtu_llq_ctxt), M_DEVBUF, - M_NOWAIT); - if (llq_ctxt == NULL) { - lagg_free_llq_entries(sc, LAGG_LLQ_MTU); - ret = ENOMEM; - goto out; - } - SLIST_INSERT_HEAD(&sc->sc_llq[LAGG_LLQ_MTU], - (struct lagg_llq_slist_entry *)llq_ctxt, llq_entries); - - bcopy(ifr, &llq_ctxt->llq_ifr, sizeof(struct ifreq)); - llq_ctxt->llq_old_mtu = ifp->if_mtu; - llq_ctxt->llq_ifp = lp->lp_ifp; - llq_ctxt->llq_ioctl = lp->lp_ioctl; - } - mtx_lock(&sc->sc_mtu_ctxt.mtu_sync.lock); - taskqueue_enqueue(taskqueue_swi, &sc->sc_llq_task); - LAGG_WUNLOCK(sc); - - /* Wait for the command completion */ - cv_wait(&sc->sc_mtu_ctxt.mtu_sync.cv, &sc->sc_mtu_ctxt.mtu_sync.lock); - ret = sc->sc_mtu_ctxt.mtu_cmd_ret; - mtx_unlock(&sc->sc_mtu_ctxt.mtu_sync.lock); - LAGG_WLOCK(sc); - -out: - sc->sc_mtu_ctxt.busy = FALSE; - LAGG_WUNLOCK(sc); - return (ret); -} - -static void -lagg_llq_action_lladdr(struct lagg_softc *sc, struct lagg_llq_slist_entry *head) -{ - struct lagg_lladdr_llq_ctxt *llq_ctxt; - struct lagg_llq_slist_entry *llq; + struct lagg_llq *llq, *head; struct ifnet *ifp; + /* Grab a local reference of the queue and remove it from the softc */ + LAGG_WLOCK(sc); + head = SLIST_FIRST(&sc->sc_llq_head); + SLIST_FIRST(&sc->sc_llq_head) = NULL; + LAGG_WUNLOCK(sc); + /* * Traverse the queue and set the lladdr on each ifp. It is safe to do * unlocked as we have the only reference to it. */ for (llq = head; llq != NULL; llq = head) { - llq_ctxt = (struct lagg_lladdr_llq_ctxt *)llq; - ifp = llq_ctxt->llq_ifp; + ifp = llq->llq_ifp; CURVNET_SET(ifp->if_vnet); @@ -905,8 +711,9 @@ lagg_llq_action_lladdr(struct lagg_softc *sc, struct lagg_llq_slist_entry *head) * Note that if_setlladdr() or iflladdr_event handler * may result in arp transmission / lltable updates. */ - if (llq_ctxt->llq_type == LAGG_LLQTYPE_PHYS) - if_setlladdr(ifp, llq_ctxt->llq_lladdr, ETHER_ADDR_LEN); + if (llq->llq_type == LAGG_LLQTYPE_PHYS) + if_setlladdr(ifp, llq->llq_lladdr, + ETHER_ADDR_LEN); else EVENTHANDLER_INVOKE(iflladdr_event, ifp); CURVNET_RESTORE(); @@ -1070,8 +877,7 @@ lagg_port_destroy(struct lagg_port *lp, int rundelport) { struct lagg_softc *sc = lp->lp_softc; struct lagg_port *lp_ptr, *lp0; - struct lagg_llq_slist_entry *cmn_llq; - struct lagg_lladdr_llq_ctxt *llq_ctxt; + struct lagg_llq *llq; struct ifnet *ifp = lp->lp_ifp; uint64_t *pval, vdiff; int i; @@ -1134,12 +940,11 @@ lagg_port_destroy(struct lagg_port *lp, int rundelport) /* Remove any pending lladdr changes from the queue */ if (lp->lp_detaching) { - SLIST_FOREACH(cmn_llq, &sc->sc_llq[LAGG_LLQ_LLADDR], llq_entries) { - llq_ctxt = (struct lagg_lladdr_llq_ctxt *)cmn_llq; - if (llq_ctxt->llq_ifp == ifp) { - SLIST_REMOVE(&sc->sc_llq[LAGG_LLQ_LLADDR], cmn_llq, - lagg_llq_slist_entry, llq_entries); - free(cmn_llq, M_DEVBUF); + SLIST_FOREACH(llq, &sc->sc_llq_head, llq_entries) { + if (llq->llq_ifp == ifp) { + SLIST_REMOVE(&sc->sc_llq_head, llq, lagg_llq, + llq_entries); + free(llq, M_DEVBUF); break; /* Only appears once */ } } @@ -1732,11 +1537,9 @@ lagg_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) break; case SIOCSIFCAP: - /* Do not allow the CAPs to be directly changed. */ - error = EINVAL; - break; case SIOCSIFMTU: - error = lagg_change_mtu(ifp, ifr); + /* Do not allow the MTU or caps to be directly changed */ + error = EINVAL; break; default: diff --git a/sys/net/if_lagg.h b/sys/net/if_lagg.h index 11e9f2da1b5..334995e5c33 100644 --- a/sys/net/if_lagg.h +++ b/sys/net/if_lagg.h @@ -21,8 +21,6 @@ #ifndef _NET_LAGG_H #define _NET_LAGG_H -#include - /* * Global definitions */ @@ -209,55 +207,18 @@ typedef enum { LAGG_LLQTYPE_VIRT, /* Task related to lagg interface itself */ } lagg_llqtype; -/* Adding new entry here, SHOULD also have relevant entry in llq_action */ -typedef enum { - LAGG_LLQ_MIN = 0, - LAGG_LLQ_LLADDR = LAGG_LLQ_MIN, /* MAC Address index */ - LAGG_LLQ_MTU, /* MTU index */ - LAGG_LLQ_MAX /* This SHOULD be the last entry */ -} lagg_llq_idx; - -/* Common list entry definition for each taskq operation */ -struct lagg_llq_slist_entry { - SLIST_ENTRY(lagg_llq_slist_entry) llq_entries; -}; - -/* Context for lladdr llq operation part of lagg soft context */ -struct lagg_lladdr_llq_ctxt { - struct lagg_llq_slist_entry llq_cmn; /* This SHOULD be the first - member */ +/* List of interfaces to have the MAC address modified */ +struct lagg_llq { struct ifnet *llq_ifp; uint8_t llq_lladdr[ETHER_ADDR_LEN]; lagg_llqtype llq_type; -}; - -/* Context for mtu llq operation part of lagg soft context */ -struct lagg_mtu_llq_ctxt { - struct lagg_llq_slist_entry llq_cmn; /* This SHOULD be the first - member */ - struct ifnet *llq_ifp; - struct ifreq llq_ifr; - uint32_t llq_old_mtu; - int (*llq_ioctl)(struct ifnet *, u_long, caddr_t); + SLIST_ENTRY(lagg_llq) llq_entries; }; struct lagg_counters { uint64_t val[IFCOUNTERS]; }; -/* Conditional variables context for lagg operations */ -struct lagg_signal { - struct mtx lock; - struct cv cv; -}; - -/* Lagg MTU context */ -struct lagg_mtu_ctxt { - struct lagg_signal mtu_sync; /* Synchronize cmd completion */ - int mtu_cmd_ret; - bool busy; -}; - struct lagg_softc { struct ifnet *sc_ifp; /* virtual interface */ struct rmlock sc_mtx; @@ -275,12 +236,9 @@ struct lagg_softc { SLIST_HEAD(__tplhd, lagg_port) sc_ports; /* list of interfaces */ SLIST_ENTRY(lagg_softc) sc_entries; - struct task sc_llq_task; /* SYNC & ASYNC ops - enqueued here */ - struct lagg_mtu_ctxt sc_mtu_ctxt; /* MTU programming */ - /* List of LLQs */ - SLIST_HEAD(__llqhd, lagg_llq_slist_entry) sc_llq[LAGG_LLQ_MAX]; - + struct task sc_lladdr_task; + SLIST_HEAD(__llqhd, lagg_llq) sc_llq_head; /* interfaces to program + the lladdr on */ eventhandler_tag vlan_attach; eventhandler_tag vlan_detach; struct callout sc_callout; From 1c7c13aa0e7ad180c67fb2dc24964febe4a44bab Mon Sep 17 00:00:00 2001 From: Wojciech Macek Date: Wed, 6 Apr 2016 05:13:36 +0000 Subject: [PATCH 006/159] Implement dtrace_getupcstack in ARM64 Allow using DTRACE for performance analysis of userspace applications - the function call stack can be captured. This is almost an exact copy of AMD64 solution. Obtained from: Semihalf Sponsored by: Cavium Reviewed by: emaste, gnn, jhibbits Differential Revision: https://reviews.freebsd.org/D5779 --- sys/arm64/include/frame.h | 5 + sys/cddl/dev/dtrace/aarch64/dtrace_isa.c | 119 ++++++++++++++++++++++- 2 files changed, 123 insertions(+), 1 deletion(-) diff --git a/sys/arm64/include/frame.h b/sys/arm64/include/frame.h index 7e644d5c1a4..6d43e133c2c 100644 --- a/sys/arm64/include/frame.h +++ b/sys/arm64/include/frame.h @@ -49,6 +49,11 @@ struct trapframe { uint64_t tf_x[30]; }; +struct arm64_frame { + struct arm64_frame *f_frame; + u_long f_retaddr; +}; + /* * Signal frame, pushedonto the user stack */ diff --git a/sys/cddl/dev/dtrace/aarch64/dtrace_isa.c b/sys/cddl/dev/dtrace/aarch64/dtrace_isa.c index 3d7e0444e78..442367f2d59 100644 --- a/sys/cddl/dev/dtrace/aarch64/dtrace_isa.c +++ b/sys/cddl/dev/dtrace/aarch64/dtrace_isa.c @@ -57,6 +57,7 @@ */ #define MAX_FUNCTION_SIZE 0x10000 #define MAX_PROLOGUE_SIZE 0x100 +#define MAX_USTACK_DEPTH 2048 uint8_t dtrace_fuword8_nocheck(void *); uint16_t dtrace_fuword16_nocheck(void *); @@ -111,11 +112,127 @@ dtrace_getpcstack(pc_t *pcstack, int pcstack_limit, int aframes, } } +static int +dtrace_getustack_common(uint64_t *pcstack, int pcstack_limit, uintptr_t pc, + uintptr_t fp) +{ + volatile uint16_t *flags = + (volatile uint16_t *)&cpu_core[curcpu].cpuc_dtrace_flags; + int ret = 0; + uintptr_t oldfp; + + ASSERT(pcstack == NULL || pcstack_limit > 0); + + while (pc != 0) { + /* + * We limit the number of times we can go around this + * loop to account for a circular stack. + */ + if (ret++ >= MAX_USTACK_DEPTH) { + *flags |= CPU_DTRACE_BADSTACK; + cpu_core[curcpu].cpuc_dtrace_illval = fp; + break; + } + + if (pcstack != NULL) { + *pcstack++ = (uint64_t)pc; + pcstack_limit--; + if (pcstack_limit <= 0) + break; + } + + if (fp == 0) + break; + + pc = dtrace_fuword64((void *)(fp + + offsetof(struct arm64_frame, f_retaddr))); + fp = dtrace_fuword64((void *)fp); + + if (fp == oldfp) { + *flags |= CPU_DTRACE_BADSTACK; + cpu_core[curcpu].cpuc_dtrace_illval = fp; + break; + } + + /* + * ARM64TODO: + * This workaround might not be necessary. It needs to be + * revised and removed from all architectures if found + * unwanted. Leaving the original x86 comment for reference. + * + * This is totally bogus: if we faulted, we're going to clear + * the fault and break. This is to deal with the apparently + * broken Java stacks on x86. + */ + if (*flags & CPU_DTRACE_FAULT) { + *flags &= ~CPU_DTRACE_FAULT; + break; + } + } + + return (ret); +} + void dtrace_getupcstack(uint64_t *pcstack, int pcstack_limit) { + proc_t *p = curproc; + struct trapframe *tf; + uintptr_t pc, sp, fp; + volatile uint16_t *flags = + (volatile uint16_t *)&cpu_core[curcpu].cpuc_dtrace_flags; + int n; - printf("IMPLEMENT ME: %s\n", __func__); + if (*flags & CPU_DTRACE_FAULT) + return; + + if (pcstack_limit <= 0) + return; + + /* + * If there's no user context we still need to zero the stack. + */ + if (p == NULL || (tf = curthread->td_frame) == NULL) + goto zero; + + *pcstack++ = (uint64_t)p->p_pid; + pcstack_limit--; + + if (pcstack_limit <= 0) + return; + + pc = tf->tf_elr; + sp = tf->tf_sp; + fp = tf->tf_x[29]; + + if (DTRACE_CPUFLAG_ISSET(CPU_DTRACE_ENTRY)) { + /* + * In an entry probe. The frame pointer has not yet been + * pushed (that happens in the function prologue). The + * best approach is to add the current pc as a missing top + * of stack and back the pc up to the caller, which is stored + * at the current stack pointer address since the call + * instruction puts it there right before the branch. + */ + + *pcstack++ = (uint64_t)pc; + pcstack_limit--; + if (pcstack_limit <= 0) + return; + + pc = tf->tf_lr; + } + + n = dtrace_getustack_common(pcstack, pcstack_limit, pc, fp); + ASSERT(n >= 0); + ASSERT(n <= pcstack_limit); + + pcstack += n; + pcstack_limit -= n; + +zero: + while (pcstack_limit-- > 0) + *pcstack++ = 0; } int From ab8357507077525f79ba675f5b4daf505ab3fa01 Mon Sep 17 00:00:00 2001 From: Ed Schouten Date: Wed, 6 Apr 2016 11:11:31 +0000 Subject: [PATCH 007/159] Make CloudABI's way of doing TLS more friendly to userspace emulators. We're currently seeing how hard it would be to run CloudABI binaries on operating systems cannot be modified easily (Windows, Mac OS X). The idea is that we want to just run them without any sandboxing. Now that CloudABI executables are PIE, this is already a bit easier, but TLS is still problematic: - CloudABI executables want to write to the %fs, which typically requires extra system calls by the emulator every time it needs to switch between CloudABI's and its own TLS. - If CloudABI executables overwrite the %fs base unconditionally, it also becomes harder for the emulator to store a backup of the old value of %fs. To solve this, let's no longer overwrite %fs, but just %fs:0. As CloudABI's C library does not use a TCB, this space can now be used by an emulator to keep track of its internal state. The executable can now safely overwrite %fs:0, as long as it makes sure that the TCB is copied over to the new TLS area. Ensure that there is an initial TLS area set up when the process starts, only containing a bogus TCB. We don't really care about its contents on FreeBSD. Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D5836 --- sys/amd64/cloudabi64/cloudabi64_sysvec.c | 64 +++++++++++++++++++++-- sys/arm64/cloudabi64/cloudabi64_sysvec.c | 28 +++++++++- sys/compat/cloudabi64/cloudabi64_module.c | 8 ++- sys/compat/cloudabi64/cloudabi64_thread.c | 10 +++- sys/compat/cloudabi64/cloudabi64_util.h | 4 +- sys/contrib/cloudabi/cloudabi64_types.h | 7 +++ 6 files changed, 110 insertions(+), 11 deletions(-) diff --git a/sys/amd64/cloudabi64/cloudabi64_sysvec.c b/sys/amd64/cloudabi64/cloudabi64_sysvec.c index 16d3ef9f45e..b94c0efbb5e 100644 --- a/sys/amd64/cloudabi64/cloudabi64_sysvec.c +++ b/sys/amd64/cloudabi64/cloudabi64_sysvec.c @@ -27,6 +27,7 @@ __FBSDID("$FreeBSD$"); #include +#include #include #include #include @@ -46,6 +47,45 @@ __FBSDID("$FreeBSD$"); extern const char *cloudabi64_syscallnames[]; extern struct sysent cloudabi64_sysent[]; +static int +cloudabi64_fixup_tcb(register_t **stack_base, struct image_params *imgp) +{ + int error; + register_t tcbptr; + + /* Place auxiliary vector and TCB on the stack. */ + error = cloudabi64_fixup(stack_base, imgp); + if (error != 0) + return (error); + + /* + * On x86-64, the TCB is referred to by %fs:0. Take some space + * from the top of the stack to store a single element array, + * containing a pointer to the TCB. %fs base will point to this. + */ + tcbptr = (register_t)*stack_base; + return (copyout(&tcbptr, --*stack_base, sizeof(tcbptr))); +} + +static void +cloudabi64_proc_setregs(struct thread *td, struct image_params *imgp, + unsigned long stack) +{ + struct trapframe *regs; + + exec_setregs(td, imgp, stack); + + /* + * The stack now contains a pointer to the TCB, the TCB itself, + * and the auxiliary vector. Let %rdx point to the auxiliary + * vector, and set %fs base to the address of the TCB. + */ + regs = td->td_frame; + regs->tf_rdi = stack + sizeof(register_t) + + roundup(sizeof(cloudabi64_tcb_t), sizeof(register_t)); + (void)cpu_set_user_tls(td, (void *)stack); +} + static int cloudabi64_fetch_syscall_args(struct thread *td, struct syscall_args *sa) { @@ -109,16 +149,29 @@ cloudabi64_schedtail(struct thread *td) frame->tf_rdx = td->td_tid; } -void +int cloudabi64_thread_setregs(struct thread *td, - const cloudabi64_threadattr_t *attr) + const cloudabi64_threadattr_t *attr, uint64_t tcb) { struct trapframe *frame; stack_t stack; + uint64_t tcbptr; + int error; + + /* + * On x86-64, the TCB is referred to by %fs:0. Take some space + * from the top of the stack to store a single element array, + * containing a pointer to the TCB. %fs base will point to this. + */ + tcbptr = rounddown(attr->stack + attr->stack_size - sizeof(tcbptr), + _Alignof(tcbptr)); + error = copyout(&tcb, (void *)tcbptr, sizeof(tcb)); + if (error != 0) + return (error); /* Perform standard register initialization. */ stack.ss_sp = (void *)attr->stack; - stack.ss_size = attr->stack_size; + stack.ss_size = tcbptr - attr->stack; cpu_set_upcall_kse(td, (void *)attr->entry_point, NULL, &stack); /* @@ -129,12 +182,14 @@ cloudabi64_thread_setregs(struct thread *td, frame = td->td_frame; frame->tf_rdi = td->td_tid; frame->tf_rsi = attr->argument; + + return (cpu_set_user_tls(td, (void *)tcbptr)); } static struct sysentvec cloudabi64_elf_sysvec = { .sv_size = CLOUDABI64_SYS_MAXSYSCALL, .sv_table = cloudabi64_sysent, - .sv_fixup = cloudabi64_fixup, + .sv_fixup = cloudabi64_fixup_tcb, .sv_name = "CloudABI ELF64", .sv_coredump = elf64_coredump, .sv_pagesize = PAGE_SIZE, @@ -143,6 +198,7 @@ static struct sysentvec cloudabi64_elf_sysvec = { .sv_usrstack = USRSTACK, .sv_stackprot = VM_PROT_READ | VM_PROT_WRITE, .sv_copyout_strings = cloudabi64_copyout_strings, + .sv_setregs = cloudabi64_proc_setregs, .sv_flags = SV_ABI_CLOUDABI | SV_CAPSICUM | SV_LP64, .sv_set_syscall_retval = cloudabi64_set_syscall_retval, .sv_fetch_syscall_args = cloudabi64_fetch_syscall_args, diff --git a/sys/arm64/cloudabi64/cloudabi64_sysvec.c b/sys/arm64/cloudabi64/cloudabi64_sysvec.c index a26007a254c..fd13db89ce7 100644 --- a/sys/arm64/cloudabi64/cloudabi64_sysvec.c +++ b/sys/arm64/cloudabi64/cloudabi64_sysvec.c @@ -27,6 +27,7 @@ __FBSDID("$FreeBSD$"); #include +#include #include #include #include @@ -46,6 +47,25 @@ __FBSDID("$FreeBSD$"); extern const char *cloudabi64_syscallnames[]; extern struct sysent cloudabi64_sysent[]; +static void +cloudabi64_proc_setregs(struct thread *td, struct image_params *imgp, + unsigned long stack) +{ + struct trapframe *regs; + + exec_setregs(td, imgp, stack); + + /* + * The stack now contains a pointer to the TCB and the auxiliary + * vector. Let x0 point to the auxiliary vector, and set + * tpidr_el0 to the TCB. + */ + regs = td->td_frame; + regs->tf_x[0] = td->td_retval[0] = + stack + roundup(sizeof(cloudabi64_tcb_t), sizeof(register_t)); + (void)cpu_set_user_tls(td, (void *)stack); +} + static int cloudabi64_fetch_syscall_args(struct thread *td, struct syscall_args *sa) { @@ -110,9 +130,9 @@ cloudabi64_schedtail(struct thread *td) } } -void +int cloudabi64_thread_setregs(struct thread *td, - const cloudabi64_threadattr_t *attr) + const cloudabi64_threadattr_t *attr, uint64_t tcb) { struct trapframe *frame; stack_t stack; @@ -130,6 +150,9 @@ cloudabi64_thread_setregs(struct thread *td, frame = td->td_frame; frame->tf_x[0] = td->td_tid; frame->tf_x[1] = attr->argument; + + /* Set up TLS. */ + return (cpu_set_user_tls(td, (void *)tcb)); } static struct sysentvec cloudabi64_elf_sysvec = { @@ -144,6 +167,7 @@ static struct sysentvec cloudabi64_elf_sysvec = { .sv_usrstack = USRSTACK, .sv_stackprot = VM_PROT_READ | VM_PROT_WRITE, .sv_copyout_strings = cloudabi64_copyout_strings, + .sv_setregs = cloudabi64_proc_setregs, .sv_flags = SV_ABI_CLOUDABI | SV_CAPSICUM | SV_LP64, .sv_set_syscall_retval = cloudabi64_set_syscall_retval, .sv_fetch_syscall_args = cloudabi64_fetch_syscall_args, diff --git a/sys/compat/cloudabi64/cloudabi64_module.c b/sys/compat/cloudabi64/cloudabi64_module.c index de890bc5c65..246a887105c 100644 --- a/sys/compat/cloudabi64/cloudabi64_module.c +++ b/sys/compat/cloudabi64/cloudabi64_module.c @@ -112,7 +112,13 @@ cloudabi64_fixup(register_t **stack_base, struct image_params *imgp) { .a_type = CLOUDABI_AT_NULL }, }; *stack_base -= howmany(sizeof(auxv), sizeof(register_t)); - return (copyout(auxv, *stack_base, sizeof(auxv))); + error = copyout(auxv, *stack_base, sizeof(auxv)); + if (error != 0) + return (error); + + /* Reserve space for storing the TCB. */ + *stack_base -= howmany(sizeof(cloudabi64_tcb_t), sizeof(register_t)); + return (0); } static int diff --git a/sys/compat/cloudabi64/cloudabi64_thread.c b/sys/compat/cloudabi64/cloudabi64_thread.c index 51961f8ad29..429ad3398be 100644 --- a/sys/compat/cloudabi64/cloudabi64_thread.c +++ b/sys/compat/cloudabi64/cloudabi64_thread.c @@ -37,6 +37,7 @@ __FBSDID("$FreeBSD$"); struct thread_create_args { cloudabi64_threadattr_t attr; + uint64_t tcb; lwpid_t tid; }; @@ -49,8 +50,7 @@ initialize_thread(struct thread *td, void *thunk) args->tid = td->td_tid; /* Set up initial register contents. */ - cloudabi64_thread_setregs(td, &args->attr); - return (0); + return (cloudabi64_thread_setregs(td, &args->attr, args->tcb)); } int @@ -63,6 +63,12 @@ cloudabi64_sys_thread_create(struct thread *td, error = copyin(uap->attr, &args.attr, sizeof(args.attr)); if (error != 0) return (error); + + /* Remove some space on the top of the stack for the TCB. */ + args.tcb = rounddown(args.attr.stack + args.attr.stack_size - + sizeof(cloudabi64_tcb_t), _Alignof(cloudabi64_tcb_t)); + args.attr.stack_size = args.tcb - args.attr.stack; + error = thread_create(td, NULL, initialize_thread, &args); if (error != 0) return (error); diff --git a/sys/compat/cloudabi64/cloudabi64_util.h b/sys/compat/cloudabi64/cloudabi64_util.h index dcec70ece5f..29a90d77982 100644 --- a/sys/compat/cloudabi64/cloudabi64_util.h +++ b/sys/compat/cloudabi64/cloudabi64_util.h @@ -42,7 +42,7 @@ extern Elf64_Brandinfo cloudabi64_brand; register_t *cloudabi64_copyout_strings(struct image_params *); int cloudabi64_fixup(register_t **, struct image_params *); -void cloudabi64_thread_setregs(struct thread *, - const cloudabi64_threadattr_t *); +int cloudabi64_thread_setregs(struct thread *, + const cloudabi64_threadattr_t *, uint64_t); #endif diff --git a/sys/contrib/cloudabi/cloudabi64_types.h b/sys/contrib/cloudabi/cloudabi64_types.h index 88babaaa317..cb354d46bc5 100644 --- a/sys/contrib/cloudabi/cloudabi64_types.h +++ b/sys/contrib/cloudabi/cloudabi64_types.h @@ -192,6 +192,13 @@ _Static_assert(offsetof(cloudabi64_subscription_t, proc_terminate.fd) == 16, "In _Static_assert(sizeof(cloudabi64_subscription_t) == 56, "Incorrect layout"); _Static_assert(_Alignof(cloudabi64_subscription_t) == 8, "Incorrect layout"); +typedef struct { + _Alignas(8) uint64_t parent; +} cloudabi64_tcb_t; +_Static_assert(offsetof(cloudabi64_tcb_t, parent) == 0, "Incorrect layout"); +_Static_assert(sizeof(cloudabi64_tcb_t) == 8, "Incorrect layout"); +_Static_assert(_Alignof(cloudabi64_tcb_t) == 8, "Incorrect layout"); + typedef void cloudabi64_threadentry_t(cloudabi_tid_t tid, uint64_t aux); typedef struct { From 4be58cba48cc944c9c122f9d4e8f50a05fc53370 Mon Sep 17 00:00:00 2001 From: Svatopluk Kraus Date: Wed, 6 Apr 2016 12:48:45 +0000 Subject: [PATCH 008/159] Fix PIC lookup by device and xref. There was not taken into account the situation that someone has a pointer to device but not its xref. This situation is regular now, after r297539. --- sys/kern/subr_intr.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/sys/kern/subr_intr.c b/sys/kern/subr_intr.c index 96319ad7bb4..fc3e74f59eb 100644 --- a/sys/kern/subr_intr.c +++ b/sys/kern/subr_intr.c @@ -766,11 +766,19 @@ pic_lookup_locked(device_t dev, intptr_t xref) mtx_assert(&pic_list_lock, MA_OWNED); + if (dev == NULL && xref == 0) + return (NULL); + + /* Note that pic->pic_dev is never NULL on registered PIC. */ SLIST_FOREACH(pic, &pic_list, pic_next) { - if (pic->pic_xref != xref) - continue; - if (pic->pic_xref != 0 || pic->pic_dev == dev) - return (pic); + if (dev == NULL) { + if (xref == pic->pic_xref) + return (pic); + } else if (xref == 0 || pic->pic_xref == 0) { + if (dev == pic->pic_dev) + return (pic); + } else if (xref == pic->pic_xref && dev == pic->pic_dev) + return (pic); } return (NULL); } @@ -840,14 +848,14 @@ intr_pic_register(device_t dev, intptr_t xref) { struct intr_pic *pic; + if (dev == NULL) + return (EINVAL); pic = pic_create(dev, xref); if (pic == NULL) return (ENOMEM); - if (pic->pic_dev != dev) - return (EINVAL); /* XXX it could be many things. */ - debugf("PIC %p registered for %s \n", pic, - device_get_nameunit(dev), xref); + debugf("PIC %p registered for %s \n", pic, + device_get_nameunit(dev), dev, xref); return (0); } From c7d4b461b37f02be89468df9197378feb639ca81 Mon Sep 17 00:00:00 2001 From: Andrew Turner Date: Wed, 6 Apr 2016 14:08:10 +0000 Subject: [PATCH 009/159] Allow vmparam.h to be included from assembly files on arm64. Obtained from: ABT Systems Ltd Sponsored by: The FreeBSD Foundation --- sys/arm64/arm64/copyinout.S | 2 ++ sys/arm64/arm64/genassym.c | 3 --- sys/arm64/arm64/locore.S | 1 + sys/arm64/arm64/support.S | 1 + sys/arm64/include/vmparam.h | 6 +++++- 5 files changed, 9 insertions(+), 4 deletions(-) diff --git a/sys/arm64/arm64/copyinout.S b/sys/arm64/arm64/copyinout.S index b99dbc299a5..86711fcf303 100644 --- a/sys/arm64/arm64/copyinout.S +++ b/sys/arm64/arm64/copyinout.S @@ -33,6 +33,8 @@ __FBSDID("$FreeBSD$"); #include +#include + #include "assym.s" /* diff --git a/sys/arm64/arm64/genassym.c b/sys/arm64/arm64/genassym.c index 26adc6d6fe0..36ad877f66c 100644 --- a/sys/arm64/arm64/genassym.c +++ b/sys/arm64/arm64/genassym.c @@ -37,9 +37,6 @@ __FBSDID("$FreeBSD$"); #include #include -ASSYM(KERNBASE, KERNBASE); -ASSYM(VM_MAXUSER_ADDRESS, VM_MAXUSER_ADDRESS); - ASSYM(TDF_ASTPENDING, TDF_ASTPENDING); ASSYM(TDF_NEEDRESCHED, TDF_NEEDRESCHED); diff --git a/sys/arm64/arm64/locore.S b/sys/arm64/arm64/locore.S index 676c1d50b09..615b2e13c21 100644 --- a/sys/arm64/arm64/locore.S +++ b/sys/arm64/arm64/locore.S @@ -34,6 +34,7 @@ #include #include #include +#include #define VIRT_BITS 48 diff --git a/sys/arm64/arm64/support.S b/sys/arm64/arm64/support.S index 4938240fa9e..1ca8c2b4175 100644 --- a/sys/arm64/arm64/support.S +++ b/sys/arm64/arm64/support.S @@ -34,6 +34,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include "assym.s" diff --git a/sys/arm64/include/vmparam.h b/sys/arm64/include/vmparam.h index cd9198e5d49..e08642269f5 100644 --- a/sys/arm64/include/vmparam.h +++ b/sys/arm64/include/vmparam.h @@ -160,7 +160,6 @@ #define DMAP_MIN_ADDRESS (0xffffffc000000000UL) #define DMAP_MAX_ADDRESS (0xffffffdfffffffffUL) -extern vm_paddr_t dmap_phys_base; #define DMAP_MIN_PHYSADDR (dmap_phys_base) #define DMAP_MAX_PHYSADDR (dmap_phys_base + (DMAP_MAX_ADDRESS - DMAP_MIN_ADDRESS)) @@ -229,10 +228,15 @@ extern vm_paddr_t dmap_phys_base; #define UMA_MD_SMALL_ALLOC +#ifndef LOCORE + +extern vm_paddr_t dmap_phys_base; extern u_int tsb_kernel_ldd_phys; extern vm_offset_t vm_max_kernel_address; extern vm_offset_t init_pt_va; +#endif + #define ZERO_REGION_SIZE (64 * 1024) /* 64KB */ #endif /* !_MACHINE_VMPARAM_H_ */ From 70e7278593593ff47e9a21ab5323d8cbb03f6163 Mon Sep 17 00:00:00 2001 From: Andrew Turner Date: Wed, 6 Apr 2016 14:12:00 +0000 Subject: [PATCH 010/159] Cleanup the early pagetable creation code in preperation for increasing the size of the arm64 DMAP region. Approved by: ABT Systems Ltd Sponsored by: The FreeBSD Foundation --- sys/arm64/arm64/locore.S | 42 +++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/sys/arm64/arm64/locore.S b/sys/arm64/arm64/locore.S index 615b2e13c21..ca57cfc6a60 100644 --- a/sys/arm64/arm64/locore.S +++ b/sys/arm64/arm64/locore.S @@ -378,6 +378,7 @@ create_pagetables: /* Link the l0 -> l1 table */ mov x9, x6 mov x6, x24 + mov x10, #1 bl link_l0_pagetable /* @@ -408,6 +409,7 @@ create_pagetables: /* Link the l0 -> l1 table */ mov x9, x6 mov x6, x27 + mov x10, #1 bl link_l0_pagetable /* Restore the Link register */ @@ -423,6 +425,7 @@ create_pagetables: * x6 = L0 table * x8 = Virtual Address * x9 = L1 PA (trashed) + * x10 = Entry count * x11, x12 and x13 are trashed */ link_l0_pagetable: @@ -437,11 +440,16 @@ link_l0_pagetable: mov x12, #L0_TABLE /* Only use the output address bits */ - lsr x9, x9, #12 - orr x12, x12, x9, lsl #12 + lsr x9, x9, #PAGE_SHIFT +1: orr x13, x12, x9, lsl #PAGE_SHIFT /* Store the entry */ - str x12, [x6, x11, lsl #3] + str x13, [x6, x11, lsl #3] + + sub x10, x10, #1 + add x11, x11, #1 + add x9, x9, #1 + cbnz x10, 1b ret @@ -468,11 +476,11 @@ link_l1_pagetable: mov x12, #L1_TABLE /* Only use the output address bits */ - lsr x9, x9, #12 - orr x12, x12, x9, lsl #12 + lsr x9, x9, #PAGE_SHIFT + orr x13, x12, x9, lsl #PAGE_SHIFT /* Store the entry */ - str x12, [x6, x11, lsl #3] + str x13, [x6, x11, lsl #3] ret @@ -482,7 +490,7 @@ link_l1_pagetable: * x7 = Type (0 = Device, 1 = Normal) * x8 = VA start * x9 = PA start (trashed) - * x10 = Entry count (TODO) + * x10 = Entry count * x11, x12 and x13 are trashed */ build_l1_block_pagetable: @@ -505,20 +513,17 @@ build_l1_block_pagetable: lsr x9, x9, #L1_SHIFT /* Set the physical address for this virtual address */ -1: orr x12, x12, x9, lsl #L1_SHIFT +1: orr x13, x12, x9, lsl #L1_SHIFT /* Store the entry */ - str x12, [x6, x11, lsl #3] - - /* Clear the address bits */ - and x12, x12, #ATTR_MASK_L + str x13, [x6, x11, lsl #3] sub x10, x10, #1 add x11, x11, #1 add x9, x9, #1 cbnz x10, 1b -2: ret + ret /* * Builds count 2 MiB page table entry @@ -526,7 +531,7 @@ build_l1_block_pagetable: * x7 = Type (0 = Device, 1 = Normal) * x8 = VA start * x9 = PA start (trashed) - * x10 = Entry count (TODO) + * x10 = Entry count * x11, x12 and x13 are trashed */ build_l2_block_pagetable: @@ -549,20 +554,17 @@ build_l2_block_pagetable: lsr x9, x9, #L2_SHIFT /* Set the physical address for this virtual address */ -1: orr x12, x12, x9, lsl #L2_SHIFT +1: orr x13, x12, x9, lsl #L2_SHIFT /* Store the entry */ - str x12, [x6, x11, lsl #3] - - /* Clear the address bits */ - and x12, x12, #ATTR_MASK_L + str x13, [x6, x11, lsl #3] sub x10, x10, #1 add x11, x11, #1 add x9, x9, #1 cbnz x10, 1b -2: ret + ret start_mmu: dsb sy From 5d58666c9306c5a6642a51a1656e68797dc71b44 Mon Sep 17 00:00:00 2001 From: Andrew Turner Date: Wed, 6 Apr 2016 14:16:37 +0000 Subject: [PATCH 011/159] Use PHYS_IN_DMAP to check if a physical address is within the DMAP region. Approved by: ABT Systems Ltd Sponsored by: The FreeBSD Foundation --- sys/arm64/arm64/pmap.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/arm64/arm64/pmap.c b/sys/arm64/arm64/pmap.c index 5eeccddd1e7..ca232f038be 100644 --- a/sys/arm64/arm64/pmap.c +++ b/sys/arm64/arm64/pmap.c @@ -3534,7 +3534,7 @@ pmap_map_io_transient(vm_page_t page[], vm_offset_t vaddr[], int count, needs_mapping = FALSE; for (i = 0; i < count; i++) { paddr = VM_PAGE_TO_PHYS(page[i]); - if (__predict_false(paddr >= DMAP_MAX_PHYSADDR)) { + if (__predict_false(!PHYS_IN_DMAP(paddr))) { error = vmem_alloc(kernel_arena, PAGE_SIZE, M_BESTFIT | M_WAITOK, &vaddr[i]); KASSERT(error == 0, ("vmem_alloc failed: %d", error)); @@ -3552,7 +3552,7 @@ pmap_map_io_transient(vm_page_t page[], vm_offset_t vaddr[], int count, sched_pin(); for (i = 0; i < count; i++) { paddr = VM_PAGE_TO_PHYS(page[i]); - if (paddr >= DMAP_MAX_PHYSADDR) { + if (!PHYS_IN_DMAP(paddr)) { panic( "pmap_map_io_transient: TODO: Map out of DMAP data"); } @@ -3572,7 +3572,7 @@ pmap_unmap_io_transient(vm_page_t page[], vm_offset_t vaddr[], int count, sched_unpin(); for (i = 0; i < count; i++) { paddr = VM_PAGE_TO_PHYS(page[i]); - if (paddr >= DMAP_MAX_PHYSADDR) { + if (!PHYS_IN_DMAP(paddr)) { panic("ARM64TODO: pmap_unmap_io_transient: Unmap data"); } } From 33bed970fa913cbdc392828d1cb1ebd1d8ce2a31 Mon Sep 17 00:00:00 2001 From: "Pedro F. Giffuni" Date: Wed, 6 Apr 2016 15:28:26 +0000 Subject: [PATCH 012/159] fsck_msdosfs(8): Optimimize memsets Obtained from: NetBSD (bin/50908) MFC after: 2 weeks --- sbin/fsck_msdosfs/dir.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/sbin/fsck_msdosfs/dir.c b/sbin/fsck_msdosfs/dir.c index e8d6475736c..d20762b8535 100644 --- a/sbin/fsck_msdosfs/dir.c +++ b/sbin/fsck_msdosfs/dir.c @@ -925,6 +925,7 @@ int reconnect(int dosfs, struct bootblock *boot, struct fatEntry *fat, cl_t head) { struct dosDirEntry d; + int len; u_char *p; if (!ask(1, "Reconnect")) @@ -976,14 +977,15 @@ reconnect(int dosfs, struct bootblock *boot, struct fatEntry *fat, cl_t head) boot->NumFiles++; /* Ensure uniqueness of entry here! XXX */ memset(&d, 0, sizeof d); - (void)snprintf(d.name, sizeof(d.name), "%u", head); + /* worst case -1 = 4294967295, 10 digits */ + len = snprintf(d.name, sizeof(d.name), "%u", head); d.flags = 0; d.head = head; d.size = fat[head].length * boot->ClusterSize; - memset(p, 0, 32); - memset(p, ' ', 11); - memcpy(p, d.name, strlen(d.name)); + memcpy(p, d.name, len); + memset(p + len, ' ', 11 - len); + memset(p + 11, 0, 32 - 11); p[26] = (u_char)d.head; p[27] = (u_char)(d.head >> 8); if (boot->ClustMask == CLUST32_MASK) { From 4798b7f381aee3930f0dcd26906e2f8299078523 Mon Sep 17 00:00:00 2001 From: Andrew Turner Date: Wed, 6 Apr 2016 16:09:10 +0000 Subject: [PATCH 013/159] Disable support for compat syscalls on arm64. These symbols were never shipped since arm64 exists only on 11+. Submitted by: brooks Reviewed by: emaste, imp --- lib/libc/aarch64/gen/Makefile.inc | 2 ++ lib/libc/aarch64/sys/Makefile.inc | 2 ++ lib/libc/arm/aeabi/aeabi_vfp.h | 4 +++- lib/libc/gen/semctl.c | 6 ++++++ lib/libc/include/compat.h | 2 ++ 5 files changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/libc/aarch64/gen/Makefile.inc b/lib/libc/aarch64/gen/Makefile.inc index f13800829d7..fe39136f5b4 100644 --- a/lib/libc/aarch64/gen/Makefile.inc +++ b/lib/libc/aarch64/gen/Makefile.inc @@ -1,5 +1,7 @@ # $FreeBSD$ +CFLAGS+= -DNO_COMPAT7 + SRCS+= _ctx_start.S \ fabs.S \ flt_rounds.c \ diff --git a/lib/libc/aarch64/sys/Makefile.inc b/lib/libc/aarch64/sys/Makefile.inc index b33b568809d..5a8c5956237 100644 --- a/lib/libc/aarch64/sys/Makefile.inc +++ b/lib/libc/aarch64/sys/Makefile.inc @@ -1,5 +1,7 @@ # $FreeBSD$ +MIASM:= ${MIASM:Nfreebsd[467]_*} + SRCS+= __vdso_gettc.c #MDASM= ptrace.S diff --git a/lib/libc/arm/aeabi/aeabi_vfp.h b/lib/libc/arm/aeabi/aeabi_vfp.h index 927652f193c..bb2f823d933 100644 --- a/lib/libc/arm/aeabi/aeabi_vfp.h +++ b/lib/libc/arm/aeabi/aeabi_vfp.h @@ -42,7 +42,9 @@ #define AEABI_ENTRY(x) ENTRY(__aeabi_ ## x ## _vfp) #define AEABI_END(x) END(__aeabi_ ## x ## _vfp) #else -#define AEABI_ENTRY(x) ENTRY(__aeabi_ ## x) +#define AEABI_ENTRY(x) \ + .set __fbsd_ ## x, __aeabi_ ## x; \ + ENTRY(__aeabi_ ## x) #define AEABI_END(x) END(__aeabi_ ## x) #endif diff --git a/lib/libc/gen/semctl.c b/lib/libc/gen/semctl.c index c68734d6318..0e418f6d058 100644 --- a/lib/libc/gen/semctl.c +++ b/lib/libc/gen/semctl.c @@ -29,7 +29,9 @@ #include __FBSDID("$FreeBSD$"); +#ifndef NO_COMPAT7 #define _WANT_SEMUN_OLD +#endif #include #include @@ -38,8 +40,10 @@ __FBSDID("$FreeBSD$"); #include int __semctl(int semid, int semnum, int cmd, union semun *arg); +#ifndef NO_COMPAT7 int freebsd7___semctl(int semid, int semnum, int cmd, union semun_old *arg); int freebsd7_semctl(int semid, int semnum, int cmd, ...); +#endif int semctl(int semid, int semnum, int cmd, ...) @@ -61,6 +65,7 @@ semctl(int semid, int semnum, int cmd, ...) return (__semctl(semid, semnum, cmd, semun_ptr)); } +#ifndef NO_COMPAT7 int freebsd7_semctl(int semid, int semnum, int cmd, ...) { @@ -82,3 +87,4 @@ freebsd7_semctl(int semid, int semnum, int cmd, ...) } __sym_compat(semctl, freebsd7_semctl, FBSD_1.0); +#endif diff --git a/lib/libc/include/compat.h b/lib/libc/include/compat.h index b20fac5ac60..e83d13c1575 100644 --- a/lib/libc/include/compat.h +++ b/lib/libc/include/compat.h @@ -38,9 +38,11 @@ #define __sym_compat(sym,impl,verid) \ .symver impl, sym@verid +#ifndef NO_COMPAT7 __sym_compat(__semctl, freebsd7___semctl, FBSD_1.0); __sym_compat(msgctl, freebsd7_msgctl, FBSD_1.0); __sym_compat(shmctl, freebsd7_shmctl, FBSD_1.0); +#endif #undef __sym_compat From fd82bc4f99c8fb358f42be2160b7a7fbdf0d60d0 Mon Sep 17 00:00:00 2001 From: Andrew Turner Date: Wed, 6 Apr 2016 16:50:18 +0000 Subject: [PATCH 014/159] Revert a change that sneeked with 297619 --- lib/libc/arm/aeabi/aeabi_vfp.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/libc/arm/aeabi/aeabi_vfp.h b/lib/libc/arm/aeabi/aeabi_vfp.h index bb2f823d933..927652f193c 100644 --- a/lib/libc/arm/aeabi/aeabi_vfp.h +++ b/lib/libc/arm/aeabi/aeabi_vfp.h @@ -42,9 +42,7 @@ #define AEABI_ENTRY(x) ENTRY(__aeabi_ ## x ## _vfp) #define AEABI_END(x) END(__aeabi_ ## x ## _vfp) #else -#define AEABI_ENTRY(x) \ - .set __fbsd_ ## x, __aeabi_ ## x; \ - ENTRY(__aeabi_ ## x) +#define AEABI_ENTRY(x) ENTRY(__aeabi_ ## x) #define AEABI_END(x) END(__aeabi_ ## x) #endif From 9af130ae8c039e10912f13b58b5cb97362d00e72 Mon Sep 17 00:00:00 2001 From: Warner Losh Date: Wed, 6 Apr 2016 19:34:44 +0000 Subject: [PATCH 015/159] Update cust_pkgng with a simpler, more robust version. We don't need to loop for pkg, which simplifies things. --- tools/tools/nanobsd/defaults.sh | 67 +++++++++++++-------------------- 1 file changed, 27 insertions(+), 40 deletions(-) diff --git a/tools/tools/nanobsd/defaults.sh b/tools/tools/nanobsd/defaults.sh index cb7a2d1ee9d..d8812761545 100755 --- a/tools/tools/nanobsd/defaults.sh +++ b/tools/tools/nanobsd/defaults.sh @@ -916,6 +916,17 @@ cust_install_files ( ) ( cust_pkgng ( ) ( + local PKG_CONF="${NANO_WORLDDIR}/usr/local/etc/pkg.conf" + local PKGCMD="env ASSUME_ALWAYS_YES=YES PKG_DBDIR=${NANO_PKG_META_BASE}/pkg SIGNATURE_TYPE=none /usr/sbin/pkg" + + # Ensure pkg.conf points pkg to where the package meta data lives. + touch ${PKG_CONF} + if grep -Eiq '^PKG_DBDIR:.*' ${PKG_CONF}; then + sed -i -e "\|^PKG_DBDIR:.*|Is||PKG_DBDIR: "\"${NANO_PKG_META_BASE}/pkg\""|" ${PKG_CONF} + else + echo "PKG_DBDIR: \"${NANO_PKG_META_BASE}/pkg\"" >> ${PKG_CONF} + fi + # If the package directory doesn't exist, we're done. if [ ! -d ${NANO_PACKAGE_DIR} ]; then echo "DONE 0 packages" @@ -930,52 +941,28 @@ cust_pkgng ( ) ( echo "FAILED: need a pkg/ package for bootstrapping" exit 2 fi + NANO_PACKAGE_LIST="${_NANO_PKG_PACKAGE} ${NANO_PACKAGE_LIST}" - # Copy packages into chroot - mkdir -p ${NANO_WORLDDIR}/Pkg - ( - cd "${NANO_PACKAGE_DIR}" - find ${NANO_PACKAGE_LIST} -print | - cpio -Ldumpv ${NANO_WORLDDIR}/Pkg - ) + # Mount packages into chroot + mkdir -p ${NANO_WORLDDIR}/_.p + mount -t nullfs -o noatime -o ro ${NANO_PACKAGE_DIR} ${NANO_WORLDDIR}/_.p - #Bootstrap pkg - CR env ASSUME_ALWAYS_YES=YES SIGNATURE_TYPE=none /usr/sbin/pkg add /Pkg/${_NANO_PKG_PACKAGE} - CR pkg -N >/dev/null 2>&1 - if [ "$?" -ne "0" ]; then - echo "FAILED: pkg bootstrapping faied" - exit 2 - fi - rm -f ${NANO_WORLDDIR}/Pkg/pkg-* + trap "umount ${NANO_WORLDDIR}/_.p ; rm -rf ${NANO_WORLDDIR}/_.p" 1 2 15 - # Count & report how many we have to install - todo=`ls ${NANO_WORLDDIR}/Pkg | /usr/bin/wc -l` - todo=$(expr $todo + 1) # add one for pkg since it is installed already + # Install packages + todo="$(echo "${NANO_PACKAGE_LIST}" | awk '{ print NF }')" echo "=== TODO: $todo" - ls ${NANO_WORLDDIR}/Pkg + echo "${NANO_PACKAGE_LIST}" echo "===" - while true - do - # Record how many we have now - have=$(CR env ASSUME_ALWAYS_YES=YES /usr/sbin/pkg info | /usr/bin/wc -l) - - # Attempt to install more packages - CR0 'ls 'Pkg/*txz' | xargs env ASSUME_ALWAYS_YES=YES /usr/sbin/pkg add' - - # See what that got us - now=$(CR env ASSUME_ALWAYS_YES=YES /usr/sbin/pkg info | /usr/bin/wc -l) - echo "=== NOW $now" - CR env ASSUME_ALWAYS_YES=YES /usr/sbin/pkg info - echo "===" - if [ $now -eq $todo ] ; then - echo "DONE $now packages" - break - elif [ $now -eq $have ] ; then - echo "FAILED: Nothing happened on this pass" - exit 2 - fi + for _PKG in ${NANO_PACKAGE_LIST}; do + CR "${PKGCMD} add /_.p/${_PKG}" done - rm -rf ${NANO_WORLDDIR}/Pkg + + CR0 "${PKGCMD} info" + + trap - 1 2 15 EXIT + umount ${NANO_WORLDDIR}/_.p + rm -rf ${NANO_WORLDDIR}/_.p ) ####################################################################### From 15719ec49938e1f7b3feb7a4df3c1862eeb4829a Mon Sep 17 00:00:00 2001 From: Bryan Drewery Date: Wed, 6 Apr 2016 22:38:50 +0000 Subject: [PATCH 016/159] Follow-up r295924: Only sync hash-based db files open for writing when closing. This fixes a major performance regression when reading db files such as the pw database during a 'pkg install'. MFC after: 1 week Tested by: bapt Reviewed by: bapt Sponsored by: EMC / Isilon Storage Division Differential Revision: https://reviews.freebsd.org/D5868 --- lib/libc/db/hash/hash.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/libc/db/hash/hash.c b/lib/libc/db/hash/hash.c index 02503ee1b55..fc4e50eb0b2 100644 --- a/lib/libc/db/hash/hash.c +++ b/lib/libc/db/hash/hash.c @@ -423,7 +423,8 @@ hdestroy(HTAB *hashp) free(hashp->tmp_buf); if (hashp->fp != -1) { - (void)_fsync(hashp->fp); + if (hashp->save_file) + (void)_fsync(hashp->fp); (void)_close(hashp->fp); } From 6a05f063ed52ea26ce95114acfb4129df3487cb9 Mon Sep 17 00:00:00 2001 From: Jared McNeill Date: Wed, 6 Apr 2016 23:11:03 +0000 Subject: [PATCH 017/159] Convert Allwinner port to extres clk/hwreset/regulator APIs. Reviewed by: andrew, gonzo, Emmanuel Vadot Approved by: gonzo (mentor) Differential Revision: https://reviews.freebsd.org/D5752 --- sys/arm/allwinner/a10_ahci.c | 52 +- sys/arm/allwinner/a10_clk.c | 862 -------------------- sys/arm/allwinner/a10_clk.h | 247 ------ sys/arm/allwinner/a10_codec.c | 33 +- sys/arm/allwinner/a10_dmac.c | 14 +- sys/arm/allwinner/a10_ehci.c | 61 +- sys/arm/allwinner/a10_fb.c | 137 +++- sys/arm/allwinner/a10_hdmi.c | 73 +- sys/arm/allwinner/a10_mmc.c | 99 +-- sys/arm/allwinner/a20/a20_if_dwc.c | 57 +- sys/arm/allwinner/a31/a31_clk.c | 378 --------- sys/arm/allwinner/a31/a31_clk.h | 213 ----- sys/arm/allwinner/aw_ccu.c | 224 +++++ sys/arm/allwinner/aw_reset.c | 163 ++++ sys/arm/allwinner/aw_usbphy.c | 109 +-- sys/arm/allwinner/clk/aw_ahbclk.c | 308 +++++++ sys/arm/allwinner/clk/aw_apbclk.c | 283 +++++++ sys/arm/allwinner/clk/aw_axiclk.c | 201 +++++ sys/arm/allwinner/clk/aw_codecclk.c | 164 ++++ sys/arm/allwinner/clk/aw_cpuclk.c | 161 ++++ sys/arm/allwinner/clk/aw_debeclk.c | 351 ++++++++ sys/arm/allwinner/clk/aw_gate.c | 198 +++++ sys/arm/allwinner/clk/aw_gmacclk.c | 259 ++++++ sys/arm/allwinner/clk/aw_hdmiclk.c | 315 +++++++ sys/arm/allwinner/clk/aw_lcdclk.c | 560 +++++++++++++ sys/arm/allwinner/clk/aw_mmcclk.c | 351 ++++++++ sys/arm/allwinner/clk/aw_modclk.c | 318 ++++++++ sys/arm/allwinner/clk/aw_oscclk.c | 132 +++ sys/arm/allwinner/clk/aw_pll.c | 757 +++++++++++++++++ sys/arm/allwinner/clk/aw_usbclk.c | 246 ++++++ sys/arm/allwinner/files.allwinner | 19 +- sys/arm/allwinner/if_emac.c | 33 +- sys/arm/conf/A10 | 7 + sys/arm/conf/A20 | 7 + sys/boot/fdt/dts/arm/bananapi.dts | 80 +- sys/boot/fdt/dts/arm/cubieboard.dts | 54 +- sys/boot/fdt/dts/arm/cubieboard2.dts | 7 - sys/boot/fdt/dts/arm/olimex-a20-som-evb.dts | 12 +- sys/boot/fdt/dts/arm/olinuxino-lime.dts | 11 - sys/boot/fdt/dts/arm/sun4i-a10.dtsi | 153 ---- sys/boot/fdt/dts/arm/sun7i-a20-hdmi.dtsi | 63 ++ sys/boot/fdt/dts/arm/sun7i-a20.dtsi | 217 ----- sys/dev/dwc/if_dwc.c | 40 + sys/dev/iicbus/twsi/a10_twsi.c | 51 +- 44 files changed, 5634 insertions(+), 2446 deletions(-) delete mode 100644 sys/arm/allwinner/a10_clk.c delete mode 100644 sys/arm/allwinner/a10_clk.h delete mode 100644 sys/arm/allwinner/a31/a31_clk.c delete mode 100644 sys/arm/allwinner/a31/a31_clk.h create mode 100644 sys/arm/allwinner/aw_ccu.c create mode 100644 sys/arm/allwinner/aw_reset.c create mode 100644 sys/arm/allwinner/clk/aw_ahbclk.c create mode 100644 sys/arm/allwinner/clk/aw_apbclk.c create mode 100644 sys/arm/allwinner/clk/aw_axiclk.c create mode 100644 sys/arm/allwinner/clk/aw_codecclk.c create mode 100644 sys/arm/allwinner/clk/aw_cpuclk.c create mode 100644 sys/arm/allwinner/clk/aw_debeclk.c create mode 100644 sys/arm/allwinner/clk/aw_gate.c create mode 100644 sys/arm/allwinner/clk/aw_gmacclk.c create mode 100644 sys/arm/allwinner/clk/aw_hdmiclk.c create mode 100644 sys/arm/allwinner/clk/aw_lcdclk.c create mode 100644 sys/arm/allwinner/clk/aw_mmcclk.c create mode 100644 sys/arm/allwinner/clk/aw_modclk.c create mode 100644 sys/arm/allwinner/clk/aw_oscclk.c create mode 100644 sys/arm/allwinner/clk/aw_pll.c create mode 100644 sys/arm/allwinner/clk/aw_usbclk.c delete mode 100644 sys/boot/fdt/dts/arm/sun4i-a10.dtsi delete mode 100644 sys/boot/fdt/dts/arm/sun7i-a20.dtsi diff --git a/sys/arm/allwinner/a10_ahci.c b/sys/arm/allwinner/a10_ahci.c index a6c5f5df73c..009ef5f1c83 100644 --- a/sys/arm/allwinner/a10_ahci.c +++ b/sys/arm/allwinner/a10_ahci.c @@ -47,7 +47,7 @@ __FBSDID("$FreeBSD$"); #include #include -#include +#include /* * Allwinner a1x/a2x/a8x SATA attachment. This is just the AHCI register @@ -117,6 +117,8 @@ __FBSDID("$FreeBSD$"); #define AHCI_P0PHYCR 0x0078 #define AHCI_P0PHYSR 0x007C +#define PLL_FREQ 100000000 + static void inline ahci_set(struct resource *m, bus_size_t off, uint32_t set) { @@ -295,8 +297,11 @@ ahci_a10_attach(device_t dev) { int error; struct ahci_controller *ctlr; + clk_t clk_pll, clk_gate; ctlr = device_get_softc(dev); + clk_pll = clk_gate = NULL; + ctlr->quirks = AHCI_Q_NOPMP; ctlr->vendorid = 0; ctlr->deviceid = 0; @@ -307,15 +312,36 @@ ahci_a10_attach(device_t dev) &ctlr->r_rid, RF_ACTIVE))) return (ENXIO); - /* Turn on the PLL for SATA */ - a10_clk_ahci_activate(); - + /* Enable clocks */ + error = clk_get_by_ofw_index(dev, 0, &clk_pll); + if (error != 0) { + device_printf(dev, "Cannot get PLL clock\n"); + goto fail; + } + error = clk_get_by_ofw_index(dev, 1, &clk_gate); + if (error != 0) { + device_printf(dev, "Cannot get gate clock\n"); + goto fail; + } + error = clk_set_freq(clk_pll, PLL_FREQ, CLK_SET_ROUND_DOWN); + if (error != 0) { + device_printf(dev, "Cannot set PLL frequency\n"); + goto fail; + } + error = clk_enable(clk_pll); + if (error != 0) { + device_printf(dev, "Cannot enable PLL\n"); + goto fail; + } + error = clk_enable(clk_gate); + if (error != 0) { + device_printf(dev, "Cannot enable clk gate\n"); + goto fail; + } + /* Reset controller */ - if ((error = ahci_a10_ctlr_reset(dev)) != 0) { - bus_release_resource(dev, SYS_RES_MEMORY, ctlr->r_rid, - ctlr->r_mem); - return (error); - }; + if ((error = ahci_a10_ctlr_reset(dev)) != 0) + goto fail; /* * No MSI registers on this platform. @@ -330,6 +356,14 @@ ahci_a10_attach(device_t dev) * Note: ahci_attach will release ctlr->r_mem on errors automatically */ return (ahci_attach(dev)); + +fail: + if (clk_gate != NULL) + clk_release(clk_gate); + if (clk_pll != NULL) + clk_release(clk_pll); + bus_release_resource(dev, SYS_RES_MEMORY, ctlr->r_rid, ctlr->r_mem); + return (error); } static int diff --git a/sys/arm/allwinner/a10_clk.c b/sys/arm/allwinner/a10_clk.c deleted file mode 100644 index 46bd6ad6ae8..00000000000 --- a/sys/arm/allwinner/a10_clk.c +++ /dev/null @@ -1,862 +0,0 @@ -/*- - * Copyright (c) 2013 Ganbold Tsagaankhuu - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* Simple clock driver for Allwinner A10 */ - -#include -__FBSDID("$FreeBSD$"); - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include "a10_clk.h" - -#define TCON_PLL_WORST 1000000 -#define TCON_PLL_N_MIN 1 -#define TCON_PLL_N_MAX 15 -#define TCON_PLL_M_MIN 9 -#define TCON_PLL_M_MAX 127 -#define TCON_PLLREF_SINGLE 3000 /* kHz */ -#define TCON_PLLREF_DOUBLE 6000 /* kHz */ -#define TCON_RATE_KHZ(rate_hz) ((rate_hz) / 1000) -#define TCON_RATE_HZ(rate_khz) ((rate_khz) * 1000) -#define HDMI_DEFAULT_RATE 297000000 -#define DEBE_DEFAULT_RATE 300000000 - -struct a10_ccm_softc { - struct resource *res; - bus_space_tag_t bst; - bus_space_handle_t bsh; - struct mtx mtx; - int pll6_enabled; - int ehci_cnt; - int ohci_cnt; - int usbphy_cnt; - int usb_cnt; -}; - -static struct a10_ccm_softc *a10_ccm_sc = NULL; - -static int a10_clk_usbphy_activate(struct a10_ccm_softc *sc); -static int a10_clk_usbphy_deactivate(struct a10_ccm_softc *sc); -static int a10_clk_usb_activate(struct a10_ccm_softc *sc); -static int a10_clk_usb_deactivate(struct a10_ccm_softc *sc); - -#define CCM_LOCK(sc) mtx_lock(&(sc)->mtx); -#define CCM_UNLOCK(sc) mtx_unlock(&(sc)->mtx); -#define CCM_LOCK_ASSERT(sc) mtx_assert(&(sc)->mtx, MA_OWNED) -#define ccm_read_4(sc, reg) \ - bus_space_read_4((sc)->bst, (sc)->bsh, (reg)) -#define ccm_write_4(sc, reg, val) \ - bus_space_write_4((sc)->bst, (sc)->bsh, (reg), (val)) - -static int -a10_ccm_probe(device_t dev) -{ - - if (!ofw_bus_status_okay(dev)) - return (ENXIO); - - if (ofw_bus_is_compatible(dev, "allwinner,sun4i-ccm")) { - device_set_desc(dev, "Allwinner Clock Control Module"); - return(BUS_PROBE_DEFAULT); - } - - return (ENXIO); -} - -static int -a10_ccm_attach(device_t dev) -{ - struct a10_ccm_softc *sc = device_get_softc(dev); - int rid = 0; - - if (a10_ccm_sc) - return (ENXIO); - - sc->res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, RF_ACTIVE); - if (!sc->res) { - device_printf(dev, "could not allocate resource\n"); - return (ENXIO); - } - - sc->bst = rman_get_bustag(sc->res); - sc->bsh = rman_get_bushandle(sc->res); - - mtx_init(&sc->mtx, "a10_ccm", NULL, MTX_DEF); - - a10_ccm_sc = sc; - - return (0); -} - -static device_method_t a10_ccm_methods[] = { - DEVMETHOD(device_probe, a10_ccm_probe), - DEVMETHOD(device_attach, a10_ccm_attach), - { 0, 0 } -}; - -static driver_t a10_ccm_driver = { - "a10_ccm", - a10_ccm_methods, - sizeof(struct a10_ccm_softc), -}; - -static devclass_t a10_ccm_devclass; - -EARLY_DRIVER_MODULE(a10_ccm, simplebus, a10_ccm_driver, a10_ccm_devclass, 0, 0, - BUS_PASS_TIMER + BUS_PASS_ORDER_MIDDLE); - -int -a10_clk_ehci_activate(void) -{ - struct a10_ccm_softc *sc = a10_ccm_sc; - uint32_t reg_value; - - if (sc == NULL) - return (ENXIO); - - CCM_LOCK(sc); - - if (++sc->ehci_cnt == 1) { - /* Gating AHB clock for USB */ - reg_value = ccm_read_4(sc, CCM_AHB_GATING0); - reg_value |= CCM_AHB_GATING_EHCI0; /* AHB clock gate ehci0 */ - reg_value |= CCM_AHB_GATING_EHCI1; /* AHB clock gate ehci1 */ - ccm_write_4(sc, CCM_AHB_GATING0, reg_value); - } - - a10_clk_usb_activate(sc); - a10_clk_usbphy_activate(sc); - - CCM_UNLOCK(sc); - - return (0); -} - -int -a10_clk_ehci_deactivate(void) -{ - struct a10_ccm_softc *sc = a10_ccm_sc; - uint32_t reg_value; - - if (sc == NULL) - return (ENXIO); - - CCM_LOCK(sc); - - if (--sc->ehci_cnt == 0) { - /* Disable gating AHB clock for USB */ - reg_value = ccm_read_4(sc, CCM_AHB_GATING0); - reg_value &= ~CCM_AHB_GATING_EHCI0; /* disable AHB clock gate ehci0 */ - reg_value &= ~CCM_AHB_GATING_EHCI1; /* disable AHB clock gate ehci1 */ - ccm_write_4(sc, CCM_AHB_GATING0, reg_value); - } - - a10_clk_usb_deactivate(sc); - a10_clk_usbphy_deactivate(sc); - - CCM_UNLOCK(sc); - - return (0); -} - -int -a10_clk_ohci_activate(void) -{ - struct a10_ccm_softc *sc = a10_ccm_sc; - uint32_t reg_value; - - if (sc == NULL) - return (ENXIO); - - CCM_LOCK(sc); - - if (++sc->ohci_cnt == 1) { - /* Gating AHB clock for USB */ - reg_value = ccm_read_4(sc, CCM_AHB_GATING0); - reg_value |= CCM_AHB_GATING_OHCI0; /* AHB clock gate ohci0 */ - reg_value |= CCM_AHB_GATING_OHCI1; /* AHB clock gate ohci1 */ - ccm_write_4(sc, CCM_AHB_GATING0, reg_value); - - /* Enable clock for USB */ - reg_value = ccm_read_4(sc, CCM_USB_CLK); - reg_value |= CCM_SCLK_GATING_OHCI0; - reg_value |= CCM_SCLK_GATING_OHCI1; - ccm_write_4(sc, CCM_USB_CLK, reg_value); - } - - a10_clk_usb_activate(sc); - a10_clk_usbphy_activate(sc); - - CCM_UNLOCK(sc); - - return (0); -} - -int -a10_clk_ohci_deactivate(void) -{ - struct a10_ccm_softc *sc = a10_ccm_sc; - uint32_t reg_value; - - if (sc == NULL) - return (ENXIO); - - CCM_LOCK(sc); - - if (--sc->ohci_cnt == 0) { - /* Disable clock for USB */ - reg_value = ccm_read_4(sc, CCM_USB_CLK); - reg_value &= ~CCM_SCLK_GATING_OHCI0; - reg_value &= ~CCM_SCLK_GATING_OHCI1; - ccm_write_4(sc, CCM_USB_CLK, reg_value); - - /* Disable gating AHB clock for USB */ - reg_value = ccm_read_4(sc, CCM_AHB_GATING0); - reg_value &= ~CCM_AHB_GATING_OHCI0; /* disable AHB clock gate ohci0 */ - reg_value &= ~CCM_AHB_GATING_OHCI1; /* disable AHB clock gate ohci1 */ - ccm_write_4(sc, CCM_AHB_GATING0, reg_value); - } - - a10_clk_usb_deactivate(sc); - a10_clk_usbphy_deactivate(sc); - - CCM_UNLOCK(sc); - - return (0); -} - -static int -a10_clk_usb_activate(struct a10_ccm_softc *sc) -{ - uint32_t reg_value; - - CCM_LOCK_ASSERT(sc); - - if (++sc->usb_cnt == 1) { - /* Gating AHB clock for USB */ - reg_value = ccm_read_4(sc, CCM_AHB_GATING0); - reg_value |= CCM_AHB_GATING_USB0; /* AHB clock gate usb0 */ - ccm_write_4(sc, CCM_AHB_GATING0, reg_value); - } - - return (0); -} - -static int -a10_clk_usb_deactivate(struct a10_ccm_softc *sc) -{ - uint32_t reg_value; - - CCM_LOCK_ASSERT(sc); - - if (--sc->usb_cnt == 0) { - /* Disable gating AHB clock for USB */ - reg_value = ccm_read_4(sc, CCM_AHB_GATING0); - reg_value &= ~CCM_AHB_GATING_USB0; /* disable AHB clock gate usb0 */ - ccm_write_4(sc, CCM_AHB_GATING0, reg_value); - } - - return (0); -} - -static int -a10_clk_usbphy_activate(struct a10_ccm_softc *sc) -{ - uint32_t reg_value; - - CCM_LOCK_ASSERT(sc); - - if (++sc->usbphy_cnt == 1) { - /* Enable clock for USB */ - reg_value = ccm_read_4(sc, CCM_USB_CLK); - reg_value |= CCM_USB_PHY; /* USBPHY */ - reg_value |= CCM_USBPHY0_RESET; /* disable reset for USBPHY0 */ - reg_value |= CCM_USBPHY1_RESET; /* disable reset for USBPHY1 */ - reg_value |= CCM_USBPHY2_RESET; /* disable reset for USBPHY2 */ - ccm_write_4(sc, CCM_USB_CLK, reg_value); - } - - return (0); -} - -static int -a10_clk_usbphy_deactivate(struct a10_ccm_softc *sc) -{ - uint32_t reg_value; - - CCM_LOCK_ASSERT(sc); - - if (--sc->usbphy_cnt == 0) { - /* Disable clock for USB */ - reg_value = ccm_read_4(sc, CCM_USB_CLK); - reg_value &= ~CCM_USB_PHY; /* USBPHY */ - reg_value &= ~CCM_USBPHY0_RESET; /* reset for USBPHY0 */ - reg_value &= ~CCM_USBPHY1_RESET; /* reset for USBPHY1 */ - reg_value &= ~CCM_USBPHY2_RESET; /* reset for USBPHY2 */ - ccm_write_4(sc, CCM_USB_CLK, reg_value); - } - - return (0); -} - -int -a10_clk_emac_activate(void) -{ - struct a10_ccm_softc *sc = a10_ccm_sc; - uint32_t reg_value; - - if (sc == NULL) - return (ENXIO); - - /* Gating AHB clock for EMAC */ - reg_value = ccm_read_4(sc, CCM_AHB_GATING0); - reg_value |= CCM_AHB_GATING_EMAC; - ccm_write_4(sc, CCM_AHB_GATING0, reg_value); - - return (0); -} - -int -a10_clk_gmac_activate(phandle_t node) -{ - char *phy_type; - struct a10_ccm_softc *sc; - uint32_t reg_value; - - sc = a10_ccm_sc; - if (sc == NULL) - return (ENXIO); - - /* Gating AHB clock for GMAC */ - reg_value = ccm_read_4(sc, CCM_AHB_GATING1); - reg_value |= CCM_AHB_GATING_GMAC; - ccm_write_4(sc, CCM_AHB_GATING1, reg_value); - - /* Set GMAC mode. */ - reg_value = CCM_GMAC_CLK_MII; - if (OF_getprop_alloc(node, "phy-mode", 1, (void **)&phy_type) > 0) { - if (strcasecmp(phy_type, "rgmii") == 0) - reg_value = CCM_GMAC_CLK_RGMII | CCM_GMAC_MODE_RGMII; - else if (strcasecmp(phy_type, "rgmii-bpi") == 0) { - reg_value = CCM_GMAC_CLK_RGMII | CCM_GMAC_MODE_RGMII; - reg_value |= (3 << CCM_GMAC_CLK_DELAY_SHIFT); - } - free(phy_type, M_OFWPROP); - } - ccm_write_4(sc, CCM_GMAC_CLK, reg_value); - - return (0); -} - -static void -a10_clk_pll6_enable(void) -{ - struct a10_ccm_softc *sc; - uint32_t reg_value; - - /* - * SATA needs PLL6 to be a 100MHz clock. - * The SATA output frequency is 24MHz * n * k / m / 6. - * To get to 100MHz, k & m must be equal and n must be 25. - * For other uses the output frequency is 24MHz * n * k / 2. - */ - sc = a10_ccm_sc; - if (sc->pll6_enabled) - return; - reg_value = ccm_read_4(sc, CCM_PLL6_CFG); - reg_value &= ~CCM_PLL_CFG_BYPASS; - reg_value &= ~(CCM_PLL_CFG_FACTOR_K | CCM_PLL_CFG_FACTOR_M | - CCM_PLL_CFG_FACTOR_N); - reg_value |= (25 << CCM_PLL_CFG_FACTOR_N_SHIFT); - reg_value |= CCM_PLL6_CFG_SATA_CLKEN; - reg_value |= CCM_PLL_CFG_ENABLE; - ccm_write_4(sc, CCM_PLL6_CFG, reg_value); - sc->pll6_enabled = 1; -} - -static unsigned int -a10_clk_pll6_get_rate(void) -{ - struct a10_ccm_softc *sc; - uint32_t k, n, reg_value; - - sc = a10_ccm_sc; - reg_value = ccm_read_4(sc, CCM_PLL6_CFG); - n = ((reg_value & CCM_PLL_CFG_FACTOR_N) >> CCM_PLL_CFG_FACTOR_N_SHIFT); - k = ((reg_value & CCM_PLL_CFG_FACTOR_K) >> CCM_PLL_CFG_FACTOR_K_SHIFT) + - 1; - - return ((CCM_CLK_REF_FREQ * n * k) / 2); -} - -static int -a10_clk_pll2_set_rate(unsigned int freq) -{ - struct a10_ccm_softc *sc; - uint32_t reg_value; - unsigned int prediv, postdiv, n; - - sc = a10_ccm_sc; - if (sc == NULL) - return (ENXIO); - - reg_value = ccm_read_4(sc, CCM_PLL2_CFG); - reg_value &= ~(CCM_PLL2_CFG_PREDIV | CCM_PLL2_CFG_POSTDIV | - CCM_PLL_CFG_FACTOR_N); - - /* - * Audio Codec needs PLL2 to be either 24576000 Hz or 22579200 Hz - * - * PLL2 output frequency is 24MHz * n / prediv / postdiv. - * To get as close as possible to the desired rate, we use a - * pre-divider of 21 and a post-divider of 4. With these values, - * a multiplier of 86 or 79 gets us close to the target rates. - */ - prediv = 21; - postdiv = 4; - - switch (freq) { - case 24576000: - n = 86; - reg_value |= CCM_PLL_CFG_ENABLE; - break; - case 22579200: - n = 79; - reg_value |= CCM_PLL_CFG_ENABLE; - break; - case 0: - n = 1; - reg_value &= ~CCM_PLL_CFG_ENABLE; - break; - default: - return (EINVAL); - } - - reg_value |= (prediv << CCM_PLL2_CFG_PREDIV_SHIFT); - reg_value |= (postdiv << CCM_PLL2_CFG_POSTDIV_SHIFT); - reg_value |= (n << CCM_PLL_CFG_FACTOR_N_SHIFT); - ccm_write_4(sc, CCM_PLL2_CFG, reg_value); - - return (0); -} - -static int -a10_clk_pll3_set_rate(unsigned int freq) -{ - struct a10_ccm_softc *sc; - uint32_t reg_value; - int m; - - sc = a10_ccm_sc; - if (sc == NULL) - return (ENXIO); - - if (freq == 0) { - /* Disable PLL3 */ - ccm_write_4(sc, CCM_PLL3_CFG, 0); - return (0); - } - - m = freq / TCON_RATE_HZ(TCON_PLLREF_SINGLE); - - reg_value = CCM_PLL_CFG_ENABLE | CCM_PLL3_CFG_MODE_SEL_INT | m; - ccm_write_4(sc, CCM_PLL3_CFG, reg_value); - - return (0); -} - -static unsigned int -a10_clk_pll5x_get_rate(void) -{ - struct a10_ccm_softc *sc; - uint32_t k, n, p, reg_value; - - sc = a10_ccm_sc; - reg_value = ccm_read_4(sc, CCM_PLL5_CFG); - n = ((reg_value & CCM_PLL_CFG_FACTOR_N) >> CCM_PLL_CFG_FACTOR_N_SHIFT); - k = ((reg_value & CCM_PLL_CFG_FACTOR_K) >> CCM_PLL_CFG_FACTOR_K_SHIFT) + - 1; - p = ((reg_value & CCM_PLL5_CFG_OUT_EXT_DIV_P) >> CCM_PLL5_CFG_OUT_EXT_DIV_P_SHIFT); - - return ((CCM_CLK_REF_FREQ * n * k) >> p); -} - -int -a10_clk_ahci_activate(void) -{ - struct a10_ccm_softc *sc; - uint32_t reg_value; - - sc = a10_ccm_sc; - if (sc == NULL) - return (ENXIO); - - a10_clk_pll6_enable(); - - /* Gating AHB clock for SATA */ - reg_value = ccm_read_4(sc, CCM_AHB_GATING0); - reg_value |= CCM_AHB_GATING_SATA; - ccm_write_4(sc, CCM_AHB_GATING0, reg_value); - DELAY(1000); - - ccm_write_4(sc, CCM_SATA_CLK, CCM_PLL_CFG_ENABLE); - - return (0); -} - -int -a10_clk_mmc_activate(int devid) -{ - struct a10_ccm_softc *sc; - uint32_t reg_value; - - sc = a10_ccm_sc; - if (sc == NULL) - return (ENXIO); - - a10_clk_pll6_enable(); - - /* Gating AHB clock for SD/MMC */ - reg_value = ccm_read_4(sc, CCM_AHB_GATING0); - reg_value |= CCM_AHB_GATING_SDMMC0 << devid; - ccm_write_4(sc, CCM_AHB_GATING0, reg_value); - - return (0); -} - -int -a10_clk_mmc_cfg(int devid, int freq) -{ - struct a10_ccm_softc *sc; - uint32_t clksrc, m, n, ophase, phase, reg_value; - unsigned int pll_freq; - - sc = a10_ccm_sc; - if (sc == NULL) - return (ENXIO); - - freq /= 1000; - if (freq <= 400) { - pll_freq = CCM_CLK_REF_FREQ / 1000; - clksrc = CCM_SD_CLK_SRC_SEL_OSC24M; - ophase = 0; - phase = 0; - n = 2; - } else if (freq <= 25000) { - pll_freq = a10_clk_pll6_get_rate() / 1000; - clksrc = CCM_SD_CLK_SRC_SEL_PLL6; - ophase = 0; - phase = 5; - n = 2; - } else if (freq <= 50000) { - pll_freq = a10_clk_pll6_get_rate() / 1000; - clksrc = CCM_SD_CLK_SRC_SEL_PLL6; - ophase = 3; - phase = 5; - n = 0; - } else - return (EINVAL); - m = ((pll_freq / (1 << n)) / (freq)) - 1; - reg_value = ccm_read_4(sc, CCM_MMC0_SCLK_CFG + (devid * 4)); - reg_value &= ~CCM_SD_CLK_SRC_SEL; - reg_value |= (clksrc << CCM_SD_CLK_SRC_SEL_SHIFT); - reg_value &= ~CCM_SD_CLK_PHASE_CTR; - reg_value |= (phase << CCM_SD_CLK_PHASE_CTR_SHIFT); - reg_value &= ~CCM_SD_CLK_DIV_RATIO_N; - reg_value |= (n << CCM_SD_CLK_DIV_RATIO_N_SHIFT); - reg_value &= ~CCM_SD_CLK_OPHASE_CTR; - reg_value |= (ophase << CCM_SD_CLK_OPHASE_CTR_SHIFT); - reg_value &= ~CCM_SD_CLK_DIV_RATIO_M; - reg_value |= m; - reg_value |= CCM_PLL_CFG_ENABLE; - ccm_write_4(sc, CCM_MMC0_SCLK_CFG + (devid * 4), reg_value); - - return (0); -} - -int -a10_clk_i2c_activate(int devid) -{ - struct a10_ccm_softc *sc; - uint32_t reg_value; - - sc = a10_ccm_sc; - if (sc == NULL) - return (ENXIO); - - a10_clk_pll6_enable(); - - /* Gating APB clock for I2C/TWI */ - reg_value = ccm_read_4(sc, CCM_APB1_GATING); - if (devid == 4) - reg_value |= CCM_APB1_GATING_TWI << 15; - else - reg_value |= CCM_APB1_GATING_TWI << devid; - ccm_write_4(sc, CCM_APB1_GATING, reg_value); - - return (0); -} - -int -a10_clk_dmac_activate(void) -{ - struct a10_ccm_softc *sc; - uint32_t reg_value; - - sc = a10_ccm_sc; - if (sc == NULL) - return (ENXIO); - - /* Gating AHB clock for DMA controller */ - reg_value = ccm_read_4(sc, CCM_AHB_GATING0); - reg_value |= CCM_AHB_GATING_DMA; - ccm_write_4(sc, CCM_AHB_GATING0, reg_value); - - return (0); -} - -int -a10_clk_codec_activate(unsigned int freq) -{ - struct a10_ccm_softc *sc; - uint32_t reg_value; - - sc = a10_ccm_sc; - if (sc == NULL) - return (ENXIO); - - a10_clk_pll2_set_rate(freq); - - /* Gating APB clock for ADDA */ - reg_value = ccm_read_4(sc, CCM_APB0_GATING); - reg_value |= CCM_APB0_GATING_ADDA; - ccm_write_4(sc, CCM_APB0_GATING, reg_value); - - /* Enable audio codec clock */ - reg_value = ccm_read_4(sc, CCM_AUDIO_CODEC_CLK); - reg_value |= CCM_AUDIO_CODEC_ENABLE; - ccm_write_4(sc, CCM_AUDIO_CODEC_CLK, reg_value); - - return (0); -} - -static void -calc_tcon_pll(int f_ref, int f_out, int *pm, int *pn) -{ - int best, m, n, f_cur, diff; - - best = TCON_PLL_WORST; - for (n = TCON_PLL_N_MIN; n <= TCON_PLL_N_MAX; n++) { - for (m = TCON_PLL_M_MIN; m <= TCON_PLL_M_MAX; m++) { - f_cur = (m * f_ref) / n; - diff = f_out - f_cur; - if (diff > 0 && diff < best) { - best = diff; - *pm = m; - *pn = n; - } - } - } -} - -int -a10_clk_debe_activate(void) -{ - struct a10_ccm_softc *sc; - int pll_rate, clk_div; - uint32_t reg_value; - - sc = a10_ccm_sc; - if (sc == NULL) - return (ENXIO); - - /* Leave reset */ - reg_value = ccm_read_4(sc, CCM_BE0_SCLK); - reg_value |= CCM_BE_CLK_RESET; - ccm_write_4(sc, CCM_BE0_SCLK, reg_value); - - pll_rate = a10_clk_pll5x_get_rate(); - - clk_div = howmany(pll_rate, DEBE_DEFAULT_RATE); - - /* Set BE0 source to PLL5 (DDR external peripheral clock) */ - reg_value = CCM_BE_CLK_RESET; - reg_value |= (CCM_BE_CLK_SRC_SEL_PLL5 << CCM_BE_CLK_SRC_SEL_SHIFT); - reg_value |= (clk_div - 1); - ccm_write_4(sc, CCM_BE0_SCLK, reg_value); - - /* Gating AHB clock for BE0 */ - reg_value = ccm_read_4(sc, CCM_AHB_GATING1); - reg_value |= CCM_AHB_GATING_DE_BE0; - ccm_write_4(sc, CCM_AHB_GATING1, reg_value); - - /* Enable DRAM clock to BE0 */ - reg_value = ccm_read_4(sc, CCM_DRAM_CLK); - reg_value |= CCM_DRAM_CLK_BE0_CLK_ENABLE; - ccm_write_4(sc, CCM_DRAM_CLK, reg_value); - - /* Enable BE0 clock */ - reg_value = ccm_read_4(sc, CCM_BE0_SCLK); - reg_value |= CCM_BE_CLK_SCLK_GATING; - ccm_write_4(sc, CCM_BE0_SCLK, reg_value); - - return (0); -} - -int -a10_clk_lcd_activate(void) -{ - struct a10_ccm_softc *sc; - uint32_t reg_value; - - sc = a10_ccm_sc; - if (sc == NULL) - return (ENXIO); - - /* Clear LCD0 reset */ - reg_value = ccm_read_4(sc, CCM_LCD0_CH0_CLK); - reg_value |= CCM_LCD_CH0_RESET; - ccm_write_4(sc, CCM_LCD0_CH0_CLK, reg_value); - - /* Gating AHB clock for LCD0 */ - reg_value = ccm_read_4(sc, CCM_AHB_GATING1); - reg_value |= CCM_AHB_GATING_LCD0; - ccm_write_4(sc, CCM_AHB_GATING1, reg_value); - - return (0); -} - -int -a10_clk_tcon_activate(unsigned int freq) -{ - struct a10_ccm_softc *sc; - int m, n, m2, n2, f_single, f_double, dbl, src_sel; - - sc = a10_ccm_sc; - if (sc == NULL) - return (ENXIO); - - m = n = m2 = n2 = 0; - dbl = 0; - - calc_tcon_pll(TCON_PLLREF_SINGLE, TCON_RATE_KHZ(freq), &m, &n); - calc_tcon_pll(TCON_PLLREF_DOUBLE, TCON_RATE_KHZ(freq), &m2, &n2); - - f_single = n ? (m * TCON_PLLREF_SINGLE) / n : 0; - f_double = n2 ? (m2 * TCON_PLLREF_DOUBLE) / n2 : 0; - - if (f_double > f_single) { - dbl = 1; - m = m2; - n = n2; - } - src_sel = dbl ? CCM_LCD_CH1_SRC_SEL_PLL3_2X : CCM_LCD_CH1_SRC_SEL_PLL3; - - if (n == 0 || m == 0) - return (EINVAL); - - /* Set PLL3 to the closest possible rate */ - a10_clk_pll3_set_rate(TCON_RATE_HZ(m * TCON_PLLREF_SINGLE)); - - /* Enable LCD0 CH1 clock */ - ccm_write_4(sc, CCM_LCD0_CH1_CLK, - CCM_LCD_CH1_SCLK2_GATING | CCM_LCD_CH1_SCLK1_GATING | - (src_sel << CCM_LCD_CH1_SRC_SEL_SHIFT) | (n - 1)); - - return (0); -} - -int -a10_clk_tcon_get_config(int *pdiv, int *pdbl) -{ - struct a10_ccm_softc *sc; - uint32_t reg_value; - int src; - - sc = a10_ccm_sc; - if (sc == NULL) - return (ENXIO); - - reg_value = ccm_read_4(sc, CCM_LCD0_CH1_CLK); - - *pdiv = (reg_value & CCM_LCD_CH1_CLK_DIV_RATIO_M) + 1; - - src = (reg_value & CCM_LCD_CH1_SRC_SEL) >> CCM_LCD_CH1_SRC_SEL_SHIFT; - switch (src) { - case CCM_LCD_CH1_SRC_SEL_PLL3: - case CCM_LCD_CH1_SRC_SEL_PLL7: - *pdbl = 0; - break; - case CCM_LCD_CH1_SRC_SEL_PLL3_2X: - case CCM_LCD_CH1_SRC_SEL_PLL7_2X: - *pdbl = 1; - break; - } - - return (0); -} - -int -a10_clk_hdmi_activate(void) -{ - struct a10_ccm_softc *sc; - uint32_t reg_value; - int error; - - sc = a10_ccm_sc; - if (sc == NULL) - return (ENXIO); - - /* Set PLL3 to 297MHz */ - error = a10_clk_pll3_set_rate(HDMI_DEFAULT_RATE); - if (error != 0) - return (error); - - /* Enable HDMI clock, source PLL3 */ - reg_value = ccm_read_4(sc, CCM_HDMI_CLK); - reg_value |= CCM_HDMI_CLK_SCLK_GATING; - reg_value &= ~CCM_HDMI_CLK_SRC_SEL; - reg_value |= (CCM_HDMI_CLK_SRC_SEL_PLL3 << CCM_HDMI_CLK_SRC_SEL_SHIFT); - ccm_write_4(sc, CCM_HDMI_CLK, reg_value); - - /* Gating AHB clock for HDMI */ - reg_value = ccm_read_4(sc, CCM_AHB_GATING1); - reg_value |= CCM_AHB_GATING_HDMI; - ccm_write_4(sc, CCM_AHB_GATING1, reg_value); - - return (0); -} diff --git a/sys/arm/allwinner/a10_clk.h b/sys/arm/allwinner/a10_clk.h deleted file mode 100644 index 6b626be0c3c..00000000000 --- a/sys/arm/allwinner/a10_clk.h +++ /dev/null @@ -1,247 +0,0 @@ -/*- - * Copyright (c) 2013 Ganbold Tsagaankhuu - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -#ifndef _A10_CLK_H_ -#define _A10_CLK_H_ - -#define CCM_PLL1_CFG 0x0000 -#define CCM_PLL1_TUN 0x0004 -#define CCM_PLL2_CFG 0x0008 -#define CCM_PLL2_TUN 0x000c -#define CCM_PLL3_CFG 0x0010 -#define CCM_PLL3_TUN 0x0014 -#define CCM_PLL4_CFG 0x0018 -#define CCM_PLL4_TUN 0x001c -#define CCM_PLL5_CFG 0x0020 -#define CCM_PLL5_TUN 0x0024 -#define CCM_PLL6_CFG 0x0028 -#define CCM_PLL6_TUN 0x002c -#define CCM_PLL7_CFG 0x0030 -#define CCM_PLL7_TUN 0x0034 -#define CCM_PLL1_TUN2 0x0038 -#define CCM_PLL5_TUN2 0x003c -#define CCM_PLL_LOCK_DBG 0x004c -#define CCM_OSC24M_CFG 0x0050 -#define CCM_CPU_AHB_APB0_CFG 0x0054 -#define CCM_APB1_CLK_DIV 0x0058 -#define CCM_AXI_GATING 0x005c -#define CCM_AHB_GATING0 0x0060 -#define CCM_AHB_GATING1 0x0064 -#define CCM_APB0_GATING 0x0068 -#define CCM_APB1_GATING 0x006c -#define CCM_NAND_SCLK_CFG 0x0080 -#define CCM_MS_SCLK_CFG 0x0084 -#define CCM_MMC0_SCLK_CFG 0x0088 -#define CCM_MMC1_SCLK_CFG 0x008c -#define CCM_MMC2_SCLK_CFG 0x0090 -#define CCM_MMC3_SCLK_CFG 0x0094 -#define CCM_TS_CLK 0x0098 -#define CCM_SS_CLK 0x009c -#define CCM_SPI0_CLK 0x00a0 -#define CCM_SPI1_CLK 0x00a4 -#define CCM_SPI2_CLK 0x00a8 -#define CCM_PATA_CLK 0x00ac -#define CCM_IR0_CLK 0x00b0 -#define CCM_IR1_CLK 0x00b4 -#define CCM_IIS_CLK 0x00b8 -#define CCM_AC97_CLK 0x00bc -#define CCM_SPDIF_CLK 0x00c0 -#define CCM_KEYPAD_CLK 0x00c4 -#define CCM_SATA_CLK 0x00c8 -#define CCM_USB_CLK 0x00cc -#define CCM_GPS_CLK 0x00d0 -#define CCM_SPI3_CLK 0x00d4 -#define CCM_DRAM_CLK 0x0100 -#define CCM_BE0_SCLK 0x0104 -#define CCM_BE1_SCLK 0x0108 -#define CCM_FE0_CLK 0x010c -#define CCM_FE1_CLK 0x0110 -#define CCM_MP_CLK 0x0114 -#define CCM_LCD0_CH0_CLK 0x0118 -#define CCM_LCD1_CH0_CLK 0x011c -#define CCM_CSI_ISP_CLK 0x0120 -#define CCM_TVD_CLK 0x0128 -#define CCM_LCD0_CH1_CLK 0x012c -#define CCM_LCD1_CH1_CLK 0x0130 -#define CCM_CS0_CLK 0x0134 -#define CCM_CS1_CLK 0x0138 -#define CCM_VE_CLK 0x013c -#define CCM_AUDIO_CODEC_CLK 0x0140 -#define CCM_AVS_CLK 0x0144 -#define CCM_ACE_CLK 0x0148 -#define CCM_LVDS_CLK 0x014c -#define CCM_HDMI_CLK 0x0150 -#define CCM_MALI400_CLK 0x0154 -#define CCM_GMAC_CLK 0x0164 - -#define CCM_GMAC_CLK_DELAY_SHIFT 10 -#define CCM_GMAC_CLK_MODE_MASK 0x7 -#define CCM_GMAC_MODE_RGMII (1 << 2) -#define CCM_GMAC_CLK_MII 0x0 -#define CCM_GMAC_CLK_EXT_RGMII 0x1 -#define CCM_GMAC_CLK_RGMII 0x2 - -/* APB0_GATING */ -#define CCM_APB0_GATING_ADDA (1 << 0) - -/* AHB_GATING_REG0 */ -#define CCM_AHB_GATING_USB0 (1 << 0) -#define CCM_AHB_GATING_EHCI0 (1 << 1) -#define CCM_AHB_GATING_OHCI0 (1 << 2) -#define CCM_AHB_GATING_EHCI1 (1 << 3) -#define CCM_AHB_GATING_OHCI1 (1 << 4) -#define CCM_AHB_GATING_DMA (1 << 6) -#define CCM_AHB_GATING_SDMMC0 (1 << 8) -#define CCM_AHB_GATING_EMAC (1 << 17) -#define CCM_AHB_GATING_SATA (1 << 25) - -/* AHB_GATING_REG1 */ -#define CCM_AHB_GATING_GMAC (1 << 17) -#define CCM_AHB_GATING_DE_BE1 (1 << 13) -#define CCM_AHB_GATING_DE_BE0 (1 << 12) -#define CCM_AHB_GATING_HDMI (1 << 11) -#define CCM_AHB_GATING_LCD1 (1 << 5) -#define CCM_AHB_GATING_LCD0 (1 << 4) - -/* APB1_GATING_REG */ -#define CCM_APB1_GATING_TWI (1 << 0) - -/* USB */ -#define CCM_USB_PHY (1 << 8) -#define CCM_SCLK_GATING_OHCI1 (1 << 7) -#define CCM_SCLK_GATING_OHCI0 (1 << 6) -#define CCM_USBPHY2_RESET (1 << 2) -#define CCM_USBPHY1_RESET (1 << 1) -#define CCM_USBPHY0_RESET (1 << 0) - -#define CCM_PLL_CFG_ENABLE (1U << 31) -#define CCM_PLL_CFG_BYPASS (1U << 30) -#define CCM_PLL_CFG_PLL5 (1U << 25) -#define CCM_PLL_CFG_PLL6 (1U << 24) -#define CCM_PLL_CFG_FACTOR_N 0x1f00 -#define CCM_PLL_CFG_FACTOR_N_SHIFT 8 -#define CCM_PLL_CFG_FACTOR_K 0x30 -#define CCM_PLL_CFG_FACTOR_K_SHIFT 4 -#define CCM_PLL_CFG_FACTOR_M 0x3 - -#define CCM_PLL2_CFG_POSTDIV 0x3c000000 -#define CCM_PLL2_CFG_POSTDIV_SHIFT 26 -#define CCM_PLL2_CFG_PREDIV 0x1f -#define CCM_PLL2_CFG_PREDIV_SHIFT 0 - -#define CCM_PLL3_CFG_MODE_SEL_SHIFT 15 -#define CCM_PLL3_CFG_MODE_SEL_FRACT (0 << CCM_PLL3_CFG_MODE_SEL_SHIFT) -#define CCM_PLL3_CFG_MODE_SEL_INT (1 << CCM_PLL3_CFG_MODE_SEL_SHIFT) -#define CCM_PLL3_CFG_FUNC_SET_SHIFT 14 -#define CCM_PLL3_CFG_FUNC_SET_270MHZ (0 << CCM_PLL3_CFG_FUNC_SET_SHIFT) -#define CCM_PLL3_CFG_FUNC_SET_297MHZ (1 << CCM_PLL3_CFG_FUNC_SET_SHIFT) -#define CCM_PLL3_CFG_FACTOR_M 0x7f - -#define CCM_PLL5_CFG_OUT_EXT_DIV_P 0x30000 -#define CCM_PLL5_CFG_OUT_EXT_DIV_P_SHIFT 16 - -#define CCM_PLL6_CFG_SATA_CLKEN (1U << 14) - -#define CCM_SD_CLK_SRC_SEL 0x3000000 -#define CCM_SD_CLK_SRC_SEL_SHIFT 24 -#define CCM_SD_CLK_SRC_SEL_OSC24M 0 -#define CCM_SD_CLK_SRC_SEL_PLL6 1 -#define CCM_SD_CLK_PHASE_CTR 0x700000 -#define CCM_SD_CLK_PHASE_CTR_SHIFT 20 -#define CCM_SD_CLK_DIV_RATIO_N 0x30000 -#define CCM_SD_CLK_DIV_RATIO_N_SHIFT 16 -#define CCM_SD_CLK_OPHASE_CTR 0x700 -#define CCM_SD_CLK_OPHASE_CTR_SHIFT 8 -#define CCM_SD_CLK_DIV_RATIO_M 0xf - -#define CCM_AUDIO_CODEC_ENABLE (1U << 31) - -#define CCM_LCD_CH0_SCLK_GATING (1U << 31) -#define CCM_LCD_CH0_RESET (1U << 30) -#define CCM_LCD_CH0_SRC_SEL 0x03000000 -#define CCM_LCD_CH0_SRC_SEL_SHIFT 24 -#define CCM_LCD_CH0_SRC_SEL_PLL3 0 -#define CCM_LCD_CH0_SRC_SEL_PLL7 1 -#define CCM_LCD_CH0_SRC_SEL_PLL3_2X 2 -#define CCM_LCD_CH0_SRC_SEL_PLL6_2X 3 - -#define CCM_LCD_CH1_SCLK2_GATING (1U << 31) -#define CCM_LCD_CH1_SRC_SEL 0x03000000 -#define CCM_LCD_CH1_SRC_SEL_SHIFT 24 -#define CCM_LCD_CH1_SRC_SEL_PLL3 0 -#define CCM_LCD_CH1_SRC_SEL_PLL7 1 -#define CCM_LCD_CH1_SRC_SEL_PLL3_2X 2 -#define CCM_LCD_CH1_SRC_SEL_PLL7_2X 3 -#define CCM_LCD_CH1_SCLK1_GATING (1U << 15) -#define CCM_LCD_CH1_SCLK1_SRC_SEL_SHIFT 11 -#define CCM_LCD_CH1_SCLK1_SRC_SEL_SCLK2 0 -#define CCM_LCD_CH1_SCLK1_SRC_SEL_SCLK2_DIV2 1 -#define CCM_LCD_CH1_CLK_DIV_RATIO_M 0xf - -#define CCM_DRAM_CLK_BE1_CLK_ENABLE (1U << 27) -#define CCM_DRAM_CLK_BE0_CLK_ENABLE (1U << 26) - -#define CCM_BE_CLK_SCLK_GATING (1U << 31) -#define CCM_BE_CLK_RESET (1U << 30) -#define CCM_BE_CLK_SRC_SEL 0x03000000 -#define CCM_BE_CLK_SRC_SEL_SHIFT 24 -#define CCM_BE_CLK_SRC_SEL_PLL3 0 -#define CCM_BE_CLK_SRC_SEL_PLL7 1 -#define CCM_BE_CLK_SRC_SEL_PLL5 2 -#define CCM_BE_CLK_DIV_RATIO_M 0xf - -#define CCM_HDMI_CLK_SCLK_GATING (1U << 31) -#define CCM_HDMI_CLK_SRC_SEL 0x03000000 -#define CCM_HDMI_CLK_SRC_SEL_SHIFT 24 -#define CCM_HDMI_CLK_SRC_SEL_PLL3 0 -#define CCM_HDMI_CLK_SRC_SEL_PLL7 1 -#define CCM_HDMI_CLK_SRC_SEL_PLL3_2X 2 -#define CCM_HDMI_CLK_SRC_SEL_PLL7_2X 3 -#define CCM_HDMI_CLK_DIV_RATIO_M 0xf - -#define CCM_CLK_REF_FREQ 24000000U - -int a10_clk_ehci_activate(void); -int a10_clk_ehci_deactivate(void); -int a10_clk_ohci_activate(void); -int a10_clk_ohci_deactivate(void); -int a10_clk_emac_activate(void); -int a10_clk_gmac_activate(phandle_t); -int a10_clk_ahci_activate(void); -int a10_clk_mmc_activate(int); -int a10_clk_mmc_cfg(int, int); -int a10_clk_i2c_activate(int); -int a10_clk_dmac_activate(void); -int a10_clk_codec_activate(unsigned int); -int a10_clk_debe_activate(void); -int a10_clk_lcd_activate(void); -int a10_clk_tcon_activate(unsigned int); -int a10_clk_tcon_get_config(int *, int *); -int a10_clk_hdmi_activate(void); - -#endif /* _A10_CLK_H_ */ diff --git a/sys/arm/allwinner/a10_codec.c b/sys/arm/allwinner/a10_codec.c index 6646f2d9318..f791b183f01 100644 --- a/sys/arm/allwinner/a10_codec.c +++ b/sys/arm/allwinner/a10_codec.c @@ -50,7 +50,7 @@ __FBSDID("$FreeBSD$"); #include #include -#include +#include #include "sunxi_dma_if.h" #include "mixer_if.h" @@ -738,6 +738,7 @@ a10codec_attach(device_t dev) { struct a10codec_info *sc; char status[SND_STATUSLEN]; + clk_t clk_apb, clk_codec; uint32_t val; int error; @@ -778,6 +779,24 @@ a10codec_attach(device_t dev) goto fail; } + /* Get clocks */ + error = clk_get_by_ofw_name(dev, "apb", &clk_apb); + if (error != 0) { + device_printf(dev, "cannot find apb clock\n"); + goto fail; + } + error = clk_get_by_ofw_name(dev, "codec", &clk_codec); + if (error != 0) { + device_printf(dev, "cannot find codec clock\n"); + goto fail; + } + + /* Gating APB clock for codec */ + error = clk_enable(clk_apb); + if (error != 0) { + device_printf(dev, "cannot enable apb clock\n"); + goto fail; + } /* Activate audio codec clock. According to the A10 and A20 user * manuals, Audio_pll can be either 24.576MHz or 22.5792MHz. Most * audio sampling rates require an 24.576MHz input clock with the @@ -787,7 +806,17 @@ a10codec_attach(device_t dev) * 24.576MHz clock source and don't advertise native support for * the three sampling rates that require a 22.5792MHz input. */ - a10_clk_codec_activate(24576000); + error = clk_set_freq(clk_codec, 24576000, CLK_SET_ROUND_DOWN); + if (error != 0) { + device_printf(dev, "cannot set codec clock frequency\n"); + goto fail; + } + /* Enable audio codec clock */ + error = clk_enable(clk_codec); + if (error != 0) { + device_printf(dev, "cannot enable codec clock\n"); + goto fail; + } /* Enable DAC */ val = CODEC_READ(sc, AC_DAC_DPC); diff --git a/sys/arm/allwinner/a10_dmac.c b/sys/arm/allwinner/a10_dmac.c index 65fa35255a5..fd5aaa6d525 100644 --- a/sys/arm/allwinner/a10_dmac.c +++ b/sys/arm/allwinner/a10_dmac.c @@ -46,7 +46,7 @@ __FBSDID("$FreeBSD$"); #include #include -#include +#include #include "sunxi_dma_if.h" @@ -111,6 +111,7 @@ a10dmac_attach(device_t dev) { struct a10dmac_softc *sc; unsigned int index; + clk_t clk; int error; sc = device_get_softc(dev); @@ -123,7 +124,16 @@ a10dmac_attach(device_t dev) mtx_init(&sc->sc_mtx, "a10 dmac", NULL, MTX_SPIN); /* Activate DMA controller clock */ - a10_clk_dmac_activate(); + error = clk_get_by_ofw_index(dev, 0, &clk); + if (error != 0) { + device_printf(dev, "cannot get clock\n"); + return (error); + } + error = clk_enable(clk); + if (error != 0) { + device_printf(dev, "cannot enable clock\n"); + return (error); + } /* Disable all interrupts and clear pending status */ DMA_WRITE(sc, AWIN_DMA_IRQ_EN_REG, 0); diff --git a/sys/arm/allwinner/a10_ehci.c b/sys/arm/allwinner/a10_ehci.c index c633de20aa0..c325d60ff0f 100644 --- a/sys/arm/allwinner/a10_ehci.c +++ b/sys/arm/allwinner/a10_ehci.c @@ -59,8 +59,8 @@ __FBSDID("$FreeBSD$"); #include #include -#include -#include +#include +#include #define EHCI_HC_DEVSTR "Allwinner Integrated USB 2.0 controller" @@ -90,25 +90,22 @@ static device_detach_t a10_ehci_detach; bs_r_1_proto(reversed); bs_w_1_proto(reversed); +struct aw_ehci_softc { + ehci_softc_t sc; + clk_t clk; + hwreset_t rst; +}; + struct aw_ehci_conf { - int (*clk_activate)(void); - int (*clk_deactivate)(void); bool sdram_init; }; static const struct aw_ehci_conf a10_ehci_conf = { -#if defined(SOC_ALLWINNER_A10) || defined(SOC_ALLWINNER_A20) - .clk_activate = a10_clk_ehci_activate, - .clk_deactivate = a10_clk_ehci_deactivate, -#endif .sdram_init = true, }; static const struct aw_ehci_conf a31_ehci_conf = { -#if defined(SOC_ALLWINNER_A31) || defined(SOC_ALLWINNER_A31S) - .clk_activate = a31_clk_ehci_activate, - .clk_deactivate = a31_clk_ehci_deactivate, -#endif + .sdram_init = false, }; static struct ofw_compat_data compat_data[] = { @@ -136,7 +133,8 @@ a10_ehci_probe(device_t self) static int a10_ehci_attach(device_t self) { - ehci_softc_t *sc = device_get_softc(self); + struct aw_ehci_softc *aw_sc = device_get_softc(self); + ehci_softc_t *sc = &aw_sc->sc; const struct aw_ehci_conf *conf; bus_space_handle_t bsh; int err; @@ -144,10 +142,6 @@ a10_ehci_attach(device_t self) uint32_t reg_value = 0; conf = USB_CONF(self); - if (conf->clk_activate == NULL) { - device_printf(self, "clock not supported\n"); - return (ENXIO); - } /* initialise some bus fields */ sc->sc_bus.parent = self; @@ -208,9 +202,24 @@ a10_ehci_attach(device_t self) sc->sc_flags |= EHCI_SCFLG_DONTRESET; + /* De-assert reset */ + if (hwreset_get_by_ofw_idx(self, 0, &aw_sc->rst) == 0) { + err = hwreset_deassert(aw_sc->rst); + if (err != 0) { + device_printf(self, "Could not de-assert reset\n"); + goto error; + } + } + /* Enable clock for USB */ - if (conf->clk_activate() != 0) { - device_printf(self, "Could not activate clock\n"); + err = clk_get_by_ofw_index(self, 0, &aw_sc->clk); + if (err != 0) { + device_printf(self, "Could not get clock\n"); + goto error; + } + err = clk_enable(aw_sc->clk); + if (err != 0) { + device_printf(self, "Could not enable clock\n"); goto error; } @@ -240,6 +249,8 @@ a10_ehci_attach(device_t self) return (0); error: + if (aw_sc->clk) + clk_release(aw_sc->clk); a10_ehci_detach(self); return (ENXIO); } @@ -247,7 +258,8 @@ a10_ehci_attach(device_t self) static int a10_ehci_detach(device_t self) { - ehci_softc_t *sc = device_get_softc(self); + struct aw_ehci_softc *aw_sc = device_get_softc(self); + ehci_softc_t *sc = &aw_sc->sc; const struct aw_ehci_conf *conf; device_t bdev; int err; @@ -305,7 +317,14 @@ a10_ehci_detach(device_t self) A10_WRITE_4(sc, SW_USB_PMU_IRQ_ENABLE, reg_value); /* Disable clock for USB */ - conf->clk_deactivate(); + clk_disable(aw_sc->clk); + clk_release(aw_sc->clk); + + /* Assert reset */ + if (aw_sc->rst != NULL) { + hwreset_assert(aw_sc->rst); + hwreset_release(aw_sc->rst); + } return (0); } diff --git a/sys/arm/allwinner/a10_fb.c b/sys/arm/allwinner/a10_fb.c index ea033f8ad6f..cf8f167390f 100644 --- a/sys/arm/allwinner/a10_fb.c +++ b/sys/arm/allwinner/a10_fb.c @@ -54,7 +54,8 @@ __FBSDID("$FreeBSD$"); #include #include -#include +#include +#include #include "fb_if.h" #include "hdmi_if.h" @@ -66,6 +67,7 @@ __FBSDID("$FreeBSD$"); #define FB_ALIGN 0x1000 #define HDMI_ENABLE_DELAY 20000 +#define DEBE_FREQ 300000000 #define DOT_CLOCK_TO_HZ(c) ((c) * 1000) @@ -193,18 +195,68 @@ a10fb_freefb(struct a10fb_softc *sc) kmem_free(kernel_arena, sc->vaddr, sc->fbsize); } -static void +static int a10fb_setup_debe(struct a10fb_softc *sc, const struct videomode *mode) { int width, height, interlace, reg; + clk_t clk_ahb, clk_dram, clk_debe; + hwreset_t rst; uint32_t val; + int error; interlace = !!(mode->flags & VID_INTERLACE); width = mode->hdisplay; height = mode->vdisplay << interlace; - /* Enable DEBE clocks */ - a10_clk_debe_activate(); + /* Leave reset */ + error = hwreset_get_by_ofw_name(sc->dev, "de_be", &rst); + if (error != 0) { + device_printf(sc->dev, "cannot find reset 'de_be'\n"); + return (error); + } + error = hwreset_deassert(rst); + if (error != 0) { + device_printf(sc->dev, "couldn't de-assert reset 'de_be'\n"); + return (error); + } + /* Gating AHB clock for BE */ + error = clk_get_by_ofw_name(sc->dev, "ahb_de_be", &clk_ahb); + if (error != 0) { + device_printf(sc->dev, "cannot find clk 'ahb_de_be'\n"); + return (error); + } + error = clk_enable(clk_ahb); + if (error != 0) { + device_printf(sc->dev, "cannot enable clk 'ahb_de_be'\n"); + return (error); + } + /* Enable DRAM clock to BE */ + error = clk_get_by_ofw_name(sc->dev, "dram_de_be", &clk_dram); + if (error != 0) { + device_printf(sc->dev, "cannot find clk 'dram_de_be'\n"); + return (error); + } + error = clk_enable(clk_dram); + if (error != 0) { + device_printf(sc->dev, "cannot enable clk 'dram_de_be'\n"); + return (error); + } + /* Set BE clock to 300MHz and enable */ + error = clk_get_by_ofw_name(sc->dev, "de_be", &clk_debe); + if (error != 0) { + device_printf(sc->dev, "cannot find clk 'de_be'\n"); + return (error); + } + error = clk_set_freq(clk_debe, DEBE_FREQ, CLK_SET_ROUND_DOWN); + if (error != 0) { + device_printf(sc->dev, "cannot set 'de_be' frequency\n"); + return (error); + } + error = clk_enable(clk_debe); + if (error != 0) { + device_printf(sc->dev, "cannot enable clk 'de_be'\n"); + return (error); + } /* Initialize all registers to 0 */ for (reg = DEBE_REG_START; reg < DEBE_REG_END; reg += DEBE_REG_WIDTH) @@ -247,14 +299,55 @@ a10fb_setup_debe(struct a10fb_softc *sc, const struct videomode *mode) val = DEBE_READ(sc, DEBE_MODCTL); val |= MODCTL_START_CTL; DEBE_WRITE(sc, DEBE_MODCTL, val); + + return (0); } -static void +static int +a10fb_setup_pll(struct a10fb_softc *sc, uint64_t freq) +{ + clk_t clk_sclk1, clk_sclk2; + int error; + + error = clk_get_by_ofw_name(sc->dev, "lcd_ch1_sclk1", &clk_sclk1); + if (error != 0) { + device_printf(sc->dev, "cannot find clk 'lcd_ch1_sclk1'\n"); + return (error); + } + error = clk_get_by_ofw_name(sc->dev, "lcd_ch1_sclk2", &clk_sclk2); + if (error != 0) { + device_printf(sc->dev, "cannot find clk 'lcd_ch1_sclk2'\n"); + return (error); + } + + error = clk_set_freq(clk_sclk2, freq, 0); + if (error != 0) { + device_printf(sc->dev, "cannot set lcd ch1 frequency\n"); + return (error); + } + error = clk_enable(clk_sclk2); + if (error != 0) { + device_printf(sc->dev, "cannot enable lcd ch1 sclk2\n"); + return (error); + } + error = clk_enable(clk_sclk1); + if (error != 0) { + device_printf(sc->dev, "cannot enable lcd ch1 sclk1\n"); + return (error); + } + + return (0); +} + +static int a10fb_setup_tcon(struct a10fb_softc *sc, const struct videomode *mode) { u_int interlace, hspw, hbp, vspw, vbp, vbl, width, height, start_delay; u_int vtotal, framerate, clk; + clk_t clk_ahb; + hwreset_t rst; uint32_t val; + int error; interlace = !!(mode->flags & VID_INTERLACE); width = mode->hdisplay; @@ -266,8 +359,28 @@ a10fb_setup_tcon(struct a10fb_softc *sc, const struct videomode *mode) vbl = VBLANK_LEN(mode->vtotal, mode->vdisplay, interlace); start_delay = START_DELAY(vbl); - /* Enable LCD clocks */ - a10_clk_lcd_activate(); + /* Leave reset */ + error = hwreset_get_by_ofw_name(sc->dev, "lcd", &rst); + if (error != 0) { + device_printf(sc->dev, "cannot find reset 'lcd'\n"); + return (error); + } + error = hwreset_deassert(rst); + if (error != 0) { + device_printf(sc->dev, "couldn't de-assert reset 'lcd'\n"); + return (error); + } + /* Gating AHB clock for LCD */ + error = clk_get_by_ofw_name(sc->dev, "ahb_lcd", &clk_ahb); + if (error != 0) { + device_printf(sc->dev, "cannot find clk 'ahb_lcd'\n"); + return (error); + } + error = clk_enable(clk_ahb); + if (error != 0) { + device_printf(sc->dev, "cannot enable clk 'ahb_lcd'\n"); + return (error); + } /* Disable TCON and TCON1 */ TCON_WRITE(sc, TCON_GCTL, 0); @@ -322,7 +435,7 @@ a10fb_setup_tcon(struct a10fb_softc *sc, const struct videomode *mode) TCON_WRITE(sc, TCON1_CTL, val); /* Setup PLL */ - a10_clk_tcon_activate(DOT_CLOCK_TO_HZ(mode->dot_clock)); + return (a10fb_setup_pll(sc, DOT_CLOCK_TO_HZ(mode->dot_clock))); } static void @@ -378,10 +491,14 @@ a10fb_configure(struct a10fb_softc *sc, const struct videomode *mode) } /* Setup display backend */ - a10fb_setup_debe(sc, mode); + error = a10fb_setup_debe(sc, mode); + if (error != 0) + return (error); /* Setup display timing controller */ - a10fb_setup_tcon(sc, mode); + error = a10fb_setup_tcon(sc, mode); + if (error != 0) + return (error); /* Attach framebuffer device */ sc->info.fb_name = device_get_nameunit(sc->dev); diff --git a/sys/arm/allwinner/a10_hdmi.c b/sys/arm/allwinner/a10_hdmi.c index ff86fa0f5da..99cbc2f92da 100644 --- a/sys/arm/allwinner/a10_hdmi.c +++ b/sys/arm/allwinner/a10_hdmi.c @@ -49,7 +49,7 @@ __FBSDID("$FreeBSD$"); #include #include -#include +#include #include "hdmi_if.h" @@ -204,6 +204,7 @@ __FBSDID("$FreeBSD$"); #define HDMI_VSDB_MINLEN 5 #define HDMI_OUI "\x03\x0c\x00" #define HDMI_OUI_LEN 3 +#define HDMI_DEFAULT_FREQ 297000000 struct a10hdmi_softc { struct resource *res; @@ -214,6 +215,10 @@ struct a10hdmi_softc { int has_hdmi; int has_audio; + + clk_t clk_ahb; + clk_t clk_hdmi; + clk_t clk_lcd; }; static struct resource_spec a10hdmi_spec[] = { @@ -287,7 +292,33 @@ a10hdmi_attach(device_t dev) return (ENXIO); } - a10_clk_hdmi_activate(); + /* Setup clocks */ + error = clk_get_by_ofw_name(dev, "ahb", &sc->clk_ahb); + if (error != 0) { + device_printf(dev, "cannot find ahb clock\n"); + return (error); + } + error = clk_get_by_ofw_name(dev, "hdmi", &sc->clk_hdmi); + if (error != 0) { + device_printf(dev, "cannot find hdmi clock\n"); + return (error); + } + error = clk_get_by_ofw_name(dev, "lcd", &sc->clk_lcd); + if (error != 0) { + device_printf(dev, "cannot find lcd clock\n"); + } + /* Enable HDMI clock */ + error = clk_enable(sc->clk_hdmi); + if (error != 0) { + device_printf(dev, "cannot enable hdmi clock\n"); + return (error); + } + /* Gating AHB clock for HDMI */ + error = clk_enable(sc->clk_ahb); + if (error != 0) { + device_printf(dev, "cannot enable ahb gate\n"); + return (error); + } a10hdmi_init(sc); @@ -526,6 +557,38 @@ a10hdmi_set_audiomode(device_t dev, const struct videomode *mode) HDMI_WRITE(sc, HDMI_AUD_CTRL, AUD_CTRL_EN); } +static int +a10hdmi_get_tcon_config(struct a10hdmi_softc *sc, int *div, int *dbl) +{ + uint64_t lcd_fin, lcd_fout; + clk_t clk_lcd_parent; + const char *pname; + int error; + + error = clk_get_parent(sc->clk_lcd, &clk_lcd_parent); + if (error != 0) + return (error); + + /* Get the LCD CH1 special clock 2 divider */ + error = clk_get_freq(sc->clk_lcd, &lcd_fout); + if (error != 0) + return (error); + error = clk_get_freq(clk_lcd_parent, &lcd_fin); + if (error != 0) + return (error); + *div = lcd_fin / lcd_fout; + + /* Detect LCD CH1 special clock using a 1X or 2X source */ + /* XXX */ + pname = clk_get_name(clk_lcd_parent); + if (strcmp(pname, "pll3-1x") == 0 || strcmp(pname, "pll7-1x") == 0) + *dbl = 0; + else + *dbl = 1; + + return (0); +} + static int a10hdmi_set_videomode(device_t dev, const struct videomode *mode) { @@ -543,9 +606,11 @@ a10hdmi_set_videomode(device_t dev, const struct videomode *mode) vspw = mode->vsync_end - mode->vsync_start; vbp = mode->vtotal - mode->vsync_start; - error = a10_clk_tcon_get_config(&clk_div, &clk_dbl); - if (error != 0) + error = a10hdmi_get_tcon_config(sc, &clk_div, &clk_dbl); + if (error != 0) { + device_printf(dev, "couldn't get tcon config: %d\n", error); return (error); + } /* Clear interrupt status */ HDMI_WRITE(sc, HDMI_INT_STATUS, HDMI_READ(sc, HDMI_INT_STATUS)); diff --git a/sys/arm/allwinner/a10_mmc.c b/sys/arm/allwinner/a10_mmc.c index dc341dd3e12..1b89c0f4020 100644 --- a/sys/arm/allwinner/a10_mmc.c +++ b/sys/arm/allwinner/a10_mmc.c @@ -49,9 +49,9 @@ __FBSDID("$FreeBSD$"); #include #include -#include #include -#include +#include +#include #define A10_MMC_MEMRES 0 #define A10_MMC_IRQRES 1 @@ -60,6 +60,8 @@ __FBSDID("$FreeBSD$"); #define A10_MMC_DMA_MAX_SIZE 0x2000 #define A10_MMC_DMA_FTRGLEVEL 0x20070008 +#define CARD_ID_FREQUENCY 400000 + static int a10_mmc_pio_mode = 0; TUNABLE_INT("hw.a10.mmc.pio_mode", &a10_mmc_pio_mode); @@ -74,6 +76,9 @@ struct a10_mmc_softc { bus_space_handle_t a10_bsh; bus_space_tag_t a10_bst; device_t a10_dev; + clk_t a10_clk_ahb; + clk_t a10_clk_mmc; + hwreset_t a10_rst_ahb; int a10_bus_busy; int a10_id; int a10_resid; @@ -147,7 +152,7 @@ a10_mmc_attach(device_t dev) struct a10_mmc_softc *sc; struct sysctl_ctx_list *ctx; struct sysctl_oid_list *tree; - int clk; + int error; sc = device_get_softc(dev); sc->a10_dev = dev; @@ -170,6 +175,9 @@ a10_mmc_attach(device_t dev) device_printf(dev, "cannot setup interrupt handler\n"); return (ENXIO); } + mtx_init(&sc->a10_mtx, device_get_nameunit(sc->a10_dev), "a10_mmc", + MTX_DEF); + callout_init_mtx(&sc->a10_timeoutc, &sc->a10_mtx, 0); /* * Later chips use a different FIFO offset. Unfortunately the FDT @@ -186,30 +194,41 @@ a10_mmc_attach(device_t dev) break; } - /* Activate the module clock. */ - switch (allwinner_soc_type()) { -#if defined(SOC_ALLWINNER_A10) || defined(SOC_ALLWINNER_A20) - case ALLWINNERSOC_A10: - case ALLWINNERSOC_A10S: - case ALLWINNERSOC_A20: - clk = a10_clk_mmc_activate(sc->a10_id); - break; -#endif -#if defined(SOC_ALLWINNER_A31) || defined(SOC_ALLWINNER_A31S) - case ALLWINNERSOC_A31: - case ALLWINNERSOC_A31S: - clk = a31_clk_mmc_activate(sc->a10_id); - break; -#endif - default: - clk = -1; + /* De-assert reset */ + if (hwreset_get_by_ofw_name(dev, "ahb", &sc->a10_rst_ahb) == 0) { + error = hwreset_deassert(sc->a10_rst_ahb); + if (error != 0) { + device_printf(dev, "cannot de-assert reset\n"); + return (error); + } } - if (clk != 0) { - bus_teardown_intr(dev, sc->a10_res[A10_MMC_IRQRES], - sc->a10_intrhand); - bus_release_resources(dev, a10_mmc_res_spec, sc->a10_res); - device_printf(dev, "cannot activate mmc clock\n"); - return (ENXIO); + + /* Activate the module clock. */ + error = clk_get_by_ofw_name(dev, "ahb", &sc->a10_clk_ahb); + if (error != 0) { + device_printf(dev, "cannot get ahb clock\n"); + goto fail; + } + error = clk_enable(sc->a10_clk_ahb); + if (error != 0) { + device_printf(dev, "cannot enable ahb clock\n"); + goto fail; + } + error = clk_get_by_ofw_name(dev, "mmc", &sc->a10_clk_mmc); + if (error != 0) { + device_printf(dev, "cannot get mmc clock\n"); + goto fail; + } + error = clk_set_freq(sc->a10_clk_mmc, CARD_ID_FREQUENCY, + CLK_SET_ROUND_DOWN); + if (error != 0) { + device_printf(dev, "cannot init mmc clock\n"); + goto fail; + } + error = clk_enable(sc->a10_clk_mmc); + if (error != 0) { + device_printf(dev, "cannot enable mmc clock\n"); + goto fail; } sc->a10_timeout = 10; @@ -217,9 +236,6 @@ a10_mmc_attach(device_t dev) tree = SYSCTL_CHILDREN(device_get_sysctl_tree(dev)); SYSCTL_ADD_INT(ctx, tree, OID_AUTO, "req_timeout", CTLFLAG_RW, &sc->a10_timeout, 0, "Request timeout in seconds"); - mtx_init(&sc->a10_mtx, device_get_nameunit(sc->a10_dev), "a10_mmc", - MTX_DEF); - callout_init_mtx(&sc->a10_timeoutc, &sc->a10_mtx, 0); /* Reset controller. */ if (a10_mmc_reset(sc) != 0) { @@ -826,25 +842,14 @@ a10_mmc_update_ios(device_t bus, device_t child) return (error); /* Set the MMC clock. */ - switch (allwinner_soc_type()) { -#if defined(SOC_ALLWINNER_A10) || defined(SOC_ALLWINNER_A20) - case ALLWINNERSOC_A10: - case ALLWINNERSOC_A10S: - case ALLWINNERSOC_A20: - error = a10_clk_mmc_cfg(sc->a10_id, ios->clock); - break; -#endif -#if defined(SOC_ALLWINNER_A31) || defined(SOC_ALLWINNER_A31S) - case ALLWINNERSOC_A31: - case ALLWINNERSOC_A31S: - error = a31_clk_mmc_cfg(sc->a10_id, ios->clock); - break; -#endif - default: - error = ENXIO; - } - if (error != 0) + error = clk_set_freq(sc->a10_clk_mmc, ios->clock, + CLK_SET_ROUND_DOWN); + if (error != 0) { + device_printf(sc->a10_dev, + "failed to set frequency to %u Hz: %d\n", + ios->clock, error); return (error); + } /* Enable clock. */ clkcr |= A10_MMC_CARD_CLK_ON; diff --git a/sys/arm/allwinner/a20/a20_if_dwc.c b/sys/arm/allwinner/a20/a20_if_dwc.c index 711873d70e1..5e901e466b6 100644 --- a/sys/arm/allwinner/a20/a20_if_dwc.c +++ b/sys/arm/allwinner/a20/a20_if_dwc.c @@ -41,8 +41,7 @@ __FBSDID("$FreeBSD$"); #include #include -#include -#include +#include #include "if_dwc_if.h" @@ -62,29 +61,39 @@ a20_if_dwc_probe(device_t dev) static int a20_if_dwc_init(device_t dev) { - int clk; + const char *tx_parent_name; + char *phy_type; + clk_t clk_tx, clk_tx_parent; + phandle_t node; + int error; - /* Activate GMAC clock and set the pin mux to rgmii. */ - switch (allwinner_soc_type()) { -#if defined(SOC_ALLWINNER_A10) || defined(SOC_ALLWINNER_A20) - case ALLWINNERSOC_A10: - case ALLWINNERSOC_A10S: - case ALLWINNERSOC_A20: - clk = a10_clk_gmac_activate(ofw_bus_get_node(dev)); - break; -#endif -#if defined(SOC_ALLWINNER_A31) || defined(SOC_ALLWINNER_A31S) - case ALLWINNERSOC_A31: - case ALLWINNERSOC_A31S: - clk = a31_clk_gmac_activate(ofw_bus_get_node(dev)); - break; -#endif - default: - clk = -1; - } - if (clk != 0) { - device_printf(dev, "could not activate gmac module\n"); - return (ENXIO); + node = ofw_bus_get_node(dev); + + /* Configure PHY for MII or RGMII mode */ + if (OF_getprop_alloc(node, "phy-mode", 1, (void **)&phy_type)) { + error = clk_get_by_ofw_name(dev, "allwinner_gmac_tx", &clk_tx); + if (error != 0) { + device_printf(dev, "could not get tx clk\n"); + return (error); + } + + if (strcmp(phy_type, "rgmii") == 0) + tx_parent_name = "gmac_int_tx"; + else + tx_parent_name = "mii_phy_tx"; + + error = clk_get_by_name(dev, tx_parent_name, &clk_tx_parent); + if (error != 0) { + device_printf(dev, "could not get clock '%s'\n", + tx_parent_name); + return (error); + } + + error = clk_set_parent_by_clk(clk_tx, clk_tx_parent); + if (error != 0) { + device_printf(dev, "could not set tx clk parent\n"); + return (error); + } } return (0); diff --git a/sys/arm/allwinner/a31/a31_clk.c b/sys/arm/allwinner/a31/a31_clk.c deleted file mode 100644 index edda8bbc6f4..00000000000 --- a/sys/arm/allwinner/a31/a31_clk.c +++ /dev/null @@ -1,378 +0,0 @@ -/*- - * Copyright (c) 2013 Ganbold Tsagaankhuu - * Copyright (c) 2016 Emmanuel Vadot - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* - * Simple clock driver for Allwinner A31 - * Adapted from a10_clk.c -*/ - -#include -__FBSDID("$FreeBSD$"); - -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include - -struct a31_ccm_softc { - struct resource *res; - struct mtx mtx; - int pll6_enabled; - int ehci_refcnt; -}; - -static struct a31_ccm_softc *a31_ccm_sc = NULL; - -#define ccm_read_4(sc, reg) \ - bus_read_4((sc)->res, (reg)) -#define ccm_write_4(sc, reg, val) \ - bus_write_4((sc)->res, (reg), (val)) - -#define CCM_LOCK(sc) mtx_lock(&(sc)->mtx) -#define CCM_UNLOCK(sc) mtx_unlock(&(sc)->mtx) - -#define PLL6_TIMEOUT 10 - -static int -a31_ccm_probe(device_t dev) -{ - - if (!ofw_bus_status_okay(dev)) - return (ENXIO); - - if (ofw_bus_is_compatible(dev, "allwinner,sun6i-a31-ccm")) { - device_set_desc(dev, "Allwinner Clock Control Module"); - return(BUS_PROBE_DEFAULT); - } - - return (ENXIO); -} - -static int -a31_ccm_attach(device_t dev) -{ - struct a31_ccm_softc *sc = device_get_softc(dev); - int rid = 0; - - if (a31_ccm_sc) - return (ENXIO); - - sc->res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, RF_ACTIVE); - if (!sc->res) { - device_printf(dev, "could not allocate resource\n"); - return (ENXIO); - } - - mtx_init(&sc->mtx, "a31 ccm", NULL, MTX_DEF); - - a31_ccm_sc = sc; - - return (0); -} - -static device_method_t a31_ccm_methods[] = { - DEVMETHOD(device_probe, a31_ccm_probe), - DEVMETHOD(device_attach, a31_ccm_attach), - { 0, 0 } -}; - -static driver_t a31_ccm_driver = { - "a31_ccm", - a31_ccm_methods, - sizeof(struct a31_ccm_softc), -}; - -static devclass_t a31_ccm_devclass; - -EARLY_DRIVER_MODULE(a31_ccm, simplebus, a31_ccm_driver, a31_ccm_devclass, 0, 0, - BUS_PASS_TIMER + BUS_PASS_ORDER_MIDDLE); - -static int -a31_clk_pll6_enable(void) -{ - struct a31_ccm_softc *sc; - uint32_t reg_value; - int i; - - /* Datasheet recommand to use the default 600Mhz value */ - sc = a31_ccm_sc; - if (sc->pll6_enabled) - return (0); - reg_value = ccm_read_4(sc, A31_CCM_PLL6_CFG); - reg_value |= A31_CCM_PLL_CFG_ENABLE; - ccm_write_4(sc, A31_CCM_PLL6_CFG, reg_value); - - /* Wait for PLL to be stable */ - for (i = 0; i < PLL6_TIMEOUT; i++) - if ((ccm_read_4(sc, A31_CCM_PLL6_CFG) & - A31_CCM_PLL6_CFG_REG_LOCK) == A31_CCM_PLL6_CFG_REG_LOCK) - break; - if (i == PLL6_TIMEOUT) - return (ENXIO); - sc->pll6_enabled = 1; - - return (0); -} - -static unsigned int -a31_clk_pll6_get_rate(void) -{ - struct a31_ccm_softc *sc; - uint32_t k, n, reg_value; - - sc = a31_ccm_sc; - reg_value = ccm_read_4(sc, A31_CCM_PLL6_CFG); - n = ((reg_value & A31_CCM_PLL_CFG_FACTOR_N) >> - A31_CCM_PLL_CFG_FACTOR_N_SHIFT); - k = ((reg_value & A31_CCM_PLL_CFG_FACTOR_K) >> - A31_CCM_PLL_CFG_FACTOR_K_SHIFT) + 1; - - return ((A31_CCM_CLK_REF_FREQ * n * k) / 2); -} - -int -a31_clk_gmac_activate(phandle_t node) -{ - char *phy_type; - struct a31_ccm_softc *sc; - uint32_t reg_value; - - sc = a31_ccm_sc; - if (sc == NULL) - return (ENXIO); - - if (a31_clk_pll6_enable()) - return (ENXIO); - - /* Gating AHB clock for GMAC */ - reg_value = ccm_read_4(sc, A31_CCM_AHB_GATING0); - reg_value |= A31_CCM_AHB_GATING_GMAC; - ccm_write_4(sc, A31_CCM_AHB_GATING0, reg_value); - - /* Set GMAC mode. */ - reg_value = A31_CCM_GMAC_CLK_MII; - if (OF_getprop_alloc(node, "phy-mode", 1, (void **)&phy_type) > 0) { - if (strcasecmp(phy_type, "rgmii") == 0) - reg_value = A31_CCM_GMAC_CLK_RGMII | - A31_CCM_GMAC_MODE_RGMII; - free(phy_type, M_OFWPROP); - } - ccm_write_4(sc, A31_CCM_GMAC_CLK, reg_value); - - /* Reset gmac */ - reg_value = ccm_read_4(sc, A31_CCM_AHB1_RST_REG0); - reg_value |= A31_CCM_AHB1_RST_REG0_GMAC; - ccm_write_4(sc, A31_CCM_AHB1_RST_REG0, reg_value); - - return (0); -} - -int -a31_clk_mmc_activate(int devid) -{ - struct a31_ccm_softc *sc; - uint32_t reg_value; - - sc = a31_ccm_sc; - if (sc == NULL) - return (ENXIO); - - if (a31_clk_pll6_enable()) - return (ENXIO); - - /* Gating AHB clock for SD/MMC */ - reg_value = ccm_read_4(sc, A31_CCM_AHB_GATING0); - reg_value |= A31_CCM_AHB_GATING_SDMMC0 << devid; - ccm_write_4(sc, A31_CCM_AHB_GATING0, reg_value); - - /* Soft reset */ - reg_value = ccm_read_4(sc, A31_CCM_AHB1_RST_REG0); - reg_value |= A31_CCM_AHB1_RST_REG0_SDMMC << devid; - ccm_write_4(sc, A31_CCM_AHB1_RST_REG0, reg_value); - - return (0); -} - -int -a31_clk_mmc_cfg(int devid, int freq) -{ - struct a31_ccm_softc *sc; - uint32_t clksrc, m, n, ophase, phase, reg_value; - unsigned int pll_freq; - - sc = a31_ccm_sc; - if (sc == NULL) - return (ENXIO); - - freq /= 1000; - if (freq <= 400) { - pll_freq = A31_CCM_CLK_REF_FREQ / 1000; - clksrc = A31_CCM_SD_CLK_SRC_SEL_OSC24M; - ophase = 0; - phase = 0; - n = 2; - } else if (freq <= 25000) { - pll_freq = a31_clk_pll6_get_rate() / 1000; - clksrc = A31_CCM_SD_CLK_SRC_SEL_PLL6; - ophase = 0; - phase = 5; - n = 2; - } else if (freq <= 50000) { - pll_freq = a31_clk_pll6_get_rate() / 1000; - clksrc = A31_CCM_SD_CLK_SRC_SEL_PLL6; - ophase = 3; - phase = 5; - n = 0; - } else - return (EINVAL); - m = ((pll_freq / (1 << n)) / (freq)) - 1; - reg_value = ccm_read_4(sc, A31_CCM_MMC0_SCLK_CFG + (devid * 4)); - reg_value &= ~A31_CCM_SD_CLK_SRC_SEL; - reg_value |= (clksrc << A31_CCM_SD_CLK_SRC_SEL_SHIFT); - reg_value &= ~A31_CCM_SD_CLK_PHASE_CTR; - reg_value |= (phase << A31_CCM_SD_CLK_PHASE_CTR_SHIFT); - reg_value &= ~A31_CCM_SD_CLK_DIV_RATIO_N; - reg_value |= (n << A31_CCM_SD_CLK_DIV_RATIO_N_SHIFT); - reg_value &= ~A31_CCM_SD_CLK_OPHASE_CTR; - reg_value |= (ophase << A31_CCM_SD_CLK_OPHASE_CTR_SHIFT); - reg_value &= ~A31_CCM_SD_CLK_DIV_RATIO_M; - reg_value |= m; - reg_value |= A31_CCM_PLL_CFG_ENABLE; - ccm_write_4(sc, A31_CCM_MMC0_SCLK_CFG + (devid * 4), reg_value); - - return (0); -} - -int -a31_clk_i2c_activate(int devid) -{ - struct a31_ccm_softc *sc; - uint32_t reg_value; - - sc = a31_ccm_sc; - if (sc == NULL) - return (ENXIO); - - if (a31_clk_pll6_enable()) - return (ENXIO); - - /* Gating APB clock for I2C/TWI */ - reg_value = ccm_read_4(sc, A31_CCM_APB2_GATING); - reg_value |= A31_CCM_APB2_GATING_TWI << devid; - ccm_write_4(sc, A31_CCM_APB2_GATING, reg_value); - - /* Soft reset */ - reg_value = ccm_read_4(sc, A31_CCM_APB2_RST); - reg_value |= A31_CCM_APB2_RST_TWI << devid; - ccm_write_4(sc, A31_CCM_APB2_RST, reg_value); - - return (0); -} - -int -a31_clk_ehci_activate(void) -{ - struct a31_ccm_softc *sc; - uint32_t reg_value; - - sc = a31_ccm_sc; - if (sc == NULL) - return (ENXIO); - - CCM_LOCK(sc); - if (++sc->ehci_refcnt == 1) { - /* Enable USB PHY */ - reg_value = ccm_read_4(sc, A31_CCM_USBPHY_CLK); - reg_value |= A31_CCM_USBPHY_CLK_GATING_USBPHY0; - reg_value |= A31_CCM_USBPHY_CLK_GATING_USBPHY1; - reg_value |= A31_CCM_USBPHY_CLK_GATING_USBPHY2; - reg_value |= A31_CCM_USBPHY_CLK_USBPHY1_RST; - reg_value |= A31_CCM_USBPHY_CLK_USBPHY2_RST; - ccm_write_4(sc, A31_CCM_USBPHY_CLK, reg_value); - - /* Gating AHB clock for EHCI */ - reg_value = ccm_read_4(sc, A31_CCM_AHB_GATING0); - reg_value |= A31_CCM_AHB_GATING_EHCI0; - reg_value |= A31_CCM_AHB_GATING_EHCI1; - ccm_write_4(sc, A31_CCM_AHB_GATING0, reg_value); - - /* De-assert reset */ - reg_value = ccm_read_4(sc, A31_CCM_AHB1_RST_REG0); - reg_value |= A31_CCM_AHB1_RST_REG0_EHCI0; - reg_value |= A31_CCM_AHB1_RST_REG0_EHCI1; - ccm_write_4(sc, A31_CCM_AHB1_RST_REG0, reg_value); - } - CCM_UNLOCK(sc); - - return (0); -} - -int -a31_clk_ehci_deactivate(void) -{ - struct a31_ccm_softc *sc; - uint32_t reg_value; - - sc = a31_ccm_sc; - if (sc == NULL) - return (ENXIO); - - CCM_LOCK(sc); - if (--sc->ehci_refcnt == 0) { - /* Disable USB PHY */ - reg_value = ccm_read_4(sc, A31_CCM_USBPHY_CLK); - reg_value &= ~A31_CCM_USBPHY_CLK_GATING_USBPHY0; - reg_value &= ~A31_CCM_USBPHY_CLK_GATING_USBPHY1; - reg_value &= ~A31_CCM_USBPHY_CLK_GATING_USBPHY2; - reg_value &= ~A31_CCM_USBPHY_CLK_USBPHY1_RST; - reg_value &= ~A31_CCM_USBPHY_CLK_USBPHY2_RST; - ccm_write_4(sc, A31_CCM_USBPHY_CLK, reg_value); - - /* Gating AHB clock for EHCI */ - reg_value = ccm_read_4(sc, A31_CCM_AHB_GATING0); - reg_value &= ~A31_CCM_AHB_GATING_EHCI0; - reg_value &= ~A31_CCM_AHB_GATING_EHCI1; - ccm_write_4(sc, A31_CCM_AHB_GATING0, reg_value); - - /* Assert reset */ - reg_value = ccm_read_4(sc, A31_CCM_AHB1_RST_REG0); - reg_value &= ~A31_CCM_AHB1_RST_REG0_EHCI0; - reg_value &= ~A31_CCM_AHB1_RST_REG0_EHCI1; - ccm_write_4(sc, A31_CCM_AHB1_RST_REG0, reg_value); - } - CCM_UNLOCK(sc); - - return (0); -} diff --git a/sys/arm/allwinner/a31/a31_clk.h b/sys/arm/allwinner/a31/a31_clk.h deleted file mode 100644 index 1ec6a799b97..00000000000 --- a/sys/arm/allwinner/a31/a31_clk.h +++ /dev/null @@ -1,213 +0,0 @@ -/*- - * Copyright (c) 2013 Ganbold Tsagaankhuu - * Copyright (c) 2016 Emmanuel Vadot - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -#ifndef _A31_CLK_H_ -#define _A31_CLK_H_ - -#define A31_CCM_PLL1_CFG 0x0000 -#define A31_CCM_PLL2_CFG 0x0008 -#define A31_CCM_PLL3_CFG 0x0010 -#define A31_CCM_PLL4_CFG 0x0018 -#define A31_CCM_PLL5_CFG 0x0020 -#define A31_CCM_PLL6_CFG 0x0028 -#define A31_CCM_PLL7_CFG 0x0030 -#define A31_CCM_PLL8_CFG 0x0038 -#define A31_CCM_MIPI_PLL_CFG 0x0040 -#define A31_CCM_PLL9_CFG 0x0044 -#define A31_CCM_PLL10_CFG 0x0048 -#define A31_CCM_AXI_CFG_REG 0x0050 -#define A31_CCM_AHB1_APB1_CFG 0x0054 -#define A31_CCM_APB2_CLK_DIV 0x0058 -#define A31_CCM_AHB_GATING0 0x0060 -#define A31_CCM_AHB_GATING1 0x0064 -#define A31_CCM_APB1_GATING 0x0068 -#define A31_CCM_APB2_GATING 0x006c -#define A31_CCM_NAND0_SCLK_CFG 0x0080 -#define A31_CCM_NAND1_SCLK_CFG 0x0084 -#define A31_CCM_MMC0_SCLK_CFG 0x0088 -#define A31_CCM_MMC1_SCLK_CFG 0x008c -#define A31_CCM_MMC2_SCLK_CFG 0x0090 -#define A31_CCM_MMC3_SCLK_CFG 0x0094 -#define A31_CCM_TS_CLK 0x0098 -#define A31_CCM_SS_CLK 0x009c -#define A31_CCM_SPI0_CLK 0x00a0 -#define A31_CCM_SPI1_CLK 0x00a4 -#define A31_CCM_SPI2_CLK 0x00a8 -#define A31_CCM_SPI3_CLK 0x00ac -#define A31_CCM_DAUDIO0_CLK 0x00b0 -#define A31_CCM_DAUDIO1_CLK 0x00b4 -#define A31_CCM_USBPHY_CLK 0x00cc -#define A31_CCM_GMAC_CLK 0x00d0 -#define A31_CCM_MDFS_CLK 0x00f0 -#define A31_CCM_DRAM_CLK 0x00f4 -#define A31_CCM_DRAM_GATING 0x0100 -#define A31_CCM_BE0_SCLK 0x0104 -#define A31_CCM_BE1_SCLK 0x0108 -#define A31_CCM_FE0_CLK 0x010c -#define A31_CCM_FE1_CLK 0x0110 -#define A31_CCM_MP_CLK 0x0114 -#define A31_CCM_LCD0_CH0_CLK 0x0118 -#define A31_CCM_LCD1_CH0_CLK 0x011c -#define A31_CCM_LCD0_CH1_CLK 0x012c -#define A31_CCM_LCD1_CH1_CLK 0x0130 -#define A31_CCM_CSI0_CLK 0x0134 -#define A31_CCM_CSI1_CLK 0x0138 -#define A31_CCM_VE_CLK 0x013c -#define A31_CCM_AUDIO_CODEC_CLK 0x0140 -#define A31_CCM_AVS_CLK 0x0144 -#define A31_CCM_DIGITAL_MIC_CLK 0x0148 -#define A31_CCM_HDMI_CLK 0x0150 -#define A31_CCM_PS_CLK 0x0154 -#define A31_CCM_MBUS_SCLK_CFG0 0x015c -#define A31_CCM_MBUS_SCLK_CFG1 0x0160 -#define A31_CCM_MIPI_DSI_CLK 0x0168 -#define A31_CCM_MIPI_CSI0_CLK 0x016c -#define A31_CCM_DRC0_SCLK_CFG 0x0180 -#define A31_CCM_DRC1_SCLK_CFG 0x0184 -#define A31_CCM_DEU0_SCLK_CFG 0x0188 -#define A31_CCM_DEU1_SCLK_CFG 0x018c -#define A31_CCM_GPU_CORE_CLK 0x01a0 -#define A31_CCM_GPU_MEM_CLK 0x01a4 -#define A31_CCM_GPU_HYD_CLK 0x01a8 -#define A31_CCM_ATS_CLK 0x01b0 -#define A31_CCM_TRACE_CLK 0x01b4 -#define A31_CCM_PLL_LOCK_CFG 0x0200 -#define A31_CCM_PLL1_LOCK_CFG 0x0204 -#define A31_CCM_PLL1_BIAS 0x0220 -#define A31_CCM_PLL2_BIAS 0x0224 -#define A31_CCM_PLL3_BIAS 0x0228 -#define A31_CCM_PLL4_BIAS 0x022c -#define A31_CCM_PLL5_BIAS 0x0230 -#define A31_CCM_PLL6_BIAS 0x0234 -#define A31_CCM_PLL7_BIAS 0x0238 -#define A31_CCM_PLL8_BIAS 0x023c -#define A31_CCM_PLL9_BIAS 0x0240 -#define A31_CCM_MIPI_PLL_BIAS 0x0244 -#define A31_CCM_PLL10_BIAS 0x0248 -#define A31_CCM_PLL1_PAT_CFG 0x0280 -#define A31_CCM_PLL2_PAT_CFG 0x0284 -#define A31_CCM_PLL3_PAT_CFG 0x0288 -#define A31_CCM_PLL4_PAT_CFG 0x028c -#define A31_CCM_PLL5_PAT_CFG 0x0290 -#define A31_CCM_PLL6_PAT_CFG 0x0294 -#define A31_CCM_PLL7_PAT_CFG 0x0298 -#define A31_CCM_PLL8_PAT_CFG 0x029c -#define A31_CCM_MIPI_PLL_PAT_CFG 0x02a0 -#define A31_CCM_PLL9_PAT_CFG 0x02a4 -#define A31_CCM_PLL10_PAT_CFG 0x02a8 -#define A31_CCM_AHB1_RST_REG0 0x02c0 -#define A31_CCM_AHB1_RST_REG1 0x02c4 -#define A31_CCM_AHB1_RST_REG2 0x02c8 -#define A31_CCM_APB1_RST 0x02d0 -#define A31_CCM_APB2_RST 0x02d8 -#define A31_CCM_CLK_OUTA 0x0300 -#define A31_CCM_CLK_OUTB 0x0304 -#define A31_CCM_CLK_OUTC 0x0308 - -/* PLL6_CFG_REG */ -#define A31_CCM_PLL6_CFG_REG_LOCK (1 << 28) - -/* AHB_GATING_REG0 */ -#define A31_CCM_AHB_GATING_OHCI2 (1 << 31) -#define A31_CCM_AHB_GATING_OHCI1 (1 << 30) -#define A31_CCM_AHB_GATING_OHCI0 (1 << 29) -#define A31_CCM_AHB_GATING_EHCI1 (1 << 27) -#define A31_CCM_AHB_GATING_EHCI0 (1 << 26) -#define A31_CCM_AHB_GATING_USBDRD (1 << 24) -#define A31_CCM_AHB_GATING_GMAC (1 << 17) -#define A31_CCM_AHB_GATING_SDMMC0 (1 << 8) - -#define A31_CCM_PLL_CFG_ENABLE (1U << 31) -#define A31_CCM_PLL_CFG_BYPASS (1U << 30) -#define A31_CCM_PLL_CFG_PLL5 (1U << 25) -#define A31_CCM_PLL_CFG_PLL6 (1U << 24) -#define A31_CCM_PLL_CFG_FACTOR_N 0x1f00 -#define A31_CCM_PLL_CFG_FACTOR_N_SHIFT 8 -#define A31_CCM_PLL_CFG_FACTOR_K 0x30 -#define A31_CCM_PLL_CFG_FACTOR_K_SHIFT 4 -#define A31_CCM_PLL_CFG_FACTOR_M 0x3 - -/* APB2_GATING */ -#define A31_CCM_APB2_GATING_TWI (1 << 0) - -/* AHB1_RST_REG0 */ -#define A31_CCM_AHB1_RST_REG0_OHCI2 (1 << 31) -#define A31_CCM_AHB1_RST_REG0_OHCI1 (1 << 30) -#define A31_CCM_AHB1_RST_REG0_OHCI0 (1 << 29) -#define A31_CCM_AHB1_RST_REG0_EHCI1 (1 << 27) -#define A31_CCM_AHB1_RST_REG0_EHCI0 (1 << 26) -#define A31_CCM_AHB1_RST_REG0_GMAC (1 << 17) -#define A31_CCM_AHB1_RST_REG0_SDMMC (1 << 8) - -/* APB2_RST_REG */ -#define A31_CCM_APB2_RST_TWI (1 << 0) - - -/* GMAC */ -#define A31_CCM_GMAC_CLK_DELAY_SHIFT 10 -#define A31_CCM_GMAC_CLK_MODE_MASK 0x7 -#define A31_CCM_GMAC_MODE_RGMII (1 << 2) -#define A31_CCM_GMAC_CLK_MII 0x0 -#define A31_CCM_GMAC_CLK_EXT_RGMII 0x1 -#define A31_CCM_GMAC_CLK_RGMII 0x2 - -/* SD/MMC */ -#define A31_CCM_SD_CLK_SRC_SEL 0x3000000 -#define A31_CCM_SD_CLK_SRC_SEL_SHIFT 24 -#define A31_CCM_SD_CLK_SRC_SEL_OSC24M 0 -#define A31_CCM_SD_CLK_SRC_SEL_PLL6 1 -#define A31_CCM_SD_CLK_PHASE_CTR 0x700000 -#define A31_CCM_SD_CLK_PHASE_CTR_SHIFT 20 -#define A31_CCM_SD_CLK_DIV_RATIO_N 0x30000 -#define A31_CCM_SD_CLK_DIV_RATIO_N_SHIFT 16 -#define A31_CCM_SD_CLK_OPHASE_CTR 0x700 -#define A31_CCM_SD_CLK_OPHASE_CTR_SHIFT 8 -#define A31_CCM_SD_CLK_DIV_RATIO_M 0xf - -/* USB */ -#define A31_CCM_USBPHY_CLK_GATING_OHCI2 (1 << 18) -#define A31_CCM_USBPHY_CLK_GATING_OHCI1 (1 << 17) -#define A31_CCM_USBPHY_CLK_GATING_OHCI0 (1 << 16) -#define A31_CCM_USBPHY_CLK_GATING_USBPHY2 (1 << 10) -#define A31_CCM_USBPHY_CLK_GATING_USBPHY1 (1 << 9) -#define A31_CCM_USBPHY_CLK_GATING_USBPHY0 (1 << 8) -#define A31_CCM_USBPHY_CLK_USBPHY2_RST (1 << 2) -#define A31_CCM_USBPHY_CLK_USBPHY1_RST (1 << 1) -#define A31_CCM_USBPHY_CLK_USBPHY0_RST (1 << 0) - -#define A31_CCM_CLK_REF_FREQ 24000000U - -int a31_clk_gmac_activate(phandle_t); -int a31_clk_mmc_activate(int); -int a31_clk_mmc_cfg(int, int); -int a31_clk_i2c_activate(int); -int a31_clk_ehci_activate(void); -int a31_clk_ehci_deactivate(void); - -#endif /* _A31_CLK_H_ */ diff --git a/sys/arm/allwinner/aw_ccu.c b/sys/arm/allwinner/aw_ccu.c new file mode 100644 index 00000000000..d2ce77486bb --- /dev/null +++ b/sys/arm/allwinner/aw_ccu.c @@ -0,0 +1,224 @@ +/*- + * Copyright (c) 2016 Jared McNeill + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Allwinner oscillator clock + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +#include + +#include "clkdev_if.h" + +#define CCU_BASE 0x01c20000 +#define CCU_SIZE 0x400 + +struct aw_ccu_softc { + struct simplebus_softc sc; + bus_space_tag_t bst; + bus_space_handle_t bsh; + struct mtx mtx; +}; + +static struct ofw_compat_data compat_data[] = { + { "allwinner,sun4i-a10", 1 }, + { "allwinner,sun7i-a20", 1 }, + { "allwinner,sun6i-a31", 1 }, + { "allwinner,sun6i-a31s", 1 }, + { NULL, 0 } +}; + +static int +aw_ccu_check_addr(bus_addr_t addr) +{ + if (addr < CCU_BASE || addr >= (CCU_BASE + CCU_SIZE)) + return (EINVAL); + return (0); +} + +static int +aw_ccu_write_4(device_t dev, bus_addr_t addr, uint32_t val) +{ + struct aw_ccu_softc *sc; + + if (aw_ccu_check_addr(addr) != 0) + return (EINVAL); + + sc = device_get_softc(dev); + mtx_assert(&sc->mtx, MA_OWNED); + bus_space_write_4(sc->bst, sc->bsh, addr - CCU_BASE, val); + + return (0); +} + +static int +aw_ccu_read_4(device_t dev, bus_addr_t addr, uint32_t *val) +{ + struct aw_ccu_softc *sc; + + if (aw_ccu_check_addr(addr) != 0) + return (EINVAL); + + sc = device_get_softc(dev); + mtx_assert(&sc->mtx, MA_OWNED); + *val = bus_space_read_4(sc->bst, sc->bsh, addr - CCU_BASE); + + return (0); +} + +static int +aw_ccu_modify_4(device_t dev, bus_addr_t addr, uint32_t clr, uint32_t set) +{ + struct aw_ccu_softc *sc; + uint32_t val; + + if (aw_ccu_check_addr(addr) != 0) + return (EINVAL); + + sc = device_get_softc(dev); + mtx_assert(&sc->mtx, MA_OWNED); + val = bus_space_read_4(sc->bst, sc->bsh, addr - CCU_BASE); + val &= ~clr; + val |= set; + bus_space_write_4(sc->bst, sc->bsh, addr - CCU_BASE, val); + + return (0); +} + +static void +aw_ccu_device_lock(device_t dev) +{ + struct aw_ccu_softc *sc; + + sc = device_get_softc(dev); + mtx_lock(&sc->mtx); +} + +static void +aw_ccu_device_unlock(device_t dev) +{ + struct aw_ccu_softc *sc; + + sc = device_get_softc(dev); + mtx_unlock(&sc->mtx); +} + +static int +aw_ccu_probe(device_t dev) +{ + const char *name; + device_t pdev; + + name = ofw_bus_get_name(dev); + + if (name == NULL || strcmp(name, "clocks") != 0) + return (ENXIO); + + pdev = device_get_parent(dev); + if (ofw_bus_search_compatible(pdev, compat_data)->ocd_data == 0) + return (0); + + device_set_desc(dev, "Allwinner Clock Control Unit"); + return (BUS_PROBE_SPECIFIC); +} + +static int +aw_ccu_attach(device_t dev) +{ + struct aw_ccu_softc *sc; + phandle_t node, child; + device_t cdev; + int error; + + sc = device_get_softc(dev); + node = ofw_bus_get_node(dev); + + simplebus_init(dev, node); + + /* + * Map CCU registers. The DT doesn't have a "reg" property for the + * /clocks node and child nodes have conflicting "reg" properties. + */ + sc->bst = bus_get_bus_tag(dev); + error = bus_space_map(sc->bst, CCU_BASE, CCU_SIZE, 0, &sc->bsh); + if (error != 0) { + device_printf(dev, "couldn't map CCU: %d\n", error); + return (error); + } + + mtx_init(&sc->mtx, device_get_nameunit(dev), NULL, MTX_DEF); + + /* Attach child devices */ + for (child = OF_child(node); child > 0; child = OF_peer(child)) { + cdev = simplebus_add_device(dev, child, 0, NULL, -1, NULL); + if (cdev != NULL) + device_probe_and_attach(cdev); + } + + return (bus_generic_attach(dev)); +} + +static device_method_t aw_ccu_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_ccu_probe), + DEVMETHOD(device_attach, aw_ccu_attach), + + /* clkdev interface */ + DEVMETHOD(clkdev_write_4, aw_ccu_write_4), + DEVMETHOD(clkdev_read_4, aw_ccu_read_4), + DEVMETHOD(clkdev_modify_4, aw_ccu_modify_4), + DEVMETHOD(clkdev_device_lock, aw_ccu_device_lock), + DEVMETHOD(clkdev_device_unlock, aw_ccu_device_unlock), + + DEVMETHOD_END +}; + +DEFINE_CLASS_1(aw_ccu, aw_ccu_driver, aw_ccu_methods, + sizeof(struct aw_ccu_softc), simplebus_driver); + +static devclass_t aw_ccu_devclass; + +EARLY_DRIVER_MODULE(aw_ccu, simplebus, aw_ccu_driver, aw_ccu_devclass, + 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); + +MODULE_VERSION(aw_ccu, 1); diff --git a/sys/arm/allwinner/aw_reset.c b/sys/arm/allwinner/aw_reset.c new file mode 100644 index 00000000000..cabd9c7ff7e --- /dev/null +++ b/sys/arm/allwinner/aw_reset.c @@ -0,0 +1,163 @@ +/*- + * Copyright (c) 2016 Jared McNeill + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Allwinner module software reset registers + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + +#include "hwreset_if.h" + +#define RESET_OFFSET(index) ((index / 32) * 4) +#define RESET_SHIFT(index) (index % 32) + +static struct ofw_compat_data compat_data[] = { + { "allwinner,sun6i-a31-ahb1-reset", 1 }, + { "allwinner,sun6i-a31-clock-reset", 1 }, + { NULL, 0 } +}; + +struct aw_reset_softc { + struct resource *res; + struct mtx mtx; +}; + +static struct resource_spec aw_reset_spec[] = { + { SYS_RES_MEMORY, 0, RF_ACTIVE }, + { -1, 0 } +}; + +#define RESET_READ(sc, reg) bus_read_4((sc)->res, (reg)) +#define RESET_WRITE(sc, reg, val) bus_write_4((sc)->res, (reg), (val)) + +static int +aw_reset_assert(device_t dev, intptr_t id, bool reset) +{ + struct aw_reset_softc *sc; + uint32_t reg_value; + + sc = device_get_softc(dev); + + mtx_lock(&sc->mtx); + reg_value = RESET_READ(sc, RESET_OFFSET(id)); + if (reset) + reg_value &= ~(1 << RESET_SHIFT(id)); + else + reg_value |= (1 << RESET_SHIFT(id)); + RESET_WRITE(sc, RESET_OFFSET(id), reg_value); + mtx_unlock(&sc->mtx); + + return (0); +} + +static int +aw_reset_is_asserted(device_t dev, intptr_t id, bool *reset) +{ + struct aw_reset_softc *sc; + uint32_t reg_value; + + sc = device_get_softc(dev); + + mtx_lock(&sc->mtx); + reg_value = RESET_READ(sc, RESET_OFFSET(id)); + mtx_unlock(&sc->mtx); + + *reset = (reg_value & (1 << RESET_SHIFT(id))) != 0 ? false : true; + + return (0); +} + +static int +aw_reset_probe(device_t dev) +{ + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "Allwinner Module Resets"); + return (BUS_PROBE_DEFAULT); +} + +static int +aw_reset_attach(device_t dev) +{ + struct aw_reset_softc *sc; + + sc = device_get_softc(dev); + + if (bus_alloc_resources(dev, aw_reset_spec, &sc->res) != 0) { + device_printf(dev, "cannot allocate resources for device\n"); + return (ENXIO); + } + + mtx_init(&sc->mtx, device_get_nameunit(dev), NULL, MTX_DEF); + + hwreset_register_ofw_provider(dev); + + return (0); +} + +static device_method_t aw_reset_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_reset_probe), + DEVMETHOD(device_attach, aw_reset_attach), + + /* Reset interface */ + DEVMETHOD(hwreset_assert, aw_reset_assert), + DEVMETHOD(hwreset_is_asserted, aw_reset_is_asserted), + + DEVMETHOD_END +}; + +static driver_t aw_reset_driver = { + "aw_reset", + aw_reset_methods, + sizeof(struct aw_reset_softc), +}; + +static devclass_t aw_reset_devclass; + +DRIVER_MODULE(aw_reset, simplebus, aw_reset_driver, aw_reset_devclass, 0, 0); +MODULE_VERSION(aw_reset, 1); diff --git a/sys/arm/allwinner/aw_usbphy.c b/sys/arm/allwinner/aw_usbphy.c index f0ee79d0907..25e8da09615 100644 --- a/sys/arm/allwinner/aw_usbphy.c +++ b/sys/arm/allwinner/aw_usbphy.c @@ -44,10 +44,11 @@ __FBSDID("$FreeBSD$"); #include #include -#include "gpio_if.h" +#include +#include +#include #define USBPHY_NUMOFF 3 -#define GPIO_POLARITY(flags) (((flags) & 1) ? GPIO_PIN_LOW : GPIO_PIN_HIGH) static struct ofw_compat_data compat_data[] = { { "allwinner,sun4i-a10-usb-phy", 1 }, @@ -57,90 +58,46 @@ static struct ofw_compat_data compat_data[] = { { NULL, 0 } }; -static int -awusbphy_gpio_set(device_t dev, phandle_t node, const char *pname) -{ - pcell_t gpio_prop[4]; - phandle_t gpio_node; - device_t gpio_dev; - uint32_t pin, flags; - ssize_t len; - int val; - - len = OF_getencprop(node, pname, gpio_prop, sizeof(gpio_prop)); - if (len == -1) - return (0); - - if (len != sizeof(gpio_prop)) { - device_printf(dev, "property %s length was %d, expected %d\n", - pname, len, sizeof(gpio_prop)); - return (ENXIO); - } - - gpio_node = OF_node_from_xref(gpio_prop[0]); - gpio_dev = OF_device_from_xref(gpio_prop[0]); - if (gpio_dev == NULL) { - device_printf(dev, "failed to get the GPIO device for %s\n", - pname); - return (ENOENT); - } - - if (GPIO_MAP_GPIOS(gpio_dev, node, gpio_node, - sizeof(gpio_prop) / sizeof(gpio_prop[0]) - 1, gpio_prop + 1, - &pin, &flags) != 0) { - device_printf(dev, "failed to map the GPIO pin for %s\n", - pname); - return (ENXIO); - } - - val = GPIO_POLARITY(flags); - - GPIO_PIN_SETFLAGS(gpio_dev, pin, GPIO_PIN_OUTPUT); - GPIO_PIN_SET(gpio_dev, pin, val); - - return (0); -} - -static int -awusbphy_supply_set(device_t dev, const char *pname) -{ - phandle_t node, reg_node; - pcell_t reg_xref; - - node = ofw_bus_get_node(dev); - - if (OF_getencprop(node, pname, ®_xref, sizeof(reg_xref)) == -1) - return (0); - - reg_node = OF_node_from_xref(reg_xref); - - return (awusbphy_gpio_set(dev, reg_node, "gpio")); -} - static int awusbphy_init(device_t dev) { char pname[20]; - phandle_t node; int error, off; + regulator_t reg; + hwreset_t rst; + clk_t clk; - node = ofw_bus_get_node(dev); + /* Enable clocks */ + for (off = 0; clk_get_by_ofw_index(dev, off, &clk) == 0; off++) { + error = clk_enable(clk); + if (error != 0) { + device_printf(dev, "couldn't enable clock %s\n", + clk_get_name(clk)); + return (error); + } + } + /* De-assert resets */ + for (off = 0; hwreset_get_by_ofw_idx(dev, off, &rst) == 0; off++) { + error = hwreset_deassert(rst); + if (error != 0) { + device_printf(dev, "couldn't de-assert reset %d\n", + off); + return (error); + } + } + + /* Enable regulator(s) */ for (off = 0; off < USBPHY_NUMOFF; off++) { - snprintf(pname, sizeof(pname), "usb%d_id_det-gpio", off); - error = awusbphy_gpio_set(dev, node, pname); - if (error) - return (error); - - snprintf(pname, sizeof(pname), "usb%d_vbus_det-gpio", off); - error = awusbphy_gpio_set(dev, node, pname); - if (error) - return (error); - snprintf(pname, sizeof(pname), "usb%d_vbus-supply", off); - error = awusbphy_supply_set(dev, pname); - if (error) + if (regulator_get_by_ofw_property(dev, pname, ®) != 0) + continue; + error = regulator_enable(reg); + if (error != 0) { + device_printf(dev, "couldn't enable regulator %s\n", + pname); return (error); + } } return (0); diff --git a/sys/arm/allwinner/clk/aw_ahbclk.c b/sys/arm/allwinner/clk/aw_ahbclk.c new file mode 100644 index 00000000000..1d3b1a4bbab --- /dev/null +++ b/sys/arm/allwinner/clk/aw_ahbclk.c @@ -0,0 +1,308 @@ +/*- + * Copyright (c) 2016 Jared McNeill + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Allwinner AHB clock + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include "clkdev_if.h" + +#define A10_AHB_CLK_DIV_RATIO (0x3 << 4) +#define A10_AHB_CLK_DIV_RATIO_SHIFT 4 + +#define A13_AHB_CLK_SRC_SEL (0x3 << 6) +#define A13_AHB_CLK_SRC_SEL_MAX 3 +#define A13_AHB_CLK_SRC_SEL_SHIFT 6 + +#define A31_AHB1_PRE_DIV (0x3 << 6) +#define A31_AHB1_PRE_DIV_SHIFT 6 +#define A31_AHB1_CLK_SRC_SEL (0x3 << 12) +#define A31_AHB1_CLK_SRC_SEL_PLL6 3 +#define A31_AHB1_CLK_SRC_SEL_MAX 3 +#define A31_AHB1_CLK_SRC_SEL_SHIFT 12 + +enum aw_ahbclk_type { + AW_A10_AHB = 1, + AW_A13_AHB, + AW_A31_AHB1, +}; + +static struct ofw_compat_data compat_data[] = { + { "allwinner,sun4i-a10-ahb-clk", AW_A10_AHB }, + { "allwinner,sun5i-a13-ahb-clk", AW_A13_AHB }, + { "allwinner,sun6i-a31-ahb1-clk", AW_A31_AHB1 }, + { NULL, 0 } +}; + +struct aw_ahbclk_sc { + device_t clkdev; + bus_addr_t reg; + enum aw_ahbclk_type type; +}; + +#define AHBCLK_READ(sc, val) CLKDEV_READ_4((sc)->clkdev, (sc)->reg, (val)) +#define AHBCLK_WRITE(sc, val) CLKDEV_WRITE_4((sc)->clkdev, (sc)->reg, (val)) +#define DEVICE_LOCK(sc) CLKDEV_DEVICE_LOCK((sc)->clkdev) +#define DEVICE_UNLOCK(sc) CLKDEV_DEVICE_UNLOCK((sc)->clkdev) + +static int +aw_ahbclk_init(struct clknode *clk, device_t dev) +{ + struct aw_ahbclk_sc *sc; + uint32_t val, index; + + sc = clknode_get_softc(clk); + + switch (sc->type) { + case AW_A10_AHB: + index = 0; + break; + case AW_A13_AHB: + DEVICE_LOCK(sc); + AHBCLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + index = (val & A13_AHB_CLK_SRC_SEL) >> + A13_AHB_CLK_SRC_SEL_SHIFT; + break; + case AW_A31_AHB1: + DEVICE_LOCK(sc); + AHBCLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + index = (val & A31_AHB1_CLK_SRC_SEL) >> + A31_AHB1_CLK_SRC_SEL_SHIFT; + break; + default: + return (ENXIO); + } + + clknode_init_parent_idx(clk, index); + return (0); +} + +static int +aw_ahbclk_recalc_freq(struct clknode *clk, uint64_t *freq) +{ + struct aw_ahbclk_sc *sc; + uint32_t val, src_sel, div, pre_div; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(sc); + AHBCLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + + div = 1 << ((val & A10_AHB_CLK_DIV_RATIO) >> + A10_AHB_CLK_DIV_RATIO_SHIFT); + + switch (sc->type) { + case AW_A31_AHB1: + src_sel = (val & A31_AHB1_CLK_SRC_SEL) >> + A31_AHB1_CLK_SRC_SEL_SHIFT; + if (src_sel == A31_AHB1_CLK_SRC_SEL_PLL6) + pre_div = ((val & A31_AHB1_PRE_DIV) >> + A31_AHB1_PRE_DIV_SHIFT) + 1; + else + pre_div = 1; + break; + default: + pre_div = 1; + break; + } + + *freq = *freq / pre_div / div; + + return (0); +} + +static int +aw_ahbclk_set_mux(struct clknode *clk, int index) +{ + struct aw_ahbclk_sc *sc; + uint32_t val; + + sc = clknode_get_softc(clk); + + switch (sc->type) { + case AW_A10_AHB: + if (index != 0) + return (ERANGE); + break; + case AW_A13_AHB: + if (index < 0 || index > A13_AHB_CLK_SRC_SEL_MAX) + return (ERANGE); + DEVICE_LOCK(sc); + AHBCLK_READ(sc, &val); + val &= ~A13_AHB_CLK_SRC_SEL; + val |= (index << A13_AHB_CLK_SRC_SEL_SHIFT); + AHBCLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + break; + default: + return (ENXIO); + } + + return (0); +} + +static clknode_method_t aw_ahbclk_clknode_methods[] = { + /* Device interface */ + CLKNODEMETHOD(clknode_init, aw_ahbclk_init), + CLKNODEMETHOD(clknode_recalc_freq, aw_ahbclk_recalc_freq), + CLKNODEMETHOD(clknode_set_mux, aw_ahbclk_set_mux), + CLKNODEMETHOD_END +}; +DEFINE_CLASS_1(aw_ahbclk_clknode, aw_ahbclk_clknode_class, + aw_ahbclk_clknode_methods, sizeof(struct aw_ahbclk_sc), clknode_class); + +static int +aw_ahbclk_probe(device_t dev) +{ + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "Allwinner AHB Clock"); + return (BUS_PROBE_DEFAULT); +} + +static int +aw_ahbclk_attach(device_t dev) +{ + struct clknode_init_def def; + struct aw_ahbclk_sc *sc; + struct clkdom *clkdom; + struct clknode *clk; + clk_t clk_parent; + bus_addr_t paddr; + bus_size_t psize; + phandle_t node; + int error, ncells, i; + + node = ofw_bus_get_node(dev); + + if (ofw_reg_to_paddr(node, 0, &paddr, &psize, NULL) != 0) { + device_printf(dev, "cannot parse 'reg' property\n"); + return (ENXIO); + } + + error = ofw_bus_parse_xref_list_get_length(node, "clocks", + "#clock-cells", &ncells); + if (error != 0) { + device_printf(dev, "cannot get clock count\n"); + return (error); + } + + clkdom = clkdom_create(dev); + + memset(&def, 0, sizeof(def)); + def.id = 1; + def.parent_names = malloc(sizeof(char *) * ncells, M_OFWPROP, + M_WAITOK); + for (i = 0; i < ncells; i++) { + error = clk_get_by_ofw_index(dev, i, &clk_parent); + if (error != 0) { + device_printf(dev, "cannot get clock %d\n", i); + goto fail; + } + def.parent_names[i] = clk_get_name(clk_parent); + clk_release(clk_parent); + } + def.parent_cnt = ncells; + + error = clk_parse_ofw_clk_name(dev, node, &def.name); + if (error != 0) { + device_printf(dev, "cannot parse clock name\n"); + error = ENXIO; + goto fail; + } + + clk = clknode_create(clkdom, &aw_ahbclk_clknode_class, &def); + if (clk == NULL) { + device_printf(dev, "cannot create clknode\n"); + error = ENXIO; + goto fail; + } + sc = clknode_get_softc(clk); + sc->type = ofw_bus_search_compatible(dev, compat_data)->ocd_data; + sc->reg = paddr; + sc->clkdev = device_get_parent(dev); + + clknode_register(clkdom, clk); + + if (clkdom_finit(clkdom) != 0) { + device_printf(dev, "cannot finalize clkdom initialization\n"); + error = ENXIO; + goto fail; + } + + if (bootverbose) + clkdom_dump(clkdom); + + return (0); + +fail: + return (error); +} + +static device_method_t aw_ahbclk_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_ahbclk_probe), + DEVMETHOD(device_attach, aw_ahbclk_attach), + + DEVMETHOD_END +}; + +static driver_t aw_ahbclk_driver = { + "aw_ahbclk", + aw_ahbclk_methods, + 0 +}; + +static devclass_t aw_ahbclk_devclass; + +EARLY_DRIVER_MODULE(aw_ahbclk, simplebus, aw_ahbclk_driver, + aw_ahbclk_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/arm/allwinner/clk/aw_apbclk.c b/sys/arm/allwinner/clk/aw_apbclk.c new file mode 100644 index 00000000000..a56387be98a --- /dev/null +++ b/sys/arm/allwinner/clk/aw_apbclk.c @@ -0,0 +1,283 @@ +/*- + * Copyright (c) 2016 Jared McNeill + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Allwinner APB clock + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include "clkdev_if.h" + +#define APB0_CLK_RATIO (0x3 << 8) +#define APB0_CLK_RATIO_SHIFT 8 +#define APB1_CLK_SRC_SEL (0x3 << 24) +#define APB1_CLK_SRC_SEL_SHIFT 24 +#define APB1_CLK_SRC_SEL_MAX 0x3 +#define APB1_CLK_RAT_N (0x3 << 16) +#define APB1_CLK_RAT_N_SHIFT 16 +#define APB1_CLK_RAT_M (0x1f << 0) +#define APB1_CLK_RAT_M_SHIFT 0 + +enum aw_apbclk_type { + AW_A10_APB0 = 1, + AW_A10_APB1, +}; + +static struct ofw_compat_data compat_data[] = { + { "allwinner,sun4i-a10-apb0-clk", AW_A10_APB0 }, + { "allwinner,sun4i-a10-apb1-clk", AW_A10_APB1 }, + { NULL, 0 } +}; + +struct aw_apbclk_sc { + device_t clkdev; + bus_addr_t reg; + enum aw_apbclk_type type; +}; + +#define APBCLK_READ(sc, val) CLKDEV_READ_4((sc)->clkdev, (sc)->reg, (val)) +#define APBCLK_WRITE(sc, val) CLKDEV_WRITE_4((sc)->clkdev, (sc)->reg, (val)) +#define DEVICE_LOCK(sc) CLKDEV_DEVICE_LOCK((sc)->clkdev) +#define DEVICE_UNLOCK(sc) CLKDEV_DEVICE_UNLOCK((sc)->clkdev) + +static int +aw_apbclk_init(struct clknode *clk, device_t dev) +{ + struct aw_apbclk_sc *sc; + uint32_t val, index; + + sc = clknode_get_softc(clk); + + switch (sc->type) { + case AW_A10_APB0: + index = 0; + break; + case AW_A10_APB1: + DEVICE_LOCK(sc); + APBCLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + index = (val & APB1_CLK_SRC_SEL) >> APB1_CLK_SRC_SEL_SHIFT; + break; + default: + return (ENXIO); + } + + clknode_init_parent_idx(clk, index); + return (0); +} + +static int +aw_apbclk_recalc_freq(struct clknode *clk, uint64_t *freq) +{ + struct aw_apbclk_sc *sc; + uint32_t val, div, m, n; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(sc); + APBCLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + + switch (sc->type) { + case AW_A10_APB0: + div = 1 << ((val & APB0_CLK_RATIO) >> APB0_CLK_RATIO_SHIFT); + if (div == 1) + div = 2; + *freq = *freq / div; + break; + case AW_A10_APB1: + n = 1 << ((val & APB1_CLK_RAT_N) >> APB1_CLK_RAT_N_SHIFT); + m = ((val & APB1_CLK_RAT_N) >> APB1_CLK_RAT_M_SHIFT) + 1; + *freq = *freq / n / m; + break; + default: + return (ENXIO); + } + + return (0); +} + +static int +aw_apbclk_set_mux(struct clknode *clk, int index) +{ + struct aw_apbclk_sc *sc; + uint32_t val; + + sc = clknode_get_softc(clk); + + if (sc->type != AW_A10_APB1) + return (ENXIO); + + if (index < 0 || index > APB1_CLK_SRC_SEL_MAX) + return (ERANGE); + + DEVICE_LOCK(sc); + APBCLK_READ(sc, &val); + val &= ~APB1_CLK_SRC_SEL; + val |= (index << APB1_CLK_SRC_SEL_SHIFT); + APBCLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + return (0); +} + +static clknode_method_t aw_apbclk_clknode_methods[] = { + /* Device interface */ + CLKNODEMETHOD(clknode_init, aw_apbclk_init), + CLKNODEMETHOD(clknode_recalc_freq, aw_apbclk_recalc_freq), + CLKNODEMETHOD(clknode_set_mux, aw_apbclk_set_mux), + CLKNODEMETHOD_END +}; +DEFINE_CLASS_1(aw_apbclk_clknode, aw_apbclk_clknode_class, + aw_apbclk_clknode_methods, sizeof(struct aw_apbclk_sc), clknode_class); + +static int +aw_apbclk_probe(device_t dev) +{ + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "Allwinner APB Clock"); + return (BUS_PROBE_DEFAULT); +} + +static int +aw_apbclk_attach(device_t dev) +{ + struct clknode_init_def def; + struct aw_apbclk_sc *sc; + struct clkdom *clkdom; + struct clknode *clk; + clk_t clk_parent; + bus_addr_t paddr; + bus_size_t psize; + phandle_t node; + int error, ncells, i; + + node = ofw_bus_get_node(dev); + + if (ofw_reg_to_paddr(node, 0, &paddr, &psize, NULL) != 0) { + device_printf(dev, "cannot parse 'reg' property\n"); + return (ENXIO); + } + + error = ofw_bus_parse_xref_list_get_length(node, "clocks", + "#clock-cells", &ncells); + if (error != 0) { + device_printf(dev, "cannot get clock count\n"); + return (error); + } + + clkdom = clkdom_create(dev); + + memset(&def, 0, sizeof(def)); + error = clk_parse_ofw_clk_name(dev, node, &def.name); + if (error != 0) { + device_printf(dev, "cannot parse clock name\n"); + error = ENXIO; + goto fail; + } + def.id = 1; + def.parent_names = malloc(sizeof(char *) * ncells, M_OFWPROP, M_WAITOK); + for (i = 0; i < ncells; i++) { + error = clk_get_by_ofw_index(dev, i, &clk_parent); + if (error != 0) { + device_printf(dev, "cannot get clock %d\n", i); + goto fail; + } + def.parent_names[i] = clk_get_name(clk_parent); + clk_release(clk_parent); + } + def.parent_cnt = ncells; + + clk = clknode_create(clkdom, &aw_apbclk_clknode_class, &def); + if (clk == NULL) { + device_printf(dev, "cannot create clknode\n"); + error = ENXIO; + goto fail; + } + + sc = clknode_get_softc(clk); + sc->type = ofw_bus_search_compatible(dev, compat_data)->ocd_data; + sc->reg = paddr; + sc->clkdev = device_get_parent(dev); + + clknode_register(clkdom, clk); + + if (clkdom_finit(clkdom) != 0) { + device_printf(dev, "cannot finalize clkdom initialization\n"); + error = ENXIO; + goto fail; + } + + if (bootverbose) + clkdom_dump(clkdom); + + return (0); + +fail: + return (error); +} + +static device_method_t aw_apbclk_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_apbclk_probe), + DEVMETHOD(device_attach, aw_apbclk_attach), + + DEVMETHOD_END +}; + +static driver_t aw_apbclk_driver = { + "aw_apbclk", + aw_apbclk_methods, + 0 +}; + +static devclass_t aw_apbclk_devclass; + +EARLY_DRIVER_MODULE(aw_apbclk, simplebus, aw_apbclk_driver, + aw_apbclk_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/arm/allwinner/clk/aw_axiclk.c b/sys/arm/allwinner/clk/aw_axiclk.c new file mode 100644 index 00000000000..8f4a6d6856c --- /dev/null +++ b/sys/arm/allwinner/clk/aw_axiclk.c @@ -0,0 +1,201 @@ +/*- + * Copyright (c) 2016 Jared McNeill + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Allwinner AXI clock + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include "clkdev_if.h" + +#define AXI_CLK_DIV_RATIO (0x3 << 0) + +static struct ofw_compat_data compat_data[] = { + { "allwinner,sun4i-a10-axi-clk", 1 }, + { NULL, 0 } +}; + +struct aw_axiclk_sc { + device_t clkdev; + bus_addr_t reg; +}; + +#define AXICLK_READ(sc, val) CLKDEV_READ_4((sc)->clkdev, (sc)->reg, (val)) +#define AXICLK_WRITE(sc, val) CLKDEV_WRITE_4((sc)->clkdev, (sc)->reg, (val)) +#define DEVICE_LOCK(sc) CLKDEV_DEVICE_LOCK((sc)->clkdev) +#define DEVICE_UNLOCK(sc) CLKDEV_DEVICE_UNLOCK((sc)->clkdev) + +static int +aw_axiclk_init(struct clknode *clk, device_t dev) +{ + clknode_init_parent_idx(clk, 0); + return (0); +} + +static int +aw_axiclk_recalc_freq(struct clknode *clk, uint64_t *freq) +{ + struct aw_axiclk_sc *sc; + uint32_t val; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(sc); + AXICLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + + *freq = *freq / ((val & AXI_CLK_DIV_RATIO) + 1); + + return (0); +} + +static clknode_method_t aw_axiclk_clknode_methods[] = { + /* Device interface */ + CLKNODEMETHOD(clknode_init, aw_axiclk_init), + CLKNODEMETHOD(clknode_recalc_freq, aw_axiclk_recalc_freq), + CLKNODEMETHOD_END +}; +DEFINE_CLASS_1(aw_axiclk_clknode, aw_axiclk_clknode_class, + aw_axiclk_clknode_methods, sizeof(struct aw_axiclk_sc), clknode_class); + +static int +aw_axiclk_probe(device_t dev) +{ + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "Allwinner AXI Clock"); + return (BUS_PROBE_DEFAULT); +} + +static int +aw_axiclk_attach(device_t dev) +{ + struct clknode_init_def def; + struct aw_axiclk_sc *sc; + struct clkdom *clkdom; + struct clknode *clk; + clk_t clk_parent; + bus_addr_t paddr; + bus_size_t psize; + phandle_t node; + int error; + + node = ofw_bus_get_node(dev); + + if (ofw_reg_to_paddr(node, 0, &paddr, &psize, NULL) != 0) { + device_printf(dev, "cannot parse 'reg' property\n"); + return (ENXIO); + } + + clkdom = clkdom_create(dev); + + error = clk_get_by_ofw_index(dev, 0, &clk_parent); + if (error != 0) { + device_printf(dev, "cannot parse clock parent\n"); + return (ENXIO); + } + + memset(&def, 0, sizeof(def)); + error = clk_parse_ofw_clk_name(dev, node, &def.name); + if (error != 0) { + device_printf(dev, "cannot parse clock name\n"); + error = ENXIO; + goto fail; + } + def.id = 1; + def.parent_names = malloc(sizeof(char *), M_OFWPROP, M_WAITOK); + def.parent_names[0] = clk_get_name(clk_parent); + def.parent_cnt = 1; + + clk = clknode_create(clkdom, &aw_axiclk_clknode_class, &def); + if (clk == NULL) { + device_printf(dev, "cannot create clknode\n"); + error = ENXIO; + goto fail; + } + + sc = clknode_get_softc(clk); + sc->reg = paddr; + sc->clkdev = device_get_parent(dev); + + clknode_register(clkdom, clk); + + if (clkdom_finit(clkdom) != 0) { + device_printf(dev, "cannot finalize clkdom initialization\n"); + error = ENXIO; + goto fail; + } + + if (bootverbose) + clkdom_dump(clkdom); + + return (0); + +fail: + return (error); +} + +static device_method_t aw_axiclk_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_axiclk_probe), + DEVMETHOD(device_attach, aw_axiclk_attach), + + DEVMETHOD_END +}; + +static driver_t aw_axiclk_driver = { + "aw_axiclk", + aw_axiclk_methods, + 0 +}; + +static devclass_t aw_axiclk_devclass; + +EARLY_DRIVER_MODULE(aw_axiclk, simplebus, aw_axiclk_driver, + aw_axiclk_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/arm/allwinner/clk/aw_codecclk.c b/sys/arm/allwinner/clk/aw_codecclk.c new file mode 100644 index 00000000000..5c50f49d068 --- /dev/null +++ b/sys/arm/allwinner/clk/aw_codecclk.c @@ -0,0 +1,164 @@ +/*- + * Copyright (c) 2016 Jared McNeill + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Allwinner CODEC clock + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include "clkdev_if.h" + +#define SCLK_GATING_SHIFT 31 + +static struct ofw_compat_data compat_data[] = { + { "allwinner,sun4i-a10-codec-clk", 1 }, + { NULL, 0 } +}; + +static int +aw_codecclk_create(device_t dev, bus_addr_t paddr, struct clkdom *clkdom, + const char *pclkname, const char *clkname, int index) +{ + const char *parent_names[1] = { pclkname }; + struct clk_gate_def def; + + memset(&def, 0, sizeof(def)); + def.clkdef.id = index; + def.clkdef.name = clkname; + def.clkdef.parent_names = parent_names; + def.clkdef.parent_cnt = 1; + def.offset = paddr; + def.shift = SCLK_GATING_SHIFT; + def.mask = 1; + def.on_value = 1; + def.off_value = 0; + + return (clknode_gate_register(clkdom, &def)); +} + +static int +aw_codecclk_probe(device_t dev) +{ + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "Allwinner CODEC Clock"); + return (BUS_PROBE_DEFAULT); +} + +static int +aw_codecclk_attach(device_t dev) +{ + struct clkdom *clkdom; + const char **names; + int nout, error; + uint32_t *indices; + clk_t clk_parent; + bus_addr_t paddr; + bus_size_t psize; + phandle_t node; + + node = ofw_bus_get_node(dev); + indices = NULL; + + if (ofw_reg_to_paddr(node, 0, &paddr, &psize, NULL) != 0) { + device_printf(dev, "cannot parse 'reg' property\n"); + return (ENXIO); + } + + clkdom = clkdom_create(dev); + + nout = clk_parse_ofw_out_names(dev, node, &names, &indices); + if (nout != 1) { + device_printf(dev, "must have exactly one output clock\n"); + error = ENOENT; + goto fail; + } + + error = clk_get_by_ofw_index(dev, 0, &clk_parent); + if (error != 0) { + device_printf(dev, "cannot parse clock parent\n"); + return (ENXIO); + } + + error = aw_codecclk_create(dev, paddr, clkdom, + clk_get_name(clk_parent), names[0], 1); + + if (clkdom_finit(clkdom) != 0) { + device_printf(dev, "cannot finalize clkdom initialization\n"); + error = ENXIO; + goto fail; + } + + if (bootverbose) + clkdom_dump(clkdom); + + return (0); + +fail: + return (error); +} + +static device_method_t aw_codecclk_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_codecclk_probe), + DEVMETHOD(device_attach, aw_codecclk_attach), + + DEVMETHOD_END +}; + +static driver_t aw_codecclk_driver = { + "aw_codecclk", + aw_codecclk_methods, + 0 +}; + +static devclass_t aw_codecclk_devclass; + +EARLY_DRIVER_MODULE(aw_codecclk, simplebus, aw_codecclk_driver, + aw_codecclk_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/arm/allwinner/clk/aw_cpuclk.c b/sys/arm/allwinner/clk/aw_cpuclk.c new file mode 100644 index 00000000000..045751b1d6d --- /dev/null +++ b/sys/arm/allwinner/clk/aw_cpuclk.c @@ -0,0 +1,161 @@ +/*- + * Copyright (c) 2016 Jared McNeill + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Allwinner CPU clock + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#define CPU_CLK_SRC_SEL_WIDTH 2 +#define CPU_CLK_SRC_SEL_SHIFT 16 + +static int +aw_cpuclk_probe(device_t dev) +{ + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (!ofw_bus_is_compatible(dev, "allwinner,sun4i-a10-cpu-clk")) + return (ENXIO); + + device_set_desc(dev, "Allwinner CPU Clock"); + return (BUS_PROBE_DEFAULT); +} + +static int +aw_cpuclk_attach(device_t dev) +{ + struct clk_mux_def def; + struct clkdom *clkdom; + bus_addr_t paddr; + bus_size_t psize; + phandle_t node; + int error, ncells, i; + clk_t clk; + + node = ofw_bus_get_node(dev); + + if (ofw_reg_to_paddr(node, 0, &paddr, &psize, NULL) != 0) { + device_printf(dev, "cannot parse 'reg' property\n"); + return (ENXIO); + } + + error = ofw_bus_parse_xref_list_get_length(node, "clocks", + "#clock-cells", &ncells); + if (error != 0) { + device_printf(dev, "cannot get clock count\n"); + return (error); + } + + clkdom = clkdom_create(dev); + + memset(&def, 0, sizeof(def)); + def.clkdef.id = 1; + def.clkdef.parent_names = malloc(sizeof(char *) * ncells, M_OFWPROP, + M_WAITOK); + for (i = 0; i < ncells; i++) { + error = clk_get_by_ofw_index(dev, i, &clk); + if (error != 0) { + device_printf(dev, "cannot get clock %d\n", i); + goto fail; + } + def.clkdef.parent_names[i] = clk_get_name(clk); + clk_release(clk); + } + def.clkdef.parent_cnt = ncells; + def.offset = paddr; + def.shift = CPU_CLK_SRC_SEL_SHIFT; + def.width = CPU_CLK_SRC_SEL_WIDTH; + + error = clk_parse_ofw_clk_name(dev, node, &def.clkdef.name); + if (error != 0) { + device_printf(dev, "cannot parse clock name\n"); + error = ENXIO; + goto fail; + } + + error = clknode_mux_register(clkdom, &def); + if (error != 0) { + device_printf(dev, "cannot register mux clock\n"); + error = ENXIO; + goto fail; + } + + if (clkdom_finit(clkdom) != 0) { + device_printf(dev, "cannot finalize clkdom initialization\n"); + error = ENXIO; + goto fail; + } + + free(__DECONST(char *, def.clkdef.parent_names), M_OFWPROP); + free(__DECONST(char *, def.clkdef.name), M_OFWPROP); + + if (bootverbose) + clkdom_dump(clkdom); + + return (0); + +fail: + free(__DECONST(char *, def.clkdef.name), M_OFWPROP); + return (error); +} + +static device_method_t aw_cpuclk_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_cpuclk_probe), + DEVMETHOD(device_attach, aw_cpuclk_attach), + + DEVMETHOD_END +}; + +static driver_t aw_cpuclk_driver = { + "aw_cpuclk", + aw_cpuclk_methods, + 0 +}; + +static devclass_t aw_cpuclk_devclass; + +EARLY_DRIVER_MODULE(aw_cpuclk, simplebus, aw_cpuclk_driver, + aw_cpuclk_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/arm/allwinner/clk/aw_debeclk.c b/sys/arm/allwinner/clk/aw_debeclk.c new file mode 100644 index 00000000000..885fad8ffd5 --- /dev/null +++ b/sys/arm/allwinner/clk/aw_debeclk.c @@ -0,0 +1,351 @@ +/*- + * Copyright (c) 2016 Jared McNeill + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Allwinner display backend clocks + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include "clkdev_if.h" +#include "hwreset_if.h" + +#define SCLK_GATING (1 << 31) +#define BE_RST (1 << 30) +#define CLK_SRC_SEL (0x3 << 24) +#define CLK_SRC_SEL_SHIFT 24 +#define CLK_SRC_SEL_MAX 2 +#define CLK_SRC_SEL_PLL3 0 +#define CLK_SRC_SEL_PLL7 1 +#define CLK_SRC_SEL_PLL5 2 +#define CLK_RATIO_M (0xf << 0) +#define CLK_RATIO_M_SHIFT 0 +#define CLK_RATIO_M_MAX 0xf + +static struct ofw_compat_data compat_data[] = { + { "allwinner,sun4i-a10-de-be-clk", 1 }, + { NULL, 0 } +}; + +struct aw_debeclk_softc { + device_t clkdev; + bus_addr_t reg; +}; + +#define DEBECLK_READ(sc, val) CLKDEV_READ_4((sc)->clkdev, (sc)->reg, (val)) +#define DEBECLK_WRITE(sc, val) CLKDEV_WRITE_4((sc)->clkdev, (sc)->reg, (val)) +#define DEBECLK_MODIFY(sc, clr, set) \ + CLKDEV_MODIFY_4((sc)->clkdev, (sc)->reg, (clr), (set)) +#define DEVICE_LOCK(sc) CLKDEV_DEVICE_LOCK((sc)->clkdev) +#define DEVICE_UNLOCK(sc) CLKDEV_DEVICE_UNLOCK((sc)->clkdev) + +static int +aw_debeclk_hwreset_assert(device_t dev, intptr_t id, bool value) +{ + struct aw_debeclk_softc *sc; + int error; + + sc = device_get_softc(dev); + + DEVICE_LOCK(sc); + error = DEBECLK_MODIFY(sc, BE_RST, value ? 0 : BE_RST); + DEVICE_UNLOCK(sc); + + return (error); +} + +static int +aw_debeclk_hwreset_is_asserted(device_t dev, intptr_t id, bool *value) +{ + struct aw_debeclk_softc *sc; + uint32_t val; + int error; + + sc = device_get_softc(dev); + + DEVICE_LOCK(sc); + error = DEBECLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + + if (error) + return (error); + + *value = (val & BE_RST) != 0 ? false : true; + + return (0); +} + +static int +aw_debeclk_init(struct clknode *clk, device_t dev) +{ + struct aw_debeclk_softc *sc; + uint32_t val, index; + + sc = clknode_get_softc(clk); + + /* Set BE source to PLL5 (DDR external peripheral clock) */ + index = CLK_SRC_SEL_PLL5; + + DEVICE_LOCK(sc); + DEBECLK_READ(sc, &val); + val &= ~CLK_SRC_SEL; + val |= (index << CLK_SRC_SEL_SHIFT); + DEBECLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + clknode_init_parent_idx(clk, index); + return (0); +} + +static int +aw_debeclk_set_mux(struct clknode *clk, int index) +{ + struct aw_debeclk_softc *sc; + uint32_t val; + + sc = clknode_get_softc(clk); + + if (index < 0 || index > CLK_SRC_SEL_MAX) + return (ERANGE); + + DEVICE_LOCK(sc); + DEBECLK_READ(sc, &val); + val &= ~CLK_SRC_SEL; + val |= (index << CLK_SRC_SEL_SHIFT); + DEBECLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + return (0); +} + +static int +aw_debeclk_set_gate(struct clknode *clk, bool enable) +{ + struct aw_debeclk_softc *sc; + uint32_t val; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(sc); + DEBECLK_READ(sc, &val); + if (enable) + val |= SCLK_GATING; + else + val &= ~SCLK_GATING; + DEBECLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + return (0); +} + +static int +aw_debeclk_recalc_freq(struct clknode *clk, uint64_t *freq) +{ + struct aw_debeclk_softc *sc; + uint32_t val, m; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(sc); + DEBECLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + + m = ((val & CLK_RATIO_M) >> CLK_RATIO_M_SHIFT) + 1; + + *freq = *freq / m; + + return (0); +} + +static int +aw_debeclk_set_freq(struct clknode *clk, uint64_t fin, uint64_t *fout, + int flags, int *stop) +{ + struct aw_debeclk_softc *sc; + uint32_t val, m; + + sc = clknode_get_softc(clk); + + m = howmany(fin, *fout) - 1; + + DEVICE_LOCK(sc); + DEBECLK_READ(sc, &val); + val &= ~CLK_RATIO_M; + val |= (m << CLK_RATIO_M_SHIFT); + DEBECLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + *fout = fin / (m + 1); + *stop = 1; + + return (0); +} + +static clknode_method_t aw_debeclk_clknode_methods[] = { + /* Device interface */ + CLKNODEMETHOD(clknode_init, aw_debeclk_init), + CLKNODEMETHOD(clknode_set_gate, aw_debeclk_set_gate), + CLKNODEMETHOD(clknode_set_mux, aw_debeclk_set_mux), + CLKNODEMETHOD(clknode_recalc_freq, aw_debeclk_recalc_freq), + CLKNODEMETHOD(clknode_set_freq, aw_debeclk_set_freq), + CLKNODEMETHOD_END +}; +DEFINE_CLASS_1(aw_debeclk_clknode, aw_debeclk_clknode_class, + aw_debeclk_clknode_methods, sizeof(struct aw_debeclk_softc), clknode_class); + +static int +aw_debeclk_probe(device_t dev) +{ + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "Allwinner Display Engine Backend Clock"); + return (BUS_PROBE_DEFAULT); +} + +static int +aw_debeclk_attach(device_t dev) +{ + struct clknode_init_def def; + struct aw_debeclk_softc *sc, *clk_sc; + struct clkdom *clkdom; + struct clknode *clk; + clk_t clk_parent; + bus_size_t psize; + phandle_t node; + int error, ncells, i; + + sc = device_get_softc(dev); + sc->clkdev = device_get_parent(dev); + node = ofw_bus_get_node(dev); + + if (ofw_reg_to_paddr(node, 0, &sc->reg, &psize, NULL) != 0) { + device_printf(dev, "cannot parse 'reg' property\n"); + return (ENXIO); + } + + error = ofw_bus_parse_xref_list_get_length(node, "clocks", + "#clock-cells", &ncells); + if (error != 0) { + device_printf(dev, "cannot get clock count\n"); + return (error); + } + + clkdom = clkdom_create(dev); + + memset(&def, 0, sizeof(def)); + error = clk_parse_ofw_clk_name(dev, node, &def.name); + if (error != 0) { + device_printf(dev, "cannot parse clock name\n"); + error = ENXIO; + goto fail; + } + def.id = 1; + def.parent_names = malloc(sizeof(char *) * ncells, M_OFWPROP, M_WAITOK); + for (i = 0; i < ncells; i++) { + error = clk_get_by_ofw_index(dev, i, &clk_parent); + if (error != 0) { + device_printf(dev, "cannot get clock %d\n", i); + goto fail; + } + def.parent_names[i] = clk_get_name(clk_parent); + clk_release(clk_parent); + } + def.parent_cnt = ncells; + + clk = clknode_create(clkdom, &aw_debeclk_clknode_class, &def); + if (clk == NULL) { + device_printf(dev, "cannot create clknode\n"); + error = ENXIO; + goto fail; + } + + clk_sc = clknode_get_softc(clk); + clk_sc->reg = sc->reg; + clk_sc->clkdev = device_get_parent(dev); + + clknode_register(clkdom, clk); + + if (clkdom_finit(clkdom) != 0) { + device_printf(dev, "cannot finalize clkdom initialization\n"); + error = ENXIO; + goto fail; + } + + if (bootverbose) + clkdom_dump(clkdom); + + hwreset_register_ofw_provider(dev); + + return (0); + +fail: + return (error); +} + +static device_method_t aw_debeclk_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_debeclk_probe), + DEVMETHOD(device_attach, aw_debeclk_attach), + + /* Reset interface */ + DEVMETHOD(hwreset_assert, aw_debeclk_hwreset_assert), + DEVMETHOD(hwreset_is_asserted, aw_debeclk_hwreset_is_asserted), + + DEVMETHOD_END +}; + +static driver_t aw_debeclk_driver = { + "aw_debeclk", + aw_debeclk_methods, + sizeof(struct aw_debeclk_softc) +}; + +static devclass_t aw_debeclk_devclass; + +EARLY_DRIVER_MODULE(aw_debeclk, simplebus, aw_debeclk_driver, + aw_debeclk_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/arm/allwinner/clk/aw_gate.c b/sys/arm/allwinner/clk/aw_gate.c new file mode 100644 index 00000000000..d43d0217547 --- /dev/null +++ b/sys/arm/allwinner/clk/aw_gate.c @@ -0,0 +1,198 @@ +/*- + * Copyright (c) 2016 Jared McNeill + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Allwinner clock gates + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#define GATE_OFFSET(index) ((index / 32) * 4) +#define GATE_SHIFT(index) (index % 32) + +static struct ofw_compat_data compat_data[] = { + { "allwinner,sun4i-a10-dram-gates-clk", + (uintptr_t)"Allwinner DRAM Clock Gates" }, + { "allwinner,sun4i-a10-ahb-gates-clk", + (uintptr_t)"Allwinner AHB Clock Gates" }, + { "allwinner,sun4i-a10-apb0-gates-clk", + (uintptr_t)"Allwinner APB0 Clock Gates" }, + { "allwinner,sun4i-a10-apb1-gates-clk", + (uintptr_t)"Allwinner APB1 Clock Gates" }, + + { "allwinner,sun7i-a20-ahb-gates-clk", + (uintptr_t)"Allwinner AHB Clock Gates" }, + { "allwinner,sun7i-a20-apb0-gates-clk", + (uintptr_t)"Allwinner APB0 Clock Gates" }, + { "allwinner,sun7i-a20-apb1-gates-clk", + (uintptr_t)"Allwinner APB1 Clock Gates" }, + + { "allwinner,sun6i-a31-ahb1-gates-clk", + (uintptr_t)"Allwinner AHB1 Clock Gates" }, + { "allwinner,sun6i-a31-apb0-gates-clk", + (uintptr_t)"Allwinner APB0 Clock Gates" }, + { "allwinner,sun6i-a31-apb1-gates-clk", + (uintptr_t)"Allwinner APB1 Clock Gates" }, + { "allwinner,sun6i-a31-apb2-gates-clk", + (uintptr_t)"Allwinner APB2 Clock Gates" }, + + { NULL, 0 } +}; + +static int +aw_gate_create(device_t dev, bus_addr_t paddr, struct clkdom *clkdom, + const char *pclkname, const char *clkname, int index) +{ + const char *parent_names[1] = { pclkname }; + struct clk_gate_def def; + + memset(&def, 0, sizeof(def)); + def.clkdef.id = index; + def.clkdef.name = clkname; + def.clkdef.parent_names = parent_names; + def.clkdef.parent_cnt = 1; + def.offset = paddr + GATE_OFFSET(index); + def.shift = GATE_SHIFT(index); + def.mask = 1; + def.on_value = 1; + def.off_value = 0; + + return (clknode_gate_register(clkdom, &def)); +} + +static int +aw_gate_probe(device_t dev) +{ + const char *d; + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + d = (const char *)ofw_bus_search_compatible(dev, compat_data)->ocd_data; + if (d == NULL) + return (ENXIO); + + device_set_desc(dev, d); + return (BUS_PROBE_DEFAULT); +} + +static int +aw_gate_attach(device_t dev) +{ + struct clkdom *clkdom; + const char **names; + int index, nout, error; + uint32_t *indices; + clk_t clk_parent; + bus_addr_t paddr; + bus_size_t psize; + phandle_t node; + + node = ofw_bus_get_node(dev); + indices = NULL; + + if (ofw_reg_to_paddr(node, 0, &paddr, &psize, NULL) != 0) { + device_printf(dev, "cannot parse 'reg' property\n"); + return (ENXIO); + } + + clkdom = clkdom_create(dev); + + nout = clk_parse_ofw_out_names(dev, node, &names, &indices); + if (nout == 0) { + device_printf(dev, "no clock outputs found\n"); + error = ENOENT; + goto fail; + } + if (indices == NULL) { + device_printf(dev, "no clock-indices property\n"); + error = ENXIO; + goto fail; + } + + error = clk_get_by_ofw_index(dev, 0, &clk_parent); + if (error != 0) { + device_printf(dev, "cannot parse clock parent\n"); + return (ENXIO); + } + + for (index = 0; index < nout; index++) { + error = aw_gate_create(dev, paddr, clkdom, + clk_get_name(clk_parent), names[index], indices[index]); + if (error) + goto fail; + } + + if (clkdom_finit(clkdom) != 0) { + device_printf(dev, "cannot finalize clkdom initialization\n"); + error = ENXIO; + goto fail; + } + + if (bootverbose) + clkdom_dump(clkdom); + + return (0); + +fail: + return (error); +} + +static device_method_t aw_gate_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_gate_probe), + DEVMETHOD(device_attach, aw_gate_attach), + + DEVMETHOD_END +}; + +static driver_t aw_gate_driver = { + "aw_gate", + aw_gate_methods, + 0 +}; + +static devclass_t aw_gate_devclass; + +EARLY_DRIVER_MODULE(aw_gate, simplebus, aw_gate_driver, + aw_gate_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/arm/allwinner/clk/aw_gmacclk.c b/sys/arm/allwinner/clk/aw_gmacclk.c new file mode 100644 index 00000000000..5e2f618cd1f --- /dev/null +++ b/sys/arm/allwinner/clk/aw_gmacclk.c @@ -0,0 +1,259 @@ +/*- + * Copyright (c) 2016 Jared McNeill + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Allwinner GMAC clock + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include "clkdev_if.h" + +#define GMAC_CLK_PIT (0x1 << 2) +#define GMAC_CLK_PIT_SHIFT 2 +#define GMAC_CLK_PIT_MII 0 +#define GMAC_CLK_PIT_RGMII 1 +#define GMAC_CLK_SRC (0x3 << 0) +#define GMAC_CLK_SRC_SHIFT 0 +#define GMAC_CLK_SRC_MII 0 +#define GMAC_CLK_SRC_EXT_RGMII 1 +#define GMAC_CLK_SRC_RGMII 2 + +#define CLK_IDX_MII 0 +#define CLK_IDX_RGMII 1 +#define CLK_IDX_COUNT 2 + +static struct ofw_compat_data compat_data[] = { + { "allwinner,sun7i-a20-gmac-clk", 1 }, + { NULL, 0 } +}; + +struct aw_gmacclk_sc { + device_t clkdev; + bus_addr_t reg; +}; + +#define GMACCLK_READ(sc, val) CLKDEV_READ_4((sc)->clkdev, (sc)->reg, (val)) +#define GMACCLK_WRITE(sc, val) CLKDEV_WRITE_4((sc)->clkdev, (sc)->reg, (val)) +#define DEVICE_LOCK(sc) CLKDEV_DEVICE_LOCK((sc)->clkdev) +#define DEVICE_UNLOCK(sc) CLKDEV_DEVICE_UNLOCK((sc)->clkdev) + +static int +aw_gmacclk_init(struct clknode *clk, device_t dev) +{ + struct aw_gmacclk_sc *sc; + uint32_t val, index; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(sc); + GMACCLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + + switch ((val & GMAC_CLK_SRC) >> GMAC_CLK_SRC_SHIFT) { + case GMAC_CLK_SRC_MII: + index = CLK_IDX_MII; + break; + case GMAC_CLK_SRC_RGMII: + index = CLK_IDX_RGMII; + break; + default: + return (ENXIO); + } + + clknode_init_parent_idx(clk, index); + return (0); +} + +static int +aw_gmacclk_set_mux(struct clknode *clk, int index) +{ + struct aw_gmacclk_sc *sc; + uint32_t val, clk_src, pit; + int error; + + sc = clknode_get_softc(clk); + error = 0; + + switch (index) { + case CLK_IDX_MII: + clk_src = GMAC_CLK_SRC_MII; + pit = GMAC_CLK_PIT_MII; + break; + case CLK_IDX_RGMII: + clk_src = GMAC_CLK_SRC_RGMII; + pit = GMAC_CLK_PIT_RGMII; + break; + default: + return (ENXIO); + } + + DEVICE_LOCK(sc); + GMACCLK_READ(sc, &val); + val &= ~(GMAC_CLK_SRC | GMAC_CLK_PIT); + val |= (clk_src << GMAC_CLK_SRC_SHIFT); + val |= (pit << GMAC_CLK_PIT_SHIFT); + GMACCLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + return (0); +} + +static clknode_method_t aw_gmacclk_clknode_methods[] = { + /* Device interface */ + CLKNODEMETHOD(clknode_init, aw_gmacclk_init), + CLKNODEMETHOD(clknode_set_mux, aw_gmacclk_set_mux), + CLKNODEMETHOD_END +}; +DEFINE_CLASS_1(aw_gmacclk_clknode, aw_gmacclk_clknode_class, + aw_gmacclk_clknode_methods, sizeof(struct aw_gmacclk_sc), clknode_class); + +static int +aw_gmacclk_probe(device_t dev) +{ + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "Allwinner Module Clock"); + return (BUS_PROBE_DEFAULT); +} + +static int +aw_gmacclk_attach(device_t dev) +{ + struct clknode_init_def def; + struct aw_gmacclk_sc *sc; + struct clkdom *clkdom; + struct clknode *clk; + clk_t clk_parent; + bus_addr_t paddr; + bus_size_t psize; + phandle_t node; + int error, ncells, i; + + node = ofw_bus_get_node(dev); + + if (ofw_reg_to_paddr(node, 0, &paddr, &psize, NULL) != 0) { + device_printf(dev, "cannot parse 'reg' property\n"); + return (ENXIO); + } + + error = ofw_bus_parse_xref_list_get_length(node, "clocks", + "#clock-cells", &ncells); + if (error != 0 || ncells != CLK_IDX_COUNT) { + device_printf(dev, "couldn't find parent clocks\n"); + return (ENXIO); + } + + clkdom = clkdom_create(dev); + + memset(&def, 0, sizeof(def)); + error = clk_parse_ofw_clk_name(dev, node, &def.name); + if (error != 0) { + device_printf(dev, "cannot parse clock name\n"); + error = ENXIO; + goto fail; + } + def.id = 1; + def.parent_names = malloc(sizeof(char *) * ncells, M_OFWPROP, M_WAITOK); + for (i = 0; i < ncells; i++) { + error = clk_get_by_ofw_index(dev, i, &clk_parent); + if (error != 0) { + device_printf(dev, "cannot get clock %d\n", error); + goto fail; + } + def.parent_names[i] = clk_get_name(clk_parent); + clk_release(clk_parent); + } + def.parent_cnt = ncells; + + clk = clknode_create(clkdom, &aw_gmacclk_clknode_class, &def); + if (clk == NULL) { + device_printf(dev, "cannot create clknode\n"); + error = ENXIO; + goto fail; + } + + sc = clknode_get_softc(clk); + sc->reg = paddr; + sc->clkdev = device_get_parent(dev); + + clknode_register(clkdom, clk); + + if (clkdom_finit(clkdom) != 0) { + device_printf(dev, "cannot finalize clkdom initialization\n"); + error = ENXIO; + goto fail; + } + + if (bootverbose) + clkdom_dump(clkdom); + + return (0); + +fail: + return (error); +} + +static device_method_t aw_gmacclk_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_gmacclk_probe), + DEVMETHOD(device_attach, aw_gmacclk_attach), + + DEVMETHOD_END +}; + +static driver_t aw_gmacclk_driver = { + "aw_gmacclk", + aw_gmacclk_methods, + 0 +}; + +static devclass_t aw_gmacclk_devclass; + +EARLY_DRIVER_MODULE(aw_gmacclk, simplebus, aw_gmacclk_driver, + aw_gmacclk_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/arm/allwinner/clk/aw_hdmiclk.c b/sys/arm/allwinner/clk/aw_hdmiclk.c new file mode 100644 index 00000000000..635418cbdbb --- /dev/null +++ b/sys/arm/allwinner/clk/aw_hdmiclk.c @@ -0,0 +1,315 @@ +/*- + * Copyright (c) 2016 Jared McNeill + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Allwinner HDMI clock + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include "clkdev_if.h" + +#define SCLK_GATING (1 << 31) +#define CLK_SRC_SEL (0x3 << 24) +#define CLK_SRC_SEL_SHIFT 24 +#define CLK_SRC_SEL_MAX 0x3 +#define CLK_RATIO_N (0x3 << 16) +#define CLK_RATIO_N_SHIFT 16 +#define CLK_RATIO_N_MAX 0x3 +#define CLK_RATIO_M (0x1f << 0) +#define CLK_RATIO_M_SHIFT 0 +#define CLK_RATIO_M_MAX 0x1f + +#define CLK_IDX_PLL3_1X 0 + +static struct ofw_compat_data compat_data[] = { + { "allwinner,sun4i-a10-hdmi-clk", 1 }, + { NULL, 0 } +}; + +struct aw_hdmiclk_sc { + device_t clkdev; + bus_addr_t reg; +}; + +#define HDMICLK_READ(sc, val) CLKDEV_READ_4((sc)->clkdev, (sc)->reg, (val)) +#define HDMICLK_WRITE(sc, val) CLKDEV_WRITE_4((sc)->clkdev, (sc)->reg, (val)) +#define DEVICE_LOCK(sc) CLKDEV_DEVICE_LOCK((sc)->clkdev) +#define DEVICE_UNLOCK(sc) CLKDEV_DEVICE_UNLOCK((sc)->clkdev) + +static int +aw_hdmiclk_init(struct clknode *clk, device_t dev) +{ + struct aw_hdmiclk_sc *sc; + uint32_t val, index; + + sc = clknode_get_softc(clk); + + /* Select PLL3(1X) clock source */ + index = CLK_IDX_PLL3_1X; + + DEVICE_LOCK(sc); + HDMICLK_READ(sc, &val); + val &= ~CLK_SRC_SEL; + val |= (index << CLK_SRC_SEL_SHIFT); + HDMICLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + clknode_init_parent_idx(clk, index); + return (0); +} + +static int +aw_hdmiclk_set_mux(struct clknode *clk, int index) +{ + struct aw_hdmiclk_sc *sc; + uint32_t val; + + sc = clknode_get_softc(clk); + + if (index < 0 || index > CLK_SRC_SEL_MAX) + return (ERANGE); + + DEVICE_LOCK(sc); + HDMICLK_READ(sc, &val); + val &= ~CLK_SRC_SEL; + val |= (index << CLK_SRC_SEL_SHIFT); + HDMICLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + return (0); +} + +static int +aw_hdmiclk_set_gate(struct clknode *clk, bool enable) +{ + struct aw_hdmiclk_sc *sc; + uint32_t val; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(sc); + HDMICLK_READ(sc, &val); + if (enable) + val |= SCLK_GATING; + else + val &= ~SCLK_GATING; + HDMICLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + return (0); +} + +static int +aw_hdmiclk_recalc_freq(struct clknode *clk, uint64_t *freq) +{ + struct aw_hdmiclk_sc *sc; + uint32_t val, m, n; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(sc); + HDMICLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + + n = 1 << ((val & CLK_RATIO_N) >> CLK_RATIO_N_SHIFT); + m = ((val & CLK_RATIO_M) >> CLK_RATIO_M_SHIFT) + 1; + + *freq = *freq / n / m; + + return (0); +} + +static int +aw_hdmiclk_set_freq(struct clknode *clk, uint64_t fin, uint64_t *fout, + int flags, int *stop) +{ + struct aw_hdmiclk_sc *sc; + uint32_t val, m, n, best_m, best_n; + uint64_t cur_freq; + int64_t best_diff, cur_diff; + + sc = clknode_get_softc(clk); + best_n = best_m = 0; + best_diff = (int64_t)*fout; + + for (n = 0; n <= CLK_RATIO_N_MAX; n++) + for (m = 0; m <= CLK_RATIO_M_MAX; m++) { + cur_freq = fin / (1 << n) / (m + 1); + cur_diff = (int64_t)*fout - cur_freq; + if (cur_diff >= 0 && cur_diff < best_diff) { + best_diff = cur_diff; + best_m = m; + best_n = n; + } + } + + if (best_diff == (int64_t)*fout) + return (ERANGE); + + DEVICE_LOCK(sc); + HDMICLK_READ(sc, &val); + val &= ~(CLK_RATIO_N | CLK_RATIO_M); + val |= (best_n << CLK_RATIO_N_SHIFT); + val |= (best_m << CLK_RATIO_M_SHIFT); + HDMICLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + *fout = fin / (1 << best_n) / (best_m + 1); + *stop = 1; + + return (0); +} + +static clknode_method_t aw_hdmiclk_clknode_methods[] = { + /* Device interface */ + CLKNODEMETHOD(clknode_init, aw_hdmiclk_init), + CLKNODEMETHOD(clknode_set_gate, aw_hdmiclk_set_gate), + CLKNODEMETHOD(clknode_set_mux, aw_hdmiclk_set_mux), + CLKNODEMETHOD(clknode_recalc_freq, aw_hdmiclk_recalc_freq), + CLKNODEMETHOD(clknode_set_freq, aw_hdmiclk_set_freq), + CLKNODEMETHOD_END +}; +DEFINE_CLASS_1(aw_hdmiclk_clknode, aw_hdmiclk_clknode_class, + aw_hdmiclk_clknode_methods, sizeof(struct aw_hdmiclk_sc), clknode_class); + +static int +aw_hdmiclk_probe(device_t dev) +{ + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "Allwinner HDMI Clock"); + return (BUS_PROBE_DEFAULT); +} + +static int +aw_hdmiclk_attach(device_t dev) +{ + struct clknode_init_def def; + struct aw_hdmiclk_sc *sc; + struct clkdom *clkdom; + struct clknode *clk; + clk_t clk_parent; + bus_addr_t paddr; + bus_size_t psize; + phandle_t node; + int error; + + node = ofw_bus_get_node(dev); + + if (ofw_reg_to_paddr(node, 0, &paddr, &psize, NULL) != 0) { + device_printf(dev, "cannot parse 'reg' property\n"); + return (ENXIO); + } + + clkdom = clkdom_create(dev); + + error = clk_get_by_ofw_index(dev, 0, &clk_parent); + if (error != 0) { + device_printf(dev, "cannot parse clock parent\n"); + return (ENXIO); + } + + memset(&def, 0, sizeof(def)); + error = clk_parse_ofw_clk_name(dev, node, &def.name); + if (error != 0) { + device_printf(dev, "cannot parse clock name\n"); + error = ENXIO; + goto fail; + } + def.id = 1; + def.parent_names = malloc(sizeof(char *), M_OFWPROP, M_WAITOK); + def.parent_names[0] = clk_get_name(clk_parent); + def.parent_cnt = 1; + + clk = clknode_create(clkdom, &aw_hdmiclk_clknode_class, &def); + if (clk == NULL) { + device_printf(dev, "cannot create clknode\n"); + error = ENXIO; + goto fail; + } + + sc = clknode_get_softc(clk); + sc->reg = paddr; + sc->clkdev = device_get_parent(dev); + + clknode_register(clkdom, clk); + + if (clkdom_finit(clkdom) != 0) { + device_printf(dev, "cannot finalize clkdom initialization\n"); + error = ENXIO; + goto fail; + } + + if (bootverbose) + clkdom_dump(clkdom); + + return (0); + +fail: + return (error); +} + +static device_method_t aw_hdmiclk_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_hdmiclk_probe), + DEVMETHOD(device_attach, aw_hdmiclk_attach), + + DEVMETHOD_END +}; + +static driver_t aw_hdmiclk_driver = { + "aw_hdmiclk", + aw_hdmiclk_methods, + 0 +}; + +static devclass_t aw_hdmiclk_devclass; + +EARLY_DRIVER_MODULE(aw_hdmiclk, simplebus, aw_hdmiclk_driver, + aw_hdmiclk_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/arm/allwinner/clk/aw_lcdclk.c b/sys/arm/allwinner/clk/aw_lcdclk.c new file mode 100644 index 00000000000..bebee013968 --- /dev/null +++ b/sys/arm/allwinner/clk/aw_lcdclk.c @@ -0,0 +1,560 @@ +/*- + * Copyright (c) 2016 Jared McNeill + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Allwinner LCD clocks + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include "clkdev_if.h" +#include "hwreset_if.h" + +/* CH0 */ +#define CH0_SCLK_GATING (1 << 31) +#define CH0_LCD_RST (1 << 30) +#define CH0_CLK_SRC_SEL (0x3 << 24) +#define CH0_CLK_SRC_SEL_SHIFT 24 +#define CH0_CLK_SRC_SEL_PLL3_1X 0 +#define CH0_CLK_SRC_SEL_PLL7_1X 1 +#define CH0_CLK_SRC_SEL_PLL3_2X 2 +#define CH0_CLK_SRC_SEL_PLL6 3 + +/* CH1 */ +#define CH1_SCLK2_GATING (1 << 31) +#define CH1_SCLK2_SEL (0x3 << 24) +#define CH1_SCLK2_SEL_SHIFT 24 +#define CH1_SCLK2_SEL_PLL3_1X 0 +#define CH1_SCLK2_SEL_PLL7_1X 1 +#define CH1_SCLK2_SEL_PLL3_2X 2 +#define CH1_SCLK2_SEL_PLL7_2X 3 +#define CH1_SCLK1_GATING (1 << 15) +#define CH1_SCLK1_SEL (0x1 << 11) +#define CH1_SCLK1_SEL_SHIFT 11 +#define CH1_SCLK1_SEL_SCLK2 0 +#define CH1_SCLK1_SEL_SCLK2_DIV2 1 +#define CH1_CLK_DIV_RATIO_M (0x1f << 0) +#define CH1_CLK_DIV_RATIO_M_SHIFT 0 + +#define TCON_PLLREF 3000000ULL +#define TCON_PLL_M_MIN 1 +#define TCON_PLL_M_MAX 15 +#define TCON_PLL_N_MIN 9 +#define TCON_PLL_N_MAX 127 + +#define CLK_IDX_CH1_SCLK1 0 +#define CLK_IDX_CH1_SCLK2 1 + +#define CLK_IDX_ + +enum aw_lcdclk_type { + AW_LCD_CH0 = 1, + AW_LCD_CH1, +}; + +static struct ofw_compat_data compat_data[] = { + { "allwinner,sun4i-a10-lcd-ch0-clk", AW_LCD_CH0 }, + { "allwinner,sun4i-a10-lcd-ch1-clk", AW_LCD_CH1 }, + { NULL, 0 } +}; + +struct aw_lcdclk_softc { + enum aw_lcdclk_type type; + device_t clkdev; + bus_addr_t reg; + int id; +}; + +#define LCDCLK_READ(sc, val) CLKDEV_READ_4((sc)->clkdev, (sc)->reg, (val)) +#define LCDCLK_WRITE(sc, val) CLKDEV_WRITE_4((sc)->clkdev, (sc)->reg, (val)) +#define LCDCLK_MODIFY(sc, clr, set) \ + CLKDEV_MODIFY_4((sc)->clkdev, (sc)->reg, (clr), (set)) +#define DEVICE_LOCK(sc) CLKDEV_DEVICE_LOCK((sc)->clkdev) +#define DEVICE_UNLOCK(sc) CLKDEV_DEVICE_UNLOCK((sc)->clkdev) + +static int +aw_lcdclk_hwreset_assert(device_t dev, intptr_t id, bool value) +{ + struct aw_lcdclk_softc *sc; + int error; + + sc = device_get_softc(dev); + + if (sc->type != AW_LCD_CH0) + return (ENXIO); + + DEVICE_LOCK(sc); + error = LCDCLK_MODIFY(sc, CH0_LCD_RST, value ? 0 : CH0_LCD_RST); + DEVICE_UNLOCK(sc); + + return (error); +} + +static int +aw_lcdclk_hwreset_is_asserted(device_t dev, intptr_t id, bool *value) +{ + struct aw_lcdclk_softc *sc; + uint32_t val; + int error; + + sc = device_get_softc(dev); + + if (sc->type != AW_LCD_CH0) + return (ENXIO); + + DEVICE_LOCK(sc); + error = LCDCLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + + if (error) + return (error); + + *value = (val & CH0_LCD_RST) != 0 ? false : true; + + return (0); +} + +static int +aw_lcdclk_init(struct clknode *clk, device_t dev) +{ + struct aw_lcdclk_softc *sc; + uint32_t val, index; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(sc); + LCDCLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + + switch (sc->type) { + case AW_LCD_CH0: + index = (val & CH0_CLK_SRC_SEL) >> CH0_CLK_SRC_SEL_SHIFT; + break; + case AW_LCD_CH1: + switch (sc->id) { + case CLK_IDX_CH1_SCLK1: + index = 0; + break; + case CLK_IDX_CH1_SCLK2: + index = (val & CH1_SCLK2_SEL_SHIFT) >> + CH1_SCLK2_SEL_SHIFT; + break; + default: + return (ENXIO); + } + break; + default: + return (ENXIO); + } + + clknode_init_parent_idx(clk, index); + return (0); +} + +static int +aw_lcdclk_set_mux(struct clknode *clk, int index) +{ + struct aw_lcdclk_softc *sc; + uint32_t val; + + sc = clknode_get_softc(clk); + + switch (sc->type) { + case AW_LCD_CH0: + DEVICE_LOCK(sc); + LCDCLK_READ(sc, &val); + val &= ~CH0_CLK_SRC_SEL; + val |= (index << CH0_CLK_SRC_SEL_SHIFT); + LCDCLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + break; + case AW_LCD_CH1: + switch (sc->id) { + case CLK_IDX_CH1_SCLK2: + DEVICE_LOCK(sc); + LCDCLK_READ(sc, &val); + val &= ~CH1_SCLK2_SEL; + val |= (index << CH1_SCLK2_SEL_SHIFT); + LCDCLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + break; + default: + return (ENXIO); + } + break; + default: + return (ENXIO); + } + + return (0); +} + +static int +aw_lcdclk_set_gate(struct clknode *clk, bool enable) +{ + struct aw_lcdclk_softc *sc; + uint32_t val, mask; + + sc = clknode_get_softc(clk); + + switch (sc->type) { + case AW_LCD_CH0: + mask = CH0_SCLK_GATING; + break; + case AW_LCD_CH1: + mask = (sc->id == CLK_IDX_CH1_SCLK1) ? CH1_SCLK1_GATING : + CH1_SCLK2_GATING; + break; + default: + return (ENXIO); + } + + DEVICE_LOCK(sc); + LCDCLK_READ(sc, &val); + if (enable) + val |= mask; + else + val &= ~mask; + LCDCLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + return (0); +} + +static int +aw_lcdclk_recalc_freq(struct clknode *clk, uint64_t *freq) +{ + struct aw_lcdclk_softc *sc; + uint32_t val, m; + + sc = clknode_get_softc(clk); + + if (sc->type != AW_LCD_CH1) + return (0); + + DEVICE_LOCK(sc); + LCDCLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + + m = ((val & CH1_CLK_DIV_RATIO_M) >> CH1_CLK_DIV_RATIO_M_SHIFT) + 1; + *freq = *freq / m; + + if (sc->id == CLK_IDX_CH1_SCLK1) { + if ((val & CH1_SCLK1_SEL) == CH1_SCLK1_SEL_SCLK2_DIV2) + *freq /= 2; + } + + return (0); +} + +static void +calc_tcon_pll(uint64_t fin, uint64_t fout, uint32_t *pm, uint32_t *pn) +{ + int64_t diff, fcur, best; + int m, n; + + best = fout; + for (m = TCON_PLL_M_MIN; m <= TCON_PLL_M_MAX; m++) { + for (n = TCON_PLL_N_MIN; n <= TCON_PLL_N_MAX; n++) { + fcur = (n * fin) / m; + diff = (int64_t)fout - fcur; + if (diff > 0 && diff < best) { + best = diff; + *pm = m; + *pn = n; + } + } + } +} + +static int +aw_lcdclk_set_freq(struct clknode *clk, uint64_t fin, uint64_t *fout, + int flags, int *stop) +{ + struct aw_lcdclk_softc *sc; + uint32_t val, m, m2, n, n2, src_sel; + uint64_t fsingle, fdouble; + int error; + bool dbl; + + sc = clknode_get_softc(clk); + + switch (sc->type) { + case AW_LCD_CH0: + *stop = 0; + break; + case AW_LCD_CH1: + if (sc->id != CLK_IDX_CH1_SCLK2) + return (ENXIO); + + m = n = m2 = n2 = 0; + dbl = false; + + /* Find the frequency closes to the target dot clock, using + * both 1X and 2X PLL inputs as possible candidates. + */ + calc_tcon_pll(TCON_PLLREF, *fout, &m, &n); + calc_tcon_pll(TCON_PLLREF * 2, *fout, &m2, &n2); + + fsingle = m ? (n * TCON_PLLREF) / m : 0; + fdouble = m2 ? (n2 * TCON_PLLREF * 2) / m2 : 0; + + if (fdouble > fsingle) { + dbl = true; + m = m2; + n = n2; + } + + src_sel = dbl ? CH0_CLK_SRC_SEL_PLL3_2X : + CH0_CLK_SRC_SEL_PLL3_1X; + + /* Switch parent clock if necessary */ + if (src_sel != clknode_get_parent_idx(clk)) { + error = clknode_set_parent_by_idx(clk, src_sel); + if (error != 0) + return (error); + } + + /* Set desired parent frequency */ + fin = n * TCON_PLLREF; + + error = clknode_set_freq(clknode_get_parent(clk), fin, 0, 0); + if (error != 0) + return (error); + + error = clknode_enable(clknode_get_parent(clk)); + if (error != 0) + return (error); + + /* Fetch new input frequency */ + error = clknode_get_freq(clknode_get_parent(clk), &fin); + if (error != 0) + return (error); + + /* Set LCD divisor */ + DEVICE_LOCK(sc); + LCDCLK_READ(sc, &val); + val &= ~CH1_CLK_DIV_RATIO_M; + val |= ((m - 1) << CH1_CLK_DIV_RATIO_M_SHIFT); + LCDCLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + *fout = fin / m; + *stop = 1; + + break; + } + + return (0); +} + +static clknode_method_t aw_lcdclk_clknode_methods[] = { + /* Device interface */ + CLKNODEMETHOD(clknode_init, aw_lcdclk_init), + CLKNODEMETHOD(clknode_set_gate, aw_lcdclk_set_gate), + CLKNODEMETHOD(clknode_set_mux, aw_lcdclk_set_mux), + CLKNODEMETHOD(clknode_recalc_freq, aw_lcdclk_recalc_freq), + CLKNODEMETHOD(clknode_set_freq, aw_lcdclk_set_freq), + CLKNODEMETHOD_END +}; +DEFINE_CLASS_1(aw_lcdclk_clknode, aw_lcdclk_clknode_class, + aw_lcdclk_clknode_methods, sizeof(struct aw_lcdclk_softc), clknode_class); + +static int +aw_lcdclk_create(device_t dev, struct clkdom *clkdom, + const char **parent_names, int parent_cnt, const char *name, int index) +{ + struct aw_lcdclk_softc *sc, *clk_sc; + struct clknode_init_def def; + struct clknode *clk; + phandle_t node; + + sc = device_get_softc(dev); + node = ofw_bus_get_node(dev); + + memset(&def, 0, sizeof(def)); + def.id = index; + def.name = name; + def.parent_names = parent_names; + def.parent_cnt = parent_cnt; + + clk = clknode_create(clkdom, &aw_lcdclk_clknode_class, &def); + if (clk == NULL) { + device_printf(dev, "cannot create clknode\n"); + return (ENXIO); + } + + clk_sc = clknode_get_softc(clk); + clk_sc->type = sc->type; + clk_sc->reg = sc->reg; + clk_sc->clkdev = sc->clkdev; + clk_sc->id = index; + + clknode_register(clkdom, clk); + + return (0); +} + +static int +aw_lcdclk_probe(device_t dev) +{ + enum aw_lcdclk_type type; + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + type = ofw_bus_search_compatible(dev, compat_data)->ocd_data; + switch (type) { + case AW_LCD_CH0: + device_set_desc(dev, "Allwinner LCD CH0 Clock"); + break; + case AW_LCD_CH1: + device_set_desc(dev, "Allwinner LCD CH1 Clock"); + break; + default: + return (ENXIO); + } + + return (BUS_PROBE_DEFAULT); +} + +static int +aw_lcdclk_attach(device_t dev) +{ + struct aw_lcdclk_softc *sc; + struct clkdom *clkdom; + clk_t clk_parent; + bus_size_t psize; + phandle_t node; + uint32_t *indices; + const char **parent_names; + const char **names; + int error, ncells, nout, i; + + sc = device_get_softc(dev); + sc->clkdev = device_get_parent(dev); + sc->type = ofw_bus_search_compatible(dev, compat_data)->ocd_data; + + node = ofw_bus_get_node(dev); + + if (ofw_reg_to_paddr(node, 0, &sc->reg, &psize, NULL) != 0) { + device_printf(dev, "cannot parse 'reg' property\n"); + return (ENXIO); + } + + error = ofw_bus_parse_xref_list_get_length(node, "clocks", + "#clock-cells", &ncells); + if (error != 0) { + device_printf(dev, "cannot get clock count\n"); + return (error); + } + + parent_names = malloc(sizeof(char *) * ncells, M_OFWPROP, M_WAITOK); + for (i = 0; i < ncells; i++) { + error = clk_get_by_ofw_index(dev, i, &clk_parent); + if (error != 0) { + device_printf(dev, "cannot get clock %d\n", i); + goto fail; + } + parent_names[i] = clk_get_name(clk_parent); + clk_release(clk_parent); + } + + nout = clk_parse_ofw_out_names(dev, node, &names, &indices); + if (nout == 0) { + device_printf(dev, "no clock outputs found\n"); + return (error); + } + + clkdom = clkdom_create(dev); + + for (i = 0; i < nout; i++) { + error = aw_lcdclk_create(dev, clkdom, parent_names, ncells, + names[i], nout == 1 ? 1 : i); + if (error) + goto fail; + } + + if (clkdom_finit(clkdom) != 0) { + device_printf(dev, "cannot finalize clkdom initialization\n"); + error = ENXIO; + goto fail; + } + + if (bootverbose) + clkdom_dump(clkdom); + + if (sc->type == AW_LCD_CH0) + hwreset_register_ofw_provider(dev); + + free(parent_names, M_OFWPROP); + return (0); + +fail: + free(parent_names, M_OFWPROP); + return (error); +} + +static device_method_t aw_lcdclk_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_lcdclk_probe), + DEVMETHOD(device_attach, aw_lcdclk_attach), + + /* Reset interface */ + DEVMETHOD(hwreset_assert, aw_lcdclk_hwreset_assert), + DEVMETHOD(hwreset_is_asserted, aw_lcdclk_hwreset_is_asserted), + + DEVMETHOD_END +}; + +static driver_t aw_lcdclk_driver = { + "aw_lcdclk", + aw_lcdclk_methods, + sizeof(struct aw_lcdclk_softc) +}; + +static devclass_t aw_lcdclk_devclass; + +EARLY_DRIVER_MODULE(aw_lcdclk, simplebus, aw_lcdclk_driver, + aw_lcdclk_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/arm/allwinner/clk/aw_mmcclk.c b/sys/arm/allwinner/clk/aw_mmcclk.c new file mode 100644 index 00000000000..653afd9a384 --- /dev/null +++ b/sys/arm/allwinner/clk/aw_mmcclk.c @@ -0,0 +1,351 @@ +/*- + * Copyright (c) 2016 Jared McNeill + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Allwinner MMC clocks + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include "clkdev_if.h" + +#define SCLK_GATING (1 << 31) +#define CLK_SRC_SEL (0x3 << 24) +#define CLK_SRC_SEL_SHIFT 24 +#define CLK_SRC_SEL_MAX 0x3 +#define CLK_SRC_SEL_OSC24M 0 +#define CLK_SRC_SEL_PLL6 1 +#define CLK_PHASE_CTR (0x7 << 20) +#define CLK_PHASE_CTR_SHIFT 20 +#define CLK_RATIO_N (0x3 << 16) +#define CLK_RATIO_N_SHIFT 16 +#define CLK_RATIO_N_MAX 0x3 +#define OUTPUT_CLK_PHASE_CTR (0x7 << 8) +#define OUTPUT_CLK_PHASE_CTR_SHIFT 8 +#define CLK_RATIO_M (0xf << 0) +#define CLK_RATIO_M_SHIFT 0 +#define CLK_RATIO_M_MAX 0xf + +static struct ofw_compat_data compat_data[] = { + { "allwinner,sun4i-a10-mmc-clk", 1 }, + { NULL, 0 } +}; + +struct aw_mmcclk_sc { + device_t clkdev; + bus_addr_t reg; +}; + +#define MODCLK_READ(sc, val) CLKDEV_READ_4((sc)->clkdev, (sc)->reg, (val)) +#define MODCLK_WRITE(sc, val) CLKDEV_WRITE_4((sc)->clkdev, (sc)->reg, (val)) +#define DEVICE_LOCK(sc) CLKDEV_DEVICE_LOCK((sc)->clkdev) +#define DEVICE_UNLOCK(sc) CLKDEV_DEVICE_UNLOCK((sc)->clkdev) + +static int +aw_mmcclk_init(struct clknode *clk, device_t dev) +{ + struct aw_mmcclk_sc *sc; + uint32_t val, index; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(sc); + MODCLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + + index = (val & CLK_SRC_SEL) >> CLK_SRC_SEL_SHIFT; + + clknode_init_parent_idx(clk, index); + return (0); +} + +static int +aw_mmcclk_set_mux(struct clknode *clk, int index) +{ + struct aw_mmcclk_sc *sc; + uint32_t val; + + sc = clknode_get_softc(clk); + + if (index < 0 || index > CLK_SRC_SEL_MAX) + return (ERANGE); + + DEVICE_LOCK(sc); + MODCLK_READ(sc, &val); + val &= ~CLK_SRC_SEL; + val |= (index << CLK_SRC_SEL_SHIFT); + MODCLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + return (0); +} + +static int +aw_mmcclk_set_gate(struct clknode *clk, bool enable) +{ + struct aw_mmcclk_sc *sc; + uint32_t val; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(sc); + MODCLK_READ(sc, &val); + if (enable) + val |= SCLK_GATING; + else + val &= ~SCLK_GATING; + MODCLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + return (0); +} + +static int +aw_mmcclk_recalc_freq(struct clknode *clk, uint64_t *freq) +{ + struct aw_mmcclk_sc *sc; + uint32_t val, m, n; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(sc); + MODCLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + + n = 1 << ((val & CLK_RATIO_N) >> CLK_RATIO_N_SHIFT); + m = ((val & CLK_RATIO_M) >> CLK_RATIO_M_SHIFT) + 1; + + *freq = *freq / n / m; + + return (0); +} + +static int +aw_mmcclk_set_freq(struct clknode *clk, uint64_t fin, uint64_t *fout, + int flags, int *stop) +{ + struct aw_mmcclk_sc *sc; + uint32_t val, m, n, phase, ophase; + int parent_idx, error; + + sc = clknode_get_softc(clk); + + /* XXX + * The ophase/phase values should be set by the MMC driver, but + * there is currently no way to do this with the clk API + */ + if (*fout <= 400000) { + parent_idx = CLK_SRC_SEL_OSC24M; + ophase = 0; + phase = 0; + n = 2; + } else if (*fout <= 25000000) { + parent_idx = CLK_SRC_SEL_PLL6; + ophase = 0; + phase = 5; + n = 2; + } else if (*fout <= 50000000) { + parent_idx = CLK_SRC_SEL_PLL6; + ophase = 3; + phase = 5; + n = 0; + } else + return (ERANGE); + + /* Switch parent clock, if necessary */ + if (parent_idx != clknode_get_parent_idx(clk)) { + error = clknode_set_parent_by_idx(clk, parent_idx); + if (error != 0) + return (error); + + /* Fetch new input frequency */ + error = clknode_get_freq(clknode_get_parent(clk), &fin); + if (error != 0) + return (error); + } + + m = ((fin / (1 << n)) / *fout) - 1; + + DEVICE_LOCK(sc); + MODCLK_READ(sc, &val); + val &= ~(CLK_RATIO_N | CLK_RATIO_M | CLK_PHASE_CTR | + OUTPUT_CLK_PHASE_CTR); + val |= (n << CLK_RATIO_N_SHIFT); + val |= (m << CLK_RATIO_M_SHIFT); + val |= (phase << CLK_PHASE_CTR_SHIFT); + val |= (ophase << OUTPUT_CLK_PHASE_CTR_SHIFT); + MODCLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + *fout = fin / (1 << n) / (m + 1); + *stop = 1; + + return (0); +} + +static clknode_method_t aw_mmcclk_clknode_methods[] = { + /* Device interface */ + CLKNODEMETHOD(clknode_init, aw_mmcclk_init), + CLKNODEMETHOD(clknode_set_gate, aw_mmcclk_set_gate), + CLKNODEMETHOD(clknode_set_mux, aw_mmcclk_set_mux), + CLKNODEMETHOD(clknode_recalc_freq, aw_mmcclk_recalc_freq), + CLKNODEMETHOD(clknode_set_freq, aw_mmcclk_set_freq), + CLKNODEMETHOD_END +}; +DEFINE_CLASS_1(aw_mmcclk_clknode, aw_mmcclk_clknode_class, + aw_mmcclk_clknode_methods, sizeof(struct aw_mmcclk_sc), clknode_class); + +static int +aw_mmcclk_probe(device_t dev) +{ + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "Allwinner MMC Clock"); + return (BUS_PROBE_DEFAULT); +} + +static int +aw_mmcclk_attach(device_t dev) +{ + struct clknode_init_def def; + struct aw_mmcclk_sc *sc; + struct clkdom *clkdom; + struct clknode *clk; + const char **names; + uint32_t *indices; + clk_t clk_parent; + bus_addr_t paddr; + bus_size_t psize; + phandle_t node; + int error, nout, ncells, i; + + node = ofw_bus_get_node(dev); + + if (ofw_reg_to_paddr(node, 0, &paddr, &psize, NULL) != 0) { + device_printf(dev, "cannot parse 'reg' property\n"); + return (ENXIO); + } + + error = ofw_bus_parse_xref_list_get_length(node, "clocks", + "#clock-cells", &ncells); + if (error != 0 || ncells == 0) { + device_printf(dev, "couldn't find parent clocks\n"); + return (ENXIO); + } + + clkdom = clkdom_create(dev); + + nout = clk_parse_ofw_out_names(dev, node, &names, &indices); + if (nout == 0) { + device_printf(dev, "no output clocks found\n"); + error = ENXIO; + goto fail; + } + + memset(&def, 0, sizeof(def)); + def.name = names[0]; + def.id = 0; + def.parent_names = malloc(sizeof(char *) * ncells, M_OFWPROP, M_WAITOK); + for (i = 0; i < ncells; i++) { + error = clk_get_by_ofw_index(dev, i, &clk_parent); + if (error != 0) { + device_printf(dev, "cannot get clock %d\n", i); + goto fail; + } + def.parent_names[i] = clk_get_name(clk_parent); + clk_release(clk_parent); + } + def.parent_cnt = ncells; + def.flags = CLK_NODE_GLITCH_FREE; + + clk = clknode_create(clkdom, &aw_mmcclk_clknode_class, &def); + if (clk == NULL) { + device_printf(dev, "cannot create clknode\n"); + error = ENXIO; + goto fail; + } + + sc = clknode_get_softc(clk); + sc->reg = paddr; + sc->clkdev = device_get_parent(dev); + + clknode_register(clkdom, clk); + + if (clkdom_finit(clkdom) != 0) { + device_printf(dev, "cannot finalize clkdom initialization\n"); + error = ENXIO; + goto fail; + } + + if (bootverbose) + clkdom_dump(clkdom); + + return (0); + +fail: + return (error); +} + +static device_method_t aw_mmcclk_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_mmcclk_probe), + DEVMETHOD(device_attach, aw_mmcclk_attach), + + DEVMETHOD_END +}; + +static driver_t aw_mmcclk_driver = { + "aw_mmcclk", + aw_mmcclk_methods, + 0 +}; + +static devclass_t aw_mmcclk_devclass; + +EARLY_DRIVER_MODULE(aw_mmcclk, simplebus, aw_mmcclk_driver, + aw_mmcclk_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/arm/allwinner/clk/aw_modclk.c b/sys/arm/allwinner/clk/aw_modclk.c new file mode 100644 index 00000000000..f4755ea488d --- /dev/null +++ b/sys/arm/allwinner/clk/aw_modclk.c @@ -0,0 +1,318 @@ +/*- + * Copyright (c) 2016 Jared McNeill + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Allwinner module clocks + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include "clkdev_if.h" + +#define SCLK_GATING (1 << 31) +#define CLK_SRC_SEL (0x3 << 24) +#define CLK_SRC_SEL_SHIFT 24 +#define CLK_SRC_SEL_MAX 0x3 +#define CLK_RATIO_N (0x3 << 16) +#define CLK_RATIO_N_SHIFT 16 +#define CLK_RATIO_N_MAX 0x3 +#define CLK_RATIO_M (0x1f << 0) +#define CLK_RATIO_M_SHIFT 0 +#define CLK_RATIO_M_MAX 0x1f + +static struct ofw_compat_data compat_data[] = { + { "allwinner,sun4i-a10-mod0-clk", 1 }, + { NULL, 0 } +}; + +struct aw_modclk_sc { + device_t clkdev; + bus_addr_t reg; +}; + +#define MODCLK_READ(sc, val) CLKDEV_READ_4((sc)->clkdev, (sc)->reg, (val)) +#define MODCLK_WRITE(sc, val) CLKDEV_WRITE_4((sc)->clkdev, (sc)->reg, (val)) +#define DEVICE_LOCK(sc) CLKDEV_DEVICE_LOCK((sc)->clkdev) +#define DEVICE_UNLOCK(sc) CLKDEV_DEVICE_UNLOCK((sc)->clkdev) + +static int +aw_modclk_init(struct clknode *clk, device_t dev) +{ + struct aw_modclk_sc *sc; + uint32_t val, index; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(sc); + MODCLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + + index = (val & CLK_SRC_SEL) >> CLK_SRC_SEL_SHIFT; + + clknode_init_parent_idx(clk, index); + return (0); +} + +static int +aw_modclk_set_mux(struct clknode *clk, int index) +{ + struct aw_modclk_sc *sc; + uint32_t val; + + sc = clknode_get_softc(clk); + + if (index < 0 || index > CLK_SRC_SEL_MAX) + return (ERANGE); + + DEVICE_LOCK(sc); + MODCLK_READ(sc, &val); + val &= ~CLK_SRC_SEL; + val |= (index << CLK_SRC_SEL_SHIFT); + MODCLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + return (0); +} + +static int +aw_modclk_set_gate(struct clknode *clk, bool enable) +{ + struct aw_modclk_sc *sc; + uint32_t val; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(sc); + MODCLK_READ(sc, &val); + if (enable) + val |= SCLK_GATING; + else + val &= ~SCLK_GATING; + MODCLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + return (0); +} + +static int +aw_modclk_recalc_freq(struct clknode *clk, uint64_t *freq) +{ + struct aw_modclk_sc *sc; + uint32_t val, m, n; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(sc); + MODCLK_READ(sc, &val); + DEVICE_UNLOCK(sc); + + n = 1 << ((val & CLK_RATIO_N) >> CLK_RATIO_N_SHIFT); + m = ((val & CLK_RATIO_M) >> CLK_RATIO_M_SHIFT) + 1; + + *freq = *freq / n / m; + + return (0); +} + +static int +aw_modclk_set_freq(struct clknode *clk, uint64_t fin, uint64_t *fout, + int flags, int *stop) +{ + struct aw_modclk_sc *sc; + uint32_t val, m, n, best_m, best_n; + uint64_t cur_freq; + int64_t best_diff, cur_diff; + + sc = clknode_get_softc(clk); + best_n = best_m = 0; + best_diff = (int64_t)*fout; + + for (n = 0; n <= CLK_RATIO_N_MAX; n++) + for (m = 0; m <= CLK_RATIO_M_MAX; m++) { + cur_freq = fin / (1 << n) / (m + 1); + cur_diff = (int64_t)*fout - cur_freq; + if (cur_diff >= 0 && cur_diff < best_diff) { + best_diff = cur_diff; + best_m = m; + best_n = n; + } + } + + if (best_diff == (int64_t)*fout) + return (ERANGE); + + DEVICE_LOCK(sc); + MODCLK_READ(sc, &val); + val &= ~(CLK_RATIO_N | CLK_RATIO_M); + val |= (best_n << CLK_RATIO_N_SHIFT); + val |= (best_m << CLK_RATIO_M_SHIFT); + MODCLK_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + *fout = fin / (1 << best_n) / (best_m + 1); + *stop = 1; + + return (0); +} + +static clknode_method_t aw_modclk_clknode_methods[] = { + /* Device interface */ + CLKNODEMETHOD(clknode_init, aw_modclk_init), + CLKNODEMETHOD(clknode_set_gate, aw_modclk_set_gate), + CLKNODEMETHOD(clknode_set_mux, aw_modclk_set_mux), + CLKNODEMETHOD(clknode_recalc_freq, aw_modclk_recalc_freq), + CLKNODEMETHOD(clknode_set_freq, aw_modclk_set_freq), + CLKNODEMETHOD_END +}; +DEFINE_CLASS_1(aw_modclk_clknode, aw_modclk_clknode_class, + aw_modclk_clknode_methods, sizeof(struct aw_modclk_sc), clknode_class); + +static int +aw_modclk_probe(device_t dev) +{ + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "Allwinner Module Clock"); + return (BUS_PROBE_DEFAULT); +} + +static int +aw_modclk_attach(device_t dev) +{ + struct clknode_init_def def; + struct aw_modclk_sc *sc; + struct clkdom *clkdom; + struct clknode *clk; + clk_t clk_parent; + bus_addr_t paddr; + bus_size_t psize; + phandle_t node; + int error, ncells, i; + + node = ofw_bus_get_node(dev); + + if (ofw_reg_to_paddr(node, 0, &paddr, &psize, NULL) != 0) { + device_printf(dev, "cannot parse 'reg' property\n"); + return (ENXIO); + } + + error = ofw_bus_parse_xref_list_get_length(node, "clocks", + "#clock-cells", &ncells); + if (error != 0) { + device_printf(dev, "cannot get clock count\n"); + return (error); + } + + clkdom = clkdom_create(dev); + + memset(&def, 0, sizeof(def)); + error = clk_parse_ofw_clk_name(dev, node, &def.name); + if (error != 0) { + device_printf(dev, "cannot parse clock name\n"); + error = ENXIO; + goto fail; + } + def.id = 1; + def.parent_names = malloc(sizeof(char *) * ncells, M_OFWPROP, M_WAITOK); + for (i = 0; i < ncells; i++) { + error = clk_get_by_ofw_index(dev, i, &clk_parent); + if (error != 0) { + device_printf(dev, "cannot get clock %d\n", i); + goto fail; + } + def.parent_names[i] = clk_get_name(clk_parent); + clk_release(clk_parent); + } + def.parent_cnt = ncells; + + clk = clknode_create(clkdom, &aw_modclk_clknode_class, &def); + if (clk == NULL) { + device_printf(dev, "cannot create clknode\n"); + error = ENXIO; + goto fail; + } + + sc = clknode_get_softc(clk); + sc->reg = paddr; + sc->clkdev = device_get_parent(dev); + + clknode_register(clkdom, clk); + + if (clkdom_finit(clkdom) != 0) { + device_printf(dev, "cannot finalize clkdom initialization\n"); + error = ENXIO; + goto fail; + } + + if (bootverbose) + clkdom_dump(clkdom); + + return (0); + +fail: + return (error); +} + +static device_method_t aw_modclk_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_modclk_probe), + DEVMETHOD(device_attach, aw_modclk_attach), + + DEVMETHOD_END +}; + +static driver_t aw_modclk_driver = { + "aw_modclk", + aw_modclk_methods, + 0 +}; + +static devclass_t aw_modclk_devclass; + +EARLY_DRIVER_MODULE(aw_modclk, simplebus, aw_modclk_driver, + aw_modclk_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/arm/allwinner/clk/aw_oscclk.c b/sys/arm/allwinner/clk/aw_oscclk.c new file mode 100644 index 00000000000..313111fa651 --- /dev/null +++ b/sys/arm/allwinner/clk/aw_oscclk.c @@ -0,0 +1,132 @@ +/*- + * Copyright (c) 2016 Jared McNeill + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Allwinner oscillator clock + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + +static int +aw_oscclk_probe(device_t dev) +{ + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (!ofw_bus_is_compatible(dev, "allwinner,sun4i-a10-osc-clk")) + return (ENXIO); + + device_set_desc(dev, "Allwinner Oscillator Clock"); + return (BUS_PROBE_DEFAULT); +} + +static int +aw_oscclk_attach(device_t dev) +{ + struct clk_fixed_def def; + struct clkdom *clkdom; + phandle_t node; + uint32_t freq; + int error; + + node = ofw_bus_get_node(dev); + + if (OF_getencprop(node, "clock-frequency", &freq, sizeof(freq)) <= 0) { + device_printf(dev, "missing clock-frequency property\n"); + error = ENXIO; + goto fail; + } + + clkdom = clkdom_create(dev); + + memset(&def, 0, sizeof(def)); + def.clkdef.id = 1; + def.freq = freq; + error = clk_parse_ofw_clk_name(dev, node, &def.clkdef.name); + if (error != 0) { + device_printf(dev, "cannot parse clock name\n"); + error = ENXIO; + goto fail; + } + + error = clknode_fixed_register(clkdom, &def); + if (error != 0) { + device_printf(dev, "cannot register fixed clock\n"); + error = ENXIO; + goto fail; + } + + if (clkdom_finit(clkdom) != 0) { + device_printf(dev, "cannot finalize clkdom initialization\n"); + error = ENXIO; + goto fail; + } + + if (bootverbose) + clkdom_dump(clkdom); + + free(__DECONST(char *, def.clkdef.name), M_OFWPROP); + + return (0); + +fail: + free(__DECONST(char *, def.clkdef.name), M_OFWPROP); + return (error); +} + +static device_method_t aw_oscclk_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_oscclk_probe), + DEVMETHOD(device_attach, aw_oscclk_attach), + + DEVMETHOD_END +}; + +static driver_t aw_oscclk_driver = { + "aw_oscclk", + aw_oscclk_methods, + 0, +}; + +static devclass_t aw_oscclk_devclass; + +EARLY_DRIVER_MODULE(aw_oscclk, simplebus, aw_oscclk_driver, + aw_oscclk_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/arm/allwinner/clk/aw_pll.c b/sys/arm/allwinner/clk/aw_pll.c new file mode 100644 index 00000000000..2e676465f9a --- /dev/null +++ b/sys/arm/allwinner/clk/aw_pll.c @@ -0,0 +1,757 @@ +/*- + * Copyright (c) 2016 Jared McNeill + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Allwinner PLL clock + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include + +#include "clkdev_if.h" + +#define AW_PLL_ENABLE (1 << 31) + +#define A10_PLL1_OUT_EXT_DIVP (0x3 << 16) +#define A10_PLL1_OUT_EXT_DIVP_SHIFT 16 +#define A10_PLL1_FACTOR_N (0x1f << 8) +#define A10_PLL1_FACTOR_N_SHIFT 8 +#define A10_PLL1_FACTOR_K (0x3 << 4) +#define A10_PLL1_FACTOR_K_SHIFT 4 +#define A10_PLL1_FACTOR_M (0x3 << 0) +#define A10_PLL1_FACTOR_M_SHIFT 0 + +#define A10_PLL2_POST_DIV (0xf << 26) +#define A10_PLL2_POST_DIV_SHIFT 26 +#define A10_PLL2_FACTOR_N (0x7f << 8) +#define A10_PLL2_FACTOR_N_SHIFT 8 +#define A10_PLL2_PRE_DIV (0x1f << 0) +#define A10_PLL2_PRE_DIV_SHIFT 0 + +#define A10_PLL3_MODE_SEL (0x1 << 15) +#define A10_PLL3_MODE_SEL_FRACT (0 << 15) +#define A10_PLL3_MODE_SEL_INT (1 << 15) +#define A10_PLL3_FUNC_SET (0x1 << 14) +#define A10_PLL3_FUNC_SET_270MHZ (0 << 14) +#define A10_PLL3_FUNC_SET_297MHZ (1 << 14) +#define A10_PLL3_FACTOR_M (0x7f << 0) +#define A10_PLL3_FACTOR_M_SHIFT 0 +#define A10_PLL3_REF_FREQ 3000000 + +#define A10_PLL5_OUT_EXT_DIVP (0x3 << 16) +#define A10_PLL5_OUT_EXT_DIVP_SHIFT 16 +#define A10_PLL5_FACTOR_N (0x1f << 8) +#define A10_PLL5_FACTOR_N_SHIFT 8 +#define A10_PLL5_FACTOR_K (0x3 << 4) +#define A10_PLL5_FACTOR_K_SHIFT 4 +#define A10_PLL5_FACTOR_M1 (0x3 << 2) +#define A10_PLL5_FACTOR_M1_SHIFT 2 +#define A10_PLL5_FACTOR_M (0x3 << 0) +#define A10_PLL5_FACTOR_M_SHIFT 0 + +#define A10_PLL6_BYPASS_EN (1 << 30) +#define A10_PLL6_SATA_CLK_EN (1 << 14) +#define A10_PLL6_FACTOR_N (0x1f << 8) +#define A10_PLL6_FACTOR_N_SHIFT 8 +#define A10_PLL6_FACTOR_K (0x3 << 4) +#define A10_PLL6_FACTOR_K_SHIFT 4 +#define A10_PLL6_FACTOR_M (0x3 << 0) +#define A10_PLL6_FACTOR_M_SHIFT 0 + +#define A10_PLL2_POST_DIV (0xf << 26) + +#define A31_PLL1_LOCK (1 << 28) +#define A31_PLL1_CPU_SIGMA_DELTA_EN (1 << 24) +#define A31_PLL1_FACTOR_N (0x1f << 8) +#define A31_PLL1_FACTOR_N_SHIFT 8 +#define A31_PLL1_FACTOR_K (0x3 << 4) +#define A31_PLL1_FACTOR_K_SHIFT 4 +#define A31_PLL1_FACTOR_M (0x3 << 0) +#define A31_PLL1_FACTOR_M_SHIFT 0 + +#define A31_PLL6_LOCK (1 << 28) +#define A31_PLL6_BYPASS_EN (1 << 25) +#define A31_PLL6_CLK_OUT_EN (1 << 24) +#define A31_PLL6_24M_OUT_EN (1 << 18) +#define A31_PLL6_24M_POST_DIV (0x3 << 16) +#define A31_PLL6_24M_POST_DIV_SHIFT 16 +#define A31_PLL6_FACTOR_N (0x1f << 8) +#define A31_PLL6_FACTOR_N_SHIFT 8 +#define A31_PLL6_FACTOR_K (0x3 << 4) +#define A31_PLL6_FACTOR_K_SHIFT 4 +#define A31_PLL6_DEFAULT_N 0x18 +#define A31_PLL6_DEFAULT_K 0x1 +#define A31_PLL6_TIMEOUT 10 + +#define CLKID_A10_PLL3_1X 0 +#define CLKID_A10_PLL3_2X 1 + +#define CLKID_A10_PLL5_DDR 0 +#define CLKID_A10_PLL5_OTHER 1 + +#define CLKID_A10_PLL6_SATA 0 +#define CLKID_A10_PLL6_OTHER 1 +#define CLKID_A10_PLL6 2 +#define CLKID_A10_PLL6_DIV_4 3 + +#define CLKID_A31_PLL6 0 +#define CLKID_A31_PLL6_X2 1 + +enum aw_pll_type { + AWPLL_A10_PLL1 = 1, + AWPLL_A10_PLL2, + AWPLL_A10_PLL3, + AWPLL_A10_PLL5, + AWPLL_A10_PLL6, + AWPLL_A31_PLL1, + AWPLL_A31_PLL6, +}; + +struct aw_pll_sc { + enum aw_pll_type type; + device_t clkdev; + bus_addr_t reg; + int id; +}; + +struct aw_pll_funcs { + int (*recalc)(struct aw_pll_sc *, uint64_t *); + int (*set_freq)(struct aw_pll_sc *, uint64_t, uint64_t *, int); + int (*init)(device_t, bus_addr_t, struct clknode_init_def *); +}; + +#define PLL_READ(sc, val) CLKDEV_READ_4((sc)->clkdev, (sc)->reg, (val)) +#define PLL_WRITE(sc, val) CLKDEV_WRITE_4((sc)->clkdev, (sc)->reg, (val)) +#define DEVICE_LOCK(sc) CLKDEV_DEVICE_LOCK((sc)->clkdev) +#define DEVICE_UNLOCK(sc) CLKDEV_DEVICE_UNLOCK((sc)->clkdev) + +static int +a10_pll1_recalc(struct aw_pll_sc *sc, uint64_t *freq) +{ + uint32_t val, m, n, k, p; + + DEVICE_LOCK(sc); + PLL_READ(sc, &val); + DEVICE_UNLOCK(sc); + + p = 1 << ((val & A10_PLL1_OUT_EXT_DIVP) >> A10_PLL1_OUT_EXT_DIVP_SHIFT); + m = ((val & A10_PLL1_FACTOR_M) >> A10_PLL1_FACTOR_M_SHIFT) + 1; + k = ((val & A10_PLL1_FACTOR_K) >> A10_PLL1_FACTOR_K_SHIFT) + 1; + n = (val & A10_PLL1_FACTOR_N) >> A10_PLL1_FACTOR_N_SHIFT; + if (n == 0) + n = 1; + + *freq = (*freq * n * k) / (m * p); + + return (0); +} + +static int +a10_pll2_recalc(struct aw_pll_sc *sc, uint64_t *freq) +{ + uint32_t val, post_div, n, pre_div; + + DEVICE_LOCK(sc); + PLL_READ(sc, &val); + DEVICE_UNLOCK(sc); + + post_div = (val & A10_PLL2_POST_DIV) >> A10_PLL2_POST_DIV_SHIFT; + if (post_div == 0) + post_div = 1; + n = (val & A10_PLL2_FACTOR_N) >> A10_PLL2_FACTOR_N_SHIFT; + if (n == 0) + n = 1; + pre_div = (val & A10_PLL2_PRE_DIV) >> A10_PLL2_PRE_DIV_SHIFT; + if (pre_div == 0) + pre_div = 1; + + switch (sc->id) { + case SUN4I_A10_PLL2_1X: + *freq = (*freq * 2 * n) / pre_div / post_div / 2; + break; + case SUN4I_A10_PLL2_2X: + *freq = (*freq * 2 * n) / pre_div / 4; + break; + case SUN4I_A10_PLL2_4X: + *freq = (*freq * 2 * n) / pre_div / 2; + break; + case SUN4I_A10_PLL2_8X: + *freq = (*freq * 2 * n) / pre_div; + break; + default: + return (EINVAL); + } + + return (0); +} + +static int +a10_pll2_set_freq(struct aw_pll_sc *sc, uint64_t fin, uint64_t *fout, + int flags) +{ + uint32_t val, post_div, n, pre_div; + + if (sc->id != SUN4I_A10_PLL2_1X) + return (ENXIO); + + /* + * Audio Codec needs PLL2-1X to be either 24576000 or 22579200. + * + * PLL2-1X output frequency is (48MHz * n) / pre_div / post_div / 2. + * To get as close as possible to the desired rate, we use a + * pre-divider of 21 and a post-divider of 4. With these values, + * a multiplier of 86 or 79 gets us close to the target rates. + */ + if (*fout != 24576000 && *fout != 22579200) + return (EINVAL); + + pre_div = 21; + post_div = 4; + n = (*fout * pre_div * post_div * 2) / (2 * fin); + + DEVICE_LOCK(sc); + PLL_READ(sc, &val); + val &= ~(A10_PLL2_POST_DIV | A10_PLL2_FACTOR_N | A10_PLL2_PRE_DIV); + val |= (post_div << A10_PLL2_POST_DIV_SHIFT); + val |= (n << A10_PLL2_FACTOR_N_SHIFT); + val |= (pre_div << A10_PLL2_PRE_DIV_SHIFT); + PLL_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + return (0); +} + +static int +a10_pll3_recalc(struct aw_pll_sc *sc, uint64_t *freq) +{ + uint32_t val, m; + + DEVICE_LOCK(sc); + PLL_READ(sc, &val); + DEVICE_UNLOCK(sc); + + if ((val & A10_PLL3_MODE_SEL) == A10_PLL3_MODE_SEL_INT) { + /* In integer mode, output is 3MHz * m */ + m = (val & A10_PLL3_FACTOR_M) >> A10_PLL3_FACTOR_M_SHIFT; + *freq = A10_PLL3_REF_FREQ * m; + } else { + /* In fractional mode, output is either 270MHz or 297MHz */ + if ((val & A10_PLL3_FUNC_SET) == A10_PLL3_FUNC_SET_270MHZ) + *freq = 270000000; + else + *freq = 297000000; + } + + if (sc->id == CLKID_A10_PLL3_2X) + *freq *= 2; + + return (0); +} + +static int +a10_pll3_set_freq(struct aw_pll_sc *sc, uint64_t fin, uint64_t *fout, + int flags) +{ + uint32_t val, m, mode, func; + + m = *fout / A10_PLL3_REF_FREQ; + if (sc->id == CLKID_A10_PLL3_2X) + m /= 2; + + mode = A10_PLL3_MODE_SEL_INT; + func = 0; + *fout = m * A10_PLL3_REF_FREQ; + if (sc->id == CLKID_A10_PLL3_2X) + *fout *= 2; + + DEVICE_LOCK(sc); + PLL_READ(sc, &val); + val &= ~(A10_PLL3_MODE_SEL | A10_PLL3_FUNC_SET | A10_PLL3_FACTOR_M); + val |= mode; + val |= func; + val |= (m << A10_PLL3_FACTOR_M_SHIFT); + PLL_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + return (0); +} + +static int +a10_pll3_init(device_t dev, bus_addr_t reg, struct clknode_init_def *def) +{ + uint32_t val; + + /* Allow changing PLL frequency while enabled */ + def->flags = CLK_NODE_GLITCH_FREE; + + /* Set PLL to 297MHz */ + CLKDEV_DEVICE_LOCK(dev); + CLKDEV_READ_4(dev, reg, &val); + val &= ~(A10_PLL3_MODE_SEL | A10_PLL3_FUNC_SET | A10_PLL3_FACTOR_M); + val |= A10_PLL3_MODE_SEL_FRACT; + val |= A10_PLL3_FUNC_SET_297MHZ; + CLKDEV_WRITE_4(dev, reg, val); + CLKDEV_DEVICE_UNLOCK(dev); + + return (0); +} + +static int +a10_pll5_recalc(struct aw_pll_sc *sc, uint64_t *freq) +{ + uint32_t val, m, n, k, p; + + DEVICE_LOCK(sc); + PLL_READ(sc, &val); + DEVICE_UNLOCK(sc); + + p = 1 << ((val & A10_PLL5_OUT_EXT_DIVP) >> A10_PLL5_OUT_EXT_DIVP_SHIFT); + m = ((val & A10_PLL5_FACTOR_M) >> A10_PLL5_FACTOR_M_SHIFT) + 1; + k = ((val & A10_PLL5_FACTOR_K) >> A10_PLL5_FACTOR_K_SHIFT) + 1; + n = (val & A10_PLL5_FACTOR_N) >> A10_PLL5_FACTOR_N_SHIFT; + if (n == 0) + return (ENXIO); + + switch (sc->id) { + case CLKID_A10_PLL5_DDR: + *freq = (*freq * n * k) / m; + break; + case CLKID_A10_PLL5_OTHER: + *freq = (*freq * n * k) / p; + break; + default: + return (ENXIO); + } + + return (0); +} + +static int +a10_pll6_init(device_t dev, bus_addr_t reg, struct clknode_init_def *def) +{ + uint32_t val, m, n, k; + + /* + * SATA needs PLL6 to be a 100MHz clock. + * + * The SATA output frequency is (24MHz * n * k) / m / 6. + * To get to 100MHz, k & m must be equal and n must be 25. + */ + m = k = 0; + n = 25; + + CLKDEV_DEVICE_LOCK(dev); + CLKDEV_READ_4(dev, reg, &val); + val &= ~(A10_PLL6_FACTOR_N | A10_PLL6_FACTOR_K | A10_PLL6_FACTOR_M); + val &= ~A10_PLL6_BYPASS_EN; + val |= A10_PLL6_SATA_CLK_EN; + val |= (n << A10_PLL6_FACTOR_N_SHIFT); + val |= (k << A10_PLL6_FACTOR_K_SHIFT); + val |= (m << A10_PLL6_FACTOR_M_SHIFT); + CLKDEV_WRITE_4(dev, reg, val); + CLKDEV_DEVICE_UNLOCK(dev); + + return (0); +} + +static int +a10_pll6_recalc(struct aw_pll_sc *sc, uint64_t *freq) +{ + uint32_t val, m, k, n; + + DEVICE_LOCK(sc); + PLL_READ(sc, &val); + DEVICE_UNLOCK(sc); + + m = ((val & A10_PLL6_FACTOR_M) >> A10_PLL6_FACTOR_M_SHIFT) + 1; + k = ((val & A10_PLL6_FACTOR_K) >> A10_PLL6_FACTOR_K_SHIFT) + 1; + n = (val & A10_PLL6_FACTOR_N) >> A10_PLL6_FACTOR_N_SHIFT; + if (n == 0) + return (ENXIO); + + switch (sc->id) { + case CLKID_A10_PLL6_SATA: + *freq = (*freq * n * k) / m / 6; + break; + case CLKID_A10_PLL6_OTHER: + *freq = (*freq * n * k) / 2; + break; + case CLKID_A10_PLL6: + *freq = (*freq * n * k); + break; + case CLKID_A10_PLL6_DIV_4: + *freq = (*freq * n * k) / 4; + break; + default: + return (ENXIO); + } + + return (0); +} + +static int +a10_pll6_set_freq(struct aw_pll_sc *sc, uint64_t fin, uint64_t *fout, + int flags) +{ + if (sc->id != CLKID_A10_PLL6_SATA) + return (ENXIO); + + /* PLL6 SATA output has been set to 100MHz in a10_pll6_init */ + if (*fout != 100000000) + return (ERANGE); + + return (0); +} + +static int +a31_pll1_recalc(struct aw_pll_sc *sc, uint64_t *freq) +{ + uint32_t val, m, n, k; + + DEVICE_LOCK(sc); + PLL_READ(sc, &val); + DEVICE_UNLOCK(sc); + + m = ((val & A31_PLL1_FACTOR_M) >> A31_PLL1_FACTOR_M_SHIFT) + 1; + k = ((val & A31_PLL1_FACTOR_K) >> A31_PLL1_FACTOR_K_SHIFT) + 1; + n = ((val & A31_PLL1_FACTOR_N) >> A31_PLL1_FACTOR_N_SHIFT) + 1; + + *freq = (*freq * n * k) / m; + + return (0); +} + +static int +a31_pll6_init(device_t dev, bus_addr_t reg, struct clknode_init_def *def) +{ + uint32_t val; + int retry; + + if (def->id != CLKID_A31_PLL6) + return (0); + + /* + * The datasheet recommends that PLL6 output should be fixed to + * 600MHz. + */ + CLKDEV_DEVICE_LOCK(dev); + CLKDEV_READ_4(dev, reg, &val); + val &= ~(A31_PLL6_FACTOR_N | A31_PLL6_FACTOR_K | A31_PLL6_BYPASS_EN); + val |= (A31_PLL6_DEFAULT_N << A31_PLL6_FACTOR_N_SHIFT); + val |= (A31_PLL6_DEFAULT_K << A31_PLL6_FACTOR_K_SHIFT); + CLKDEV_WRITE_4(dev, reg, val); + + /* Wait for PLL to become stable */ + for (retry = A31_PLL6_TIMEOUT; retry > 0; retry--) { + CLKDEV_READ_4(dev, reg, &val); + if ((val & A31_PLL6_LOCK) == A31_PLL6_LOCK) + break; + DELAY(1); + } + + CLKDEV_DEVICE_UNLOCK(dev); + + if (retry == 0) + return (ETIMEDOUT); + + return (0); +} + +static int +a31_pll6_recalc(struct aw_pll_sc *sc, uint64_t *freq) +{ + uint32_t val, k, n; + + DEVICE_LOCK(sc); + PLL_READ(sc, &val); + DEVICE_UNLOCK(sc); + + k = ((val & A10_PLL6_FACTOR_K) >> A10_PLL6_FACTOR_K_SHIFT) + 1; + n = ((val & A10_PLL6_FACTOR_N) >> A10_PLL6_FACTOR_N_SHIFT) + 1; + + switch (sc->id) { + case CLKID_A31_PLL6: + *freq = (*freq * n * k) / 2; + break; + case CLKID_A31_PLL6_X2: + *freq = *freq * n * k; + break; + default: + return (ENXIO); + } + + return (0); +} + +#define PLL(_type, _recalc, _set_freq, _init) \ + [(_type)] = { \ + .recalc = (_recalc), \ + .set_freq = (_set_freq), \ + .init = (_init) \ + } + +static struct aw_pll_funcs aw_pll_func[] = { + PLL(AWPLL_A10_PLL1, a10_pll1_recalc, NULL, NULL), + PLL(AWPLL_A10_PLL2, a10_pll2_recalc, a10_pll2_set_freq, NULL), + PLL(AWPLL_A10_PLL3, a10_pll3_recalc, a10_pll3_set_freq, a10_pll3_init), + PLL(AWPLL_A10_PLL5, a10_pll5_recalc, NULL, NULL), + PLL(AWPLL_A10_PLL6, a10_pll6_recalc, a10_pll6_set_freq, a10_pll6_init), + PLL(AWPLL_A31_PLL1, a31_pll1_recalc, NULL, NULL), + PLL(AWPLL_A31_PLL6, a31_pll6_recalc, NULL, a31_pll6_init), +}; + +static struct ofw_compat_data compat_data[] = { + { "allwinner,sun4i-a10-pll1-clk", AWPLL_A10_PLL1 }, + { "allwinner,sun4i-a10-pll2-clk", AWPLL_A10_PLL2 }, + { "allwinner,sun4i-a10-pll3-clk", AWPLL_A10_PLL3 }, + { "allwinner,sun4i-a10-pll5-clk", AWPLL_A10_PLL5 }, + { "allwinner,sun4i-a10-pll6-clk", AWPLL_A10_PLL6 }, + { "allwinner,sun6i-a31-pll1-clk", AWPLL_A31_PLL1 }, + { "allwinner,sun6i-a31-pll6-clk", AWPLL_A31_PLL6 }, + { NULL, 0 } +}; + +static int +aw_pll_init(struct clknode *clk, device_t dev) +{ + clknode_init_parent_idx(clk, 0); + return (0); +} + +static int +aw_pll_set_gate(struct clknode *clk, bool enable) +{ + struct aw_pll_sc *sc; + uint32_t val; + + sc = clknode_get_softc(clk); + + DEVICE_LOCK(sc); + PLL_READ(sc, &val); + if (enable) + val |= AW_PLL_ENABLE; + else + val &= ~AW_PLL_ENABLE; + PLL_WRITE(sc, val); + DEVICE_UNLOCK(sc); + + return (0); +} + +static int +aw_pll_recalc(struct clknode *clk, uint64_t *freq) +{ + struct aw_pll_sc *sc; + + sc = clknode_get_softc(clk); + + if (aw_pll_func[sc->type].recalc == NULL) + return (ENXIO); + + return (aw_pll_func[sc->type].recalc(sc, freq)); +} + +static int +aw_pll_set_freq(struct clknode *clk, uint64_t fin, uint64_t *fout, + int flags, int *stop) +{ + struct aw_pll_sc *sc; + + sc = clknode_get_softc(clk); + + *stop = 1; + + if (aw_pll_func[sc->type].set_freq == NULL) + return (ENXIO); + + return (aw_pll_func[sc->type].set_freq(sc, fin, fout, flags)); +} + +static clknode_method_t aw_pll_clknode_methods[] = { + /* Device interface */ + CLKNODEMETHOD(clknode_init, aw_pll_init), + CLKNODEMETHOD(clknode_set_gate, aw_pll_set_gate), + CLKNODEMETHOD(clknode_recalc_freq, aw_pll_recalc), + CLKNODEMETHOD(clknode_set_freq, aw_pll_set_freq), + CLKNODEMETHOD_END +}; + +DEFINE_CLASS_1(aw_pll_clknode, aw_pll_clknode_class, aw_pll_clknode_methods, + sizeof(struct aw_pll_sc), clknode_class); + +static int +aw_pll_create(device_t dev, bus_addr_t paddr, struct clkdom *clkdom, + const char *pclkname, const char *clkname, int index) +{ + enum aw_pll_type type; + struct clknode_init_def clkdef; + struct aw_pll_sc *sc; + struct clknode *clk; + int error; + + type = ofw_bus_search_compatible(dev, compat_data)->ocd_data; + + memset(&clkdef, 0, sizeof(clkdef)); + clkdef.id = index; + clkdef.name = clkname; + if (pclkname != NULL) { + clkdef.parent_names = malloc(sizeof(char *), M_OFWPROP, + M_WAITOK); + clkdef.parent_names[0] = pclkname; + clkdef.parent_cnt = 1; + } else + clkdef.parent_cnt = 0; + + if (aw_pll_func[type].init != NULL) { + error = aw_pll_func[type].init(device_get_parent(dev), + paddr, &clkdef); + if (error != 0) { + device_printf(dev, "clock %s init failed\n", clkname); + return (error); + } + } + + clk = clknode_create(clkdom, &aw_pll_clknode_class, &clkdef); + if (clk == NULL) { + device_printf(dev, "cannot create clock node\n"); + return (ENXIO); + } + sc = clknode_get_softc(clk); + sc->clkdev = device_get_parent(dev); + sc->reg = paddr; + sc->type = type; + sc->id = clkdef.id; + + clknode_register(clkdom, clk); + + free(__DECONST(char *, clkdef.parent_names), M_OFWPROP); + + return (0); +} + +static int +aw_pll_probe(device_t dev) +{ + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "Allwinner PLL Clock"); + return (BUS_PROBE_DEFAULT); +} + +static int +aw_pll_attach(device_t dev) +{ + struct clkdom *clkdom; + const char **names; + int index, nout, error; + clk_t clk_parent; + uint32_t *indices; + bus_addr_t paddr; + bus_size_t psize; + phandle_t node; + + node = ofw_bus_get_node(dev); + + if (ofw_reg_to_paddr(node, 0, &paddr, &psize, NULL) != 0) { + device_printf(dev, "couldn't parse 'reg' property\n"); + return (ENXIO); + } + + clkdom = clkdom_create(dev); + + nout = clk_parse_ofw_out_names(dev, node, &names, &indices); + if (nout == 0) { + device_printf(dev, "no clock outputs found\n"); + error = ENOENT; + goto fail; + } + + if (clk_get_by_ofw_index(dev, 0, &clk_parent) != 0) + clk_parent = NULL; + + for (index = 0; index < nout; index++) { + error = aw_pll_create(dev, paddr, clkdom, + clk_parent ? clk_get_name(clk_parent) : NULL, + names[index], nout == 1 ? 1 : index); + if (error) + goto fail; + } + + if (clkdom_finit(clkdom) != 0) { + device_printf(dev, "cannot finalize clkdom initialization\n"); + error = ENXIO; + goto fail; + } + + if (bootverbose) + clkdom_dump(clkdom); + + return (0); + +fail: + return (error); +} + +static device_method_t aw_pll_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_pll_probe), + DEVMETHOD(device_attach, aw_pll_attach), + + DEVMETHOD_END +}; + +static driver_t aw_pll_driver = { + "aw_pll", + aw_pll_methods, + 0, +}; + +static devclass_t aw_pll_devclass; + +EARLY_DRIVER_MODULE(aw_pll, simplebus, aw_pll_driver, + aw_pll_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/arm/allwinner/clk/aw_usbclk.c b/sys/arm/allwinner/clk/aw_usbclk.c new file mode 100644 index 00000000000..bac99910865 --- /dev/null +++ b/sys/arm/allwinner/clk/aw_usbclk.c @@ -0,0 +1,246 @@ +/*- + * Copyright (c) 2016 Jared McNeill + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Allwinner USB clocks + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include "clkdev_if.h" +#include "hwreset_if.h" + +#define A10_SCLK_GATING_USBPHY (1 << 8) +#define A10_SCLK_GATING_OHCI1 (1 << 7) +#define A10_SCLK_GATING_OHCI0 (1 << 6) + +#define USBPHY2_RST (1 << 2) +#define USBPHY1_RST (1 << 1) +#define USBPHY0_RST (1 << 0) + +enum aw_usbclk_type { + AW_A10_USBCLK = 1, + AW_A31_USBCLK, +}; + +static struct ofw_compat_data compat_data[] = { + { "allwinner,sun4i-a10-usb-clk", AW_A10_USBCLK }, + { "allwinner,sun6i-a31-usb-clk", AW_A31_USBCLK }, + { NULL, 0 } +}; + +/* Clock indices for A10, as there is no clock-indices property in the DT */ +static uint32_t aw_usbclk_indices_a10[] = { 6, 7, 8 }; + +struct aw_usbclk_softc { + bus_addr_t reg; +}; + +static int +aw_usbclk_hwreset_assert(device_t dev, intptr_t id, bool value) +{ + struct aw_usbclk_softc *sc; + uint32_t mask; + device_t pdev; + int error; + + sc = device_get_softc(dev); + pdev = device_get_parent(dev); + + mask = USBPHY0_RST << id; + + CLKDEV_DEVICE_LOCK(pdev); + error = CLKDEV_MODIFY_4(pdev, sc->reg, mask, value ? 0 : mask); + CLKDEV_DEVICE_UNLOCK(pdev); + + return (error); +} + +static int +aw_usbclk_hwreset_is_asserted(device_t dev, intptr_t id, bool *value) +{ + struct aw_usbclk_softc *sc; + uint32_t mask, val; + device_t pdev; + int error; + + sc = device_get_softc(dev); + pdev = device_get_parent(dev); + + mask = USBPHY0_RST << id; + + CLKDEV_DEVICE_LOCK(pdev); + error = CLKDEV_READ_4(pdev, sc->reg, &val); + CLKDEV_DEVICE_UNLOCK(pdev); + + if (error) + return (error); + + *value = (val & mask) != 0 ? false : true; + + return (0); +} + +static int +aw_usbclk_create(device_t dev, bus_addr_t paddr, struct clkdom *clkdom, + const char *pclkname, const char *clkname, int index) +{ + const char *parent_names[1] = { pclkname }; + struct clk_gate_def def; + + memset(&def, 0, sizeof(def)); + def.clkdef.id = index; + def.clkdef.name = clkname; + def.clkdef.parent_names = parent_names; + def.clkdef.parent_cnt = 1; + def.offset = paddr; + def.shift = index; + def.mask = 1; + def.on_value = 1; + def.off_value = 0; + + return (clknode_gate_register(clkdom, &def)); +} + +static int +aw_usbclk_probe(device_t dev) +{ + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "Allwinner USB Clocks"); + return (BUS_PROBE_DEFAULT); +} + +static int +aw_usbclk_attach(device_t dev) +{ + struct aw_usbclk_softc *sc; + struct clkdom *clkdom; + const char **names; + int index, nout, error; + enum aw_usbclk_type type; + uint32_t *indices; + clk_t clk_parent; + bus_size_t psize; + phandle_t node; + + sc = device_get_softc(dev); + node = ofw_bus_get_node(dev); + indices = NULL; + type = ofw_bus_search_compatible(dev, compat_data)->ocd_data; + + if (ofw_reg_to_paddr(node, 0, &sc->reg, &psize, NULL) != 0) { + device_printf(dev, "cannot parse 'reg' property\n"); + return (ENXIO); + } + + clkdom = clkdom_create(dev); + + nout = clk_parse_ofw_out_names(dev, node, &names, &indices); + if (nout == 0) { + device_printf(dev, "no clock outputs found\n"); + error = ENOENT; + goto fail; + } + + if (indices == NULL && type == AW_A10_USBCLK) + indices = aw_usbclk_indices_a10; + + error = clk_get_by_ofw_index(dev, 0, &clk_parent); + if (error != 0) { + device_printf(dev, "cannot parse clock parent\n"); + return (ENXIO); + } + + for (index = 0; index < nout; index++) { + error = aw_usbclk_create(dev, sc->reg, clkdom, + clk_get_name(clk_parent), names[index], + indices != NULL ? indices[index] : index); + if (error) + goto fail; + } + + if (clkdom_finit(clkdom) != 0) { + device_printf(dev, "cannot finalize clkdom initialization\n"); + error = ENXIO; + goto fail; + } + + if (bootverbose) + clkdom_dump(clkdom); + + hwreset_register_ofw_provider(dev); + + return (0); + +fail: + return (error); +} + +static device_method_t aw_usbclk_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, aw_usbclk_probe), + DEVMETHOD(device_attach, aw_usbclk_attach), + + /* Reset interface */ + DEVMETHOD(hwreset_assert, aw_usbclk_hwreset_assert), + DEVMETHOD(hwreset_is_asserted, aw_usbclk_hwreset_is_asserted), + + DEVMETHOD_END +}; + +static driver_t aw_usbclk_driver = { + "aw_usbclk", + aw_usbclk_methods, + sizeof(struct aw_usbclk_softc) +}; + +static devclass_t aw_usbclk_devclass; + +EARLY_DRIVER_MODULE(aw_usbclk, simplebus, aw_usbclk_driver, + aw_usbclk_devclass, 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/arm/allwinner/files.allwinner b/sys/arm/allwinner/files.allwinner index a13b637705d..34daf434392 100644 --- a/sys/arm/allwinner/files.allwinner +++ b/sys/arm/allwinner/files.allwinner @@ -2,7 +2,6 @@ kern/kern_clocksource.c standard arm/allwinner/a10_ahci.c optional ahci -arm/allwinner/a10_clk.c standard arm/allwinner/a10_codec.c optional sound arm/allwinner/a10_common.c standard arm/allwinner/a10_dmac.c standard @@ -25,3 +24,21 @@ arm/allwinner/a10_fb.c optional vt arm/allwinner/a10_hdmi.c optional hdmi arm/allwinner/a10_hdmiaudio.c optional hdmi sound arm/arm/hdmi_if.m optional hdmi + +arm/allwinner/aw_reset.c standard +arm/allwinner/aw_ccu.c standard +arm/allwinner/clk/aw_ahbclk.c standard +arm/allwinner/clk/aw_apbclk.c standard +arm/allwinner/clk/aw_axiclk.c standard +arm/allwinner/clk/aw_codecclk.c standard +arm/allwinner/clk/aw_cpuclk.c standard +arm/allwinner/clk/aw_debeclk.c standard +arm/allwinner/clk/aw_gate.c standard +arm/allwinner/clk/aw_gmacclk.c standard +arm/allwinner/clk/aw_hdmiclk.c standard +arm/allwinner/clk/aw_lcdclk.c standard +arm/allwinner/clk/aw_modclk.c standard +arm/allwinner/clk/aw_mmcclk.c standard +arm/allwinner/clk/aw_oscclk.c standard +arm/allwinner/clk/aw_pll.c standard +arm/allwinner/clk/aw_usbclk.c standard diff --git a/sys/arm/allwinner/if_emac.c b/sys/arm/allwinner/if_emac.c index 268f5cb8a69..cb9892f32cb 100644 --- a/sys/arm/allwinner/if_emac.c +++ b/sys/arm/allwinner/if_emac.c @@ -78,11 +78,12 @@ __FBSDID("$FreeBSD$"); #include +#include + #include "miibus_if.h" #include "gpio_if.h" -#include "a10_clk.h" #include "a10_sramc.h" struct emac_softc { @@ -94,6 +95,7 @@ struct emac_softc { struct resource *emac_res; struct resource *emac_irq; void *emac_intrhand; + clk_t emac_clk; int emac_if_flags; struct mtx emac_mtx; struct callout emac_tick_ch; @@ -110,7 +112,7 @@ static int emac_shutdown(device_t); static int emac_suspend(device_t); static int emac_resume(device_t); -static void emac_sys_setup(void); +static int emac_sys_setup(struct emac_softc *); static void emac_reset(struct emac_softc *); static void emac_init_locked(struct emac_softc *); @@ -138,14 +140,27 @@ static int sysctl_hw_emac_proc_limit(SYSCTL_HANDLER_ARGS); #define EMAC_WRITE_REG(sc, reg, val) \ bus_space_write_4(sc->emac_tag, sc->emac_handle, reg, val) -static void -emac_sys_setup(void) +static int +emac_sys_setup(struct emac_softc *sc) { + int error; /* Activate EMAC clock. */ - a10_clk_emac_activate(); + error = clk_get_by_ofw_index(sc->emac_dev, 0, &sc->emac_clk); + if (error != 0) { + device_printf(sc->emac_dev, "cannot get clock\n"); + return (error); + } + error = clk_enable(sc->emac_clk); + if (error != 0) { + device_printf(sc->emac_dev, "cannot enable clock\n"); + return (error); + } + /* Map sram. */ a10_map_to_emac(); + + return (0); } static void @@ -784,6 +799,9 @@ emac_detach(device_t dev) bus_generic_detach(sc->emac_dev); } + if (sc->emac_clk != NULL) + clk_disable(sc->emac_clk); + if (sc->emac_res != NULL) bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->emac_res); @@ -897,7 +915,10 @@ emac_attach(device_t dev) } } /* Setup EMAC */ - emac_sys_setup(); + error = emac_sys_setup(sc); + if (error != 0) + goto fail; + emac_reset(sc); ifp = sc->emac_ifp = if_alloc(IFT_ETHER); diff --git a/sys/arm/conf/A10 b/sys/arm/conf/A10 index 31a5e2407f5..fc39be7deaa 100644 --- a/sys/arm/conf/A10 +++ b/sys/arm/conf/A10 @@ -51,6 +51,13 @@ options WITNESS_SKIPSPIN # Don't run witness on spinlocks for speed #options BOOTP_NFSV3 #options BOOTP_WIRED_TO=emac0 +# EXT_RESOURCES pseudo devices +options EXT_RESOURCES +device clk +device phy +device hwreset +device regulator + # MMC/SD/SDIO Card slot support device mmc # mmc/sd bus device mmcsd # mmc/sd flash cards diff --git a/sys/arm/conf/A20 b/sys/arm/conf/A20 index ad3b29adf74..8f56523c2c6 100644 --- a/sys/arm/conf/A20 +++ b/sys/arm/conf/A20 @@ -55,6 +55,13 @@ options WITNESS_SKIPSPIN # Don't run witness on spinlocks for speed #options BOOTP_NFSV3 #options BOOTP_WIRED_TO=dwc0 +# EXT_RESOURCES pseudo devices +options EXT_RESOURCES +device clk +device phy +device hwreset +device regulator + # Interrupt controller device gic diff --git a/sys/boot/fdt/dts/arm/bananapi.dts b/sys/boot/fdt/dts/arm/bananapi.dts index a1017203c81..03a9fef7265 100644 --- a/sys/boot/fdt/dts/arm/bananapi.dts +++ b/sys/boot/fdt/dts/arm/bananapi.dts @@ -26,83 +26,21 @@ * $FreeBSD$ */ -/dts-v1/; - -#include "sun7i-a20.dtsi" - -#include +#include "sun7i-a20-bananapi.dts" +#include "sun7i-a20-hdmi.dtsi" / { - model = "LeMaker Banana Pi"; - compatible = "lemaker,bananapi", "allwinner,sun7i-a20"; - - memory { - device_type = "memory"; - reg = < 0x40000000 0x40000000 >; /* 1GB RAM */ - }; - - aliases { - soc = &SOC; - UART0 = &UART0; - }; - - SOC: a20 { - - usb1: usb@01c14000 { + soc@01c00000 { + hdmi@01c16000 { status = "okay"; }; - usb2: usb@01c1c000 { - status = "okay"; - }; - - UART0: serial@01c28000 { - status = "okay"; - }; - - mmc0: mmc@01c0f000 { - status = "okay"; - }; - - gmac@01c50000 { - phy-mode = "rgmii-bpi"; - status = "okay"; - pinctrl-names = "default"; - pinctrl-0 = <&gmac_pins_rgmii>; - }; - - ahci: sata@01c18000 { - status = "okay"; - }; - - hdmi: hdmi@01c16000 { - compatible = "allwinner,sun7i-a20-hdmi"; - reg = <0x01c16000 0x1000>; - }; - hdmiaudio { - compatible = "allwinner,sun7i-a20-hdmiaudio"; + status = "okay"; }; - - fb: fb@01e60000 { - compatible = "allwinner,sun7i-a20-fb"; - reg = <0x01e60000 0x10000>, /* DEBE0 */ - <0x01c0c000 0x1000>; /* LCD0 */ - }; - }; - - leds { - compatible = "gpio-leds"; - - green { - label = "bananapi:green:usr"; - gpios = <&pio 7 24 GPIO_ACTIVE_HIGH>; - }; - }; - - chosen { - bootargs = "-v"; - stdin = "UART0"; - stdout = "UART0"; }; }; + +&mmc0_pins_a { + allwinner,pull = ; +}; diff --git a/sys/boot/fdt/dts/arm/cubieboard.dts b/sys/boot/fdt/dts/arm/cubieboard.dts index a21ea4d7465..a3095b98199 100644 --- a/sys/boot/fdt/dts/arm/cubieboard.dts +++ b/sys/boot/fdt/dts/arm/cubieboard.dts @@ -26,56 +26,4 @@ * $FreeBSD$ */ -/dts-v1/; - -#include "sun4i-a10.dtsi" - -/ { - model = "Cubietech Cubieboard"; - - memory { - device_type = "memory"; - reg = < 0x40000000 0x40000000 >; /* 1GB RAM */ - }; - - aliases { - soc = &SOC; - UART0 = &UART0; - }; - - SOC: a10 { - - usb1: usb@01c14000 { - status = "okay"; - }; - - usb2: usb@01c1c000 { - status = "okay"; - }; - - UART0: serial@01c28000 { - status = "okay"; - }; - - mmc0: mmc@01c0f000 { - status = "okay"; - }; - - emac@01c0b000 { - status = "okay"; - pinctrl-names = "default"; - pinctrl-0 = <&emac_pins>; - }; - - ahci: sata@01c18000 { - status = "okay"; - }; - }; - - chosen { - bootargs = "-v"; - stdin = "UART0"; - stdout = "UART0"; - }; -}; - +#include "sun4i-a10-cubieboard.dts" diff --git a/sys/boot/fdt/dts/arm/cubieboard2.dts b/sys/boot/fdt/dts/arm/cubieboard2.dts index f9e1eb8e774..a240e84a1a7 100644 --- a/sys/boot/fdt/dts/arm/cubieboard2.dts +++ b/sys/boot/fdt/dts/arm/cubieboard2.dts @@ -32,13 +32,6 @@ / { soc@01c00000 { - ccm@01c20000 { - compatible = "allwinner,sun4i-ccm"; - #address-cells = <1>; - #size-cells = <1>; - reg = < 0x01c20000 0x400 >; - }; - hdmi@01c16000 { status = "okay"; }; diff --git a/sys/boot/fdt/dts/arm/olimex-a20-som-evb.dts b/sys/boot/fdt/dts/arm/olimex-a20-som-evb.dts index ffe0777b5c0..5d99f30254f 100644 --- a/sys/boot/fdt/dts/arm/olimex-a20-som-evb.dts +++ b/sys/boot/fdt/dts/arm/olimex-a20-som-evb.dts @@ -27,14 +27,16 @@ */ #include "sun7i-a20-olimex-som-evb.dts" +#include "sun7i-a20-hdmi.dtsi" / { soc@01c00000 { - ccm@01c20000 { - compatible = "allwinner,sun4i-ccm"; - #address-cells = <1>; - #size-cells = <1>; - reg = < 0x01c20000 0x400 >; + hdmi@01c16000 { + status = "okay"; + }; + + hdmiaudio { + status = "okay"; }; }; }; diff --git a/sys/boot/fdt/dts/arm/olinuxino-lime.dts b/sys/boot/fdt/dts/arm/olinuxino-lime.dts index b965788991e..cd39f66c1f8 100644 --- a/sys/boot/fdt/dts/arm/olinuxino-lime.dts +++ b/sys/boot/fdt/dts/arm/olinuxino-lime.dts @@ -27,14 +27,3 @@ */ #include "sun4i-a10-olinuxino-lime.dts" - -/ { - soc@01c00000 { - ccm@01c20000 { - compatible = "allwinner,sun4i-ccm"; - #address-cells = <1>; - #size-cells = <1>; - reg = < 0x01c20000 0x400 >; - }; - }; -}; diff --git a/sys/boot/fdt/dts/arm/sun4i-a10.dtsi b/sys/boot/fdt/dts/arm/sun4i-a10.dtsi deleted file mode 100644 index 417ea229c99..00000000000 --- a/sys/boot/fdt/dts/arm/sun4i-a10.dtsi +++ /dev/null @@ -1,153 +0,0 @@ -/*- - * Copyright (c) 2014 Ganbold Tsagaankhuu - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -#include - -/ { - compatible = "allwinner,sun4i-a10"; - #address-cells = <1>; - #size-cells = <1>; - - interrupt-parent = <&AINTC>; - - aliases { - soc = &SOC; - }; - - SOC: a10 { - #address-cells = <1>; - #size-cells = <1>; - compatible = "simple-bus"; - ranges; - bus-frequency = <0>; - - AINTC: interrupt-controller@01c20400 { - compatible = "allwinner,sun4i-a10-ic"; - interrupt-controller; - #address-cells = <0>; - #interrupt-cells = <1>; - reg = < 0x01c20400 0x400 >; - }; - - sramc@01c00000 { - compatible = "allwinner,sun4i-sramc"; - #address-cells = <1>; - #size-cells = <1>; - reg = < 0x01c00000 0x1000 >; - }; - - ccm@01c20000 { - compatible = "allwinner,sun4i-ccm"; - #address-cells = <1>; - #size-cells = <1>; - reg = < 0x01c20000 0x400 >; - }; - - timer@01c20c00 { - compatible = "allwinner,sun4i-a10-timer"; - reg = <0x01c20c00 0x90>; - interrupts = < 22 >; - interrupt-parent = <&AINTC>; - clock-frequency = < 24000000 >; - }; - - watchdog@01c20c90 { - compatible = "allwinner,sun4i-wdt"; - reg = <0x01c20c90 0x08>; - }; - - - GPIO: gpio@01c20800 { - #gpio-cells = <3>; - compatible = "allwinner,sun4i-a10-pinctrl"; - gpio-controller; - reg =< 0x01c20800 0x400 >; - interrupts = < 28 >; - interrupt-parent = <&AINTC>; - - emac_pins: emac@0 { - allwinner,pins = "PA0", "PA1", "PA2", - "PA3", "PA4", "PA5", "PA6", - "PA7", "PA8", "PA9", "PA10", - "PA11", "PA12", "PA13", "PA14", - "PA15", "PA16"; - allwinner,function = "emac"; - allwinner,drive = ; - allwinner,pull = ; - }; - }; - - usb1: usb@01c14000 { - compatible = "allwinner,sun4i-a10-ehci", "generic-ehci"; - reg = <0x01c14000 0x1000>; - interrupts = < 39 >; - interrupt-parent = <&AINTC>; - }; - - usb2: usb@01c1c000 { - compatible = "allwinner,sun4i-a10-ehci", "generic-ehci"; - reg = <0x01c1c000 0x1000>; - interrupts = < 40 >; - interrupt-parent = <&AINTC>; - }; - - mmc0: mmc@01c0f000 { - compatible = "allwinner,sun4i-a10-mmc"; - reg = <0x01c0f000 0x1000>; - interrupts = <32>; - interrupt-parent = <&AINTC>; - status = "disabled"; - }; - - sata@01c18000 { - compatible = "allwinner,sun4i-a10-ahci"; - reg = <0x01c18000 0x1000>; - interrupts = <56>; - interrupt-parent = <&AINTC>; - status = "disabled"; - }; - - UART0: serial@01c28000 { - compatible = "snps,dw-apb-uart"; - reg = <0x01c28000 0x400>; - reg-shift = <2>; - interrupts = <1>; - interrupt-parent = <&AINTC>; - current-speed = <115200>; - clock-frequency = < 24000000 >; - }; - - emac@01c0b000 { - compatible = "allwinner,sun4i-a10-emac"; - reg = <0x01c0b000 0x1000>; - interrupts = <55>; - interrupt-parent = <&AINTC>; - }; - }; -}; - diff --git a/sys/boot/fdt/dts/arm/sun7i-a20-hdmi.dtsi b/sys/boot/fdt/dts/arm/sun7i-a20-hdmi.dtsi index 4d4a3c5ec40..2567be51da6 100644 --- a/sys/boot/fdt/dts/arm/sun7i-a20-hdmi.dtsi +++ b/sys/boot/fdt/dts/arm/sun7i-a20-hdmi.dtsi @@ -27,10 +27,65 @@ */ / { + clocks { + pll3: clk@01c20010 { + #clock-cells = <1>; + compatible = "allwinner,sun4i-a10-pll3-clk"; + reg = <0x01c20010 0x4>; + clock-output-names = "pll3-1x", "pll3-2x"; + }; + + pll7: clk@01c20030 { + #clock-cells = <1>; + compatible = "allwinner,sun4i-a10-pll3-clk"; + reg = <0x01c20030 0x4>; + clock-output-names = "pll7-1x", "pll7-2x"; + }; + + hdmi_clk: clk@01c20150 { + #clock-cells = <0>; + compatible = "allwinner,sun4i-a10-hdmi-clk"; + reg = <0x01c20150 0x4>; + clocks = <&pll3 0>, <&pll7 0>, <&pll3 1>, <&pll7 1>; + clock-output-names = "hdmi"; + }; + + lcd0_ch0_clk: clk@01c20118 { + #clock-cells = <0>; + #reset-cells = <0>; + compatible = "allwinner,sun4i-a10-lcd-ch0-clk"; + reg = <0x01c20118 0x4>; + clocks = <&pll3 0>, <&pll7 0>, <&pll3 1>, <&pll6 2>; + clock-output-names = "lcd0_ch0"; + }; + + lcd0_ch1_clk: clk@01c2012c { + #clock-cells = <1>; + compatible = "allwinner,sun4i-a10-lcd-ch1-clk"; + reg = <0x01c2012c 0x4>; + clocks = <&pll3 0>, <&pll7 0>, <&pll3 1>, <&pll7 1>; + clock-output-names = "lcd0_ch1_sclk1", + "lcd0_ch1_sclk2"; + }; + + de_be0_clk: clk@01c20104 { + #clock-cells = <0>; + #reset-cells = <0>; + compatible = "allwinner,sun4i-a10-de-be-clk"; + reg = <0x01c20104 0x4>; + clocks = <&pll3 0>, <&pll7 0>, <&pll5 1>; + clock-output-names = "de_be0"; + }; + }; + soc@01c00000 { hdmi: hdmi@01c16000 { compatible = "allwinner,sun7i-a20-hdmi"; reg = <0x01c16000 0x1000>; + clocks = <&ahb_gates 43>, <&hdmi_clk>, + <&lcd0_ch1_clk 1>; + clock-names = "ahb", "hdmi", + "lcd"; status = "disabled"; }; @@ -43,6 +98,14 @@ compatible = "allwinner,sun7i-a20-fb"; reg = <0x01e60000 0x10000>, /* DEBE0 */ <0x01c0c000 0x1000>; /* LCD0 */ + clocks = <&ahb_gates 44>, <&dram_gates 26>, + <&de_be0_clk>, <&ahb_gates 36>, + <&lcd0_ch1_clk 0>, <&lcd0_ch1_clk 1>; + clock-names = "ahb_de_be", "dram_de_be", + "de_be", "ahb_lcd", + "lcd_ch1_sclk1", "lcd_ch1_sclk2"; + resets = <&de_be0_clk>, <&lcd0_ch0_clk>; + reset-names = "de_be", "lcd"; }; }; }; diff --git a/sys/boot/fdt/dts/arm/sun7i-a20.dtsi b/sys/boot/fdt/dts/arm/sun7i-a20.dtsi deleted file mode 100644 index 43c6e4bd7fc..00000000000 --- a/sys/boot/fdt/dts/arm/sun7i-a20.dtsi +++ /dev/null @@ -1,217 +0,0 @@ -/*- - * Copyright (c) 2014 Ganbold Tsagaankhuu - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -#include -#include - -/ { - compatible = "allwinner,sun7i-a20"; - #address-cells = <1>; - #size-cells = <1>; - - interrupt-parent = <&GIC>; - - aliases { - soc = &SOC; - }; - - timer { - compatible = "arm,armv7-timer"; - interrupts = , - , - , - ; - }; - - SOC: a20 { - #address-cells = <1>; - #size-cells = <1>; - compatible = "simple-bus"; - ranges; - bus-frequency = <0>; - - GIC: interrupt-controller@01c81000 { - compatible = "arm,gic"; - reg = <0x01c81000 0x1000>, /* Distributor Registers */ - <0x01c82000 0x0100>, /* CPU Interface Registers */ - <0x01c84000 0x2000>, - <0x01c86000 0x2000>; - interrupt-controller; - #interrupt-cells = <3>; - interrupts = ; - }; - - sramc@01c00000 { - compatible = "allwinner,sun4i-sramc"; - #address-cells = <1>; - #size-cells = <1>; - reg = < 0x01c00000 0x1000 >; - }; - - cpu-cfg@01c25c00 { - compatible = "allwinner,sun7i-cpu-cfg"; - #address-cells = <1>; - #size-cells = <1>; - reg = < 0x01c25c00 0x400 >; - }; - - ccm@01c20000 { - compatible = "allwinner,sun4i-ccm"; - #address-cells = <1>; - #size-cells = <1>; - reg = < 0x01c20000 0x400 >; - }; - - timer@01c20c00 { - compatible = "allwinner,sun4i-a10-timer"; - reg = <0x01c20c00 0x90>; - interrupts = , - , - , - , - , - ; - interrupt-parent = <&GIC>; - clock-frequency = < 24000000 >; - }; - - watchdog@01c20c90 { - compatible = "allwinner,sun4i-a10-wdt"; - reg = <0x01c20c90 0x10>; - }; - - pio: gpio@01c20800 { - #gpio-cells = <3>; - compatible = "allwinner,sun7i-a20-pinctrl"; - gpio-controller; - reg =< 0x01c20800 0x400 >; - interrupts = ; - interrupt-controller; - #interrupt-cells = <2>; - interrupt-parent = <&GIC>; - - gmac_pins_mii: gmac_mii@0 { - allwinner,pins = "PA0", "PA1", "PA2", - "PA3", "PA4", "PA5", "PA6", - "PA7", "PA8", "PA9", "PA10", - "PA11", "PA12", "PA13", "PA14", - "PA15", "PA16"; - allwinner,function = "gmac"; - allwinner,drive = ; - allwinner,pull = ; - }; - - gmac_pins_rgmii: gmac_rgmii@0 { - allwinner,pins = "PA0", "PA1", "PA2", - "PA3", "PA4", "PA5", "PA6", - "PA7", "PA8", "PA10", - "PA11", "PA12", "PA13", - "PA15", "PA16"; - allwinner,function = "gmac"; - allwinner,drive = ; - allwinner,pull = ; - }; - - }; - - usb1: usb@01c14000 { - compatible = "allwinner,sun7i-a20-ehci", "generic-ehci"; - reg = <0x01c14000 0x1000>; - interrupts = ; - interrupt-parent = <&GIC>; - }; - - usb2: usb@01c1c000 { - compatible = "allwinner,sun7i-a20-ehci", "generic-ehci"; - reg = <0x01c1c000 0x1000>; - interrupts = ; - interrupt-parent = <&GIC>; - }; - - mmc0: mmc@01c0f000 { - compatible = "allwinner,sun5i-a13-mmc"; - reg = <0x01c0f000 0x1000>; - interrupts = ; - status = "disabled"; - }; - - sata@01c18000 { - compatible = "allwinner,sun4i-a10-ahci"; - reg = <0x01c18000 0x1000>; - interrupts = ; - interrupt-parent = <&GIC>; - status = "disabled"; - }; - - UART0: serial@01c28000 { - compatible = "snps,dw-apb-uart"; - reg = <0x01c28000 0x400>; - reg-shift = <2>; - interrupts = ; - current-speed = <115200>; - clock-frequency = < 24000000 >; - }; - - emac@01c0b000 { - compatible = "allwinner,sun4i-a10-emac"; - reg = <0x01c0b000 0x1000>; - interrupts = ; - interrupt-parent = <&GIC>; - status = "disabled"; - }; - - gmac@01c50000 { - compatible = "allwinner,sun7i-a20-gmac"; - reg = <0x01c50000 0x10000>; - interrupts = ; - interrupt-parent = <&GIC>; - snps,pbl = <2>; - snps,fixed-burst; - snps,force_sf_dma_mode; - status = "disabled"; - #address-cells = <1>; - #size-cells = <0>; - }; - - dma: dma-controller@01c02000 { - compatible = "allwinner,sun4i-a10-dma"; - reg = <0x01c02000 0x1000>; - interrupts = <27>; - interrupt-parent = <&GIC>; - }; - - codec: codec@01c22c00 { - compatible = "allwinner,sun7i-a20-codec"; - reg = <0x01c22c00 0x40>; - interrupts = <30>; - interrupt-parent = <&GIC>; - status = "disabled"; - }; - }; -}; - diff --git a/sys/dev/dwc/if_dwc.c b/sys/dev/dwc/if_dwc.c index f0548d8d2c0..1984c48f140 100644 --- a/sys/dev/dwc/if_dwc.c +++ b/sys/dev/dwc/if_dwc.c @@ -70,6 +70,11 @@ __FBSDID("$FreeBSD$"); #include #include +#ifdef EXT_RESOURCES +#include +#include +#endif + #include "if_dwc_if.h" #include "gpio_if.h" #include "miibus_if.h" @@ -1068,6 +1073,36 @@ dwc_reset(device_t dev) return (0); } +#ifdef EXT_RESOURCES +static int +dwc_clock_init(device_t dev) +{ + hwreset_t rst; + clk_t clk; + int error; + + /* Enable clock */ + if (clk_get_by_ofw_name(dev, "stmmaceth", &clk) == 0) { + error = clk_enable(clk); + if (error != 0) { + device_printf(dev, "could not enable main clock\n"); + return (error); + } + } + + /* De-assert reset */ + if (hwreset_get_by_ofw_name(dev, "stmmaceth", &rst) == 0) { + error = hwreset_deassert(rst); + if (error != 0) { + device_printf(dev, "could not de-assert reset\n"); + return (error); + } + } + + return (0); +} +#endif + static int dwc_probe(device_t dev) { @@ -1101,6 +1136,11 @@ dwc_attach(device_t dev) if (IF_DWC_INIT(dev) != 0) return (ENXIO); +#ifdef EXT_RESOURCES + if (dwc_clock_init(dev) != 0) + return (ENXIO); +#endif + if (bus_alloc_resources(dev, dwc_spec, sc->res)) { device_printf(dev, "could not allocate resources\n"); return (ENXIO); diff --git a/sys/dev/iicbus/twsi/a10_twsi.c b/sys/dev/iicbus/twsi/a10_twsi.c index 6ee13ad59fe..701153b1d43 100644 --- a/sys/dev/iicbus/twsi/a10_twsi.c +++ b/sys/dev/iicbus/twsi/a10_twsi.c @@ -48,8 +48,8 @@ __FBSDID("$FreeBSD$"); #include #include -#include -#include +#include +#include #include "iicbus_if.h" @@ -63,21 +63,16 @@ __FBSDID("$FreeBSD$"); #define TWI_EFR 0x1C #define TWI_LCR 0x20 -#define A10_I2C 1 -#define A31_I2C 2 - static struct ofw_compat_data compat_data[] = { - {"allwinner,sun4i-a10-i2c", A10_I2C}, - {"allwinner,sun6i-a31-i2c", A31_I2C}, + {"allwinner,sun4i-a10-i2c", 1}, + {"allwinner,sun6i-a31-i2c", 1}, {NULL, 0}, }; static int a10_twsi_probe(device_t dev) { - struct twsi_softc *sc; - sc = device_get_softc(dev); if (!ofw_bus_status_okay(dev)) return (ENXIO); @@ -92,29 +87,31 @@ static int a10_twsi_attach(device_t dev) { struct twsi_softc *sc; - int clk; + clk_t clk; + hwreset_t rst; + int error; sc = device_get_softc(dev); - /* Activate clock */ - switch (ofw_bus_search_compatible(dev, compat_data)->ocd_data) { -#if defined(SOC_ALLWINNER_A10) || defined(SOC_ALLWINNER_A20) - case A10_I2C: - clk = a10_clk_i2c_activate(device_get_unit(dev)); - break; -#endif -#if defined(SOC_ALLWINNER_A31) || defined(SOC_ALLWINNER_A31S) - case A31_I2C: - clk = a31_clk_i2c_activate(device_get_unit(dev)); - break; -#endif - default: - clk = -1; + /* De-assert reset */ + if (hwreset_get_by_ofw_idx(dev, 0, &rst) == 0) { + error = hwreset_deassert(rst); + if (error != 0) { + device_printf(dev, "could not de-assert reset\n"); + return (error); + } } - if (clk != 0) { - device_printf(dev, "could not activate i2c clock\n"); - return (ENXIO); + /* Activate clock */ + error = clk_get_by_ofw_index(dev, 0, &clk); + if (error != 0) { + device_printf(dev, "could not find clock\n"); + return (error); + } + error = clk_enable(clk); + if (error != 0) { + device_printf(dev, "could not enable clock\n"); + return (error); } sc->reg_data = TWI_DATA; From 8e7676ca3255a4e35397fa3383bb086366eb74f7 Mon Sep 17 00:00:00 2001 From: Gleb Smirnoff Date: Wed, 6 Apr 2016 23:17:05 +0000 Subject: [PATCH 018/159] Add optional configuration knob NANO_CUST_FILES_MTREE. If set, it will require an entry in custom mtree definition for every custom installed file. Obtained from: Netflix --- tools/tools/nanobsd/defaults.sh | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tools/tools/nanobsd/defaults.sh b/tools/tools/nanobsd/defaults.sh index d8812761545..3b28b392258 100755 --- a/tools/tools/nanobsd/defaults.sh +++ b/tools/tools/nanobsd/defaults.sh @@ -52,6 +52,11 @@ NANO_PACKAGE_LIST="*" # where package metadata gets placed NANO_PKG_META_BASE=/var/db +# Path to mtree file to apply to anything copied by cust_install_files(). +# If you specify this, the mtree file *must* have an entry for every file and +# directory located in Files. +#NANO_CUST_FILES_MTREE="" + # Object tree directory # default is subdir of /usr/obj #NANO_OBJ="" @@ -909,6 +914,10 @@ cust_allow_ssh_root ( ) ( cust_install_files ( ) ( cd "${NANO_TOOLS}/Files" find . -print | grep -Ev '/(CVS|\.svn|\.hg|\.git)' | cpio -Ldumpv ${NANO_WORLDDIR} + + if [ -f ${NANO_CUST_FILES_MTREE} ]; then + CR "mtree -eiU -p /" <${NANO_CUST_FILES_MTREE} + fi ) ####################################################################### From f33ff2af70f1b78bc83a5c655552b0f8100a6adf Mon Sep 17 00:00:00 2001 From: Allan Jude Date: Wed, 6 Apr 2016 23:21:44 +0000 Subject: [PATCH 019/159] Fix GELIBoot support for GELI sector size is > 512 Add support for 4k sector GELI encrypted partitions to the bootloader This is the default created by the installer Because the IV is different for each sector, and the XTS tweak carries forward you can not decrypt a partial sector if the starting offset is not 0 Make boot2 and the loader read in 4k aligned chunks Reviewed by: ed, oshogbo Sponsored by: ScaleEngine Inc. Differential Revision: https://reviews.freebsd.org/D5820 --- sys/boot/geli/geliboot.c | 64 ++++++++++++++++++----------- sys/boot/geli/geliboot.h | 3 ++ sys/boot/i386/libi386/biosdisk.c | 36 ++++++++++++++--- sys/boot/i386/zfsboot/zfsboot.c | 69 +++++++++++++++++++++++--------- 4 files changed, 124 insertions(+), 48 deletions(-) diff --git a/sys/boot/geli/geliboot.c b/sys/boot/geli/geliboot.c index becbc5f8c51..c7146162652 100644 --- a/sys/boot/geli/geliboot.c +++ b/sys/boot/geli/geliboot.c @@ -73,30 +73,34 @@ geli_taste(int read_func(void *vdev, void *priv, off_t off, void *buf, size_t bytes), struct dsk *dskp, daddr_t lastsector) { struct g_eli_metadata md; - u_char buf[DEV_BSIZE]; + u_char buf[DEV_GELIBOOT_BSIZE]; int error; + off_t alignsector; - error = read_func(NULL, dskp, (off_t) lastsector * DEV_BSIZE, &buf, - (size_t) DEV_BSIZE); + alignsector = (lastsector * DEV_BSIZE) & + ~(off_t)(DEV_GELIBOOT_BSIZE - 1); + error = read_func(NULL, dskp, alignsector, &buf, DEV_GELIBOOT_BSIZE); if (error != 0) { return (error); } - error = eli_metadata_decode(buf, &md); + /* Extract the last DEV_BSIZE bytes from the block. */ + error = eli_metadata_decode(buf + (DEV_GELIBOOT_BSIZE - DEV_BSIZE), + &md); if (error != 0) { return (error); } if ((md.md_flags & G_ELI_FLAG_ONETIME)) { - /* Swap device, skip it */ + /* Swap device, skip it. */ return (1); } if (!(md.md_flags & G_ELI_FLAG_BOOT)) { - /* Disk is not GELI boot device, skip it */ + /* Disk is not GELI boot device, skip it. */ return (1); } if (md.md_iterations < 0) { - /* XXX TODO: Support loading key files */ - /* Disk does not have a passphrase, skip it */ + /* XXX TODO: Support loading key files. */ + /* Disk does not have a passphrase, skip it. */ return (1); } geli_e = malloc(sizeof(struct geli_entry)); @@ -143,7 +147,7 @@ geli_attach(struct dsk *dskp, const char *passphrase) * Prepare Derived-Key from the user passphrase. */ if (geli_e->md.md_iterations < 0) { - /* XXX TODO: Support loading key files */ + /* XXX TODO: Support loading key files. */ return (1); } else if (geli_e->md.md_iterations == 0) { g_eli_crypto_hmac_update(&ctx, geli_e->md.md_salt, @@ -151,8 +155,8 @@ geli_attach(struct dsk *dskp, const char *passphrase) g_eli_crypto_hmac_update(&ctx, passphrase, strlen(passphrase)); } else if (geli_e->md.md_iterations > 0) { - printf("Calculating GELI Decryption Key disk%dp%d @ %lu " - "iterations...\n", dskp->unit, + printf("Calculating GELI Decryption Key disk%dp%d @ %lu" + " iterations...\n", dskp->unit, (dskp->slice > 0 ? dskp->slice : dskp->part), geli_e->md.md_iterations); u_char dkey[G_ELI_USERKEYLEN]; @@ -193,7 +197,7 @@ geli_attach(struct dsk *dskp, const char *passphrase) } bzero(&mkey, sizeof(mkey)); - /* Initialize the per-sector IV */ + /* Initialize the per-sector IV. */ switch (geli_e->sc.sc_ealgo) { case CRYPTO_AES_XTS: break; @@ -207,7 +211,7 @@ geli_attach(struct dsk *dskp, const char *passphrase) return (0); } - /* Disk not found */ + /* Disk not found. */ return (2); } @@ -229,35 +233,49 @@ geli_read(struct dsk *dskp, off_t offset, u_char *buf, size_t bytes) u_char iv[G_ELI_IVKEYLEN]; u_char *pbuf; int error; - off_t os; + off_t dstoff; uint64_t keyno; - size_t n, nb; + size_t n, nsec, secsize; struct g_eli_key gkey; + pbuf = buf; SLIST_FOREACH_SAFE(geli_e, &geli_head, entries, geli_e_tmp) { if (geli_same_device(geli_e, dskp) != 0) { continue; } - nb = bytes / DEV_BSIZE; - for (n = 0; n < nb; n++) { - os = offset + (n * DEV_BSIZE); - pbuf = buf + (n * DEV_BSIZE); + secsize = geli_e->sc.sc_sectorsize; + nsec = bytes / secsize; + if (nsec == 0) { + /* + * A read of less than the GELI sector size has been + * requested. The caller provided destination buffer may + * not be big enough to boost the read to a full sector, + * so just attempt to decrypt the truncated sector. + */ + secsize = bytes; + nsec = 1; + } - g_eli_crypto_ivgen(&geli_e->sc, os, iv, G_ELI_IVKEYLEN); + for (n = 0, dstoff = offset; n < nsec; n++, dstoff += secsize) { - /* Get the key that corresponds to this offset */ - keyno = (os >> G_ELI_KEY_SHIFT) / DEV_BSIZE; + g_eli_crypto_ivgen(&geli_e->sc, dstoff, iv, + G_ELI_IVKEYLEN); + + /* Get the key that corresponds to this offset. */ + keyno = (dstoff >> G_ELI_KEY_SHIFT) / secsize; g_eli_key_fill(&geli_e->sc, &gkey, keyno); error = geliboot_crypt(geli_e->sc.sc_ealgo, 0, pbuf, - DEV_BSIZE, gkey.gek_key, geli_e->sc.sc_ekeylen, iv); + secsize, gkey.gek_key, + geli_e->sc.sc_ekeylen, iv); if (error != 0) { bzero(&gkey, sizeof(gkey)); printf("Failed to decrypt in geli_read()!"); return (error); } + pbuf += secsize; } bzero(&gkey, sizeof(gkey)); return (0); diff --git a/sys/boot/geli/geliboot.h b/sys/boot/geli/geliboot.h index 36bebcc38f2..61e64f1931e 100644 --- a/sys/boot/geli/geliboot.h +++ b/sys/boot/geli/geliboot.h @@ -55,6 +55,9 @@ #ifndef DEV_BSIZE #define DEV_BSIZE 512 #endif +#ifndef DEV_GELIBOOT_BSIZE +#define DEV_GELIBOOT_BSIZE 4096 +#endif #ifndef MIN #define MIN(a,b) (((a) < (b)) ? (a) : (b)) diff --git a/sys/boot/i386/libi386/biosdisk.c b/sys/boot/i386/libi386/biosdisk.c index 1c54769f48e..38ca85d909b 100644 --- a/sys/boot/i386/libi386/biosdisk.c +++ b/sys/boot/i386/libi386/biosdisk.c @@ -706,15 +706,38 @@ bd_read(struct disk_devdesc *dev, daddr_t dblk, int blks, caddr_t dest) { #ifdef LOADER_GELI_SUPPORT struct dsk dskp; - off_t p_off; - int err, n; + off_t p_off, diff; + daddr_t alignlba; + int err, n, alignblks; + char *tmpbuf; /* if we already know there is no GELI, skip the rest */ if (geli_status[dev->d_unit][dev->d_slice] != ISGELI_YES) return (bd_io(dev, dblk, blks, dest, 0)); if (geli_status[dev->d_unit][dev->d_slice] == ISGELI_YES) { - err = bd_io(dev, dblk, blks, dest, 0); + /* + * Align reads to DEV_GELIBOOT_BSIZE bytes because partial + * sectors cannot be decrypted. Round the requested LBA down to + * nearest multiple of DEV_GELIBOOT_BSIZE bytes. + */ + alignlba = dblk & + ~(daddr_t)((DEV_GELIBOOT_BSIZE / BIOSDISK_SECSIZE) - 1); + /* + * Round number of blocks to read up to nearest multiple of + * DEV_GELIBOOT_BSIZE + */ + alignblks = blks + (dblk - alignlba) + + ((DEV_GELIBOOT_BSIZE / BIOSDISK_SECSIZE) - 1) & + ~(int)((DEV_GELIBOOT_BSIZE / BIOSDISK_SECSIZE) - 1); + diff = (dblk - alignlba) * BIOSDISK_SECSIZE; + /* + * Use a temporary buffer here because the buffer provided by + * the caller may be too small. + */ + tmpbuf = alloca(alignblks * BIOSDISK_SECSIZE); + + err = bd_io(dev, alignlba, alignblks, tmpbuf, 0); if (err) return (err); @@ -726,13 +749,14 @@ bd_read(struct disk_devdesc *dev, daddr_t dblk, int blks, caddr_t dest) dskp.start = dev->d_offset; /* GELI needs the offset relative to the partition start */ - p_off = dblk - dskp.start; + p_off = alignlba - dskp.start; - err = geli_read(&dskp, p_off * BIOSDISK_SECSIZE, dest, - blks * BIOSDISK_SECSIZE); + err = geli_read(&dskp, p_off * BIOSDISK_SECSIZE, tmpbuf, + alignblks * BIOSDISK_SECSIZE); if (err) return (err); + bcopy(tmpbuf + diff, dest, blks * BIOSDISK_SECSIZE); return (0); } #endif /* LOADER_GELI_SUPPORT */ diff --git a/sys/boot/i386/zfsboot/zfsboot.c b/sys/boot/i386/zfsboot/zfsboot.c index 4b371dce6b1..71d6cfa67dc 100644 --- a/sys/boot/i386/zfsboot/zfsboot.c +++ b/sys/boot/i386/zfsboot/zfsboot.c @@ -46,18 +46,20 @@ __FBSDID("$FreeBSD$"); #include "libzfs.h" -#define ARGS 0x900 -#define NOPT 14 -#define NDEV 3 +#define ARGS 0x900 +#define NOPT 14 +#define NDEV 3 -#define BIOS_NUMDRIVES 0x475 -#define DRV_HARD 0x80 -#define DRV_MASK 0x7f +#define BIOS_NUMDRIVES 0x475 +#define DRV_HARD 0x80 +#define DRV_MASK 0x7f -#define TYPE_AD 0 -#define TYPE_DA 1 -#define TYPE_MAXHARD TYPE_DA -#define TYPE_FD 2 +#define TYPE_AD 0 +#define TYPE_DA 1 +#define TYPE_MAXHARD TYPE_DA +#define TYPE_FD 2 + +#define DEV_GELIBOOT_BSIZE 4096 extern uint32_t _end; @@ -104,13 +106,13 @@ static struct bios_smap smap; /* * The minimum amount of memory to reserve in bios_extmem for the heap. */ -#define HEAP_MIN (3 * 1024 * 1024) +#define HEAP_MIN (3 * 1024 * 1024) static char *heap_next; static char *heap_end; /* Buffers that must not span a 64k boundary. */ -#define READ_BUF_SIZE 8192 +#define READ_BUF_SIZE 8192 struct dmadat { char rdbuf[READ_BUF_SIZE]; /* for reading large things */ char secbuf[READ_BUF_SIZE]; /* for MBR/disklabel */ @@ -198,8 +200,9 @@ static int vdev_read(vdev_t *vdev, void *priv, off_t off, void *buf, size_t bytes) { char *p; - daddr_t lba; - unsigned int nb; + daddr_t lba, alignlba; + off_t alignoff, diff; + unsigned int nb, alignnb; struct dsk *dsk = (struct dsk *) priv; if ((off & (DEV_BSIZE - 1)) || (bytes & (DEV_BSIZE - 1))) @@ -208,24 +211,52 @@ vdev_read(vdev_t *vdev, void *priv, off_t off, void *buf, size_t bytes) p = buf; lba = off / DEV_BSIZE; lba += dsk->start; + /* Align reads to 4k else 4k sector GELIs will not decrypt. */ + alignoff = off & ~ (off_t)(DEV_GELIBOOT_BSIZE - 1); + /* Round LBA down to nearest multiple of DEV_GELIBOOT_BSIZE bytes. */ + alignlba = alignoff / DEV_BSIZE; + /* + * The read must be aligned to DEV_GELIBOOT_BSIZE bytes relative to the + * start of the GELI partition, not the start of the actual disk. + */ + alignlba += dsk->start; + diff = (lba - alignlba) * DEV_BSIZE; + while (bytes > 0) { nb = bytes / DEV_BSIZE; if (nb > READ_BUF_SIZE / DEV_BSIZE) nb = READ_BUF_SIZE / DEV_BSIZE; - if (drvread(dsk, dmadat->rdbuf, lba, nb)) + /* + * Ensure that the read size plus the leading offset does not + * exceed the size of the read buffer. + */ + if (nb * DEV_BSIZE + diff > READ_BUF_SIZE) + nb -= diff / DEV_BSIZE; + /* + * Round the number of blocks to read up to the nearest multiple + * of DEV_GELIBOOT_BSIZE. + */ + alignnb = nb + (diff / DEV_BSIZE) + + (DEV_GELIBOOT_BSIZE / DEV_BSIZE - 1) & ~ + (unsigned int)(DEV_GELIBOOT_BSIZE / DEV_BSIZE - 1); + + if (drvread(dsk, dmadat->rdbuf, alignlba, alignnb)) return -1; #ifdef LOADER_GELI_SUPPORT /* decrypt */ if (is_geli(dsk) == 0) { - if (geli_read(dsk, ((lba - dsk->start) * DEV_BSIZE), - dmadat->rdbuf, nb * DEV_BSIZE)) - return (-1); + if (geli_read(dsk, ((alignlba - dsk->start) * + DEV_BSIZE), dmadat->rdbuf, alignnb * DEV_BSIZE)) + return (-1); } #endif - memcpy(p, dmadat->rdbuf, nb * DEV_BSIZE); + memcpy(p, dmadat->rdbuf + diff, nb * DEV_BSIZE); p += nb * DEV_BSIZE; lba += nb; + alignlba += alignnb; bytes -= nb * DEV_BSIZE; + /* Don't need the leading offset after the first block. */ + diff = 0; } return 0; From 6ed02c7b474bc73b4a644041ed4297b41752f31e Mon Sep 17 00:00:00 2001 From: Cy Schubert Date: Thu, 7 Apr 2016 01:42:09 +0000 Subject: [PATCH 020/159] Add DTrace probes for packets flagged as bad by ipfilter. All probes for bad packets are named ipf_fi_bad_*. An example of its use might be: dtrace -n 'sdt:::ipf_fi_bad_* { stack(); }' Reviewed by: Darren Reed --- sys/contrib/ipfilter/netinet/fil.c | 50 ++++++++++++++++--- sys/contrib/ipfilter/netinet/ip_fil_freebsd.c | 8 +++ sys/contrib/ipfilter/netinet/ip_frag.c | 3 ++ sys/contrib/ipfilter/netinet/ip_state.c | 12 +++-- 4 files changed, 62 insertions(+), 11 deletions(-) diff --git a/sys/contrib/ipfilter/netinet/fil.c b/sys/contrib/ipfilter/netinet/fil.c index 58d90283301..0aeb44bb361 100644 --- a/sys/contrib/ipfilter/netinet/fil.c +++ b/sys/contrib/ipfilter/netinet/fil.c @@ -629,6 +629,7 @@ ipf_pr_ipv6hdr(fin) ipf_main_softc_t *softc = fin->fin_main_soft; fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_ipv6_frag_1, fr_info_t *, fin, int, go); LBUMPD(ipf_stats[fin->fin_out], fr_v6_badfrag); LBUMP(ipf_stats[fin->fin_out].fr_v6_bad); } @@ -687,6 +688,7 @@ ipf_pr_ipv6exthdr(fin, multiple, proto) if (shift > fin->fin_dlen) { /* Nasty extension header length? */ fin->fin_flx |= FI_BAD; + DT3(ipf_fi_bad_pr_ipv6exthdr_len, fr_info_t *, fin, u_short, shift, u_short, fin->fin_dlen); LBUMPD(ipf_stats[fin->fin_out], fr_v6_ext_hlen); return NULL; } @@ -708,9 +710,10 @@ ipf_pr_ipv6exthdr(fin, multiple, proto) * Most IPv6 extension headers are only allowed once. */ if ((multiple == 0) && - ((fin->fin_optmsk & ip6exthdr[i].ol_bit) != 0)) + ((fin->fin_optmsk & ip6exthdr[i].ol_bit) != 0)) { fin->fin_flx |= FI_BAD; - else + DT2(ipf_fi_bad_ipv6exthdr_once, fr_info_t *, fin, u_int, (fin->fin_optmsk & ip6exthdr[i].ol_bit)); + } else fin->fin_optmsk |= ip6exthdr[i].ol_bit; break; } @@ -790,6 +793,7 @@ ipf_pr_routing6(fin) ipf_main_softc_t *softc = fin->fin_main_soft; fin->fin_flx |= FI_BAD; + DT1(ipf_fi_bad_routing6, fr_info_t *, fin); LBUMPD(ipf_stats[fin->fin_out], fr_v6_rh_bad); return IPPROTO_NONE; } @@ -852,8 +856,10 @@ ipf_pr_fragment6(fin) * Any fragment that isn't the last fragment must have its * length as a multiple of 8. */ - if ((fin->fin_plen & 7) != 0) + if ((fin->fin_plen & 7) != 0) { fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_frag_not_8, fr_info_t *, fin, u_int, (fin->fin_plen & 7)); + } } fin->fin_fraghdr = frag; @@ -865,8 +871,10 @@ ipf_pr_fragment6(fin) /* * Jumbograms aren't handled, so the max. length is 64k */ - if ((fin->fin_off << 3) + fin->fin_dlen > 65535) + if ((fin->fin_off << 3) + fin->fin_dlen > 65535) { fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_jumbogram, fr_info_t *, fin, u_int, ((fin->fin_off << 3) + fin->fin_dlen)); + } /* * We don't know where the transport layer header (or whatever is next @@ -970,8 +978,10 @@ ipf_pr_icmp6(fin) icmp6 = fin->fin_dp; ip6 = (ip6_t *)((char *)icmp6 + ICMPERR_ICMPHLEN); if (IP6_NEQ(&fin->fin_fi.fi_dst, - (i6addr_t *)&ip6->ip6_src)) + (i6addr_t *)&ip6->ip6_src)) { fin->fin_flx |= FI_BAD; + DT1(ipf_fi_bad_icmp6, fr_info_t *, fin); + } break; default : break; @@ -1283,8 +1293,10 @@ ipf_pr_icmp(fin) case ICMP_UNREACH : #ifdef icmp_nextmtu if (icmp->icmp_code == ICMP_UNREACH_NEEDFRAG) { - if (icmp->icmp_nextmtu < softc->ipf_icmpminfragmtu) + if (icmp->icmp_nextmtu < softc->ipf_icmpminfragmtu) { fin->fin_flx |= FI_BAD; + DT3(ipf_fi_bad_icmp_nextmtu, fr_info_t *, fin, u_int, icmp->icmp_nextmtu, u_int, softc->ipf_icmpminfragmtu); + } } #endif case ICMP_SOURCEQUENCH : @@ -1303,16 +1315,20 @@ ipf_pr_icmp(fin) * fragment. */ oip = (ip_t *)((char *)fin->fin_dp + ICMPERR_ICMPHLEN); - if ((ntohs(oip->ip_off) & IP_OFFMASK) != 0) + if ((ntohs(oip->ip_off) & IP_OFFMASK) != 0) { fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_icmp_err, fr_info_t, fin, u_int, (ntohs(oip->ip_off) & IP_OFFMASK)); + } /* * If the destination of this packet doesn't match the * source of the original packet then this packet is * not correct. */ - if (oip->ip_src.s_addr != fin->fin_daddr) + if (oip->ip_src.s_addr != fin->fin_daddr) { fin->fin_flx |= FI_BAD; + DT1(ipf_fi_bad_src_ne_dst, fr_info_t *, fin); + } break; default : break; @@ -1372,6 +1388,7 @@ ipf_pr_tcpcommon(fin) if (tlen < sizeof(tcphdr_t)) { LBUMPD(ipf_stats[fin->fin_out], fr_tcp_small); fin->fin_flx |= FI_BAD; + DT3(ipf_fi_bad_tlen, fr_info_t, fin, u_int, tlen, u_int, sizeof(tcphdr_t)); return 1; } @@ -1385,6 +1402,7 @@ ipf_pr_tcpcommon(fin) */ if ((flags & TH_URG) != 0 && (tcp->th_urp == 0)) { fin->fin_flx |= FI_BAD; + DT3(ipf_fi_bad_th_urg, fr_info_t*, fin, u_int, (flags & TH_URG), u_int, tcp->th_urp); #if 0 } else if ((flags & TH_URG) == 0 && (tcp->th_urp != 0)) { /* @@ -1392,11 +1410,13 @@ ipf_pr_tcpcommon(fin) * traffic with bogus values in the urgent pointer field. */ fin->fin_flx |= FI_BAD; + DT3(ipf_fi_bad_th_urg0, fr_info_t *, fin, u_int, (flags & TH_URG), u_int, tcp->th_urp); #endif } else if (((flags & (TH_SYN|TH_FIN)) != 0) && ((flags & (TH_RST|TH_ACK)) == TH_RST)) { /* TH_FIN|TH_RST|TH_ACK seems to appear "naturally" */ fin->fin_flx |= FI_BAD; + DT1(ipf_fi_bad_th_fin_rst_ack, fr_info_t, fin); #if 1 } else if (((flags & TH_SYN) != 0) && ((flags & (TH_URG|TH_PUSH)) != 0)) { @@ -1405,6 +1425,7 @@ ipf_pr_tcpcommon(fin) * possible(?) with T/TCP...but who uses T/TCP? */ fin->fin_flx |= FI_BAD; + DT1(ipf_fi_bad_th_syn_urg_psh, fr_info_t *, fin); #endif } else if (!(flags & TH_ACK)) { /* @@ -1423,10 +1444,13 @@ ipf_pr_tcpcommon(fin) * achieved. */ /*fin->fin_flx |= FI_BAD*/; + /*DT1(ipf_fi_bad_th_syn_ack, fr_info_t *, fin);*/ } else if (!(flags & (TH_RST|TH_SYN))) { fin->fin_flx |= FI_BAD; + DT1(ipf_fi_bad_th_rst_syn, fr_info_t *, fin); } else if ((flags & (TH_URG|TH_PUSH|TH_FIN)) != 0) { fin->fin_flx |= FI_BAD; + DT1(ipf_fi_bad_th_urg_push_fin, fr_info_t *, fin); } } if (fin->fin_flx & FI_BAD) { @@ -1757,6 +1781,7 @@ ipf_pr_ipv4hdr(fin) * must be an even multiple of 8. */ fi->fi_flx |= FI_BAD; + DT1(ipf_fi_bad_fragbody_gt_65535, fr_info_t *, fin); } } } @@ -1840,6 +1865,7 @@ ipf_pr_ipv4hdr(fin) case IPOPT_SECURITY : if (optmsk & op->ol_bit) { fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_ipopt_security, fr_info_t *, fin, u_short, (optmsk & op->ol_bit)); } else { doi = ipf_checkripso(s); secmsk = doi >> 16; @@ -1851,6 +1877,7 @@ ipf_pr_ipv4hdr(fin) if (optmsk & op->ol_bit) { fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_ipopt_cipso, fr_info_t *, fin, u_short, (optmsk & op->ol_bit)); } else { doi = ipf_checkcipso(fin, s, ol); @@ -1949,6 +1976,7 @@ ipf_checkcipso(fin, s, ol) if (ol < 6 || ol > 40) { LBUMPD(ipf_stats[fin->fin_out], fr_v4_cipso_bad); fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_checkcipso_ol, fr_info_t *, fin, u_int, ol); return 0; } @@ -1966,6 +1994,7 @@ ipf_checkcipso(fin, s, ol) if (tlen > len || tlen < 4 || tlen > 34) { LBUMPD(ipf_stats[fin->fin_out], fr_v4_cipso_tlen); fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_checkcipso_tlen, fr_info_t *, fin, u_int, tlen); return 0; } @@ -1976,10 +2005,12 @@ ipf_checkcipso(fin, s, ol) */ if (tag == 0) { fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_checkcipso_tag, fr_info_t *, fin, u_int, tag); continue; } else if (tag == 1) { if (*(t + 2) != 0) { fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_checkcipso_tag1_t2, fr_info_t *, fin, u_int, (*t + 2)); continue; } sensitivity = *(t + 3); @@ -1988,6 +2019,7 @@ ipf_checkcipso(fin, s, ol) } else if (tag == 4) { if (*(t + 2) != 0) { fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_checkcipso_tag4_t2, fr_info_t *, fin, u_int, (*t + 2)); continue; } sensitivity = *(t + 3); @@ -1996,6 +2028,7 @@ ipf_checkcipso(fin, s, ol) } else if (tag == 5) { if (*(t + 2) != 0) { fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_checkcipso_tag5_t2, fr_info_t *, fin, u_int, (*t + 2)); continue; } sensitivity = *(t + 3); @@ -2006,6 +2039,7 @@ ipf_checkcipso(fin, s, ol) ; } else { fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_checkcipso_tag127, fr_info_t *, fin, u_int, tag); continue; } diff --git a/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c b/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c index 8a5a90d7407..3b74f8cf982 100644 --- a/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c +++ b/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c @@ -1091,6 +1091,7 @@ ipf_checkv4sum(fin) CSUM_IP_CHECKED) { fin->fin_cksum = FI_CK_BAD; fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_checkv4sum_csum_ip_checked, fr_info_t *, fin, u_int, m->m_pkthdr.csum_flags & (CSUM_IP_CHECKED|CSUM_IP_VALID)); return -1; } if (m->m_pkthdr.csum_flags & CSUM_DATA_VALID) { @@ -1120,6 +1121,7 @@ ipf_checkv4sum(fin) if (sum != 0) { fin->fin_cksum = FI_CK_BAD; fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_checkv4sum_sum, fr_info_t *, fin, u_int, sum); } else { fin->fin_cksum = FI_CK_SUMOK; return 0; @@ -1143,12 +1145,14 @@ ipf_checkv4sum(fin) if (manual != 0) { if (ipf_checkl4sum(fin) == -1) { fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_checkv4sum_manual, fr_info_t *, fin, u_int, manual); return -1; } } #else if (ipf_checkl4sum(fin) == -1) { fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_checkv4sum_checkl4sum, fr_info_t *, fin, u_int, -1); return -1; } #endif @@ -1162,16 +1166,20 @@ ipf_checkv6sum(fin) fr_info_t *fin; { if ((fin->fin_flx & FI_NOCKSUM) != 0) + DT(ipf_checkv6sum_fi_nocksum); return 0; if ((fin->fin_flx & FI_SHORT) != 0) + DT(ipf_checkv6sum_fi_short); return 1; if (fin->fin_cksum != FI_CK_NEEDED) + DT(ipf_checkv6sum_fi_ck_needed); return (fin->fin_cksum > FI_CK_NEEDED) ? 0 : -1; if (ipf_checkl4sum(fin) == -1) { fin->fin_flx |= FI_BAD; + DT2(ipf_fi_bad_checkv6sum_checkl4sum, fr_info_t *, fin, u_int, -1); return -1; } return 0; diff --git a/sys/contrib/ipfilter/netinet/ip_frag.c b/sys/contrib/ipfilter/netinet/ip_frag.c index 7e3457a91b7..e0cc5f399f0 100644 --- a/sys/contrib/ipfilter/netinet/ip_frag.c +++ b/sys/contrib/ipfilter/netinet/ip_frag.c @@ -719,6 +719,8 @@ ipf_frag_lookup(softc, softf, fin, table FBUMP(ifs_overlap); DT2(ifs_overlap, u_short, off, ipfr_t *, f); + DT3(ipf_fi_bad_ifs_overlap, fr_info_t *, fin, u_short, off, + ipfr_t *, f); fin->fin_flx |= FI_BAD; break; } @@ -901,6 +903,7 @@ ipf_frag_known(fin, passp) if (fin->fin_flx & FI_BAD) { fr = &ipfr_block; fin->fin_reason = FRB_BADFRAG; + DT2(ipf_frb_badfrag, fr_info_t *, fin, uint, fra); } else { fr = fra->ipfr_rule; } diff --git a/sys/contrib/ipfilter/netinet/ip_state.c b/sys/contrib/ipfilter/netinet/ip_state.c index 2ceec3262ec..34a64f02eb8 100644 --- a/sys/contrib/ipfilter/netinet/ip_state.c +++ b/sys/contrib/ipfilter/netinet/ip_state.c @@ -1611,8 +1611,10 @@ ipf_state_add(softc, fin, stsave, flags) TH_SYN && (TCP_OFF(tcp) > (sizeof(tcphdr_t) >> 2))) { if (ipf_tcpoptions(softs, fin, tcp, - &is->is_tcp.ts_data[0]) == -1) + &is->is_tcp.ts_data[0]) == -1) { fin->fin_flx |= FI_BAD; + DT1(ipf_fi_bad_tcpoptions_th_fin_ack_ecnall, fr_info_t *, fin); + } } if ((fin->fin_out != 0) && (pass & FR_NEWISN) != 0) { @@ -2068,8 +2070,10 @@ ipf_state_tcp(softc, softs, fin, tcp, is) is->is_s0[!source] = ntohl(tcp->th_seq) + 1; if ((TCP_OFF(tcp) > (sizeof(tcphdr_t) >> 2))) { if (ipf_tcpoptions(softs, fin, tcp, - fdata) == -1) + fdata) == -1) { fin->fin_flx |= FI_BAD; + DT1(ipf_fi_bad_winscale_syn_ack, fr_info_t *, fin); + } } if ((fin->fin_out != 0) && (is->is_pass & FR_NEWISN)) ipf_checknewisn(fin, is); @@ -2077,8 +2081,10 @@ ipf_state_tcp(softc, softs, fin, tcp, is) is->is_s0[source] = ntohl(tcp->th_seq) + 1; if ((TCP_OFF(tcp) > (sizeof(tcphdr_t) >> 2))) { if (ipf_tcpoptions(softs, fin, tcp, - fdata) == -1) + fdata) == -1) { fin->fin_flx |= FI_BAD; + DT1(ipf_fi_bad_winscale_syn, fr_info_t *, fin); + } } if ((fin->fin_out != 0) && (is->is_pass & FR_NEWISN)) From ae34b6ff96e7c0689c3da91f09fb57b34f06252c Mon Sep 17 00:00:00 2001 From: Edward Tomasz Napierala Date: Thu, 7 Apr 2016 04:23:25 +0000 Subject: [PATCH 021/159] Add four new RCTL resources - readbps, readiops, writebps and writeiops, for limiting disk (actually filesystem) IO. Note that in some cases these limits are not quite precise. It's ok, as long as it's within some reasonable bounds. Testing - and review of the code, in particular the VFS and VM parts - is very welcome. MFC after: 1 month Relnotes: yes Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D5080 --- .../opensolaris/uts/common/fs/zfs/arc.c | 9 + .../opensolaris/uts/common/fs/zfs/dmu.c | 20 +- sys/fs/ext2fs/ext2_bmap.c | 8 + sys/kern/kern_physio.c | 17 ++ sys/kern/kern_racct.c | 77 ++++++- sys/kern/kern_rctl.c | 214 ++++++++++++++++-- sys/kern/subr_trap.c | 10 +- sys/kern/vfs_bio.c | 31 ++- sys/kern/vfs_cluster.c | 15 ++ sys/sys/proc.h | 2 +- sys/sys/racct.h | 9 +- sys/sys/rctl.h | 4 +- sys/ufs/ffs/ffs_inode.c | 8 + sys/ufs/ffs/ffs_softdep.c | 8 + sys/ufs/ufs/ufs_bmap.c | 8 + sys/vm/vm_fault.c | 16 ++ usr.bin/rctl/rctl.8 | 39 +++- 17 files changed, 449 insertions(+), 46 deletions(-) diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c index f9449037af9..534dfb2cd68 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c @@ -132,6 +132,7 @@ #include #ifdef _KERNEL #include +#include #endif #include #include @@ -4503,6 +4504,14 @@ arc_read(zio_t *pio, spa_t *spa, const blkptr_t *bp, arc_done_func_t *done, demand, prefetch, !HDR_ISTYPE_METADATA(hdr), data, metadata, misses); #ifdef _KERNEL +#ifdef RACCT + if (racct_enable) { + PROC_LOCK(curproc); + racct_add_force(curproc, RACCT_READBPS, size); + racct_add_force(curproc, RACCT_READIOPS, 1); + PROC_UNLOCK(curproc); + } +#endif /* RACCT */ curthread->td_ru.ru_inblock++; #endif diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c index b60236f6ff1..af8d36650f6 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c @@ -47,6 +47,7 @@ #include #include #ifdef _KERNEL +#include #include #include #endif @@ -427,6 +428,15 @@ dmu_buf_hold_array_by_dnode(dnode_t *dn, uint64_t offset, uint64_t length, } dbp = kmem_zalloc(sizeof (dmu_buf_t *) * nblks, KM_SLEEP); +#if defined(_KERNEL) && defined(RACCT) + if (racct_enable && !read) { + PROC_LOCK(curproc); + racct_add_force(curproc, RACCT_WRITEBPS, length); + racct_add_force(curproc, RACCT_WRITEIOPS, nblks); + PROC_UNLOCK(curproc); + } +#endif + zio = zio_root(dn->dn_objset->os_spa, NULL, NULL, ZIO_FLAG_CANFAIL); blkid = dbuf_whichblock(dn, 0, offset); for (i = 0; i < nblks; i++) { @@ -1422,7 +1432,15 @@ dmu_assign_arcbuf(dmu_buf_t *handle, uint64_t offset, arc_buf_t *buf, DBUF_GET_BUFC_TYPE(db) == ARC_BUFC_DATA) { #ifdef _KERNEL curthread->td_ru.ru_oublock++; -#endif +#ifdef RACCT + if (racct_enable) { + PROC_LOCK(curproc); + racct_add_force(curproc, RACCT_WRITEBPS, blksz); + racct_add_force(curproc, RACCT_WRITEIOPS, 1); + PROC_UNLOCK(curproc); + } +#endif /* RACCT */ +#endif /* _KERNEL */ dbuf_assign_arcbuf(db, buf, tx); dbuf_rele(db, FTAG); } else { diff --git a/sys/fs/ext2fs/ext2_bmap.c b/sys/fs/ext2fs/ext2_bmap.c index 8e5e9863aea..7966b9bfb8b 100644 --- a/sys/fs/ext2fs/ext2_bmap.c +++ b/sys/fs/ext2fs/ext2_bmap.c @@ -42,6 +42,7 @@ #include #include #include +#include #include #include @@ -247,6 +248,13 @@ ext2_bmaparray(struct vnode *vp, daddr_t bn, daddr_t *bnp, int *runp, int *runb) vfs_busy_pages(bp, 0); bp->b_iooffset = dbtob(bp->b_blkno); bstrategy(bp); +#ifdef RACCT + if (racct_enable) { + PROC_LOCK(curproc); + racct_add_buf(curproc, bp, 0); + PROC_UNLOCK(curproc); + } +#endif curthread->td_ru.ru_inblock++; error = bufwait(bp); if (error) { diff --git a/sys/kern/kern_physio.c b/sys/kern/kern_physio.c index a1483865fe5..31d8f1660fe 100644 --- a/sys/kern/kern_physio.c +++ b/sys/kern/kern_physio.c @@ -27,6 +27,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -109,6 +110,22 @@ physio(struct cdev *dev, struct uio *uio, int ioflag) prot |= VM_PROT_WRITE; /* Less backwards than it looks */ error = 0; for (i = 0; i < uio->uio_iovcnt; i++) { +#ifdef RACCT + if (racct_enable) { + PROC_LOCK(curproc); + if (uio->uio_rw == UIO_READ) { + racct_add_force(curproc, RACCT_READBPS, + uio->uio_iov[i].iov_len); + racct_add_force(curproc, RACCT_READIOPS, 1); + } else { + racct_add_force(curproc, RACCT_WRITEBPS, + uio->uio_iov[i].iov_len); + racct_add_force(curproc, RACCT_WRITEIOPS, 1); + } + PROC_UNLOCK(curproc); + } +#endif /* RACCT */ + while (uio->uio_iov[i].iov_len) { g_reset_bio(bp); if (uio->uio_rw == UIO_READ) { diff --git a/sys/kern/kern_racct.c b/sys/kern/kern_racct.c index bbd50ca6e21..438a249a323 100644 --- a/sys/kern/kern_racct.c +++ b/sys/kern/kern_racct.c @@ -35,6 +35,7 @@ __FBSDID("$FreeBSD$"); #include "opt_sched.h" #include +#include #include #include #include @@ -177,7 +178,15 @@ int racct_types[] = { [RACCT_WALLCLOCK] = RACCT_IN_MILLIONS, [RACCT_PCTCPU] = - RACCT_DECAYING | RACCT_DENIABLE | RACCT_IN_MILLIONS }; + RACCT_DECAYING | RACCT_DENIABLE | RACCT_IN_MILLIONS, + [RACCT_READBPS] = + RACCT_DECAYING, + [RACCT_WRITEBPS] = + RACCT_DECAYING, + [RACCT_READIOPS] = + RACCT_DECAYING, + [RACCT_WRITEIOPS] = + RACCT_DECAYING }; static const fixpt_t RACCT_DECAY_FACTOR = 0.3 * FSCALE; @@ -634,6 +643,28 @@ racct_add_cred(struct ucred *cred, int resource, uint64_t amount) RACCT_UNLOCK(); } +/* + * Account for disk IO resource consumption. Checks for limits, + * but never fails, due to disk limits being undeniable. + */ +void +racct_add_buf(struct proc *p, const struct buf *bp, int is_write) +{ + + ASSERT_RACCT_ENABLED(); + PROC_LOCK_ASSERT(p, MA_OWNED); + + RACCT_LOCK(); + if (is_write) { + racct_add_locked(curproc, RACCT_WRITEBPS, bp->b_bcount, 1); + racct_add_locked(curproc, RACCT_WRITEIOPS, 1, 1); + } else { + racct_add_locked(curproc, RACCT_READBPS, bp->b_bcount, 1); + racct_add_locked(curproc, RACCT_READIOPS, 1, 1); + } + RACCT_UNLOCK(); +} + static int racct_set_locked(struct proc *p, int resource, uint64_t amount, int force) { @@ -655,7 +686,7 @@ racct_set_locked(struct proc *p, int resource, uint64_t amount, int force) * The diffs may be negative. */ diff_proc = amount - old_amount; - if (RACCT_IS_DECAYING(resource)) { + if (resource == RACCT_PCTCPU) { /* * Resources in per-credential racct containers may decay. * If this is the case, we need to calculate the difference @@ -1043,14 +1074,19 @@ racct_move(struct racct *dest, struct racct *src) RACCT_UNLOCK(); } -static void -racct_proc_throttle(struct proc *p) +/* + * Make the process sleep in userret() for 'timeout' ticks. Setting + * timeout to -1 makes it sleep until woken up by racct_proc_wakeup(). + */ +void +racct_proc_throttle(struct proc *p, int timeout) { struct thread *td; #ifdef SMP int cpuid; #endif + KASSERT(timeout != 0, ("timeout %d", timeout)); ASSERT_RACCT_ENABLED(); PROC_LOCK_ASSERT(p, MA_OWNED); @@ -1058,10 +1094,13 @@ racct_proc_throttle(struct proc *p) * Do not block kernel processes. Also do not block processes with * low %cpu utilization to improve interactivity. */ - if (((p->p_flag & (P_SYSTEM | P_KPROC)) != 0) || - (p->p_racct->r_resources[RACCT_PCTCPU] <= pcpu_threshold)) + if ((p->p_flag & (P_SYSTEM | P_KPROC)) != 0) return; - p->p_throttled = 1; + + if (p->p_throttled < 0 || (timeout > 0 && p->p_throttled > timeout)) + return; + + p->p_throttled = timeout; FOREACH_THREAD_IN_PROC(p, td) { thread_lock(td); @@ -1102,7 +1141,7 @@ racct_proc_wakeup(struct proc *p) PROC_LOCK_ASSERT(p, MA_OWNED); - if (p->p_throttled) { + if (p->p_throttled != 0) { p->p_throttled = 0; wakeup(p->p_racct); } @@ -1116,6 +1155,13 @@ racct_decay_callback(struct racct *racct, void *dummy1, void *dummy2) ASSERT_RACCT_ENABLED(); RACCT_LOCK_ASSERT(); +#ifdef RCTL + rctl_throttle_decay(racct, RACCT_READBPS); + rctl_throttle_decay(racct, RACCT_WRITEBPS); + rctl_throttle_decay(racct, RACCT_READIOPS); + rctl_throttle_decay(racct, RACCT_WRITEIOPS); +#endif + r_old = racct->r_resources[RACCT_PCTCPU]; /* If there is nothing to decay, just exit. */ @@ -1206,6 +1252,12 @@ racctd(void) pct_estimate = 0; pct = racct_getpcpu(p, pct_estimate); RACCT_LOCK(); +#ifdef RCTL + rctl_throttle_decay(p->p_racct, RACCT_READBPS); + rctl_throttle_decay(p->p_racct, RACCT_WRITEBPS); + rctl_throttle_decay(p->p_racct, RACCT_READIOPS); + rctl_throttle_decay(p->p_racct, RACCT_WRITEIOPS); +#endif racct_set_locked(p, RACCT_PCTCPU, pct, 1); racct_set_locked(p, RACCT_CPU, runtime, 0); racct_set_locked(p, RACCT_WALLCLOCK, @@ -1228,10 +1280,13 @@ racctd(void) continue; } - if (racct_pcpu_available(p) <= 0) - racct_proc_throttle(p); - else if (p->p_throttled) + if (racct_pcpu_available(p) <= 0) { + if (p->p_racct->r_resources[RACCT_PCTCPU] > + pcpu_threshold) + racct_proc_throttle(p, -1); + } else if (p->p_throttled == -1) { racct_proc_wakeup(p); + } PROC_UNLOCK(p); } sx_sunlock(&allproc_lock); diff --git a/sys/kern/kern_rctl.c b/sys/kern/kern_rctl.c index 7f6a7ad5075..8f301b8c20f 100644 --- a/sys/kern/kern_rctl.c +++ b/sys/kern/kern_rctl.c @@ -77,9 +77,13 @@ FEATURE(rctl, "Resource Limits"); #define RCTL_PCPU_SHIFT (10 * 1000000) -unsigned int rctl_maxbufsize = RCTL_MAX_OUTBUFSIZE; +static unsigned int rctl_maxbufsize = RCTL_MAX_OUTBUFSIZE; static int rctl_log_rate_limit = 10; static int rctl_devctl_rate_limit = 10; +static unsigned int rctl_throttle_min = 0; +static unsigned int rctl_throttle_max = 0; +static unsigned int rctl_throttle_pct = 0; +static unsigned int rctl_throttle_pct2 = 0; SYSCTL_NODE(_kern_racct, OID_AUTO, rctl, CTLFLAG_RW, 0, "Resource Limits"); SYSCTL_UINT(_kern_racct_rctl, OID_AUTO, maxbufsize, CTLFLAG_RWTUN, @@ -88,6 +92,16 @@ SYSCTL_UINT(_kern_racct_rctl, OID_AUTO, log_rate_limit, CTLFLAG_RW, &rctl_log_rate_limit, 0, "Maximum number of log messages per second"); SYSCTL_UINT(_kern_racct_rctl, OID_AUTO, devctl_rate_limit, CTLFLAG_RW, &rctl_devctl_rate_limit, 0, "Maximum number of devctl messages per second"); +SYSCTL_UINT(_kern_racct_rctl, OID_AUTO, throttle_min, CTLFLAG_RDTUN, + &rctl_throttle_min, 0, "Shortest throttling duration, in hz"); +SYSCTL_UINT(_kern_racct_rctl, OID_AUTO, throttle_max, CTLFLAG_RDTUN, + &rctl_throttle_max, 0, "Longest throttling duration, in hz"); +SYSCTL_UINT(_kern_racct_rctl, OID_AUTO, throttle_pct, CTLFLAG_RDTUN, + &rctl_throttle_pct, 0, + "Throttling penalty for process consumption, in percent"); +SYSCTL_UINT(_kern_racct_rctl, OID_AUTO, throttle_pct2, CTLFLAG_RDTUN, + &rctl_throttle_pct2, 0, + "Throttling penalty for container consumption, in percent"); /* * 'rctl_rule_link' connects a rule with every racct it's related to. @@ -134,6 +148,10 @@ static struct dict resourcenames[] = { { "shmsize", RACCT_SHMSIZE }, { "wallclock", RACCT_WALLCLOCK }, { "pcpu", RACCT_PCTCPU }, + { "readbps", RACCT_READBPS }, + { "writebps", RACCT_WRITEBPS }, + { "readiops", RACCT_READIOPS }, + { "writeiops", RACCT_WRITEIOPS }, { NULL, -1 }}; static struct dict actionnames[] = { @@ -171,6 +189,7 @@ static struct dict actionnames[] = { { "deny", RCTL_ACTION_DENY }, { "log", RCTL_ACTION_LOG }, { "devctl", RCTL_ACTION_DEVCTL }, + { "throttle", RCTL_ACTION_THROTTLE }, { NULL, -1 }}; static void rctl_init(void); @@ -274,23 +293,53 @@ rctl_available_resource(const struct proc *p, const struct rctl_rule *rule) } /* - * Return non-zero if allocating 'amount' by proc 'p' would exceed - * resource limit specified by 'rule'. + * Called every second for proc, uidinfo, loginclass, and jail containers. + * If the limit isn't exceeded, it decreases the usage amount to zero. + * Otherwise, it decreases it by the value of the limit. This way + * resource consumption exceeding the limit "carries over" to the next + * period. */ -static int -rctl_would_exceed(const struct proc *p, const struct rctl_rule *rule, - int64_t amount) +void +rctl_throttle_decay(struct racct *racct, int resource) { - int64_t available; + struct rctl_rule *rule; + struct rctl_rule_link *link; + int64_t minavailable; ASSERT_RACCT_ENABLED(); - RCTL_LOCK_ASSERT(); - available = rctl_available_resource(p, rule); - if (available >= amount) - return (0); + minavailable = INT64_MAX; - return (1); + RCTL_RLOCK(); + + LIST_FOREACH(link, &racct->r_rule_links, rrl_next) { + rule = link->rrl_rule; + + if (rule->rr_resource != resource) + continue; + if (rule->rr_action != RCTL_ACTION_THROTTLE) + continue; + + if (rule->rr_amount < minavailable) + minavailable = rule->rr_amount; + } + + RCTL_RUNLOCK(); + + if (racct->r_resources[resource] < minavailable) { + racct->r_resources[resource] = 0; + } else { + /* + * Cap utilization counter at ten times the limit. Otherwise, + * if we changed the rule lowering the allowed amount, it could + * take unreasonably long time for the accumulated resource + * usage to drop. + */ + if (racct->r_resources[resource] > minavailable * 10) + racct->r_resources[resource] = minavailable * 10; + + racct->r_resources[resource] -= minavailable; + } } /* @@ -340,6 +389,38 @@ rctl_pcpu_available(const struct proc *p) { return (minavailable); } +static uint64_t +xadd(uint64_t a, uint64_t b) +{ + uint64_t c; + + c = a + b; + + /* + * Detect overflow. + */ + if (c < a || c < b) + return (UINT64_MAX); + + return (c); +} + +static uint64_t +xmul(uint64_t a, uint64_t b) +{ + uint64_t c; + + if (a == 0 || b == 0) + return (0); + + c = a * b; + + if (c < a || c < b) + return (UINT64_MAX); + + return (c); +} + /* * Check whether the proc 'p' can allocate 'amount' of 'resource' in addition * to what it keeps allocated now. Returns non-zero if the allocation should @@ -353,9 +434,12 @@ rctl_enforce(struct proc *p, int resource, uint64_t amount) struct rctl_rule *rule; struct rctl_rule_link *link; struct sbuf sb; + int64_t available; + uint64_t sleep_ms, sleep_ratio; int should_deny = 0; char *buf; + ASSERT_RACCT_ENABLED(); RCTL_RLOCK(); @@ -368,7 +452,9 @@ rctl_enforce(struct proc *p, int resource, uint64_t amount) rule = link->rrl_rule; if (rule->rr_resource != resource) continue; - if (!rctl_would_exceed(p, rule, amount)) { + + available = rctl_available_resource(p, rule); + if (available >= (int64_t)amount) { link->rrl_exceeded = 0; continue; } @@ -421,7 +507,7 @@ rctl_enforce(struct proc *p, int resource, uint64_t amount) if (p->p_state != PRS_NORMAL) continue; - + if (!ppsratecheck(&devctl_lasttime, &devctl_curtime, rctl_devctl_rate_limit)) continue; @@ -444,6 +530,69 @@ rctl_enforce(struct proc *p, int resource, uint64_t amount) free(buf, M_RCTL); link->rrl_exceeded = 1; continue; + case RCTL_ACTION_THROTTLE: + if (p->p_state != PRS_NORMAL) + continue; + + /* + * Make the process sleep for a fraction of second + * proportional to the ratio of process' resource + * utilization compared to the limit. The point is + * to penalize resource hogs: processes that consume + * more of the available resources sleep for longer. + * + * We're trying to defer division until the very end, + * to minimize the rounding effects. The following + * calculation could have been written in a clearer + * way like this: + * + * sleep_ms = hz * p->p_racct->r_resources[resource] / + * rule->rr_amount; + * sleep_ms *= rctl_throttle_pct / 100; + * if (sleep_ms < rctl_throttle_min) + * sleep_ms = rctl_throttle_min; + * + */ + sleep_ms = xmul(hz, p->p_racct->r_resources[resource]); + sleep_ms = xmul(sleep_ms, rctl_throttle_pct) / 100; + if (sleep_ms < rctl_throttle_min * rule->rr_amount) + sleep_ms = rctl_throttle_min * rule->rr_amount; + + /* + * Multiply that by the ratio of the resource + * consumption for the container compared to the limit, + * squared. In other words, a process in a container + * that is two times over the limit will be throttled + * four times as much for hitting the same rule. The + * point is to penalize processes more if the container + * itself (eg certain UID or jail) is above the limit. + */ + if (available < 0) + sleep_ratio = -available / rule->rr_amount; + else + sleep_ratio = 0; + sleep_ratio = xmul(sleep_ratio, sleep_ratio); + sleep_ratio = xmul(sleep_ratio, rctl_throttle_pct2) / 100; + sleep_ms = xadd(sleep_ms, xmul(sleep_ms, sleep_ratio)); + + /* + * Finally the division. + */ + sleep_ms /= rule->rr_amount; + + if (sleep_ms > rctl_throttle_max) + sleep_ms = rctl_throttle_max; +#if 0 + printf("%s: pid %d (%s), %jd of %jd, will sleep for %ld ms (ratio %ld, available %ld)\n", + __func__, p->p_pid, p->p_comm, + p->p_racct->r_resources[resource], + rule->rr_amount, sleep_ms, sleep_ratio, available); +#endif + + KASSERT(sleep_ms >= rctl_throttle_min, ("%s: %ju < %d\n", + __func__, (uintmax_t)sleep_ms, rctl_throttle_min)); + racct_proc_throttle(p, sleep_ms); + continue; default: if (link->rrl_exceeded != 0) continue; @@ -1073,20 +1222,32 @@ rctl_rule_add(struct rctl_rule *rule) KASSERT(rctl_rule_fully_specified(rule), ("rule not fully specified")); /* - * Some rules just don't make sense. Note that the one below - * cannot be rewritten using RACCT_IS_DENIABLE(); the RACCT_PCTCPU, - * for example, is not deniable in the racct sense, but the - * limit is enforced in a different way, so "deny" rules for %CPU - * do make sense. + * Some rules just don't make sense, like "deny" rule for an undeniable + * resource. The exception are the RSS and %CPU resources - they are + * not deniable in the racct sense, but the limit is enforced in + * a different way. */ if (rule->rr_action == RCTL_ACTION_DENY && - (rule->rr_resource == RACCT_CPU || - rule->rr_resource == RACCT_WALLCLOCK)) + !RACCT_IS_DENIABLE(rule->rr_resource) && + rule->rr_resource != RACCT_RSS && + rule->rr_resource != RACCT_PCTCPU) { return (EOPNOTSUPP); + } + + if (rule->rr_action == RCTL_ACTION_THROTTLE && + !RACCT_IS_DECAYING(rule->rr_resource)) { + return (EOPNOTSUPP); + } + + if (rule->rr_action == RCTL_ACTION_THROTTLE && + rule->rr_resource == RACCT_PCTCPU) { + return (EOPNOTSUPP); + } if (rule->rr_per == RCTL_SUBJECT_TYPE_PROCESS && - RACCT_IS_SLOPPY(rule->rr_resource)) + RACCT_IS_SLOPPY(rule->rr_resource)) { return (EOPNOTSUPP); + } /* * Make sure there are no duplicated rules. Also, for the "deny" @@ -1960,6 +2121,15 @@ rctl_init(void) UMA_ALIGN_PTR, UMA_ZONE_NOFREE); rctl_rule_zone = uma_zcreate("rctl_rule", sizeof(struct rctl_rule), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_NOFREE); + + if (rctl_throttle_min <= 0) + rctl_throttle_min = 1; + if (rctl_throttle_max <= 0) + rctl_throttle_max = 2 * hz; + if (rctl_throttle_pct <= 0) + rctl_throttle_pct = 100; + if (rctl_throttle_pct2 <= 0) + rctl_throttle_pct2 = 100; } #else /* !RCTL */ diff --git a/sys/kern/subr_trap.c b/sys/kern/subr_trap.c index a3714563cca..6d1ac709feb 100644 --- a/sys/kern/subr_trap.c +++ b/sys/kern/subr_trap.c @@ -172,10 +172,14 @@ userret(struct thread *td, struct trapframe *frame) (td->td_vnet_lpush != NULL) ? td->td_vnet_lpush : "N/A")); #endif #ifdef RACCT - if (racct_enable && p->p_throttled == 1) { + if (racct_enable && p->p_throttled != 0) { PROC_LOCK(p); - while (p->p_throttled == 1) - msleep(p->p_racct, &p->p_mtx, 0, "racct", 0); + while (p->p_throttled != 0) { + msleep(p->p_racct, &p->p_mtx, 0, "racct", + p->p_throttled < 0 ? 0 : p->p_throttled); + if (p->p_throttled > 0) + p->p_throttled = 0; + } PROC_UNLOCK(p); } #endif diff --git a/sys/kern/vfs_bio.c b/sys/kern/vfs_bio.c index e272f9de557..b7b9641662b 100644 --- a/sys/kern/vfs_bio.c +++ b/sys/kern/vfs_bio.c @@ -61,6 +61,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -1784,8 +1785,16 @@ breada(struct vnode * vp, daddr_t * rablkno, int * rabsize, rabp = getblk(vp, *rablkno, *rabsize, 0, 0, 0); if ((rabp->b_flags & B_CACHE) == 0) { - if (!TD_IS_IDLETHREAD(curthread)) + if (!TD_IS_IDLETHREAD(curthread)) { +#ifdef RACCT + if (racct_enable) { + PROC_LOCK(curproc); + racct_add_buf(curproc, rabp, 0); + PROC_UNLOCK(curproc); + } +#endif /* RACCT */ curthread->td_ru.ru_inblock++; + } rabp->b_flags |= B_ASYNC; rabp->b_flags &= ~B_INVAL; rabp->b_ioflags &= ~BIO_ERROR; @@ -1829,8 +1838,16 @@ breadn_flags(struct vnode *vp, daddr_t blkno, int size, daddr_t *rablkno, /* if not found in cache, do some I/O */ if ((bp->b_flags & B_CACHE) == 0) { - if (!TD_IS_IDLETHREAD(curthread)) + if (!TD_IS_IDLETHREAD(curthread)) { +#ifdef RACCT + if (racct_enable) { + PROC_LOCK(curproc); + racct_add_buf(curproc, bp, 0); + PROC_UNLOCK(curproc); + } +#endif /* RACCT */ curthread->td_ru.ru_inblock++; + } bp->b_iocmd = BIO_READ; bp->b_flags &= ~B_INVAL; bp->b_ioflags &= ~BIO_ERROR; @@ -1926,8 +1943,16 @@ bufwrite(struct buf *bp) bp->b_runningbufspace = bp->b_bufsize; space = atomic_fetchadd_long(&runningbufspace, bp->b_runningbufspace); - if (!TD_IS_IDLETHREAD(curthread)) + if (!TD_IS_IDLETHREAD(curthread)) { +#ifdef RACCT + if (racct_enable) { + PROC_LOCK(curproc); + racct_add_buf(curproc, bp, 1); + PROC_UNLOCK(curproc); + } +#endif /* RACCT */ curthread->td_ru.ru_oublock++; + } if (oldflags & B_ASYNC) BUF_KERNPROC(bp); bp->b_iooffset = dbtob(bp->b_blkno); diff --git a/sys/kern/vfs_cluster.c b/sys/kern/vfs_cluster.c index 9871a505631..40dc0c0c320 100644 --- a/sys/kern/vfs_cluster.c +++ b/sys/kern/vfs_cluster.c @@ -45,6 +45,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -241,6 +242,13 @@ cluster_read(struct vnode *vp, u_quad_t filesize, daddr_t lblkno, long size, BUF_KERNPROC(bp); bp->b_iooffset = dbtob(bp->b_blkno); bstrategy(bp); +#ifdef RACCT + if (racct_enable) { + PROC_LOCK(curproc); + racct_add_buf(curproc, bp, 0); + PROC_UNLOCK(curproc); + } +#endif /* RACCT */ curthread->td_ru.ru_inblock++; } @@ -294,6 +302,13 @@ cluster_read(struct vnode *vp, u_quad_t filesize, daddr_t lblkno, long size, BUF_KERNPROC(rbp); rbp->b_iooffset = dbtob(rbp->b_blkno); bstrategy(rbp); +#ifdef RACCT + if (racct_enable) { + PROC_LOCK(curproc); + racct_add_buf(curproc, rbp, 0); + PROC_UNLOCK(curproc); + } +#endif /* RACCT */ curthread->td_ru.ru_inblock++; } diff --git a/sys/sys/proc.h b/sys/sys/proc.h index 2d1769e4309..d2b617c469d 100644 --- a/sys/sys/proc.h +++ b/sys/sys/proc.h @@ -623,7 +623,7 @@ struct proc { after fork. */ uint64_t p_prev_runtime; /* (c) Resource usage accounting. */ struct racct *p_racct; /* (b) Resource accounting. */ - u_char p_throttled; /* (c) Flag for racct pcpu throttling */ + int p_throttled; /* (c) Flag for racct pcpu throttling */ struct vm_domain_policy p_vm_dom_policy; /* (c) process default VM domain, or -1 */ /* * An orphan is the child that has beed re-parented to the diff --git a/sys/sys/racct.h b/sys/sys/racct.h index 8d1f2fa2cec..5330c637bf3 100644 --- a/sys/sys/racct.h +++ b/sys/sys/racct.h @@ -42,6 +42,7 @@ #include #include +struct buf; struct proc; struct rctl_rule_link; struct ucred; @@ -71,7 +72,11 @@ struct ucred; #define RACCT_SHMSIZE 18 #define RACCT_WALLCLOCK 19 #define RACCT_PCTCPU 20 -#define RACCT_MAX RACCT_PCTCPU +#define RACCT_READBPS 21 +#define RACCT_WRITEBPS 22 +#define RACCT_READIOPS 23 +#define RACCT_WRITEIOPS 24 +#define RACCT_MAX RACCT_WRITEIOPS /* * Resource properties. @@ -153,6 +158,7 @@ SYSCTL_DECL(_kern_racct); int racct_add(struct proc *p, int resource, uint64_t amount); void racct_add_cred(struct ucred *cred, int resource, uint64_t amount); void racct_add_force(struct proc *p, int resource, uint64_t amount); +void racct_add_buf(struct proc *p, const struct buf *bufp, int is_write); int racct_set(struct proc *p, int resource, uint64_t amount); void racct_set_force(struct proc *p, int resource, uint64_t amount); void racct_sub(struct proc *p, int resource, uint64_t amount); @@ -170,6 +176,7 @@ void racct_proc_exit(struct proc *p); void racct_proc_ucred_changed(struct proc *p, struct ucred *oldcred, struct ucred *newcred); void racct_move(struct racct *dest, struct racct *src); +void racct_proc_throttle(struct proc *p, int timeout); #else diff --git a/sys/sys/rctl.h b/sys/sys/rctl.h index e1a45a4949f..b9e6cd6d17f 100644 --- a/sys/sys/rctl.h +++ b/sys/sys/rctl.h @@ -129,7 +129,8 @@ struct rctl_rule { #define RCTL_ACTION_DENY (RCTL_ACTION_SIGNAL_MAX + 1) #define RCTL_ACTION_LOG (RCTL_ACTION_SIGNAL_MAX + 2) #define RCTL_ACTION_DEVCTL (RCTL_ACTION_SIGNAL_MAX + 3) -#define RCTL_ACTION_MAX RCTL_ACTION_DEVCTL +#define RCTL_ACTION_THROTTLE (RCTL_ACTION_SIGNAL_MAX + 4) +#define RCTL_ACTION_MAX RCTL_ACTION_THROTTLE #define RCTL_AMOUNT_UNDEFINED -1 @@ -140,6 +141,7 @@ void rctl_rule_release(struct rctl_rule *rule); int rctl_rule_add(struct rctl_rule *rule); int rctl_rule_remove(struct rctl_rule *filter); int rctl_enforce(struct proc *p, int resource, uint64_t amount); +void rctl_throttle_decay(struct racct *racct, int resource); int64_t rctl_pcpu_available(const struct proc *p); uint64_t rctl_get_limit(struct proc *p, int resource); uint64_t rctl_get_available(struct proc *p, int resource); diff --git a/sys/ufs/ffs/ffs_inode.c b/sys/ufs/ffs/ffs_inode.c index c8dac1b4151..020282097cf 100644 --- a/sys/ufs/ffs/ffs_inode.c +++ b/sys/ufs/ffs/ffs_inode.c @@ -41,6 +41,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -659,6 +660,13 @@ ffs_indirtrunc(ip, lbn, dbn, lastbn, level, countp) vp = ITOV(ip); bp = getblk(vp, lbn, (int)fs->fs_bsize, 0, 0, 0); if ((bp->b_flags & B_CACHE) == 0) { +#ifdef RACCT + if (racct_enable) { + PROC_LOCK(curproc); + racct_add_buf(curproc, bp, 0); + PROC_UNLOCK(curproc); + } +#endif /* RACCT */ curthread->td_ru.ru_inblock++; /* pay for read */ bp->b_iocmd = BIO_READ; bp->b_flags &= ~B_INVAL; diff --git a/sys/ufs/ffs/ffs_softdep.c b/sys/ufs/ffs/ffs_softdep.c index bedc8e1b04f..bc0693a65aa 100644 --- a/sys/ufs/ffs/ffs_softdep.c +++ b/sys/ufs/ffs/ffs_softdep.c @@ -69,6 +69,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -6229,6 +6230,13 @@ setup_trunc_indir(freeblks, ip, lbn, lastlbn, blkno) vfs_busy_pages(bp, 0); bp->b_iooffset = dbtob(bp->b_blkno); bstrategy(bp); +#ifdef RACCT + if (racct_enable) { + PROC_LOCK(curproc); + racct_add_buf(curproc, bp, 0); + PROC_UNLOCK(curproc); + } +#endif /* RACCT */ curthread->td_ru.ru_inblock++; error = bufwait(bp); if (error) { diff --git a/sys/ufs/ufs/ufs_bmap.c b/sys/ufs/ufs/ufs_bmap.c index 9819ef5eb8e..768298f61a5 100644 --- a/sys/ufs/ufs/ufs_bmap.c +++ b/sys/ufs/ufs/ufs_bmap.c @@ -44,6 +44,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -223,6 +224,13 @@ ufs_bmaparray(vp, bn, bnp, nbp, runp, runb) vfs_busy_pages(bp, 0); bp->b_iooffset = dbtob(bp->b_blkno); bstrategy(bp); +#ifdef RACCT + if (racct_enable) { + PROC_LOCK(curproc); + racct_add_buf(curproc, bp, 0); + PROC_UNLOCK(curproc); + } +#endif /* RACCT */ curthread->td_ru.ru_inblock++; error = bufwait(bp); if (error) { diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c index a7e3d3760e5..13a5757aadc 100644 --- a/sys/vm/vm_fault.c +++ b/sys/vm/vm_fault.c @@ -83,6 +83,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -994,6 +995,21 @@ RetryFault:; if (hardfault) { PCPU_INC(cnt.v_io_faults); curthread->td_ru.ru_majflt++; +#ifdef RACCT + if (racct_enable && fs.object->type == OBJT_VNODE) { + PROC_LOCK(curproc); + if ((fault_type & (VM_PROT_COPY | VM_PROT_WRITE)) != 0) { + racct_add_force(curproc, RACCT_WRITEBPS, + PAGE_SIZE + behind * PAGE_SIZE); + racct_add_force(curproc, RACCT_WRITEIOPS, 1); + } else { + racct_add_force(curproc, RACCT_READBPS, + PAGE_SIZE + ahead * PAGE_SIZE); + racct_add_force(curproc, RACCT_READIOPS, 1); + } + PROC_UNLOCK(curproc); + } +#endif } else curthread->td_ru.ru_minflt++; diff --git a/usr.bin/rctl/rctl.8 b/usr.bin/rctl/rctl.8 index ec97623a56b..2d92d5446dc 100644 --- a/usr.bin/rctl/rctl.8 +++ b/usr.bin/rctl/rctl.8 @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd November 29, 2015 +.Dd January 30, 2016 .Dt RCTL 8 .Os .Sh NAME @@ -204,14 +204,22 @@ resource would be .It Sy shmsize Ta "SysV shared memory size, in bytes" .It Sy wallclock Ta "wallclock time, in seconds" .It Sy pcpu Ta "%CPU, in percents of a single CPU core" +.It Sy readbps Ta "filesystem reads, in bytes per second" +.It Sy writebps Ta "filesystem writes, in bytes per second" +.It Sy readiops Ta "filesystem reads, in operations per second" +.It Sy writeiops Ta "filesystem writes, in operations per second" .El .Sh ACTIONS .Bl -column -offset 3n "pseudoterminals" .It Em action .It Sy deny Ta deny the allocation; not supported for -.Sy cputime +.Sy cputime , +.Sy wallclock , +.Sy readbps , +.Sy writebps , +.Sy readiops , and -.Sy wallclock +.Sy writeiops .It Sy log Ta "log a warning to the console" .It Sy devctl Ta "send notification to" .Xr devd 8 @@ -228,6 +236,12 @@ send a signal to the offending process. See .Xr signal 3 for a list of supported signals +.It Sy throttle Ta "slow down process execution"; only supported for +.Sy readbps , +.Sy writebps , +.Sy readiops , +and +.Sy writeiops . .El .Pp Not all actions are supported for all resources. @@ -287,3 +301,22 @@ under sponsorship from the FreeBSD Foundation. Limiting .Sy memoryuse may kill the machine due to thrashing. +.Pp +The +.Sy readiops +and +.Sy writeiops +counters are only approximations. +Like +.Sy readbps +and +.Sy writebps , +they are calculated in the filesystem layer, where it is difficult +or even impossible to observe actual disk device operations. +.Pp +The +.Sy writebps +and +.Sy writeiops +resources generally account for writes to the filesystem cache, +not to actual devices. From d8258c4498ed7d096573b7210a69d0aa8b5852b7 Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Thu, 7 Apr 2016 05:31:22 +0000 Subject: [PATCH 022/159] hyperv: Use mb() instead of atomic_thread_fence_seq_cst() Since atomic_thread_fence_seq_cst() will become compiler fence on UP kernel. Reviewed by: kib, Dexuan Cui MFC after: 1 week Sponsored by: Microsoft OSTC Differential Revision: https://reviews.freebsd.org/D5852 --- sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c b/sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c index 669a532defc..b3e0b9e9465 100644 --- a/sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c +++ b/sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c @@ -117,8 +117,12 @@ vmbus_msg_swintr(void *arg, int pending __unused) * message_pending and EOMing. Otherwise, the EOMing will * not deliver any more messages * since there is no empty slot + * + * NOTE: + * mb() is used here, since atomic_thread_fence_seq_cst() + * will become compler fence on UP kernel. */ - atomic_thread_fence_seq_cst(); + mb(); if (msg->header.message_flags.u.message_pending) { /* @@ -190,8 +194,12 @@ hv_vmbus_isr(struct trapframe *frame) * message_pending and EOMing. Otherwise, the EOMing will * not deliver any more messages * since there is no empty slot + * + * NOTE: + * mb() is used here, since atomic_thread_fence_seq_cst() + * will become compler fence on UP kernel. */ - atomic_thread_fence_seq_cst(); + mb(); if (msg->header.message_flags.u.message_pending) { /* From aec810d4c56586934ab438f27b12262194104c23 Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Thu, 7 Apr 2016 05:45:49 +0000 Subject: [PATCH 023/159] hyperv/vmbus: Use default mtx for channel message queue First of all sema_post() can't be called w/ spinlock, and the channel message queue processing is not on hot code path, i.e. spinlock is not necessary. Submitted by: Jun Su Reviewed by: sephe, Dexuan Cui MFC after: 1 week Sponsored by: Microsoft OSTC Differential Revision: https://reviews.freebsd.org/D5812 --- sys/dev/hyperv/vmbus/hv_channel.c | 24 ++++++++++++------------ sys/dev/hyperv/vmbus/hv_channel_mgmt.c | 16 ++++++++-------- sys/dev/hyperv/vmbus/hv_connection.c | 14 +++++++------- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/sys/dev/hyperv/vmbus/hv_channel.c b/sys/dev/hyperv/vmbus/hv_channel.c index 03a3457531e..46d15bf09a5 100644 --- a/sys/dev/hyperv/vmbus/hv_channel.c +++ b/sys/dev/hyperv/vmbus/hv_channel.c @@ -270,12 +270,12 @@ hv_vmbus_channel_open( if (user_data_len) memcpy(open_msg->user_data, user_data, user_data_len); - mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_lock(&hv_vmbus_g_connection.channel_msg_lock); TAILQ_INSERT_TAIL( &hv_vmbus_g_connection.channel_msg_anchor, open_info, msg_list_entry); - mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock); ret = hv_vmbus_post_message( open_msg, sizeof(hv_vmbus_channel_open_channel)); @@ -302,12 +302,12 @@ hv_vmbus_channel_open( } cleanup: - mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_lock(&hv_vmbus_g_connection.channel_msg_lock); TAILQ_REMOVE( &hv_vmbus_g_connection.channel_msg_anchor, open_info, msg_list_entry); - mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock); sema_destroy(&open_info->wait_sema); free(open_info, M_DEVBUF); @@ -496,13 +496,13 @@ hv_vmbus_channel_establish_gpadl( gpadl_msg->child_rel_id = channel->offer_msg.child_rel_id; gpadl_msg->gpadl = next_gpadl_handle; - mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_lock(&hv_vmbus_g_connection.channel_msg_lock); TAILQ_INSERT_TAIL( &hv_vmbus_g_connection.channel_msg_anchor, msg_info, msg_list_entry); - mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock); ret = hv_vmbus_post_message( gpadl_msg, @@ -541,10 +541,10 @@ hv_vmbus_channel_establish_gpadl( cleanup: - mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_lock(&hv_vmbus_g_connection.channel_msg_lock); TAILQ_REMOVE(&hv_vmbus_g_connection.channel_msg_anchor, msg_info, msg_list_entry); - mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock); sema_destroy(&msg_info->wait_sema); free(msg_info, M_DEVBUF); @@ -583,10 +583,10 @@ hv_vmbus_channel_teardown_gpdal( msg->child_rel_id = channel->offer_msg.child_rel_id; msg->gpadl = gpadl_handle; - mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_lock(&hv_vmbus_g_connection.channel_msg_lock); TAILQ_INSERT_TAIL(&hv_vmbus_g_connection.channel_msg_anchor, info, msg_list_entry); - mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock); ret = hv_vmbus_post_message(msg, sizeof(hv_vmbus_channel_gpadl_teardown)); @@ -599,10 +599,10 @@ hv_vmbus_channel_teardown_gpdal( /* * Received a torndown response */ - mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_lock(&hv_vmbus_g_connection.channel_msg_lock); TAILQ_REMOVE(&hv_vmbus_g_connection.channel_msg_anchor, info, msg_list_entry); - mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock); sema_destroy(&info->wait_sema); free(info, M_DEVBUF); diff --git a/sys/dev/hyperv/vmbus/hv_channel_mgmt.c b/sys/dev/hyperv/vmbus/hv_channel_mgmt.c index 30f2504ef7d..42d3750a24f 100644 --- a/sys/dev/hyperv/vmbus/hv_channel_mgmt.c +++ b/sys/dev/hyperv/vmbus/hv_channel_mgmt.c @@ -492,7 +492,7 @@ vmbus_channel_on_open_result(hv_vmbus_channel_msg_header* hdr) /* * Find the open msg, copy the result and signal/unblock the wait event */ - mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_lock(&hv_vmbus_g_connection.channel_msg_lock); TAILQ_FOREACH(msg_info, &hv_vmbus_g_connection.channel_msg_anchor, msg_list_entry) { @@ -510,7 +510,7 @@ vmbus_channel_on_open_result(hv_vmbus_channel_msg_header* hdr) } } } - mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock); } @@ -534,7 +534,7 @@ vmbus_channel_on_gpadl_created(hv_vmbus_channel_msg_header* hdr) /* Find the establish msg, copy the result and signal/unblock * the wait event */ - mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_lock(&hv_vmbus_g_connection.channel_msg_lock); TAILQ_FOREACH(msg_info, &hv_vmbus_g_connection.channel_msg_anchor, msg_list_entry) { request_header = (hv_vmbus_channel_msg_header*) msg_info->msg; @@ -553,7 +553,7 @@ vmbus_channel_on_gpadl_created(hv_vmbus_channel_msg_header* hdr) } } } - mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock); } /** @@ -578,7 +578,7 @@ vmbus_channel_on_gpadl_torndown(hv_vmbus_channel_msg_header* hdr) * wait event. */ - mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_lock(&hv_vmbus_g_connection.channel_msg_lock); TAILQ_FOREACH(msg_info, &hv_vmbus_g_connection.channel_msg_anchor, msg_list_entry) { @@ -598,7 +598,7 @@ vmbus_channel_on_gpadl_torndown(hv_vmbus_channel_msg_header* hdr) } } } - mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock); } /** @@ -618,7 +618,7 @@ vmbus_channel_on_version_response(hv_vmbus_channel_msg_header* hdr) versionResponse = (hv_vmbus_channel_version_response*)hdr; - mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_lock(&hv_vmbus_g_connection.channel_msg_lock); TAILQ_FOREACH(msg_info, &hv_vmbus_g_connection.channel_msg_anchor, msg_list_entry) { requestHeader = (hv_vmbus_channel_msg_header*) msg_info->msg; @@ -632,7 +632,7 @@ vmbus_channel_on_version_response(hv_vmbus_channel_msg_header* hdr) sema_post(&msg_info->wait_sema); } } - mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock); } diff --git a/sys/dev/hyperv/vmbus/hv_connection.c b/sys/dev/hyperv/vmbus/hv_connection.c index e1702981b72..44effef3bdb 100644 --- a/sys/dev/hyperv/vmbus/hv_connection.c +++ b/sys/dev/hyperv/vmbus/hv_connection.c @@ -96,26 +96,26 @@ hv_vmbus_negotiate_version(hv_vmbus_channel_msg_info *msg_info, * Add to list before we send the request since we may receive the * response before returning from this routine */ - mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_lock(&hv_vmbus_g_connection.channel_msg_lock); TAILQ_INSERT_TAIL( &hv_vmbus_g_connection.channel_msg_anchor, msg_info, msg_list_entry); - mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock); ret = hv_vmbus_post_message( msg, sizeof(hv_vmbus_channel_initiate_contact)); if (ret != 0) { - mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_lock(&hv_vmbus_g_connection.channel_msg_lock); TAILQ_REMOVE( &hv_vmbus_g_connection.channel_msg_anchor, msg_info, msg_list_entry); - mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock); return (ret); } @@ -124,12 +124,12 @@ hv_vmbus_negotiate_version(hv_vmbus_channel_msg_info *msg_info, */ ret = sema_timedwait(&msg_info->wait_sema, 5 * hz); /* KYS 5 seconds */ - mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_lock(&hv_vmbus_g_connection.channel_msg_lock); TAILQ_REMOVE( &hv_vmbus_g_connection.channel_msg_anchor, msg_info, msg_list_entry); - mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock); + mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock); /** * Check if successful @@ -166,7 +166,7 @@ hv_vmbus_connect(void) { TAILQ_INIT(&hv_vmbus_g_connection.channel_msg_anchor); mtx_init(&hv_vmbus_g_connection.channel_msg_lock, "vmbus channel msg", - NULL, MTX_SPIN); + NULL, MTX_DEF); TAILQ_INIT(&hv_vmbus_g_connection.channel_anchor); mtx_init(&hv_vmbus_g_connection.channel_lock, "vmbus channel", From a1210870691adc36715085614ca7572ed6ed990d Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Thu, 7 Apr 2016 05:56:22 +0000 Subject: [PATCH 024/159] hyperv: Typo in r297634 Noticed by: hiren MFC after: 1 week Sponsored by: Microsoft OSTC --- sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c b/sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c index b3e0b9e9465..3f6e019ea34 100644 --- a/sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c +++ b/sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c @@ -120,7 +120,7 @@ vmbus_msg_swintr(void *arg, int pending __unused) * * NOTE: * mb() is used here, since atomic_thread_fence_seq_cst() - * will become compler fence on UP kernel. + * will become compiler fence on UP kernel. */ mb(); @@ -197,7 +197,7 @@ hv_vmbus_isr(struct trapframe *frame) * * NOTE: * mb() is used here, since atomic_thread_fence_seq_cst() - * will become compler fence on UP kernel. + * will become compiler fence on UP kernel. */ mb(); From fa2201def5c413ff622e4df3eb765ed861d7dfd0 Mon Sep 17 00:00:00 2001 From: Enji Cooper Date: Thu, 7 Apr 2016 06:21:33 +0000 Subject: [PATCH 025/159] Disable the NetBSD-specific EFAULT requirements test in gettimeofday_err FreeBSD doesn't specifically list this as a supported error, and in some configurations/versions of FreeBSD, this test will segfault as the memory address might be evaluated in userspace, instead of in kernel space like in NetBSD. MFC after: 1 week Sponsored by: EMC / Isilon Storage Division --- contrib/netbsd-tests/lib/libc/sys/t_gettimeofday.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/contrib/netbsd-tests/lib/libc/sys/t_gettimeofday.c b/contrib/netbsd-tests/lib/libc/sys/t_gettimeofday.c index 1cf303b08e3..4d82a26adc4 100644 --- a/contrib/netbsd-tests/lib/libc/sys/t_gettimeofday.c +++ b/contrib/netbsd-tests/lib/libc/sys/t_gettimeofday.c @@ -46,9 +46,11 @@ ATF_TC_HEAD(gettimeofday_err, tc) ATF_TC_BODY(gettimeofday_err, tc) { +#ifdef __NetBSD__ errno = 0; ATF_REQUIRE_ERRNO(EFAULT, gettimeofday((void *)-1, NULL) != 0); +#endif } ATF_TC(gettimeofday_mono); From 8b0986c27f99da330e5a7fe63664a7d8fb68d025 Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Thu, 7 Apr 2016 06:36:03 +0000 Subject: [PATCH 026/159] x86: Allow interrupt vector allocation/free even on UP It is needed by the hypervisor FreeBSD guest to allocate/free private interrupt vectors. Reviewed by: kib, jhb, Dexuan Cui Sponsored by: Microsoft OSTC Differential Revision: https://reviews.freebsd.org/D5849 --- sys/x86/x86/local_apic.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sys/x86/x86/local_apic.c b/sys/x86/x86/local_apic.c index 82efae3a09e..5830b771026 100644 --- a/sys/x86/x86/local_apic.c +++ b/sys/x86/x86/local_apic.c @@ -321,9 +321,9 @@ static int native_lapic_set_lvt_triggermode(u_int apic_id, u_int lvt, static void native_lapic_ipi_raw(register_t icrlo, u_int dest); static void native_lapic_ipi_vectored(u_int vector, int dest); static int native_lapic_ipi_wait(int delay); +#endif /* SMP */ static int native_lapic_ipi_alloc(inthand_t *ipifunc); static void native_lapic_ipi_free(int vector); -#endif /* SMP */ struct apic_ops apic_ops = { .create = native_lapic_create, @@ -350,9 +350,9 @@ struct apic_ops apic_ops = { .ipi_raw = native_lapic_ipi_raw, .ipi_vectored = native_lapic_ipi_vectored, .ipi_wait = native_lapic_ipi_wait, +#endif .ipi_alloc = native_lapic_ipi_alloc, .ipi_free = native_lapic_ipi_free, -#endif .set_lvt_mask = native_lapic_set_lvt_mask, .set_lvt_mode = native_lapic_set_lvt_mode, .set_lvt_polarity = native_lapic_set_lvt_polarity, @@ -1904,6 +1904,8 @@ native_lapic_ipi_vectored(u_int vector, int dest) #endif /* DETECT_DEADLOCK */ } +#endif /* SMP */ + /* * Since the IDT is shared by all CPUs the IPI slot update needs to be globally * visible. @@ -1958,5 +1960,3 @@ native_lapic_ipi_free(int vector) setidt(vector, &IDTVEC(rsvd), SDT_APICT, SEL_KPL, GSEL_APIC); mtx_unlock_spin(&icu_lock); } - -#endif /* SMP */ From 19605ff7580ab11c2c049295904ea5fd1e5f2ee6 Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Thu, 7 Apr 2016 07:00:00 +0000 Subject: [PATCH 027/159] xen: Set ipi_{alloc,free} even for UP This keeps XEN apic_ops aligned w/ x86's. Suggested by: kib, jhb Reviewed by: jhb, royger Sponsored by: Microsoft OSTC Differential Revision: https://reviews.freebsd.org/D5871 --- sys/x86/xen/xen_apic.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/x86/xen/xen_apic.c b/sys/x86/xen/xen_apic.c index 9400378d1b3..4d7a39ba5ee 100644 --- a/sys/x86/xen/xen_apic.c +++ b/sys/x86/xen/xen_apic.c @@ -296,6 +296,7 @@ xen_pv_lapic_ipi_wait(int delay) XEN_APIC_UNSUPPORTED; return (0); } +#endif /* SMP */ static int xen_pv_lapic_ipi_alloc(inthand_t *ipifunc) @@ -311,7 +312,6 @@ xen_pv_lapic_ipi_free(int vector) XEN_APIC_UNSUPPORTED; } -#endif /* SMP */ static int xen_pv_lapic_set_lvt_mask(u_int apic_id, u_int lvt, u_char masked) @@ -372,9 +372,9 @@ struct apic_ops xen_apic_ops = { .ipi_raw = xen_pv_lapic_ipi_raw, .ipi_vectored = xen_pv_lapic_ipi_vectored, .ipi_wait = xen_pv_lapic_ipi_wait, +#endif .ipi_alloc = xen_pv_lapic_ipi_alloc, .ipi_free = xen_pv_lapic_ipi_free, -#endif .set_lvt_mask = xen_pv_lapic_set_lvt_mask, .set_lvt_mode = xen_pv_lapic_set_lvt_mode, .set_lvt_polarity = xen_pv_lapic_set_lvt_polarity, From e43d20993aba73de4d963504289733d3d9c61c2d Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Thu, 7 Apr 2016 07:12:57 +0000 Subject: [PATCH 028/159] hyperv: Use lapic_{alloc,free}_ipi to allocate private interrupt vector Suggested by: jhb Reviewed by: Dexuan Cui , Jun Su Sponsored by: Microsoft OSTC Differential Revision: https://reviews.freebsd.org/D5850 --- sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c | 86 +++------------------ sys/dev/hyperv/vmbus/hv_vmbus_priv.h | 4 +- 2 files changed, 11 insertions(+), 79 deletions(-) diff --git a/sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c b/sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c index 3f6e019ea34..8a07e4517b0 100644 --- a/sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c +++ b/sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c @@ -391,80 +391,9 @@ vmbus_probe(device_t dev) { } #ifdef HYPERV -extern inthand_t IDTVEC(rsvd), IDTVEC(hv_vmbus_callback); - -/** - * @brief Find a free IDT slot and setup the interrupt handler. - */ -static int -vmbus_vector_alloc(void) -{ - int vector; - uintptr_t func; - struct gate_descriptor *ip; - - /* - * Search backwards form the highest IDT vector available for use - * as vmbus channel callback vector. We install 'hv_vmbus_callback' - * handler at that vector and use it to interrupt vcpus. - */ - vector = APIC_SPURIOUS_INT; - while (--vector >= APIC_IPI_INTS) { - ip = &idt[vector]; - func = ((long)ip->gd_hioffset << 16 | ip->gd_looffset); - if (func == (uintptr_t)&IDTVEC(rsvd)) { -#ifdef __i386__ - setidt(vector , IDTVEC(hv_vmbus_callback), SDT_SYS386IGT, - SEL_KPL, GSEL(GCODE_SEL, SEL_KPL)); -#else - setidt(vector , IDTVEC(hv_vmbus_callback), SDT_SYSIGT, - SEL_KPL, 0); +extern inthand_t IDTVEC(hv_vmbus_callback); #endif - return (vector); - } - } - return (0); -} - -/** - * @brief Restore the IDT slot to rsvd. - */ -static void -vmbus_vector_free(int vector) -{ - uintptr_t func; - struct gate_descriptor *ip; - - if (vector == 0) - return; - - KASSERT(vector >= APIC_IPI_INTS && vector < APIC_SPURIOUS_INT, - ("invalid vector %d", vector)); - - ip = &idt[vector]; - func = ((long)ip->gd_hioffset << 16 | ip->gd_looffset); - KASSERT(func == (uintptr_t)&IDTVEC(hv_vmbus_callback), - ("invalid vector %d", vector)); - - setidt(vector, IDTVEC(rsvd), SDT_SYSIGT, SEL_KPL, 0); -} - -#else /* HYPERV */ - -static int -vmbus_vector_alloc(void) -{ - return(0); -} - -static void -vmbus_vector_free(int vector) -{ -} - -#endif /* HYPERV */ - /** * @brief Main vmbus driver initialization routine. * @@ -497,12 +426,15 @@ vmbus_bus_init(void) return (ret); } +#ifdef HYPERV /* * Find a free IDT slot for vmbus callback. */ - hv_vmbus_g_context.hv_cb_vector = vmbus_vector_alloc(); - - if (hv_vmbus_g_context.hv_cb_vector == 0) { + hv_vmbus_g_context.hv_cb_vector = lapic_ipi_alloc(IDTVEC(hv_vmbus_callback)); +#else + hv_vmbus_g_context.hv_cb_vector = -1; +#endif + if (hv_vmbus_g_context.hv_cb_vector < 0) { if(bootverbose) printf("Error VMBUS: Cannot find free IDT slot for " "vmbus callback!\n"); @@ -595,7 +527,7 @@ vmbus_bus_init(void) } } - vmbus_vector_free(hv_vmbus_g_context.hv_cb_vector); + lapic_ipi_free(hv_vmbus_g_context.hv_cb_vector); cleanup: hv_vmbus_cleanup(); @@ -663,7 +595,7 @@ vmbus_bus_exit(void) } } - vmbus_vector_free(hv_vmbus_g_context.hv_cb_vector); + lapic_ipi_free(hv_vmbus_g_context.hv_cb_vector); return; } diff --git a/sys/dev/hyperv/vmbus/hv_vmbus_priv.h b/sys/dev/hyperv/vmbus/hv_vmbus_priv.h index 1a0ed045545..bc625a0af97 100644 --- a/sys/dev/hyperv/vmbus/hv_vmbus_priv.h +++ b/sys/dev/hyperv/vmbus/hv_vmbus_priv.h @@ -208,10 +208,10 @@ typedef struct { struct taskqueue *hv_msg_tq[MAXCPU]; struct task hv_msg_task[MAXCPU]; /* - * Host use this vector to intrrupt guest for vmbus channel + * Host use this vector to interrupt guest for vmbus channel * event and msg. */ - unsigned int hv_cb_vector; + int hv_cb_vector; } hv_vmbus_context; /* From 5ce34567e6b9e87b0cab1a9f6079e134a80e49e3 Mon Sep 17 00:00:00 2001 From: Stanislav Galabov Date: Thu, 7 Apr 2016 07:22:22 +0000 Subject: [PATCH 029/159] This revision adds support to if_rt for more SoCs. The SoCs I've tried the driver with include the following: RT3050, RT5350, RT3662, RT3883, MT7620, MT7621, MT7688. On boards, based on the above SoCs traffic is passing through correctly and the boards survive a flood ping with very little or no drops (drops may be caused elsewhere in my test setup, however). One issue still remains and needs to be fixed in the future: if_rt does not survive an ifconfig rt0 down/ifconfig rt0 up cycle. This issue existed before this commit as well, however. Reviewed by: ray Approved by: adrian (mentor) Sponsored by: Smartcom - Bulgaria AD Differential Revision: https://reviews.freebsd.org/D5864 --- sys/dev/rt/if_rt.c | 112 ++++++++++++++++++++++++++---------------- sys/dev/rt/if_rtvar.h | 13 +++++ 2 files changed, 82 insertions(+), 43 deletions(-) diff --git a/sys/dev/rt/if_rt.c b/sys/dev/rt/if_rt.c index 8057b2c6dcb..ff0874819a1 100644 --- a/sys/dev/rt/if_rt.c +++ b/sys/dev/rt/if_rt.c @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2015, Stanislav Galabov + * Copyright (c) 2015-2016, Stanislav Galabov * Copyright (c) 2014, Aleksandr A. Mityaev * Copyright (c) 2011, Aleksandr Rybalko * based on hard work @@ -54,6 +54,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -69,8 +70,10 @@ __FBSDID("$FreeBSD$"); #include #include +#if 0 #include #include +#endif #ifdef IF_RT_PHY_SUPPORT #include "miibus_if.h" @@ -89,19 +92,20 @@ __FBSDID("$FreeBSD$"); #define RT_TX_WATCHDOG_TIMEOUT 5 #define RT_CHIPID_RT3050 0x3050 -#define RT_CHIPID_RT3052 0x3052 #define RT_CHIPID_RT5350 0x5350 -#define RT_CHIPID_RT6855 0x6855 #define RT_CHIPID_MT7620 0x7620 +#define RT_CHIPID_MT7621 0x7621 #ifdef FDT /* more specific and new models should go first */ static const struct ofw_compat_data rt_compat_data[] = { - { "ralink,rt6855-eth", (uintptr_t)RT_CHIPID_RT6855 }, - { "ralink,rt5350-eth", (uintptr_t)RT_CHIPID_RT5350 }, - { "ralink,rt3052-eth", (uintptr_t)RT_CHIPID_RT3052 }, - { "ralink,rt305x-eth", (uintptr_t)RT_CHIPID_RT3050 }, - { NULL, (uintptr_t)NULL } + { "ralink,rt3050-eth", RT_CHIPID_RT3050 }, + { "ralink,rt3352-eth", RT_CHIPID_RT3050 }, + { "ralink,rt3883-eth", RT_CHIPID_RT3050 }, + { "ralink,rt5350-eth", RT_CHIPID_RT5350 }, + { "ralink,mt7620a-eth", RT_CHIPID_MT7620 }, + { "ralink,mt7621-eth", RT_CHIPID_MT7621 }, + { NULL, 0 } }; #endif @@ -182,21 +186,23 @@ rt_probe(device_t dev) const struct ofw_compat_data * cd; cd = ofw_bus_search_compatible(dev, rt_compat_data); - if (cd->ocd_data == (uintptr_t)NULL) + if (cd->ocd_data == 0) return (ENXIO); sc->rt_chipid = (unsigned int)(cd->ocd_data); #else #if defined(MT7620) sc->rt_chipid = RT_CHIPID_MT7620; +#elif defined(MT7621) + sc->rt_chipid = RT_CHIPID_MT7621; #elif defined(RT5350) sc->rt_chipid = RT_CHIPID_RT5350; #else sc->rt_chipid = RT_CHIPID_RT3050; #endif #endif - snprintf(buf, sizeof(buf), "Ralink RT%x onChip Ethernet driver", - sc->rt_chipid); + snprintf(buf, sizeof(buf), "Ralink %cT%x onChip Ethernet driver", + sc->rt_chipid >= 0x7600 ? 'M' : 'R', sc->rt_chipid); device_set_desc_copy(dev, buf); return (BUS_PROBE_GENERIC); } @@ -373,12 +379,26 @@ rt_attach(device_t dev) /* Reset hardware */ reset_freng(sc); + + + if (sc->rt_chipid == RT_CHIPID_MT7620) { + sc->csum_fail_ip = MT7620_RXD_SRC_IP_CSUM_FAIL; + sc->csum_fail_l4 = MT7620_RXD_SRC_L4_CSUM_FAIL; + } else if (sc->rt_chipid == RT_CHIPID_MT7621) { + sc->csum_fail_ip = MT7621_RXD_SRC_IP_CSUM_FAIL; + sc->csum_fail_l4 = MT7621_RXD_SRC_L4_CSUM_FAIL; + } else { + sc->csum_fail_ip = RT305X_RXD_SRC_IP_CSUM_FAIL; + sc->csum_fail_l4 = RT305X_RXD_SRC_L4_CSUM_FAIL; + } /* Fill in soc-specific registers map */ switch(sc->rt_chipid) { case RT_CHIPID_MT7620: + case RT_CHIPID_MT7621: case RT_CHIPID_RT5350: - device_printf(dev, "RT%x Ethernet MAC (rev 0x%08x)\n", + device_printf(dev, "%cT%x Ethernet MAC (rev 0x%08x)\n", + sc->rt_chipid >= 0x7600 ? 'M' : 'R', sc->rt_chipid, sc->mac_rev); /* RT5350: No GDMA, PSE, CDMA, PPE */ RT_WRITE(sc, GE_PORT_BASE + 0x0C00, // UDPCS, TCPCS, IPCS=1 @@ -406,10 +426,6 @@ rt_attach(device_t dev) sc->int_rx_done_mask=RT5350_INT_RXQ0_DONE; sc->int_tx_done_mask=RT5350_INT_TXQ0_DONE; break; - case RT_CHIPID_RT6855: - device_printf(dev, "RT6855 Ethernet MAC (rev 0x%08x)\n", - sc->mac_rev); - break; default: device_printf(dev, "RT305XF Ethernet MAC (rev 0x%08x)\n", sc->mac_rev); @@ -533,7 +549,8 @@ rt_attach(device_t dev) /* set up interrupt */ error = bus_setup_intr(dev, sc->irq, INTR_TYPE_NET | INTR_MPSAFE, NULL, (sc->rt_chipid == RT_CHIPID_RT5350 || - sc->rt_chipid == RT_CHIPID_MT7620) ? rt_rt5350_intr : rt_intr, + sc->rt_chipid == RT_CHIPID_MT7620 || + sc->rt_chipid == RT_CHIPID_MT7621) ? rt_rt5350_intr : rt_intr, sc, &sc->irqh); if (error != 0) { printf("%s: could not set up interrupt\n", @@ -763,7 +780,7 @@ rt_init_locked(void *priv) //rt305x_sysctl_set(SYSCTL_RSTCTRL, SYSCTL_RSTCTRL_FRENG); /* Fwd to CPU (uni|broad|multi)cast and Unknown */ - if(sc->rt_chipid == RT_CHIPID_RT3050 || sc->rt_chipid == RT_CHIPID_RT3052) + if(sc->rt_chipid == RT_CHIPID_RT3050) RT_WRITE(sc, GDMA1_BASE + GDMA_FWD_CFG, ( GDM_ICS_EN | /* Enable IP Csum */ @@ -831,7 +848,8 @@ rt_init_locked(void *priv) /* write back DDONE, 16byte burst enable RX/TX DMA */ tmp = FE_TX_WB_DDONE | FE_DMA_BT_SIZE16 | FE_RX_DMA_EN | FE_TX_DMA_EN; - if (sc->rt_chipid == RT_CHIPID_MT7620) + if (sc->rt_chipid == RT_CHIPID_MT7620 || + sc->rt_chipid == RT_CHIPID_MT7621) tmp |= (1<<31); RT_WRITE(sc, sc->pdma_glo_cfg, tmp); @@ -843,7 +861,8 @@ rt_init_locked(void *priv) /* enable interrupts */ if (sc->rt_chipid == RT_CHIPID_RT5350 || - sc->rt_chipid == RT_CHIPID_MT7620) + sc->rt_chipid == RT_CHIPID_MT7620 || + sc->rt_chipid == RT_CHIPID_MT7621) tmp = RT5350_INT_TX_COHERENT | RT5350_INT_RX_COHERENT | RT5350_INT_TXQ3_DONE | @@ -945,7 +964,8 @@ rt_stop_locked(void *priv) RT_WRITE(sc, sc->fe_int_enable, 0); if(sc->rt_chipid == RT_CHIPID_RT5350 || - sc->rt_chipid == RT_CHIPID_MT7620) { + sc->rt_chipid == RT_CHIPID_MT7620 || + sc->rt_chipid == RT_CHIPID_MT7621) { } else { /* reset adapter */ RT_WRITE(sc, GE_PORT_BASE + FE_RST_GLO, PSE_RESET); @@ -1055,22 +1075,29 @@ rt_tx_data(struct rt_softc *sc, struct mbuf *m, int qid) /* TODO: this needs to be refined as MT7620 for example has * a different word3 layout than RT305x and RT5350 (the last - * one doesn't use word3 at all). + * one doesn't use word3 at all). And so does MT7621... */ - /* Set destination */ - if (sc->rt_chipid != RT_CHIPID_MT7620) - desc->dst = (TXDSCR_DST_PORT_GDMA1); + if (sc->rt_chipid != RT_CHIPID_MT7621) { + /* Set destination */ + if (sc->rt_chipid != RT_CHIPID_MT7620) + desc->dst = (TXDSCR_DST_PORT_GDMA1); - if ((ifp->if_capenable & IFCAP_TXCSUM) != 0) - desc->dst |= (TXDSCR_IP_CSUM_GEN|TXDSCR_UDP_CSUM_GEN| - TXDSCR_TCP_CSUM_GEN); - /* Set queue id */ - desc->qn = qid; - /* No PPPoE */ - desc->pppoe = 0; - /* No VLAN */ - desc->vid = 0; + if ((ifp->if_capenable & IFCAP_TXCSUM) != 0) + desc->dst |= (TXDSCR_IP_CSUM_GEN | + TXDSCR_UDP_CSUM_GEN | TXDSCR_TCP_CSUM_GEN); + /* Set queue id */ + desc->qn = qid; + /* No PPPoE */ + desc->pppoe = 0; + /* No VLAN */ + desc->vid = 0; + } else { + desc->vid = 0; + desc->pppoe = 0; + desc->qn = 0; + desc->dst = 2; + } desc->sdp0 = htole32(dma_seg[i].ds_addr); desc->sdl0 = htole16(dma_seg[i].ds_len | @@ -1714,7 +1741,8 @@ rt_tx_done_task(void *context, int pending) ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; if(sc->rt_chipid == RT_CHIPID_RT5350 || - sc->rt_chipid == RT_CHIPID_MT7620) + sc->rt_chipid == RT_CHIPID_MT7620 || + sc->rt_chipid == RT_CHIPID_MT7621) intr_mask = ( RT5350_INT_TXQ3_DONE | RT5350_INT_TXQ2_DONE | @@ -1870,15 +1898,13 @@ rt_rx_eof(struct rt_softc *sc, struct rt_softc_rx_ring *ring, int limit) BUS_DMASYNC_PREREAD); m = data->m; - desc_flags = desc->src; + desc_flags = desc->word3; data->m = mnew; /* Add 2 for proper align of RX IP header */ desc->sdp0 = htole32(segs[0].ds_addr+2); desc->sdl0 = htole32(segs[0].ds_len-2); - desc->src = 0; - desc->ai = 0; - desc->foe = 0; + desc->word3 = 0; RT_DPRINTF(sc, RT_DEBUG_RX, "Rx frame: rxdesc flags=0x%08x\n", desc_flags); @@ -1891,8 +1917,7 @@ rt_rx_eof(struct rt_softc *sc, struct rt_softc_rx_ring *ring, int limit) /* check for crc errors */ if ((ifp->if_capenable & IFCAP_RXCSUM) != 0) { /*check for valid checksum*/ - if (desc_flags & (RXDSXR_SRC_IP_CSUM_FAIL| - RXDSXR_SRC_L4_CSUM_FAIL)) { + if (desc_flags & (sc->csum_fail_ip|sc->csum_fail_l4)) { RT_DPRINTF(sc, RT_DEBUG_RX, "rxdesc: crc error\n"); @@ -1903,7 +1928,7 @@ rt_rx_eof(struct rt_softc *sc, struct rt_softc_rx_ring *ring, int limit) goto skip; } } - if ((desc_flags & RXDSXR_SRC_IP_CSUM_FAIL) != 0) { + if ((desc_flags & sc->csum_fail_ip) == 0) { m->m_pkthdr.csum_flags |= CSUM_IP_CHECKED; m->m_pkthdr.csum_flags |= CSUM_IP_VALID; m->m_pkthdr.csum_data = 0xffff; @@ -2031,7 +2056,8 @@ rt_watchdog(struct rt_softc *sc) int ntries; #endif if(sc->rt_chipid != RT_CHIPID_RT5350 && - sc->rt_chipid != RT_CHIPID_MT7620) { + sc->rt_chipid != RT_CHIPID_MT7620 && + sc->rt_chipid != RT_CHIPID_MT7621) { tmp = RT_READ(sc, PSE_BASE + CDMA_OQ_STA); RT_DPRINTF(sc, RT_DEBUG_WATCHDOG, diff --git a/sys/dev/rt/if_rtvar.h b/sys/dev/rt/if_rtvar.h index f46574f11b4..b2869c5e61e 100644 --- a/sys/dev/rt/if_rtvar.h +++ b/sys/dev/rt/if_rtvar.h @@ -115,12 +115,21 @@ struct rt_txdesc } __packed; #define RT_RXDESC_SDL0_DDONE (1 << 15) + +#define RT305X_RXD_SRC_L4_CSUM_FAIL (1 << 28) +#define RT305X_RXD_SRC_IP_CSUM_FAIL (1 << 29) +#define MT7620_RXD_SRC_L4_CSUM_FAIL (1 << 22) +#define MT7620_RXD_SRC_IP_CSUM_FAIL (1 << 25) +#define MT7621_RXD_SRC_L4_CSUM_FAIL (1 << 23) +#define MT7621_RXD_SRC_IP_CSUM_FAIL (1 << 26) + struct rt_rxdesc { uint32_t sdp0; uint16_t sdl1; uint16_t sdl0; uint32_t sdp1; +#if 0 uint16_t foe; #define RXDSXR_FOE_ENTRY_VALID 0x40 #define RXDSXR_FOE_ENTRY_MASK 0x3f @@ -134,6 +143,8 @@ struct rt_rxdesc #define RXDSXR_SRC_L4_CSUM_FAIL 0x10 #define RXDSXR_SRC_AIS 0x08 #define RXDSXR_SRC_PORT_MASK 0x07 +#endif + uint32_t word3; } __packed; struct rt_softc_rx_data @@ -263,6 +274,8 @@ struct rt_softc uint32_t rt_chipid; /* chip specific registers config */ int rx_ring_count; + uint32_t csum_fail_l4; + uint32_t csum_fail_ip; uint32_t int_rx_done_mask; uint32_t int_tx_done_mask; uint32_t delay_int_cfg; From 44249214d31199623db2bb9de4680dd7364d5256 Mon Sep 17 00:00:00 2001 From: Randall Stewart Date: Thu, 7 Apr 2016 09:10:34 +0000 Subject: [PATCH 030/159] This is work done by Michael Tuexen and myself at the IETF. This adds the new I-Data (Interleaved Data) message. This allows a user to be able to have complete freedom from Head Of Line blocking that was previously there due to the in-ability to send multiple large messages without the TSN's being in sequence. The code as been tested with Michaels various packet drill scripts as well as inter-networking between the IETF's location in Argentina and Germany. --- sys/netinet/sctp.h | 6 +- sys/netinet/sctp_constants.h | 23 +- sys/netinet/sctp_dtrace_define.h | 176 +- sys/netinet/sctp_header.h | 23 + sys/netinet/sctp_indata.c | 3050 ++++++++++++++++-------------- sys/netinet/sctp_indata.h | 20 +- sys/netinet/sctp_input.c | 71 +- sys/netinet/sctp_os_bsd.h | 4 +- sys/netinet/sctp_output.c | 218 ++- sys/netinet/sctp_pcb.c | 157 +- sys/netinet/sctp_pcb.h | 3 + sys/netinet/sctp_structs.h | 36 +- sys/netinet/sctp_sysctl.h | 2 +- sys/netinet/sctp_uio.h | 13 +- sys/netinet/sctp_usrreq.c | 72 + sys/netinet/sctp_var.h | 14 +- sys/netinet/sctputil.c | 116 +- sys/netinet/sctputil.h | 3 + 18 files changed, 2264 insertions(+), 1743 deletions(-) diff --git a/sys/netinet/sctp.h b/sys/netinet/sctp.h index 784c1d47e9f..ec42cffaf66 100644 --- a/sys/netinet/sctp.h +++ b/sys/netinet/sctp.h @@ -196,6 +196,9 @@ struct sctp_paramhdr { #define SCTP_SS_VALUE 0x00001204 #define SCTP_CC_OPTION 0x00001205 /* Options for CC * modules */ +/* For I-DATA */ +#define SCTP_INTERLEAVING_SUPPORTED 0x00001206 + /* read only */ #define SCTP_GET_SNDBUF_USE 0x00001101 #define SCTP_GET_STAT_LOG 0x00001103 @@ -452,6 +455,7 @@ struct sctp_error_auth_invalid_hmac { /* EY nr_sack chunk id*/ #define SCTP_NR_SELECTIVE_ACK 0x10 /************0x40 series ***********/ +#define SCTP_IDATA 0x40 /************0x80 series ***********/ /* RFC5061 */ #define SCTP_ASCONF_ACK 0x80 @@ -467,7 +471,7 @@ struct sctp_error_auth_invalid_hmac { #define SCTP_FORWARD_CUM_TSN 0xc0 /* RFC5061 */ #define SCTP_ASCONF 0xc1 - +#define SCTP_IFORWARD_CUM_TSN 0xc2 /* ABORT and SHUTDOWN COMPLETE FLAG */ #define SCTP_HAD_NO_TCB 0x01 diff --git a/sys/netinet/sctp_constants.h b/sys/netinet/sctp_constants.h index 497dde64b1b..6c1a01437c7 100644 --- a/sys/netinet/sctp_constants.h +++ b/sys/netinet/sctp_constants.h @@ -386,8 +386,8 @@ __FBSDID("$FreeBSD$"); /* align to 32-bit sizes */ #define SCTP_SIZE32(x) ((((x) + 3) >> 2) << 2) -#define IS_SCTP_CONTROL(a) ((a)->chunk_type != SCTP_DATA) -#define IS_SCTP_DATA(a) ((a)->chunk_type == SCTP_DATA) +#define IS_SCTP_CONTROL(a) (((a)->chunk_type != SCTP_DATA) && ((a)->chunk_type != SCTP_IDATA)) +#define IS_SCTP_DATA(a) (((a)->chunk_type == SCTP_DATA) || ((a)->chunk_type == SCTP_IDATA)) /* SCTP parameter types */ @@ -886,12 +886,19 @@ __FBSDID("$FreeBSD$"); /* modular comparison */ /* See RFC 1982 for details. */ -#define SCTP_SSN_GT(a, b) (((a < b) && ((uint16_t)(b - a) > (1U<<15))) || \ - ((a > b) && ((uint16_t)(a - b) < (1U<<15)))) -#define SCTP_SSN_GE(a, b) (SCTP_SSN_GT(a, b) || (a == b)) -#define SCTP_TSN_GT(a, b) (((a < b) && ((uint32_t)(b - a) > (1U<<31))) || \ - ((a > b) && ((uint32_t)(a - b) < (1U<<31)))) -#define SCTP_TSN_GE(a, b) (SCTP_TSN_GT(a, b) || (a == b)) +#define SCTP_UINT16_GT(a, b) (((a < b) && ((uint16_t)(b - a) > (1U<<15))) || \ + ((a > b) && ((uint16_t)(a - b) < (1U<<15)))) +#define SCTP_UINT16_GE(a, b) (SCTP_UINT16_GT(a, b) || (a == b)) +#define SCTP_UINT32_GT(a, b) (((a < b) && ((uint32_t)(b - a) > (1U<<31))) || \ + ((a > b) && ((uint32_t)(a - b) < (1U<<31)))) +#define SCTP_UINT32_GE(a, b) (SCTP_UINT32_GT(a, b) || (a == b)) + +#define SCTP_SSN_GT(a, b) SCTP_UINT16_GT(a, b) +#define SCTP_SSN_GE(a, b) SCTP_UINT16_GE(a, b) +#define SCTP_TSN_GT(a, b) SCTP_UINT32_GT(a, b) +#define SCTP_TSN_GE(a, b) SCTP_UINT32_GE(a, b) +#define SCTP_MSGID_GT(o, a, b) ((o == 1) ? SCTP_UINT16_GT((uint16_t)a, (uint16_t)b) : SCTP_UINT32_GT(a, b)) +#define SCTP_MSGID_GE(o, a, b) ((o == 1) ? SCTP_UINT16_GE((uint16_t)a, (uint16_t)b) : SCTP_UINT32_GE(a, b)) /* Mapping array manipulation routines */ #define SCTP_IS_TSN_PRESENT(arry, gap) ((arry[(gap >> 3)] >> (gap & 0x07)) & 0x01) diff --git a/sys/netinet/sctp_dtrace_define.h b/sys/netinet/sctp_dtrace_define.h index f34effbddf5..19f44da482e 100644 --- a/sys/netinet/sctp_dtrace_define.h +++ b/sys/netinet/sctp_dtrace_define.h @@ -45,131 +45,131 @@ SDT_PROVIDER_DEFINE(sctp); /********************************************************/ /* Initial */ SDT_PROBE_DEFINE5(sctp, cwnd, net, init, - "uint32_t", /* The Vtag for this end */ - "uint32_t", /* - * The port number of the local side << 16 | port number - * of remote in network byte order. - */ - "uintptr_t", /* The pointer to the struct sctp_nets * changing */ - "int", /* The old value of the cwnd */ - "int"); /* The new value of the cwnd */ + "uint32_t", /* The Vtag for this end */ + "uint32_t", /* The port number of the local side << 16 | + * port number of remote in network byte + * order. */ + "uintptr_t", /* The pointer to the struct sctp_nets * + * changing */ + "int", /* The old value of the cwnd */ + "int"); /* The new value of the cwnd */ /* ACK-INCREASE */ SDT_PROBE_DEFINE5(sctp, cwnd, net, ack, - "uint32_t", /* The Vtag for this end */ - "uint32_t", /* - * The port number of the local side << 16 | port number - * of remote in network byte order. - */ - "uintptr_t", /* The pointer to the struct sctp_nets * changing */ - "int", /* The old value of the cwnd */ - "int"); /* The new value of the cwnd */ + "uint32_t", /* The Vtag for this end */ + "uint32_t", /* The port number of the local side << 16 | + * port number of remote in network byte + * order. */ + "uintptr_t", /* The pointer to the struct sctp_nets * + * changing */ + "int", /* The old value of the cwnd */ + "int"); /* The new value of the cwnd */ /* ACK-INCREASE */ SDT_PROBE_DEFINE5(sctp, cwnd, net, rttvar, - "uint64_t", /* The Vtag << 32 | localport << 16 | remoteport */ - "uint64_t", /* obw | nbw */ - "uint64_t", /* bwrtt | newrtt */ - "uint64_t", /* flight */ - "uint64_t"); /* (cwnd << 32) | point << 16 | retval(0/1) */ + "uint64_t", /* The Vtag << 32 | localport << 16 | + * remoteport */ + "uint64_t", /* obw | nbw */ + "uint64_t", /* bwrtt | newrtt */ + "uint64_t", /* flight */ + "uint64_t"); /* (cwnd << 32) | point << 16 | retval(0/1) */ SDT_PROBE_DEFINE5(sctp, cwnd, net, rttstep, - "uint64_t", /* The Vtag << 32 | localport << 16 | remoteport */ - "uint64_t", /* obw | nbw */ - "uint64_t", /* bwrtt | newrtt */ - "uint64_t", /* flight */ - "uint64_t"); /* (cwnd << 32) | point << 16 | retval(0/1) */ + "uint64_t", /* The Vtag << 32 | localport << 16 | + * remoteport */ + "uint64_t", /* obw | nbw */ + "uint64_t", /* bwrtt | newrtt */ + "uint64_t", /* flight */ + "uint64_t"); /* (cwnd << 32) | point << 16 | retval(0/1) */ /* FastRetransmit-DECREASE */ SDT_PROBE_DEFINE5(sctp, cwnd, net, fr, - "uint32_t", /* The Vtag for this end */ - "uint32_t", /* - * The port number of the local side << 16 | port number - * of remote in network byte order. - */ - "uintptr_t", /* The pointer to the struct sctp_nets * changing */ - "int", /* The old value of the cwnd */ - "int"); /* The new value of the cwnd */ + "uint32_t", /* The Vtag for this end */ + "uint32_t", /* The port number of the local side << 16 | + * port number of remote in network byte + * order. */ + "uintptr_t", /* The pointer to the struct sctp_nets * + * changing */ + "int", /* The old value of the cwnd */ + "int"); /* The new value of the cwnd */ /* TimeOut-DECREASE */ SDT_PROBE_DEFINE5(sctp, cwnd, net, to, - "uint32_t", /* The Vtag for this end */ - "uint32_t", /* - * The port number of the local side << 16 | port number - * of remote in network byte order. - */ - "uintptr_t", /* The pointer to the struct sctp_nets * changing */ - "int", /* The old value of the cwnd */ - "int"); /* The new value of the cwnd */ + "uint32_t", /* The Vtag for this end */ + "uint32_t", /* The port number of the local side << 16 | + * port number of remote in network byte + * order. */ + "uintptr_t", /* The pointer to the struct sctp_nets * + * changing */ + "int", /* The old value of the cwnd */ + "int"); /* The new value of the cwnd */ /* BurstLimit-DECREASE */ SDT_PROBE_DEFINE5(sctp, cwnd, net, bl, - "uint32_t", /* The Vtag for this end */ - "uint32_t", /* - * The port number of the local side << 16 | port number - * of remote in network byte order. - */ - "uintptr_t", /* The pointer to the struct sctp_nets * changing */ - "int", /* The old value of the cwnd */ - "int"); /* The new value of the cwnd */ + "uint32_t", /* The Vtag for this end */ + "uint32_t", /* The port number of the local side << 16 | + * port number of remote in network byte + * order. */ + "uintptr_t", /* The pointer to the struct sctp_nets * + * changing */ + "int", /* The old value of the cwnd */ + "int"); /* The new value of the cwnd */ /* ECN-DECREASE */ SDT_PROBE_DEFINE5(sctp, cwnd, net, ecn, - "uint32_t", /* The Vtag for this end */ - "uint32_t", /* - * The port number of the local side << 16 | port number - * of remote in network byte order. - */ - "uintptr_t", /* The pointer to the struct sctp_nets * changing */ - "int", /* The old value of the cwnd */ - "int"); /* The new value of the cwnd */ + "uint32_t", /* The Vtag for this end */ + "uint32_t", /* The port number of the local side << 16 | + * port number of remote in network byte + * order. */ + "uintptr_t", /* The pointer to the struct sctp_nets * + * changing */ + "int", /* The old value of the cwnd */ + "int"); /* The new value of the cwnd */ /* PacketDrop-DECREASE */ SDT_PROBE_DEFINE5(sctp, cwnd, net, pd, - "uint32_t", /* The Vtag for this end */ - "uint32_t", /* - * The port number of the local side << 16 | port number - * of remote in network byte order. - */ - "uintptr_t", /* The pointer to the struct sctp_nets * changing */ - "int", /* The old value of the cwnd */ - "int"); /* The new value of the cwnd */ + "uint32_t", /* The Vtag for this end */ + "uint32_t", /* The port number of the local side << 16 | + * port number of remote in network byte + * order. */ + "uintptr_t", /* The pointer to the struct sctp_nets * + * changing */ + "int", /* The old value of the cwnd */ + "int"); /* The new value of the cwnd */ /********************************************************/ /* Rwnd probe - tracks changes in the receiver window for an assoc */ /********************************************************/ SDT_PROBE_DEFINE4(sctp, rwnd, assoc, val, - "uint32_t", /* The Vtag for this end */ - "uint32_t", /* - * The port number of the local side << 16 | port number - * of remote in network byte order. - */ - "int", /* The up/down amount */ - "int"); /* The new value of the cwnd */ + "uint32_t", /* The Vtag for this end */ + "uint32_t", /* The port number of the local side << 16 | + * port number of remote in network byte + * order. */ + "int", /* The up/down amount */ + "int"); /* The new value of the cwnd */ /********************************************************/ /* flight probe - tracks changes in the flight size on a net or assoc */ /********************************************************/ SDT_PROBE_DEFINE5(sctp, flightsize, net, val, - "uint32_t", /* The Vtag for this end */ - "uint32_t", /* - * The port number of the local side << 16 | port number - * of remote in network byte order. - */ - "uintptr_t", /* The pointer to the struct sctp_nets * changing */ - "int", /* The up/down amount */ - "int"); /* The new value of the cwnd */ + "uint32_t", /* The Vtag for this end */ + "uint32_t", /* The port number of the local side << 16 | + * port number of remote in network byte + * order. */ + "uintptr_t", /* The pointer to the struct sctp_nets * + * changing */ + "int", /* The up/down amount */ + "int"); /* The new value of the cwnd */ /********************************************************/ /* The total flight version */ /********************************************************/ SDT_PROBE_DEFINE4(sctp, flightsize, assoc, val, - "uint32_t", /* The Vtag for this end */ - "uint32_t", /* - * The port number of the local side << 16 | port number - * of remote in network byte order. - */ - "int", /* The up/down amount */ - "int"); /* The new value of the cwnd */ + "uint32_t", /* The Vtag for this end */ + "uint32_t", /* The port number of the local side << 16 | + * port number of remote in network byte + * order. */ + "int", /* The up/down amount */ + "int"); /* The new value of the cwnd */ #endif diff --git a/sys/netinet/sctp_header.h b/sys/netinet/sctp_header.h index dc05b3dc0a8..d38c8375fb3 100644 --- a/sys/netinet/sctp_header.h +++ b/sys/netinet/sctp_header.h @@ -152,6 +152,23 @@ struct sctp_data_chunk { struct sctp_data dp; } SCTP_PACKED; +struct sctp_idata { + uint32_t tsn; + uint16_t stream_id; + uint16_t reserved; /* Where does the SSN go? */ + uint32_t msg_id; + union { + uint32_t protocol_id; + uint32_t fsn; /* Fragment Sequence Number */ + }; + /* user data follows */ +} SCTP_PACKED; + +struct sctp_idata_chunk { + struct sctp_chunkhdr ch; + struct sctp_idata dp; +} SCTP_PACKED; + /* * Structures for the control chunks */ @@ -378,6 +395,12 @@ struct sctp_strseq { uint16_t sequence; } SCTP_PACKED; +struct sctp_strseq_mid { + uint16_t stream; + uint16_t reserved; + uint32_t msg_id; +}; + struct sctp_forward_tsn_msg { struct sctphdr sh; struct sctp_forward_tsn_chunk msg; diff --git a/sys/netinet/sctp_indata.c b/sys/netinet/sctp_indata.c index cbc7fb59b7f..76f0ad33df7 100644 --- a/sys/netinet/sctp_indata.c +++ b/sys/netinet/sctp_indata.c @@ -34,18 +34,22 @@ __FBSDID("$FreeBSD$"); #include +#include #include #include -#include #include +#include #include #include -#include -#include #include +#include #include - - +#include +#include +#include +#include +#include +#include /* * NOTES: On the outbound side of things I need to check the sack timer to * see if I should generate a sack into the chunk queue (if I have data to @@ -55,6 +59,13 @@ __FBSDID("$FreeBSD$"); * This will cause sctp_service_queues() to get called on the top entry in * the list. */ +static void +sctp_add_chk_to_control(struct sctp_queued_to_read *control, + struct sctp_stream_in *strm, + struct sctp_tcb *stcb, + struct sctp_association *asoc, + struct sctp_tmit_chunk *chk); + void sctp_set_rwnd(struct sctp_tcb *stcb, struct sctp_association *asoc) @@ -74,9 +85,9 @@ sctp_calc_rwnd(struct sctp_tcb *stcb, struct sctp_association *asoc) * sctp_soreceive then we will fix this so that ONLY this * associations data is taken into account. */ - if (stcb->sctp_socket == NULL) + if (stcb->sctp_socket == NULL) { return (calc); - + } if (stcb->asoc.sb_cc == 0 && asoc->size_on_reasm_queue == 0 && asoc->size_on_all_streams == 0) { @@ -86,7 +97,6 @@ sctp_calc_rwnd(struct sctp_tcb *stcb, struct sctp_association *asoc) } /* get actual space */ calc = (uint32_t) sctp_sbspace(&stcb->asoc, &stcb->sctp_socket->so_rcv); - /* * take out what has NOT been put on socket queue and we yet hold * for putting up. @@ -95,7 +105,6 @@ sctp_calc_rwnd(struct sctp_tcb *stcb, struct sctp_association *asoc) asoc->cnt_on_reasm_queue * MSIZE)); calc = sctp_sbspace_sub(calc, (uint32_t) (asoc->size_on_all_streams + asoc->cnt_on_all_streams * MSIZE)); - if (calc == 0) { /* out of space */ return (calc); @@ -122,7 +131,7 @@ sctp_build_readq_entry(struct sctp_tcb *stcb, struct sctp_nets *net, uint32_t tsn, uint32_t ppid, uint32_t context, uint16_t stream_no, - uint16_t stream_seq, uint8_t flags, + uint32_t stream_seq, uint8_t flags, struct mbuf *dm) { struct sctp_queued_to_read *read_queue_e = NULL; @@ -131,73 +140,26 @@ sctp_build_readq_entry(struct sctp_tcb *stcb, if (read_queue_e == NULL) { goto failed_build; } + memset(read_queue_e, 0, sizeof(struct sctp_queued_to_read)); read_queue_e->sinfo_stream = stream_no; read_queue_e->sinfo_ssn = stream_seq; read_queue_e->sinfo_flags = (flags << 8); read_queue_e->sinfo_ppid = ppid; read_queue_e->sinfo_context = context; - read_queue_e->sinfo_timetolive = 0; read_queue_e->sinfo_tsn = tsn; read_queue_e->sinfo_cumtsn = tsn; read_queue_e->sinfo_assoc_id = sctp_get_associd(stcb); + read_queue_e->top_fsn = read_queue_e->fsn_included = 0xffffffff; + TAILQ_INIT(&read_queue_e->reasm); read_queue_e->whoFrom = net; - read_queue_e->length = 0; atomic_add_int(&net->ref_count, 1); read_queue_e->data = dm; - read_queue_e->spec_flags = 0; - read_queue_e->tail_mbuf = NULL; - read_queue_e->aux_data = NULL; read_queue_e->stcb = stcb; read_queue_e->port_from = stcb->rport; - read_queue_e->do_not_ref_stcb = 0; - read_queue_e->end_added = 0; - read_queue_e->some_taken = 0; - read_queue_e->pdapi_aborted = 0; failed_build: return (read_queue_e); } - -/* - * Build out our readq entry based on the incoming packet. - */ -static struct sctp_queued_to_read * -sctp_build_readq_entry_chk(struct sctp_tcb *stcb, - struct sctp_tmit_chunk *chk) -{ - struct sctp_queued_to_read *read_queue_e = NULL; - - sctp_alloc_a_readq(stcb, read_queue_e); - if (read_queue_e == NULL) { - goto failed_build; - } - read_queue_e->sinfo_stream = chk->rec.data.stream_number; - read_queue_e->sinfo_ssn = chk->rec.data.stream_seq; - read_queue_e->sinfo_flags = (chk->rec.data.rcv_flags << 8); - read_queue_e->sinfo_ppid = chk->rec.data.payloadtype; - read_queue_e->sinfo_context = stcb->asoc.context; - read_queue_e->sinfo_timetolive = 0; - read_queue_e->sinfo_tsn = chk->rec.data.TSN_seq; - read_queue_e->sinfo_cumtsn = chk->rec.data.TSN_seq; - read_queue_e->sinfo_assoc_id = sctp_get_associd(stcb); - read_queue_e->whoFrom = chk->whoTo; - read_queue_e->aux_data = NULL; - read_queue_e->length = 0; - atomic_add_int(&chk->whoTo->ref_count, 1); - read_queue_e->data = chk->data; - read_queue_e->tail_mbuf = NULL; - read_queue_e->stcb = stcb; - read_queue_e->port_from = stcb->rport; - read_queue_e->spec_flags = 0; - read_queue_e->do_not_ref_stcb = 0; - read_queue_e->end_added = 0; - read_queue_e->some_taken = 0; - read_queue_e->pdapi_aborted = 0; -failed_build: - return (read_queue_e); -} - - struct mbuf * sctp_build_ctl_nchunk(struct sctp_inpcb *inp, struct sctp_sndrcvinfo *sinfo) { @@ -317,6 +279,7 @@ sctp_mark_non_revokable(struct sctp_association *asoc, uint32_t tsn) { uint32_t gap, i, cumackp1; int fnd = 0; + int in_r = 0, in_nr = 0; if (SCTP_BASE_SYSCTL(sctp_do_drain) == 0) { return; @@ -330,15 +293,20 @@ sctp_mark_non_revokable(struct sctp_association *asoc, uint32_t tsn) return; } SCTP_CALC_TSN_TO_GAP(gap, tsn, asoc->mapping_array_base_tsn); - if (!SCTP_IS_TSN_PRESENT(asoc->mapping_array, gap)) { + in_r = SCTP_IS_TSN_PRESENT(asoc->mapping_array, gap); + in_nr = SCTP_IS_TSN_PRESENT(asoc->nr_mapping_array, gap); + if ((in_r == 0) && (in_nr == 0)) { +#ifdef INVARIANTS + panic("Things are really messed up now"); +#else SCTP_PRINTF("gap:%x tsn:%x\n", gap, tsn); sctp_print_mapping_array(asoc); -#ifdef INVARIANTS - panic("Things are really messed up now!!"); #endif } - SCTP_SET_TSN_PRESENT(asoc->nr_mapping_array, gap); - SCTP_UNSET_TSN_PRESENT(asoc->mapping_array, gap); + if (in_nr == 0) + SCTP_SET_TSN_PRESENT(asoc->nr_mapping_array, gap); + if (in_r) + SCTP_UNSET_TSN_PRESENT(asoc->mapping_array, gap); if (SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_nr_map)) { asoc->highest_tsn_inside_nr_map = tsn; } @@ -358,191 +326,157 @@ sctp_mark_non_revokable(struct sctp_association *asoc, uint32_t tsn) } } - -/* - * We are delivering currently from the reassembly queue. We must continue to - * deliver until we either: 1) run out of space. 2) run out of sequential - * TSN's 3) hit the SCTP_DATA_LAST_FRAG flag. - */ -static void -sctp_service_reassembly(struct sctp_tcb *stcb, struct sctp_association *asoc) +static int +sctp_place_control_in_stream(struct sctp_stream_in *strm, + struct sctp_association *asoc, + struct sctp_queued_to_read *control) { - struct sctp_tmit_chunk *chk, *nchk; - uint16_t nxt_todel; - uint16_t stream_no; - int end = 0; - int cntDel; - struct sctp_queued_to_read *control, *ctl, *nctl; + struct sctp_queued_to_read *at; + struct sctp_readhead *q; + uint8_t bits, unordered; - if (stcb == NULL) - return; - - cntDel = stream_no = 0; - if ((stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) || - (stcb->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) || - (stcb->asoc.state & SCTP_STATE_CLOSED_SOCKET)) { - /* socket above is long gone or going.. */ -abandon: - asoc->fragmented_delivery_inprogress = 0; - TAILQ_FOREACH_SAFE(chk, &asoc->reasmqueue, sctp_next, nchk) { - TAILQ_REMOVE(&asoc->reasmqueue, chk, sctp_next); - asoc->size_on_reasm_queue -= chk->send_size; - sctp_ucount_decr(asoc->cnt_on_reasm_queue); - /* - * Lose the data pointer, since its in the socket - * buffer - */ - if (chk->data) { - sctp_m_freem(chk->data); - chk->data = NULL; - } - /* Now free the address and data */ - sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); - /* sa_ignore FREED_MEMORY */ - } - return; - } - SCTP_TCB_LOCK_ASSERT(stcb); - TAILQ_FOREACH_SAFE(chk, &asoc->reasmqueue, sctp_next, nchk) { - if (chk->rec.data.TSN_seq != (asoc->tsn_last_delivered + 1)) { - /* Can't deliver more :< */ - return; - } - stream_no = chk->rec.data.stream_number; - nxt_todel = asoc->strmin[stream_no].last_sequence_delivered + 1; - if (nxt_todel != chk->rec.data.stream_seq && - (chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED) == 0) { - /* - * Not the next sequence to deliver in its stream OR - * unordered - */ - return; - } - if (chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) { - - control = sctp_build_readq_entry_chk(stcb, chk); - if (control == NULL) { - /* out of memory? */ - return; - } - /* save it off for our future deliveries */ - stcb->asoc.control_pdapi = control; - if (chk->rec.data.rcv_flags & SCTP_DATA_LAST_FRAG) - end = 1; - else - end = 0; - sctp_mark_non_revokable(asoc, chk->rec.data.TSN_seq); - sctp_add_to_readq(stcb->sctp_ep, - stcb, control, &stcb->sctp_socket->so_rcv, end, - SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); - cntDel++; - } else { - if (chk->rec.data.rcv_flags & SCTP_DATA_LAST_FRAG) - end = 1; - else - end = 0; - sctp_mark_non_revokable(asoc, chk->rec.data.TSN_seq); - if (sctp_append_to_readq(stcb->sctp_ep, stcb, - stcb->asoc.control_pdapi, - chk->data, end, chk->rec.data.TSN_seq, - &stcb->sctp_socket->so_rcv)) { + bits = (control->sinfo_flags >> 8); + unordered = bits & SCTP_DATA_UNORDERED; + if (unordered) { + q = &strm->uno_inqueue; + if (asoc->idata_supported == 0) { + if (!TAILQ_EMPTY(q)) { /* - * something is very wrong, either - * control_pdapi is NULL, or the tail_mbuf - * is corrupt, or there is a EOM already on - * the mbuf chain. + * Only one stream can be here in old style + * -- abort */ - if (stcb->asoc.state & SCTP_STATE_ABOUT_TO_BE_FREED) { - goto abandon; + return (-1); + } + TAILQ_INSERT_TAIL(q, control, next_instrm); + control->on_strm_q = SCTP_ON_UNORDERED; + return (0); + } + } else { + q = &strm->inqueue; + } + if ((bits & SCTP_DATA_NOT_FRAG) == SCTP_DATA_NOT_FRAG) { + control->end_added = control->last_frag_seen = control->first_frag_seen = 1; + } + if (TAILQ_EMPTY(q)) { + /* Empty queue */ + TAILQ_INSERT_HEAD(q, control, next_instrm); + if (unordered) { + control->on_strm_q = SCTP_ON_UNORDERED; + } else { + control->on_strm_q = SCTP_ON_ORDERED; + } + return (0); + } else { + TAILQ_FOREACH(at, q, next_instrm) { + if (SCTP_TSN_GT(at->msg_id, control->msg_id)) { + /* + * one in queue is bigger than the new one, + * insert before this one + */ + TAILQ_INSERT_BEFORE(at, control, next_instrm); + if (unordered) { + control->on_strm_q = SCTP_ON_UNORDERED; } else { -#ifdef INVARIANTS - if ((stcb->asoc.control_pdapi == NULL) || (stcb->asoc.control_pdapi->tail_mbuf == NULL)) { - panic("This should not happen control_pdapi NULL?"); - } - /* if we did not panic, it was a EOM */ - panic("Bad chunking ??"); -#else - if ((stcb->asoc.control_pdapi == NULL) || (stcb->asoc.control_pdapi->tail_mbuf == NULL)) { - SCTP_PRINTF("This should not happen control_pdapi NULL?\n"); - } - SCTP_PRINTF("Bad chunking ??\n"); - SCTP_PRINTF("Dumping re-assembly queue this will probably hose the association\n"); - -#endif - goto abandon; + control->on_strm_q = SCTP_ON_ORDERED; } - } - cntDel++; - } - /* pull it we did it */ - TAILQ_REMOVE(&asoc->reasmqueue, chk, sctp_next); - if (chk->rec.data.rcv_flags & SCTP_DATA_LAST_FRAG) { - asoc->fragmented_delivery_inprogress = 0; - if ((chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED) == 0) { - asoc->strmin[stream_no].last_sequence_delivered++; - } - if ((chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) == 0) { - SCTP_STAT_INCR_COUNTER64(sctps_reasmusrmsgs); - } - } else if (chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) { - /* - * turn the flag back on since we just delivered - * yet another one. - */ - asoc->fragmented_delivery_inprogress = 1; - } - asoc->tsn_of_pdapi_last_delivered = chk->rec.data.TSN_seq; - asoc->last_flags_delivered = chk->rec.data.rcv_flags; - asoc->last_strm_seq_delivered = chk->rec.data.stream_seq; - asoc->last_strm_no_delivered = chk->rec.data.stream_number; - - asoc->tsn_last_delivered = chk->rec.data.TSN_seq; - asoc->size_on_reasm_queue -= chk->send_size; - sctp_ucount_decr(asoc->cnt_on_reasm_queue); - /* free up the chk */ - chk->data = NULL; - sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); - - if (asoc->fragmented_delivery_inprogress == 0) { - /* - * Now lets see if we can deliver the next one on - * the stream - */ - struct sctp_stream_in *strm; - - strm = &asoc->strmin[stream_no]; - nxt_todel = strm->last_sequence_delivered + 1; - TAILQ_FOREACH_SAFE(ctl, &strm->inqueue, next, nctl) { - /* Deliver more if we can. */ - if (nxt_todel == ctl->sinfo_ssn) { - TAILQ_REMOVE(&strm->inqueue, ctl, next); - asoc->size_on_all_streams -= ctl->length; - sctp_ucount_decr(asoc->cnt_on_all_streams); - strm->last_sequence_delivered++; - sctp_mark_non_revokable(asoc, ctl->sinfo_tsn); - sctp_add_to_readq(stcb->sctp_ep, stcb, - ctl, - &stcb->sctp_socket->so_rcv, 1, - SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); - } else { + break; + } else if (at->msg_id == control->msg_id) { + /* + * Gak, He sent me a duplicate msg id + * number?? return -1 to abort. + */ + return (-1); + } else { + if (TAILQ_NEXT(at, next_instrm) == NULL) { + /* + * We are at the end, insert it + * after this one + */ + if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_STR_LOGGING_ENABLE) { + sctp_log_strm_del(control, at, + SCTP_STR_LOG_FROM_INSERT_TL); + } + TAILQ_INSERT_AFTER(q, + at, control, next_instrm); + if (unordered) { + control->on_strm_q = SCTP_ON_UNORDERED; + } else { + control->on_strm_q = SCTP_ON_ORDERED; + } break; } - nxt_todel = strm->last_sequence_delivered + 1; } - break; } } + return (0); +} + +static void +sctp_abort_in_reasm(struct sctp_tcb *stcb, + struct sctp_stream_in *strm, + struct sctp_queued_to_read *control, + struct sctp_tmit_chunk *chk, + int *abort_flag, int opspot) +{ + char msg[SCTP_DIAG_INFO_LEN]; + struct mbuf *oper; + + if (stcb->asoc.idata_supported) { + snprintf(msg, sizeof(msg), + "Reass %x,CF:%x,TSN=%8.8x,SID=%4.4x,FSN=%8.8x,MID:%8.8x", + opspot, + control->fsn_included, + chk->rec.data.TSN_seq, + chk->rec.data.stream_number, + chk->rec.data.fsn_num, chk->rec.data.stream_seq); + } else { + snprintf(msg, sizeof(msg), + "Reass %x, CI:%x,TSN=%8.8x,SID=%4.4x,FSN=%4.4x, SSN:%4.4x", + opspot, + control->fsn_included, + chk->rec.data.TSN_seq, + chk->rec.data.stream_number, + chk->rec.data.fsn_num, + (uint16_t) chk->rec.data.stream_seq); + } + oper = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); + sctp_m_freem(chk->data); + chk->data = NULL; + sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_1; + sctp_abort_an_association(stcb->sctp_ep, stcb, oper, SCTP_SO_NOT_LOCKED); + *abort_flag = 1; +} + +static void +clean_up_control(struct sctp_tcb *stcb, struct sctp_queued_to_read *control) +{ + /* + * The control could not be placed and must be cleaned. + */ + struct sctp_tmit_chunk *chk, *nchk; + + TAILQ_FOREACH_SAFE(chk, &control->reasm, sctp_next, nchk) { + TAILQ_REMOVE(&control->reasm, chk, sctp_next); + if (chk->data) + sctp_m_freem(chk->data); + chk->data = NULL; + sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); + } + sctp_free_a_readq(stcb, control); } /* * Queue the chunk either right into the socket buffer if it is the next one * to go OR put it in the correct place in the delivery queue. If we do - * append to the so_buf, keep doing so until we are out of order. One big - * question still remains, what to do when the socket buffer is FULL?? + * append to the so_buf, keep doing so until we are out of order as + * long as the control's entered are non-fragmented. */ static void -sctp_queue_data_to_stream(struct sctp_tcb *stcb, struct sctp_association *asoc, - struct sctp_queued_to_read *control, int *abort_flag) +sctp_queue_data_to_stream(struct sctp_tcb *stcb, + struct sctp_stream_in *strm, + struct sctp_association *asoc, + struct sctp_queued_to_read *control, int *abort_flag, int *need_reasm) { /* * FIX-ME maybe? What happens when the ssn wraps? If we are getting @@ -562,27 +496,16 @@ sctp_queue_data_to_stream(struct sctp_tcb *stcb, struct sctp_association *asoc, * SSN alone. Maybe a hybred approach is the answer * */ - struct sctp_stream_in *strm; struct sctp_queued_to_read *at; int queue_needed; - uint16_t nxt_todel; + uint32_t nxt_todel; struct mbuf *op_err; char msg[SCTP_DIAG_INFO_LEN]; - queue_needed = 1; - asoc->size_on_all_streams += control->length; - sctp_ucount_incr(asoc->cnt_on_all_streams); - strm = &asoc->strmin[control->sinfo_stream]; - nxt_todel = strm->last_sequence_delivered + 1; if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_STR_LOGGING_ENABLE) { sctp_log_strm_del(control, NULL, SCTP_STR_LOG_FROM_INTO_STRD); } - SCTPDBG(SCTP_DEBUG_INDATA1, - "queue to stream called for sid:%u ssn:%u tsn:%u lastdel:%u nxt:%u\n", - (uint32_t) control->sinfo_stream, (uint32_t) control->sinfo_ssn, - (uint32_t) control->sinfo_tsn, - (uint32_t) strm->last_sequence_delivered, (uint32_t) nxt_todel); - if (SCTP_SSN_GE(strm->last_sequence_delivered, control->sinfo_ssn)) { + if (SCTP_MSGID_GT((!asoc->idata_supported), strm->last_sequence_delivered, control->sinfo_ssn)) { /* The incoming sseq is behind where we last delivered? */ SCTPDBG(SCTP_DEBUG_INDATA1, "Duplicate S-SEQ:%d delivered:%d from peer, Abort association\n", control->sinfo_ssn, strm->last_sequence_delivered); @@ -591,32 +514,39 @@ sctp_queue_data_to_stream(struct sctp_tcb *stcb, struct sctp_association *asoc, * throw it in the stream so it gets cleaned up in * association destruction */ - TAILQ_INSERT_HEAD(&strm->inqueue, control, next); + TAILQ_INSERT_HEAD(&strm->inqueue, control, next_instrm); snprintf(msg, sizeof(msg), "Delivered SSN=%4.4x, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", strm->last_sequence_delivered, control->sinfo_tsn, control->sinfo_stream, control->sinfo_ssn); op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_1; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_2; sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); *abort_flag = 1; return; } -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) - struct socket *so; - - so = SCTP_INP_SO(stcb->sctp_ep); - atomic_add_int(&stcb->asoc.refcnt, 1); - SCTP_TCB_UNLOCK(stcb); - SCTP_SOCKET_LOCK(so, 1); - SCTP_TCB_LOCK(stcb); - atomic_subtract_int(&stcb->asoc.refcnt, 1); - if (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) { - SCTP_SOCKET_UNLOCK(so, 1); - return; + if ((SCTP_TSN_GE(asoc->cumulative_tsn, control->sinfo_tsn)) && (asoc->idata_supported == 0)) { + goto protocol_error; } -#endif + queue_needed = 1; + asoc->size_on_all_streams += control->length; + sctp_ucount_incr(asoc->cnt_on_all_streams); + nxt_todel = strm->last_sequence_delivered + 1; if (nxt_todel == control->sinfo_ssn) { +#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + struct socket *so; + + so = SCTP_INP_SO(stcb->sctp_ep); + atomic_add_int(&stcb->asoc.refcnt, 1); + SCTP_TCB_UNLOCK(stcb); + SCTP_SOCKET_LOCK(so, 1); + SCTP_TCB_LOCK(stcb); + atomic_subtract_int(&stcb->asoc.refcnt, 1); + if (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) { + SCTP_SOCKET_UNLOCK(so, 1); + return; + } +#endif /* can be delivered right away? */ if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_STR_LOGGING_ENABLE) { sctp_log_strm_del(control, NULL, SCTP_STR_LOG_FROM_IMMED_DEL); @@ -626,19 +556,25 @@ sctp_queue_data_to_stream(struct sctp_tcb *stcb, struct sctp_association *asoc, asoc->size_on_all_streams -= control->length; sctp_ucount_decr(asoc->cnt_on_all_streams); strm->last_sequence_delivered++; - sctp_mark_non_revokable(asoc, control->sinfo_tsn); sctp_add_to_readq(stcb->sctp_ep, stcb, control, &stcb->sctp_socket->so_rcv, 1, - SCTP_READ_LOCK_NOT_HELD, SCTP_SO_LOCKED); - TAILQ_FOREACH_SAFE(control, &strm->inqueue, next, at) { + SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); + TAILQ_FOREACH_SAFE(control, &strm->inqueue, next_instrm, at) { /* all delivered */ nxt_todel = strm->last_sequence_delivered + 1; - if (nxt_todel == control->sinfo_ssn) { - TAILQ_REMOVE(&strm->inqueue, control, next); + if ((nxt_todel == control->sinfo_ssn) && + (((control->sinfo_flags >> 8) & SCTP_DATA_NOT_FRAG) == SCTP_DATA_NOT_FRAG)) { asoc->size_on_all_streams -= control->length; sctp_ucount_decr(asoc->cnt_on_all_streams); + if (control->on_strm_q == SCTP_ON_ORDERED) { + TAILQ_REMOVE(&strm->inqueue, control, next_instrm); + } else { + panic("Huh control:%p is on_strm_q:%d", + control, control->on_strm_q); + } + control->on_strm_q = 0; strm->last_sequence_delivered++; /* * We ignore the return of deliver_data here @@ -655,193 +591,637 @@ sctp_queue_data_to_stream(struct sctp_tcb *stcb, struct sctp_association *asoc, control, &stcb->sctp_socket->so_rcv, 1, SCTP_READ_LOCK_NOT_HELD, - SCTP_SO_LOCKED); + SCTP_SO_NOT_LOCKED); continue; + } else if (nxt_todel == control->sinfo_ssn) { + *need_reasm = 1; } break; } +#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + SCTP_SOCKET_UNLOCK(so, 1); +#endif } if (queue_needed) { /* * Ok, we did not deliver this guy, find the correct place * to put it on the queue. */ - if (SCTP_TSN_GE(asoc->cumulative_tsn, control->sinfo_tsn)) { -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) - SCTP_SOCKET_UNLOCK(so, 1); -#endif - goto protocol_error; - } - if (TAILQ_EMPTY(&strm->inqueue)) { - /* Empty queue */ - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_STR_LOGGING_ENABLE) { - sctp_log_strm_del(control, NULL, SCTP_STR_LOG_FROM_INSERT_HD); - } - TAILQ_INSERT_HEAD(&strm->inqueue, control, next); - } else { - TAILQ_FOREACH(at, &strm->inqueue, next) { - if (SCTP_SSN_GT(at->sinfo_ssn, control->sinfo_ssn)) { - /* - * one in queue is bigger than the - * new one, insert before this one - */ - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_STR_LOGGING_ENABLE) { - sctp_log_strm_del(control, at, - SCTP_STR_LOG_FROM_INSERT_MD); - } - TAILQ_INSERT_BEFORE(at, control, next); - break; - } else if (at->sinfo_ssn == control->sinfo_ssn) { - /* - * Gak, He sent me a duplicate str - * seq number - */ - /* - * foo bar, I guess I will just free - * this new guy, should we abort - * too? FIX ME MAYBE? Or it COULD be - * that the SSN's have wrapped. - * Maybe I should compare to TSN - * somehow... sigh for now just blow - * away the chunk! - */ + if (sctp_place_control_in_stream(strm, asoc, control)) { + char msg[SCTP_DIAG_INFO_LEN]; + struct mbuf *oper; - if (control->data) - sctp_m_freem(control->data); - control->data = NULL; - asoc->size_on_all_streams -= control->length; - sctp_ucount_decr(asoc->cnt_on_all_streams); - if (control->whoFrom) { - sctp_free_remote_addr(control->whoFrom); - control->whoFrom = NULL; - } - sctp_free_a_readq(stcb, control); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) - SCTP_SOCKET_UNLOCK(so, 1); -#endif - return; - } else { - if (TAILQ_NEXT(at, next) == NULL) { - /* - * We are at the end, insert - * it after this one - */ - if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_STR_LOGGING_ENABLE) { - sctp_log_strm_del(control, at, - SCTP_STR_LOG_FROM_INSERT_TL); - } - TAILQ_INSERT_AFTER(&strm->inqueue, - at, control, next); - break; - } - } - } + snprintf(msg, sizeof(msg), + "Queue to str mid:%d duplicate", + control->msg_id); + clean_up_control(stcb, control); + oper = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_3; + sctp_abort_an_association(stcb->sctp_ep, stcb, oper, SCTP_SO_NOT_LOCKED); + *abort_flag = 1; } } -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) - SCTP_SOCKET_UNLOCK(so, 1); -#endif } -/* - * Returns two things: You get the total size of the deliverable parts of the - * first fragmented message on the reassembly queue. And you get a 1 back if - * all of the message is ready or a 0 back if the message is still incomplete - */ -static int -sctp_is_all_msg_on_reasm(struct sctp_association *asoc, uint32_t * t_size) -{ - struct sctp_tmit_chunk *chk; - uint32_t tsn; - *t_size = 0; - chk = TAILQ_FIRST(&asoc->reasmqueue); - if (chk == NULL) { - /* nothing on the queue */ - return (0); - } - if ((chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) == 0) { - /* Not a first on the queue */ - return (0); - } - tsn = chk->rec.data.TSN_seq; - TAILQ_FOREACH(chk, &asoc->reasmqueue, sctp_next) { - if (tsn != chk->rec.data.TSN_seq) { - return (0); +static void +sctp_setup_tail_pointer(struct sctp_queued_to_read *control) +{ + struct mbuf *m, *prev = NULL; + struct sctp_tcb *stcb; + + stcb = control->stcb; + control->held_length = 0; + control->length = 0; + m = control->data; + while (m) { + if (SCTP_BUF_LEN(m) == 0) { + /* Skip mbufs with NO length */ + if (prev == NULL) { + /* First one */ + control->data = sctp_m_free(m); + m = control->data; + } else { + SCTP_BUF_NEXT(prev) = sctp_m_free(m); + m = SCTP_BUF_NEXT(prev); + } + if (m == NULL) { + control->tail_mbuf = prev; + } + continue; } - *t_size += chk->send_size; - if (chk->rec.data.rcv_flags & SCTP_DATA_LAST_FRAG) { - return (1); + prev = m; + atomic_add_int(&control->length, SCTP_BUF_LEN(m)); + if (control->on_read_q) { + /* + * On read queue so we must increment the SB stuff, + * we assume caller has done any locks of SB. + */ + sctp_sballoc(stcb, &stcb->sctp_socket->so_rcv, m); } - tsn++; + m = SCTP_BUF_NEXT(m); + } + if (prev) { + control->tail_mbuf = prev; } - return (0); } static void -sctp_deliver_reasm_check(struct sctp_tcb *stcb, struct sctp_association *asoc) +sctp_add_to_tail_pointer(struct sctp_queued_to_read *control, struct mbuf *m) { - struct sctp_tmit_chunk *chk; - uint16_t nxt_todel; - uint32_t tsize, pd_point; + struct mbuf *prev = NULL; + struct sctp_tcb *stcb; -doit_again: - chk = TAILQ_FIRST(&asoc->reasmqueue); - if (chk == NULL) { - /* Huh? */ - asoc->size_on_reasm_queue = 0; - asoc->cnt_on_reasm_queue = 0; + stcb = control->stcb; + if (stcb == NULL) { + panic("Control broken"); + } + if (control->tail_mbuf == NULL) { + /* TSNH */ + control->data = m; + sctp_setup_tail_pointer(control); return; } - if (asoc->fragmented_delivery_inprogress == 0) { - nxt_todel = - asoc->strmin[chk->rec.data.stream_number].last_sequence_delivered + 1; - if ((chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) && - (nxt_todel == chk->rec.data.stream_seq || - (chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED))) { - /* - * Yep the first one is here and its ok to deliver - * but should we? - */ - if (stcb->sctp_socket) { - pd_point = min(SCTP_SB_LIMIT_RCV(stcb->sctp_socket) >> SCTP_PARTIAL_DELIVERY_SHIFT, - stcb->sctp_ep->partial_delivery_point); + control->tail_mbuf->m_next = m; + while (m) { + if (SCTP_BUF_LEN(m) == 0) { + /* Skip mbufs with NO length */ + if (prev == NULL) { + /* First one */ + control->tail_mbuf->m_next = sctp_m_free(m); + m = control->tail_mbuf->m_next; } else { - pd_point = stcb->sctp_ep->partial_delivery_point; + SCTP_BUF_NEXT(prev) = sctp_m_free(m); + m = SCTP_BUF_NEXT(prev); } - if (sctp_is_all_msg_on_reasm(asoc, &tsize) || (tsize >= pd_point)) { - /* - * Yes, we setup to start reception, by - * backing down the TSN just in case we - * can't deliver. If we - */ - asoc->fragmented_delivery_inprogress = 1; - asoc->tsn_last_delivered = - chk->rec.data.TSN_seq - 1; - asoc->str_of_pdapi = - chk->rec.data.stream_number; - asoc->ssn_of_pdapi = chk->rec.data.stream_seq; - asoc->pdapi_ppid = chk->rec.data.payloadtype; - asoc->fragment_flags = chk->rec.data.rcv_flags; - sctp_service_reassembly(stcb, asoc); + if (m == NULL) { + control->tail_mbuf = prev; } + continue; } - } else { - /* - * Service re-assembly will deliver stream data queued at - * the end of fragmented delivery.. but it wont know to go - * back and call itself again... we do that here with the - * got doit_again - */ - sctp_service_reassembly(stcb, asoc); - if (asoc->fragmented_delivery_inprogress == 0) { + prev = m; + if (control->on_read_q) { /* - * finished our Fragmented delivery, could be more - * waiting? + * On read queue so we must increment the SB stuff, + * we assume caller has done any locks of SB. */ - goto doit_again; + sctp_sballoc(stcb, &stcb->sctp_socket->so_rcv, m); + } + atomic_add_int(&control->length, SCTP_BUF_LEN(m)); + m = SCTP_BUF_NEXT(m); + } + if (prev) { + control->tail_mbuf = prev; + } +} + +static void +sctp_build_readq_entry_from_ctl(struct sctp_queued_to_read *nc, struct sctp_queued_to_read *control) +{ + memset(nc, 0, sizeof(struct sctp_queued_to_read)); + nc->sinfo_stream = control->sinfo_stream; + nc->sinfo_ssn = control->sinfo_ssn; + TAILQ_INIT(&nc->reasm); + nc->top_fsn = control->top_fsn; + nc->msg_id = control->msg_id; + nc->sinfo_flags = control->sinfo_flags; + nc->sinfo_ppid = control->sinfo_ppid; + nc->sinfo_context = control->sinfo_context; + nc->fsn_included = 0xffffffff; + nc->sinfo_tsn = control->sinfo_tsn; + nc->sinfo_cumtsn = control->sinfo_cumtsn; + nc->sinfo_assoc_id = control->sinfo_assoc_id; + nc->whoFrom = control->whoFrom; + atomic_add_int(&nc->whoFrom->ref_count, 1); + nc->stcb = control->stcb; + nc->port_from = control->port_from; +} + +static int +sctp_handle_old_data(struct sctp_tcb *stcb, struct sctp_association *asoc, struct sctp_stream_in *strm, + struct sctp_queued_to_read *control, uint32_t pd_point) +{ + /* + * Special handling for the old un-ordered data chunk. All the + * chunks/TSN's go to msg_id 0. So we have to do the old style + * watching to see if we have it all. If you return one, no other + * control entries on the un-ordered queue will be looked at. In + * theory there should be no others entries in reality, unless the + * guy is sending both unordered NDATA and unordered DATA... + */ + struct sctp_tmit_chunk *chk, *lchk, *tchk; + uint32_t fsn; + struct sctp_queued_to_read *nc = NULL; + int cnt_added; + + if (control->first_frag_seen == 0) { + /* Nothing we can do, we have not seen the first piece yet */ + return (1); + } + /* Collapse any we can */ + cnt_added = 0; +restart: + fsn = control->fsn_included + 1; + /* Now what can we add? */ + TAILQ_FOREACH_SAFE(chk, &control->reasm, sctp_next, lchk) { + if (chk->rec.data.fsn_num == fsn) { + /* Ok lets add it */ + TAILQ_REMOVE(&control->reasm, chk, sctp_next); + sctp_add_chk_to_control(control, strm, stcb, asoc, chk); + fsn++; + cnt_added++; + chk = NULL; + if (control->end_added) { + /* We are done */ + if (!TAILQ_EMPTY(&control->reasm)) { + /* + * Ok we have to move anything left + * on the control queue to a new + * control. + */ + sctp_alloc_a_readq(stcb, nc); + sctp_build_readq_entry_from_ctl(nc, control); + tchk = TAILQ_FIRST(&control->reasm); + if (tchk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) { + TAILQ_REMOVE(&control->reasm, tchk, sctp_next); + nc->first_frag_seen = 1; + nc->fsn_included = tchk->rec.data.fsn_num; + nc->data = tchk->data; + sctp_mark_non_revokable(asoc, tchk->rec.data.TSN_seq); + tchk->data = NULL; + sctp_free_a_chunk(stcb, tchk, SCTP_SO_NOT_LOCKED); + sctp_setup_tail_pointer(nc); + tchk = TAILQ_FIRST(&control->reasm); + } + /* Spin the rest onto the queue */ + while (tchk) { + TAILQ_REMOVE(&control->reasm, tchk, sctp_next); + TAILQ_INSERT_TAIL(&nc->reasm, tchk, sctp_next); + tchk = TAILQ_FIRST(&control->reasm); + } + /* + * Now lets add it to the queue + * after removing control + */ + TAILQ_INSERT_TAIL(&strm->uno_inqueue, nc, next_instrm); + nc->on_strm_q = SCTP_ON_UNORDERED; + if (control->on_strm_q) { + TAILQ_REMOVE(&strm->uno_inqueue, control, next_instrm); + control->on_strm_q = 0; + } + } + if (control->on_read_q == 0) { + sctp_add_to_readq(stcb->sctp_ep, stcb, control, + &stcb->sctp_socket->so_rcv, control->end_added, + SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); + } + if (control->pdapi_started) { + strm->pd_api_started = 0; + control->pdapi_started = 0; + } + if (control->on_strm_q) { + TAILQ_REMOVE(&strm->uno_inqueue, control, next_instrm); + control->on_strm_q = 0; + } + sctp_wakeup_the_read_socket(stcb->sctp_ep); + if ((nc) && (nc->first_frag_seen)) { + /* + * Switch to the new guy and + * continue + */ + control = nc; + nc = NULL; + goto restart; + } + return (1); + } + } else { + /* Can't add more */ + break; } } + if ((control->length > pd_point) && (strm->pd_api_started == 0)) { + sctp_add_to_readq(stcb->sctp_ep, stcb, control, + &stcb->sctp_socket->so_rcv, control->end_added, + SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); + strm->pd_api_started = 1; + control->pdapi_started = 1; + sctp_wakeup_the_read_socket(stcb->sctp_ep); + return (0); + } else { + return (1); + } +} + +static void +sctp_inject_old_data_unordered(struct sctp_tcb *stcb, struct sctp_association *asoc, + struct sctp_stream_in *strm, + struct sctp_queued_to_read *control, + struct sctp_tmit_chunk *chk, + int *abort_flag) +{ + struct sctp_tmit_chunk *at; + int inserted = 0; + + /* + * Here we need to place the chunk into the control structure sorted + * in the correct order. + */ + if (chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) { + /* Its the very first one. */ + SCTPDBG(SCTP_DEBUG_XXX, + "chunk is a first fsn:%d becomes fsn_included\n", + chk->rec.data.fsn_num); + if (control->first_frag_seen) { + /* + * In old un-ordered we can reassembly on one + * control multiple messages. As long as the next + * FIRST is greater then the old first (TSN i.e. FSN + * wise) + */ + struct mbuf *tdata; + uint32_t tmp; + + if (SCTP_TSN_GT(chk->rec.data.fsn_num, control->fsn_included)) { + /* + * Easy way the start of a new guy beyond + * the lowest + */ + goto place_chunk; + } + if ((chk->rec.data.fsn_num == control->fsn_included) || + (control->pdapi_started)) { + /* + * Ok this should not happen, if it does we + * started the pd-api on the higher TSN + * (since the equals part is a TSN failure + * it must be that). + * + * We are completly hosed in that case since I + * have no way to recover. This really will + * only happen if we can get more TSN's + * higher before the pd-api-point. + */ + sctp_abort_in_reasm(stcb, strm, control, chk, + abort_flag, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_4); + + return; + } + /* + * Ok we have two firsts and the one we just got is + * smaller than the one we previously placed.. yuck! + * We must swap them out. + */ + /* swap the mbufs */ + tdata = control->data; + control->data = chk->data; + chk->data = tdata; + /* Swap the lengths */ + tmp = control->length; + control->length = chk->send_size; + chk->send_size = tmp; + /* Fix the FSN included */ + tmp = control->fsn_included; + control->fsn_included = chk->rec.data.fsn_num; + chk->rec.data.fsn_num = tmp; + goto place_chunk; + } + control->first_frag_seen = 1; + control->top_fsn = control->fsn_included = chk->rec.data.fsn_num; + control->data = chk->data; + sctp_mark_non_revokable(asoc, chk->rec.data.TSN_seq); + chk->data = NULL; + sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); + sctp_setup_tail_pointer(control); + return; + } +place_chunk: + if (TAILQ_EMPTY(&control->reasm)) { + TAILQ_INSERT_TAIL(&control->reasm, chk, sctp_next); + asoc->size_on_reasm_queue += chk->send_size; + sctp_ucount_incr(asoc->cnt_on_reasm_queue); + return; + } + TAILQ_FOREACH(at, &control->reasm, sctp_next) { + if (SCTP_TSN_GT(at->rec.data.fsn_num, chk->rec.data.fsn_num)) { + /* + * This one in queue is bigger than the new one, + * insert the new one before at. + */ + asoc->size_on_reasm_queue += chk->send_size; + sctp_ucount_incr(asoc->cnt_on_reasm_queue); + inserted = 1; + TAILQ_INSERT_BEFORE(at, chk, sctp_next); + break; + } else if (at->rec.data.fsn_num == chk->rec.data.fsn_num) { + /* + * They sent a duplicate fsn number. This really + * should not happen since the FSN is a TSN and it + * should have been dropped earlier. + */ + if (chk->data) { + sctp_m_freem(chk->data); + chk->data = NULL; + } + sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); + sctp_abort_in_reasm(stcb, strm, control, chk, + abort_flag, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_5); + return; + } + } + if (inserted == 0) { + /* Its at the end */ + asoc->size_on_reasm_queue += chk->send_size; + sctp_ucount_incr(asoc->cnt_on_reasm_queue); + control->top_fsn = chk->rec.data.fsn_num; + TAILQ_INSERT_TAIL(&control->reasm, chk, sctp_next); + } +} + +static int +sctp_deliver_reasm_check(struct sctp_tcb *stcb, struct sctp_association *asoc, struct sctp_stream_in *strm) +{ + /* + * Given a stream, strm, see if any of the SSN's on it that are + * fragmented are ready to deliver. If so go ahead and place them on + * the read queue. In so placing if we have hit the end, then we + * need to remove them from the stream's queue. + */ + struct sctp_queued_to_read *control, *nctl = NULL; + uint32_t next_to_del; + uint32_t pd_point; + int ret = 0; + + if (stcb->sctp_socket) { + pd_point = min(SCTP_SB_LIMIT_RCV(stcb->sctp_socket) >> SCTP_PARTIAL_DELIVERY_SHIFT, + stcb->sctp_ep->partial_delivery_point); + } else { + pd_point = stcb->sctp_ep->partial_delivery_point; + } + control = TAILQ_FIRST(&strm->uno_inqueue); + if ((control) && + (asoc->idata_supported == 0)) { + /* Special handling needed for "old" data format */ + nctl = TAILQ_NEXT(control, next_instrm); + if (sctp_handle_old_data(stcb, asoc, strm, control, pd_point)) { + goto done_un; + } + } + if (strm->pd_api_started) { + /* Can't add more */ + return (0); + } + while (control) { + SCTPDBG(SCTP_DEBUG_XXX, "Looking at control:%p e(%d) ssn:%d top_fsn:%d inc_fsn:%d -uo\n", + control, control->end_added, control->sinfo_ssn, control->top_fsn, control->fsn_included); + nctl = TAILQ_NEXT(control, next_instrm); + if (control->end_added) { + /* We just put the last bit on */ + if (control->on_strm_q) { + if (control->on_strm_q != SCTP_ON_UNORDERED) { + panic("Huh control:%p on_q:%d -- not unordered?", + control, control->on_strm_q); + } + TAILQ_REMOVE(&strm->uno_inqueue, control, next_instrm); + control->on_strm_q = 0; + } + if (control->on_read_q == 0) { + sctp_add_to_readq(stcb->sctp_ep, stcb, + control, + &stcb->sctp_socket->so_rcv, control->end_added, + SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); + } + } else { + /* Can we do a PD-API for this un-ordered guy? */ + if ((control->length >= pd_point) && (strm->pd_api_started == 0)) { + strm->pd_api_started = 1; + control->pdapi_started = 1; + sctp_add_to_readq(stcb->sctp_ep, stcb, + control, + &stcb->sctp_socket->so_rcv, control->end_added, + SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); + + break; + } + } + control = nctl; + } +done_un: + control = TAILQ_FIRST(&strm->inqueue); + if (strm->pd_api_started) { + /* Can't add more */ + return (0); + } + if (control == NULL) { + return (ret); + } + if (strm->last_sequence_delivered == control->sinfo_ssn) { + /* + * Ok the guy at the top was being partially delivered + * completed, so we remove it. Note the pd_api flag was + * taken off when the chunk was merged on in + * sctp_queue_data_for_reasm below. + */ + nctl = TAILQ_NEXT(control, next_instrm); + SCTPDBG(SCTP_DEBUG_XXX, + "Looking at control:%p e(%d) ssn:%d top_fsn:%d inc_fsn:%d (lastdel:%d)- o\n", + control, control->end_added, control->sinfo_ssn, + control->top_fsn, control->fsn_included, + strm->last_sequence_delivered); + if (control->end_added) { + if (control->on_strm_q) { + if (control->on_strm_q != SCTP_ON_ORDERED) { + panic("Huh control:%p on_q:%d -- not ordered?", + control, control->on_strm_q); + } + TAILQ_REMOVE(&strm->inqueue, control, next_instrm); + control->on_strm_q = 0; + } + if (control->on_read_q == 0) { + sctp_add_to_readq(stcb->sctp_ep, stcb, + control, + &stcb->sctp_socket->so_rcv, control->end_added, + SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); + } + if (strm->pd_api_started && control->pdapi_started) { + control->pdapi_started = 0; + strm->pd_api_started = 0; + } + control = nctl; + } + } + if (strm->pd_api_started) { + /* + * Can't add more must have gotten an un-ordered above being + * partially delivered. + */ + return (0); + } +deliver_more: + next_to_del = strm->last_sequence_delivered + 1; + if (control) { + SCTPDBG(SCTP_DEBUG_XXX, + "Looking at control:%p e(%d) ssn:%d top_fsn:%d inc_fsn:%d (nxtdel:%d)- o\n", + control, control->end_added, control->sinfo_ssn, control->top_fsn, control->fsn_included, + next_to_del); + nctl = TAILQ_NEXT(control, next_instrm); + if ((control->sinfo_ssn == next_to_del) && + (control->first_frag_seen)) { + /* Ok we can deliver it onto the stream. */ + if (control->end_added) { + /* We are done with it afterwards */ + if (control->on_strm_q) { + if (control->on_strm_q != SCTP_ON_ORDERED) { + panic("Huh control:%p on_q:%d -- not ordered?", + control, control->on_strm_q); + } + TAILQ_REMOVE(&strm->inqueue, control, next_instrm); + control->on_strm_q = 0; + } + ret++; + } + if (((control->sinfo_flags >> 8) & SCTP_DATA_NOT_FRAG) == SCTP_DATA_NOT_FRAG) { + /* + * A singleton now slipping through - mark + * it non-revokable too + */ + sctp_mark_non_revokable(asoc, control->sinfo_tsn); + } else if (control->end_added == 0) { + /* + * Check if we can defer adding until its + * all there + */ + if ((control->length < pd_point) || (strm->pd_api_started)) { + /* + * Don't need it or cannot add more + * (one being delivered that way) + */ + goto out; + } + } + if (control->on_read_q == 0) { + sctp_add_to_readq(stcb->sctp_ep, stcb, + control, + &stcb->sctp_socket->so_rcv, control->end_added, + SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); + } + strm->last_sequence_delivered = next_to_del; + if ((control->end_added) && (control->last_frag_seen)) { + control = nctl; + goto deliver_more; + } else { + /* We are now doing PD API */ + strm->pd_api_started = 1; + control->pdapi_started = 1; + } + } + } +out: + return (ret); +} + +void +sctp_add_chk_to_control(struct sctp_queued_to_read *control, + struct sctp_stream_in *strm, + struct sctp_tcb *stcb, struct sctp_association *asoc, + struct sctp_tmit_chunk *chk) +{ + /* + * Given a control and a chunk, merge the data from the chk onto the + * control and free up the chunk resources. + */ + int i_locked = 0; + + if (control->on_read_q) { + /* + * Its being pd-api'd so we must do some locks. + */ + SCTP_INP_READ_LOCK(stcb->sctp_ep); + i_locked = 1; + } + if (control->data == NULL) { + control->data = chk->data; + sctp_setup_tail_pointer(control); + } else { + sctp_add_to_tail_pointer(control, chk->data); + } + control->fsn_included = chk->rec.data.fsn_num; + asoc->size_on_reasm_queue -= chk->send_size; + sctp_ucount_decr(asoc->cnt_on_reasm_queue); + sctp_mark_non_revokable(asoc, chk->rec.data.TSN_seq); + chk->data = NULL; + if (chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) { + control->first_frag_seen = 1; + } + if (chk->rec.data.rcv_flags & SCTP_DATA_LAST_FRAG) { + /* Its complete */ + if ((control->on_strm_q) && (control->on_read_q)) { + if (control->pdapi_started) { + control->pdapi_started = 0; + strm->pd_api_started = 0; + } + if (control->on_strm_q == SCTP_ON_UNORDERED) { + /* Unordered */ + TAILQ_REMOVE(&strm->uno_inqueue, control, next_instrm); + control->on_strm_q = 0; + } else if (control->on_strm_q == SCTP_ON_ORDERED) { + /* Ordered */ + TAILQ_REMOVE(&strm->inqueue, control, next_instrm); + control->on_strm_q = 0; + } else if (control->on_strm_q) { + panic("Unknown state on ctrl:%p on_strm_q:%d", control, + control->on_strm_q); + } + } + control->end_added = 1; + control->last_frag_seen = 1; + } + if (i_locked) { + SCTP_INP_READ_UNLOCK(stcb->sctp_ep); + } + sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); } /* @@ -852,458 +1232,359 @@ sctp_deliver_reasm_check(struct sctp_tcb *stcb, struct sctp_association *asoc) */ static void sctp_queue_data_for_reasm(struct sctp_tcb *stcb, struct sctp_association *asoc, - struct sctp_tmit_chunk *chk, int *abort_flag) + struct sctp_stream_in *strm, + struct sctp_queued_to_read *control, + struct sctp_tmit_chunk *chk, + int created_control, + int *abort_flag, uint32_t tsn) { - struct mbuf *op_err; - char msg[SCTP_DIAG_INFO_LEN]; - uint32_t cum_ackp1, prev_tsn, post_tsn; - struct sctp_tmit_chunk *at, *prev, *next; + uint32_t next_fsn; + struct sctp_tmit_chunk *at, *nat; + int cnt_added, unordered; - prev = next = NULL; - cum_ackp1 = asoc->tsn_last_delivered + 1; - if (TAILQ_EMPTY(&asoc->reasmqueue)) { - /* This is the first one on the queue */ - TAILQ_INSERT_HEAD(&asoc->reasmqueue, chk, sctp_next); - /* - * we do not check for delivery of anything when only one - * fragment is here - */ - asoc->size_on_reasm_queue = chk->send_size; - sctp_ucount_incr(asoc->cnt_on_reasm_queue); - if (chk->rec.data.TSN_seq == cum_ackp1) { - if (asoc->fragmented_delivery_inprogress == 0 && - (chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) != - SCTP_DATA_FIRST_FRAG) { - /* - * An empty queue, no delivery inprogress, - * we hit the next one and it does NOT have - * a FIRST fragment mark. - */ - SCTPDBG(SCTP_DEBUG_INDATA1, "Gak, Evil plot, its not first, no fragmented delivery in progress\n"); - snprintf(msg, sizeof(msg), - "Expected B-bit for TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_2; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - } else if (asoc->fragmented_delivery_inprogress && - (chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) == SCTP_DATA_FIRST_FRAG) { - /* - * We are doing a partial delivery and the - * NEXT chunk MUST be either the LAST or - * MIDDLE fragment NOT a FIRST - */ - SCTPDBG(SCTP_DEBUG_INDATA1, "Gak, Evil plot, it IS a first and fragmented delivery in progress\n"); - snprintf(msg, sizeof(msg), - "Didn't expect B-bit for TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_3; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - } else if (asoc->fragmented_delivery_inprogress) { - /* - * Here we are ok with a MIDDLE or LAST - * piece - */ - if (chk->rec.data.stream_number != - asoc->str_of_pdapi) { - /* Got to be the right STR No */ - SCTPDBG(SCTP_DEBUG_INDATA1, "Gak, Evil plot, it IS not same stream number %d vs %d\n", - chk->rec.data.stream_number, - asoc->str_of_pdapi); - snprintf(msg, sizeof(msg), - "Expected SID=%4.4x, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - asoc->str_of_pdapi, - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_4; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - } else if ((asoc->fragment_flags & SCTP_DATA_UNORDERED) != - SCTP_DATA_UNORDERED && - chk->rec.data.stream_seq != asoc->ssn_of_pdapi) { - /* Got to be the right STR Seq */ - SCTPDBG(SCTP_DEBUG_INDATA1, "Gak, Evil plot, it IS not same stream seq %d vs %d\n", - chk->rec.data.stream_seq, - asoc->ssn_of_pdapi); - snprintf(msg, sizeof(msg), - "Expected SSN=%4.4x, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - asoc->ssn_of_pdapi, - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_5; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - } + /* + * For old un-ordered data chunks. + */ + if ((control->sinfo_flags >> 8) & SCTP_DATA_UNORDERED) { + unordered = 1; + } else { + unordered = 0; + } + /* Must be added to the stream-in queue */ + if (created_control) { + if (sctp_place_control_in_stream(strm, asoc, control)) { + /* Duplicate SSN? */ + clean_up_control(stcb, control); + sctp_abort_in_reasm(stcb, strm, control, chk, + abort_flag, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_6); + return; + } + if ((tsn == (asoc->cumulative_tsn + 1) && (asoc->idata_supported == 0))) { + /* + * Ok we created this control and now lets validate + * that its legal i.e. there is a B bit set, if not + * and we have up to the cum-ack then its invalid. + */ + if ((chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) == 0) { + sctp_abort_in_reasm(stcb, strm, control, chk, + abort_flag, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_7); + return; } } + } + if ((asoc->idata_supported == 0) && ((control->sinfo_flags >> 8) & SCTP_DATA_UNORDERED)) { + sctp_inject_old_data_unordered(stcb, asoc, strm, control, chk, abort_flag); return; } - /* Find its place */ - TAILQ_FOREACH(at, &asoc->reasmqueue, sctp_next) { - if (SCTP_TSN_GT(at->rec.data.TSN_seq, chk->rec.data.TSN_seq)) { + /* + * Ok we must queue the chunk into the reasembly portion: o if its + * the first it goes to the control mbuf. o if its not first but the + * next in sequence it goes to the control, and each succeeding one + * in order also goes. o if its not in order we place it on the list + * in its place. + */ + if (chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) { + /* Its the very first one. */ + SCTPDBG(SCTP_DEBUG_XXX, + "chunk is a first fsn:%d becomes fsn_included\n", + chk->rec.data.fsn_num); + if (control->first_frag_seen) { /* - * one in queue is bigger than the new one, insert - * before this one + * Error on senders part, they either sent us two + * data chunks with FIRST, or they sent two + * un-ordered chunks that were fragmented at the + * same time in the same stream. */ - /* A check */ - asoc->size_on_reasm_queue += chk->send_size; - sctp_ucount_incr(asoc->cnt_on_reasm_queue); - next = at; - TAILQ_INSERT_BEFORE(at, chk, sctp_next); - break; - } else if (at->rec.data.TSN_seq == chk->rec.data.TSN_seq) { - /* Gak, He sent me a duplicate str seq number */ - /* - * foo bar, I guess I will just free this new guy, - * should we abort too? FIX ME MAYBE? Or it COULD be - * that the SSN's have wrapped. Maybe I should - * compare to TSN somehow... sigh for now just blow - * away the chunk! - */ - if (chk->data) { - sctp_m_freem(chk->data); - chk->data = NULL; - } - sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); + sctp_abort_in_reasm(stcb, strm, control, chk, + abort_flag, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_8); return; - } else { - prev = at; - if (TAILQ_NEXT(at, sctp_next) == NULL) { + } + control->first_frag_seen = 1; + control->fsn_included = chk->rec.data.fsn_num; + control->data = chk->data; + sctp_mark_non_revokable(asoc, chk->rec.data.TSN_seq); + chk->data = NULL; + sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); + sctp_setup_tail_pointer(control); + } else { + /* Place the chunk in our list */ + int inserted = 0; + + if (control->last_frag_seen == 0) { + /* Still willing to raise highest FSN seen */ + if (SCTP_TSN_GT(chk->rec.data.fsn_num, control->top_fsn)) { + SCTPDBG(SCTP_DEBUG_XXX, + "We have a new top_fsn:%d\n", + chk->rec.data.fsn_num); + control->top_fsn = chk->rec.data.fsn_num; + } + if (chk->rec.data.rcv_flags & SCTP_DATA_LAST_FRAG) { + SCTPDBG(SCTP_DEBUG_XXX, + "The last fsn is now in place fsn:%d\n", + chk->rec.data.fsn_num); + control->last_frag_seen = 1; + } + if (asoc->idata_supported || control->first_frag_seen) { /* - * We are at the end, insert it after this - * one + * For IDATA we always check since we know + * that the first fragment is 0. For old + * DATA we have to receive the first before + * we knwo the first FSN (which is the TSN). */ - /* check it first */ + if (SCTP_TSN_GE(control->fsn_included, chk->rec.data.fsn_num)) { + /* + * We have already delivered up to + * this so its a dup + */ + sctp_abort_in_reasm(stcb, strm, control, chk, + abort_flag, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_9); + return; + } + } + } else { + if (chk->rec.data.rcv_flags & SCTP_DATA_LAST_FRAG) { + /* Second last? huh? */ + SCTPDBG(SCTP_DEBUG_XXX, + "Duplicate last fsn:%d (top:%d) -- abort\n", + chk->rec.data.fsn_num, control->top_fsn); + sctp_abort_in_reasm(stcb, strm, control, + chk, abort_flag, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_10); + return; + } + if (asoc->idata_supported || control->first_frag_seen) { + /* + * For IDATA we always check since we know + * that the first fragment is 0. For old + * DATA we have to receive the first before + * we knwo the first FSN (which is the TSN). + */ + + if (SCTP_TSN_GE(control->fsn_included, chk->rec.data.fsn_num)) { + /* + * We have already delivered up to + * this so its a dup + */ + SCTPDBG(SCTP_DEBUG_XXX, + "New fsn:%d is already seen in included_fsn:%d -- abort\n", + chk->rec.data.fsn_num, control->fsn_included); + sctp_abort_in_reasm(stcb, strm, control, chk, + abort_flag, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_11); + return; + } + } + /* + * validate not beyond top FSN if we have seen last + * one + */ + if (SCTP_TSN_GT(chk->rec.data.fsn_num, control->top_fsn)) { + SCTPDBG(SCTP_DEBUG_XXX, + "New fsn:%d is beyond or at top_fsn:%d -- abort\n", + chk->rec.data.fsn_num, + control->top_fsn); + sctp_abort_in_reasm(stcb, strm, control, chk, + abort_flag, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_12); + return; + } + } + /* + * If we reach here, we need to place the new chunk in the + * reassembly for this control. + */ + SCTPDBG(SCTP_DEBUG_XXX, + "chunk is a not first fsn:%d needs to be inserted\n", + chk->rec.data.fsn_num); + TAILQ_FOREACH(at, &control->reasm, sctp_next) { + if (SCTP_TSN_GT(at->rec.data.fsn_num, chk->rec.data.fsn_num)) { + /* + * This one in queue is bigger than the new + * one, insert the new one before at. + */ + SCTPDBG(SCTP_DEBUG_XXX, + "Insert it before fsn:%d\n", + at->rec.data.fsn_num); asoc->size_on_reasm_queue += chk->send_size; sctp_ucount_incr(asoc->cnt_on_reasm_queue); - TAILQ_INSERT_AFTER(&asoc->reasmqueue, at, chk, sctp_next); + TAILQ_INSERT_BEFORE(at, chk, sctp_next); + inserted = 1; + break; + } else if (at->rec.data.fsn_num == chk->rec.data.fsn_num) { + /* + * Gak, He sent me a duplicate str seq + * number + */ + /* + * foo bar, I guess I will just free this + * new guy, should we abort too? FIX ME + * MAYBE? Or it COULD be that the SSN's have + * wrapped. Maybe I should compare to TSN + * somehow... sigh for now just blow away + * the chunk! + */ + SCTPDBG(SCTP_DEBUG_XXX, + "Duplicate to fsn:%d -- abort\n", + at->rec.data.fsn_num); + sctp_abort_in_reasm(stcb, strm, control, + chk, abort_flag, + SCTP_FROM_SCTP_INDATA + SCTP_LOC_13); + return; + } + } + if (inserted == 0) { + /* Goes on the end */ + SCTPDBG(SCTP_DEBUG_XXX, "Inserting at tail of list fsn:%d\n", + chk->rec.data.fsn_num); + asoc->size_on_reasm_queue += chk->send_size; + sctp_ucount_incr(asoc->cnt_on_reasm_queue); + TAILQ_INSERT_TAIL(&control->reasm, chk, sctp_next); + } + } + /* + * Ok lets see if we can suck any up into the control structure that + * are in seq if it makes sense. + */ + cnt_added = 0; + /* + * If the first fragment has not been seen there is no sense in + * looking. + */ + if (control->first_frag_seen) { + next_fsn = control->fsn_included + 1; + TAILQ_FOREACH_SAFE(at, &control->reasm, sctp_next, nat) { + if (at->rec.data.fsn_num == next_fsn) { + /* We can add this one now to the control */ + SCTPDBG(SCTP_DEBUG_XXX, + "Adding more to control:%p at:%p fsn:%d next_fsn:%d included:%d\n", + control, at, + at->rec.data.fsn_num, + next_fsn, control->fsn_included); + TAILQ_REMOVE(&control->reasm, at, sctp_next); + sctp_add_chk_to_control(control, strm, stcb, asoc, at); + cnt_added++; + next_fsn++; + if (control->end_added && control->pdapi_started) { + if (strm->pd_api_started) { + strm->pd_api_started = 0; + control->pdapi_started = 0; + } + if (control->on_read_q == 0) { + sctp_add_to_readq(stcb->sctp_ep, stcb, + control, + &stcb->sctp_socket->so_rcv, control->end_added, + SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); + } + break; + } + } else { break; } } } - /* Now the audits */ - if (prev) { - prev_tsn = chk->rec.data.TSN_seq - 1; - if (prev_tsn == prev->rec.data.TSN_seq) { - /* - * Ok the one I am dropping onto the end is the - * NEXT. A bit of valdiation here. - */ - if ((prev->rec.data.rcv_flags & SCTP_DATA_FRAG_MASK) == - SCTP_DATA_FIRST_FRAG || - (prev->rec.data.rcv_flags & SCTP_DATA_FRAG_MASK) == - SCTP_DATA_MIDDLE_FRAG) { - /* - * Insert chk MUST be a MIDDLE or LAST - * fragment - */ - if ((chk->rec.data.rcv_flags & SCTP_DATA_FRAG_MASK) == - SCTP_DATA_FIRST_FRAG) { - SCTPDBG(SCTP_DEBUG_INDATA1, "Prev check - It can be a midlle or last but not a first\n"); - SCTPDBG(SCTP_DEBUG_INDATA1, "Gak, Evil plot, it's a FIRST!\n"); - snprintf(msg, sizeof(msg), - "Can't handle B-bit, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_6; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - return; - } - if (chk->rec.data.stream_number != - prev->rec.data.stream_number) { - /* - * Huh, need the correct STR here, - * they must be the same. - */ - SCTPDBG(SCTP_DEBUG_INDATA1, "Prev check - Gak, Evil plot, sid:%d not the same as at:%d\n", - chk->rec.data.stream_number, - prev->rec.data.stream_number); - snprintf(msg, sizeof(msg), - "Expect SID=%4.4x, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - prev->rec.data.stream_number, - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_7; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - return; - } - if ((chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED) != - (prev->rec.data.rcv_flags & SCTP_DATA_UNORDERED)) { - /* - * Huh, need the same ordering here, - * they must be the same. - */ - SCTPDBG(SCTP_DEBUG_INDATA1, "Prev check - Gak, Evil plot, U-bit not constant\n"); - snprintf(msg, sizeof(msg), - "Expect U-bit=%d for TSN=%8.8x, got U-bit=%d", - (prev->rec.data.rcv_flags & SCTP_DATA_UNORDERED) ? 1 : 0, - chk->rec.data.TSN_seq, - (chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED) ? 1 : 0); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_8; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - return; - } - if ((prev->rec.data.rcv_flags & SCTP_DATA_UNORDERED) == 0 && - chk->rec.data.stream_seq != - prev->rec.data.stream_seq) { - /* - * Huh, need the correct STR here, - * they must be the same. - */ - SCTPDBG(SCTP_DEBUG_INDATA1, "Prev check - Gak, Evil plot, sseq:%d not the same as at:%d\n", - chk->rec.data.stream_seq, - prev->rec.data.stream_seq); - snprintf(msg, sizeof(msg), - "Expect SSN=%4.4x, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - prev->rec.data.stream_seq, - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_9; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - return; - } - } else if ((prev->rec.data.rcv_flags & SCTP_DATA_FRAG_MASK) == - SCTP_DATA_LAST_FRAG) { - /* Insert chk MUST be a FIRST */ - if ((chk->rec.data.rcv_flags & SCTP_DATA_FRAG_MASK) != - SCTP_DATA_FIRST_FRAG) { - SCTPDBG(SCTP_DEBUG_INDATA1, "Prev check - Gak, evil plot, its not FIRST and it must be!\n"); - snprintf(msg, sizeof(msg), - "Expect B-bit, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_10; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - return; - } - } - } + if ((control->on_read_q) && (cnt_added > 0)) { + /* Need to wakeup the reader */ + sctp_wakeup_the_read_socket(stcb->sctp_ep); } - if (next) { - post_tsn = chk->rec.data.TSN_seq + 1; - if (post_tsn == next->rec.data.TSN_seq) { - /* - * Ok the one I am inserting ahead of is my NEXT - * one. A bit of valdiation here. - */ - if (next->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) { - /* Insert chk MUST be a last fragment */ - if ((chk->rec.data.rcv_flags & SCTP_DATA_FRAG_MASK) - != SCTP_DATA_LAST_FRAG) { - SCTPDBG(SCTP_DEBUG_INDATA1, "Next chk - Next is FIRST, we must be LAST\n"); - SCTPDBG(SCTP_DEBUG_INDATA1, "Gak, Evil plot, its not a last!\n"); - snprintf(msg, sizeof(msg), - "Expect only E-bit, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_11; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - return; - } - } else if ((next->rec.data.rcv_flags & SCTP_DATA_FRAG_MASK) == - SCTP_DATA_MIDDLE_FRAG || - (next->rec.data.rcv_flags & SCTP_DATA_FRAG_MASK) == - SCTP_DATA_LAST_FRAG) { - /* - * Insert chk CAN be MIDDLE or FIRST NOT - * LAST - */ - if ((chk->rec.data.rcv_flags & SCTP_DATA_FRAG_MASK) == - SCTP_DATA_LAST_FRAG) { - SCTPDBG(SCTP_DEBUG_INDATA1, "Next chk - Next is a MIDDLE/LAST\n"); - SCTPDBG(SCTP_DEBUG_INDATA1, "Gak, Evil plot, new prev chunk is a LAST\n"); - snprintf(msg, sizeof(msg), - "Didn't expect E-bit, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_12; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - return; - } - if (chk->rec.data.stream_number != - next->rec.data.stream_number) { - /* - * Huh, need the correct STR here, - * they must be the same. - */ - SCTPDBG(SCTP_DEBUG_INDATA1, "Next chk - Gak, Evil plot, ssn:%d not the same as at:%d\n", - chk->rec.data.stream_number, - next->rec.data.stream_number); - snprintf(msg, sizeof(msg), - "Required SID %4.4x, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - next->rec.data.stream_number, - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_13; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - return; - } - if ((chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED) != - (next->rec.data.rcv_flags & SCTP_DATA_UNORDERED)) { - /* - * Huh, need the same ordering here, - * they must be the same. - */ - SCTPDBG(SCTP_DEBUG_INDATA1, "Next check - Gak, Evil plot, U-bit not constant\n"); - snprintf(msg, sizeof(msg), - "Expect U-bit=%d for TSN=%8.8x, got U-bit=%d", - (next->rec.data.rcv_flags & SCTP_DATA_UNORDERED) ? 1 : 0, - chk->rec.data.TSN_seq, - (chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED) ? 1 : 0); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_14; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - return; - } - if ((next->rec.data.rcv_flags & SCTP_DATA_UNORDERED) == 0 && - chk->rec.data.stream_seq != - next->rec.data.stream_seq) { - /* - * Huh, need the correct STR here, - * they must be the same. - */ - SCTPDBG(SCTP_DEBUG_INDATA1, "Next chk - Gak, Evil plot, sseq:%d not the same as at:%d\n", - chk->rec.data.stream_seq, - next->rec.data.stream_seq); - snprintf(msg, sizeof(msg), - "Required SSN %4.4x, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - next->rec.data.stream_seq, - chk->rec.data.TSN_seq, - chk->rec.data.stream_number, - chk->rec.data.stream_seq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_15; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - return; - } - } - } - } - /* Do we need to do some delivery? check */ - sctp_deliver_reasm_check(stcb, asoc); } -/* - * This is an unfortunate routine. It checks to make sure a evil guy is not - * stuffing us full of bad packet fragments. A broken peer could also do this - * but this is doubtful. It is to bad I must worry about evil crackers sigh - * :< more cycles. - */ -static int -sctp_does_tsn_belong_to_reasm(struct sctp_association *asoc, - uint32_t TSN_seq) +static struct sctp_queued_to_read * +find_reasm_entry(struct sctp_stream_in *strm, uint32_t msg_id, int ordered, int old) { - struct sctp_tmit_chunk *at; - uint32_t tsn_est; + struct sctp_queued_to_read *reasm; - TAILQ_FOREACH(at, &asoc->reasmqueue, sctp_next) { - if (SCTP_TSN_GT(TSN_seq, at->rec.data.TSN_seq)) { - /* is it one bigger? */ - tsn_est = at->rec.data.TSN_seq + 1; - if (tsn_est == TSN_seq) { - /* yep. It better be a last then */ - if ((at->rec.data.rcv_flags & SCTP_DATA_FRAG_MASK) != - SCTP_DATA_LAST_FRAG) { - /* - * Ok this guy belongs next to a guy - * that is NOT last, it should be a - * middle/last, not a complete - * chunk. - */ - return (1); - } else { - /* - * This guy is ok since its a LAST - * and the new chunk is a fully - * self- contained one. - */ - return (0); - } + if (ordered) { + TAILQ_FOREACH(reasm, &strm->inqueue, next_instrm) { + if (reasm->msg_id == msg_id) { + break; } - } else if (TSN_seq == at->rec.data.TSN_seq) { - /* Software error since I have a dup? */ - return (1); - } else { - /* - * Ok, 'at' is larger than new chunk but does it - * need to be right before it. - */ - tsn_est = TSN_seq + 1; - if (tsn_est == at->rec.data.TSN_seq) { - /* Yep, It better be a first */ - if ((at->rec.data.rcv_flags & SCTP_DATA_FRAG_MASK) != - SCTP_DATA_FIRST_FRAG) { - return (1); - } else { - return (0); - } + } + } else { + if (old) { + reasm = TAILQ_FIRST(&strm->uno_inqueue); + return (reasm); + } + TAILQ_FOREACH(reasm, &strm->uno_inqueue, next_instrm) { + if (reasm->msg_id == msg_id) { + break; } } } - return (0); + return (reasm); } + static int sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, - struct mbuf **m, int offset, struct sctp_data_chunk *ch, int chk_length, + struct mbuf **m, int offset, int chk_length, struct sctp_nets *net, uint32_t * high_tsn, int *abort_flag, - int *break_flag, int last_chunk) + int *break_flag, int last_chunk, uint8_t chtype) { /* Process a data chunk */ /* struct sctp_tmit_chunk *chk; */ + struct sctp_data_chunk *ch; + struct sctp_idata_chunk *nch, chunk_buf; struct sctp_tmit_chunk *chk; - uint32_t tsn, gap; + uint32_t tsn, fsn, gap, msg_id; struct mbuf *dmbuf; int the_len; int need_reasm_check = 0; - uint16_t strmno, strmseq; + uint16_t strmno; struct mbuf *op_err; char msg[SCTP_DIAG_INFO_LEN]; - struct sctp_queued_to_read *control; - int ordered; + struct sctp_queued_to_read *control = NULL; uint32_t protocol_id; uint8_t chunk_flags; struct sctp_stream_reset_list *liste; + struct sctp_stream_in *strm; + int ordered; + size_t clen; + int created_control = 0; + uint8_t old_data; chk = NULL; - tsn = ntohl(ch->dp.tsn); + if (chtype == SCTP_IDATA) { + nch = (struct sctp_idata_chunk *)sctp_m_getptr(*m, offset, + sizeof(struct sctp_idata_chunk), (uint8_t *) & chunk_buf); + + ch = (struct sctp_data_chunk *)nch; + clen = sizeof(struct sctp_idata_chunk); + tsn = ntohl(ch->dp.tsn); + msg_id = ntohl(nch->dp.msg_id); + if (ch->ch.chunk_flags & SCTP_DATA_FIRST_FRAG) + fsn = 0; + else + fsn = ntohl(nch->dp.fsn); + old_data = 0; + } else { + ch = (struct sctp_data_chunk *)sctp_m_getptr(*m, offset, + sizeof(struct sctp_data_chunk), (uint8_t *) & chunk_buf); + + tsn = ntohl(ch->dp.tsn); + clen = sizeof(struct sctp_data_chunk); + fsn = tsn; + msg_id = (uint32_t) (ntohs(ch->dp.stream_sequence)); + nch = NULL; + old_data = 1; + } chunk_flags = ch->ch.chunk_flags; + if ((size_t)chk_length == clen) { + /* + * Need to send an abort since we had a empty data chunk. + */ + struct mbuf *op_err; + + op_err = sctp_generate_no_user_data_cause(ch->dp.tsn); + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_14; + sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); + *abort_flag = 1; + return (0); + } + ordered = ((chunk_flags & SCTP_DATA_UNORDERED) == 0); if ((chunk_flags & SCTP_DATA_SACK_IMMEDIATELY) == SCTP_DATA_SACK_IMMEDIATELY) { asoc->send_sack = 1; } @@ -1377,54 +1658,9 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, * for on a partial delivery API. */ - /* now do the tests */ - if (((asoc->cnt_on_all_streams + - asoc->cnt_on_reasm_queue + - asoc->cnt_msg_on_sb) >= SCTP_BASE_SYSCTL(sctp_max_chunks_on_queue)) || - (((int)asoc->my_rwnd) <= 0)) { - /* - * When we have NO room in the rwnd we check to make sure - * the reader is doing its job... - */ - if (stcb->sctp_socket->so_rcv.sb_cc) { - /* some to read, wake-up */ -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) - struct socket *so; - - so = SCTP_INP_SO(stcb->sctp_ep); - atomic_add_int(&stcb->asoc.refcnt, 1); - SCTP_TCB_UNLOCK(stcb); - SCTP_SOCKET_LOCK(so, 1); - SCTP_TCB_LOCK(stcb); - atomic_subtract_int(&stcb->asoc.refcnt, 1); - if (stcb->asoc.state & SCTP_STATE_CLOSED_SOCKET) { - /* assoc was freed while we were unlocked */ - SCTP_SOCKET_UNLOCK(so, 1); - return (0); - } -#endif - sctp_sorwakeup(stcb->sctp_ep, stcb->sctp_socket); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) - SCTP_SOCKET_UNLOCK(so, 1); -#endif - } - /* now is it in the mapping array of what we have accepted? */ - if (SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_map) && - SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_nr_map)) { - /* Nope not in the valid range dump it */ - sctp_set_rwnd(stcb, asoc); - if ((asoc->cnt_on_all_streams + - asoc->cnt_on_reasm_queue + - asoc->cnt_msg_on_sb) >= SCTP_BASE_SYSCTL(sctp_max_chunks_on_queue)) { - SCTP_STAT_INCR(sctps_datadropchklmt); - } else { - SCTP_STAT_INCR(sctps_datadroprwnd); - } - *break_flag = 1; - return (0); - } - } + /* Is the stream valid? */ strmno = ntohs(ch->dp.stream_id); + if (strmno >= asoc->streamincnt) { struct sctp_error_invalid_stream *cause; @@ -1458,14 +1694,121 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, } return (0); } + strm = &asoc->strmin[strmno]; /* - * Before we continue lets validate that we are not being fooled by - * an evil attacker. We can only have 4k chunks based on our TSN - * spread allowed by the mapping array 512 * 8 bits, so there is no - * way our stream sequence numbers could have wrapped. We of course - * only validate the FIRST fragment so the bit must be set. + * If its a fragmented message, lets see if we can find the control + * on the reassembly queues. */ - strmseq = ntohs(ch->dp.stream_sequence); + if ((chtype == SCTP_IDATA) && ((chunk_flags & SCTP_DATA_FIRST_FRAG) == 0) && (fsn == 0)) { + /* + * The first *must* be fsn 0, and other (middle/end) pieces + * can *not* be fsn 0. + */ + goto err_out; + } + if ((chunk_flags & SCTP_DATA_NOT_FRAG) != SCTP_DATA_NOT_FRAG) { + /* See if we can find the re-assembly entity */ + control = find_reasm_entry(strm, msg_id, ordered, old_data); + SCTPDBG(SCTP_DEBUG_XXX, "chunk_flags:0x%x look for control on queues %p\n", + chunk_flags, control); + if (control) { + /* We found something, does it belong? */ + if (ordered && (msg_id != control->sinfo_ssn)) { + err_out: + op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_15; + sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); + *abort_flag = 1; + return (0); + } + if (ordered && ((control->sinfo_flags >> 8) & SCTP_DATA_UNORDERED)) { + /* + * We can't have a switched order with an + * unordered chunk + */ + goto err_out; + } + if (!ordered && (((control->sinfo_flags >> 8) & SCTP_DATA_UNORDERED) == 0)) { + /* + * We can't have a switched unordered with a + * ordered chunk + */ + goto err_out; + } + } + } else { + /* + * Its a complete segment. Lets validate we don't have a + * re-assembly going on with the same Stream/Seq (for + * ordered) or in the same Stream for unordered. + */ + SCTPDBG(SCTP_DEBUG_XXX, "chunk_flags:0x%x look for msg in case we have dup\n", + chunk_flags); + if (find_reasm_entry(strm, msg_id, ordered, old_data)) { + SCTPDBG(SCTP_DEBUG_XXX, "chunk_flags:0x%x dup detected on msg_id:%d\n", + chunk_flags, + msg_id); + + goto err_out; + } + } + /* now do the tests */ + if (((asoc->cnt_on_all_streams + + asoc->cnt_on_reasm_queue + + asoc->cnt_msg_on_sb) >= SCTP_BASE_SYSCTL(sctp_max_chunks_on_queue)) || + (((int)asoc->my_rwnd) <= 0)) { + /* + * When we have NO room in the rwnd we check to make sure + * the reader is doing its job... + */ + if (stcb->sctp_socket->so_rcv.sb_cc) { + /* some to read, wake-up */ +#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + struct socket *so; + + so = SCTP_INP_SO(stcb->sctp_ep); + atomic_add_int(&stcb->asoc.refcnt, 1); + SCTP_TCB_UNLOCK(stcb); + SCTP_SOCKET_LOCK(so, 1); + SCTP_TCB_LOCK(stcb); + atomic_subtract_int(&stcb->asoc.refcnt, 1); + if (stcb->asoc.state & SCTP_STATE_CLOSED_SOCKET) { + /* assoc was freed while we were unlocked */ + SCTP_SOCKET_UNLOCK(so, 1); + return (0); + } +#endif + sctp_sorwakeup(stcb->sctp_ep, stcb->sctp_socket); +#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + SCTP_SOCKET_UNLOCK(so, 1); +#endif + } + /* now is it in the mapping array of what we have accepted? */ + if (nch == NULL) { + if (SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_map) && + SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_nr_map)) { + /* Nope not in the valid range dump it */ + dump_packet: + sctp_set_rwnd(stcb, asoc); + if ((asoc->cnt_on_all_streams + + asoc->cnt_on_reasm_queue + + asoc->cnt_msg_on_sb) >= SCTP_BASE_SYSCTL(sctp_max_chunks_on_queue)) { + SCTP_STAT_INCR(sctps_datadropchklmt); + } else { + SCTP_STAT_INCR(sctps_datadroprwnd); + } + *break_flag = 1; + return (0); + } + } else { + if (control == NULL) { + goto dump_packet; + } + if (SCTP_TSN_GT(fsn, control->top_fsn)) { + goto dump_packet; + } + } + } #ifdef SCTP_ASOCLOG_OF_TSNS SCTP_TCB_LOCK_ASSERT(stcb); if (asoc->tsn_in_at >= SCTP_TSN_LOG_SIZE) { @@ -1474,7 +1817,7 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, } asoc->in_tsnlog[asoc->tsn_in_at].tsn = tsn; asoc->in_tsnlog[asoc->tsn_in_at].strm = strmno; - asoc->in_tsnlog[asoc->tsn_in_at].seq = strmseq; + asoc->in_tsnlog[asoc->tsn_in_at].seq = msg_id; asoc->in_tsnlog[asoc->tsn_in_at].sz = chk_length; asoc->in_tsnlog[asoc->tsn_in_at].flgs = chunk_flags; asoc->in_tsnlog[asoc->tsn_in_at].stcb = (void *)stcb; @@ -1482,17 +1825,24 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, asoc->in_tsnlog[asoc->tsn_in_at].in_out = 1; asoc->tsn_in_at++; #endif + /* + * Before we continue lets validate that we are not being fooled by + * an evil attacker. We can only have Nk chunks based on our TSN + * spread allowed by the mapping array N * 8 bits, so there is no + * way our stream sequence numbers could have wrapped. We of course + * only validate the FIRST fragment so the bit must be set. + */ if ((chunk_flags & SCTP_DATA_FIRST_FRAG) && (TAILQ_EMPTY(&asoc->resetHead)) && (chunk_flags & SCTP_DATA_UNORDERED) == 0 && - SCTP_SSN_GE(asoc->strmin[strmno].last_sequence_delivered, strmseq)) { + SCTP_MSGID_GE(old_data, asoc->strmin[strmno].last_sequence_delivered, msg_id)) { /* The incoming sseq is behind where we last delivered? */ SCTPDBG(SCTP_DEBUG_INDATA1, "EVIL/Broken-Dup S-SEQ:%d delivered:%d from peer, Abort!\n", - strmseq, asoc->strmin[strmno].last_sequence_delivered); + msg_id, asoc->strmin[strmno].last_sequence_delivered); snprintf(msg, sizeof(msg), "Delivered SSN=%4.4x, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", asoc->strmin[strmno].last_sequence_delivered, - tsn, strmno, strmseq); + tsn, strmno, msg_id); op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_16; sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); @@ -1503,12 +1853,21 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, * From here down we may find ch-> invalid * so its a good idea NOT to use it. *************************************/ - - the_len = (chk_length - sizeof(struct sctp_data_chunk)); + if (nch) { + the_len = (chk_length - sizeof(struct sctp_idata_chunk)); + } else { + the_len = (chk_length - sizeof(struct sctp_data_chunk)); + } if (last_chunk == 0) { - dmbuf = SCTP_M_COPYM(*m, - (offset + sizeof(struct sctp_data_chunk)), - the_len, M_NOWAIT); + if (nch) { + dmbuf = SCTP_M_COPYM(*m, + (offset + sizeof(struct sctp_idata_chunk)), + the_len, M_NOWAIT); + } else { + dmbuf = SCTP_M_COPYM(*m, + (offset + sizeof(struct sctp_data_chunk)), + the_len, M_NOWAIT); + } #ifdef SCTP_MBUF_LOGGING if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MBUF_LOGGING_ENABLE) { sctp_log_mbc(dmbuf, SCTP_MBUF_ICOPY); @@ -1520,7 +1879,11 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, dmbuf = *m; /* lop off the top part */ - m_adj(dmbuf, (offset + sizeof(struct sctp_data_chunk))); + if (nch) { + m_adj(dmbuf, (offset + sizeof(struct sctp_idata_chunk))); + } else { + m_adj(dmbuf, (offset + sizeof(struct sctp_data_chunk))); + } if (SCTP_BUF_NEXT(dmbuf) == NULL) { l_len = SCTP_BUF_LEN(dmbuf); } else { @@ -1544,11 +1907,36 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, SCTP_STAT_INCR(sctps_nomem); return (0); } + /* + * Now no matter what we need a control, get one if we don't have + * one (we may have gotten it above when we found the message was + * fragmented + */ + if (control == NULL) { + sctp_alloc_a_readq(stcb, control); + sctp_build_readq_entry_mac(control, stcb, asoc->context, net, tsn, + protocol_id, + strmno, msg_id, + chunk_flags, + NULL, fsn, msg_id); + if (control == NULL) { + SCTP_STAT_INCR(sctps_nomem); + return (0); + } + if ((chunk_flags & SCTP_DATA_NOT_FRAG) == SCTP_DATA_NOT_FRAG) { + control->data = dmbuf; + control->tail_mbuf = NULL; + control->end_added = control->last_frag_seen = control->first_frag_seen = 1; + control->top_fsn = control->fsn_included = fsn; + } + created_control = 1; + } + SCTPDBG(SCTP_DEBUG_XXX, "chunk_flags:0x%x ordered:%d msgid:%d control:%p\n", + chunk_flags, ordered, msg_id, control); if ((chunk_flags & SCTP_DATA_NOT_FRAG) == SCTP_DATA_NOT_FRAG && - asoc->fragmented_delivery_inprogress == 0 && TAILQ_EMPTY(&asoc->resetHead) && ((ordered == 0) || - ((uint16_t) (asoc->strmin[strmno].last_sequence_delivered + 1) == strmseq && + ((uint16_t) (asoc->strmin[strmno].last_sequence_delivered + 1) == msg_id && TAILQ_EMPTY(&asoc->strmin[strmno].inqueue)))) { /* Candidate for express delivery */ /* @@ -1558,109 +1946,30 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, * And there is room for it in the socket buffer. Lets just * stuff it up the buffer.... */ - - /* It would be nice to avoid this copy if we could :< */ - sctp_alloc_a_readq(stcb, control); - sctp_build_readq_entry_mac(control, stcb, asoc->context, net, tsn, - protocol_id, - strmno, strmseq, - chunk_flags, - dmbuf); - if (control == NULL) { - goto failed_express_del; - } SCTP_SET_TSN_PRESENT(asoc->nr_mapping_array, gap); if (SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_nr_map)) { asoc->highest_tsn_inside_nr_map = tsn; } + SCTPDBG(SCTP_DEBUG_XXX, "Injecting control:%p to be read (mid:%d)\n", + control, msg_id); + sctp_add_to_readq(stcb->sctp_ep, stcb, control, &stcb->sctp_socket->so_rcv, 1, SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); if ((chunk_flags & SCTP_DATA_UNORDERED) == 0) { /* for ordered, bump what we delivered */ - asoc->strmin[strmno].last_sequence_delivered++; + strm->last_sequence_delivered++; } SCTP_STAT_INCR(sctps_recvexpress); if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_STR_LOGGING_ENABLE) { - sctp_log_strm_del_alt(stcb, tsn, strmseq, strmno, + sctp_log_strm_del_alt(stcb, tsn, msg_id, strmno, SCTP_STR_LOG_FROM_EXPRS_DEL); } control = NULL; - goto finish_express_del; } -failed_express_del: - /* If we reach here this is a new chunk */ - chk = NULL; - control = NULL; - /* Express for fragmented delivery? */ - if ((asoc->fragmented_delivery_inprogress) && - (stcb->asoc.control_pdapi) && - (asoc->str_of_pdapi == strmno) && - (asoc->ssn_of_pdapi == strmseq) - ) { - control = stcb->asoc.control_pdapi; - if ((chunk_flags & SCTP_DATA_FIRST_FRAG) == SCTP_DATA_FIRST_FRAG) { - /* Can't be another first? */ - goto failed_pdapi_express_del; - } - if (tsn == (control->sinfo_tsn + 1)) { - /* Yep, we can add it on */ - int end = 0; - - if (chunk_flags & SCTP_DATA_LAST_FRAG) { - end = 1; - } - if (sctp_append_to_readq(stcb->sctp_ep, stcb, control, dmbuf, end, - tsn, - &stcb->sctp_socket->so_rcv)) { - SCTP_PRINTF("Append fails end:%d\n", end); - goto failed_pdapi_express_del; - } - SCTP_SET_TSN_PRESENT(asoc->nr_mapping_array, gap); - if (SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_nr_map)) { - asoc->highest_tsn_inside_nr_map = tsn; - } - SCTP_STAT_INCR(sctps_recvexpressm); - asoc->tsn_last_delivered = tsn; - asoc->fragment_flags = chunk_flags; - asoc->tsn_of_pdapi_last_delivered = tsn; - asoc->last_flags_delivered = chunk_flags; - asoc->last_strm_seq_delivered = strmseq; - asoc->last_strm_no_delivered = strmno; - if (end) { - /* clean up the flags and such */ - asoc->fragmented_delivery_inprogress = 0; - if ((chunk_flags & SCTP_DATA_UNORDERED) == 0) { - asoc->strmin[strmno].last_sequence_delivered++; - } - stcb->asoc.control_pdapi = NULL; - if (TAILQ_EMPTY(&asoc->reasmqueue) == 0) { - /* - * There could be another message - * ready - */ - need_reasm_check = 1; - } - } - control = NULL; - goto finish_express_del; - } - } -failed_pdapi_express_del: - control = NULL; - if (SCTP_BASE_SYSCTL(sctp_do_drain) == 0) { - SCTP_SET_TSN_PRESENT(asoc->nr_mapping_array, gap); - if (SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_nr_map)) { - asoc->highest_tsn_inside_nr_map = tsn; - } - } else { - SCTP_SET_TSN_PRESENT(asoc->mapping_array, gap); - if (SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_map)) { - asoc->highest_tsn_inside_map = tsn; - } - } + /* Now will we need a chunk too? */ if ((chunk_flags & SCTP_DATA_NOT_FRAG) != SCTP_DATA_NOT_FRAG) { sctp_alloc_a_chunk(stcb, chk); if (chk == NULL) { @@ -1674,7 +1983,8 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, } chk->rec.data.TSN_seq = tsn; chk->no_fr_allowed = 0; - chk->rec.data.stream_seq = strmseq; + chk->rec.data.fsn_num = fsn; + chk->rec.data.stream_seq = msg_id; chk->rec.data.stream_number = strmno; chk->rec.data.payloadtype = protocol_id; chk->rec.data.context = stcb->asoc.context; @@ -1683,193 +1993,110 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, chk->asoc = asoc; chk->send_size = the_len; chk->whoTo = net; + SCTPDBG(SCTP_DEBUG_XXX, "Building ck:%p for control:%p to be read (mid:%d)\n", + chk, + control, msg_id); atomic_add_int(&net->ref_count, 1); chk->data = dmbuf; - } else { - sctp_alloc_a_readq(stcb, control); - sctp_build_readq_entry_mac(control, stcb, asoc->context, net, tsn, - protocol_id, - strmno, strmseq, - chunk_flags, - dmbuf); - if (control == NULL) { - /* No memory so we drop the chunk */ - SCTP_STAT_INCR(sctps_nomem); - if (last_chunk == 0) { - /* we copied it, free the copy */ - sctp_m_freem(dmbuf); - } - return (0); - } - control->length = the_len; } - - /* Mark it as received */ - /* Now queue it where it belongs */ - if (control != NULL) { - /* First a sanity check */ - if (asoc->fragmented_delivery_inprogress) { + /* Set the appropriate TSN mark */ + if (SCTP_BASE_SYSCTL(sctp_do_drain) == 0) { + SCTP_SET_TSN_PRESENT(asoc->nr_mapping_array, gap); + if (SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_nr_map)) { + asoc->highest_tsn_inside_nr_map = tsn; + } + } else { + SCTP_SET_TSN_PRESENT(asoc->mapping_array, gap); + if (SCTP_TSN_GT(tsn, asoc->highest_tsn_inside_map)) { + asoc->highest_tsn_inside_map = tsn; + } + } + /* Now is it complete (i.e. not fragmented)? */ + if ((chunk_flags & SCTP_DATA_NOT_FRAG) == SCTP_DATA_NOT_FRAG) { + /* + * Special check for when streams are resetting. We could be + * more smart about this and check the actual stream to see + * if it is not being reset.. that way we would not create a + * HOLB when amongst streams being reset and those not being + * reset. + * + */ + if (((liste = TAILQ_FIRST(&asoc->resetHead)) != NULL) && + SCTP_TSN_GT(tsn, liste->tsn)) { /* - * Ok, we have a fragmented delivery in progress if - * this chunk is next to deliver OR belongs in our - * view to the reassembly, the peer is evil or - * broken. + * yep its past where we need to reset... go ahead + * and queue it. */ - uint32_t estimate_tsn; + if (TAILQ_EMPTY(&asoc->pending_reply_queue)) { + /* first one on */ + TAILQ_INSERT_TAIL(&asoc->pending_reply_queue, control, next); + } else { + struct sctp_queued_to_read *ctlOn, *nctlOn; + unsigned char inserted = 0; - estimate_tsn = asoc->tsn_last_delivered + 1; - if (TAILQ_EMPTY(&asoc->reasmqueue) && - (estimate_tsn == control->sinfo_tsn)) { - /* Evil/Broke peer */ - sctp_m_freem(control->data); - control->data = NULL; - if (control->whoFrom) { - sctp_free_remote_addr(control->whoFrom); - control->whoFrom = NULL; + TAILQ_FOREACH_SAFE(ctlOn, &asoc->pending_reply_queue, next, nctlOn) { + if (SCTP_TSN_GT(control->sinfo_tsn, ctlOn->sinfo_tsn)) { + + continue; + } else { + /* found it */ + TAILQ_INSERT_BEFORE(ctlOn, control, next); + inserted = 1; + break; + } } - sctp_free_a_readq(stcb, control); - snprintf(msg, sizeof(msg), "Reas. queue emtpy, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - tsn, strmno, strmseq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_17; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; + if (inserted == 0) { + /* + * must be put at end, use prevP + * (all setup from loop) to setup + * nextP. + */ + TAILQ_INSERT_TAIL(&asoc->pending_reply_queue, control, next); + } + } + goto finish_express_del; + } + if (chunk_flags & SCTP_DATA_UNORDERED) { + /* queue directly into socket buffer */ + SCTPDBG(SCTP_DEBUG_XXX, "Unordered data to be read control:%p msg_id:%d\n", + control, msg_id); + sctp_mark_non_revokable(asoc, control->sinfo_tsn); + sctp_add_to_readq(stcb->sctp_ep, stcb, + control, + &stcb->sctp_socket->so_rcv, 1, + SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); + + } else { + SCTPDBG(SCTP_DEBUG_XXX, "Queue control:%p for reordering msg_id:%d\n", control, + msg_id); + sctp_queue_data_to_stream(stcb, strm, asoc, control, abort_flag, &need_reasm_check); + if (*abort_flag) { if (last_chunk) { *m = NULL; } return (0); - } else { - if (sctp_does_tsn_belong_to_reasm(asoc, control->sinfo_tsn)) { - sctp_m_freem(control->data); - control->data = NULL; - if (control->whoFrom) { - sctp_free_remote_addr(control->whoFrom); - control->whoFrom = NULL; - } - sctp_free_a_readq(stcb, control); - snprintf(msg, sizeof(msg), "PD ongoing, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - tsn, strmno, strmseq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_18; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - if (last_chunk) { - *m = NULL; - } - return (0); - } - } - } else { - /* No PDAPI running */ - if (!TAILQ_EMPTY(&asoc->reasmqueue)) { - /* - * Reassembly queue is NOT empty validate - * that this tsn does not need to be in - * reasembly queue. If it does then our peer - * is broken or evil. - */ - if (sctp_does_tsn_belong_to_reasm(asoc, control->sinfo_tsn)) { - sctp_m_freem(control->data); - control->data = NULL; - if (control->whoFrom) { - sctp_free_remote_addr(control->whoFrom); - control->whoFrom = NULL; - } - sctp_free_a_readq(stcb, control); - snprintf(msg, sizeof(msg), "No PD ongoing, got TSN=%8.8x, SID=%4.4x, SSN=%4.4x", - tsn, strmno, strmseq); - op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_19; - sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); - *abort_flag = 1; - if (last_chunk) { - *m = NULL; - } - return (0); - } } } - /* ok, if we reach here we have passed the sanity checks */ - if (chunk_flags & SCTP_DATA_UNORDERED) { - /* queue directly into socket buffer */ - sctp_mark_non_revokable(asoc, control->sinfo_tsn); - sctp_add_to_readq(stcb->sctp_ep, stcb, - control, - &stcb->sctp_socket->so_rcv, 1, SCTP_READ_LOCK_NOT_HELD, SCTP_SO_NOT_LOCKED); - } else { - /* - * Special check for when streams are resetting. We - * could be more smart about this and check the - * actual stream to see if it is not being reset.. - * that way we would not create a HOLB when amongst - * streams being reset and those not being reset. - * - * We take complete messages that have a stream reset - * intervening (aka the TSN is after where our - * cum-ack needs to be) off and put them on a - * pending_reply_queue. The reassembly ones we do - * not have to worry about since they are all sorted - * and proceessed by TSN order. It is only the - * singletons I must worry about. - */ - if (((liste = TAILQ_FIRST(&asoc->resetHead)) != NULL) && - SCTP_TSN_GT(tsn, liste->tsn)) { - /* - * yep its past where we need to reset... go - * ahead and queue it. - */ - if (TAILQ_EMPTY(&asoc->pending_reply_queue)) { - /* first one on */ - TAILQ_INSERT_TAIL(&asoc->pending_reply_queue, control, next); - } else { - struct sctp_queued_to_read *ctlOn, - *nctlOn; - unsigned char inserted = 0; - - TAILQ_FOREACH_SAFE(ctlOn, &asoc->pending_reply_queue, next, nctlOn) { - if (SCTP_TSN_GT(control->sinfo_tsn, ctlOn->sinfo_tsn)) { - continue; - } else { - /* found it */ - TAILQ_INSERT_BEFORE(ctlOn, control, next); - inserted = 1; - break; - } - } - if (inserted == 0) { - /* - * must be put at end, use - * prevP (all setup from - * loop) to setup nextP. - */ - TAILQ_INSERT_TAIL(&asoc->pending_reply_queue, control, next); - } - } - } else { - sctp_queue_data_to_stream(stcb, asoc, control, abort_flag); - if (*abort_flag) { - if (last_chunk) { - *m = NULL; - } - return (0); - } - } - } - } else { - /* Into the re-assembly queue */ - sctp_queue_data_for_reasm(stcb, asoc, chk, abort_flag); - if (*abort_flag) { - /* - * the assoc is now gone and chk was put onto the - * reasm queue, which has all been freed. - */ - if (last_chunk) { - *m = NULL; - } - return (0); + goto finish_express_del; + } + /* If we reach here its a reassembly */ + need_reasm_check = 1; + SCTPDBG(SCTP_DEBUG_XXX, + "Queue data to stream for reasm control:%p msg_id:%d\n", + control, msg_id); + sctp_queue_data_for_reasm(stcb, asoc, strm, control, chk, created_control, abort_flag, tsn); + if (*abort_flag) { + /* + * the assoc is now gone and chk was put onto the reasm + * queue, which has all been freed. + */ + if (last_chunk) { + *m = NULL; } + return (0); } finish_express_del: + /* Here we tidy up things */ if (tsn == (asoc->cumulative_tsn + 1)) { /* Update cum-ack */ asoc->cumulative_tsn = tsn; @@ -1885,7 +2112,7 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, SCTP_STAT_INCR(sctps_recvdata); /* Set it present please */ if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_STR_LOGGING_ENABLE) { - sctp_log_strm_del_alt(stcb, tsn, strmseq, strmno, SCTP_STR_LOG_FROM_MARK_TSN); + sctp_log_strm_del_alt(stcb, tsn, msg_id, strmno, SCTP_STR_LOG_FROM_MARK_TSN); } if (SCTP_BASE_SYSCTL(sctp_logging_level) & SCTP_MAP_LOGGING_ENABLE) { sctp_log_map(asoc->mapping_array_base_tsn, asoc->cumulative_tsn, @@ -1912,7 +2139,7 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, /* All can be removed */ TAILQ_FOREACH_SAFE(ctl, &asoc->pending_reply_queue, next, nctl) { TAILQ_REMOVE(&asoc->pending_reply_queue, ctl, next); - sctp_queue_data_to_stream(stcb, asoc, ctl, abort_flag); + sctp_queue_data_to_stream(stcb, strm, asoc, ctl, abort_flag, &need_reasm_check); if (*abort_flag) { return (0); } @@ -1928,7 +2155,7 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, * ctl->sinfo_tsn > liste->tsn */ TAILQ_REMOVE(&asoc->pending_reply_queue, ctl, next); - sctp_queue_data_to_stream(stcb, asoc, ctl, abort_flag); + sctp_queue_data_to_stream(stcb, strm, asoc, ctl, abort_flag, &need_reasm_check); if (*abort_flag) { return (0); } @@ -1938,12 +2165,12 @@ sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, * Now service re-assembly to pick up anything that has been * held on reassembly queue? */ - sctp_deliver_reasm_check(stcb, asoc); + (void)sctp_deliver_reasm_check(stcb, asoc, strm); need_reasm_check = 0; } if (need_reasm_check) { /* Another one waits ? */ - sctp_deliver_reasm_check(stcb, asoc); + (void)sctp_deliver_reasm_check(stcb, asoc, strm); } return (1); } @@ -2179,7 +2406,7 @@ sctp_sack_check(struct sctp_tcb *stcb, int was_a_gap) if (SCTP_OS_TIMER_PENDING(&stcb->asoc.dack_timer.timer)) { sctp_timer_stop(SCTP_TIMER_TYPE_RECV, stcb->sctp_ep, stcb, NULL, - SCTP_FROM_SCTP_INDATA + SCTP_LOC_20); + SCTP_FROM_SCTP_INDATA + SCTP_LOC_17); } sctp_send_shutdown(stcb, ((stcb->asoc.alternate) ? stcb->asoc.alternate : stcb->asoc.primary_destination)); @@ -2244,73 +2471,12 @@ sctp_sack_check(struct sctp_tcb *stcb, int was_a_gap) } } -void -sctp_service_queues(struct sctp_tcb *stcb, struct sctp_association *asoc) -{ - struct sctp_tmit_chunk *chk; - uint32_t tsize, pd_point; - uint16_t nxt_todel; - - if (asoc->fragmented_delivery_inprogress) { - sctp_service_reassembly(stcb, asoc); - } - /* Can we proceed further, i.e. the PD-API is complete */ - if (asoc->fragmented_delivery_inprogress) { - /* no */ - return; - } - /* - * Now is there some other chunk I can deliver from the reassembly - * queue. - */ -doit_again: - chk = TAILQ_FIRST(&asoc->reasmqueue); - if (chk == NULL) { - asoc->size_on_reasm_queue = 0; - asoc->cnt_on_reasm_queue = 0; - return; - } - nxt_todel = asoc->strmin[chk->rec.data.stream_number].last_sequence_delivered + 1; - if ((chk->rec.data.rcv_flags & SCTP_DATA_FIRST_FRAG) && - ((nxt_todel == chk->rec.data.stream_seq) || - (chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED))) { - /* - * Yep the first one is here. We setup to start reception, - * by backing down the TSN just in case we can't deliver. - */ - - /* - * Before we start though either all of the message should - * be here or the socket buffer max or nothing on the - * delivery queue and something can be delivered. - */ - if (stcb->sctp_socket) { - pd_point = min(SCTP_SB_LIMIT_RCV(stcb->sctp_socket) >> SCTP_PARTIAL_DELIVERY_SHIFT, - stcb->sctp_ep->partial_delivery_point); - } else { - pd_point = stcb->sctp_ep->partial_delivery_point; - } - if (sctp_is_all_msg_on_reasm(asoc, &tsize) || (tsize >= pd_point)) { - asoc->fragmented_delivery_inprogress = 1; - asoc->tsn_last_delivered = chk->rec.data.TSN_seq - 1; - asoc->str_of_pdapi = chk->rec.data.stream_number; - asoc->ssn_of_pdapi = chk->rec.data.stream_seq; - asoc->pdapi_ppid = chk->rec.data.payloadtype; - asoc->fragment_flags = chk->rec.data.rcv_flags; - sctp_service_reassembly(stcb, asoc); - if (asoc->fragmented_delivery_inprogress == 0) { - goto doit_again; - } - } - } -} - int sctp_process_data(struct mbuf **mm, int iphlen, int *offset, int length, struct sctp_inpcb *inp, struct sctp_tcb *stcb, struct sctp_nets *net, uint32_t * high_tsn) { - struct sctp_data_chunk *ch, chunk_buf; + struct sctp_chunkhdr *ch, chunk_buf; struct sctp_association *asoc; int num_chunks = 0; /* number of control chunks processed */ int stop_proc = 0; @@ -2368,8 +2534,8 @@ sctp_process_data(struct mbuf **mm, int iphlen, int *offset, int length, } } /* get pointer to the first chunk header */ - ch = (struct sctp_data_chunk *)sctp_m_getptr(m, *offset, - sizeof(struct sctp_data_chunk), (uint8_t *) & chunk_buf); + ch = (struct sctp_chunkhdr *)sctp_m_getptr(m, *offset, + sizeof(struct sctp_chunkhdr), (uint8_t *) & chunk_buf); if (ch == NULL) { return (1); } @@ -2381,14 +2547,44 @@ sctp_process_data(struct mbuf **mm, int iphlen, int *offset, int length, asoc->data_pkts_seen++; while (stop_proc == 0) { /* validate chunk length */ - chk_length = ntohs(ch->ch.chunk_length); + chk_length = ntohs(ch->chunk_length); if (length - *offset < chk_length) { /* all done, mutulated chunk */ stop_proc = 1; continue; } - if (ch->ch.chunk_type == SCTP_DATA) { - if ((size_t)chk_length < sizeof(struct sctp_data_chunk)) { + if ((asoc->idata_supported == 1) && + (ch->chunk_type == SCTP_DATA)) { + struct mbuf *op_err; + char msg[SCTP_DIAG_INFO_LEN]; + + snprintf(msg, sizeof(msg), "I-DATA chunk received when DATA was negotiated"); + op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_18; + sctp_abort_an_association(inp, stcb, op_err, SCTP_SO_NOT_LOCKED); + return (2); + } + if ((asoc->idata_supported == 0) && + (ch->chunk_type == SCTP_IDATA)) { + struct mbuf *op_err; + char msg[SCTP_DIAG_INFO_LEN]; + + snprintf(msg, sizeof(msg), "DATA chunk received when I-DATA was negotiated"); + op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_19; + sctp_abort_an_association(inp, stcb, op_err, SCTP_SO_NOT_LOCKED); + return (2); + } + if ((ch->chunk_type == SCTP_DATA) || + (ch->chunk_type == SCTP_IDATA)) { + int clen; + + if (ch->chunk_type == SCTP_DATA) { + clen = sizeof(struct sctp_data_chunk); + } else { + clen = sizeof(struct sctp_idata_chunk); + } + if ((size_t)chk_length < clen) { /* * Need to send an abort since we had a * invalid data chunk. @@ -2399,19 +2595,7 @@ sctp_process_data(struct mbuf **mm, int iphlen, int *offset, int length, snprintf(msg, sizeof(msg), "DATA chunk of length %d", chk_length); op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_21; - sctp_abort_an_association(inp, stcb, op_err, SCTP_SO_NOT_LOCKED); - return (2); - } - if ((size_t)chk_length == sizeof(struct sctp_data_chunk)) { - /* - * Need to send an abort since we had an - * empty data chunk. - */ - struct mbuf *op_err; - - op_err = sctp_generate_no_user_data_cause(ch->dp.tsn); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_22; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_20; sctp_abort_an_association(inp, stcb, op_err, SCTP_SO_NOT_LOCKED); return (2); } @@ -2423,9 +2607,9 @@ sctp_process_data(struct mbuf **mm, int iphlen, int *offset, int length, } else { last_chunk = 0; } - if (sctp_process_a_data_chunk(stcb, asoc, mm, *offset, ch, + if (sctp_process_a_data_chunk(stcb, asoc, mm, *offset, chk_length, net, high_tsn, &abort_flag, &break_flag, - last_chunk)) { + last_chunk, ch->chunk_type)) { num_chunks++; } if (abort_flag) @@ -2441,7 +2625,7 @@ sctp_process_data(struct mbuf **mm, int iphlen, int *offset, int length, } } else { /* not a data chunk in the data region */ - switch (ch->ch.chunk_type) { + switch (ch->chunk_type) { case SCTP_INITIATION: case SCTP_INITIATION_ACK: case SCTP_SELECTIVE_ACK: @@ -2477,7 +2661,7 @@ sctp_process_data(struct mbuf **mm, int iphlen, int *offset, int length, char msg[SCTP_DIAG_INFO_LEN]; snprintf(msg, sizeof(msg), "DATA chunk followed by chunk of type %2.2x", - ch->ch.chunk_type); + ch->chunk_type); op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); sctp_abort_an_association(inp, stcb, op_err, SCTP_SO_NOT_LOCKED); return (2); @@ -2485,7 +2669,7 @@ sctp_process_data(struct mbuf **mm, int iphlen, int *offset, int length, break; default: /* unknown chunk type, use bit rules */ - if (ch->ch.chunk_type & 0x40) { + if (ch->chunk_type & 0x40) { /* Add a error report to the queue */ struct mbuf *op_err; struct sctp_gen_error_cause *cause; @@ -2505,7 +2689,7 @@ sctp_process_data(struct mbuf **mm, int iphlen, int *offset, int length, } } } - if ((ch->ch.chunk_type & 0x80) == 0) { + if ((ch->chunk_type & 0x80) == 0) { /* discard the rest of this packet */ stop_proc = 1; } /* else skip this bad chunk and @@ -2519,8 +2703,8 @@ sctp_process_data(struct mbuf **mm, int iphlen, int *offset, int length, stop_proc = 1; continue; } - ch = (struct sctp_data_chunk *)sctp_m_getptr(m, *offset, - sizeof(struct sctp_data_chunk), (uint8_t *) & chunk_buf); + ch = (struct sctp_chunkhdr *)sctp_m_getptr(m, *offset, + sizeof(struct sctp_chunkhdr), (uint8_t *) & chunk_buf); if (ch == NULL) { *offset = length; stop_proc = 1; @@ -2550,9 +2734,6 @@ sctp_process_data(struct mbuf **mm, int iphlen, int *offset, int length, (void)SCTP_GETTIME_TIMEVAL(&stcb->asoc.time_last_rcvd); } /* now service all of the reassm queue if needed */ - if (!(TAILQ_EMPTY(&asoc->reasmqueue))) - sctp_service_queues(stcb, asoc); - if (SCTP_GET_STATE(asoc) == SCTP_STATE_SHUTDOWN_SENT) { /* Assure that we ack right away */ stcb->asoc.send_sack = 1; @@ -3629,7 +3810,7 @@ sctp_express_handle_sack(struct sctp_tcb *stcb, uint32_t cumack, snprintf(msg, sizeof(msg), "Cum ack %8.8x greater or equal than TSN %8.8x", cumack, send_s); op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_23; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_21; sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); return; } @@ -3832,7 +4013,7 @@ sctp_express_handle_sack(struct sctp_tcb *stcb, uint32_t cumack, net->dest_state &= ~SCTP_ADDR_PF; sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net, - SCTP_FROM_SCTP_INDATA + SCTP_LOC_24); + SCTP_FROM_SCTP_INDATA + SCTP_LOC_22); sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net); asoc->cc_functions.sctp_cwnd_update_exit_pf(stcb, net); /* Done with this net */ @@ -3918,7 +4099,7 @@ sctp_express_handle_sack(struct sctp_tcb *stcb, uint32_t cumack, } else if (SCTP_OS_TIMER_PENDING(&net->rxt_timer.timer)) { sctp_timer_stop(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, net, - SCTP_FROM_SCTP_INDATA + SCTP_LOC_25); + SCTP_FROM_SCTP_INDATA + SCTP_LOC_23); } } } @@ -3992,7 +4173,7 @@ sctp_express_handle_sack(struct sctp_tcb *stcb, uint32_t cumack, *abort_now = 1; /* XXX */ op_err = sctp_generate_cause(SCTP_CAUSE_USER_INITIATED_ABT, ""); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_26; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_24; sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); return; } else { @@ -4206,7 +4387,7 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, snprintf(msg, sizeof(msg), "Cum ack %8.8x greater or equal than TSN %8.8x", cum_ack, send_s); op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_27; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_25; sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); return; } @@ -4238,7 +4419,7 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, /* stop any timers */ TAILQ_FOREACH(net, &asoc->nets, sctp_next) { sctp_timer_stop(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, - stcb, net, SCTP_FROM_SCTP_INDATA + SCTP_LOC_28); + stcb, net, SCTP_FROM_SCTP_INDATA + SCTP_LOC_26); net->partial_bytes_acked = 0; net->flight_size = 0; } @@ -4443,14 +4624,14 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, if (net->new_pseudo_cumack) sctp_timer_stop(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, net, - SCTP_FROM_SCTP_INDATA + SCTP_LOC_29); + SCTP_FROM_SCTP_INDATA + SCTP_LOC_27); } } else { if (accum_moved) { TAILQ_FOREACH(net, &asoc->nets, sctp_next) { sctp_timer_stop(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, - stcb, net, SCTP_FROM_SCTP_INDATA + SCTP_LOC_30); + stcb, net, SCTP_FROM_SCTP_INDATA + SCTP_LOC_28); } } } @@ -4630,7 +4811,7 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, net->dest_state &= ~SCTP_ADDR_PF; sctp_timer_stop(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net, - SCTP_FROM_SCTP_INDATA + SCTP_LOC_31); + SCTP_FROM_SCTP_INDATA + SCTP_LOC_29); sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep, stcb, net); asoc->cc_functions.sctp_cwnd_update_exit_pf(stcb, net); /* Done with this net */ @@ -4654,7 +4835,7 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, /* stop all timers */ sctp_timer_stop(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, net, - SCTP_FROM_SCTP_INDATA + SCTP_LOC_32); + SCTP_FROM_SCTP_INDATA + SCTP_LOC_30); net->flight_size = 0; net->partial_bytes_acked = 0; } @@ -4710,7 +4891,7 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, *abort_now = 1; /* XXX */ op_err = sctp_generate_cause(SCTP_CAUSE_USER_INITIATED_ABT, ""); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_33; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_31; sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); return; } else { @@ -4862,7 +5043,7 @@ sctp_handle_sack(struct mbuf *m, int offset_seg, int offset_dup, } else if (SCTP_OS_TIMER_PENDING(&net->rxt_timer.timer)) { sctp_timer_stop(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, net, - SCTP_FROM_SCTP_INDATA + SCTP_LOC_34); + SCTP_FROM_SCTP_INDATA + SCTP_LOC_32); } } } @@ -4963,130 +5144,175 @@ sctp_kick_prsctp_reorder_queue(struct sctp_tcb *stcb, { struct sctp_queued_to_read *ctl, *nctl; struct sctp_association *asoc; - uint16_t tt; + uint32_t tt; + int need_reasm_check = 0, old; asoc = &stcb->asoc; tt = strmin->last_sequence_delivered; + if (asoc->idata_supported) { + old = 0; + } else { + old = 1; + } /* * First deliver anything prior to and including the stream no that - * came in + * came in. */ - TAILQ_FOREACH_SAFE(ctl, &strmin->inqueue, next, nctl) { - if (SCTP_SSN_GE(tt, ctl->sinfo_ssn)) { + TAILQ_FOREACH_SAFE(ctl, &strmin->inqueue, next_instrm, nctl) { + if (SCTP_MSGID_GE(old, tt, ctl->sinfo_ssn)) { /* this is deliverable now */ - TAILQ_REMOVE(&strmin->inqueue, ctl, next); - /* subtract pending on streams */ - asoc->size_on_all_streams -= ctl->length; - sctp_ucount_decr(asoc->cnt_on_all_streams); - /* deliver it to at least the delivery-q */ - if (stcb->sctp_socket) { - sctp_mark_non_revokable(asoc, ctl->sinfo_tsn); - sctp_add_to_readq(stcb->sctp_ep, stcb, - ctl, - &stcb->sctp_socket->so_rcv, 1, SCTP_READ_LOCK_HELD, SCTP_SO_NOT_LOCKED); + if (((ctl->sinfo_flags >> 8) & SCTP_DATA_NOT_FRAG) == SCTP_DATA_NOT_FRAG) { + if (ctl->on_strm_q) { + if (ctl->on_strm_q == SCTP_ON_ORDERED) { + TAILQ_REMOVE(&strmin->inqueue, ctl, next_instrm); + } else if (ctl->on_strm_q == SCTP_ON_UNORDERED) { + TAILQ_REMOVE(&strmin->uno_inqueue, ctl, next_instrm); + } else { + panic("strmin:%p ctl:%p unknown %d", + strmin, ctl, ctl->on_strm_q); + } + ctl->on_strm_q = 0; + } + /* subtract pending on streams */ + asoc->size_on_all_streams -= ctl->length; + sctp_ucount_decr(asoc->cnt_on_all_streams); + /* deliver it to at least the delivery-q */ + if (stcb->sctp_socket) { + sctp_mark_non_revokable(asoc, ctl->sinfo_tsn); + sctp_add_to_readq(stcb->sctp_ep, stcb, + ctl, + &stcb->sctp_socket->so_rcv, + 1, SCTP_READ_LOCK_HELD, + SCTP_SO_NOT_LOCKED); + } + } else { + /* Its a fragmented message */ + if (ctl->first_frag_seen) { + /* + * Make it so this is next to + * deliver, we restore later + */ + strmin->last_sequence_delivered = ctl->sinfo_ssn - 1; + need_reasm_check = 1; + break; + } } } else { /* no more delivery now. */ break; } } + if (need_reasm_check) { + int ret; + + ret = sctp_deliver_reasm_check(stcb, &stcb->asoc, strmin); + if (SCTP_MSGID_GT(old, tt, strmin->last_sequence_delivered)) { + /* Restore the next to deliver unless we are ahead */ + strmin->last_sequence_delivered = tt; + } + if (ret == 0) { + /* Left the front Partial one on */ + return; + } + need_reasm_check = 0; + } /* * now we must deliver things in queue the normal way if any are * now ready. */ tt = strmin->last_sequence_delivered + 1; - TAILQ_FOREACH_SAFE(ctl, &strmin->inqueue, next, nctl) { + TAILQ_FOREACH_SAFE(ctl, &strmin->inqueue, next_instrm, nctl) { if (tt == ctl->sinfo_ssn) { - /* this is deliverable now */ - TAILQ_REMOVE(&strmin->inqueue, ctl, next); - /* subtract pending on streams */ - asoc->size_on_all_streams -= ctl->length; - sctp_ucount_decr(asoc->cnt_on_all_streams); - /* deliver it to at least the delivery-q */ - strmin->last_sequence_delivered = ctl->sinfo_ssn; - if (stcb->sctp_socket) { - sctp_mark_non_revokable(asoc, ctl->sinfo_tsn); - sctp_add_to_readq(stcb->sctp_ep, stcb, - ctl, - &stcb->sctp_socket->so_rcv, 1, SCTP_READ_LOCK_HELD, SCTP_SO_NOT_LOCKED); + if (((ctl->sinfo_flags >> 8) & SCTP_DATA_NOT_FRAG) == SCTP_DATA_NOT_FRAG) { + /* this is deliverable now */ + if (ctl->on_strm_q) { + if (ctl->on_strm_q == SCTP_ON_ORDERED) { + TAILQ_REMOVE(&strmin->inqueue, ctl, next_instrm); + } else if (ctl->on_strm_q == SCTP_ON_UNORDERED) { + TAILQ_REMOVE(&strmin->uno_inqueue, ctl, next_instrm); + } else { + panic("strmin:%p ctl:%p unknown %d", + strmin, ctl, ctl->on_strm_q); + } + ctl->on_strm_q = 0; + } + /* subtract pending on streams */ + asoc->size_on_all_streams -= ctl->length; + sctp_ucount_decr(asoc->cnt_on_all_streams); + /* deliver it to at least the delivery-q */ + strmin->last_sequence_delivered = ctl->sinfo_ssn; + if (stcb->sctp_socket) { + sctp_mark_non_revokable(asoc, ctl->sinfo_tsn); + sctp_add_to_readq(stcb->sctp_ep, stcb, + ctl, + &stcb->sctp_socket->so_rcv, 1, + SCTP_READ_LOCK_HELD, SCTP_SO_NOT_LOCKED); + } + tt = strmin->last_sequence_delivered + 1; + } else { + /* Its a fragmented message */ + if (ctl->first_frag_seen) { + /* + * Make it so this is next to + * deliver + */ + strmin->last_sequence_delivered = ctl->sinfo_ssn - 1; + need_reasm_check = 1; + break; + } } - tt = strmin->last_sequence_delivered + 1; } else { break; } } + if (need_reasm_check) { + (void)sctp_deliver_reasm_check(stcb, &stcb->asoc, strmin); + } } static void sctp_flush_reassm_for_str_seq(struct sctp_tcb *stcb, struct sctp_association *asoc, - uint16_t stream, uint16_t seq) + uint16_t stream, uint32_t seq) { + struct sctp_queued_to_read *control; + struct sctp_stream_in *strm; struct sctp_tmit_chunk *chk, *nchk; - /* For each one on here see if we need to toss it */ /* - * For now large messages held on the reasmqueue that are complete + * For now large messages held on the stream reasm that are complete * will be tossed too. We could in theory do more work to spin * through and stop after dumping one msg aka seeing the start of a * new msg at the head, and call the delivery function... to see if * it can be delivered... But for now we just dump everything on the * queue. */ - TAILQ_FOREACH_SAFE(chk, &asoc->reasmqueue, sctp_next, nchk) { - /* - * Do not toss it if on a different stream or marked for - * unordered delivery in which case the stream sequence - * number has no meaning. - */ - if ((chk->rec.data.stream_number != stream) || - ((chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED) == SCTP_DATA_UNORDERED)) { - continue; + strm = &asoc->strmin[stream]; + control = find_reasm_entry(strm, (uint32_t) seq, 0, 0); + if (control == NULL) { + /* Not found */ + return; + } + TAILQ_FOREACH_SAFE(chk, &control->reasm, sctp_next, nchk) { + /* Purge hanging chunks */ + TAILQ_REMOVE(&control->reasm, chk, sctp_next); + asoc->size_on_reasm_queue -= chk->send_size; + sctp_ucount_decr(asoc->cnt_on_reasm_queue); + if (chk->data) { + sctp_m_freem(chk->data); + chk->data = NULL; } - if (chk->rec.data.stream_seq == seq) { - /* It needs to be tossed */ - TAILQ_REMOVE(&asoc->reasmqueue, chk, sctp_next); - if (SCTP_TSN_GT(chk->rec.data.TSN_seq, asoc->tsn_last_delivered)) { - asoc->tsn_last_delivered = chk->rec.data.TSN_seq; - asoc->str_of_pdapi = chk->rec.data.stream_number; - asoc->ssn_of_pdapi = chk->rec.data.stream_seq; - asoc->fragment_flags = chk->rec.data.rcv_flags; - } - asoc->size_on_reasm_queue -= chk->send_size; - sctp_ucount_decr(asoc->cnt_on_reasm_queue); - - /* Clear up any stream problem */ - if ((chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED) != SCTP_DATA_UNORDERED && - SCTP_SSN_GT(chk->rec.data.stream_seq, asoc->strmin[chk->rec.data.stream_number].last_sequence_delivered)) { - /* - * We must dump forward this streams - * sequence number if the chunk is not - * unordered that is being skipped. There is - * a chance that if the peer does not - * include the last fragment in its FWD-TSN - * we WILL have a problem here since you - * would have a partial chunk in queue that - * may not be deliverable. Also if a Partial - * delivery API as started the user may get - * a partial chunk. The next read returning - * a new chunk... really ugly but I see no - * way around it! Maybe a notify?? - */ - asoc->strmin[chk->rec.data.stream_number].last_sequence_delivered = chk->rec.data.stream_seq; - } - if (chk->data) { - sctp_m_freem(chk->data); - chk->data = NULL; - } - sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); - } else if (SCTP_SSN_GT(chk->rec.data.stream_seq, seq)) { - /* - * If the stream_seq is > than the purging one, we - * are done - */ - break; + sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); + } + TAILQ_REMOVE(&strm->inqueue, control, next_instrm); + if (control->on_read_q == 0) { + sctp_free_remote_addr(control->whoFrom); + if (control->data) { + sctp_m_freem(control->data); + control->data = NULL; } + sctp_free_a_readq(stcb, control); } } @@ -5113,7 +5339,6 @@ sctp_handle_forward_tsn(struct sctp_tcb *stcb, unsigned int i, fwd_sz, m_size; uint32_t str_seq; struct sctp_stream_in *strm; - struct sctp_tmit_chunk *chk, *nchk; struct sctp_queued_to_read *ctl, *sv; asoc = &stcb->asoc; @@ -5152,7 +5377,7 @@ sctp_handle_forward_tsn(struct sctp_tcb *stcb, "New cum ack %8.8x too high, highest TSN %8.8x", new_cum_tsn, asoc->highest_tsn_inside_map); op_err = sctp_generate_cause(SCTP_CAUSE_PROTOCOL_VIOLATION, msg); - stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_35; + stcb->sctp_ep->last_abort_code = SCTP_FROM_SCTP_INDATA + SCTP_LOC_33; sctp_abort_an_association(stcb->sctp_ep, stcb, op_err, SCTP_SO_NOT_LOCKED); return; } @@ -5183,67 +5408,9 @@ sctp_handle_forward_tsn(struct sctp_tcb *stcb, /*************************************************************/ /* 2. Clear up re-assembly queue */ /*************************************************************/ - /* - * First service it if pd-api is up, just in case we can progress it - * forward - */ - if (asoc->fragmented_delivery_inprogress) { - sctp_service_reassembly(stcb, asoc); - } - /* For each one on here see if we need to toss it */ - /* - * For now large messages held on the reasmqueue that are complete - * will be tossed too. We could in theory do more work to spin - * through and stop after dumping one msg aka seeing the start of a - * new msg at the head, and call the delivery function... to see if - * it can be delivered... But for now we just dump everything on the - * queue. - */ - TAILQ_FOREACH_SAFE(chk, &asoc->reasmqueue, sctp_next, nchk) { - if (SCTP_TSN_GE(new_cum_tsn, chk->rec.data.TSN_seq)) { - /* It needs to be tossed */ - TAILQ_REMOVE(&asoc->reasmqueue, chk, sctp_next); - if (SCTP_TSN_GT(chk->rec.data.TSN_seq, asoc->tsn_last_delivered)) { - asoc->tsn_last_delivered = chk->rec.data.TSN_seq; - asoc->str_of_pdapi = chk->rec.data.stream_number; - asoc->ssn_of_pdapi = chk->rec.data.stream_seq; - asoc->fragment_flags = chk->rec.data.rcv_flags; - } - asoc->size_on_reasm_queue -= chk->send_size; - sctp_ucount_decr(asoc->cnt_on_reasm_queue); - /* Clear up any stream problem */ - if ((chk->rec.data.rcv_flags & SCTP_DATA_UNORDERED) != SCTP_DATA_UNORDERED && - SCTP_SSN_GT(chk->rec.data.stream_seq, asoc->strmin[chk->rec.data.stream_number].last_sequence_delivered)) { - /* - * We must dump forward this streams - * sequence number if the chunk is not - * unordered that is being skipped. There is - * a chance that if the peer does not - * include the last fragment in its FWD-TSN - * we WILL have a problem here since you - * would have a partial chunk in queue that - * may not be deliverable. Also if a Partial - * delivery API as started the user may get - * a partial chunk. The next read returning - * a new chunk... really ugly but I see no - * way around it! Maybe a notify?? - */ - asoc->strmin[chk->rec.data.stream_number].last_sequence_delivered = chk->rec.data.stream_seq; - } - if (chk->data) { - sctp_m_freem(chk->data); - chk->data = NULL; - } - sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); - } else { - /* - * Ok we have gone beyond the end of the fwd-tsn's - * mark. - */ - break; - } - } + /* This is now done as part of clearing up the stream/seq */ + /*******************************************************/ /* 3. Update the PR-stream re-ordering queues and fix */ /* delivery issues as needed. */ @@ -5252,27 +5419,45 @@ sctp_handle_forward_tsn(struct sctp_tcb *stcb, if (m && fwd_sz) { /* New method. */ unsigned int num_str; + uint32_t sequence; + uint16_t stream; + int old; struct sctp_strseq *stseq, strseqbuf; + struct sctp_strseq_mid *stseq_m, strseqbuf_m; offset += sizeof(*fwd); SCTP_INP_READ_LOCK(stcb->sctp_ep); - num_str = fwd_sz / sizeof(struct sctp_strseq); + if (asoc->idata_supported) { + num_str = fwd_sz / sizeof(struct sctp_strseq_mid); + old = 0; + } else { + num_str = fwd_sz / sizeof(struct sctp_strseq); + old = 1; + } for (i = 0; i < num_str; i++) { - uint16_t st; - - stseq = (struct sctp_strseq *)sctp_m_getptr(m, offset, - sizeof(struct sctp_strseq), - (uint8_t *) & strseqbuf); - offset += sizeof(struct sctp_strseq); - if (stseq == NULL) { - break; + if (asoc->idata_supported) { + stseq_m = (struct sctp_strseq_mid *)sctp_m_getptr(m, offset, + sizeof(struct sctp_strseq_mid), + (uint8_t *) & strseqbuf_m); + offset += sizeof(struct sctp_strseq_mid); + if (stseq_m == NULL) { + break; + } + stream = ntohs(stseq_m->stream); + sequence = ntohl(stseq_m->msg_id); + } else { + stseq = (struct sctp_strseq *)sctp_m_getptr(m, offset, + sizeof(struct sctp_strseq), + (uint8_t *) & strseqbuf); + offset += sizeof(struct sctp_strseq); + if (stseq == NULL) { + break; + } + stream = ntohs(stseq->stream); + sequence = (uint32_t) ntohs(stseq->sequence); } /* Convert */ - st = ntohs(stseq->stream); - stseq->stream = st; - st = ntohs(stseq->sequence); - stseq->sequence = st; /* now process */ @@ -5281,12 +5466,12 @@ sctp_handle_forward_tsn(struct sctp_tcb *stcb, * queue where its not all delivered. If we find it * we transmute the read entry into a PDI_ABORTED. */ - if (stseq->stream >= asoc->streamincnt) { + if (stream >= asoc->streamincnt) { /* screwed up streams, stop! */ break; } - if ((asoc->str_of_pdapi == stseq->stream) && - (asoc->ssn_of_pdapi == stseq->sequence)) { + if ((asoc->str_of_pdapi == stream) && + (asoc->ssn_of_pdapi == sequence)) { /* * If this is the one we were partially * delivering now then we no longer are. @@ -5295,14 +5480,24 @@ sctp_handle_forward_tsn(struct sctp_tcb *stcb, */ asoc->fragmented_delivery_inprogress = 0; } - sctp_flush_reassm_for_str_seq(stcb, asoc, stseq->stream, stseq->sequence); + strm = &asoc->strmin[stream]; + sctp_flush_reassm_for_str_seq(stcb, asoc, stream, sequence); TAILQ_FOREACH(ctl, &stcb->sctp_ep->read_queue, next) { - if ((ctl->sinfo_stream == stseq->stream) && - (ctl->sinfo_ssn == stseq->sequence)) { - str_seq = (stseq->stream << 16) | stseq->sequence; - ctl->end_added = 1; + if ((ctl->sinfo_stream == stream) && + (ctl->sinfo_ssn == sequence)) { + str_seq = (stream << 16) | (0x0000ffff & sequence); ctl->pdapi_aborted = 1; sv = stcb->asoc.control_pdapi; + ctl->end_added = 1; + if (ctl->on_strm_q == SCTP_ON_ORDERED) { + TAILQ_REMOVE(&strm->inqueue, ctl, next_instrm); + } else if (ctl->on_strm_q == SCTP_ON_UNORDERED) { + TAILQ_REMOVE(&strm->uno_inqueue, ctl, next_instrm); + } else if (ctl->on_strm_q) { + panic("strm:%p ctl:%p unknown %d", + strm, ctl, ctl->on_strm_q); + } + ctl->on_strm_q = 0; stcb->asoc.control_pdapi = ctl; sctp_ulp_notify(SCTP_NOTIFY_PARTIAL_DELVIERY_INDICATION, stcb, @@ -5311,16 +5506,15 @@ sctp_handle_forward_tsn(struct sctp_tcb *stcb, SCTP_SO_NOT_LOCKED); stcb->asoc.control_pdapi = sv; break; - } else if ((ctl->sinfo_stream == stseq->stream) && - SCTP_SSN_GT(ctl->sinfo_ssn, stseq->sequence)) { + } else if ((ctl->sinfo_stream == stream) && + SCTP_MSGID_GT(old, ctl->sinfo_ssn, sequence)) { /* We are past our victim SSN */ break; } } - strm = &asoc->strmin[stseq->stream]; - if (SCTP_SSN_GT(stseq->sequence, strm->last_sequence_delivered)) { + if (SCTP_MSGID_GT(old, sequence, strm->last_sequence_delivered)) { /* Update the sequence number */ - strm->last_sequence_delivered = stseq->sequence; + strm->last_sequence_delivered = sequence; } /* now kick the stream the new way */ /* sa_ignore NO_NULL_CHK */ @@ -5332,10 +5526,4 @@ sctp_handle_forward_tsn(struct sctp_tcb *stcb, * Now slide thing forward. */ sctp_slide_mapping_arrays(stcb); - - if (!TAILQ_EMPTY(&asoc->reasmqueue)) { - /* now lets kick out and check for more fragmented delivery */ - /* sa_ignore NO_NULL_CHK */ - sctp_deliver_reasm_check(stcb, &stcb->asoc); - } } diff --git a/sys/netinet/sctp_indata.h b/sys/netinet/sctp_indata.h index 94cd49c6f51..c95c5b811eb 100644 --- a/sys/netinet/sctp_indata.h +++ b/sys/netinet/sctp_indata.h @@ -43,35 +43,31 @@ sctp_build_readq_entry(struct sctp_tcb *stcb, struct sctp_nets *net, uint32_t tsn, uint32_t ppid, uint32_t context, uint16_t stream_no, - uint16_t stream_seq, uint8_t flags, + uint32_t stream_seq, uint8_t flags, struct mbuf *dm); -#define sctp_build_readq_entry_mac(_ctl, in_it, context, net, tsn, ppid, stream_no, stream_seq, flags, dm) do { \ +#define sctp_build_readq_entry_mac(_ctl, in_it, context, net, tsn, ppid, stream_no, stream_seq, flags, dm, tfsn, msgid) do { \ if (_ctl) { \ atomic_add_int(&((net)->ref_count), 1); \ + memset(_ctl, 0, sizeof(struct sctp_queued_to_read)); \ (_ctl)->sinfo_stream = stream_no; \ (_ctl)->sinfo_ssn = stream_seq; \ + TAILQ_INIT(&_ctl->reasm); \ + (_ctl)->top_fsn = tfsn; \ + (_ctl)->msg_id = msgid; \ (_ctl)->sinfo_flags = (flags << 8); \ (_ctl)->sinfo_ppid = ppid; \ (_ctl)->sinfo_context = context; \ - (_ctl)->sinfo_timetolive = 0; \ + (_ctl)->fsn_included = 0xffffffff; \ + (_ctl)->top_fsn = 0xffffffff; \ (_ctl)->sinfo_tsn = tsn; \ (_ctl)->sinfo_cumtsn = tsn; \ (_ctl)->sinfo_assoc_id = sctp_get_associd((in_it)); \ - (_ctl)->length = 0; \ - (_ctl)->held_length = 0; \ (_ctl)->whoFrom = net; \ (_ctl)->data = dm; \ - (_ctl)->tail_mbuf = NULL; \ - (_ctl)->aux_data = NULL; \ (_ctl)->stcb = (in_it); \ (_ctl)->port_from = (in_it)->rport; \ - (_ctl)->spec_flags = 0; \ - (_ctl)->do_not_ref_stcb = 0; \ - (_ctl)->end_added = 0; \ - (_ctl)->pdapi_aborted = 0; \ - (_ctl)->some_taken = 0; \ } \ } while (0) diff --git a/sys/netinet/sctp_input.c b/sys/netinet/sctp_input.c index c555be2d717..9e4cbd87a51 100644 --- a/sys/netinet/sctp_input.c +++ b/sys/netinet/sctp_input.c @@ -386,17 +386,9 @@ sctp_process_init(struct sctp_init_chunk *cp, struct sctp_tcb *stcb) if (asoc->strmin != NULL) { /* Free the old ones */ - struct sctp_queued_to_read *ctl, *nctl; - for (i = 0; i < asoc->streamincnt; i++) { - TAILQ_FOREACH_SAFE(ctl, &asoc->strmin[i].inqueue, next, nctl) { - TAILQ_REMOVE(&asoc->strmin[i].inqueue, ctl, next); - sctp_free_remote_addr(ctl->whoFrom); - ctl->whoFrom = NULL; - sctp_m_freem(ctl->data); - ctl->data = NULL; - sctp_free_a_readq(stcb, ctl); - } + sctp_clean_up_stream(stcb, &asoc->strmin[i].inqueue); + sctp_clean_up_stream(stcb, &asoc->strmin[i].uno_inqueue); } SCTP_FREE(asoc->strmin, SCTP_M_STRMI); } @@ -414,8 +406,10 @@ sctp_process_init(struct sctp_init_chunk *cp, struct sctp_tcb *stcb) } for (i = 0; i < asoc->streamincnt; i++) { asoc->strmin[i].stream_no = i; - asoc->strmin[i].last_sequence_delivered = 0xffff; + asoc->strmin[i].last_sequence_delivered = 0xffffffff; TAILQ_INIT(&asoc->strmin[i].inqueue); + TAILQ_INIT(&asoc->strmin[i].uno_inqueue); + asoc->strmin[i].pd_api_started = 0; asoc->strmin[i].delivery_started = 0; } /* @@ -894,6 +888,29 @@ sctp_handle_shutdown(struct sctp_shutdown_chunk *cp, * With a normal shutdown we assume the end of last record. */ SCTP_INP_READ_LOCK(stcb->sctp_ep); + if (asoc->control_pdapi->on_strm_q) { + struct sctp_stream_in *strm; + + strm = &asoc->strmin[asoc->control_pdapi->sinfo_stream]; + if (asoc->control_pdapi->on_strm_q == SCTP_ON_UNORDERED) { + /* Unordered */ + TAILQ_REMOVE(&strm->uno_inqueue, asoc->control_pdapi, next_instrm); + asoc->control_pdapi->on_strm_q = 0; + } else if (asoc->control_pdapi->on_strm_q == SCTP_ON_ORDERED) { + /* Ordered */ + TAILQ_REMOVE(&strm->inqueue, asoc->control_pdapi, next_instrm); + asoc->control_pdapi->on_strm_q = 0; + } else { + panic("Unknown state on ctrl:%p on_strm_q:%d", + asoc->control_pdapi, + asoc->control_pdapi->on_strm_q); + } + } + printf("%s:%d End added to ctl:%p (%d)\n", + __FUNCTION__, + __LINE__, + asoc->control_pdapi, + asoc->control_pdapi->on_strm_q); asoc->control_pdapi->end_added = 1; asoc->control_pdapi->pdapi_aborted = 1; asoc->control_pdapi = NULL; @@ -1009,6 +1026,11 @@ sctp_handle_shutdown_ack(struct sctp_shutdown_ack_chunk *cp SCTP_UNUSED, * With a normal shutdown we assume the end of last record. */ SCTP_INP_READ_LOCK(stcb->sctp_ep); + printf("%s:%d End added to ctl:%p (%d)\n", + __FUNCTION__, + __LINE__, + asoc->control_pdapi, + asoc->control_pdapi->on_strm_q); asoc->control_pdapi->end_added = 1; asoc->control_pdapi->pdapi_aborted = 1; asoc->control_pdapi = NULL; @@ -1083,6 +1105,7 @@ sctp_process_unrecog_chunk(struct sctp_tcb *stcb, struct sctp_paramhdr *phdr, case SCTP_ASCONF: sctp_asconf_cleanup(stcb, net); break; + case SCTP_IFORWARD_CUM_TSN: case SCTP_FORWARD_CUM_TSN: stcb->asoc.prsctp_supported = 0; break; @@ -3450,6 +3473,7 @@ process_chunk_drop(struct sctp_tcb *stcb, struct sctp_chunk_desc *desc, /* resend last asconf ack */ sctp_send_asconf_ack(stcb); break; + case SCTP_IFORWARD_CUM_TSN: case SCTP_FORWARD_CUM_TSN: send_forward_tsn(stcb, &stcb->asoc); break; @@ -3475,8 +3499,8 @@ sctp_reset_in_stream(struct sctp_tcb *stcb, uint32_t number_entries, uint16_t * uint16_t temp; /* - * We set things to 0xffff since this is the last delivered sequence - * and we will be sending in 0 after the reset. + * We set things to 0xffffffff since this is the last delivered + * sequence and we will be sending in 0 after the reset. */ if (number_entries) { @@ -3485,12 +3509,12 @@ sctp_reset_in_stream(struct sctp_tcb *stcb, uint32_t number_entries, uint16_t * if (temp >= stcb->asoc.streamincnt) { continue; } - stcb->asoc.strmin[temp].last_sequence_delivered = 0xffff; + stcb->asoc.strmin[temp].last_sequence_delivered = 0xffffffff; } } else { list = NULL; for (i = 0; i < stcb->asoc.streamincnt; i++) { - stcb->asoc.strmin[i].last_sequence_delivered = 0xffff; + stcb->asoc.strmin[i].last_sequence_delivered = 0xffffffff; } } sctp_ulp_notify(SCTP_NOTIFY_STR_RESET_RECV, stcb, number_entries, (void *)list, SCTP_SO_NOT_LOCKED); @@ -4031,20 +4055,28 @@ sctp_handle_str_reset_add_strm(struct sctp_tcb *stcb, struct sctp_tmit_chunk *ch /* copy off the old data */ for (i = 0; i < stcb->asoc.streamincnt; i++) { TAILQ_INIT(&stcb->asoc.strmin[i].inqueue); + TAILQ_INIT(&stcb->asoc.strmin[i].uno_inqueue); stcb->asoc.strmin[i].stream_no = i; stcb->asoc.strmin[i].last_sequence_delivered = oldstrm[i].last_sequence_delivered; stcb->asoc.strmin[i].delivery_started = oldstrm[i].delivery_started; + stcb->asoc.strmin[i].pd_api_started = oldstrm[i].pd_api_started; /* now anything on those queues? */ - TAILQ_FOREACH_SAFE(ctl, &oldstrm[i].inqueue, next, nctl) { - TAILQ_REMOVE(&oldstrm[i].inqueue, ctl, next); - TAILQ_INSERT_TAIL(&stcb->asoc.strmin[i].inqueue, ctl, next); + TAILQ_FOREACH_SAFE(ctl, &oldstrm[i].inqueue, next_instrm, nctl) { + TAILQ_REMOVE(&oldstrm[i].inqueue, ctl, next_instrm); + TAILQ_INSERT_TAIL(&stcb->asoc.strmin[i].inqueue, ctl, next_instrm); + } + TAILQ_FOREACH_SAFE(ctl, &oldstrm[i].uno_inqueue, next_instrm, nctl) { + TAILQ_REMOVE(&oldstrm[i].uno_inqueue, ctl, next_instrm); + TAILQ_INSERT_TAIL(&stcb->asoc.strmin[i].uno_inqueue, ctl, next_instrm); } } /* Init the new streams */ for (i = stcb->asoc.streamincnt; i < num_stream; i++) { TAILQ_INIT(&stcb->asoc.strmin[i].inqueue); + TAILQ_INIT(&stcb->asoc.strmin[i].uno_inqueue); stcb->asoc.strmin[i].stream_no = i; - stcb->asoc.strmin[i].last_sequence_delivered = 0xffff; + stcb->asoc.strmin[i].last_sequence_delivered = 0xffffffff; + stcb->asoc.strmin[i].pd_api_started = 0; stcb->asoc.strmin[i].delivery_started = 0; } SCTP_FREE(oldstrm, SCTP_M_STRMI); @@ -5441,6 +5473,7 @@ __attribute__((noinline)) } break; case SCTP_FORWARD_CUM_TSN: + case SCTP_IFORWARD_CUM_TSN: SCTPDBG(SCTP_DEBUG_INPUT3, "SCTP_FWD-TSN\n"); if (chk_length < sizeof(struct sctp_forward_tsn_chunk)) { /* Its not ours */ diff --git a/sys/netinet/sctp_os_bsd.h b/sys/netinet/sctp_os_bsd.h index 777e0a72e77..90c4ab8c614 100644 --- a/sys/netinet/sctp_os_bsd.h +++ b/sys/netinet/sctp_os_bsd.h @@ -480,9 +480,9 @@ sctp_get_mbuf_for_msg(unsigned int space_needed, #define SCTP_SAVE_ATOMIC_DECREMENT(addr, val) \ { \ int32_t oldval; \ - oldval = atomic_fetchadd_int(addr, -val); \ + oldval = atomic_fetchadd_int(addr, -val); \ if (oldval < val) { \ - panic("Counter goes negative"); \ + panic("Counter goes negative addr:%p val:%d oldval:%d", addr, val, oldval); \ } \ } #else diff --git a/sys/netinet/sctp_output.c b/sys/netinet/sctp_output.c index 8eda473b880..77d6114735f 100644 --- a/sys/netinet/sctp_output.c +++ b/sys/netinet/sctp_output.c @@ -3326,10 +3326,11 @@ sctp_source_address_selection(struct sctp_inpcb *inp, #endif /** - * Rules: - Find the route if needed, cache if I can. - Look at - * interface address in route, Is it in the bound list. If so we - * have the best source. - If not we must rotate amongst the - * addresses. + * Rules: + * - Find the route if needed, cache if I can. + * - Look at interface address in route, Is it in the bound list. If so we + * have the best source. + * - If not we must rotate amongst the addresses. * * Cavets and issues * @@ -4796,6 +4797,9 @@ sctp_send_initiate(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int so_locked pr_supported = (struct sctp_supported_chunk_types_param *)(mtod(m, caddr_t)+chunk_len); if (stcb->asoc.prsctp_supported == 1) { pr_supported->chunk_types[num_ext++] = SCTP_FORWARD_CUM_TSN; + if (stcb->asoc.idata_supported) { + pr_supported->chunk_types[num_ext++] = SCTP_IFORWARD_CUM_TSN; + } } if (stcb->asoc.auth_supported == 1) { pr_supported->chunk_types[num_ext++] = SCTP_AUTHENTICATION; @@ -4807,6 +4811,9 @@ sctp_send_initiate(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int so_locked if (stcb->asoc.reconfig_supported == 1) { pr_supported->chunk_types[num_ext++] = SCTP_STREAM_RESET; } + if (stcb->asoc.idata_supported) { + pr_supported->chunk_types[num_ext++] = SCTP_IDATA; + } if (stcb->asoc.nrsack_supported == 1) { pr_supported->chunk_types[num_ext++] = SCTP_NR_SELECTIVE_ACK; } @@ -5951,6 +5958,10 @@ sctp_send_initiate_ack(struct sctp_inpcb *inp, struct sctp_tcb *stcb, if (((asoc != NULL) && (asoc->prsctp_supported == 1)) || ((asoc == NULL) && (inp->prsctp_supported == 1))) { pr_supported->chunk_types[num_ext++] = SCTP_FORWARD_CUM_TSN; + if (((asoc != NULL) && (asoc->idata_supported == 1)) || + ((asoc == NULL) && (inp->idata_supported == 1))) { + pr_supported->chunk_types[num_ext++] = SCTP_IFORWARD_CUM_TSN; + } } if (((asoc != NULL) && (asoc->auth_supported == 1)) || ((asoc == NULL) && (inp->auth_supported == 1))) { @@ -5965,6 +5976,10 @@ sctp_send_initiate_ack(struct sctp_inpcb *inp, struct sctp_tcb *stcb, ((asoc == NULL) && (inp->reconfig_supported == 1))) { pr_supported->chunk_types[num_ext++] = SCTP_STREAM_RESET; } + if (((asoc != NULL) && (asoc->idata_supported == 1)) || + ((asoc == NULL) && (inp->idata_supported == 1))) { + pr_supported->chunk_types[num_ext++] = SCTP_IDATA; + } if (((asoc != NULL) && (asoc->nrsack_supported == 1)) || ((asoc == NULL) && (inp->nrsack_supported == 1))) { pr_supported->chunk_types[num_ext++] = SCTP_NR_SELECTIVE_ACK; @@ -6232,11 +6247,15 @@ sctp_get_frag_point(struct sctp_tcb *stcb, * we use a larger frag point. */ if (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) { - ovh = SCTP_MED_OVERHEAD; + ovh = SCTP_MIN_OVERHEAD; } else { - ovh = SCTP_MED_V4_OVERHEAD; + ovh = SCTP_MIN_V4_OVERHEAD; + } + if (stcb->asoc.idata_supported) { + ovh += sizeof(struct sctp_idata_chunk); + } else { + ovh += sizeof(struct sctp_data_chunk); } - if (stcb->asoc.sctp_frag_point > asoc->smallest_mtu) siz = asoc->smallest_mtu - ovh; else @@ -6361,6 +6380,8 @@ sctp_msg_append(struct sctp_tcb *stcb, sp->timetolive = srcv->sinfo_timetolive; sp->ppid = srcv->sinfo_ppid; sp->context = srcv->sinfo_context; + sp->fsn = 0; + sp->msg_id = atomic_fetchadd_int(&stcb->asoc.assoc_msg_id, 1); if (sp->sinfo_flags & SCTP_ADDR_OVER) { sp->net = net; atomic_add_int(&sp->net->ref_count, 1); @@ -7163,8 +7184,9 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, struct sctp_association *asoc; struct sctp_stream_queue_pending *sp; struct sctp_tmit_chunk *chk; - struct sctp_data_chunk *dchkh; - uint32_t to_move, length; + struct sctp_data_chunk *dchkh = NULL; + struct sctp_idata_chunk *ndchkh = NULL; + uint32_t to_move, length, leading; uint8_t rcv_flags = 0; uint8_t some_taken; uint8_t send_lock_up = 0; @@ -7173,6 +7195,7 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, asoc = &stcb->asoc; one_more_time: /* sa_ignore FREED_MEMORY */ + *locked = 0; sp = TAILQ_FIRST(&strq->outqueue); if (sp == NULL) { *locked = 0; @@ -7184,7 +7207,9 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, if (sp) { goto one_more_time; } - if (strq->last_msg_incomplete) { + if ((sctp_is_feature_on(stcb->sctp_ep, SCTP_PCB_FLAGS_EXPLICIT_EOR) == 0) && + (stcb->asoc.idata_supported == 0) && + (strq->last_msg_incomplete)) { SCTP_PRINTF("Huh? Stream:%d lm_in_c=%d but queue is NULL\n", strq->stream_no, strq->last_msg_incomplete); @@ -7248,7 +7273,8 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, * sender just finished this but still holds a * reference */ - *locked = 1; + if (stcb->asoc.idata_supported == 0) + *locked = 1; *giveup = 1; to_move = 0; goto out_of; @@ -7257,7 +7283,8 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, /* is there some to get */ if (sp->length == 0) { /* no */ - *locked = 1; + if (stcb->asoc.idata_supported == 0) + *locked = 1; *giveup = 1; to_move = 0; goto out_of; @@ -7280,7 +7307,8 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, } sp->length = 0; sp->some_taken = 1; - *locked = 1; + if (stcb->asoc.idata_supported == 0) + *locked = 1; *giveup = 1; to_move = 0; goto out_of; @@ -7342,7 +7370,8 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, } } else { /* Nothing to take. */ - if (sp->some_taken) { + if ((sp->some_taken) && + (stcb->asoc.idata_supported == 0)) { *locked = 1; } *giveup = 1; @@ -7461,7 +7490,12 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, } else { atomic_subtract_int(&sp->length, to_move); } - if (M_LEADINGSPACE(chk->data) < (int)sizeof(struct sctp_data_chunk)) { + if (stcb->asoc.idata_supported == 0) { + leading = (int)sizeof(struct sctp_data_chunk); + } else { + leading = (int)sizeof(struct sctp_idata_chunk); + } + if (M_LEADINGSPACE(chk->data) < leading) { /* Not enough room for a chunk header, get some */ struct mbuf *m; @@ -7502,7 +7536,11 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, M_ALIGN(chk->data, 4); } } - SCTP_BUF_PREPEND(chk->data, sizeof(struct sctp_data_chunk), M_NOWAIT); + if (stcb->asoc.idata_supported == 0) { + SCTP_BUF_PREPEND(chk->data, sizeof(struct sctp_data_chunk), M_NOWAIT); + } else { + SCTP_BUF_PREPEND(chk->data, sizeof(struct sctp_idata_chunk), M_NOWAIT); + } if (chk->data == NULL) { /* HELP, TSNH since we assured it would not above? */ #ifdef INVARIANTS @@ -7515,8 +7553,13 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, to_move = 0; goto out_of; } - sctp_snd_sb_alloc(stcb, sizeof(struct sctp_data_chunk)); - chk->book_size = chk->send_size = (uint16_t) (to_move + sizeof(struct sctp_data_chunk)); + if (stcb->asoc.idata_supported == 0) { + sctp_snd_sb_alloc(stcb, sizeof(struct sctp_data_chunk)); + chk->book_size = chk->send_size = (uint16_t) (to_move + sizeof(struct sctp_data_chunk)); + } else { + sctp_snd_sb_alloc(stcb, sizeof(struct sctp_idata_chunk)); + chk->book_size = chk->send_size = (uint16_t) (to_move + sizeof(struct sctp_idata_chunk)); + } chk->book_size_scale = 0; chk->sent = SCTP_DATAGRAM_UNSENT; @@ -7555,7 +7598,11 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, (uint32_t) ((chk->rec.data.stream_number << 16) | chk->rec.data.stream_seq), chk->rec.data.TSN_seq); } - dchkh = mtod(chk->data, struct sctp_data_chunk *); + if (stcb->asoc.idata_supported == 0) { + dchkh = mtod(chk->data, struct sctp_data_chunk *); + } else { + ndchkh = mtod(chk->data, struct sctp_idata_chunk *); + } /* * Put the rest of the things in place now. Size was done earlier in * previous loop prior to padding. @@ -7577,14 +7624,29 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, asoc->out_tsnlog[asoc->tsn_out_at].in_out = 2; asoc->tsn_out_at++; #endif - - dchkh->ch.chunk_type = SCTP_DATA; - dchkh->ch.chunk_flags = chk->rec.data.rcv_flags; - dchkh->dp.tsn = htonl(chk->rec.data.TSN_seq); - dchkh->dp.stream_id = htons(strq->stream_no); - dchkh->dp.stream_sequence = htons(chk->rec.data.stream_seq); - dchkh->dp.protocol_id = chk->rec.data.payloadtype; - dchkh->ch.chunk_length = htons(chk->send_size); + if (stcb->asoc.idata_supported == 0) { + dchkh->ch.chunk_type = SCTP_DATA; + dchkh->ch.chunk_flags = chk->rec.data.rcv_flags; + dchkh->dp.tsn = htonl(chk->rec.data.TSN_seq); + dchkh->dp.stream_id = htons((strq->stream_no & 0x0000ffff)); + dchkh->dp.stream_sequence = htons(chk->rec.data.stream_seq); + dchkh->dp.protocol_id = chk->rec.data.payloadtype; + dchkh->ch.chunk_length = htons(chk->send_size); + } else { + ndchkh->ch.chunk_type = SCTP_IDATA; + ndchkh->ch.chunk_flags = chk->rec.data.rcv_flags; + ndchkh->dp.tsn = htonl(chk->rec.data.TSN_seq); + ndchkh->dp.stream_id = htons(strq->stream_no); + /* WHAT DO WE DO HERE??? */ + ndchkh->dp.reserved = htons(0); + ndchkh->dp.msg_id = htonl(sp->msg_id); + if (sp->fsn == 0) + ndchkh->dp.protocol_id = chk->rec.data.payloadtype; + else + ndchkh->dp.fsn = htonl(sp->fsn); + sp->fsn++; + ndchkh->ch.chunk_length = htons(chk->send_size); + } /* Now advance the chk->send_size by the actual pad needed. */ if (chk->send_size < SCTP_SIZE32(chk->book_size)) { /* need a pad */ @@ -7640,7 +7702,8 @@ sctp_move_to_outqueue(struct sctp_tcb *stcb, stcb->asoc.locked_on_sending = NULL; } else { /* more to go, we are locked */ - *locked = 1; + if (stcb->asoc.idata_supported == 0) + *locked = 1; } asoc->chunks_on_out_queue++; strq->chunks_on_queues++; @@ -7686,7 +7749,11 @@ sctp_fill_outqueue(struct sctp_tcb *stcb, break; } /* Need an allowance for the data chunk header too */ - goal_mtu -= sizeof(struct sctp_data_chunk); + if (stcb->asoc.idata_supported == 0) { + goal_mtu -= sizeof(struct sctp_data_chunk); + } else { + goal_mtu -= sizeof(struct sctp_idata_chunk); + } /* must make even word boundary */ goal_mtu &= 0xfffffffc; @@ -7797,12 +7864,15 @@ sctp_med_chunk_output(struct sctp_inpcb *inp, { /** * Ok this is the generic chunk service queue. we must do the - * following: - Service the stream queue that is next, moving any - * message (note I must get a complete message i.e. FIRST/MIDDLE and - * LAST to the out queue in one pass) and assigning TSN's - Check to - * see if the cwnd/rwnd allows any output, if so we go ahead and - * fomulate and send the low level chunks. Making sure to combine - * any control in the control chunk queue also. + * following: + * - Service the stream queue that is next, moving any + * message (note I must get a complete message i.e. FIRST/MIDDLE and + * LAST to the out queue in one pass) and assigning TSN's. This + * only applys though if the peer does not support NDATA. For NDATA + * chunks its ok to not send the entire message ;-) + * - Check to see if the cwnd/rwnd allows any output, if so we go ahead and + * fomulate and send the low level chunks. Making sure to combine + * any control in the control chunk queue also. */ struct sctp_nets *net, *start_at, *sack_goes_to = NULL, *old_start_at = NULL; struct mbuf *outchain, *endoutchain; @@ -10225,7 +10295,13 @@ send_forward_tsn(struct sctp_tcb *stcb, struct sctp_tmit_chunk *chk; struct sctp_forward_tsn_chunk *fwdtsn; uint32_t advance_peer_ack_point; + int old; + if (asoc->idata_supported) { + old = 0; + } else { + old = 1; + } SCTP_TCB_LOCK_ASSERT(stcb); TAILQ_FOREACH(chk, &asoc->control_send_queue, sctp_next) { if (chk->rec.chunk_id.id == SCTP_FORWARD_CUM_TSN) { @@ -10247,6 +10323,11 @@ send_forward_tsn(struct sctp_tcb *stcb, } asoc->fwd_tsn_cnt++; chk->copy_by_ref = 0; + /* + * We don't do the old thing here since this is used not for on-wire + * but to tell if we are sending a fwd-tsn by the stack during + * output. And if its a IFORWARD or a FORWARD it is a fwd-tsn. + */ chk->rec.chunk_id.id = SCTP_FORWARD_CUM_TSN; chk->rec.chunk_id.can_take_data = 0; chk->flags = 0; @@ -10271,6 +10352,7 @@ send_forward_tsn(struct sctp_tcb *stcb, { struct sctp_tmit_chunk *at, *tp1, *last; struct sctp_strseq *strseq; + struct sctp_strseq_mid *strseq_m; unsigned int cnt_of_space, i, ovh; unsigned int space_needed; unsigned int cnt_of_skipped = 0; @@ -10287,9 +10369,13 @@ send_forward_tsn(struct sctp_tcb *stcb, } cnt_of_skipped++; } - space_needed = (sizeof(struct sctp_forward_tsn_chunk) + - (cnt_of_skipped * sizeof(struct sctp_strseq))); - + if (old) { + space_needed = (sizeof(struct sctp_forward_tsn_chunk) + + (cnt_of_skipped * sizeof(struct sctp_strseq))); + } else { + space_needed = (sizeof(struct sctp_forward_tsn_chunk) + + (cnt_of_skipped * sizeof(struct sctp_strseq_mid))); + } cnt_of_space = (unsigned int)M_TRAILINGSPACE(chk->data); if (stcb->sctp_ep->sctp_flags & SCTP_PCB_FLAGS_BOUND_V6) { @@ -10318,8 +10404,13 @@ send_forward_tsn(struct sctp_tcb *stcb, 0xff, 0xff, cnt_of_space, space_needed); } - cnt_of_skipped = cnt_of_space - sizeof(struct sctp_forward_tsn_chunk); - cnt_of_skipped /= sizeof(struct sctp_strseq); + if (old) { + cnt_of_skipped = cnt_of_space - sizeof(struct sctp_forward_tsn_chunk); + cnt_of_skipped /= sizeof(struct sctp_strseq); + } else { + cnt_of_skipped = cnt_of_space - sizeof(struct sctp_forward_tsn_chunk); + cnt_of_skipped /= sizeof(struct sctp_strseq_mid); + } /*- * Go through and find the TSN that will be the one * we report. @@ -10346,15 +10437,24 @@ send_forward_tsn(struct sctp_tcb *stcb, */ if (last) advance_peer_ack_point = last->rec.data.TSN_seq; - space_needed = sizeof(struct sctp_forward_tsn_chunk) + - cnt_of_skipped * sizeof(struct sctp_strseq); + if (old) { + space_needed = sizeof(struct sctp_forward_tsn_chunk) + + cnt_of_skipped * sizeof(struct sctp_strseq); + } else { + space_needed = sizeof(struct sctp_forward_tsn_chunk) + + cnt_of_skipped * sizeof(struct sctp_strseq_mid); + } } chk->send_size = space_needed; /* Setup the chunk */ fwdtsn = mtod(chk->data, struct sctp_forward_tsn_chunk *); fwdtsn->ch.chunk_length = htons(chk->send_size); fwdtsn->ch.chunk_flags = 0; - fwdtsn->ch.chunk_type = SCTP_FORWARD_CUM_TSN; + if (old) { + fwdtsn->ch.chunk_type = SCTP_FORWARD_CUM_TSN; + } else { + fwdtsn->ch.chunk_type = SCTP_IFORWARD_CUM_TSN; + } fwdtsn->new_cumulative_tsn = htonl(advance_peer_ack_point); SCTP_BUF_LEN(chk->data) = chk->send_size; fwdtsn++; @@ -10362,7 +10462,11 @@ send_forward_tsn(struct sctp_tcb *stcb, * Move pointer to after the fwdtsn and transfer to the * strseq pointer. */ - strseq = (struct sctp_strseq *)fwdtsn; + if (old) { + strseq = (struct sctp_strseq *)fwdtsn; + } else { + strseq_m = (struct sctp_strseq_mid *)fwdtsn; + } /*- * Now populate the strseq list. This is done blindly * without pulling out duplicate stream info. This is @@ -10389,9 +10493,15 @@ send_forward_tsn(struct sctp_tcb *stcb, if (at->rec.data.TSN_seq == advance_peer_ack_point) { at->rec.data.fwd_tsn_cnt = 0; } - strseq->stream = ntohs(at->rec.data.stream_number); - strseq->sequence = ntohs(at->rec.data.stream_seq); - strseq++; + if (old) { + strseq->stream = ntohs(at->rec.data.stream_number); + strseq->sequence = ntohs(at->rec.data.stream_seq); + strseq++; + } else { + strseq_m->stream = ntohs(at->rec.data.stream_number); + strseq_m->msg_id = ntohl(at->rec.data.stream_seq); + strseq_m++; + } at = tp1; } } @@ -12312,6 +12422,8 @@ sctp_copy_it_in(struct sctp_tcb *stcb, sp->timetolive = srcv->sinfo_timetolive; sp->ppid = srcv->sinfo_ppid; sp->context = srcv->sinfo_context; + sp->fsn = 0; + sp->msg_id = atomic_fetchadd_int(&stcb->asoc.assoc_msg_id, 1); (void)SCTP_GETTIME_TIMEVAL(&sp->ts); sp->stream = srcv->sinfo_stream; @@ -13065,8 +13177,10 @@ sctp_lower_sosend(struct socket *so, * interrupt. */ strm->last_msg_incomplete = 1; - asoc->stream_locked = 1; - asoc->stream_locked_on = srcv->sinfo_stream; + if (stcb->asoc.idata_supported == 0) { + asoc->stream_locked = 1; + asoc->stream_locked_on = srcv->sinfo_stream; + } sp->sender_all_done = 0; } sctp_snd_sb_alloc(stcb, sp->length); @@ -13325,8 +13439,10 @@ sctp_lower_sosend(struct socket *so, if (sp) { if (sp->msg_is_complete == 0) { strm->last_msg_incomplete = 1; - asoc->stream_locked = 1; - asoc->stream_locked_on = srcv->sinfo_stream; + if (stcb->asoc.idata_supported == 0) { + asoc->stream_locked = 1; + asoc->stream_locked_on = srcv->sinfo_stream; + } } else { sp->sender_all_done = 1; strm->last_msg_incomplete = 0; diff --git a/sys/netinet/sctp_pcb.c b/sys/netinet/sctp_pcb.c index 12aa145aea4..2013fbcd59a 100644 --- a/sys/netinet/sctp_pcb.c +++ b/sys/netinet/sctp_pcb.c @@ -2476,6 +2476,8 @@ sctp_inpcb_alloc(struct socket *so, uint32_t vrf_id) inp->reconfig_supported = (uint8_t) SCTP_BASE_SYSCTL(sctp_reconfig_enable); inp->nrsack_supported = (uint8_t) SCTP_BASE_SYSCTL(sctp_nrsack_enable); inp->pktdrop_supported = (uint8_t) SCTP_BASE_SYSCTL(sctp_pktdrop_enable); + inp->idata_supported = 0; + inp->fibnum = so->so_fibnum; /* init the small hash table we use to track asocid <-> tcb */ inp->sctp_asocidhash = SCTP_HASH_INIT(SCTP_STACK_VTAG_HASH_SIZE, &inp->hashasocidmark); @@ -3660,8 +3662,7 @@ sctp_inpcb_free(struct sctp_inpcb *inp, int immediate, int from) * no need to free the net count, since at this point all * assoc's are gone. */ - SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_readq), sq); - SCTP_DECR_READQ_COUNT(); + sctp_free_a_readq(NULL, sq); } /* Now the sctp_pcb things */ /* @@ -4649,6 +4650,45 @@ sctp_add_vtag_to_timewait(uint32_t tag, uint32_t time, uint16_t lport, uint16_t } } +void +sctp_clean_up_stream(struct sctp_tcb *stcb, struct sctp_readhead *rh) +{ + struct sctp_tmit_chunk *chk, *nchk; + struct sctp_queued_to_read *ctl, *nctl; + + TAILQ_FOREACH_SAFE(ctl, rh, next_instrm, nctl) { + TAILQ_REMOVE(rh, ctl, next_instrm); + ctl->on_strm_q = 0; + if (ctl->on_read_q == 0) { + sctp_free_remote_addr(ctl->whoFrom); + if (ctl->data) { + sctp_m_freem(ctl->data); + ctl->data = NULL; + } + } + /* Reassembly free? */ + TAILQ_FOREACH_SAFE(chk, &ctl->reasm, sctp_next, nchk) { + TAILQ_REMOVE(&ctl->reasm, chk, sctp_next); + if (chk->data) { + sctp_m_freem(chk->data); + chk->data = NULL; + } + if (chk->holds_key_ref) + sctp_auth_key_release(stcb, chk->auth_keyid, SCTP_SO_LOCKED); + sctp_free_remote_addr(chk->whoTo); + SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_chunk), chk); + SCTP_DECR_CHK_COUNT(); + /* sa_ignore FREED_MEMORY */ + } + /* + * We don't free the address here since all the net's were + * freed above. + */ + if (ctl->on_read_q == 0) { + sctp_free_a_readq(stcb, ctl); + } + } +} /*- @@ -4986,8 +5026,7 @@ sctp_free_assoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int from_inpcbfre sq->whoFrom = NULL; sq->stcb = NULL; /* Free the ctl entry */ - SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_readq), sq); - SCTP_DECR_READQ_COUNT(); + sctp_free_a_readq(stcb, sq); /* sa_ignore FREED_MEMORY */ } TAILQ_FOREACH_SAFE(chk, &asoc->free_chunks, sctp_next, nchk) { @@ -5100,20 +5139,6 @@ sctp_free_assoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int from_inpcbfre SCTP_DECR_CHK_COUNT(); /* sa_ignore FREED_MEMORY */ } - TAILQ_FOREACH_SAFE(chk, &asoc->reasmqueue, sctp_next, nchk) { - TAILQ_REMOVE(&asoc->reasmqueue, chk, sctp_next); - if (chk->data) { - sctp_m_freem(chk->data); - chk->data = NULL; - } - if (chk->holds_key_ref) - sctp_auth_key_release(stcb, chk->auth_keyid, SCTP_SO_LOCKED); - sctp_free_remote_addr(chk->whoTo); - SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_chunk), chk); - SCTP_DECR_CHK_COUNT(); - /* sa_ignore FREED_MEMORY */ - } - if (asoc->mapping_array) { SCTP_FREE(asoc->mapping_array, SCTP_M_MAP); asoc->mapping_array = NULL; @@ -5129,23 +5154,9 @@ sctp_free_assoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, int from_inpcbfre } asoc->strm_realoutsize = asoc->streamoutcnt = 0; if (asoc->strmin) { - struct sctp_queued_to_read *ctl, *nctl; - for (i = 0; i < asoc->streamincnt; i++) { - TAILQ_FOREACH_SAFE(ctl, &asoc->strmin[i].inqueue, next, nctl) { - TAILQ_REMOVE(&asoc->strmin[i].inqueue, ctl, next); - sctp_free_remote_addr(ctl->whoFrom); - if (ctl->data) { - sctp_m_freem(ctl->data); - ctl->data = NULL; - } - /* - * We don't free the address here since all - * the net's were freed above. - */ - SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_readq), ctl); - SCTP_DECR_READQ_COUNT(); - } + sctp_clean_up_stream(stcb, &asoc->strmin[i].inqueue); + sctp_clean_up_stream(stcb, &asoc->strmin[i].uno_inqueue); } SCTP_FREE(asoc->strmin, SCTP_M_STRMI); asoc->strmin = NULL; @@ -6094,6 +6105,7 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m, uint8_t peer_supports_reconfig; uint8_t peer_supports_nrsack; uint8_t peer_supports_pktdrop; + uint8_t peer_supports_idata; #ifdef INET struct sockaddr_in sin; @@ -6122,6 +6134,7 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m, } else { sa = src; } + peer_supports_idata = 0; peer_supports_ecn = 0; peer_supports_prsctp = 0; peer_supports_auth = 0; @@ -6502,6 +6515,9 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m, case SCTP_AUTHENTICATION: peer_supports_auth = 1; break; + case SCTP_IDATA: + peer_supports_idata = 1; + break; default: /* one I have not learned yet */ break; @@ -6660,6 +6676,10 @@ sctp_load_addresses_from_init(struct sctp_tcb *stcb, struct mbuf *m, (peer_supports_reconfig == 0)) { stcb->asoc.reconfig_supported = 0; } + if ((stcb->asoc.idata_supported == 1) && + (peer_supports_idata == 0)) { + stcb->asoc.idata_supported = 0; + } if ((stcb->asoc.nrsack_supported == 1) && (peer_supports_nrsack == 0)) { stcb->asoc.nrsack_supported = 0; @@ -6851,26 +6871,9 @@ sctp_drain_mbufs(struct sctp_tcb *stcb) SCTP_STAT_INCR(sctps_protocol_drains_done); cumulative_tsn_p1 = asoc->cumulative_tsn + 1; cnt = 0; - /* First look in the re-assembly queue */ - TAILQ_FOREACH_SAFE(chk, &asoc->reasmqueue, sctp_next, nchk) { - if (SCTP_TSN_GT(chk->rec.data.TSN_seq, cumulative_tsn_p1)) { - /* Yep it is above cum-ack */ - cnt++; - SCTP_CALC_TSN_TO_GAP(gap, chk->rec.data.TSN_seq, asoc->mapping_array_base_tsn); - asoc->size_on_reasm_queue = sctp_sbspace_sub(asoc->size_on_reasm_queue, chk->send_size); - sctp_ucount_decr(asoc->cnt_on_reasm_queue); - SCTP_UNSET_TSN_PRESENT(asoc->mapping_array, gap); - TAILQ_REMOVE(&asoc->reasmqueue, chk, sctp_next); - if (chk->data) { - sctp_m_freem(chk->data); - chk->data = NULL; - } - sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); - } - } /* Ok that was fun, now we will drain all the inbound streams? */ for (strmat = 0; strmat < asoc->streamincnt; strmat++) { - TAILQ_FOREACH_SAFE(ctl, &asoc->strmin[strmat].inqueue, next, nctl) { + TAILQ_FOREACH_SAFE(ctl, &asoc->strmin[strmat].inqueue, next_instrm, nctl) { if (SCTP_TSN_GT(ctl->sinfo_tsn, cumulative_tsn_p1)) { /* Yep it is above cum-ack */ cnt++; @@ -6878,14 +6881,58 @@ sctp_drain_mbufs(struct sctp_tcb *stcb) asoc->size_on_all_streams = sctp_sbspace_sub(asoc->size_on_all_streams, ctl->length); sctp_ucount_decr(asoc->cnt_on_all_streams); SCTP_UNSET_TSN_PRESENT(asoc->mapping_array, gap); - TAILQ_REMOVE(&asoc->strmin[strmat].inqueue, ctl, next); + TAILQ_REMOVE(&asoc->strmin[strmat].inqueue, ctl, next_instrm); if (ctl->data) { sctp_m_freem(ctl->data); ctl->data = NULL; } sctp_free_remote_addr(ctl->whoFrom); - SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_readq), ctl); - SCTP_DECR_READQ_COUNT(); + /* Now its reasm? */ + TAILQ_FOREACH_SAFE(chk, &ctl->reasm, sctp_next, nchk) { + cnt++; + SCTP_CALC_TSN_TO_GAP(gap, chk->rec.data.TSN_seq, asoc->mapping_array_base_tsn); + asoc->size_on_reasm_queue = sctp_sbspace_sub(asoc->size_on_reasm_queue, chk->send_size); + sctp_ucount_decr(asoc->cnt_on_reasm_queue); + SCTP_UNSET_TSN_PRESENT(asoc->mapping_array, gap); + TAILQ_REMOVE(&ctl->reasm, chk, sctp_next); + if (chk->data) { + sctp_m_freem(chk->data); + chk->data = NULL; + } + sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); + } + sctp_free_a_readq(stcb, ctl); + } + } + TAILQ_FOREACH_SAFE(ctl, &asoc->strmin[strmat].uno_inqueue, next_instrm, nctl) { + if (SCTP_TSN_GT(ctl->sinfo_tsn, cumulative_tsn_p1)) { + /* Yep it is above cum-ack */ + cnt++; + SCTP_CALC_TSN_TO_GAP(gap, ctl->sinfo_tsn, asoc->mapping_array_base_tsn); + asoc->size_on_all_streams = sctp_sbspace_sub(asoc->size_on_all_streams, ctl->length); + sctp_ucount_decr(asoc->cnt_on_all_streams); + SCTP_UNSET_TSN_PRESENT(asoc->mapping_array, gap); + TAILQ_REMOVE(&asoc->strmin[strmat].uno_inqueue, ctl, next_instrm); + if (ctl->data) { + sctp_m_freem(ctl->data); + ctl->data = NULL; + } + sctp_free_remote_addr(ctl->whoFrom); + /* Now its reasm? */ + TAILQ_FOREACH_SAFE(chk, &ctl->reasm, sctp_next, nchk) { + cnt++; + SCTP_CALC_TSN_TO_GAP(gap, chk->rec.data.TSN_seq, asoc->mapping_array_base_tsn); + asoc->size_on_reasm_queue = sctp_sbspace_sub(asoc->size_on_reasm_queue, chk->send_size); + sctp_ucount_decr(asoc->cnt_on_reasm_queue); + SCTP_UNSET_TSN_PRESENT(asoc->mapping_array, gap); + TAILQ_REMOVE(&ctl->reasm, chk, sctp_next); + if (chk->data) { + sctp_m_freem(chk->data); + chk->data = NULL; + } + sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); + } + sctp_free_a_readq(stcb, ctl); } } } diff --git a/sys/netinet/sctp_pcb.h b/sys/netinet/sctp_pcb.h index f28016a6277..a5810a73cd2 100644 --- a/sys/netinet/sctp_pcb.h +++ b/sys/netinet/sctp_pcb.h @@ -410,6 +410,7 @@ struct sctp_inpcb { uint8_t ecn_supported; uint8_t prsctp_supported; uint8_t auth_supported; + uint8_t idata_supported; uint8_t asconf_supported; uint8_t reconfig_supported; uint8_t nrsack_supported; @@ -629,6 +630,8 @@ int sctp_destination_is_reachable(struct sctp_tcb *, struct sockaddr *); int sctp_swap_inpcb_for_listen(struct sctp_inpcb *inp); +void sctp_clean_up_stream(struct sctp_tcb *stcb, struct sctp_readhead *rh); + /*- * Null in last arg inpcb indicate run on ALL ep's. Specific inp in last arg * indicates run on ONLY assoc's of the specified endpoint. diff --git a/sys/netinet/sctp_structs.h b/sys/netinet/sctp_structs.h index 87566502320..87aa05b92b6 100644 --- a/sys/netinet/sctp_structs.h +++ b/sys/netinet/sctp_structs.h @@ -389,7 +389,7 @@ struct sctp_nets { struct sctp_data_chunkrec { uint32_t TSN_seq; /* the TSN of this transmit */ - uint16_t stream_seq; /* the stream sequence number of this transmit */ + uint32_t stream_seq; /* the stream sequence number of this transmit */ uint16_t stream_number; /* the stream number of this guy */ uint32_t payloadtype; uint32_t context; /* from send */ @@ -400,6 +400,7 @@ struct sctp_data_chunkrec { */ uint32_t fast_retran_tsn; /* sending_seq at the time of FR */ struct timeval timetodrop; /* time we drop it from queue */ + uint32_t fsn_num; /* Fragment Sequence Number */ uint8_t doing_fast_retransmit; uint8_t rcv_flags; /* flags pulled from data chunk on inbound for * outbound holds sending flags for PR-SCTP. */ @@ -458,7 +459,7 @@ struct sctp_tmit_chunk { */ struct sctp_queued_to_read { /* sinfo structure Pluse more */ uint16_t sinfo_stream; /* off the wire */ - uint16_t sinfo_ssn; /* off the wire */ + uint32_t sinfo_ssn; /* off the wire */ uint16_t sinfo_flags; /* SCTP_UNORDERED from wire use SCTP_EOF for * EOR */ uint32_t sinfo_ppid; /* off the wire */ @@ -468,8 +469,11 @@ struct sctp_queued_to_read { /* sinfo structure Pluse more */ uint32_t sinfo_cumtsn; /* Use this in reassembly as last TSN */ sctp_assoc_t sinfo_assoc_id; /* our assoc id */ /* Non sinfo stuff */ + uint32_t msg_id; /* Fragment Index */ uint32_t length; /* length of data */ uint32_t held_length; /* length held in sb */ + uint32_t top_fsn; /* Highest FSN in queue */ + uint32_t fsn_included; /* Highest FSN in *data portion */ struct sctp_nets *whoFrom; /* where it came from */ struct mbuf *data; /* front of the mbuf chain of data with * PKT_HDR */ @@ -478,14 +482,24 @@ struct sctp_queued_to_read { /* sinfo structure Pluse more */ * take it from us */ struct sctp_tcb *stcb; /* assoc, used for window update */ TAILQ_ENTRY(sctp_queued_to_read) next; + TAILQ_ENTRY(sctp_queued_to_read) next_instrm; + struct sctpchunk_listhead reasm; uint16_t port_from; uint16_t spec_flags; /* Flags to hold the notification field */ uint8_t do_not_ref_stcb; uint8_t end_added; uint8_t pdapi_aborted; + uint8_t pdapi_started; uint8_t some_taken; + uint8_t last_frag_seen; + uint8_t first_frag_seen; + uint8_t on_read_q; + uint8_t on_strm_q; }; +#define SCTP_ON_ORDERED 1 +#define SCTP_ON_UNORDERED 2 + /* This data structure will be on the outbound * stream queues. Data will be pulled off from * the front of the mbuf data and chunk-ified @@ -511,6 +525,8 @@ struct sctp_stream_queue_pending { struct sctp_nets *net; TAILQ_ENTRY(sctp_stream_queue_pending) next; TAILQ_ENTRY(sctp_stream_queue_pending) ss_next; + uint32_t fsn; + uint32_t msg_id; uint32_t length; uint32_t timetolive; uint32_t ppid; @@ -534,9 +550,11 @@ struct sctp_stream_queue_pending { TAILQ_HEAD(sctpwheelunrel_listhead, sctp_stream_in); struct sctp_stream_in { struct sctp_readhead inqueue; + struct sctp_readhead uno_inqueue; + uint32_t last_sequence_delivered; /* used for re-order */ uint16_t stream_no; - uint16_t last_sequence_delivered; /* used for re-order */ uint8_t delivery_started; + uint8_t pd_api_started; }; TAILQ_HEAD(sctpwheel_listhead, sctp_stream_out); @@ -605,8 +623,8 @@ struct sctp_stream_out { uint32_t abandoned_unsent[1]; uint32_t abandoned_sent[1]; #endif + uint32_t next_sequence_send; /* next one I expect to send out */ uint16_t stream_no; - uint16_t next_sequence_send; /* next one I expect to send out */ uint8_t last_msg_incomplete; uint8_t state; }; @@ -635,12 +653,13 @@ struct sctp_scoping { struct sctp_tsn_log { void *stcb; uint32_t tsn; + uint32_t seq; uint16_t strm; - uint16_t seq; uint16_t sz; uint16_t flgs; uint16_t in_pos; uint16_t in_out; + uint16_t resv; }; #define SCTP_FS_SPEC_LOG_SIZE 200 @@ -811,9 +830,6 @@ struct sctp_association { struct sctpchunk_listhead sent_queue; struct sctpchunk_listhead send_queue; - /* re-assembly queue for fragmented chunks on the inbound path */ - struct sctpchunk_listhead reasmqueue; - /* Scheduling queues */ union scheduling_data ss_data; @@ -881,7 +897,7 @@ struct sctp_association { uint32_t stream_scheduling_module; uint32_t vrf_id; - + uint32_t assoc_msg_id; uint32_t cookie_preserve_req; /* ASCONF next seq I am sending out, inits at init-tsn */ uint32_t asconf_seq_out; @@ -1177,12 +1193,12 @@ struct sctp_association { uint8_t reconfig_supported; uint8_t nrsack_supported; uint8_t pktdrop_supported; + uint8_t idata_supported; /* Did the peer make the stream config (add out) request */ uint8_t peer_req_out; uint8_t local_strreset_support; - uint8_t peer_supports_nat; struct sctp_scoping scope; diff --git a/sys/netinet/sctp_sysctl.h b/sys/netinet/sctp_sysctl.h index 38494add3d8..7a7ffc709d3 100644 --- a/sys/netinet/sctp_sysctl.h +++ b/sys/netinet/sctp_sysctl.h @@ -432,7 +432,7 @@ struct sctp_sysctl { #define SCTPCTL_STRICT_DATA_ORDER_DESC "Enforce strict data ordering, abort if control inside data" #define SCTPCTL_STRICT_DATA_ORDER_MIN 0 #define SCTPCTL_STRICT_DATA_ORDER_MAX 1 -#define SCTPCTL_STRICT_DATA_ORDER_DEFAULT 0 +#define SCTPCTL_STRICT_DATA_ORDER_DEFAULT 1 /* min_residual: min residual in a data fragment leftover */ #define SCTPCTL_MIN_RESIDUAL_DESC "Minimum residual data chunk in second part of split" diff --git a/sys/netinet/sctp_uio.h b/sys/netinet/sctp_uio.h index 2299f66fa51..248a25e3164 100644 --- a/sys/netinet/sctp_uio.h +++ b/sys/netinet/sctp_uio.h @@ -318,12 +318,13 @@ struct sctp_assoc_change { #define SCTP_CANT_STR_ASSOC 0x0005 /* sac_info values */ -#define SCTP_ASSOC_SUPPORTS_PR 0x01 -#define SCTP_ASSOC_SUPPORTS_AUTH 0x02 -#define SCTP_ASSOC_SUPPORTS_ASCONF 0x03 -#define SCTP_ASSOC_SUPPORTS_MULTIBUF 0x04 -#define SCTP_ASSOC_SUPPORTS_RE_CONFIG 0x05 -#define SCTP_ASSOC_SUPPORTS_MAX 0x05 +#define SCTP_ASSOC_SUPPORTS_PR 0x01 +#define SCTP_ASSOC_SUPPORTS_AUTH 0x02 +#define SCTP_ASSOC_SUPPORTS_ASCONF 0x03 +#define SCTP_ASSOC_SUPPORTS_MULTIBUF 0x04 +#define SCTP_ASSOC_SUPPORTS_RE_CONFIG 0x05 +#define SCTP_ASSOC_SUPPORTS_INTERLEAVING 0x06 +#define SCTP_ASSOC_SUPPORTS_MAX 0x06 /* * Address event */ diff --git a/sys/netinet/sctp_usrreq.c b/sys/netinet/sctp_usrreq.c index a75f0259f0c..64d3a262943 100644 --- a/sys/netinet/sctp_usrreq.c +++ b/sys/netinet/sctp_usrreq.c @@ -1730,6 +1730,37 @@ sctp_getopt(struct socket *so, int optname, void *optval, size_t *optsize, *optsize = sizeof(uint32_t); break; } + case SCTP_INTERLEAVING_SUPPORTED: + { + struct sctp_assoc_value *av; + + SCTP_CHECK_AND_CAST(av, optval, struct sctp_assoc_value, *optsize); + SCTP_FIND_STCB(inp, stcb, av->assoc_id); + + if (stcb) { + av->assoc_value = stcb->asoc.idata_supported; + SCTP_TCB_UNLOCK(stcb); + } else { + if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || + (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || + (av->assoc_id == SCTP_FUTURE_ASSOC)) { + SCTP_INP_RLOCK(inp); + if (inp->idata_supported) { + av->assoc_value = 1; + } else { + av->assoc_value = 0; + } + SCTP_INP_RUNLOCK(inp); + } else { + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); + error = EINVAL; + } + } + if (error == 0) { + *optsize = sizeof(struct sctp_assoc_value); + } + break; + } case SCTP_CMT_ON_OFF: { struct sctp_assoc_value *av; @@ -3904,6 +3935,47 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize, } break; } + case SCTP_INTERLEAVING_SUPPORTED: + { + struct sctp_assoc_value *av; + + SCTP_CHECK_AND_CAST(av, optval, struct sctp_assoc_value, optsize); + SCTP_FIND_STCB(inp, stcb, av->assoc_id); + + if (stcb) { + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); + error = EINVAL; + SCTP_TCB_UNLOCK(stcb); + } else { + if ((inp->sctp_flags & SCTP_PCB_FLAGS_TCPTYPE) || + (inp->sctp_flags & SCTP_PCB_FLAGS_IN_TCPPOOL) || + (av->assoc_id == SCTP_FUTURE_ASSOC)) { + SCTP_INP_WLOCK(inp); + if (av->assoc_value == 0) { + inp->idata_supported = 0; + } else { + if ((sctp_is_feature_on(inp, SCTP_PCB_FLAGS_FRAG_INTERLEAVE)) && + (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_INTERLEAVE_STRMS))) { + inp->idata_supported = 1; + } else { + /* + * Must have Frag + * interleave and + * stream interleave + * on + */ + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); + error = EINVAL; + } + } + SCTP_INP_WUNLOCK(inp); + } else { + SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL); + error = EINVAL; + } + } + break; + } case SCTP_CMT_ON_OFF: if (SCTP_BASE_SYSCTL(sctp_cmt_on_off)) { struct sctp_assoc_value *av; diff --git a/sys/netinet/sctp_var.h b/sys/netinet/sctp_var.h index 7213b97684b..b4656e99f78 100644 --- a/sys/netinet/sctp_var.h +++ b/sys/netinet/sctp_var.h @@ -97,11 +97,19 @@ extern struct pr_usrreqs sctp_usrreqs; * an mbuf cache as well so it is not really worth doing, at least * right now :-D */ - +#ifdef INVARIANTS +#define sctp_free_a_readq(_stcb, _readq) { \ + if ((_readq)->on_strm_q) \ + panic("On strm q stcb:%p readq:%p", (_stcb), (_readq)); \ + SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_readq), (_readq)); \ + SCTP_DECR_READQ_COUNT(); \ +} +#else #define sctp_free_a_readq(_stcb, _readq) { \ SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_readq), (_readq)); \ SCTP_DECR_READQ_COUNT(); \ } +#endif #define sctp_alloc_a_readq(_stcb, _readq) { \ (_readq) = SCTP_ZONE_GET(SCTP_BASE_INFO(ipi_zone_readq), struct sctp_queued_to_read); \ @@ -196,7 +204,7 @@ extern struct pr_usrreqs sctp_usrreqs; } #define sctp_sbfree(ctl, stcb, sb, m) { \ - SCTP_SAVE_ATOMIC_DECREMENT(&(sb)->sb_cc, SCTP_BUF_LEN((m))); \ + SCTP_SAVE_ATOMIC_DECREMENT(&(sb)->sb_cc, SCTP_BUF_LEN((m))); \ SCTP_SAVE_ATOMIC_DECREMENT(&(sb)->sb_mbcnt, MSIZE); \ if (((ctl)->do_not_ref_stcb == 0) && stcb) {\ SCTP_SAVE_ATOMIC_DECREMENT(&(stcb)->asoc.sb_cc, SCTP_BUF_LEN((m))); \ @@ -211,7 +219,7 @@ extern struct pr_usrreqs sctp_usrreqs; atomic_add_int(&(sb)->sb_cc,SCTP_BUF_LEN((m))); \ atomic_add_int(&(sb)->sb_mbcnt, MSIZE); \ if (stcb) { \ - atomic_add_int(&(stcb)->asoc.sb_cc,SCTP_BUF_LEN((m))); \ + atomic_add_int(&(stcb)->asoc.sb_cc, SCTP_BUF_LEN((m))); \ atomic_add_int(&(stcb)->asoc.my_rwnd_control_len, MSIZE); \ } \ if (SCTP_BUF_TYPE(m) != MT_DATA && SCTP_BUF_TYPE(m) != MT_HEADER && \ diff --git a/sys/netinet/sctputil.c b/sys/netinet/sctputil.c index 9434f06b146..87aa5197ff2 100644 --- a/sys/netinet/sctputil.c +++ b/sys/netinet/sctputil.c @@ -970,11 +970,13 @@ sctp_init_asoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, asoc->sctp_cmt_on_off = inp->sctp_cmt_on_off; asoc->ecn_supported = inp->ecn_supported; asoc->prsctp_supported = inp->prsctp_supported; + asoc->idata_supported = inp->idata_supported; asoc->auth_supported = inp->auth_supported; asoc->asconf_supported = inp->asconf_supported; asoc->reconfig_supported = inp->reconfig_supported; asoc->nrsack_supported = inp->nrsack_supported; asoc->pktdrop_supported = inp->pktdrop_supported; + asoc->idata_supported = inp->idata_supported; asoc->sctp_cmt_pf = (uint8_t) 0; asoc->sctp_frag_point = inp->sctp_frag_point; asoc->sctp_features = inp->sctp_features; @@ -1163,7 +1165,6 @@ sctp_init_asoc(struct sctp_inpcb *inp, struct sctp_tcb *stcb, TAILQ_INIT(&asoc->asconf_send_queue); TAILQ_INIT(&asoc->send_queue); TAILQ_INIT(&asoc->sent_queue); - TAILQ_INIT(&asoc->reasmqueue); TAILQ_INIT(&asoc->resetHead); asoc->max_inbound_streams = inp->sctp_ep.max_open_streams_intome; TAILQ_INIT(&asoc->asconf_queue); @@ -2736,6 +2737,9 @@ sctp_notify_assoc_change(uint16_t state, struct sctp_tcb *stcb, if (stcb->asoc.asconf_supported == 1) { sac->sac_info[i++] = SCTP_ASSOC_SUPPORTS_ASCONF; } + if (stcb->asoc.idata_supported == 1) { + sac->sac_info[i++] = SCTP_ASSOC_SUPPORTS_INTERLEAVING; + } sac->sac_info[i++] = SCTP_ASSOC_SUPPORTS_MULTIBUF; if (stcb->asoc.reconfig_supported == 1) { sac->sac_info[i++] = SCTP_ASSOC_SUPPORTS_RE_CONFIG; @@ -4449,6 +4453,43 @@ sctp_pull_off_control_to_new_inp(struct sctp_inpcb *old_inp, SCTP_INP_READ_UNLOCK(new_inp); } +void +sctp_wakeup_the_read_socket(struct sctp_inpcb *inp) +{ + if (inp && inp->sctp_socket) { + if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_ZERO_COPY_ACTIVE)) { + SCTP_ZERO_COPY_EVENT(inp, inp->sctp_socket); + } else { +#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + struct socket *so; + + so = SCTP_INP_SO(inp); + if (!so_locked) { + if (stcb) { + atomic_add_int(&stcb->asoc.refcnt, 1); + SCTP_TCB_UNLOCK(stcb); + } + SCTP_SOCKET_LOCK(so, 1); + if (stcb) { + SCTP_TCB_LOCK(stcb); + atomic_subtract_int(&stcb->asoc.refcnt, 1); + } + if (inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) { + SCTP_SOCKET_UNLOCK(so, 1); + return; + } + } +#endif + sctp_sorwakeup(inp, inp->sctp_socket); +#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) + if (!so_locked) { + SCTP_SOCKET_UNLOCK(so, 1); + } +#endif + } + } +} + void sctp_add_to_readq(struct sctp_inpcb *inp, struct sctp_tcb *stcb, @@ -4484,7 +4525,7 @@ sctp_add_to_readq(struct sctp_inpcb *inp, sctp_m_freem(control->data); control->data = NULL; } - SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_readq), control); + sctp_free_a_readq(stcb, control); if (inp_read_lock_held == 0) SCTP_INP_READ_UNLOCK(inp); return; @@ -4530,7 +4571,7 @@ sctp_add_to_readq(struct sctp_inpcb *inp, } else { /* Everything got collapsed out?? */ sctp_free_remote_addr(control->whoFrom); - SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_readq), control); + sctp_free_a_readq(stcb, control); if (inp_read_lock_held == 0) SCTP_INP_READ_UNLOCK(inp); return; @@ -4539,39 +4580,11 @@ sctp_add_to_readq(struct sctp_inpcb *inp, control->end_added = 1; } TAILQ_INSERT_TAIL(&inp->read_queue, control, next); + control->on_read_q = 1; if (inp_read_lock_held == 0) SCTP_INP_READ_UNLOCK(inp); if (inp && inp->sctp_socket) { - if (sctp_is_feature_on(inp, SCTP_PCB_FLAGS_ZERO_COPY_ACTIVE)) { - SCTP_ZERO_COPY_EVENT(inp, inp->sctp_socket); - } else { -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) - struct socket *so; - - so = SCTP_INP_SO(inp); - if (!so_locked) { - if (stcb) { - atomic_add_int(&stcb->asoc.refcnt, 1); - SCTP_TCB_UNLOCK(stcb); - } - SCTP_SOCKET_LOCK(so, 1); - if (stcb) { - SCTP_TCB_LOCK(stcb); - atomic_subtract_int(&stcb->asoc.refcnt, 1); - } - if (inp->sctp_flags & SCTP_PCB_FLAGS_SOCKET_GONE) { - SCTP_SOCKET_UNLOCK(so, 1); - return; - } - } -#endif - sctp_sorwakeup(inp, inp->sctp_socket); -#if defined(__APPLE__) || defined(SCTP_SO_LOCK_TESTING) - if (!so_locked) { - SCTP_SOCKET_UNLOCK(so, 1); - } -#endif - } + sctp_wakeup_the_read_socket(inp); } } @@ -5552,6 +5565,10 @@ sctp_sorecvmsg(struct socket *so, sctp_m_free(control->aux_data); control->aux_data = NULL; } + if (control->on_strm_q) { + panic("About to free ctl:%p so:%p and its in %d", + control, so, control->on_strm_q); + } sctp_free_remote_addr(control->whoFrom); sctp_free_a_readq(stcb, control); if (hold_rlock) { @@ -5822,15 +5839,8 @@ sctp_sorecvmsg(struct socket *so, /* error we are out of here */ goto release; } - if ((SCTP_BUF_NEXT(m) == NULL) && - (cp_len >= SCTP_BUF_LEN(m)) && - ((control->end_added == 0) || - (control->end_added && - (TAILQ_NEXT(control, next) == NULL))) - ) { - SCTP_INP_READ_LOCK(inp); - hold_rlock = 1; - } + SCTP_INP_READ_LOCK(inp); + hold_rlock = 1; if (cp_len == SCTP_BUF_LEN(m)) { if ((SCTP_BUF_NEXT(m) == NULL) && (control->end_added)) { @@ -5948,19 +5958,9 @@ sctp_sorecvmsg(struct socket *so, #endif } done_with_control: - if (TAILQ_NEXT(control, next) == NULL) { - /* - * If we don't have a next we need a - * lock, if there is a next - * interrupt is filling ahead of us - * and we don't need a lock to - * remove this guy (which is the - * head of the queue). - */ - if (hold_rlock == 0) { - SCTP_INP_READ_LOCK(inp); - hold_rlock = 1; - } + if (hold_rlock == 0) { + SCTP_INP_READ_LOCK(inp); + hold_rlock = 1; } TAILQ_REMOVE(&inp->read_queue, control, next); /* Add back any hiddend data */ @@ -5976,6 +5976,10 @@ sctp_sorecvmsg(struct socket *so, no_rcv_needed = control->do_not_ref_stcb; sctp_free_remote_addr(control->whoFrom); control->data = NULL; + if (control->on_strm_q) { + panic("About to free ctl:%p so:%p and its in %d", + control, so, control->on_strm_q); + } sctp_free_a_readq(stcb, control); control = NULL; if ((freed_so_far >= rwnd_req) && @@ -6096,7 +6100,7 @@ sctp_sorecvmsg(struct socket *so, * corrupt? */ #ifdef INVARIANTS - panic("Impossible data==NULL length !=0"); + panic("Impossible data==NULL length !=0 control:%p stcb:%p length:%d", control, stcb, control->length); #endif out_flags |= MSG_EOR; out_flags |= MSG_TRUNC; diff --git a/sys/netinet/sctputil.h b/sys/netinet/sctputil.h index 2d3279281e0..f58e17b8b52 100644 --- a/sys/netinet/sctputil.h +++ b/sys/netinet/sctputil.h @@ -107,6 +107,9 @@ int void sctp_mtu_size_reset(struct sctp_inpcb *, struct sctp_association *, uint32_t); +void + sctp_wakeup_the_read_socket(struct sctp_inpcb *inp); + void sctp_add_to_readq(struct sctp_inpcb *inp, struct sctp_tcb *stcb, From 9d18771f695a4f6efb745f1c922d841edc91ea95 Mon Sep 17 00:00:00 2001 From: Randall Stewart Date: Thu, 7 Apr 2016 09:34:41 +0000 Subject: [PATCH 031/159] A couple of minor changes that I missed that Michael had done, most noted in these is the change to non-strict ordering for incoming data (this will make pkt-drill test 14 fail but its expected). --- sys/netinet/sctp_indata.h | 2 +- sys/netinet/sctp_os_bsd.h | 4 ++-- sys/netinet/sctp_output.c | 1 + sys/netinet/sctp_sysctl.h | 2 +- sys/netinet/sctp_var.h | 6 +++--- sys/netinet/sctputil.c | 2 +- 6 files changed, 9 insertions(+), 8 deletions(-) diff --git a/sys/netinet/sctp_indata.h b/sys/netinet/sctp_indata.h index c95c5b811eb..162ca905c32 100644 --- a/sys/netinet/sctp_indata.h +++ b/sys/netinet/sctp_indata.h @@ -53,7 +53,7 @@ sctp_build_readq_entry(struct sctp_tcb *stcb, memset(_ctl, 0, sizeof(struct sctp_queued_to_read)); \ (_ctl)->sinfo_stream = stream_no; \ (_ctl)->sinfo_ssn = stream_seq; \ - TAILQ_INIT(&_ctl->reasm); \ + TAILQ_INIT(&_ctl->reasm); \ (_ctl)->top_fsn = tfsn; \ (_ctl)->msg_id = msgid; \ (_ctl)->sinfo_flags = (flags << 8); \ diff --git a/sys/netinet/sctp_os_bsd.h b/sys/netinet/sctp_os_bsd.h index 90c4ab8c614..777e0a72e77 100644 --- a/sys/netinet/sctp_os_bsd.h +++ b/sys/netinet/sctp_os_bsd.h @@ -480,9 +480,9 @@ sctp_get_mbuf_for_msg(unsigned int space_needed, #define SCTP_SAVE_ATOMIC_DECREMENT(addr, val) \ { \ int32_t oldval; \ - oldval = atomic_fetchadd_int(addr, -val); \ + oldval = atomic_fetchadd_int(addr, -val); \ if (oldval < val) { \ - panic("Counter goes negative addr:%p val:%d oldval:%d", addr, val, oldval); \ + panic("Counter goes negative"); \ } \ } #else diff --git a/sys/netinet/sctp_output.c b/sys/netinet/sctp_output.c index 77d6114735f..4e683a21ffc 100644 --- a/sys/netinet/sctp_output.c +++ b/sys/netinet/sctp_output.c @@ -10499,6 +10499,7 @@ send_forward_tsn(struct sctp_tcb *stcb, strseq++; } else { strseq_m->stream = ntohs(at->rec.data.stream_number); + strseq_m->reserved = ntohs(0); strseq_m->msg_id = ntohl(at->rec.data.stream_seq); strseq_m++; } diff --git a/sys/netinet/sctp_sysctl.h b/sys/netinet/sctp_sysctl.h index 7a7ffc709d3..38494add3d8 100644 --- a/sys/netinet/sctp_sysctl.h +++ b/sys/netinet/sctp_sysctl.h @@ -432,7 +432,7 @@ struct sctp_sysctl { #define SCTPCTL_STRICT_DATA_ORDER_DESC "Enforce strict data ordering, abort if control inside data" #define SCTPCTL_STRICT_DATA_ORDER_MIN 0 #define SCTPCTL_STRICT_DATA_ORDER_MAX 1 -#define SCTPCTL_STRICT_DATA_ORDER_DEFAULT 1 +#define SCTPCTL_STRICT_DATA_ORDER_DEFAULT 0 /* min_residual: min residual in a data fragment leftover */ #define SCTPCTL_MIN_RESIDUAL_DESC "Minimum residual data chunk in second part of split" diff --git a/sys/netinet/sctp_var.h b/sys/netinet/sctp_var.h index b4656e99f78..009ffdb4078 100644 --- a/sys/netinet/sctp_var.h +++ b/sys/netinet/sctp_var.h @@ -99,8 +99,8 @@ extern struct pr_usrreqs sctp_usrreqs; */ #ifdef INVARIANTS #define sctp_free_a_readq(_stcb, _readq) { \ - if ((_readq)->on_strm_q) \ - panic("On strm q stcb:%p readq:%p", (_stcb), (_readq)); \ + if ((_readq)->on_strm_q) \ + panic("On strm q stcb:%p readq:%p", (_stcb), (_readq)); \ SCTP_ZONE_FREE(SCTP_BASE_INFO(ipi_zone_readq), (_readq)); \ SCTP_DECR_READQ_COUNT(); \ } @@ -204,7 +204,7 @@ extern struct pr_usrreqs sctp_usrreqs; } #define sctp_sbfree(ctl, stcb, sb, m) { \ - SCTP_SAVE_ATOMIC_DECREMENT(&(sb)->sb_cc, SCTP_BUF_LEN((m))); \ + SCTP_SAVE_ATOMIC_DECREMENT(&(sb)->sb_cc, SCTP_BUF_LEN((m))); \ SCTP_SAVE_ATOMIC_DECREMENT(&(sb)->sb_mbcnt, MSIZE); \ if (((ctl)->do_not_ref_stcb == 0) && stcb) {\ SCTP_SAVE_ATOMIC_DECREMENT(&(stcb)->asoc.sb_cc, SCTP_BUF_LEN((m))); \ diff --git a/sys/netinet/sctputil.c b/sys/netinet/sctputil.c index 87aa5197ff2..ced18fe46ee 100644 --- a/sys/netinet/sctputil.c +++ b/sys/netinet/sctputil.c @@ -6100,7 +6100,7 @@ sctp_sorecvmsg(struct socket *so, * corrupt? */ #ifdef INVARIANTS - panic("Impossible data==NULL length !=0 control:%p stcb:%p length:%d", control, stcb, control->length); + panic("Impossible data==NULL length !=0"); #endif out_flags |= MSG_EOR; out_flags |= MSG_TRUNC; From 017b6ebc0a918860b088d53c6fe889e136a801fd Mon Sep 17 00:00:00 2001 From: Zbigniew Bodek Date: Thu, 7 Apr 2016 10:36:50 +0000 Subject: [PATCH 032/159] Fix interrupts delivery on ThunderX for VF IDs beyond 8 SR-IOV devices usually use Alternative Routing ID (ARI). In that case slot/device is always assumed to be 0 and function/identifier is extended to 8 bits. Fix interrupts delivery to VF IDs beyond 8 by using a correct DevID if ARI is enabled. Reviewed by: jhb, wma Obtained from: Semihalf Sponsored by: Cavium Differential Revision: https://reviews.freebsd.org/D5855 --- sys/arm64/arm64/gic_v3_its.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/sys/arm64/arm64/gic_v3_its.c b/sys/arm64/arm64/gic_v3_its.c index c847f958493..aef6346e6e9 100644 --- a/sys/arm64/arm64/gic_v3_its.c +++ b/sys/arm64/arm64/gic_v3_its.c @@ -1579,9 +1579,7 @@ its_get_devid_thunder(device_t pci_dev) uint32_t bus; bus = pci_get_bus(pci_dev); - - bsf = PCI_RID(pci_get_bus(pci_dev), pci_get_slot(pci_dev), - pci_get_function(pci_dev)); + bsf = pci_get_rid(pci_dev); /* Check if accessing internal PCIe (low bus numbers) */ if (bus < GIC_V3_ITS_QUIRK_THUNDERX_PEM_BUS_OFFSET) { From 55275a5bbe0048811c533944c11c13af952be2c2 Mon Sep 17 00:00:00 2001 From: Stanislav Galabov Date: Thu, 7 Apr 2016 10:48:26 +0000 Subject: [PATCH 033/159] Bring MIPS INTRNG support back up again, in line with D5370 Reviewed by: kan Approved by: adrian (mentor) Sponsored by: Smartcom - Bulgaria AD Differential Revision: https://reviews.freebsd.org/D5838 --- sys/mips/mips/mips_pic.c | 299 +++++++++++++-------------------------- sys/mips/mips/nexus.c | 19 ++- 2 files changed, 108 insertions(+), 210 deletions(-) diff --git a/sys/mips/mips/mips_pic.c b/sys/mips/mips/mips_pic.c index 4e97c4106e0..e4a76728e56 100644 --- a/sys/mips/mips/mips_pic.c +++ b/sys/mips/mips/mips_pic.c @@ -71,15 +71,24 @@ __FBSDID("$FreeBSD$"); static int mips_pic_intr(void *); +struct mips_pic_irqsrc { + struct intr_irqsrc isrc; + struct resource *res; + u_int irq; +}; + struct mips_pic_softc { - device_t pic_dev; - struct intr_irqsrc * pic_irqs[NREAL_IRQS]; - struct mtx mutex; - uint32_t nirqs; + device_t pic_dev; + struct mips_pic_irqsrc pic_irqs[NREAL_IRQS]; + struct rman pic_irq_rman; + struct mtx mutex; + uint32_t nirqs; }; static struct mips_pic_softc *pic_sc; +#define PIC_INTR_ISRC(sc, irq) (&(sc)->pic_irqs[(irq)].isrc) + #ifdef FDT static struct ofw_compat_data compat_data[] = { {"mti,cpu-interrupt-controller", true}, @@ -142,6 +151,39 @@ pic_xref(device_t dev) #endif } +static int +mips_pic_register_isrcs(struct mips_pic_softc *sc) +{ + int error; + uint32_t irq, i; + struct intr_irqsrc *isrc; + const char *name; + + name = device_get_nameunit(sc->pic_dev); + for (irq = 0; irq < sc->nirqs; irq++) { + sc->pic_irqs[irq].irq = irq; + sc->pic_irqs[irq].res = rman_reserve_resource(&sc->pic_irq_rman, + irq, irq, 1, RF_ACTIVE, sc->pic_dev); + if (sc->pic_irqs[irq].res == NULL) { + device_printf(sc->pic_dev, + "%s failed to alloc resource for irq %d", + __func__, irq); + return (ENOMEM); + } + isrc = PIC_INTR_ISRC(sc, irq); + error = intr_isrc_register(isrc, sc->pic_dev, 0, "%s", name); + if (error != 0) { + for (i = 0; i < irq; i++) { + intr_isrc_deregister(PIC_INTR_ISRC(sc, i)); + } + device_printf(sc->pic_dev, "%s failed", __func__); + return (error); + } + } + + return (0); +} + static int mips_pic_attach(device_t dev) { @@ -162,6 +204,21 @@ mips_pic_attach(device_t dev) /* Set the number of interrupts */ sc->nirqs = nitems(sc->pic_irqs); + /* Init the IRQ rman */ + sc->pic_irq_rman.rm_type = RMAN_ARRAY; + sc->pic_irq_rman.rm_descr = "MIPS PIC IRQs"; + if (rman_init(&sc->pic_irq_rman) != 0 || + rman_manage_region(&sc->pic_irq_rman, 0, sc->nirqs - 1) != 0) { + device_printf(dev, "failed to setup IRQ rman\n"); + goto cleanup; + } + + /* Register the interrupts */ + if (mips_pic_register_isrcs(sc) != 0) { + device_printf(dev, "could not register PIC ISRCs\n"); + goto cleanup; + } + /* * Now, when everything is initialized, it's right time to * register interrupt controller to interrupt framefork. @@ -174,7 +231,7 @@ mips_pic_attach(device_t dev) /* Claim our root controller role */ if (intr_pic_claim_root(dev, xref, mips_pic_intr, sc, 0) != 0) { device_printf(dev, "could not set PIC as a root\n"); - intr_pic_unregister(dev, xref); + intr_pic_deregister(dev, xref); goto cleanup; } @@ -189,7 +246,6 @@ mips_pic_intr(void *arg) { struct mips_pic_softc *sc = arg; register_t cause, status; - struct intr_irqsrc *isrc; int i, intr; cause = mips_rd_cause(); @@ -205,15 +261,13 @@ mips_pic_intr(void *arg) i--; /* Get a 0-offset interrupt. */ intr &= ~(1 << i); - isrc = sc->pic_irqs[i]; - if (isrc == NULL) { + if (intr_isrc_dispatch(PIC_INTR_ISRC(sc, i), + curthread->td_intr_frame) != 0) { device_printf(sc->pic_dev, "Stray interrupt %u detected\n", i); pic_irq_mask(sc, i); continue; } - - intr_irq_dispatch(isrc, curthread->td_intr_frame); } KASSERT(i == 0, ("all interrupts handled")); @@ -228,178 +282,56 @@ mips_pic_intr(void *arg) return (FILTER_HANDLED); } -static int -pic_attach_isrc(struct mips_pic_softc *sc, struct intr_irqsrc *isrc, u_int irq) -{ - - /* - * 1. The link between ISRC and controller must be set atomically. - * 2. Just do things only once in rare case when consumers - * of shared interrupt came here at the same moment. - */ - mtx_lock_spin(&sc->mutex); - if (sc->pic_irqs[irq] != NULL) { - mtx_unlock_spin(&sc->mutex); - return (sc->pic_irqs[irq] == isrc ? 0 : EEXIST); - } - sc->pic_irqs[irq] = isrc; - isrc->isrc_data = irq; - mtx_unlock_spin(&sc->mutex); - - if (irq < NSOFT_IRQS) - intr_irq_set_name(isrc, "sint%u", irq); - else if (irq < NREAL_IRQS) - intr_irq_set_name(isrc, "int%u", irq - NSOFT_IRQS); - else - panic("Invalid irq %u", irq); - return (0); -} - -static int -pic_detach_isrc(struct mips_pic_softc *sc, struct intr_irqsrc *isrc, u_int irq) -{ - - mtx_lock_spin(&sc->mutex); - if (sc->pic_irqs[irq] != isrc) { - mtx_unlock_spin(&sc->mutex); - return (sc->pic_irqs[irq] == NULL ? 0 : EINVAL); - } - sc->pic_irqs[irq] = NULL; - isrc->isrc_data = 0; - mtx_unlock_spin(&sc->mutex); - - intr_irq_set_name(isrc, "%s", ""); - return (0); -} - -static int -pic_irq_from_nspc(struct mips_pic_softc *sc, u_int type, u_int num, u_int *irqp) -{ - - switch (type) { - case INTR_IRQ_NSPC_PLAIN: - *irqp = num; - return (*irqp < sc->nirqs ? 0 : EINVAL); - - case INTR_IRQ_NSPC_SWI: - *irqp = num; - return (num < NSOFT_IRQS ? 0 : EINVAL); - - case INTR_IRQ_NSPC_IRQ: - *irqp = num + NSOFT_IRQS; - return (num < NHARD_IRQS ? 0 : EINVAL); - - default: - return (EINVAL); - } -} - -static int -pic_map_nspc(struct mips_pic_softc *sc, struct intr_irqsrc *isrc, u_int *irqp) -{ - int error; - - error = pic_irq_from_nspc(sc, isrc->isrc_nspc_type, isrc->isrc_nspc_num, - irqp); - if (error != 0) - return (error); - return (pic_attach_isrc(sc, isrc, *irqp)); -} - -#ifdef FDT -static int -pic_map_fdt(struct mips_pic_softc *sc, struct intr_irqsrc *isrc, u_int *irqp) +static void +mips_pic_disable_intr(device_t dev, struct intr_irqsrc *isrc) { u_int irq; - int error; - irq = isrc->isrc_cells[0]; - - if (irq >= sc->nirqs) - return (EINVAL); - - error = pic_attach_isrc(sc, isrc, irq); - if (error != 0) - return (error); - - isrc->isrc_nspc_type = INTR_IRQ_NSPC_PLAIN; - isrc->isrc_nspc_num = irq; - isrc->isrc_trig = INTR_TRIGGER_CONFORM; - isrc->isrc_pol = INTR_POLARITY_CONFORM; - - *irqp = irq; - return (0); -} -#endif - -static int -mips_pic_register(device_t dev, struct intr_irqsrc *isrc, boolean_t *is_percpu) -{ - struct mips_pic_softc *sc = device_get_softc(dev); - u_int irq; - int error; - - if (isrc->isrc_type == INTR_ISRCT_NAMESPACE) - error = pic_map_nspc(sc, isrc, &irq); -#ifdef FDT - else if (isrc->isrc_type == INTR_ISRCT_FDT) - error = pic_map_fdt(sc, isrc, &irq); -#endif - else - return (EINVAL); - - if (error == 0) - *is_percpu = TRUE; - return (error); + irq = ((struct mips_pic_irqsrc *)isrc)->irq; + pic_irq_mask(device_get_softc(dev), irq); } static void mips_pic_enable_intr(device_t dev, struct intr_irqsrc *isrc) { + u_int irq; - if (isrc->isrc_trig == INTR_TRIGGER_CONFORM) - isrc->isrc_trig = INTR_TRIGGER_LEVEL; -} - -static void -mips_pic_enable_source(device_t dev, struct intr_irqsrc *isrc) -{ - struct mips_pic_softc *sc = device_get_softc(dev); - u_int irq = isrc->isrc_data; - - pic_irq_unmask(sc, irq); -} - -static void -mips_pic_disable_source(device_t dev, struct intr_irqsrc *isrc) -{ - struct mips_pic_softc *sc = device_get_softc(dev); - u_int irq = isrc->isrc_data; - - pic_irq_mask(sc, irq); + irq = ((struct mips_pic_irqsrc *)isrc)->irq; + pic_irq_unmask(device_get_softc(dev), irq); } static int -mips_pic_unregister(device_t dev, struct intr_irqsrc *isrc) +mips_pic_map_intr(device_t dev, struct intr_map_data *data, + struct intr_irqsrc **isrcp) { - struct mips_pic_softc *sc = device_get_softc(dev); - u_int irq = isrc->isrc_data; +#ifdef FDT + struct mips_pic_softc *sc; - return (pic_detach_isrc(sc, isrc, irq)); + sc = device_get_softc(dev); + + if (data == NULL || data->type != INTR_MAP_DATA_FDT || + data->fdt.ncells != 1 || data->fdt.cells[0] >= sc->nirqs) + return (EINVAL); + + *isrcp = PIC_INTR_ISRC(sc, data->fdt.cells[0]); + return (0); +#else + return (EINVAL); +#endif } static void mips_pic_pre_ithread(device_t dev, struct intr_irqsrc *isrc) { - mips_pic_disable_source(dev, isrc); + mips_pic_disable_intr(dev, isrc); } static void mips_pic_post_ithread(device_t dev, struct intr_irqsrc *isrc) { - mips_pic_enable_source(dev, isrc); + mips_pic_enable_intr(dev, isrc); } static void @@ -407,19 +339,6 @@ mips_pic_post_filter(device_t dev, struct intr_irqsrc *isrc) { } -#ifdef SMP -static int -mips_pic_bind(device_t dev, struct intr_irqsrc *isrc) -{ - return (EOPNOTSUPP); -} - -static void -mips_pic_ipi_send(device_t dev, struct intr_irqsrc *isrc, cpuset_t cpus) -{ -} -#endif - static device_method_t mips_pic_methods[] = { /* Device interface */ #ifndef FDT @@ -427,20 +346,15 @@ static device_method_t mips_pic_methods[] = { #endif DEVMETHOD(device_probe, mips_pic_probe), DEVMETHOD(device_attach, mips_pic_attach), + /* Interrupt controller interface */ - DEVMETHOD(pic_disable_source, mips_pic_disable_source), + DEVMETHOD(pic_disable_intr, mips_pic_disable_intr), DEVMETHOD(pic_enable_intr, mips_pic_enable_intr), - DEVMETHOD(pic_enable_source, mips_pic_enable_source), - DEVMETHOD(pic_post_filter, mips_pic_post_filter), - DEVMETHOD(pic_post_ithread, mips_pic_post_ithread), + DEVMETHOD(pic_map_intr, mips_pic_map_intr), DEVMETHOD(pic_pre_ithread, mips_pic_pre_ithread), - DEVMETHOD(pic_register, mips_pic_register), - DEVMETHOD(pic_unregister, mips_pic_unregister), -#ifdef SMP - DEVMETHOD(pic_bind, mips_pic_bind), - DEVMETHOD(pic_init_secondary, mips_pic_init_secondary), - DEVMETHOD(pic_ipi_send, mips_pic_ipi_send), -#endif + DEVMETHOD(pic_post_ithread, mips_pic_post_ithread), + DEVMETHOD(pic_post_filter, mips_pic_post_filter), + { 0, 0 } }; @@ -469,7 +383,6 @@ void cpu_establish_hardintr(const char *name, driver_filter_t *filt, void (*handler)(void*), void *arg, int irq, int flags, void **cookiep) { - u_int vec; int res; /* @@ -479,17 +392,11 @@ cpu_establish_hardintr(const char *name, driver_filter_t *filt, panic("%s called for unknown hard intr %d", __func__, irq); KASSERT(pic_sc != NULL, ("%s: no pic", __func__)); - vec = intr_namespace_map_irq(pic_sc->pic_dev, INTR_IRQ_NSPC_IRQ, irq); - KASSERT(vec != NIRQ, ("Unable to map hard IRQ %d\n", irq)); - res = intr_irq_add_handler(pic_sc->pic_dev, filt, handler, arg, vec, - flags, cookiep); + irq += NSOFT_IRQS; + res = intr_setup_irq(pic_sc->pic_dev, pic_sc->pic_irqs[irq].res, filt, + handler, arg, flags, cookiep); if (res != 0) panic("Unable to add hard IRQ %d handler", irq); - - (void)pic_irq_from_nspc(pic_sc, INTR_IRQ_NSPC_IRQ, irq, &vec); - KASSERT(pic_sc->pic_irqs[vec] != NULL, - ("Hard IRQ %d not registered\n", irq)); - intr_irq_set_name(pic_sc->pic_irqs[vec], "%s", name); } void @@ -497,23 +404,15 @@ cpu_establish_softintr(const char *name, driver_filter_t *filt, void (*handler)(void*), void *arg, int irq, int flags, void **cookiep) { - u_int vec; int res; if (irq < 0 || irq > NSOFT_IRQS) panic("%s called for unknown soft intr %d", __func__, irq); KASSERT(pic_sc != NULL, ("%s: no pic", __func__)); - vec = intr_namespace_map_irq(pic_sc->pic_dev, INTR_IRQ_NSPC_SWI, irq); - KASSERT(vec <= NIRQ, ("Unable to map soft IRQ %d\n", irq)); - intr_irq_add_handler(pic_sc->pic_dev, filt, handler, arg, vec, - flags, cookiep); + res = intr_setup_irq(pic_sc->pic_dev, pic_sc->pic_irqs[irq].res, filt, + handler, arg, flags, cookiep); if (res != 0) panic("Unable to add soft IRQ %d handler", irq); - - (void)pic_irq_from_nspc(pic_sc, INTR_IRQ_NSPC_SWI, irq, &vec); - KASSERT(pic_sc->pic_irqs[vec] != NULL, - ("Soft IRQ %d not registered\n", irq)); - intr_irq_set_name(pic_sc->pic_irqs[vec], "%s", name); } diff --git a/sys/mips/mips/nexus.c b/sys/mips/mips/nexus.c index 89049f059a9..a2a8e52715b 100644 --- a/sys/mips/mips/nexus.c +++ b/sys/mips/mips/nexus.c @@ -457,14 +457,11 @@ static int nexus_setup_intr(device_t dev, device_t child, struct resource *res, int flags, driver_filter_t *filt, driver_intr_t *intr, void *arg, void **cookiep) { - int irq; #ifdef MIPS_INTRNG - for (irq = rman_get_start(res); irq <= rman_get_end(res); irq++) { - intr_irq_add_handler(child, filt, intr, arg, irq, flags, - cookiep); - } + return (intr_setup_irq(child, res, filt, intr, arg, flags, cookiep)); #else + int irq; register_t s; s = intr_disable(); @@ -477,8 +474,9 @@ nexus_setup_intr(device_t dev, device_t child, struct resource *res, int flags, cpu_establish_hardintr(device_get_nameunit(child), filt, intr, arg, irq, flags, cookiep); intr_restore(s); -#endif + return (0); +#endif } static int @@ -486,7 +484,7 @@ nexus_teardown_intr(device_t dev, device_t child, struct resource *r, void *ih) { #ifdef MIPS_INTRNG - return (intr_irq_remove_handler(child, rman_get_start(r), ih)); + return (intr_teardown_irq(child, r, ih)); #else printf("Unimplemented %s at %s:%d\n", __func__, __FILE__, __LINE__); return (0); @@ -499,7 +497,8 @@ nexus_config_intr(device_t dev, int irq, enum intr_trigger trig, enum intr_polarity pol) { - return (intr_irq_config(irq, trig, pol)); + device_printf(dev, "bus_config_intr is obsolete and not supported!\n"); + return (EOPNOTSUPP); } static int @@ -507,7 +506,7 @@ nexus_describe_intr(device_t dev, device_t child, struct resource *irq, void *cookie, const char *descr) { - return (intr_irq_describe(rman_get_start(irq), cookie, descr)); + return (intr_describe_irq(child, irq, cookie, descr)); } #ifdef SMP @@ -515,7 +514,7 @@ static int nexus_bind_intr(device_t dev, device_t child, struct resource *irq, int cpu) { - return (intr_irq_bind(rman_get_start(irq), cpu)); + return (intr_bind_irq(child, irq, cpu)); } #endif From 10998af48d20c54f146f8c42410e9fd037223111 Mon Sep 17 00:00:00 2001 From: Stanislav Galabov Date: Thu, 7 Apr 2016 11:02:49 +0000 Subject: [PATCH 034/159] This revision adds the following parts: - machine dependent low level init code - SoC clocks detection and some utility functions - Common interface to read/write/modify SoC system control registers, used by some of the other drivers and utility functions - simple FDT resets support, based on the fdt_clock implementation already in the tree. For the moment resets and clocks are managed using these implementations. I am planning to port those to the new extres framework in the future, but currently I simply don't have time to do this part too. Approved by: adrian (mentor) Sponsored by: Smartcom - Bulgaria AD Differential Revision: https://reviews.freebsd.org/D5826 --- sys/mips/mediatek/fdt_reset.c | 125 +++++++++ sys/mips/mediatek/fdt_reset.h | 49 ++++ sys/mips/mediatek/fdt_reset_if.m | 58 ++++ sys/mips/mediatek/mtk_machdep.c | 286 ++++++++++++++++++++ sys/mips/mediatek/mtk_soc.c | 438 +++++++++++++++++++++++++++++++ sys/mips/mediatek/mtk_soc.h | 130 +++++++++ sys/mips/mediatek/mtk_sysctl.c | 191 ++++++++++++++ sys/mips/mediatek/mtk_sysctl.h | 59 +++++ 8 files changed, 1336 insertions(+) create mode 100644 sys/mips/mediatek/fdt_reset.c create mode 100644 sys/mips/mediatek/fdt_reset.h create mode 100644 sys/mips/mediatek/fdt_reset_if.m create mode 100644 sys/mips/mediatek/mtk_machdep.c create mode 100644 sys/mips/mediatek/mtk_soc.c create mode 100644 sys/mips/mediatek/mtk_soc.h create mode 100644 sys/mips/mediatek/mtk_sysctl.c create mode 100644 sys/mips/mediatek/mtk_sysctl.h diff --git a/sys/mips/mediatek/fdt_reset.c b/sys/mips/mediatek/fdt_reset.c new file mode 100644 index 00000000000..5ff275856f5 --- /dev/null +++ b/sys/mips/mediatek/fdt_reset.c @@ -0,0 +1,125 @@ +/*- + * Copyright (c) 2016 Stanislav Galabov + * Copyright (c) 2014 Ian Lepore + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "fdt_reset_if.h" +#include + +/* + * Loop through all the tuples in the resets= property for a device, asserting + * or deasserting each reset. + * + * Be liberal about errors for now: warn about a failure to (de)assert but keep + * trying with any other resets in the list. Return ENXIO if any errors were + * found, and let the caller decide whether the problem is fatal. + */ +static int +assert_deassert_all(device_t consumer, boolean_t assert) +{ + phandle_t rnode; + device_t resetdev; + int resetnum, err, i, ncells; + uint32_t *resets; + boolean_t anyerrors; + + rnode = ofw_bus_get_node(consumer); + ncells = OF_getencprop_alloc(rnode, "resets", sizeof(*resets), + (void **)&resets); + if (!assert && ncells < 2) { + device_printf(consumer, "Warning: No resets specified in fdt " + "data; device may not function."); + return (ENXIO); + } + anyerrors = false; + for (i = 0; i < ncells; i += 2) { + resetdev = OF_device_from_xref(resets[i]); + resetnum = resets[i + 1]; + if (resetdev == NULL) { + if (!assert) + device_printf(consumer, "Warning: can not find " + "driver for reset number %u; device may " + "not function\n", resetnum); + anyerrors = true; + continue; + } + if (assert) + err = FDT_RESET_ASSERT(resetdev, resetnum); + else + err = FDT_RESET_DEASSERT(resetdev, resetnum); + if (err != 0) { + if (!assert) + device_printf(consumer, "Warning: failed to " + "deassert reset number %u; device may not " + "function\n", resetnum); + anyerrors = true; + } + } + free(resets, M_OFWPROP); + return (anyerrors ? ENXIO : 0); +} + +int +fdt_reset_assert_all(device_t consumer) +{ + + return (assert_deassert_all(consumer, true)); +} + +int +fdt_reset_deassert_all(device_t consumer) +{ + + return (assert_deassert_all(consumer, false)); +} + +void +fdt_reset_register_provider(device_t provider) +{ + + OF_device_register_xref( + OF_xref_from_node(ofw_bus_get_node(provider)), provider); +} + +void +fdt_reset_unregister_provider(device_t provider) +{ + + OF_device_register_xref(OF_xref_from_device(provider), NULL); +} + diff --git a/sys/mips/mediatek/fdt_reset.h b/sys/mips/mediatek/fdt_reset.h new file mode 100644 index 00000000000..195beaaf058 --- /dev/null +++ b/sys/mips/mediatek/fdt_reset.h @@ -0,0 +1,49 @@ +/*- + * Copyright (c) 2016 Stanislav Galabov + * Copyright (c) 2014 Ian Lepore + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef DEV_FDT_RESET_H +#define DEV_FDT_RESET_H + +#include "fdt_reset_if.h" + +/* + * Look up "resets" property in consumer's fdt data and assert or deassert all + * configured resets. + */ +int fdt_reset_assert_all(device_t consumer); +int fdt_reset_deassert_all(device_t consumer); + +/* + * [Un]register the given device instance as a driver that implements the + * fdt_clock interface. + */ +void fdt_reset_register_provider(device_t provider); +void fdt_reset_unregister_provider(device_t provider); + +#endif /* DEV_FDT_RESET_H */ + diff --git a/sys/mips/mediatek/fdt_reset_if.m b/sys/mips/mediatek/fdt_reset_if.m new file mode 100644 index 00000000000..2bde7b71627 --- /dev/null +++ b/sys/mips/mediatek/fdt_reset_if.m @@ -0,0 +1,58 @@ +#- +# Copyright (c) 2016 Stanislav Galabov +# Copyright (c) 2014 Ian Lepore +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# $FreeBSD$ +# + +#include + +# +# This is the interface that fdt_reset drivers provide to other drivers. +# In this context, reset refers to a reset signal provided to some other +# hardware component within the system. They are most often found within +# embedded processors that have on-chip IO controllers. +# + +INTERFACE fdt_reset; + +# +# Enable/assert/apply the specified reset. +# Returns 0 on success or a standard errno value. +# +METHOD int assert { + device_t provider; + int index; +}; + +# +# Disable/de-assert/remove the specified reset. +# Returns 0 on success or a standard errno value. +# +METHOD int deassert { + device_t provider; + int index; +}; + diff --git a/sys/mips/mediatek/mtk_machdep.c b/sys/mips/mediatek/mtk_machdep.c new file mode 100644 index 00000000000..eeadd4fac3a --- /dev/null +++ b/sys/mips/mediatek/mtk_machdep.c @@ -0,0 +1,286 @@ +/*- + * Copyright (C) 2015-2016 by Stanislav Galabov. All rights reserved. + * Copyright (C) 2010-2011 by Aleksandr Rybalko. All rights reserved. + * Copyright (C) 2007 by Oleksandr Tymoshenko. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR OR HIS RELATIVES BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF MIND, USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_ddb.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "opt_platform.h" +#include "opt_rt305x.h" + +#include +#include + +extern int *edata; +extern int *end; +static char boot1_env[0x1000]; + +void +platform_cpu_init() +{ + /* Nothing special */ +} + +static void +mips_init(void) +{ + struct mem_region mr[FDT_MEM_REGIONS]; + uint64_t val; + int i, j, mr_cnt; + char *memsize; + + printf("entry: mips_init()\n"); + + bootverbose = 1; + + for (i = 0; i < 10; i++) + phys_avail[i] = 0; + + dump_avail[0] = phys_avail[0] = MIPS_KSEG0_TO_PHYS(kernel_kseg0_end); + + /* + * The most low memory MT7621 can have. Currently MT7621 is the chip + * that supports the most memory, so that seems reasonable. + */ + realmem = btoc(448 * 1024 * 1024); + + if (fdt_get_mem_regions(mr, &mr_cnt, &val) == 0) { + physmem = btoc(val); + + printf("RAM size: %ldMB (from FDT)\n", + ctob(physmem) / (1024 * 1024)); + + KASSERT((phys_avail[0] >= mr[0].mr_start) && \ + (phys_avail[0] < (mr[0].mr_start + mr[0].mr_size)), + ("First region is not within FDT memory range")); + + /* Limit size of the first region */ + phys_avail[1] = (mr[0].mr_start + + MIN(mr[0].mr_size, ctob(realmem))); + dump_avail[1] = phys_avail[1]; + + /* Add the rest of the regions */ + for (i = 1, j = 2; i < mr_cnt; i++, j+=2) { + phys_avail[j] = mr[i].mr_start; + phys_avail[j+1] = (mr[i].mr_start + mr[i].mr_size); + dump_avail[j] = phys_avail[j]; + dump_avail[j+1] = phys_avail[j+1]; + } + } else { + if ((memsize = kern_getenv("memsize")) != NULL) { + physmem = btoc(strtol(memsize, NULL, 0) << 20); + printf("RAM size: %ldMB (from memsize)\n", + ctob(physmem) / (1024 * 1024)); + } else { /* All else failed, assume 32MB */ + physmem = btoc(32 * 1024 * 1024); + printf("RAM size: %ldMB (assumed)\n", + ctob(physmem) / (1024 * 1024)); + } + + if (ctob(physmem) < (448 * 1024 * 1024)) { + /* + * Anything up to 448MB is assumed to be directly + * mappable as low memory... + */ + dump_avail[1] = phys_avail[1] = ctob(physmem); + } else if (mtk_soc_get_socid() == MTK_SOC_MT7621) { + /* + * On MT7621 the low memory is limited to 448MB, the + * rest is high memory, mapped at 0x20000000 + */ + phys_avail[1] = 448 * 1024 * 1024; + phys_avail[2] = 0x20000000; + phys_avail[3] = phys_avail[2] + ctob(physmem) - + phys_avail[1]; + dump_avail[1] = phys_avail[1] - phys_avail[0]; + dump_avail[2] = phys_avail[2]; + dump_avail[3] = phys_avail[3] - phys_avail[2]; + } else { + /* + * We have > 448MB RAM and we're not MT7621? Currently + * there is no such chip, so we'll just limit the RAM to + * 32MB and let the user know... + */ + printf("Unknown chip, assuming 32MB RAM\n"); + physmem = btoc(32 * 1024 * 1024); + dump_avail[1] = phys_avail[1] = ctob(physmem); + } + } + + if (physmem < realmem) + realmem = physmem; + + init_param1(); + init_param2(physmem); + mips_cpu_init(); + pmap_bootstrap(); + mips_proc0_init(); + mutex_init(); + kdb_init(); +#ifdef KDB + if (boothowto & RB_KDB) + kdb_enter(KDB_WHY_BOOTFLAGS, "Boot flags requested debugger"); +#endif +} + +void +platform_reset(void) +{ + + mtk_soc_reset(); +} + +void +platform_start(__register_t a0 __unused, __register_t a1 __unused, + __register_t a2 __unused, __register_t a3 __unused) +{ + vm_offset_t kernend; + int argc = a0, i;//, res; + uint32_t timer_clk; + char **argv = (char **)MIPS_PHYS_TO_KSEG0(a1); + char **envp = (char **)MIPS_PHYS_TO_KSEG0(a2); + void *dtbp; + + /* clear the BSS and SBSS segments */ + kernend = (vm_offset_t)&end; + memset(&edata, 0, kernend - (vm_offset_t)(&edata)); + + mips_postboot_fixup(); + + /* Initialize pcpu stuff */ + mips_pcpu0_init(); + + dtbp = &fdt_static_dtb; + if (OF_install(OFW_FDT, 0) == FALSE) + while (1); + if (OF_init((void *)dtbp) != 0) + while (1); + + mtk_soc_try_early_detect(); + if ((timer_clk = mtk_soc_get_timerclk()) == 0) + timer_clk = 1000000000; /* no such speed yet */ + + mips_timer_early_init(timer_clk); + + /* initialize console so that we have printf */ + boothowto |= (RB_SERIAL | RB_MULTIPLE); /* Use multiple consoles */ + boothowto |= (RB_VERBOSE); + cninit(); + + init_static_kenv(boot1_env, sizeof(boot1_env)); + + printf("FDT DTB at: 0x%08x\n", (uint32_t)dtbp); + + printf("CPU clock: %4dMHz\n", mtk_soc_get_cpuclk()/(1000*1000)); + printf("Timer clock: %4dMHz\n", timer_clk/(1000*1000)); + printf("UART clock: %4dMHz\n\n", mtk_soc_get_uartclk()/(1000*1000)); + + printf("U-Boot args (from %d args):\n", argc - 1); + + if (argc == 1) + printf("\tNone\n"); + + for (i = 1; i < argc; i++) { + char *n = "argv ", *arg; + + if (i > 99) + break; + + if (argv[i]) + { + arg = (char *)(intptr_t)MIPS_PHYS_TO_KSEG0(argv[i]); + printf("\targv[%d] = %s\n", i, arg); + sprintf(n, "argv%d", i); + kern_setenv(n, arg); + } + } + + printf("Environment:\n"); + + for (i = 0; envp[i] && MIPS_IS_VALID_PTR(envp[i]); i++) { + char *n, *arg; + + arg = (char *)(intptr_t)MIPS_PHYS_TO_KSEG0(envp[i]); + if (! MIPS_IS_VALID_PTR(arg)) + continue; + printf("\t%s\n", arg); + n = strsep(&arg, "="); + if (arg == NULL) + kern_setenv(n, "1"); + else + kern_setenv(n, arg); + } + + + mips_init(); + mips_timer_init_params(timer_clk, 0); +} diff --git a/sys/mips/mediatek/mtk_soc.c b/sys/mips/mediatek/mtk_soc.c new file mode 100644 index 00000000000..be576bd97a3 --- /dev/null +++ b/sys/mips/mediatek/mtk_soc.c @@ -0,0 +1,438 @@ +/*- + * Copyright (c) 2016 Stanislav Galabov. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include + +#include +#include + +#include +#include +#include + +static uint32_t mtk_soc_socid = MTK_SOC_UNKNOWN; +static uint32_t mtk_soc_uartclk = 0; +static uint32_t mtk_soc_cpuclk = MTK_CPU_CLK_880MHZ; +static uint32_t mtk_soc_timerclk = MTK_CPU_CLK_880MHZ / 2; + +static const struct ofw_compat_data compat_data[] = { + { "ralink,rt3050-soc", MTK_SOC_RT3050 }, + { "ralink,rt3052-soc", MTK_SOC_RT3052 }, + { "ralink,rt3350-soc", MTK_SOC_RT3350 }, + { "ralink,rt3352-soc", MTK_SOC_RT3352 }, + { "ralink,rt3662-soc", MTK_SOC_RT3662 }, + { "ralink,rt3883-soc", MTK_SOC_RT3883 }, + { "ralink,rt5350-soc", MTK_SOC_RT5350 }, + { "ralink,mtk7620a-soc", MTK_SOC_MT7620A }, + { "ralink,mtk7620n-soc", MTK_SOC_MT7620N }, + { "mediatek,mtk7621-soc", MTK_SOC_MT7621 }, + { "ralink,mtk7621-soc", MTK_SOC_MT7621 }, + { "ralink,mtk7628an-soc", MTK_SOC_MT7628 }, + { "mediatek,mt7628an-soc", MTK_SOC_MT7628 }, + { "ralink,mtk7688-soc", MTK_SOC_MT7688 }, + + /* Sentinel */ + { NULL, MTK_SOC_UNKNOWN }, +}; + +static uint32_t +mtk_detect_cpuclk_rt305x(bus_space_tag_t bst, bus_space_handle_t bsh) +{ + uint32_t clk; + + clk = bus_space_read_4(bst, bsh, SYSCTL_SYSCFG); + clk >>= RT305X_CPU_CLKSEL_OFF; + clk &= RT305X_CPU_CLKSEL_MSK; + + return ((clk == 0) ? MTK_CPU_CLK_320MHZ : MTK_CPU_CLK_384MHZ); +} + +static uint32_t +mtk_detect_cpuclk_rt3352(bus_space_tag_t bst, bus_space_handle_t bsh) +{ + uint32_t val; + + val = bus_space_read_4(bst, bsh, SYSCTL_SYSCFG); + val >>= RT3352_CPU_CLKSEL_OFF; + val &= RT3352_CPU_CLKSEL_MSK; + + if (val) + return (MTK_CPU_CLK_400MHZ); + + return (MTK_CPU_CLK_384MHZ); +} + +static uint32_t +mtk_detect_cpuclk_rt3883(bus_space_tag_t bst, bus_space_handle_t bsh) +{ + uint32_t val; + + val = bus_space_read_4(bst, bsh, SYSCTL_SYSCFG); + val >>= RT3883_CPU_CLKSEL_OFF; + val &= RT3883_CPU_CLKSEL_MSK; + + switch (val) { + case 0: + return (MTK_CPU_CLK_250MHZ); + case 1: + return (MTK_CPU_CLK_384MHZ); + case 2: + return (MTK_CPU_CLK_480MHZ); + case 3: + return (MTK_CPU_CLK_500MHZ); + } + + /* Never reached */ + return (0); +} + +static uint32_t +mtk_detect_cpuclk_rt5350(bus_space_tag_t bst, bus_space_handle_t bsh) +{ + uint32_t val1, val2; + + val1 = val2 = bus_space_read_4(bst, bsh, SYSCTL_SYSCFG); + + val1 >>= RT5350_CPU_CLKSEL_OFF1; + val2 >>= RT5350_CPU_CLKSEL_OFF2; + val1 &= RT5350_CPU_CLKSEL_MSK; + val2 &= RT5350_CPU_CLKSEL_MSK; + val1 |= (val2 << 1); + + switch (val1) { + case 0: + return (MTK_CPU_CLK_360MHZ); + case 1: + /* Reserved value, but we return UNKNOWN */ + return (MTK_CPU_CLK_UNKNOWN); + case 2: + return (MTK_CPU_CLK_320MHZ); + case 3: + return (MTK_CPU_CLK_300MHZ); + } + + /* Never reached */ + return (0); +} + +static uint32_t +mtk_detect_cpuclk_mt7620(bus_space_tag_t bst, bus_space_handle_t bsh) +{ + uint32_t val, mul, div, res; + + val = bus_space_read_4(bst, bsh, SYSCTL_MT7620_CPLL_CFG1); + if (val & MT7620_CPU_CLK_AUX0) + return (MTK_CPU_CLK_480MHZ); + + val = bus_space_read_4(bst, bsh, SYSCTL_MT7620_CPLL_CFG0); + if (!(val & MT7620_CPLL_SW_CFG)) + return (MTK_CPU_CLK_600MHZ); + + mul = MT7620_PLL_MULT_RATIO_BASE + ((val >> MT7620_PLL_MULT_RATIO_OFF) & + MT7620_PLL_MULT_RATIO_MSK); + div = (val >> MT7620_PLL_DIV_RATIO_OFF) & MT7620_PLL_DIV_RATIO_MSK; + + if (div != MT7620_PLL_DIV_RATIO_MSK) + div += MT7620_PLL_DIV_RATIO_BASE; + else + div = MT7620_PLL_DIV_RATIO_MAX; + + res = (MT7620_XTAL_40 * mul) / div; + + return (MTK_MHZ(res)); +} + +static uint32_t +mtk_detect_cpuclk_mt7621(bus_space_tag_t bst, bus_space_handle_t bsh) +{ + uint32_t val, div, res; + + val = bus_space_read_4(bst, bsh, SYSCTL_CLKCFG0); + if (val & MT7621_USES_MEMDIV) { + div = bus_space_read_4(bst, bsh, MTK_MT7621_CLKDIV_REG); + div >>= MT7621_MEMDIV_OFF; + div &= MT7621_MEMDIV_MSK; + div += MT7621_MEMDIV_BASE; + + val = bus_space_read_4(bst, bsh, SYSCTL_SYSCFG); + val >>= MT7621_CLKSEL_OFF; + val &= MT7621_CLKSEL_MSK; + + if (val >= MT7621_CLKSEL_25MHZ_VAL) + res = div * MT7621_CLKSEL_25MHZ; + else if (val >= MT7621_CLKSEL_20MHZ_VAL) + res = div * MT7621_CLKSEL_20MHZ; + else + res = div * 0; /* XXX: not sure about this */ + } else { + val = bus_space_read_4(bst, bsh, SYSCTL_CUR_CLK_STS); + div = (val >> MT7621_CLK_STS_DIV_OFF) & MT7621_CLK_STS_MSK; + val &= MT7621_CLK_STS_MSK; + + res = (MT7621_CLK_STS_BASE * val) / div; + } + + return (MTK_MHZ(res)); +} + +static uint32_t +mtk_detect_cpuclk_mt7628(bus_space_tag_t bst, bus_space_handle_t bsh) +{ + uint32_t val; + + val = bus_space_read_4(bst, bsh, SYSCTL_SYSCFG); + val >>= MT7628_CPU_CLKSEL_OFF; + val &= MT7628_CPU_CLKSEL_MSK; + + if (val) + return (MTK_CPU_CLK_580MHZ); + + return (MTK_CPU_CLK_575MHZ); +} + +void +mtk_soc_try_early_detect(void) +{ + bus_space_tag_t bst; + bus_space_handle_t bsh; + uint32_t base; + phandle_t node; + int i; + + if ((node = OF_finddevice("/")) == -1) + return; + + for (i = 0; compat_data[i].ocd_str != NULL; i++) { + if (fdt_is_compatible(node, compat_data[i].ocd_str)) { + mtk_soc_socid = compat_data[i].ocd_data; + break; + } + } + + if (mtk_soc_socid == MTK_SOC_UNKNOWN) { + /* We don't know the SoC, so we don't know how to get clocks */ + return; + } + + bst = fdtbus_bs_tag; + if (mtk_soc_socid == MTK_SOC_MT7621) + base = MTK_MT7621_BASE; + else + base = MTK_DEFAULT_BASE; + + if (bus_space_map(bst, MTK_DEFAULT_BASE, MTK_DEFAULT_SIZE, 0, &bsh)) + return; + + /* First, figure out the CPU clock */ + switch (mtk_soc_socid) { + case MTK_SOC_RT3050: /* fallthrough */ + case MTK_SOC_RT3052: + mtk_soc_cpuclk = mtk_detect_cpuclk_rt305x(bst, bsh); + break; + case MTK_SOC_RT3350: + mtk_soc_cpuclk = MTK_CPU_CLK_320MHZ; + break; + case MTK_SOC_RT3352: + mtk_soc_cpuclk = mtk_detect_cpuclk_rt3352(bst, bsh); + break; + case MTK_SOC_RT3662: /* fallthrough */ + case MTK_SOC_RT3883: + mtk_soc_cpuclk = mtk_detect_cpuclk_rt3883(bst, bsh); + break; + case MTK_SOC_RT5350: + mtk_soc_cpuclk = mtk_detect_cpuclk_rt5350(bst, bsh); + break; + case MTK_SOC_MT7620A: /* fallthrough */ + case MTK_SOC_MT7620N: + mtk_soc_cpuclk = mtk_detect_cpuclk_mt7620(bst, bsh); + break; + case MTK_SOC_MT7621: + mtk_soc_cpuclk = mtk_detect_cpuclk_mt7621(bst, bsh); + break; + case MTK_SOC_MT7628: /* fallthrough */ + case MTK_SOC_MT7688: + mtk_soc_cpuclk = mtk_detect_cpuclk_mt7628(bst, bsh); + break; + default: + /* We don't know the SoC, so we can't find the CPU clock */ + break; + } + + /* Now figure out the timer clock */ + if (mtk_soc_socid == MTK_SOC_MT7621) { +#ifdef notyet + /* + * We use the GIC timer for timing source and its clock freq is + * the same as the CPU's clock freq + */ + mtk_soc_timerclk = mtk_soc_cpuclk; +#else + /* + * When GIC timer and MIPS timer are ready to co-exist and + * GIC timer is actually implemented, we need to switch to it. + * Until then we use a fake GIC timer, which is actually a + * normal MIPS ticker, so the timer clock is half the CPU clock + */ + mtk_soc_timerclk = mtk_soc_cpuclk / 2; +#endif + } else { + /* + * We use the MIPS ticker for the rest for now, so + * the CPU clock is divided by 2 + */ + mtk_soc_timerclk = mtk_soc_cpuclk / 2; + } + + switch (mtk_soc_socid) { + case MTK_SOC_RT3350: /* fallthrough */ + case MTK_SOC_RT3050: /* fallthrough */ + case MTK_SOC_RT3052: + /* UART clock is CPU clock / 3 */ + mtk_soc_uartclk = mtk_soc_cpuclk / MTK_UARTDIV_3; + break; + case MTK_SOC_RT3352: /* fallthrough */ + case MTK_SOC_RT3662: /* fallthrough */ + case MTK_SOC_RT3883: /* fallthrough */ + case MTK_SOC_RT5350: /* fallthrough */ + case MTK_SOC_MT7620A: /* fallthrough */ + case MTK_SOC_MT7620N: /* fallthrough */ + case MTK_SOC_MT7628: /* fallthrough */ + case MTK_SOC_MT7688: + /* UART clock is always 40MHz */ + mtk_soc_uartclk = MTK_UART_CLK_40MHZ; + break; + case MTK_SOC_MT7621: + /* UART clock is always 50MHz */ + mtk_soc_uartclk = MTK_UART_CLK_50MHZ; + break; + default: + /* We don't know the SoC, so we don't know the UART clock */ + break; + } + + bus_space_unmap(bst, bsh, MTK_DEFAULT_SIZE); +} + +uint32_t +mtk_soc_get_uartclk(void) +{ + + return mtk_soc_uartclk; +} + +uint32_t +mtk_soc_get_cpuclk(void) +{ + + return mtk_soc_cpuclk; +} + +uint32_t +mtk_soc_get_timerclk(void) +{ + + return mtk_soc_timerclk; +} + +uint32_t +mtk_soc_get_socid(void) +{ + + return mtk_soc_socid; +} + +/* + * The following are generic reset and clock functions + */ + +/* Default reset time is 100ms */ +#define DEFAULT_RESET_TIME 100000 + +int +mtk_soc_reset_device(device_t dev) +{ + int res; + + res = fdt_reset_assert_all(dev); + if (res == 0) { + DELAY(DEFAULT_RESET_TIME); + res = fdt_reset_deassert_all(dev); + if (res == 0) + DELAY(DEFAULT_RESET_TIME); + } + + return (res); +} + +int +mtk_soc_stop_clock(device_t dev) +{ + + return (fdt_clock_disable_all(dev)); +} + +int +mtk_soc_start_clock(device_t dev) +{ + + return (fdt_clock_enable_all(dev)); +} + +int +mtk_soc_assert_reset(device_t dev) +{ + + return (fdt_reset_assert_all(dev)); +} + +int +mtk_soc_deassert_reset(device_t dev) +{ + + return (fdt_reset_deassert_all(dev)); +} + +void +mtk_soc_reset(void) +{ + + mtk_sysctl_clr_set(SYSCTL_RSTCTRL, 0, 1); + mtk_sysctl_clr_set(SYSCTL_RSTCTRL, 1, 0); +} diff --git a/sys/mips/mediatek/mtk_soc.h b/sys/mips/mediatek/mtk_soc.h new file mode 100644 index 00000000000..445675df611 --- /dev/null +++ b/sys/mips/mediatek/mtk_soc.h @@ -0,0 +1,130 @@ +/*- + * Copyright (c) 2016 Stanislav Galabov. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _MTK_SOC_H_ +#define _MTK_SOC_H_ + +enum mtk_soc_id { + MTK_SOC_UNKNOWN, + MTK_SOC_RT3050, + MTK_SOC_RT3052, + MTK_SOC_RT3350, + MTK_SOC_RT3352, + MTK_SOC_RT3662, + MTK_SOC_RT3883, + MTK_SOC_RT5350, + MTK_SOC_MT7620A, + MTK_SOC_MT7620N, + MTK_SOC_MT7621, + MTK_SOC_MT7628, + MTK_SOC_MT7688, + MTK_SOC_MAX +}; + +#define RT305X_CPU_CLKSEL_OFF 18 +#define RT305X_CPU_CLKSEL_MSK 0x1 +#define RT3352_CPU_CLKSEL_OFF 8 +#define RT3352_CPU_CLKSEL_MSK 0x1 +#define RT3883_CPU_CLKSEL_OFF 8 +#define RT3883_CPU_CLKSEL_MSK 0x3 +#define RT5350_CPU_CLKSEL_OFF1 8 +#define RT5350_CPU_CLKSEL_OFF2 10 +#define RT5350_CPU_CLKSEL_MSK 0x1 +#define MT7628_CPU_CLKSEL_OFF 6 +#define MT7628_CPU_CLKSEL_MSK 0x1 + +#define MT7620_CPU_CLK_AUX0 (1u<<24) +#define MT7620_CPLL_SW_CFG (1u<<31) +#define MT7620_PLL_MULT_RATIO_OFF 16 +#define MT7620_PLL_MULT_RATIO_MSK 0x7 +#define MT7620_PLL_MULT_RATIO_BASE 24 +#define MT7620_PLL_DIV_RATIO_OFF 10 +#define MT7620_PLL_DIV_RATIO_MSK 0x3 +#define MT7620_PLL_DIV_RATIO_BASE 2 +#define MT7620_PLL_DIV_RATIO_MAX 8 +#define MT7620_XTAL_40 40 + +#define MT7621_USES_MEMDIV (1u<<30) +#define MT7621_MEMDIV_OFF 4 +#define MT7621_MEMDIV_MSK 0x7f +#define MT7621_MEMDIV_BASE 1 +#define MT7621_CLKSEL_OFF 6 +#define MT7621_CLKSEL_MSK 0x7 +#define MT7621_CLKSEL_25MHZ_VAL 6 +#define MT7621_CLKSEL_20MHZ_VAL 3 +#define MT7621_CLKSEL_20MHZ 20 +#define MT7621_CLKSEL_25MHZ 25 +#define MT7621_CLK_STS_DIV_OFF 8 +#define MT7621_CLK_STS_MSK 0x1f +#define MT7621_CLK_STS_BASE 500 + +#define MTK_MT7621_CLKDIV_REG 0x5648 +#define MTK_MT7621_CLKDIV_OFF 4 +#define MTK_MT7621_CLKDIV_MSK 0x7f + +#define MTK_MHZ(x) ((x) * 1000 * 1000) + +#define MTK_CPU_CLK_UNKNOWN 0 +#define MTK_CPU_CLK_250MHZ 250000000 +#define MTK_CPU_CLK_300MHZ 300000000 +#define MTK_CPU_CLK_320MHZ 320000000 +#define MTK_CPU_CLK_360MHZ 360000000 +#define MTK_CPU_CLK_384MHZ 384000000 +#define MTK_CPU_CLK_400MHZ 400000000 +#define MTK_CPU_CLK_480MHZ 480000000 +#define MTK_CPU_CLK_500MHZ 500000000 +#define MTK_CPU_CLK_575MHZ 575000000 +#define MTK_CPU_CLK_580MHZ 580000000 +#define MTK_CPU_CLK_600MHZ 600000000 +#define MTK_CPU_CLK_880MHZ 880000000 + +#define MTK_UART_CLK_40MHZ 40000000 +#define MTK_UART_CLK_50MHZ 50000000 + +#define MTK_UARTDIV_2 2 +#define MTK_UARTDIV_3 3 + +#define MTK_DEFAULT_BASE 0x10000000 +#define MTK_MT7621_BASE 0x1e000000 +#define MTK_DEFAULT_SIZE 0x6000 + +extern void mtk_soc_try_early_detect(void); +extern uint32_t mtk_soc_get_uartclk(void); +extern uint32_t mtk_soc_get_cpuclk(void); +extern uint32_t mtk_soc_get_timerclk(void); +extern uint32_t mtk_soc_get_socid(void); + +extern int mtk_soc_reset_device(device_t); +extern int mtk_soc_stop_clock(device_t); +extern int mtk_soc_start_clock(device_t); +extern int mtk_soc_assert_reset(device_t); +extern int mtk_soc_deassert_reset(device_t); +extern void mtk_soc_reset(void); + +#endif /* _MTK_SOC_H_ */ diff --git a/sys/mips/mediatek/mtk_sysctl.c b/sys/mips/mediatek/mtk_sysctl.c new file mode 100644 index 00000000000..c16b55d69c9 --- /dev/null +++ b/sys/mips/mediatek/mtk_sysctl.c @@ -0,0 +1,191 @@ +/*- + * Copyright (c) 2016 Stanislav Galabov. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include + +#include + +#include + +struct mtk_sysctl_softc { + device_t dev; + struct resource *mem_res; + int mem_rid; + struct mtx mtx; +}; + +static struct mtk_sysctl_softc *mtk_sysctl_sc = NULL; + +static struct ofw_compat_data compat_data[] = { + { "ralink,rt2880-sysc", 1 }, + { "ralink,rt3050-sysc", 1 }, + { "ralink,rt3352-sysc", 1 }, + { "ralink,rt3883-sysc", 1 }, + { "ralink,rt5350-sysc", 1 }, + { "ralink,mt7620a-sysc", 1 }, + { "mtk,mt7621-sysc", 1 }, + + /* Sentinel */ + { NULL, 0 } +}; + +#define MTK_SYSCTL_LOCK(sc) mtx_lock_spin(&(sc)->mtx) +#define MTK_SYSCTL_UNLOCK(sc) mtx_unlock_spin(&(sc)->mtx) +#define MTK_SYSCTL_LOCK_INIT(sc) \ + mtx_init(&(sc)->mtx, device_get_nameunit((sc)->dev), \ + "mtk_sysctl", MTX_SPIN) +#define MTK_SYSCTL_LOCK_DESTROY(sc) mtx_destroy(&(sc)->mtx) + +static int +mtk_sysctl_probe(device_t dev) +{ + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "MTK System Controller"); + + return (BUS_PROBE_DEFAULT); +} + +static int mtk_sysctl_detach(device_t); + +static int +mtk_sysctl_attach(device_t dev) +{ + struct mtk_sysctl_softc *sc = device_get_softc(dev); + + if (device_get_unit(dev) != 0 || mtk_sysctl_sc != NULL) { + device_printf(dev, "Only one sysctl module supported\n"); + return (ENXIO); + } + + mtk_sysctl_sc = sc; + + /* Map control/status registers. */ + sc->mem_rid = 0; + sc->mem_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, + &sc->mem_rid, RF_ACTIVE); + + if (sc->mem_res == NULL) { + device_printf(dev, "couldn't map memory\n"); + mtk_sysctl_detach(dev); + return (ENXIO); + } + + sc->dev = dev; + + MTK_SYSCTL_LOCK_INIT(sc); + + return (0); +} + +static int +mtk_sysctl_detach(device_t dev) +{ + struct mtk_sysctl_softc *sc = device_get_softc(dev); + + if (sc->mem_res) + bus_release_resource(dev, SYS_RES_MEMORY, sc->mem_rid, + sc->mem_res); + + MTK_SYSCTL_LOCK_DESTROY(sc); + + return(0); +} + +uint32_t +mtk_sysctl_get(uint32_t reg) +{ + uint32_t val; + + MTK_SYSCTL_LOCK(mtk_sysctl_sc); + val = bus_read_4(mtk_sysctl_sc->mem_res, reg); + MTK_SYSCTL_UNLOCK(mtk_sysctl_sc); + + return (val); +} + +void +mtk_sysctl_set(uint32_t reg, uint32_t val) +{ + + MTK_SYSCTL_LOCK(mtk_sysctl_sc); + bus_write_4(mtk_sysctl_sc->mem_res, reg, val); + MTK_SYSCTL_UNLOCK(mtk_sysctl_sc); +} + +void +mtk_sysctl_clr_set(uint32_t reg, uint32_t clr, uint32_t set) +{ + uint32_t val; + + MTK_SYSCTL_LOCK(mtk_sysctl_sc); + val = bus_read_4(mtk_sysctl_sc->mem_res, reg); + val &= ~(clr); + val |= set; + bus_write_4(mtk_sysctl_sc->mem_res, reg, val); + MTK_SYSCTL_UNLOCK(mtk_sysctl_sc); +} + +static device_method_t mtk_sysctl_methods[] = { + DEVMETHOD(device_probe, mtk_sysctl_probe), + DEVMETHOD(device_attach, mtk_sysctl_attach), + DEVMETHOD(device_detach, mtk_sysctl_detach), + + DEVMETHOD_END +}; + +static driver_t mtk_sysctl_driver = { + "sysc", + mtk_sysctl_methods, + sizeof(struct mtk_sysctl_softc), +}; +static devclass_t mtk_sysctl_devclass; + +EARLY_DRIVER_MODULE(mtk_sysctl, simplebus, mtk_sysctl_driver, + mtk_sysctl_devclass, 0, 0, BUS_PASS_INTERRUPT + BUS_PASS_ORDER_EARLY); diff --git a/sys/mips/mediatek/mtk_sysctl.h b/sys/mips/mediatek/mtk_sysctl.h new file mode 100644 index 00000000000..0ef908e1a30 --- /dev/null +++ b/sys/mips/mediatek/mtk_sysctl.h @@ -0,0 +1,59 @@ +/*- + * Copyright (c) 2016 Stanislav Galabov. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _MTK_SYSCTL_H_ +#define _MTK_SYSCTL_H_ + +/* System Control */ +#define SYSCTL_CHIPID0_3 0x00 +#define SYSCTL_CHIPID4_7 0x04 + +#define SYSCTL_REVID 0x0C +#define SYSCTL_REVID_MASK 0xFFFF +#define SYSCTL_MT7621_REV_E 0x0101 + +#define SYSCTL_SYSCFG 0x10 +#define SYSCTL_SYSCFG1 0x14 +#define SYSCTL_CLKCFG0 0x2C +#define SYSCTL_CLKCFG1 0x30 +#define SYSCTL_RSTCTRL 0x34 +#define SYSCTL_GPIOMODE 0x60 + +#define SYSCTL_CUR_CLK_STS 0x44 + +#define SYSCTL_MT7620_CPLL_CFG0 0x54 +#define SYSCTL_MT7620_CPLL_CFG1 0x58 + +#define SYSCFG1_USB_HOST_MODE (1<<10) + +extern uint32_t mtk_sysctl_get(uint32_t); +extern void mtk_sysctl_set(uint32_t, uint32_t); +extern void mtk_sysctl_clr_set(uint32_t, uint32_t, uint32_t); + +#endif /* _MTK_SYSCTL_H_ */ From b74b6b0a8229a388710fdcddb4b78b63b630eb9e Mon Sep 17 00:00:00 2001 From: Stanislav Galabov Date: Thu, 7 Apr 2016 11:08:50 +0000 Subject: [PATCH 035/159] Initial import of Ralink/Mediatek MIPS SoC support #2 This revision adds the following to the Mediatek/Ralink support: - initial support for "clocks" FDT property, currently based on fdt_clock - initial support for "resets" FDT property, currently based on the fdt_reset interface from D5826 - initial support for "pinctrl,bits" functionality via FDT. May be extended in the future to cover a better and fuller pinctrl implementation Approved by: adrian (mentor) Sponsored by: Smartcom - Bulgaria AD Differential Revision: https://reviews.freebsd.org/D5827 --- sys/mips/mediatek/mtk_clock.c | 156 ++++++++++++++++++++++++++++++++ sys/mips/mediatek/mtk_pinctrl.c | 114 +++++++++++++++++++++++ sys/mips/mediatek/mtk_reset.c | 139 ++++++++++++++++++++++++++++ 3 files changed, 409 insertions(+) create mode 100644 sys/mips/mediatek/mtk_clock.c create mode 100644 sys/mips/mediatek/mtk_pinctrl.c create mode 100644 sys/mips/mediatek/mtk_reset.c diff --git a/sys/mips/mediatek/mtk_clock.c b/sys/mips/mediatek/mtk_clock.c new file mode 100644 index 00000000000..83433fbd8ff --- /dev/null +++ b/sys/mips/mediatek/mtk_clock.c @@ -0,0 +1,156 @@ +/*- + * Copyright (c) 2016 Stanislav Galabov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification, immediately at the beginning of the file. + * 2. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include + +#include "fdt_clock_if.h" + +static const struct ofw_compat_data compat_data[] = { + { "ralink,rt2880-clock", 1 }, + + /* Sentinel */ + { NULL, 0 } +}; + +static int +mtk_clock_probe(device_t dev) +{ + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "MTK Clock Controller"); + + return (0); +} + +static int +mtk_clock_attach(device_t dev) +{ + + if (device_get_unit(dev) != 0) { + device_printf(dev, "Only one clock control allowed\n"); + return (ENXIO); + } + + fdt_clock_register_provider(dev); + + return (0); +} + +#define CLOCK_ENABLE 1 +#define CLOCK_DISABLE 0 + +static int +mtk_clock_set(device_t dev, int index, int value) +{ + uint32_t mask; + + /* Clock config register holds 32 clock gating bits */ + if (index < 0 || index > 31) + return (EINVAL); + + mask = (1u << index); + + if (value == CLOCK_ENABLE) + mtk_sysctl_clr_set(SYSCTL_CLKCFG1, 0, mask); + else + mtk_sysctl_clr_set(SYSCTL_CLKCFG1, mask, 0); + + return (0); +} + +static int +mtk_clock_enable(device_t dev, int index) +{ + + return mtk_clock_set(dev, index, CLOCK_ENABLE); +} + +static int +mtk_clock_disable(device_t dev, int index) +{ + + return mtk_clock_set(dev, index, CLOCK_DISABLE); +} + +static int +mtk_clock_get_info(device_t dev, int index, struct fdt_clock_info *info) +{ + uint32_t mask; + + if (index < 0 || index > 31 || info == NULL) + return (EINVAL); + + if (mtk_sysctl_get(SYSCTL_CLKCFG1) & mask) + info->flags = FDT_CIFLAG_RUNNING; + else + info->flags = 0; + + return (0); +} + +static device_method_t mtk_clock_methods[] = { + DEVMETHOD(device_probe, mtk_clock_probe), + DEVMETHOD(device_attach, mtk_clock_attach), + + /* fdt_clock interface */ + DEVMETHOD(fdt_clock_enable, mtk_clock_enable), + DEVMETHOD(fdt_clock_disable, mtk_clock_disable), + DEVMETHOD(fdt_clock_get_info, mtk_clock_get_info), + + DEVMETHOD_END +}; + +static driver_t mtk_clock_driver = { + "clkctrl", + mtk_clock_methods, + 0, +}; +static devclass_t mtk_clock_devclass; + +EARLY_DRIVER_MODULE(mtk_clock, simplebus, mtk_clock_driver, mtk_clock_devclass, + 0, 0, BUS_PASS_INTERRUPT + BUS_PASS_ORDER_EARLY); + +MODULE_DEPEND(mtk_clock, mtk_sysctl, 1, 1, 1); diff --git a/sys/mips/mediatek/mtk_pinctrl.c b/sys/mips/mediatek/mtk_pinctrl.c new file mode 100644 index 00000000000..489be5ba9c6 --- /dev/null +++ b/sys/mips/mediatek/mtk_pinctrl.c @@ -0,0 +1,114 @@ +/*- + * Copyright (c) 2016 Stanislav Galabov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification, immediately at the beginning of the file. + * 2. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include "fdt_pinctrl_if.h" + +static const struct ofw_compat_data compat_data[] = { + { "ralink,rt2880-pinctrl", 1 }, + + /* Sentinel */ + { NULL, 0 } +}; + +static int +mtk_pinctrl_probe(device_t dev) +{ + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "MTK Pin Controller"); + + return (0); +} + +static int +mtk_pinctrl_attach(device_t dev) +{ + + if (device_get_unit(dev) != 0) { + device_printf(dev, "Only one pin control allowed\n"); + return (ENXIO); + } + + fdt_pinctrl_register(dev, "pinctrl-single,bits"); + fdt_pinctrl_configure_tree(dev); + + if (bootverbose) + device_printf(dev, "GPIO mode: 0x%08x\n", + mtk_sysctl_get(SYSCTL_GPIOMODE)); + + return (0); +} + +static int +mtk_pinctrl_configure(device_t dev, phandle_t cfgxref) +{ + + return (EINVAL); +} + +static device_method_t mtk_pinctrl_methods[] = { + DEVMETHOD(device_probe, mtk_pinctrl_probe), + DEVMETHOD(device_attach, mtk_pinctrl_attach), + + /* fdt_pinctrl interface */ + DEVMETHOD(fdt_pinctrl_configure, mtk_pinctrl_configure), + + DEVMETHOD_END +}; + +static driver_t mtk_pinctrl_driver = { + "pinctrl", + mtk_pinctrl_methods, + 0, +}; +static devclass_t mtk_pinctrl_devclass; + +EARLY_DRIVER_MODULE(mtk_pinctrl, simplebus, mtk_pinctrl_driver, + mtk_pinctrl_devclass, 0, 0, BUS_PASS_INTERRUPT + BUS_PASS_ORDER_EARLY); + +MODULE_DEPEND(mtk_pinctrl, mtk_sysctl, 1, 1, 1); diff --git a/sys/mips/mediatek/mtk_reset.c b/sys/mips/mediatek/mtk_reset.c new file mode 100644 index 00000000000..31d56e44a1d --- /dev/null +++ b/sys/mips/mediatek/mtk_reset.c @@ -0,0 +1,139 @@ +/*- + * Copyright (c) 2016 Stanislav Galabov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification, immediately at the beginning of the file. + * 2. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include "fdt_reset_if.h" + +static const struct ofw_compat_data compat_data[] = { + { "ralink,rt2880-reset", 1 }, + + /* Sentinel */ + { NULL, 0 } +}; + +static int +mtk_reset_probe(device_t dev) +{ + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "MTK Reset Controller"); + + return (0); +} + +static int +mtk_reset_attach(device_t dev) +{ + + if (device_get_unit(dev) != 0) { + device_printf(dev, "Only one reset control allowed\n"); + return (ENXIO); + } + + fdt_reset_register_provider(dev); + + return (0); +} + +#define RESET_ASSERT 1 +#define RESET_DEASSERT 0 + +static int +mtk_reset_set(device_t dev, int index, int value) +{ + uint32_t mask; + + /* index 0 is SoC reset, indices 1 - 31 are valid peripheral resets */ + if (index < 1 || index > 31) + return (EINVAL); + + mask = (1u << index); + + if (value == RESET_ASSERT) + mtk_sysctl_clr_set(SYSCTL_RSTCTRL, 0, mask); + else + mtk_sysctl_clr_set(SYSCTL_RSTCTRL, mask, 0); + + return (0); +} + +static int +mtk_reset_assert(device_t dev, int index) +{ + + return mtk_reset_set(dev, index, RESET_ASSERT); +} + +static int +mtk_reset_deassert(device_t dev, int index) +{ + + return mtk_reset_set(dev, index, RESET_DEASSERT); +} + +static device_method_t mtk_reset_methods[] = { + DEVMETHOD(device_probe, mtk_reset_probe), + DEVMETHOD(device_attach, mtk_reset_attach), + + /* fdt_reset interface */ + DEVMETHOD(fdt_reset_assert, mtk_reset_assert), + DEVMETHOD(fdt_reset_deassert, mtk_reset_deassert), + + DEVMETHOD_END +}; + +static driver_t mtk_reset_driver = { + "rstctrl", + mtk_reset_methods, + 0, +}; +static devclass_t mtk_reset_devclass; + +EARLY_DRIVER_MODULE(mtk_reset, simplebus, mtk_reset_driver, mtk_reset_devclass, + 0, 0, BUS_PASS_INTERRUPT + BUS_PASS_ORDER_EARLY); + +MODULE_DEPEND(mtk_reset, mtk_sysctl, 1, 1, 1); From e56e179d55bba70112cfc53fc9093f40564633fc Mon Sep 17 00:00:00 2001 From: Stanislav Galabov Date: Thu, 7 Apr 2016 11:12:37 +0000 Subject: [PATCH 036/159] Initial import of Ralink/Mediatek MIPS SoC support #3 Interrupt controllers found in various Mediatek/Ralink SoCs. mtk_intr_v1 and mtk_intr_v2 are basically the same at the moment, with just different register mappings. However, v1 interrupt controller has a subset of the functionality of the v2 interrupt controller, so in the future the v2 interrupt controller driver may be enhanced, if needed, with things like level/edge interrupts and soft interrupts. So, for the moment I suggest we keep them as 2 separate files. mtk_intr_gic provides very basic (similar to v1 and v2) support for MIPS GIC controllers, which currently maps all interrupts to a single core and sets them to type level, active high. In the future this may be developed into a generic GIC controller to support any new MIPS SoCs that include it. The GIC is a standard MTI interrupt controller in their multi-core line-up (e.g., 1004K, 1074K, etc.), rather than a SoC-specific controller. Approved by: adrian (mentor) Sponsored by: Smartcom - Bulgaria AD Differential Revision: https://reviews.freebsd.org/D5839 --- sys/mips/mediatek/mtk_intr_gic.c | 377 +++++++++++++++++++++++++++++++ sys/mips/mediatek/mtk_intr_v1.c | 353 +++++++++++++++++++++++++++++ sys/mips/mediatek/mtk_intr_v2.c | 348 ++++++++++++++++++++++++++++ 3 files changed, 1078 insertions(+) create mode 100644 sys/mips/mediatek/mtk_intr_gic.c create mode 100644 sys/mips/mediatek/mtk_intr_v1.c create mode 100644 sys/mips/mediatek/mtk_intr_v2.c diff --git a/sys/mips/mediatek/mtk_intr_gic.c b/sys/mips/mediatek/mtk_intr_gic.c new file mode 100644 index 00000000000..3eb6ffcc20c --- /dev/null +++ b/sys/mips/mediatek/mtk_intr_gic.c @@ -0,0 +1,377 @@ +/*- + * Copyright (c) 2016 Stanislav Galabov + * Copyright (c) 2015 Alexander Kabaev + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification, immediately at the beginning of the file. + * 2. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ + +#include "opt_platform.h" + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "pic_if.h" + +#define MTK_NIRQS 64 /* We'll only use 64 for now */ + +#define MTK_INTPOL 0x0100 +#define MTK_INTTRIG 0x0180 +#define MTK_INTDIS 0x0300 +#define MTK_INTENA 0x0380 +#define MTK_INTMASK 0x0400 +#define MTK_INTSTAT 0x0480 +#define MTK_MAPPIN(_i) (0x0500 + (4 * (_i))) +#define MTK_MAPVPE(_i, _v) (0x2000 + (32 * (_i)) + (((_v) / 32) * 4)) + +#define MTK_INTPOL_POS 1 +#define MTK_INTPOL_NEG 0 +#define MTK_INTTRIG_EDGE 1 +#define MTK_INTTRIG_LEVEL 0 +#define MTK_PIN_BITS(_i) ((1 << 31) | (_i)) +#define MTK_VPE_BITS(_v) (1 << ((_v) % 32)) + +static int mtk_gic_intr(void *); + +struct mtk_gic_irqsrc { + struct intr_irqsrc isrc; + u_int irq; +}; + +struct mtk_gic_softc { + device_t gic_dev; + void * gic_intrhand; + struct resource * gic_res[2]; + struct mtk_gic_irqsrc gic_irqs[MTK_NIRQS]; + struct mtx mutex; + uint32_t nirqs; +}; + +#define GIC_INTR_ISRC(sc, irq) (&(sc)->gic_irqs[(irq)].isrc) + +static struct resource_spec mtk_gic_spec[] = { + { SYS_RES_MEMORY, 0, RF_ACTIVE }, /* Registers */ + { SYS_RES_IRQ, 0, RF_ACTIVE }, /* Parent interrupt 1 */ + { -1, 0 } +}; + +static struct ofw_compat_data compat_data[] = { + { "mti,gic", 1 }, + { NULL, 0 } +}; + +#if 0 +#define READ4(_sc, _reg) \ + bus_space_read_4((_sc)->bst, (_sc)->bsh, _reg) +#define WRITE4(_sc, _reg, _val) \ + bus_space_write_4((_sc)->bst, (_sc)->bsh, _reg, _val) +#else +#define READ4(_sc, _reg) bus_read_4((_sc)->gic_res[0], (_reg)) +#define WRITE4(_sc, _reg, _val) bus_write_4((_sc)->gic_res[0], (_reg), (_val)) +#endif + +static int +mtk_gic_probe(device_t dev) +{ + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "MTK Interrupt Controller (GIC)"); + return (BUS_PROBE_DEFAULT); +} + +static inline void +gic_irq_unmask(struct mtk_gic_softc *sc, u_int irq) +{ + + WRITE4(sc, MTK_INTENA, (1u << (irq))); +} + +static inline void +gic_irq_mask(struct mtk_gic_softc *sc, u_int irq) +{ + + WRITE4(sc, MTK_INTDIS, (1u << (irq))); +} + +static inline intptr_t +gic_xref(device_t dev) +{ + + return (OF_xref_from_node(ofw_bus_get_node(dev))); +} + +static int +mtk_gic_register_isrcs(struct mtk_gic_softc *sc) +{ + int error; + uint32_t irq; + struct intr_irqsrc *isrc; + const char *name; + + name = device_get_nameunit(sc->gic_dev); + for (irq = 0; irq < sc->nirqs; irq++) { + sc->gic_irqs[irq].irq = irq; + isrc = GIC_INTR_ISRC(sc, irq); + error = intr_isrc_register(isrc, sc->gic_dev, 0, "%s", name); + if (error != 0) { + /* XXX call intr_isrc_deregister */ + device_printf(sc->gic_dev, "%s failed", __func__); + return (error); + } + } + + return (0); +} + +static int +mtk_gic_attach(device_t dev) +{ + struct mtk_gic_softc *sc; + intptr_t xref = gic_xref(dev); + int i; + + sc = device_get_softc(dev); + + if (bus_alloc_resources(dev, mtk_gic_spec, sc->gic_res)) { + device_printf(dev, "could not allocate resources\n"); + return (ENXIO); + } + + sc->gic_dev = dev; + + /* Initialize mutex */ + mtx_init(&sc->mutex, "PIC lock", "", MTX_SPIN); + + /* Set the number of interrupts */ + sc->nirqs = nitems(sc->gic_irqs); + + /* Mask all interrupts */ + WRITE4(sc, MTK_INTDIS, 0xFFFFFFFF); + + /* All interrupts are of type level */ + WRITE4(sc, MTK_INTTRIG, 0x00000000); + + /* All interrupts are of positive polarity */ + WRITE4(sc, MTK_INTPOL, 0xFFFFFFFF); + + /* + * Route all interrupts to pin 0 on VPE 0; + */ + for (i = 0; i < 32; i++) { + WRITE4(sc, MTK_MAPPIN(i), MTK_PIN_BITS(0)); + WRITE4(sc, MTK_MAPVPE(i, 0), MTK_VPE_BITS(0)); + } + + /* Register the interrupts */ + if (mtk_gic_register_isrcs(sc) != 0) { + device_printf(dev, "could not register GIC ISRCs\n"); + goto cleanup; + } + + /* + * Now, when everything is initialized, it's right time to + * register interrupt controller to interrupt framefork. + */ + if (intr_pic_register(dev, xref) != 0) { + device_printf(dev, "could not register PIC\n"); + goto cleanup; + } + + if (bus_setup_intr(dev, sc->gic_res[1], INTR_TYPE_CLK, + mtk_gic_intr, NULL, sc, &sc->gic_intrhand)) { + device_printf(dev, "could not setup irq handler\n"); + intr_pic_deregister(dev, xref); + goto cleanup; + } + return (0); + +cleanup: + bus_release_resources(dev, mtk_gic_spec, sc->gic_res); + return(ENXIO); +} + +static int +mtk_gic_intr(void *arg) +{ + struct mtk_gic_softc *sc = arg; + struct thread *td; + uint32_t i, intr; + + td = curthread; + /* Workaround: do not inflate intr nesting level */ + td->td_intr_nesting_level--; + + intr = READ4(sc, MTK_INTSTAT) & READ4(sc, MTK_INTMASK); + while ((i = fls(intr)) != 0) { + i--; + intr &= ~(1u << i); + + if (intr_isrc_dispatch(GIC_INTR_ISRC(sc, i), + curthread->td_intr_frame) != 0) { + device_printf(sc->gic_dev, + "Stray interrupt %u detected\n", i); + gic_irq_mask(sc, i); + continue; + } + } + + KASSERT(i == 0, ("all interrupts handled")); + + td->td_intr_nesting_level++; + + return (FILTER_HANDLED); +} + +static int +mtk_gic_map_intr(device_t dev, struct intr_map_data *data, + struct intr_irqsrc **isrcp) +{ +#ifdef FDT + struct mtk_gic_softc *sc; + + sc = device_get_softc(dev); + + if (data == NULL || data->type != INTR_MAP_DATA_FDT || + data->fdt.ncells != 1 || data->fdt.cells[0] >= sc->nirqs) + return (EINVAL); + + *isrcp = GIC_INTR_ISRC(sc, data->fdt.cells[0]); + return (0); +#else + return (EINVAL); +#endif +} + +static void +mtk_gic_enable_intr(device_t dev, struct intr_irqsrc *isrc) +{ + u_int irq; + + irq = ((struct mtk_gic_irqsrc *)isrc)->irq; + gic_irq_unmask(device_get_softc(dev), irq); +} + +static void +mtk_gic_disable_intr(device_t dev, struct intr_irqsrc *isrc) +{ + u_int irq; + + irq = ((struct mtk_gic_irqsrc *)isrc)->irq; + gic_irq_mask(device_get_softc(dev), irq); +} + +static void +mtk_gic_pre_ithread(device_t dev, struct intr_irqsrc *isrc) +{ + + mtk_gic_disable_intr(dev, isrc); +} + +static void +mtk_gic_post_ithread(device_t dev, struct intr_irqsrc *isrc) +{ + + mtk_gic_enable_intr(dev, isrc); +} + +static void +mtk_gic_post_filter(device_t dev, struct intr_irqsrc *isrc) +{ +} + +#ifdef SMP +static int +mtk_gic_bind(device_t dev, struct intr_irqsrc *isrc) +{ + return (EOPNOTSUPP); +} + +static void +mtk_gic_init_secondary(device_t dev) +{ +} + +static void +mtk_gic_ipi_send(device_t dev, struct intr_irqsrc *isrc, cpuset_t cpus) +{ +} +#endif + +static device_method_t mtk_gic_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, mtk_gic_probe), + DEVMETHOD(device_attach, mtk_gic_attach), + /* Interrupt controller interface */ + DEVMETHOD(pic_disable_intr, mtk_gic_disable_intr), + DEVMETHOD(pic_enable_intr, mtk_gic_enable_intr), + DEVMETHOD(pic_map_intr, mtk_gic_map_intr), + DEVMETHOD(pic_post_filter, mtk_gic_post_filter), + DEVMETHOD(pic_post_ithread, mtk_gic_post_ithread), + DEVMETHOD(pic_pre_ithread, mtk_gic_pre_ithread), +#ifdef SMP + DEVMETHOD(pic_bind, mtk_gic_bind), + DEVMETHOD(pic_init_secondary, mtk_gic_init_secondary), + DEVMETHOD(pic_ipi_send, mtk_gic_ipi_send), +#endif + { 0, 0 } +}; + +static driver_t mtk_gic_driver = { + "intc", + mtk_gic_methods, + sizeof(struct mtk_gic_softc), +}; + +static devclass_t mtk_gic_devclass; + +EARLY_DRIVER_MODULE(intc_gic, simplebus, mtk_gic_driver, mtk_gic_devclass, 0, 0, + BUS_PASS_INTERRUPT + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/mips/mediatek/mtk_intr_v1.c b/sys/mips/mediatek/mtk_intr_v1.c new file mode 100644 index 00000000000..f1ae3a244b2 --- /dev/null +++ b/sys/mips/mediatek/mtk_intr_v1.c @@ -0,0 +1,353 @@ +/*- + * Copyright (c) 2015 Stanislav Galabov + * Copyright (c) 2015 Alexander Kabaev + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification, immediately at the beginning of the file. + * 2. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ + +#include "opt_platform.h" + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "pic_if.h" + +#define MTK_NIRQS 32 + +#define MTK_IRQ0STAT 0x0000 +#define MTK_IRQ1STAT 0x0004 +#define MTK_INTTYPE 0x0020 +#define MTK_INTRAW 0x0030 +#define MTK_INTENA 0x0034 +#define MTK_INTDIS 0x0038 + +static int mtk_pic_intr(void *); + +struct mtk_pic_irqsrc { + struct intr_irqsrc isrc; + u_int irq; +}; + +struct mtk_pic_softc { + device_t pic_dev; + void * pic_intrhand; + struct resource * pic_res[2]; + struct mtk_pic_irqsrc pic_irqs[MTK_NIRQS]; + struct mtx mutex; + uint32_t nirqs; +}; + +#define PIC_INTR_ISRC(sc, irq) (&(sc)->pic_irqs[(irq)].isrc) + +static struct resource_spec mtk_pic_spec[] = { + { SYS_RES_MEMORY, 0, RF_ACTIVE }, /* Registers */ + { SYS_RES_IRQ, 0, RF_ACTIVE }, /* Parent interrupt 1 */ +// { SYS_RES_IRQ, 1, RF_ACTIVE }, /* Parent interrupt 2 */ + { -1, 0 } +}; + +static struct ofw_compat_data compat_data[] = { + { "ralink,rt2880-intc", 1 }, + { "ralink,rt3050-intc", 1 }, + { "ralink,rt3352-intc", 1 }, + { "ralink,rt3883-intc", 1 }, + { "ralink,rt5350-intc", 1 }, + { "ralink,mt7620a-intc", 1 }, + { NULL, 0 } +}; + +#define READ4(_sc, _reg) bus_read_4((_sc)->pic_res[0], _reg) +#define WRITE4(_sc, _reg, _val) bus_write_4((_sc)->pic_res[0], _reg, _val) + +static int +mtk_pic_probe(device_t dev) +{ + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "MTK Interrupt Controller (v2)"); + return (BUS_PROBE_DEFAULT); +} + +static inline void +pic_irq_unmask(struct mtk_pic_softc *sc, u_int irq) +{ + + WRITE4(sc, MTK_INTENA, (1u << (irq))); +} + +static inline void +pic_irq_mask(struct mtk_pic_softc *sc, u_int irq) +{ + + WRITE4(sc, MTK_INTDIS, (1u << (irq))); +} + +static inline intptr_t +pic_xref(device_t dev) +{ + return (OF_xref_from_node(ofw_bus_get_node(dev))); +} + +static int +mtk_pic_register_isrcs(struct mtk_pic_softc *sc) +{ + int error; + uint32_t irq; + struct intr_irqsrc *isrc; + const char *name; + + name = device_get_nameunit(sc->pic_dev); + for (irq = 0; irq < sc->nirqs; irq++) { + sc->pic_irqs[irq].irq = irq; + isrc = PIC_INTR_ISRC(sc, irq); + error = intr_isrc_register(isrc, sc->pic_dev, 0, "%s", name); + if (error != 0) { + /* XXX call intr_isrc_deregister */ + device_printf(sc->pic_dev, "%s failed", __func__); + return (error); + } + } + + return (0); +} + +static int +mtk_pic_attach(device_t dev) +{ + struct mtk_pic_softc *sc; + intptr_t xref = pic_xref(dev); + + sc = device_get_softc(dev); + + if (bus_alloc_resources(dev, mtk_pic_spec, sc->pic_res)) { + device_printf(dev, "could not allocate resources\n"); + return (ENXIO); + } + + sc->pic_dev = dev; + + /* Initialize mutex */ + mtx_init(&sc->mutex, "PIC lock", "", MTX_SPIN); + + /* Set the number of interrupts */ + sc->nirqs = nitems(sc->pic_irqs); + + /* Mask all interrupts */ + WRITE4(sc, MTK_INTDIS, 0x7FFFFFFF); + + /* But enable interrupt generation/masking */ + WRITE4(sc, MTK_INTENA, 0x80000000); + + /* Set all interrupts to type 0 */ + WRITE4(sc, MTK_INTTYPE, 0x00000000); + + /* Register the interrupts */ + if (mtk_pic_register_isrcs(sc) != 0) { + device_printf(dev, "could not register PIC ISRCs\n"); + goto cleanup; + } + + /* + * Now, when everything is initialized, it's right time to + * register interrupt controller to interrupt framefork. + */ + if (intr_pic_register(dev, xref) != 0) { + device_printf(dev, "could not register PIC\n"); + goto cleanup; + } + + if (bus_setup_intr(dev, sc->pic_res[1], INTR_TYPE_CLK, + mtk_pic_intr, NULL, sc, &sc->pic_intrhand)) { + device_printf(dev, "could not setup irq handler\n"); + intr_pic_deregister(dev, xref); + goto cleanup; + } + return (0); + +cleanup: + bus_release_resources(dev, mtk_pic_spec, sc->pic_res); + return(ENXIO); +} + +static int +mtk_pic_intr(void *arg) +{ + struct mtk_pic_softc *sc = arg; + struct thread *td; + uint32_t i, intr; + + td = curthread; + /* Workaround: do not inflate intr nesting level */ + td->td_intr_nesting_level--; + +#ifdef _notyet_ + intr = READ4(sc, MTK_IRQ1STAT); + while ((i = fls(intr)) != 0) { + i--; + intr &= ~(1u << i); + + if (intr_isrc_dispatch(PIC_INTR_ISRC(sc, i), + curthread->td_intr_frame) != 0) { + device_printf(sc->pic_dev, + "Stray interrupt %u detected\n", i); + pic_irq_mask(sc, i); + continue; + } + } + + KASSERT(i == 0, ("all interrupts handled")); +#endif + + intr = READ4(sc, MTK_IRQ0STAT); + + while ((i = fls(intr)) != 0) { + i--; + intr &= ~(1u << i); + + if (intr_isrc_dispatch(PIC_INTR_ISRC(sc, i), + curthread->td_intr_frame) != 0) { + device_printf(sc->pic_dev, + "Stray interrupt %u detected\n", i); + pic_irq_mask(sc, i); + continue; + } + } + + KASSERT(i == 0, ("all interrupts handled")); + + td->td_intr_nesting_level++; + + return (FILTER_HANDLED); +} + +static int +mtk_pic_map_intr(device_t dev, struct intr_map_data *data, + struct intr_irqsrc **isrcp) +{ +#ifdef FDT + struct mtk_pic_softc *sc; + + sc = device_get_softc(dev); + + if (data == NULL || data->type != INTR_MAP_DATA_FDT || + data->fdt.ncells != 1 || data->fdt.cells[0] >= sc->nirqs) + return (EINVAL); + + *isrcp = PIC_INTR_ISRC(sc, data->fdt.cells[0]); + return (0); +#else + return (EINVAL); +#endif +} + +static void +mtk_pic_enable_intr(device_t dev, struct intr_irqsrc *isrc) +{ + u_int irq; + + irq = ((struct mtk_pic_irqsrc *)isrc)->irq; + pic_irq_unmask(device_get_softc(dev), irq); +} + +static void +mtk_pic_disable_intr(device_t dev, struct intr_irqsrc *isrc) +{ + u_int irq; + + irq = ((struct mtk_pic_irqsrc *)isrc)->irq; + pic_irq_mask(device_get_softc(dev), irq); +} + +static void +mtk_pic_pre_ithread(device_t dev, struct intr_irqsrc *isrc) +{ + + mtk_pic_disable_intr(dev, isrc); +} + +static void +mtk_pic_post_ithread(device_t dev, struct intr_irqsrc *isrc) +{ + + mtk_pic_enable_intr(dev, isrc); +} + +static void +mtk_pic_post_filter(device_t dev, struct intr_irqsrc *isrc) +{ +} + +static device_method_t mtk_pic_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, mtk_pic_probe), + DEVMETHOD(device_attach, mtk_pic_attach), + /* Interrupt controller interface */ + DEVMETHOD(pic_disable_intr, mtk_pic_disable_intr), + DEVMETHOD(pic_enable_intr, mtk_pic_enable_intr), + DEVMETHOD(pic_map_intr, mtk_pic_map_intr), + DEVMETHOD(pic_post_filter, mtk_pic_post_filter), + DEVMETHOD(pic_post_ithread, mtk_pic_post_ithread), + DEVMETHOD(pic_pre_ithread, mtk_pic_pre_ithread), + { 0, 0 } +}; + +static driver_t mtk_pic_driver = { + "intc", + mtk_pic_methods, + sizeof(struct mtk_pic_softc), +}; + +static devclass_t mtk_pic_devclass; + +EARLY_DRIVER_MODULE(intc_v1, simplebus, mtk_pic_driver, mtk_pic_devclass, 0, 0, + BUS_PASS_INTERRUPT + BUS_PASS_ORDER_MIDDLE); diff --git a/sys/mips/mediatek/mtk_intr_v2.c b/sys/mips/mediatek/mtk_intr_v2.c new file mode 100644 index 00000000000..5a9646e3247 --- /dev/null +++ b/sys/mips/mediatek/mtk_intr_v2.c @@ -0,0 +1,348 @@ +/*- + * Copyright (c) 2015 Stanislav Galabov + * Copyright (c) 2015 Alexander Kabaev + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification, immediately at the beginning of the file. + * 2. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ + +#include "opt_platform.h" + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "pic_if.h" + +#define MTK_NIRQS 32 + +#define MTK_IRQ0STAT 0x009c +#define MTK_IRQ1STAT 0x00a0 +#define MTK_INTTYPE 0x0000 +#define MTK_INTRAW 0x00a4 +#define MTK_INTENA 0x0080 +#define MTK_INTDIS 0x0078 + +static int mtk_pic_intr(void *); + +struct mtk_pic_irqsrc { + struct intr_irqsrc isrc; + u_int irq; +}; + +struct mtk_pic_softc { + device_t pic_dev; + void * pic_intrhand; + struct resource * pic_res[2]; + struct mtk_pic_irqsrc pic_irqs[MTK_NIRQS]; + struct mtx mutex; + uint32_t nirqs; +}; + +#define PIC_INTR_ISRC(sc, irq) (&(sc)->pic_irqs[(irq)].isrc) + +static struct resource_spec mtk_pic_spec[] = { + { SYS_RES_MEMORY, 0, RF_ACTIVE }, /* Registers */ + { SYS_RES_IRQ, 0, RF_ACTIVE }, /* Parent interrupt 1 */ +// { SYS_RES_IRQ, 1, RF_ACTIVE }, /* Parent interrupt 2 */ + { -1, 0 } +}; + +static struct ofw_compat_data compat_data[] = { + { "ralink,mt7628an-intc", 1 }, + { NULL, 0 } +}; + +#define READ4(_sc, _reg) bus_read_4((_sc)->pic_res[0], _reg) +#define WRITE4(_sc, _reg, _val) bus_write_4((_sc)->pic_res[0], _reg, _val) + +static int +mtk_pic_probe(device_t dev) +{ + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + device_set_desc(dev, "MTK Interrupt Controller (v2)"); + return (BUS_PROBE_DEFAULT); +} + +static inline void +pic_irq_unmask(struct mtk_pic_softc *sc, u_int irq) +{ + + WRITE4(sc, MTK_INTENA, (1u << (irq))); +} + +static inline void +pic_irq_mask(struct mtk_pic_softc *sc, u_int irq) +{ + + WRITE4(sc, MTK_INTDIS, (1u << (irq))); +} + +static inline intptr_t +pic_xref(device_t dev) +{ + return (OF_xref_from_node(ofw_bus_get_node(dev))); +} + +static int +mtk_pic_register_isrcs(struct mtk_pic_softc *sc) +{ + int error; + uint32_t irq; + struct intr_irqsrc *isrc; + const char *name; + + name = device_get_nameunit(sc->pic_dev); + for (irq = 0; irq < sc->nirqs; irq++) { + sc->pic_irqs[irq].irq = irq; + isrc = PIC_INTR_ISRC(sc, irq); + error = intr_isrc_register(isrc, sc->pic_dev, 0, "%s", name); + if (error != 0) { + /* XXX call intr_isrc_deregister */ + device_printf(sc->pic_dev, "%s failed", __func__); + return (error); + } + } + + return (0); +} + +static int +mtk_pic_attach(device_t dev) +{ + struct mtk_pic_softc *sc; + intptr_t xref = pic_xref(dev); + + sc = device_get_softc(dev); + + if (bus_alloc_resources(dev, mtk_pic_spec, sc->pic_res)) { + device_printf(dev, "could not allocate resources\n"); + return (ENXIO); + } + + sc->pic_dev = dev; + + /* Initialize mutex */ + mtx_init(&sc->mutex, "PIC lock", "", MTX_SPIN); + + /* Set the number of interrupts */ + sc->nirqs = nitems(sc->pic_irqs); + + /* Mask all interrupts */ + WRITE4(sc, MTK_INTDIS, 0xFFFFFFFF); + + /* But enable interrupt generation/masking */ + WRITE4(sc, MTK_INTENA, 0x00000000); + + /* Set all interrupts to type 0 */ + WRITE4(sc, MTK_INTTYPE, 0xFFFFFFFF); + + /* Register the interrupts */ + if (mtk_pic_register_isrcs(sc) != 0) { + device_printf(dev, "could not register PIC ISRCs\n"); + goto cleanup; + } + + /* + * Now, when everything is initialized, it's right time to + * register interrupt controller to interrupt framefork. + */ + if (intr_pic_register(dev, xref) != 0) { + device_printf(dev, "could not register PIC\n"); + goto cleanup; + } + + if (bus_setup_intr(dev, sc->pic_res[1], INTR_TYPE_CLK, + mtk_pic_intr, NULL, sc, &sc->pic_intrhand)) { + device_printf(dev, "could not setup irq handler\n"); + intr_pic_deregister(dev, xref); + goto cleanup; + } + return (0); + +cleanup: + bus_release_resources(dev, mtk_pic_spec, sc->pic_res); + return(ENXIO); +} + +static int +mtk_pic_intr(void *arg) +{ + struct mtk_pic_softc *sc = arg; + struct thread *td; + uint32_t i, intr; + + td = curthread; + /* Workaround: do not inflate intr nesting level */ + td->td_intr_nesting_level--; + +#ifdef _notyet_ + intr = READ4(sc, MTK_IRQ1STAT); + while ((i = fls(intr)) != 0) { + i--; + intr &= ~(1u << i); + + if (intr_isrc_dispatch(PIC_INTR_ISRC(sc, i), + curthread->td_intr_frame) != 0) { + device_printf(sc->pic_dev, + "Stray interrupt %u detected\n", i); + pic_irq_mask(sc, i); + continue; + } + } + + KASSERT(i == 0, ("all interrupts handled")); +#endif + + intr = READ4(sc, MTK_IRQ0STAT); + + while ((i = fls(intr)) != 0) { + i--; + intr &= ~(1u << i); + + if (intr_isrc_dispatch(PIC_INTR_ISRC(sc, i), + curthread->td_intr_frame) != 0) { + device_printf(sc->pic_dev, + "Stray interrupt %u detected\n", i); + pic_irq_mask(sc, i); + continue; + } + } + + KASSERT(i == 0, ("all interrupts handled")); + + td->td_intr_nesting_level++; + + return (FILTER_HANDLED); +} + +static int +mtk_pic_map_intr(device_t dev, struct intr_map_data *data, + struct intr_irqsrc **isrcp) +{ +#ifdef FDT + struct mtk_pic_softc *sc; + + sc = device_get_softc(dev); + + if (data == NULL || data->type != INTR_MAP_DATA_FDT || + data->fdt.ncells != 1 || data->fdt.cells[0] >= sc->nirqs) + return (EINVAL); + + *isrcp = PIC_INTR_ISRC(sc, data->fdt.cells[0]); + return (0); +#else + return (EINVAL); +#endif +} + +static void +mtk_pic_enable_intr(device_t dev, struct intr_irqsrc *isrc) +{ + u_int irq; + + irq = ((struct mtk_pic_irqsrc *)isrc)->irq; + pic_irq_unmask(device_get_softc(dev), irq); +} + +static void +mtk_pic_disable_intr(device_t dev, struct intr_irqsrc *isrc) +{ + u_int irq; + + irq = ((struct mtk_pic_irqsrc *)isrc)->irq; + pic_irq_mask(device_get_softc(dev), irq); +} + +static void +mtk_pic_pre_ithread(device_t dev, struct intr_irqsrc *isrc) +{ + + mtk_pic_disable_intr(dev, isrc); +} + +static void +mtk_pic_post_ithread(device_t dev, struct intr_irqsrc *isrc) +{ + + mtk_pic_enable_intr(dev, isrc); +} + +static void +mtk_pic_post_filter(device_t dev, struct intr_irqsrc *isrc) +{ +} + +static device_method_t mtk_pic_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, mtk_pic_probe), + DEVMETHOD(device_attach, mtk_pic_attach), + /* Interrupt controller interface */ + DEVMETHOD(pic_disable_intr, mtk_pic_disable_intr), + DEVMETHOD(pic_enable_intr, mtk_pic_enable_intr), + DEVMETHOD(pic_map_intr, mtk_pic_map_intr), + DEVMETHOD(pic_post_filter, mtk_pic_post_filter), + DEVMETHOD(pic_post_ithread, mtk_pic_post_ithread), + DEVMETHOD(pic_pre_ithread, mtk_pic_pre_ithread), + { 0, 0 } +}; + +static driver_t mtk_pic_driver = { + "intc", + mtk_pic_methods, + sizeof(struct mtk_pic_softc), +}; + +static devclass_t mtk_pic_devclass; + +EARLY_DRIVER_MODULE(intc_v2, simplebus, mtk_pic_driver, mtk_pic_devclass, 0, 0, + BUS_PASS_INTERRUPT + BUS_PASS_ORDER_MIDDLE); From dc0996af4ef1ad8a1716b48e2fdb493dd6483250 Mon Sep 17 00:00:00 2001 From: Stanislav Galabov Date: Thu, 7 Apr 2016 11:16:32 +0000 Subject: [PATCH 037/159] Initial import of Ralink/Mediatek MIPS SoC support #4 UART drivers. - uart_dev_mtk.[ch] are the old-style Mediatek/Ralink-specific UART driver as also found in sys/mips/rt305x/uart_dev_rt305x.c, with minor improvements and FDT attachment enabled for the appropriate SoCs. - uart_dev_mtk_ns8250.c is the new-style ns16550a-compatible UART driver found in newer Mediatek SoCs. It uses the uart_dev_ns8250.c driver indirectly and is basically just a wrapper around it and only overrides its probe method. The reason I am not using the uart_dev_ns8250.c driver directly is because I have some code that does UART clock detection before initializing the UART, so that we don't need to hard-code the UART clock frequency in the dts files for each board. Approved by: adrian (mentor) Sponsored by: Smartcom - Bulgaria AD Differential Revision: https://reviews.freebsd.org/D5840 --- sys/mips/mediatek/uart_dev_mtk.c | 552 ++++++++++++++++++++++++ sys/mips/mediatek/uart_dev_mtk.h | 126 ++++++ sys/mips/mediatek/uart_dev_mtk_ns8250.c | 113 +++++ 3 files changed, 791 insertions(+) create mode 100644 sys/mips/mediatek/uart_dev_mtk.c create mode 100644 sys/mips/mediatek/uart_dev_mtk.h create mode 100644 sys/mips/mediatek/uart_dev_mtk_ns8250.c diff --git a/sys/mips/mediatek/uart_dev_mtk.c b/sys/mips/mediatek/uart_dev_mtk.c new file mode 100644 index 00000000000..5993cb60777 --- /dev/null +++ b/sys/mips/mediatek/uart_dev_mtk.c @@ -0,0 +1,552 @@ +/* $NetBSD: uart.c,v 1.2 2007/03/23 20:05:47 dogcow Exp $ */ + +/*- + * Copyright (c) 2013, Alexander A. Mityaev + * Copyright (c) 2010 Aleksandr Rybalko. + * Copyright (c) 2007 Ruslan Ermilov and Vsevolod Lobko. + * Copyright (c) 2007 Oleksandr Tymoshenko. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_ddb.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include + +#include "uart_if.h" + +/* Set some reference clock value. Real value will be taken from FDT */ +#define DEFAULT_RCLK (120 * 1000 * 1000) + +/* + * Low-level UART interface. + */ +static int mtk_uart_probe(struct uart_bas *bas); +static void mtk_uart_init(struct uart_bas *bas, int, int, int, int); +static void mtk_uart_term(struct uart_bas *bas); +static void mtk_uart_putc(struct uart_bas *bas, int); +static int mtk_uart_rxready(struct uart_bas *bas); +static int mtk_uart_getc(struct uart_bas *bas, struct mtx *); + +static struct uart_ops uart_mtk_ops = { + .probe = mtk_uart_probe, + .init = mtk_uart_init, + .term = mtk_uart_term, + .putc = mtk_uart_putc, + .rxready = mtk_uart_rxready, + .getc = mtk_uart_getc, +}; + +static int uart_output = 1; +TUNABLE_INT("kern.uart_output", &uart_output); +SYSCTL_INT(_kern, OID_AUTO, uart_output, CTLFLAG_RW, + &uart_output, 0, "UART output enabled."); + +static int +mtk_uart_probe(struct uart_bas *bas) +{ + return (0); +} + +static void +mtk_uart_init(struct uart_bas *bas, int baudrate, int databits, + int stopbits, int parity) +{ + /* CLKDIV = 384000000/ 3/ 16/ br */ + /* for 384MHz CLKDIV = 8000000 / baudrate; */ + switch (databits) { + case 5: + databits = UART_LCR_5B; + break; + case 6: + databits = UART_LCR_6B; + break; + case 7: + databits = UART_LCR_7B; + break; + case 8: + databits = UART_LCR_8B; + break; + default: + /* Unsupported */ + return; + } + switch (parity) { + case UART_PARITY_EVEN: parity = (UART_LCR_PEN|UART_LCR_EVEN); break; + case UART_PARITY_ODD: parity = (UART_LCR_PEN); break; + case UART_PARITY_NONE: parity = 0; break; + /* Unsupported */ + default: return; + } + + if (bas->rclk && baudrate) { + uart_setreg(bas, UART_CDDL_REG, bas->rclk/16/baudrate); + uart_barrier(bas); + } + + uart_setreg(bas, UART_LCR_REG, databits | + (stopbits==1?0:UART_LCR_STB_15) | + parity); + uart_barrier(bas); +} + +static void +mtk_uart_term(struct uart_bas *bas) +{ + uart_setreg(bas, UART_MCR_REG, 0); + uart_barrier(bas); +} + +static void +mtk_uart_putc(struct uart_bas *bas, int c) +{ + char chr; + if (!uart_output) return; + chr = c; + while (!(uart_getreg(bas, UART_LSR_REG) & UART_LSR_THRE)); + uart_setreg(bas, UART_TX_REG, c); + uart_barrier(bas); + while (!(uart_getreg(bas, UART_LSR_REG) & UART_LSR_THRE)); +} + +static int +mtk_uart_rxready(struct uart_bas *bas) +{ + if (uart_getreg(bas, UART_LSR_REG) & UART_LSR_DR) + return (1); + return (0); +} + +static int +mtk_uart_getc(struct uart_bas *bas, struct mtx *hwmtx) +{ + int c; + + uart_lock(hwmtx); + + while (!(uart_getreg(bas, UART_LSR_REG) & UART_LSR_DR)) { + uart_unlock(hwmtx); + DELAY(10); + uart_lock(hwmtx); + } + + c = uart_getreg(bas, UART_RX_REG); + + uart_unlock(hwmtx); + + return (c); +} + +/* + * High-level UART interface. + */ +struct uart_mtk_softc { + struct uart_softc base; + uint8_t ier_mask; + uint8_t ier; +}; + +static int mtk_uart_bus_attach(struct uart_softc *); +static int mtk_uart_bus_detach(struct uart_softc *); +static int mtk_uart_bus_flush(struct uart_softc *, int); +static int mtk_uart_bus_getsig(struct uart_softc *); +static int mtk_uart_bus_ioctl(struct uart_softc *, int, intptr_t); +static int mtk_uart_bus_ipend(struct uart_softc *); +static int mtk_uart_bus_param(struct uart_softc *, int, int, int, int); +static int mtk_uart_bus_probe(struct uart_softc *); +static int mtk_uart_bus_receive(struct uart_softc *); +static int mtk_uart_bus_setsig(struct uart_softc *, int); +static int mtk_uart_bus_transmit(struct uart_softc *); +static void mtk_uart_bus_grab(struct uart_softc *); +static void mtk_uart_bus_ungrab(struct uart_softc *); + +static kobj_method_t uart_mtk_methods[] = { + KOBJMETHOD(uart_attach, mtk_uart_bus_attach), + KOBJMETHOD(uart_detach, mtk_uart_bus_detach), + KOBJMETHOD(uart_flush, mtk_uart_bus_flush), + KOBJMETHOD(uart_getsig, mtk_uart_bus_getsig), + KOBJMETHOD(uart_ioctl, mtk_uart_bus_ioctl), + KOBJMETHOD(uart_ipend, mtk_uart_bus_ipend), + KOBJMETHOD(uart_param, mtk_uart_bus_param), + KOBJMETHOD(uart_probe, mtk_uart_bus_probe), + KOBJMETHOD(uart_receive, mtk_uart_bus_receive), + KOBJMETHOD(uart_setsig, mtk_uart_bus_setsig), + KOBJMETHOD(uart_transmit, mtk_uart_bus_transmit), + KOBJMETHOD(uart_grab, mtk_uart_bus_grab), + KOBJMETHOD(uart_ungrab, mtk_uart_bus_ungrab), + { 0, 0 } +}; + +struct uart_class uart_mtk_class = { + "uart_mtk", + uart_mtk_methods, + sizeof(struct uart_mtk_softc), + .uc_ops = &uart_mtk_ops, + .uc_range = 1, /* use hinted range */ + .uc_rclk = 0 +}; + +static struct ofw_compat_data compat_data[] = { + { "ralink,rt2880-uart", (uintptr_t)&uart_mtk_class }, + { "ralink,rt3050-uart", (uintptr_t)&uart_mtk_class }, + { "ralink,rt3352-uart", (uintptr_t)&uart_mtk_class }, + { "ralink,rt3883-uart", (uintptr_t)&uart_mtk_class }, + { "ralink,rt5350-uart", (uintptr_t)&uart_mtk_class }, + { "ralink,mt7620a-uart", (uintptr_t)&uart_mtk_class }, + { NULL, (uintptr_t)NULL }, +}; +UART_FDT_CLASS_AND_DEVICE(compat_data); + + +#define SIGCHG(c, i, s, d) \ + if (c) { \ + i |= (i & s) ? s : s | d; \ + } else { \ + i = (i & s) ? (i & ~s) | d : i; \ + } + +/* + * Disable TX interrupt. uart should be locked + */ +static __inline void +mtk_uart_disable_txintr(struct uart_softc *sc) +{ + struct uart_bas *bas = &sc->sc_bas; + uint8_t cr; + + cr = uart_getreg(bas, UART_IER_REG); + cr &= ~UART_IER_ETBEI; + uart_setreg(bas, UART_IER_REG, cr); + uart_barrier(bas); +} + +/* + * Enable TX interrupt. uart should be locked + */ +static __inline void +mtk_uart_enable_txintr(struct uart_softc *sc) +{ + struct uart_bas *bas = &sc->sc_bas; + uint8_t cr; + + cr = uart_getreg(bas, UART_IER_REG); + cr |= UART_IER_ETBEI; + uart_setreg(bas, UART_IER_REG, cr); + uart_barrier(bas); +} + +static int +mtk_uart_bus_attach(struct uart_softc *sc) +{ + struct uart_bas *bas; + struct uart_devinfo *di; + struct uart_mtk_softc *usc = (struct uart_mtk_softc *)sc; + + bas = &sc->sc_bas; + + if (!bas->rclk) { + bas->rclk = mtk_soc_get_uartclk(); + } + + if (sc->sc_sysdev != NULL) { + di = sc->sc_sysdev; + mtk_uart_init(bas, di->baudrate, di->databits, di->stopbits, + di->parity); + } else { + mtk_uart_init(bas, 57600, 8, 1, 0); + } + + sc->sc_rxfifosz = 16; + sc->sc_txfifosz = 16; + + (void)mtk_uart_bus_getsig(sc); + + /* Enable FIFO */ + uart_setreg(bas, UART_FCR_REG, + uart_getreg(bas, UART_FCR_REG) | + UART_FCR_FIFOEN | UART_FCR_TXTGR_1 | UART_FCR_RXTGR_1); + uart_barrier(bas); + /* Enable interrupts */ + usc->ier_mask = 0xf0; + uart_setreg(bas, UART_IER_REG, + UART_IER_EDSSI | UART_IER_ELSI | UART_IER_ERBFI); + uart_barrier(bas); + + return (0); +} + +static int +mtk_uart_bus_detach(struct uart_softc *sc) +{ + return (0); +} + +static int +mtk_uart_bus_flush(struct uart_softc *sc, int what) +{ + struct uart_bas *bas = &sc->sc_bas; + uint32_t fcr = uart_getreg(bas, UART_FCR_REG); + + if (what & UART_FLUSH_TRANSMITTER) { + uart_setreg(bas, UART_FCR_REG, fcr|UART_FCR_TXRST); + uart_barrier(bas); + } + if (what & UART_FLUSH_RECEIVER) { + uart_setreg(bas, UART_FCR_REG, fcr|UART_FCR_RXRST); + uart_barrier(bas); + } + uart_setreg(bas, UART_FCR_REG, fcr); + uart_barrier(bas); + return (0); +} + +static int +mtk_uart_bus_getsig(struct uart_softc *sc) +{ + uint32_t new, old, sig; + uint8_t bes; + + return(0); + do { + old = sc->sc_hwsig; + sig = old; + uart_lock(sc->sc_hwmtx); + bes = uart_getreg(&sc->sc_bas, UART_MSR_REG); + uart_unlock(sc->sc_hwmtx); + /* XXX: chip can show delta */ + SIGCHG(bes & UART_MSR_CTS, sig, SER_CTS, SER_DCTS); + SIGCHG(bes & UART_MSR_DCD, sig, SER_DCD, SER_DDCD); + SIGCHG(bes & UART_MSR_DSR, sig, SER_DSR, SER_DDSR); + new = sig & ~SER_MASK_DELTA; + } while (!atomic_cmpset_32(&sc->sc_hwsig, old, new)); + + return (sig); +} + +static int +mtk_uart_bus_ioctl(struct uart_softc *sc, int request, intptr_t data) +{ + struct uart_bas *bas; + int baudrate, divisor, error; + + bas = &sc->sc_bas; + error = 0; + uart_lock(sc->sc_hwmtx); + switch (request) { + case UART_IOCTL_BREAK: + /* TODO: Send BREAK */ + break; + case UART_IOCTL_BAUD: + divisor = uart_getreg(bas, UART_CDDL_REG); + baudrate = bas->rclk / (divisor * 16); + *(int*)data = baudrate; + break; + default: + error = EINVAL; + break; + } + uart_unlock(sc->sc_hwmtx); + return (error); +} + +static int +mtk_uart_bus_ipend(struct uart_softc *sc) +{ + struct uart_bas *bas; + int ipend; + uint8_t iir, lsr, msr; + +// breakpoint(); + + bas = &sc->sc_bas; + ipend = 0; + + uart_lock(sc->sc_hwmtx); + iir = uart_getreg(&sc->sc_bas, UART_IIR_REG); + lsr = uart_getreg(&sc->sc_bas, UART_LSR_REG); + uart_setreg(&sc->sc_bas, UART_LSR_REG, lsr); + msr = uart_getreg(&sc->sc_bas, UART_MSR_REG); + uart_setreg(&sc->sc_bas, UART_MSR_REG, msr); + if (iir & UART_IIR_INTP) { + uart_unlock(sc->sc_hwmtx); + return (0); + } + switch ((iir >> 1) & 0x07) { + case UART_IIR_ID_THRE: + ipend |= SER_INT_TXIDLE; + break; + case UART_IIR_ID_DR2: + mtk_uart_bus_flush(sc, UART_FLUSH_RECEIVER); + /* passthrough */ + case UART_IIR_ID_DR: + ipend |= SER_INT_RXREADY; + break; + case UART_IIR_ID_MST: + case UART_IIR_ID_LINESTATUS: + ipend |= SER_INT_SIGCHG; + if (lsr & UART_LSR_BI) + ipend |= SER_INT_BREAK; + if (lsr & UART_LSR_OE) + ipend |= SER_INT_OVERRUN; + break; + default: + /* XXX: maybe return error here */ + break; + } + + uart_unlock(sc->sc_hwmtx); + + return (ipend); +} + +static int +mtk_uart_bus_param(struct uart_softc *sc, int baudrate, int databits, + int stopbits, int parity) +{ + uart_lock(sc->sc_hwmtx); + mtk_uart_init(&sc->sc_bas, baudrate, databits, stopbits, parity); + uart_unlock(sc->sc_hwmtx); + return (0); +} + +static int +mtk_uart_bus_probe(struct uart_softc *sc) +{ + int error; + + error = mtk_uart_probe(&sc->sc_bas); + if (error) + return (error); + + device_set_desc(sc->sc_dev, "MTK UART Controller"); + + return (0); +} + +static int +mtk_uart_bus_receive(struct uart_softc *sc) +{ + struct uart_bas *bas; + int xc; + uint8_t lsr; + + bas = &sc->sc_bas; + uart_lock(sc->sc_hwmtx); + lsr = uart_getreg(bas, UART_LSR_REG); + while ((lsr & UART_LSR_DR)) { + if (uart_rx_full(sc)) { + sc->sc_rxbuf[sc->sc_rxput] = UART_STAT_OVERRUN; + break; + } + xc = 0; + xc = uart_getreg(bas, UART_RX_REG); + if (lsr & UART_LSR_FE) + xc |= UART_STAT_FRAMERR; + if (lsr & UART_LSR_PE) + xc |= UART_STAT_PARERR; + if (lsr & UART_LSR_OE) + xc |= UART_STAT_OVERRUN; + uart_barrier(bas); + uart_rx_put(sc, xc); + lsr = uart_getreg(bas, UART_LSR_REG); + } + + uart_unlock(sc->sc_hwmtx); + return (0); +} + +static int +mtk_uart_bus_setsig(struct uart_softc *sc, int sig) +{ + /* TODO: implement (?) */ + return (sig); +} + +static int +mtk_uart_bus_transmit(struct uart_softc *sc) +{ + struct uart_bas *bas = &sc->sc_bas; + int i; + + if (!uart_output) return (0); + + bas = &sc->sc_bas; + uart_lock(sc->sc_hwmtx); + while ((uart_getreg(bas, UART_LSR_REG) & UART_LSR_THRE) == 0); + mtk_uart_enable_txintr(sc); + for (i = 0; i < sc->sc_txdatasz; i++) { + uart_setreg(bas, UART_TX_REG, sc->sc_txbuf[i]); + uart_barrier(bas); + } + sc->sc_txbusy = 1; + uart_unlock(sc->sc_hwmtx); + return (0); +} + +void +mtk_uart_bus_grab(struct uart_softc *sc) +{ + struct uart_bas *bas = &sc->sc_bas; + struct uart_mtk_softc *usc = (struct uart_mtk_softc *)sc; + + uart_lock(sc->sc_hwmtx); + usc->ier = uart_getreg(bas, UART_IER_REG); + uart_setreg(bas, UART_IER_REG, usc->ier & usc->ier_mask); + uart_barrier(bas); + uart_unlock(sc->sc_hwmtx); +} + +void +mtk_uart_bus_ungrab(struct uart_softc *sc) +{ + struct uart_mtk_softc *usc = (struct uart_mtk_softc *)sc; + struct uart_bas *bas = &sc->sc_bas; + + uart_lock(sc->sc_hwmtx); + uart_setreg(bas, UART_IER_REG, usc->ier); + uart_barrier(bas); + uart_unlock(sc->sc_hwmtx); +} diff --git a/sys/mips/mediatek/uart_dev_mtk.h b/sys/mips/mediatek/uart_dev_mtk.h new file mode 100644 index 00000000000..44fcdd82c78 --- /dev/null +++ b/sys/mips/mediatek/uart_dev_mtk.h @@ -0,0 +1,126 @@ +/*- + * Copyright (c) 2010 Aleksandr Rybalko. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * 3. The names of the authors may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * $FreeBSD$ + */ +#ifndef _MTKUART_H +#define _MTKUART_H + +#undef uart_getreg +#undef uart_setreg +#define uart_getreg(bas, reg) \ + bus_space_read_4((bas)->bst, (bas)->bsh, reg) +#define uart_setreg(bas, reg, value) \ + bus_space_write_4((bas)->bst, (bas)->bsh, reg, value) + +/* UART registers */ +#define UART_RX_REG 0x00 +#define UART_TX_REG 0x04 + +#define UART_IER_REG 0x08 +#define UART_IER_EDSSI (1<<3) /* Only full UART */ +#define UART_IER_ELSI (1<<2) +#define UART_IER_ETBEI (1<<1) +#define UART_IER_ERBFI (1<<0) + +#define UART_IIR_REG 0x0c +#define UART_IIR_RXFIFO (1<<7) +#define UART_IIR_TXFIFO (1<<6) +#define UART_IIR_ID_MST 0 +#define UART_IIR_ID_THRE 1 +#define UART_IIR_ID_DR 2 +#define UART_IIR_ID_LINESTATUS 3 +#define UART_IIR_ID_DR2 6 +#define UART_IIR_ID_SHIFT 1 +#define UART_IIR_ID_MASK 0x0000000e +#define UART_IIR_INTP (1<<0) + +#define UART_FCR_REG 0x10 +#define UART_FCR_RXTGR_1 (0<<6) +#define UART_FCR_RXTGR_4 (1<<6) +#define UART_FCR_RXTGR_8 (2<<6) +#define UART_FCR_RXTGR_12 (3<<6) +#define UART_FCR_TXTGR_1 (0<<4) +#define UART_FCR_TXTGR_4 (1<<4) +#define UART_FCR_TXTGR_8 (2<<4) +#define UART_FCR_TXTGR_12 (3<<4) +#define UART_FCR_DMA (1<<3) +#define UART_FCR_TXRST (1<<2) +#define UART_FCR_RXRST (1<<1) +#define UART_FCR_FIFOEN (1<<0) + +#define UART_LCR_REG 0x14 +#define UART_LCR_DLAB (1<<7) +#define UART_LCR_BRK (1<<6) +#define UART_LCR_FPAR (1<<5) +#define UART_LCR_EVEN (1<<4) +#define UART_LCR_PEN (1<<3) +#define UART_LCR_STB_15 (1<<2) +#define UART_LCR_5B 0 +#define UART_LCR_6B 1 +#define UART_LCR_7B 2 +#define UART_LCR_8B 3 + +#define UART_MCR_REG 0x18 +#define UART_MCR_LOOP (1<<4) +#define UART_MCR_OUT2_L (1<<3) /* Only full UART */ +#define UART_MCR_OUT1_L (1<<2) /* Only full UART */ +#define UART_MCR_RTS_L (1<<1) /* Only full UART */ +#define UART_MCR_DTR_L (1<<0) /* Only full UART */ + +#define UART_LSR_REG 0x1c +#define UART_LSR_ERINF (1<<7) +#define UART_LSR_TEMT (1<<6) +#define UART_LSR_THRE (1<<5) +#define UART_LSR_BI (1<<4) +#define UART_LSR_FE (1<<3) +#define UART_LSR_PE (1<<2) +#define UART_LSR_OE (1<<1) +#define UART_LSR_DR (1<<0) + +#define UART_MSR_REG 0x20 /* Only full UART */ +#define UART_MSR_DCD (1<<7) /* Only full UART */ +#define UART_MSR_RI (1<<6) /* Only full UART */ +#define UART_MSR_DSR (1<<5) /* Only full UART */ +#define UART_MSR_CTS (1<<4) /* Only full UART */ +#define UART_MSR_DDCD (1<<3) /* Only full UART */ +#define UART_MSR_TERI (1<<2) /* Only full UART */ +#define UART_MSR_DDSR (1<<1) /* Only full UART */ +#define UART_MSR_DCTS (1<<0) /* Only full UART */ + +#define UART_CDDL_REG 0x28 +#define UART_CDDLL_REG 0x2c +#define UART_CDDLH_REG 0x30 + +#define UART_IFCTL_REG 0x34 +#define UART_IFCTL_IFCTL (1<<0) + +int uart_cnattach(void); +#endif /* _MTKUART_H */ diff --git a/sys/mips/mediatek/uart_dev_mtk_ns8250.c b/sys/mips/mediatek/uart_dev_mtk_ns8250.c new file mode 100644 index 00000000000..3c259ffd2c9 --- /dev/null +++ b/sys/mips/mediatek/uart_dev_mtk_ns8250.c @@ -0,0 +1,113 @@ +/*- + * Copyright (c) 2013 Ian Lepore + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "opt_platform.h" + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "uart_if.h" + +/* + * High-level UART interface. + */ +static struct uart_class uart_mtk_ns8250_class; +static int mtk_ns8250_bus_probe(struct uart_softc *); + +static kobj_method_t mtk_ns8250_methods[] = { + KOBJMETHOD(uart_probe, mtk_ns8250_bus_probe), + + KOBJMETHOD(uart_attach, ns8250_bus_attach), + KOBJMETHOD(uart_detach, ns8250_bus_detach), + KOBJMETHOD(uart_flush, ns8250_bus_flush), + KOBJMETHOD(uart_getsig, ns8250_bus_getsig), + KOBJMETHOD(uart_ioctl, ns8250_bus_ioctl), + KOBJMETHOD(uart_ipend, ns8250_bus_ipend), + KOBJMETHOD(uart_param, ns8250_bus_param), + KOBJMETHOD(uart_receive, ns8250_bus_receive), + KOBJMETHOD(uart_setsig, ns8250_bus_setsig), + KOBJMETHOD(uart_transmit, ns8250_bus_transmit), + KOBJMETHOD_END +}; + +static struct uart_class uart_mtk_ns8250_class = { + "mtk8250", + mtk_ns8250_methods, + sizeof(struct ns8250_softc), + .uc_ops = &uart_ns8250_ops, + .uc_range = 1, /* use hinted range */ + .uc_rclk = 0, + .uc_rshift = 2 +}; + +static struct ofw_compat_data compat_data[] = { + { "mtk,ns16550a", (uintptr_t)&uart_mtk_ns8250_class }, + { "ns16550a", (uintptr_t)&uart_mtk_ns8250_class }, + { NULL, (uintptr_t)NULL }, +}; +UART_FDT_CLASS_AND_DEVICE(compat_data); + +static int +mtk_ns8250_bus_probe(struct uart_softc *sc) +{ + int status; + + if (!ofw_bus_status_okay(sc->sc_dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(sc->sc_dev, compat_data)->ocd_data == + (uintptr_t)NULL) + return (ENXIO); + + sc->sc_bas.rclk = mtk_soc_get_uartclk(); + + status = ns8250_bus_probe(sc); + if (status == 0) + device_set_desc(sc->sc_dev, "MTK UART Controller (ns16550a)"); + + return (status); +} From d09031f52877dca523cafe9facefe75231b92e50 Mon Sep 17 00:00:00 2001 From: Stanislav Galabov Date: Thu, 7 Apr 2016 11:20:03 +0000 Subject: [PATCH 038/159] Initial import of Ralink/Mediatek MIPS SoC support #5 USB support This revision adds USB (EHCI/OHCI/OTG, depending on SoC type) support for various Ralink/Mediatek SoCs. Currently USB is not supported on MT7621, this will be a future addition. A USB PHY driver is also included, so that we can properly initialize the USB PHY (e.g., clocks, resets, registers where needed), before attempting to initialize EHCI/OHCI/OTG functionality. Approved by: adrian (mentor) Sponsored by: Smartcom - Bulgaria AD Differential Revision: https://reviews.freebsd.org/D5841 --- sys/mips/mediatek/mtk_dotg.c | 220 ++++++++++++++++++++++ sys/mips/mediatek/mtk_ehci.c | 223 +++++++++++++++++++++++ sys/mips/mediatek/mtk_ohci.c | 223 +++++++++++++++++++++++ sys/mips/mediatek/mtk_usb_phy.c | 314 ++++++++++++++++++++++++++++++++ sys/mips/mediatek/mtk_usb_phy.h | 66 +++++++ 5 files changed, 1046 insertions(+) create mode 100644 sys/mips/mediatek/mtk_dotg.c create mode 100644 sys/mips/mediatek/mtk_ehci.c create mode 100644 sys/mips/mediatek/mtk_ohci.c create mode 100644 sys/mips/mediatek/mtk_usb_phy.c create mode 100644 sys/mips/mediatek/mtk_usb_phy.h diff --git a/sys/mips/mediatek/mtk_dotg.c b/sys/mips/mediatek/mtk_dotg.c new file mode 100644 index 00000000000..d7421ad9535 --- /dev/null +++ b/sys/mips/mediatek/mtk_dotg.c @@ -0,0 +1,220 @@ +#include +__FBSDID("$FreeBSD$"); + +/*- + * Copyright (c) 2015-2016 Stanislav Galabov. All rights reserved. + * Copyright (c) 2010,2011 Aleksandr Rybalko. All rights reserved. + * Copyright (c) 2007-2008 Hans Petter Selasky. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include + +#include +#include +#include + +#define MEM_RID 0 + +static device_probe_t dotg_fdt_probe; +static device_attach_t dotg_fdt_attach; +static device_detach_t dotg_fdt_detach; + +static int +dotg_fdt_probe(device_t dev) +{ + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (!ofw_bus_is_compatible(dev, "ralink,rt3050-otg")) + return (ENXIO); + + device_set_desc(dev, "MTK DWC-OTG USB Controller"); + return (0); +} + +static int +dotg_fdt_attach(device_t dev) +{ + struct dwc_otg_softc *sc = device_get_softc(dev); + int err, rid; + + /* setup controller interface softc */ + + /* initialise some bus fields */ + sc->sc_mode = DWC_MODE_HOST; + sc->sc_bus.parent = dev; + sc->sc_bus.devices = sc->sc_devices; + sc->sc_bus.devices_max = DWC_OTG_MAX_DEVICES; + sc->sc_bus.dma_bits = 32; + + /* get all DMA memory */ + if (usb_bus_mem_alloc_all(&sc->sc_bus, + USB_GET_DMA_TAG(dev), NULL)) { + printf("No mem\n"); + return (ENOMEM); + } + rid = 0; + sc->sc_io_res = + bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, RF_ACTIVE); + if (!(sc->sc_io_res)) { + printf("Can`t alloc MEM\n"); + goto error; + } + sc->sc_io_tag = rman_get_bustag(sc->sc_io_res); + sc->sc_io_hdl = rman_get_bushandle(sc->sc_io_res); + sc->sc_io_size = rman_get_size(sc->sc_io_res); + + rid = 0; + sc->sc_irq_res = bus_alloc_resource_any(dev, SYS_RES_IRQ, + &rid, RF_ACTIVE); + if (!(sc->sc_irq_res)) { + printf("Can`t alloc IRQ\n"); + goto error; + } + + sc->sc_bus.bdev = device_add_child(dev, "usbus", -1); + if (!(sc->sc_bus.bdev)) { + printf("Can`t add usbus\n"); + goto error; + } + device_set_ivars(sc->sc_bus.bdev, &sc->sc_bus); + + err = bus_setup_intr(dev, sc->sc_irq_res, + INTR_TYPE_TTY | INTR_MPSAFE, dwc_otg_filter_interrupt, + dwc_otg_interrupt, sc, &sc->sc_intr_hdl); + if (err) { + sc->sc_intr_hdl = NULL; + printf("Can`t set IRQ handle\n"); + goto error; + } + + err = dwc_otg_init(sc); + if (err) printf("dotg_init fail\n"); + if (!err) { + err = device_probe_and_attach(sc->sc_bus.bdev); + if (err) printf("device_probe_and_attach fail %d\n", err); + } + if (err) { + goto error; + } + return (0); + +error: + dotg_fdt_detach(dev); + return (ENXIO); +} + +static int +dotg_fdt_detach(device_t dev) +{ + struct dwc_otg_softc *sc = device_get_softc(dev); + device_t bdev; + int err; + + if (sc->sc_bus.bdev) { + bdev = sc->sc_bus.bdev; + device_detach(bdev); + device_delete_child(dev, bdev); + } + /* during module unload there are lots of children leftover */ + device_delete_children(dev); + + if (sc->sc_irq_res && sc->sc_intr_hdl) { + /* + * only call dotg_fdt_uninit() after dotg_fdt_init() + */ + dwc_otg_uninit(sc); + + err = bus_teardown_intr(dev, sc->sc_irq_res, + sc->sc_intr_hdl); + sc->sc_intr_hdl = NULL; + } + if (sc->sc_irq_res) { + bus_release_resource(dev, SYS_RES_IRQ, 0, + sc->sc_irq_res); + sc->sc_irq_res = NULL; + } + if (sc->sc_io_res) { + bus_release_resource(dev, SYS_RES_MEMORY, 0, + sc->sc_io_res); + sc->sc_io_res = NULL; + } + usb_bus_mem_free_all(&sc->sc_bus, NULL); + + return (0); +} + +static device_method_t dotg_fdt_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, dotg_fdt_probe), + DEVMETHOD(device_attach, dotg_fdt_attach), + DEVMETHOD(device_detach, dotg_fdt_detach), + DEVMETHOD(device_suspend, bus_generic_suspend), + DEVMETHOD(device_resume, bus_generic_resume), + DEVMETHOD(device_shutdown, bus_generic_shutdown), + + DEVMETHOD_END +}; + +static driver_t dotg_fdt_driver = { + .name = "dwcotg", + .methods = dotg_fdt_methods, + .size = sizeof(struct dwc_otg_softc), +}; + +static devclass_t dotg_fdt_devclass; + +DRIVER_MODULE(dotg, simplebus, dotg_fdt_driver, dotg_fdt_devclass, 0, 0); diff --git a/sys/mips/mediatek/mtk_ehci.c b/sys/mips/mediatek/mtk_ehci.c new file mode 100644 index 00000000000..109a32a8841 --- /dev/null +++ b/sys/mips/mediatek/mtk_ehci.c @@ -0,0 +1,223 @@ +#include +__FBSDID("$FreeBSD$"); + +/*- + * Copyright (c) 2015 Stanislav Galabov. All rights reserved. + * Copyright (c) 2010,2011 Aleksandr Rybalko. All rights reserved. + * Copyright (c) 2007-2008 Hans Petter Selasky. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include + +#include +#include +#include + +#define EHCI_HC_DEVSTR "MTK USB 2.0 Controller" + +static device_probe_t ehci_fdt_probe; +static device_attach_t ehci_fdt_attach; +static device_detach_t ehci_fdt_detach; + +static int +ehci_fdt_probe(device_t self) +{ + + if (!ofw_bus_status_okay(self)) + return (ENXIO); + + if (!ofw_bus_is_compatible(self, "ralink,rt3xxx-ehci")) + return (ENXIO); + + device_set_desc(self, EHCI_HC_DEVSTR); + + return (BUS_PROBE_DEFAULT); +} + +static int +ehci_fdt_attach(device_t self) +{ + ehci_softc_t *sc = device_get_softc(self); + int err; + int rid; + + /* initialise some bus fields */ + sc->sc_bus.parent = self; + sc->sc_bus.devices = sc->sc_devices; + sc->sc_bus.devices_max = EHCI_MAX_DEVICES; + sc->sc_bus.dma_bits = 32; + + /* get all DMA memory */ + if (usb_bus_mem_alloc_all(&sc->sc_bus, + USB_GET_DMA_TAG(self), &ehci_iterate_hw_softc)) { + printf("No mem\n"); + return (ENOMEM); + } + + rid = 0; + sc->sc_io_res = bus_alloc_resource_any(self, SYS_RES_MEMORY, &rid, + RF_ACTIVE); + if (!sc->sc_io_res) { + device_printf(self, "Could not map memory\n"); + goto error; + } + sc->sc_io_tag = rman_get_bustag(sc->sc_io_res); + sc->sc_io_hdl = rman_get_bushandle(sc->sc_io_res); + sc->sc_io_size = rman_get_size(sc->sc_io_res); + + rid = 0; + sc->sc_irq_res = bus_alloc_resource_any(self, SYS_RES_IRQ, &rid, + RF_SHAREABLE | RF_ACTIVE); + if (sc->sc_irq_res == NULL) { + device_printf(self, "Could not allocate irq\n"); + goto error; + } + + sc->sc_bus.bdev = device_add_child(self, "usbus", -1); + if (!(sc->sc_bus.bdev)) { + device_printf(self, "Could not add USB device\n"); + goto error; + } + device_set_ivars(sc->sc_bus.bdev, &sc->sc_bus); + device_set_desc(sc->sc_bus.bdev, EHCI_HC_DEVSTR); + + sprintf(sc->sc_vendor, "MediaTek"); + + err = bus_setup_intr(self, sc->sc_irq_res, INTR_TYPE_BIO | INTR_MPSAFE, + NULL, (driver_intr_t *)ehci_interrupt, sc, &sc->sc_intr_hdl); + if (err) { + device_printf(self, "Could not setup irq, %d\n", err); + sc->sc_intr_hdl = NULL; + goto error; + } + + err = ehci_init(sc); + if (!err) { + err = device_probe_and_attach(sc->sc_bus.bdev); + } + if (err) { + device_printf(self, "USB init failed err=%d\n", err); + goto error; + } + return (0); + +error: + ehci_fdt_detach(self); + return (ENXIO); +} + +static int +ehci_fdt_detach(device_t self) +{ + ehci_softc_t *sc = device_get_softc(self); + device_t bdev; + int err; + + if (sc->sc_bus.bdev) { + bdev = sc->sc_bus.bdev; + device_detach(bdev); + device_delete_child(self, bdev); + } + /* during module unload there are lots of children leftover */ + device_delete_children(self); + + if (sc->sc_irq_res && sc->sc_intr_hdl) { + /* + * only call ehci_detach() after ehci_init() + */ + ehci_detach(sc); + + err = bus_teardown_intr(self, sc->sc_irq_res, sc->sc_intr_hdl); + if (err) + device_printf(self, "Could not tear down irq, %d\n", + err); + sc->sc_intr_hdl = NULL; + } + if (sc->sc_irq_res) { + bus_release_resource(self, SYS_RES_IRQ, 0, + sc->sc_irq_res); + sc->sc_irq_res = NULL; + } + if (sc->sc_io_res) { + bus_release_resource(self, SYS_RES_MEMORY, 0, + sc->sc_io_res); + sc->sc_io_res = NULL; + } + usb_bus_mem_free_all(&sc->sc_bus, &ehci_iterate_hw_softc); + + return (0); +} + +static device_method_t ehci_fdt_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, ehci_fdt_probe), + DEVMETHOD(device_attach, ehci_fdt_attach), + DEVMETHOD(device_detach, ehci_fdt_detach), + DEVMETHOD(device_suspend, bus_generic_suspend), + DEVMETHOD(device_resume, bus_generic_resume), + DEVMETHOD(device_shutdown, bus_generic_shutdown), + + DEVMETHOD_END +}; + +static driver_t ehci_fdt_driver = { + .name = "ehci", + .methods = ehci_fdt_methods, + .size = sizeof(ehci_softc_t), +}; + +static devclass_t ehci_fdt_devclass; + +DRIVER_MODULE(ehci, simplebus, ehci_fdt_driver, ehci_fdt_devclass, 0, 0); diff --git a/sys/mips/mediatek/mtk_ohci.c b/sys/mips/mediatek/mtk_ohci.c new file mode 100644 index 00000000000..91c98cebdda --- /dev/null +++ b/sys/mips/mediatek/mtk_ohci.c @@ -0,0 +1,223 @@ +#include +__FBSDID("$FreeBSD$"); + +/*- + * Copyright (c) 2015 Stanislav Galabov. All rights reserved. + * Copyright (c) 2010,2011 Aleksandr Rybalko. All rights reserved. + * Copyright (c) 2007-2008 Hans Petter Selasky. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include + +#include +#include +#include + +#define OHCI_HC_DEVSTR "MTK USB Controller" + +static device_probe_t ohci_fdt_probe; +static device_attach_t ohci_fdt_attach; +static device_detach_t ohci_fdt_detach; + +static int +ohci_fdt_probe(device_t self) +{ + + if (!ofw_bus_status_okay(self)) + return (ENXIO); + + if (!ofw_bus_is_compatible(self, "ralink,rt3xxx-ohci")) + return (ENXIO); + + device_set_desc(self, OHCI_HC_DEVSTR); + + return (BUS_PROBE_DEFAULT); +} + +static int +ohci_fdt_attach(device_t self) +{ + ohci_softc_t *sc = device_get_softc(self); + int err; + int rid; + + /* initialise some bus fields */ + sc->sc_bus.parent = self; + sc->sc_bus.devices = sc->sc_devices; + sc->sc_bus.devices_max = OHCI_MAX_DEVICES; + sc->sc_bus.dma_bits = 32; + + /* get all DMA memory */ + if (usb_bus_mem_alloc_all(&sc->sc_bus, + USB_GET_DMA_TAG(self), &ohci_iterate_hw_softc)) { + printf("No mem\n"); + return (ENOMEM); + } + + rid = 0; + sc->sc_io_res = bus_alloc_resource_any(self, SYS_RES_MEMORY, &rid, + RF_ACTIVE); + if (!sc->sc_io_res) { + device_printf(self, "Could not map memory\n"); + goto error; + } + sc->sc_io_tag = rman_get_bustag(sc->sc_io_res); + sc->sc_io_hdl = rman_get_bushandle(sc->sc_io_res); + sc->sc_io_size = rman_get_size(sc->sc_io_res); + + rid = 0; + sc->sc_irq_res = bus_alloc_resource_any(self, SYS_RES_IRQ, &rid, + RF_SHAREABLE | RF_ACTIVE); + if (sc->sc_irq_res == NULL) { + device_printf(self, "Could not allocate irq\n"); + goto error; + } + + sc->sc_bus.bdev = device_add_child(self, "usbus", -1); + if (!(sc->sc_bus.bdev)) { + device_printf(self, "Could not add USB device\n"); + goto error; + } + device_set_ivars(sc->sc_bus.bdev, &sc->sc_bus); + device_set_desc(sc->sc_bus.bdev, OHCI_HC_DEVSTR); + + sprintf(sc->sc_vendor, "MediaTek"); + + err = bus_setup_intr(self, sc->sc_irq_res, INTR_TYPE_BIO | INTR_MPSAFE, + NULL, (driver_intr_t *)ohci_interrupt, sc, &sc->sc_intr_hdl); + if (err) { + device_printf(self, "Could not setup irq, %d\n", err); + sc->sc_intr_hdl = NULL; + goto error; + } + + err = ohci_init(sc); + if (!err) { + err = device_probe_and_attach(sc->sc_bus.bdev); + } + if (err) { + device_printf(self, "USB init failed err=%d\n", err); + goto error; + } + return (0); + +error: + ohci_fdt_detach(self); + return (ENXIO); +} + +static int +ohci_fdt_detach(device_t self) +{ + ohci_softc_t *sc = device_get_softc(self); + device_t bdev; + int err; + + if (sc->sc_bus.bdev) { + bdev = sc->sc_bus.bdev; + device_detach(bdev); + device_delete_child(self, bdev); + } + /* during module unload there are lots of children leftover */ + device_delete_children(self); + + if (sc->sc_irq_res && sc->sc_intr_hdl) { + /* + * only call ohci_detach() after ohci_init() + */ + ohci_detach(sc); + + err = bus_teardown_intr(self, sc->sc_irq_res, sc->sc_intr_hdl); + if (err) + device_printf(self, "Could not tear down irq, %d\n", + err); + sc->sc_intr_hdl = NULL; + } + if (sc->sc_irq_res) { + bus_release_resource(self, SYS_RES_IRQ, 0, + sc->sc_irq_res); + sc->sc_irq_res = NULL; + } + if (sc->sc_io_res) { + bus_release_resource(self, SYS_RES_MEMORY, 0, + sc->sc_io_res); + sc->sc_io_res = NULL; + } + usb_bus_mem_free_all(&sc->sc_bus, &ohci_iterate_hw_softc); + + return (0); +} + +static device_method_t ohci_fdt_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, ohci_fdt_probe), + DEVMETHOD(device_attach, ohci_fdt_attach), + DEVMETHOD(device_detach, ohci_fdt_detach), + DEVMETHOD(device_suspend, bus_generic_suspend), + DEVMETHOD(device_resume, bus_generic_resume), + DEVMETHOD(device_shutdown, bus_generic_shutdown), + + DEVMETHOD_END +}; + +static driver_t ohci_fdt_driver = { + .name = "ohci", + .methods = ohci_fdt_methods, + .size = sizeof(ohci_softc_t), +}; + +static devclass_t ohci_fdt_devclass; + +DRIVER_MODULE(ohci, simplebus, ohci_fdt_driver, ohci_fdt_devclass, 0, 0); diff --git a/sys/mips/mediatek/mtk_usb_phy.c b/sys/mips/mediatek/mtk_usb_phy.c new file mode 100644 index 00000000000..da2acf0de09 --- /dev/null +++ b/sys/mips/mediatek/mtk_usb_phy.c @@ -0,0 +1,314 @@ +/*- + * Copyright (c) 2016 Stanislav Galabov. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#define RESET_ASSERT_DELAY 1000 +#define RESET_DEASSERT_DELAY 10000 + +struct mtk_usb_phy_softc { + device_t dev; + struct resource * res; + uint32_t fm_base; + uint32_t u2_base; + uint32_t sr_coef; + uint32_t socid; +}; + +#define USB_PHY_READ(_sc, _off) bus_read_4((_sc)->res, (_off)) +#define USB_PHY_WRITE(_sc, _off, _val) bus_write_4((_sc)->res, (_off), (_val)) +#define USB_PHY_CLR_SET(_sc, _off, _clr, _set) \ + USB_PHY_WRITE(_sc, _off, ((USB_PHY_READ(_sc, _off) & ~(_clr)) | (_set))) + +#define USB_PHY_READ_U2(_sc, _off) \ + USB_PHY_READ((_sc), ((_sc)->u2_base + (_off))) +#define USB_PHY_WRITE_U2(_sc, _off, _val) \ + USB_PHY_WRITE((_sc), ((_sc)->u2_base + (_off)), (_val)) +#define USB_PHY_CLR_SET_U2(_sc, _off, _clr, _set) \ + USB_PHY_WRITE_U2((_sc), (_off), ((USB_PHY_READ_U2((_sc), (_off)) & \ + ~(_clr)) | (_set))) +#define USB_PHY_BARRIER(_sc) bus_barrier((_sc)->res, 0, 0, \ + BUS_SPACE_BARRIER_WRITE | BUS_SPACE_BARRIER_READ) + +#define USB_PHY_READ_FM(_sc, _off) \ + USB_PHY_READ((_sc), ((_sc)->fm_base + (_off))) +#define USB_PHY_WRITE_FM(_sc, _off) \ + USB_PHY_WRITE((_sc), ((_sc)->fm_base + (_off)), (_val)) +#define USB_PHY_CLR_SET_FM(_sc, _off, _clr, _set) \ + USB_PHY_WRITE_U2((_sc), (_off), ((USB_PHY_READ_U2((_sc), (_off)) & \ + ~(_clr)) | (_set))) + +static void mtk_usb_phy_mt7621_init(device_t); +static void mtk_usb_phy_mt7628_init(device_t); + +static struct ofw_compat_data compat_data[] = { + { "ralink,mt7620a-usbphy", MTK_SOC_MT7620A }, + { "ralink,mt7628an-usbphy", MTK_SOC_MT7628 }, + { "ralink,rt3xxx-usbphy", MTK_SOC_RT3352 }, + { NULL, MTK_SOC_UNKNOWN } +}; + +static int +mtk_usb_phy_probe(device_t dev) +{ + struct mtk_usb_phy_softc *sc = device_get_softc(dev); + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + if ((sc->socid = + ofw_bus_search_compatible(dev, compat_data)->ocd_data) == + MTK_SOC_UNKNOWN) + return (ENXIO); + + device_set_desc(dev, "MTK USB PHY"); + + return (0); +} + +static int +mtk_usb_phy_attach(device_t dev) +{ + struct mtk_usb_phy_softc * sc = device_get_softc(dev); + phandle_t node; + uint32_t val; + int rid; + + sc->dev = dev; + + /* Get our FDT node and SoC id */ + node = ofw_bus_get_node(dev); + + /* Now let's see about setting USB to host or device mode */ + /* XXX: is it the same for all SoCs? */ + val = mtk_sysctl_get(SYSCTL_SYSCFG1); + if (OF_hasprop(node, "mtk,usb-device")) + val &= ~SYSCFG1_USB_HOST_MODE; + else + val |= SYSCFG1_USB_HOST_MODE; + mtk_sysctl_set(SYSCTL_SYSCFG1, val); + + /* If we have clocks defined - enable them */ + if (OF_hasprop(node, "clocks")) + fdt_clock_enable_all(dev); + + /* If we have resets defined - perform a reset sequence */ + if (OF_hasprop(node, "resets")) { + fdt_reset_assert_all(dev); + DELAY(RESET_ASSERT_DELAY); + fdt_reset_deassert_all(dev); + DELAY(RESET_DEASSERT_DELAY); + } + + /* Careful, some devices actually require resources */ + if (OF_hasprop(node, "reg")) { + rid = 0; + sc->res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, + RF_ACTIVE); + if (sc->res == NULL) { + device_printf(dev, "could not map memory\n"); + return (ENXIO); + } + } else { + sc->res = NULL; + } + + /* Some SoCs require specific USB PHY init... handle these */ + switch (sc->socid) { + case MTK_SOC_MT7628: /* Fallthrough */ + case MTK_SOC_MT7688: + if (sc->res == NULL) + return (ENXIO); + sc->fm_base = MT7628_FM_FEG_BASE; + sc->u2_base = MT7628_U2_BASE; + sc->sr_coef = MT7628_SR_COEF; + mtk_usb_phy_mt7628_init(dev); + break; + case MTK_SOC_MT7621: + if (sc->res == NULL) + return (ENXIO); + sc->fm_base = MT7621_FM_FEG_BASE; + sc->u2_base = MT7621_U2_BASE; + sc->sr_coef = MT7621_SR_COEF; + mtk_usb_phy_mt7621_init(dev); + break; + } + + /* We no longer need the resources, release them */ + if (sc->res != NULL) + bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->res); + + return (0); +} + +static int +mtk_usb_phy_detach(device_t dev) +{ + struct mtk_usb_phy_softc *sc = device_get_softc(dev); + phandle_t node; + + /* Get our FDT node */ + node = ofw_bus_get_node(dev); + + /* If we have resets defined - assert them */ + if (OF_hasprop(node, "resets")) + fdt_reset_assert_all(dev); + + /* If we have clocks defined - disable them */ + if (OF_hasprop(node, "clocks")) + fdt_clock_disable_all(dev); + + /* Finally, release resources, if any were allocated */ + if (sc->res != NULL) + bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->res); + + return (0); +} + +static void +mtk_usb_phy_slew_rate_calibration(struct mtk_usb_phy_softc *sc) +{ + uint32_t val; + int i; + + USB_PHY_CLR_SET_U2(sc, U2_PHY_ACR0, 0, SRCAL_EN); + USB_PHY_BARRIER(sc); + DELAY(1000); + + USB_PHY_CLR_SET_FM(sc, U2_PHY_FMMONR1, 0, FRCK_EN); + USB_PHY_BARRIER(sc); + USB_PHY_CLR_SET_FM(sc, U2_PHY_FMCR0, CYCLECNT, 0x400); + USB_PHY_BARRIER(sc); + USB_PHY_CLR_SET_FM(sc, U2_PHY_FMCR0, 0, FDET_EN); + USB_PHY_BARRIER(sc); + + for (i = 0; i < 1000; i++) { + if ((val = USB_PHY_READ_FM(sc, U2_PHY_FMMONR0)) != 0) { + device_printf(sc->dev, "DONE with FDET\n"); + break; + } + DELAY(10000); + } + device_printf(sc->dev, "After FDET\n"); + + USB_PHY_CLR_SET_FM(sc, U2_PHY_FMCR0, FDET_EN, 0); + USB_PHY_BARRIER(sc); + USB_PHY_CLR_SET_FM(sc, U2_PHY_FMMONR1, FRCK_EN, 0); + USB_PHY_BARRIER(sc); + USB_PHY_CLR_SET_U2(sc, U2_PHY_ACR0, SRCAL_EN, 0); + USB_PHY_BARRIER(sc); + DELAY(1000); + + if (val == 0) { + USB_PHY_CLR_SET_U2(sc, U2_PHY_ACR0, SRCTRL, 0x4 << SRCTRL_OFF); + USB_PHY_BARRIER(sc); + } else { + val = ((((1024 * 25 * sc->sr_coef) / val) + 500) / 1000) & + SRCTRL_MSK; + USB_PHY_CLR_SET_U2(sc, U2_PHY_ACR0, SRCTRL, val << SRCTRL_OFF); + USB_PHY_BARRIER(sc); + } +} + +static void +mtk_usb_phy_mt7621_init(device_t dev) +{ + struct mtk_usb_phy_softc *sc = device_get_softc(dev); + + /* Slew rate calibration only, but for 2 ports */ + mtk_usb_phy_slew_rate_calibration(sc); + + sc->u2_base = MT7621_U2_BASE_P1; + mtk_usb_phy_slew_rate_calibration(sc); +} + +static void +mtk_usb_phy_mt7628_init(device_t dev) +{ + struct mtk_usb_phy_softc *sc = device_get_softc(dev); + + /* XXX: possibly add barriers between the next writes? */ + USB_PHY_WRITE_U2(sc, U2_PHY_DCR0, 0x00ffff02); + USB_PHY_BARRIER(sc); + USB_PHY_WRITE_U2(sc, U2_PHY_DCR0, 0x00555502); + USB_PHY_BARRIER(sc); + USB_PHY_WRITE_U2(sc, U2_PHY_DCR0, 0x00aaaa02); + USB_PHY_BARRIER(sc); + USB_PHY_WRITE_U2(sc, U2_PHY_DCR0, 0x00000402); + USB_PHY_BARRIER(sc); + USB_PHY_WRITE_U2(sc, U2_PHY_AC0, 0x0048086a); + USB_PHY_BARRIER(sc); + USB_PHY_WRITE_U2(sc, U2_PHY_AC1, 0x4400001c); + USB_PHY_BARRIER(sc); + USB_PHY_WRITE_U2(sc, U2_PHY_ACR3, 0xc0200000); + USB_PHY_BARRIER(sc); + USB_PHY_WRITE_U2(sc, U2_PHY_DTM0, 0x02000000); + USB_PHY_BARRIER(sc); + + /* Slew rate calibration */ + //mtk_usb_phy_slew_rate_calibration(sc); +} + +static device_method_t mtk_usb_phy_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, mtk_usb_phy_probe), + DEVMETHOD(device_attach, mtk_usb_phy_attach), + DEVMETHOD(device_detach, mtk_usb_phy_detach), + DEVMETHOD(device_suspend, bus_generic_suspend), + DEVMETHOD(device_resume, bus_generic_resume), + DEVMETHOD(device_shutdown, bus_generic_shutdown), + + DEVMETHOD_END +}; + +static driver_t mtk_usb_phy_driver = { + .name = "usbphy", + .methods = mtk_usb_phy_methods, + .size = sizeof(struct mtk_usb_phy_softc), +}; + +static devclass_t mtk_usb_phy_devclass; + +DRIVER_MODULE(usbphy, simplebus, mtk_usb_phy_driver, mtk_usb_phy_devclass, 0, + 0); diff --git a/sys/mips/mediatek/mtk_usb_phy.h b/sys/mips/mediatek/mtk_usb_phy.h new file mode 100644 index 00000000000..24fb6612a2f --- /dev/null +++ b/sys/mips/mediatek/mtk_usb_phy.h @@ -0,0 +1,66 @@ +/*- + * Copyright (c) 2016 Stanislav Galabov. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ +#ifndef _MTK_USB_PHY_H_ +#define _MTK_USB_PHY_H_ + +#define MT7621_FM_FEG_BASE 0x0100 +#define MT7621_U2_BASE 0x0800 +#define MT7621_U2_BASE_P1 0x1000 +#define MT7621_SR_COEF 28 + +#define MT7628_FM_FEG_BASE 0x0f00 +#define MT7628_U2_BASE 0x0800 +#define MT7628_SR_COEF 32 + +#define U2_PHY_AC0 0x00 +#define U2_PHY_AC1 0x04 +#define U2_PHY_AC2 0x08 +#define U2_PHY_ACR0 0x10 +#define SRCAL_EN (1<<23) +#define SRCTRL_MSK 0x7 +#define SRCTRL_OFF 16 +#define SRCTRL (SRCTRL_MSK< Date: Thu, 7 Apr 2016 11:21:42 +0000 Subject: [PATCH 039/159] Initial import of Ralink/Mediatek MIPS SoC support #6 SPI drivers for the various Ralink/Mediatek SoCs. There are 2 versions of the SPI controller (so far) present in the supported SoCs, hence v1 and v2 drivers. Approved by: adrian (mentor) Sponsored by: Smartcom - Bulgaria AD Differential Revision: https://reviews.freebsd.org/D5842 --- sys/mips/mediatek/mtk_spi_v1.c | 351 ++++++++++++++++++++++++++++++++ sys/mips/mediatek/mtk_spi_v1.h | 71 +++++++ sys/mips/mediatek/mtk_spi_v2.c | 357 +++++++++++++++++++++++++++++++++ sys/mips/mediatek/mtk_spi_v2.h | 55 +++++ 4 files changed, 834 insertions(+) create mode 100644 sys/mips/mediatek/mtk_spi_v1.c create mode 100644 sys/mips/mediatek/mtk_spi_v1.h create mode 100644 sys/mips/mediatek/mtk_spi_v2.c create mode 100644 sys/mips/mediatek/mtk_spi_v2.h diff --git a/sys/mips/mediatek/mtk_spi_v1.c b/sys/mips/mediatek/mtk_spi_v1.c new file mode 100644 index 00000000000..1835b8ebf58 --- /dev/null +++ b/sys/mips/mediatek/mtk_spi_v1.c @@ -0,0 +1,351 @@ +/*- + * Copyright (c) 2009, Oleksandr Tymoshenko + * Copyright (c) 2011, Aleksandr Rybalko + * Copyright (c) 2013, Alexander A. Mityaev + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +//#include + +#include +#include +#include "spibus_if.h" + +#include "opt_platform.h" + +#include +#include +#include + +#include +#include + +#undef MTK_SPI_DEBUG +#ifdef MTK_SPI_DEBUG +#define dprintf printf +#else +#define dprintf(x, arg...) +#endif + +/* + * register space access macros + */ +#define SPI_WRITE(sc, reg, val) do { \ + bus_write_4(sc->sc_mem_res, (reg), (val)); \ + } while (0) + +#define SPI_READ(sc, reg) bus_read_4(sc->sc_mem_res, (reg)) + +#define SPI_SET_BITS(sc, reg, bits) \ + SPI_WRITE(sc, reg, SPI_READ(sc, (reg)) | (bits)) + +#define SPI_CLEAR_BITS(sc, reg, bits) \ + SPI_WRITE(sc, reg, SPI_READ(sc, (reg)) & ~(bits)) + +struct mtk_spi_softc { + device_t sc_dev; + struct resource *sc_mem_res; +}; + +static int mtk_spi_probe(device_t); +static int mtk_spi_attach(device_t); +static int mtk_spi_detach(device_t); +static int mtk_spi_wait(struct mtk_spi_softc *); +static void mtk_spi_chip_activate(struct mtk_spi_softc *); +static void mtk_spi_chip_deactivate(struct mtk_spi_softc *); +static uint8_t mtk_spi_txrx(struct mtk_spi_softc *, uint8_t *, int); +static int mtk_spi_transfer(device_t, device_t, struct spi_command *); +static phandle_t mtk_spi_get_node(device_t, device_t); + +static struct ofw_compat_data compat_data[] = { + { "ralink,rt2880-spi", 1 }, + { "ralink,rt3050-spi", 1 }, + { "ralink,rt3352-spi", 1 }, + { "ralink,rt3883-spi", 1 }, + { "ralink,rt5350-spi", 1 }, + { "ralink,mt7620a-spi", 1 }, + { NULL, 0 } +}; + +static int +mtk_spi_probe(device_t dev) +{ + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return(ENXIO); + + device_set_desc(dev, "MTK SPI Controller (v1)"); + + return (0); +} + +static int +mtk_spi_attach(device_t dev) +{ + struct mtk_spi_softc *sc = device_get_softc(dev); + int rid; + + sc->sc_dev = dev; + rid = 0; + sc->sc_mem_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, + RF_ACTIVE); + if (!sc->sc_mem_res) { + device_printf(dev, "Could not map memory\n"); + return (ENXIO); + } + + if (mtk_spi_wait(sc)) { + bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->sc_mem_res); + return (EBUSY); + } + + SPI_WRITE(sc, MTK_SPICFG, MSBFIRST | SPICLKPOL | TX_ON_CLK_FALL | + SPI_CLK_DIV8); /* XXX: make it configurable */ + /* + * W25Q64CV max 104MHz, bus 120-192 MHz, so divide by 2. + * Update: divide by 4, DEV2 to fast for flash. + */ + + device_add_child(dev, "spibus", 0); + return (bus_generic_attach(dev)); +} + +static int +mtk_spi_detach(device_t dev) +{ + struct mtk_spi_softc *sc = device_get_softc(dev); + + SPI_SET_BITS(sc, MTK_SPICTL, HIZSMOSI | CS_HIGH); + + if (sc->sc_mem_res) + bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->sc_mem_res); + + return (0); +} + +static void +mtk_spi_chip_activate(struct mtk_spi_softc *sc) +{ +// printf("%s\n", __func__); + mtk_spi_wait(sc); + /* + * Put all CSx to low + */ + SPI_CLEAR_BITS(sc, MTK_SPICTL, CS_HIGH | HIZSMOSI); +} + +static void +mtk_spi_chip_deactivate(struct mtk_spi_softc *sc) +{ +// printf("%s\n", __func__); + mtk_spi_wait(sc); + /* + * Put all CSx to high + */ + SPI_SET_BITS(sc, MTK_SPICTL, CS_HIGH | HIZSMOSI); +} + +static int +mtk_spi_wait(struct mtk_spi_softc *sc) +{ + int i = 1000; + + while (i--) { + if (!SPI_READ(sc, MTK_SPIBUSY)) + break; + } + if (i == 0) { + printf("busy\n"); + return (1); + } + + return (0); +} + +static uint8_t +mtk_spi_txrx(struct mtk_spi_softc *sc, uint8_t *data, int write) +{ + + if (mtk_spi_wait(sc)) + return (EBUSY); + + if (write == MTK_SPI_WRITE) { + SPI_WRITE(sc, MTK_SPIDATA, *data); + SPI_SET_BITS(sc, MTK_SPICTL, START_WRITE); + //printf("%s(W:%d)\n", __func__, *data); + } else {/* MTK_SPI_READ */ + SPI_SET_BITS(sc, MTK_SPICTL, START_READ); + if (mtk_spi_wait(sc)) + return (EBUSY); + + *data = SPI_READ(sc, MTK_SPIDATA) & 0xff; + //printf("%s(R:%d)\n", __func__, *data); + } + return (0); +} + +static int +mtk_spi_transfer(device_t dev, device_t child, struct spi_command *cmd) +{ + struct mtk_spi_softc *sc; + uint8_t *buf, byte, *tx_buf; + struct spibus_ivar *devi = SPIBUS_IVAR(child); + int i, sz, error = 0, write = 0; + + sc = device_get_softc(dev); + + if (devi->cs != 0) + /* Only 1 CS */ + return (ENXIO); + + /* There is always a command to transfer. */ + tx_buf = (uint8_t *)(cmd->tx_cmd); + + /* Perform some fixup because MTK dont support duplex SPI */ + switch(tx_buf[0]) { + case CMD_READ_IDENT: + cmd->tx_cmd_sz = 1; + cmd->rx_cmd_sz = 3; + break; + case CMD_ENTER_4B_MODE: + case CMD_EXIT_4B_MODE: + case CMD_WRITE_ENABLE: + case CMD_WRITE_DISABLE: + cmd->tx_cmd_sz = 1; + cmd->rx_cmd_sz = 0; + break; + case CMD_READ_STATUS: + cmd->tx_cmd_sz = 1; + cmd->rx_cmd_sz = 1; + break; + case CMD_READ: + case CMD_FAST_READ: + cmd->rx_cmd_sz = cmd->tx_data_sz = 0; + break; + case CMD_SECTOR_ERASE: + cmd->rx_cmd_sz = 0; + break; + case CMD_PAGE_PROGRAM: + cmd->rx_cmd_sz = cmd->rx_data_sz = 0; + break; + } + + mtk_spi_chip_activate(sc); + + if (cmd->tx_cmd_sz + cmd->rx_cmd_sz) { + buf = (uint8_t *)(cmd->rx_cmd); + tx_buf = (uint8_t *)(cmd->tx_cmd); + sz = cmd->tx_cmd_sz + cmd->rx_cmd_sz; + + for (i = 0; i < sz; i++) { + if(i < cmd->tx_cmd_sz) { + byte = tx_buf[i]; + error = mtk_spi_txrx(sc, &byte, + MTK_SPI_WRITE); + if (error) + goto mtk_spi_transfer_fail; + continue; + } + error = mtk_spi_txrx(sc, &byte, + MTK_SPI_READ); + if (error) + goto mtk_spi_transfer_fail; + buf[i] = byte; + } + } + + /* + * Transfer/Receive data + */ + + if (cmd->tx_data_sz + cmd->rx_data_sz) { + write = (cmd->tx_data_sz > 0)?1:0; + buf = (uint8_t *)(write ? cmd->tx_data : cmd->rx_data); + sz = write ? cmd->tx_data_sz : cmd->rx_data_sz; + + for (i = 0; i < sz; i++) { + byte = buf[i]; + error = mtk_spi_txrx(sc, &byte, + write ? MTK_SPI_WRITE : MTK_SPI_READ); + if (error) + goto mtk_spi_transfer_fail; + buf[i] = byte; + } + } +mtk_spi_transfer_fail: + mtk_spi_chip_deactivate(sc); + + return (error); +} + +static phandle_t +mtk_spi_get_node(device_t bus, device_t dev) +{ + + /* We only have one child, the SPI bus, which needs our own node. */ + return (ofw_bus_get_node(bus)); +} + +static device_method_t mtk_spi_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, mtk_spi_probe), + DEVMETHOD(device_attach, mtk_spi_attach), + DEVMETHOD(device_detach, mtk_spi_detach), + + DEVMETHOD(spibus_transfer, mtk_spi_transfer), + + /* ofw_bus interface */ + DEVMETHOD(ofw_bus_get_node, mtk_spi_get_node), + + DEVMETHOD_END +}; + +static driver_t mtk_spi_driver = { + .name = "spi", + .methods = mtk_spi_methods, + .size = sizeof(struct mtk_spi_softc), +}; + +static devclass_t mtk_spi_devclass; + +DRIVER_MODULE(mtk_spi_v1, simplebus, mtk_spi_driver, mtk_spi_devclass, 0, 0); diff --git a/sys/mips/mediatek/mtk_spi_v1.h b/sys/mips/mediatek/mtk_spi_v1.h new file mode 100644 index 00000000000..3b82e5b7bfb --- /dev/null +++ b/sys/mips/mediatek/mtk_spi_v1.h @@ -0,0 +1,71 @@ +/*- + * Copyright (c) 2009, Oleksandr Tymoshenko + * Copyright (c) 2011, Aleksandr Rybalko + * Copyright (c) 2013, Alexander A. Mityaev + * Copyright (c) 2016, Stanislav Galabov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _MTK_SPIVAR_H_ +#define _MTK_SPIVAR_H_ + +/* SPI controller interface */ + +#define MTK_SPISTAT 0x00 +/* SPIBUSY is alias for SPIBUSY, because SPISTAT have only BUSY bit*/ +#define MTK_SPIBUSY MTK_SPISTAT + +#define MTK_SPICFG 0x10 +#define MSBFIRST (1<<8) +#define SPICLKPOL (1<<6) +#define CAPT_ON_CLK_FALL (1<<5) +#define TX_ON_CLK_FALL (1<<4) +#define HIZSPI (1<<3) /* Set SPI pins to Tri-state */ +#define SPI_CLK_SHIFT 0 /* SPI clock divide control */ +#define SPI_CLK_MASK 0x00000007 +#define SPI_CLK_DIV2 0 +#define SPI_CLK_DIV4 1 +#define SPI_CLK_DIV8 2 +#define SPI_CLK_DIV16 3 +#define SPI_CLK_DIV32 4 +#define SPI_CLK_DIV64 5 +#define SPI_CLK_DIV128 6 +#define SPI_CLK_DISABLED 7 + +#define MTK_SPICTL 0x14 +#define HIZSMOSI (1<<3) +#define START_WRITE (1<<2) +#define START_READ (1<<1) +#define CS_HIGH (1<<0) + +#define MTK_SPIDATA 0x20 +#define SPIDATA_MASK 0x000000ff + +#define MTK_SPI_WRITE 1 +#define MTK_SPI_READ 0 + +#endif /* _MTK_SPIVAR_H_ */ diff --git a/sys/mips/mediatek/mtk_spi_v2.c b/sys/mips/mediatek/mtk_spi_v2.c new file mode 100644 index 00000000000..0ffd9769d0e --- /dev/null +++ b/sys/mips/mediatek/mtk_spi_v2.c @@ -0,0 +1,357 @@ +/*- + * Copyright (c) 2009, Oleksandr Tymoshenko + * Copyright (c) 2011, Aleksandr Rybalko + * Copyright (c) 2013, Alexander A. Mityaev + * Copyright (c) 2016, Stanislav Galabov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +//#include + +#include +#include +#include "spibus_if.h" + +#include "opt_platform.h" + +#include +#include +#include + +#include +#include + +#undef MTK_SPI_DEBUG +#ifdef MTK_SPI_DEBUG +#define dprintf printf +#else +#define dprintf(x, arg...) +#endif + +/* + * register space access macros + */ +#define SPI_WRITE(sc, reg, val) do { \ + bus_write_4(sc->sc_mem_res, (reg), (val)); \ + } while (0) + +#define SPI_READ(sc, reg) bus_read_4(sc->sc_mem_res, (reg)) + +#define SPI_SET_BITS(sc, reg, bits) \ + SPI_WRITE(sc, reg, SPI_READ(sc, (reg)) | (bits)) + +#define SPI_CLEAR_BITS(sc, reg, bits) \ + SPI_WRITE(sc, reg, SPI_READ(sc, (reg)) & ~(bits)) + +struct mtk_spi_softc { + device_t sc_dev; + struct resource *sc_mem_res; +}; + +static int mtk_spi_probe(device_t); +static int mtk_spi_attach(device_t); +static int mtk_spi_detach(device_t); +static int mtk_spi_wait(struct mtk_spi_softc *); +static void mtk_spi_chip_activate(struct mtk_spi_softc *); +static void mtk_spi_chip_deactivate(struct mtk_spi_softc *); +static uint8_t mtk_spi_txrx(struct mtk_spi_softc *, uint8_t *, int); +static int mtk_spi_transfer(device_t, device_t, struct spi_command *); +static phandle_t mtk_spi_get_node(device_t, device_t); + +static struct ofw_compat_data compat_data[] = { + { "ralink,mt7621-spi", 1 }, + { "ralink,mtk7628an-spi", 1 }, + { NULL, 0 } +}; + +static int +mtk_spi_probe(device_t dev) +{ + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return(ENXIO); + + device_set_desc(dev, "MTK SPI Controller (v2)"); + + return (0); +} + +static int +mtk_spi_attach(device_t dev) +{ + struct mtk_spi_softc *sc = device_get_softc(dev); + uint32_t val; + int rid; + + sc->sc_dev = dev; + rid = 0; + sc->sc_mem_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, + RF_ACTIVE); + if (!sc->sc_mem_res) { + device_printf(dev, "Could not map memory\n"); + return (ENXIO); + } + + if (mtk_spi_wait(sc)) { + bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->sc_mem_res); + return (EBUSY); + } + + val = SPI_READ(sc, MTK_SPIMASTER); + val &= ~(0xfff << 16); + val |= 13 << 16; + val |= 7 << 29; + val |= 1 << 2; + SPI_WRITE(sc, MTK_SPIMASTER, val); + /* + * W25Q64CV max 104MHz, bus 120-192 MHz, so divide by 2. + * Update: divide by 4, DEV2 to fast for flash. + */ + + device_add_child(dev, "spibus", 0); + return (bus_generic_attach(dev)); +} + +static int +mtk_spi_detach(device_t dev) +{ + struct mtk_spi_softc *sc = device_get_softc(dev); + + //SPI_SET_BITS(sc, MTK_SPICTL, HIZSMOSI | CS_HIGH); + + if (sc->sc_mem_res) + bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->sc_mem_res); + + return (0); +} + +static void +mtk_spi_chip_activate(struct mtk_spi_softc *sc) +{ +// printf("%s\n", __func__); + mtk_spi_wait(sc); + /* + * Put all CSx to low + */ + SPI_SET_BITS(sc, MTK_SPIPOLAR, 1); +} + +static void +mtk_spi_chip_deactivate(struct mtk_spi_softc *sc) +{ +// printf("%s\n", __func__); + mtk_spi_wait(sc); + /* + * Put all CSx to high + */ + SPI_CLEAR_BITS(sc, MTK_SPIPOLAR, 1); +} + +static int +mtk_spi_wait(struct mtk_spi_softc *sc) +{ + int i = 1000; + + while (i--) { + if (!(SPI_READ(sc, MTK_SPITRANS) & SPIBUSY)) + break; + } + if (i == 0) { + //printf("busy\n"); + return (1); + } + + return (0); +} + +static uint8_t +mtk_spi_txrx(struct mtk_spi_softc *sc, uint8_t *data, int write) +{ + + if (mtk_spi_wait(sc)) + return (0xff); + + if (write == MTK_SPI_WRITE) { + SPI_WRITE(sc, MTK_SPIOPCODE, (*data)); + SPI_WRITE(sc, MTK_SPIMOREBUF, (8<<24)); + } else { + SPI_WRITE(sc, MTK_SPIMOREBUF, (8<<12)); + } + + SPI_SET_BITS(sc, MTK_SPITRANS, SPISTART); + + if (mtk_spi_wait(sc)) + return (0xff); + + if (write == MTK_SPI_READ) { + *data = SPI_READ(sc, MTK_SPIDATA) & 0xff; + } + + return (0); +} + +static int +mtk_spi_transfer(device_t dev, device_t child, struct spi_command *cmd) +{ + struct mtk_spi_softc *sc; + uint8_t *buf, byte, *tx_buf; + struct spibus_ivar *devi = SPIBUS_IVAR(child); + int i, sz, error, write = 0; + + sc = device_get_softc(dev); + + if (devi->cs != 0) + /* Only 1 CS */ + return (ENXIO); + + /* There is always a command to transfer. */ + tx_buf = (uint8_t *)(cmd->tx_cmd); + + /* Perform some fixup because MTK dont support duplex SPI */ + switch(tx_buf[0]) { + case CMD_READ_IDENT: + cmd->tx_cmd_sz = 1; + cmd->rx_cmd_sz = 3; + break; + case CMD_ENTER_4B_MODE: + case CMD_EXIT_4B_MODE: + case CMD_WRITE_ENABLE: + case CMD_WRITE_DISABLE: + cmd->tx_cmd_sz = 1; + cmd->rx_cmd_sz = 0; + break; + case CMD_READ_STATUS: + cmd->tx_cmd_sz = 1; + cmd->rx_cmd_sz = 1; + break; + case CMD_READ: + case CMD_FAST_READ: + cmd->rx_cmd_sz = cmd->tx_data_sz = 0; + break; + case CMD_SECTOR_ERASE: + cmd->rx_cmd_sz = 0; + break; + case CMD_PAGE_PROGRAM: + cmd->rx_cmd_sz = cmd->rx_data_sz = 0; + break; + } + + mtk_spi_chip_activate(sc); + + if (cmd->tx_cmd_sz + cmd->rx_cmd_sz) { + buf = (uint8_t *)(cmd->rx_cmd); + tx_buf = (uint8_t *)(cmd->tx_cmd); + sz = cmd->tx_cmd_sz + cmd->rx_cmd_sz; + + for (i = 0; i < sz; i++) { + if(i < cmd->tx_cmd_sz) { + byte = tx_buf[i]; + error = mtk_spi_txrx(sc, &byte, + MTK_SPI_WRITE); + if (error) + goto mtk_spi_transfer_fail; + continue; + } + error = mtk_spi_txrx(sc, &byte, + MTK_SPI_READ); + if (error) + goto mtk_spi_transfer_fail; + buf[i] = byte; + } + } + + /* + * Transfer/Receive data + */ + + if (cmd->tx_data_sz + cmd->rx_data_sz) { + write = (cmd->tx_data_sz > 0)?1:0; + buf = (uint8_t *)(write ? cmd->tx_data : cmd->rx_data); + sz = write ? cmd->tx_data_sz : cmd->rx_data_sz; + + for (i = 0; i < sz; i++) { + byte = buf[i]; + error = mtk_spi_txrx(sc, &byte, + write ? MTK_SPI_WRITE : MTK_SPI_READ); + if (error) + goto mtk_spi_transfer_fail; + buf[i] = byte; + } + } +mtk_spi_transfer_fail: + mtk_spi_chip_deactivate(sc); + + return (0); +} + +static phandle_t +mtk_spi_get_node(device_t bus, device_t dev) +{ + + /* We only have one child, the SPI bus, which needs our own node. */ + return (ofw_bus_get_node(bus)); +} + +static device_method_t mtk_spi_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, mtk_spi_probe), + DEVMETHOD(device_attach, mtk_spi_attach), + DEVMETHOD(device_detach, mtk_spi_detach), + + DEVMETHOD(spibus_transfer, mtk_spi_transfer), + + /* ofw_bus interface */ + DEVMETHOD(ofw_bus_get_node, mtk_spi_get_node), + + DEVMETHOD_END +}; + +static driver_t mtk_spi_driver = { + .name = "spi", + .methods = mtk_spi_methods, + .size = sizeof(struct mtk_spi_softc), +}; + +static devclass_t mtk_spi_devclass; + +DRIVER_MODULE(mtk_spi_v2, simplebus, mtk_spi_driver, mtk_spi_devclass, 0, 0); diff --git a/sys/mips/mediatek/mtk_spi_v2.h b/sys/mips/mediatek/mtk_spi_v2.h new file mode 100644 index 00000000000..fc7ae31a26a --- /dev/null +++ b/sys/mips/mediatek/mtk_spi_v2.h @@ -0,0 +1,55 @@ +/*- + * Copyright (c) 2009, Oleksandr Tymoshenko + * Copyright (c) 2011, Aleksandr Rybalko + * Copyright (c) 2013, Alexander A. Mityaev + * Copyright (c) 2016, Stanislav Galabov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice unmodified, this list of conditions, and the following + * disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _MTK_SPI_NEWVAR_H_ +#define _MTK_SPI_NEWVAR_H_ + +/* SPI controller interface */ + +#define MTK_SPITRANS 0x00 +#define SPIBUSY (1<<16) +#define SPISTART (1<<8) + +#define MTK_SPIMASTER 0x28 + +#define MTK_SPIMOREBUF 0x2C + +#define MTK_SPIOPCODE 0x04 +#define MTK_SPIDATA 0x08 +#define SPIDATA_MASK 0x000000ff + +#define MTK_SPI_WRITE 1 +#define MTK_SPI_READ 0 + +#define MTK_SPIPOLAR 0x38 + +#endif /* _MTK_SPI_NEWVAR_H_ */ From 309b1c7adebc80794ea5ae1836b1d5eb2e342fa3 Mon Sep 17 00:00:00 2001 From: Alexander Motin Date: Thu, 7 Apr 2016 12:54:44 +0000 Subject: [PATCH 040/159] Alike to r293708 relax pool check in vdev_geom_open_by_path(). This made impossible spare disk open by known path, which kind of worked only because the same fix was applied to vdev_geom_attach_by_guids() in r293708. MFC after: 1 week --- .../contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c index 1fd96235702..f459655c330 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c @@ -679,7 +679,15 @@ vdev_geom_open_by_path(vdev_t *vd, int check_guid) g_topology_unlock(); vdev_geom_read_guids(cp, &pguid, &vguid); g_topology_lock(); - if (pguid != spa_guid(vd->vdev_spa) || + /* + * Check that the label's vdev guid matches the + * desired guid. If the label has a pool guid, + * check that it matches too. (Inactive spares + * and L2ARCs do not have any pool guid in the + * label.) + */ + if ((pguid != 0 && + pguid != spa_guid(vd->vdev_spa)) || vguid != vd->vdev_guid) { vdev_geom_close_locked(vd); cp = NULL; From c8a8eb16e0ac334fa9f2fa85a88dd459ea50625a Mon Sep 17 00:00:00 2001 From: Mark Peek Date: Thu, 7 Apr 2016 14:25:15 +0000 Subject: [PATCH 041/159] Revert r296416 by removing SAVESIGVEC and switching to fork instead. This fixes usage with system libraries which maintain their own signal state. PR: 208132 Obtained from: kib MFC after: 3 days --- bin/csh/config_p.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/csh/config_p.h b/bin/csh/config_p.h index f2d7ebc3c73..c25e87a903e 100644 --- a/bin/csh/config_p.h +++ b/bin/csh/config_p.h @@ -34,7 +34,8 @@ * Note that some machines eg. rs6000 have a vfork, but not * with the berkeley semantics, so we cannot use it there either. */ -#define VFORK +/* #define VFORK */ +#define vfork fork /* * BSDJOBS You have BSD-style job control (both process groups and @@ -80,7 +81,6 @@ /****************** local defines *********************/ #if defined(__FreeBSD__) -#define SAVESIGVEC #define NLS_BUGS #define BSD_STYLE_COLORLS /* Use LC_MESSAGES locale category to open the message catalog */ From 5b613c19b52697e9a90fa1acff82a014ada333fb Mon Sep 17 00:00:00 2001 From: Svatopluk Kraus Date: Thu, 7 Apr 2016 15:00:25 +0000 Subject: [PATCH 042/159] Implement intr_isrc_init_on_cpu() and use it to replace very same code implemented in every interrupt controller driver running SMP. This function returns true, if provided ISRC should be enabled on given cpu. --- sys/arm/arm/gic.c | 27 +++++++-------------------- sys/arm/broadcom/bcm2835/bcm2836.c | 25 +++---------------------- sys/kern/subr_intr.c | 26 ++++++++++++++++++++++++++ sys/sys/intr.h | 4 ++++ 4 files changed, 40 insertions(+), 42 deletions(-) diff --git a/sys/arm/arm/gic.c b/sys/arm/arm/gic.c index 23b9577ee9d..922e3861fc4 100644 --- a/sys/arm/arm/gic.c +++ b/sys/arm/arm/gic.c @@ -256,11 +256,11 @@ static void arm_gic_init_secondary(device_t dev) { struct arm_gic_softc *sc = device_get_softc(dev); - struct intr_irqsrc *isrc; - u_int irq; + u_int irq, cpu; /* Set the mask so we can find this CPU to send it IPIs */ - arm_gic_map[PCPU_GET(cpuid)] = gic_cpu_mask(sc); + cpu = PCPU_GET(cpuid); + arm_gic_map[cpu] = gic_cpu_mask(sc); for (irq = 0; irq < sc->nirqs; irq += 4) gic_d_write_4(sc, GICD_IPRIORITYR(irq >> 2), 0); @@ -280,27 +280,14 @@ arm_gic_init_secondary(device_t dev) gic_d_write_4(sc, GICD_CTLR, 0x01); /* Unmask attached SGI interrupts. */ - for (irq = GIC_FIRST_SGI; irq <= GIC_LAST_SGI; irq++) { - isrc = GIC_INTR_ISRC(sc, irq); - if (isrc != NULL && isrc->isrc_handlers != 0) { - CPU_SET(PCPU_GET(cpuid), &isrc->isrc_cpu); + for (irq = GIC_FIRST_SGI; irq <= GIC_LAST_SGI; irq++) + if (intr_isrc_init_on_cpu(GIC_INTR_ISRC(sc, irq), cpu)) gic_irq_unmask(sc, irq); - } - } /* Unmask attached PPI interrupts. */ - for (irq = GIC_FIRST_PPI; irq <= GIC_LAST_PPI; irq++) { - isrc = GIC_INTR_ISRC(sc, irq); - if (isrc == NULL || isrc->isrc_handlers == 0) - continue; - if (isrc->isrc_flags & INTR_ISRCF_BOUND) { - if (CPU_ISSET(PCPU_GET(cpuid), &isrc->isrc_cpu)) - gic_irq_unmask(sc, irq); - } else { - CPU_SET(PCPU_GET(cpuid), &isrc->isrc_cpu); + for (irq = GIC_FIRST_PPI; irq <= GIC_LAST_PPI; irq++) + if (intr_isrc_init_on_cpu(GIC_INTR_ISRC(sc, irq), cpu)) gic_irq_unmask(sc, irq); - } - } } #else static void diff --git a/sys/arm/broadcom/bcm2835/bcm2836.c b/sys/arm/broadcom/bcm2835/bcm2836.c index 05e9cc68c07..f9a2fcc62f4 100644 --- a/sys/arm/broadcom/bcm2835/bcm2836.c +++ b/sys/arm/broadcom/bcm2835/bcm2836.c @@ -525,40 +525,21 @@ bcm_lintc_setup_intr(device_t dev, struct intr_irqsrc *isrc, } #ifdef SMP -static bool -bcm_lint_init_on_ap(struct bcm_lintc_softc *sc, struct bcm_lintc_irqsrc *bli, - u_int cpu) -{ - struct intr_irqsrc *isrc; - - isrc = &bli->bli_isrc; - - KASSERT(isrc->isrc_flags & INTR_ISRCF_PPI, - ("%s: irq %d is not PPI", __func__, bli->bli_irq)); - - if (isrc->isrc_handlers == 0) - return (false); - if (isrc->isrc_flags & INTR_ISRCF_BOUND) - return (CPU_ISSET(cpu, &isrc->isrc_cpu)); - - CPU_SET(cpu, &isrc->isrc_cpu); - return (true); -} - static void bcm_lintc_init_rwreg_on_ap(struct bcm_lintc_softc *sc, u_int cpu, u_int irq, uint32_t reg, uint32_t mask) { - if (bcm_lint_init_on_ap(sc, &sc->bls_isrcs[irq], cpu)) + if (intr_isrc_init_on_cpu(&sc->bls_isrcs[irq].bli_isrc, cpu)) bcm_lintc_rwreg_set(sc, reg, mask); } static void bcm_lintc_init_pmu_on_ap(struct bcm_lintc_softc *sc, u_int cpu) { + struct intr_irqsrc *isrc = &sc->bls_isrcs[BCM_LINTC_PMU_IRQ].bli_isrc; - if (bcm_lint_init_on_ap(sc, &sc->bls_isrcs[BCM_LINTC_PMU_IRQ], cpu)) { + if (intr_isrc_init_on_cpu(isrc, cpu)) { /* Write-set register. */ bcm_lintc_write_4(sc, BCM_LINTC_PMU_ROUTING_SET_REG, BCM_LINTC_PIRR_IRQ_EN_CORE(cpu)); diff --git a/sys/kern/subr_intr.c b/sys/kern/subr_intr.c index fc3e74f59eb..6e6241b6036 100644 --- a/sys/kern/subr_intr.c +++ b/sys/kern/subr_intr.c @@ -467,6 +467,32 @@ intr_isrc_deregister(struct intr_irqsrc *isrc) return (error); } +#ifdef SMP +/* + * A support function for a PIC to decide if provided ISRC should be inited + * on given cpu. The logic of INTR_ISRCF_BOUND flag and isrc_cpu member of + * struct intr_irqsrc is the following: + * + * If INTR_ISRCF_BOUND is set, the ISRC should be inited only on cpus + * set in isrc_cpu. If not, the ISRC should be inited on every cpu and + * isrc_cpu is kept consistent with it. Thus isrc_cpu is always correct. + */ +bool +intr_isrc_init_on_cpu(struct intr_irqsrc *isrc, u_int cpu) +{ + + if (isrc->isrc_handlers == 0) + return (false); + if ((isrc->isrc_flags & (INTR_ISRCF_PPI | INTR_ISRCF_IPI)) == 0) + return (false); + if (isrc->isrc_flags & INTR_ISRCF_BOUND) + return (CPU_ISSET(cpu, &isrc->isrc_cpu)); + + CPU_SET(cpu, &isrc->isrc_cpu); + return (true); +} +#endif + static struct intr_dev_data * intr_ddata_alloc(u_int extsize) { diff --git a/sys/sys/intr.h b/sys/sys/intr.h index 04325c11fd8..f7d2abe6386 100644 --- a/sys/sys/intr.h +++ b/sys/sys/intr.h @@ -98,6 +98,10 @@ int intr_isrc_deregister(struct intr_irqsrc *); int intr_isrc_register(struct intr_irqsrc *, device_t, u_int, const char *, ...) __printflike(4, 5); +#ifdef SMP +bool intr_isrc_init_on_cpu(struct intr_irqsrc *isrc, u_int cpu); +#endif + int intr_isrc_dispatch(struct intr_irqsrc *, struct trapframe *); u_int intr_irq_next_cpu(u_int current_cpu, cpuset_t *cpumask); From ab68acd8c085787e978267b7b40bce18cbf2d46f Mon Sep 17 00:00:00 2001 From: Stanislav Galabov Date: Thu, 7 Apr 2016 15:11:24 +0000 Subject: [PATCH 043/159] Initial import of Ralink/Mediatek MIPS SoC support #7 GPIO controller drivers import. As with other Ralink/Mediatek work, there are 2 versions of the GPIO controller driver, depending on the type of SoC. This revision introduces initial support for these. Approved by: adrian (mentor) Sponsored by: Smartcom - Bulgaria AD Differential Revision: https://reviews.freebsd.org/D5877 --- sys/mips/mediatek/mtk_gpio_v1.c | 646 ++++++++++++++++++++++++++++++++ sys/mips/mediatek/mtk_gpio_v2.c | 646 ++++++++++++++++++++++++++++++++ 2 files changed, 1292 insertions(+) create mode 100644 sys/mips/mediatek/mtk_gpio_v1.c create mode 100644 sys/mips/mediatek/mtk_gpio_v2.c diff --git a/sys/mips/mediatek/mtk_gpio_v1.c b/sys/mips/mediatek/mtk_gpio_v1.c new file mode 100644 index 00000000000..18820298e29 --- /dev/null +++ b/sys/mips/mediatek/mtk_gpio_v1.c @@ -0,0 +1,646 @@ +/*- + * Copyright 2016 Stanislav Galabov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_platform.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + +#include + +#include +#include +#include + +#include + +#include "gpio_if.h" +#include "pic_if.h" + +#define MTK_GPIO_PINS 32 + +struct mtk_gpio_pin_irqsrc { + struct intr_irqsrc isrc; + u_int irq; +}; + +struct mtk_gpio_pin { + uint32_t pin_caps; + uint32_t pin_flags; + enum intr_trigger intr_trigger; + enum intr_polarity intr_polarity; + char pin_name[GPIOMAXNAME]; + struct mtk_gpio_pin_irqsrc pin_irqsrc; +}; + +struct mtk_gpio_softc { + device_t dev; + device_t busdev; + struct resource *res[2]; + struct mtx mtx; + struct mtk_gpio_pin pins[MTK_GPIO_PINS]; + void *intrhand; + + uint32_t num_pins; + uint8_t do_remap; +}; + +#define PIC_INTR_ISRC(sc, irq) (&(sc)->pins[(irq)].pin_irqsrc.isrc) + +static struct resource_spec mtk_gpio_spec[] = { + { SYS_RES_MEMORY, 0, RF_ACTIVE }, + { SYS_RES_IRQ, 0, RF_ACTIVE | RF_SHAREABLE }, + { -1, 0 } +}; + +static int mtk_gpio_probe(device_t dev); +static int mtk_gpio_attach(device_t dev); +static int mtk_gpio_detach(device_t dev); +static int mtk_gpio_intr(void *arg); + +#define MTK_GPIO_LOCK(sc) mtx_lock_spin(&(sc)->mtx) +#define MTK_GPIO_UNLOCK(sc) mtx_unlock_spin(&(sc)->mtx) +#define MTK_GPIO_LOCK_INIT(sc) \ + mtx_init(&(sc)->mtx, device_get_nameunit((sc)->dev), \ + "mtk_gpio", MTX_SPIN) +#define MTK_GPIO_LOCK_DESTROY(sc) mtx_destroy(&(sc)->mtx) + +#define MTK_WRITE_4(sc, reg, val) bus_write_4((sc)->res[0], (reg), (val)) +#define MTK_READ_4(sc, reg) bus_read_4((sc)->res[0], (reg)) + +/* Register definitions */ +#define GPIO_PIOINT(_sc) 0x0000 +#define GPIO_PIOEDGE(_sc) 0x0004 +#define GPIO_PIORENA(_sc) 0x0008 +#define GPIO_PIOFENA(_sc) 0x000C +#define GPIO_PIODATA(_sc) ((_sc)->do_remap ? 0x0020 : 0x0010) +#define GPIO_PIODIR(_sc) ((_sc)->do_remap ? 0x0024 : 0x0014) +#define GPIO_PIOPOL(_sc) ((_sc)->do_remap ? 0x0028 : 0x0018) +#define GPIO_PIOSET(_sc) ((_sc)->do_remap ? 0x002C : 0x001C) +#define GPIO_PIORESET(_sc) ((_sc)->do_remap ? 0x0030 : 0x0020) +#define GPIO_PIOTOG(_sc) ((_sc)->do_remap ? 0x0034 : 0x0024) + +static struct ofw_compat_data compat_data[] = { + { "ralink,rt2880-gpio", 1 }, + { "ralink,rt3050-gpio", 1 }, + { "ralink,rt3352-gpio", 1 }, + { "ralink,rt3883-gpio", 1 }, + { "ralink,rt5350-gpio", 1 }, + { "ralink,mt7620a-gpio", 1 }, + { NULL, 0 } +}; + +static int +mtk_gpio_probe(device_t dev) +{ + phandle_t node; + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + node = ofw_bus_get_node(dev); + if (!OF_hasprop(node, "gpio-controller")) + return (ENXIO); + + device_set_desc(dev, "MTK GPIO Controller (v1)"); + + return (BUS_PROBE_DEFAULT); +} + +static int +mtk_pic_register_isrcs(struct mtk_gpio_softc *sc) +{ + int error; + uint32_t irq; + struct intr_irqsrc *isrc; + const char *name; + + name = device_get_nameunit(sc->dev); + for (irq = 0; irq < sc->num_pins; irq++) { + sc->pins[irq].pin_irqsrc.irq = irq; + isrc = PIC_INTR_ISRC(sc, irq); + error = intr_isrc_register(isrc, sc->dev, 0, "%s", name); + if (error != 0) { + /* XXX call intr_isrc_deregister */ + device_printf(sc->dev, "%s failed", __func__); + return (error); + } + } + + return (0); +} + +static int +mtk_gpio_pin_set_direction(struct mtk_gpio_softc *sc, uint32_t pin, + uint32_t dir) +{ + uint32_t regval, mask = (1u << pin); + + if (!(sc->pins[pin].pin_caps & dir)) + return (EINVAL); + + regval = MTK_READ_4(sc, GPIO_PIODIR(sc)); + if (dir == GPIO_PIN_INPUT) + regval &= ~mask; + else + regval |= mask; + MTK_WRITE_4(sc, GPIO_PIODIR(sc), regval); + + sc->pins[pin].pin_flags &= ~(GPIO_PIN_INPUT | GPIO_PIN_OUTPUT); + sc->pins[pin].pin_flags |= dir; + + return (0); +} + +static int +mtk_gpio_pin_set_invert(struct mtk_gpio_softc *sc, uint32_t pin, uint32_t val) +{ + uint32_t regval, mask = (1u << pin); + + regval = MTK_READ_4(sc, GPIO_PIOPOL(sc)); + if (val) + regval |= mask; + else + regval &= ~mask; + MTK_WRITE_4(sc, GPIO_PIOPOL(sc), regval); + sc->pins[pin].pin_flags &= ~(GPIO_PIN_INVIN | GPIO_PIN_INVOUT); + sc->pins[pin].pin_flags |= val; + + return (0); +} + +static void +mtk_gpio_pin_probe(struct mtk_gpio_softc *sc, uint32_t pin) +{ + uint32_t mask = (1u << pin); + uint32_t val; + + /* Clear cached gpio config */ + sc->pins[pin].pin_flags = 0; + + val = MTK_READ_4(sc, GPIO_PIORENA(sc)) | + MTK_READ_4(sc, GPIO_PIOFENA(sc)); + if (val & mask) { + /* Pin is in interrupt mode */ + sc->pins[pin].intr_trigger = INTR_TRIGGER_EDGE; + val = MTK_READ_4(sc, GPIO_PIORENA(sc)); + if (val & mask) + sc->pins[pin].intr_polarity = INTR_POLARITY_HIGH; + else + sc->pins[pin].intr_polarity = INTR_POLARITY_LOW; + } + + val = MTK_READ_4(sc, GPIO_PIODIR(sc)); + if (val & mask) + sc->pins[pin].pin_flags |= GPIO_PIN_OUTPUT; + else + sc->pins[pin].pin_flags |= GPIO_PIN_INPUT; + + val = MTK_READ_4(sc, GPIO_PIOPOL(sc)); + if (val & mask) { + if (sc->pins[pin].pin_flags & GPIO_PIN_INPUT) { + sc->pins[pin].pin_flags |= GPIO_PIN_INVIN; + } else { + sc->pins[pin].pin_flags |= GPIO_PIN_INVOUT; + } + } +} + +static int +mtk_gpio_attach(device_t dev) +{ + struct mtk_gpio_softc *sc; + phandle_t node; + uint32_t i, num_pins; + + sc = device_get_softc(dev); + sc->dev = dev; + + if (bus_alloc_resources(dev, mtk_gpio_spec, sc->res)) { + device_printf(dev, "could not allocate resources for device\n"); + return (ENXIO); + } + + MTK_GPIO_LOCK_INIT(sc); + + node = ofw_bus_get_node(dev); + + if (OF_hasprop(node, "clocks")) + mtk_soc_start_clock(dev); + if (OF_hasprop(node, "resets")) + mtk_soc_reset_device(dev); + + if (OF_hasprop(node, "mtk,register-gap")) { + device_printf(dev, "\n"); + sc->do_remap = 1; + } else { + device_printf(dev, "\n"); + sc->do_remap = 0; + } + + if (OF_hasprop(node, "mtk,num-pins") && (OF_getencprop(node, + "mtk,num-pins", &num_pins, sizeof(num_pins)) >= 0)) + sc->num_pins = num_pins; + else + sc->num_pins = MTK_GPIO_PINS; + + for (i = 0; i < num_pins; i++) { + sc->pins[i].pin_caps |= GPIO_PIN_INPUT | GPIO_PIN_OUTPUT | + GPIO_PIN_INVIN | GPIO_PIN_INVOUT; + sc->pins[i].intr_polarity = INTR_POLARITY_HIGH; + sc->pins[i].intr_trigger = INTR_TRIGGER_EDGE; + + snprintf(sc->pins[i].pin_name, GPIOMAXNAME - 1, "gpio%c%d", + device_get_unit(dev) + 'a', i); + sc->pins[i].pin_name[GPIOMAXNAME - 1] = '\0'; + + mtk_gpio_pin_probe(sc, i); + } + + if (mtk_pic_register_isrcs(sc) != 0) { + device_printf(dev, "could not register PIC ISRCs\n"); + goto fail; + } + + if (intr_pic_register(dev, OF_xref_from_node(node)) != 0) { + device_printf(dev, "could not register PIC\n"); + goto fail; + } + + if (bus_setup_intr(dev, sc->res[1], INTR_TYPE_MISC | INTR_MPSAFE, + mtk_gpio_intr, NULL, sc, &sc->intrhand) != 0) + goto fail_pic; + + sc->busdev = gpiobus_attach_bus(dev); + if (sc->busdev == NULL) + goto fail_pic; + + return (0); +fail_pic: + intr_pic_deregister(dev, OF_xref_from_node(node)); +fail: + if(sc->intrhand != NULL) + bus_teardown_intr(dev, sc->res[1], sc->intrhand); + bus_release_resources(dev, mtk_gpio_spec, sc->res); + MTK_GPIO_LOCK_DESTROY(sc); + return (ENXIO); +} + +static int +mtk_gpio_detach(device_t dev) +{ + struct mtk_gpio_softc *sc = device_get_softc(dev); + phandle_t node; + + node = ofw_bus_get_node(dev); + intr_pic_deregister(dev, OF_xref_from_node(node)); + if (sc->intrhand != NULL) + bus_teardown_intr(dev, sc->res[1], sc->intrhand); + bus_release_resources(dev, mtk_gpio_spec, sc->res); + MTK_GPIO_LOCK_DESTROY(sc); + return (0); +} + +static device_t +mtk_gpio_get_bus(device_t dev) +{ + struct mtk_gpio_softc *sc = device_get_softc(dev); + + return (sc->busdev); +} + +static int +mtk_gpio_pin_max(device_t dev, int *maxpin) +{ + struct mtk_gpio_softc *sc = device_get_softc(dev); + + *maxpin = sc->num_pins - 1; + + return (0); +} + +static int +mtk_gpio_pin_getcaps(device_t dev, uint32_t pin, uint32_t *caps) +{ + struct mtk_gpio_softc *sc = device_get_softc(dev); + + if (pin >= sc->num_pins) + return (EINVAL); + + MTK_GPIO_LOCK(sc); + *caps = sc->pins[pin].pin_caps; + MTK_GPIO_UNLOCK(sc); + + return (0); +} + +static int +mtk_gpio_pin_getflags(device_t dev, uint32_t pin, uint32_t *flags) +{ + struct mtk_gpio_softc *sc = device_get_softc(dev); + + if (pin >= sc->num_pins) + return (EINVAL); + + MTK_GPIO_LOCK(sc); + *flags = sc->pins[pin].pin_flags; + MTK_GPIO_UNLOCK(sc); + + return (0); +} + +static int +mtk_gpio_pin_getname(device_t dev, uint32_t pin, char *name) +{ + struct mtk_gpio_softc *sc = device_get_softc(dev); + + if (pin >= sc->num_pins) + return (EINVAL); + + strncpy(name, sc->pins[pin].pin_name, GPIOMAXNAME - 1); + name[GPIOMAXNAME - 1] = '\0'; + + return (0); +} + +static int +mtk_gpio_pin_setflags(device_t dev, uint32_t pin, uint32_t flags) +{ + struct mtk_gpio_softc *sc; + int retval; + + sc = device_get_softc(dev); + + if (pin >= sc->num_pins) + return (EINVAL); + + MTK_GPIO_LOCK(sc); + retval = mtk_gpio_pin_set_direction(sc, pin, + flags & (GPIO_PIN_INPUT | GPIO_PIN_OUTPUT)); + if (retval == 0) + retval = mtk_gpio_pin_set_invert(sc, pin, + flags & (GPIO_PIN_INVIN | GPIO_PIN_INVOUT)); + MTK_GPIO_UNLOCK(sc); + + return (retval); +} + +static int +mtk_gpio_pin_set(device_t dev, uint32_t pin, unsigned int value) +{ + struct mtk_gpio_softc *sc = device_get_softc(dev); + + if (pin >= sc->num_pins || !(sc->pins[pin].pin_flags & GPIO_PIN_OUTPUT)) + return (EINVAL); + + MTK_GPIO_LOCK(sc); + if (value) + MTK_WRITE_4(sc, GPIO_PIOSET(sc), (1u << pin)); + else + MTK_WRITE_4(sc, GPIO_PIORESET(sc), (1u << pin)); + MTK_GPIO_UNLOCK(sc); + + return (0); +} + +static int +mtk_gpio_pin_get(device_t dev, uint32_t pin, unsigned int *val) +{ + struct mtk_gpio_softc *sc; + uint32_t data; + + sc = device_get_softc(dev); + + if (pin >= sc->num_pins || !(sc->pins[pin].pin_flags & GPIO_PIN_INPUT)) + return (EINVAL); + + MTK_GPIO_LOCK(sc); + data = MTK_READ_4(sc, GPIO_PIODATA(sc)); + MTK_GPIO_UNLOCK(sc); + *val = (data & (1u << pin)) ? 1 : 0; + + return (0); +} + +static int +mtk_gpio_pin_toggle(device_t dev, uint32_t pin) +{ + struct mtk_gpio_softc *sc = device_get_softc(dev); + + if (pin >= sc->num_pins || !(sc->pins[pin].pin_flags & GPIO_PIN_OUTPUT)) + return (EINVAL); + + MTK_GPIO_LOCK(sc); + MTK_WRITE_4(sc, GPIO_PIOTOG(sc), (1u << pin)); + MTK_GPIO_UNLOCK(sc); + + return (0); +} + +static int +mtk_gpio_pic_map_intr(device_t dev, struct intr_map_data *data, + struct intr_irqsrc **isrcp) +{ + struct mtk_gpio_softc *sc; + + sc = device_get_softc(dev); + + if (data == NULL || data->type != INTR_MAP_DATA_FDT || + data->fdt.ncells != 1 || data->fdt.cells[0] >= sc->num_pins) + return (EINVAL); + + *isrcp = PIC_INTR_ISRC(sc, data->fdt.cells[0]); + return (0); +} + +static void +mtk_gpio_pic_enable_intr(device_t dev, struct intr_irqsrc *isrc) +{ + struct mtk_gpio_softc *sc; + struct mtk_gpio_pin_irqsrc *pisrc; + uint32_t pin, mask, val; + + sc = device_get_softc(dev); + + pisrc = (struct mtk_gpio_pin_irqsrc *)isrc; + pin = pisrc->irq; + mask = 1u << pin; + + MTK_GPIO_LOCK(sc); + + if (sc->pins[pin].intr_polarity == INTR_POLARITY_LOW) { + val = MTK_READ_4(sc, GPIO_PIORENA(sc)) & ~mask; + MTK_WRITE_4(sc, GPIO_PIORENA(sc), val); + val = MTK_READ_4(sc, GPIO_PIOFENA(sc)) | mask; + MTK_WRITE_4(sc, GPIO_PIOFENA(sc), val); + } else { + val = MTK_READ_4(sc, GPIO_PIOFENA(sc)) & ~mask; + MTK_WRITE_4(sc, GPIO_PIOFENA(sc), val); + val = MTK_READ_4(sc, GPIO_PIORENA(sc)) | mask; + MTK_WRITE_4(sc, GPIO_PIORENA(sc), val); + } + + MTK_GPIO_UNLOCK(sc); +} + +static void +mtk_gpio_pic_disable_intr(device_t dev, struct intr_irqsrc *isrc) +{ + struct mtk_gpio_softc *sc; + struct mtk_gpio_pin_irqsrc *pisrc; + uint32_t pin, mask, val; + + sc = device_get_softc(dev); + + pisrc = (struct mtk_gpio_pin_irqsrc *)isrc; + pin = pisrc->irq; + mask = 1u << pin; + + MTK_GPIO_LOCK(sc); + + val = MTK_READ_4(sc, GPIO_PIORENA(sc)) & ~mask; + MTK_WRITE_4(sc, GPIO_PIORENA(sc), val); + val = MTK_READ_4(sc, GPIO_PIOFENA(sc)) & ~mask; + MTK_WRITE_4(sc, GPIO_PIOFENA(sc), val); + + MTK_GPIO_UNLOCK(sc); +} + +static void +mtk_gpio_pic_pre_ithread(device_t dev, struct intr_irqsrc *isrc) +{ + + mtk_gpio_pic_disable_intr(dev, isrc); +} + +static void +mtk_gpio_pic_post_ithread(device_t dev, struct intr_irqsrc *isrc) +{ + + mtk_gpio_pic_enable_intr(dev, isrc); +} + +static void +mtk_gpio_pic_post_filter(device_t dev, struct intr_irqsrc *isrc) +{ + struct mtk_gpio_softc *sc; + struct mtk_gpio_pin_irqsrc *pisrc; + + pisrc = (struct mtk_gpio_pin_irqsrc *)isrc; + sc = device_get_softc(dev); + MTK_WRITE_4(sc, GPIO_PIOINT(sc), 1u << pisrc->irq); +} + +static int +mtk_gpio_intr(void *arg) +{ + struct mtk_gpio_softc *sc; + uint32_t i, interrupts; + + sc = arg; + interrupts = MTK_READ_4(sc, GPIO_PIOINT(sc)); + + for (i = 0; interrupts != 0; i++, interrupts >>= 1) { + if ((interrupts & 0x1) == 0) + continue; + if (intr_isrc_dispatch(PIC_INTR_ISRC(sc, i), + curthread->td_intr_frame) != 0) { + device_printf(sc->dev, "spurious interrupt %d\n", i); + } + } + + return (FILTER_HANDLED); +} + +static phandle_t +mtk_gpio_get_node(device_t bus, device_t dev) +{ + + /* We only have one child, the GPIO bus, which needs our own node. */ + return (ofw_bus_get_node(bus)); +} + +static device_method_t mtk_gpio_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, mtk_gpio_probe), + DEVMETHOD(device_attach, mtk_gpio_attach), + DEVMETHOD(device_detach, mtk_gpio_detach), + + /* GPIO protocol */ + DEVMETHOD(gpio_get_bus, mtk_gpio_get_bus), + DEVMETHOD(gpio_pin_max, mtk_gpio_pin_max), + DEVMETHOD(gpio_pin_getname, mtk_gpio_pin_getname), + DEVMETHOD(gpio_pin_getflags, mtk_gpio_pin_getflags), + DEVMETHOD(gpio_pin_getcaps, mtk_gpio_pin_getcaps), + DEVMETHOD(gpio_pin_setflags, mtk_gpio_pin_setflags), + DEVMETHOD(gpio_pin_get, mtk_gpio_pin_get), + DEVMETHOD(gpio_pin_set, mtk_gpio_pin_set), + DEVMETHOD(gpio_pin_toggle, mtk_gpio_pin_toggle), + + /* Interrupt controller interface */ + DEVMETHOD(pic_disable_intr, mtk_gpio_pic_disable_intr), + DEVMETHOD(pic_enable_intr, mtk_gpio_pic_enable_intr), + DEVMETHOD(pic_map_intr, mtk_gpio_pic_map_intr), + DEVMETHOD(pic_post_filter, mtk_gpio_pic_post_filter), + DEVMETHOD(pic_post_ithread, mtk_gpio_pic_post_ithread), + DEVMETHOD(pic_pre_ithread, mtk_gpio_pic_pre_ithread), + + /* ofw_bus interface */ + DEVMETHOD(ofw_bus_get_node, mtk_gpio_get_node), + + DEVMETHOD_END +}; + +static driver_t mtk_gpio_driver = { + "gpio", + mtk_gpio_methods, + sizeof(struct mtk_gpio_softc), +}; + +static devclass_t mtk_gpio_devclass; + +EARLY_DRIVER_MODULE(mtk_gpio_v1, simplebus, mtk_gpio_driver, + mtk_gpio_devclass, 0, 0, BUS_PASS_INTERRUPT + BUS_PASS_ORDER_LATE); diff --git a/sys/mips/mediatek/mtk_gpio_v2.c b/sys/mips/mediatek/mtk_gpio_v2.c new file mode 100644 index 00000000000..543133c3f43 --- /dev/null +++ b/sys/mips/mediatek/mtk_gpio_v2.c @@ -0,0 +1,646 @@ +/*- + * Copyright 2016 Stanislav Galabov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "opt_platform.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + +#include + +#include +#include +#include + +#include + +#include "gpio_if.h" +#include "pic_if.h" + +#define MTK_GPIO_PINS 32 + +struct mtk_gpio_pin_irqsrc { + struct intr_irqsrc isrc; + u_int irq; +}; + +struct mtk_gpio_pin { + uint32_t pin_caps; + uint32_t pin_flags; + enum intr_trigger intr_trigger; + enum intr_polarity intr_polarity; + char pin_name[GPIOMAXNAME]; + struct mtk_gpio_pin_irqsrc pin_irqsrc; +}; + +struct mtk_gpio_softc { + device_t dev; + device_t busdev; + struct resource *res[2]; + struct mtx mtx; + struct mtk_gpio_pin pins[MTK_GPIO_PINS]; + void *intrhand; + + uint32_t num_pins; + uint32_t bank_id; +}; + +#define PIC_INTR_ISRC(sc, irq) (&(sc)->pins[(irq)].pin_irqsrc.isrc) + +static struct resource_spec mtk_gpio_spec[] = { + { SYS_RES_MEMORY, 0, RF_ACTIVE | RF_SHAREABLE }, + { SYS_RES_IRQ, 0, RF_ACTIVE | RF_SHAREABLE }, + { -1, 0 } +}; + +static int mtk_gpio_probe(device_t dev); +static int mtk_gpio_attach(device_t dev); +static int mtk_gpio_detach(device_t dev); +static int mtk_gpio_intr(void *arg); + +#define MTK_GPIO_LOCK(sc) mtx_lock_spin(&(sc)->mtx) +#define MTK_GPIO_UNLOCK(sc) mtx_unlock_spin(&(sc)->mtx) +#define MTK_GPIO_LOCK_INIT(sc) \ + mtx_init(&(sc)->mtx, device_get_nameunit((sc)->dev), \ + "mtk_gpio", MTX_SPIN) +#define MTK_GPIO_LOCK_DESTROY(sc) mtx_destroy(&(sc)->mtx) + +#define MTK_WRITE_4(sc, reg, val) bus_write_4((sc)->res[0], (reg), (val)) +#define MTK_READ_4(sc, reg) bus_read_4((sc)->res[0], (reg)) + +/* Register definitions */ +#define GPIO_REG(_sc, _reg) ((_reg) + (_sc)->bank_id * 0x4) +#define GPIO_PIOINT(_sc) GPIO_REG((_sc), 0x0090) +#define GPIO_PIOEDGE(_sc) GPIO_REG((_sc), 0x00A0) +#define GPIO_PIORENA(_sc) GPIO_REG((_sc), 0x0050) +#define GPIO_PIOFENA(_sc) GPIO_REG((_sc), 0x0060) +#define GPIO_PIODATA(_sc) GPIO_REG((_sc), 0x0020) +#define GPIO_PIODIR(_sc) GPIO_REG((_sc), 0x0000) +#define GPIO_PIOPOL(_sc) GPIO_REG((_sc), 0x0010) +#define GPIO_PIOSET(_sc) GPIO_REG((_sc), 0x0030) +#define GPIO_PIORESET(_sc) GPIO_REG((_sc), 0x0040) + +static struct ofw_compat_data compat_data[] = { + { "mtk,mt7621-gpio", 1 }, + { "mtk,mt7628-gpio", 1 }, + { NULL, 0 } +}; + +static int +mtk_gpio_probe(device_t dev) +{ + phandle_t node; + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) + return (ENXIO); + + node = ofw_bus_get_node(dev); + if (!OF_hasprop(node, "gpio-controller")) + return (ENXIO); + + device_set_desc(dev, "MTK GPIO Controller (v2)"); + + return (BUS_PROBE_DEFAULT); +} + +static int +mtk_pic_register_isrcs(struct mtk_gpio_softc *sc) +{ + int error; + uint32_t irq; + struct intr_irqsrc *isrc; + const char *name; + + name = device_get_nameunit(sc->dev); + for (irq = 0; irq < sc->num_pins; irq++) { + sc->pins[irq].pin_irqsrc.irq = irq; + isrc = PIC_INTR_ISRC(sc, irq); + error = intr_isrc_register(isrc, sc->dev, 0, "%s", name); + if (error != 0) { + /* XXX call intr_isrc_deregister */ + device_printf(sc->dev, "%s failed", __func__); + return (error); + } + } + + return (0); +} + +static int +mtk_gpio_pin_set_direction(struct mtk_gpio_softc *sc, uint32_t pin, + uint32_t dir) +{ + uint32_t regval, mask = (1u << pin); + + if (!(sc->pins[pin].pin_caps & dir)) + return (EINVAL); + + regval = MTK_READ_4(sc, GPIO_PIODIR(sc)); + if (dir == GPIO_PIN_INPUT) + regval &= ~mask; + else + regval |= mask; + MTK_WRITE_4(sc, GPIO_PIODIR(sc), regval); + + sc->pins[pin].pin_flags &= ~(GPIO_PIN_INPUT | GPIO_PIN_OUTPUT); + sc->pins[pin].pin_flags |= dir; + + return (0); +} + +static int +mtk_gpio_pin_set_invert(struct mtk_gpio_softc *sc, uint32_t pin, uint32_t val) +{ + uint32_t regval, mask = (1u << pin); + + regval = MTK_READ_4(sc, GPIO_PIOPOL(sc)); + if (val) + regval |= mask; + else + regval &= ~mask; + MTK_WRITE_4(sc, GPIO_PIOPOL(sc), regval); + sc->pins[pin].pin_flags &= ~(GPIO_PIN_INVIN | GPIO_PIN_INVOUT); + sc->pins[pin].pin_flags |= val; + + return (0); +} + +static void +mtk_gpio_pin_probe(struct mtk_gpio_softc *sc, uint32_t pin) +{ + uint32_t mask = (1u << pin); + uint32_t val; + + /* Clear cached gpio config */ + sc->pins[pin].pin_flags = 0; + + val = MTK_READ_4(sc, GPIO_PIORENA(sc)) | + MTK_READ_4(sc, GPIO_PIOFENA(sc)); + if (val & mask) { + /* Pin is in interrupt mode */ + sc->pins[pin].intr_trigger = INTR_TRIGGER_EDGE; + val = MTK_READ_4(sc, GPIO_PIORENA(sc)); + if (val & mask) + sc->pins[pin].intr_polarity = INTR_POLARITY_HIGH; + else + sc->pins[pin].intr_polarity = INTR_POLARITY_LOW; + } + + val = MTK_READ_4(sc, GPIO_PIODIR(sc)); + if (val & mask) + sc->pins[pin].pin_flags |= GPIO_PIN_OUTPUT; + else + sc->pins[pin].pin_flags |= GPIO_PIN_INPUT; + + val = MTK_READ_4(sc, GPIO_PIOPOL(sc)); + if (val & mask) { + if (sc->pins[pin].pin_flags & GPIO_PIN_INPUT) { + sc->pins[pin].pin_flags |= GPIO_PIN_INVIN; + } else { + sc->pins[pin].pin_flags |= GPIO_PIN_INVOUT; + } + } +} + +static int +mtk_gpio_attach(device_t dev) +{ + struct mtk_gpio_softc *sc; + phandle_t node; + uint32_t i, num_pins, bank_id; + + sc = device_get_softc(dev); + sc->dev = dev; + + if (bus_alloc_resources(dev, mtk_gpio_spec, sc->res)) { + device_printf(dev, "could not allocate resources for device\n"); + return (ENXIO); + } + + MTK_GPIO_LOCK_INIT(sc); + + node = ofw_bus_get_node(dev); + + if (OF_hasprop(node, "clocks")) + mtk_soc_start_clock(dev); + if (OF_hasprop(node, "resets")) + mtk_soc_reset_device(dev); + + if (OF_hasprop(node, "mtk,bank-id") && (OF_getencprop(node, + "mtk,bank-id", &bank_id, sizeof(bank_id)) >= 0)) + sc->bank_id = bank_id; + else + sc->bank_id = device_get_unit(dev); + + if (OF_hasprop(node, "mtk,num-pins") && (OF_getencprop(node, + "mtk,num-pins", &num_pins, sizeof(num_pins)) >= 0)) + sc->num_pins = num_pins; + else + sc->num_pins = MTK_GPIO_PINS; + + for (i = 0; i < num_pins; i++) { + sc->pins[i].pin_caps |= GPIO_PIN_INPUT | GPIO_PIN_OUTPUT | + GPIO_PIN_INVIN | GPIO_PIN_INVOUT; + sc->pins[i].intr_polarity = INTR_POLARITY_HIGH; + sc->pins[i].intr_trigger = INTR_TRIGGER_EDGE; + + snprintf(sc->pins[i].pin_name, GPIOMAXNAME - 1, "gpio%c%d", + device_get_unit(dev) + 'a', i); + sc->pins[i].pin_name[GPIOMAXNAME - 1] = '\0'; + + mtk_gpio_pin_probe(sc, i); + } + + if (mtk_pic_register_isrcs(sc) != 0) { + device_printf(dev, "could not register PIC ISRCs\n"); + goto fail; + } + + if (intr_pic_register(dev, OF_xref_from_node(node)) != 0) { + device_printf(dev, "could not register PIC\n"); + goto fail; + } + + if (bus_setup_intr(dev, sc->res[1], INTR_TYPE_MISC | INTR_MPSAFE, + mtk_gpio_intr, NULL, sc, &sc->intrhand) != 0) + goto fail_pic; + + sc->busdev = gpiobus_attach_bus(dev); + if (sc->busdev == NULL) + goto fail_pic; + + return (0); +fail_pic: + intr_pic_deregister(dev, OF_xref_from_node(node)); +fail: + if(sc->intrhand != NULL) + bus_teardown_intr(dev, sc->res[1], sc->intrhand); + bus_release_resources(dev, mtk_gpio_spec, sc->res); + MTK_GPIO_LOCK_DESTROY(sc); + return (ENXIO); +} + +static int +mtk_gpio_detach(device_t dev) +{ + struct mtk_gpio_softc *sc = device_get_softc(dev); + phandle_t node; + + node = ofw_bus_get_node(dev); + intr_pic_deregister(dev, OF_xref_from_node(node)); + if (sc->intrhand != NULL) + bus_teardown_intr(dev, sc->res[1], sc->intrhand); + bus_release_resources(dev, mtk_gpio_spec, sc->res); + MTK_GPIO_LOCK_DESTROY(sc); + return (0); +} + +static device_t +mtk_gpio_get_bus(device_t dev) +{ + struct mtk_gpio_softc *sc = device_get_softc(dev); + + return (sc->busdev); +} + +static int +mtk_gpio_pin_max(device_t dev, int *maxpin) +{ + struct mtk_gpio_softc *sc = device_get_softc(dev); + + *maxpin = sc->num_pins - 1; + + return (0); +} + +static int +mtk_gpio_pin_getcaps(device_t dev, uint32_t pin, uint32_t *caps) +{ + struct mtk_gpio_softc *sc = device_get_softc(dev); + + if (pin >= sc->num_pins) + return (EINVAL); + + MTK_GPIO_LOCK(sc); + *caps = sc->pins[pin].pin_caps; + MTK_GPIO_UNLOCK(sc); + + return (0); +} + +static int +mtk_gpio_pin_getflags(device_t dev, uint32_t pin, uint32_t *flags) +{ + struct mtk_gpio_softc *sc = device_get_softc(dev); + + if (pin >= sc->num_pins) + return (EINVAL); + + MTK_GPIO_LOCK(sc); + *flags = sc->pins[pin].pin_flags; + MTK_GPIO_UNLOCK(sc); + + return (0); +} + +static int +mtk_gpio_pin_getname(device_t dev, uint32_t pin, char *name) +{ + struct mtk_gpio_softc *sc = device_get_softc(dev); + + if (pin >= sc->num_pins) + return (EINVAL); + + strncpy(name, sc->pins[pin].pin_name, GPIOMAXNAME - 1); + name[GPIOMAXNAME - 1] = '\0'; + + return (0); +} + +static int +mtk_gpio_pin_setflags(device_t dev, uint32_t pin, uint32_t flags) +{ + struct mtk_gpio_softc *sc; + int retval; + + sc = device_get_softc(dev); + + if (pin >= sc->num_pins) + return (EINVAL); + + MTK_GPIO_LOCK(sc); + retval = mtk_gpio_pin_set_direction(sc, pin, + flags & (GPIO_PIN_INPUT | GPIO_PIN_OUTPUT)); + if (retval == 0) + retval = mtk_gpio_pin_set_invert(sc, pin, + flags & (GPIO_PIN_INVIN | GPIO_PIN_INVOUT)); + MTK_GPIO_UNLOCK(sc); + + return (retval); +} + +static int +mtk_gpio_pin_set(device_t dev, uint32_t pin, unsigned int value) +{ + struct mtk_gpio_softc *sc = device_get_softc(dev); + + if (pin >= sc->num_pins || !(sc->pins[pin].pin_flags & GPIO_PIN_OUTPUT)) + return (EINVAL); + + MTK_GPIO_LOCK(sc); + if (value) + MTK_WRITE_4(sc, GPIO_PIOSET(sc), (1u << pin)); + else + MTK_WRITE_4(sc, GPIO_PIORESET(sc), (1u << pin)); + MTK_GPIO_UNLOCK(sc); + + return (0); +} + +static int +mtk_gpio_pin_get(device_t dev, uint32_t pin, unsigned int *val) +{ + struct mtk_gpio_softc *sc; + uint32_t data; + + sc = device_get_softc(dev); + + if (pin >= sc->num_pins || !(sc->pins[pin].pin_flags & GPIO_PIN_INPUT)) + return (EINVAL); + + MTK_GPIO_LOCK(sc); + data = MTK_READ_4(sc, GPIO_PIODATA(sc)); + MTK_GPIO_UNLOCK(sc); + *val = (data & (1u << pin)) ? 1 : 0; + + return (0); +} + +static int +mtk_gpio_pin_toggle(device_t dev, uint32_t pin) +{ + struct mtk_gpio_softc *sc = device_get_softc(dev); + uint32_t val; + + if (pin >= sc->num_pins || !(sc->pins[pin].pin_flags & GPIO_PIN_OUTPUT)) + return (EINVAL); + + MTK_GPIO_LOCK(sc); + val = MTK_READ_4(sc, GPIO_PIODATA(sc)); + val &= (1u << pin); + if (val) + MTK_WRITE_4(sc, GPIO_PIORESET(sc), (1u << pin)); + else + MTK_WRITE_4(sc, GPIO_PIOSET(sc), (1u << pin)); + MTK_GPIO_UNLOCK(sc); + + return (0); +} + +static int +mtk_gpio_pic_map_intr(device_t dev, struct intr_map_data *data, + struct intr_irqsrc **isrcp) +{ + struct mtk_gpio_softc *sc; + + sc = device_get_softc(dev); + + if (data == NULL || data->type != INTR_MAP_DATA_FDT || + data->fdt.ncells != 1 || data->fdt.cells[0] >= sc->num_pins) + return (EINVAL); + + *isrcp = PIC_INTR_ISRC(sc, data->fdt.cells[0]); + return (0); +} + +static void +mtk_gpio_pic_enable_intr(device_t dev, struct intr_irqsrc *isrc) +{ + struct mtk_gpio_softc *sc; + struct mtk_gpio_pin_irqsrc *pisrc; + uint32_t pin, mask, val; + + sc = device_get_softc(dev); + + pisrc = (struct mtk_gpio_pin_irqsrc *)isrc; + pin = pisrc->irq; + mask = 1u << pin; + + MTK_GPIO_LOCK(sc); + + if (sc->pins[pin].intr_polarity == INTR_POLARITY_LOW) { + val = MTK_READ_4(sc, GPIO_PIORENA(sc)) & ~mask; + MTK_WRITE_4(sc, GPIO_PIORENA(sc), val); + val = MTK_READ_4(sc, GPIO_PIOFENA(sc)) | mask; + MTK_WRITE_4(sc, GPIO_PIOFENA(sc), val); + } else { + val = MTK_READ_4(sc, GPIO_PIOFENA(sc)) & ~mask; + MTK_WRITE_4(sc, GPIO_PIOFENA(sc), val); + val = MTK_READ_4(sc, GPIO_PIORENA(sc)) | mask; + MTK_WRITE_4(sc, GPIO_PIORENA(sc), val); + } + + MTK_GPIO_UNLOCK(sc); +} + +static void +mtk_gpio_pic_disable_intr(device_t dev, struct intr_irqsrc *isrc) +{ + struct mtk_gpio_softc *sc; + struct mtk_gpio_pin_irqsrc *pisrc; + uint32_t pin, mask, val; + + sc = device_get_softc(dev); + + pisrc = (struct mtk_gpio_pin_irqsrc *)isrc; + pin = pisrc->irq; + mask = 1u << pin; + + MTK_GPIO_LOCK(sc); + + val = MTK_READ_4(sc, GPIO_PIORENA(sc)) & ~mask; + MTK_WRITE_4(sc, GPIO_PIORENA(sc), val); + val = MTK_READ_4(sc, GPIO_PIOFENA(sc)) & ~mask; + MTK_WRITE_4(sc, GPIO_PIOFENA(sc), val); + + MTK_GPIO_UNLOCK(sc); +} + +static void +mtk_gpio_pic_pre_ithread(device_t dev, struct intr_irqsrc *isrc) +{ + + mtk_gpio_pic_disable_intr(dev, isrc); +} + +static void +mtk_gpio_pic_post_ithread(device_t dev, struct intr_irqsrc *isrc) +{ + + mtk_gpio_pic_enable_intr(dev, isrc); +} + +static void +mtk_gpio_pic_post_filter(device_t dev, struct intr_irqsrc *isrc) +{ + struct mtk_gpio_softc *sc; + struct mtk_gpio_pin_irqsrc *pisrc; + + pisrc = (struct mtk_gpio_pin_irqsrc *)isrc; + sc = device_get_softc(dev); + MTK_WRITE_4(sc, GPIO_PIOINT(sc), 1u << pisrc->irq); +} + +static int +mtk_gpio_intr(void *arg) +{ + struct mtk_gpio_softc *sc; + uint32_t i, interrupts; + + sc = arg; + interrupts = MTK_READ_4(sc, GPIO_PIOINT(sc)); + + for (i = 0; interrupts != 0; i++, interrupts >>= 1) { + if ((interrupts & 0x1) == 0) + continue; + if (intr_isrc_dispatch(PIC_INTR_ISRC(sc, i), + curthread->td_intr_frame) != 0) { + device_printf(sc->dev, "spurious interrupt %d\n", i); + } + } + + return (FILTER_HANDLED); +} + +static phandle_t +mtk_gpio_get_node(device_t bus, device_t dev) +{ + + /* We only have one child, the GPIO bus, which needs our own node. */ + return (ofw_bus_get_node(bus)); +} + +static device_method_t mtk_gpio_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, mtk_gpio_probe), + DEVMETHOD(device_attach, mtk_gpio_attach), + DEVMETHOD(device_detach, mtk_gpio_detach), + + /* GPIO protocol */ + DEVMETHOD(gpio_get_bus, mtk_gpio_get_bus), + DEVMETHOD(gpio_pin_max, mtk_gpio_pin_max), + DEVMETHOD(gpio_pin_getname, mtk_gpio_pin_getname), + DEVMETHOD(gpio_pin_getflags, mtk_gpio_pin_getflags), + DEVMETHOD(gpio_pin_getcaps, mtk_gpio_pin_getcaps), + DEVMETHOD(gpio_pin_setflags, mtk_gpio_pin_setflags), + DEVMETHOD(gpio_pin_get, mtk_gpio_pin_get), + DEVMETHOD(gpio_pin_set, mtk_gpio_pin_set), + DEVMETHOD(gpio_pin_toggle, mtk_gpio_pin_toggle), + + /* Interrupt controller interface */ + DEVMETHOD(pic_disable_intr, mtk_gpio_pic_disable_intr), + DEVMETHOD(pic_enable_intr, mtk_gpio_pic_enable_intr), + DEVMETHOD(pic_map_intr, mtk_gpio_pic_map_intr), + DEVMETHOD(pic_post_filter, mtk_gpio_pic_post_filter), + DEVMETHOD(pic_post_ithread, mtk_gpio_pic_post_ithread), + DEVMETHOD(pic_pre_ithread, mtk_gpio_pic_pre_ithread), + + /* ofw_bus interface */ + DEVMETHOD(ofw_bus_get_node, mtk_gpio_get_node), + + DEVMETHOD_END +}; + +static driver_t mtk_gpio_driver = { + "gpio", + mtk_gpio_methods, + sizeof(struct mtk_gpio_softc), +}; + +static devclass_t mtk_gpio_devclass; + +EARLY_DRIVER_MODULE(mtk_gpio_v2, simplebus, mtk_gpio_driver, + mtk_gpio_devclass, 0, 0, BUS_PASS_INTERRUPT + BUS_PASS_ORDER_LATE); From cf55df9f83d9345e15317fab36a258aac68cadde Mon Sep 17 00:00:00 2001 From: Svatopluk Kraus Date: Thu, 7 Apr 2016 15:16:33 +0000 Subject: [PATCH 044/159] Fix intr_irq_shuffle(). After r297539, ISRCs doing IPI may be also registered into global interrupt table. Thus, they must be filtered out like per-cpu interrupts. Fortunately, it does not influence anything on interrupt controllers which already use INTRNG. --- sys/kern/subr_intr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/kern/subr_intr.c b/sys/kern/subr_intr.c index 6e6241b6036..dc1e487cf2f 100644 --- a/sys/kern/subr_intr.c +++ b/sys/kern/subr_intr.c @@ -1190,7 +1190,7 @@ intr_irq_shuffle(void *arg __unused) for (i = 0; i < NIRQ; i++) { isrc = irq_sources[i]; if (isrc == NULL || isrc->isrc_handlers == 0 || - isrc->isrc_flags & INTR_ISRCF_PPI) + isrc->isrc_flags & (INTR_ISRCF_PPI | INTR_ISRCF_IPI)) continue; if (isrc->isrc_event != NULL && From f46a487807a7c9e39b88273f9aa9de9e6d91e4c6 Mon Sep 17 00:00:00 2001 From: Svatopluk Kraus Date: Thu, 7 Apr 2016 15:26:12 +0000 Subject: [PATCH 045/159] Properly initialize isrc_cpu field of ISRC which is setup for an IPI. --- sys/arm/arm/gic.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sys/arm/arm/gic.c b/sys/arm/arm/gic.c index 922e3861fc4..5c0aece1987 100644 --- a/sys/arm/arm/gic.c +++ b/sys/arm/arm/gic.c @@ -1003,13 +1003,18 @@ arm_gic_ipi_send(device_t dev, struct intr_irqsrc *isrc, cpuset_t cpus, static int arm_gic_ipi_setup(device_t dev, u_int ipi, struct intr_irqsrc **isrcp) { + struct intr_irqsrc *isrc; struct arm_gic_softc *sc = device_get_softc(dev); if (sgi_first_unused > GIC_LAST_SGI) return (ENOSPC); - *isrcp = GIC_INTR_ISRC(sc, sgi_first_unused); + isrc = GIC_INTR_ISRC(sc, sgi_first_unused); sgi_to_ipi[sgi_first_unused++] = ipi; + + CPU_SET(PCPU_GET(cpuid), &isrc->isrc_cpu); + + *isrcp = isrc; return (0); } #endif From 019a4a20e7926be6e237b9b4618c5cf4420666e1 Mon Sep 17 00:00:00 2001 From: Pietro Cerutti Date: Thu, 7 Apr 2016 16:12:38 +0000 Subject: [PATCH 046/159] Enhance uuencode with a -r option to produce raw output. This matches with uudecode's -r option to decode raw data without initial and final framing lines. $ echo Test | uuencode -mr - | uudecode -mr Test Approved by: cognet MFC after: 1 week --- usr.bin/uuencode/uuencode.1 | 4 ++++ usr.bin/uuencode/uuencode.c | 18 +++++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/usr.bin/uuencode/uuencode.1 b/usr.bin/uuencode/uuencode.1 index 2c31bdcb03b..9ce7e05afac 100644 --- a/usr.bin/uuencode/uuencode.1 +++ b/usr.bin/uuencode/uuencode.1 @@ -40,6 +40,7 @@ .Sh SYNOPSIS .Nm .Op Fl m +.Op Fl r .Op Fl o Ar output_file .Op Ar file .Ar name @@ -50,6 +51,7 @@ .Op Fl i .Fl o Ar output_file .Nm b64encode +.Op Fl r .Op Fl o Ar output_file .Op Ar file .Ar name @@ -123,6 +125,8 @@ The following options are available for Use the Base64 method of encoding, rather than the traditional .Nm algorithm. +.It Fl r +Produce raw output by excluding the initial and final framing lines. .It Fl o Ar output_file Output to .Ar output_file diff --git a/usr.bin/uuencode/uuencode.c b/usr.bin/uuencode/uuencode.c index def8bcc3bcf..500dcd3ebea 100644 --- a/usr.bin/uuencode/uuencode.c +++ b/usr.bin/uuencode/uuencode.c @@ -66,6 +66,7 @@ static void usage(void); static FILE *output; static int mode; +static char raw = 0; static char **av; int @@ -82,7 +83,7 @@ main(int argc, char *argv[]) if (strcmp(basename(argv[0]), "b64encode") == 0) base64 = 1; - while ((ch = getopt(argc, argv, "mo:")) != -1) { + while ((ch = getopt(argc, argv, "mo:r")) != -1) { switch (ch) { case 'm': base64 = 1; @@ -90,6 +91,9 @@ main(int argc, char *argv[]) case 'o': outfile = optarg; break; + case 'r': + raw = 1; + break; case '?': default: usage(); @@ -152,7 +156,8 @@ base64_encode(void) sequence = 0; - fprintf(output, "begin-base64 %o %s\n", mode, *av); + if (!raw) + fprintf(output, "begin-base64 %o %s\n", mode, *av); while ((n = fread(buf, 1, sizeof(buf), stdin))) { ++sequence; rv = b64_ntop(buf, n, buf2, (sizeof(buf2) / sizeof(buf2[0]))); @@ -162,7 +167,8 @@ base64_encode(void) } if (sequence % GROUPS) fprintf(output, "\n"); - fprintf(output, "====\n"); + if (!raw) + fprintf(output, "====\n"); } /* @@ -175,7 +181,8 @@ encode(void) register char *p; char buf[80]; - (void)fprintf(output, "begin %o %s\n", mode, *av); + if (!raw) + (void)fprintf(output, "begin %o %s\n", mode, *av); while ((n = fread(buf, 1, 45, stdin))) { ch = ENC(n); if (fputc(ch, output) == EOF) @@ -209,7 +216,8 @@ encode(void) } if (ferror(stdin)) errx(1, "read error"); - (void)fprintf(output, "%c\nend\n", ENC('\0')); + if (!raw) + (void)fprintf(output, "%c\nend\n", ENC('\0')); } static void From 652523175b817559679062eb032a81840e71b0b6 Mon Sep 17 00:00:00 2001 From: John Baldwin Date: Thu, 7 Apr 2016 17:15:16 +0000 Subject: [PATCH 047/159] Associate device_t objects with ACPI handles via PCI_CHILD_ADDED(). Previously, the ACPI PCI bus driver did a single pass over the devices in the namespace that were a child of a given PCI bus to associate the PCI bus-enumerated device_t devices with the corresponding ACPI handles. However, this meant that handles were only established at runtime for devices found during the initial PCI bus scan. PCI_IOV adds devices that show up after the initial PCI bus scan, and coming changes to add a bus rescan can also add devices after the initial scan. This change adds a pci_child_added() callback to the ACPI PCI bus that walks the namespace to find the ACPI handle for each device that is added. Using a callback means that the handle is correctly set for any device no matter how it is added (initial scan, IOV, or a bus rescan). --- sys/dev/acpica/acpi_pci.c | 56 ++++++++++++++++------------------ sys/dev/acpica/acpi_pcivar.h | 38 +++++++++++++++++++++++ sys/dev/xen/pci/xen_acpi_pci.c | 11 ++++++- 3 files changed, 75 insertions(+), 30 deletions(-) create mode 100644 sys/dev/acpica/acpi_pcivar.h diff --git a/sys/dev/acpica/acpi_pci.c b/sys/dev/acpica/acpi_pci.c index 09cecc3283a..1dee131b498 100644 --- a/sys/dev/acpica/acpi_pci.c +++ b/sys/dev/acpica/acpi_pci.c @@ -42,6 +42,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include @@ -104,6 +105,7 @@ static device_method_t acpi_pci_methods[] = { DEVMETHOD(bus_get_domain, acpi_get_domain), /* PCI interface */ + DEVMETHOD(pci_child_added, acpi_pci_child_added), DEVMETHOD(pci_set_powerstate, acpi_pci_set_powerstate_method), #ifdef PCI_IOV DEVMETHOD(pci_create_iov_child, acpi_pci_create_iov_child), @@ -271,31 +273,35 @@ acpi_pci_save_handle(ACPI_HANDLE handle, UINT32 level, void *context, void **status) { struct acpi_pci_devinfo *dinfo; - device_t *devlist; - int devcount, i, func, slot; + device_t child; + int func, slot; UINT32 address; ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); + child = context; if (ACPI_FAILURE(acpi_GetInteger(handle, "_ADR", &address))) return_ACPI_STATUS (AE_OK); slot = ACPI_ADR_PCI_SLOT(address); func = ACPI_ADR_PCI_FUNC(address); - if (device_get_children((device_t)context, &devlist, &devcount) != 0) - return_ACPI_STATUS (AE_OK); - for (i = 0; i < devcount; i++) { - dinfo = device_get_ivars(devlist[i]); - if (dinfo->ap_dinfo.cfg.func == func && - dinfo->ap_dinfo.cfg.slot == slot) { - dinfo->ap_handle = handle; - acpi_pci_update_device(handle, devlist[i]); - break; - } + dinfo = device_get_ivars(child); + if (dinfo->ap_dinfo.cfg.func == func && + dinfo->ap_dinfo.cfg.slot == slot) { + dinfo->ap_handle = handle; + acpi_pci_update_device(handle, child); + return_ACPI_STATUS (AE_CTRL_TERMINATE); } - free(devlist, M_TEMP); return_ACPI_STATUS (AE_OK); } +void +acpi_pci_child_added(device_t dev, device_t child) +{ + + AcpiWalkNamespace(ACPI_TYPE_DEVICE, acpi_get_handle(dev), 1, + acpi_pci_save_handle, NULL, child, NULL); +} + static int acpi_pci_probe(device_t dev) { @@ -325,18 +331,18 @@ acpi_pci_attach(device_t dev) busno = pcib_get_bus(dev); /* - * First, PCI devices are added as in the normal PCI bus driver. - * Afterwards, the ACPI namespace under the bridge driver is - * walked to save ACPI handles to all the devices that appear in - * the ACPI namespace as immediate descendants of the bridge. + * PCI devices are added via the bus scan in the normal PCI + * bus driver. As each device is added, the + * acpi_pci_child_added() callback walks the ACPI namespace + * under the bridge driver to save ACPI handles to all the + * devices that appear in the ACPI namespace as immediate + * descendants of the bridge. * * XXX: Sometimes PCI devices show up in the ACPI namespace that * pci_add_children() doesn't find. We currently just ignore * these devices. */ pci_add_children(dev, domain, busno, sizeof(struct acpi_pci_devinfo)); - AcpiWalkNamespace(ACPI_TYPE_DEVICE, acpi_get_handle(dev), 1, - acpi_pci_save_handle, NULL, dev, NULL); return (bus_generic_attach(dev)); } @@ -371,17 +377,9 @@ static device_t acpi_pci_create_iov_child(device_t bus, device_t pf, uint16_t rid, uint16_t vid, uint16_t did) { - struct acpi_pci_devinfo *dinfo; - device_t vf; - vf = pci_add_iov_child(bus, pf, sizeof(struct acpi_pci_devinfo), rid, - vid, did); - if (vf == NULL) - return (NULL); - - dinfo = device_get_ivars(vf); - dinfo->ap_handle = NULL; - return (vf); + return (pci_add_iov_child(bus, pf, sizeof(struct acpi_pci_devinfo), rid, + vid, did)); } #endif diff --git a/sys/dev/acpica/acpi_pcivar.h b/sys/dev/acpica/acpi_pcivar.h new file mode 100644 index 00000000000..a720cc25ab1 --- /dev/null +++ b/sys/dev/acpica/acpi_pcivar.h @@ -0,0 +1,38 @@ +/*- + * Copyright (c) 2016 John Baldwin + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _ACPI_PCIVAR_H_ +#define _ACPI_PCIVAR_H_ + +#ifdef _KERNEL + +void acpi_pci_child_added(device_t dev, device_t child); + +#endif + +#endif /* !_ACPI_PCIVAR_H_ */ diff --git a/sys/dev/xen/pci/xen_acpi_pci.c b/sys/dev/xen/pci/xen_acpi_pci.c index 0eadd4ae6ca..11797fb772d 100644 --- a/sys/dev/xen/pci/xen_acpi_pci.c +++ b/sys/dev/xen/pci/xen_acpi_pci.c @@ -38,6 +38,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include @@ -65,6 +66,14 @@ xen_acpi_pci_probe(device_t dev) return (BUS_PROBE_SPECIFIC); } +static void +xen_acpi_pci_child_added(device_t dev, device_t child) +{ + + acpi_pci_child_added(dev, child); + xen_pci_child_added_method(dev, child); +} + static device_method_t xen_acpi_pci_methods[] = { /* Device interface */ DEVMETHOD(device_probe, xen_acpi_pci_probe), @@ -72,7 +81,7 @@ static device_method_t xen_acpi_pci_methods[] = { /* PCI interface overwrites */ DEVMETHOD(pci_enable_msi, xen_pci_enable_msi_method), DEVMETHOD(pci_disable_msi, xen_pci_disable_msi_method), - DEVMETHOD(pci_child_added, xen_pci_child_added_method), + DEVMETHOD(pci_child_added, xen_acpi_pci_child_added), DEVMETHOD_END }; From 8294827ab68c47e390f488421149a29758b96e4f Mon Sep 17 00:00:00 2001 From: Ian Lepore Date: Thu, 7 Apr 2016 17:45:01 +0000 Subject: [PATCH 048/159] Comestic changes; when INTRNG support was added, some functions became oddly separated from related functionality. This just moves some blocks of code around so that setup_intr and teardown_intr are near each other again, and likewise for enable/disable_intr. No functional changes. --- sys/arm/freescale/imx/imx_gpio.c | 80 ++++++++++++++++---------------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/sys/arm/freescale/imx/imx_gpio.c b/sys/arm/freescale/imx/imx_gpio.c index cdff020e659..e67aa6690b3 100644 --- a/sys/arm/freescale/imx/imx_gpio.c +++ b/sys/arm/freescale/imx/imx_gpio.c @@ -156,45 +156,6 @@ static int imx51_gpio_pin_get(device_t, uint32_t, unsigned int *); static int imx51_gpio_pin_toggle(device_t, uint32_t pin); #ifdef ARM_INTRNG -static int -gpio_pic_teardown_intr(device_t dev, struct intr_irqsrc *isrc, - struct resource *res, struct intr_map_data *data) -{ - struct imx51_gpio_softc *sc; - struct gpio_irqsrc *gi; - - sc = device_get_softc(dev); - if (isrc->isrc_handlers == 0) { - gi = (struct gpio_irqsrc *)isrc; - gi->gi_pol = INTR_POLARITY_CONFORM; - gi->gi_trig = INTR_TRIGGER_CONFORM; - - // XXX Not sure this is necessary - mtx_lock_spin(&sc->sc_mtx); - CLEAR4(sc, IMX_GPIO_IMR_REG, (1U << gi->gi_irq)); - WRITE4(sc, IMX_GPIO_ISR_REG, (1U << gi->gi_irq)); - mtx_unlock_spin(&sc->sc_mtx); - } - return (0); -} - -/* - * this is mask_intr - */ -static void -gpio_pic_disable_intr(device_t dev, struct intr_irqsrc *isrc) -{ - struct imx51_gpio_softc *sc; - u_int irq; - - sc = device_get_softc(dev); - irq = ((struct gpio_irqsrc *)isrc)->gi_irq; - - mtx_lock_spin(&sc->sc_mtx); - CLEAR4(sc, IMX_GPIO_IMR_REG, (1U << irq)); - mtx_unlock_spin(&sc->sc_mtx); -} - static int gpio_pic_map_fdt(device_t dev, u_int ncells, pcell_t *cells, u_int *irqp, enum intr_polarity *polp, enum intr_trigger *trigp) @@ -278,6 +239,28 @@ gpio_pic_map_intr(device_t dev, struct intr_map_data *data, return (error); } +static int +gpio_pic_teardown_intr(device_t dev, struct intr_irqsrc *isrc, + struct resource *res, struct intr_map_data *data) +{ + struct imx51_gpio_softc *sc; + struct gpio_irqsrc *gi; + + sc = device_get_softc(dev); + if (isrc->isrc_handlers == 0) { + gi = (struct gpio_irqsrc *)isrc; + gi->gi_pol = INTR_POLARITY_CONFORM; + gi->gi_trig = INTR_TRIGGER_CONFORM; + + // XXX Not sure this is necessary + mtx_lock_spin(&sc->sc_mtx); + CLEAR4(sc, IMX_GPIO_IMR_REG, (1U << gi->gi_irq)); + WRITE4(sc, IMX_GPIO_ISR_REG, (1U << gi->gi_irq)); + mtx_unlock_spin(&sc->sc_mtx); + } + return (0); +} + static int gpio_pic_setup_intr(device_t dev, struct intr_irqsrc *isrc, struct resource *res, struct intr_map_data *data) @@ -344,6 +327,23 @@ gpio_pic_setup_intr(device_t dev, struct intr_irqsrc *isrc, return (0); } +/* + * this is mask_intr + */ +static void +gpio_pic_disable_intr(device_t dev, struct intr_irqsrc *isrc) +{ + struct imx51_gpio_softc *sc; + u_int irq; + + sc = device_get_softc(dev); + irq = ((struct gpio_irqsrc *)isrc)->gi_irq; + + mtx_lock_spin(&sc->sc_mtx); + CLEAR4(sc, IMX_GPIO_IMR_REG, (1U << irq)); + mtx_unlock_spin(&sc->sc_mtx); +} + /* * this is unmask_intr */ @@ -417,7 +417,7 @@ gpio_pic_filter(void *arg) } /* - * register our isrcs into intrng to make it known about them. + * Initialize our isrcs and register them with intrng. */ static int gpio_pic_register_isrcs(struct imx51_gpio_softc *sc) From be0f9b70cd70b1e8e9ff645c7033f69fb9257154 Mon Sep 17 00:00:00 2001 From: Ian Lepore Date: Thu, 7 Apr 2016 18:19:09 +0000 Subject: [PATCH 049/159] Fix a copyright glitch before it gets copy-pasted again. I think this must have started as collateral damage in a global search-replace, then it got copied around when I cloned a file to begin creating a new file. --- sys/arm/arm/locore.S | 2 +- sys/arm/arm/physmem.c | 2 +- sys/mips/mips/ofw_machdep.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/arm/arm/locore.S b/sys/arm/arm/locore.S index 2aecb7e518e..0a6a2d30550 100644 --- a/sys/arm/arm/locore.S +++ b/sys/arm/arm/locore.S @@ -1,6 +1,6 @@ /*- * Copyright (c) 2014 Ian Lepore - * All rights excluded. + * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/sys/arm/arm/physmem.c b/sys/arm/arm/physmem.c index d023905dacb..f6222c39611 100644 --- a/sys/arm/arm/physmem.c +++ b/sys/arm/arm/physmem.c @@ -1,6 +1,6 @@ /*- * Copyright (c) 2014 Ian Lepore - * All rights excluded. + * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/sys/mips/mips/ofw_machdep.c b/sys/mips/mips/ofw_machdep.c index 26bc2600fb1..6b840e73911 100644 --- a/sys/mips/mips/ofw_machdep.c +++ b/sys/mips/mips/ofw_machdep.c @@ -1,6 +1,6 @@ /*- * Copyright (c) 2015 Ian Lepore - * All rights excluded. + * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions From 0dbb1fc87cfad95ec507f8684039d500c72884bb Mon Sep 17 00:00:00 2001 From: Ian Lepore Date: Thu, 7 Apr 2016 19:17:47 +0000 Subject: [PATCH 050/159] Code cleanup: stop searching for a pin in the array and just use the pin number directly as an index. We create the array ourselves and nothing can change the order of items in it, it's a simple 1:1 mapping. --- sys/arm/freescale/imx/imx_gpio.c | 66 ++++++++------------------------ 1 file changed, 15 insertions(+), 51 deletions(-) diff --git a/sys/arm/freescale/imx/imx_gpio.c b/sys/arm/freescale/imx/imx_gpio.c index e67aa6690b3..96b54fb916d 100644 --- a/sys/arm/freescale/imx/imx_gpio.c +++ b/sys/arm/freescale/imx/imx_gpio.c @@ -497,19 +497,14 @@ static int imx51_gpio_pin_getcaps(device_t dev, uint32_t pin, uint32_t *caps) { struct imx51_gpio_softc *sc; - int i; sc = device_get_softc(dev); - for (i = 0; i < sc->gpio_npins; i++) { - if (sc->gpio_pins[i].gp_pin == pin) - break; - } - if (i >= sc->gpio_npins) + if (pin >= sc->gpio_npins) return (EINVAL); mtx_lock_spin(&sc->sc_mtx); - *caps = sc->gpio_pins[i].gp_caps; + *caps = sc->gpio_pins[pin].gp_caps; mtx_unlock_spin(&sc->sc_mtx); return (0); @@ -519,19 +514,14 @@ static int imx51_gpio_pin_getflags(device_t dev, uint32_t pin, uint32_t *flags) { struct imx51_gpio_softc *sc; - int i; sc = device_get_softc(dev); - for (i = 0; i < sc->gpio_npins; i++) { - if (sc->gpio_pins[i].gp_pin == pin) - break; - } - if (i >= sc->gpio_npins) + if (pin >= sc->gpio_npins) return (EINVAL); mtx_lock_spin(&sc->sc_mtx); - *flags = sc->gpio_pins[i].gp_flags; + *flags = sc->gpio_pins[pin].gp_flags; mtx_unlock_spin(&sc->sc_mtx); return (0); @@ -541,19 +531,13 @@ static int imx51_gpio_pin_getname(device_t dev, uint32_t pin, char *name) { struct imx51_gpio_softc *sc; - int i; sc = device_get_softc(dev); - for (i = 0; i < sc->gpio_npins; i++) { - if (sc->gpio_pins[i].gp_pin == pin) - break; - } - - if (i >= sc->gpio_npins) + if (pin >= sc->gpio_npins) return (EINVAL); mtx_lock_spin(&sc->sc_mtx); - memcpy(name, sc->gpio_pins[i].gp_name, GPIOMAXNAME); + memcpy(name, sc->gpio_pins[pin].gp_name, GPIOMAXNAME); mtx_unlock_spin(&sc->sc_mtx); return (0); @@ -563,18 +547,13 @@ static int imx51_gpio_pin_setflags(device_t dev, uint32_t pin, uint32_t flags) { struct imx51_gpio_softc *sc; - int i; sc = device_get_softc(dev); - for (i = 0; i < sc->gpio_npins; i++) { - if (sc->gpio_pins[i].gp_pin == pin) - break; - } - if (i >= sc->gpio_npins) + if (pin >= sc->gpio_npins) return (EINVAL); - imx51_gpio_pin_configure(sc, &sc->gpio_pins[i], flags); + imx51_gpio_pin_configure(sc, &sc->gpio_pins[pin], flags); return (0); } @@ -583,22 +562,17 @@ static int imx51_gpio_pin_set(device_t dev, uint32_t pin, unsigned int value) { struct imx51_gpio_softc *sc; - int i; sc = device_get_softc(dev); - for (i = 0; i < sc->gpio_npins; i++) { - if (sc->gpio_pins[i].gp_pin == pin) - break; - } - if (i >= sc->gpio_npins) + if (pin >= sc->gpio_npins) return (EINVAL); mtx_lock_spin(&sc->sc_mtx); if (value) - SET4(sc, IMX_GPIO_DR_REG, (1U << i)); + SET4(sc, IMX_GPIO_DR_REG, (1U << pin)); else - CLEAR4(sc, IMX_GPIO_DR_REG, (1U << i)); + CLEAR4(sc, IMX_GPIO_DR_REG, (1U << pin)); mtx_unlock_spin(&sc->sc_mtx); return (0); @@ -608,19 +582,14 @@ static int imx51_gpio_pin_get(device_t dev, uint32_t pin, unsigned int *val) { struct imx51_gpio_softc *sc; - int i; sc = device_get_softc(dev); - for (i = 0; i < sc->gpio_npins; i++) { - if (sc->gpio_pins[i].gp_pin == pin) - break; - } - if (i >= sc->gpio_npins) + if (pin >= sc->gpio_npins) return (EINVAL); mtx_lock_spin(&sc->sc_mtx); - *val = (READ4(sc, IMX_GPIO_DR_REG) >> i) & 1; + *val = (READ4(sc, IMX_GPIO_DR_REG) >> pin) & 1; mtx_unlock_spin(&sc->sc_mtx); return (0); @@ -630,20 +599,15 @@ static int imx51_gpio_pin_toggle(device_t dev, uint32_t pin) { struct imx51_gpio_softc *sc; - int i; sc = device_get_softc(dev); - for (i = 0; i < sc->gpio_npins; i++) { - if (sc->gpio_pins[i].gp_pin == pin) - break; - } - if (i >= sc->gpio_npins) + if (pin >= sc->gpio_npins) return (EINVAL); mtx_lock_spin(&sc->sc_mtx); WRITE4(sc, IMX_GPIO_DR_REG, - (READ4(sc, IMX_GPIO_DR_REG) ^ (1U << i))); + (READ4(sc, IMX_GPIO_DR_REG) ^ (1U << pin))); mtx_unlock_spin(&sc->sc_mtx); return (0); From bcfa4e676b9bd1798bf1d1a018269d3746b7a229 Mon Sep 17 00:00:00 2001 From: Ian Lepore Date: Thu, 7 Apr 2016 19:51:27 +0000 Subject: [PATCH 051/159] Remove unecessary locking, mostly from places where a read is done of a value that can't ever be in an inconsistant intermediate state even when some other thread is in the middle of writing the value/register. Locking of the hardware remains in the few places that do r-m-w operations. Locking of metadata access is restricted to places using memcpy or sprintf to modify the metadata. --- sys/arm/freescale/imx/imx_gpio.c | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/sys/arm/freescale/imx/imx_gpio.c b/sys/arm/freescale/imx/imx_gpio.c index 96b54fb916d..df0f2addda5 100644 --- a/sys/arm/freescale/imx/imx_gpio.c +++ b/sys/arm/freescale/imx/imx_gpio.c @@ -451,22 +451,27 @@ static void imx51_gpio_pin_configure(struct imx51_gpio_softc *sc, struct gpio_pin *pin, unsigned int flags) { + u_int newflags; mtx_lock_spin(&sc->sc_mtx); /* - * Manage input/output + * Manage input/output; other flags not supported yet. + * + * Note that changes to pin->gp_flags must be acccumulated in newflags + * and stored with a single writeback to gp_flags at the end, to enable + * unlocked reads of that value elsewhere. */ - if (flags & (GPIO_PIN_INPUT|GPIO_PIN_OUTPUT)) { - pin->gp_flags &= ~(GPIO_PIN_INPUT|GPIO_PIN_OUTPUT); + if (flags & (GPIO_PIN_INPUT | GPIO_PIN_OUTPUT)) { + newflags = pin->gp_flags & ~(GPIO_PIN_INPUT | GPIO_PIN_OUTPUT); if (flags & GPIO_PIN_OUTPUT) { - pin->gp_flags |= GPIO_PIN_OUTPUT; + newflags |= GPIO_PIN_OUTPUT; SET4(sc, IMX_GPIO_OE_REG, (1U << pin->gp_pin)); - } - else { - pin->gp_flags |= GPIO_PIN_INPUT; + } else { + newflags |= GPIO_PIN_INPUT; CLEAR4(sc, IMX_GPIO_OE_REG, (1U << pin->gp_pin)); } + pin->gp_flags = newflags; } mtx_unlock_spin(&sc->sc_mtx); @@ -503,9 +508,7 @@ imx51_gpio_pin_getcaps(device_t dev, uint32_t pin, uint32_t *caps) if (pin >= sc->gpio_npins) return (EINVAL); - mtx_lock_spin(&sc->sc_mtx); *caps = sc->gpio_pins[pin].gp_caps; - mtx_unlock_spin(&sc->sc_mtx); return (0); } @@ -520,9 +523,7 @@ imx51_gpio_pin_getflags(device_t dev, uint32_t pin, uint32_t *flags) if (pin >= sc->gpio_npins) return (EINVAL); - mtx_lock_spin(&sc->sc_mtx); *flags = sc->gpio_pins[pin].gp_flags; - mtx_unlock_spin(&sc->sc_mtx); return (0); } @@ -588,9 +589,7 @@ imx51_gpio_pin_get(device_t dev, uint32_t pin, unsigned int *val) if (pin >= sc->gpio_npins) return (EINVAL); - mtx_lock_spin(&sc->sc_mtx); *val = (READ4(sc, IMX_GPIO_DR_REG) >> pin) & 1; - mtx_unlock_spin(&sc->sc_mtx); return (0); } From 46360281f0a255c0a13878df6b9df4d140350c68 Mon Sep 17 00:00:00 2001 From: Ed Maste Date: Thu, 7 Apr 2016 20:12:45 +0000 Subject: [PATCH 052/159] Add option to specify built-in keymap for kbdmux PR: 153459 Submitted by: swell.k@gmail.com --- sys/conf/NOTES | 4 ++++ sys/conf/files | 4 ++++ sys/conf/options | 2 ++ sys/dev/kbdmux/kbdmux.c | 8 ++++++++ sys/modules/kbdmux/Makefile | 2 +- 5 files changed, 19 insertions(+), 1 deletion(-) diff --git a/sys/conf/NOTES b/sys/conf/NOTES index c9fce2e6702..42570fe55b8 100644 --- a/sys/conf/NOTES +++ b/sys/conf/NOTES @@ -1409,6 +1409,10 @@ options MSGBUF_SIZE=40960 options KBD_DISABLE_KEYMAP_LOAD # refuse to load a keymap options KBD_INSTALL_CDEV # install a CDEV entry in /dev +device kbdmux # keyboard multiplexer +options KBDMUX_DFLT_KEYMAP # specify the built-in keymap +makeoptions KBDMUX_DFLT_KEYMAP=it.iso + options FB_DEBUG # Frame buffer debugging device splash # Splash screen and screen saver support diff --git a/sys/conf/files b/sys/conf/files index e2dbc6780a7..46e9768ee4b 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -47,6 +47,10 @@ pccarddevs.h standard \ compile-with "${AWK} -f $S/tools/pccarddevs2h.awk $S/dev/pccard/pccarddevs" \ no-obj no-implicit-rule before-depend \ clean "pccarddevs.h" +kbdmuxmap.h optional kbdmux_dflt_keymap \ + compile-with "kbdcontrol -P ${S:S/sys$/share/}/vt/keymaps -P ${S:S/sys$/share/}/syscons/keymaps -L ${KBDMUX_DFLT_KEYMAP} | sed -e 's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static accentmap_t.* = /static accentmap_t accent_map = /' > kbdmuxmap.h" \ + no-obj no-implicit-rule before-depend \ + clean "kbdmuxmap.h" teken_state.h optional sc | vt \ dependency "$S/teken/gensequences $S/teken/sequences" \ compile-with "${AWK} -f $S/teken/gensequences $S/teken/sequences > teken_state.h" \ diff --git a/sys/conf/options b/sys/conf/options index 4df24a56fc7..f2fef263f97 100644 --- a/sys/conf/options +++ b/sys/conf/options @@ -801,6 +801,8 @@ KBD_MAXWAIT opt_kbd.h KBD_RESETDELAY opt_kbd.h KBDIO_DEBUG opt_kbd.h +KBDMUX_DFLT_KEYMAP opt_kbdmux.h + # options for the Atheros driver ATH_DEBUG opt_ath.h ATH_TXBUF opt_ath.h diff --git a/sys/dev/kbdmux/kbdmux.c b/sys/dev/kbdmux/kbdmux.c index a21b37cdf09..0dce120ad6a 100644 --- a/sys/dev/kbdmux/kbdmux.c +++ b/sys/dev/kbdmux/kbdmux.c @@ -33,6 +33,7 @@ #include "opt_compat.h" #include "opt_kbd.h" +#include "opt_kbdmux.h" #include #include @@ -54,6 +55,13 @@ #include #include #include + +/* the initial key map, accent map and fkey strings */ +#ifdef KBDMUX_DFLT_KEYMAP +#define KBD_DFLT_KEYMAP +#include "kbdmuxmap.h" +#endif + #include #define KEYBOARD_NAME "kbdmux" diff --git a/sys/modules/kbdmux/Makefile b/sys/modules/kbdmux/Makefile index 70b39a05a9c..363343a87db 100644 --- a/sys/modules/kbdmux/Makefile +++ b/sys/modules/kbdmux/Makefile @@ -4,7 +4,7 @@ .PATH: ${.CURDIR}/../../dev/kbdmux KMOD= kbdmux -SRCS= kbdmux.c opt_compat.h opt_kbd.h bus_if.h device_if.h +SRCS= kbdmux.c opt_compat.h opt_kbd.h opt_kbdmux.h bus_if.h device_if.h .if !defined(KERNBUILDDIR) opt_compat.h: From 4d9155dfd04d2e960a899e7b13057c411cb8b5d5 Mon Sep 17 00:00:00 2001 From: Ed Maste Date: Thu, 7 Apr 2016 20:26:27 +0000 Subject: [PATCH 053/159] Rename SHT_AMD64_UNWIND to SHT_X86_64_UNWIND per ABI doc From http://www.x86-64.org/documentation_folder/abi-0.99.pdf --- sys/sys/elf_common.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sys/sys/elf_common.h b/sys/sys/elf_common.h index b4574f3a974..f4579c8b247 100644 --- a/sys/sys/elf_common.h +++ b/sys/sys/elf_common.h @@ -415,7 +415,8 @@ typedef struct { #define SHT_HISUNW 0x6fffffff #define SHT_HIOS 0x6fffffff /* Last of OS specific semantics */ #define SHT_LOPROC 0x70000000 /* reserved range for processor */ -#define SHT_AMD64_UNWIND 0x70000001 /* unwind information */ +#define SHT_X86_64_UNWIND 0x70000001 /* unwind information */ +#define SHT_AMD64_UNWIND SHT_X86_64_UNWIND #define SHT_ARM_EXIDX 0x70000001 /* Exception index table. */ #define SHT_ARM_PREEMPTMAP 0x70000002 /* BPABI DLL dynamic linking From f232b3913a79069209b5f181a2bf6b6222522e74 Mon Sep 17 00:00:00 2001 From: Ed Maste Date: Thu, 7 Apr 2016 20:30:46 +0000 Subject: [PATCH 054/159] newvers.sh: rationalize licence condition numbering --- sys/conf/newvers.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/conf/newvers.sh b/sys/conf/newvers.sh index a5d47491eb0..b8aeea506e2 100644 --- a/sys/conf/newvers.sh +++ b/sys/conf/newvers.sh @@ -11,7 +11,7 @@ # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. -# 4. Neither the name of the University nor the names of its contributors +# 3. Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # From d8e49c71e3ade8df2e92443d83b18aaa85d97c14 Mon Sep 17 00:00:00 2001 From: "Pedro F. Giffuni" Date: Thu, 7 Apr 2016 21:33:14 +0000 Subject: [PATCH 055/159] chdone(): Prevent returning uninitialized scalar value. Improve over the solution in r297527: Instead of attempting to initialize all the possible cases, just move the check nearer to the case where it makes sense. CID: 1006486 Reviewed by: ken MFC after: 2 weeks --- sys/cam/scsi/scsi_ch.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/sys/cam/scsi/scsi_ch.c b/sys/cam/scsi/scsi_ch.c index 8e069db6e04..59ec6aa5bd3 100644 --- a/sys/cam/scsi/scsi_ch.c +++ b/sys/cam/scsi/scsi_ch.c @@ -648,10 +648,14 @@ chdone(struct cam_periph *periph, union ccb *done_ccb) softc->sc_counts[CHET_IE], PLURAL(softc->sc_counts[CHET_IE])); #undef PLURAL + if (announce_buf[0] != '\0') { + xpt_announce_periph(periph, announce_buf); + xpt_announce_quirks(periph, softc->quirks, + CH_Q_BIT_STRING); + } } else { int error; - announce_buf[0] = '\0'; error = cherror(done_ccb, CAM_RETRY_SELTO, SF_RETRY_UA | SF_NO_PRINT); /* @@ -715,14 +719,8 @@ chdone(struct cam_periph *periph, union ccb *done_ccb) cam_periph_invalidate(periph); - announce_buf[0] = '\0'; } } - if (announce_buf[0] != '\0') { - xpt_announce_periph(periph, announce_buf); - xpt_announce_quirks(periph, softc->quirks, - CH_Q_BIT_STRING); - } softc->state = CH_STATE_NORMAL; free(mode_header, M_SCSICH); /* From 43b227c89f52a3b054ee35c6534a9e3470b6d228 Mon Sep 17 00:00:00 2001 From: Jared McNeill Date: Fri, 8 Apr 2016 00:01:19 +0000 Subject: [PATCH 056/159] Match on compatible string "allwinner,sun4i-a10-sram-controller" instead of "allwinner,sun4i-sramc", to match upstream DTS. --- sys/arm/allwinner/a10_sramc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/arm/allwinner/a10_sramc.c b/sys/arm/allwinner/a10_sramc.c index a26afbb6154..63c99464d66 100644 --- a/sys/arm/allwinner/a10_sramc.c +++ b/sys/arm/allwinner/a10_sramc.c @@ -71,7 +71,7 @@ static int a10_sramc_probe(device_t dev) { - if (ofw_bus_is_compatible(dev, "allwinner,sun4i-sramc")) { + if (ofw_bus_is_compatible(dev, "allwinner,sun4i-a10-sram-controller")) { device_set_desc(dev, "Allwinner sramc module"); return (BUS_PROBE_DEFAULT); } From 88a8e56bbc3439b1a01a81ea7c76ca8ae4d2c2a8 Mon Sep 17 00:00:00 2001 From: Maxim Sobolev Date: Fri, 8 Apr 2016 00:24:21 +0000 Subject: [PATCH 057/159] Document vfs.root.mountfrom. Reviewed by: imp, wblock Differential Revision: https://reviews.freebsd.org/D5332 --- sys/boot/forth/loader.conf.5 | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/sys/boot/forth/loader.conf.5 b/sys/boot/forth/loader.conf.5 index 0320e988cdf..631250c5278 100644 --- a/sys/boot/forth/loader.conf.5 +++ b/sys/boot/forth/loader.conf.5 @@ -112,6 +112,31 @@ The name must be a subdirectory of that contains a kernel. .It Ar kernel_options Flags to be passed to the kernel. +.It Ar vfs.root.mountfrom +Specify the root partition to mount. +For example: +.Pp +.Dl vfs.root.mountfrom="ufs:/dev/da0s1a" +.Pp +.Xr loader 8 +automatically calculates the value of this tunable from +.Pa /etc/fstab +from the partition the kernel was loaded from. +The calculated value might be calculated incorrectly when +.Pa /etc/fstab +is not available during +.Xr loader 8 +startup (as during diskless booting from NFS), or if a different +device is desired by the user. +The preferred value can be set in +.Pa /loader.conf . +.Pp +The value can also be overridden from the +.Xr loader 8 +command line. +This is useful for system recovery when +.Pa /etc/fstab +is damaged, lost, or read from the wrong partition. .It Ar password Protect boot menu with a password without interrupting .Ic autoboot From d87366259473c73ec259d5072f429a85e1b7c63d Mon Sep 17 00:00:00 2001 From: Allan Jude Date: Fri, 8 Apr 2016 01:25:25 +0000 Subject: [PATCH 058/159] Create the GELIBOOT GEOM_ELI flag This flag indicates that the user wishes to use the GELIBOOT feature to boot from a fully encrypted root file system. Currently, GELIBOOT does not support key files, and in the future when it does, they will be loaded differently. Due to the design of GELI, and the desire for secrecy, the GELI metadata does not know if key files are used or not, it just adds the key material (if any) to the HMAC before the optional passphrase, so there is no way to tell if a GELI partition requires key files or not. Since the GELIBOOT code in boot2 and the loader does not support keys, they will now only attempt to attach if this flag is set. This will stop GELIBOOT from prompting for passwords to GELIs that it cannot decrypt, disrupting the boot process PR: 208251 Reviewed by: ed, oshogbo, wblock Sponsored by: ScaleEngine Inc. Differential Revision: https://reviews.freebsd.org/D5867 --- sbin/geom/class/eli/geli.8 | 16 +++++++++-- sbin/geom/class/eli/geom_eli.c | 50 ++++++++++++++++++++++++++++------ sys/geom/eli/g_eli.c | 1 + sys/geom/eli/g_eli.h | 2 ++ sys/geom/eli/g_eli_ctl.c | 33 +++++++++++++++++++++- 5 files changed, 90 insertions(+), 12 deletions(-) diff --git a/sbin/geom/class/eli/geli.8 b/sbin/geom/class/eli/geli.8 index ed425dae269..e8a1ef024c1 100644 --- a/sbin/geom/class/eli/geli.8 +++ b/sbin/geom/class/eli/geli.8 @@ -51,7 +51,7 @@ utility: .Pp .Nm .Cm init -.Op Fl bPTv +.Op Fl bgPTv .Op Fl a Ar aalgo .Op Fl B Ar backupfile .Op Fl e Ar ealgo @@ -88,7 +88,7 @@ utility: .Ar prov .Nm .Cm configure -.Op Fl bBtT +.Op Fl bBgGtT .Ar prov ... .Nm .Cm setkey @@ -293,6 +293,11 @@ The default and recommended algorithm is .Nm AES-XTS . .Nm NULL is unencrypted. +.It Fl g +Enable booting from this encrypted root filesystem. +The boot loader prompts for the passphrase and loads +.Xr loader 8 +from the encrypted partition. .It Fl i Ar iterations Number of iterations to use with PKCS#5v2 when processing User Key passphrase component. @@ -485,6 +490,13 @@ For more information, see the description of the subcommand. .It Fl B Remove the BOOT flag from the given providers. +.It Fl g +Enable booting from this encrypted root filesystem. +The boot loader prompts for the passphrase and loads +.Xr loader 8 +from the encrypted partition. +.It Fl G +Deactivate booting from this encrypted root partition. .It Fl t Enable TRIM/UNMAP passthru. For more information, see the description of the diff --git a/sbin/geom/class/eli/geom_eli.c b/sbin/geom/class/eli/geom_eli.c index 0c6ca2c9ccb..c804622ddbe 100644 --- a/sbin/geom/class/eli/geom_eli.c +++ b/sbin/geom/class/eli/geom_eli.c @@ -82,13 +82,13 @@ static int eli_backup_create(struct gctl_req *req, const char *prov, /* * Available commands: * - * init [-bhPv] [-a aalgo] [-B backupfile] [-e ealgo] [-i iterations] [-l keylen] [-J newpassfile] [-K newkeyfile] [-V version] prov + * init [-bgPTv] [-a aalgo] [-B backupfile] [-e ealgo] [-i iterations] [-l keylen] [-J newpassfile] [-K newkeyfile] [-s sectorsize] [-V version] prov * label - alias for 'init' * attach [-dprv] [-j passfile] [-k keyfile] prov * detach [-fl] prov ... * stop - alias for 'detach' * onetime [-d] [-a aalgo] [-e ealgo] [-l keylen] prov - * configure [-bB] prov ... + * configure [-bBgGtT] prov ... * setkey [-pPv] [-n keyno] [-j passfile] [-J newpassfile] [-k keyfile] [-K newkeyfile] prov * delkey [-afv] [-n keyno] prov * suspend [-v] -a | prov ... @@ -108,6 +108,7 @@ struct g_command class_commands[] = { { 'b', "boot", NULL, G_TYPE_BOOL }, { 'B', "backupfile", "", G_TYPE_STRING }, { 'e', "ealgo", "", G_TYPE_STRING }, + { 'g', "geliboot", NULL, G_TYPE_BOOL }, { 'i', "iterations", "-1", G_TYPE_NUMBER }, { 'J', "newpassfile", G_VAL_OPTIONAL, G_TYPE_STRING | G_TYPE_MULTI }, { 'K', "newkeyfile", G_VAL_OPTIONAL, G_TYPE_STRING | G_TYPE_MULTI }, @@ -118,7 +119,7 @@ struct g_command class_commands[] = { { 'V', "mdversion", "-1", G_TYPE_NUMBER }, G_OPT_SENTINEL }, - "[-bPTv] [-a aalgo] [-B backupfile] [-e ealgo] [-i iterations] [-l keylen] [-J newpassfile] [-K newkeyfile] [-s sectorsize] [-V version] prov" + "[-bgPTv] [-a aalgo] [-B backupfile] [-e ealgo] [-i iterations] [-l keylen] [-J newpassfile] [-K newkeyfile] [-s sectorsize] [-V version] prov" }, { "label", G_FLAG_VERBOSE, eli_main, { @@ -126,6 +127,7 @@ struct g_command class_commands[] = { { 'b', "boot", NULL, G_TYPE_BOOL }, { 'B', "backupfile", "", G_TYPE_STRING }, { 'e', "ealgo", "", G_TYPE_STRING }, + { 'g', "geliboot", NULL, G_TYPE_BOOL }, { 'i', "iterations", "-1", G_TYPE_NUMBER }, { 'J', "newpassfile", G_VAL_OPTIONAL, G_TYPE_STRING | G_TYPE_MULTI }, { 'K', "newkeyfile", G_VAL_OPTIONAL, G_TYPE_STRING | G_TYPE_MULTI }, @@ -180,11 +182,13 @@ struct g_command class_commands[] = { { { 'b', "boot", NULL, G_TYPE_BOOL }, { 'B', "noboot", NULL, G_TYPE_BOOL }, + { 'g', "geliboot", NULL, G_TYPE_BOOL }, + { 'G', "nogeliboot", NULL, G_TYPE_BOOL }, { 't', "trim", NULL, G_TYPE_BOOL }, { 'T', "notrim", NULL, G_TYPE_BOOL }, G_OPT_SENTINEL }, - "[-bBtT] prov ..." + "[-bBgGtT] prov ..." }, { "setkey", G_FLAG_VERBOSE, eli_main, { @@ -702,6 +706,8 @@ eli_init(struct gctl_req *req) md.md_flags = 0; if (gctl_get_int(req, "boot")) md.md_flags |= G_ELI_FLAG_BOOT; + if (gctl_get_int(req, "geliboot")) + md.md_flags |= G_ELI_FLAG_GELIBOOT; if (gctl_get_int(req, "notrim")) md.md_flags |= G_ELI_FLAG_NODELETE; md.md_ealgo = CRYPTO_ALGORITHM_MIN - 1; @@ -906,7 +912,7 @@ eli_attach(struct gctl_req *req) static void eli_configure_detached(struct gctl_req *req, const char *prov, int boot, - int trim) + int geliboot, int trim) { struct g_eli_metadata md; bool changed = 0; @@ -928,6 +934,20 @@ eli_configure_detached(struct gctl_req *req, const char *prov, int boot, changed = 1; } + if (geliboot == 1 && (md.md_flags & G_ELI_FLAG_GELIBOOT)) { + if (verbose) + printf("GELIBOOT flag already configured for %s.\n", prov); + } else if (geliboot == 0 && !(md.md_flags & G_ELI_FLAG_GELIBOOT)) { + if (verbose) + printf("GELIBOOT flag not configured for %s.\n", prov); + } else if (geliboot >= 0) { + if (geliboot) + md.md_flags |= G_ELI_FLAG_GELIBOOT; + else + md.md_flags &= ~G_ELI_FLAG_GELIBOOT; + changed = 1; + } + if (trim == 0 && (md.md_flags & G_ELI_FLAG_NODELETE)) { if (verbose) printf("TRIM disable flag already configured for %s.\n", prov); @@ -951,8 +971,8 @@ static void eli_configure(struct gctl_req *req) { const char *prov; - bool boot, noboot, trim, notrim; - int doboot, dotrim; + bool boot, noboot, geliboot, nogeliboot, trim, notrim; + int doboot, dogeliboot, dotrim; int i, nargs; nargs = gctl_get_int(req, "nargs"); @@ -963,6 +983,8 @@ eli_configure(struct gctl_req *req) boot = gctl_get_int(req, "boot"); noboot = gctl_get_int(req, "noboot"); + geliboot = gctl_get_int(req, "geliboot"); + nogeliboot = gctl_get_int(req, "nogeliboot"); trim = gctl_get_int(req, "trim"); notrim = gctl_get_int(req, "notrim"); @@ -976,6 +998,16 @@ eli_configure(struct gctl_req *req) else if (noboot) doboot = 0; + dogeliboot = -1; + if (geliboot && nogeliboot) { + gctl_error(req, "Options -g and -G are mutually exclusive."); + return; + } + if (geliboot) + dogeliboot = 1; + else if (nogeliboot) + dogeliboot = 0; + dotrim = -1; if (trim && notrim) { gctl_error(req, "Options -t and -T are mutually exclusive."); @@ -986,7 +1018,7 @@ eli_configure(struct gctl_req *req) else if (notrim) dotrim = 0; - if (doboot == -1 && dotrim == -1) { + if (doboot == -1 && dogeliboot == -1 && dotrim == -1) { gctl_error(req, "No option given."); return; } @@ -997,7 +1029,7 @@ eli_configure(struct gctl_req *req) for (i = 0; i < nargs; i++) { prov = gctl_get_ascii(req, "arg%d", i); if (!eli_is_attached(prov)) - eli_configure_detached(req, prov, doboot, dotrim); + eli_configure_detached(req, prov, doboot, dogeliboot, dotrim); } } diff --git a/sys/geom/eli/g_eli.c b/sys/geom/eli/g_eli.c index a2b4e6517ee..912a5c5d841 100644 --- a/sys/geom/eli/g_eli.c +++ b/sys/geom/eli/g_eli.c @@ -1181,6 +1181,7 @@ g_eli_dumpconf(struct sbuf *sb, const char *indent, struct g_geom *gp, ADD_FLAG(G_ELI_FLAG_DESTROY, "DESTROY"); ADD_FLAG(G_ELI_FLAG_RO, "READ-ONLY"); ADD_FLAG(G_ELI_FLAG_NODELETE, "NODELETE"); + ADD_FLAG(G_ELI_FLAG_GELIBOOT, "GELIBOOT"); #undef ADD_FLAG } sbuf_printf(sb, "\n"); diff --git a/sys/geom/eli/g_eli.h b/sys/geom/eli/g_eli.h index 3deb865c4af..13e78076254 100644 --- a/sys/geom/eli/g_eli.h +++ b/sys/geom/eli/g_eli.h @@ -97,6 +97,8 @@ #define G_ELI_FLAG_RO 0x00000020 /* Don't pass through BIO_DELETE requests. */ #define G_ELI_FLAG_NODELETE 0x00000040 +/* This GELI supports GELIBoot */ +#define G_ELI_FLAG_GELIBOOT 0x00000080 /* RUNTIME FLAGS. */ /* Provider was open for writing. */ #define G_ELI_FLAG_WOPEN 0x00010000 diff --git a/sys/geom/eli/g_eli_ctl.c b/sys/geom/eli/g_eli_ctl.c index 9de7ec3d55c..89e9f0247ad 100644 --- a/sys/geom/eli/g_eli_ctl.c +++ b/sys/geom/eli/g_eli_ctl.c @@ -376,7 +376,7 @@ g_eli_ctl_configure(struct gctl_req *req, struct g_class *mp) char param[16]; const char *prov; u_char *sector; - int *nargs, *boot, *noboot, *trim, *notrim; + int *nargs, *boot, *noboot, *trim, *notrim, *geliboot, *nogeliboot; int zero, error, changed; u_int i; @@ -421,6 +421,19 @@ g_eli_ctl_configure(struct gctl_req *req, struct g_class *mp) if (*trim || *notrim) changed = 1; + geliboot = gctl_get_paraml(req, "geliboot", sizeof(*geliboot)); + if (geliboot == NULL) + geliboot = &zero; + nogeliboot = gctl_get_paraml(req, "nogeliboot", sizeof(*nogeliboot)); + if (nogeliboot == NULL) + nogeliboot = &zero; + if (*geliboot && *nogeliboot) { + gctl_error(req, "Options -g and -G are mutually exclusive."); + return; + } + if (*geliboot || *nogeliboot) + changed = 1; + if (!changed) { gctl_error(req, "No option given."); return; @@ -469,6 +482,16 @@ g_eli_ctl_configure(struct gctl_req *req, struct g_class *mp) continue; } + if (*geliboot && (sc->sc_flags & G_ELI_FLAG_GELIBOOT)) { + G_ELI_DEBUG(1, "GELIBOOT flag already configured for %s.", + prov); + continue; + } else if (*nogeliboot && !(sc->sc_flags & G_ELI_FLAG_GELIBOOT)) { + G_ELI_DEBUG(1, "GELIBOOT flag not configured for %s.", + prov); + continue; + } + if (!(sc->sc_flags & G_ELI_FLAG_ONETIME)) { /* * ONETIME providers don't write metadata to @@ -504,6 +527,14 @@ g_eli_ctl_configure(struct gctl_req *req, struct g_class *mp) sc->sc_flags &= ~G_ELI_FLAG_NODELETE; } + if (*geliboot) { + md.md_flags |= G_ELI_FLAG_GELIBOOT; + sc->sc_flags |= G_ELI_FLAG_GELIBOOT; + } else if (*nogeliboot) { + md.md_flags &= ~G_ELI_FLAG_GELIBOOT; + sc->sc_flags &= ~G_ELI_FLAG_GELIBOOT; + } + if (sc->sc_flags & G_ELI_FLAG_ONETIME) { /* There's no metadata on disk so we are done here. */ continue; From 4b90244c214ca94bf09506197a6271fdb6a518b1 Mon Sep 17 00:00:00 2001 From: Allan Jude Date: Fri, 8 Apr 2016 01:27:40 +0000 Subject: [PATCH 059/159] GELIBoot should only prompt for the GELI passphrase if the provider has the G_ELI_FLAG_GELIBOOT set PR: 208251 Sponsored by: ScaleEngine Inc. Differential Revision: https://reviews.freebsd.org/D5870 --- sys/boot/geli/geliboot.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sys/boot/geli/geliboot.c b/sys/boot/geli/geliboot.c index c7146162652..df40c3bf1d8 100644 --- a/sys/boot/geli/geliboot.c +++ b/sys/boot/geli/geliboot.c @@ -90,12 +90,12 @@ geli_taste(int read_func(void *vdev, void *priv, off_t off, void *buf, return (error); } - if ((md.md_flags & G_ELI_FLAG_ONETIME)) { - /* Swap device, skip it. */ + if (!(md.md_flags & G_ELI_FLAG_GELIBOOT)) { + /* The GELIBOOT feature is not activated */ return (1); } - if (!(md.md_flags & G_ELI_FLAG_BOOT)) { - /* Disk is not GELI boot device, skip it. */ + if ((md.md_flags & G_ELI_FLAG_ONETIME)) { + /* Swap device, skip it. */ return (1); } if (md.md_iterations < 0) { From 2e4eeb703a5c5b7156051481d55dd31438ea1ada Mon Sep 17 00:00:00 2001 From: "Pedro F. Giffuni" Date: Fri, 8 Apr 2016 03:26:21 +0000 Subject: [PATCH 060/159] audit(8): leave unsigned comparison for last. aq64_minfree is unsigned so comparing to find out if it is less than zero is a nonsense. Move the comparison to the last position as we don't want to spend time if any of the others triggers first. hile it would be tempting to just remove it, it may be important to keep it for portability with platforms where may be signed(?) or in case we may want to change it in the future. --- sys/security/audit/audit_syscalls.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/security/audit/audit_syscalls.c b/sys/security/audit/audit_syscalls.c index 90d811ddbaf..73411a474c6 100644 --- a/sys/security/audit/audit_syscalls.c +++ b/sys/security/audit/audit_syscalls.c @@ -303,8 +303,8 @@ sys_auditon(struct thread *td, struct auditon_args *uap) (udata.au_qctrl64.aq64_lowater >= udata.au_qctrl.aq_hiwater) || (udata.au_qctrl64.aq64_bufsz > AQ_MAXBUFSZ) || - (udata.au_qctrl64.aq64_minfree < 0) || - (udata.au_qctrl64.aq64_minfree > 100)) + (udata.au_qctrl64.aq64_minfree > 100) || + (udata.au_qctrl64.aq64_minfree < 0)) return (EINVAL); audit_qctrl.aq_hiwater = (int)udata.au_qctrl64.aq64_hiwater; From 2b3506d919eda1308df7a7ad0bd5d1b9c5a07b46 Mon Sep 17 00:00:00 2001 From: Kevin Lo Date: Fri, 8 Apr 2016 04:29:05 +0000 Subject: [PATCH 061/159] Fix comment. --- sys/fs/ext2fs/ext2_vfsops.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/fs/ext2fs/ext2_vfsops.c b/sys/fs/ext2fs/ext2_vfsops.c index fab98a5945f..a1f3c514b24 100644 --- a/sys/fs/ext2fs/ext2_vfsops.c +++ b/sys/fs/ext2fs/ext2_vfsops.c @@ -308,8 +308,8 @@ ext2_check_sb_compat(struct ext2fs *es, struct cdev *dev, int ronly) } /* - * This computes the fields of the ext2_sb_info structure from the - * data in the ext2_super_block structure read in. + * This computes the fields of the m_ext2fs structure from the + * data in the ext2fs structure read in. */ static int compute_sb_data(struct vnode *devvp, struct ext2fs *es, @@ -600,7 +600,7 @@ ext2_mountfs(struct vnode *devvp, struct mount *mp) /* * I don't know whether this is the right strategy. Note that - * we dynamically allocate both an ext2_sb_info and an ext2_super_block + * we dynamically allocate both an m_ext2fs and an ext2fs * while Linux keeps the super block in a locked buffer. */ ump->um_e2fs = malloc(sizeof(struct m_ext2fs), From 348256df6f9719edcca30957fa3a25961fe853af Mon Sep 17 00:00:00 2001 From: Hans Petter Selasky Date: Fri, 8 Apr 2016 06:51:49 +0000 Subject: [PATCH 062/159] Add new USB quirk. Submitted by: AJ PR: 208623 MFC after: 1 week --- sys/dev/usb/quirk/usb_quirk.c | 3 +++ sys/dev/usb/usbdevs | 3 +++ 2 files changed, 6 insertions(+) diff --git a/sys/dev/usb/quirk/usb_quirk.c b/sys/dev/usb/quirk/usb_quirk.c index 5af213649ac..6f6dac79e92 100644 --- a/sys/dev/usb/quirk/usb_quirk.c +++ b/sys/dev/usb/quirk/usb_quirk.c @@ -529,6 +529,9 @@ static struct usb_quirk_entry usb_quirks[USB_DEV_QUIRKS_MAX] = { /* DYMO LabelManager Pnp */ USB_QUIRK(DYMO, LABELMANAGERPNP, 0x0000, 0xffff, UQ_MSC_DYMO_EJECT), + + /* Holtek USB gaming keyboard */ + USB_QUIRK(HOLTEK, F85, 0x0000, 0xffff, UQ_KBD_BOOTPROTO), }; #undef USB_QUIRK_VP #undef USB_QUIRK diff --git a/sys/dev/usb/usbdevs b/sys/dev/usb/usbdevs index 7f75d5a194e..a2df3e4ccf6 100644 --- a/sys/dev/usb/usbdevs +++ b/sys/dev/usb/usbdevs @@ -2268,6 +2268,9 @@ product HIDGLOBAL CM6020 0x1784 Omnikey Cardman 6020 product HITACHI DVDCAM_DZ_MV100A 0x0004 DVD-CAM DZ-MV100A Camcorder product HITACHI DVDCAM_USB 0x001e DVDCAM USB HS Interface +/* Holtek products */ +product HOLTEK F85 0xa030 Holtek USB gaming keyboard + /* HP products */ product HP 895C 0x0004 DeskJet 895C product HP 4100C 0x0101 Scanjet 4100C From 222c454d33e785f114c6138f48da62cb1d2a570e Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Fri, 8 Apr 2016 09:20:46 +0000 Subject: [PATCH 063/159] hyperv: Revert r297481 Use vm_guest == VM_GUEST_HV is not enough to determine whether FreeBSD is running on Hyper-V or not. What a mess. Reported by: smokehydration tutanota com Sponsored by: Microsoft OSTC --- sys/dev/hyperv/vmbus/hv_hv.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/sys/dev/hyperv/vmbus/hv_hv.c b/sys/dev/hyperv/vmbus/hv_hv.c index a87b5ceb7c1..a4233288b05 100644 --- a/sys/dev/hyperv/vmbus/hv_hv.c +++ b/sys/dev/hyperv/vmbus/hv_hv.c @@ -36,7 +36,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #include @@ -208,6 +207,8 @@ hv_vmbus_init(void) hv_vmbus_g_context.hypercall_page = virt_addr; + tc_init(&hv_timecounter); /* register virtual timecount */ + hv_et_init(); return (0); @@ -436,14 +437,3 @@ void hv_vmbus_synic_cleanup(void *arg) wrmsr(HV_X64_MSR_SIEFP, siefp.as_uint64_t); } -static void -hv_tc_init(void) -{ - if (vm_guest != VM_GUEST_HV) - return; - - /* register virtual timecounter */ - tc_init(&hv_timecounter); -} - -SYSINIT(hv_tc_init, SI_SUB_HYPERVISOR, SI_ORDER_FIRST, hv_tc_init, NULL); From 9e821f27969c12a51a08a2f4cd10449cac8b4382 Mon Sep 17 00:00:00 2001 From: Konstantin Belousov Date: Fri, 8 Apr 2016 10:21:43 +0000 Subject: [PATCH 064/159] Assert that the lock objects put into the off-page, fit into the page. Sponsored by: The FreeBSD Foundation --- lib/libthr/thread/thr_barrier.c | 3 +++ lib/libthr/thread/thr_cond.c | 3 +++ lib/libthr/thread/thr_mutex.c | 3 +++ lib/libthr/thread/thr_pspinlock.c | 3 +++ lib/libthr/thread/thr_rwlock.c | 3 +++ 5 files changed, 15 insertions(+) diff --git a/lib/libthr/thread/thr_barrier.c b/lib/libthr/thread/thr_barrier.c index 45ca41a18f9..ad4477d0089 100644 --- a/lib/libthr/thread/thr_barrier.c +++ b/lib/libthr/thread/thr_barrier.c @@ -34,6 +34,9 @@ #include "thr_private.h" +_Static_assert(sizeof(struct pthread_barrier) <= PAGE_SIZE, + "pthread_barrier is too large for off-page"); + __weak_reference(_pthread_barrier_init, pthread_barrier_init); __weak_reference(_pthread_barrier_wait, pthread_barrier_wait); __weak_reference(_pthread_barrier_destroy, pthread_barrier_destroy); diff --git a/lib/libthr/thread/thr_cond.c b/lib/libthr/thread/thr_cond.c index 934f9a04a63..13487bfe48a 100644 --- a/lib/libthr/thread/thr_cond.c +++ b/lib/libthr/thread/thr_cond.c @@ -40,6 +40,9 @@ #include "thr_private.h" +_Static_assert(sizeof(struct pthread_cond) <= PAGE_SIZE, + "pthread_cond too large"); + /* * Prototypes */ diff --git a/lib/libthr/thread/thr_mutex.c b/lib/libthr/thread/thr_mutex.c index 865e4cfbb29..f732a63118f 100644 --- a/lib/libthr/thread/thr_mutex.c +++ b/lib/libthr/thread/thr_mutex.c @@ -51,6 +51,9 @@ #include "thr_private.h" +_Static_assert(sizeof(struct pthread_mutex) <= PAGE_SIZE, + "pthread_mutex is too large for off-page"); + /* * For adaptive mutexes, how many times to spin doing trylock2 * before entering the kernel to block diff --git a/lib/libthr/thread/thr_pspinlock.c b/lib/libthr/thread/thr_pspinlock.c index 1c9b4128559..124e97b47e2 100644 --- a/lib/libthr/thread/thr_pspinlock.c +++ b/lib/libthr/thread/thr_pspinlock.c @@ -38,6 +38,9 @@ #include "thr_private.h" +_Static_assert(sizeof(struct pthread_spinlock) <= PAGE_SIZE, + "pthread_spinlock is too large for off-page"); + #define SPIN_COUNT 100000 __weak_reference(_pthread_spin_init, pthread_spin_init); diff --git a/lib/libthr/thread/thr_rwlock.c b/lib/libthr/thread/thr_rwlock.c index aadd0e9ab18..8e9fd738577 100644 --- a/lib/libthr/thread/thr_rwlock.c +++ b/lib/libthr/thread/thr_rwlock.c @@ -35,6 +35,9 @@ #include "un-namespace.h" #include "thr_private.h" +_Static_assert(sizeof(struct pthread_rwlock) <= PAGE_SIZE, + "pthread_rwlock is too large for off-page"); + __weak_reference(_pthread_rwlock_destroy, pthread_rwlock_destroy); __weak_reference(_pthread_rwlock_init, pthread_rwlock_init); __weak_reference(_pthread_rwlock_rdlock, pthread_rwlock_rdlock); From b715d9af68f6cf16077d115d1c3494ad4ab24eec Mon Sep 17 00:00:00 2001 From: Konstantin Belousov Date: Fri, 8 Apr 2016 10:23:48 +0000 Subject: [PATCH 065/159] Use the ABI-prescribed name for SHT_X86_64_UNWIND in the loader and kernel linker, after the r297686. Sponsored by: The FreeBSD Foundation --- sys/boot/common/load_elf_obj.c | 2 +- sys/kern/link_elf_obj.c | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/sys/boot/common/load_elf_obj.c b/sys/boot/common/load_elf_obj.c index 285a88e7d47..a32b9fde4b7 100644 --- a/sys/boot/common/load_elf_obj.c +++ b/sys/boot/common/load_elf_obj.c @@ -222,7 +222,7 @@ __elfN(obj_loadimage)(struct preloaded_file *fp, elf_file_t ef, u_int64_t off) case SHT_PROGBITS: case SHT_NOBITS: #if defined(__i386__) || defined(__amd64__) - case SHT_AMD64_UNWIND: + case SHT_X86_64_UNWIND: #endif lastaddr = roundup(lastaddr, shdr[i].sh_addralign); shdr[i].sh_addr = (Elf_Addr)lastaddr; diff --git a/sys/kern/link_elf_obj.c b/sys/kern/link_elf_obj.c index 012d5b7695d..575a7060766 100644 --- a/sys/kern/link_elf_obj.c +++ b/sys/kern/link_elf_obj.c @@ -258,7 +258,7 @@ link_elf_link_preload(linker_class_t cls, const char *filename, case SHT_PROGBITS: case SHT_NOBITS: #ifdef __amd64__ - case SHT_AMD64_UNWIND: + case SHT_X86_64_UNWIND: #endif ef->nprogtab++; break; @@ -331,13 +331,13 @@ link_elf_link_preload(linker_class_t cls, const char *filename, case SHT_PROGBITS: case SHT_NOBITS: #ifdef __amd64__ - case SHT_AMD64_UNWIND: + case SHT_X86_64_UNWIND: #endif ef->progtab[pb].addr = (void *)shdr[i].sh_addr; if (shdr[i].sh_type == SHT_PROGBITS) ef->progtab[pb].name = "<>"; #ifdef __amd64__ - else if (shdr[i].sh_type == SHT_AMD64_UNWIND) + else if (shdr[i].sh_type == SHT_X86_64_UNWIND) ef->progtab[pb].name = "<>"; #endif else @@ -597,7 +597,7 @@ link_elf_load_file(linker_class_t cls, const char *filename, case SHT_PROGBITS: case SHT_NOBITS: #ifdef __amd64__ - case SHT_AMD64_UNWIND: + case SHT_X86_64_UNWIND: #endif ef->nprogtab++; break; @@ -712,7 +712,7 @@ link_elf_load_file(linker_class_t cls, const char *filename, case SHT_PROGBITS: case SHT_NOBITS: #ifdef __amd64__ - case SHT_AMD64_UNWIND: + case SHT_X86_64_UNWIND: #endif alignmask = shdr[i].sh_addralign - 1; mapsize += alignmask; @@ -782,7 +782,7 @@ link_elf_load_file(linker_class_t cls, const char *filename, case SHT_PROGBITS: case SHT_NOBITS: #ifdef __amd64__ - case SHT_AMD64_UNWIND: + case SHT_X86_64_UNWIND: #endif alignmask = shdr[i].sh_addralign - 1; mapbase += alignmask; @@ -797,7 +797,7 @@ link_elf_load_file(linker_class_t cls, const char *filename, } else if (shdr[i].sh_type == SHT_PROGBITS) ef->progtab[pb].name = "<>"; #ifdef __amd64__ - else if (shdr[i].sh_type == SHT_AMD64_UNWIND) + else if (shdr[i].sh_type == SHT_X86_64_UNWIND) ef->progtab[pb].name = "<>"; #endif else @@ -823,7 +823,7 @@ link_elf_load_file(linker_class_t cls, const char *filename, ef->progtab[pb].sec = i; if (shdr[i].sh_type == SHT_PROGBITS #ifdef __amd64__ - || shdr[i].sh_type == SHT_AMD64_UNWIND + || shdr[i].sh_type == SHT_X86_64_UNWIND #endif ) { error = vn_rdwr(UIO_READ, nd.ni_vp, From ce45969226996824c545ec6ada1316b4a0997f9a Mon Sep 17 00:00:00 2001 From: Jared McNeill Date: Fri, 8 Apr 2016 10:54:59 +0000 Subject: [PATCH 066/159] Add function for mapping SRAM-D area to USB0 (OTG) controller. Use a lower pass number to ensure that this driver is loaded before EMAC or OTG, regardless of the order of nodes in the DT. --- sys/arm/allwinner/a10_sramc.c | 21 ++++++++++++++++++++- sys/arm/allwinner/a10_sramc.h | 1 + 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/sys/arm/allwinner/a10_sramc.c b/sys/arm/allwinner/a10_sramc.c index 63c99464d66..22ba1f7c4ad 100644 --- a/sys/arm/allwinner/a10_sramc.c +++ b/sys/arm/allwinner/a10_sramc.c @@ -52,6 +52,7 @@ __FBSDID("$FreeBSD$"); #include "a10_sramc.h" #define SRAM_CTL1_CFG 0x04 +#define CTL1_CFG_SRAMD_MAP_USB0 (1 << 0) struct a10_sramc_softc { struct resource *res; @@ -113,7 +114,8 @@ static driver_t a10_sramc_driver = { static devclass_t a10_sramc_devclass; -DRIVER_MODULE(a10_sramc, simplebus, a10_sramc_driver, a10_sramc_devclass, 0, 0); +EARLY_DRIVER_MODULE(a10_sramc, simplebus, a10_sramc_driver, a10_sramc_devclass, + 0, 0, BUS_PASS_RESOURCE + BUS_PASS_ORDER_EARLY); int a10_map_to_emac(void) @@ -131,3 +133,20 @@ a10_map_to_emac(void) return (0); } + +int +a10_map_to_otg(void) +{ + struct a10_sramc_softc *sc = a10_sramc_sc; + uint32_t reg_value; + + if (sc == NULL) + return (ENXIO); + + /* Map SRAM to OTG */ + reg_value = sramc_read_4(sc, SRAM_CTL1_CFG); + reg_value |= CTL1_CFG_SRAMD_MAP_USB0; + sramc_write_4(sc, SRAM_CTL1_CFG, reg_value); + + return (0); +} diff --git a/sys/arm/allwinner/a10_sramc.h b/sys/arm/allwinner/a10_sramc.h index 9c906df29b5..d66a8f2fbb1 100644 --- a/sys/arm/allwinner/a10_sramc.h +++ b/sys/arm/allwinner/a10_sramc.h @@ -30,5 +30,6 @@ #define _A10_SRAMC_H_ int a10_map_to_emac(void); +int a10_map_to_otg(void); #endif From 5c43c9a105629378e65756af634430ec2882f644 Mon Sep 17 00:00:00 2001 From: Konstantin Belousov Date: Fri, 8 Apr 2016 10:59:06 +0000 Subject: [PATCH 067/159] Use ANSI C function definitions, fix spelling in a comment. Sponsored by: The FreeBSD Foundation --- lib/libthr/thread/thr_main_np.c | 4 ++-- lib/libthr/thread/thr_multi_np.c | 2 +- lib/libthr/thread/thr_single_np.c | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/libthr/thread/thr_main_np.c b/lib/libthr/thread/thr_main_np.c index bfa8b87e953..f6244f3ca47 100644 --- a/lib/libthr/thread/thr_main_np.c +++ b/lib/libthr/thread/thr_main_np.c @@ -37,10 +37,10 @@ __weak_reference(_pthread_main_np, pthread_main_np); /* - * Provide the equivelant to Solaris thr_main() function + * Provide the equivalent to Solaris thr_main() function. */ int -_pthread_main_np() +_pthread_main_np(void) { if (!_thr_initial) diff --git a/lib/libthr/thread/thr_multi_np.c b/lib/libthr/thread/thr_multi_np.c index 339a21dcfe6..013bdfab5e4 100644 --- a/lib/libthr/thread/thr_multi_np.c +++ b/lib/libthr/thread/thr_multi_np.c @@ -37,7 +37,7 @@ __weak_reference(_pthread_multi_np, pthread_multi_np); int -_pthread_multi_np() +_pthread_multi_np(void) { /* Return to multi-threaded scheduling mode: */ diff --git a/lib/libthr/thread/thr_single_np.c b/lib/libthr/thread/thr_single_np.c index 81bdf8c1e91..af0c32bc23e 100644 --- a/lib/libthr/thread/thr_single_np.c +++ b/lib/libthr/thread/thr_single_np.c @@ -36,7 +36,8 @@ __weak_reference(_pthread_single_np, pthread_single_np); -int _pthread_single_np() +int +_pthread_single_np(void) { /* Enter single-threaded (non-POSIX) scheduling mode: */ From 0b519fe44f4657c23dc30813aaad8048cef9d529 Mon Sep 17 00:00:00 2001 From: "Andrey V. Elsukov" Date: Fri, 8 Apr 2016 11:13:24 +0000 Subject: [PATCH 068/159] Fix regression introduced in r296986. Currently we don't keep zoneid in in6_ifaddr structure, because there is still some code, that doesn't properly initialize sin6_scope_id, but some functions use sa_equal() for addresses comparison. sa_equal() compares full sockaddr_in6 structures and such comparison will fail. For now use zero zoneid in in6ifa_ifwithaddr(). It is safe, because used address is in embedded form. In future we will use zoneid, so mark it with XXX comment. Reported by: kp Tested by: kp --- sys/netinet6/in6_src.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/netinet6/in6_src.c b/sys/netinet6/in6_src.c index 40b4723a1d5..54c0a0a90a2 100644 --- a/sys/netinet6/in6_src.c +++ b/sys/netinet6/in6_src.c @@ -255,7 +255,7 @@ in6_selectsrc(uint32_t fibnum, struct sockaddr_in6 *dstsock, * ancillary data. */ if ((inp->inp_flags & INP_BINDANY) == 0) { - ia = in6ifa_ifwithaddr(&tmp, odstzone); + ia = in6ifa_ifwithaddr(&tmp, 0 /* XXX */); if (ia == NULL || (ia->ia6_flags & (IN6_IFF_ANYCAST | IN6_IFF_NOTREADY))) { if (ia != NULL) From 3279301186099f2fe0a3b98f05944434d84c056a Mon Sep 17 00:00:00 2001 From: Konstantin Belousov Date: Fri, 8 Apr 2016 11:15:26 +0000 Subject: [PATCH 069/159] Use __FBSDID() for .c files from lib/libthr/thread. Sponsored by: The FreeBSD Foundation --- lib/libthr/thread/thr_affinity.c | 6 +++--- lib/libthr/thread/thr_attr.c | 5 +++-- lib/libthr/thread/thr_autoinit.c | 5 +++-- lib/libthr/thread/thr_barrier.c | 5 +++-- lib/libthr/thread/thr_barrierattr.c | 5 +++-- lib/libthr/thread/thr_cancel.c | 6 +++--- lib/libthr/thread/thr_clean.c | 5 +++-- lib/libthr/thread/thr_concurrency.c | 5 +++-- lib/libthr/thread/thr_cond.c | 5 +++-- lib/libthr/thread/thr_condattr.c | 5 +++-- lib/libthr/thread/thr_create.c | 5 +++-- lib/libthr/thread/thr_detach.c | 6 +++--- lib/libthr/thread/thr_equal.c | 6 ++++-- lib/libthr/thread/thr_event.c | 5 +++-- lib/libthr/thread/thr_exit.c | 5 +++-- lib/libthr/thread/thr_fork.c | 5 +++-- lib/libthr/thread/thr_getcpuclockid.c | 5 +++-- lib/libthr/thread/thr_getprio.c | 6 ++++-- lib/libthr/thread/thr_getschedparam.c | 5 +++-- lib/libthr/thread/thr_getthreadid_np.c | 5 +++-- lib/libthr/thread/thr_info.c | 5 +++-- lib/libthr/thread/thr_init.c | 5 +++-- lib/libthr/thread/thr_join.c | 6 +++--- lib/libthr/thread/thr_kern.c | 5 +++-- lib/libthr/thread/thr_kill.c | 5 +++-- lib/libthr/thread/thr_list.c | 5 +++-- lib/libthr/thread/thr_main_np.c | 5 +++-- lib/libthr/thread/thr_multi_np.c | 5 +++-- lib/libthr/thread/thr_mutex.c | 5 +++-- lib/libthr/thread/thr_mutexattr.c | 5 +++-- lib/libthr/thread/thr_once.c | 6 +++--- lib/libthr/thread/thr_printf.c | 5 +++-- lib/libthr/thread/thr_pspinlock.c | 5 +++-- lib/libthr/thread/thr_resume_np.c | 5 +++-- lib/libthr/thread/thr_rtld.c | 6 +++--- lib/libthr/thread/thr_rwlock.c | 5 +++-- lib/libthr/thread/thr_rwlockattr.c | 5 +++-- lib/libthr/thread/thr_self.c | 5 +++-- lib/libthr/thread/thr_sem.c | 5 +++-- lib/libthr/thread/thr_setprio.c | 5 +++-- lib/libthr/thread/thr_setschedparam.c | 5 +++-- lib/libthr/thread/thr_sig.c | 5 +++-- lib/libthr/thread/thr_single_np.c | 5 +++-- lib/libthr/thread/thr_sleepq.c | 5 +++-- lib/libthr/thread/thr_spec.c | 5 +++-- lib/libthr/thread/thr_spinlock.c | 6 +++--- lib/libthr/thread/thr_stack.c | 5 +++-- lib/libthr/thread/thr_suspend_np.c | 5 +++-- lib/libthr/thread/thr_switch_np.c | 5 +++-- lib/libthr/thread/thr_symbols.c | 5 +++-- lib/libthr/thread/thr_umtx.c | 6 +++--- lib/libthr/thread/thr_yield.c | 5 +++-- 52 files changed, 158 insertions(+), 112 deletions(-) diff --git a/lib/libthr/thread/thr_affinity.c b/lib/libthr/thread/thr_affinity.c index 7e9b0f9620f..e76ca2aa0bd 100644 --- a/lib/libthr/thread/thr_affinity.c +++ b/lib/libthr/thread/thr_affinity.c @@ -22,11 +22,11 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ - * */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include diff --git a/lib/libthr/thread/thr_attr.c b/lib/libthr/thread/thr_attr.c index 0cac528a150..ff9eb2d5a39 100644 --- a/lib/libthr/thread/thr_attr.c +++ b/lib/libthr/thread/thr_attr.c @@ -89,10 +89,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include diff --git a/lib/libthr/thread/thr_autoinit.c b/lib/libthr/thread/thr_autoinit.c index c425569c226..7d9e52cc6ee 100644 --- a/lib/libthr/thread/thr_autoinit.c +++ b/lib/libthr/thread/thr_autoinit.c @@ -29,10 +29,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include #include "thr_private.h" diff --git a/lib/libthr/thread/thr_barrier.c b/lib/libthr/thread/thr_barrier.c index ad4477d0089..dd8f48e5d71 100644 --- a/lib/libthr/thread/thr_barrier.c +++ b/lib/libthr/thread/thr_barrier.c @@ -22,10 +22,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include diff --git a/lib/libthr/thread/thr_barrierattr.c b/lib/libthr/thread/thr_barrierattr.c index e98a66fcb5f..acaa0594b34 100644 --- a/lib/libthr/thread/thr_barrierattr.c +++ b/lib/libthr/thread/thr_barrierattr.c @@ -24,10 +24,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include diff --git a/lib/libthr/thread/thr_cancel.c b/lib/libthr/thread/thr_cancel.c index beae707cacd..c080931b40f 100644 --- a/lib/libthr/thread/thr_cancel.c +++ b/lib/libthr/thread/thr_cancel.c @@ -22,11 +22,11 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ - * */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include "un-namespace.h" diff --git a/lib/libthr/thread/thr_clean.c b/lib/libthr/thread/thr_clean.c index f2007264a23..62e3db20a4e 100644 --- a/lib/libthr/thread/thr_clean.c +++ b/lib/libthr/thread/thr_clean.c @@ -25,10 +25,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include diff --git a/lib/libthr/thread/thr_concurrency.c b/lib/libthr/thread/thr_concurrency.c index 61f0c4a5d40..24714e6cbd3 100644 --- a/lib/libthr/thread/thr_concurrency.c +++ b/lib/libthr/thread/thr_concurrency.c @@ -28,10 +28,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include diff --git a/lib/libthr/thread/thr_cond.c b/lib/libthr/thread/thr_cond.c index 13487bfe48a..0e37b706095 100644 --- a/lib/libthr/thread/thr_cond.c +++ b/lib/libthr/thread/thr_cond.c @@ -26,10 +26,11 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include diff --git a/lib/libthr/thread/thr_condattr.c b/lib/libthr/thread/thr_condattr.c index 7ce827bd561..906ea778a8d 100644 --- a/lib/libthr/thread/thr_condattr.c +++ b/lib/libthr/thread/thr_condattr.c @@ -25,10 +25,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include diff --git a/lib/libthr/thread/thr_create.c b/lib/libthr/thread/thr_create.c index 81a95da8e95..ee2c727cece 100644 --- a/lib/libthr/thread/thr_create.c +++ b/lib/libthr/thread/thr_create.c @@ -23,10 +23,11 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include diff --git a/lib/libthr/thread/thr_detach.c b/lib/libthr/thread/thr_detach.c index c494f7c3b30..f03731f2c79 100644 --- a/lib/libthr/thread/thr_detach.c +++ b/lib/libthr/thread/thr_detach.c @@ -23,11 +23,11 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ - * */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include diff --git a/lib/libthr/thread/thr_equal.c b/lib/libthr/thread/thr_equal.c index 2f602b5788f..a9eed8c0737 100644 --- a/lib/libthr/thread/thr_equal.c +++ b/lib/libthr/thread/thr_equal.c @@ -25,9 +25,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ + +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include "un-namespace.h" diff --git a/lib/libthr/thread/thr_event.c b/lib/libthr/thread/thr_event.c index 716d21e8e01..982f86a626d 100644 --- a/lib/libthr/thread/thr_event.c +++ b/lib/libthr/thread/thr_event.c @@ -22,10 +22,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include "thr_private.h" void diff --git a/lib/libthr/thread/thr_exit.c b/lib/libthr/thread/thr_exit.c index 7001311e6d8..e76623cd4c8 100644 --- a/lib/libthr/thread/thr_exit.c +++ b/lib/libthr/thread/thr_exit.c @@ -25,10 +25,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #ifdef _PTHREAD_FORCED_UNWIND diff --git a/lib/libthr/thread/thr_fork.c b/lib/libthr/thread/thr_fork.c index 531e09cef5f..1a646b008c8 100644 --- a/lib/libthr/thread/thr_fork.c +++ b/lib/libthr/thread/thr_fork.c @@ -23,8 +23,6 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ /* @@ -57,6 +55,9 @@ * */ +#include +__FBSDID("$FreeBSD$"); + #include #include "namespace.h" #include diff --git a/lib/libthr/thread/thr_getcpuclockid.c b/lib/libthr/thread/thr_getcpuclockid.c index b4ec666930c..1ad6a08b262 100644 --- a/lib/libthr/thread/thr_getcpuclockid.c +++ b/lib/libthr/thread/thr_getcpuclockid.c @@ -22,10 +22,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include diff --git a/lib/libthr/thread/thr_getprio.c b/lib/libthr/thread/thr_getprio.c index f0d1a296952..033f4f55772 100644 --- a/lib/libthr/thread/thr_getprio.c +++ b/lib/libthr/thread/thr_getprio.c @@ -25,9 +25,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ + +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include diff --git a/lib/libthr/thread/thr_getschedparam.c b/lib/libthr/thread/thr_getschedparam.c index ff6c3ab2acc..04ff3991b9c 100644 --- a/lib/libthr/thread/thr_getschedparam.c +++ b/lib/libthr/thread/thr_getschedparam.c @@ -28,10 +28,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include diff --git a/lib/libthr/thread/thr_getthreadid_np.c b/lib/libthr/thread/thr_getthreadid_np.c index f963a56e7ff..e7b496ea7a5 100644 --- a/lib/libthr/thread/thr_getthreadid_np.c +++ b/lib/libthr/thread/thr_getthreadid_np.c @@ -21,10 +21,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include diff --git a/lib/libthr/thread/thr_info.c b/lib/libthr/thread/thr_info.c index 350c8481c41..4e4f41eb9a8 100644 --- a/lib/libthr/thread/thr_info.c +++ b/lib/libthr/thread/thr_info.c @@ -25,10 +25,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include diff --git a/lib/libthr/thread/thr_init.c b/lib/libthr/thread/thr_init.c index c9f30ab0238..c852406aed7 100644 --- a/lib/libthr/thread/thr_init.c +++ b/lib/libthr/thread/thr_init.c @@ -29,10 +29,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include diff --git a/lib/libthr/thread/thr_join.c b/lib/libthr/thread/thr_join.c index a39ff67c250..42bd74965ee 100644 --- a/lib/libthr/thread/thr_join.c +++ b/lib/libthr/thread/thr_join.c @@ -22,11 +22,11 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ - * */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include diff --git a/lib/libthr/thread/thr_kern.c b/lib/libthr/thread/thr_kern.c index b5a8358b9f0..6463f1d1ad0 100644 --- a/lib/libthr/thread/thr_kern.c +++ b/lib/libthr/thread/thr_kern.c @@ -23,10 +23,11 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include #include #include diff --git a/lib/libthr/thread/thr_kill.c b/lib/libthr/thread/thr_kill.c index 8b0f68353ef..15928b1b91f 100644 --- a/lib/libthr/thread/thr_kill.c +++ b/lib/libthr/thread/thr_kill.c @@ -25,10 +25,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include diff --git a/lib/libthr/thread/thr_list.c b/lib/libthr/thread/thr_list.c index d27d87dac37..ae1f124416b 100644 --- a/lib/libthr/thread/thr_list.c +++ b/lib/libthr/thread/thr_list.c @@ -23,10 +23,11 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include #include diff --git a/lib/libthr/thread/thr_main_np.c b/lib/libthr/thread/thr_main_np.c index f6244f3ca47..9558adff27d 100644 --- a/lib/libthr/thread/thr_main_np.c +++ b/lib/libthr/thread/thr_main_np.c @@ -23,10 +23,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include diff --git a/lib/libthr/thread/thr_multi_np.c b/lib/libthr/thread/thr_multi_np.c index 013bdfab5e4..74379f55cc6 100644 --- a/lib/libthr/thread/thr_multi_np.c +++ b/lib/libthr/thread/thr_multi_np.c @@ -25,10 +25,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include diff --git a/lib/libthr/thread/thr_mutex.c b/lib/libthr/thread/thr_mutex.c index f732a63118f..28fd9eea56f 100644 --- a/lib/libthr/thread/thr_mutex.c +++ b/lib/libthr/thread/thr_mutex.c @@ -34,10 +34,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include #include "namespace.h" #include diff --git a/lib/libthr/thread/thr_mutexattr.c b/lib/libthr/thread/thr_mutexattr.c index fa349cfc756..a9e07c29326 100644 --- a/lib/libthr/thread/thr_mutexattr.c +++ b/lib/libthr/thread/thr_mutexattr.c @@ -25,8 +25,6 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ /* @@ -59,6 +57,9 @@ * */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include diff --git a/lib/libthr/thread/thr_once.c b/lib/libthr/thread/thr_once.c index 208b703ff43..80739da644c 100644 --- a/lib/libthr/thread/thr_once.c +++ b/lib/libthr/thread/thr_once.c @@ -22,11 +22,11 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ - * */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include "un-namespace.h" diff --git a/lib/libthr/thread/thr_printf.c b/lib/libthr/thread/thr_printf.c index a64b446e22e..ed9428716f5 100644 --- a/lib/libthr/thread/thr_printf.c +++ b/lib/libthr/thread/thr_printf.c @@ -22,10 +22,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include #include #include diff --git a/lib/libthr/thread/thr_pspinlock.c b/lib/libthr/thread/thr_pspinlock.c index 124e97b47e2..1c83b25b67d 100644 --- a/lib/libthr/thread/thr_pspinlock.c +++ b/lib/libthr/thread/thr_pspinlock.c @@ -26,10 +26,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include diff --git a/lib/libthr/thread/thr_resume_np.c b/lib/libthr/thread/thr_resume_np.c index 53377da5dc4..d11e328fe27 100644 --- a/lib/libthr/thread/thr_resume_np.c +++ b/lib/libthr/thread/thr_resume_np.c @@ -25,10 +25,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include diff --git a/lib/libthr/thread/thr_rtld.c b/lib/libthr/thread/thr_rtld.c index 6c407d1ca86..6f5347de215 100644 --- a/lib/libthr/thread/thr_rtld.c +++ b/lib/libthr/thread/thr_rtld.c @@ -22,11 +22,11 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ - * */ +#include +__FBSDID("$FreeBSD$"); + /* * A lockless rwlock for rtld. */ diff --git a/lib/libthr/thread/thr_rwlock.c b/lib/libthr/thread/thr_rwlock.c index 8e9fd738577..748eb52a202 100644 --- a/lib/libthr/thread/thr_rwlock.c +++ b/lib/libthr/thread/thr_rwlock.c @@ -22,10 +22,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include #include #include diff --git a/lib/libthr/thread/thr_rwlockattr.c b/lib/libthr/thread/thr_rwlockattr.c index b9e442e78bf..56174edead4 100644 --- a/lib/libthr/thread/thr_rwlockattr.c +++ b/lib/libthr/thread/thr_rwlockattr.c @@ -22,10 +22,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include diff --git a/lib/libthr/thread/thr_self.c b/lib/libthr/thread/thr_self.c index 72cda7ea75b..65ad631eafa 100644 --- a/lib/libthr/thread/thr_self.c +++ b/lib/libthr/thread/thr_self.c @@ -25,10 +25,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include "un-namespace.h" diff --git a/lib/libthr/thread/thr_sem.c b/lib/libthr/thread/thr_sem.c index f20bde36a33..a8b02acca44 100644 --- a/lib/libthr/thread/thr_sem.c +++ b/lib/libthr/thread/thr_sem.c @@ -26,10 +26,11 @@ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include diff --git a/lib/libthr/thread/thr_setprio.c b/lib/libthr/thread/thr_setprio.c index 4b7d2c09906..6f8a0098217 100644 --- a/lib/libthr/thread/thr_setprio.c +++ b/lib/libthr/thread/thr_setprio.c @@ -25,10 +25,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include "un-namespace.h" diff --git a/lib/libthr/thread/thr_setschedparam.c b/lib/libthr/thread/thr_setschedparam.c index 6e98fb43bc1..4db09e759ec 100644 --- a/lib/libthr/thread/thr_setschedparam.c +++ b/lib/libthr/thread/thr_setschedparam.c @@ -28,10 +28,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include diff --git a/lib/libthr/thread/thr_sig.c b/lib/libthr/thread/thr_sig.c index ebb6c58a4bb..ce7e70beaa5 100644 --- a/lib/libthr/thread/thr_sig.c +++ b/lib/libthr/thread/thr_sig.c @@ -22,10 +22,11 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include diff --git a/lib/libthr/thread/thr_single_np.c b/lib/libthr/thread/thr_single_np.c index af0c32bc23e..32bc5869a8f 100644 --- a/lib/libthr/thread/thr_single_np.c +++ b/lib/libthr/thread/thr_single_np.c @@ -25,10 +25,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include diff --git a/lib/libthr/thread/thr_sleepq.c b/lib/libthr/thread/thr_sleepq.c index c5dcac59d74..5ecd6f9d3e2 100644 --- a/lib/libthr/thread/thr_sleepq.c +++ b/lib/libthr/thread/thr_sleepq.c @@ -22,10 +22,11 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include #include "thr_private.h" diff --git a/lib/libthr/thread/thr_spec.c b/lib/libthr/thread/thr_spec.c index b53c4b744e3..46d4ddf30bc 100644 --- a/lib/libthr/thread/thr_spec.c +++ b/lib/libthr/thread/thr_spec.c @@ -25,10 +25,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include diff --git a/lib/libthr/thread/thr_spinlock.c b/lib/libthr/thread/thr_spinlock.c index 380d10dcb38..66396123d2e 100644 --- a/lib/libthr/thread/thr_spinlock.c +++ b/lib/libthr/thread/thr_spinlock.c @@ -25,11 +25,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ - * */ +#include +__FBSDID("$FreeBSD$"); + #include #include #include diff --git a/lib/libthr/thread/thr_stack.c b/lib/libthr/thread/thr_stack.c index 74e1329aedf..3510a74ab43 100644 --- a/lib/libthr/thread/thr_stack.c +++ b/lib/libthr/thread/thr_stack.c @@ -23,10 +23,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include #include #include diff --git a/lib/libthr/thread/thr_suspend_np.c b/lib/libthr/thread/thr_suspend_np.c index 284619da32f..48d4bc14906 100644 --- a/lib/libthr/thread/thr_suspend_np.c +++ b/lib/libthr/thread/thr_suspend_np.c @@ -25,10 +25,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include diff --git a/lib/libthr/thread/thr_switch_np.c b/lib/libthr/thread/thr_switch_np.c index f6ffb072bae..4380386e09f 100644 --- a/lib/libthr/thread/thr_switch_np.c +++ b/lib/libthr/thread/thr_switch_np.c @@ -28,10 +28,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include diff --git a/lib/libthr/thread/thr_symbols.c b/lib/libthr/thread/thr_symbols.c index ea323c58cce..9eef8db1a0a 100644 --- a/lib/libthr/thread/thr_symbols.c +++ b/lib/libthr/thread/thr_symbols.c @@ -25,10 +25,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include #include #include diff --git a/lib/libthr/thread/thr_umtx.c b/lib/libthr/thread/thr_umtx.c index 37e5df183eb..ebf344ba38a 100644 --- a/lib/libthr/thread/thr_umtx.c +++ b/lib/libthr/thread/thr_umtx.c @@ -22,11 +22,11 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $FreeBSD$ - * */ +#include +__FBSDID("$FreeBSD$"); + #include "thr_private.h" #include "thr_umtx.h" diff --git a/lib/libthr/thread/thr_yield.c b/lib/libthr/thread/thr_yield.c index c3f68f29df0..1739495f1e0 100644 --- a/lib/libthr/thread/thr_yield.c +++ b/lib/libthr/thread/thr_yield.c @@ -25,10 +25,11 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. - * - * $FreeBSD$ */ +#include +__FBSDID("$FreeBSD$"); + #include "namespace.h" #include #include From d416a6551475b7c0113ed4c66e2b1bfef72667da Mon Sep 17 00:00:00 2001 From: Wojciech Macek Date: Fri, 8 Apr 2016 11:20:56 +0000 Subject: [PATCH 070/159] Speedup BGX link polling on ARM64 The previous values caused the callout thread stall for 100ms each 2s if no link is present. Dtrace analysis showed that it has significant impact on overall interrupt performance. Decrease these values by a factor of 100. Obtained from: Semihalf Sponsored by: Cavium Reviewed by: zbb Differential Revision: https://reviews.freebsd.org/D5854 --- sys/dev/vnic/thunder_bgx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/dev/vnic/thunder_bgx.c b/sys/dev/vnic/thunder_bgx.c index 34947545996..7a3a941049c 100644 --- a/sys/dev/vnic/thunder_bgx.c +++ b/sys/dev/vnic/thunder_bgx.c @@ -240,7 +240,7 @@ static int bgx_poll_reg(struct bgx *bgx, uint8_t lmac, uint64_t reg, uint64_t mask, boolean_t zero) { - int timeout = 100; + int timeout = 10; uint64_t reg_val; while (timeout) { @@ -250,7 +250,7 @@ bgx_poll_reg(struct bgx *bgx, uint8_t lmac, uint64_t reg, uint64_t mask, if (!zero && (reg_val & mask)) return (0); - DELAY(1000); + DELAY(100); timeout--; } return (ETIMEDOUT); From 42e88fe650809fed3895c21c3a02d27c07cf0ca1 Mon Sep 17 00:00:00 2001 From: Tony Finch Date: Fri, 8 Apr 2016 11:43:22 +0000 Subject: [PATCH 071/159] Handle whois referrals between RIRs This is rather ugly, because the RIPE and APNIC whois servers do not provide referrals for address blocks that they do not manage. However ARIN is usually the right place or knows the right place so we try there. The particular instance which clued me in to this bug is U.Mich. 141.211.0.0/16 for which the referral chain should be IANA -> RIPE -> ARIN. RIPE's RDAP does provide useful redirects (for example try `curl -I http://rdap.db.ripe.net/ip/141.211.0.0) so maybe their whois server can be improved. AfriNIC's whois server gives more direct referrals, but they are designed to be human-readable. Ugly, but we can manage. The issue of referrals between RIRs is likely to become more important in the future whith the increasing number of cross-region IP address block transfers increases. --- usr.bin/whois/whois.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/usr.bin/whois/whois.c b/usr.bin/whois/whois.c index 49b20057722..9bae3b1cabd 100644 --- a/usr.bin/whois/whois.c +++ b/usr.bin/whois/whois.c @@ -114,9 +114,16 @@ static struct { WHOIS_REFERRAL("Whois Server:"), WHOIS_REFERRAL("Registrar WHOIS Server:"), /* corporatedomains.com */ WHOIS_REFERRAL("ReferralServer: whois://"), /* ARIN */ + WHOIS_REFERRAL("descr: region. Please query"), /* AfriNIC */ { NULL, 0 } }; +static const char *actually_arin[] = { + "netname: ERX-NETBLOCK\n", /* APNIC */ + "netname: NON-RIPE-NCC-MANAGED-ADDRESS-BLOCK\n", + NULL +}; + static const char *port = DEFAULT_PORT; static const char *choose_server(char *); @@ -469,6 +476,12 @@ whois(const char *query, const char *hostname, int flags) (int)(p - host), host); break; } + for (i = 0; actually_arin[i] != NULL; i++) { + if (strncmp(buf, actually_arin[i], len) == 0) { + s_asprintf(&nhost, "%s", ANICHOST); + break; + } + } } /* Verisign etc. */ if (!(flags & WHOIS_SPAM_ME) && From c8ff459286b38bc633f61ba52da8da5cf29a838f Mon Sep 17 00:00:00 2001 From: Andriy Gapon Date: Fri, 8 Apr 2016 11:58:24 +0000 Subject: [PATCH 072/159] zio write issue threads should have lower (numerically greater) priority This is because they might do data compression which is quite CPU expensive. The original code is correct for illumos, because there a higher priority corresponds to a greater number. MFC after: 2 weeks --- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c index f69a5e7268f..2e039edd6c2 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c @@ -929,7 +929,7 @@ spa_taskqs_init(spa_t *spa, zio_type_t t, zio_taskq_type_t q) * than the other taskqs. */ if (t == ZIO_TYPE_WRITE && q == ZIO_TASKQ_ISSUE) - pri--; + pri++; tq = taskq_create_proc(name, value, pri, 50, INT_MAX, spa->spa_proc, flags); From a449bdba320b3fdcad25ac7a0e8092c1c57fc741 Mon Sep 17 00:00:00 2001 From: Andriy Gapon Date: Fri, 8 Apr 2016 11:59:11 +0000 Subject: [PATCH 073/159] topo_set_pu_id: turn a check into an assertion The new id must not be present in any cpu set in any topology element. MFC after: 30 days --- sys/kern/subr_smp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/kern/subr_smp.c b/sys/kern/subr_smp.c index b09bc50ba91..4f3b51de276 100644 --- a/sys/kern/subr_smp.c +++ b/sys/kern/subr_smp.c @@ -1029,8 +1029,8 @@ topo_set_pu_id(struct topo_node *node, cpuid_t id) node->subtype = 1; while ((node = node->parent) != NULL) { - if (CPU_ISSET(id, &node->cpuset)) - break; + KASSERT(!CPU_ISSET(id, &node->cpuset), + ("logical ID %u is already set in node %p", id, node)); CPU_SET(id, &node->cpuset); node->cpu_count++; } From 6b5e33ba48109dc747c7471b4d482b5f63d20be0 Mon Sep 17 00:00:00 2001 From: Allan Jude Date: Fri, 8 Apr 2016 15:05:06 +0000 Subject: [PATCH 074/159] Do not add swap to fstab when swapsize is 0 If a user requested encrypted swap, but 0 sized, it would still be added to fstab PR: 208630 Submitted by: Ganael LAPLANCHE MFC after: 2 weeks Sponsored by: ScaleEngine Inc. --- usr.sbin/bsdinstall/scripts/zfsboot | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/usr.sbin/bsdinstall/scripts/zfsboot b/usr.sbin/bsdinstall/scripts/zfsboot index 4dedbf08a7f..c3b21376043 100755 --- a/usr.sbin/bsdinstall/scripts/zfsboot +++ b/usr.sbin/bsdinstall/scripts/zfsboot @@ -964,6 +964,8 @@ zfs_create_diskpart() f_expand_number "$ZFSBOOT_SWAP_SIZE" swapsize if [ "$isswapmirror" ]; then # This is not the first disk in the mirror, do nothing + elif [ ${swapsize:-0} -eq 0 ]; then + # If swap is 0 sized, don't add it to fstab elif [ "$ZFSBOOT_SWAP_ENCRYPTION" -a "$ZFSBOOT_SWAP_MIRROR" ]; then f_eval_catch $funcname printf "$PRINTF_FSTAB" \ /dev/mirror/swap.eli none swap sw 0 0 \ @@ -981,8 +983,6 @@ zfs_create_diskpart() /dev/$disk${swappart}.eli none swap sw 0 0 \ $BSDINSTALL_TMPETC/fstab || return $FAILURE - elif [ ${swapsize:-0} -eq 0 ]; then - # If swap is 0 sized, don't add it to fstab else f_eval_catch $funcname printf "$PRINTF_FSTAB" \ /dev/$disk$swappart none swap sw 0 0 \ From b3f7b13945462368b9ab59457b3ff118e08a43ee Mon Sep 17 00:00:00 2001 From: Allan Jude Date: Fri, 8 Apr 2016 15:08:22 +0000 Subject: [PATCH 075/159] bsdinstall/zfsboot should create /tmp and /var/tmp if they do not exist PR: 208629 PR: 208568 Submitted by: Galael LAPLANCHE MFC after: 2 weeks --- usr.sbin/bsdinstall/scripts/zfsboot | 2 ++ 1 file changed, 2 insertions(+) diff --git a/usr.sbin/bsdinstall/scripts/zfsboot b/usr.sbin/bsdinstall/scripts/zfsboot index c3b21376043..415afb65a89 100755 --- a/usr.sbin/bsdinstall/scripts/zfsboot +++ b/usr.sbin/bsdinstall/scripts/zfsboot @@ -1256,6 +1256,8 @@ zfs_create_boot() f_dprintf "$funcname: Modifying directory permissions..." local dir for dir in /tmp /var/tmp; do + f_eval_catch $funcname mkdir "$MKDIR_P" \ + $BSDINSTALL_CHROOT$dir || return $FAILURE f_eval_catch $funcname chmod "$CHMOD_MODE" 1777 \ $BSDINSTALL_CHROOT$dir || return $FAILURE done From 1ccd15cac7fc4df63e67c6ef7042380010e18e8a Mon Sep 17 00:00:00 2001 From: Stanislav Galabov Date: Fri, 8 Apr 2016 15:13:38 +0000 Subject: [PATCH 076/159] Fix wrong memory mapping In mtk_soc.c memory is mapped incorrectly for MT7621. This revision fixes this. Approved by: adrian (mentor) Sponsored by: Smartcom - Bulgaria AD Differential Revision: https://reviews.freebsd.org/D5882 --- sys/mips/mediatek/mtk_soc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/mips/mediatek/mtk_soc.c b/sys/mips/mediatek/mtk_soc.c index be576bd97a3..b331467e9d8 100644 --- a/sys/mips/mediatek/mtk_soc.c +++ b/sys/mips/mediatek/mtk_soc.c @@ -257,7 +257,7 @@ mtk_soc_try_early_detect(void) else base = MTK_DEFAULT_BASE; - if (bus_space_map(bst, MTK_DEFAULT_BASE, MTK_DEFAULT_SIZE, 0, &bsh)) + if (bus_space_map(bst, base, MTK_DEFAULT_SIZE, 0, &bsh)) return; /* First, figure out the CPU clock */ From 1e7745b401ca8d1a6202023019c08d955969fc76 Mon Sep 17 00:00:00 2001 From: Stanislav Galabov Date: Fri, 8 Apr 2016 15:20:58 +0000 Subject: [PATCH 077/159] Disable USB PHY slew rate calibration for Mediatek SoCs for now USB on both MT7621 and MT7688 seems to work much better without doing slew rate calibration. These are the only two SoCs, apart from MT7628, which actually make use of the slew rate calibration routines implemented in the mtk_usb_phy driver. Since MT7628 is actually a superset of MT7688 things should be the same for it as well. We do not remove the code, we simply define it out. Approved by: adrian (mentor) Sponsored by: Smartcom - Bulgaria AD Differential Revision: https://reviews.freebsd.org/D5884 --- sys/mips/mediatek/mtk_usb_phy.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/sys/mips/mediatek/mtk_usb_phy.c b/sys/mips/mediatek/mtk_usb_phy.c index da2acf0de09..d400720f34b 100644 --- a/sys/mips/mediatek/mtk_usb_phy.c +++ b/sys/mips/mediatek/mtk_usb_phy.c @@ -206,6 +206,11 @@ mtk_usb_phy_detach(device_t dev) return (0); } +/* + * Things currently seem to work a lot better without slew rate calibration + * both on MT7621 and MT7688, so we leave it out for now. + */ +#ifdef notyet static void mtk_usb_phy_slew_rate_calibration(struct mtk_usb_phy_softc *sc) { @@ -250,10 +255,12 @@ mtk_usb_phy_slew_rate_calibration(struct mtk_usb_phy_softc *sc) USB_PHY_BARRIER(sc); } } +#endif static void mtk_usb_phy_mt7621_init(device_t dev) { +#ifdef notyet struct mtk_usb_phy_softc *sc = device_get_softc(dev); /* Slew rate calibration only, but for 2 ports */ @@ -261,6 +268,7 @@ mtk_usb_phy_mt7621_init(device_t dev) sc->u2_base = MT7621_U2_BASE_P1; mtk_usb_phy_slew_rate_calibration(sc); +#endif } static void @@ -286,8 +294,10 @@ mtk_usb_phy_mt7628_init(device_t dev) USB_PHY_WRITE_U2(sc, U2_PHY_DTM0, 0x02000000); USB_PHY_BARRIER(sc); +#ifdef notyet /* Slew rate calibration */ - //mtk_usb_phy_slew_rate_calibration(sc); + mtk_usb_phy_slew_rate_calibration(sc); +#endif } static device_method_t mtk_usb_phy_methods[] = { From b37b38e9abed8d98236c9a4948fa482f48e8d9a9 Mon Sep 17 00:00:00 2001 From: Stanislav Galabov Date: Fri, 8 Apr 2016 15:22:30 +0000 Subject: [PATCH 078/159] Introduce XHCI support for MT7621 SoC Tested on a MT7621 board, similar to the WiTi board. More testing will be required to confirm everything is fine, but things look good so far. Approved by: adrian (mentor) Sponsored by: Smartcom - Bulgaria AD Differential Revision: https://reviews.freebsd.org/D5885 --- sys/mips/mediatek/mtk_xhci.c | 298 +++++++++++++++++++++++++++++++++++ 1 file changed, 298 insertions(+) create mode 100644 sys/mips/mediatek/mtk_xhci.c diff --git a/sys/mips/mediatek/mtk_xhci.c b/sys/mips/mediatek/mtk_xhci.c new file mode 100644 index 00000000000..08993072c35 --- /dev/null +++ b/sys/mips/mediatek/mtk_xhci.c @@ -0,0 +1,298 @@ +#include +__FBSDID("$FreeBSD$"); + +/*- + * Copyright (c) 2015 Stanislav Galabov. All rights reserved. + * Copyright (c) 2010,2011 Aleksandr Rybalko. All rights reserved. + * Copyright (c) 2007-2008 Hans Petter Selasky. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include + +#include +#include +#include + +#define XHCI_HC_DEVSTR "MTK USB 3.0 controller" + +static device_probe_t mtk_xhci_fdt_probe; +static device_attach_t mtk_xhci_fdt_attach; +static device_detach_t mtk_xhci_fdt_detach; + +static void mtk_xhci_fdt_init(device_t dev); + +static int +mtk_xhci_fdt_probe(device_t self) +{ + + if (!ofw_bus_status_okay(self)) + return (ENXIO); + + if (!ofw_bus_is_compatible(self, "mtk,usb-xhci")) + return (ENXIO); + + device_set_desc(self, XHCI_HC_DEVSTR); + + return (BUS_PROBE_DEFAULT); +} + +static int +mtk_xhci_fdt_attach(device_t self) +{ + struct xhci_softc *sc = device_get_softc(self); + int err; + int rid; + + /* initialise some bus fields */ + sc->sc_bus.parent = self; + sc->sc_bus.devices = sc->sc_devices; + sc->sc_bus.devices_max = XHCI_MAX_DEVICES; + sc->sc_bus.dma_bits = 32; + + rid = 0; + sc->sc_io_res = bus_alloc_resource_any(self, SYS_RES_MEMORY, &rid, + RF_ACTIVE); + if (!sc->sc_io_res) { + device_printf(self, "Could not map memory\n"); + goto error; + } + sc->sc_io_tag = rman_get_bustag(sc->sc_io_res); + sc->sc_io_hdl = rman_get_bushandle(sc->sc_io_res); + sc->sc_io_size = rman_get_size(sc->sc_io_res); + + mtk_xhci_fdt_init(self); + + rid = 0; + sc->sc_irq_res = bus_alloc_resource_any(self, SYS_RES_IRQ, &rid, + RF_SHAREABLE | RF_ACTIVE); + if (sc->sc_irq_res == NULL) { + device_printf(self, "Could not allocate irq\n"); + goto error; + } + + sc->sc_bus.bdev = device_add_child(self, "usbus", -1); + if (!(sc->sc_bus.bdev)) { + device_printf(self, "Could not add USB device\n"); + goto error; + } + device_set_ivars(sc->sc_bus.bdev, &sc->sc_bus); + device_set_desc(sc->sc_bus.bdev, XHCI_HC_DEVSTR); + + sprintf(sc->sc_vendor, "Mediatek"); + + err = bus_setup_intr(self, sc->sc_irq_res, INTR_TYPE_BIO | INTR_MPSAFE, + NULL, (driver_intr_t *)xhci_interrupt, sc, &sc->sc_intr_hdl); + if (err) { + device_printf(self, "Could not setup irq, %d\n", err); + sc->sc_intr_hdl = NULL; + goto error; + } + + err = xhci_init(sc, self, 1); + if (err == 0) + err = xhci_halt_controller(sc); + if (err == 0) + err = xhci_start_controller(sc); + if (err == 0) + err = device_probe_and_attach(sc->sc_bus.bdev); + if (err) { + device_printf(self, "USB init failed err=%d\n", err); + goto error; + } + return (0); + +error: + mtk_xhci_fdt_detach(self); + return (ENXIO); +} + +static int +mtk_xhci_fdt_detach(device_t self) +{ + struct xhci_softc *sc = device_get_softc(self); + device_t bdev; + int err; + + if (sc->sc_bus.bdev) { + bdev = sc->sc_bus.bdev; + device_detach(bdev); + device_delete_child(self, bdev); + } + /* during module unload there are lots of children leftover */ + device_delete_children(self); + + if (sc->sc_irq_res && sc->sc_intr_hdl) { + /* + * only call xhci_detach() after xhci_init() + */ + xhci_uninit(sc); + + err = bus_teardown_intr(self, sc->sc_irq_res, sc->sc_intr_hdl); + if (err) + device_printf(self, "Could not tear down irq, %d\n", + err); + sc->sc_intr_hdl = NULL; + } + if (sc->sc_irq_res) { + bus_release_resource(self, SYS_RES_IRQ, 0, + sc->sc_irq_res); + sc->sc_irq_res = NULL; + } + if (sc->sc_io_res) { + bus_release_resource(self, SYS_RES_MEMORY, 0, + sc->sc_io_res); + sc->sc_io_res = NULL; + } + + return (0); +} + +static device_method_t mtk_xhci_fdt_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, mtk_xhci_fdt_probe), + DEVMETHOD(device_attach, mtk_xhci_fdt_attach), + DEVMETHOD(device_detach, mtk_xhci_fdt_detach), + DEVMETHOD(device_suspend, bus_generic_suspend), + DEVMETHOD(device_resume, bus_generic_resume), + DEVMETHOD(device_shutdown, bus_generic_shutdown), + + DEVMETHOD_END +}; + +static driver_t mtk_xhci_fdt_driver = { + .name = "xhci", + .methods = mtk_xhci_fdt_methods, + .size = sizeof(struct xhci_softc), +}; + +static devclass_t mtk_xhci_fdt_devclass; + +DRIVER_MODULE(xhci, simplebus, mtk_xhci_fdt_driver, mtk_xhci_fdt_devclass, 0, + 0); + +#define USB_HDMA_CFG 0x950 +#define USB_HDMA_CFG_MT7621_VAL 0x10E0E0C + +#define U3_LTSSM_TIMING_PARAM3 0x2514 +#define U3_LTSSM_TIMING_VAL 0x3E8012C + +#define SYNC_HS_EOF 0x938 +#define SYNC_HS_EOF_VAL 0x201F3 + +#define USB_IP_SPAR0 0x107C8 +#define USB_IP_SPAR0_VAL 1 + +#define U2_PHY_BASE_P0 0x10800 +#define U2_PHY_BASE_P1 0x11000 +#define U2_PHYD_CR1 0x64 +#define U2_PHYD_CR1_MASK (3<<18) +#define U2_PHYD_CR1_VAL (1<<18) + +#define USB_IP_PW_CTRL 0x10700 +#define USB_IP_PW_CTRL_1 0x10704 +#define USB_IP_CAP 0x10724 +#define USB_U3_CTRL(p) (0x10730 + ((p) * 0x08)) +#define USB_U2_CTRL(p) (0x10750 + ((p) * 0x08)) + +#define USB_IP_SW_RST (1 << 0) +#define USB_IP_PDN (1 << 0) + +#define USB_PORT_DIS (1 << 0) +#define USB_PORT_PDN (1 << 1) + +#define U3_PORT_NUM(p) (p & 0xFF) +#define U2_PORT_NUM(p) ((p>>8) & 0xFF) + +#define RD4(_sc, _reg) bus_read_4((_sc)->sc_io_res, (_reg)) +#define WR4(_sc, _reg, _val) bus_write_4((_sc)->sc_io_res, (_reg), (_val)) +#define CLRSET4(_sc, _reg, _clr, _set) \ + WR4((_sc), (_reg), (RD4((_sc), (_reg)) & ~(_clr)) | (_set)) + +static void +mtk_xhci_fdt_init(device_t dev) +{ + struct xhci_softc *sc; + uint32_t temp, u3_ports, u2_ports, i; + + sc = device_get_softc(dev); + + temp = RD4(sc, USB_IP_CAP); + u3_ports = U3_PORT_NUM(temp); + u2_ports = U2_PORT_NUM(temp); + + device_printf(dev, "%d USB3 ports, %d USB2 ports\n", + u3_ports, u2_ports); + + CLRSET4(sc, USB_IP_PW_CTRL, 0, USB_IP_SW_RST); + CLRSET4(sc, USB_IP_PW_CTRL, USB_IP_SW_RST, 0); + CLRSET4(sc, USB_IP_PW_CTRL_1, USB_IP_PDN, 0); + + for (i = 0; i < u3_ports; i++) + CLRSET4(sc, USB_U3_CTRL(i), USB_PORT_PDN | USB_PORT_DIS, 0); + + for (i = 0; i < u2_ports; i++) + CLRSET4(sc, USB_U2_CTRL(i), USB_PORT_PDN | USB_PORT_DIS, 0); + + DELAY(100000); + + WR4(sc, USB_HDMA_CFG, USB_HDMA_CFG_MT7621_VAL); + WR4(sc, U3_LTSSM_TIMING_PARAM3, U3_LTSSM_TIMING_VAL); + WR4(sc, SYNC_HS_EOF, SYNC_HS_EOF_VAL); + WR4(sc, USB_IP_SPAR0, USB_IP_SPAR0_VAL); + CLRSET4(sc, U2_PHY_BASE_P0 + U2_PHYD_CR1, U2_PHYD_CR1_MASK, + U2_PHYD_CR1_VAL); + CLRSET4(sc, U2_PHY_BASE_P1 + U2_PHYD_CR1, U2_PHYD_CR1_MASK, + U2_PHYD_CR1_VAL); +} From 1b3142aaaeff9b615d5dd1a9583a40aa8b24c882 Mon Sep 17 00:00:00 2001 From: Stanislav Galabov Date: Fri, 8 Apr 2016 15:26:49 +0000 Subject: [PATCH 079/159] Introduce Mediatek/Ralink PCIe support This revision introduces PCIe support for the relevant Mediatek/Ralink SoCs. Currently the PCIe support is not converted to INTRNG, this may be a task for the future. Approved by: adrian (mentor) Sponsored by: Smartcom - Bulgaria AD Differential Revision: https://reviews.freebsd.org/D5886 --- sys/mips/mediatek/mtk_pcie.c | 1489 ++++++++++++++++++++++++++++++++++ sys/mips/mediatek/mtk_pcie.h | 164 ++++ 2 files changed, 1653 insertions(+) create mode 100644 sys/mips/mediatek/mtk_pcie.c create mode 100644 sys/mips/mediatek/mtk_pcie.h diff --git a/sys/mips/mediatek/mtk_pcie.c b/sys/mips/mediatek/mtk_pcie.c new file mode 100644 index 00000000000..a43d277ba19 --- /dev/null +++ b/sys/mips/mediatek/mtk_pcie.c @@ -0,0 +1,1489 @@ +/*- + * Copyright (c) 2016 Stanislav Galabov. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * The pci allocator parts are based on code from sys/dev/arm/mv/: + * + * Copyright (c) 2008 MARVELL INTERNATIONAL LTD. + * Copyright (c) 2010 The FreeBSD Foundation + * Copyright (c) 2010-2012 Semihalf + * All rights reserved. + * + * Developed by Semihalf. + */ +#include +__FBSDID("$FreeBSD$"); + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "pcib_if.h" +#include "pic_if.h" + +/* + * Note: We only support PCIe at the moment. + * Most SoCs in the Ralink/Mediatek family that we target actually don't + * support PCI anyway, with the notable exceptions being RT3662/RT3883, which + * support both PCI and PCIe. If there exists a board based on one of them + * which is of interest in the future it shouldn't be too hard to enable PCI + * support for it. + */ + +/* Chip specific function declarations */ +static int mtk_pcie_phy_init(device_t); +static int mtk_pcie_phy_start(device_t); +static int mtk_pcie_phy_stop(device_t); +static int mtk_pcie_phy_mt7621_init(device_t); +static int mtk_pcie_phy_mt7628_init(device_t); +static int mtk_pcie_phy_mt7620_init(device_t); +static int mtk_pcie_phy_rt3883_init(device_t); +static void mtk_pcie_phy_setup_slots(device_t); + +/* Generic declarations */ +struct mtx mtk_pci_mtx; +MTX_SYSINIT(mtk_pci_mtx, &mtk_pci_mtx, "MTK PCIe mutex", MTX_SPIN); + +static int mtk_pcib_init(device_t, int, int); +static int mtk_pci_intr(void *); + +static struct mtk_pci_softc *mt_sc = NULL; + +struct mtk_pci_range { + u_long base; + u_long len; +}; + +#define FDT_RANGES_CELLS (3 * 2) + +static void +mtk_pci_range_dump(struct mtk_pci_range *range) +{ +#ifdef DEBUG + printf("\n"); + printf(" base = 0x%08lx\n", range->base); + printf(" len = 0x%08lx\n", range->len); +#endif +} + +static int +mtk_pci_ranges_decode(phandle_t node, struct mtk_pci_range *io_space, + struct mtk_pci_range *mem_space) +{ + struct mtk_pci_range *pci_space; + pcell_t ranges[FDT_RANGES_CELLS]; + pcell_t *rangesptr; + pcell_t cell0, cell1, cell2; + int tuples, i, rv, len; + + /* + * Retrieve 'ranges' property. + */ + if (!OF_hasprop(node, "ranges")) { + printf("%s: %d\n", __FUNCTION__, 1); + return (EINVAL); + } + + len = OF_getproplen(node, "ranges"); + if (len > sizeof(ranges)) { + printf("%s: %d\n", __FUNCTION__, 2); + return (ENOMEM); + } + + if (OF_getprop(node, "ranges", ranges, sizeof(ranges)) <= 0) { + printf("%s: %d\n", __FUNCTION__, 3); + return (EINVAL); + } + + tuples = len / (sizeof(pcell_t) * 3); + + /* + * Initialize the ranges so that we don't have to worry about + * having them all defined in the FDT. In particular, it is + * perfectly fine not to want I/O space on PCI busses. + */ + bzero(io_space, sizeof(*io_space)); + bzero(mem_space, sizeof(*mem_space)); + + rangesptr = &ranges[0]; + for (i = 0; i < tuples; i++) { + cell0 = fdt_data_get((void *)rangesptr, 1); + rangesptr++; + cell1 = fdt_data_get((void *)rangesptr, 1); + rangesptr++; + cell2 = fdt_data_get((void *)rangesptr, 1); + rangesptr++; + + if (cell0 == 2) { + pci_space = mem_space; + } else if (cell0 == 1) { + pci_space = io_space; + } else { + rv = ERANGE; + printf("%s: %d\n", __FUNCTION__, 4); + goto out; + } + + pci_space->base = cell1; + pci_space->len = cell2; + } + + rv = 0; +out: + return (rv); +} + +static int +mtk_pci_ranges(phandle_t node, struct mtk_pci_range *io_space, + struct mtk_pci_range *mem_space) +{ + int err; + + if ((err = mtk_pci_ranges_decode(node, io_space, mem_space)) != 0) { + return (err); + } + + mtk_pci_range_dump(io_space); + mtk_pci_range_dump(mem_space); + + return (0); +} + +static struct ofw_compat_data compat_data[] = { + { "ralink,rt3662-pcie", MTK_SOC_RT3883 }, + { "ralink,rt3883-pcie", MTK_SOC_RT3883 }, + { "ralink,mt7620a-pcie", MTK_SOC_MT7620A }, + { "ralink,mt7621-pcie", MTK_SOC_MT7621 }, + { "ralink,mt7628-pcie", MTK_SOC_MT7628 }, + { "ralink,mt7688-pcie", MTK_SOC_MT7628 }, + { NULL, MTK_SOC_UNKNOWN } +}; + +static int +mtk_pci_probe(device_t dev) +{ + struct mtk_pci_softc *sc = device_get_softc(dev); + + if (!ofw_bus_status_okay(dev)) + return (ENXIO); + + sc->socid = ofw_bus_search_compatible(dev, compat_data)->ocd_data; + if (sc->socid == MTK_SOC_UNKNOWN) + return (ENXIO); + + device_set_desc(dev, "MTK PCIe Controller"); + + return (0); +} + +static int +mtk_pci_attach(device_t dev) +{ + struct mtk_pci_softc *sc = device_get_softc(dev); + struct mtk_pci_range io_space, mem_space; + phandle_t node; + intptr_t xref; + int i, rid; + + sc->sc_dev = dev; + mt_sc = sc; + sc->addr_mask = 0xffffffff; + + /* Request our memory */ + rid = 0; + sc->pci_res[0] = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, + RF_ACTIVE); + if (sc->pci_res[0] == NULL) { + device_printf(dev, "could not allocate memory resource\n"); + return (ENXIO); + } + + /* See how many interrupts we need */ + if (sc->socid == MTK_SOC_MT7621) + sc->sc_num_irq = 3; + else { + sc->sc_num_irq = 1; + sc->pci_res[2] = sc->pci_res[3] = NULL; + sc->pci_intrhand[1] = sc->pci_intrhand[2] = NULL; + } + + /* Request our interrupts */ + for (i = 1; i <= sc->sc_num_irq ; i++) { + rid = i - 1; + sc->pci_res[i] = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid, + RF_ACTIVE); + if (sc->pci_res[i] == NULL) { + device_printf(dev, "could not allocate interrupt " + "resource %d\n", rid); + goto cleanup_res; + } + } + + /* Parse our PCI 'ranges' property */ + node = ofw_bus_get_node(dev); + xref = OF_xref_from_node(node); + if (mtk_pci_ranges(node, &io_space, &mem_space)) { + device_printf(dev, "could not retrieve 'ranges' data\n"); + goto cleanup_res; + } + + /* Memory, I/O and IRQ resource limits */ + sc->sc_io_base = io_space.base; + sc->sc_io_size = io_space.len; + sc->sc_mem_base = mem_space.base; + sc->sc_mem_size = mem_space.len; + sc->sc_irq_start = MTK_PCIE0_IRQ; + sc->sc_irq_end = MTK_PCIE2_IRQ; + + /* Init resource managers for memory, I/O and IRQ */ + sc->sc_mem_rman.rm_type = RMAN_ARRAY; + sc->sc_mem_rman.rm_descr = "mtk pcie memory window"; + if (rman_init(&sc->sc_mem_rman) != 0 || + rman_manage_region(&sc->sc_mem_rman, sc->sc_mem_base, + sc->sc_mem_base + sc->sc_mem_size - 1) != 0) { + device_printf(dev, "failed to setup memory rman\n"); + goto cleanup_res; + } + + sc->sc_io_rman.rm_type = RMAN_ARRAY; + sc->sc_io_rman.rm_descr = "mtk pcie io window"; + if (rman_init(&sc->sc_io_rman) != 0 || + rman_manage_region(&sc->sc_io_rman, sc->sc_io_base, + sc->sc_io_base + sc->sc_io_size - 1) != 0) { + device_printf(dev, "failed to setup io rman\n"); + goto cleanup_res; + } + + sc->sc_irq_rman.rm_type = RMAN_ARRAY; + sc->sc_irq_rman.rm_descr = "mtk pcie irqs"; + if (rman_init(&sc->sc_irq_rman) != 0 || + rman_manage_region(&sc->sc_irq_rman, sc->sc_irq_start, + sc->sc_irq_end) != 0) { + device_printf(dev, "failed to setup irq rman\n"); + goto cleanup_res; + } + + /* Do SoC-specific PCIe initialization */ + if (mtk_pcie_phy_init(dev)) { + device_printf(dev, "pcie phy init failed\n"); + goto cleanup_rman; + } + + /* Register ourselves as an interrupt controller */ + if (intr_pic_register(dev, xref) != 0) { + device_printf(dev, "could not register PIC\n"); + goto cleanup_rman; + } + + /* Set up our interrupt handler */ + for (i = 1; i <= sc->sc_num_irq; i++) { + sc->pci_intrhand[i - 1] = NULL; + if (bus_setup_intr(dev, sc->pci_res[i], INTR_TYPE_MISC, + mtk_pci_intr, NULL, sc, &sc->pci_intrhand[i - 1])) { + device_printf(dev, "could not setup intr handler %d\n", + i); + goto cleanup; + } + } + + /* Do generic PCIe initialization and resource allocation */ + mtk_pcib_init(dev, 0, PCI_SLOTMAX); + + /* Attach our PCI child so bus enumeration can start */ + if (device_add_child(dev, "pci", -1) == NULL) { + device_printf(dev, "could not attach pci bus\n"); + goto cleanup; + } + + /* And finally, attach ourselves to the bus */ + if (bus_generic_attach(dev)) { + device_printf(dev, "could not attach to bus\n"); + goto cleanup; + } + + return (0); + +cleanup: +#ifdef notyet + intr_pic_unregister(dev, xref); +#endif + for (i = 1; i <= sc->sc_num_irq; i++) { + if (sc->pci_intrhand[i - 1] != NULL) + bus_teardown_intr(dev, sc->pci_res[i], + sc->pci_intrhand[i - 1]); + } +cleanup_rman: + mtk_pcie_phy_stop(dev); + rman_fini(&sc->sc_irq_rman); + rman_fini(&sc->sc_io_rman); + rman_fini(&sc->sc_mem_rman); +cleanup_res: + mt_sc = NULL; + if (sc->pci_res[0] != NULL) + bus_release_resource(dev, SYS_RES_MEMORY, 0, sc->pci_res[0]); + if (sc->pci_res[1] != NULL) + bus_release_resource(dev, SYS_RES_IRQ, 0, sc->pci_res[1]); + if (sc->pci_res[2] != NULL) + bus_release_resource(dev, SYS_RES_IRQ, 1, sc->pci_res[2]); + if (sc->pci_res[3] != NULL) + bus_release_resource(dev, SYS_RES_IRQ, 2, sc->pci_res[3]); + return (ENXIO); +} + +static int +mtk_pci_read_ivar(device_t dev, device_t child, int which, + uintptr_t *result) +{ + struct mtk_pci_softc *sc = device_get_softc(dev); + + switch (which) { + case PCIB_IVAR_DOMAIN: + *result = device_get_unit(dev); + return (0); + case PCIB_IVAR_BUS: + *result = sc->sc_busno; + return (0); + } + + return (ENOENT); +} + +static int +mtk_pci_write_ivar(device_t dev, device_t child, int which, + uintptr_t result) +{ + struct mtk_pci_softc *sc = device_get_softc(dev); + + switch (which) { + case PCIB_IVAR_BUS: + sc->sc_busno = result; + return (0); + } + + return (ENOENT); +} + +static struct resource * +mtk_pci_alloc_resource(device_t bus, device_t child, int type, int *rid, + rman_res_t start, rman_res_t end, rman_res_t count, u_int flags) +{ + struct mtk_pci_softc *sc = device_get_softc(bus); + struct resource *rv; + struct rman *rm; + + switch (type) { + case SYS_RES_IRQ: + rm = &sc->sc_irq_rman; + break; + case SYS_RES_IOPORT: + rm = &sc->sc_io_rman; + break; + case SYS_RES_MEMORY: + rm = &sc->sc_mem_rman; + break; + default: + return (NULL); + } + + rv = rman_reserve_resource(rm, start, end, count, flags, child); + + if (rv == NULL) + return (NULL); + + rman_set_rid(rv, *rid); + + if ((flags & RF_ACTIVE) && type != SYS_RES_IRQ) { + if (bus_activate_resource(child, type, *rid, rv)) { + rman_release_resource(rv); + return (NULL); + } + } + + return (rv); +} + +static inline int +mtk_idx_to_irq(int idx) +{ + + return ((idx == 0) ? MTK_PCIE0_IRQ : + (idx == 1) ? MTK_PCIE1_IRQ : + (idx == 2) ? MTK_PCIE2_IRQ : -1); +} + +static inline int +mtk_irq_to_idx(int irq) +{ + + return ((irq == MTK_PCIE0_IRQ) ? 0 : + (irq == MTK_PCIE1_IRQ) ? 1 : + (irq == MTK_PCIE2_IRQ) ? 2 : -1); +} + +static void +mtk_pci_mask_irq(void *source) +{ + MT_WRITE32(mt_sc, MTK_PCI_PCIENA, + MT_READ32(mt_sc, MTK_PCI_PCIENA) & ~(1<<((int)source))); +} + +static void +mtk_pci_unmask_irq(void *source) +{ + + MT_WRITE32(mt_sc, MTK_PCI_PCIENA, + MT_READ32(mt_sc, MTK_PCI_PCIENA) | (1<<((int)source))); +} + +static int +mtk_pci_setup_intr(device_t bus, device_t child, struct resource *ires, + int flags, driver_filter_t *filt, driver_intr_t *handler, + void *arg, void **cookiep) +{ + struct mtk_pci_softc *sc = device_get_softc(bus); + struct intr_event *event; + int irq, error, irqidx; + + irq = rman_get_start(ires); + + if (irq < sc->sc_irq_start || irq > sc->sc_irq_end) + return (EINVAL); + + irqidx = irq - sc->sc_irq_start; + + event = sc->sc_eventstab[irqidx]; + if (event == NULL) { + error = intr_event_create(&event, (void *)irq, 0, irq, + mtk_pci_mask_irq, mtk_pci_unmask_irq, NULL, NULL, + "pci intr%d:", irq); + + if (error == 0) { + sc->sc_eventstab[irqidx] = event; + } + else { + return (error); + } + } + + intr_event_add_handler(event, device_get_nameunit(child), filt, + handler, arg, intr_priority(flags), flags, cookiep); + + mtk_pci_unmask_irq((void*)irq); + + return (0); +} + +static int +mtk_pci_teardown_intr(device_t dev, device_t child, struct resource *ires, + void *cookie) +{ + struct mtk_pci_softc *sc = device_get_softc(dev); + int irq, result, irqidx; + + irq = rman_get_start(ires); + if (irq < sc->sc_irq_start || irq > sc->sc_irq_end) + return (EINVAL); + + irqidx = irq - sc->sc_irq_start; + if (sc->sc_eventstab[irqidx] == NULL) + panic("Trying to teardown unoccupied IRQ"); + + mtk_pci_mask_irq((void*)irq); + + result = intr_event_remove_handler(cookie); + if (!result) + sc->sc_eventstab[irqidx] = NULL; + + + return (result); +} + +static inline uint32_t +mtk_pci_make_addr(int bus, int slot, int func, int reg) +{ + uint32_t addr; + + addr = ((((reg & 0xf00) >> 8) << 24) | (bus << 16) | (slot << 11) | + (func << 8) | (reg & 0xfc) | (1 << 31)); + + return (addr); +} + +static int +mtk_pci_maxslots(device_t dev) +{ + + return (PCI_SLOTMAX); +} + +static inline int +mtk_pci_slot_has_link(device_t dev, int slot) +{ + struct mtk_pci_softc *sc = device_get_softc(dev); + + return !!(sc->pcie_link_status & (1<addr_mask; + MT_WRITE32(sc, MTK_PCI_CFGADDR, addr); + switch (bytes % 4) { + case 0: + data = MT_READ32(sc, MTK_PCI_CFGDATA); + break; + case 1: + data = MT_READ8(sc, MTK_PCI_CFGDATA + (reg & 0x3)); + break; + case 2: + data = MT_READ16(sc, MTK_PCI_CFGDATA + (reg & 0x3)); + break; + default: + panic("%s(): Wrong number of bytes (%d) requested!\n", + __FUNCTION__, bytes % 4); + } + mtx_unlock_spin(&mtk_pci_mtx); + + return (data); +} + +static void +mtk_pci_write_config(device_t dev, u_int bus, u_int slot, u_int func, + u_int reg, uint32_t val, int bytes) +{ + struct mtk_pci_softc *sc = device_get_softc(dev); + uint32_t addr = 0, data = val; + + /* Do not write if slot has no link */ + if (bus == 0 && mtk_pci_slot_has_link(dev, slot) == 0) + return; + + mtx_lock_spin(&mtk_pci_mtx); + addr = mtk_pci_make_addr(bus, slot, func, (reg & ~3)) & sc->addr_mask; + MT_WRITE32(sc, MTK_PCI_CFGADDR, addr); + switch (bytes % 4) { + case 0: + MT_WRITE32(sc, MTK_PCI_CFGDATA, data); + break; + case 1: + MT_WRITE8(sc, MTK_PCI_CFGDATA + (reg & 0x3), data); + break; + case 2: + MT_WRITE16(sc, MTK_PCI_CFGDATA + (reg & 0x3), data); + break; + default: + panic("%s(): Wrong number of bytes (%d) requested!\n", + __FUNCTION__, bytes % 4); + } + mtx_unlock_spin(&mtk_pci_mtx); +} + +#if 0 +/* We take care of interrupt routing in the allocator code below */ +static int +mtk_pci_route_interrupt(device_t pcib, device_t device, int pin) +{ + //struct mtk_pci_softc *sc = device_get_softc(pcib); + int bus, sl, dev; + + if (1) return PCI_INVALID_IRQ; + + bus = pci_get_bus(device); + sl = pci_get_slot(device); + dev = pci_get_device(device); + + printf("%s: for %d:%d:%d, int = %d\n", __FUNCTION__, bus, sl, dev, pin); + + if (bus != 0) + panic("Unexpected bus number %d\n", bus); + + /* PCIe only */ + switch (sl) { + case 0: return MTK_PCIE0_IRQ; + case 1: return MTK_PCIE0_IRQ + 1; + case 2: return MTK_PCIE0_IRQ + 2; + default: return (-1); + } + + return (-1); +} +#endif + +static device_method_t mtk_pci_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, mtk_pci_probe), + DEVMETHOD(device_attach, mtk_pci_attach), + DEVMETHOD(device_shutdown, bus_generic_shutdown), + DEVMETHOD(device_suspend, bus_generic_suspend), + DEVMETHOD(device_resume, bus_generic_resume), + + /* Bus interface */ + DEVMETHOD(bus_read_ivar, mtk_pci_read_ivar), + DEVMETHOD(bus_write_ivar, mtk_pci_write_ivar), + DEVMETHOD(bus_alloc_resource, mtk_pci_alloc_resource), + DEVMETHOD(bus_release_resource, bus_generic_release_resource), + DEVMETHOD(bus_activate_resource, bus_generic_activate_resource), + DEVMETHOD(bus_deactivate_resource, bus_generic_deactivate_resource), + DEVMETHOD(bus_setup_intr, mtk_pci_setup_intr), + DEVMETHOD(bus_teardown_intr, mtk_pci_teardown_intr), + + /* pcib interface */ + DEVMETHOD(pcib_maxslots, mtk_pci_maxslots), + DEVMETHOD(pcib_read_config, mtk_pci_read_config), + DEVMETHOD(pcib_write_config, mtk_pci_write_config), +#if 0 + DEVMETHOD(pcib_route_interrupt, mtk_pci_route_interrupt), +#endif + + DEVMETHOD_END +}; + +static driver_t mtk_pci_driver = { + "pcib", + mtk_pci_methods, + sizeof(struct mtk_pci_softc), +}; + +static devclass_t mtk_pci_devclass; + +DRIVER_MODULE(mtk_pci, simplebus, mtk_pci_driver, mtk_pci_devclass, 0, 0); + +/* Resource allocation code */ +static inline uint32_t +pcib_bit_get(uint32_t *map, uint32_t bit) +{ + uint32_t n = bit / BITS_PER_UINT32; + + bit = bit % BITS_PER_UINT32; + return (map[n] & (1 << bit)); +} + +static inline void +pcib_bit_set(uint32_t *map, uint32_t bit) +{ + uint32_t n = bit / BITS_PER_UINT32; + + bit = bit % BITS_PER_UINT32; + map[n] |= (1 << bit); +} + +static inline uint32_t +pcib_map_check(uint32_t *map, uint32_t start, uint32_t bits) +{ + uint32_t i; + + for (i = start; i < start + bits; i++) + if (pcib_bit_get(map, i)) + return (0); + + return (1); +} + +static inline void +pcib_map_set(uint32_t *map, uint32_t start, uint32_t bits) +{ + uint32_t i; + + for (i = start; i < start + bits; i++) + pcib_bit_set(map, i); +} + +static bus_addr_t +pcib_alloc(device_t dev, uint32_t smask) +{ + struct mtk_pci_softc *sc = device_get_softc(dev); + uint32_t bits, bits_limit, i, *map, min_alloc, size; + bus_addr_t addr = 0; + bus_addr_t base; + + if (smask & 1) { + base = sc->sc_io_base; + min_alloc = PCI_MIN_IO_ALLOC; + bits_limit = sc->sc_io_size / min_alloc; + map = sc->sc_io_map; + smask &= ~0x3; + } else { + base = sc->sc_mem_base; + min_alloc = PCI_MIN_MEM_ALLOC; + bits_limit = sc->sc_mem_size / min_alloc; + map = sc->sc_mem_map; + smask &= ~0xF; + } + + size = ~smask + 1; + bits = size / min_alloc; + + for (i = 0; i + bits <= bits_limit; i+= bits) + if (pcib_map_check(map, i, bits)) { + pcib_map_set(map, i, bits); + addr = base + (i * min_alloc); + return (addr); + } + + return (addr); +} + +static int +mtk_pcib_init_bar(device_t dev, int bus, int slot, int func, int barno) +{ + uint32_t addr, bar; + int reg, width; + + reg = PCIR_BAR(barno); + + mtk_pci_write_config(dev, bus, slot, func, reg, ~0, 4); + bar = mtk_pci_read_config(dev, bus, slot, func, reg, 4); + if (bar == 0) + return (1); + + /* Calculate BAR size: 64 or 32 bit (in 32-bit units) */ + width = ((bar & 7) == 4) ? 2 : 1; + + addr = pcib_alloc(dev, bar); + if (!addr) + return (-1); + + if (bootverbose) + printf("PCI %u:%u:%u: reg %x: smask=%08x: addr=%08x\n", + bus, slot, func, reg, bar, addr); + + mtk_pci_write_config(dev, bus, slot, func, reg, addr, 4); + if (width == 2) + mtk_pci_write_config(dev, bus, slot, func, reg + 4, 0, 4); + + return (width); +} + +static int +mtk_pcib_init_all_bars(device_t dev, int bus, int slot, int func, + int hdrtype) +{ + int maxbar, bar, i; + + maxbar = (hdrtype & PCIM_HDRTYPE) ? 0 : 6; + bar = 0; + + while (bar < maxbar) { + i = mtk_pcib_init_bar(dev, bus, slot, func, bar); + bar += i; + if (i < 0) { + device_printf(dev, "PCI IO/Memory space exhausted\n"); + return (ENOMEM); + } + } + + return (0); +} + +static void +mtk_pcib_init_bridge(device_t dev, int bus, int slot, int func) +{ + struct mtk_pci_softc *sc = device_get_softc(dev); + bus_addr_t io_base, mem_base; + uint32_t io_limit, mem_limit; + int secbus; + + if (bus == 0 && !mtk_pci_slot_has_link(dev, slot)) { + sc->sc_cur_secbus++; + device_printf(dev, "Skip bus %d due to no link\n", + sc->sc_cur_secbus); + return; + } + + io_base = sc->sc_io_base; + io_limit = io_base + sc->sc_io_size - 1; + mem_base = sc->sc_mem_base; + mem_limit = mem_base + sc->sc_mem_size - 1; + + mtk_pci_write_config(dev, bus, slot, func, PCIR_IOBASEL_1, + io_base >> 8, 1); + mtk_pci_write_config(dev, bus, slot, func, PCIR_IOBASEH_1, + io_base >> 16, 2); + mtk_pci_write_config(dev, bus, slot, func, PCIR_IOLIMITL_1, + io_limit >> 8, 1); + mtk_pci_write_config(dev, bus, slot, func, PCIR_IOLIMITH_1, + io_limit >> 16, 2); + + mtk_pci_write_config(dev, bus, slot, func, PCIR_MEMBASE_1, + mem_base >> 16, 2); + mtk_pci_write_config(dev, bus, slot, func, PCIR_MEMLIMIT_1, + mem_limit >> 16, 2); + + mtk_pci_write_config(dev, bus, slot, func, PCIR_PMBASEL_1, + 0x10, 2); + mtk_pci_write_config(dev, bus, slot, func, PCIR_PMBASEH_1, + 0x0, 4); + mtk_pci_write_config(dev, bus, slot, func, PCIR_PMLIMITL_1, + 0xF, 2); + mtk_pci_write_config(dev, bus, slot, func, PCIR_PMLIMITH_1, + 0x0, 4); + + mtk_pci_write_config(dev, bus, slot, func, PCIR_INTLINE, 0xff, 1); + + secbus = mtk_pci_read_config(dev, bus, slot, func, PCIR_SECBUS_1, 1); + + if (secbus == 0) { + sc->sc_cur_secbus++; + mtk_pci_write_config(dev, bus, slot, func, PCIR_SECBUS_1, + sc->sc_cur_secbus, 1); + mtk_pci_write_config(dev, bus, slot, func, PCIR_SUBBUS_1, + sc->sc_cur_secbus, 1); + secbus = sc->sc_cur_secbus; + } + + mtk_pcib_init(dev, secbus, PCI_SLOTMAX); +} + +static uint8_t +mtk_pci_get_int(device_t dev, int bus, int slot) +{ + + if (slot != 0) + return (PCI_INVALID_IRQ); + + switch (bus) { + case 1: + return (MTK_PCIE0_IRQ); + case 2: + return (MTK_PCIE1_IRQ); + case 3: + return (MTK_PCIE2_IRQ); + default: + device_printf(dev, "Bus %d out of range\n", slot); + return (PCI_INVALID_IRQ); + } + + /* Unreachable */ + return (PCI_INVALID_IRQ); +} + +static int +mtk_pcib_init(device_t dev, int bus, int maxslot) +{ + int slot, func, maxfunc, error; + uint8_t hdrtype, command, class, subclass; + + for (slot = 0; slot <= maxslot; slot++) { + maxfunc = 0; + for (func = 0; func <= maxfunc; func++) { + hdrtype = mtk_pci_read_config(dev, bus, slot, func, + PCIR_HDRTYPE, 1); + + if ((hdrtype & PCIM_HDRTYPE) > PCI_MAXHDRTYPE) + continue; + + if (func == 0 && (hdrtype & PCIM_MFDEV)) + maxfunc = PCI_FUNCMAX; + + command = mtk_pci_read_config(dev, bus, slot, func, + PCIR_COMMAND, 1); + command &= ~(PCIM_CMD_MEMEN | PCIM_CMD_PORTEN); + mtk_pci_write_config(dev, bus, slot, func, + PCIR_COMMAND, command, 1); + + error = mtk_pcib_init_all_bars(dev, bus, slot, func, + hdrtype); + + if (error) + return (error); + + command |= PCIM_CMD_BUSMASTEREN | PCIM_CMD_MEMEN | + PCIM_CMD_PORTEN; + mtk_pci_write_config(dev, bus, slot, func, + PCIR_COMMAND, command, 1); + + mtk_pci_write_config(dev, bus, slot, func, + PCIR_CACHELNSZ, 16, 1); + + class = mtk_pci_read_config(dev, bus, slot, func, + PCIR_CLASS, 1); + subclass = mtk_pci_read_config(dev, bus, slot, func, + PCIR_SUBCLASS, 1); + + if (class != PCIC_BRIDGE || + subclass != PCIS_BRIDGE_PCI) { + uint8_t val; + + val = mtk_pci_get_int(dev, bus, slot); + + mtk_pci_write_config(dev, bus, slot, func, + PCIR_INTLINE, val, 1); /* XXX */ + continue; + } + + mtk_pcib_init_bridge(dev, bus, slot, func); + } + } + + return (0); +} + +/* Our interrupt handler */ +static int +mtk_pci_intr(void *arg) +{ + struct mtk_pci_softc *sc = arg; + struct intr_event *event; + uint32_t reg, irq, irqidx; + + reg = MT_READ32(sc, MTK_PCI_PCIINT); + + for (irq = sc->sc_irq_start; irq <= sc->sc_irq_end; irq++) { + if (reg & (1u<sc_irq_start; + event = sc->sc_eventstab[irqidx]; + if (!event || TAILQ_EMPTY(&event->ie_handlers)) { + if (irq != 0) + printf("Stray PCI IRQ %d\n", irq); + continue; + } + + intr_event_handle(event, NULL); + } + } + + return (FILTER_HANDLED); +} + +/* PCIe SoC-specific initialization */ +static int +mtk_pcie_phy_init(device_t dev) +{ + struct mtk_pci_softc *sc; + + /* Get our softc */ + sc = device_get_softc(dev); + + /* We don't know how many slots we have yet */ + sc->num_slots = 0; + + /* Handle SoC specific PCIe init */ + switch (sc->socid) { + case MTK_SOC_MT7628: /* Fallthrough */ + case MTK_SOC_MT7688: + if (mtk_pcie_phy_mt7628_init(dev)) + return (ENXIO); + break; + case MTK_SOC_MT7621: + if (mtk_pcie_phy_mt7621_init(dev)) + return (ENXIO); + break; + case MTK_SOC_MT7620A: + if (mtk_pcie_phy_mt7620_init(dev)) + return (ENXIO); + break; + case MTK_SOC_RT3662: /* Fallthrough */ + case MTK_SOC_RT3883: + if (mtk_pcie_phy_rt3883_init(dev)) + return (ENXIO); + break; + default: + device_printf(dev, "unsupported device %x\n", sc->socid); + return (ENXIO); + } + + /* + * If we were successful so far go and set up the PCIe slots, so we + * may allocate mem/io/irq resources and enumerate busses later. + */ + mtk_pcie_phy_setup_slots(dev); + + return (0); +} + +static int +mtk_pcie_phy_start(device_t dev) +{ + struct mtk_pci_softc *sc = device_get_softc(dev); + + if (sc->socid == MTK_SOC_MT7621 && + (mtk_sysctl_get(SYSCTL_REVID) & SYSCTL_REVID_MASK) != + SYSCTL_MT7621_REV_E) { + if (fdt_reset_assert_all(dev)) + return (ENXIO); + } else { + if (fdt_reset_deassert_all(dev)) + return (ENXIO); + } + + if (fdt_clock_enable_all(dev)) + return (ENXIO); + + return (0); +} + +static int +mtk_pcie_phy_stop(device_t dev) +{ + struct mtk_pci_softc *sc = device_get_softc(dev); + + if (sc->socid == MTK_SOC_MT7621 && + (mtk_sysctl_get(SYSCTL_REVID) & SYSCTL_REVID_MASK) != + SYSCTL_MT7621_REV_E) { + if (fdt_reset_deassert_all(dev)) + return (ENXIO); + } else { + if (fdt_reset_assert_all(dev)) + return (ENXIO); + } + + if (fdt_clock_disable_all(dev)) + return (ENXIO); + + return (0); +} + +#define mtk_pcie_phy_set(_sc, _reg, _s, _n, _v) \ + MT_WRITE32((_sc), (_reg), ((MT_READ32((_sc), (_reg)) & \ + (~(((1ull << (_n)) - 1) << (_s)))) | ((_v) << (_s)))) + +static void +mtk_pcie_phy_mt7621_bypass_pipe_rst(struct mtk_pci_softc *sc, uint32_t off) +{ + + mtk_pcie_phy_set(sc, off + 0x002c, 12, 1, 1); + mtk_pcie_phy_set(sc, off + 0x002c, 4, 1, 1); + mtk_pcie_phy_set(sc, off + 0x012c, 12, 1, 1); + mtk_pcie_phy_set(sc, off + 0x012c, 4, 1, 1); + mtk_pcie_phy_set(sc, off + 0x102c, 12, 1, 1); + mtk_pcie_phy_set(sc, off + 0x102c, 4, 1, 1); +} + +static void +mtk_pcie_phy_mt7621_setup_ssc(struct mtk_pci_softc *sc, uint32_t off) +{ + uint32_t xtal_sel; + + xtal_sel = mtk_sysctl_get(SYSCTL_SYSCFG) >> 6; + xtal_sel &= 0x7; + + mtk_pcie_phy_set(sc, off + 0x400, 8, 1, 1); + mtk_pcie_phy_set(sc, off + 0x400, 9, 2, 0); + mtk_pcie_phy_set(sc, off + 0x000, 4, 1, 1); + mtk_pcie_phy_set(sc, off + 0x100, 4, 1, 1); + mtk_pcie_phy_set(sc, off + 0x000, 5, 1, 0); + mtk_pcie_phy_set(sc, off + 0x100, 5, 1, 0); + + if (xtal_sel <= 5 && xtal_sel >= 3) { + mtk_pcie_phy_set(sc, off + 0x490, 6, 2, 1); + mtk_pcie_phy_set(sc, off + 0x4a8, 0, 12, 0x1a); + mtk_pcie_phy_set(sc, off + 0x4a8, 16, 12, 0x1a); + } else { + mtk_pcie_phy_set(sc, off + 0x490, 6, 2, 0); + if (xtal_sel >= 6) { + mtk_pcie_phy_set(sc, off + 0x4bc, 4, 2, 0x01); + mtk_pcie_phy_set(sc, off + 0x49c, 0, 31, 0x18000000); + mtk_pcie_phy_set(sc, off + 0x4a4, 0, 16, 0x18d); + mtk_pcie_phy_set(sc, off + 0x4a8, 0, 12, 0x4a); + mtk_pcie_phy_set(sc, off + 0x4a8, 16, 12, 0x4a); + mtk_pcie_phy_set(sc, off + 0x4a8, 0, 12, 0x11); + mtk_pcie_phy_set(sc, off + 0x4a8, 16, 12, 0x11); + } else { + mtk_pcie_phy_set(sc, off + 0x4a8, 0, 12, 0x1a); + mtk_pcie_phy_set(sc, off + 0x4a8, 16, 12, 0x1a); + } + } + + mtk_pcie_phy_set(sc, off + 0x4a0, 5, 1, 1); + mtk_pcie_phy_set(sc, off + 0x490, 22, 2, 2); + mtk_pcie_phy_set(sc, off + 0x490, 18, 4, 6); + mtk_pcie_phy_set(sc, off + 0x490, 12, 4, 2); + mtk_pcie_phy_set(sc, off + 0x490, 8, 4, 1); + mtk_pcie_phy_set(sc, off + 0x4ac, 16, 3, 0); + mtk_pcie_phy_set(sc, off + 0x490, 1, 3, 2); + + if (xtal_sel <= 5 && xtal_sel >= 3) { + mtk_pcie_phy_set(sc, off + 0x414, 6, 2, 1); + mtk_pcie_phy_set(sc, off + 0x414, 5, 1, 1); + } + + mtk_pcie_phy_set(sc, off + 0x414, 28, 2, 1); + mtk_pcie_phy_set(sc, off + 0x040, 17, 4, 7); + mtk_pcie_phy_set(sc, off + 0x040, 16, 1, 1); + mtk_pcie_phy_set(sc, off + 0x140, 17, 4, 7); + mtk_pcie_phy_set(sc, off + 0x140, 16, 1, 1); + + mtk_pcie_phy_set(sc, off + 0x000, 5, 1, 1); + mtk_pcie_phy_set(sc, off + 0x100, 5, 1, 1); + mtk_pcie_phy_set(sc, off + 0x000, 4, 1, 0); + mtk_pcie_phy_set(sc, off + 0x100, 4, 1, 0); +} + +/* XXX: ugly, we need to fix this at some point */ +#define MT7621_GPIO_CTRL0 *((volatile uint32_t *)0xbe000600) +#define MT7621_GPIO_DATA0 *((volatile uint32_t *)0xbe000620) + +#define mtk_gpio_clr_set(_reg, _clr, _set) \ + do { \ + (_reg) = ((_reg) & (_clr)) | (_set); \ + } while (0) + +static int +mtk_pcie_phy_mt7621_init(device_t dev) +{ + struct mtk_pci_softc *sc = device_get_softc(dev); + + /* First off, stop the PHY */ + if (mtk_pcie_phy_stop(dev)) + return (ENXIO); + + /* PCIe resets are GPIO pins */ + mtk_sysctl_clr_set(SYSCTL_GPIOMODE, MT7621_PERST_GPIO_MODE | + MT7621_UARTL3_GPIO_MODE, MT7621_PERST_GPIO | MT7621_UARTL3_GPIO); + + /* Set GPIO pins as outputs */ + mtk_gpio_clr_set(MT7621_GPIO_CTRL0, 0, MT7621_PCIE_RST); + + /* Assert resets to PCIe devices */ + mtk_gpio_clr_set(MT7621_GPIO_DATA0, MT7621_PCIE_RST, 0); + + /* Give everything a chance to sink in */ + DELAY(100000); + + /* Now start the PHY again */ + if (mtk_pcie_phy_start(dev)) + return (ENXIO); + + /* Wait for things to settle */ + DELAY(100000); + + /* Only apply below to REV-E hardware */ + if ((mtk_sysctl_get(SYSCTL_REVID) & SYSCTL_REVID_MASK) == + SYSCTL_MT7621_REV_E) + mtk_pcie_phy_mt7621_bypass_pipe_rst(sc, 0x9000); + + /* Setup PCIe ports 0 and 1 */ + mtk_pcie_phy_mt7621_setup_ssc(sc, 0x9000); + /* Setup PCIe port 2 */ + mtk_pcie_phy_mt7621_setup_ssc(sc, 0xa000); + + /* Deassert resets to PCIe devices */ + mtk_gpio_clr_set(MT7621_GPIO_DATA0, 0, MT7621_PCIE_RST); + + /* Set number of slots supported */ + sc->num_slots = 3; + + /* Give it a chance to sink in */ + DELAY(100000); + + return (0); +} + +static void +mtk_pcie_phy_mt7628_setup(struct mtk_pci_softc *sc, uint32_t off) +{ + uint32_t xtal_sel; + + xtal_sel = mtk_sysctl_get(SYSCTL_SYSCFG) >> 6; + xtal_sel &= 0x1; + + mtk_pcie_phy_set(sc, off + 0x400, 8, 1, 1); + mtk_pcie_phy_set(sc, off + 0x400, 9, 2, 0); + mtk_pcie_phy_set(sc, off + 0x000, 4, 1, 1); + mtk_pcie_phy_set(sc, off + 0x000, 5, 1, 0); + mtk_pcie_phy_set(sc, off + 0x4ac, 16, 3, 3); + + if (xtal_sel == 1) { + mtk_pcie_phy_set(sc, off + 0x4bc, 24, 8, 0x7d); + mtk_pcie_phy_set(sc, off + 0x490, 12, 4, 0x08); + mtk_pcie_phy_set(sc, off + 0x490, 6, 2, 0x01); + mtk_pcie_phy_set(sc, off + 0x4c0, 0, 32, 0x1f400000); + mtk_pcie_phy_set(sc, off + 0x4a4, 0, 16, 0x013d); + mtk_pcie_phy_set(sc, off + 0x4a8, 16, 16, 0x74); + mtk_pcie_phy_set(sc, off + 0x4a8, 0, 16, 0x74); + } else { + mtk_pcie_phy_set(sc, off + 0x4bc, 24, 8, 0x64); + mtk_pcie_phy_set(sc, off + 0x490, 12, 4, 0x0a); + mtk_pcie_phy_set(sc, off + 0x490, 6, 2, 0x00); + mtk_pcie_phy_set(sc, off + 0x4c0, 0, 32, 0x19000000); + mtk_pcie_phy_set(sc, off + 0x4a4, 0, 16, 0x018d); + mtk_pcie_phy_set(sc, off + 0x4a8, 16, 16, 0x4a); + mtk_pcie_phy_set(sc, off + 0x4a8, 0, 16, 0x4a); + } + + mtk_pcie_phy_set(sc, off + 0x498, 0, 8, 5); + mtk_pcie_phy_set(sc, off + 0x000, 5, 1, 1); + mtk_pcie_phy_set(sc, off + 0x000, 4, 1, 0); +} + +static int +mtk_pcie_phy_mt7628_init(device_t dev) +{ + struct mtk_pci_softc *sc = device_get_softc(dev); + + /* Set PCIe reset to normal mode */ + mtk_sysctl_clr_set(SYSCTL_GPIOMODE, MT7628_PERST_GPIO_MODE, + MT7628_PERST); + + /* Start the PHY */ + if (mtk_pcie_phy_start(dev)) + return (ENXIO); + + /* Give it a chance to sink in */ + DELAY(100000); + + /* Setup the PHY */ + mtk_pcie_phy_mt7628_setup(sc, 0x9000); + + /* Deassert PCIe device reset */ + MT_CLR_SET32(sc, MTK_PCI_PCICFG, MTK_PCI_RESET, 0); + + /* Set number of slots supported */ + sc->num_slots = 1; + + return (0); +} + +static int +mtk_pcie_phy_mt7620_wait_busy(struct mtk_pci_softc *sc) +{ + uint32_t reg_value, retry; + + reg_value = retry = 0; + + while (retry++ < MT7620_MAX_RETRIES) { + reg_value = MT_READ32(sc, MT7620_PCIE_PHY_CFG); + if (reg_value & PHY_BUSY) + DELAY(100000); + else + break; + } + + if (retry >= MT7620_MAX_RETRIES) + return (ENXIO); + + return (0); +} + +static int +mtk_pcie_phy_mt7620_set(struct mtk_pci_softc *sc, uint32_t reg, + uint32_t val) +{ + uint32_t reg_val; + + if (mtk_pcie_phy_mt7620_wait_busy(sc)) + return (ENXIO); + + reg_val = PHY_MODE_WRITE | ((reg & 0xff) << PHY_ADDR_OFFSET) | + (val & 0xff); + MT_WRITE32(sc, MT7620_PCIE_PHY_CFG, reg_val); + DELAY(1000); + + if (mtk_pcie_phy_mt7620_wait_busy(sc)) + return (ENXIO); + + return (0); +} + +static int +mtk_pcie_phy_mt7620_init(device_t dev) +{ + struct mtk_pci_softc *sc = device_get_softc(dev); + + /* + * The below sets the PCIe PHY to bypass the PCIe DLL and enables + * "elastic buffer control", whatever that may be... + */ + if (mtk_pcie_phy_mt7620_set(sc, 0x00, 0x80) || + mtk_pcie_phy_mt7620_set(sc, 0x01, 0x04) || + mtk_pcie_phy_mt7620_set(sc, 0x68, 0x84)) + return (ENXIO); + + /* Stop PCIe */ + if (mtk_pcie_phy_stop(dev)) + return (ENXIO); + + /* Restore PPLL to a sane state before going on */ + mtk_sysctl_clr_set(MT7620_PPLL_DRV, LC_CKDRVPD, PDRV_SW_SET); + + /* No PCIe on the MT7620N */ + if (!(mtk_sysctl_get(SYSCTL_REVID) & MT7620_PKG_BGA)) { + device_printf(dev, "PCIe disabled for MT7620N\n"); + mtk_sysctl_clr_set(MT7620_PPLL_CFG0, 0, PPLL_SW_SET); + mtk_sysctl_clr_set(MT7620_PPLL_CFG1, 0, PPLL_PD); + return (ENXIO); + } + + /* PCIe device reset pin is in normal mode */ + mtk_sysctl_clr_set(SYSCTL_GPIOMODE, MT7620_PERST_GPIO_MODE, + MT7620_PERST); + + /* Enable PCIe now */ + if (mtk_pcie_phy_start(dev)) + return (ENXIO); + + /* Give it a chance to sink in */ + DELAY(100000); + + /* If PLL is not locked - bail */ + if (!(mtk_sysctl_get(MT7620_PPLL_CFG1) & PPLL_LOCKED)) { + device_printf(dev, "no PPLL not lock\n"); + mtk_pcie_phy_stop(dev); + return (ENXIO); + } + + /* Configure PCIe PLL */ + mtk_sysctl_clr_set(MT7620_PPLL_DRV, LC_CKDRVOHZ | LC_CKDRVHZ, + LC_CKDRVPD | PDRV_SW_SET); + + /* and give it a chance to settle */ + DELAY(100000); + + /* Deassert PCIe device reset */ + MT_CLR_SET32(sc, MTK_PCI_PCICFG, MTK_PCI_RESET, 0); + + /* MT7620 supports one PCIe slot */ + sc->num_slots = 1; + + return (0); +} + +static int +mtk_pcie_phy_rt3883_init(device_t dev) +{ + struct mtk_pci_softc *sc = device_get_softc(dev); + + /* Enable PCI host mode and PCIe RC mode */ + mtk_sysctl_clr_set(SYSCTL_SYSCFG1, 0, RT3883_PCI_HOST_MODE | + RT3883_PCIE_RC_MODE); + + /* Enable PCIe PHY */ + if (mtk_pcie_phy_start(dev)) + return (ENXIO); + + /* Disable PCI, we only support PCIe for now */ + mtk_sysctl_clr_set(SYSCTL_RSTCTRL, 0, RT3883_PCI_RST); + mtk_sysctl_clr_set(SYSCTL_CLKCFG1, RT3883_PCI_CLK, 0); + + /* Give things a chance to sink in */ + DELAY(500000); + + /* Set PCIe port number to 0 and lift PCIe reset */ + MT_WRITE32(sc, MTK_PCI_PCICFG, 0); + + /* Configure PCI Arbiter */ + MT_WRITE32(sc, MTK_PCI_ARBCTL, 0x79); + + /* We have a single PCIe slot */ + sc->num_slots = 1; + + return (0); +} + +static void +mtk_pcie_phy_setup_slots(device_t dev) +{ + struct mtk_pci_softc *sc = device_get_softc(dev); + uint32_t bar0_val, val; + int i; + + /* Disable all PCIe interrupts */ + MT_WRITE32(sc, MTK_PCI_PCIENA, 0); + + /* Default bar0_val is 64M, enabled */ + bar0_val = 0x03FF0001; + + /* But we override it to 2G, enabled for some SoCs */ + if (sc->socid == MTK_SOC_MT7620A || sc->socid == MTK_SOC_MT7628 || + sc->socid == MTK_SOC_MT7688 || sc->socid == MTK_SOC_MT7621) + bar0_val = 0x7FFF0001; + + /* We still don't know which slots have linked up */ + sc->pcie_link_status = 0; + + /* XXX: I am not sure if this delay is really necessary */ + DELAY(500000); + + /* + * See which slots have links and mark them. + * Set up all slots' BARs and make them look like PCIe bridges. + */ + for (i = 0; i < sc->num_slots; i++) { + /* If slot has link - mark it */ + if (MT_READ32(sc, MTK_PCIE_STATUS(i)) & 1) + sc->pcie_link_status |= (1<pci_res[0], (off), (val)) +#define MT_WRITE16(sc, off, val) \ + bus_write_2((sc)->pci_res[0], (off), (val)) +#define MT_WRITE8(sc, off, val) \ + bus_write_1((sc)->pci_res[0], (off), (val)) +#define MT_READ32(sc, off) \ + bus_read_4((sc)->pci_res[0], (off)) +#define MT_READ16(sc, off) \ + bus_read_2((sc)->pci_res[0], (off)) +#define MT_READ8(sc, off) \ + bus_read_1((sc)->pci_res[0], (off)) + +#define MT_CLR_SET32(sc, off, clr, set) \ + MT_WRITE32((sc), (off), ((MT_READ32((sc), (off)) & ~(clr)) | (off))) + +#endif /* __MTK_PCIE_H__ */ From 33311df14121cb6a8152d43dee67fa6e22547c12 Mon Sep 17 00:00:00 2001 From: Stanislav Galabov Date: Fri, 8 Apr 2016 15:28:12 +0000 Subject: [PATCH 080/159] Introduce better locking for mtk_gpio_v[12] drivers Approved by: adrian (mentor) Sponsored by: Smartcom - Bulgaria AD Differential Revision: https://reviews.freebsd.org/D5887 --- sys/mips/mediatek/mtk_gpio_v1.c | 49 ++++++++++++++++++++++++------- sys/mips/mediatek/mtk_gpio_v2.c | 51 ++++++++++++++++++++++++++------- 2 files changed, 79 insertions(+), 21 deletions(-) diff --git a/sys/mips/mediatek/mtk_gpio_v1.c b/sys/mips/mediatek/mtk_gpio_v1.c index 18820298e29..29b2258414f 100644 --- a/sys/mips/mediatek/mtk_gpio_v1.c +++ b/sys/mips/mediatek/mtk_gpio_v1.c @@ -431,19 +431,29 @@ mtk_gpio_pin_setflags(device_t dev, uint32_t pin, uint32_t flags) static int mtk_gpio_pin_set(device_t dev, uint32_t pin, unsigned int value) { - struct mtk_gpio_softc *sc = device_get_softc(dev); + struct mtk_gpio_softc *sc; + int ret; - if (pin >= sc->num_pins || !(sc->pins[pin].pin_flags & GPIO_PIN_OUTPUT)) + sc = device_get_softc(dev); + ret = 0; + + if (pin >= sc->num_pins) return (EINVAL); MTK_GPIO_LOCK(sc); + if(!(sc->pins[pin].pin_flags & GPIO_PIN_OUTPUT)) { + ret = EINVAL; + goto out; + } + if (value) MTK_WRITE_4(sc, GPIO_PIOSET(sc), (1u << pin)); else MTK_WRITE_4(sc, GPIO_PIORESET(sc), (1u << pin)); - MTK_GPIO_UNLOCK(sc); - return (0); +out: + MTK_GPIO_UNLOCK(sc); + return (ret); } static int @@ -451,33 +461,50 @@ mtk_gpio_pin_get(device_t dev, uint32_t pin, unsigned int *val) { struct mtk_gpio_softc *sc; uint32_t data; + int ret; sc = device_get_softc(dev); + ret = 0; - if (pin >= sc->num_pins || !(sc->pins[pin].pin_flags & GPIO_PIN_INPUT)) + if (pin >= sc->num_pins) return (EINVAL); MTK_GPIO_LOCK(sc); + if(!(sc->pins[pin].pin_flags & GPIO_PIN_INPUT)) { + ret = EINVAL; + goto out; + } data = MTK_READ_4(sc, GPIO_PIODATA(sc)); - MTK_GPIO_UNLOCK(sc); *val = (data & (1u << pin)) ? 1 : 0; - return (0); +out: + MTK_GPIO_UNLOCK(sc); + return (ret); } static int mtk_gpio_pin_toggle(device_t dev, uint32_t pin) { - struct mtk_gpio_softc *sc = device_get_softc(dev); + struct mtk_gpio_softc *sc; + int ret; - if (pin >= sc->num_pins || !(sc->pins[pin].pin_flags & GPIO_PIN_OUTPUT)) + if (pin >= sc->num_pins) return (EINVAL); + sc = device_get_softc(dev); + ret = 0; + MTK_GPIO_LOCK(sc); + if (!(sc->pins[pin].pin_flags & GPIO_PIN_OUTPUT)) { + ret = EINVAL; + goto out; + } MTK_WRITE_4(sc, GPIO_PIOTOG(sc), (1u << pin)); + +out: MTK_GPIO_UNLOCK(sc); - return (0); + return (ret); } static int @@ -571,7 +598,9 @@ mtk_gpio_pic_post_filter(device_t dev, struct intr_irqsrc *isrc) pisrc = (struct mtk_gpio_pin_irqsrc *)isrc; sc = device_get_softc(dev); + MTK_GPIO_LOCK(sc); MTK_WRITE_4(sc, GPIO_PIOINT(sc), 1u << pisrc->irq); + MTK_GPIO_UNLOCK(sc); } static int diff --git a/sys/mips/mediatek/mtk_gpio_v2.c b/sys/mips/mediatek/mtk_gpio_v2.c index 543133c3f43..282b112e757 100644 --- a/sys/mips/mediatek/mtk_gpio_v2.c +++ b/sys/mips/mediatek/mtk_gpio_v2.c @@ -425,19 +425,29 @@ mtk_gpio_pin_setflags(device_t dev, uint32_t pin, uint32_t flags) static int mtk_gpio_pin_set(device_t dev, uint32_t pin, unsigned int value) { - struct mtk_gpio_softc *sc = device_get_softc(dev); + struct mtk_gpio_softc *sc; + int ret; - if (pin >= sc->num_pins || !(sc->pins[pin].pin_flags & GPIO_PIN_OUTPUT)) + if (pin >= sc->num_pins) return (EINVAL); + sc = device_get_softc(dev); + ret = 0; + MTK_GPIO_LOCK(sc); + if (!(sc->pins[pin].pin_flags & GPIO_PIN_OUTPUT)) { + ret = EINVAL; + goto out; + } if (value) MTK_WRITE_4(sc, GPIO_PIOSET(sc), (1u << pin)); else MTK_WRITE_4(sc, GPIO_PIORESET(sc), (1u << pin)); + +out: MTK_GPIO_UNLOCK(sc); - return (0); + return (ret); } static int @@ -445,39 +455,56 @@ mtk_gpio_pin_get(device_t dev, uint32_t pin, unsigned int *val) { struct mtk_gpio_softc *sc; uint32_t data; + int ret; - sc = device_get_softc(dev); - - if (pin >= sc->num_pins || !(sc->pins[pin].pin_flags & GPIO_PIN_INPUT)) + if (pin >= sc->num_pins) return (EINVAL); + sc = device_get_softc(dev); + ret = 0; + MTK_GPIO_LOCK(sc); + if (!(sc->pins[pin].pin_flags & GPIO_PIN_INPUT)) { + ret = EINVAL; + goto out; + } data = MTK_READ_4(sc, GPIO_PIODATA(sc)); - MTK_GPIO_UNLOCK(sc); *val = (data & (1u << pin)) ? 1 : 0; - return (0); +out: + MTK_GPIO_UNLOCK(sc); + return (ret); } static int mtk_gpio_pin_toggle(device_t dev, uint32_t pin) { - struct mtk_gpio_softc *sc = device_get_softc(dev); + struct mtk_gpio_softc *sc; uint32_t val; + int ret; - if (pin >= sc->num_pins || !(sc->pins[pin].pin_flags & GPIO_PIN_OUTPUT)) + if (pin >= sc->num_pins) return (EINVAL); + sc = device_get_softc(dev); + ret = 0; + MTK_GPIO_LOCK(sc); + if(!(sc->pins[pin].pin_flags & GPIO_PIN_OUTPUT)) { + ret = EINVAL; + goto out; + } val = MTK_READ_4(sc, GPIO_PIODATA(sc)); val &= (1u << pin); if (val) MTK_WRITE_4(sc, GPIO_PIORESET(sc), (1u << pin)); else MTK_WRITE_4(sc, GPIO_PIOSET(sc), (1u << pin)); + +out: MTK_GPIO_UNLOCK(sc); - return (0); + return (ret); } static int @@ -571,7 +598,9 @@ mtk_gpio_pic_post_filter(device_t dev, struct intr_irqsrc *isrc) pisrc = (struct mtk_gpio_pin_irqsrc *)isrc; sc = device_get_softc(dev); + MTK_GPIO_LOCK(sc); MTK_WRITE_4(sc, GPIO_PIOINT(sc), 1u << pisrc->irq); + MTK_GPIO_UNLOCK(sc); } static int From 368449816ed5084cedb1355b88d354b34d0c67c9 Mon Sep 17 00:00:00 2001 From: Stanislav Galabov Date: Fri, 8 Apr 2016 15:48:10 +0000 Subject: [PATCH 081/159] Fix MIPS INTRNG omissions, add soft/hard interrupts with different names Reviewed by: kan Approved by: adrian (mentor) Differential Revision: https://reviews.freebsd.org/D5888 --- sys/mips/mips/mips_pic.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/sys/mips/mips/mips_pic.c b/sys/mips/mips/mips_pic.c index e4a76728e56..a24647da0d7 100644 --- a/sys/mips/mips/mips_pic.c +++ b/sys/mips/mips/mips_pic.c @@ -134,13 +134,6 @@ pic_irq_mask(struct mips_pic_softc *sc, u_int irq) mips_wr_status(mips_rd_status() & ~((1 << irq) << 8)); } -#ifdef SMP -static void -mips_pic_init_secondary(device_t dev) -{ -} -#endif /* SMP */ - static inline intptr_t pic_xref(device_t dev) { @@ -155,23 +148,30 @@ static int mips_pic_register_isrcs(struct mips_pic_softc *sc) { int error; - uint32_t irq, i; + uint32_t irq, i, tmpirq; struct intr_irqsrc *isrc; - const char *name; + char *name; - name = device_get_nameunit(sc->pic_dev); for (irq = 0; irq < sc->nirqs; irq++) { sc->pic_irqs[irq].irq = irq; sc->pic_irqs[irq].res = rman_reserve_resource(&sc->pic_irq_rman, irq, irq, 1, RF_ACTIVE, sc->pic_dev); if (sc->pic_irqs[irq].res == NULL) { device_printf(sc->pic_dev, - "%s failed to alloc resource for irq %d", + "%s failed to alloc resource for irq %u", __func__, irq); return (ENOMEM); } isrc = PIC_INTR_ISRC(sc, irq); - error = intr_isrc_register(isrc, sc->pic_dev, 0, "%s", name); + if (irq < NSOFT_IRQS) { + name = "sint"; + tmpirq = irq; + } else { + name = "int"; + tmpirq = irq - NSOFT_IRQS; + } + error = intr_isrc_register(isrc, sc->pic_dev, 0, "%s%u", + name, tmpirq); if (error != 0) { for (i = 0; i < irq; i++) { intr_isrc_deregister(PIC_INTR_ISRC(sc, i)); From db6eff694c89bd259da2ccfbf2198cb424013b2b Mon Sep 17 00:00:00 2001 From: Zbigniew Bodek Date: Fri, 8 Apr 2016 16:14:18 +0000 Subject: [PATCH 082/159] Fix sending TSO packets larger than single DMA segment on VNIC Due to the bug in the number of 'GATHER' subdescriptors for TSO packets, VNIC was not able to transmit more than one DMA segment with TSO enabled. Obtained from: Semihalf Sponsored by: Cavium --- sys/dev/vnic/nicvf_queues.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/sys/dev/vnic/nicvf_queues.c b/sys/dev/vnic/nicvf_queues.c index 9b46d7cb999..087cf9fd794 100644 --- a/sys/dev/vnic/nicvf_queues.c +++ b/sys/dev/vnic/nicvf_queues.c @@ -1904,7 +1904,6 @@ static int nicvf_tx_mbuf_locked(struct snd_queue *sq, struct mbuf **mbufp) { bus_dma_segment_t segs[256]; - struct nicvf *nic; struct snd_buff *snd_buff; size_t seg; int nsegs, qentry; @@ -1928,12 +1927,7 @@ nicvf_tx_mbuf_locked(struct snd_queue *sq, struct mbuf **mbufp) } /* Set how many subdescriptors is required */ - nic = sq->nic; - if ((*mbufp)->m_pkthdr.tso_segsz != 0 && nic->hw_tso) - subdesc_cnt = MIN_SQ_DESC_PER_PKT_XMIT; - else - subdesc_cnt = MIN_SQ_DESC_PER_PKT_XMIT + nsegs - 1; - + subdesc_cnt = MIN_SQ_DESC_PER_PKT_XMIT + nsegs - 1; if (subdesc_cnt > sq->free_cnt) { /* ARM64TODO: Add mbuf defragmentation if we lack descriptors */ bus_dmamap_unload(sq->snd_buff_dmat, snd_buff->dmap); From 8bd8c8f14c801eb43f1fe7bab85a56749d1959e4 Mon Sep 17 00:00:00 2001 From: Edward Tomasz Napierala Date: Fri, 8 Apr 2016 18:15:31 +0000 Subject: [PATCH 083/159] Make it possible to tweak RCTL throttling sysctls at runtime. MFC after: 1 month Sponsored by: The FreeBSD Foundation --- sys/kern/kern_rctl.c | 127 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 110 insertions(+), 17 deletions(-) diff --git a/sys/kern/kern_rctl.c b/sys/kern/kern_rctl.c index 8f301b8c20f..24428524ce5 100644 --- a/sys/kern/kern_rctl.c +++ b/sys/kern/kern_rctl.c @@ -80,28 +80,43 @@ FEATURE(rctl, "Resource Limits"); static unsigned int rctl_maxbufsize = RCTL_MAX_OUTBUFSIZE; static int rctl_log_rate_limit = 10; static int rctl_devctl_rate_limit = 10; -static unsigned int rctl_throttle_min = 0; -static unsigned int rctl_throttle_max = 0; -static unsigned int rctl_throttle_pct = 0; -static unsigned int rctl_throttle_pct2 = 0; + +/* + * Values below are initialized in rctl_init(). + */ +static int rctl_throttle_min = -1; +static int rctl_throttle_max = -1; +static int rctl_throttle_pct = -1; +static int rctl_throttle_pct2 = -1; + +static int rctl_throttle_min_sysctl(SYSCTL_HANDLER_ARGS); +static int rctl_throttle_max_sysctl(SYSCTL_HANDLER_ARGS); +static int rctl_throttle_pct_sysctl(SYSCTL_HANDLER_ARGS); +static int rctl_throttle_pct2_sysctl(SYSCTL_HANDLER_ARGS); SYSCTL_NODE(_kern_racct, OID_AUTO, rctl, CTLFLAG_RW, 0, "Resource Limits"); SYSCTL_UINT(_kern_racct_rctl, OID_AUTO, maxbufsize, CTLFLAG_RWTUN, &rctl_maxbufsize, 0, "Maximum output buffer size"); SYSCTL_UINT(_kern_racct_rctl, OID_AUTO, log_rate_limit, CTLFLAG_RW, &rctl_log_rate_limit, 0, "Maximum number of log messages per second"); -SYSCTL_UINT(_kern_racct_rctl, OID_AUTO, devctl_rate_limit, CTLFLAG_RW, +SYSCTL_UINT(_kern_racct_rctl, OID_AUTO, devctl_rate_limit, CTLFLAG_RWTUN, &rctl_devctl_rate_limit, 0, "Maximum number of devctl messages per second"); -SYSCTL_UINT(_kern_racct_rctl, OID_AUTO, throttle_min, CTLFLAG_RDTUN, - &rctl_throttle_min, 0, "Shortest throttling duration, in hz"); -SYSCTL_UINT(_kern_racct_rctl, OID_AUTO, throttle_max, CTLFLAG_RDTUN, - &rctl_throttle_max, 0, "Longest throttling duration, in hz"); -SYSCTL_UINT(_kern_racct_rctl, OID_AUTO, throttle_pct, CTLFLAG_RDTUN, - &rctl_throttle_pct, 0, +SYSCTL_PROC(_kern_racct_rctl, OID_AUTO, throttle_min, + CTLTYPE_UINT | CTLFLAG_RWTUN, 0, 0, &rctl_throttle_min_sysctl, "IU", + "Shortest throttling duration, in hz"); +TUNABLE_INT("kern.racct.rctl.throttle_min", &rctl_throttle_min); +SYSCTL_PROC(_kern_racct_rctl, OID_AUTO, throttle_max, + CTLTYPE_UINT | CTLFLAG_RWTUN, 0, 0, &rctl_throttle_max_sysctl, "IU", + "Longest throttling duration, in hz"); +TUNABLE_INT("kern.racct.rctl.throttle_max", &rctl_throttle_max); +SYSCTL_PROC(_kern_racct_rctl, OID_AUTO, throttle_pct, + CTLTYPE_UINT | CTLFLAG_RWTUN, 0, 0, &rctl_throttle_pct_sysctl, "IU", "Throttling penalty for process consumption, in percent"); -SYSCTL_UINT(_kern_racct_rctl, OID_AUTO, throttle_pct2, CTLFLAG_RDTUN, - &rctl_throttle_pct2, 0, +TUNABLE_INT("kern.racct.rctl.throttle_pct", &rctl_throttle_pct); +SYSCTL_PROC(_kern_racct_rctl, OID_AUTO, throttle_pct2, + CTLTYPE_UINT | CTLFLAG_RWTUN, 0, 0, &rctl_throttle_pct2_sysctl, "IU", "Throttling penalty for container consumption, in percent"); +TUNABLE_INT("kern.racct.rctl.throttle_pct2", &rctl_throttle_pct2); /* * 'rctl_rule_link' connects a rule with every racct it's related to. @@ -212,6 +227,78 @@ static void rctl_rule_to_sbuf(struct sbuf *sb, const struct rctl_rule *rule); static MALLOC_DEFINE(M_RCTL, "rctl", "Resource Limits"); +static int rctl_throttle_min_sysctl(SYSCTL_HANDLER_ARGS) +{ + int val = rctl_throttle_min; + int error; + + error = sysctl_handle_int(oidp, &val, 0, req); + if (error || !req->newptr) + return (error); + if (val < 1 || val > rctl_throttle_max) + return (EINVAL); + + RCTL_WLOCK(); + rctl_throttle_min = val; + RCTL_WUNLOCK(); + + return (0); +} + +static int rctl_throttle_max_sysctl(SYSCTL_HANDLER_ARGS) +{ + int val = rctl_throttle_max; + int error; + + error = sysctl_handle_int(oidp, &val, 0, req); + if (error || !req->newptr) + return (error); + if (val < rctl_throttle_min) + return (EINVAL); + + RCTL_WLOCK(); + rctl_throttle_max = val; + RCTL_WUNLOCK(); + + return (0); +} + +static int rctl_throttle_pct_sysctl(SYSCTL_HANDLER_ARGS) +{ + int val = rctl_throttle_pct; + int error; + + error = sysctl_handle_int(oidp, &val, 0, req); + if (error || !req->newptr) + return (error); + if (val < 0) + return (EINVAL); + + RCTL_WLOCK(); + rctl_throttle_pct = val; + RCTL_WUNLOCK(); + + return (0); +} + +static int rctl_throttle_pct2_sysctl(SYSCTL_HANDLER_ARGS) +{ + int val = rctl_throttle_pct2; + int error; + + error = sysctl_handle_int(oidp, &val, 0, req); + if (error || !req->newptr) + return (error); + if (val < 0) + return (EINVAL); + + RCTL_WLOCK(); + rctl_throttle_pct2 = val; + RCTL_WUNLOCK(); + + return (0); +} + static const char * rctl_subject_type_name(int subject) { @@ -2122,13 +2209,19 @@ rctl_init(void) rctl_rule_zone = uma_zcreate("rctl_rule", sizeof(struct rctl_rule), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_NOFREE); - if (rctl_throttle_min <= 0) + /* + * Set default values, making sure not to overwrite the ones + * fetched from tunables. Most of those could be set at the + * declaration, except for the rctl_throttle_max - we cannot + * set it there due to hz not being compile time constant. + */ + if (rctl_throttle_min < 1) rctl_throttle_min = 1; - if (rctl_throttle_max <= 0) + if (rctl_throttle_max < rctl_throttle_min) rctl_throttle_max = 2 * hz; - if (rctl_throttle_pct <= 0) + if (rctl_throttle_pct < 0) rctl_throttle_pct = 100; - if (rctl_throttle_pct2 <= 0) + if (rctl_throttle_pct2 < 0) rctl_throttle_pct2 = 100; } From 65d6a5a446be052afdf700c717cf0fa066dd895b Mon Sep 17 00:00:00 2001 From: Jared McNeill Date: Fri, 8 Apr 2016 23:07:16 +0000 Subject: [PATCH 084/159] Attach hwreset resources at the same time as clock resources. --- sys/arm/allwinner/aw_reset.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sys/arm/allwinner/aw_reset.c b/sys/arm/allwinner/aw_reset.c index cabd9c7ff7e..3f56e9fdd16 100644 --- a/sys/arm/allwinner/aw_reset.c +++ b/sys/arm/allwinner/aw_reset.c @@ -159,5 +159,6 @@ static driver_t aw_reset_driver = { static devclass_t aw_reset_devclass; -DRIVER_MODULE(aw_reset, simplebus, aw_reset_driver, aw_reset_devclass, 0, 0); +EARLY_DRIVER_MODULE(aw_reset, simplebus, aw_reset_driver, aw_reset_devclass, + 0, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE); MODULE_VERSION(aw_reset, 1); From 222947a7422316e84897db8ec4b27a156c863a7f Mon Sep 17 00:00:00 2001 From: Jared McNeill Date: Fri, 8 Apr 2016 23:11:00 +0000 Subject: [PATCH 085/159] Fix incorrect pin definitions for Allwinner A31. --- sys/arm/allwinner/a31/a31_padconf.c | 40 ++++++++++++++--------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/sys/arm/allwinner/a31/a31_padconf.c b/sys/arm/allwinner/a31/a31_padconf.c index 1a38c794b5d..e591d575e7e 100644 --- a/sys/arm/allwinner/a31/a31_padconf.c +++ b/sys/arm/allwinner/a31/a31_padconf.c @@ -51,19 +51,19 @@ const static struct allwinner_pins a31_pins[] = { {"PA12", 0, 12, {"gpio_in", "gpio_out", "gmac", "lcd1", "mmc3", "mmc2", NULL, NULL}}, {"PA13", 0, 13, {"gpio_in", "gpio_out", "gmac", "lcd1", "mmc3", "mmc2", NULL, NULL}}, {"PA14", 0, 14, {"gpio_in", "gpio_out", "gmac", "lcd1", "mmc3", "mmc2", NULL, NULL}}, - {"PA15", 0, 15, {"gpio_in", "gpio_out", "gmac", "lcd1", "dmic", NULL, NULL, NULL}}, + {"PA15", 0, 15, {"gpio_in", "gpio_out", "gmac", "lcd1", "clk_out_a", NULL, NULL, NULL}}, {"PA16", 0, 16, {"gpio_in", "gpio_out", "gmac", "lcd1", "dmic", NULL, NULL, NULL}}, - {"PA17", 0, 17, {"gpio_in", "gpio_out", "gmac", "lcd1", "clk_out_b", NULL, NULL, NULL}}, - {"PA18", 0, 17, {"gpio_in", "gpio_out", "gmac", "lcd1", "pwm3", NULL, NULL, NULL}}, - {"PA19", 0, 17, {"gpio_in", "gpio_out", "gmac", "lcd1", "pwm3", NULL, NULL, NULL}}, - {"PA20", 0, 17, {"gpio_in", "gpio_out", "gmac", "lcd1", "spi3", NULL, NULL, NULL}}, - {"PA21", 0, 17, {"gpio_in", "gpio_out", "gmac", "lcd1", "spi3", NULL, NULL, NULL}}, - {"PA22", 0, 17, {"gpio_in", "gpio_out", "gmac", "lcd1", "spi3", NULL, NULL, NULL}}, - {"PA23", 0, 17, {"gpio_in", "gpio_out", "gmac", "lcd1", "spi3", NULL, NULL, NULL}}, - {"PA24", 0, 17, {"gpio_in", "gpio_out", "gmac", "lcd1", "spi3", NULL, NULL, NULL}}, - {"PA25", 0, 17, {"gpio_in", "gpio_out", "gmac", "lcd1", "spi3", NULL, NULL, NULL}}, - {"PA26", 0, 17, {"gpio_in", "gpio_out", "gmac", "lcd1", "clk_out_c", NULL, NULL, NULL}}, - {"PA27", 0, 17, {"gpio_in", "gpio_out", "gmac", "lcd1", NULL, NULL, NULL, NULL}}, + {"PA17", 0, 17, {"gpio_in", "gpio_out", "gmac", "lcd1", "dmic", NULL, NULL, NULL}}, + {"PA18", 0, 18, {"gpio_in", "gpio_out", "gmac", "lcd1", "clk_out_b", NULL, NULL, NULL}}, + {"PA19", 0, 19, {"gpio_in", "gpio_out", "gmac", "lcd1", "pwm3", NULL, NULL, NULL}}, + {"PA20", 0, 20, {"gpio_in", "gpio_out", "gmac", "lcd1", "pwm3", NULL, NULL, NULL}}, + {"PA21", 0, 21, {"gpio_in", "gpio_out", "gmac", "lcd1", "spi3", NULL, NULL, NULL}}, + {"PA22", 0, 22, {"gpio_in", "gpio_out", "gmac", "lcd1", "spi3", NULL, NULL, NULL}}, + {"PA23", 0, 23, {"gpio_in", "gpio_out", "gmac", "lcd1", "spi3", NULL, NULL, NULL}}, + {"PA24", 0, 24, {"gpio_in", "gpio_out", "gmac", "lcd1", "spi3", NULL, NULL, NULL}}, + {"PA25", 0, 25, {"gpio_in", "gpio_out", "gmac", "lcd1", "spi3", NULL, NULL, NULL}}, + {"PA26", 0, 26, {"gpio_in", "gpio_out", "gmac", "lcd1", "clk_out_c", NULL, NULL, NULL}}, + {"PA27", 0, 27, {"gpio_in", "gpio_out", "gmac", "lcd1", NULL, NULL, NULL, NULL}}, {"PB0", 1, 0, {"gpio_in", "gpio_out", "i2s0", "uart3", "csi", NULL, NULL, NULL}}, {"PB1", 1, 1, {"gpio_in", "gpio_out", "i2s0", NULL, NULL, NULL, NULL, NULL}}, @@ -144,11 +144,11 @@ const static struct allwinner_pins a31_pins[] = { {"PE9", 4, 9, {"gpio_in", "gpio_out", "csi", "ts", NULL, NULL, NULL, NULL}}, {"PE10", 4, 10, {"gpio_in", "gpio_out", "csi", "ts", NULL, NULL, NULL, NULL}}, {"PE11", 4, 11, {"gpio_in", "gpio_out", "csi", "ts", NULL, NULL, NULL, NULL}}, - {"PE12", 4, 11, {"gpio_in", "gpio_out", "csi", "ts", NULL, NULL, NULL, NULL}}, - {"PE13", 4, 11, {"gpio_in", "gpio_out", "csi", "ts", NULL, NULL, NULL, NULL}}, - {"PE14", 4, 11, {"gpio_in", "gpio_out", "csi", "ts", NULL, NULL, NULL, NULL}}, - {"PE15", 4, 11, {"gpio_in", "gpio_out", "csi", "ts", NULL, NULL, NULL, NULL}}, - {"PE16", 4, 11, {"gpio_in", "gpio_out", "csi", NULL, NULL, NULL, NULL, NULL}}, + {"PE12", 4, 12, {"gpio_in", "gpio_out", "csi", "ts", NULL, NULL, NULL, NULL}}, + {"PE13", 4, 13, {"gpio_in", "gpio_out", "csi", "ts", NULL, NULL, NULL, NULL}}, + {"PE14", 4, 14, {"gpio_in", "gpio_out", "csi", "ts", NULL, NULL, NULL, NULL}}, + {"PE15", 4, 15, {"gpio_in", "gpio_out", "csi", "ts", NULL, NULL, NULL, NULL}}, + {"PE16", 4, 16, {"gpio_in", "gpio_out", "csi", NULL, NULL, NULL, NULL, NULL}}, {"PF0", 5, 0, {"gpio_in", "gpio_out", "mmc0", NULL, "jtag", NULL, NULL, NULL}}, {"PF1", 5, 1, {"gpio_in", "gpio_out", "mmc0", NULL, "jtag", NULL, NULL, NULL}}, @@ -205,9 +205,9 @@ const static struct allwinner_pins a31_pins[] = { {"PH25", 7, 25, {"gpio_in", "gpio_out", NULL, NULL, NULL, NULL, NULL, NULL}}, {"PH26", 7, 26, {"gpio_in", "gpio_out", NULL, NULL, NULL, NULL, NULL, NULL}}, {"PH27", 7, 27, {"gpio_in", "gpio_out", NULL, NULL, NULL, NULL, NULL, NULL}}, - {"PH28", 7, 27, {"gpio_in", "gpio_out", NULL, NULL, NULL, NULL, NULL, NULL}}, - {"PH29", 7, 27, {"gpio_in", "gpio_out", "nand1", NULL, NULL, NULL, NULL, NULL}}, - {"PH30", 7, 27, {"gpio_in", "gpio_out", "nand1", NULL, NULL, NULL, NULL, NULL}}, + {"PH28", 7, 28, {"gpio_in", "gpio_out", NULL, NULL, NULL, NULL, NULL, NULL}}, + {"PH29", 7, 29, {"gpio_in", "gpio_out", "nand1", NULL, NULL, NULL, NULL, NULL}}, + {"PH30", 7, 30, {"gpio_in", "gpio_out", "nand1", NULL, NULL, NULL, NULL, NULL}}, }; const struct allwinner_padconf a31_padconf = { From 6966317aba2d623ae09ac038cdcdfac46db0fa09 Mon Sep 17 00:00:00 2001 From: Adrian Chadd Date: Sat, 9 Apr 2016 00:54:02 +0000 Subject: [PATCH 086/159] [net80211] revert part of r282405 in order to restore IBSS behaviour. This prevents nodes being created for peers on BSSes that are not our own. (Ie, same channel, IBSS, but different BSS.) The "IBSS merge" thing was fixed by me enabling "see all beacons" in the ath(4) driver a few months ago. Trouble is, we now need the filtering again. Tested: * ath(4), IBSS, on a very busy IBSS channel with lots (> 15) IBSS networks. PR: kern/208643 Sponsored by: Eva Automation, Inc. --- sys/net80211/ieee80211_adhoc.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/sys/net80211/ieee80211_adhoc.c b/sys/net80211/ieee80211_adhoc.c index a9334d053e1..eca98776421 100644 --- a/sys/net80211/ieee80211_adhoc.c +++ b/sys/net80211/ieee80211_adhoc.c @@ -371,10 +371,7 @@ adhoc_input(struct ieee80211_node *ni, struct mbuf *m, /* * Validate the bssid. */ - if (!(type == IEEE80211_FC0_TYPE_MGT && - (subtype == IEEE80211_FC0_SUBTYPE_BEACON || - subtype == IEEE80211_FC0_SUBTYPE_PROBE_RESP)) && - !IEEE80211_ADDR_EQ(bssid, vap->iv_bss->ni_bssid) && + if (!IEEE80211_ADDR_EQ(bssid, vap->iv_bss->ni_bssid) && !IEEE80211_ADDR_EQ(bssid, ifp->if_broadcastaddr)) { /* not interested in */ IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_INPUT, From adad5b456482948b187f30e05889db480de267b1 Mon Sep 17 00:00:00 2001 From: Adrian Chadd Date: Sat, 9 Apr 2016 00:55:55 +0000 Subject: [PATCH 087/159] [net8021] Pull out the ibss check code into a public function. The ath(4) driver now sees beacons and management frames for different BSSIDs in IBSS mode, which is a problem when you're in a very busy IBSS environment. So, expose this function so drivers can use it to check if the current RX node is actually for a BSS we need to pay attention to or not. PR: kern/208644 Sponsored by: Eva Automation. Inc. --- sys/net80211/ieee80211_node.c | 44 +++++++++++++++++++++++------------ sys/net80211/ieee80211_node.h | 1 + 2 files changed, 30 insertions(+), 15 deletions(-) diff --git a/sys/net80211/ieee80211_node.c b/sys/net80211/ieee80211_node.c index 66afb740106..5590dfc8b35 100644 --- a/sys/net80211/ieee80211_node.c +++ b/sys/net80211/ieee80211_node.c @@ -556,6 +556,33 @@ check_bss_debug(struct ieee80211vap *vap, struct ieee80211_node *ni) } #endif /* IEEE80211_DEBUG */ + +int +ieee80211_ibss_merge_check(struct ieee80211_node *ni) +{ + struct ieee80211vap *vap = ni->ni_vap; + + if (ni == vap->iv_bss || + IEEE80211_ADDR_EQ(ni->ni_bssid, vap->iv_bss->ni_bssid)) { + /* unchanged, nothing to do */ + return 0; + } + + if (!check_bss(vap, ni)) { + /* capabilities mismatch */ + IEEE80211_DPRINTF(vap, IEEE80211_MSG_ASSOC, + "%s: merge failed, capabilities mismatch\n", __func__); +#ifdef IEEE80211_DEBUG + if (ieee80211_msg_assoc(vap)) + check_bss_debug(vap, ni); +#endif + vap->iv_stats.is_ibss_capmismatch++; + return 0; + } + + return 1; +} + /* * Handle 802.11 ad hoc network merge. The * convention, set by the Wireless Ethernet Compatibility Alliance @@ -576,22 +603,9 @@ ieee80211_ibss_merge(struct ieee80211_node *ni) struct ieee80211com *ic = ni->ni_ic; #endif - if (ni == vap->iv_bss || - IEEE80211_ADDR_EQ(ni->ni_bssid, vap->iv_bss->ni_bssid)) { - /* unchanged, nothing to do */ + if (! ieee80211_ibss_merge_check(ni)) return 0; - } - if (!check_bss(vap, ni)) { - /* capabilities mismatch */ - IEEE80211_DPRINTF(vap, IEEE80211_MSG_ASSOC, - "%s: merge failed, capabilities mismatch\n", __func__); -#ifdef IEEE80211_DEBUG - if (ieee80211_msg_assoc(vap)) - check_bss_debug(vap, ni); -#endif - vap->iv_stats.is_ibss_capmismatch++; - return 0; - } + IEEE80211_DPRINTF(vap, IEEE80211_MSG_ASSOC, "%s: new bssid %s: %s preamble, %s slot time%s\n", __func__, ether_sprintf(ni->ni_bssid), diff --git a/sys/net80211/ieee80211_node.h b/sys/net80211/ieee80211_node.h index e9b73933f66..9492fc01fd1 100644 --- a/sys/net80211/ieee80211_node.h +++ b/sys/net80211/ieee80211_node.h @@ -330,6 +330,7 @@ void ieee80211_setupcurchan(struct ieee80211com *, struct ieee80211_channel *); void ieee80211_setcurchan(struct ieee80211com *, struct ieee80211_channel *); void ieee80211_update_chw(struct ieee80211com *); +int ieee80211_ibss_merge_check(struct ieee80211_node *); int ieee80211_ibss_merge(struct ieee80211_node *); struct ieee80211_scan_entry; int ieee80211_sta_join(struct ieee80211vap *, struct ieee80211_channel *, From afa44333551c985fa7670a880a5788c6352c747e Mon Sep 17 00:00:00 2001 From: Adrian Chadd Date: Sat, 9 Apr 2016 00:58:38 +0000 Subject: [PATCH 088/159] [ath] Only process beacon frames for the IBSS/BSSID if appropriate. * Don't use arbitrary frames for the average RX RSSI - only frames from the current BSSID * Don't log / do the syncbeacon logic for another BSSID and definitely don't do the syncbeacon call if we miss beacons outside of STA mode. * Don't do the IBSS merge bits if the current node plainly won't ever match our current BSS (ie, the IBSS doesn't have to match, but all the same bits that we check in ieee80211_ibss_merge() have to match.) Tested: * ath(4), AR9380, IBSS mode, surrounded by a lot of IBSS 11ac networks. Sponsored by: Eva Automation, Inc. --- sys/dev/ath/if_ath_rx.c | 147 ++++++++++++++++++++++------------------ 1 file changed, 82 insertions(+), 65 deletions(-) diff --git a/sys/dev/ath/if_ath_rx.c b/sys/dev/ath/if_ath_rx.c index dbdfb895d72..ff056adf714 100644 --- a/sys/dev/ath/if_ath_rx.c +++ b/sys/dev/ath/if_ath_rx.c @@ -361,85 +361,102 @@ ath_recv_mgmt(struct ieee80211_node *ni, struct mbuf *m, ATH_VAP(vap)->av_recv_mgmt(ni, m, subtype, rxs, rssi, nf); switch (subtype) { case IEEE80211_FC0_SUBTYPE_BEACON: - /* update rssi statistics for use by the hal */ - /* XXX unlocked check against vap->iv_bss? */ - ATH_RSSI_LPF(sc->sc_halstats.ns_avgbrssi, rssi); - - tsf_beacon = ((uint64_t) LE_READ_4(ni->ni_tstamp.data + 4)) << 32; - tsf_beacon |= LE_READ_4(ni->ni_tstamp.data); - - nexttbtt = ath_hal_getnexttbtt(sc->sc_ah); /* - * Let's calculate the delta and remainder, so we can see - * if the beacon timer from the AP is varying by more than - * a few TU. (Which would be a huge, huge problem.) + * Only do the following processing if it's for + * the current BSS. + * + * In scan and IBSS mode we receive all beacons, + * which means we need to filter out stuff + * that isn't for us or we'll end up constantly + * trying to sync / merge to BSSes that aren't + * actually us. */ - tsf_delta = (long long) tsf_beacon - (long long) tsf_beacon_old; + if (IEEE80211_ADDR_EQ(ni->ni_bssid, vap->iv_bss->ni_bssid)) { + /* update rssi statistics for use by the hal */ + /* XXX unlocked check against vap->iv_bss? */ + ATH_RSSI_LPF(sc->sc_halstats.ns_avgbrssi, rssi); - tsf_delta_bmiss = tsf_delta / tsf_intval; - /* - * If our delta is greater than half the beacon interval, - * let's round the bmiss value up to the next beacon - * interval. Ie, we're running really, really early - * on the next beacon. - */ - if (tsf_delta % tsf_intval > (tsf_intval / 2)) - tsf_delta_bmiss ++; + tsf_beacon = ((uint64_t) LE_READ_4(ni->ni_tstamp.data + 4)) << 32; + tsf_beacon |= LE_READ_4(ni->ni_tstamp.data); - tsf_beacon_target = tsf_beacon_old + - (((unsigned long long) tsf_delta_bmiss) * (long long) tsf_intval); + nexttbtt = ath_hal_getnexttbtt(sc->sc_ah); - /* - * The remainder using '%' is between 0 .. intval-1. - * If we're actually running too fast, then the remainder - * will be some large number just under intval-1. - * So we need to look at whether we're running - * before or after the target beacon interval - * and if we are, modify how we do the remainder - * calculation. - */ - if (tsf_beacon < tsf_beacon_target) { - tsf_remainder = - -(tsf_intval - ((tsf_beacon - tsf_beacon_old) % tsf_intval)); - } else { - tsf_remainder = (tsf_beacon - tsf_beacon_old) % tsf_intval; - } - - DPRINTF(sc, ATH_DEBUG_BEACON, "%s: old_tsf=%llu, new_tsf=%llu, target_tsf=%llu, delta=%lld, bmiss=%d, remainder=%d\n", - __func__, - (unsigned long long) tsf_beacon_old, - (unsigned long long) tsf_beacon, - (unsigned long long) tsf_beacon_target, - (long long) tsf_delta, - tsf_delta_bmiss, - tsf_remainder); - - DPRINTF(sc, ATH_DEBUG_BEACON, "%s: tsf=%llu, nexttbtt=%llu, delta=%d\n", - __func__, - (unsigned long long) tsf_beacon, - (unsigned long long) nexttbtt, - (int32_t) tsf_beacon - (int32_t) nexttbtt + tsf_intval); - - if (sc->sc_syncbeacon && - ni == vap->iv_bss && - (vap->iv_state == IEEE80211_S_RUN || vap->iv_state == IEEE80211_S_SLEEP)) { - DPRINTF(sc, ATH_DEBUG_BEACON, - "%s: syncbeacon=1; syncing\n", - __func__); /* - * Resync beacon timers using the tsf of the beacon - * frame we just received. + * Let's calculate the delta and remainder, so we can see + * if the beacon timer from the AP is varying by more than + * a few TU. (Which would be a huge, huge problem.) */ - ath_beacon_config(sc, vap); - sc->sc_syncbeacon = 0; + tsf_delta = (long long) tsf_beacon - (long long) tsf_beacon_old; + + tsf_delta_bmiss = tsf_delta / tsf_intval; + + /* + * If our delta is greater than half the beacon interval, + * let's round the bmiss value up to the next beacon + * interval. Ie, we're running really, really early + * on the next beacon. + */ + if (tsf_delta % tsf_intval > (tsf_intval / 2)) + tsf_delta_bmiss ++; + + tsf_beacon_target = tsf_beacon_old + + (((unsigned long long) tsf_delta_bmiss) * (long long) tsf_intval); + + /* + * The remainder using '%' is between 0 .. intval-1. + * If we're actually running too fast, then the remainder + * will be some large number just under intval-1. + * So we need to look at whether we're running + * before or after the target beacon interval + * and if we are, modify how we do the remainder + * calculation. + */ + if (tsf_beacon < tsf_beacon_target) { + tsf_remainder = + -(tsf_intval - ((tsf_beacon - tsf_beacon_old) % tsf_intval)); + } else { + tsf_remainder = (tsf_beacon - tsf_beacon_old) % tsf_intval; + } + + DPRINTF(sc, ATH_DEBUG_BEACON, "%s: old_tsf=%llu, new_tsf=%llu, target_tsf=%llu, delta=%lld, bmiss=%d, remainder=%d\n", + __func__, + (unsigned long long) tsf_beacon_old, + (unsigned long long) tsf_beacon, + (unsigned long long) tsf_beacon_target, + (long long) tsf_delta, + tsf_delta_bmiss, + tsf_remainder); + + DPRINTF(sc, ATH_DEBUG_BEACON, "%s: tsf=%llu, nexttbtt=%llu, delta=%d\n", + __func__, + (unsigned long long) tsf_beacon, + (unsigned long long) nexttbtt, + (int32_t) tsf_beacon - (int32_t) nexttbtt + tsf_intval); + + /* We only do syncbeacon on STA VAPs; not on IBSS */ + if (vap->iv_opmode == IEEE80211_M_STA && + sc->sc_syncbeacon && + ni == vap->iv_bss && + (vap->iv_state == IEEE80211_S_RUN || vap->iv_state == IEEE80211_S_SLEEP)) { + DPRINTF(sc, ATH_DEBUG_BEACON, + "%s: syncbeacon=1; syncing\n", + __func__); + /* + * Resync beacon timers using the tsf of the beacon + * frame we just received. + */ + ath_beacon_config(sc, vap); + sc->sc_syncbeacon = 0; + } } /* fall thru... */ case IEEE80211_FC0_SUBTYPE_PROBE_RESP: if (vap->iv_opmode == IEEE80211_M_IBSS && - vap->iv_state == IEEE80211_S_RUN) { + vap->iv_state == IEEE80211_S_RUN && + ieee80211_ibss_merge_check(ni)) { uint32_t rstamp = sc->sc_lastrs->rs_tstamp; uint64_t tsf = ath_extend_tsf(sc, rstamp, ath_hal_gettsf64(sc->sc_ah)); From c4d7f6ab97df09f7a52000da1eb2b75203e8b68d Mon Sep 17 00:00:00 2001 From: Justin Hibbits Date: Sat, 9 Apr 2016 01:02:17 +0000 Subject: [PATCH 089/159] Fix a masking bug for e500 PMC. No idea how this slipped through my regression testing. pe_code is the event to count, pe_cpu is the CPU family mask. --- sys/dev/hwpmc/hwpmc_e500.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/sys/dev/hwpmc/hwpmc_e500.c b/sys/dev/hwpmc/hwpmc_e500.c index f8ae1195f98..dbec7ae8931 100644 --- a/sys/dev/hwpmc/hwpmc_e500.c +++ b/sys/dev/hwpmc/hwpmc_e500.c @@ -507,6 +507,7 @@ e500_allocate_pmc(int cpu, int ri, struct pmc *pm, pe = a->pm_ev; config = PMLCax_FCS | PMLCax_FCU | PMLCax_FCM1 | PMLCax_FCM1; + if (pe < PMC_EV_E500_FIRST || pe > PMC_EV_E500_LAST) return (EINVAL); @@ -517,14 +518,14 @@ e500_allocate_pmc(int cpu, int ri, struct pmc *pm, vers = mfpvr() >> 16; switch (vers) { case FSL_E500v1: - pe_cpu_mask = ev->pe_code & PMC_PPC_E500V1; + pe_cpu_mask = ev->pe_cpu & PMC_PPC_E500V1; break; case FSL_E500v2: - pe_cpu_mask = ev->pe_code & PMC_PPC_E500V2; + pe_cpu_mask = ev->pe_cpu & PMC_PPC_E500V2; break; case FSL_E500mc: case FSL_E5500: - pe_cpu_mask = ev->pe_code & PMC_PPC_E500MC; + pe_cpu_mask = ev->pe_cpu & PMC_PPC_E500MC; break; } if (pe_cpu_mask == 0) From 2b8b8ae8e7f0fd5a098d1b8704e7ee91150f83a7 Mon Sep 17 00:00:00 2001 From: Adrian Chadd Date: Sat, 9 Apr 2016 04:57:25 +0000 Subject: [PATCH 090/159] [net80211] print out the channel type (eg a, b, g, n) when creating an IBSS network. --- sys/net80211/ieee80211_node.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sys/net80211/ieee80211_node.c b/sys/net80211/ieee80211_node.c index 5590dfc8b35..9355f3717b7 100644 --- a/sys/net80211/ieee80211_node.c +++ b/sys/net80211/ieee80211_node.c @@ -330,9 +330,10 @@ ieee80211_create_ibss(struct ieee80211vap* vap, struct ieee80211_channel *chan) struct ieee80211_node *ni; IEEE80211_DPRINTF(vap, IEEE80211_MSG_SCAN, - "%s: creating %s on channel %u\n", __func__, + "%s: creating %s on channel %u%c\n", __func__, ieee80211_opmode_name[vap->iv_opmode], - ieee80211_chan2ieee(ic, chan)); + ieee80211_chan2ieee(ic, chan), + ieee80211_channel_type_char(chan)); ni = ieee80211_alloc_node(&ic->ic_sta, vap, vap->iv_myaddr); if (ni == NULL) { From 029f99dcc4b3dc4e08605f4f8a2ecc8854d0e937 Mon Sep 17 00:00:00 2001 From: "Bjoern A. Zeeb" Date: Sat, 9 Apr 2016 09:24:05 +0000 Subject: [PATCH 091/159] Make the KASSERT message in hash destroy more informative. While the pointer might not be too helpful, the malloc type might at least give a good hint about which hashtbl we are talking. MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Reviewed by: gnn, emaste Differential Revision: https://reviews.freebsd.org/D5802 --- sys/kern/subr_hash.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sys/kern/subr_hash.c b/sys/kern/subr_hash.c index 5533882d6f3..fe812869159 100644 --- a/sys/kern/subr_hash.c +++ b/sys/kern/subr_hash.c @@ -93,7 +93,8 @@ hashdestroy(void *vhashtbl, struct malloc_type *type, u_long hashmask) hashtbl = vhashtbl; for (hp = hashtbl; hp <= &hashtbl[hashmask]; hp++) - KASSERT(LIST_EMPTY(hp), ("%s: hash not empty", __func__)); + KASSERT(LIST_EMPTY(hp), ("%s: hashtbl %p not empty " + "(malloc type %s)", __func__, hashtbl, type->ks_shortdesc)); free(hashtbl, type); } From c89e0d151c6ffea4e187f215720b65e210f43a94 Mon Sep 17 00:00:00 2001 From: "Bjoern A. Zeeb" Date: Sat, 9 Apr 2016 09:31:28 +0000 Subject: [PATCH 092/159] Try to unbreak the build: the 'vap' variable is only used if ieee80211 debugging compile is on. --- sys/net80211/ieee80211_node.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/net80211/ieee80211_node.c b/sys/net80211/ieee80211_node.c index 9355f3717b7..0986145d735 100644 --- a/sys/net80211/ieee80211_node.c +++ b/sys/net80211/ieee80211_node.c @@ -599,8 +599,8 @@ ieee80211_ibss_merge_check(struct ieee80211_node *ni) int ieee80211_ibss_merge(struct ieee80211_node *ni) { - struct ieee80211vap *vap = ni->ni_vap; #ifdef IEEE80211_DEBUG + struct ieee80211vap *vap = ni->ni_vap; struct ieee80211com *ic = ni->ni_ic; #endif From 4c86b2bc136c346cdefc715a95e244cc56bd7443 Mon Sep 17 00:00:00 2001 From: "Bjoern A. Zeeb" Date: Sat, 9 Apr 2016 10:39:54 +0000 Subject: [PATCH 093/159] Mfp: r296346 No reason identified to keep UMA_ZONE_NOFREE here. Reviewed by: gnn MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D5736 --- sys/netinet/ip_divert.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sys/netinet/ip_divert.c b/sys/netinet/ip_divert.c index 3e3bc942df9..f23a3a87fe2 100644 --- a/sys/netinet/ip_divert.c +++ b/sys/netinet/ip_divert.c @@ -158,8 +158,7 @@ div_init(void) * place for hashbase == NULL. */ in_pcbinfo_init(&V_divcbinfo, "div", &V_divcb, 1, 1, "divcb", - div_inpcb_init, div_inpcb_fini, UMA_ZONE_NOFREE, - IPI_HASHFIELDS_NONE); + div_inpcb_init, div_inpcb_fini, 0, IPI_HASHFIELDS_NONE); } static void From e18b26d377c6ad7096639cbb60928d2997fb5e89 Mon Sep 17 00:00:00 2001 From: "Bjoern A. Zeeb" Date: Sat, 9 Apr 2016 10:44:57 +0000 Subject: [PATCH 094/159] Mfp: r296345 No need to keep type stability on raw sockets zone. We've also been running with a KASSERT since r222488 to make sure the ipi_count is 0 on destroy. PR: 164763 Reviewed by: gnn MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D5735 --- sys/netinet/raw_ip.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sys/netinet/raw_ip.c b/sys/netinet/raw_ip.c index 2eecb95c7ba..9f29444cb71 100644 --- a/sys/netinet/raw_ip.c +++ b/sys/netinet/raw_ip.c @@ -209,8 +209,7 @@ rip_init(void) { in_pcbinfo_init(&V_ripcbinfo, "rip", &V_ripcb, INP_PCBHASH_RAW_SIZE, - 1, "ripcb", rip_inpcb_init, NULL, UMA_ZONE_NOFREE, - IPI_HASHFIELDS_NONE); + 1, "ripcb", rip_inpcb_init, NULL, 0, IPI_HASHFIELDS_NONE); EVENTHANDLER_REGISTER(maxsockets_change, rip_zone_change, NULL, EVENTHANDLER_PRI_ANY); } From dc95d65555c8c7eb772474add8e586e634061995 Mon Sep 17 00:00:00 2001 From: "Bjoern A. Zeeb" Date: Sat, 9 Apr 2016 10:51:07 +0000 Subject: [PATCH 095/159] Mfp: r296309 While there is no dependency interaction, stopping the timer before freeing the rest of the resources seems more natural and avoids it being scheduled an extra time when it is no longer needed. Reviewed by: gnn, emaste MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D5733 --- sys/netinet/tcp_syncache.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/sys/netinet/tcp_syncache.c b/sys/netinet/tcp_syncache.c index b898c498eb6..1cf27e1da92 100644 --- a/sys/netinet/tcp_syncache.c +++ b/sys/netinet/tcp_syncache.c @@ -281,6 +281,12 @@ syncache_destroy(void) struct syncache *sc, *nsc; int i; + /* + * Stop the re-seed timer before freeing resources. No need to + * possibly schedule it another time. + */ + callout_drain(&V_tcp_syncache.secret.reseed); + /* Cleanup hash buckets: stop timers, free entries, destroy locks. */ for (i = 0; i < V_tcp_syncache.hashsize; i++) { @@ -304,8 +310,6 @@ syncache_destroy(void) /* Free the allocated global resources. */ uma_zdestroy(V_tcp_syncache.zone); free(V_tcp_syncache.hashbase, M_SYNCACHE); - - callout_drain(&V_tcp_syncache.secret.reseed); } #endif From b805f83da7bc5de73c53e8e4433af67260d94397 Mon Sep 17 00:00:00 2001 From: Poul-Henning Kamp Date: Sat, 9 Apr 2016 10:53:21 +0000 Subject: [PATCH 096/159] Create /usr/local/etc before filling things into it. Only run mtree if the NANO_CUST_FILES_MTREE is nonempty Also umount the packages on non-signal failure --- tools/tools/nanobsd/defaults.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/tools/nanobsd/defaults.sh b/tools/tools/nanobsd/defaults.sh index 3b28b392258..19cf887c983 100755 --- a/tools/tools/nanobsd/defaults.sh +++ b/tools/tools/nanobsd/defaults.sh @@ -915,7 +915,7 @@ cust_install_files ( ) ( cd "${NANO_TOOLS}/Files" find . -print | grep -Ev '/(CVS|\.svn|\.hg|\.git)' | cpio -Ldumpv ${NANO_WORLDDIR} - if [ -f ${NANO_CUST_FILES_MTREE} ]; then + if [ -n "${NANO_CUST_FILES_MTREE}" -a -f ${NANO_CUST_FILES_MTREE} ]; then CR "mtree -eiU -p /" <${NANO_CUST_FILES_MTREE} fi ) @@ -925,6 +925,7 @@ cust_install_files ( ) ( cust_pkgng ( ) ( + mkdir -p ${NANO_WORLDDIR}/usr/local/etc local PKG_CONF="${NANO_WORLDDIR}/usr/local/etc/pkg.conf" local PKGCMD="env ASSUME_ALWAYS_YES=YES PKG_DBDIR=${NANO_PKG_META_BASE}/pkg SIGNATURE_TYPE=none /usr/sbin/pkg" @@ -956,7 +957,7 @@ cust_pkgng ( ) ( mkdir -p ${NANO_WORLDDIR}/_.p mount -t nullfs -o noatime -o ro ${NANO_PACKAGE_DIR} ${NANO_WORLDDIR}/_.p - trap "umount ${NANO_WORLDDIR}/_.p ; rm -rf ${NANO_WORLDDIR}/_.p" 1 2 15 + trap "umount ${NANO_WORLDDIR}/_.p ; rm -rf ${NANO_WORLDDIR}/_.p" 1 2 15 EXIT # Install packages todo="$(echo "${NANO_PACKAGE_LIST}" | awk '{ print NF }')" From f254aeda60a730b78e5c915a5d6e7cbe47605cd6 Mon Sep 17 00:00:00 2001 From: "Bjoern A. Zeeb" Date: Sat, 9 Apr 2016 10:58:08 +0000 Subject: [PATCH 097/159] Mfp: r296259 We attach the "counter" to the tcpcbs. Thus don't free the TCP Fastopen zone before the tcpcbs are gone, as otherwise the zone won't be empty. With that it should be safe to destroy the "tfo" zone without leaking the memory. PR: 164763 Reviewed by: gnn MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D5731 --- sys/netinet/tcp_fastopen.c | 2 +- sys/netinet/tcp_subr.c | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/sys/netinet/tcp_fastopen.c b/sys/netinet/tcp_fastopen.c index 482320e5b73..ec02d18fada 100644 --- a/sys/netinet/tcp_fastopen.c +++ b/sys/netinet/tcp_fastopen.c @@ -204,7 +204,7 @@ void tcp_fastopen_init(void) { V_counter_zone = uma_zcreate("tfo", sizeof(unsigned int), - NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_NOFREE); + NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); rm_init(&V_tcp_fastopen_keylock, "tfo_keylock"); callout_init_rm(&V_tcp_fastopen_autokey_ctx.c, &V_tcp_fastopen_keylock, 0); diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c index 33b16adb7c6..417e0d87a2f 100644 --- a/sys/netinet/tcp_subr.c +++ b/sys/netinet/tcp_subr.c @@ -738,9 +738,6 @@ tcp_destroy(void) { int error; -#ifdef TCP_RFC7413 - tcp_fastopen_destroy(); -#endif tcp_hc_destroy(); syncache_destroy(); tcp_tw_destroy(); @@ -748,6 +745,14 @@ tcp_destroy(void) uma_zdestroy(V_sack_hole_zone); uma_zdestroy(V_tcpcb_zone); +#ifdef TCP_RFC7413 + /* + * Cannot free the zone until all tcpcbs are released as we attach + * the allocations to them. + */ + tcp_fastopen_destroy(); +#endif + error = hhook_head_deregister(V_tcp_hhh[HHOOK_TCP_EST_IN]); if (error != 0) { printf("%s: WARNING: unable to deregister helper hook " From a09ecc1326b65a60495a628114d3650fdef76c38 Mon Sep 17 00:00:00 2001 From: Jared McNeill Date: Sat, 9 Apr 2016 11:23:46 +0000 Subject: [PATCH 098/159] Enable PHY regulator when the optional "phy-supply" property is present. Submitted by: Emmanuel Vadot --- sys/arm/allwinner/a20/a20_if_dwc.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/sys/arm/allwinner/a20/a20_if_dwc.c b/sys/arm/allwinner/a20/a20_if_dwc.c index 5e901e466b6..2f88d9de784 100644 --- a/sys/arm/allwinner/a20/a20_if_dwc.c +++ b/sys/arm/allwinner/a20/a20_if_dwc.c @@ -42,6 +42,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include "if_dwc_if.h" @@ -64,6 +65,7 @@ a20_if_dwc_init(device_t dev) const char *tx_parent_name; char *phy_type; clk_t clk_tx, clk_tx_parent; + regulator_t reg; phandle_t node; int error; @@ -96,6 +98,15 @@ a20_if_dwc_init(device_t dev) } } + /* Enable PHY regulator if applicable */ + if (regulator_get_by_ofw_property(dev, "phy-supply", ®) == 0) { + error = regulator_enable(reg); + if (error != 0) { + device_printf(dev, "could not enable PHY regulator\n"); + return (error); + } + } + return (0); } From 8586a9635fe3b547efc396ed20625741c2833861 Mon Sep 17 00:00:00 2001 From: "Bjoern A. Zeeb" Date: Sat, 9 Apr 2016 11:27:47 +0000 Subject: [PATCH 099/159] Mfp: r296260 The tcp_inpcb (pcbinfo) zone should be safe to destroy. PR: 164763 Reviewed by: gnn MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D5732 --- sys/netinet/tcp_subr.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c index 417e0d87a2f..56283db05ed 100644 --- a/sys/netinet/tcp_subr.c +++ b/sys/netinet/tcp_subr.c @@ -654,8 +654,7 @@ tcp_init(void) hashsize); } in_pcbinfo_init(&V_tcbinfo, "tcp", &V_tcb, hashsize, hashsize, - "tcp_inpcb", tcp_inpcb_init, NULL, UMA_ZONE_NOFREE, - IPI_HASHFIELDS_4TUPLE); + "tcp_inpcb", tcp_inpcb_init, NULL, 0, IPI_HASHFIELDS_4TUPLE); /* * These have to be type stable for the benefit of the timers. From 06c56183351f5677305cccc5b30a504a5304a4de Mon Sep 17 00:00:00 2001 From: Alexander Motin Date: Sat, 9 Apr 2016 11:54:09 +0000 Subject: [PATCH 100/159] Reduce code duplication when executing Passthrough IOCB. MFC after: 2 weeks --- sys/dev/isp/isp.c | 267 ++++++++++++++-------------------------------- 1 file changed, 80 insertions(+), 187 deletions(-) diff --git a/sys/dev/isp/isp.c b/sys/dev/isp/isp.c index d5c393bfd9c..c4c7d806ff6 100644 --- a/sys/dev/isp/isp.c +++ b/sys/dev/isp/isp.c @@ -3494,26 +3494,17 @@ isp_gid_ft_sns(ispsoftc_t *isp, int chan) } static int -isp_gid_ft_ct_passthru(ispsoftc_t *isp, int chan) +isp_ct_passthru(ispsoftc_t *isp, int chan, uint32_t cmd_bcnt, uint32_t rsp_bcnt) { mbreg_t mbs; fcparam *fcp = FCPARAM(isp, chan); union { isp_ct_pt_t plocal; - ct_hdr_t clocal; uint8_t q[QENTRY_LEN]; } un; isp_ct_pt_t *pt; - ct_hdr_t *ct; - uint32_t *rp; uint8_t *scp = fcp->isp_scratch; - isp_prt(isp, ISP_LOGDEBUG0, "Chan %d requesting GID_FT via CT", chan); - if (FC_SCRATCH_ACQUIRE(isp, chan)) { - isp_prt(isp, ISP_LOGERR, sacq); - return (-1); - } - /* * Build a Passthrough IOCB in memory. */ @@ -3527,39 +3518,21 @@ isp_gid_ft_ct_passthru(ispsoftc_t *isp, int chan) pt->ctp_vpidx = ISP_GET_VPIDX(isp, chan); pt->ctp_time = 10; pt->ctp_rsp_cnt = 1; - pt->ctp_rsp_bcnt = GIDLEN; - pt->ctp_cmd_bcnt = sizeof (*ct) + sizeof (uint32_t); + pt->ctp_rsp_bcnt = rsp_bcnt; + pt->ctp_cmd_bcnt = cmd_bcnt; pt->ctp_dataseg[0].ds_base = DMA_LO32(fcp->isp_scdma+XTXOFF); pt->ctp_dataseg[0].ds_basehi = DMA_HI32(fcp->isp_scdma+XTXOFF); - pt->ctp_dataseg[0].ds_count = sizeof (*ct) + sizeof (uint32_t); + pt->ctp_dataseg[0].ds_count = cmd_bcnt; pt->ctp_dataseg[1].ds_base = DMA_LO32(fcp->isp_scdma); pt->ctp_dataseg[1].ds_basehi = DMA_HI32(fcp->isp_scdma); - pt->ctp_dataseg[1].ds_count = GIDLEN; - if (isp->isp_dblev & ISP_LOGDEBUG1) { - isp_print_bytes(isp, "ct IOCB", QENTRY_LEN, pt); - } - isp_put_ct_pt(isp, pt, (isp_ct_pt_t *) &scp[CTXOFF]); + pt->ctp_dataseg[1].ds_count = rsp_bcnt; + isp_put_ct_pt(isp, pt, (isp_ct_pt_t *)&scp[CTXOFF]); + if (isp->isp_dblev & ISP_LOGDEBUG1) + isp_print_bytes(isp, "CT IOCB request", QENTRY_LEN, &scp[CTXOFF]); /* - * Build the CT header and command in memory. - * - * Note that the CT header has to end up as Big Endian format in memory. + * Execute the Passthrough IOCB. */ - ct = &un.clocal; - ISP_MEMZERO(ct, sizeof (*ct)); - ct->ct_revision = CT_REVISION; - ct->ct_fcs_type = CT_FC_TYPE_FC; - ct->ct_fcs_subtype = CT_FC_SUBTYPE_NS; - ct->ct_cmd_resp = SNS_GID_FT; - ct->ct_bcnt_resid = (GIDLEN - 16) >> 2; - - isp_put_ct_hdr(isp, ct, (ct_hdr_t *) &scp[XTXOFF]); - rp = (uint32_t *) &scp[XTXOFF+sizeof (*ct)]; - ISP_IOZPUT_32(isp, FC4_SCSI, rp); - if (isp->isp_dblev & ISP_LOGDEBUG1) { - isp_print_bytes(isp, "CT HDR + payload after put", - sizeof (*ct) + sizeof (uint32_t), &scp[XTXOFF]); - } ISP_MEMZERO(&scp[ZTXOFF], QENTRY_LEN); MBSINIT(&mbs, MBOX_EXEC_COMMAND_IOCB_A64, MBLOGALL, MBCMD_DEFAULT_TIMEOUT + pt->ctp_time * 1000000); @@ -3574,18 +3547,58 @@ isp_gid_ft_ct_passthru(ispsoftc_t *isp, int chan) return (-1); } MEMORYBARRIER(isp, SYNC_SFORCPU, 0, ISP_FC_SCRLEN, chan); + if (isp->isp_dblev & ISP_LOGDEBUG1) + isp_print_bytes(isp, "CT IOCB response", QENTRY_LEN, &scp[ZTXOFF]); pt = &un.plocal; isp_get_ct_pt(isp, (isp_ct_pt_t *) &scp[ZTXOFF], pt); - if (isp->isp_dblev & ISP_LOGDEBUG1) { - isp_print_bytes(isp, "IOCB response", QENTRY_LEN, pt); - } - if (pt->ctp_status && pt->ctp_status != RQCS_DATA_UNDERRUN) { isp_prt(isp, ISP_LOGWARN, "Chan %d GID_FT CT Passthrough returned 0x%x", chan, pt->ctp_status); return (-1); } + + return (0); +} + +static int +isp_gid_ft_ct_passthru(ispsoftc_t *isp, int chan) +{ + fcparam *fcp = FCPARAM(isp, chan); + ct_hdr_t ct; + uint32_t *rp; + uint8_t *scp = fcp->isp_scratch; + + isp_prt(isp, ISP_LOGDEBUG0, "Chan %d requesting GID_FT via CT", chan); + if (FC_SCRATCH_ACQUIRE(isp, chan)) { + isp_prt(isp, ISP_LOGERR, sacq); + return (-1); + } + + /* + * Build the CT header and command in memory. + * + * Note that the CT header has to end up as Big Endian format in memory. + */ + ISP_MEMZERO(&ct, sizeof (ct)); + ct.ct_revision = CT_REVISION; + ct.ct_fcs_type = CT_FC_TYPE_FC; + ct.ct_fcs_subtype = CT_FC_SUBTYPE_NS; + ct.ct_cmd_resp = SNS_GID_FT; + ct.ct_bcnt_resid = (GIDLEN - 16) >> 2; + isp_put_ct_hdr(isp, &ct, (ct_hdr_t *) &scp[XTXOFF]); + rp = (uint32_t *) &scp[XTXOFF + sizeof(ct)]; + ISP_IOZPUT_32(isp, FC4_SCSI, rp); + if (isp->isp_dblev & ISP_LOGDEBUG1) { + isp_print_bytes(isp, "CT request", + sizeof(ct) + sizeof(uint32_t), &scp[XTXOFF]); + } + + if (isp_ct_passthru(isp, chan, sizeof(ct) + sizeof(uint32_t), GIDLEN)) { + FC_SCRATCH_RELEASE(isp, chan); + return (-1); + } + if (isp->isp_dblev & ISP_LOGDEBUG1) isp_print_bytes(isp, "CT response", GIDLEN, scp); isp_get_gid_ft_response(isp, (sns_gid_ft_rsp_t *)scp, @@ -3957,16 +3970,9 @@ isp_register_fc4_type(ispsoftc_t *isp, int chan) static int isp_register_fc4_type_24xx(ispsoftc_t *isp, int chan) { - mbreg_t mbs; fcparam *fcp = FCPARAM(isp, chan); - union { - isp_ct_pt_t plocal; - rft_id_t clocal; - uint8_t q[QENTRY_LEN]; - } un; - isp_ct_pt_t *pt; ct_hdr_t *ct; - rft_id_t *rp; + rft_id_t rp; uint8_t *scp = fcp->isp_scratch; if (FC_SCRATCH_ACQUIRE(isp, chan)) { @@ -3974,111 +3980,51 @@ isp_register_fc4_type_24xx(ispsoftc_t *isp, int chan) return (-1); } - /* - * Build a Passthrough IOCB in memory. - */ - ISP_MEMZERO(un.q, QENTRY_LEN); - pt = &un.plocal; - pt->ctp_header.rqs_entry_count = 1; - pt->ctp_header.rqs_entry_type = RQSTYPE_CT_PASSTHRU; - pt->ctp_handle = 0xffffffff; - pt->ctp_nphdl = fcp->isp_sns_hdl; - pt->ctp_cmd_cnt = 1; - pt->ctp_vpidx = ISP_GET_VPIDX(isp, chan); - pt->ctp_time = 4; - pt->ctp_rsp_cnt = 1; - pt->ctp_rsp_bcnt = sizeof (ct_hdr_t); - pt->ctp_cmd_bcnt = sizeof (rft_id_t); - pt->ctp_dataseg[0].ds_base = DMA_LO32(fcp->isp_scdma+XTXOFF); - pt->ctp_dataseg[0].ds_basehi = DMA_HI32(fcp->isp_scdma+XTXOFF); - pt->ctp_dataseg[0].ds_count = sizeof (rft_id_t); - pt->ctp_dataseg[1].ds_base = DMA_LO32(fcp->isp_scdma); - pt->ctp_dataseg[1].ds_basehi = DMA_HI32(fcp->isp_scdma); - pt->ctp_dataseg[1].ds_count = sizeof (ct_hdr_t); - isp_put_ct_pt(isp, pt, (isp_ct_pt_t *) &scp[CTXOFF]); - if (isp->isp_dblev & ISP_LOGDEBUG1) { - isp_print_bytes(isp, "IOCB CT Request", QENTRY_LEN, pt); - } - /* * Build the CT header and command in memory. * * Note that the CT header has to end up as Big Endian format in memory. */ - ISP_MEMZERO(&un.clocal, sizeof (un.clocal)); - ct = &un.clocal.rftid_hdr; + ISP_MEMZERO(&rp, sizeof(rp)); + ct = &rp.rftid_hdr; ct->ct_revision = CT_REVISION; ct->ct_fcs_type = CT_FC_TYPE_FC; ct->ct_fcs_subtype = CT_FC_SUBTYPE_NS; ct->ct_cmd_resp = SNS_RFT_ID; ct->ct_bcnt_resid = (sizeof (rft_id_t) - sizeof (ct_hdr_t)) >> 2; - rp = &un.clocal; - rp->rftid_portid[0] = fcp->isp_portid >> 16; - rp->rftid_portid[1] = fcp->isp_portid >> 8; - rp->rftid_portid[2] = fcp->isp_portid; - rp->rftid_fc4types[FC4_SCSI >> 5] = 1 << (FC4_SCSI & 0x1f); - isp_put_rft_id(isp, rp, (rft_id_t *) &scp[XTXOFF]); - if (isp->isp_dblev & ISP_LOGDEBUG1) { - isp_print_bytes(isp, "CT Header", QENTRY_LEN, &scp[XTXOFF]); - } + rp.rftid_portid[0] = fcp->isp_portid >> 16; + rp.rftid_portid[1] = fcp->isp_portid >> 8; + rp.rftid_portid[2] = fcp->isp_portid; + rp.rftid_fc4types[FC4_SCSI >> 5] = 1 << (FC4_SCSI & 0x1f); + isp_put_rft_id(isp, &rp, (rft_id_t *)&scp[XTXOFF]); + if (isp->isp_dblev & ISP_LOGDEBUG1) + isp_print_bytes(isp, "CT request", sizeof(rft_id_t), &scp[XTXOFF]); - ISP_MEMZERO(&scp[ZTXOFF], sizeof (ct_hdr_t)); - - MBSINIT(&mbs, MBOX_EXEC_COMMAND_IOCB_A64, MBLOGALL, - MBCMD_DEFAULT_TIMEOUT + pt->ctp_time * 1000000); - mbs.param[1] = QENTRY_LEN; - mbs.param[2] = DMA_WD1(fcp->isp_scdma + CTXOFF); - mbs.param[3] = DMA_WD0(fcp->isp_scdma + CTXOFF); - mbs.param[6] = DMA_WD3(fcp->isp_scdma + CTXOFF); - mbs.param[7] = DMA_WD2(fcp->isp_scdma + CTXOFF); - MEMORYBARRIER(isp, SYNC_SFORDEV, XTXOFF, 2 * QENTRY_LEN, chan); - isp_mboxcmd(isp, &mbs); - if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { + if (isp_ct_passthru(isp, chan, sizeof(rft_id_t), sizeof(ct_hdr_t))) { FC_SCRATCH_RELEASE(isp, chan); return (-1); } - MEMORYBARRIER(isp, SYNC_SFORCPU, ZTXOFF, QENTRY_LEN, chan); - pt = &un.plocal; - isp_get_ct_pt(isp, (isp_ct_pt_t *) &scp[ZTXOFF], pt); - if (isp->isp_dblev & ISP_LOGDEBUG1) { - isp_print_bytes(isp, "IOCB response", QENTRY_LEN, pt); - } - if (pt->ctp_status) { - FC_SCRATCH_RELEASE(isp, chan); - isp_prt(isp, ISP_LOGWARN, - "Chan %d Register FC4 Type CT Passthrough returned 0x%x", - chan, pt->ctp_status); - return (1); - } isp_get_ct_hdr(isp, (ct_hdr_t *) scp, ct); FC_SCRATCH_RELEASE(isp, chan); - if (ct->ct_cmd_resp == LS_RJT) { isp_prt(isp, ISP_LOG_SANCFG|ISP_LOG_WARN1, "Chan %d Register FC4 Type rejected", chan); return (-1); } else if (ct->ct_cmd_resp == LS_ACC) { isp_prt(isp, ISP_LOG_SANCFG, "Chan %d Register FC4 Type accepted", chan); - return (0); } else { isp_prt(isp, ISP_LOGWARN, "Chan %d Register FC4 Type: 0x%x", chan, ct->ct_cmd_resp); return (-1); } + return (0); } static int isp_register_fc4_features_24xx(ispsoftc_t *isp, int chan) { - mbreg_t mbs; fcparam *fcp = FCPARAM(isp, chan); - union { - isp_ct_pt_t plocal; - rff_id_t clocal; - uint8_t q[QENTRY_LEN]; - } un; - isp_ct_pt_t *pt; ct_hdr_t *ct; - rff_id_t *rp; + rff_id_t rp; uint8_t *scp = fcp->isp_scratch; if (FC_SCRATCH_ACQUIRE(isp, chan)) { @@ -4086,91 +4032,38 @@ isp_register_fc4_features_24xx(ispsoftc_t *isp, int chan) return (-1); } - /* - * Build a Passthrough IOCB in memory. - */ - ISP_MEMZERO(un.q, QENTRY_LEN); - pt = &un.plocal; - pt->ctp_header.rqs_entry_count = 1; - pt->ctp_header.rqs_entry_type = RQSTYPE_CT_PASSTHRU; - pt->ctp_handle = 0xffffffff; - pt->ctp_nphdl = fcp->isp_sns_hdl; - pt->ctp_cmd_cnt = 1; - pt->ctp_vpidx = ISP_GET_VPIDX(isp, chan); - pt->ctp_time = 4; - pt->ctp_rsp_cnt = 1; - pt->ctp_rsp_bcnt = sizeof (ct_hdr_t); - pt->ctp_cmd_bcnt = sizeof (rff_id_t); - pt->ctp_dataseg[0].ds_base = DMA_LO32(fcp->isp_scdma+XTXOFF); - pt->ctp_dataseg[0].ds_basehi = DMA_HI32(fcp->isp_scdma+XTXOFF); - pt->ctp_dataseg[0].ds_count = sizeof (rff_id_t); - pt->ctp_dataseg[1].ds_base = DMA_LO32(fcp->isp_scdma); - pt->ctp_dataseg[1].ds_basehi = DMA_HI32(fcp->isp_scdma); - pt->ctp_dataseg[1].ds_count = sizeof (ct_hdr_t); - isp_put_ct_pt(isp, pt, (isp_ct_pt_t *) &scp[CTXOFF]); - if (isp->isp_dblev & ISP_LOGDEBUG1) { - isp_print_bytes(isp, "IOCB CT Request", QENTRY_LEN, pt); - } - /* * Build the CT header and command in memory. * * Note that the CT header has to end up as Big Endian format in memory. */ - ISP_MEMZERO(&un.clocal, sizeof (un.clocal)); - ct = &un.clocal.rffid_hdr; + ISP_MEMZERO(&rp, sizeof(rp)); + ct = &rp.rffid_hdr; ct->ct_revision = CT_REVISION; ct->ct_fcs_type = CT_FC_TYPE_FC; ct->ct_fcs_subtype = CT_FC_SUBTYPE_NS; ct->ct_cmd_resp = SNS_RFF_ID; ct->ct_bcnt_resid = (sizeof (rff_id_t) - sizeof (ct_hdr_t)) >> 2; - rp = &un.clocal; - rp->rffid_portid[0] = fcp->isp_portid >> 16; - rp->rffid_portid[1] = fcp->isp_portid >> 8; - rp->rffid_portid[2] = fcp->isp_portid; - rp->rffid_fc4features = 0; + rp.rffid_portid[0] = fcp->isp_portid >> 16; + rp.rffid_portid[1] = fcp->isp_portid >> 8; + rp.rffid_portid[2] = fcp->isp_portid; + rp.rffid_fc4features = 0; if (fcp->role & ISP_ROLE_TARGET) - rp->rffid_fc4features |= 1; + rp.rffid_fc4features |= 1; if (fcp->role & ISP_ROLE_INITIATOR) - rp->rffid_fc4features |= 2; - rp->rffid_fc4type = FC4_SCSI; - isp_put_rff_id(isp, rp, (rff_id_t *) &scp[XTXOFF]); - if (isp->isp_dblev & ISP_LOGDEBUG1) { - isp_print_bytes(isp, "CT Header", QENTRY_LEN, &scp[XTXOFF]); - } + rp.rffid_fc4features |= 2; + rp.rffid_fc4type = FC4_SCSI; + isp_put_rff_id(isp, &rp, (rff_id_t *)&scp[XTXOFF]); + if (isp->isp_dblev & ISP_LOGDEBUG1) + isp_print_bytes(isp, "CT request", sizeof(rft_id_t), &scp[XTXOFF]); - ISP_MEMZERO(&scp[ZTXOFF], sizeof (ct_hdr_t)); - - MBSINIT(&mbs, MBOX_EXEC_COMMAND_IOCB_A64, MBLOGALL, - MBCMD_DEFAULT_TIMEOUT + pt->ctp_time * 1000000); - mbs.param[1] = QENTRY_LEN; - mbs.param[2] = DMA_WD1(fcp->isp_scdma + CTXOFF); - mbs.param[3] = DMA_WD0(fcp->isp_scdma + CTXOFF); - mbs.param[6] = DMA_WD3(fcp->isp_scdma + CTXOFF); - mbs.param[7] = DMA_WD2(fcp->isp_scdma + CTXOFF); - MEMORYBARRIER(isp, SYNC_SFORDEV, XTXOFF, 2 * QENTRY_LEN, chan); - isp_mboxcmd(isp, &mbs); - if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { + if (isp_ct_passthru(isp, chan, sizeof(rft_id_t), sizeof(ct_hdr_t))) { FC_SCRATCH_RELEASE(isp, chan); return (-1); } - MEMORYBARRIER(isp, SYNC_SFORCPU, ZTXOFF, QENTRY_LEN, chan); - pt = &un.plocal; - isp_get_ct_pt(isp, (isp_ct_pt_t *) &scp[ZTXOFF], pt); - if (isp->isp_dblev & ISP_LOGDEBUG1) { - isp_print_bytes(isp, "IOCB response", QENTRY_LEN, pt); - } - if (pt->ctp_status) { - FC_SCRATCH_RELEASE(isp, chan); - isp_prt(isp, ISP_LOGWARN, - "Chan %d Register FC4 Features CT Passthrough returned 0x%x", - chan, pt->ctp_status); - return (1); - } isp_get_ct_hdr(isp, (ct_hdr_t *) scp, ct); FC_SCRATCH_RELEASE(isp, chan); - if (ct->ct_cmd_resp == LS_RJT) { isp_prt(isp, ISP_LOG_SANCFG|ISP_LOG_WARN1, "Chan %d Register FC4 Features rejected", chan); @@ -4178,12 +4071,12 @@ isp_register_fc4_features_24xx(ispsoftc_t *isp, int chan) } else if (ct->ct_cmd_resp == LS_ACC) { isp_prt(isp, ISP_LOG_SANCFG, "Chan %d Register FC4 Features accepted", chan); - return (0); } else { isp_prt(isp, ISP_LOGWARN, "Chan %d Register FC4 Features: 0x%x", chan, ct->ct_cmd_resp); return (-1); } + return (0); } static uint16_t From 806929d51423488d21e02b4f47526fdb24f103d8 Mon Sep 17 00:00:00 2001 From: "Bjoern A. Zeeb" Date: Sat, 9 Apr 2016 12:05:23 +0000 Subject: [PATCH 101/159] Mfp: r296310,r296343 It looks like as with the safety belt of DELAY() fastened (*) we can completely tear down and free all memory for TCP (after r281599). (*) in theory a few ticks should be good enough to make sure the timers are all really gone. Could we use a better matric here and check a tcbcb count as an optimization? PR: 164763 Reviewed by: gnn, emaste MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D5734 --- sys/netinet/tcp_subr.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c index 56283db05ed..aa242990177 100644 --- a/sys/netinet/tcp_subr.c +++ b/sys/netinet/tcp_subr.c @@ -660,7 +660,7 @@ tcp_init(void) * These have to be type stable for the benefit of the timers. */ V_tcpcb_zone = uma_zcreate("tcpcb", sizeof(struct tcpcb_mem), - NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_NOFREE); + NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); uma_zone_set_max(V_tcpcb_zone, maxsockets); uma_zone_set_warning(V_tcpcb_zone, "kern.ipc.maxsockets limit reached"); @@ -670,7 +670,7 @@ tcp_init(void) TUNABLE_INT_FETCH("net.inet.tcp.sack.enable", &V_tcp_do_sack); V_sack_hole_zone = uma_zcreate("sackhole", sizeof(struct sackhole), - NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_NOFREE); + NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); /* Skip initialization of globals for non-default instances. */ if (!IS_DEFAULT_VNET(curvnet)) @@ -737,10 +737,21 @@ tcp_destroy(void) { int error; + /* + * All our processes are gone, all our sockets should be cleaned + * up, which means, we should be past the tcp_discardcb() calls. + * Sleep to let all tcpcb timers really disappear and then cleanup. + * Timewait will cleanup its queue and will be ready to go. + * XXX-BZ In theory a few ticks should be good enough to make sure + * the timers are all really gone. We should see if we could use a + * better metric here and, e.g., check a tcbcb count as an optimization? + */ + DELAY(1000000 / hz); tcp_hc_destroy(); syncache_destroy(); tcp_tw_destroy(); in_pcbinfo_destroy(&V_tcbinfo); + /* tcp_discardcb() clears the sack_holes up. */ uma_zdestroy(V_sack_hole_zone); uma_zdestroy(V_tcpcb_zone); From 0ff814e85443f21ca752d25a481139db3b300b0e Mon Sep 17 00:00:00 2001 From: Conrad Meyer Date: Sat, 9 Apr 2016 13:15:34 +0000 Subject: [PATCH 102/159] ioat(4): ioat_get_dmaengine(): Add M_WAITOK mode Sponsored by: EMC / Isilon Storage Division --- sys/dev/ioat/ioat.c | 36 +++++++++++++++++++++++++++++++----- sys/dev/ioat/ioat.h | 4 +++- sys/dev/ioat/ioat_internal.h | 1 + sys/dev/ioat/ioat_test.c | 2 +- 4 files changed, 36 insertions(+), 7 deletions(-) diff --git a/sys/dev/ioat/ioat.c b/sys/dev/ioat/ioat.c index bcc4e9a4658..85ceacb6cbc 100644 --- a/sys/dev/ioat/ioat.c +++ b/sys/dev/ioat/ioat.c @@ -314,6 +314,9 @@ ioat_detach(device_t device) mtx_lock(IOAT_REFLK); ioat->quiescing = TRUE; + ioat->destroying = TRUE; + wakeup(&ioat->quiescing); + ioat_channel[ioat->chan_idx] = NULL; ioat_drain_locked(ioat); @@ -739,18 +742,40 @@ ioat_reset_hw_task(void *ctx, int pending __unused) * User API functions */ bus_dmaengine_t -ioat_get_dmaengine(uint32_t index) +ioat_get_dmaengine(uint32_t index, int flags) { - struct ioat_softc *sc; + struct ioat_softc *ioat; + + KASSERT((flags & ~(M_NOWAIT | M_WAITOK)) == 0, + ("invalid flags: 0x%08x", flags)); + KASSERT((flags & (M_NOWAIT | M_WAITOK)) != (M_NOWAIT | M_WAITOK), + ("invalid wait | nowait")); if (index >= ioat_channel_index) return (NULL); - sc = ioat_channel[index]; - if (sc == NULL || sc->quiescing) + ioat = ioat_channel[index]; + if (ioat == NULL || ioat->destroying) return (NULL); - return (&ioat_get(sc, IOAT_DMAENGINE_REF)->dmaengine); + if (ioat->quiescing) { + if ((flags & M_NOWAIT) != 0) + return (NULL); + + mtx_lock(IOAT_REFLK); + while (ioat->quiescing && !ioat->destroying) + msleep(&ioat->quiescing, IOAT_REFLK, 0, "getdma", 0); + mtx_unlock(IOAT_REFLK); + + if (ioat->destroying) + return (NULL); + } + + /* + * There's a race here between the quiescing check and HW reset or + * module destroy. + */ + return (&ioat_get(ioat, IOAT_DMAENGINE_REF)->dmaengine); } void @@ -1571,6 +1596,7 @@ ioat_reset_hw(struct ioat_softc *ioat) out: mtx_lock(IOAT_REFLK); ioat->quiescing = FALSE; + wakeup(&ioat->quiescing); mtx_unlock(IOAT_REFLK); if (error == 0) diff --git a/sys/dev/ioat/ioat.h b/sys/dev/ioat/ioat.h index 3b6e0946ac1..ff056021773 100644 --- a/sys/dev/ioat/ioat.h +++ b/sys/dev/ioat/ioat.h @@ -68,8 +68,10 @@ typedef void (*bus_dmaengine_callback_t)(void *arg, int error); /* * Called first to acquire a reference to the DMA channel + * + * Flags may be M_WAITOK or M_NOWAIT. */ -bus_dmaengine_t ioat_get_dmaengine(uint32_t channel_index); +bus_dmaengine_t ioat_get_dmaengine(uint32_t channel_index, int flags); /* Release the DMA channel */ void ioat_put_dmaengine(bus_dmaengine_t dmaengine); diff --git a/sys/dev/ioat/ioat_internal.h b/sys/dev/ioat/ioat_internal.h index b33faea05fa..85b7316c92f 100644 --- a/sys/dev/ioat/ioat_internal.h +++ b/sys/dev/ioat/ioat_internal.h @@ -410,6 +410,7 @@ struct ioat_softc { struct task reset_task; boolean_t quiescing; + boolean_t destroying; boolean_t is_resize_pending; boolean_t is_completion_pending; boolean_t is_reset_pending; diff --git a/sys/dev/ioat/ioat_test.c b/sys/dev/ioat/ioat_test.c index ee014c09627..7fecd489418 100644 --- a/sys/dev/ioat/ioat_test.c +++ b/sys/dev/ioat/ioat_test.c @@ -388,7 +388,7 @@ ioat_dma_test(void *arg) return; } - dmaengine = ioat_get_dmaengine(test->channel_index); + dmaengine = ioat_get_dmaengine(test->channel_index, M_NOWAIT); if (dmaengine == NULL) { ioat_test_log(0, "Couldn't acquire dmaengine\n"); test->status[IOAT_TEST_NO_DMA_ENGINE]++; From 62d70a8174c9a78bf0caf7a405b5e7c670e28360 Mon Sep 17 00:00:00 2001 From: John Baldwin Date: Sat, 9 Apr 2016 13:58:04 +0000 Subject: [PATCH 103/159] Add more fine-grained kernel options for NUMA support. VM_NUMA_ALLOC is used to enable use of domain-aware memory allocation in the virtual memory system. DEVICE_NUMA is used to enable affinity reporting for devices such as bus_get_domain(). MAXMEMDOM must still be set to a value greater than for any NUMA support to be effective. Note that 'cpuset -gd' always works if MAXMEMDOM is enabled and the system supports NUMA. Reviewed by: kib Differential Revision: https://reviews.freebsd.org/D5782 --- sys/conf/NOTES | 10 +++++++- sys/conf/options | 2 ++ sys/dev/acpica/acpi.c | 4 ++- sys/dev/acpica/acpivar.h | 2 -- sys/kern/kern_cpuset.c | 16 ++++++++---- sys/vm/vm_domain.c | 25 ++++++++++++++++-- sys/vm/vm_pageout.c | 4 +-- sys/vm/vm_phys.c | 22 +++++++++------- sys/vm/vm_phys.h | 2 +- sys/x86/acpica/srat.c | 55 +++++++++++++++++++++++++--------------- 10 files changed, 99 insertions(+), 43 deletions(-) diff --git a/sys/conf/NOTES b/sys/conf/NOTES index 42570fe55b8..ec5618c5af0 100644 --- a/sys/conf/NOTES +++ b/sys/conf/NOTES @@ -229,7 +229,15 @@ options MAXCPU=32 # MAXMEMDOM defines the maximum number of memory domains that can boot in the # system. A default value should already be defined by every architecture. -options MAXMEMDOM=1 +options MAXMEMDOM=2 + +# VM_NUMA_ALLOC enables use of memory domain-aware allocation in the VM +# system. +options VM_NUMA_ALLOC + +# DEVICE_NUMA enables reporting of domain affinity of I/O devices via +# bus_get_domain(), etc. +options DEVICE_NUMA # ADAPTIVE_MUTEXES changes the behavior of blocking mutexes to spin # if the thread that currently owns the mutex is executing on another diff --git a/sys/conf/options b/sys/conf/options index f2fef263f97..2283705d286 100644 --- a/sys/conf/options +++ b/sys/conf/options @@ -90,6 +90,7 @@ COMPAT_LINUXKPI opt_compat.h COMPILING_LINT opt_global.h CY_PCI_FASTINTR DEADLKRES opt_watchdog.h +DEVICE_NUMA EXT_RESOURCES opt_global.h DIRECTIO FILEMON opt_dontuse.h @@ -603,6 +604,7 @@ VM_KMEM_SIZE opt_vm.h VM_KMEM_SIZE_SCALE opt_vm.h VM_KMEM_SIZE_MAX opt_vm.h VM_NRESERVLEVEL opt_vm.h +VM_NUMA_ALLOC opt_vm.h VM_LEVEL_0_ORDER opt_vm.h NO_SWAPPING opt_vm.h MALLOC_MAKE_FAILURES opt_vm.h diff --git a/sys/dev/acpica/acpi.c b/sys/dev/acpica/acpi.c index 6f5a11f8e79..32a07dd58ce 100644 --- a/sys/dev/acpica/acpi.c +++ b/sys/dev/acpica/acpi.c @@ -31,6 +31,8 @@ __FBSDID("$FreeBSD$"); #include "opt_acpi.h" +#include "opt_device_numa.h" + #include #include #include @@ -1083,7 +1085,7 @@ acpi_hint_device_unit(device_t acdev, device_t child, const char *name, int acpi_parse_pxm(device_t dev, int *domain) { -#if MAXMEMDOM > 1 +#ifdef DEVICE_NUMA ACPI_HANDLE h; int d, pxm; diff --git a/sys/dev/acpica/acpivar.h b/sys/dev/acpica/acpivar.h index 4df83d5bcd2..3ee7ab3d6c0 100644 --- a/sys/dev/acpica/acpivar.h +++ b/sys/dev/acpica/acpivar.h @@ -502,9 +502,7 @@ SYSCTL_DECL(_debug_acpi); * * Returns the VM domain ID if found, or -1 if not found / invalid. */ -#if MAXMEMDOM > 1 extern int acpi_map_pxm_to_vm_domainid(int pxm); -#endif extern int acpi_get_domain(device_t dev, device_t child, int *domain); extern int acpi_parse_pxm(device_t dev, int *domain); diff --git a/sys/kern/kern_cpuset.c b/sys/kern/kern_cpuset.c index 4c057cc594a..f0f184b724d 100644 --- a/sys/kern/kern_cpuset.c +++ b/sys/kern/kern_cpuset.c @@ -831,7 +831,7 @@ struct cpuset * cpuset_thread0(void) { struct cpuset *set; - int error; + int error, i; cpuset_zone = uma_zcreate("cpuset", sizeof(struct cpuset), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); @@ -863,9 +863,15 @@ cpuset_thread0(void) */ cpuset_unr = new_unrhdr(2, INT_MAX, NULL); - /* MD Code is responsible for initializing sets if vm_ndomains > 1. */ - if (vm_ndomains == 1) - CPU_COPY(&all_cpus, &cpuset_domain[0]); + /* + * If MD code has not initialized per-domain cpusets, place all + * CPUs in domain 0. + */ + for (i = 0; i < MAXMEMDOM; i++) + if (!CPU_EMPTY(&cpuset_domain[i])) + goto domains_set; + CPU_COPY(&all_cpus, &cpuset_domain[0]); +domains_set: return (set); } @@ -1118,7 +1124,7 @@ sys_cpuset_getaffinity(struct thread *td, struct cpuset_getaffinity_args *uap) error = intr_getaffinity(uap->id, mask); break; case CPU_WHICH_DOMAIN: - if (uap->id < 0 || uap->id >= vm_ndomains) + if (uap->id < 0 || uap->id >= MAXMEMDOM) error = ESRCH; else CPU_COPY(&cpuset_domain[uap->id], mask); diff --git a/sys/vm/vm_domain.c b/sys/vm/vm_domain.c index c042aa7694d..354a22300b9 100644 --- a/sys/vm/vm_domain.c +++ b/sys/vm/vm_domain.c @@ -39,7 +39,7 @@ __FBSDID("$FreeBSD$"); #include #include #include -#if MAXMEMDOM > 1 +#ifdef VM_NUMA_ALLOC #include #endif #include @@ -64,7 +64,7 @@ __FBSDID("$FreeBSD$"); static __inline int vm_domain_rr_selectdomain(int skip_domain) { -#if MAXMEMDOM > 1 +#ifdef VM_NUMA_ALLOC struct thread *td; td = curthread; @@ -188,8 +188,13 @@ vm_domain_policy_validate(const struct vm_domain_policy *vp) return (-1); case VM_POLICY_FIXED_DOMAIN: case VM_POLICY_FIXED_DOMAIN_ROUND_ROBIN: +#ifdef VM_NUMA_ALLOC if (vp->p.domain >= 0 && vp->p.domain < vm_ndomains) return (0); +#else + if (vp->p.domain == 0) + return (0); +#endif return (-1); default: return (-1); @@ -221,6 +226,7 @@ vm_domain_iterator_set(struct vm_domain_iterator *vi, vm_domain_policy_type_t vt, int domain) { +#ifdef VM_NUMA_ALLOC switch (vt) { case VM_POLICY_FIXED_DOMAIN: vi->policy = VM_POLICY_FIXED_DOMAIN; @@ -249,6 +255,10 @@ vm_domain_iterator_set(struct vm_domain_iterator *vi, vi->n = vm_ndomains; break; } +#else + vi->domain = 0; + vi->n = 1; +#endif return (0); } @@ -259,6 +269,8 @@ static inline void _vm_domain_iterator_set_policy(struct vm_domain_iterator *vi, const struct vm_domain_policy *vt) { + +#ifdef VM_NUMA_ALLOC /* * Initialise the iterator. * @@ -300,6 +312,10 @@ _vm_domain_iterator_set_policy(struct vm_domain_iterator *vi, vi->n = vm_ndomains; break; } +#else + vi->domain = 0; + vi->n = 1; +#endif } void @@ -334,6 +350,7 @@ vm_domain_iterator_run(struct vm_domain_iterator *vi, int *domain) if (vi->n <= 0) return (-1); +#ifdef VM_NUMA_ALLOC switch (vi->policy) { case VM_POLICY_FIXED_DOMAIN: case VM_POLICY_FIRST_TOUCH: @@ -358,6 +375,10 @@ vm_domain_iterator_run(struct vm_domain_iterator *vi, int *domain) vi->n--; break; } +#else + *domain = 0; + vi->n--; +#endif return (0); } diff --git a/sys/vm/vm_pageout.c b/sys/vm/vm_pageout.c index b7f68873297..e981e8b67b7 100644 --- a/sys/vm/vm_pageout.c +++ b/sys/vm/vm_pageout.c @@ -1656,12 +1656,12 @@ static void vm_pageout(void) { int error; -#if MAXMEMDOM > 1 +#ifdef VM_NUMA_ALLOC int i; #endif swap_pager_swap_init(); -#if MAXMEMDOM > 1 +#ifdef VM_NUMA_ALLOC for (i = 1; i < vm_ndomains; i++) { error = kthread_add(vm_pageout_worker, (void *)(uintptr_t)i, curproc, NULL, 0, 0, "dom%d", i); diff --git a/sys/vm/vm_phys.c b/sys/vm/vm_phys.c index 3979513bfd9..d2f1edbdb76 100644 --- a/sys/vm/vm_phys.c +++ b/sys/vm/vm_phys.c @@ -48,9 +48,7 @@ __FBSDID("$FreeBSD$"); #include #include #include -#if MAXMEMDOM > 1 #include -#endif #include #include #include @@ -73,8 +71,10 @@ __FBSDID("$FreeBSD$"); _Static_assert(sizeof(long) * NBBY >= VM_PHYSSEG_MAX, "Too many physsegs."); +#ifdef VM_NUMA_ALLOC struct mem_affinity *mem_affinity; int *mem_locality; +#endif int vm_ndomains = 1; @@ -144,7 +144,7 @@ static int sysctl_vm_phys_segs(SYSCTL_HANDLER_ARGS); SYSCTL_OID(_vm, OID_AUTO, phys_segs, CTLTYPE_STRING | CTLFLAG_RD, NULL, 0, sysctl_vm_phys_segs, "A", "Phys Seg Info"); -#if MAXMEMDOM > 1 +#ifdef VM_NUMA_ALLOC static int sysctl_vm_phys_locality(SYSCTL_HANDLER_ARGS); SYSCTL_OID(_vm, OID_AUTO, phys_locality, CTLTYPE_STRING | CTLFLAG_RD, NULL, 0, sysctl_vm_phys_locality, "A", "Phys Locality Info"); @@ -159,7 +159,7 @@ SYSCTL_INT(_vm, OID_AUTO, ndomains, CTLFLAG_RD, static struct mtx vm_default_policy_mtx; MTX_SYSINIT(vm_default_policy, &vm_default_policy_mtx, "default policy mutex", MTX_DEF); -#if MAXMEMDOM > 1 +#ifdef VM_NUMA_ALLOC static struct vm_domain_policy vm_default_policy = VM_DOMAIN_POLICY_STATIC_INITIALISER(VM_POLICY_FIRST_TOUCH_ROUND_ROBIN, 0); #else @@ -277,7 +277,7 @@ vm_phys_fictitious_cmp(struct vm_phys_fictitious_seg *p1, static __inline int vm_rr_selectdomain(void) { -#if MAXMEMDOM > 1 +#ifdef VM_NUMA_ALLOC struct thread *td; td = curthread; @@ -303,13 +303,13 @@ vm_rr_selectdomain(void) static void vm_policy_iterator_init(struct vm_domain_iterator *vi) { -#if MAXMEMDOM > 1 +#ifdef VM_NUMA_ALLOC struct vm_domain_policy lcl; #endif vm_domain_iterator_init(vi); -#if MAXMEMDOM > 1 +#ifdef VM_NUMA_ALLOC /* Copy out the thread policy */ vm_domain_policy_localcopy(&lcl, &curthread->td_vm_dom_policy); if (lcl.p.policy != VM_POLICY_NONE) { @@ -433,7 +433,7 @@ int vm_phys_mem_affinity(int f, int t) { -#if MAXMEMDOM > 1 +#ifdef VM_NUMA_ALLOC if (mem_locality == NULL) return (-1); if (f >= vm_ndomains || t >= vm_ndomains) @@ -444,7 +444,7 @@ vm_phys_mem_affinity(int f, int t) #endif } -#if MAXMEMDOM > 1 +#ifdef VM_NUMA_ALLOC /* * Outputs the VM locality table. */ @@ -520,6 +520,7 @@ _vm_phys_create_seg(vm_paddr_t start, vm_paddr_t end, int domain) static void vm_phys_create_seg(vm_paddr_t start, vm_paddr_t end) { +#ifdef VM_NUMA_ALLOC int i; if (mem_affinity == NULL) { @@ -544,6 +545,9 @@ vm_phys_create_seg(vm_paddr_t start, vm_paddr_t end) mem_affinity[i].domain); start = mem_affinity[i].end; } +#else + _vm_phys_create_seg(start, end, 0); +#endif } /* diff --git a/sys/vm/vm_phys.h b/sys/vm/vm_phys.h index f9c776d0691..ee4aa2de1f1 100644 --- a/sys/vm/vm_phys.h +++ b/sys/vm/vm_phys.h @@ -99,7 +99,7 @@ int vm_phys_mem_affinity(int f, int t); static inline struct vm_domain * vm_phys_domain(vm_page_t m) { -#if MAXMEMDOM > 1 +#ifdef VM_NUMA_ALLOC int domn, segind; /* XXXKIB try to assert that the page is managed */ diff --git a/sys/x86/acpica/srat.c b/sys/x86/acpica/srat.c index 2ec0c329c86..19ed116cb4c 100644 --- a/sys/x86/acpica/srat.c +++ b/sys/x86/acpica/srat.c @@ -28,6 +28,8 @@ #include __FBSDID("$FreeBSD$"); +#include "opt_vm.h" + #include #include #include @@ -62,7 +64,8 @@ int num_mem; static ACPI_TABLE_SRAT *srat; static vm_paddr_t srat_physaddr; -static int vm_domains[VM_PHYSSEG_MAX]; +static int domain_pxm[MAXMEMDOM]; +static int ndomain; static ACPI_TABLE_SLIT *slit; static vm_paddr_t slit_physaddr; @@ -145,8 +148,10 @@ parse_slit(void) acpi_unmap_table(slit); slit = NULL; +#ifdef VM_NUMA_ALLOC /* Tell the VM about it! */ mem_locality = vm_locality_table; +#endif return (0); } @@ -340,48 +345,46 @@ renumber_domains(void) int i, j, slot; /* Enumerate all the domains. */ - vm_ndomains = 0; + ndomain = 0; for (i = 0; i < num_mem; i++) { /* See if this domain is already known. */ - for (j = 0; j < vm_ndomains; j++) { - if (vm_domains[j] >= mem_info[i].domain) + for (j = 0; j < ndomain; j++) { + if (domain_pxm[j] >= mem_info[i].domain) break; } - if (j < vm_ndomains && vm_domains[j] == mem_info[i].domain) + if (j < ndomain && domain_pxm[j] == mem_info[i].domain) continue; /* Insert the new domain at slot 'j'. */ slot = j; - for (j = vm_ndomains; j > slot; j--) - vm_domains[j] = vm_domains[j - 1]; - vm_domains[slot] = mem_info[i].domain; - vm_ndomains++; - if (vm_ndomains > MAXMEMDOM) { - vm_ndomains = 1; + for (j = ndomain; j > slot; j--) + domain_pxm[j] = domain_pxm[j - 1]; + domain_pxm[slot] = mem_info[i].domain; + ndomain++; + if (ndomain > MAXMEMDOM) { + ndomain = 1; printf("SRAT: Too many memory domains\n"); return (EFBIG); } } - /* Renumber each domain to its index in the sorted 'domains' list. */ - for (i = 0; i < vm_ndomains; i++) { + /* Renumber each domain to its index in the sorted 'domain_pxm' list. */ + for (i = 0; i < ndomain; i++) { /* * If the domain is already the right value, no need * to renumber. */ - if (vm_domains[i] == i) + if (domain_pxm[i] == i) continue; /* Walk the cpu[] and mem_info[] arrays to renumber. */ for (j = 0; j < num_mem; j++) - if (mem_info[j].domain == vm_domains[i]) + if (mem_info[j].domain == domain_pxm[i]) mem_info[j].domain = i; for (j = 0; j <= MAX_APIC_ID; j++) - if (cpus[j].enabled && cpus[j].domain == vm_domains[i]) + if (cpus[j].enabled && cpus[j].domain == domain_pxm[i]) cpus[j].domain = i; } - KASSERT(vm_ndomains > 0, - ("renumber_domains: invalid final vm_ndomains setup")); return (0); } @@ -416,8 +419,11 @@ parse_srat(void) return (-1); } +#ifdef VM_NUMA_ALLOC /* Point vm_phys at our memory affinity table. */ + vm_ndomains = ndomain; mem_affinity = mem_info; +#endif return (0); } @@ -495,12 +501,21 @@ acpi_map_pxm_to_vm_domainid(int pxm) { int i; - for (i = 0; i < vm_ndomains; i++) { - if (vm_domains[i] == pxm) + for (i = 0; i < ndomain; i++) { + if (domain_pxm[i] == pxm) return (i); } return (-1); } +#else /* MAXMEMDOM == 1 */ + +int +acpi_map_pxm_to_vm_domainid(int pxm) +{ + + return (-1); +} + #endif /* MAXMEMDOM > 1 */ From 7e53e7accc063b59d0d653d6b3229b71a2850228 Mon Sep 17 00:00:00 2001 From: Alexander Motin Date: Sat, 9 Apr 2016 14:50:47 +0000 Subject: [PATCH 104/159] Register symbolic port/node names in FC name server. This is cosmetics that simplifies identification of new ports on FC switch. It would be good to use target name from CTL here instead of hostname, but it is not passed here through CAM now. MFC after: 2 weeks --- sys/dev/isp/isp.c | 134 ++++++++++++++++++++++++++++++++++++-- sys/dev/isp/isp_freebsd.h | 1 + sys/dev/isp/isp_library.c | 23 +++++++ sys/dev/isp/isp_library.h | 2 + sys/dev/isp/isp_stds.h | 25 +++++++ sys/dev/isp/ispmbox.h | 2 + 6 files changed, 181 insertions(+), 6 deletions(-) diff --git a/sys/dev/isp/isp.c b/sys/dev/isp/isp.c index c4c7d806ff6..5dd47bd811f 100644 --- a/sys/dev/isp/isp.c +++ b/sys/dev/isp/isp.c @@ -126,6 +126,8 @@ static int isp_send_change_request(ispsoftc_t *, int); static int isp_register_fc4_type(ispsoftc_t *, int); static int isp_register_fc4_type_24xx(ispsoftc_t *, int); static int isp_register_fc4_features_24xx(ispsoftc_t *, int); +static int isp_register_port_name_24xx(ispsoftc_t *, int); +static int isp_register_node_name_24xx(ispsoftc_t *, int); static uint16_t isp_next_handle(ispsoftc_t *, uint16_t *); static int isp_fw_state(ispsoftc_t *, int); static void isp_mboxcmd_qnw(ispsoftc_t *, mbreg_t *, int); @@ -3073,6 +3075,8 @@ isp_fclink_test(ispsoftc_t *isp, int chan, int usdelay) r = isp_register_fc4_type_24xx(isp, chan); if (r == 0) isp_register_fc4_features_24xx(isp, chan); + isp_register_port_name_24xx(isp, chan); + isp_register_node_name_24xx(isp, chan); } else { fcp->isp_sns_hdl = SNS_ID; r = isp_register_fc4_type(isp, chan); @@ -3577,8 +3581,6 @@ isp_gid_ft_ct_passthru(ispsoftc_t *isp, int chan) /* * Build the CT header and command in memory. - * - * Note that the CT header has to end up as Big Endian format in memory. */ ISP_MEMZERO(&ct, sizeof (ct)); ct.ct_revision = CT_REVISION; @@ -3982,8 +3984,6 @@ isp_register_fc4_type_24xx(ispsoftc_t *isp, int chan) /* * Build the CT header and command in memory. - * - * Note that the CT header has to end up as Big Endian format in memory. */ ISP_MEMZERO(&rp, sizeof(rp)); ct = &rp.rftid_hdr; @@ -4034,8 +4034,6 @@ isp_register_fc4_features_24xx(ispsoftc_t *isp, int chan) /* * Build the CT header and command in memory. - * - * Note that the CT header has to end up as Big Endian format in memory. */ ISP_MEMZERO(&rp, sizeof(rp)); ct = &rp.rffid_hdr; @@ -4079,6 +4077,130 @@ isp_register_fc4_features_24xx(ispsoftc_t *isp, int chan) return (0); } +static int +isp_register_port_name_24xx(ispsoftc_t *isp, int chan) +{ + fcparam *fcp = FCPARAM(isp, chan); + ct_hdr_t *ct; + rspn_id_t rp; + uint8_t *scp = fcp->isp_scratch; + int len; + + if (FC_SCRATCH_ACQUIRE(isp, chan)) { + isp_prt(isp, ISP_LOGERR, sacq); + return (-1); + } + + /* + * Build the CT header and command in memory. + */ + ISP_MEMZERO(&rp, sizeof(rp)); + ct = &rp.rspnid_hdr; + ct->ct_revision = CT_REVISION; + ct->ct_fcs_type = CT_FC_TYPE_FC; + ct->ct_fcs_subtype = CT_FC_SUBTYPE_NS; + ct->ct_cmd_resp = SNS_RSPN_ID; + rp.rspnid_portid[0] = fcp->isp_portid >> 16; + rp.rspnid_portid[1] = fcp->isp_portid >> 8; + rp.rspnid_portid[2] = fcp->isp_portid; + rp.rspnid_length = 0; + len = offsetof(rspn_id_t, rspnid_name); + mtx_lock(&prison0.pr_mtx); + rp.rspnid_length += sprintf(&scp[XTXOFF + len + rp.rspnid_length], + "%s", prison0.pr_hostname[0] ? prison0.pr_hostname : "FreeBSD"); + mtx_unlock(&prison0.pr_mtx); + rp.rspnid_length += sprintf(&scp[XTXOFF + len + rp.rspnid_length], + ":%s", device_get_nameunit(isp->isp_dev)); + if (chan != 0) { + rp.rspnid_length += sprintf(&scp[XTXOFF + len + + rp.rspnid_length], "/%d", chan); + } + len += rp.rspnid_length; + ct->ct_bcnt_resid = (len - sizeof(ct_hdr_t)) >> 2; + isp_put_rspn_id(isp, &rp, (rspn_id_t *)&scp[XTXOFF]); + if (isp->isp_dblev & ISP_LOGDEBUG1) + isp_print_bytes(isp, "CT request", len, &scp[XTXOFF]); + + if (isp_ct_passthru(isp, chan, len, sizeof(ct_hdr_t))) { + FC_SCRATCH_RELEASE(isp, chan); + return (-1); + } + + isp_get_ct_hdr(isp, (ct_hdr_t *) scp, ct); + FC_SCRATCH_RELEASE(isp, chan); + if (ct->ct_cmd_resp == LS_RJT) { + isp_prt(isp, ISP_LOG_SANCFG|ISP_LOG_WARN1, + "Chan %d Register Symbolic Port Name rejected", chan); + return (-1); + } else if (ct->ct_cmd_resp == LS_ACC) { + isp_prt(isp, ISP_LOG_SANCFG, + "Chan %d Register Symbolic Port Name accepted", chan); + } else { + isp_prt(isp, ISP_LOGWARN, + "Chan %d Register Symbolic Port Name: 0x%x", chan, ct->ct_cmd_resp); + return (-1); + } + return (0); +} + +static int +isp_register_node_name_24xx(ispsoftc_t *isp, int chan) +{ + fcparam *fcp = FCPARAM(isp, chan); + ct_hdr_t *ct; + rsnn_nn_t rp; + uint8_t *scp = fcp->isp_scratch; + int len; + + if (FC_SCRATCH_ACQUIRE(isp, chan)) { + isp_prt(isp, ISP_LOGERR, sacq); + return (-1); + } + + /* + * Build the CT header and command in memory. + */ + ISP_MEMZERO(&rp, sizeof(rp)); + ct = &rp.rsnnnn_hdr; + ct->ct_revision = CT_REVISION; + ct->ct_fcs_type = CT_FC_TYPE_FC; + ct->ct_fcs_subtype = CT_FC_SUBTYPE_NS; + ct->ct_cmd_resp = SNS_RSNN_NN; + MAKE_NODE_NAME_FROM_WWN(rp.rsnnnn_nodename, fcp->isp_wwnn); + rp.rsnnnn_length = 0; + len = offsetof(rsnn_nn_t, rsnnnn_name); + mtx_lock(&prison0.pr_mtx); + rp.rsnnnn_length += sprintf(&scp[XTXOFF + len + rp.rsnnnn_length], + "%s", prison0.pr_hostname[0] ? prison0.pr_hostname : "FreeBSD"); + mtx_unlock(&prison0.pr_mtx); + len += rp.rsnnnn_length; + ct->ct_bcnt_resid = (len - sizeof(ct_hdr_t)) >> 2; + isp_put_rsnn_nn(isp, &rp, (rsnn_nn_t *)&scp[XTXOFF]); + if (isp->isp_dblev & ISP_LOGDEBUG1) + isp_print_bytes(isp, "CT request", len, &scp[XTXOFF]); + + if (isp_ct_passthru(isp, chan, len, sizeof(ct_hdr_t))) { + FC_SCRATCH_RELEASE(isp, chan); + return (-1); + } + + isp_get_ct_hdr(isp, (ct_hdr_t *) scp, ct); + FC_SCRATCH_RELEASE(isp, chan); + if (ct->ct_cmd_resp == LS_RJT) { + isp_prt(isp, ISP_LOG_SANCFG|ISP_LOG_WARN1, + "Chan %d Register Symbolic Node Name rejected", chan); + return (-1); + } else if (ct->ct_cmd_resp == LS_ACC) { + isp_prt(isp, ISP_LOG_SANCFG, + "Chan %d Register Symbolic Node Name accepted", chan); + } else { + isp_prt(isp, ISP_LOGWARN, + "Chan %d Register Symbolic Node Name: 0x%x", chan, ct->ct_cmd_resp); + return (-1); + } + return (0); +} + static uint16_t isp_next_handle(ispsoftc_t *isp, uint16_t *ohp) { diff --git a/sys/dev/isp/isp_freebsd.h b/sys/dev/isp/isp_freebsd.h index 7702ee6fda6..3e770770555 100644 --- a/sys/dev/isp/isp_freebsd.h +++ b/sys/dev/isp/isp_freebsd.h @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include diff --git a/sys/dev/isp/isp_library.c b/sys/dev/isp/isp_library.c index 78c7f6f5144..987e5159d38 100644 --- a/sys/dev/isp/isp_library.c +++ b/sys/dev/isp/isp_library.c @@ -1987,6 +1987,17 @@ isp_put_rft_id(ispsoftc_t *isp, rft_id_t *src, rft_id_t *dst) } } +void +isp_put_rspn_id(ispsoftc_t *isp, rspn_id_t *src, rspn_id_t *dst) +{ +/* int i;*/ + isp_put_ct_hdr(isp, &src->rspnid_hdr, &dst->rspnid_hdr); + ISP_IOZPUT_8(isp, src->rspnid_reserved, &dst->rspnid_reserved); + ISP_IOZPUT_8(isp, src->rspnid_length, &dst->rspnid_length); +/* for (i = 0; i < src->rspnid_length; i++) + ISP_IOZPUT_8(isp, src->rspnid_name[i], &dst->rspnid_name[i]);*/ +} + void isp_put_rff_id(ispsoftc_t *isp, rff_id_t *src, rff_id_t *dst) { @@ -2001,6 +2012,18 @@ isp_put_rff_id(ispsoftc_t *isp, rff_id_t *src, rff_id_t *dst) ISP_IOZPUT_8(isp, src->rffid_fc4type, &dst->rffid_fc4type); } +void +isp_put_rsnn_nn(ispsoftc_t *isp, rsnn_nn_t *src, rsnn_nn_t *dst) +{ + int i; + isp_put_ct_hdr(isp, &src->rsnnnn_hdr, &dst->rsnnnn_hdr); + for (i = 0; i < 8; i++) + ISP_IOZPUT_8(isp, src->rsnnnn_nodename[i], &dst->rsnnnn_nodename[i]); + ISP_IOZPUT_8(isp, src->rsnnnn_length, &dst->rsnnnn_length); +/* for (i = 0; i < src->rsnnnn_length; i++) + ISP_IOZPUT_8(isp, src->rsnnnn_name[i], &dst->rsnnnn_name[i]);*/ +} + void isp_get_ct_hdr(ispsoftc_t *isp, ct_hdr_t *src, ct_hdr_t *dst) { diff --git a/sys/dev/isp/isp_library.h b/sys/dev/isp/isp_library.h index 922a98b00a9..c70b2ccda01 100644 --- a/sys/dev/isp/isp_library.h +++ b/sys/dev/isp/isp_library.h @@ -144,7 +144,9 @@ void isp_get_fc_hdr(ispsoftc_t *, fc_hdr_t *, fc_hdr_t *); void isp_put_fc_hdr(ispsoftc_t *, fc_hdr_t *, fc_hdr_t *); void isp_get_fcp_cmnd_iu(ispsoftc_t *, fcp_cmnd_iu_t *, fcp_cmnd_iu_t *); void isp_put_rft_id(ispsoftc_t *, rft_id_t *, rft_id_t *); +void isp_put_rspn_id(ispsoftc_t *, rspn_id_t *, rspn_id_t *); void isp_put_rff_id(ispsoftc_t *, rff_id_t *, rff_id_t *); +void isp_put_rsnn_nn(ispsoftc_t *, rsnn_nn_t *, rsnn_nn_t *); void isp_get_ct_hdr(ispsoftc_t *isp, ct_hdr_t *, ct_hdr_t *); void isp_put_ct_hdr(ispsoftc_t *isp, ct_hdr_t *, ct_hdr_t *); void isp_put_fcp_rsp_iu(ispsoftc_t *isp, fcp_rsp_iu_t *, fcp_rsp_iu_t *); diff --git a/sys/dev/isp/isp_stds.h b/sys/dev/isp/isp_stds.h index 315870e5536..a83f08f17ff 100644 --- a/sys/dev/isp/isp_stds.h +++ b/sys/dev/isp/isp_stds.h @@ -138,6 +138,19 @@ typedef struct { uint32_t rftid_fc4types[8]; } rft_id_t; +/* + * RSPN_ID Requet CT_IU + * + * Source: INCITS 463-2010 Generic Services 6 Section 5.2.5.32 + */ +typedef struct { + ct_hdr_t rspnid_hdr; + uint8_t rspnid_reserved; + uint8_t rspnid_portid[3]; + uint8_t rspnid_length; + uint8_t rspnid_name[0]; +} rspn_id_t; + /* * RFF_ID Requet CT_IU * @@ -152,6 +165,18 @@ typedef struct { uint8_t rffid_fc4type; } rff_id_t; +/* + * RSNN_NN Requet CT_IU + * + * Source: INCITS 463-2010 Generic Services 6 Section 5.2.5.35 + */ +typedef struct { + ct_hdr_t rsnnnn_hdr; + uint8_t rsnnnn_nodename[8]; + uint8_t rsnnnn_length; + uint8_t rsnnnn_name[0]; +} rsnn_nn_t; + /* * FCP Response IU and bits of interest * Source: NCITS T10, Project 1828D, Revision 02b (aka FCP4r02b) diff --git a/sys/dev/isp/ispmbox.h b/sys/dev/isp/ispmbox.h index 5a1306f64f8..8bd4d1a799e 100644 --- a/sys/dev/isp/ispmbox.h +++ b/sys/dev/isp/ispmbox.h @@ -1548,7 +1548,9 @@ typedef struct { #define SNS_GFF_ID 0x11F #define SNS_GID_FT 0x171 #define SNS_RFT_ID 0x217 +#define SNS_RSPN_ID 0x218 #define SNS_RFF_ID 0x21F +#define SNS_RSNN_NN 0x239 typedef struct { uint16_t snscb_rblen; /* response buffer length (words) */ uint16_t snscb_reserved0; From 4a9f41ec82db6d9f9d8604e48633e8a8ebfe9eb4 Mon Sep 17 00:00:00 2001 From: Jilles Tjoelker Date: Sat, 9 Apr 2016 16:06:13 +0000 Subject: [PATCH 105/159] sh: Fix some unquoted variables in tests. The builtins/getopts1.0 test failed if a single-character file existed in the current directory. --- bin/sh/tests/builtins/getopts1.0 | 8 ++++---- bin/sh/tests/builtins/getopts2.0 | 2 +- bin/sh/tests/builtins/getopts9.0 | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/bin/sh/tests/builtins/getopts1.0 b/bin/sh/tests/builtins/getopts1.0 index 64763bc462c..10d2b59208e 100644 --- a/bin/sh/tests/builtins/getopts1.0 +++ b/bin/sh/tests/builtins/getopts1.0 @@ -3,7 +3,7 @@ printf -- '-1-\n' set -- -abc getopts "ab:" OPTION -echo ${OPTION} +printf '%s\n' "${OPTION}" # In this case 'getopts' should realize that we have not provided the # required argument for "-b". @@ -14,12 +14,12 @@ echo ${OPTION} printf -- '-2-\n' set -- -ab getopts "ab:" OPTION -echo ${OPTION} +printf '%s\n' "${OPTION}" getopts "ab:" OPTION 3>&2 2>&1 >&3 3>&- -echo ${OPTION} +printf '%s\n' "${OPTION}" # The 'shift' is aimed at causing an error. printf -- '-3-\n' shift 1 getopts "ab:" OPTION -echo ${OPTION} +printf '%s\n' "${OPTION}" diff --git a/bin/sh/tests/builtins/getopts2.0 b/bin/sh/tests/builtins/getopts2.0 index 5a5dbe20cb6..1bd2c32db81 100644 --- a/bin/sh/tests/builtins/getopts2.0 +++ b/bin/sh/tests/builtins/getopts2.0 @@ -3,4 +3,4 @@ set - -ax getopts ax option set -C getopts ax option -echo $option +printf '%s\n' "$option" diff --git a/bin/sh/tests/builtins/getopts9.0 b/bin/sh/tests/builtins/getopts9.0 index d23fc432af9..1c35fc68c2d 100644 --- a/bin/sh/tests/builtins/getopts9.0 +++ b/bin/sh/tests/builtins/getopts9.0 @@ -2,8 +2,8 @@ args='-ab' getopts ab opt $args -echo $?:$opt:$OPTARG +printf '%s\n' "$?:$opt:$OPTARG" for dummy in dummy1 dummy2; do getopts ab opt $args - echo $?:$opt:$OPTARG + printf '%s\n' "$?:$opt:$OPTARG" done From 648970d8ebf3feb6b4d4d346a3419aeaea05a81d Mon Sep 17 00:00:00 2001 From: "Pedro F. Giffuni" Date: Sat, 9 Apr 2016 17:37:36 +0000 Subject: [PATCH 106/159] ixl(4): replace 0 with NULL for pointers. Found by devel/coccinelle. Differential Revision: https://reviews.freebsd.org/D5894 Reviewed by: erj --- sys/dev/ixl/if_ixl.c | 4 ++-- sys/dev/ixl/if_ixlv.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/dev/ixl/if_ixl.c b/sys/dev/ixl/if_ixl.c index 2ac5b921882..36d79adb123 100644 --- a/sys/dev/ixl/if_ixl.c +++ b/sys/dev/ixl/if_ixl.c @@ -3380,7 +3380,7 @@ ixl_add_sysctls_eth_stats(struct sysctl_ctx_list *ctx, }; struct ixl_sysctl_info *entry = ctls; - while (entry->stat != 0) + while (entry->stat != NULL) { SYSCTL_ADD_UQUAD(ctx, child, OID_AUTO, entry->name, CTLFLAG_RD, entry->stat, @@ -3439,7 +3439,7 @@ ixl_add_sysctls_mac_stats(struct sysctl_ctx_list *ctx, }; struct ixl_sysctl_info *entry = ctls; - while (entry->stat != 0) + while (entry->stat != NULL) { SYSCTL_ADD_UQUAD(ctx, stat_list, OID_AUTO, entry->name, CTLFLAG_RD, entry->stat, diff --git a/sys/dev/ixl/if_ixlv.c b/sys/dev/ixl/if_ixlv.c index 51d4e952965..8c4a901a663 100644 --- a/sys/dev/ixl/if_ixlv.c +++ b/sys/dev/ixl/if_ixlv.c @@ -2832,7 +2832,7 @@ ixlv_add_sysctls(struct ixlv_sc *sc) {0,0,0} }; struct ixl_sysctl_info *entry = ctls; - while (entry->stat != 0) + while (entry->stat != NULL) { SYSCTL_ADD_QUAD(ctx, child, OID_AUTO, entry->name, CTLFLAG_RD, entry->stat, From 3cd7f4295fb1593650bb004734a39748625ead3d Mon Sep 17 00:00:00 2001 From: "Pedro F. Giffuni" Date: Sat, 9 Apr 2016 18:08:21 +0000 Subject: [PATCH 107/159] libfetch: replace 0 with NULL for pointers. Found with devel/coccinelle. Reviewed by: des --- lib/libfetch/ftp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/libfetch/ftp.c b/lib/libfetch/ftp.c index 4e650b93c0a..dd58c0dbd7b 100644 --- a/lib/libfetch/ftp.c +++ b/lib/libfetch/ftp.c @@ -929,7 +929,7 @@ ftp_authenticate(conn_t *conn, struct url *url, struct url *purl) if (*pwd == '\0') pwd = getenv("FTP_PASSWORD"); if (pwd == NULL || *pwd == '\0') { - if ((logname = getlogin()) == 0) + if ((logname = getlogin()) == NULL) logname = FTP_ANONYMOUS_USER; if ((len = snprintf(pbuf, MAXLOGNAME + 1, "%s@", logname)) < 0) len = 0; From d18146c299747a6775278f941a9ee094796fd0ca Mon Sep 17 00:00:00 2001 From: "Pedro F. Giffuni" Date: Sat, 9 Apr 2016 18:09:10 +0000 Subject: [PATCH 108/159] libpam: replace 0 with NULL for pointers. Found with devel/coccinelle. Reviewed by: des --- lib/libpam/modules/pam_krb5/pam_krb5.c | 2 +- lib/libpam/modules/pam_login_access/login_access.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/libpam/modules/pam_krb5/pam_krb5.c b/lib/libpam/modules/pam_krb5/pam_krb5.c index 19592e3fcdf..8c72e288315 100644 --- a/lib/libpam/modules/pam_krb5/pam_krb5.c +++ b/lib/libpam/modules/pam_krb5/pam_krb5.c @@ -860,7 +860,7 @@ verify_krb_v5_tgt(krb5_context context, krb5_ccache ccache, services[0] = "host"; services[1] = pam_service; services[2] = NULL; - keyblock = 0; + keyblock = NULL; retval = -1; for (service = &services[0]; *service != NULL; service++) { retval = krb5_sname_to_principal(context, NULL, *service, diff --git a/lib/libpam/modules/pam_login_access/login_access.c b/lib/libpam/modules/pam_login_access/login_access.c index dacb9d7c432..9b6d2579833 100644 --- a/lib/libpam/modules/pam_login_access/login_access.c +++ b/lib/libpam/modules/pam_login_access/login_access.c @@ -124,7 +124,7 @@ list_match(char *list, const char *item, * the match is affected by any exceptions. */ - for (tok = strtok(list, sep); tok != 0; tok = strtok((char *) 0, sep)) { + for (tok = strtok(list, sep); tok != NULL; tok = strtok((char *) 0, sep)) { if (strcasecmp(tok, "EXCEPT") == 0) /* EXCEPT: give up */ break; if ((match = (*match_fn)(tok, item)) != 0) /* YES */ @@ -135,7 +135,7 @@ list_match(char *list, const char *item, if (match != NO) { while ((tok = strtok((char *) 0, sep)) && strcasecmp(tok, "EXCEPT")) /* VOID */ ; - if (tok == 0 || list_match((char *) 0, item, match_fn) == NO) + if (tok == NULL || list_match((char *) 0, item, match_fn) == NO) return (match); } return (NO); From 4cace9ebf6f09bca66e4d75235eb3e652afcdd91 Mon Sep 17 00:00:00 2001 From: Alexander Motin Date: Sat, 9 Apr 2016 18:39:57 +0000 Subject: [PATCH 109/159] Add couple new constants from SPC5r08. --- sys/cam/scsi/scsi_all.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sys/cam/scsi/scsi_all.h b/sys/cam/scsi/scsi_all.h index f2b4b21d4fc..997a58c98ad 100644 --- a/sys/cam/scsi/scsi_all.h +++ b/sys/cam/scsi/scsi_all.h @@ -2291,6 +2291,8 @@ struct scsi_vpd_id_descriptor #define SVPD_ID_TYPE_LUNGRP 0x06 #define SVPD_ID_TYPE_MD5_LUN_ID 0x07 #define SVPD_ID_TYPE_SCSI_NAME 0x08 +#define SVPD_ID_TYPE_PROTO 0x09 +#define SVPD_ID_TYPE_UUID 0x0a #define SVPD_ID_TYPE_MASK 0x0f u_int8_t reserved; u_int8_t length; From 14eaf4448c20c5e001578ca93abfd2ddf38d69f8 Mon Sep 17 00:00:00 2001 From: "Pedro F. Giffuni" Date: Sat, 9 Apr 2016 18:52:09 +0000 Subject: [PATCH 110/159] libedit: replace 0 with NULL for pointers. Found with devel/coccinelle. Reviewed by: Christos Zoulas --- lib/libedit/filecomplete.c | 4 ++-- lib/libedit/vi.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/libedit/filecomplete.c b/lib/libedit/filecomplete.c index 10d44e44ebd..452730233a2 100644 --- a/lib/libedit/filecomplete.c +++ b/lib/libedit/filecomplete.c @@ -471,7 +471,7 @@ fn_complete(EditLine *el, /* these can be used by function called in completion_matches() */ /* or (*attempted_completion_function)() */ - if (point != 0) + if (point != NULL) *point = (int)(li->cursor - li->buffer); if (end != NULL) *end = (int)(li->lastchar - li->buffer); @@ -483,7 +483,7 @@ fn_complete(EditLine *el, &el->el_scratch), cur_off - (int)len, cur_off); } else - matches = 0; + matches = NULL; if (!attempted_completion_function || (over != NULL && !*over && !matches)) matches = completion_matches( diff --git a/lib/libedit/vi.c b/lib/libedit/vi.c index 0a426fd999d..6b0a775c652 100644 --- a/lib/libedit/vi.c +++ b/lib/libedit/vi.c @@ -1088,7 +1088,7 @@ vi_history_word(EditLine *el, Int c __attribute__((__unused__))) if (wp == NULL) return CC_ERROR; - wep = wsp = 0; + wep = wsp = NULL; do { while (Isspace(*wp)) wp++; @@ -1101,7 +1101,7 @@ vi_history_word(EditLine *el, Int c __attribute__((__unused__))) } while ((!el->el_state.doingarg || --el->el_state.argument > 0) && *wp != 0); - if (wsp == 0 || (el->el_state.doingarg && el->el_state.argument != 0)) + if (wsp == NULL || (el->el_state.doingarg && el->el_state.argument != 0)) return CC_ERROR; cv_undo(el); From 62b10973b18e281af011897c3cf87576edbf9728 Mon Sep 17 00:00:00 2001 From: Ian Lepore Date: Sat, 9 Apr 2016 19:09:06 +0000 Subject: [PATCH 111/159] Align the start of the text segment to an 8-byte boundary. This fixes alignment aborts in ubldr.bin for RPi that started happening with clang 3.8 (earlier clang apparently didn't generate strd instructions that trigger the alignment fault). The abort happened in ubldr.bin and not ubldr (elf version) because the elf headers are 0xf4 bytes long, and stripping them off left everything 4-byte aligned. While here, also stop aligning the data segment to a page boundary, align it to 8 bytes instead (aligning to a page just needlessly makes the file bigger); pointed out by andrew@. --- sys/boot/arm/uboot/ldscript.arm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sys/boot/arm/uboot/ldscript.arm b/sys/boot/arm/uboot/ldscript.arm index 1eb10a8ee13..8eb604c8888 100644 --- a/sys/boot/arm/uboot/ldscript.arm +++ b/sys/boot/arm/uboot/ldscript.arm @@ -6,6 +6,7 @@ SECTIONS { /* Read-only sections, merged into text segment: */ . = UBLDR_LOADADDR + SIZEOF_HEADERS; + . = ALIGN(8); .text : { *(.text) @@ -47,8 +48,8 @@ SECTIONS .rodata1 : { *(.rodata1) } .sdata2 : { *(.sdata2) } .sbss2 : { *(.sbss2) } - /* Adjust the address for the data segment to the next page up. */ - . = ((. + 0x1000) & ~(0x1000 - 1)); + /* Adjust the address for the data segment to the doubleword boundary. */ + . = ALIGN(8); .data : { *(.data) From 41e0d6d109748753e7499358bb0e13e806e3d7f5 Mon Sep 17 00:00:00 2001 From: Alexander Motin Date: Sat, 9 Apr 2016 19:49:40 +0000 Subject: [PATCH 112/159] 6418 zpool should have a label clearing command Reviewed by: Yuri Pankov Reviewed by: Matthew Ahrens Reviewed by: George Wilson Author: Will Andrews Closes #83 Closes #32 --- cmd/zdb/zdb.c | 5 +- cmd/zpool/zpool_main.c | 155 +++++++++++++++++++++++++++++- cmd/zpool/zpool_vdev.c | 8 +- lib/libzfs/common/libzfs.h | 5 +- lib/libzfs/common/libzfs_import.c | 16 ++- lib/libzfs/common/libzfs_pool.c | 51 +++++++--- uts/common/sys/fs/zfs.h | 4 + 7 files changed, 211 insertions(+), 33 deletions(-) diff --git a/cmd/zdb/zdb.c b/cmd/zdb/zdb.c index 0610214e482..2ef491a9818 100644 --- a/cmd/zdb/zdb.c +++ b/cmd/zdb/zdb.c @@ -2131,10 +2131,11 @@ dump_label(const char *dev) uint64_t psize, ashift; int len = strlen(dev) + 1; - if (strncmp(dev, "/dev/dsk/", 9) == 0) { + if (strncmp(dev, ZFS_DISK_ROOTD, strlen(ZFS_DISK_ROOTD)) == 0) { len++; path = malloc(len); - (void) snprintf(path, len, "%s%s", "/dev/rdsk/", dev + 9); + (void) snprintf(path, len, "%s%s", ZFS_RDISK_ROOTD, + dev + strlen(ZFS_DISK_ROOTD)); } else { path = strdup(dev); } diff --git a/cmd/zpool/zpool_main.c b/cmd/zpool/zpool_main.c index cef01c1b0b3..82b9672a44c 100644 --- a/cmd/zpool/zpool_main.c +++ b/cmd/zpool/zpool_main.c @@ -21,11 +21,11 @@ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright 2011 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2011, 2015 by Delphix. All rights reserved. * Copyright (c) 2012 by Frederik Wessels. All rights reserved. * Copyright (c) 2013 by Prasad Joshi (sTec). All rights reserved. * Copyright 2016 Igor Kozhukhov . + * Copyright 2016 Nexenta Systems, Inc. */ #include @@ -62,6 +62,7 @@ static int zpool_do_destroy(int, char **); static int zpool_do_add(int, char **); static int zpool_do_remove(int, char **); +static int zpool_do_labelclear(int, char **); static int zpool_do_list(int, char **); static int zpool_do_iostat(int, char **); @@ -121,6 +122,7 @@ typedef enum { HELP_HISTORY, HELP_IMPORT, HELP_IOSTAT, + HELP_LABELCLEAR, HELP_LIST, HELP_OFFLINE, HELP_ONLINE, @@ -159,6 +161,8 @@ static zpool_command_t command_table[] = { { "add", zpool_do_add, HELP_ADD }, { "remove", zpool_do_remove, HELP_REMOVE }, { NULL }, + { "labelclear", zpool_do_labelclear, HELP_LABELCLEAR }, + { NULL }, { "list", zpool_do_list, HELP_LIST }, { "iostat", zpool_do_iostat, HELP_IOSTAT }, { "status", zpool_do_status, HELP_STATUS }, @@ -228,6 +232,8 @@ get_usage(zpool_help_t idx) case HELP_IOSTAT: return (gettext("\tiostat [-v] [-T d|u] [pool] ... [interval " "[count]]\n")); + case HELP_LABELCLEAR: + return (gettext("\tlabelclear [-f] \n")); case HELP_LIST: return (gettext("\tlist [-Hp] [-o property[,...]] " "[-T d|u] [pool] ... [interval [count]]\n")); @@ -617,6 +623,149 @@ zpool_do_remove(int argc, char **argv) return (ret); } +/* + * zpool labelclear [-f] + * + * -f Force clearing the label for the vdevs which are members of + * the exported or foreign pools. + * + * Verifies that the vdev is not active and zeros out the label information + * on the device. + */ +int +zpool_do_labelclear(int argc, char **argv) +{ + char vdev[MAXPATHLEN]; + char *name = NULL; + struct stat st; + int c, fd, ret = 0; + nvlist_t *config; + pool_state_t state; + boolean_t inuse = B_FALSE; + boolean_t force = B_FALSE; + + /* check options */ + while ((c = getopt(argc, argv, "f")) != -1) { + switch (c) { + case 'f': + force = B_TRUE; + break; + default: + (void) fprintf(stderr, gettext("invalid option '%c'\n"), + optopt); + usage(B_FALSE); + } + } + + argc -= optind; + argv += optind; + + /* get vdev name */ + if (argc < 1) { + (void) fprintf(stderr, gettext("missing vdev name\n")); + usage(B_FALSE); + } + if (argc > 1) { + (void) fprintf(stderr, gettext("too many arguments\n")); + usage(B_FALSE); + } + + /* + * Check if we were given absolute path and use it as is. + * Otherwise if the provided vdev name doesn't point to a file, + * try prepending dsk path and appending s0. + */ + (void) strlcpy(vdev, argv[0], sizeof (vdev)); + if (vdev[0] != '/' && stat(vdev, &st) != 0) { + char *s; + + (void) snprintf(vdev, sizeof (vdev), "%s/%s", + ZFS_DISK_ROOT, argv[0]); + if ((s = strrchr(argv[0], 's')) == NULL || + !isdigit(*(s + 1))) + (void) strlcat(vdev, "s0", sizeof (vdev)); + if (stat(vdev, &st) != 0) { + (void) fprintf(stderr, gettext( + "failed to find device %s, try specifying absolute " + "path instead\n"), argv[0]); + return (1); + } + } + + if ((fd = open(vdev, O_RDWR)) < 0) { + (void) fprintf(stderr, gettext("failed to open %s: %s\n"), + vdev, strerror(errno)); + return (1); + } + + if (zpool_read_label(fd, &config) != 0 || config == NULL) { + (void) fprintf(stderr, + gettext("failed to read label from %s\n"), vdev); + return (1); + } + nvlist_free(config); + + ret = zpool_in_use(g_zfs, fd, &state, &name, &inuse); + if (ret != 0) { + (void) fprintf(stderr, + gettext("failed to check state for %s\n"), vdev); + return (1); + } + + if (!inuse) + goto wipe_label; + + switch (state) { + default: + case POOL_STATE_ACTIVE: + case POOL_STATE_SPARE: + case POOL_STATE_L2CACHE: + (void) fprintf(stderr, gettext( + "%s is a member (%s) of pool \"%s\"\n"), + vdev, zpool_pool_state_to_name(state), name); + ret = 1; + goto errout; + + case POOL_STATE_EXPORTED: + if (force) + break; + (void) fprintf(stderr, gettext( + "use '-f' to override the following error:\n" + "%s is a member of exported pool \"%s\"\n"), + vdev, name); + ret = 1; + goto errout; + + case POOL_STATE_POTENTIALLY_ACTIVE: + if (force) + break; + (void) fprintf(stderr, gettext( + "use '-f' to override the following error:\n" + "%s is a member of potentially active pool \"%s\"\n"), + vdev, name); + ret = 1; + goto errout; + + case POOL_STATE_DESTROYED: + /* inuse should never be set for a destroyed pool */ + assert(0); + break; + } + +wipe_label: + ret = zpool_clear_label(fd); + if (ret != 0) { + (void) fprintf(stderr, + gettext("failed to clear label for %s\n"), vdev); + } + +errout: + free(name); + (void) close(fd); + + return (ret); +} + /* * zpool create [-fnd] [-o property=value] ... * [-O file-system-property=value] ... @@ -1179,7 +1328,7 @@ print_status_config(zpool_handle_t *zhp, const char *name, nvlist_t *nv, char *vname; uint64_t notpresent; spare_cbdata_t cb; - char *state; + const char *state; if (nvlist_lookup_nvlist_array(nv, ZPOOL_CONFIG_CHILDREN, &child, &children) != 0) @@ -1945,7 +2094,7 @@ zpool_do_import(int argc, char **argv) if (searchdirs == NULL) { searchdirs = safe_malloc(sizeof (char *)); - searchdirs[0] = "/dev/dsk"; + searchdirs[0] = ZFS_DISK_ROOT; nsearch = 1; } diff --git a/cmd/zpool/zpool_vdev.c b/cmd/zpool/zpool_vdev.c index cd496d0f26e..3de8a9e2b5e 100644 --- a/cmd/zpool/zpool_vdev.c +++ b/cmd/zpool/zpool_vdev.c @@ -79,8 +79,6 @@ #include "zpool_util.h" -#define DISK_ROOT "/dev/dsk" -#define RDISK_ROOT "/dev/rdsk" #define BACKUP_SLICE "s2" /* @@ -367,7 +365,7 @@ is_whole_disk(const char *arg) char path[MAXPATHLEN]; (void) snprintf(path, sizeof (path), "%s%s%s", - RDISK_ROOT, strrchr(arg, '/'), BACKUP_SLICE); + ZFS_RDISK_ROOT, strrchr(arg, '/'), BACKUP_SLICE); if ((fd = open(path, O_RDWR | O_NDELAY)) < 0) return (B_FALSE); if (efi_alloc_and_init(fd, EFI_NUMPAR, &label) != 0) { @@ -423,7 +421,7 @@ make_leaf_vdev(const char *arg, uint64_t is_log) * /dev/dsk/. As part of this check, see if we've been given a * an entire disk (minus the slice number). */ - (void) snprintf(path, sizeof (path), "%s/%s", DISK_ROOT, + (void) snprintf(path, sizeof (path), "%s/%s", ZFS_DISK_ROOT, arg); wholedisk = is_whole_disk(path); if (!wholedisk && (stat64(path, &statbuf) != 0)) { @@ -437,7 +435,7 @@ make_leaf_vdev(const char *arg, uint64_t is_log) if (errno == ENOENT) { (void) fprintf(stderr, gettext("cannot open '%s': no such " - "device in %s\n"), arg, DISK_ROOT); + "device in %s\n"), arg, ZFS_DISK_ROOT); (void) fprintf(stderr, gettext("must be a full path or " "shorthand device name\n")); diff --git a/lib/libzfs/common/libzfs.h b/lib/libzfs/common/libzfs.h index 68f9f6fd4c4..3cbfe35d528 100644 --- a/lib/libzfs/common/libzfs.h +++ b/lib/libzfs/common/libzfs.h @@ -210,7 +210,8 @@ extern zpool_handle_t *zpool_open_canfail(libzfs_handle_t *, const char *); extern void zpool_close(zpool_handle_t *); extern const char *zpool_get_name(zpool_handle_t *); extern int zpool_get_state(zpool_handle_t *); -extern char *zpool_state_to_name(vdev_state_t, vdev_aux_t); +extern const char *zpool_state_to_name(vdev_state_t, vdev_aux_t); +extern const char *zpool_pool_state_to_name(pool_state_t); extern void zpool_free_handles(libzfs_handle_t *); /* @@ -261,7 +262,7 @@ extern nvlist_t *zpool_find_vdev(zpool_handle_t *, const char *, boolean_t *, boolean_t *, boolean_t *); extern nvlist_t *zpool_find_vdev_by_physpath(zpool_handle_t *, const char *, boolean_t *, boolean_t *, boolean_t *); -extern int zpool_label_disk(libzfs_handle_t *, zpool_handle_t *, char *); +extern int zpool_label_disk(libzfs_handle_t *, zpool_handle_t *, const char *); /* * Functions to manage pool properties diff --git a/lib/libzfs/common/libzfs_import.c b/lib/libzfs/common/libzfs_import.c index 032cd11c8c6..16c26810135 100644 --- a/lib/libzfs/common/libzfs_import.c +++ b/lib/libzfs/common/libzfs_import.c @@ -20,10 +20,10 @@ */ /* - * Copyright 2015 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2013 by Delphix. All rights reserved. * Copyright 2015 RackTop Systems. + * Copyright 2016 Nexenta Systems, Inc. */ /* @@ -1084,9 +1084,7 @@ zpool_open_func(void *arg) } /* - * Given a file descriptor, clear (zero) the label information. This function - * is currently only used in the appliance stack as part of the ZFS sysevent - * module. + * Given a file descriptor, clear (zero) the label information. */ int zpool_clear_label(int fd) @@ -1131,7 +1129,7 @@ zpool_find_import_impl(libzfs_handle_t *hdl, importargs_t *iarg) char *end, **dir = iarg->path; size_t pathleft; nvlist_t *ret = NULL; - static char *default_dir = "/dev/dsk"; + static char *default_dir = ZFS_DISK_ROOT; pool_list_t pools = { 0 }; pool_entry_t *pe, *penext; vdev_entry_t *ve, *venext; @@ -1153,7 +1151,7 @@ zpool_find_import_impl(libzfs_handle_t *hdl, importargs_t *iarg) */ for (i = 0; i < dirs; i++) { tpool_t *t; - char *rdsk; + char rdsk[MAXPATHLEN]; int dfd; boolean_t config_failed = B_FALSE; DIR *dirp; @@ -1174,10 +1172,10 @@ zpool_find_import_impl(libzfs_handle_t *hdl, importargs_t *iarg) * reading the labels skips a bunch of slow operations during * close(2) processing, so we replace /dev/dsk with /dev/rdsk. */ - if (strcmp(path, "/dev/dsk/") == 0) - rdsk = "/dev/rdsk/"; + if (strcmp(path, ZFS_DISK_ROOTD) == 0) + (void) strlcpy(rdsk, ZFS_RDISK_ROOTD, sizeof (rdsk)); else - rdsk = path; + (void) strlcpy(rdsk, path, sizeof (rdsk)); if ((dfd = open64(rdsk, O_RDONLY)) < 0 || (dirp = fdopendir(dfd)) == NULL) { diff --git a/lib/libzfs/common/libzfs_pool.c b/lib/libzfs/common/libzfs_pool.c index 1f3ab8c3e96..40cb966f6f4 100644 --- a/lib/libzfs/common/libzfs_pool.c +++ b/lib/libzfs/common/libzfs_pool.c @@ -20,10 +20,10 @@ */ /* - * Copyright 2015 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2011, 2015 by Delphix. All rights reserved. * Copyright (c) 2013, Joyent, Inc. All rights reserved. + * Copyright 2016 Nexenta Systems, Inc. */ #include @@ -49,8 +49,6 @@ static int read_efi_label(nvlist_t *config, diskaddr_t *sb); -#define DISK_ROOT "/dev/dsk" -#define RDISK_ROOT "/dev/rdsk" #define BACKUP_SLICE "s2" typedef struct prop_flags { @@ -179,7 +177,7 @@ zpool_get_prop_int(zpool_handle_t *zhp, zpool_prop_t prop, zprop_source_t *src) /* * Map VDEV STATE to printed strings. */ -char * +const char * zpool_state_to_name(vdev_state_t state, vdev_aux_t aux) { switch (state) { @@ -206,6 +204,34 @@ zpool_state_to_name(vdev_state_t state, vdev_aux_t aux) return (gettext("UNKNOWN")); } +/* + * Map POOL STATE to printed strings. + */ +const char * +zpool_pool_state_to_name(pool_state_t state) +{ + switch (state) { + case POOL_STATE_ACTIVE: + return (gettext("ACTIVE")); + case POOL_STATE_EXPORTED: + return (gettext("EXPORTED")); + case POOL_STATE_DESTROYED: + return (gettext("DESTROYED")); + case POOL_STATE_SPARE: + return (gettext("SPARE")); + case POOL_STATE_L2CACHE: + return (gettext("L2CACHE")); + case POOL_STATE_UNINITIALIZED: + return (gettext("UNINITIALIZED")); + case POOL_STATE_UNAVAIL: + return (gettext("UNAVAIL")); + case POOL_STATE_POTENTIALLY_ACTIVE: + return (gettext("POTENTIALLY_ACTIVE")); + } + + return (gettext("UNKNOWN")); +} + /* * Get a zpool property value for 'prop' and return the value in * a pre-allocated buffer. @@ -2127,7 +2153,8 @@ zpool_find_vdev(zpool_handle_t *zhp, const char *path, boolean_t *avail_spare, } else if (zpool_vdev_is_interior(path)) { verify(nvlist_add_string(search, ZPOOL_CONFIG_TYPE, path) == 0); } else if (path[0] != '/') { - (void) snprintf(buf, sizeof (buf), "%s%s", "/dev/dsk/", path); + (void) snprintf(buf, sizeof (buf), "%s/%s", ZFS_DISK_ROOT, + path); verify(nvlist_add_string(search, ZPOOL_CONFIG_PATH, buf) == 0); } else { verify(nvlist_add_string(search, ZPOOL_CONFIG_PATH, path) == 0); @@ -2309,7 +2336,7 @@ zpool_relabel_disk(libzfs_handle_t *hdl, const char *name) "efi_use_whole_disk")) == NULL) return (-1); - (void) snprintf(path, sizeof (path), "%s/%s", RDISK_ROOT, name); + (void) snprintf(path, sizeof (path), "%s/%s", ZFS_RDISK_ROOT, name); if ((fd = open(path, O_RDWR | O_NDELAY)) < 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "cannot " @@ -2384,7 +2411,7 @@ zpool_vdev_online(zpool_handle_t *zhp, const char *path, int flags, } if (wholedisk) { - pathname += strlen(DISK_ROOT) + 1; + pathname += strlen(ZFS_DISK_ROOT) + 1; (void) zpool_relabel_disk(hdl, pathname); } } @@ -3350,8 +3377,8 @@ zpool_vdev_name(libzfs_handle_t *hdl, zpool_handle_t *zhp, nvlist_t *nv, devid_str_free(newdevid); } - if (strncmp(path, "/dev/dsk/", 9) == 0) - path += 9; + if (strncmp(path, ZFS_DISK_ROOTD, strlen(ZFS_DISK_ROOTD)) == 0) + path += strlen(ZFS_DISK_ROOTD); if (nvlist_lookup_uint64(nv, ZPOOL_CONFIG_WHOLE_DISK, &value) == 0 && value) { @@ -3773,7 +3800,7 @@ read_efi_label(nvlist_t *config, diskaddr_t *sb) if (nvlist_lookup_string(config, ZPOOL_CONFIG_PATH, &path) != 0) return (err); - (void) snprintf(diskname, sizeof (diskname), "%s%s", RDISK_ROOT, + (void) snprintf(diskname, sizeof (diskname), "%s%s", ZFS_RDISK_ROOT, strrchr(path, '/')); if ((fd = open(diskname, O_RDONLY|O_NDELAY)) >= 0) { struct dk_gpt *vtoc; @@ -3826,7 +3853,7 @@ find_start_block(nvlist_t *config) * stripped of any leading /dev path. */ int -zpool_label_disk(libzfs_handle_t *hdl, zpool_handle_t *zhp, char *name) +zpool_label_disk(libzfs_handle_t *hdl, zpool_handle_t *zhp, const char *name) { char path[MAXPATHLEN]; struct dk_gpt *vtoc; @@ -3856,7 +3883,7 @@ zpool_label_disk(libzfs_handle_t *hdl, zpool_handle_t *zhp, char *name) start_block = NEW_START_BLOCK; } - (void) snprintf(path, sizeof (path), "%s/%s%s", RDISK_ROOT, name, + (void) snprintf(path, sizeof (path), "%s/%s%s", ZFS_RDISK_ROOT, name, BACKUP_SLICE); if ((fd = open(path, O_RDWR | O_NDELAY)) < 0) { diff --git a/uts/common/sys/fs/zfs.h b/uts/common/sys/fs/zfs.h index 6301f25087a..e0dcd4f5a1f 100644 --- a/uts/common/sys/fs/zfs.h +++ b/uts/common/sys/fs/zfs.h @@ -767,6 +767,10 @@ typedef struct ddt_histogram { #define ZVOL_DRIVER "zvol" #define ZFS_DRIVER "zfs" #define ZFS_DEV "/dev/zfs" +#define ZFS_DISK_ROOT "/dev/dsk" +#define ZFS_DISK_ROOTD ZFS_DISK_ROOT "/" +#define ZFS_RDISK_ROOT "/dev/rdsk" +#define ZFS_RDISK_ROOTD ZFS_RDISK_ROOT "/" /* general zvol path */ #define ZVOL_DIR "/dev/zvol" From 74136dc30084bec90b02f3a4183bec0fe7a44afe Mon Sep 17 00:00:00 2001 From: "Pedro F. Giffuni" Date: Sat, 9 Apr 2016 20:05:39 +0000 Subject: [PATCH 113/159] sh(1): replace 0 with NULL for pointers. Found with devel/coccinelle. Reviewed by: jilles --- bin/sh/miscbltin.c | 2 +- bin/sh/parser.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/sh/miscbltin.c b/bin/sh/miscbltin.c index 1537196709c..56ecae8a9f8 100644 --- a/bin/sh/miscbltin.c +++ b/bin/sh/miscbltin.c @@ -341,7 +341,7 @@ umaskcmd(int argc __unused, char **argv __unused) } else { void *set; INTOFF; - if ((set = setmode (ap)) == 0) + if ((set = setmode (ap)) == NULL) error("Illegal number: %s", ap); mask = getmode (set, ~mask & 0777); diff --git a/bin/sh/parser.c b/bin/sh/parser.c index da6defdb2c7..3f9732cbbff 100644 --- a/bin/sh/parser.c +++ b/bin/sh/parser.c @@ -628,7 +628,7 @@ simplecmd(union node **rpp, union node *redir) /* If we don't have any redirections already, then we must reset */ /* rpp to be the address of the local redir variable. */ - if (redir == 0) + if (redir == NULL) rpp = &redir; args = NULL; From 59e4a8cd1c77a46807ed9a8c2aa30f1ae4dcc6e5 Mon Sep 17 00:00:00 2001 From: John Baldwin Date: Sat, 9 Apr 2016 20:18:34 +0000 Subject: [PATCH 114/159] Use DELAY() instead of sleeping during boot-time attach. Tested by: Wolfgang Zenker --- sys/dev/ichiic/ig4_iic.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sys/dev/ichiic/ig4_iic.c b/sys/dev/ichiic/ig4_iic.c index a5561272c98..23bdb7da214 100644 --- a/sys/dev/ichiic/ig4_iic.c +++ b/sys/dev/ichiic/ig4_iic.c @@ -117,7 +117,10 @@ set_controller(ig4iic_softc_t *sc, uint32_t ctl) error = 0; break; } - mtx_sleep(sc, &sc->io_lock, 0, "i2cslv", 1); + if (cold) + DELAY(1000); + else + mtx_sleep(sc, &sc->io_lock, 0, "i2cslv", 1); } return (error); } From 2bf493863feef6ec0033f3f18d8abcb0a105d963 Mon Sep 17 00:00:00 2001 From: "Pedro F. Giffuni" Date: Sat, 9 Apr 2016 20:36:07 +0000 Subject: [PATCH 115/159] USB: replace 0 with NULL for pointers. Found with devel/coccinelle. Reviewed by: hselasky --- lib/libusb/libusb20.c | 4 ++-- lib/libusbhid/descr.c | 2 +- lib/libusbhid/usage.c | 6 +++--- sys/dev/usb/net/if_urndis.c | 2 +- sys/dev/usb/usb_transfer.c | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/libusb/libusb20.c b/lib/libusb/libusb20.c index 1de3a265125..2eb75f1c6d7 100644 --- a/lib/libusb/libusb20.c +++ b/lib/libusb/libusb20.c @@ -139,8 +139,8 @@ libusb20_tr_close(struct libusb20_transfer *xfer) free(xfer->ppBuffer); } /* reset variable fields in case the transfer is opened again */ - xfer->priv_sc0 = 0; - xfer->priv_sc1 = 0; + xfer->priv_sc0 = NULL; + xfer->priv_sc1 = NULL; xfer->is_opened = 0; xfer->is_pending = 0; xfer->is_cancel = 0; diff --git a/lib/libusbhid/descr.c b/lib/libusbhid/descr.c index 0c663423663..4ca9dd795d0 100644 --- a/lib/libusbhid/descr.c +++ b/lib/libusbhid/descr.c @@ -159,7 +159,7 @@ hid_use_report_desc(unsigned char *data, unsigned int size) report_desc_t r; r = malloc(sizeof(*r) + size); - if (r == 0) { + if (r == NULL) { errno = ENOMEM; return (NULL); } diff --git a/lib/libusbhid/usage.c b/lib/libusbhid/usage.c index eeff818afed..3960dad8076 100644 --- a/lib/libusbhid/usage.c +++ b/lib/libusbhid/usage.c @@ -77,9 +77,9 @@ hid_init(const char *hidname) char line[100], name[100], *p, *n; int no; int lineno; - struct usage_page *curpage = 0; + struct usage_page *curpage = NULL; - if (hidname == 0) + if (hidname == NULL) hidname = _PATH_HIDTABLE; f = fopen(hidname, "r"); @@ -124,7 +124,7 @@ hid_init(const char *hidname) curpage->pagesize++; } else { if (npages >= npagesmax) { - if (pages == 0) { + if (pages == NULL) { npagesmax = 5; pages = malloc(npagesmax * sizeof (struct usage_page)); diff --git a/sys/dev/usb/net/if_urndis.c b/sys/dev/usb/net/if_urndis.c index 749f874c0d9..de7fd1e4b33 100644 --- a/sys/dev/usb/net/if_urndis.c +++ b/sys/dev/usb/net/if_urndis.c @@ -235,7 +235,7 @@ urndis_attach(device_t dev) cmd = usbd_find_descriptor(uaa->device, NULL, uaa->info.bIfaceIndex, UDESC_CS_INTERFACE, 0xFF, UDESCSUB_CDC_CM, 0xFF); - if (cmd != 0) { + if (cmd != NULL) { DPRINTF("Call Mode Descriptor found, dataif=%d\n", cmd->bDataInterface); iface_index[0] = cmd->bDataInterface; } diff --git a/sys/dev/usb/usb_transfer.c b/sys/dev/usb/usb_transfer.c index 783a96c017b..17b9367df4b 100644 --- a/sys/dev/usb/usb_transfer.c +++ b/sys/dev/usb/usb_transfer.c @@ -925,7 +925,7 @@ usbd_transfer_setup(struct usb_device *udev, DPRINTFN(6, "setup array has zero length!\n"); return (USB_ERR_INVAL); } - if (ifaces == 0) { + if (ifaces == NULL) { DPRINTFN(6, "ifaces array is NULL!\n"); return (USB_ERR_INVAL); } From 169c392c43c6fd5eb34578bcabee3c9c43a498ca Mon Sep 17 00:00:00 2001 From: Adrian Chadd Date: Sat, 9 Apr 2016 21:57:34 +0000 Subject: [PATCH 116/159] [net80211] add back in the ff/superg node init call that I accidentally deleted. It's mostly a no-op right now, so it shouldn't have changed behaviour. --- sys/net80211/ieee80211_sta.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sys/net80211/ieee80211_sta.c b/sys/net80211/ieee80211_sta.c index 9c1707b90a8..d80c76746c8 100644 --- a/sys/net80211/ieee80211_sta.c +++ b/sys/net80211/ieee80211_sta.c @@ -1705,6 +1705,14 @@ sta_recv_mgmt(struct ieee80211_node *ni, struct mbuf *m0, int subtype, ieee80211_ratectl_node_init(ni); } + /* + * Always initialise FF/superg state; we can use this + * for doing A-MSDU encapsulation as well. + */ +#ifdef IEEE80211_SUPPORT_SUPERG + ieee80211_ff_node_init(ni); +#endif + /* * Configure state now that we are associated. * From 5cf581e264ada5363bb06870abe12b40a1aa8e65 Mon Sep 17 00:00:00 2001 From: Adrian Chadd Date: Sat, 9 Apr 2016 22:01:32 +0000 Subject: [PATCH 117/159] [net80211] log the node pointer when calling ht node init/cleanup This makes it easier to track which node is having what done do it during normal use. This is likely the eighth time I've done this since I started doing net80211 development, so I think it's about time I just committed it. --- sys/net80211/ieee80211_ht.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/sys/net80211/ieee80211_ht.c b/sys/net80211/ieee80211_ht.c index be380e98ff5..7f322fdeed6 100644 --- a/sys/net80211/ieee80211_ht.c +++ b/sys/net80211/ieee80211_ht.c @@ -1063,8 +1063,9 @@ ieee80211_ht_node_init(struct ieee80211_node *ni) IEEE80211_NOTE(ni->ni_vap, IEEE80211_MSG_11N, ni, - "%s: called", - __func__); + "%s: called (%p)", + __func__, + ni); if (ni->ni_flags & IEEE80211_NODE_HT) { /* @@ -1074,8 +1075,8 @@ ieee80211_ht_node_init(struct ieee80211_node *ni) */ IEEE80211_NOTE(ni->ni_vap, IEEE80211_MSG_11N, ni, - "%s: calling cleanup", - __func__); + "%s: calling cleanup (%p)", + __func__, ni); ieee80211_ht_node_cleanup(ni); } for (tid = 0; tid < WME_NUM_TID; tid++) { @@ -1100,8 +1101,8 @@ ieee80211_ht_node_cleanup(struct ieee80211_node *ni) IEEE80211_NOTE(ni->ni_vap, IEEE80211_MSG_11N, ni, - "%s: called", - __func__); + "%s: called (%p)", + __func__, ni); KASSERT(ni->ni_flags & IEEE80211_NODE_HT, ("not an HT node")); From e1e33ff91232682feefeb3aacf6238dea01acc69 Mon Sep 17 00:00:00 2001 From: Mark Johnston Date: Sun, 10 Apr 2016 01:23:39 +0000 Subject: [PATCH 118/159] Initialize DTrace hrtimer frequency during SI_SUB_CPU on i386 and amd64. This allows the hrtimer to be used earlier during boot. This is required for boot-time DTrace: anonymous enablings are created during SI_SUB_DTRACE_ANON, which runs before APs are started. In particular, the DTrace deadman timer requires that the hrtimer be functional. MFC after: 2 weeks --- sys/cddl/dev/dtrace/amd64/dtrace_subr.c | 48 ++++++++++------- sys/cddl/dev/dtrace/i386/dtrace_subr.c | 72 ++++++++++++++----------- 2 files changed, 72 insertions(+), 48 deletions(-) diff --git a/sys/cddl/dev/dtrace/amd64/dtrace_subr.c b/sys/cddl/dev/dtrace/amd64/dtrace_subr.c index f6577d5bcd9..2a26b658996 100644 --- a/sys/cddl/dev/dtrace/amd64/dtrace_subr.c +++ b/sys/cddl/dev/dtrace/amd64/dtrace_subr.c @@ -246,24 +246,14 @@ static uint64_t nsec_scale; /* See below for the explanation of this macro. */ #define SCALE_SHIFT 28 +/* + * Get the frequency and scale factor as early as possible so that they can be + * used for boot-time tracing. + */ static void -dtrace_gethrtime_init_cpu(void *arg) +dtrace_gethrtime_init_early(void *arg) { - uintptr_t cpu = (uintptr_t) arg; - - if (cpu == curcpu) - tgt_cpu_tsc = rdtsc(); - else - hst_cpu_tsc = rdtsc(); -} - -static void -dtrace_gethrtime_init(void *arg) -{ - struct pcpu *pc; uint64_t tsc_f; - cpuset_t map; - int i; /* * Get TSC frequency known at this moment. @@ -279,7 +269,8 @@ dtrace_gethrtime_init(void *arg) * another 32-bit integer without overflowing 64-bit. * Thus minimum supported TSC frequency is 62.5MHz. */ - KASSERT(tsc_f > (NANOSEC >> (32 - SCALE_SHIFT)), ("TSC frequency is too low")); + KASSERT(tsc_f > (NANOSEC >> (32 - SCALE_SHIFT)), + ("TSC frequency is too low")); /* * We scale up NANOSEC/tsc_f ratio to preserve as much precision @@ -291,6 +282,27 @@ dtrace_gethrtime_init(void *arg) * (terahertz) values; */ nsec_scale = ((uint64_t)NANOSEC << SCALE_SHIFT) / tsc_f; +} +SYSINIT(dtrace_gethrtime_init_early, SI_SUB_CPU, SI_ORDER_ANY, + dtrace_gethrtime_init_early, NULL); + +static void +dtrace_gethrtime_init_cpu(void *arg) +{ + uintptr_t cpu = (uintptr_t) arg; + + if (cpu == curcpu) + tgt_cpu_tsc = rdtsc(); + else + hst_cpu_tsc = rdtsc(); +} + +static void +dtrace_gethrtime_init(void *arg) +{ + struct pcpu *pc; + cpuset_t map; + int i; /* The current CPU is the reference one. */ sched_pin(); @@ -311,8 +323,8 @@ dtrace_gethrtime_init(void *arg) } sched_unpin(); } - -SYSINIT(dtrace_gethrtime_init, SI_SUB_SMP, SI_ORDER_ANY, dtrace_gethrtime_init, NULL); +SYSINIT(dtrace_gethrtime_init, SI_SUB_SMP, SI_ORDER_ANY, dtrace_gethrtime_init, + NULL); /* * DTrace needs a high resolution time function which can diff --git a/sys/cddl/dev/dtrace/i386/dtrace_subr.c b/sys/cddl/dev/dtrace/i386/dtrace_subr.c index be5bd4b9dce..daca7dda58f 100644 --- a/sys/cddl/dev/dtrace/i386/dtrace_subr.c +++ b/sys/cddl/dev/dtrace/i386/dtrace_subr.c @@ -248,6 +248,46 @@ static uint64_t nsec_scale; /* See below for the explanation of this macro. */ #define SCALE_SHIFT 28 +/* + * Get the frequency and scale factor as early as possible so that they can be + * used for boot-time tracing. + */ +static void +dtrace_gethrtime_init_early(void *arg) +{ + uint64_t tsc_f; + + /* + * Get TSC frequency known at this moment. + * This should be constant if TSC is invariant. + * Otherwise tick->time conversion will be inaccurate, but + * will preserve monotonic property of TSC. + */ + tsc_f = atomic_load_acq_64(&tsc_freq); + + /* + * The following line checks that nsec_scale calculated below + * doesn't overflow 32-bit unsigned integer, so that it can multiply + * another 32-bit integer without overflowing 64-bit. + * Thus minimum supported TSC frequency is 62.5MHz. + */ + KASSERT(tsc_f > (NANOSEC >> (32 - SCALE_SHIFT)), + ("TSC frequency is too low")); + + /* + * We scale up NANOSEC/tsc_f ratio to preserve as much precision + * as possible. + * 2^28 factor was chosen quite arbitrarily from practical + * considerations: + * - it supports TSC frequencies as low as 62.5MHz (see above); + * - it provides quite good precision (e < 0.01%) up to THz + * (terahertz) values; + */ + nsec_scale = ((uint64_t)NANOSEC << SCALE_SHIFT) / tsc_f; +} +SYSINIT(dtrace_gethrtime_init_early, SI_SUB_CPU, SI_ORDER_ANY, + dtrace_gethrtime_init_early, NULL); + static void dtrace_gethrtime_init_cpu(void *arg) { @@ -264,36 +304,8 @@ dtrace_gethrtime_init(void *arg) { cpuset_t map; struct pcpu *pc; - uint64_t tsc_f; int i; - /* - * Get TSC frequency known at this moment. - * This should be constant if TSC is invariant. - * Otherwise tick->time conversion will be inaccurate, but - * will preserve monotonic property of TSC. - */ - tsc_f = atomic_load_acq_64(&tsc_freq); - - /* - * The following line checks that nsec_scale calculated below - * doesn't overflow 32-bit unsigned integer, so that it can multiply - * another 32-bit integer without overflowing 64-bit. - * Thus minimum supported TSC frequency is 62.5MHz. - */ - KASSERT(tsc_f > (NANOSEC >> (32 - SCALE_SHIFT)), ("TSC frequency is too low")); - - /* - * We scale up NANOSEC/tsc_f ratio to preserve as much precision - * as possible. - * 2^28 factor was chosen quite arbitrarily from practical - * considerations: - * - it supports TSC frequencies as low as 62.5MHz (see above); - * - it provides quite good precision (e < 0.01%) up to THz - * (terahertz) values; - */ - nsec_scale = ((uint64_t)NANOSEC << SCALE_SHIFT) / tsc_f; - /* The current CPU is the reference one. */ sched_pin(); tsc_skew[curcpu] = 0; @@ -313,8 +325,8 @@ dtrace_gethrtime_init(void *arg) } sched_unpin(); } - -SYSINIT(dtrace_gethrtime_init, SI_SUB_SMP, SI_ORDER_ANY, dtrace_gethrtime_init, NULL); +SYSINIT(dtrace_gethrtime_init, SI_SUB_SMP, SI_ORDER_ANY, dtrace_gethrtime_init, + NULL); /* * DTrace needs a high resolution time function which can From 33b454938a202ad7622a409f1ebf0cebe58222ff Mon Sep 17 00:00:00 2001 From: Mark Johnston Date: Sun, 10 Apr 2016 01:24:27 +0000 Subject: [PATCH 119/159] Initialize SDT probes during SI_SUB_DTRACE_PROVIDER. This is consistent with all other DTrace providers and ensures that SDT probes are available for boot-time tracing. MFC after: 2 weeks --- sys/cddl/dev/sdt/sdt.c | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/sys/cddl/dev/sdt/sdt.c b/sys/cddl/dev/sdt/sdt.c index 4e5dd71f9b9..cef816fc4b5 100644 --- a/sys/cddl/dev/sdt/sdt.c +++ b/sys/cddl/dev/sdt/sdt.c @@ -384,28 +384,20 @@ sdt_unload() static int sdt_modevent(module_t mod __unused, int type, void *data __unused) { - int error = 0; switch (type) { case MOD_LOAD: - sdt_load(); - break; - case MOD_UNLOAD: - error = sdt_unload(); - break; - case MOD_SHUTDOWN: - break; - + return (0); default: - error = EOPNOTSUPP; - break; + return (EOPNOTSUPP); } - - return (error); } +SYSINIT(sdt_load, SI_SUB_DTRACE_PROVIDER, SI_ORDER_ANY, sdt_load, NULL); +SYSUNINIT(sdt_unload, SI_SUB_DTRACE_PROVIDER, SI_ORDER_ANY, sdt_unload, NULL); + DEV_MODULE(sdt, sdt_modevent, NULL); MODULE_VERSION(sdt, 1); MODULE_DEPEND(sdt, dtrace, 1, 1, 1); From 8553156023784d4305fe505c15ede787e2eab614 Mon Sep 17 00:00:00 2001 From: Mark Johnston Date: Sun, 10 Apr 2016 01:25:12 +0000 Subject: [PATCH 120/159] nextboot(8): add a -a option for appending to a configuration. By default, a nextboot invocation will clobber any existing nextboot configuration. MFC after: 2 weeks Relnotes: yes --- sbin/reboot/nextboot.8 | 9 ++++++++- sbin/reboot/nextboot.sh | 26 ++++++++++++++++++++++---- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/sbin/reboot/nextboot.8 b/sbin/reboot/nextboot.8 index df46a0ccbcd..d006c3f20c0 100644 --- a/sbin/reboot/nextboot.8 +++ b/sbin/reboot/nextboot.8 @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd March 17, 2015 +.Dd April 9, 2016 .Dt NEXTBOOT 8 .Os .Sh NAME @@ -32,6 +32,7 @@ .Nd "specify an alternate kernel and boot flags for the next reboot" .Sh SYNOPSIS .Nm +.Op Fl a .Op Fl e Ar variable=value .Op Fl f .Op Fl k Ar kernel @@ -53,6 +54,12 @@ configuration. .Pp The options are as follows: .Bl -tag -width ".Fl o Ar options" +.It Fl a +This option causes +.Nm +to append to an existing configuration in +.Pa /boot/nextboot.conf . +By default any existing configuration is overwritten. .It Fl D Invoking .Nm diff --git a/sbin/reboot/nextboot.sh b/sbin/reboot/nextboot.sh index 655e5330591..a90fdebae21 100644 --- a/sbin/reboot/nextboot.sh +++ b/sbin/reboot/nextboot.sh @@ -26,6 +26,7 @@ # # $FreeBSD$ +append="NO" delete="NO" kenv= force="NO" @@ -48,12 +49,17 @@ add_kenv() } display_usage() { - echo "Usage: nextboot [-e variable=value] [-f] [-k kernel] [-o options]" - echo " nextboot -D" + cat <<-EOF + Usage: nextboot [-e variable=value] [-f] [-k kernel] [-o options] + nextboot -D + EOF } -while getopts "De:fk:o:" argument ; do +while getopts "aDe:fk:o:" argument ; do case "${argument}" in + a) + append="YES" + ;; D) delete="YES" ;; @@ -106,7 +112,19 @@ df -Tn "/boot/" 2>/dev/null | while read _fs _type _other ; do EOF done -cat > ${nextboot_file} << EOF +set -e + +nextboot_tmp=$(mktemp $(dirname ${nextboot_file})/nextboot.XXXXXX) + +if [ ${append} = "YES" -a -f ${nextboot_file} ]; then + cp -f ${nextboot_file} ${nextboot_tmp} +fi + +cat >> ${nextboot_tmp} << EOF nextboot_enable="YES" $kenv EOF + +fsync ${nextboot_tmp} + +mv ${nextboot_tmp} ${nextboot_file} From b52902867604a2a5141c0e5d5bcc7ed2c5f96ab8 Mon Sep 17 00:00:00 2001 From: Mark Johnston Date: Sun, 10 Apr 2016 01:25:48 +0000 Subject: [PATCH 121/159] Implement support for boot-time DTrace. This allows one to enable DTrace probes relatively early during boot, during SI_SUB_DTRACE_ANON, before dtrace(1) can invoked. The desired enabling is created using dtrace -A, which writes a /boot/dtrace.dof file and uses nextboot(8) to ensure that DTrace kernel modules are loaded and that the DOF file describing the enabling is loaded by loader(8) during the subsequent boot. The trace output can then be fetched with dtrace -a. With this commit, boot-time DTrace is only functional on i386 and amd64: on other architectures, the high-resolution timer frequency is initialized during SI_SUB_CLOCKS and is thus not available when the anonymous tracing state is initialized. On x86, the TSC is used and is thus available earlier. MFC after: 1 month Relnotes: yes --- cddl/contrib/opensolaris/cmd/dtrace/dtrace.c | 73 ++++++-- .../opensolaris/uts/common/dtrace/dtrace.c | 161 ++++++++++++------ 2 files changed, 168 insertions(+), 66 deletions(-) diff --git a/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c b/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c index d8bdaa61faf..d065cdc180a 100644 --- a/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c +++ b/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c @@ -50,6 +50,9 @@ #ifdef illumos #include #endif +#ifdef __FreeBSD__ +#include +#endif typedef struct dtrace_cmd { void (*dc_func)(struct dtrace_cmd *); /* function to compile arg */ @@ -397,7 +400,41 @@ dof_prune(const char *fname) free(buf); } -#ifdef illumos +#ifdef __FreeBSD__ +/* + * Use nextboot(8) to tell the loader to load DTrace kernel modules during + * the next boot of the system. The nextboot(8) configuration is removed during + * boot, so it will not persist indefinitely. + */ +static void +bootdof_add(void) +{ + char * const nbargv[] = { + "nextboot", "-a", + "-e", "dtraceall_load=\"YES\"", + "-e", "dtrace_dof_load=\"YES\"", + "-e", "dtrace_dof_name=\"/boot/dtrace.dof\"", + "-e", "dtrace_dof_type=\"dtrace_dof\"", + NULL, + }; + pid_t child; + int err, status; + + err = posix_spawnp(&child, "nextboot", NULL, NULL, nbargv, + NULL); + if (err != 0) { + error("failed to execute nextboot: %s", strerror(err)); + exit(E_ERROR); + } + + if (waitpid(child, &status, 0) != child) + fatal("waiting for nextboot"); + if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) { + error("nextboot returned with status %d", status); + exit(E_ERROR); + } +} +#else static void etcsystem_prune(void) { @@ -508,7 +545,7 @@ etcsystem_add(void) error("added forceload directives to %s\n", g_ofile); } -#endif /* illumos */ +#endif /* !__FreeBSD__ */ static void print_probe_info(const dtrace_probeinfo_t *p) @@ -643,24 +680,24 @@ anon_prog(const dtrace_cmd_t *dcp, dof_hdr_t *dof, int n) p = (uchar_t *)dof; q = p + dof->dofh_loadsz; -#ifdef illumos +#ifdef __FreeBSD__ + /* + * On FreeBSD, the DOF file is read directly during boot - just write + * two hex characters per byte. + */ + oprintf("dof-data-%d=", n); + + while (p < q) + oprintf("%02x", *p++); + + oprintf("\n"); +#else oprintf("dof-data-%d=0x%x", n, *p++); while (p < q) oprintf(",0x%x", *p++); oprintf(";\n"); -#else - /* - * On FreeBSD, the DOF data is handled as a kernel environment (kenv) - * string. We use two hex characters per DOF byte. - */ - oprintf("dof-data-%d=%02x", n, *p++); - - while (p < q) - oprintf("%02x", *p++); - - oprintf("\n"); #endif dtrace_dof_destroy(g_dtp, dof); @@ -1725,8 +1762,7 @@ main(int argc, char *argv[]) #else /* * On FreeBSD, anonymous DOF data is written to - * the DTrace DOF file that the boot loader will - * read if booting with the DTrace option. + * the DTrace DOF file. */ g_ofile = "/boot/dtrace.dof"; #endif @@ -1765,7 +1801,10 @@ main(int argc, char *argv[]) * that itself contains a #pragma D option quiet. */ error("saved anonymous enabling in %s\n", g_ofile); -#ifdef illumos + +#ifdef __FreeBSD__ + bootdof_add(); +#else etcsystem_add(); error("run update_drv(1M) or reboot to enable changes\n"); #endif diff --git a/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c b/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c index 7ec7dfdeaf9..00129751769 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c +++ b/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c @@ -117,6 +117,7 @@ #include #include #include +#include #include #include #include @@ -11916,6 +11917,21 @@ dtrace_buffer_activate(dtrace_state_t *state) dtrace_interrupt_enable(cookie); } +#ifdef __FreeBSD__ +/* + * Activate the specified per-CPU buffer. This is used instead of + * dtrace_buffer_activate() when APs have not yet started, i.e. when + * activating anonymous state. + */ +static void +dtrace_buffer_activate_cpu(dtrace_state_t *state, int cpu) +{ + + if (state->dts_buffer[cpu].dtb_tomax != NULL) + state->dts_buffer[cpu].dtb_flags &= ~DTRACEBUF_INACTIVE; +} +#endif + static int dtrace_buffer_alloc(dtrace_buffer_t *bufs, size_t size, int flags, processorid_t cpu, int *factor) @@ -12532,9 +12548,15 @@ dtrace_enabling_dump(dtrace_enabling_t *enab) for (i = 0; i < enab->dten_ndesc; i++) { dtrace_probedesc_t *desc = &enab->dten_desc[i]->dted_probe; +#ifdef __FreeBSD__ + printf("dtrace: enabling probe %d (%s:%s:%s:%s)\n", i, + desc->dtpd_provider, desc->dtpd_mod, + desc->dtpd_func, desc->dtpd_name); +#else cmn_err(CE_NOTE, "enabling probe %d (%s:%s:%s:%s)", i, desc->dtpd_provider, desc->dtpd_mod, desc->dtpd_func, desc->dtpd_name); +#endif } } @@ -13185,19 +13207,91 @@ dtrace_dof_char(char c) return (c - 'a' + 10); } /* Should not reach here. */ - return (0); + return (UCHAR_MAX); } #endif /* __FreeBSD__ */ static dof_hdr_t * dtrace_dof_property(const char *name) { +#ifdef __FreeBSD__ + uint8_t *dofbuf; + u_char *data, *eol; + caddr_t doffile; + size_t bytes, len, i; + dof_hdr_t *dof; + u_char c1, c2; + + dof = NULL; + + doffile = preload_search_by_type("dtrace_dof"); + if (doffile == NULL) + return (NULL); + + data = preload_fetch_addr(doffile); + len = preload_fetch_size(doffile); + for (;;) { + /* Look for the end of the line. All lines end in a newline. */ + eol = memchr(data, '\n', len); + if (eol == NULL) + return (NULL); + + if (strncmp(name, data, strlen(name)) == 0) + break; + + eol++; /* skip past the newline */ + len -= eol - data; + data = eol; + } + + /* We've found the data corresponding to the specified key. */ + + data += strlen(name) + 1; /* skip past the '=' */ + len = eol - data; + bytes = len / 2; + + if (bytes < sizeof(dof_hdr_t)) { + dtrace_dof_error(NULL, "truncated header"); + goto doferr; + } + + /* + * Each byte is represented by the two ASCII characters in its hex + * representation. + */ + dofbuf = malloc(bytes, M_SOLARIS, M_WAITOK); + for (i = 0; i < bytes; i++) { + c1 = dtrace_dof_char(data[i * 2]); + c2 = dtrace_dof_char(data[i * 2 + 1]); + if (c1 == UCHAR_MAX || c2 == UCHAR_MAX) { + dtrace_dof_error(NULL, "invalid hex char in DOF"); + goto doferr; + } + dofbuf[i] = c1 * 16 + c2; + } + + dof = (dof_hdr_t *)dofbuf; + if (bytes < dof->dofh_loadsz) { + dtrace_dof_error(NULL, "truncated DOF"); + goto doferr; + } + + if (dof->dofh_loadsz >= dtrace_dof_maxsize) { + dtrace_dof_error(NULL, "oversized DOF"); + goto doferr; + } + + return (dof); + +doferr: + free(dof, M_SOLARIS); + return (NULL); +#else /* __FreeBSD__ */ uchar_t *buf; uint64_t loadsz; unsigned int len, i; dof_hdr_t *dof; -#ifdef illumos /* * Unfortunately, array of values in .conf files are always (and * only) interpreted to be integer arrays. We must read our DOF @@ -13231,49 +13325,9 @@ dtrace_dof_property(const char *name) dof = kmem_alloc(loadsz, KM_SLEEP); bcopy(buf, dof, loadsz); ddi_prop_free(buf); -#else - char *p; - char *p_env; - - if ((p_env = kern_getenv(name)) == NULL) - return (NULL); - - len = strlen(p_env) / 2; - - buf = kmem_alloc(len, KM_SLEEP); - - dof = (dof_hdr_t *) buf; - - p = p_env; - - for (i = 0; i < len; i++) { - buf[i] = (dtrace_dof_char(p[0]) << 4) | - dtrace_dof_char(p[1]); - p += 2; - } - - freeenv(p_env); - - if (len < sizeof (dof_hdr_t)) { - kmem_free(buf, 0); - dtrace_dof_error(NULL, "truncated header"); - return (NULL); - } - - if (len < (loadsz = dof->dofh_loadsz)) { - kmem_free(buf, 0); - dtrace_dof_error(NULL, "truncated DOF"); - return (NULL); - } - - if (loadsz >= dtrace_dof_maxsize) { - kmem_free(buf, 0); - dtrace_dof_error(NULL, "oversized DOF"); - return (NULL); - } -#endif return (dof); +#endif /* !__FreeBSD__ */ } static void @@ -14332,7 +14386,7 @@ static dtrace_state_t * #ifdef illumos dtrace_state_create(dev_t *devp, cred_t *cr) #else -dtrace_state_create(struct cdev *dev) +dtrace_state_create(struct cdev *dev, struct ucred *cred __unused) #endif { #ifdef illumos @@ -14945,6 +14999,18 @@ dtrace_state_go(dtrace_state_t *state, processorid_t *cpu) if (state->dts_activity == DTRACE_ACTIVITY_WARMUP) state->dts_activity = DTRACE_ACTIVITY_ACTIVE; +#ifdef __FreeBSD__ + /* + * We enable anonymous tracing before APs are started, so we must + * activate buffers using the current CPU. + */ + if (state == dtrace_anon.dta_state) + for (int i = 0; i < NCPU; i++) + dtrace_buffer_activate_cpu(state, i); + else + dtrace_xcall(DTRACE_CPUALL, + (dtrace_xcall_t)dtrace_buffer_activate, state); +#else /* * Regardless of whether or not now we're in ACTIVE or DRAINING, we * want each CPU to transition its principal buffer out of the @@ -14955,6 +15021,7 @@ dtrace_state_go(dtrace_state_t *state, processorid_t *cpu) */ dtrace_xcall(DTRACE_CPUALL, (dtrace_xcall_t)dtrace_buffer_activate, state); +#endif goto out; err: @@ -15316,11 +15383,7 @@ dtrace_anon_property(void) * If we haven't allocated an anonymous state, we'll do so now. */ if ((state = dtrace_anon.dta_state) == NULL) { -#ifdef illumos state = dtrace_state_create(NULL, NULL); -#else - state = dtrace_state_create(NULL); -#endif dtrace_anon.dta_state = state; if (state == NULL) { @@ -17001,7 +17064,7 @@ dtrace_open(struct cdev *dev, int oflags, int devtype, struct thread *td) state = dtrace_state_create(devp, cred_p); #else - state = dtrace_state_create(dev); + state = dtrace_state_create(dev, NULL); devfs_set_cdevpriv(state, dtrace_dtr); #endif From 6548c62c97cde2dc185cd53f39176d1edb30a4ce Mon Sep 17 00:00:00 2001 From: Adrian Chadd Date: Sun, 10 Apr 2016 03:35:17 +0000 Subject: [PATCH 122/159] [net80211] unconditionally do A-MPDU RX aging. It's 2016 and vendors (including us!) still have 802.11n TX/RX sequence handling bugs. It's suboptimal, but I'd rather see us default to handling things in a sensible way. So, just delete the #ifdef'ed code for now. I'll leave the option in so it doesn't break existing configurations. This all started because I've started getting reports about urtwn not working after I enabled 802.11n support, and it's because the ARM kernel configs don't include A-MPDU RX aging. --- sys/net80211/ieee80211_ht.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/sys/net80211/ieee80211_ht.c b/sys/net80211/ieee80211_ht.c index 7f322fdeed6..9d33beb5f29 100644 --- a/sys/net80211/ieee80211_ht.c +++ b/sys/net80211/ieee80211_ht.c @@ -136,12 +136,10 @@ const struct ieee80211_mcs_rates ieee80211_htrates[IEEE80211_HTRATE_MAXSIZE] = { { 429, 477, 891, 990 }, /* MCS 76 */ }; -#ifdef IEEE80211_AMPDU_AGE static int ieee80211_ampdu_age = -1; /* threshold for ampdu reorder q (ms) */ SYSCTL_PROC(_net_wlan, OID_AUTO, ampdu_age, CTLTYPE_INT | CTLFLAG_RW, &ieee80211_ampdu_age, 0, ieee80211_sysctl_msecs_ticks, "I", "AMPDU max reorder age (ms)"); -#endif static int ieee80211_recv_bar_ena = 1; SYSCTL_INT(_net_wlan, OID_AUTO, recv_bar, CTLFLAG_RW, &ieee80211_recv_bar_ena, @@ -178,9 +176,7 @@ ieee80211_ht_init(void) /* * Setup HT parameters that depends on the clock frequency. */ -#ifdef IEEE80211_AMPDU_AGE ieee80211_ampdu_age = msecs_to_ticks(500); -#endif ieee80211_addba_timeout = msecs_to_ticks(250); ieee80211_addba_backoff = msecs_to_ticks(10*1000); ieee80211_bar_timeout = msecs_to_ticks(250); @@ -671,7 +667,6 @@ ampdu_rx_dispatch(struct ieee80211_rx_ampdu *rap, struct ieee80211_node *ni) vap->iv_stats.is_ampdu_rx_oor += i; } -#ifdef IEEE80211_AMPDU_AGE /* * Dispatch all frames in the A-MPDU re-order queue. */ @@ -696,7 +691,6 @@ ampdu_rx_flush(struct ieee80211_node *ni, struct ieee80211_rx_ampdu *rap) break; } } -#endif /* IEEE80211_AMPDU_AGE */ /* * Dispatch all frames in the A-MPDU re-order queue @@ -864,7 +858,7 @@ ieee80211_ampdu_reorder(struct ieee80211_node *ni, struct mbuf *m) * Common case (hopefully): in the BA window. * Sec 9.10.7.6.2 a) (p.137) */ -#ifdef IEEE80211_AMPDU_AGE + /* * Check for frames sitting too long in the reorder queue. * This should only ever happen if frames are not delivered @@ -903,7 +897,7 @@ ieee80211_ampdu_reorder(struct ieee80211_node *ni, struct mbuf *m) */ rap->rxa_age = ticks; } -#endif /* IEEE80211_AMPDU_AGE */ + /* save packet */ if (rap->rxa_m[off] == NULL) { rap->rxa_m[off] = m; @@ -1125,14 +1119,11 @@ ieee80211_ht_node_cleanup(struct ieee80211_node *ni) void ieee80211_ht_node_age(struct ieee80211_node *ni) { -#ifdef IEEE80211_AMPDU_AGE struct ieee80211vap *vap = ni->ni_vap; uint8_t tid; -#endif KASSERT(ni->ni_flags & IEEE80211_NODE_HT, ("not an HT sta")); -#ifdef IEEE80211_AMPDU_AGE for (tid = 0; tid < WME_NUM_TID; tid++) { struct ieee80211_rx_ampdu *rap; @@ -1155,7 +1146,6 @@ ieee80211_ht_node_age(struct ieee80211_node *ni) ampdu_rx_flush(ni, rap); } } -#endif /* IEEE80211_AMPDU_AGE */ } static struct ieee80211_channel * From b4fb3d6e022db6d67407756959bc3bdeaf836d59 Mon Sep 17 00:00:00 2001 From: Adrian Chadd Date: Sun, 10 Apr 2016 04:16:34 +0000 Subject: [PATCH 123/159] [net80211] correctly (i hope, wow) do a ticks comparison to limit A-MPDU attempts I was seeing the stack constantly attempt to renegotiate A-MPDU TX even after 3 failures. My hunch is that the direct ticks comparison is failing around the ticks wrap-around point. This failure shouldn't /really/ happen normally, but it turns out being the IBSS master node on FreeBSD doesn't quite setup 11n right, so negotiating A-MPDU TX fails. --- sys/net80211/ieee80211_ht.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/net80211/ieee80211_ht.c b/sys/net80211/ieee80211_ht.c index 9d33beb5f29..cf78e8829f0 100644 --- a/sys/net80211/ieee80211_ht.c +++ b/sys/net80211/ieee80211_ht.c @@ -2157,7 +2157,7 @@ ieee80211_ampdu_enable(struct ieee80211_node *ni, return 0; /* XXX check rssi? */ if (tap->txa_attempts >= ieee80211_addba_maxtries && - ticks < tap->txa_nextrequest) { + ieee80211_time_after(ticks, tap->txa_nextrequest)) { /* * Don't retry too often; txa_nextrequest is set * to the minimum interval we'll retry after From 70e22add96ff6317d002cd62250ae83b9a3073a2 Mon Sep 17 00:00:00 2001 From: John Baldwin Date: Sun, 10 Apr 2016 05:05:02 +0000 Subject: [PATCH 124/159] Add a function to lookup a device_t object by name. This just walks the global list of devices looking for one with the requested name. The one use case outside of devctl2's implementation is for DDB commands that wish to lookup devices by name. --- sys/kern/subr_bus.c | 22 ++++++++++++++++------ sys/sys/bus.h | 1 + 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/sys/kern/subr_bus.c b/sys/kern/subr_bus.c index caf92025c7d..81be3689407 100644 --- a/sys/kern/subr_bus.c +++ b/sys/kern/subr_bus.c @@ -5125,6 +5125,18 @@ bus_free_resource(device_t dev, int type, struct resource *r) return (bus_release_resource(dev, type, rman_get_rid(r), r)); } +device_t +device_lookup_by_name(const char *name) +{ + device_t dev; + + TAILQ_FOREACH(dev, &bus_data_devices, devlink) { + if (dev->nameunit != NULL && strcmp(dev->nameunit, name) == 0) + return (dev); + } + return (NULL); +} + /* * /dev/devctl2 implementation. The existing /dev/devctl device has * implicit semantics on open, so it could not be reused for this. @@ -5145,12 +5157,10 @@ find_device(struct devreq *req, device_t *devp) * Second, try to find an attached device whose name matches * 'name'. */ - TAILQ_FOREACH(dev, &bus_data_devices, devlink) { - if (dev->nameunit != NULL && - strcmp(dev->nameunit, req->dr_name) == 0) { - *devp = dev; - return (0); - } + dev = device_lookup_by_name(req->dr_name); + if (dev != NULL) { + *devp = dev; + return (0); } /* Finally, give device enumerators a chance. */ diff --git a/sys/sys/bus.h b/sys/sys/bus.h index e0297cc4580..01b98f5e18e 100644 --- a/sys/sys/bus.h +++ b/sys/sys/bus.h @@ -524,6 +524,7 @@ int device_is_attached(device_t dev); /* did attach succeed? */ int device_is_enabled(device_t dev); int device_is_suspended(device_t dev); int device_is_quiet(device_t dev); +device_t device_lookup_by_name(const char *name); int device_print_prettyname(device_t dev); int device_printf(device_t dev, const char *, ...) __printflike(2, 3); int device_probe(device_t dev); From 113f2316c617b113de58ce85b244819bb49cdcee Mon Sep 17 00:00:00 2001 From: John Baldwin Date: Sun, 10 Apr 2016 05:06:58 +0000 Subject: [PATCH 125/159] Add a 'show t4 tcb ' command to dump a TCB from DDB. This allows the contents of a TCB to be extracted from a T4/T5 card in DDB after a panic. --- sys/dev/cxgbe/t4_main.c | 85 +++++++++++++++++++++++++++++ sys/dev/cxgbe/tom/t4_ddp.c | 25 --------- sys/modules/cxgbe/if_cxgbe/Makefile | 1 + 3 files changed, 86 insertions(+), 25 deletions(-) diff --git a/sys/dev/cxgbe/t4_main.c b/sys/dev/cxgbe/t4_main.c index 11d42536caa..69757450b61 100644 --- a/sys/dev/cxgbe/t4_main.c +++ b/sys/dev/cxgbe/t4_main.c @@ -28,6 +28,7 @@ #include __FBSDID("$FreeBSD$"); +#include "opt_ddb.h" #include "opt_inet.h" #include "opt_inet6.h" #include "opt_rss.h" @@ -63,6 +64,10 @@ __FBSDID("$FreeBSD$"); #include #include #endif +#ifdef DDB +#include +#include +#endif #include "common/common.h" #include "common/t4_msg.h" @@ -9163,6 +9168,86 @@ tweak_tunables(void) t4_intr_types &= INTR_MSIX | INTR_MSI | INTR_INTX; } +#ifdef DDB +static void +t4_dump_tcb(struct adapter *sc, int tid) +{ + uint32_t base, i, j, off, pf, reg, save, tcb_addr, win_pos; + + reg = PCIE_MEM_ACCESS_REG(A_PCIE_MEM_ACCESS_OFFSET, 2); + save = t4_read_reg(sc, reg); + base = sc->memwin[2].mw_base; + + /* Dump TCB for the tid */ + tcb_addr = t4_read_reg(sc, A_TP_CMM_TCB_BASE); + tcb_addr += tid * TCB_SIZE; + + if (is_t4(sc)) { + pf = 0; + win_pos = tcb_addr & ~0xf; /* start must be 16B aligned */ + } else { + pf = V_PFNUM(sc->pf); + win_pos = tcb_addr & ~0x7f; /* start must be 128B aligned */ + } + t4_write_reg(sc, reg, win_pos | pf); + t4_read_reg(sc, reg); + + off = tcb_addr - win_pos; + for (i = 0; i < 4; i++) { + uint32_t buf[8]; + for (j = 0; j < 8; j++, off += 4) + buf[j] = htonl(t4_read_reg(sc, base + off)); + + db_printf("%08x %08x %08x %08x %08x %08x %08x %08x\n", + buf[0], buf[1], buf[2], buf[3], buf[4], buf[5], buf[6], + buf[7]); + } + + t4_write_reg(sc, reg, save); + t4_read_reg(sc, reg); +} + +static struct command_table db_t4_table = LIST_HEAD_INITIALIZER(db_t4_table); +_DB_SET(_show, t4, NULL, db_show_table, 0, &db_t4_table); + +DB_FUNC(tcb, db_show_t4tcb, db_t4_table, CS_OWN, NULL) +{ + device_t dev; + int radix, tid, t; + bool valid; + + valid = false; + radix = db_radix; + db_radix = 10; + t = db_read_token(); + if (t == tIDENT) { + dev = device_lookup_by_name(db_tok_string); + t = db_read_token(); + if (t == tNUMBER) { + tid = db_tok_number; + valid = true; + } + } + db_radix = radix; + db_skip_to_eol(); + if (!valid) { + db_printf("usage: show t4 tcb \n"); + return; + } + + if (dev == NULL) { + db_printf("device not found\n"); + return; + } + if (tid < 0) { + db_printf("invalid tid\n"); + return; + } + + t4_dump_tcb(device_get_softc(dev), tid); +} +#endif + static struct sx mlu; /* mod load unload */ SX_SYSINIT(cxgbe_mlu, &mlu, "cxgbe mod load/unload"); diff --git a/sys/dev/cxgbe/tom/t4_ddp.c b/sys/dev/cxgbe/tom/t4_ddp.c index 2df025777dd..2aa774d0139 100644 --- a/sys/dev/cxgbe/tom/t4_ddp.c +++ b/sys/dev/cxgbe/tom/t4_ddp.c @@ -80,31 +80,6 @@ static struct mbuf *get_ddp_mbuf(int len); /* XXX: must match A_ULP_RX_TDDP_PSZ */ static int t4_ddp_pgsz[] = {4096, 4096 << 2, 4096 << 4, 4096 << 6}; -#if 0 -static void -t4_dump_tcb(struct adapter *sc, int tid) -{ - uint32_t tcb_base, off, i, j; - - /* Dump TCB for the tid */ - tcb_base = t4_read_reg(sc, A_TP_CMM_TCB_BASE); - t4_write_reg(sc, PCIE_MEM_ACCESS_REG(A_PCIE_MEM_ACCESS_OFFSET, 2), - tcb_base + tid * TCB_SIZE); - t4_read_reg(sc, PCIE_MEM_ACCESS_REG(A_PCIE_MEM_ACCESS_OFFSET, 2)); - off = 0; - printf("\n"); - for (i = 0; i < 4; i++) { - uint32_t buf[8]; - for (j = 0; j < 8; j++, off += 4) - buf[j] = htonl(t4_read_reg(sc, MEMWIN2_BASE + off)); - - printf("%08x %08x %08x %08x %08x %08x %08x %08x\n", - buf[0], buf[1], buf[2], buf[3], buf[4], buf[5], buf[6], - buf[7]); - } -} -#endif - #define MAX_DDP_BUFFER_SIZE (M_TCB_RX_DDP_BUF0_LEN) static int alloc_ppods(struct tom_data *td, int n, u_int *ppod_addr) diff --git a/sys/modules/cxgbe/if_cxgbe/Makefile b/sys/modules/cxgbe/if_cxgbe/Makefile index df343b27ea7..967683bf94a 100644 --- a/sys/modules/cxgbe/if_cxgbe/Makefile +++ b/sys/modules/cxgbe/if_cxgbe/Makefile @@ -8,6 +8,7 @@ CXGBE= ${.CURDIR}/../../../dev/cxgbe KMOD= if_cxgbe SRCS= bus_if.h SRCS+= device_if.h +SRCS+= opt_ddb.h SRCS+= opt_inet.h SRCS+= opt_inet6.h SRCS+= opt_ofed.h From 5ccf6ce169cb3b492c7ec9ee9d13f8b285cc262f Mon Sep 17 00:00:00 2001 From: Peter Grehan Date: Sun, 10 Apr 2016 05:58:19 +0000 Subject: [PATCH 126/159] Allow the location of the kernel source tree to be overridden. This makes it easier for the bhyve executable to be built out of the tree. --- usr.sbin/bhyve/Makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/usr.sbin/bhyve/Makefile b/usr.sbin/bhyve/Makefile index 0e1a85ed5a3..37e1c671016 100644 --- a/usr.sbin/bhyve/Makefile +++ b/usr.sbin/bhyve/Makefile @@ -8,6 +8,8 @@ DEBUG_FLAGS= -g -O0 MAN= bhyve.8 +SYSDIR?=${.CURDIR}/../.. + SRCS= \ atkbdc.c \ acpi.c \ @@ -42,7 +44,7 @@ SRCS= \ xmsr.c \ spinup_ap.c -.PATH: ${.CURDIR}/../../sys/amd64/vmm +.PATH: ${SYSDIR}/sys/amd64/vmm SRCS+= vmm_instruction_emul.c LIBADD= vmmapi md pthread From 307734b6d4cef99f9784f225494347e726674caf Mon Sep 17 00:00:00 2001 From: John Baldwin Date: Sun, 10 Apr 2016 06:19:26 +0000 Subject: [PATCH 127/159] Add a 'show t4 devlog ' DDB command. This command displays the adapter's firmware device log similar to the dev..misc.devlog sysctl. Sponsored by: Chelsio Communications --- sys/dev/cxgbe/t4_main.c | 93 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) diff --git a/sys/dev/cxgbe/t4_main.c b/sys/dev/cxgbe/t4_main.c index 69757450b61..777e4d11280 100644 --- a/sys/dev/cxgbe/t4_main.c +++ b/sys/dev/cxgbe/t4_main.c @@ -9207,9 +9207,102 @@ t4_dump_tcb(struct adapter *sc, int tid) t4_read_reg(sc, reg); } +static void +t4_dump_devlog(struct adapter *sc) +{ + struct devlog_params *dparams = &sc->params.devlog; + struct fw_devlog_e e; + int i, first, j, m, nentries, rc; + uint64_t ftstamp = UINT64_MAX; + + if (dparams->start == 0) { + db_printf("devlog params not valid\n"); + return; + } + + nentries = dparams->size / sizeof(struct fw_devlog_e); + m = fwmtype_to_hwmtype(dparams->memtype); + + /* Find the first entry. */ + first = -1; + for (i = 0; i < nentries && !db_pager_quit; i++) { + rc = -t4_mem_read(sc, m, dparams->start + i * sizeof(e), + sizeof(e), (void *)&e); + if (rc != 0) + break; + + if (e.timestamp == 0) + break; + + e.timestamp = be64toh(e.timestamp); + if (e.timestamp < ftstamp) { + ftstamp = e.timestamp; + first = i; + } + } + + if (first == -1) + return; + + i = first; + do { + rc = -t4_mem_read(sc, m, dparams->start + i * sizeof(e), + sizeof(e), (void *)&e); + if (rc != 0) + return; + + if (e.timestamp == 0) + return; + + e.timestamp = be64toh(e.timestamp); + e.seqno = be32toh(e.seqno); + for (j = 0; j < 8; j++) + e.params[j] = be32toh(e.params[j]); + + db_printf("%10d %15ju %8s %8s ", + e.seqno, e.timestamp, + (e.level < nitems(devlog_level_strings) ? + devlog_level_strings[e.level] : "UNKNOWN"), + (e.facility < nitems(devlog_facility_strings) ? + devlog_facility_strings[e.facility] : "UNKNOWN")); + db_printf(e.fmt, e.params[0], e.params[1], e.params[2], + e.params[3], e.params[4], e.params[5], e.params[6], + e.params[7]); + + if (++i == nentries) + i = 0; + } while (i != first && !db_pager_quit); +} + static struct command_table db_t4_table = LIST_HEAD_INITIALIZER(db_t4_table); _DB_SET(_show, t4, NULL, db_show_table, 0, &db_t4_table); +DB_FUNC(devlog, db_show_devlog, db_t4_table, CS_OWN, NULL) +{ + device_t dev; + int t; + bool valid; + + valid = false; + t = db_read_token(); + if (t == tIDENT) { + dev = device_lookup_by_name(db_tok_string); + valid = true; + } + db_skip_to_eol(); + if (!valid) { + db_printf("usage: show t4 devlog \n"); + return; + } + + if (dev == NULL) { + db_printf("device not found\n"); + return; + } + + t4_dump_devlog(device_get_softc(dev)); +} + DB_FUNC(tcb, db_show_t4tcb, db_t4_table, CS_OWN, NULL) { device_t dev; From 5743aa47f5b0a085f909fa927232b5b74f2bc05d Mon Sep 17 00:00:00 2001 From: Dmitry Chagin Date: Sun, 10 Apr 2016 07:11:29 +0000 Subject: [PATCH 128/159] More complete implementation of /proc/self/limits. Fix the way the code accesses process limits struct - pointed out by mjg@. PR: 207386 Reviewed by: no objection form des@ MFC after: 3 weeks --- sys/compat/linprocfs/linprocfs.c | 111 +++++++++++++++++++------------ sys/compat/linux/linux_misc.h | 7 ++ 2 files changed, 76 insertions(+), 42 deletions(-) diff --git a/sys/compat/linprocfs/linprocfs.c b/sys/compat/linprocfs/linprocfs.c index 86c4b050a95..12bc3c46a43 100644 --- a/sys/compat/linprocfs/linprocfs.c +++ b/sys/compat/linprocfs/linprocfs.c @@ -1370,65 +1370,92 @@ linprocfs_dofdescfs(PFS_FILL_ARGS) /* * Filler function for proc/pid/limits */ - -#define RLIM_NONE -1 - -static const struct limit_info { +static const struct linux_rlimit_ident { const char *desc; const char *unit; - unsigned long long rlim_id; -} limits_info[] = { - { "Max cpu time", "seconds", RLIMIT_CPU }, - { "Max file size", "bytes", RLIMIT_FSIZE }, - { "Max data size", "bytes", RLIMIT_DATA }, - { "Max stack size", "bytes", RLIMIT_STACK }, - { "Max core file size", "bytes", RLIMIT_CORE }, - { "Max resident set", "bytes", RLIMIT_RSS }, - { "Max processes", "processes", RLIMIT_NPROC }, - { "Max open files", "files", RLIMIT_NOFILE }, - { "Max locked memory", "bytes", RLIMIT_MEMLOCK }, - { "Max address space", "bytes", RLIMIT_AS }, - { "Max file locks", "locks", RLIM_INFINITY }, - { "Max pending signals", "signals", RLIM_INFINITY }, - { "Max msgqueue size", "bytes", RLIM_NONE }, - { "Max nice priority", "", RLIM_NONE }, - { "Max realtime priority", "", RLIM_NONE }, - { "Max realtime timeout", "us", RLIM_INFINITY }, + unsigned int rlim_id; +} linux_rlimits_ident[] = { + { "Max cpu time", "seconds", RLIMIT_CPU }, + { "Max file size", "bytes", RLIMIT_FSIZE }, + { "Max data size", "bytes", RLIMIT_DATA }, + { "Max stack size", "bytes", RLIMIT_STACK }, + { "Max core file size", "bytes", RLIMIT_CORE }, + { "Max resident set", "bytes", RLIMIT_RSS }, + { "Max processes", "processes", RLIMIT_NPROC }, + { "Max open files", "files", RLIMIT_NOFILE }, + { "Max locked memory", "bytes", RLIMIT_MEMLOCK }, + { "Max address space", "bytes", RLIMIT_AS }, + { "Max file locks", "locks", LINUX_RLIMIT_LOCKS }, + { "Max pending signals", "signals", LINUX_RLIMIT_SIGPENDING }, + { "Max msgqueue size", "bytes", LINUX_RLIMIT_MSGQUEUE }, + { "Max nice priority", "", LINUX_RLIMIT_NICE }, + { "Max realtime priority", "", LINUX_RLIMIT_RTPRIO }, + { "Max realtime timeout", "us", LINUX_RLIMIT_RTTIME }, { 0, 0, 0 } }; static int linprocfs_doproclimits(PFS_FILL_ARGS) { - const struct limit_info *li; - struct rlimit li_rlimits; - struct plimit *cur_proc_lim; + const struct linux_rlimit_ident *li; + struct plimit *limp; + struct rlimit rl; + ssize_t size; + int res, error; - cur_proc_lim = lim_alloc(); - lim_copy(cur_proc_lim, p->p_limit); - sbuf_printf(sb, "%-26s%-21s%-21s%-10s\n", "Limit", "Soft Limit", + PROC_LOCK(p); + limp = lim_hold(p->p_limit); + PROC_UNLOCK(p); + size = sizeof(res); + sbuf_printf(sb, "%-26s%-21s%-21s%-21s\n", "Limit", "Soft Limit", "Hard Limit", "Units"); - for (li = limits_info; li->desc != NULL; ++li) { - if (li->rlim_id != RLIM_INFINITY && li->rlim_id != RLIM_NONE) - li_rlimits = cur_proc_lim->pl_rlimit[li->rlim_id]; - else { - li_rlimits.rlim_cur = 0; - li_rlimits.rlim_max = 0; + for (li = linux_rlimits_ident; li->desc != NULL; ++li) { + switch (li->rlim_id) + { + case LINUX_RLIMIT_LOCKS: + /* FALLTHROUGH */ + case LINUX_RLIMIT_RTTIME: + rl.rlim_cur = RLIM_INFINITY; + break; + case LINUX_RLIMIT_SIGPENDING: + error = kernel_sysctlbyname(td, + "kern.sigqueue.max_pending_per_proc", + &res, &size, 0, 0, 0, 0); + if (error != 0) + break; + rl.rlim_cur = res; + rl.rlim_max = res; + break; + case LINUX_RLIMIT_MSGQUEUE: + error = kernel_sysctlbyname(td, + "kern.ipc.msgmnb", &res, &size, 0, 0, 0, 0); + if (error != 0) + break; + rl.rlim_cur = res; + rl.rlim_max = res; + break; + case LINUX_RLIMIT_NICE: + /* FALLTHROUGH */ + case LINUX_RLIMIT_RTPRIO: + rl.rlim_cur = 0; + rl.rlim_max = 0; + break; + default: + rl = limp->pl_rlimit[li->rlim_id]; + break; } - if (li->rlim_id == RLIM_INFINITY || - li_rlimits.rlim_cur == RLIM_INFINITY) + if (rl.rlim_cur == RLIM_INFINITY) sbuf_printf(sb, "%-26s%-21s%-21s%-10s\n", li->desc, "unlimited", "unlimited", li->unit); else - sbuf_printf(sb, "%-26s%-21ld%-21ld%-10s\n", - li->desc, (long)li_rlimits.rlim_cur, - (long)li_rlimits.rlim_max, li->unit); + sbuf_printf(sb, "%-26s%-21llu%-21llu%-10s\n", + li->desc, (unsigned long long)rl.rlim_cur, + (unsigned long long)rl.rlim_max, li->unit); } - lim_free(cur_proc_lim); - return (0); + lim_free(limp); + return (error); } - /* * Filler function for proc/sys/kernel/random/uuid */ diff --git a/sys/compat/linux/linux_misc.h b/sys/compat/linux/linux_misc.h index 08bc85fd936..0d2d86ce63a 100644 --- a/sys/compat/linux/linux_misc.h +++ b/sys/compat/linux/linux_misc.h @@ -143,6 +143,13 @@ extern int stclohz; #define LINUX_P_PID 1 #define LINUX_P_PGID 2 +#define LINUX_RLIMIT_LOCKS RLIM_NLIMITS + 1 +#define LINUX_RLIMIT_SIGPENDING RLIM_NLIMITS + 2 +#define LINUX_RLIMIT_MSGQUEUE RLIM_NLIMITS + 3 +#define LINUX_RLIMIT_NICE RLIM_NLIMITS + 4 +#define LINUX_RLIMIT_RTPRIO RLIM_NLIMITS + 5 +#define LINUX_RLIMIT_RTTIME RLIM_NLIMITS + 6 + #define LINUX_RLIM_INFINITY (~0UL) int linux_common_wait(struct thread *td, int pid, int *status, From f2c3b7f2ba8df67cb176b662f8e4513cc563f18c Mon Sep 17 00:00:00 2001 From: Justin Hibbits Date: Sun, 10 Apr 2016 15:48:09 +0000 Subject: [PATCH 129/159] Restructure device mappings for Book-E. Summary: There is currently a 1GB hole between user and kernel address spaces into which direct (1:1 PA:VA) device mappings go. This appears to go largely unused, leaving all devices to contend with the 128MB block at the end of the 32-bit space (0xf8000000-0xffffffff). This easily fills up, and needs to be densely packed. However, dense packing wastes precious TLB1 space, of which there are only 16 (e500v2) or 64(e5500) entries available. Change this by using the 1GB space for all device mappings, and allow the kernel to use the entire upper 1GB for KVA. This also allows us to use sparse device mappings, freeing up TLB entries. Test Plan: Boot tested on p5020. Differential Revision: https://reviews.freebsd.org/D5832 --- sys/powerpc/booke/pmap.c | 35 ++++++++++++++++++----------------- sys/powerpc/include/vmparam.h | 2 +- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/sys/powerpc/booke/pmap.c b/sys/powerpc/booke/pmap.c index 54f215ad325..fd04ab46b4d 100644 --- a/sys/powerpc/booke/pmap.c +++ b/sys/powerpc/booke/pmap.c @@ -96,6 +96,7 @@ __FBSDID("$FreeBSD$"); #include "mmu_if.h" +#define SPARSE_MAPDEV #ifdef DEBUG #define debugf(fmt, args...) printf(fmt, ##args) #else @@ -191,7 +192,7 @@ static tlb_entry_t tlb1[TLB1_MAXENTRIES]; /* Next free entry in the TLB1 */ static unsigned int tlb1_idx; -static vm_offset_t tlb1_map_base = VM_MAX_KERNEL_ADDRESS; +static vm_offset_t tlb1_map_base = VM_MAXUSER_ADDRESS; static tlbtid_t tid_alloc(struct pmap *); static void tid_flush(tlbtid_t tid); @@ -2796,7 +2797,7 @@ static void * mmu_booke_mapdev_attr(mmu_t mmu, vm_paddr_t pa, vm_size_t size, vm_memattr_t ma) { void *res; - uintptr_t va; + uintptr_t va, tmpva; vm_size_t sz; int i; @@ -2819,22 +2820,22 @@ mmu_booke_mapdev_attr(mmu_t mmu, vm_paddr_t pa, vm_size_t size, vm_memattr_t ma) size = roundup(size, PAGE_SIZE); /* - * We leave a hole for device direct mapping between the maximum user - * address (0x8000000) and the minimum KVA address (0xc0000000). If - * devices are in there, just map them 1:1. If not, map them to the - * device mapping area about VM_MAX_KERNEL_ADDRESS. These mapped - * addresses should be pulled from an allocator, but since we do not - * ever free TLB1 entries, it is safe just to increment a counter. - * Note that there isn't a lot of address space here (128 MB) and it - * is not at all difficult to imagine running out, since that is a 4:1 - * compression from the 0xc0000000 - 0xf0000000 address space that gets - * mapped there. + * The device mapping area is between VM_MAXUSER_ADDRESS and + * VM_MIN_KERNEL_ADDRESS. This gives 1GB of device addressing. */ - if (pa >= (VM_MAXUSER_ADDRESS + PAGE_SIZE) && - (pa + size - 1) < VM_MIN_KERNEL_ADDRESS) - va = pa; - else - va = atomic_fetchadd_int(&tlb1_map_base, size); +#ifdef SPARSE_MAPDEV + /* + * With a sparse mapdev, align to the largest starting region. This + * could feasibly be optimized for a 'best-fit' alignment, but that + * calculation could be very costly. + */ + do { + tmpva = tlb1_map_base; + va = roundup(tlb1_map_base, 1 << flsl(size)); + } while (!atomic_cmpset_int(&tlb1_map_base, tmpva, va + size)); +#else + va = atomic_fetchadd_int(&tlb1_map_base, size); +#endif res = (void *)va; do { diff --git a/sys/powerpc/include/vmparam.h b/sys/powerpc/include/vmparam.h index 0dd74c9ca61..d7368ecb283 100644 --- a/sys/powerpc/include/vmparam.h +++ b/sys/powerpc/include/vmparam.h @@ -111,7 +111,7 @@ #define KERNBASE 0xc0000000 /* start of kernel virtual */ #define VM_MIN_KERNEL_ADDRESS KERNBASE -#define VM_MAX_KERNEL_ADDRESS 0xf7ffffff +#define VM_MAX_KERNEL_ADDRESS 0xffffffff #define VM_MAX_SAFE_KERNEL_ADDRESS VM_MAX_KERNEL_ADDRESS #endif /* AIM/E500 */ From f00e9904650cc8c66e4d504e78e33bed0b02df7d Mon Sep 17 00:00:00 2001 From: Justin Hibbits Date: Sun, 10 Apr 2016 15:50:45 +0000 Subject: [PATCH 130/159] VM_MAXUSER_ADDRESS is highest page start, not highest address. In case a single page mapping is requested first, which might overlap the user address space, fix the device map block to the next page. --- sys/powerpc/booke/pmap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/powerpc/booke/pmap.c b/sys/powerpc/booke/pmap.c index fd04ab46b4d..42eb631936c 100644 --- a/sys/powerpc/booke/pmap.c +++ b/sys/powerpc/booke/pmap.c @@ -192,7 +192,7 @@ static tlb_entry_t tlb1[TLB1_MAXENTRIES]; /* Next free entry in the TLB1 */ static unsigned int tlb1_idx; -static vm_offset_t tlb1_map_base = VM_MAXUSER_ADDRESS; +static vm_offset_t tlb1_map_base = VM_MAXUSER_ADDRESS + PAGE_SIZE; static tlbtid_t tid_alloc(struct pmap *); static void tid_flush(tlbtid_t tid); From 6e5bbb486cf872ff289d4573cb9d08bf3178b160 Mon Sep 17 00:00:00 2001 From: Muhammad Moinur Rahman Date: Sun, 10 Apr 2016 16:48:21 +0000 Subject: [PATCH 131/159] Add bofh@ in calendar.freebsd --- usr.bin/calendar/calendars/calendar.freebsd | 1 + 1 file changed, 1 insertion(+) diff --git a/usr.bin/calendar/calendars/calendar.freebsd b/usr.bin/calendar/calendars/calendar.freebsd index 091edb3416a..1a5c67b2dd7 100644 --- a/usr.bin/calendar/calendars/calendar.freebsd +++ b/usr.bin/calendar/calendars/calendar.freebsd @@ -373,6 +373,7 @@ 12/15 Timur I. Bakeyev born in Kazan, Republic of Tatarstan, USSR, 1974 12/18 Chris Timmons born in Ellensburg, Washington, United States, 1964 12/18 Dag-Erling Smorgrav born in Brussels, Belgium, 1977 +12/18 Muhammad Moinur Rahman born in Dhaka, Bangladesh, 1983 12/18 Semen Ustimenko born in Novosibirsk, Russian Federation, 1979 12/19 Stephen Hurd born in Estevan, Saskatchewan, Canada, 1975 12/21 Rong-En Fan born in Taipei, Taiwan, Republic of China, 1982 From 513004a23dac3416f8f9c11aaa148bf8606c8617 Mon Sep 17 00:00:00 2001 From: "Pedro F. Giffuni" Date: Sun, 10 Apr 2016 19:33:58 +0000 Subject: [PATCH 132/159] libc: replace 0 with NULL for pointers. While here also cleanup some surrounding code; particularly drop some malloc() casts. Found with devel/coccinelle. Reviewed by: bde (previous version - all new bugs are mine) --- lib/libc/db/hash/hash.c | 2 +- lib/libc/db/hash/hash_buf.c | 4 ++-- lib/libc/gen/err.c | 8 ++++---- lib/libc/gen/getmntinfo.c | 2 +- lib/libc/gen/opendir.c | 2 +- lib/libc/gen/tls.c | 4 ++-- lib/libc/locale/xlocale_private.h | 11 +++++------ lib/libc/net/base64.c | 2 +- lib/libc/net/getifaddrs.c | 3 ++- lib/libc/net/getservent.c | 4 ++-- lib/libc/net/rcmd.c | 2 +- lib/libc/posix1e/acl_support_nfs4.c | 2 +- lib/libc/resolv/mtctxres.c | 11 ++++------- lib/libc/resolv/res_init.c | 4 ++-- lib/libc/resolv/res_mkupdate.c | 4 ++-- lib/libc/rpc/auth_none.c | 6 +++--- lib/libc/rpc/clnt_perror.c | 8 ++++---- lib/libc/rpc/mt_misc.c | 2 +- lib/libc/rpc/rpcdname.c | 10 +++++----- lib/libc/softfloat/timesoftfloat.c | 6 +++--- lib/libc/uuid/uuid_to_string.c | 2 +- lib/libc/xdr/xdr_mem.c | 2 +- 22 files changed, 49 insertions(+), 52 deletions(-) diff --git a/lib/libc/db/hash/hash.c b/lib/libc/db/hash/hash.c index fc4e50eb0b2..f7b14276000 100644 --- a/lib/libc/db/hash/hash.c +++ b/lib/libc/db/hash/hash.c @@ -771,7 +771,7 @@ hash_seq(const DB *dbp, DBT *key, DBT *data, u_int32_t flag) if (__big_keydata(hashp, bufp, key, data, 1)) return (ERROR); } else { - if (hashp->cpage == 0) + if (hashp->cpage == NULL) return (ERROR); key->data = (u_char *)hashp->cpage->page + bp[ndx]; key->size = (ndx > 1 ? bp[ndx - 1] : hashp->BSIZE) - bp[ndx]; diff --git a/lib/libc/db/hash/hash_buf.c b/lib/libc/db/hash/hash_buf.c index e79e7b3efcf..5c62a2c36ea 100644 --- a/lib/libc/db/hash/hash_buf.c +++ b/lib/libc/db/hash/hash_buf.c @@ -245,7 +245,7 @@ newbuf(HTAB *hashp, u_int32_t addr, BUFHEAD *prev_bp) */ for (xbp = bp; xbp->ovfl;) { next_xbp = xbp->ovfl; - xbp->ovfl = 0; + xbp->ovfl = NULL; xbp = next_xbp; /* Check that ovfl pointer is up date. */ @@ -350,7 +350,7 @@ __buf_free(HTAB *hashp, int do_free, int to_disk) void __reclaim_buf(HTAB *hashp, BUFHEAD *bp) { - bp->ovfl = 0; + bp->ovfl = NULL; bp->addr = 0; bp->flags = 0; BUF_REMOVE(bp); diff --git a/lib/libc/gen/err.c b/lib/libc/gen/err.c index a536e5af873..3b32c3d6152 100644 --- a/lib/libc/gen/err.c +++ b/lib/libc/gen/err.c @@ -96,7 +96,7 @@ errc(int eval, int code, const char *fmt, ...) void verrc(int eval, int code, const char *fmt, va_list ap) { - if (err_file == 0) + if (err_file == NULL) err_set_file((FILE *)0); fprintf(err_file, "%s: ", _getprogname()); if (fmt != NULL) { @@ -121,7 +121,7 @@ errx(int eval, const char *fmt, ...) void verrx(int eval, const char *fmt, va_list ap) { - if (err_file == 0) + if (err_file == NULL) err_set_file((FILE *)0); fprintf(err_file, "%s: ", _getprogname()); if (fmt != NULL) @@ -161,7 +161,7 @@ warnc(int code, const char *fmt, ...) void vwarnc(int code, const char *fmt, va_list ap) { - if (err_file == 0) + if (err_file == NULL) err_set_file((FILE *)0); fprintf(err_file, "%s: ", _getprogname()); if (fmt != NULL) { @@ -183,7 +183,7 @@ warnx(const char *fmt, ...) void vwarnx(const char *fmt, va_list ap) { - if (err_file == 0) + if (err_file == NULL) err_set_file((FILE *)0); fprintf(err_file, "%s: ", _getprogname()); if (fmt != NULL) diff --git a/lib/libc/gen/getmntinfo.c b/lib/libc/gen/getmntinfo.c index 99f82aa8fc6..606fea73fbc 100644 --- a/lib/libc/gen/getmntinfo.c +++ b/lib/libc/gen/getmntinfo.c @@ -56,7 +56,7 @@ getmntinfo(struct statfs **mntbufp, int flags) if (mntbuf) free(mntbuf); bufsize = (mntsize + 1) * sizeof(struct statfs); - if ((mntbuf = (struct statfs *)malloc(bufsize)) == 0) + if ((mntbuf = malloc(bufsize)) == NULL) return (0); if ((mntsize = getfsstat(mntbuf, bufsize, flags)) < 0) return (0); diff --git a/lib/libc/gen/opendir.c b/lib/libc/gen/opendir.c index 54928e73d60..bf4dea3ffc8 100644 --- a/lib/libc/gen/opendir.c +++ b/lib/libc/gen/opendir.c @@ -209,7 +209,7 @@ _filldir(DIR *dirp, bool use_current_pos) * On the second pass, save pointers to each one. * Then sort the pointers and remove duplicate names. */ - for (dpv = 0;;) { + for (dpv = NULL;;) { n = 0; ddptr = buf; while (ddptr < ddeptr) { diff --git a/lib/libc/gen/tls.c b/lib/libc/gen/tls.c index 79320553050..dd1e7dfac77 100644 --- a/lib/libc/gen/tls.c +++ b/lib/libc/gen/tls.c @@ -285,7 +285,7 @@ _init_tls(void) while (*sp++ != 0) ; aux = (Elf_Auxinfo *) sp; - phdr = 0; + phdr = NULL; phent = phnum = 0; for (auxp = aux; auxp->a_type != AT_NULL; auxp++) { switch (auxp->a_type) { @@ -302,7 +302,7 @@ _init_tls(void) break; } } - if (phdr == 0 || phent != sizeof(Elf_Phdr) || phnum == 0) + if (phdr == NULL || phent != sizeof(Elf_Phdr) || phnum == 0) return; for (i = 0; (unsigned) i < phnum; i++) { diff --git a/lib/libc/locale/xlocale_private.h b/lib/libc/locale/xlocale_private.h index 502b5486e68..77b9ff4ee44 100644 --- a/lib/libc/locale/xlocale_private.h +++ b/lib/libc/locale/xlocale_private.h @@ -155,12 +155,11 @@ __attribute__((unused)) static void xlocale_release(void *val) { struct xlocale_refcounted *obj = val; - long count = atomic_fetchadd_long(&(obj->retain_count), -1) - 1; - if (count < 0) { - if (0 != obj->destructor) { - obj->destructor(obj); - } - } + long count; + + count = atomic_fetchadd_long(&(obj->retain_count), -1) - 1; + if (count < 0 && obj->destructor != NULL) + obj->destructor(obj); } /** diff --git a/lib/libc/net/base64.c b/lib/libc/net/base64.c index 8a9c59e3142..2c4cfe3695c 100644 --- a/lib/libc/net/base64.c +++ b/lib/libc/net/base64.c @@ -210,7 +210,7 @@ b64_pton(const char *src, u_char *target, size_t targsize) break; pos = strchr(Base64, ch); - if (pos == 0) /* A non-base64 character. */ + if (pos == NULL) /* A non-base64 character. */ return (-1); switch (state) { diff --git a/lib/libc/net/getifaddrs.c b/lib/libc/net/getifaddrs.c index f8633d5b959..4c04e9ef059 100644 --- a/lib/libc/net/getifaddrs.c +++ b/lib/libc/net/getifaddrs.c @@ -85,7 +85,7 @@ getifaddrs(struct ifaddrs **pif) size_t needed; char *buf; char *next; - struct ifaddrs *cif = 0; + struct ifaddrs *cif; char *p, *p0; struct rt_msghdr *rtm; struct if_msghdrl *ifm; @@ -214,6 +214,7 @@ getifaddrs(struct ifaddrs **pif) ift = ifa; idx = 0; + cif = NULL; for (next = buf; next < buf + needed; next += rtm->rtm_msglen) { rtm = (struct rt_msghdr *)(void *)next; if (rtm->rtm_version != RTM_VERSION) diff --git a/lib/libc/net/getservent.c b/lib/libc/net/getservent.c index 6a68ef508d5..45a5355245b 100644 --- a/lib/libc/net/getservent.c +++ b/lib/libc/net/getservent.c @@ -406,14 +406,14 @@ files_servent(void *retval, void *mdata, va_list ap) continue; gotname: - if (proto == 0 || strcmp(serv->s_proto, proto) == 0) + if (proto == NULL || strcmp(serv->s_proto, proto) == 0) rv = NS_SUCCESS; break; case nss_lt_id: if (port != serv->s_port) continue; - if (proto == 0 || strcmp(serv->s_proto, proto) == 0) + if (proto == NULL || strcmp(serv->s_proto, proto) == 0) rv = NS_SUCCESS; break; case nss_lt_all: diff --git a/lib/libc/net/rcmd.c b/lib/libc/net/rcmd.c index c7ca87066c9..7b92f081626 100644 --- a/lib/libc/net/rcmd.c +++ b/lib/libc/net/rcmd.c @@ -207,7 +207,7 @@ rcmd_af(char **ahost, int rport, const char *locuser, const char *remuser, } } lport--; - if (fd2p == 0) { + if (fd2p == NULL) { _write(s, "", 1); lport = 0; } else { diff --git a/lib/libc/posix1e/acl_support_nfs4.c b/lib/libc/posix1e/acl_support_nfs4.c index 1eece989ad3..7dd7f04daaf 100644 --- a/lib/libc/posix1e/acl_support_nfs4.c +++ b/lib/libc/posix1e/acl_support_nfs4.c @@ -81,7 +81,7 @@ static const char * format_flag(uint32_t *var, const struct flagnames_struct *flags) { - for (; flags->name != 0; flags++) { + for (; flags->name != NULL; flags++) { if ((flags->flag & *var) == 0) continue; diff --git a/lib/libc/resolv/mtctxres.c b/lib/libc/resolv/mtctxres.c index f02a7f50281..c2aea381761 100644 --- a/lib/libc/resolv/mtctxres.c +++ b/lib/libc/resolv/mtctxres.c @@ -75,7 +75,7 @@ __res_init_ctx(void) { return (0); } - if ((mt = malloc(sizeof (mtctxres_t))) == 0) { + if ((mt = malloc(sizeof(mtctxres_t))) == NULL) { errno = ENOMEM; return (-1); } @@ -94,10 +94,7 @@ __res_init_ctx(void) { static void __res_destroy_ctx(void *value) { - mtctxres_t *mt = (mtctxres_t *)value; - - if (mt != 0) - free(mt); + free(value); } #endif @@ -130,9 +127,9 @@ ___mtctxres(void) { * that fails return a global context. */ if (mt_key_initialized) { - if (((mt = pthread_getspecific(key)) != 0) || + if (((mt = pthread_getspecific(key)) != NULL) || (__res_init_ctx() == 0 && - (mt = pthread_getspecific(key)) != 0)) { + (mt = pthread_getspecific(key)) != NULL)) { return (mt); } } diff --git a/lib/libc/resolv/res_init.c b/lib/libc/resolv/res_init.c index 8832342b105..98563222d1a 100644 --- a/lib/libc/resolv/res_init.c +++ b/lib/libc/resolv/res_init.c @@ -315,7 +315,7 @@ __res_vinit(res_state statp, int preinit) { while (*cp != '\0' && *cp != ' ' && *cp != '\t' && *cp != '\n') cp++; *cp = '\0'; - *pp++ = 0; + *pp++ = NULL; } #define MATCH(line, name) \ @@ -391,7 +391,7 @@ __res_vinit(res_state statp, int preinit) { while (*cp != '\0' && *cp != ' ' && *cp != '\t') cp++; *cp = '\0'; - *pp++ = 0; + *pp++ = NULL; havesearch = 1; continue; } diff --git a/lib/libc/resolv/res_mkupdate.c b/lib/libc/resolv/res_mkupdate.c index c076c1e588c..3ebb24238d2 100644 --- a/lib/libc/resolv/res_mkupdate.c +++ b/lib/libc/resolv/res_mkupdate.c @@ -1175,7 +1175,7 @@ res_protocolname(int num) { if (protolist == (struct valuelist *)0) res_buildprotolist(); pp = cgetprotobynumber(num); - if (pp == 0) { + if (pp == NULL) { (void) sprintf(number, "%d", num); return (number); } @@ -1190,7 +1190,7 @@ res_servicename(u_int16_t port, const char *proto) { /*%< Host byte order. */ if (servicelist == (struct valuelist *)0) res_buildservicelist(); ss = cgetservbyport(htons(port), proto); - if (ss == 0) { + if (ss == NULL) { (void) sprintf(number, "%d", port); return (number); } diff --git a/lib/libc/rpc/auth_none.c b/lib/libc/rpc/auth_none.c index 0b846ebc9b1..32bebebf339 100644 --- a/lib/libc/rpc/auth_none.c +++ b/lib/libc/rpc/auth_none.c @@ -83,9 +83,9 @@ authnone_create(void) XDR *xdrs; mutex_lock(&authnone_lock); - if (ap == 0) { - ap = (struct authnone_private *)calloc(1, sizeof (*ap)); - if (ap == 0) { + if (ap == NULL) { + ap = calloc(1, sizeof (*ap)); + if (ap == NULL) { mutex_unlock(&authnone_lock); return (0); } diff --git a/lib/libc/rpc/clnt_perror.c b/lib/libc/rpc/clnt_perror.c index 15d72803df7..d674fbb3847 100644 --- a/lib/libc/rpc/clnt_perror.c +++ b/lib/libc/rpc/clnt_perror.c @@ -64,8 +64,8 @@ static char * _buf(void) { - if (buf == 0) - buf = (char *)malloc(CLNT_PERROR_BUFLEN); + if (buf == NULL) + buf = malloc(CLNT_PERROR_BUFLEN); return (buf); } @@ -85,7 +85,7 @@ clnt_sperror(CLIENT *rpch, const char *s) assert(s != NULL); str = _buf(); /* side effect: sets CLNT_PERROR_BUFLEN */ - if (str == 0) + if (str == NULL) return (0); len = CLNT_PERROR_BUFLEN; strstart = str; @@ -240,7 +240,7 @@ clnt_spcreateerror(const char *s) assert(s != NULL); str = _buf(); /* side effect: sets CLNT_PERROR_BUFLEN */ - if (str == 0) + if (str == NULL) return(0); len = CLNT_PERROR_BUFLEN; i = snprintf(str, len, "%s: ", s); diff --git a/lib/libc/rpc/mt_misc.c b/lib/libc/rpc/mt_misc.c index 0ec4d8a8b79..a1b8057bef8 100644 --- a/lib/libc/rpc/mt_misc.c +++ b/lib/libc/rpc/mt_misc.c @@ -95,7 +95,7 @@ rce_key_init(void) struct rpc_createerr * __rpc_createerr(void) { - struct rpc_createerr *rce_addr = 0; + struct rpc_createerr *rce_addr = NULL; if (thr_main()) return (&rpc_createerr); diff --git a/lib/libc/rpc/rpcdname.c b/lib/libc/rpc/rpcdname.c index f214b2122d5..08b5d7d49fc 100644 --- a/lib/libc/rpc/rpcdname.c +++ b/lib/libc/rpc/rpcdname.c @@ -43,20 +43,20 @@ __FBSDID("$FreeBSD$"); #include #include "un-namespace.h" -static char *default_domain = 0; +static char *default_domain; static char * get_default_domain(void) { char temp[256]; - if (default_domain) + if (default_domain != NULL) return (default_domain); if (getdomainname(temp, sizeof(temp)) < 0) return (0); if ((int) strlen(temp) > 0) { - default_domain = (char *)malloc((strlen(temp)+(unsigned)1)); - if (default_domain == 0) + default_domain = malloc((strlen(temp) + (unsigned)1)); + if (default_domain == NULL) return (0); (void) strcpy(default_domain, temp); return (default_domain); @@ -73,7 +73,7 @@ get_default_domain(void) int __rpc_get_default_domain(char **domain) { - if ((*domain = get_default_domain()) != 0) + if ((*domain = get_default_domain()) != NULL) return (0); return (-1); } diff --git a/lib/libc/softfloat/timesoftfloat.c b/lib/libc/softfloat/timesoftfloat.c index 98b6ba2eb3b..b97c8b0f0d0 100644 --- a/lib/libc/softfloat/timesoftfloat.c +++ b/lib/libc/softfloat/timesoftfloat.c @@ -2068,14 +2068,14 @@ static void roundingPrecisionName = "80"; } else { - roundingPrecisionName = 0; + roundingPrecisionName = NULL; } #ifdef FLOATX80 floatx80_rounding_precision = roundingPrecision; #endif switch ( roundingMode ) { case 0: - roundingModeName = 0; + roundingModeName = NULL; roundingCode = float_round_nearest_even; break; case ROUND_NEAREST_EVEN: @@ -2098,7 +2098,7 @@ static void float_rounding_mode = roundingCode; switch ( tininessMode ) { case 0: - tininessModeName = 0; + tininessModeName = NULL; tininessCode = float_tininess_after_rounding; break; case TININESS_BEFORE_ROUNDING: diff --git a/lib/libc/uuid/uuid_to_string.c b/lib/libc/uuid/uuid_to_string.c index f816391f2a4..35f8581bfe0 100644 --- a/lib/libc/uuid/uuid_to_string.c +++ b/lib/libc/uuid/uuid_to_string.c @@ -49,7 +49,7 @@ uuid_to_string(const uuid_t *u, char **s, uint32_t *status) *status = uuid_s_ok; /* Why allow a NULL-pointer here? */ - if (s == 0) + if (s == NULL) return; if (u == NULL) { diff --git a/lib/libc/xdr/xdr_mem.c b/lib/libc/xdr/xdr_mem.c index 0455a5a2a7e..ecefb2ec38d 100644 --- a/lib/libc/xdr/xdr_mem.c +++ b/lib/libc/xdr/xdr_mem.c @@ -215,7 +215,7 @@ xdrmem_setpos(XDR *xdrs, u_int pos) static int32_t * xdrmem_inline_aligned(XDR *xdrs, u_int len) { - int32_t *buf = 0; + int32_t *buf = NULL; if (xdrs->x_handy >= len) { xdrs->x_handy -= len; From abafa4db03434abdf9cc7115eb64e54c601fa861 Mon Sep 17 00:00:00 2001 From: "Pedro F. Giffuni" Date: Sun, 10 Apr 2016 21:48:11 +0000 Subject: [PATCH 133/159] ufs: replace 0 with NULL for pointers. While here also do late initialization of the variables we are changing. Found with devel/coccinelle. Reviewed by: mckusick MFC after: 2 weeks --- sys/ufs/ffs/ffs_alloc.c | 11 +++++++---- sys/ufs/ffs/ffs_snapshot.c | 4 ++-- sys/ufs/ffs/ffs_softdep.c | 33 ++++++++++++++++++--------------- sys/ufs/ufs/ufs_lookup.c | 3 ++- 4 files changed, 29 insertions(+), 22 deletions(-) diff --git a/sys/ufs/ffs/ffs_alloc.c b/sys/ufs/ffs/ffs_alloc.c index 799efe3fa94..feaa14fa78b 100644 --- a/sys/ufs/ffs/ffs_alloc.c +++ b/sys/ufs/ffs/ffs_alloc.c @@ -259,7 +259,6 @@ ffs_realloccg(ip, lbprev, bprev, bpref, osize, nsize, flags, cred, bpp) static int curfail; int64_t delta; - *bpp = 0; vp = ITOV(ip); fs = ip->i_fs; bp = NULL; @@ -319,6 +318,7 @@ ffs_realloccg(ip, lbprev, bprev, bpref, osize, nsize, flags, cred, bpp) /* * Check for extension in the existing location. */ + *bpp = NULL; cg = dtog(fs, bprev); UFS_LOCK(ump); bno = ffs_fragextend(ip, cg, bprev, osize, nsize); @@ -518,7 +518,7 @@ ffs_reallocblks_ufs1(ap) struct inode *ip; struct vnode *vp; struct buf *sbp, *ebp; - ufs1_daddr_t *bap, *sbap, *ebap = 0; + ufs1_daddr_t *bap, *sbap, *ebap; struct cluster_save *buflist; struct ufsmount *ump; ufs_lbn_t start_lbn, end_lbn; @@ -598,6 +598,7 @@ ffs_reallocblks_ufs1(ap) /* * If the block range spans two block maps, get the second map. */ + ebap = NULL; if (end_lvl == 0 || (idp = &end_ap[end_lvl - 1])->in_off + 1 >= len) { ssize = len; } else { @@ -767,7 +768,7 @@ ffs_reallocblks_ufs2(ap) struct inode *ip; struct vnode *vp; struct buf *sbp, *ebp; - ufs2_daddr_t *bap, *sbap, *ebap = 0; + ufs2_daddr_t *bap, *sbap, *ebap; struct cluster_save *buflist; struct ufsmount *ump; ufs_lbn_t start_lbn, end_lbn; @@ -846,6 +847,7 @@ ffs_reallocblks_ufs2(ap) /* * If the block range spans two block maps, get the second map. */ + ebap = NULL; if (end_lvl == 0 || (idp = &end_ap[end_lvl - 1])->in_off + 1 >= len) { ssize = len; } else { @@ -2784,7 +2786,8 @@ sysctl_ffs_fsck(SYSCTL_HANDLER_ARGS) return (EINVAL); } vn_start_write(vp, &mp, V_WAIT); - if (mp == 0 || strncmp(mp->mnt_stat.f_fstypename, "ufs", MFSNAMELEN)) { + if (mp == NULL || + strncmp(mp->mnt_stat.f_fstypename, "ufs", MFSNAMELEN)) { vn_finished_write(mp); fdrop(fp, td); return (EINVAL); diff --git a/sys/ufs/ffs/ffs_snapshot.c b/sys/ufs/ffs/ffs_snapshot.c index 099faeb77f1..59ae322686d 100644 --- a/sys/ufs/ffs/ffs_snapshot.c +++ b/sys/ufs/ffs/ffs_snapshot.c @@ -1896,7 +1896,7 @@ ffs_snapblkfree(fs, devvp, bno, size, inum, vtype, wkhd) * dopersistence sysctl-setable flag to decide on the * persistence needed for file content data. */ - if (savedcbp != 0) { + if (savedcbp != NULL) { bcopy(savedcbp->b_data, cbp->b_data, fs->fs_bsize); bawrite(cbp); if ((vtype == VDIR || dopersistence) && @@ -2388,7 +2388,7 @@ ffs_copyonwrite(devvp, bp) * dopersistence sysctl-setable flag to decide on the * persistence needed for file content data. */ - if (savedcbp != 0) { + if (savedcbp != NULL) { bcopy(savedcbp->b_data, cbp->b_data, fs->fs_bsize); bawrite(cbp); if ((devvp == bp->b_vp || bp->b_vp->v_type == VDIR || diff --git a/sys/ufs/ffs/ffs_softdep.c b/sys/ufs/ffs/ffs_softdep.c index bc0693a65aa..5b25b9efd0d 100644 --- a/sys/ufs/ffs/ffs_softdep.c +++ b/sys/ufs/ffs/ffs_softdep.c @@ -1869,7 +1869,7 @@ softdep_move_dependencies(oldbp, newbp) if (wk->wk_type == D_BMSAFEMAP && bmsafemap_backgroundwrite(WK_BMSAFEMAP(wk), newbp)) dirty = 1; - if (wktail == 0) + if (wktail == NULL) LIST_INSERT_HEAD(&newbp->b_dep, wk, wk_list); else LIST_INSERT_AFTER(wktail, wk, wk_list); @@ -6675,7 +6675,7 @@ softdep_journal_freeblocks(ip, cred, length, flags) } } if ((flags & IO_EXT) != 0) - while ((adp = TAILQ_FIRST(&inodedep->id_extupdt)) != 0) + while ((adp = TAILQ_FIRST(&inodedep->id_extupdt)) != NULL) cancel_allocdirect(&inodedep->id_extupdt, adp, freeblks); /* @@ -6928,14 +6928,14 @@ softdep_setup_freeblocks(ip, length, flags) if (flags & IO_NORMAL) { merge_inode_lists(&inodedep->id_newinoupdt, &inodedep->id_inoupdt); - while ((adp = TAILQ_FIRST(&inodedep->id_inoupdt)) != 0) + while ((adp = TAILQ_FIRST(&inodedep->id_inoupdt)) != NULL) cancel_allocdirect(&inodedep->id_inoupdt, adp, freeblks); } if (flags & IO_EXT) { merge_inode_lists(&inodedep->id_newextupdt, &inodedep->id_extupdt); - while ((adp = TAILQ_FIRST(&inodedep->id_extupdt)) != 0) + while ((adp = TAILQ_FIRST(&inodedep->id_extupdt)) != NULL) cancel_allocdirect(&inodedep->id_extupdt, adp, freeblks); } @@ -8050,8 +8050,8 @@ indir_trunc(freework, dbn, lbn) struct fs *fs; struct indirdep *indirdep; struct ufsmount *ump; - ufs1_daddr_t *bap1 = 0; - ufs2_daddr_t nb, nnb, *bap2 = 0; + ufs1_daddr_t *bap1; + ufs2_daddr_t nb, nnb, *bap2; ufs_lbn_t lbnadd, nlbn; int i, nblocks, ufs1fmt; int freedblocks; @@ -8134,10 +8134,12 @@ indir_trunc(freework, dbn, lbn) bap1 = (ufs1_daddr_t *)bp->b_data; nb = bap1[freework->fw_off]; ufs1fmt = 1; + bap2 = NULL; } else { bap2 = (ufs2_daddr_t *)bp->b_data; nb = bap2[freework->fw_off]; ufs1fmt = 0; + bap1 = NULL; } level = lbn_level(lbn); needj = MOUNTEDSUJ(UFSTOVFS(ump)) != 0; @@ -8312,7 +8314,7 @@ setup_newdir(dap, newinum, dinum, newdirbp, mkdirp) struct newblk *newblk; struct pagedep *pagedep; struct inodedep *inodedep; - struct newdirblk *newdirblk = 0; + struct newdirblk *newdirblk; struct mkdir *mkdir1, *mkdir2; struct worklist *wk; struct jaddref *jaddref; @@ -8439,7 +8441,7 @@ softdep_setup_directory_add(bp, dp, diroffset, newinum, newdirbp, isnewblk) struct newblk *newblk; struct pagedep *pagedep; struct inodedep *inodedep; - struct newdirblk *newdirblk = 0; + struct newdirblk *newdirblk; struct mkdir *mkdir1, *mkdir2; struct jaddref *jaddref; struct ufsmount *ump; @@ -8471,6 +8473,7 @@ softdep_setup_directory_add(bp, dp, diroffset, newinum, newdirbp, isnewblk) dap->da_state = ATTACHED; LIST_INIT(&dap->da_jwork); isindir = bp->b_lblkno >= NDADDR; + newdirblk = NULL; if (isnewblk && (isindir ? blkoff(fs, diroffset) : fragoff(fs, diroffset)) == 0) { newdirblk = malloc(sizeof(struct newdirblk), @@ -8561,7 +8564,7 @@ softdep_setup_directory_add(bp, dp, diroffset, newinum, newdirbp, isnewblk) inodedep->id_mkdiradd = dap; } else if (inodedep->id_mkdiradd) merge_diradd(inodedep, dap); - if (newdirblk) { + if (newdirblk != NULL) { /* * There is nothing to do if we are already tracking * this block. @@ -10538,13 +10541,13 @@ cancel_indirdep(indirdep, bp, freeblks) * Pass in bp for blocks still have journal writes * pending so we can cancel them on their own. */ - while ((aip = LIST_FIRST(&indirdep->ir_deplisthd)) != 0) + while ((aip = LIST_FIRST(&indirdep->ir_deplisthd)) != NULL) cancel_allocindir(aip, bp, freeblks, 0); - while ((aip = LIST_FIRST(&indirdep->ir_donehd)) != 0) + while ((aip = LIST_FIRST(&indirdep->ir_donehd)) != NULL) cancel_allocindir(aip, NULL, freeblks, 0); - while ((aip = LIST_FIRST(&indirdep->ir_writehd)) != 0) + while ((aip = LIST_FIRST(&indirdep->ir_writehd)) != NULL) cancel_allocindir(aip, NULL, freeblks, 0); - while ((aip = LIST_FIRST(&indirdep->ir_completehd)) != 0) + while ((aip = LIST_FIRST(&indirdep->ir_completehd)) != NULL) cancel_allocindir(aip, NULL, freeblks, 0); /* * If there are pending partial truncations we need to keep the @@ -11574,7 +11577,7 @@ handle_written_indirdep(indirdep, bp, bpp) * the indirdep's pointer is not yet written. Otherwise * free them here. */ - while ((aip = LIST_FIRST(&indirdep->ir_writehd)) != 0) { + while ((aip = LIST_FIRST(&indirdep->ir_writehd)) != NULL) { LIST_REMOVE(aip, ai_next); if ((indirdep->ir_state & DEPCOMPLETE) == 0) { LIST_INSERT_HEAD(&indirdep->ir_completehd, aip, @@ -11589,7 +11592,7 @@ handle_written_indirdep(indirdep, bp, bpp) * the done list to the write list after updating the pointers. */ if (TAILQ_EMPTY(&indirdep->ir_trunc)) { - while ((aip = LIST_FIRST(&indirdep->ir_donehd)) != 0) { + while ((aip = LIST_FIRST(&indirdep->ir_donehd)) != NULL) { handle_allocindir_partdone(aip); if (aip == LIST_FIRST(&indirdep->ir_donehd)) panic("disk_write_complete: not gone"); diff --git a/sys/ufs/ufs/ufs_lookup.c b/sys/ufs/ufs/ufs_lookup.c index 408349e28e6..972cee1797c 100644 --- a/sys/ufs/ufs/ufs_lookup.c +++ b/sys/ufs/ufs/ufs_lookup.c @@ -1256,7 +1256,8 @@ ufs_dirremove(dvp, ip, flags, isrmdir) * drop its snapshot reference so that it will be reclaimed * when last open reference goes away. */ - if (ip != 0 && (ip->i_flags & SF_SNAPSHOT) != 0 && ip->i_effnlink == 0) + if (ip != NULL && (ip->i_flags & SF_SNAPSHOT) != 0 && + ip->i_effnlink == 0) UFS_SNAPGONE(ip); return (error); } From 61a4e586d4ea3a05c656c094b62a1e550737086c Mon Sep 17 00:00:00 2001 From: Marius Strobl Date: Sun, 10 Apr 2016 22:43:36 +0000 Subject: [PATCH 134/159] Since r296250 it is no longer possible for devices to use bus space addresses exceeding 32 bit, so bump BUS_SPACE_MAXADDR to 64 bit. The whole situation is sub par, though; prior to r296250 and despite what their names imply, BUS_SPACE_MAX* were primarily, even almost exclusively used for bus_dma(9). Now these macros also have a vital role for bus_space(9). However, it does not necessarily hold that both bus DMA and space addresses universally have the same limits per platform. As for sparc64, 64 bit clearly is beyond what can be addressed via the various IOMMUs. With this change in place, we now rely on the parent bus DMA tags of the host-to-foo drivers causing the child tags to be capped as necessary. PR: 207998 --- sys/sparc64/include/bus.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/sparc64/include/bus.h b/sys/sparc64/include/bus.h index 9cdd2081597..6ff8c7ccd06 100644 --- a/sys/sparc64/include/bus.h +++ b/sys/sparc64/include/bus.h @@ -98,7 +98,7 @@ extern const int bus_stream_asi[]; #define BUS_SPACE_MAXSIZE 0xFFFFFFFFFFFFFFFF #define BUS_SPACE_MAXADDR_24BIT 0xFFFFFF #define BUS_SPACE_MAXADDR_32BIT 0xFFFFFFFF -#define BUS_SPACE_MAXADDR 0xFFFFFFFF +#define BUS_SPACE_MAXADDR 0xFFFFFFFFFFFFFFFF #define BUS_SPACE_UNRESTRICTED (~0) From 74b8d63dcc17c07d8cb21e13f6db517698efd49f Mon Sep 17 00:00:00 2001 From: "Pedro F. Giffuni" Date: Sun, 10 Apr 2016 23:07:00 +0000 Subject: [PATCH 135/159] Cleanup unnecessary semicolons from the kernel. Found with devel/coccinelle. --- sys/arm/altera/socfpga/socfpga_rstmgr.c | 2 +- sys/arm/amlogic/aml8726/aml8726_sdxc-m8.c | 2 +- sys/arm/arm/disassem.c | 2 +- sys/arm/arm/vm_machdep.c | 2 +- sys/arm/freescale/imx/imx6_sdma.c | 2 +- sys/arm/freescale/imx/imx6_ssi.c | 2 +- sys/arm/freescale/vybrid/vf_ccm.c | 10 +- sys/arm/freescale/vybrid/vf_edma.c | 6 +- sys/arm/freescale/vybrid/vf_port.c | 2 +- sys/arm/freescale/vybrid/vf_sai.c | 12 +- sys/arm/mv/mv_pci.c | 2 +- sys/arm/samsung/exynos/chrome_ec.c | 4 +- sys/arm/samsung/exynos/chrome_ec_spi.c | 4 +- sys/arm/samsung/exynos/chrome_kb.c | 14 +- sys/arm/samsung/exynos/exynos5_i2c.c | 6 +- sys/arm/samsung/exynos/exynos5_pad.c | 8 +- sys/arm64/cavium/thunder_pcie_pem.c | 2 +- sys/boot/arm/at91/libat91/sd-card.c | 2 +- sys/boot/common/part.c | 2 +- sys/boot/userboot/test/test.c | 2 +- sys/boot/userboot/userboot/elf64_freebsd.c | 2 +- sys/cam/ctl/ctl_ha.c | 2 +- sys/compat/linprocfs/linprocfs.c | 2 +- sys/dev/aac/aac.c | 2 +- sys/dev/aacraid/aacraid.c | 4 +- sys/dev/ahci/ahci_pci.c | 2 +- sys/dev/ata/chipsets/ata-intel.c | 2 +- sys/dev/ath/ath_hal/ar5416/ar5416_radar.c | 2 +- sys/dev/ath/if_ath.c | 1 - sys/dev/bhnd/bcma/bcma_erom.c | 4 +- sys/dev/bhnd/bhndb/bhndb_pci.c | 2 +- sys/dev/bhnd/cores/chipc/chipc.c | 2 +- sys/dev/bhnd/siba/siba.c | 2 +- sys/dev/bktr/bktr_core.c | 4 +- sys/dev/bktr/bktr_os.c | 2 +- sys/dev/bxe/bxe.c | 2 +- sys/dev/cxgbe/iw_cxgbe/mem.c | 2 +- sys/dev/cxgbe/t4_main.c | 2 +- sys/dev/drm2/radeon/radeon_bios.c | 2 +- sys/dev/etherswitch/arswitch/arswitch.c | 2 +- sys/dev/etherswitch/arswitch/arswitch_8327.c | 2 +- sys/dev/etherswitch/ip17x/ip175c.c | 2 +- sys/dev/etherswitch/ip17x/ip175d.c | 2 +- sys/dev/hwpmc/hwpmc_mips.c | 4 +- sys/dev/hyperv/utilities/hv_heartbeat.c | 2 +- sys/dev/hyperv/utilities/hv_kvp.c | 2 +- sys/dev/hyperv/utilities/hv_shutdown.c | 2 +- sys/dev/ie/if_ie_isa.c | 2 +- sys/dev/ixgbe/if_ix.c | 2 +- sys/dev/ixgbe/ixgbe_common.c | 4 +- sys/dev/mii/mii_physubr.c | 2 +- sys/dev/mmc/host/dwmmc.c | 2 +- sys/dev/mvs/mvs.c | 2 +- sys/dev/nand/nand.c | 2 +- sys/dev/nand/nandsim_chip.c | 2 +- sys/dev/ncr/ncr.c | 150 +++++++++--------- sys/dev/nfe/if_nfe.c | 2 +- sys/dev/oce/oce_mbox.c | 4 +- sys/dev/oce/oce_sysctl.c | 2 +- sys/dev/ow/ow.c | 2 +- sys/dev/patm/if_patm_attach.c | 2 +- sys/dev/pcf/pcf.c | 2 +- sys/dev/pdq/pdq.c | 2 +- sys/dev/qlxgbe/ql_hw.c | 4 +- sys/dev/ral/rt2860.c | 2 +- sys/dev/rt/if_rt.c | 2 +- sys/dev/sound/midi/midi.c | 4 +- sys/dev/sound/pci/hda/hdaa.c | 8 +- sys/dev/sym/sym_hipd.c | 64 ++++---- sys/dev/tdfx/tdfx_pci.c | 2 +- sys/dev/ti/if_ti.c | 6 +- sys/dev/uart/uart_dev_msm.c | 2 +- sys/dev/usb/net/if_mos.c | 2 +- sys/dev/usb/net/if_ure.c | 2 +- sys/dev/vt/vt_core.c | 2 +- sys/fs/nandfs/nandfs_segment.c | 6 +- sys/fs/nfs/nfs_commonacl.c | 4 +- sys/fs/nfs/nfs_commonport.c | 2 +- sys/fs/nfs/nfs_commonsubs.c | 10 +- sys/fs/nfsclient/nfs_clbio.c | 4 +- sys/fs/nfsclient/nfs_clport.c | 2 +- sys/fs/nfsclient/nfs_clrpcops.c | 6 +- sys/fs/nfsclient/nfs_clstate.c | 4 +- sys/fs/nfsclient/nfs_clvnops.c | 2 +- sys/fs/nfsserver/nfs_nfsdport.c | 8 +- sys/fs/nfsserver/nfs_nfsdserv.c | 28 ++-- sys/fs/nfsserver/nfs_nfsdsocket.c | 2 +- sys/fs/nfsserver/nfs_nfsdsubs.c | 2 +- sys/fs/smbfs/smbfs_io.c | 2 +- sys/fs/smbfs/smbfs_subr.c | 1 - sys/fs/smbfs/smbfs_vnops.c | 2 +- sys/fs/tmpfs/tmpfs_subr.c | 2 +- sys/fs/unionfs/union_subr.c | 4 +- sys/geom/raid/md_promise.c | 2 +- sys/geom/sched/g_sched.c | 2 +- sys/kern/vfs_vnops.c | 2 +- sys/kgssapi/gss_impl.c | 2 +- sys/mips/mips/db_disasm.c | 6 +- sys/mips/mips/db_trace.c | 4 +- sys/net/if_gif.c | 2 +- sys/net/if_gre.c | 4 +- sys/netgraph/netflow/ng_netflow.c | 2 +- sys/netgraph/ng_base.c | 2 +- sys/netgraph/ng_ipfw.c | 4 +- sys/netgraph/ng_nat.c | 2 +- sys/netpfil/ipfw/ip_fw_sockopt.c | 2 +- sys/netsmb/smb_subr.c | 2 +- .../infiniband/hw/mthca/mthca_provider.c | 2 +- sys/ofed/drivers/net/mlx4/cmd.c | 2 +- sys/ofed/drivers/net/mlx4/eq.c | 2 +- sys/pc98/cbus/olpt.c | 2 +- sys/powerpc/powermac/fcu.c | 2 +- sys/powerpc/powermac/pmu.c | 2 +- sys/powerpc/powermac/smu.c | 2 +- sys/rpc/clnt_bck.c | 2 +- sys/sparc64/sparc64/db_disasm.c | 4 +- sys/x86/cpufreq/smist.c | 2 +- 117 files changed, 291 insertions(+), 293 deletions(-) diff --git a/sys/arm/altera/socfpga/socfpga_rstmgr.c b/sys/arm/altera/socfpga/socfpga_rstmgr.c index 36a1d755821..49db05ef4a1 100644 --- a/sys/arm/altera/socfpga/socfpga_rstmgr.c +++ b/sys/arm/altera/socfpga/socfpga_rstmgr.c @@ -145,7 +145,7 @@ rstmgr_sysctl(SYSCTL_HANDLER_ARGS) break; default: return (1); - }; + } reg = READ4(sc, RSTMGR_BRGMODRST); enable = reg & bit ? 0 : 1; diff --git a/sys/arm/amlogic/aml8726/aml8726_sdxc-m8.c b/sys/arm/amlogic/aml8726/aml8726_sdxc-m8.c index 3daa99fd8a4..75825fb9353 100644 --- a/sys/arm/amlogic/aml8726/aml8726_sdxc-m8.c +++ b/sys/arm/amlogic/aml8726/aml8726_sdxc-m8.c @@ -621,7 +621,7 @@ aml8726_sdxc_intr(void *arg) stop = 1; if ((sndr & AML_SDXC_SEND_RESP_136) != 0) { start = 1; - stop = start + 4;; + stop = start + 4; } for (i = start; i < stop; i++) { pdmar = CSR_READ_4(sc, AML_SDXC_PDMA_REG); diff --git a/sys/arm/arm/disassem.c b/sys/arm/arm/disassem.c index dbe533a4ab0..b7aa099c833 100644 --- a/sys/arm/arm/disassem.c +++ b/sys/arm/arm/disassem.c @@ -523,7 +523,7 @@ disasm(const disasm_interface_t *di, vm_offset_t loc, int altfmt) else di->di_printf(", "); } - }; + } di->di_printf("\n"); diff --git a/sys/arm/arm/vm_machdep.c b/sys/arm/arm/vm_machdep.c index fdab1c685b5..fec2ca034fd 100644 --- a/sys/arm/arm/vm_machdep.c +++ b/sys/arm/arm/vm_machdep.c @@ -148,7 +148,7 @@ cpu_fork(register struct thread *td1, register struct proc *p2, /* Setup to release spin count in fork_exit(). */ td2->td_md.md_spinlock_count = 1; - td2->td_md.md_saved_cspr = PSR_SVC32_MODE;; + td2->td_md.md_saved_cspr = PSR_SVC32_MODE; #if __ARM_ARCH >= 6 td2->td_md.md_tp = td1->td_md.md_tp; #else diff --git a/sys/arm/freescale/imx/imx6_sdma.c b/sys/arm/freescale/imx/imx6_sdma.c index ae9a3390cc5..4839270e7cc 100644 --- a/sys/arm/freescale/imx/imx6_sdma.c +++ b/sys/arm/freescale/imx/imx6_sdma.c @@ -444,7 +444,7 @@ boot_firmware(struct sdma_softc *sc) if (timeout-- <= 0) break; DELAY(10); - }; + } if (ret == 0) { device_printf(sc->dev, "SDMA failed to boot\n"); diff --git a/sys/arm/freescale/imx/imx6_ssi.c b/sys/arm/freescale/imx/imx6_ssi.c index 184de2a40f0..9387aa371ff 100644 --- a/sys/arm/freescale/imx/imx6_ssi.c +++ b/sys/arm/freescale/imx/imx6_ssi.c @@ -463,7 +463,7 @@ find_sdma_controller(struct sc_info *sc) if (sdma_sc == NULL) { device_printf(sc->dev, "No sDMA found. Can't operate\n"); return (ENXIO); - }; + } sc->sdma_sc = sdma_sc; diff --git a/sys/arm/freescale/vybrid/vf_ccm.c b/sys/arm/freescale/vybrid/vf_ccm.c index 8f8a3f03de8..82284d58898 100644 --- a/sys/arm/freescale/vybrid/vf_ccm.c +++ b/sys/arm/freescale/vybrid/vf_ccm.c @@ -379,15 +379,15 @@ set_clock(struct ccm_softc *sc, char *name) reg &= ~(clk->sel_mask << clk->sel_shift); reg |= (clk->sel_val << clk->sel_shift); WRITE4(sc, clk->sel_reg, reg); - }; + } reg = READ4(sc, clk->reg); reg |= clk->enable_reg; reg &= ~(clk->div_mask << clk->div_shift); reg |= (clk->div_val << clk->div_shift); WRITE4(sc, clk->reg, reg); - }; - }; + } + } return (0); } @@ -425,8 +425,8 @@ ccm_fdt_set(struct ccm_softc *sc) fdt_config += strlen(name) + 1; len -= strlen(name) + 1; set_clock(sc, name); - }; - }; + } + } if (OF_peer(child) == 0) { /* No more siblings. */ diff --git a/sys/arm/freescale/vybrid/vf_edma.c b/sys/arm/freescale/vybrid/vf_edma.c index ed12072fa6c..93179216a5b 100644 --- a/sys/arm/freescale/vybrid/vf_edma.c +++ b/sys/arm/freescale/vybrid/vf_edma.c @@ -161,7 +161,7 @@ channel_configure(struct edma_softc *sc, int mux_grp, int mux_src) } else { channel_first = 0; mux_num = sc->device_id * 2; - }; + } /* Take first unused eDMA channel */ ch = NULL; @@ -171,12 +171,12 @@ channel_configure(struct edma_softc *sc, int mux_grp, int mux_src) break; } ch = NULL; - }; + } if (ch == NULL) { /* Can't find free channel */ return (-1); - }; + } chnum = i; diff --git a/sys/arm/freescale/vybrid/vf_port.c b/sys/arm/freescale/vybrid/vf_port.c index 943ca886137..6ff8bfcccb1 100644 --- a/sys/arm/freescale/vybrid/vf_port.c +++ b/sys/arm/freescale/vybrid/vf_port.c @@ -171,7 +171,7 @@ port_setup(int pnum, enum ev_type pevt, void (*ih)(void *), void *ih_user) break; default: return (-1); - }; + } reg = READ4(sc, PORT_PCR(pnum)); reg &= ~(PCR_IRQC_M << PCR_IRQC_S); diff --git a/sys/arm/freescale/vybrid/vf_sai.c b/sys/arm/freescale/vybrid/vf_sai.c index 309d95e5dcb..83f689f87d2 100644 --- a/sys/arm/freescale/vybrid/vf_sai.c +++ b/sys/arm/freescale/vybrid/vf_sai.c @@ -433,7 +433,7 @@ find_edma_controller(struct sc_info *sc) if ((len = OF_getproplen(edma_node, "device-id")) <= 0) { return (ENXIO); - }; + } OF_getprop(edma_node, "device-id", &dts_value, len); edma_device_id = fdt32_to_cpu(dts_value); @@ -447,16 +447,16 @@ find_edma_controller(struct sc_info *sc) if (edma_sc->device_id == edma_device_id) { /* found */ break; - }; + } edma_sc = NULL; - }; - }; + } + } if (edma_sc == NULL) { device_printf(sc->dev, "no eDMA. can't operate\n"); return (ENXIO); - }; + } sc->edma_sc = edma_sc; @@ -465,7 +465,7 @@ find_edma_controller(struct sc_info *sc) if (sc->edma_chnum < 0) { /* cant setup eDMA */ return (ENXIO); - }; + } return (0); }; diff --git a/sys/arm/mv/mv_pci.c b/sys/arm/mv/mv_pci.c index dc8b890e305..2ef6604a89d 100644 --- a/sys/arm/mv/mv_pci.c +++ b/sys/arm/mv/mv_pci.c @@ -842,7 +842,7 @@ mv_pcib_alloc_resource(device_t dev, device_t child, int type, int *rid, default: return (BUS_ALLOC_RESOURCE(device_get_parent(dev), dev, type, rid, start, end, count, flags)); - }; + } if (RMAN_IS_DEFAULT_RANGE(start, end)) { start = sc->sc_mem_base; diff --git a/sys/arm/samsung/exynos/chrome_ec.c b/sys/arm/samsung/exynos/chrome_ec.c index 2c88414d2d3..8f794b79c7e 100644 --- a/sys/arm/samsung/exynos/chrome_ec.c +++ b/sys/arm/samsung/exynos/chrome_ec.c @@ -176,7 +176,7 @@ ec_command(uint8_t cmd, uint8_t *dout, uint8_t dout_len, for (i = 0; i < dout_len; i++) { msg_dout[i + 3] = dout[i]; - }; + } fill_checksum(msg_dout, dout_len + 3); @@ -195,7 +195,7 @@ ec_command(uint8_t cmd, uint8_t *dout, uint8_t dout_len, for (i = 0; i < dinp_len; i++) { dinp[i] = msg_dinp[i + 2]; - }; + } free(msg_dout, M_DEVBUF); free(msg_dinp, M_DEVBUF); diff --git a/sys/arm/samsung/exynos/chrome_ec_spi.c b/sys/arm/samsung/exynos/chrome_ec_spi.c index a018afae9d2..9e54969d02e 100644 --- a/sys/arm/samsung/exynos/chrome_ec_spi.c +++ b/sys/arm/samsung/exynos/chrome_ec_spi.c @@ -143,7 +143,7 @@ ec_command(uint8_t cmd, uint8_t *dout, uint8_t dout_len, for (i = 0; i < dout_len; i++) { msg_dout[i + 3] = dout[i]; - }; + } fill_checksum(msg_dout, dout_len + 3); @@ -177,7 +177,7 @@ ec_command(uint8_t cmd, uint8_t *dout, uint8_t dout_len, for (i = 0; i < dinp_len; i++) { dinp[i] = msg_dinp[i + 2]; - }; + } free(msg_dout, M_DEVBUF); free(msg_dinp, M_DEVBUF); diff --git a/sys/arm/samsung/exynos/chrome_kb.c b/sys/arm/samsung/exynos/chrome_kb.c index b10a5ac8b18..6965d3c86ed 100644 --- a/sys/arm/samsung/exynos/chrome_kb.c +++ b/sys/arm/samsung/exynos/chrome_kb.c @@ -255,12 +255,12 @@ ckb_check(keyboard_t *kbd) if (sc->sc_flags & CKB_FLAG_POLLING) { return (1); - }; + } for (i = 0; i < sc->cols; i++) if (sc->scan_local[i] != sc->scan[i]) { return (1); - }; + } if (sc->sc_repeating) return (1); @@ -356,7 +356,7 @@ ckb_read_char_locked(keyboard_t *kbd, int wait) callout_reset(&sc->sc_repeat_callout, hz / 10, ckb_repeat, sc); return (sc->sc_repeat_key); - }; + } if (sc->sc_flags & CKB_FLAG_POLLING) { for (;;) { @@ -374,7 +374,7 @@ ckb_read_char_locked(keyboard_t *kbd, int wait) } DELAY(1000); } - }; + } for (i = 0; i < sc->cols; i++) { for (j = 0; j < sc->rows; j++) { @@ -387,7 +387,7 @@ ckb_read_char_locked(keyboard_t *kbd, int wait) key = keymap_read(sc, i, j); if (key == 0) { continue; - }; + } if (newbit > 0) { /* key pressed */ @@ -841,7 +841,7 @@ chrome_kb_attach(device_t dev) for (i = 0; i < sc->cols; i++) { sc->scan_local[i] = 0; sc->scan[i] = 0; - }; + } kbd_init_struct(kbd, KBD_DRIVER_NAME, KB_OTHER, device_get_unit(dev), 0, 0, 0); @@ -866,7 +866,7 @@ chrome_kb_attach(device_t dev) if (kbd_register(kbd) < 0) { return (ENXIO); - }; + } KBD_CONFIG_DONE(kbd); return (0); diff --git a/sys/arm/samsung/exynos/exynos5_i2c.c b/sys/arm/samsung/exynos/exynos5_i2c.c index d8791386bcb..756a27d448d 100644 --- a/sys/arm/samsung/exynos/exynos5_i2c.c +++ b/sys/arm/samsung/exynos/exynos5_i2c.c @@ -292,7 +292,7 @@ i2c_start(device_t dev, u_char slave, int timeout) mtx_unlock(&sc->mutex); return (IIC_ENOACK); - }; + } mtx_unlock(&sc->mutex); return (IIC_NOERR); @@ -387,7 +387,7 @@ i2c_read(device_t dev, char *buf, int len, reg = READ1(sc, I2CCON); reg &= ~(ACKGEN); WRITE1(sc, I2CCON, reg); - }; + } clear_ipend(sc); @@ -444,7 +444,7 @@ i2c_write(device_t dev, const char *buf, int len, int *sent, int timeout) DPRINTF("cant i2c write: no ack\n"); mtx_unlock(&sc->mutex); return (IIC_ENOACK); - }; + } (*sent)++; } diff --git a/sys/arm/samsung/exynos/exynos5_pad.c b/sys/arm/samsung/exynos/exynos5_pad.c index ea07f5d010e..27d0d53f8bb 100644 --- a/sys/arm/samsung/exynos/exynos5_pad.c +++ b/sys/arm/samsung/exynos/exynos5_pad.c @@ -330,10 +330,10 @@ get_bank(struct pad_softc *sc, int gpio_number, *bank = sc->gpio_map[i]; *pin_shift = (gpio_number - n); return (0); - }; + } n += ngpio; - }; + } return (-1); } @@ -516,7 +516,7 @@ pad_attach(device_t dev) break; default: goto fail; - }; + } if (bus_alloc_resources(dev, sc->pad_spec, sc->res)) { device_printf(dev, "could not allocate resources\n"); @@ -528,7 +528,7 @@ pad_attach(device_t dev) for (i = 0; i < sc->nports; i++) { sc->bst[i] = rman_get_bustag(sc->res[i]); sc->bsh[i] = rman_get_bushandle(sc->res[i]); - }; + } sc->dev = dev; diff --git a/sys/arm64/cavium/thunder_pcie_pem.c b/sys/arm64/cavium/thunder_pcie_pem.c index 86798504d0d..09ea206cacd 100644 --- a/sys/arm64/cavium/thunder_pcie_pem.c +++ b/sys/arm64/cavium/thunder_pcie_pem.c @@ -530,7 +530,7 @@ thunder_pem_alloc_resource(device_t dev, device_t child, int type, int *rid, parent_dev = device_get_parent(device_get_parent(dev)); return (BUS_ALLOC_RESOURCE(parent_dev, dev, type, rid, start, end, count, flags)); - }; + } if (!RMAN_IS_DEFAULT_RANGE(start, end)) { diff --git a/sys/boot/arm/at91/libat91/sd-card.c b/sys/boot/arm/at91/libat91/sd-card.c index 803d782d97a..d173399c3e1 100644 --- a/sys/boot/arm/at91/libat91/sd-card.c +++ b/sys/boot/arm/at91/libat91/sd-card.c @@ -187,7 +187,7 @@ MCI_StartReadBlock(unsigned blknum, void *dataBuffer) // (PDC) Receiver Transfer Enable AT91C_BASE_PDC_MCI->PDC_PTCR = (AT91C_PDC_TXTDIS | AT91C_PDC_RXTDIS); AT91C_BASE_PDC_MCI->PDC_RPR = (unsigned int)dataBuffer; - AT91C_BASE_PDC_MCI->PDC_RCR = SD_BLOCK_SIZE / 4;; + AT91C_BASE_PDC_MCI->PDC_RCR = SD_BLOCK_SIZE / 4; AT91C_BASE_PDC_MCI->PDC_PTCR = AT91C_PDC_RXTEN; // SDHC wants block offset, non-HC wants byte offset. diff --git a/sys/boot/common/part.c b/sys/boot/common/part.c index 3fad5dd76d3..b349e967740 100644 --- a/sys/boot/common/part.c +++ b/sys/boot/common/part.c @@ -514,7 +514,7 @@ vtoc8_parttype(uint16_t type) return (PART_FREEBSD_VINUM); case VTOC_TAG_FREEBSD_ZFS: return (PART_FREEBSD_ZFS); - }; + } return (PART_UNKNOWN); } diff --git a/sys/boot/userboot/test/test.c b/sys/boot/userboot/test/test.c index d5707de216a..bf64e9010cc 100644 --- a/sys/boot/userboot/test/test.c +++ b/sys/boot/userboot/test/test.c @@ -273,7 +273,7 @@ test_diskioctl(void *arg, int unit, u_long cmd, void *data) break; default: return (ENOTTY); - }; + } return (0); } diff --git a/sys/boot/userboot/userboot/elf64_freebsd.c b/sys/boot/userboot/userboot/elf64_freebsd.c index 36129ef6b79..19d369d6d54 100644 --- a/sys/boot/userboot/userboot/elf64_freebsd.c +++ b/sys/boot/userboot/userboot/elf64_freebsd.c @@ -141,7 +141,7 @@ elf64_exec(struct preloaded_file *fp) dev_cleanup(); - stack[0] = 0; /* return address */; + stack[0] = 0; /* return address */ stack[1] = modulep; stack[2] = kernend; CALLBACK(copyin, stack, 0x1000, sizeof(stack)); diff --git a/sys/cam/ctl/ctl_ha.c b/sys/cam/ctl/ctl_ha.c index 57466ec7afc..f1f5b8c58a4 100644 --- a/sys/cam/ctl/ctl_ha.c +++ b/sys/cam/ctl/ctl_ha.c @@ -356,7 +356,7 @@ ctl_ha_send(struct ha_softc *softc) printf("%s: sosend() error %d\n", __func__, error); return; } - }; + } } static void diff --git a/sys/compat/linprocfs/linprocfs.c b/sys/compat/linprocfs/linprocfs.c index 12bc3c46a43..395c94fd612 100644 --- a/sys/compat/linprocfs/linprocfs.c +++ b/sys/compat/linprocfs/linprocfs.c @@ -640,7 +640,7 @@ linprocfs_doprocstat(PFS_FILL_ARGS) } else { startcode = 0; startdata = 0; - }; + } sbuf_printf(sb, "%d", p->p_pid); #define PS_ADD(name, fmt, arg) sbuf_printf(sb, " " fmt, arg) PS_ADD("comm", "(%s)", p->p_comm); diff --git a/sys/dev/aac/aac.c b/sys/dev/aac/aac.c index decacb96e5d..4028cb4f8b3 100644 --- a/sys/dev/aac/aac.c +++ b/sys/dev/aac/aac.c @@ -3762,7 +3762,7 @@ aac_get_bus_info(struct aac_softc *sc) device_printf(sc->aac_dev, "No memory to add passthrough bus %d\n", i); break; - }; + } child = device_add_child(sc->aac_dev, "aacp", -1); if (child == NULL) { diff --git a/sys/dev/aacraid/aacraid.c b/sys/dev/aacraid/aacraid.c index 26b229626b1..879d4669026 100644 --- a/sys/dev/aacraid/aacraid.c +++ b/sys/dev/aacraid/aacraid.c @@ -3550,7 +3550,7 @@ aac_container_bus(struct aac_softc *sc) device_printf(sc->aac_dev, "No memory to add container bus\n"); panic("Out of memory?!"); - }; + } child = device_add_child(sc->aac_dev, "aacraidp", -1); if (child == NULL) { device_printf(sc->aac_dev, @@ -3662,7 +3662,7 @@ aac_get_bus_info(struct aac_softc *sc) device_printf(sc->aac_dev, "No memory to add passthrough bus %d\n", i); break; - }; + } child = device_add_child(sc->aac_dev, "aacraidp", -1); if (child == NULL) { diff --git a/sys/dev/ahci/ahci_pci.c b/sys/dev/ahci/ahci_pci.c index 57f7ea93acc..b6a961f9871 100644 --- a/sys/dev/ahci/ahci_pci.c +++ b/sys/dev/ahci/ahci_pci.c @@ -491,7 +491,7 @@ ahci_pci_attach(device_t dev) if ((error = ahci_pci_ctlr_reset(dev)) != 0) { ahci_free_mem(dev); return (error); - }; + } /* Setup interrupts. */ diff --git a/sys/dev/ata/chipsets/ata-intel.c b/sys/dev/ata/chipsets/ata-intel.c index 46d0055208d..502a8593a8b 100644 --- a/sys/dev/ata/chipsets/ata-intel.c +++ b/sys/dev/ata/chipsets/ata-intel.c @@ -380,7 +380,7 @@ ata_intel_ch_attach(device_t dev) } else if (ata_intel_sata_sidpr_test(dev)) { ch->hw.pm_read = ata_intel_sata_sidpr_read; ch->hw.pm_write = ata_intel_sata_sidpr_write; - }; + } } if (ch->hw.pm_write != NULL) { ch->flags |= ATA_PERIODIC_POLL; diff --git a/sys/dev/ath/ath_hal/ar5416/ar5416_radar.c b/sys/dev/ath/ath_hal/ar5416/ar5416_radar.c index edac235de11..9759b74d969 100644 --- a/sys/dev/ath/ath_hal/ar5416/ar5416_radar.c +++ b/sys/dev/ath/ath_hal/ar5416/ar5416_radar.c @@ -365,7 +365,7 @@ ar5416ProcessRadarEvent(struct ath_hal *ah, struct ath_rx_status *rxs, /* Cannot use ctrl channel RSSI if ext channel is stronger */ if (ext_rssi >= (rssi + 3)) { rssi = 0; - }; + } break; case EXT_CH_RADAR_FOUND: /* Radar in extended channel */ diff --git a/sys/dev/ath/if_ath.c b/sys/dev/ath/if_ath.c index 8b1580a6014..e2dc250bb89 100644 --- a/sys/dev/ath/if_ath.c +++ b/sys/dev/ath/if_ath.c @@ -1073,7 +1073,6 @@ ath_attach(u_int16_t devid, struct ath_softc *sc) | IEEE80211_HTCAP_MAXAMSDU_3839 /* max A-MSDU length */ | IEEE80211_HTCAP_SMPS_OFF; /* SM power save off */ - ; /* * Enable short-GI for HT20 only if the hardware diff --git a/sys/dev/bhnd/bcma/bcma_erom.c b/sys/dev/bhnd/bcma/bcma_erom.c index 2fd327503a8..3f9abf91770 100644 --- a/sys/dev/bhnd/bcma/bcma_erom.c +++ b/sys/dev/bhnd/bcma/bcma_erom.c @@ -567,7 +567,7 @@ bcma_erom_get_core_info(struct bcma_erom *erom, for (u_int j = 0; j < i; j++) { if (buffer[i].vendor == buffer[j].vendor && buffer[i].device == buffer[j].device) - buffer[i].unit++;; + buffer[i].unit++; } } @@ -625,7 +625,7 @@ erom_corecfg_fill_port_regions(struct bcma_erom *erom, EROM_LOG(erom, "unsupported region type %hhx\n", region_type); return (EINVAL); - }; + } /* Fetch the list to be populated */ sports = bcma_corecfg_get_port_list(corecfg, port_type); diff --git a/sys/dev/bhnd/bhndb/bhndb_pci.c b/sys/dev/bhnd/bhndb/bhndb_pci.c index 03a09968d84..ac5409af85a 100644 --- a/sys/dev/bhnd/bhndb/bhndb_pci.c +++ b/sys/dev/bhnd/bhndb/bhndb_pci.c @@ -1007,7 +1007,7 @@ bhndb_pci_discover_quirks(struct bhndb_pci_softc *sc, for (qt = id->quirks; qt->quirks != 0; qt++) { if (bhnd_hwrev_matches(hwrev, &qt->hwrev)) quirks |= qt->quirks; - }; + } } diff --git a/sys/dev/bhnd/cores/chipc/chipc.c b/sys/dev/bhnd/cores/chipc/chipc.c index f47a8f2bdc7..e03ddfe06e0 100644 --- a/sys/dev/bhnd/cores/chipc/chipc.c +++ b/sys/dev/bhnd/cores/chipc/chipc.c @@ -160,7 +160,7 @@ chipc_attach(device_t dev) for (dq = chipc_quirks; dq->quirks != 0; dq++) { if (bhnd_hwrev_matches(bhnd_get_hwrev(dev), &dq->hwrev)) sc->quirks |= dq->quirks; - }; + } // TODO switch (bhnd_chipc_nvram_src(dev)) { diff --git a/sys/dev/bhnd/siba/siba.c b/sys/dev/bhnd/siba/siba.c index 5f1410d9c63..9e837e3fbc5 100644 --- a/sys/dev/bhnd/siba/siba.c +++ b/sys/dev/bhnd/siba/siba.c @@ -126,7 +126,7 @@ siba_attach(device_t dev) error = ENXIO; goto cleanup; } - }; + } } cleanup: diff --git a/sys/dev/bktr/bktr_core.c b/sys/dev/bktr/bktr_core.c index c38afe547a0..764eda563c7 100644 --- a/sys/dev/bktr/bktr_core.c +++ b/sys/dev/bktr/bktr_core.c @@ -590,7 +590,7 @@ bktr_store_address(unit, BKTR_MEM_BUF, buf); bktr->id = BROOKTREE_879; break; } - }; + } bktr->clr_on_start = FALSE; @@ -3046,7 +3046,7 @@ rgb_prog( bktr_ptr_t bktr, char i_flag, int cols, int rows, int interlace ) /* sync vro */ *dma_prog++ = OP_SYNC | BKTR_GEN_IRQ | BKTR_RESYNC | BKTR_VRO; *dma_prog++ = 0; /* NULL WORD */ - *dma_prog++ = OP_JUMP; ; + *dma_prog++ = OP_JUMP; *dma_prog = (uint32_t ) vtophys(bktr->odd_dma_prog); break; } diff --git a/sys/dev/bktr/bktr_os.c b/sys/dev/bktr/bktr_os.c index e5ea53bcf6b..e8c0f7bc841 100644 --- a/sys/dev/bktr/bktr_os.c +++ b/sys/dev/bktr/bktr_os.c @@ -304,7 +304,7 @@ bktr_probe( device_t dev ) device_set_desc(dev, "BrookTree 879"); return BUS_PROBE_DEFAULT; } - }; + } return ENXIO; } diff --git a/sys/dev/bxe/bxe.c b/sys/dev/bxe/bxe.c index 53d8e973858..91a5bf3226d 100644 --- a/sys/dev/bxe/bxe.c +++ b/sys/dev/bxe/bxe.c @@ -1620,7 +1620,7 @@ bxe_read_dmae(struct bxe_softc *sc, /* issue the command and wait for completion */ if ((rc = bxe_issue_dmae_with_comp(sc, &dmae)) != 0) { bxe_panic(sc, ("DMAE failed (%d)\n", rc)); - }; + } } void diff --git a/sys/dev/cxgbe/iw_cxgbe/mem.c b/sys/dev/cxgbe/iw_cxgbe/mem.c index e42aa1a4b58..f7e90a5959f 100644 --- a/sys/dev/cxgbe/iw_cxgbe/mem.c +++ b/sys/dev/cxgbe/iw_cxgbe/mem.c @@ -796,7 +796,7 @@ struct ib_fast_reg_page_list *c4iw_alloc_fastreg_pbl(struct ib_device *device, if (c4pl) dma_addr = vtophys(c4pl); else - return ERR_PTR(-ENOMEM);; + return ERR_PTR(-ENOMEM); pci_unmap_addr_set(c4pl, mapping, dma_addr); c4pl->dma_addr = dma_addr; diff --git a/sys/dev/cxgbe/t4_main.c b/sys/dev/cxgbe/t4_main.c index 777e4d11280..e3b64b0b25f 100644 --- a/sys/dev/cxgbe/t4_main.c +++ b/sys/dev/cxgbe/t4_main.c @@ -2128,7 +2128,7 @@ rw_via_memwin(struct adapter *sc, int idx, uint32_t addr, uint32_t *val, } else { v = *val++; t4_write_reg(sc, mw->mw_base + addr - - mw->mw_curpos, htole32(v));; + mw->mw_curpos, htole32(v)); } addr += 4; len -= 4; diff --git a/sys/dev/drm2/radeon/radeon_bios.c b/sys/dev/drm2/radeon/radeon_bios.c index ffb37561ff5..78416bb9e40 100644 --- a/sys/dev/drm2/radeon/radeon_bios.c +++ b/sys/dev/drm2/radeon/radeon_bios.c @@ -676,7 +676,7 @@ static bool radeon_acpi_vfct_bios(struct radeon_device *rdev) vhdr->DeviceID != rdev->ddev->pci_device) { DRM_INFO("ACPI VFCT table is not for this card\n"); goto out_unmap; - }; + } if (vfct->VBIOSImageOffset + sizeof(VFCT_IMAGE_HEADER) + vhdr->ImageLength > tbl_size) { DRM_ERROR("ACPI VFCT image truncated\n"); diff --git a/sys/dev/etherswitch/arswitch/arswitch.c b/sys/dev/etherswitch/arswitch/arswitch.c index 43888197447..8396f8aee50 100644 --- a/sys/dev/etherswitch/arswitch/arswitch.c +++ b/sys/dev/etherswitch/arswitch/arswitch.c @@ -225,7 +225,7 @@ arswitch_set_vlan_mode(struct arswitch_softc *sc, uint32_t mode) break; default: sc->vlan_mode = 0; - }; + } /* Reset VLANs. */ sc->hal.arswitch_vlan_init_hw(sc); diff --git a/sys/dev/etherswitch/arswitch/arswitch_8327.c b/sys/dev/etherswitch/arswitch/arswitch_8327.c index 6e221a87465..92e44fc9acb 100644 --- a/sys/dev/etherswitch/arswitch/arswitch_8327.c +++ b/sys/dev/etherswitch/arswitch/arswitch_8327.c @@ -662,7 +662,7 @@ ar8327_hw_setup(struct arswitch_softc *sc) /* start PHY autonegotiation? */ /* XXX is this done as part of the normal PHY setup? */ - }; + } /* Let things settle */ DELAY(1000); diff --git a/sys/dev/etherswitch/ip17x/ip175c.c b/sys/dev/etherswitch/ip17x/ip175c.c index f7870520335..30614a42417 100644 --- a/sys/dev/etherswitch/ip17x/ip175c.c +++ b/sys/dev/etherswitch/ip17x/ip175c.c @@ -210,7 +210,7 @@ ip175c_set_vlan_mode(struct ip17x_softc *sc, uint32_t mode) ip17x_updatephy(sc->sc_dev, 30, 9, 0x80, 0); sc->vlan_mode = ETHERSWITCH_VLAN_PORT; break; - }; + } /* Reset vlans. */ ip17x_reset_vlans(sc, sc->vlan_mode); diff --git a/sys/dev/etherswitch/ip17x/ip175d.c b/sys/dev/etherswitch/ip17x/ip175d.c index 4962ac23b78..5d43641b112 100644 --- a/sys/dev/etherswitch/ip17x/ip175d.c +++ b/sys/dev/etherswitch/ip17x/ip175d.c @@ -167,7 +167,7 @@ ip175d_set_vlan_mode(struct ip17x_softc *sc, uint32_t mode) ip17x_updatephy(sc->sc_dev, 22, 0, 0xbfff, 0x8000); sc->vlan_mode = 0; break; - }; + } if (sc->vlan_mode != 0) { /* diff --git a/sys/dev/hwpmc/hwpmc_mips.c b/sys/dev/hwpmc/hwpmc_mips.c index 72f8e89573f..d9c26af558e 100644 --- a/sys/dev/hwpmc/hwpmc_mips.c +++ b/sys/dev/hwpmc/hwpmc_mips.c @@ -543,7 +543,7 @@ pmc_next_frame(register_t *pc, register_t *sp) case OP_SYSCALL: case OP_BREAK: more = 1; /* stop now */ - }; + } break; case OP_BCOND: @@ -564,7 +564,7 @@ pmc_next_frame(register_t *pc, register_t *sp) case OP_BCx: case OP_BCy: more = 2; /* stop after next instruction */ - }; + } break; case OP_SW: diff --git a/sys/dev/hyperv/utilities/hv_heartbeat.c b/sys/dev/hyperv/utilities/hv_heartbeat.c index 09bd28b0da8..62de10b2104 100644 --- a/sys/dev/hyperv/utilities/hv_heartbeat.c +++ b/sys/dev/hyperv/utilities/hv_heartbeat.c @@ -59,7 +59,7 @@ hv_heartbeat_cb(void *context) hv_util_sc *softc; softc = (hv_util_sc*)context; - buf = softc->receive_buffer;; + buf = softc->receive_buffer; channel = softc->hv_dev->channel; ret = hv_vmbus_channel_recv_packet(channel, buf, PAGE_SIZE, &recvlen, diff --git a/sys/dev/hyperv/utilities/hv_kvp.c b/sys/dev/hyperv/utilities/hv_kvp.c index d71310b7d48..50563c446ba 100644 --- a/sys/dev/hyperv/utilities/hv_kvp.c +++ b/sys/dev/hyperv/utilities/hv_kvp.c @@ -619,7 +619,7 @@ hv_kvp_process_request(void *context, int pending) hv_kvp_log_info("%s: entering hv_kvp_process_request\n", __func__); sc = (hv_kvp_sc*)context; - kvp_buf = sc->util_sc.receive_buffer;; + kvp_buf = sc->util_sc.receive_buffer; channel = sc->util_sc.hv_dev->channel; ret = hv_vmbus_channel_recv_packet(channel, kvp_buf, 2 * PAGE_SIZE, diff --git a/sys/dev/hyperv/utilities/hv_shutdown.c b/sys/dev/hyperv/utilities/hv_shutdown.c index 0beed5ae671..b0802afe3f5 100644 --- a/sys/dev/hyperv/utilities/hv_shutdown.c +++ b/sys/dev/hyperv/utilities/hv_shutdown.c @@ -63,7 +63,7 @@ hv_shutdown_cb(void *context) hv_util_sc *softc; softc = (hv_util_sc*)context; - buf = softc->receive_buffer;; + buf = softc->receive_buffer; channel = softc->hv_dev->channel; ret = hv_vmbus_channel_recv_packet(channel, buf, PAGE_SIZE, &recv_len, &request_id); diff --git a/sys/dev/ie/if_ie_isa.c b/sys/dev/ie/if_ie_isa.c index c0403b1aa5c..73151b4f58e 100644 --- a/sys/dev/ie/if_ie_isa.c +++ b/sys/dev/ie/if_ie_isa.c @@ -881,7 +881,7 @@ ie_modevent (mod, what, arg) break; default: break; - }; + } return (0); } diff --git a/sys/dev/ixgbe/if_ix.c b/sys/dev/ixgbe/if_ix.c index 5e16fbdf115..ddee69927a8 100644 --- a/sys/dev/ixgbe/if_ix.c +++ b/sys/dev/ixgbe/if_ix.c @@ -2122,7 +2122,7 @@ ixgbe_mc_array_itr(struct ixgbe_hw *hw, u8 **update_ptr, u32 *vmdq) mta = (struct ixgbe_mc_addr *)*update_ptr; *vmdq = mta->vmdq; - *update_ptr = (u8*)(mta + 1);; + *update_ptr = (u8*)(mta + 1); return (mta->addr); } diff --git a/sys/dev/ixgbe/ixgbe_common.c b/sys/dev/ixgbe/ixgbe_common.c index feb74f6f8b3..c302071f67c 100644 --- a/sys/dev/ixgbe/ixgbe_common.c +++ b/sys/dev/ixgbe/ixgbe_common.c @@ -1902,7 +1902,7 @@ static s32 ixgbe_ready_eeprom(struct ixgbe_hw *hw) usec_delay(5); ixgbe_standby_eeprom(hw); - }; + } /* * On some parts, SPI write time could vary from 0-20mSec on 3.3V @@ -1988,7 +1988,7 @@ static void ixgbe_shift_out_eeprom_bits(struct ixgbe_hw *hw, u16 data, * EEPROM */ mask = mask >> 1; - }; + } /* We leave the "DI" bit set to "0" when we leave this routine. */ eec &= ~IXGBE_EEC_DI; diff --git a/sys/dev/mii/mii_physubr.c b/sys/dev/mii/mii_physubr.c index 84f4f447103..42331592421 100644 --- a/sys/dev/mii/mii_physubr.c +++ b/sys/dev/mii/mii_physubr.c @@ -154,7 +154,7 @@ mii_phy_setmedia(struct mii_softc *sc) case (IFM_FDX | IFM_FLOW): index = MII_MEDIA_10_T_FDX; break; - }; + } break; case IFM_100_TX: diff --git a/sys/dev/mmc/host/dwmmc.c b/sys/dev/mmc/host/dwmmc.c index 5b24a6dc4ee..f55d3e6075d 100644 --- a/sys/dev/mmc/host/dwmmc.c +++ b/sys/dev/mmc/host/dwmmc.c @@ -191,7 +191,7 @@ dwmmc_ctrl_reset(struct dwmmc_softc *sc, int reset_bits) if (!(READ4(sc, SDMMC_CTRL) & reset_bits)) return (0); DELAY(10); - }; + } device_printf(sc->dev, "Reset failed\n"); diff --git a/sys/dev/mvs/mvs.c b/sys/dev/mvs/mvs.c index b89db41c13b..bdadf39e2af 100644 --- a/sys/dev/mvs/mvs.c +++ b/sys/dev/mvs/mvs.c @@ -506,7 +506,7 @@ mvs_set_edma_mode(device_t dev, enum mvs_edma_mode mode) device_printf(dev, "stopping EDMA engine failed\n"); break; } - }; + } } ch->curr_mode = mode; ch->fbs_enabled = 0; diff --git a/sys/dev/nand/nand.c b/sys/dev/nand/nand.c index 113953ef8f3..ae641217ad7 100644 --- a/sys/dev/nand/nand.c +++ b/sys/dev/nand/nand.c @@ -811,7 +811,7 @@ nand_erase_blocks(struct nand_chip *chip, off_t offset, size_t len) err = ENXIO; block++; - }; + } NANDBUS_UNLOCK(nandbus); diff --git a/sys/dev/nand/nandsim_chip.c b/sys/dev/nand/nandsim_chip.c index 3241e1ae679..5b568abf58b 100644 --- a/sys/dev/nand/nandsim_chip.c +++ b/sys/dev/nand/nandsim_chip.c @@ -309,7 +309,7 @@ nandsim_loop(void *arg) links); destroy_event(ev); wakeup(ev); - }; + } NANDSIM_CHIP_UNLOCK(chip); nandsim_log(chip, NANDSIM_LOG_SM, "destroyed\n"); mtx_destroy(&chip->ns_lock); diff --git a/sys/dev/ncr/ncr.c b/sys/dev/ncr/ncr.c index 111cd69935f..8cf142f5fb2 100644 --- a/sys/dev/ncr/ncr.c +++ b/sys/dev/ncr/ncr.c @@ -2906,7 +2906,7 @@ static void ncr_script_fill (struct script * scr, struct scripth * scrh) *p++ =RADDR (dsa); *p++ =SCR_CALL; *p++ =PADDR (trysel); - }; + } *p++ =SCR_JUMP; *p++ =PADDRH(tryloop); @@ -2927,7 +2927,7 @@ static void ncr_script_fill (struct script * scr, struct scripth * scrh) *p++ =PADDR (checkatn); *p++ =SCR_MOVE_TBL ^ SCR_DATA_IN; *p++ =offsetof (struct dsb, data[i]); - }; + } *p++ =SCR_CALL; *p++ =PADDR (checkatn); @@ -2951,7 +2951,7 @@ static void ncr_script_fill (struct script * scr, struct scripth * scrh) *p++ =PADDR (dispatch); *p++ =SCR_MOVE_TBL ^ SCR_DATA_OUT; *p++ =offsetof (struct dsb, data[i]); - }; + } *p++ =SCR_CALL; *p++ =PADDR (dispatch); @@ -2997,7 +2997,7 @@ static void ncr_script_copy_and_bind (ncb_p np, ncrcmd *src, ncrcmd *dst, int le device_printf(np->dev, "ERROR0 IN SCRIPT at %d.\n", (int)(src - start - 1)); DELAY (1000000); - }; + } if (DEBUG_FLAGS & DEBUG_SCRIPT) printf ("%p: <%x>\n", @@ -3062,7 +3062,7 @@ static void ncr_script_copy_and_bind (ncb_p np, ncrcmd *src, ncrcmd *dst, int le default: relocs = 0; break; - }; + } if (relocs) { while (relocs--) { @@ -3110,7 +3110,7 @@ static void ncr_script_copy_and_bind (ncb_p np, ncrcmd *src, ncrcmd *dst, int le offset += 4; } - }; + } } /*========================================================== @@ -3614,7 +3614,7 @@ ncr_attach (device_t dev) usrsync = np->maxsync; if (usrsync < np->minsync) usrsync = np->minsync; - }; + } usrwide = (SCSI_NCR_MAX_WIDE); if (usrwide > np->maxwide) usrwide=np->maxwide; @@ -3719,7 +3719,7 @@ ncr_attach (device_t dev) if (ncr_snooptest (np)) { printf ("CACHE INCORRECTLY CONFIGURED.\n"); return EINVAL; - }; + } /* ** Install the interrupt handler. @@ -3817,7 +3817,7 @@ ncr_intr_locked(ncb_p np) } while (INB(nc_istat) & (INTF|SIP|DIP)); np->ticks = 100; - }; + } if (DEBUG_FLAGS & DEBUG_TINY) printf ("]\n"); } @@ -3892,7 +3892,7 @@ ncr_action (struct cam_sim *sim, union ccb *ccb) ccb->ccb_h.status = CAM_RESRC_UNAVAIL; xpt_done(ccb); return; - }; + } cp->ccb = ccb; @@ -3923,8 +3923,8 @@ ncr_action (struct cam_sim *sim, union ccb *ccb) != tp->tinfo.goal.offset)) { tp->nego_cp = cp; nego = NS_SYNC; - }; - }; + } + } /*--------------------------------------------------- ** @@ -3950,11 +3950,11 @@ ncr_action (struct cam_sim *sim, union ccb *ccb) if (DEBUG_FLAGS & DEBUG_TAGS) { PRINT_ADDR(ccb); printf ("using tag #%d.\n", cp->tag); - }; - }; + } + } } else { cp->tag=0; - }; + } /*---------------------------------------------------- ** @@ -4001,7 +4001,7 @@ ncr_action (struct cam_sim *sim, union ccb *ccb) printf (".\n"); }; break; - }; + } /*---------------------------------------------------- ** @@ -4435,7 +4435,7 @@ ncr_complete (ncb_p np, nccb_p cp) */ tp->tinfo.goal.period = 0; tp->tinfo.goal.offset = 0; - }; + } /* ** Check for extended errors. @@ -4453,10 +4453,10 @@ ncr_complete (ncb_p np, nccb_p cp) default: printf ("extended error %d.\n", cp->xerr_status); break; - }; + } if (cp->host_status==HS_COMPLETE) cp->host_status = HS_FAIL; - }; + } /* ** Check the status. @@ -4579,9 +4579,9 @@ ncr_wakeup (ncb_p np, u_long code) default: ncr_complete (np, cp); break; - }; + } cp = cp -> link_nccb; - }; + } } static void @@ -4959,7 +4959,7 @@ ncr_setsync(ncb_p np, nccb_p cp, u_char scntl3, u_char sxfer, u_char period) if (cp->ccb->ccb_h.target_id != target) continue; cp->sync_status = sxfer; cp->wide_status = scntl3; - }; + } } /*========================================================== @@ -5038,7 +5038,7 @@ static void ncr_setwide (ncb_p np, nccb_p cp, u_char wide, u_char ack) if (cp->ccb->ccb_h.target_id != target) continue; cp->sync_status = sxfer; cp->wide_status = scntl3; - }; + } } /*========================================================== @@ -5092,7 +5092,7 @@ ncr_timeout (void *arg) ** Let's try to wake it up. */ OUTB (nc_istat, SIGP); - }; + } /*---------------------------------------------------- ** @@ -5120,7 +5120,7 @@ ncr_timeout (void *arg) "timeout nccb=%p (skip)\n", cp); cp->phys.header.launch.l_paddr = NCB_SCRIPT_PHYS (np, skip); - }; + } switch (cp->host_status) { @@ -5129,14 +5129,14 @@ ncr_timeout (void *arg) /* FALLTHROUGH */ case HS_DISCONNECT: cp->host_status=HS_TIMEOUT; - }; + } cp->tag = 0; /* ** wakeup this nccb. */ ncr_complete (np, cp); - }; + } } callout_reset(&np->timer, step ? step : 1, ncr_timeout, np); @@ -5150,7 +5150,7 @@ ncr_timeout (void *arg) if (DEBUG_FLAGS & DEBUG_TINY) printf ("{"); ncr_exception (np); if (DEBUG_FLAGS & DEBUG_TINY) printf ("}"); - }; + } } /*========================================================== @@ -5255,7 +5255,7 @@ static void ncr_exception (ncb_p np) OUTB (nc_istat, INTF); np->profile.num_fly++; ncr_wakeup (np, 0); - }; + } if (!(istat & (SIP|DIP))) { return; } @@ -5291,7 +5291,7 @@ static void ncr_exception (ncb_p np) if (sist & RST) { ncr_init (np, bootverbose ? "scsi reset" : NULL, HS_RESET); return; - }; + } /*------------------------------------------- ** selection timeout @@ -5306,7 +5306,7 @@ static void ncr_exception (ncb_p np) !(dstat & (MDPE|BF|ABRT|SIR))) { ncr_int_sto (np); return; - }; + } /*------------------------------------------- ** Phase mismatch. @@ -5318,7 +5318,7 @@ static void ncr_exception (ncb_p np) !(dstat & (MDPE|BF|ABRT|SIR|IID))) { ncr_int_ma (np, dstat); return; - }; + } /*---------------------------------------- ** move command with length 0 @@ -5335,7 +5335,7 @@ static void ncr_exception (ncb_p np) */ OUTL (nc_dsp, NCB_SCRIPT_PHYS (np, no_data)); return; - }; + } /*------------------------------------------- ** Programmed interrupt @@ -5348,7 +5348,7 @@ static void ncr_exception (ncb_p np) (INB(nc_dsps) <= SIR_MAX)) { ncr_int_sir (np); return; - }; + } /*======================================== ** log message for real hard errors @@ -5369,7 +5369,7 @@ static void ncr_exception (ncb_p np) ((volatile char*)&np->regdump)[i] = INB_OFF(i); np->regdump.nc_dstat = dstat; np->regdump.nc_sist = sist; - }; + } /*---------------------------------------- @@ -5413,7 +5413,7 @@ static void ncr_exception (ncb_p np) OUTB (nc_scr0, HS_UNEXPECTED); OUTL (nc_dsp, NCB_SCRIPT_PHYS (np, cleanup)); return; - }; + } /*---------------------------------------- ** cannot disconnect @@ -5438,7 +5438,7 @@ static void ncr_exception (ncb_p np) */ device_printf(np->dev, "INFO: LDSC while IID.\n"); return; - }; + } device_printf(np->dev, "target %d doesn't release the bus.\n", INB (nc_sdid)&0x0f); /* @@ -5446,7 +5446,7 @@ static void ncr_exception (ncb_p np) ** timeout will do the real work. */ return; - }; + } /*---------------------------------------- ** single step @@ -5458,7 +5458,7 @@ static void ncr_exception (ncb_p np) !(dstat & (MDPE|BF|ABRT|SIR|IID))) { OUTB (nc_dcntl, np->rv_dcntl | STD); return; - }; + } /* ** @RECOVER@ HTH, SGE, ABRT. @@ -5491,11 +5491,11 @@ static void ncr_exception (ncb_p np) case 12: printf (" "); break; - }; + } val = bus_read_1(np->reg_res, i); printf (" %x%x", val/16, val%16); if (i%16==15) printf (".\n"); - }; + } callout_stop(&np->timer); @@ -5505,7 +5505,7 @@ static void ncr_exception (ncb_p np) */ OUTB (nc_istat, SRST); return; - }; + } #ifdef NCR_FREEZE /* @@ -5556,7 +5556,7 @@ static void ncr_int_sto (ncb_p np) if (cp) { cp-> host_status = HS_SEL_TIMEOUT; ncr_complete (np, cp); - }; + } /* ** repair start queue @@ -5571,7 +5571,7 @@ static void ncr_int_sto (ncb_p np) WRITESCRIPT(startpos[0], scratcha); OUTL (nc_dsp, NCB_SCRIPT_PHYS (np, start)); return; - }; + } ncr_init (np, "selection timeout", HS_FAIL); } @@ -5634,7 +5634,7 @@ static void ncr_int_ma (ncb_p np, u_char dstat) if (INB(nc_scntl3) & EWS) { if (ss2 & OLF1) rest++; if (ss2 & ORF1) rest++; - }; + } OUTB (nc_ctest3, np->rv_ctest3 | CLF); /* clear dma fifo */ OUTB (nc_stest3, TE|CSF); /* clear scsi fifo */ @@ -5682,7 +5682,7 @@ static void ncr_int_ma (ncb_p np, u_char dstat) vdsp_base = np->scripth; vdsp_off = dsp - np->p_scripth - 8; nxtdsp = dsp; - }; + } /* ** log the information @@ -5691,13 +5691,13 @@ static void ncr_int_ma (ncb_p np, u_char dstat) printf ("P%x%x ",cmd&7, sbcl&7); printf ("RL=%d D=%d SS0=%x ", (unsigned) rest, (unsigned) delta, ss0); - }; + } if (DEBUG_FLAGS & DEBUG_PHASE) { printf ("\nCP=%p CP2=%p DSP=%x NXT=%x VDSP=%p CMD=%x ", cp, np->header.cp, dsp, nxtdsp, (volatile char*)vdsp_base+vdsp_off, cmd); - }; + } /* ** get old startaddress and old length. @@ -5712,7 +5712,7 @@ static void ncr_int_ma (ncb_p np, u_char dstat) } else { tblp = (u_int32_t *) 0; olen = READSCRIPT_OFF(vdsp_base, vdsp_off) & 0xffffff; - }; + } if (DEBUG_FLAGS & DEBUG_PHASE) { printf ("OCMD=%x\nTBLP=%p OLEN=%lx OADR=%lx\n", @@ -5720,7 +5720,7 @@ static void ncr_int_ma (ncb_p np, u_char dstat) (void *) tblp, (u_long) olen, (u_long) oadr); - }; + } /* ** if old phase not dataphase, leave here. @@ -5742,7 +5742,7 @@ static void ncr_int_ma (ncb_p np, u_char dstat) OUTB (nc_dcntl, np->rv_dcntl | STD); return; - }; + } /* ** choose the correct patch area. @@ -5799,12 +5799,12 @@ static int ncr_show_msg (u_char * msg) for (i=1;i<8;i++) { if (i-1>msg[1]) break; printf ("-%x",msg[i]); - }; + } return (i+1); } else if ((*msg & 0xf0) == 0x20) { printf ("-%x",msg[1]); return (2); - }; + } return (1); } @@ -5873,7 +5873,7 @@ static void ncr_int_sir (ncb_p np) break; if (DEBUG_FLAGS & DEBUG_RESTART) printf ("- (remove)"); tp->hold_cp = cp = (nccb_p) 0; - }; + } if (cp) { if (DEBUG_FLAGS & DEBUG_RESTART) @@ -5881,7 +5881,7 @@ static void ncr_int_sir (ncb_p np) OUTL (nc_dsa, CCB_PHYS (cp, phys)); OUTL (nc_dsp, NCB_SCRIPTH_PHYS (np, getcc)); return; - }; + } /* ** no job, resume normal processing @@ -6001,7 +6001,7 @@ static void ncr_int_sir (ncb_p np) PRINT_ADDR(cp->ccb); printf ("negotiation failed sir=%x status=%x.\n", num, cp->nego_status); - }; + } /* ** any error in negotiation: @@ -6017,7 +6017,7 @@ static void ncr_int_sir (ncb_p np) ncr_setwide (np, cp, 0, 0); break; - }; + } np->msgin [0] = MSG_NOOP; np->msgout[0] = MSG_NOOP; cp->nego_status = 0; @@ -6034,7 +6034,7 @@ static void ncr_int_sir (ncb_p np) printf ("sync msgin: "); (void) ncr_show_msg (np->msgin); printf (".\n"); - }; + } /* ** get requested values. @@ -6100,14 +6100,14 @@ static void ncr_int_sir (ncb_p np) */ ncr_setsync (np,cp,scntl3,(fak<<5)|ofs, per); OUTL (nc_dsp, NCB_SCRIPT_PHYS (np, clrack)); - }; + } return; case NS_WIDE: ncr_setwide (np, cp, 0, 0); break; - }; - }; + } + } /* ** It was a request. Set value and @@ -6148,7 +6148,7 @@ static void ncr_int_sir (ncb_p np) printf ("wide msgin: "); (void) ncr_show_msg (np->msgin); printf (".\n"); - }; + } /* ** get requested values. @@ -6189,14 +6189,14 @@ static void ncr_int_sir (ncb_p np) */ ncr_setwide (np, cp, wide, 1); OUTL (nc_dsp, NCB_SCRIPT_PHYS (np, clrack)); - }; + } return; case NS_SYNC: ncr_setsync (np, cp, 0, 0xe0, 0); break; - }; - }; + } + } /* ** It was a request, set value and @@ -6338,7 +6338,7 @@ static void ncr_int_sir (ncb_p np) */ OUTL (nc_dsp, NCB_SCRIPT_PHYS (np, reselect)); return; - }; + } /* ** else remove the interrupt. @@ -6347,7 +6347,7 @@ static void ncr_int_sir (ncb_p np) device_printf(np->dev, "queue empty.\n"); WRITESCRIPT(start1[0], SCR_INT ^ IFFALSE (0)); break; - }; + } out: OUTB (nc_dcntl, np->rv_dcntl | STD); @@ -6643,7 +6643,7 @@ static int ncr_scatter csize -= size; datalen -= size; paddr = vtophys (vaddr); - }; + } if(DEBUG_FLAGS & DEBUG_SCATTER) printf ("\tseg #%d addr=%x size=%d (rest=%d).\n", @@ -6661,7 +6661,7 @@ static int ncr_scatter printf("ncr?: scatter/gather failed (residue=%d).\n", (unsigned) datalen); return (-1); - }; + } return (segment); } @@ -6697,7 +6697,7 @@ static int ncr_regtest (struct ncb* np) printf ("CACHE TEST FAILED: reg dstat-sstat2 readback %x.\n", (unsigned) data); return (0x10); - }; + } return (0); } #endif @@ -6753,7 +6753,7 @@ static int ncr_snooptest (struct ncb* np) if (i>=NCR_SNOOP_TIMEOUT) { printf ("CACHE TEST FAILED: timeout.\n"); return (0x20); - }; + } /* ** Check termination position. */ @@ -6763,7 +6763,7 @@ static int ncr_snooptest (struct ncb* np) (u_long) NCB_SCRIPTH_PHYS (np, snooptest), (u_long) pc, (u_long) NCB_SCRIPTH_PHYS (np, snoopend) +8); return (0x40); - }; + } /* ** Show results. */ @@ -6771,17 +6771,17 @@ static int ncr_snooptest (struct ncb* np) printf ("CACHE TEST FAILED: host wrote %d, ncr read %d.\n", (int) host_wr, (int) ncr_rd); err |= 1; - }; + } if (host_rd != ncr_wr) { printf ("CACHE TEST FAILED: ncr wrote %d, host read %d.\n", (int) ncr_wr, (int) host_rd); err |= 2; - }; + } if (ncr_bk != ncr_wr) { printf ("CACHE TEST FAILED: ncr wrote %d, read back %d.\n", (int) ncr_wr, (int) ncr_bk); err |= 4; - }; + } return (err); } diff --git a/sys/dev/nfe/if_nfe.c b/sys/dev/nfe/if_nfe.c index 0a370797741..58fee0b9fec 100644 --- a/sys/dev/nfe/if_nfe.c +++ b/sys/dev/nfe/if_nfe.c @@ -2590,7 +2590,7 @@ nfe_setmulti(struct nfe_softc *sc) bzero(addr, ETHER_ADDR_LEN); bzero(mask, ETHER_ADDR_LEN); goto done; - }; + } if_multiaddr_array(ifp, mta, &mcnt, mc_count); diff --git a/sys/dev/oce/oce_mbox.c b/sys/dev/oce/oce_mbox.c index 01bd4cf2f5a..cb2ae81a013 100644 --- a/sys/dev/oce/oce_mbox.c +++ b/sys/dev/oce/oce_mbox.c @@ -2113,7 +2113,7 @@ oce_get_profile_config(POCE_SOFTC sc, uint32_t max_rss) sc->nrssqs = MIN(sc->nrssqs, max_rss); else sc->nrssqs = max_rss; - sc->nrqs = sc->nrssqs + 1; /* 1 for def RX */; + sc->nrqs = sc->nrssqs + 1; /* 1 for def RX */ } error: @@ -2213,7 +2213,7 @@ oce_get_func_config(POCE_SOFTC sc) sc->nrssqs = MIN(sc->nrssqs, max_rss); else sc->nrssqs = max_rss; - sc->nrqs = sc->nrssqs + 1; /* 1 for def RX */; + sc->nrqs = sc->nrssqs + 1; /* 1 for def RX */ } error: oce_dma_free(sc, &dma); diff --git a/sys/dev/oce/oce_sysctl.c b/sys/dev/oce/oce_sysctl.c index 3df7d0ddbb0..61adf93ac69 100644 --- a/sys/dev/oce/oce_sysctl.c +++ b/sys/dev/oce/oce_sysctl.c @@ -331,7 +331,7 @@ static void oce_fill_flash_img_data(POCE_SOFTC sc, const struct flash_sec_info * case IMG_PXEBIOS: pimg->optype = 3; if (IS_BE3(sc)) { - pimg->img_offset = 13107200;; + pimg->img_offset = 13107200; pimg->img_size = 524288; } break; diff --git a/sys/dev/ow/ow.c b/sys/dev/ow/ow.c index ea788907e26..f5b5c6b980a 100644 --- a/sys/dev/ow/ow.c +++ b/sys/dev/ow/ow.c @@ -413,7 +413,7 @@ ow_enumerate(device_t dev, ow_enum_fn *enumfp, ow_found_fn *foundfp) foundfp(dev, probed); last_mask = probed; prior = last; - }; + } ow_release_bus(dev, dev); return (0); diff --git a/sys/dev/patm/if_patm_attach.c b/sys/dev/patm/if_patm_attach.c index ed48bda269c..29a2a87bd30 100644 --- a/sys/dev/patm/if_patm_attach.c +++ b/sys/dev/patm/if_patm_attach.c @@ -189,7 +189,7 @@ patm_attach(device_t dev) IFP2IFATM(sc->ifp)->mib.hw_version = 0; IFP2IFATM(sc->ifp)->mib.sw_version = 0; IFP2IFATM(sc->ifp)->mib.vpi_bits = PATM_VPI_BITS; - IFP2IFATM(sc->ifp)->mib.vci_bits = 0; /* set below */; + IFP2IFATM(sc->ifp)->mib.vci_bits = 0; /* set below */ IFP2IFATM(sc->ifp)->mib.max_vpcs = 0; IFP2IFATM(sc->ifp)->mib.max_vccs = 0; /* set below */ IFP2IFATM(sc->ifp)->mib.media = IFM_ATM_UNKNOWN; diff --git a/sys/dev/pcf/pcf.c b/sys/dev/pcf/pcf.c index f9252b57c63..cf2b65dc88c 100644 --- a/sys/dev/pcf/pcf.c +++ b/sys/dev/pcf/pcf.c @@ -466,7 +466,7 @@ pcf_read(device_t dev, char *buf, int len, int *read, int last, len --; bytes ++; - }; + } error: *read = bytes; diff --git a/sys/dev/pdq/pdq.c b/sys/dev/pdq/pdq.c index 2f4443954d0..4fb98db2d09 100644 --- a/sys/dev/pdq/pdq.c +++ b/sys/dev/pdq/pdq.c @@ -1291,7 +1291,7 @@ pdq_stop( pdq->pdq_intrmask = 0; /* PDQ_HOST_INT_STATE_CHANGE |PDQ_HOST_INT_FATAL_ERROR|PDQ_HOST_INT_CMD_RSP_ENABLE - |PDQ_HOST_INT_UNSOL_ENABLE */; + |PDQ_HOST_INT_UNSOL_ENABLE */ PDQ_CSR_WRITE(csrs, csr_host_int_enable, pdq->pdq_intrmask); /* diff --git a/sys/dev/qlxgbe/ql_hw.c b/sys/dev/qlxgbe/ql_hw.c index 3ae3f384f1b..bbe774b4b75 100644 --- a/sys/dev/qlxgbe/ql_hw.c +++ b/sys/dev/qlxgbe/ql_hw.c @@ -3434,7 +3434,7 @@ qla_iscsi_pdu(qla_host_t *ha, struct mbuf *mp) offset = hdrlen + 4; if (mp->m_len >= offset) { - th = (struct tcphdr *)(mp->m_data + hdrlen);; + th = (struct tcphdr *)(mp->m_data + hdrlen); } else { m_copydata(mp, hdrlen, 4, buf); th = (struct tcphdr *)buf; @@ -3458,7 +3458,7 @@ qla_iscsi_pdu(qla_host_t *ha, struct mbuf *mp) offset = hdrlen + 4; if (mp->m_len >= offset) { - th = (struct tcphdr *)(mp->m_data + hdrlen);; + th = (struct tcphdr *)(mp->m_data + hdrlen); } else { m_copydata(mp, hdrlen, 4, buf); th = (struct tcphdr *)buf; diff --git a/sys/dev/ral/rt2860.c b/sys/dev/ral/rt2860.c index 8bfb00d8162..c50c14d3bc9 100644 --- a/sys/dev/ral/rt2860.c +++ b/sys/dev/ral/rt2860.c @@ -3448,7 +3448,7 @@ rt2860_read_eeprom(struct rt2860_softc *sc, uint8_t macaddr[IEEE80211_ADDR_LEN]) sc->ext_5ghz_lna = (val >> 3) & 1; sc->ext_2ghz_lna = (val >> 2) & 1; /* check if RF supports automatic Tx access gain control */ - sc->calib_2ghz = sc->calib_5ghz = 0; /* XXX (val >> 1) & 1 */; + sc->calib_2ghz = sc->calib_5ghz = 0; /* XXX (val >> 1) & 1 */ /* check if we have a hardware radio switch */ sc->rfswitch = val & 1; } diff --git a/sys/dev/rt/if_rt.c b/sys/dev/rt/if_rt.c index ff0874819a1..fd042fe7025 100644 --- a/sys/dev/rt/if_rt.c +++ b/sys/dev/rt/if_rt.c @@ -460,7 +460,7 @@ rt_attach(device_t dev) sc->rx_drx_idx[0]=PDMA_BASE+RX_DRX_IDX0; sc->int_rx_done_mask=INT_RX_DONE; sc->int_tx_done_mask=INT_TXQ0_DONE; - }; + } /* allocate Tx and Rx rings */ for (i = 0; i < RT_SOFTC_TX_RING_COUNT; i++) { diff --git a/sys/dev/sound/midi/midi.c b/sys/dev/sound/midi/midi.c index e741dd0d255..71f7772e403 100644 --- a/sys/dev/sound/midi/midi.c +++ b/sys/dev/sound/midi/midi.c @@ -669,7 +669,7 @@ midi_open(struct cdev *i_dev, int flags, int mode, struct thread *td) * from a previous session */ MIDIQ_CLEAR(m->inq); - }; + } if (flags & FWRITE) m->flags |= M_TX; @@ -1126,7 +1126,7 @@ midisynth_open(void *n, void *arg, int flags) */ MIDIQ_CLEAR(m->inq); m->rchan = 0; - }; + } if (flags & FWRITE) { m->flags |= M_TX; diff --git a/sys/dev/sound/pci/hda/hdaa.c b/sys/dev/sound/pci/hda/hdaa.c index a1b9f7c2dc4..b4c021bcf04 100644 --- a/sys/dev/sound/pci/hda/hdaa.c +++ b/sys/dev/sound/pci/hda/hdaa.c @@ -779,7 +779,7 @@ hdaa_sense_init(struct hdaa_devinfo *devinfo) (w->unsol < 0) ? "polling" : "unsolicited responses"); ); - }; + } } hdaa_presence_handler(w); if (!HDA_PARAM_PIN_CAP_DP(w->wclass.pin.cap) && @@ -847,7 +847,7 @@ hdaa_widget_pin_patch(uint32_t config, const char *str) if (bad[0] == 0) { config |= ((ival << HDA_CONFIG_DEFAULTCONF_COLOR_SHIFT) & HDA_CONFIG_DEFAULTCONF_COLOR_MASK); - }; + } for (i = 0; i < 16; i++) { if (strcasecmp(HDA_COLORS[i], value) == 0) { config |= (i << HDA_CONFIG_DEFAULTCONF_COLOR_SHIFT); @@ -872,7 +872,7 @@ hdaa_widget_pin_patch(uint32_t config, const char *str) config |= ((ival << HDA_CONFIG_DEFAULTCONF_DEVICE_SHIFT) & HDA_CONFIG_DEFAULTCONF_DEVICE_MASK); continue; - }; + } for (i = 0; i < 16; i++) { if (strcasecmp(HDA_DEVS[i], value) == 0) { config |= (i << HDA_CONFIG_DEFAULTCONF_DEVICE_SHIFT); @@ -898,7 +898,7 @@ hdaa_widget_pin_patch(uint32_t config, const char *str) config |= ((ival << HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_SHIFT) & HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_MASK); continue; - }; + } for (i = 0; i < 4; i++) { if (strcasecmp(HDA_CONNS[i], value) == 0) { config |= (i << HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_SHIFT); diff --git a/sys/dev/sym/sym_hipd.c b/sys/dev/sym/sym_hipd.c index 491aa547aee..43a0e9d7447 100644 --- a/sys/dev/sym/sym_hipd.c +++ b/sys/dev/sym/sym_hipd.c @@ -2025,7 +2025,7 @@ static void sym_fw_bind_script (hcb_p np, u32 *start, int len) MDELAY (10000); ++cur; continue; - }; + } /* * We use the bogus value 0xf00ff00f ;-) @@ -2114,7 +2114,7 @@ static void sym_fw_bind_script (hcb_p np, u32 *start, int len) default: relocs = 0; break; - }; + } /* * Scriptify:) the opcode. @@ -2170,7 +2170,7 @@ static void sym_fw_bind_script (hcb_p np, u32 *start, int len) *cur++ = cpu_to_scr(new); } - }; + } } /*---------------------------------------------------------------------------*/ @@ -2867,7 +2867,7 @@ static int sym_prepare_nego(hcb_p np, ccb_p cp, int nego, u_char *msgptr) msgptr[msglen++] = tp->tinfo.goal.width; msgptr[msglen++] = tp->tinfo.goal.options & PPR_OPT_DT; break; - }; + } cp->nego_status = nego; @@ -2877,8 +2877,8 @@ static int sym_prepare_nego(hcb_p np, ccb_p cp, int nego, u_char *msgptr) sym_print_msg(cp, nego == NS_SYNC ? "sync msgout" : nego == NS_WIDE ? "wide msgout" : "ppr msgout", msgptr); - }; - }; + } + } return msglen; } @@ -3827,7 +3827,7 @@ static void sym_intr1 (hcb_p np) istat = INB (nc_istat); /* DUMMY READ */ if (DEBUG_FLAGS & DEBUG_TINY) printf ("F "); (void)sym_wakeup_done (np); - }; + } if (!(istat & (SIP|DIP))) return; @@ -3892,7 +3892,7 @@ static void sym_intr1 (hcb_p np) else if (dstat & SSI) OUTONB_STD (); else goto unknown_int; return; - }; + } /* * Now, interrupts that donnot happen in normal @@ -3910,7 +3910,7 @@ static void sym_intr1 (hcb_p np) printf("SCSI BUS reset detected.\n"); sym_init (np, 1); return; - }; + } OUTB (nc_ctest3, np->rv_ctest3 | CLF); /* clear dma fifo */ OUTB (nc_stest3, TE|CSF); /* clear scsi fifo */ @@ -3922,7 +3922,7 @@ static void sym_intr1 (hcb_p np) else if (sist & UDC) sym_int_udc (np); else goto unknown_int; return; - }; + } /* * Now, interrupts we are not able to recover cleanly. @@ -3937,7 +3937,7 @@ static void sym_intr1 (hcb_p np) (dstat & (MDPE|BF|ABRT|IID))) { sym_start_reset(np); return; - }; + } unknown_int: /* @@ -4274,7 +4274,7 @@ static void sym_int_ma (hcb_p np) if (ss2 & OLF1) rest++; if (!(np->features & FE_C10)) if (ss2 & ORF1) rest++; - }; + } /* * Clear fifos. @@ -4313,7 +4313,7 @@ static void sym_int_ma (hcb_p np) if (DEBUG_FLAGS & DEBUG_PHASE) { printf ("\nCP=%p DSP=%x NXT=%x VDSP=%p CMD=%x ", cp, (unsigned)dsp, (unsigned)nxtdsp, vdsp, cmd); - }; + } if (!vdsp) { printf ("%s: interrupted SCRIPT address not found.\n", @@ -4339,7 +4339,7 @@ static void sym_int_ma (hcb_p np) } else { tblp = (u32 *) 0; olen = scr_to_cpu(vdsp[0]) & 0xffffff; - }; + } if (DEBUG_FLAGS & DEBUG_PHASE) { printf ("OCMD=%x\nTBLP=%p OLEN=%x OADR=%x\n", @@ -4347,7 +4347,7 @@ static void sym_int_ma (hcb_p np) tblp, (unsigned) olen, (unsigned) oadr); - }; + } /* * check cmd against assumed interrupted script command. @@ -4360,7 +4360,7 @@ static void sym_int_ma (hcb_p np) (unsigned)cmd, (unsigned)scr_to_cpu(vdsp[0]) >> 24); goto reset_all; - }; + } /* * if old phase not dataphase, leave here. @@ -4371,7 +4371,7 @@ static void sym_int_ma (hcb_p np) cmd&7, INB(nc_sbcl)&7, (unsigned)olen, (unsigned)oadr, (unsigned)rest); goto unexpected_phase; - }; + } /* * Choose the correct PM save area. @@ -5541,12 +5541,12 @@ static int sym_show_msg (u_char * msg) for (i=1;i<8;i++) { if (i-1>msg[1]) break; printf ("-%x",msg[i]); - }; + } return (i+1); } else if ((*msg & 0xf0) == 0x20) { printf ("-%x",msg[1]); return (2); - }; + } return (1); } @@ -5607,7 +5607,7 @@ static void sym_sync_nego(hcb_p np, tcb_p tp, ccb_p cp) */ if (DEBUG_FLAGS & DEBUG_NEGO) { sym_print_msg(cp, "sync msgin", np->msgin); - }; + } /* * request or answer ? @@ -5708,7 +5708,7 @@ static void sym_ppr_nego(hcb_p np, tcb_p tp, ccb_p cp) */ if (DEBUG_FLAGS & DEBUG_NEGO) { sym_print_msg(cp, "ppr msgin", np->msgin); - }; + } /* * get requested values. @@ -5847,7 +5847,7 @@ static void sym_wide_nego(hcb_p np, tcb_p tp, ccb_p cp) */ if (DEBUG_FLAGS & DEBUG_NEGO) { sym_print_msg(cp, "wide msgin", np->msgin); - }; + } /* * Is it a request from the device? @@ -5912,7 +5912,7 @@ static void sym_wide_nego(hcb_p np, tcb_p tp, ccb_p cp) OUTL_DSP (SCRIPTA_BA (np, clrack)); return; - }; + } /* * It was a request, set value and @@ -5972,7 +5972,7 @@ static void sym_nego_default(hcb_p np, tcb_p tp, ccb_p cp) case NS_WIDE: sym_setwide (np, cp, 0); break; - }; + } np->msgin [0] = M_NOOP; np->msgout[0] = M_NOOP; cp->nego_status = 0; @@ -6237,7 +6237,7 @@ static void sym_int_sir (hcb_p np) case SIR_NEGO_PROTO: sym_nego_default(np, tp, cp); goto out; - }; + } out: OUTONB_STD (); @@ -6719,7 +6719,7 @@ static int sym_regtest (hcb_p np) printf ("CACHE TEST FAILED: reg dstat-sstat2 readback %x.\n", (unsigned) data); return (0x10); - }; + } return (0); } #endif @@ -6763,7 +6763,7 @@ static int sym_snooptest (hcb_p np) if (i>=SYM_SNOOP_TIMEOUT) { printf ("CACHE TEST FAILED: timeout.\n"); return (0x20); - }; + } /* * Check for fatal DMA errors. */ @@ -6801,7 +6801,7 @@ static int sym_snooptest (hcb_p np) (u_long) SCRIPTB0_BA (np, snooptest), (u_long) pc, (u_long) SCRIPTB0_BA (np, snoopend) +8); return (0x40); - }; + } /* * Show results. */ @@ -6809,17 +6809,17 @@ static int sym_snooptest (hcb_p np) printf ("CACHE TEST FAILED: host wrote %d, chip read %d.\n", (int) host_wr, (int) sym_rd); err |= 1; - }; + } if (host_rd != sym_wr) { printf ("CACHE TEST FAILED: chip wrote %d, host read %d.\n", (int) sym_wr, (int) host_rd); err |= 2; - }; + } if (sym_bk != sym_wr) { printf ("CACHE TEST FAILED: chip wrote %d, read back %d.\n", (int) sym_wr, (int) sym_bk); err |= 4; - }; + } return (err); } @@ -8734,7 +8734,7 @@ sym_pci_attach(device_t dev) if (sym_snooptest (np)) { device_printf(dev, "CACHE INCORRECTLY CONFIGURED.\n"); goto attach_failed; - }; + } /* * Now deal with CAM. diff --git a/sys/dev/tdfx/tdfx_pci.c b/sys/dev/tdfx/tdfx_pci.c index 918857a8abb..be423751ca3 100644 --- a/sys/dev/tdfx/tdfx_pci.c +++ b/sys/dev/tdfx/tdfx_pci.c @@ -127,7 +127,7 @@ tdfx_probe(device_t dev) case PCI_DEVICE_3DFX_VOODOO1: device_set_desc(dev, "3DFX Voodoo Graphics 3D Accelerator"); return BUS_PROBE_DEFAULT; - }; + } return ENXIO; } diff --git a/sys/dev/ti/if_ti.c b/sys/dev/ti/if_ti.c index eba7f7b0102..23ed50b9ab8 100644 --- a/sys/dev/ti/if_ti.c +++ b/sys/dev/ti/if_ti.c @@ -1720,7 +1720,7 @@ ti_init_rx_ring_std(struct ti_softc *sc) for (i = 0; i < TI_STD_RX_RING_CNT; i++) { if (ti_newbuf_std(sc, i) != 0) return (ENOBUFS); - }; + } sc->ti_std = TI_STD_RX_RING_CNT - 1; TI_UPDATE_STDPROD(sc, TI_STD_RX_RING_CNT - 1); @@ -1758,7 +1758,7 @@ ti_init_rx_ring_jumbo(struct ti_softc *sc) for (i = 0; i < TI_JUMBO_RX_RING_CNT; i++) { if (ti_newbuf_jumbo(sc, i, NULL) != 0) return (ENOBUFS); - }; + } sc->ti_jumbo = TI_JUMBO_RX_RING_CNT - 1; TI_UPDATE_JUMBOPROD(sc, TI_JUMBO_RX_RING_CNT - 1); @@ -1795,7 +1795,7 @@ ti_init_rx_ring_mini(struct ti_softc *sc) for (i = 0; i < TI_MINI_RX_RING_CNT; i++) { if (ti_newbuf_mini(sc, i) != 0) return (ENOBUFS); - }; + } sc->ti_mini = TI_MINI_RX_RING_CNT - 1; TI_UPDATE_MINIPROD(sc, TI_MINI_RX_RING_CNT - 1); diff --git a/sys/dev/uart/uart_dev_msm.c b/sys/dev/uart/uart_dev_msm.c index 7ba46aca2bc..cfd23304b95 100644 --- a/sys/dev/uart/uart_dev_msm.c +++ b/sys/dev/uart/uart_dev_msm.c @@ -123,7 +123,7 @@ msm_uart_param(struct uart_bas *bas, int baudrate, int databits, } uart_setreg(bas, UART_DM_MR2, ulcon); - /* Set 115200 for both TX and RX. */; + /* Set 115200 for both TX and RX. */ uart_setreg(bas, UART_DM_CSR, UART_DM_CSR_115200); uart_barrier(bas); diff --git a/sys/dev/usb/net/if_mos.c b/sys/dev/usb/net/if_mos.c index 1f926290035..3a65ec6207b 100644 --- a/sys/dev/usb/net/if_mos.c +++ b/sys/dev/usb/net/if_mos.c @@ -608,7 +608,7 @@ mos_setmulti(struct usb_ether *ue) if (ifma->ifma_addr->sa_family != AF_LINK) { allmulti = 1; continue; - }; + } h = ether_crc32_be(LLADDR((struct sockaddr_dl *) ifma->ifma_addr), ETHER_ADDR_LEN) >> 26; hashtbl[h / 8] |= 1 << (h % 8); diff --git a/sys/dev/usb/net/if_ure.c b/sys/dev/usb/net/if_ure.c index 4d215f8ef8d..9d7f47a576e 100644 --- a/sys/dev/usb/net/if_ure.c +++ b/sys/dev/usb/net/if_ure.c @@ -419,7 +419,7 @@ ure_probe(device_t dev) { struct usb_attach_arg *uaa; - uaa = device_get_ivars(dev);; + uaa = device_get_ivars(dev); if (uaa->usb_mode != USB_MODE_HOST) return (ENXIO); if (uaa->info.bConfigIndex != URE_CONFIG_IDX) diff --git a/sys/dev/vt/vt_core.c b/sys/dev/vt/vt_core.c index 40be78284ce..2884c57d035 100644 --- a/sys/dev/vt/vt_core.c +++ b/sys/dev/vt/vt_core.c @@ -709,7 +709,7 @@ vt_machine_kbdevent(int c) /* Suspend machine. */ power_pm_suspend(POWER_SLEEP_STATE_SUSPEND); return (1); - }; + } return (0); } diff --git a/sys/fs/nandfs/nandfs_segment.c b/sys/fs/nandfs/nandfs_segment.c index 22fb7cdc9ad..38019ef6da8 100644 --- a/sys/fs/nandfs/nandfs_segment.c +++ b/sys/fs/nandfs/nandfs_segment.c @@ -199,7 +199,7 @@ delete_segment(struct nandfs_seginfo *seginfo) TAILQ_REMOVE(&seg->segsum, bp, b_cluster.cluster_entry); bp->b_flags &= ~B_MANAGED; brelse(bp); - }; + } LIST_REMOVE(seg, seg_link); free(seg, M_DEVBUF); @@ -752,7 +752,7 @@ nandfs_clean_segblocks(struct nandfs_segment *seg, uint8_t unlock) TAILQ_FOREACH_SAFE(bp, &seg->segsum, b_cluster.cluster_entry, tbp) { TAILQ_REMOVE(&seg->segsum, bp, b_cluster.cluster_entry); nandfs_clean_buf(fsdev, bp); - }; + } TAILQ_FOREACH_SAFE(bp, &seg->data, b_cluster.cluster_entry, tbp) { TAILQ_REMOVE(&seg->data, bp, b_cluster.cluster_entry); @@ -807,7 +807,7 @@ nandfs_save_segblocks(struct nandfs_segment *seg, uint8_t unlock) goto out; } i++; - }; + } i = 0; TAILQ_FOREACH_SAFE(bp, &seg->data, b_cluster.cluster_entry, tbp) { diff --git a/sys/fs/nfs/nfs_commonacl.c b/sys/fs/nfs/nfs_commonacl.c index 0201e2d2b1d..d6ba7425e69 100644 --- a/sys/fs/nfs/nfs_commonacl.c +++ b/sys/fs/nfs/nfs_commonacl.c @@ -436,7 +436,7 @@ nfsrv_buildacl(struct nfsrv_descript *nd, NFSACL_T *aclp, enum vtype type, break; default: continue; - }; + } retlen += nfsrv_buildace(nd, name, namelen, type, isgroup, isowner, &aclp->acl_entry[i]); entrycnt++; @@ -505,7 +505,7 @@ nfsrv_compareacl(NFSACL_T *aclp1, NFSACL_T *aclp2) case ACL_OTHER: if (acep1->ae_perm != acep2->ae_perm) return (1); - }; + } acep1++; acep2++; } diff --git a/sys/fs/nfs/nfs_commonport.c b/sys/fs/nfs/nfs_commonport.c index a22b38c9463..a62a222edc1 100644 --- a/sys/fs/nfs/nfs_commonport.c +++ b/sys/fs/nfs/nfs_commonport.c @@ -337,7 +337,7 @@ nfsvno_pathconf(struct vnode *vp, int flag, register_t *retf, */ *retf = 0; printf("nfsrvd pathconf flag=%d not supp\n", flag); - }; + } error = 0; } NFSEXITCODE(error); diff --git a/sys/fs/nfs/nfs_commonsubs.c b/sys/fs/nfs/nfs_commonsubs.c index 16d91af629a..0d46d95df3b 100644 --- a/sys/fs/nfs/nfs_commonsubs.c +++ b/sys/fs/nfs/nfs_commonsubs.c @@ -507,7 +507,7 @@ nfsm_fhtom(struct nfsrv_descript *nd, u_int8_t *fhp, int size, int set_true) } (void) nfsm_strtom(nd, fhp, size); break; - }; + } return (bytesize); } @@ -544,7 +544,7 @@ nfsaddr_match(int family, union nethostaddr *haddr, NFSSOCKADDR_T nam) } break; #endif - }; + } return (0); } @@ -581,7 +581,7 @@ nfsaddr2_match(NFSSOCKADDR_T nam1, NFSSOCKADDR_T nam2) } break; #endif - }; + } return (0); } @@ -1774,7 +1774,7 @@ nfsv4_loadattr(struct nfsrv_descript *nd, vnode_t vp, */ bitpos = NFSATTRBIT_MAX; break; - }; + } } /* @@ -2508,7 +2508,7 @@ nfsv4_fillattr(struct nfsrv_descript *nd, struct mount *mp, vnode_t vp, break; default: printf("EEK! Bad V4 attribute bitpos=%d\n", bitpos); - }; + } } } if (naclp != NULL) diff --git a/sys/fs/nfsclient/nfs_clbio.c b/sys/fs/nfsclient/nfs_clbio.c index 3498dc0edb9..567e326b822 100644 --- a/sys/fs/nfsclient/nfs_clbio.c +++ b/sys/fs/nfsclient/nfs_clbio.c @@ -681,7 +681,7 @@ ncl_bioread(struct vnode *vp, struct uio *uio, int ioflag, struct ucred *cred) ncl_printf(" ncl_bioread: type %x unexpected\n", vp->v_type); bp = NULL; break; - }; + } if (n > 0) { error = vn_io_fault_uiomove(bp->b_data + on, (int)n, uio); @@ -1664,7 +1664,7 @@ ncl_doio(struct vnode *vp, struct buf *bp, struct ucred *cr, struct thread *td, default: ncl_printf("ncl_doio: type %x unexpected\n", vp->v_type); break; - }; + } if (error) { bp->b_ioflags |= BIO_ERROR; bp->b_error = error; diff --git a/sys/fs/nfsclient/nfs_clport.c b/sys/fs/nfsclient/nfs_clport.c index eaa445b2dba..c063de156f9 100644 --- a/sys/fs/nfsclient/nfs_clport.c +++ b/sys/fs/nfsclient/nfs_clport.c @@ -925,7 +925,7 @@ nfscl_fillsattr(struct nfsrv_descript *nd, struct vattr *vap, (void) nfsv4_fillattr(nd, vp->v_mount, vp, NULL, vap, NULL, 0, &attrbits, NULL, NULL, 0, 0, 0, 0, (uint64_t)0); break; - }; + } } /* diff --git a/sys/fs/nfsclient/nfs_clrpcops.c b/sys/fs/nfsclient/nfs_clrpcops.c index a7d47f0ab9e..cd12fba7c2d 100644 --- a/sys/fs/nfsclient/nfs_clrpcops.c +++ b/sys/fs/nfsclient/nfs_clrpcops.c @@ -487,7 +487,7 @@ nfsrpc_openrpc(struct nfsmount *nmp, vnode_t vp, u_int8_t *nfhp, int fhlen, default: error = NFSERR_BADXDR; goto nfsmout; - }; + } } else { ndp->nfsdl_flags = NFSCLDL_READ; } @@ -2086,7 +2086,7 @@ nfsrpc_createv4(vnode_t dvp, char *name, int namelen, struct vattr *vap, default: error = NFSERR_BADXDR; goto nfsmout; - }; + } } else { dp->nfsdl_flags = NFSCLDL_READ; } @@ -3698,7 +3698,7 @@ nfsrpc_advlock(vnode_t vp, off_t size, int op, struct flock *fl, break; default: return (EINVAL); - }; + } if (start < 0) return (EINVAL); if (fl->l_len != 0) { diff --git a/sys/fs/nfsclient/nfs_clstate.c b/sys/fs/nfsclient/nfs_clstate.c index 2600b80ea5d..a49e93f40aa 100644 --- a/sys/fs/nfsclient/nfs_clstate.c +++ b/sys/fs/nfsclient/nfs_clstate.c @@ -1297,7 +1297,7 @@ nfscl_checkwritelocked(vnode_t vp, struct flock *fl, break; default: return (1); - }; + } if (fl->l_len != 0) { end = off + fl->l_len; if (end < off) @@ -3507,7 +3507,7 @@ nfscl_docb(struct nfsrv_descript *nd, NFSPROC_T *p) error = NFSERR_NOTSUPP; } break; - }; + } if (error) { if (error == EBADRPC || error == NFSERR_BADXDR) { nd->nd_repstat = NFSERR_BADXDR; diff --git a/sys/fs/nfsclient/nfs_clvnops.c b/sys/fs/nfsclient/nfs_clvnops.c index 6aee675041f..4487b2a63c9 100644 --- a/sys/fs/nfsclient/nfs_clvnops.c +++ b/sys/fs/nfsclient/nfs_clvnops.c @@ -974,7 +974,7 @@ nfs_setattr(struct vop_setattr_args *ap) mtx_lock(&np->n_mtx); np->n_vattr.na_size = np->n_size = vap->va_size; mtx_unlock(&np->n_mtx); - }; + } } else { mtx_lock(&np->n_mtx); if ((vap->va_mtime.tv_sec != VNOVAL || vap->va_atime.tv_sec != VNOVAL) && diff --git a/sys/fs/nfsserver/nfs_nfsdport.c b/sys/fs/nfsserver/nfs_nfsdport.c index edbcb355e07..44ae88e9cb9 100644 --- a/sys/fs/nfsserver/nfs_nfsdport.c +++ b/sys/fs/nfsserver/nfs_nfsdport.c @@ -2370,7 +2370,7 @@ nfsrv_sattr(struct nfsrv_descript *nd, vnode_t vp, struct nfsvattr *nvap, vfs_timestamp(&nvap->na_atime); nvap->na_vaflags |= VA_UTIMES_NULL; break; - }; + } NFSM_DISSECT(tl, u_int32_t *, NFSX_UNSIGNED); switch (fxdr_unsigned(int, *tl)) { case NFSV3SATTRTIME_TOCLIENT: @@ -2383,11 +2383,11 @@ nfsrv_sattr(struct nfsrv_descript *nd, vnode_t vp, struct nfsvattr *nvap, if (!toclient) nvap->na_vaflags |= VA_UTIMES_NULL; break; - }; + } break; case ND_NFSV4: error = nfsv4_sattr(nd, vp, nvap, attrbitp, aclp, p); - }; + } nfsmout: NFSEXITCODE2(error, nd); return (error); @@ -2585,7 +2585,7 @@ nfsv4_sattr(struct nfsrv_descript *nd, vnode_t vp, struct nfsvattr *nvap, */ bitpos = NFSATTRBIT_MAX; break; - }; + } } /* diff --git a/sys/fs/nfsserver/nfs_nfsdserv.c b/sys/fs/nfsserver/nfs_nfsdserv.c index bd054c47718..2a0c9cfddef 100644 --- a/sys/fs/nfsserver/nfs_nfsdserv.c +++ b/sys/fs/nfsserver/nfs_nfsdserv.c @@ -1024,7 +1024,7 @@ nfsrvd_create(struct nfsrv_descript *nd, __unused int isdgram, break; default: break; - }; + } } else { NFSM_DISSECT(tl, u_int32_t *, NFSX_UNSIGNED); how = fxdr_unsigned(int, *tl); @@ -1041,7 +1041,7 @@ nfsrvd_create(struct nfsrv_descript *nd, __unused int isdgram, cverf[1] = *tl; exclusive_flag = 1; break; - }; + } NFSVNO_SETATTRVAL(&nva, type, VREG); } } @@ -1088,7 +1088,7 @@ nfsrvd_create(struct nfsrv_descript *nd, __unused int isdgram, if (named.ni_vp == NULL) NFSVNO_SETATTRVAL(&nva, mode, 0); break; - }; + } } /* @@ -2206,7 +2206,7 @@ nfsrvd_lock(struct nfsrv_descript *nd, __unused int isdgram, default: nd->nd_repstat = NFSERR_BADXDR; goto nfsmout; - }; + } if (*tl++ == newnfs_true) flags |= NFSLCK_RECLAIM; offset = fxdr_hyper(tl); @@ -2400,7 +2400,7 @@ nfsrvd_lockt(struct nfsrv_descript *nd, __unused int isdgram, default: nd->nd_repstat = NFSERR_BADXDR; goto nfsmout; - }; + } lo.lo_first = fxdr_hyper(tl); tl += 2; len = fxdr_hyper(tl); @@ -2509,7 +2509,7 @@ nfsrvd_locku(struct nfsrv_descript *nd, __unused int isdgram, free(stp, M_NFSDSTATE); free(lop, M_NFSDLOCK); goto nfsmout; - }; + } stp->ls_ownerlen = 0; stp->ls_uid = nd->nd_cred->cr_uid; stp->ls_seq = fxdr_unsigned(int, *tl++); @@ -2645,7 +2645,7 @@ nfsrvd_open(struct nfsrv_descript *nd, __unused int isdgram, default: /* nd_repstat will be set to NFSERR_INVAL below. */ break; - }; + } } switch (i) { case NFSV4OPEN_ACCESSREAD: @@ -2659,7 +2659,7 @@ nfsrvd_open(struct nfsrv_descript *nd, __unused int isdgram, break; default: nd->nd_repstat = NFSERR_INVAL; - }; + } i = fxdr_unsigned(int, *tl++); switch (i) { case NFSV4OPEN_DENYNONE: @@ -2675,7 +2675,7 @@ nfsrvd_open(struct nfsrv_descript *nd, __unused int isdgram, break; default: nd->nd_repstat = NFSERR_INVAL; - }; + } clientid.lval[0] = *tl++; clientid.lval[1] = *tl; if ((nd->nd_flag & ND_IMPLIEDCLID) != 0) { @@ -2750,7 +2750,7 @@ nfsrvd_open(struct nfsrv_descript *nd, __unused int isdgram, default: nd->nd_repstat = NFSERR_BADXDR; goto nfsmout; - }; + } } else if (create != NFSV4OPEN_NOCREATE) { nd->nd_repstat = NFSERR_BADXDR; goto nfsmout; @@ -2832,7 +2832,7 @@ nfsrvd_open(struct nfsrv_descript *nd, __unused int isdgram, case NFSCREATE_EXCLUSIVE41: exclusive_flag = 1; break; - }; + } } nfsvno_open(nd, &named, clientid, &stateid, stp, &exclusive_flag, &nva, cverf, create, aclp, &attrbits, @@ -2853,7 +2853,7 @@ nfsrvd_open(struct nfsrv_descript *nd, __unused int isdgram, default: nd->nd_repstat = NFSERR_BADXDR; goto nfsmout; - }; + } stp->ls_flags |= NFSLCK_RECLAIM; } else { /* CLAIM_NULL_FH */ @@ -3247,7 +3247,7 @@ nfsrvd_opendowngrade(struct nfsrv_descript *nd, __unused int isdgram, break; default: nd->nd_repstat = NFSERR_BADXDR; - }; + } i = fxdr_unsigned(int, *tl); switch (i) { case NFSV4OPEN_DENYNONE: @@ -3263,7 +3263,7 @@ nfsrvd_opendowngrade(struct nfsrv_descript *nd, __unused int isdgram, break; default: nd->nd_repstat = NFSERR_BADXDR; - }; + } clientid.lval[0] = stp->ls_stateid.other[0]; clientid.lval[1] = stp->ls_stateid.other[1]; diff --git a/sys/fs/nfsserver/nfs_nfsdsocket.c b/sys/fs/nfsserver/nfs_nfsdsocket.c index 4497161f6dd..4e995c1e1c4 100644 --- a/sys/fs/nfsserver/nfs_nfsdsocket.c +++ b/sys/fs/nfsserver/nfs_nfsdsocket.c @@ -992,7 +992,7 @@ nfsrvd_compound(struct nfsrv_descript *nd, int isdgram, u_char *tag, NULL, p, &vpnes); } } - }; + } if (error) { if (error == EBADRPC || error == NFSERR_BADXDR) { nd->nd_repstat = NFSERR_BADXDR; diff --git a/sys/fs/nfsserver/nfs_nfsdsubs.c b/sys/fs/nfsserver/nfs_nfsdsubs.c index c0421e34ce1..c177f452d12 100644 --- a/sys/fs/nfsserver/nfs_nfsdsubs.c +++ b/sys/fs/nfsserver/nfs_nfsdsubs.c @@ -1814,7 +1814,7 @@ nfsrv_putreferralattr(struct nfsrv_descript *nd, nfsattrbit_t *retbitp, break; default: printf("EEK! Bad V4 refattr bitpos=%d\n", bitpos); - }; + } } } *retnump = txdr_unsigned(retnum); diff --git a/sys/fs/smbfs/smbfs_io.c b/sys/fs/smbfs/smbfs_io.c index 4de382785da..f549160ccef 100644 --- a/sys/fs/smbfs/smbfs_io.c +++ b/sys/fs/smbfs/smbfs_io.c @@ -342,7 +342,7 @@ smbfs_doio(struct vnode *vp, struct buf *bp, struct ucred *cr, struct thread *td default: printf("smbfs_doio: type %x unexpected\n",vp->v_type); break; - }; + } if (error) { bp->b_error = error; bp->b_ioflags |= BIO_ERROR; diff --git a/sys/fs/smbfs/smbfs_subr.c b/sys/fs/smbfs/smbfs_subr.c index 4e9f77da449..a97fb801651 100644 --- a/sys/fs/smbfs/smbfs_subr.c +++ b/sys/fs/smbfs/smbfs_subr.c @@ -59,7 +59,6 @@ void smb_time_server2local(u_long seconds, int tzoff, struct timespec *tsp) { tsp->tv_sec = seconds + tzoff * 60; - /*+ tz_minuteswest * 60 + (wall_cmos_clock ? adjkerntz : 0)*/; } /* diff --git a/sys/fs/smbfs/smbfs_vnops.c b/sys/fs/smbfs/smbfs_vnops.c index c78ceb21206..1c762b09f5c 100644 --- a/sys/fs/smbfs/smbfs_vnops.c +++ b/sys/fs/smbfs/smbfs_vnops.c @@ -341,7 +341,7 @@ smbfs_setattr(ap) default: error = EINVAL; goto out; - }; + } if (isreadonly) { error = EROFS; goto out; diff --git a/sys/fs/tmpfs/tmpfs_subr.c b/sys/fs/tmpfs/tmpfs_subr.c index fcc8782b9dd..72e87920558 100644 --- a/sys/fs/tmpfs/tmpfs_subr.c +++ b/sys/fs/tmpfs/tmpfs_subr.c @@ -945,7 +945,7 @@ tmpfs_dir_attach_dup(struct tmpfs_node *dnode, LIST_INSERT_BEFORE(de, nde, uh.td_dup.index_entries); LIST_INSERT_HEAD(duphead, nde, uh.td_dup.entries); return; - }; + } } /* diff --git a/sys/fs/unionfs/union_subr.c b/sys/fs/unionfs/union_subr.c index 951d7752c55..6f53473e778 100644 --- a/sys/fs/unionfs/union_subr.c +++ b/sys/fs/unionfs/union_subr.c @@ -1238,7 +1238,7 @@ unionfs_checkuppervp(struct vnode *vp, char *fil, int lno) "unionfs_checkuppervp: on non-unionfs-node.\n"); #endif panic("unionfs_checkuppervp"); - }; + } #endif return (unp->un_uppervp); } @@ -1258,7 +1258,7 @@ unionfs_checklowervp(struct vnode *vp, char *fil, int lno) "unionfs_checklowervp: on non-unionfs-node.\n"); #endif panic("unionfs_checklowervp"); - }; + } #endif return (unp->un_lowervp); } diff --git a/sys/geom/raid/md_promise.c b/sys/geom/raid/md_promise.c index 2d161e70136..42ae947ca08 100644 --- a/sys/geom/raid/md_promise.c +++ b/sys/geom/raid/md_promise.c @@ -290,7 +290,7 @@ promise_meta_unused_range(struct promise_raid_conf **metaarr, int nsd, metaarr[i]->disk_sectors; csize = sectors - coff; i++; - }; + } return ((*size > 0) ? 1 : 0); } diff --git a/sys/geom/sched/g_sched.c b/sys/geom/sched/g_sched.c index d4e3ca026ad..192f5c5a3e2 100644 --- a/sys/geom/sched/g_sched.c +++ b/sys/geom/sched/g_sched.c @@ -742,7 +742,7 @@ g_gsched_modevent(module_t mod, int cmd, void *arg) G_SCHED_DEBUG(0, "Unloaded module %s error %d.", gsp->gs_name, error); break; - }; + } return (error); } diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c index 4320b1423af..a0f624e2aca 100644 --- a/sys/kern/vfs_vnops.c +++ b/sys/kern/vfs_vnops.c @@ -1420,7 +1420,7 @@ vn_stat(vp, sb, active_cred, file_cred, td) break; default: return (EBADF); - }; + } sb->st_mode = mode; sb->st_nlink = vap->va_nlink; sb->st_uid = vap->va_uid; diff --git a/sys/kgssapi/gss_impl.c b/sys/kgssapi/gss_impl.c index 3a427a5e812..38930d77b52 100644 --- a/sys/kgssapi/gss_impl.c +++ b/sys/kgssapi/gss_impl.c @@ -323,7 +323,7 @@ kgssapi_modevent(module_t mod, int type, void *data) /* FALLTHROUGH */ default: error = EOPNOTSUPP; - }; + } return (error); } static moduledata_t kgssapi_mod = { diff --git a/sys/mips/mips/db_disasm.c b/sys/mips/mips/db_disasm.c index 14788ed186f..108c9dd8a1a 100644 --- a/sys/mips/mips/db_disasm.c +++ b/sys/mips/mips/db_disasm.c @@ -226,7 +226,7 @@ md_printins(int ins, int mdbdot) default: db_printf("\t%s,%s,%s", reg_name[i.RType.rd], reg_name[i.RType.rs], reg_name[i.RType.rt]); - }; + } break; case OP_BCOND: @@ -288,7 +288,7 @@ md_printins(int ins, int mdbdot) default: db_printf("%s", c0_opname[i.FRType.func]); - }; + } break; case OP_COP1: @@ -323,7 +323,7 @@ md_printins(int ins, int mdbdot) db_printf("%s.%s\tf%d,f%d,f%d", cop1_name[i.FRType.func], fmt_name[i.FRType.fmt], i.FRType.fd, i.FRType.fs, i.FRType.ft); - }; + } break; case OP_J: diff --git a/sys/mips/mips/db_trace.c b/sys/mips/mips/db_trace.c index 445600c03da..1359a53fe7f 100644 --- a/sys/mips/mips/db_trace.c +++ b/sys/mips/mips/db_trace.c @@ -260,7 +260,7 @@ stacktrace_subr(register_t pc, register_t sp, register_t ra, case OP_SYSCALL: case OP_BREAK: more = 1; /* stop now */ - }; + } break; case OP_BCOND: @@ -281,7 +281,7 @@ stacktrace_subr(register_t pc, register_t sp, register_t ra, case OP_BCx: case OP_BCy: more = 2; /* stop after next instruction */ - }; + } break; case OP_SW: diff --git a/sys/net/if_gif.c b/sys/net/if_gif.c index 1607af9c8e6..cfa4650ac2b 100644 --- a/sys/net/if_gif.c +++ b/sys/net/if_gif.c @@ -1023,7 +1023,7 @@ gif_set_tunnel(struct ifnet *ifp, struct sockaddr *src, struct sockaddr *dst) #endif default: return (EAFNOSUPPORT); - }; + } if (sc->gif_family != src->sa_family) gif_detach(sc); diff --git a/sys/net/if_gre.c b/sys/net/if_gre.c index 9d4a9763ca7..425df8e9755 100644 --- a/sys/net/if_gre.c +++ b/sys/net/if_gre.c @@ -353,7 +353,7 @@ gre_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) if (error != 0) goto end; #endif - }; + } error = gre_set_tunnel(ifp, src, dst); break; case SIOCDIFPHYADDR: @@ -960,7 +960,7 @@ gre_transmit(struct ifnet *ifp, struct mbuf *m) default: m_freem(m); error = ENETDOWN; - }; + } drop: if (error) if_inc_counter(ifp, IFCOUNTER_OERRORS, 1); diff --git a/sys/netgraph/netflow/ng_netflow.c b/sys/netgraph/netflow/ng_netflow.c index 4f9f953c6f9..a14290357e4 100644 --- a/sys/netgraph/netflow/ng_netflow.c +++ b/sys/netgraph/netflow/ng_netflow.c @@ -609,7 +609,7 @@ ng_netflow_rcvdata (hook_p hook, item_p item) */ log(LOG_ERR, "ng_netflow: incoming data on export hook!\n"); ERROUT(EINVAL); - }; + } if (hook == iface->hook) { if ((iface->info.conf & NG_NETFLOW_CONF_INGRESS) == 0) diff --git a/sys/netgraph/ng_base.c b/sys/netgraph/ng_base.c index 0f48e12a875..af8505cb78b 100644 --- a/sys/netgraph/ng_base.c +++ b/sys/netgraph/ng_base.c @@ -2056,7 +2056,7 @@ ng_acquire_read(node_p node, item_p item) return (item); } cpu_spinwait(); - }; + } /* Queue the request for later. */ ng_queue_rw(node, item, NGQRW_R); diff --git a/sys/netgraph/ng_ipfw.c b/sys/netgraph/ng_ipfw.c index 092a0416b07..066c31f9835 100644 --- a/sys/netgraph/ng_ipfw.c +++ b/sys/netgraph/ng_ipfw.c @@ -117,7 +117,7 @@ ng_ipfw_mod_event(module_t mod, int event, void *data) != 0) { log(LOG_ERR, "%s: can't create ng_ipfw node", __func__); break; - }; + } /* Try to name node */ if (ng_name_node(fw_node, "ipfw") != 0) @@ -240,7 +240,7 @@ ng_ipfw_rcvdata(hook_p hook, item_p item) if (tag == NULL) { NG_FREE_M(m); return (EINVAL); /* XXX: find smth better */ - }; + } if (m->m_len < sizeof(struct ip) && (m = m_pullup(m, sizeof(struct ip))) == NULL) diff --git a/sys/netgraph/ng_nat.c b/sys/netgraph/ng_nat.c index 71419d65298..cdec6e063e0 100644 --- a/sys/netgraph/ng_nat.c +++ b/sys/netgraph/ng_nat.c @@ -838,7 +838,7 @@ ng_nat_shutdown(node_p node) struct ng_nat_rdr_lst *entry = STAILQ_FIRST(&priv->redirhead); STAILQ_REMOVE_HEAD(&priv->redirhead, entries); free(entry, M_NETGRAPH); - }; + } /* Final free. */ LibAliasUninit(priv->lib); diff --git a/sys/netpfil/ipfw/ip_fw_sockopt.c b/sys/netpfil/ipfw/ip_fw_sockopt.c index 25ac16eb31c..857b465515b 100644 --- a/sys/netpfil/ipfw/ip_fw_sockopt.c +++ b/sys/netpfil/ipfw/ip_fw_sockopt.c @@ -230,7 +230,7 @@ ipfw_find_rule(struct ip_fw_chain *chain, uint32_t key, uint32_t id) lo = i + 1; /* continue from the next one */ else /* r->id >= id */ hi = i; /* this might be good */ - }; + } return hi; } diff --git a/sys/netsmb/smb_subr.c b/sys/netsmb/smb_subr.c index 3846b75f71c..2992f994b17 100644 --- a/sys/netsmb/smb_subr.c +++ b/sys/netsmb/smb_subr.c @@ -209,7 +209,7 @@ m_dumpm(struct mbuf *m) { printf("%02x ",((int)*(p++)) & 0xff); } m=m->m_next; - }; + } printf("\n"); } #endif diff --git a/sys/ofed/drivers/infiniband/hw/mthca/mthca_provider.c b/sys/ofed/drivers/infiniband/hw/mthca/mthca_provider.c index 3fed07c5d56..adc24aae6e9 100644 --- a/sys/ofed/drivers/infiniband/hw/mthca/mthca_provider.c +++ b/sys/ofed/drivers/infiniband/hw/mthca/mthca_provider.c @@ -1045,7 +1045,7 @@ static struct ib_mr *mthca_reg_user_mr(struct ib_pd *pd, u64 start, u64 length, shift = ffs(mr->umem->page_size) - 1; - n = mr->umem->nmap;; + n = mr->umem->nmap; mr->mtt = mthca_alloc_mtt(dev, n); if (IS_ERR(mr->mtt)) { err = PTR_ERR(mr->mtt); diff --git a/sys/ofed/drivers/net/mlx4/cmd.c b/sys/ofed/drivers/net/mlx4/cmd.c index f0805e8c8af..9d517796516 100644 --- a/sys/ofed/drivers/net/mlx4/cmd.c +++ b/sys/ofed/drivers/net/mlx4/cmd.c @@ -2572,7 +2572,7 @@ int mlx4_set_vf_link_state(struct mlx4_dev *dev, int port, int vf, int link_stat mlx4_warn(dev, "unknown value for link_state %02x on slave %d port %d\n", link_state, slave, port); return -EINVAL; - }; + } /* update the admin & oper state on the link state */ s_info = &priv->mfunc.master.vf_admin[slave].vport[port]; vp_oper = &priv->mfunc.master.vf_oper[slave].vport[port]; diff --git a/sys/ofed/drivers/net/mlx4/eq.c b/sys/ofed/drivers/net/mlx4/eq.c index 31fafbe01d7..145b9bc5590 100644 --- a/sys/ofed/drivers/net/mlx4/eq.c +++ b/sys/ofed/drivers/net/mlx4/eq.c @@ -754,7 +754,7 @@ static int mlx4_eq_int(struct mlx4_dev *dev, struct mlx4_eq *eq) !!(eqe->owner & 0x80) ^ !!(eq->cons_index & eq->nent) ? "HW" : "SW"); break; - }; + } ++eq->cons_index; eqes_found = 1; diff --git a/sys/pc98/cbus/olpt.c b/sys/pc98/cbus/olpt.c index 9aa821271c8..983ec078e21 100644 --- a/sys/pc98/cbus/olpt.c +++ b/sys/pc98/cbus/olpt.c @@ -420,7 +420,7 @@ lptopen (struct cdev *dev, int flags, int fmt, struct thread *td) lprintf(("irq %x\n", sc->sc_irq)); if (sc->sc_irq & LP_USE_IRQ) { sc->sc_state |= TOUT; - sc->sc_backoff = hz / LPTOUTINITIAL;; + sc->sc_backoff = hz / LPTOUTINITIAL; callout_reset(&sc->timer, sc->sc_backoff, lptout, sc); } diff --git a/sys/powerpc/powermac/fcu.c b/sys/powerpc/powermac/fcu.c index 3d5e79f0ee1..324fd1fbb82 100644 --- a/sys/powerpc/powermac/fcu.c +++ b/sys/powerpc/powermac/fcu.c @@ -553,7 +553,7 @@ fcu_fanrpm_sysctl(SYSCTL_HANDLER_ARGS) default: /* This should never happen */ return (EINVAL); - }; + } } /* We can only read the RPM from a PWM controlled fan, so return. */ diff --git a/sys/powerpc/powermac/pmu.c b/sys/powerpc/powermac/pmu.c index 9df83cbf7bc..8080c212ee1 100644 --- a/sys/powerpc/powermac/pmu.c +++ b/sys/powerpc/powermac/pmu.c @@ -1064,7 +1064,7 @@ pmu_battquery_sysctl(SYSCTL_HANDLER_ARGS) default: /* This should never happen */ result = -1; - }; + } error = sysctl_handle_int(oidp, &result, 0, req); diff --git a/sys/powerpc/powermac/smu.c b/sys/powerpc/powermac/smu.c index bc8ea435871..cbc0e359808 100644 --- a/sys/powerpc/powermac/smu.c +++ b/sys/powerpc/powermac/smu.c @@ -888,7 +888,7 @@ smu_fanrpm_sysctl(SYSCTL_HANDLER_ARGS) default: /* This should never happen */ return (EINVAL); - }; + } } /* We can only read the RPM from a PWM controlled fan, so return. */ if ((arg2 & 0xff00) == SMU_PWM_SYSCTL_RPM) diff --git a/sys/rpc/clnt_bck.c b/sys/rpc/clnt_bck.c index b63b2b15ba4..477b2763601 100644 --- a/sys/rpc/clnt_bck.c +++ b/sys/rpc/clnt_bck.c @@ -381,7 +381,7 @@ printf("emsgsize\n"); break; default: stat = RPC_CANTRECV; - }; + } errp->re_status = stat; goto out; } else { diff --git a/sys/sparc64/sparc64/db_disasm.c b/sys/sparc64/sparc64/db_disasm.c index 55e2109b4bb..453aea67c0b 100644 --- a/sys/sparc64/sparc64/db_disasm.c +++ b/sys/sparc64/sparc64/db_disasm.c @@ -867,7 +867,7 @@ db_disasm(db_addr_t loc, bool altfmt) break; } i_ptr++; - }; + } if (!matchp) { db_printf("undefined\n"); @@ -1023,7 +1023,7 @@ db_disasm(db_addr_t loc, bool altfmt) } if (*(++f_ptr)) db_printf(", "); - }; + } db_printf("\n"); diff --git a/sys/x86/cpufreq/smist.c b/sys/x86/cpufreq/smist.c index 5cfd72b8d8c..6116d9416f2 100644 --- a/sys/x86/cpufreq/smist.c +++ b/sys/x86/cpufreq/smist.c @@ -223,7 +223,7 @@ set_ownership(device_t dev) bus_dma_tag_destroy(tag); device_printf(dev, "can't load mem\n"); return (ENXIO); - }; + } DPRINT(dev, "taking ownership over BIOS return %d\n", cb_data.result); bus_dmamap_unload(tag, map); bus_dmamem_free(tag, cb_data.buf, map); From 71c1e7443476ce2f466f209abda0ee28c64e38c6 Mon Sep 17 00:00:00 2001 From: Oleksandr Tymoshenko Date: Sun, 10 Apr 2016 23:17:06 +0000 Subject: [PATCH 136/159] Fix IIC "how" argument dereferencing on big-endian platforms "how" argument is passed as value of int* pointer to callback function but dereferenced as char* so only one byte taken into into account. On little-endian systems it happens to work because first byte is LSB that contains actual value, on big-endian it's MSB and in this case it's always equal zero PR: 207786 Submitted by: chadf@triularity.org --- sys/dev/gpio/gpioiic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/dev/gpio/gpioiic.c b/sys/dev/gpio/gpioiic.c index 15f8f180c31..d365eea1c66 100644 --- a/sys/dev/gpio/gpioiic.c +++ b/sys/dev/gpio/gpioiic.c @@ -157,7 +157,7 @@ gpioiic_callback(device_t dev, int index, caddr_t data) int error, how; how = GPIOBUS_DONTWAIT; - if (data != NULL && (int)*data == IIC_WAIT) + if (data != NULL && *(int*)data == IIC_WAIT) how = GPIOBUS_WAIT; error = 0; switch (index) { From bc17d12da39ac7e147dbc097f423a90f2d9e2819 Mon Sep 17 00:00:00 2001 From: "Pedro F. Giffuni" Date: Sun, 10 Apr 2016 23:47:40 +0000 Subject: [PATCH 137/159] lpr: replace 0 with NULL for pointers. Found with devel/coccinelle. Reviewed by: gad --- usr.sbin/lpr/chkprintcap/chkprintcap.c | 8 ++++---- usr.sbin/lpr/common_source/common.c | 4 ++-- usr.sbin/lpr/common_source/net.c | 2 +- usr.sbin/lpr/common_source/printcap.c | 8 ++++---- usr.sbin/lpr/common_source/request.c | 4 ++-- usr.sbin/lpr/common_source/rmjob.c | 2 +- usr.sbin/lpr/lpc/lpc.c | 12 ++++++------ usr.sbin/lpr/lpd/printjob.c | 6 +++--- 8 files changed, 23 insertions(+), 23 deletions(-) diff --git a/usr.sbin/lpr/chkprintcap/chkprintcap.c b/usr.sbin/lpr/chkprintcap/chkprintcap.c index 91e8299d582..96fe4896fb2 100644 --- a/usr.sbin/lpr/chkprintcap/chkprintcap.c +++ b/usr.sbin/lpr/chkprintcap/chkprintcap.c @@ -222,7 +222,7 @@ note_spool_dir(const struct printer *pp, const struct stat *st) struct dirlist *dp, *dp2, *last; dp = malloc(sizeof *dp); - if (dp == 0) + if (dp == NULL) err(++problems, "malloc(%lu)", (u_long)sizeof *dp); dp->stab = *st; @@ -233,7 +233,7 @@ note_spool_dir(const struct printer *pp, const struct stat *st) if (dp->path == 0) err(++problems, "malloc(%lu)", strlen(pp->spool_dir) + 1UL); - last = 0; + last = NULL; LIST_FOREACH(dp2, &dirlist, link) { if(!lessp(dp, dp2)) break; @@ -255,7 +255,7 @@ check_spool_dirs(void) for (dp = LIST_FIRST(&dirlist); dp; dp = dp2) { dp2 = LIST_NEXT(dp, link); - if (dp2 != 0 && equal(dp, dp2)) { + if (dp2 != NULL && equal(dp, dp2)) { ++problems; if (strcmp(dp->path, dp2->path) == 0) { warnx("%s and %s share the same spool, %s", @@ -289,7 +289,7 @@ make_spool_dir(const struct printer *pp) return; } gr = getgrnam("daemon"); - if (gr == 0) + if (gr == NULL) errx(++problems, "cannot locate daemon group"); if (chown(sd, pp->daemon_user, gr->gr_gid) < 0) { diff --git a/usr.sbin/lpr/common_source/common.c b/usr.sbin/lpr/common_source/common.c index 52d6c9fe7c1..ce0ba7cbbb3 100644 --- a/usr.sbin/lpr/common_source/common.c +++ b/usr.sbin/lpr/common_source/common.c @@ -282,7 +282,7 @@ lock_file_name(const struct printer *pp, char *buf, size_t len) { static char staticbuf[MAXPATHLEN]; - if (buf == 0) + if (buf == NULL) buf = staticbuf; if (len == 0) len = MAXPATHLEN; @@ -300,7 +300,7 @@ status_file_name(const struct printer *pp, char *buf, size_t len) { static char staticbuf[MAXPATHLEN]; - if (buf == 0) + if (buf == NULL) buf = staticbuf; if (len == 0) len = MAXPATHLEN; diff --git a/usr.sbin/lpr/common_source/net.c b/usr.sbin/lpr/common_source/net.c index ab6fa167bbb..c495bbbe93f 100644 --- a/usr.sbin/lpr/common_source/net.c +++ b/usr.sbin/lpr/common_source/net.c @@ -280,7 +280,7 @@ writel(int strm, ...) if (n > NIOV) { iovp = malloc(n * sizeof *iovp); - if (iovp == 0) + if (iovp == NULL) return -1; } diff --git a/usr.sbin/lpr/common_source/printcap.c b/usr.sbin/lpr/common_source/printcap.c index 0d3644b1b79..707b7b824d9 100644 --- a/usr.sbin/lpr/common_source/printcap.c +++ b/usr.sbin/lpr/common_source/printcap.c @@ -220,7 +220,7 @@ getprintcap_int(char *bp, struct printer *pp) char *rp_name; int error; - if ((pp->printer = capdb_canonical_name(bp)) == 0) + if ((pp->printer = capdb_canonical_name(bp)) == NULL) return PCAPERR_OSERR; #define CHK(x) do {if ((x) == PCAPERR_OSERR) return PCAPERR_OSERR;}while(0) @@ -386,7 +386,7 @@ capdb_getaltstr(char *bp, const char *shrt, const char *lng, return status; if (dflt) { *result = strdup(dflt); - if (*result == 0) + if (*result == NULL) return PCAPERR_OSERR; return strlen(*result); } @@ -439,9 +439,9 @@ capdb_canonical_name(const char *bp) const char *nameend; nameend = strpbrk(bp, "|:"); - if (nameend == 0) + if (nameend == NULL) nameend = bp + 1; - if ((retval = malloc(nameend - bp + 1)) != 0) { + if ((retval = malloc(nameend - bp + 1)) != NULL) { retval[0] = '\0'; strncat(retval, bp, nameend - bp); } diff --git a/usr.sbin/lpr/common_source/request.c b/usr.sbin/lpr/common_source/request.c index b650e5c76c0..0c68fe92674 100644 --- a/usr.sbin/lpr/common_source/request.c +++ b/usr.sbin/lpr/common_source/request.c @@ -69,11 +69,11 @@ free_request(struct request *rp) free(rp->prettyname); if (rp->authinfo) free(rp->authinfo); - while ((ru = TAILQ_FIRST(&rp->users)) != 0) { + while ((ru = TAILQ_FIRST(&rp->users)) != NULL) { TAILQ_REMOVE(&rp->users, ru, ru_link); free(ru); } - while ((rj = TAILQ_FIRST(&rp->jobids)) != 0) { + while ((rj = TAILQ_FIRST(&rp->jobids)) != NULL) { TAILQ_REMOVE(&rp->jobids, rj, rj_link); free(rj); } diff --git a/usr.sbin/lpr/common_source/rmjob.c b/usr.sbin/lpr/common_source/rmjob.c index c89a6f0c0f9..96f20bef8ea 100644 --- a/usr.sbin/lpr/common_source/rmjob.c +++ b/usr.sbin/lpr/common_source/rmjob.c @@ -332,7 +332,7 @@ rmremote(const struct printer *pp) else niov = 4 + requests + 1; iov = malloc(niov * sizeof *iov); - if (iov == 0) + if (iov == NULL) fatal(pp, "out of memory in rmremote()"); iov[0].iov_base = "\5"; iov[1].iov_base = pp->remote_queue; diff --git a/usr.sbin/lpr/lpc/lpc.c b/usr.sbin/lpr/lpc/lpc.c index cc58bd98384..5b5ec7884ab 100644 --- a/usr.sbin/lpr/lpc/lpc.c +++ b/usr.sbin/lpr/lpc/lpc.c @@ -103,7 +103,7 @@ main(int argc, char *argv[]) printf("?Ambiguous command\n"); exit(1); } - if (c == 0) { + if (c == NULL) { printf("?Invalid command\n"); exit(1); } @@ -112,7 +112,7 @@ main(int argc, char *argv[]) printf("?Privileged command\n"); exit(1); } - if (c->c_generic != 0) + if (c->c_generic != NULL) generic(c->c_generic, c->c_opts, c->c_handler, argc, argv); else @@ -205,7 +205,7 @@ cmdscanner(void) printf("?Ambiguous command\n"); continue; } - if (c == 0) { + if (c == NULL) { printf("?Invalid command\n"); continue; } @@ -222,7 +222,7 @@ cmdscanner(void) * routine might also be set on a generic routine for * initial parameter processing. */ - if (c->c_generic != 0) + if (c->c_generic != NULL) generic(c->c_generic, c->c_opts, c->c_handler, margc, margv); else @@ -239,7 +239,7 @@ getcmd(const char *name) longest = 0; nmatches = 0; - found = 0; + found = NULL; for (c = cmdtab; (p = c->c_name); c++) { for (q = name; *q == *p++; q++) if (*q == 0) /* exact match? */ @@ -283,7 +283,7 @@ makeargv(void) break; *cp++ = '\0'; } - *argp++ = 0; + *argp++ = NULL; } #define HELPINDENT (sizeof ("directory")) diff --git a/usr.sbin/lpr/lpd/printjob.c b/usr.sbin/lpr/lpd/printjob.c index 06ea1b03b23..b388b96363f 100644 --- a/usr.sbin/lpr/lpd/printjob.c +++ b/usr.sbin/lpr/lpd/printjob.c @@ -673,7 +673,7 @@ print(struct printer *pp, int format, char *file) av[i++] = "-L"; av[i++] = *locale ? locale : "C"; av[i++] = "-F"; - av[i] = 0; + av[i] = NULL; fo = ofd; goto start; } @@ -795,7 +795,7 @@ print(struct printer *pp, int format, char *file) av[n++] = "-h"; av[n++] = origin_host; av[n++] = pp->acct_file; - av[n] = 0; + av[n] = NULL; fo = pfd; if (of_pid > 0) { /* stop output filter */ write(ofd, "\031\1", 2); @@ -1737,7 +1737,7 @@ init(struct printer *pp) sprintf(&length[2], "%ld", pp->page_length); sprintf(&pxwidth[2], "%ld", pp->page_pwidth); sprintf(&pxlength[2], "%ld", pp->page_plength); - if ((s = checkremote(pp)) != 0) { + if ((s = checkremote(pp)) != NULL) { syslog(LOG_WARNING, "%s", s); free(s); } From e45e8680ed275924e23dab1f8ee484acfd1f4353 Mon Sep 17 00:00:00 2001 From: "Pedro F. Giffuni" Date: Mon, 11 Apr 2016 00:12:24 +0000 Subject: [PATCH 138/159] ext2fs: replace 0 with NULL for pointers. While here do late initialization of ebap, similar as was done in UFS. Found with devel/coccinelle. MFC after: 2 weeks --- sys/fs/ext2fs/ext2_alloc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sys/fs/ext2fs/ext2_alloc.c b/sys/fs/ext2fs/ext2_alloc.c index 9d5417c1a5d..c3bd29ba3c2 100644 --- a/sys/fs/ext2fs/ext2_alloc.c +++ b/sys/fs/ext2fs/ext2_alloc.c @@ -161,7 +161,7 @@ ext2_reallocblks(struct vop_reallocblks_args *ap) struct inode *ip; struct vnode *vp; struct buf *sbp, *ebp; - uint32_t *bap, *sbap, *ebap = 0; + uint32_t *bap, *sbap, *ebap; struct ext2mount *ump; struct cluster_save *buflist; struct indir start_ap[NIADDR + 1], end_ap[NIADDR + 1], *idp; @@ -231,6 +231,7 @@ ext2_reallocblks(struct vop_reallocblks_args *ap) /* * If the block range spans two block maps, get the second map. */ + ebap = NULL; if (end_lvl == 0 || (idp = &end_ap[end_lvl - 1])->in_off + 1 >= len) { ssize = len; } else { From 2829f76d1a1b7de3578377141a6985066e7c29ad Mon Sep 17 00:00:00 2001 From: Navdeep Parhar Date: Mon, 11 Apr 2016 02:18:59 +0000 Subject: [PATCH 139/159] cxgbe(4): Provide an explicit value for nqpcq in the firmware configuration file. --- sys/dev/cxgbe/firmware/t5fw_cfg.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sys/dev/cxgbe/firmware/t5fw_cfg.txt b/sys/dev/cxgbe/firmware/t5fw_cfg.txt index 9e16da5fad5..721ff372ef8 100644 --- a/sys/dev/cxgbe/firmware/t5fw_cfg.txt +++ b/sys/dev/cxgbe/firmware/t5fw_cfg.txt @@ -151,6 +151,7 @@ niqflint = 512 nethctrl = 1024 neq = 2048 + nqpcq = 8192 nexactf = 456 cmask = all pmask = all @@ -289,7 +290,7 @@ [fini] version = 0x1 - checksum = 0x2d7417e5 + checksum = 0x89c83d98 # # $FreeBSD$ # From 2924c4efebddf942facf72714380ee3a541f2907 Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Mon, 11 Apr 2016 03:07:35 +0000 Subject: [PATCH 140/159] hyperv/vmbus: Nuke unused function MFC after: 1 week Sponsored by: Microsoft OSTC --- sys/dev/hyperv/vmbus/hv_hv.c | 12 ------------ sys/dev/hyperv/vmbus/hv_vmbus_priv.h | 1 - 2 files changed, 13 deletions(-) diff --git a/sys/dev/hyperv/vmbus/hv_hv.c b/sys/dev/hyperv/vmbus/hv_hv.c index a4233288b05..b6795b60e74 100644 --- a/sys/dev/hyperv/vmbus/hv_hv.c +++ b/sys/dev/hyperv/vmbus/hv_hv.c @@ -69,18 +69,6 @@ hv_get_timecount(struct timecounter *tc) return (now); } -/** - * @brief Query the cpuid for presence of windows hypervisor - */ -int -hv_vmbus_query_hypervisor_presence(void) -{ - if (vm_guest != VM_GUEST_HV) - return (0); - - return (hv_high >= HV_X64_CPUID_MIN && hv_high <= HV_X64_CPUID_MAX); -} - /** * @brief Get version of the windows hypervisor */ diff --git a/sys/dev/hyperv/vmbus/hv_vmbus_priv.h b/sys/dev/hyperv/vmbus/hv_vmbus_priv.h index bc625a0af97..9cee4a69614 100644 --- a/sys/dev/hyperv/vmbus/hv_vmbus_priv.h +++ b/sys/dev/hyperv/vmbus/hv_vmbus_priv.h @@ -704,7 +704,6 @@ uint16_t hv_vmbus_post_msg_via_msg_ipc( uint16_t hv_vmbus_signal_event(void *con_id); void hv_vmbus_synic_init(void *irq_arg); void hv_vmbus_synic_cleanup(void *arg); -int hv_vmbus_query_hypervisor_presence(void); struct hv_device* hv_vmbus_child_device_create( hv_guid device_type, From e69fbdcbdf9805a3c644df820c5ea30578f86689 Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Mon, 11 Apr 2016 03:14:28 +0000 Subject: [PATCH 141/159] hyperv/vmbus: Get rid of max_leaf detection; this is actually not used. It will be replaced by a new one. MFC after: 1 week Sponsored by: Microsoft OSTC --- sys/dev/hyperv/vmbus/hv_hv.c | 32 -------------------------------- 1 file changed, 32 deletions(-) diff --git a/sys/dev/hyperv/vmbus/hv_hv.c b/sys/dev/hyperv/vmbus/hv_hv.c index b6795b60e74..c22beac736b 100644 --- a/sys/dev/hyperv/vmbus/hv_hv.c +++ b/sys/dev/hyperv/vmbus/hv_hv.c @@ -69,35 +69,6 @@ hv_get_timecount(struct timecounter *tc) return (now); } -/** - * @brief Get version of the windows hypervisor - */ -static int -hv_vmbus_get_hypervisor_version(void) -{ - u_int regs[4]; - unsigned int maxLeaf; - unsigned int op; - - /* - * Its assumed that this is called after confirming that - * Viridian is present - * Query id and revision. - */ - op = HV_CPU_ID_FUNCTION_HV_VENDOR_AND_MAX_FUNCTION; - do_cpuid(op, regs); - - maxLeaf = regs[0]; - op = HV_CPU_ID_FUNCTION_HV_INTERFACE; - do_cpuid(op, regs); - - if (maxLeaf >= HV_CPU_ID_FUNCTION_MS_HV_VERSION) { - op = HV_CPU_ID_FUNCTION_MS_HV_VERSION; - do_cpuid(op, regs); - } - return (maxLeaf); -} - /** * @brief Invoke the specified hypercall */ @@ -147,7 +118,6 @@ hv_vmbus_do_hypercall(uint64_t control, void* input, void* output) int hv_vmbus_init(void) { - int max_leaf; hv_vmbus_x64_msr_hypercall_contents hypercall_msr; void* virt_addr = 0; @@ -164,8 +134,6 @@ hv_vmbus_init(void) if (vm_guest != VM_GUEST_HV) goto cleanup; - max_leaf = hv_vmbus_get_hypervisor_version(); - /* * Write our OS info */ From 68247c05c2d3901bcfb0ec7731ee5133d0c2f988 Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Mon, 11 Apr 2016 03:28:17 +0000 Subject: [PATCH 142/159] hyperv: Identify Hyper-V features and recommends properly Features bits will be used to detect devices, e.g. timers, which do not have corresponding event channels. Submitted by: Jun Su Reviewed by: sephe, Dexuan Cui Rearranged by: sephe MFC after: 1 week Sponsored by: Microsoft OSTC --- sys/dev/hyperv/vmbus/hv_hv.c | 89 ++++++++++++++++++++++++++++ sys/dev/hyperv/vmbus/hv_vmbus_priv.h | 11 +++- 2 files changed, 98 insertions(+), 2 deletions(-) diff --git a/sys/dev/hyperv/vmbus/hv_hv.c b/sys/dev/hyperv/vmbus/hv_hv.c index c22beac736b..21ed04e1175 100644 --- a/sys/dev/hyperv/vmbus/hv_hv.c +++ b/sys/dev/hyperv/vmbus/hv_hv.c @@ -33,6 +33,7 @@ __FBSDID("$FreeBSD$"); #include +#include #include #include #include @@ -50,6 +51,9 @@ __FBSDID("$FreeBSD$"); static u_int hv_get_timecount(struct timecounter *tc); +u_int hyperv_features; +u_int hyperv_recommends; + /** * Globals */ @@ -393,3 +397,88 @@ void hv_vmbus_synic_cleanup(void *arg) wrmsr(HV_X64_MSR_SIEFP, siefp.as_uint64_t); } +static bool +hyperv_identify(void) +{ + u_int regs[4]; + unsigned int maxLeaf; + unsigned int op; + + if (vm_guest != VM_GUEST_HV) + return (false); + + op = HV_CPU_ID_FUNCTION_HV_VENDOR_AND_MAX_FUNCTION; + do_cpuid(op, regs); + maxLeaf = regs[0]; + if (maxLeaf < HV_CPU_ID_FUNCTION_MS_HV_IMPLEMENTATION_LIMITS) + return (false); + + op = HV_CPU_ID_FUNCTION_HV_INTERFACE; + do_cpuid(op, regs); + if (regs[0] != 0x31237648 /* HV#1 */) + return (false); + + op = HV_CPU_ID_FUNCTION_MS_HV_FEATURES; + do_cpuid(op, regs); + if ((regs[0] & HV_FEATURE_MSR_HYPERCALL) == 0) { + /* + * Hyper-V w/o Hypercall is impossible; someone + * is faking Hyper-V. + */ + return (false); + } + hyperv_features = regs[0]; + + op = HV_CPU_ID_FUNCTION_MS_HV_VERSION; + do_cpuid(op, regs); + printf("Hyper-V Version: %d.%d.%d [SP%d]\n", + regs[1] >> 16, regs[1] & 0xffff, regs[0], regs[2]); + + printf(" Features: 0x%b\n", hyperv_features, + "\020" + "\001VPRUNTIME" + "\002TMREFCNT" + "\003SYNCIC" + "\004SYNCTM" + "\005APIC" + "\006HYERCALL" + "\007VPINDEX" + "\010RESET" + "\011STATS" + "\012REFTSC" + "\013IDLE" + "\014TMFREQ" + "\015DEBUG"); + + op = HV_CPU_ID_FUNCTION_MS_HV_ENLIGHTENMENT_INFORMATION; + do_cpuid(op, regs); + hyperv_recommends = regs[0]; + if (bootverbose) + printf(" Recommends: %08x %08x\n", regs[0], regs[1]); + + op = HV_CPU_ID_FUNCTION_MS_HV_IMPLEMENTATION_LIMITS; + do_cpuid(op, regs); + if (bootverbose) { + printf(" Limits: Vcpu:%d Lcpu:%d Int:%d\n", + regs[0], regs[1], regs[2]); + } + + if (maxLeaf >= HV_CPU_ID_FUNCTION_MS_HV_HARDWARE_FEATURE) { + op = HV_CPU_ID_FUNCTION_MS_HV_HARDWARE_FEATURE; + do_cpuid(op, regs); + if (bootverbose) { + printf(" HW Features: %08x AMD: %08x\n", + regs[0], regs[3]); + } + } + + return (true); +} + +static void +hyperv_init(void *dummy __unused) +{ + if (!hyperv_identify()) + return; +} +SYSINIT(hyperv_initialize, SI_SUB_HYPERVISOR, SI_ORDER_FIRST, hyperv_init, NULL); diff --git a/sys/dev/hyperv/vmbus/hv_vmbus_priv.h b/sys/dev/hyperv/vmbus/hv_vmbus_priv.h index 9cee4a69614..042deec4ce7 100644 --- a/sys/dev/hyperv/vmbus/hv_vmbus_priv.h +++ b/sys/dev/hyperv/vmbus/hv_vmbus_priv.h @@ -471,10 +471,17 @@ typedef enum { HV_CPU_ID_FUNCTION_MS_HV_VERSION = 0x40000002, HV_CPU_ID_FUNCTION_MS_HV_FEATURES = 0x40000003, HV_CPU_ID_FUNCTION_MS_HV_ENLIGHTENMENT_INFORMATION = 0x40000004, - HV_CPU_ID_FUNCTION_MS_HV_IMPLEMENTATION_LIMITS = 0x40000005 - + HV_CPU_ID_FUNCTION_MS_HV_IMPLEMENTATION_LIMITS = 0x40000005, + HV_CPU_ID_FUNCTION_MS_HV_HARDWARE_FEATURE = 0x40000006 } hv_vmbus_cpuid_function; +#define HV_FEATURE_MSR_TIME_REFCNT (1 << 1) +#define HV_FEATURE_MSR_SYNCIC (1 << 2) +#define HV_FEATURE_MSR_STIMER (1 << 3) +#define HV_FEATURE_MSR_APIC (1 << 4) +#define HV_FEATURE_MSR_HYPERCALL (1 << 5) +#define HV_FEATURE_MSR_GUEST_IDLE (1 << 10) + /* * Define the format of the SIMP register */ From c8d7fb6a5c458bd8f6dd55f90f705b29ff326032 Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Mon, 11 Apr 2016 03:36:07 +0000 Subject: [PATCH 143/159] hyperv: Resurrect r297481 This time we make sure that the TIME_REF_COUNT MSR exists. Submitted by: Jun Su Reviewed by: sephe, Dexuan Cui MFC after: 1 week Sponsored by: Microsoft OSTC --- sys/dev/hyperv/vmbus/hv_hv.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/sys/dev/hyperv/vmbus/hv_hv.c b/sys/dev/hyperv/vmbus/hv_hv.c index 21ed04e1175..0e7bb76212f 100644 --- a/sys/dev/hyperv/vmbus/hv_hv.c +++ b/sys/dev/hyperv/vmbus/hv_hv.c @@ -167,8 +167,6 @@ hv_vmbus_init(void) hv_vmbus_g_context.hypercall_page = virt_addr; - tc_init(&hv_timecounter); /* register virtual timecount */ - hv_et_init(); return (0); @@ -480,5 +478,10 @@ hyperv_init(void *dummy __unused) { if (!hyperv_identify()) return; + + if (hyperv_features & HV_FEATURE_MSR_TIME_REFCNT) { + /* Register virtual timecount */ + tc_init(&hv_timecounter); + } } SYSINIT(hyperv_initialize, SI_SUB_HYPERVISOR, SI_ORDER_FIRST, hyperv_init, NULL); From e4276edca510b01c07cc0e83c67d078f13942661 Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Mon, 11 Apr 2016 04:49:21 +0000 Subject: [PATCH 144/159] hyperv: Declare hyperv_{features,recommends} properly MFC after: 1 week Sponsored by: Microsoft OSTC --- sys/dev/hyperv/vmbus/hv_vmbus_priv.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sys/dev/hyperv/vmbus/hv_vmbus_priv.h b/sys/dev/hyperv/vmbus/hv_vmbus_priv.h index 042deec4ce7..8461ae024df 100644 --- a/sys/dev/hyperv/vmbus/hv_vmbus_priv.h +++ b/sys/dev/hyperv/vmbus/hv_vmbus_priv.h @@ -635,6 +635,9 @@ typedef enum { extern hv_vmbus_context hv_vmbus_g_context; extern hv_vmbus_connection hv_vmbus_g_connection; +extern u_int hyperv_features; +extern u_int hyperv_recommends; + typedef void (*vmbus_msg_handler)(hv_vmbus_channel_msg_header *msg); typedef struct hv_vmbus_channel_msg_table_entry { From 3f2b057e3524ef3a84c70b6c7a7ef9b5873a9957 Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Mon, 11 Apr 2016 04:56:23 +0000 Subject: [PATCH 145/159] hyperv: Break long line MFC after: 1 week Sponsored by: Microsoft OSTC --- sys/dev/hyperv/vmbus/hv_hv.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sys/dev/hyperv/vmbus/hv_hv.c b/sys/dev/hyperv/vmbus/hv_hv.c index 0e7bb76212f..1efac1c04f4 100644 --- a/sys/dev/hyperv/vmbus/hv_hv.c +++ b/sys/dev/hyperv/vmbus/hv_hv.c @@ -484,4 +484,5 @@ hyperv_init(void *dummy __unused) tc_init(&hv_timecounter); } } -SYSINIT(hyperv_initialize, SI_SUB_HYPERVISOR, SI_ORDER_FIRST, hyperv_init, NULL); +SYSINIT(hyperv_initialize, SI_SUB_HYPERVISOR, SI_ORDER_FIRST, hyperv_init, + NULL); From 441a3497f55ea70fdb1b44c573780a294921b4fa Mon Sep 17 00:00:00 2001 From: Anish Gupta Date: Mon, 11 Apr 2016 05:09:43 +0000 Subject: [PATCH 146/159] Allow guest writes to AMD microcode update[0xc0010020] MSR without updating actual hardware MSR. This allows guest microcode update to go through which otherwise failing because wrmsr() was returning EINVAL. Submitted by:Yamagi Burmeister Approved by:grehan MFC after:2 weeks --- sys/amd64/vmm/amd/svm_msr.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sys/amd64/vmm/amd/svm_msr.c b/sys/amd64/vmm/amd/svm_msr.c index 088751a1672..49208a351c2 100644 --- a/sys/amd64/vmm/amd/svm_msr.c +++ b/sys/amd64/vmm/amd/svm_msr.c @@ -156,6 +156,11 @@ svm_wrmsr(struct svm_softc *sc, int vcpu, u_int num, uint64_t val, bool *retu) * Ignore writes to the "Interrupt Pending Message" MSR. */ break; + case MSR_K8_UCODE_UPDATE: + /* + * Ignore writes to microcode update register. + */ + break; default: error = EINVAL; break; From 29b7b567660fd42e8631d99ae0971936c4cf0281 Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Mon, 11 Apr 2016 06:15:40 +0000 Subject: [PATCH 147/159] hyperv: Print more features And add comment about the MSR features. MFC after: 1 week Sponsored by: Microsoft OSTC --- sys/dev/hyperv/vmbus/hv_hv.c | 54 ++++++++++++++++++++-------- sys/dev/hyperv/vmbus/hv_vmbus_priv.h | 23 ++++++++---- 2 files changed, 57 insertions(+), 20 deletions(-) diff --git a/sys/dev/hyperv/vmbus/hv_hv.c b/sys/dev/hyperv/vmbus/hv_hv.c index 1efac1c04f4..f23896d8a7f 100644 --- a/sys/dev/hyperv/vmbus/hv_hv.c +++ b/sys/dev/hyperv/vmbus/hv_hv.c @@ -54,6 +54,9 @@ static u_int hv_get_timecount(struct timecounter *tc); u_int hyperv_features; u_int hyperv_recommends; +static u_int hyperv_pm_features; +static u_int hyperv_features3; + /** * Globals */ @@ -426,27 +429,50 @@ hyperv_identify(void) return (false); } hyperv_features = regs[0]; + hyperv_pm_features = regs[2]; + hyperv_features3 = regs[3]; op = HV_CPU_ID_FUNCTION_MS_HV_VERSION; do_cpuid(op, regs); printf("Hyper-V Version: %d.%d.%d [SP%d]\n", regs[1] >> 16, regs[1] & 0xffff, regs[0], regs[2]); - printf(" Features: 0x%b\n", hyperv_features, + printf(" Features=0x%b\n", hyperv_features, "\020" - "\001VPRUNTIME" - "\002TMREFCNT" - "\003SYNCIC" - "\004SYNCTM" - "\005APIC" - "\006HYERCALL" - "\007VPINDEX" - "\010RESET" - "\011STATS" - "\012REFTSC" - "\013IDLE" - "\014TMFREQ" - "\015DEBUG"); + "\001VPRUNTIME" /* MSR_VP_RUNTIME */ + "\002TMREFCNT" /* MSR_TIME_REF_COUNT */ + "\003SYNIC" /* MSRs for SynIC */ + "\004SYNTM" /* MSRs for SynTimer */ + "\005APIC" /* MSR_{EOI,ICR,TPR} */ + "\006HYERCALL" /* MSR_{GUEST_OS_ID,HYPERCALL} */ + "\007VPINDEX" /* MSR_VP_INDEX */ + "\010RESET" /* MSR_RESET */ + "\011STATS" /* MSR_STATS_ */ + "\012REFTSC" /* MSR_REFERENCE_TSC */ + "\013IDLE" /* MSR_GUEST_IDLE */ + "\014TMFREQ" /* MSR_{TSC,APIC}_FREQUENCY */ + "\015DEBUG"); /* MSR_SYNTH_DEBUG_ */ + printf(" PM Features=max C%u, 0x%b\n", + HV_PM_FEATURE_CSTATE(hyperv_pm_features), + (hyperv_pm_features & ~HV_PM_FEATURE_CSTATE_MASK), + "\020" + "\005C3HPET"); /* HPET is required for C3 state */ + printf(" Features3=0x%b\n", hyperv_features3, + "\020" + "\001MWAIT" /* MWAIT */ + "\002DEBUG" /* guest debug support */ + "\003PERFMON" /* performance monitor */ + "\004PCPUDPE" /* physical CPU dynamic partition event */ + "\005XMMHC" /* hypercall input through XMM regs */ + "\006IDLE" /* guest idle support */ + "\007SLEEP" /* hypervisor sleep support */ + "\010NUMA" /* NUMA distance query support */ + "\011TMFREQ" /* timer frequency query (TSC, LAPIC) */ + "\012SYNCMC" /* inject synthetic machine checks */ + "\013CRASH" /* MSRs for guest crash */ + "\014DEBUGMSR" /* MSRs for guest debug */ + "\015NPIEP" /* NPIEP */ + "\016HVDIS"); /* disabling hypervisor */ op = HV_CPU_ID_FUNCTION_MS_HV_ENLIGHTENMENT_INFORMATION; do_cpuid(op, regs); diff --git a/sys/dev/hyperv/vmbus/hv_vmbus_priv.h b/sys/dev/hyperv/vmbus/hv_vmbus_priv.h index 8461ae024df..84104944d91 100644 --- a/sys/dev/hyperv/vmbus/hv_vmbus_priv.h +++ b/sys/dev/hyperv/vmbus/hv_vmbus_priv.h @@ -475,12 +475,23 @@ typedef enum { HV_CPU_ID_FUNCTION_MS_HV_HARDWARE_FEATURE = 0x40000006 } hv_vmbus_cpuid_function; -#define HV_FEATURE_MSR_TIME_REFCNT (1 << 1) -#define HV_FEATURE_MSR_SYNCIC (1 << 2) -#define HV_FEATURE_MSR_STIMER (1 << 3) -#define HV_FEATURE_MSR_APIC (1 << 4) -#define HV_FEATURE_MSR_HYPERCALL (1 << 5) -#define HV_FEATURE_MSR_GUEST_IDLE (1 << 10) +#define HV_FEATURE_MSR_TIME_REFCNT 0x0002 /* MSR_TIME_REF_COUNT */ +#define HV_FEATURE_MSR_SYNIC 0x0004 /* MSRs for SynIC */ +#define HV_FEATURE_MSR_SYNTIMER 0x0008 /* MSRs for SynTimer */ +#define HV_FEATURE_MSR_APIC 0x0010 /* MSR_{EOI,ICR,TPR} */ +#define HV_FEATURE_MSR_HYPERCALL 0x0020 /* MSR_{GUEST_OS_ID,HYPERCALL} */ +#define HV_FEATURE_MSR_GUEST_IDLE 0x0400 /* MSR_GUEST_IDLE */ + +#define HV_PM_FEATURE_CSTATE_MASK 0x000f +#define HV_PM_FEATURE_C3_HPET 0x0010 /* C3 requires HPET */ +#define HV_PM_FEATURE_CSTATE(f) ((f) & HV_PM_FEATURE_CSTATE_MASK) + +#define HV_FEATURE3_MWAIT 0x0001 /* MWAIT */ +#define HV_FEATURE3_XMM_HYPERCALL 0x0010 /* hypercall input through XMM regs */ +#define HV_FEATURE3_GUEST_IDLE 0x0020 /* guest idle support */ +#define HV_FEATURE3_NUMA 0x0080 /* NUMA distance query support */ +#define HV_FEATURE3_TIME_FREQ 0x0100 /* timer frequency query (TSC, LAPIC) */ +#define HV_FEATURE3_MSR_CRASH 0x0400 /* MSRs for guest crash */ /* * Define the format of the SIMP register From 083b2c353d5ffcbff13bb14dc8daeb8e740f190b Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Mon, 11 Apr 2016 06:22:26 +0000 Subject: [PATCH 148/159] hyperv: Define macro for Hyper-V interface Suggested by: rpokala MFC after: 1 week Sponsored by: Microsoft OSTC --- sys/dev/hyperv/vmbus/hv_hv.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sys/dev/hyperv/vmbus/hv_hv.c b/sys/dev/hyperv/vmbus/hv_hv.c index f23896d8a7f..a6e5881ed34 100644 --- a/sys/dev/hyperv/vmbus/hv_hv.c +++ b/sys/dev/hyperv/vmbus/hv_hv.c @@ -48,6 +48,7 @@ __FBSDID("$FreeBSD$"); #define HV_NANOSECONDS_PER_SEC 1000000000L +#define HYPERV_INTERFACE 0x31237648 /* HV#1 */ static u_int hv_get_timecount(struct timecounter *tc); @@ -416,7 +417,7 @@ hyperv_identify(void) op = HV_CPU_ID_FUNCTION_HV_INTERFACE; do_cpuid(op, regs); - if (regs[0] != 0x31237648 /* HV#1 */) + if (regs[0] != HYPERV_INTERFACE) return (false); op = HV_CPU_ID_FUNCTION_MS_HV_FEATURES; From 0e8633419641bfd6444ba31e87c8cd7f51620fc1 Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Mon, 11 Apr 2016 06:31:52 +0000 Subject: [PATCH 149/159] hyperv/hn: Cap default # of rings to 8. 8 gives the best performance in both Azure and local Hyper-V on both 10Ge and 40Ge. More rings are still allowed by manual configuration. Reviewed by: Dexuan Cui MFC after: 1 week Sponsored by: Microsoft OSTC Differential Revision: https://reviews.freebsd.org/D5879 --- sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c b/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c index acc49b4540c..fb0e8e52a6c 100644 --- a/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c +++ b/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c @@ -136,6 +136,8 @@ __FBSDID("$FreeBSD$"); #define HN_LROENT_CNT_DEF 128 +#define HN_RING_CNT_DEF_MAX 8 + #define HN_RNDIS_MSG_LEN \ (sizeof(rndis_msg) + \ RNDIS_HASH_PPI_SIZE + \ @@ -460,8 +462,14 @@ netvsc_attach(device_t dev) * The # of RX rings to use is same as the # of channels to use. */ ring_cnt = hn_chan_cnt; - if (ring_cnt <= 0 || ring_cnt > mp_ncpus) + if (ring_cnt <= 0) { + /* Default */ ring_cnt = mp_ncpus; + if (ring_cnt > HN_RING_CNT_DEF_MAX) + ring_cnt = HN_RING_CNT_DEF_MAX; + } else if (ring_cnt > mp_ncpus) { + ring_cnt = mp_ncpus; + } tx_ring_cnt = hn_tx_ring_cnt; if (tx_ring_cnt <= 0 || tx_ring_cnt > ring_cnt) From b81e22fcedeb1d406f7d65728bb9c43413c39eba Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Mon, 11 Apr 2016 06:37:50 +0000 Subject: [PATCH 150/159] hyperv/hn: By default enable multiple TX/RX rings, aka vRSS. Reviewed by: Dexuan Cui MFC after: 1 week Sponsored by: Microsoft OSTC Differential Revision: https://reviews.freebsd.org/D5880 --- sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c b/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c index fb0e8e52a6c..68c301a32e0 100644 --- a/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c +++ b/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c @@ -282,12 +282,12 @@ static int hn_use_if_start = 0; SYSCTL_INT(_hw_hn, OID_AUTO, use_if_start, CTLFLAG_RDTUN, &hn_use_if_start, 0, "Use if_start TX method"); -static int hn_chan_cnt = 1; +static int hn_chan_cnt = 0; SYSCTL_INT(_hw_hn, OID_AUTO, chan_cnt, CTLFLAG_RDTUN, &hn_chan_cnt, 0, "# of channels to use; each channel has one RX ring and one TX ring"); -static int hn_tx_ring_cnt = 1; +static int hn_tx_ring_cnt = 0; SYSCTL_INT(_hw_hn, OID_AUTO, tx_ring_cnt, CTLFLAG_RDTUN, &hn_tx_ring_cnt, 0, "# of TX rings to use"); From e331206e0f1b33584df33dfdecc11e990ddec152 Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Mon, 11 Apr 2016 06:59:13 +0000 Subject: [PATCH 151/159] hyperv/hn: Remove unnecessary NULL checks Submitted by: Jun Su Reviewed by: sephe MFC after: 1 week Sponsored by: Microsoft OSTC Differential Revision: https://reviews.freebsd.org/D5905 --- sys/dev/hyperv/netvsc/hv_net_vsc.c | 6 ++---- sys/dev/hyperv/netvsc/hv_rndis_filter.c | 9 +++------ 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/sys/dev/hyperv/netvsc/hv_net_vsc.c b/sys/dev/hyperv/netvsc/hv_net_vsc.c index f6d7d9e0553..11b3435c877 100644 --- a/sys/dev/hyperv/netvsc/hv_net_vsc.c +++ b/sys/dev/hyperv/netvsc/hv_net_vsc.c @@ -742,10 +742,8 @@ hv_nv_on_device_add(struct hv_device *device, void *additional_info) * Free the packet buffers on the netvsc device packet queue. * Release other resources. */ - if (net_dev) { - sema_destroy(&net_dev->channel_init_sema); - free(net_dev, M_NETVSC); - } + sema_destroy(&net_dev->channel_init_sema); + free(net_dev, M_NETVSC); return (NULL); } diff --git a/sys/dev/hyperv/netvsc/hv_rndis_filter.c b/sys/dev/hyperv/netvsc/hv_rndis_filter.c index 1eb24fab62c..19da7e520c6 100644 --- a/sys/dev/hyperv/netvsc/hv_rndis_filter.c +++ b/sys/dev/hyperv/netvsc/hv_rndis_filter.c @@ -405,8 +405,7 @@ hv_rf_send_offload_request(struct hv_device *device, } cleanup: - if (request) - hv_put_rndis_request(rndis_dev, request); + hv_put_rndis_request(rndis_dev, request); return (ret); } @@ -907,10 +906,8 @@ hv_rf_halt_device(rndis_device *device) } device->state = RNDIS_DEV_UNINITIALIZED; - - if (request != NULL) { - hv_put_rndis_request(device, request); - } + + hv_put_rndis_request(device, request); return (0); } From 1da2e1e3538015bba1db7e52e4810d7b1b752fb2 Mon Sep 17 00:00:00 2001 From: Andriy Gapon Date: Mon, 11 Apr 2016 07:11:20 +0000 Subject: [PATCH 152/159] zio: align use of "no dump" flag between use_uma and !use_uma cases At the moment no ZFS buffers are included into a crash dump unless ZFS_DEBUG (or INVARIANTS) kernel option is enabled. That's not very helpful for debugging of ZFS problems, because important information often resides in metadata buffers. This change switches the dumping behavior when UMA is used from the illumos behavior to a more useful behavior that we have on FreeBSD when ZFS buffers are allocated via malloc. Reviewed by: smh, mav MFC after: 3 weeks Differential Revision: https://reviews.freebsd.org/D5892 --- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c index 05e16ba3489..6dc0ad39239 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c @@ -128,11 +128,13 @@ SYSCTL_INT(_vfs_zfs, OID_AUTO, sync_pass_rewrite, CTLFLAG_RDTUN, boolean_t zio_requeue_io_start_cut_in_line = B_TRUE; +#ifdef illumos #ifdef ZFS_DEBUG int zio_buf_debug_limit = 16384; #else int zio_buf_debug_limit = 0; #endif +#endif void zio_init(void) @@ -154,7 +156,7 @@ zio_init(void) size_t size = (c + 1) << SPA_MINBLOCKSHIFT; size_t p2 = size; size_t align = 0; - size_t cflags = (size > zio_buf_debug_limit) ? KMC_NODEBUG : 0; + int cflags = zio_exclude_metadata ? KMC_NODEBUG : 0; while (!ISP2(p2)) p2 &= p2 - 1; From 7bc47b4ea347f0bc0b49af338be1815292761e5d Mon Sep 17 00:00:00 2001 From: Steven Hartland Date: Mon, 11 Apr 2016 08:57:54 +0000 Subject: [PATCH 153/159] Only include sysctl in kernel build Only include sysctl in kernel builds fixing warning about implicit declaration of function 'sysctl_handle_int'. Sponsored by: Multiplay --- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c index 30a07105b35..95e741f754e 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c @@ -48,7 +48,7 @@ #include #include -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && defined(_KERNEL) #include #include #endif @@ -132,7 +132,7 @@ int zfs_delay_min_dirty_percent = 60; uint64_t zfs_delay_scale = 1000 * 1000 * 1000 / 2000; -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) && defined(_KERNEL) extern int zfs_vdev_async_write_active_max_dirty_percent; From 9859c43dfe1e06bafdbfdfc0259279acc5f3b1e4 Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Mon, 11 Apr 2016 09:52:24 +0000 Subject: [PATCH 154/159] hyperv: Typo Noticed by: kib MFC after: 1 week Sponsored by: Microsoft OSTC --- sys/dev/hyperv/vmbus/hv_hv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/dev/hyperv/vmbus/hv_hv.c b/sys/dev/hyperv/vmbus/hv_hv.c index a6e5881ed34..b835a347ff0 100644 --- a/sys/dev/hyperv/vmbus/hv_hv.c +++ b/sys/dev/hyperv/vmbus/hv_hv.c @@ -445,7 +445,7 @@ hyperv_identify(void) "\003SYNIC" /* MSRs for SynIC */ "\004SYNTM" /* MSRs for SynTimer */ "\005APIC" /* MSR_{EOI,ICR,TPR} */ - "\006HYERCALL" /* MSR_{GUEST_OS_ID,HYPERCALL} */ + "\006HYPERCALL" /* MSR_{GUEST_OS_ID,HYPERCALL} */ "\007VPINDEX" /* MSR_VP_INDEX */ "\010RESET" /* MSR_RESET */ "\011STATS" /* MSR_STATS_ */ From 05fc416403ece16a5409c39f01a4ccce2643ef69 Mon Sep 17 00:00:00 2001 From: "Bjoern A. Zeeb" Date: Mon, 11 Apr 2016 10:00:38 +0000 Subject: [PATCH 155/159] During if_vmove() we call if_detach_internal() which in turn calls the event handler notifying about interface departure and one of the consumers will detach if_bpf. There is no way for us to re-attach this easily as the DLT and hdrlen are only given on interface creation. Add a function to allow us to query the DLT and hdrlen from a current BPF attachment and after if_attach_internal() manually re-add the if_bpf attachment using these values. Found by panics triggered by nd6 packets running past BPF_MTAP() with no proper if_bpf pointer on the interface. Also add a basic DDB show function to investigate the if_bpf attachment of an interface. Reviewed by: gnn MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D5896 --- sys/net/bpf.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++ sys/net/bpf.h | 3 +++ sys/net/if.c | 11 +++++++++ 3 files changed, 76 insertions(+) diff --git a/sys/net/bpf.c b/sys/net/bpf.c index 54dd1842e55..5f2ef71b95d 100644 --- a/sys/net/bpf.c +++ b/sys/net/bpf.c @@ -39,6 +39,7 @@ __FBSDID("$FreeBSD$"); #include "opt_bpf.h" #include "opt_compat.h" +#include "opt_ddb.h" #include "opt_netgraph.h" #include @@ -67,6 +68,10 @@ __FBSDID("$FreeBSD$"); #include +#ifdef DDB +#include +#endif + #include #include #include @@ -2569,6 +2574,32 @@ bpfattach2(struct ifnet *ifp, u_int dlt, u_int hdrlen, struct bpf_if **driverp) if_printf(ifp, "bpf attached\n"); } +#ifdef VIMAGE +/* + * When moving interfaces between vnet instances we need a way to + * query the dlt and hdrlen before detach so we can re-attch the if_bpf + * after the vmove. We unfortunately have no device driver infrastructure + * to query the interface for these values after creation/attach, thus + * add this as a workaround. + */ +int +bpf_get_bp_params(struct bpf_if *bp, u_int *bif_dlt, u_int *bif_hdrlen) +{ + + if (bp == NULL) + return (ENXIO); + if (bif_dlt == NULL && bif_hdrlen == NULL) + return (0); + + if (bif_dlt != NULL) + *bif_dlt = bp->bif_dlt; + if (bif_hdrlen != NULL) + *bif_hdrlen = bp->bif_hdrlen; + + return (0); +} +#endif + /* * Detach bpf from an interface. This involves detaching each descriptor * associated with the interface. Notify each descriptor as it's detached @@ -2977,3 +3008,34 @@ bpf_validate(const struct bpf_insn *f, int len) } #endif /* !DEV_BPF && !NETGRAPH_BPF */ + +#ifdef DDB +static void +bpf_show_bpf_if(struct bpf_if *bpf_if) +{ + + if (bpf_if == NULL) + return; + db_printf("%p:\n", bpf_if); +#define BPF_DB_PRINTF(f, e) db_printf(" %s = " f "\n", #e, bpf_if->e); + /* bif_ext.bif_next */ + /* bif_ext.bif_dlist */ + BPF_DB_PRINTF("%#x", bif_dlt); + BPF_DB_PRINTF("%u", bif_hdrlen); + BPF_DB_PRINTF("%p", bif_ifp); + /* bif_lock */ + /* bif_wlist */ + BPF_DB_PRINTF("%#x", bif_flags); +} + +DB_SHOW_COMMAND(bpf_if, db_show_bpf_if) +{ + + if (!have_addr) { + db_printf("usage: show bpf_if \n"); + return; + } + + bpf_show_bpf_if((struct bpf_if *)addr); +} +#endif diff --git a/sys/net/bpf.h b/sys/net/bpf.h index a74b521e5fe..0ffc15ac2a9 100644 --- a/sys/net/bpf.h +++ b/sys/net/bpf.h @@ -1469,6 +1469,9 @@ void bpf_mtap2(struct bpf_if *, void *, u_int, struct mbuf *); void bpfattach(struct ifnet *, u_int, u_int); void bpfattach2(struct ifnet *, u_int, u_int, struct bpf_if **); void bpfdetach(struct ifnet *); +#ifdef VIMAGE +int bpf_get_bp_params(struct bpf_if *, u_int *, u_int *); +#endif void bpfilterattach(int); u_int bpf_filter(const struct bpf_insn *, u_char *, u_int, u_int); diff --git a/sys/net/if.c b/sys/net/if.c index b9e524cdad8..2c44c87b009 100644 --- a/sys/net/if.c +++ b/sys/net/if.c @@ -1021,8 +1021,16 @@ void if_vmove(struct ifnet *ifp, struct vnet *new_vnet) { struct if_clone *ifc; + u_int bif_dlt, bif_hdrlen; int rc; + /* + * if_detach_internal() will call the eventhandler to notify + * interface departure. That will detach if_bpf. We need to + * safe the dlt and hdrlen so we can re-attach it later. + */ + bpf_get_bp_params(ifp->if_bpf, &bif_dlt, &bif_hdrlen); + /* * Detach from current vnet, but preserve LLADDR info, do not * mark as dead etc. so that the ifnet can be reattached later. @@ -1062,6 +1070,9 @@ if_vmove(struct ifnet *ifp, struct vnet *new_vnet) if_attach_internal(ifp, 1, ifc); + if (ifp->if_bpf == NULL) + bpfattach(ifp, bif_dlt, bif_hdrlen); + CURVNET_RESTORE(); } From 5e3e6a824187dd200f74dd37d641bad4a193c74d Mon Sep 17 00:00:00 2001 From: Alexander Motin Date: Mon, 11 Apr 2016 10:48:26 +0000 Subject: [PATCH 156/159] Polish debugging IOCB dumping. Add few more missing cases, unify byte order. MFC after: 1 month --- sys/dev/isp/isp.c | 63 ++++++++++++++++++++++----------------- sys/dev/isp/isp_library.c | 10 ++++--- 2 files changed, 42 insertions(+), 31 deletions(-) diff --git a/sys/dev/isp/isp.c b/sys/dev/isp/isp.c index 5dd47bd811f..2e69855578b 100644 --- a/sys/dev/isp/isp.c +++ b/sys/dev/isp/isp.c @@ -1972,10 +1972,12 @@ isp_fibre_init(ispsoftc_t *isp) } isp_prt(isp, ISP_LOGDEBUG0, "isp_fibre_init: fwopt 0x%x xfwopt 0x%x zfwopt 0x%x", icbp->icb_fwoptions, icbp->icb_xfwoptions, icbp->icb_zfwoptions); - if (isp->isp_dblev & ISP_LOGDEBUG1) - isp_print_bytes(isp, "isp_fibre_init", sizeof (*icbp), icbp); isp_put_icb(isp, icbp, (isp_icb_t *)fcp->isp_scratch); + if (isp->isp_dblev & ISP_LOGDEBUG1) { + isp_print_bytes(isp, "isp_fibre_init", + sizeof(*icbp), fcp->isp_scratch); + } /* * Init the firmware @@ -2240,16 +2242,16 @@ isp_fibre_init_2400(ispsoftc_t *isp) DMA_WD1(isp->isp_rquest_dma), DMA_WD0(isp->isp_rquest_dma), DMA_WD3(isp->isp_result_dma), DMA_WD2(isp->isp_result_dma), DMA_WD1(isp->isp_result_dma), DMA_WD0(isp->isp_result_dma)); - if (isp->isp_dblev & ISP_LOGDEBUG1) { - isp_print_bytes(isp, "isp_fibre_init_2400", sizeof (*icbp), icbp); - } - if (FC_SCRATCH_ACQUIRE(isp, 0)) { isp_prt(isp, ISP_LOGERR, sacq); return; } ISP_MEMZERO(fcp->isp_scratch, ISP_FC_SCRLEN); isp_put_icb_2400(isp, icbp, fcp->isp_scratch); + if (isp->isp_dblev & ISP_LOGDEBUG1) { + isp_print_bytes(isp, "isp_fibre_init_2400", + sizeof (*icbp), fcp->isp_scratch); + } /* * Now fill in information about any additional channels @@ -2395,6 +2397,8 @@ isp_fc_enable_vp(ispsoftc_t *isp, int chan) return (EIO); } isp_put_vp_modify(isp, &vp, (vp_modify_t *)reqp); + if (isp->isp_dblev & ISP_LOGDEBUG1) + isp_print_bytes(isp, "IOCB VP_MODIFY", QENTRY_LEN, reqp); ISP_SYNC_REQUEST(isp); if (msleep(resp, &isp->isp_lock, 0, "VP_MODIFY", 5*hz) == EWOULDBLOCK) { isp_prt(isp, ISP_LOGERR, @@ -2402,6 +2406,8 @@ isp_fc_enable_vp(ispsoftc_t *isp, int chan) isp_destroy_handle(isp, vp.vp_mod_hdl); return (EIO); } + if (isp->isp_dblev & ISP_LOGDEBUG1) + isp_print_bytes(isp, "IOCB VP_MODIFY response", QENTRY_LEN, resp); isp_get_vp_modify(isp, (vp_modify_t *)resp, &vp); if (vp.vp_mod_hdr.rqs_flags != 0 || vp.vp_mod_status != VP_STS_OK) { @@ -2452,6 +2458,8 @@ isp_fc_disable_vp(ispsoftc_t *isp, int chan) return (EIO); } isp_put_vp_ctrl_info(isp, &vp, (vp_ctrl_info_t *)reqp); + if (isp->isp_dblev & ISP_LOGDEBUG1) + isp_print_bytes(isp, "IOCB VP_CTRL", QENTRY_LEN, reqp); ISP_SYNC_REQUEST(isp); if (msleep(resp, &isp->isp_lock, 0, "VP_CTRL", 5*hz) == EWOULDBLOCK) { isp_prt(isp, ISP_LOGERR, @@ -2459,6 +2467,8 @@ isp_fc_disable_vp(ispsoftc_t *isp, int chan) isp_destroy_handle(isp, vp.vp_ctrl_handle); return (EIO); } + if (isp->isp_dblev & ISP_LOGDEBUG1) + isp_print_bytes(isp, "IOCB VP_CTRL response", QENTRY_LEN, resp); isp_get_vp_ctrl_info(isp, (vp_ctrl_info_t *)resp, &vp); if (vp.vp_ctrl_hdr.rqs_flags != 0 || vp.vp_ctrl_status != 0) { @@ -2602,9 +2612,9 @@ isp_plogx(ispsoftc_t *isp, int chan, uint16_t handle, uint32_t portid, int flags isp_destroy_handle(isp, pl.plogx_handle); return (-1); } - if (isp->isp_dblev & ISP_LOGDEBUG1) - isp_print_bytes(isp, "IOCB LOGX", QENTRY_LEN, &pl); isp_put_plogx(isp, &pl, (isp_plogx_t *)reqp); + if (isp->isp_dblev & ISP_LOGDEBUG1) + isp_print_bytes(isp, "IOCB LOGX", QENTRY_LEN, reqp); ISP_SYNC_REQUEST(isp); if (msleep(resp, &isp->isp_lock, 0, "PLOGX", 3 * ICB_LOGIN_TOV * hz) == EWOULDBLOCK) { @@ -2613,9 +2623,9 @@ isp_plogx(ispsoftc_t *isp, int chan, uint16_t handle, uint32_t portid, int flags isp_destroy_handle(isp, pl.plogx_handle); return (-1); } - isp_get_plogx(isp, (isp_plogx_t *)resp, &pl); if (isp->isp_dblev & ISP_LOGDEBUG1) - isp_print_bytes(isp, "IOCB LOGX response", QENTRY_LEN, &pl); + isp_print_bytes(isp, "IOCB LOGX response", QENTRY_LEN, resp); + isp_get_plogx(isp, (isp_plogx_t *)resp, &pl); if (pl.plogx_status == PLOGX_STATUS_OK) { return (0); @@ -5155,15 +5165,14 @@ isp_intr(ispsoftc_t *isp, uint16_t isr, uint16_t sema, uint16_t info) * Synchronize our view of this response queue entry. */ MEMORYBARRIER(isp, SYNC_RESULT, oop, QENTRY_LEN, -1); + if (isp->isp_dblev & ISP_LOGDEBUG1) + isp_print_qentry(isp, "Response Queue Entry", oop, hp); isp_get_hdr(isp, hp, &sp->req_header); etype = sp->req_header.rqs_entry_type; if (IS_24XX(isp) && etype == RQSTYPE_RESPONSE) { isp24xx_statusreq_t *sp2 = (isp24xx_statusreq_t *)qe; isp_get_24xx_response(isp, (isp24xx_statusreq_t *)hp, sp2); - if (isp->isp_dblev & ISP_LOGDEBUG1) { - isp_print_bytes(isp, "Response Queue Entry", QENTRY_LEN, sp2); - } scsi_status = sp2->req_scsi_status; completion_status = sp2->req_completion_status; if ((scsi_status & 0xff) != 0) @@ -5173,9 +5182,6 @@ isp_intr(ispsoftc_t *isp, uint16_t isr, uint16_t sema, uint16_t info) resid = sp2->req_resid; } else if (etype == RQSTYPE_RESPONSE) { isp_get_response(isp, (ispstatusreq_t *) hp, sp); - if (isp->isp_dblev & ISP_LOGDEBUG1) { - isp_print_bytes(isp, "Response Queue Entry", QENTRY_LEN, sp); - } scsi_status = sp->req_scsi_status; completion_status = sp->req_completion_status; req_status_flags = sp->req_status_flags; @@ -5184,9 +5190,6 @@ isp_intr(ispsoftc_t *isp, uint16_t isr, uint16_t sema, uint16_t info) } else if (etype == RQSTYPE_RIO1) { isp_rio1_t *rio = (isp_rio1_t *) qe; isp_get_rio1(isp, (isp_rio1_t *) hp, rio); - if (isp->isp_dblev & ISP_LOGDEBUG1) { - isp_print_bytes(isp, "Response Queue Entry", QENTRY_LEN, rio); - } for (i = 0; i < rio->req_header.rqs_seqno; i++) { isp_fastpost_complete(isp, rio->req_handles[i]); } @@ -5250,7 +5253,6 @@ isp_intr(ispsoftc_t *isp, uint16_t isr, uint16_t sema, uint16_t info) */ if (etype != RQSTYPE_REQUEST) { isp_prt(isp, ISP_LOGERR, notresp, etype, oop, optr, nlooked); - isp_print_bytes(isp, "Request Queue Entry", QENTRY_LEN, sp); ISP_MEMZERO(hp, QENTRY_LEN); /* PERF */ last_etype = etype; continue; @@ -5265,7 +5267,8 @@ isp_intr(ispsoftc_t *isp, uint16_t isr, uint16_t sema, uint16_t info) if (sp->req_header.rqs_flags & RQSFLAG_MASK) { if (sp->req_header.rqs_flags & RQSFLAG_CONTINUATION) { - isp_print_bytes(isp, "unexpected continuation segment", QENTRY_LEN, sp); + isp_print_qentry(isp, "unexpected continuation segment", + oop, hp); last_etype = etype; continue; } @@ -5276,19 +5279,23 @@ isp_intr(ispsoftc_t *isp, uint16_t isr, uint16_t sema, uint16_t info) */ } if (sp->req_header.rqs_flags & RQSFLAG_BADHEADER) { - isp_print_bytes(isp, "bad header flag", QENTRY_LEN, sp); + isp_print_qentry(isp, "bad header flag", + oop, hp); buddaboom++; } if (sp->req_header.rqs_flags & RQSFLAG_BADPACKET) { - isp_print_bytes(isp, "bad request packet", QENTRY_LEN, sp); + isp_print_qentry(isp, "bad request packet", + oop, hp); buddaboom++; } if (sp->req_header.rqs_flags & RQSFLAG_BADCOUNT) { - isp_print_bytes(isp, "invalid entry count", QENTRY_LEN, sp); + isp_print_qentry(isp, "invalid entry count", + oop, hp); buddaboom++; } if (sp->req_header.rqs_flags & RQSFLAG_BADORDER) { - isp_print_bytes(isp, "invalid IOCB ordering", QENTRY_LEN, sp); + isp_print_qentry(isp, "invalid IOCB ordering", + oop, hp); last_etype = etype; continue; } @@ -5446,7 +5453,8 @@ isp_intr(ispsoftc_t *isp, uint16_t isr, uint16_t sema, uint16_t info) XS_SAVE_SENSE(xs, snsp, totslen, slen); } else if ((req_status_flags & RQSF_GOT_STATUS) && (scsi_status & 0xff) == SCSI_CHECK && IS_FC(isp)) { isp_prt(isp, ISP_LOGWARN, "CHECK CONDITION w/o sense data for CDB=0x%x", XS_CDBP(xs)[0] & 0xff); - isp_print_bytes(isp, "CC with no Sense", QENTRY_LEN, qe); + isp_print_qentry(isp, "CC with no Sense", + oop, hp); } isp_prt(isp, ISP_LOGDEBUG2, "asked for %ld got raw resid %ld settled for %ld", (long) XS_XFRLEN(xs), resid, (long) XS_GET_RESID(xs)); break; @@ -5472,7 +5480,8 @@ isp_intr(ispsoftc_t *isp, uint16_t isr, uint16_t sema, uint16_t info) XS_SET_RESID(xs, XS_XFRLEN(xs)); break; default: - isp_print_bytes(isp, "Unhandled Response Type", QENTRY_LEN, qe); + isp_print_qentry(isp, "Unhandled Response Type", + oop, hp); if (XS_NOERR(xs)) { XS_SETERR(xs, HBA_BOTCH); } diff --git a/sys/dev/isp/isp_library.c b/sys/dev/isp/isp_library.c index 987e5159d38..c7bce2d95b6 100644 --- a/sys/dev/isp/isp_library.c +++ b/sys/dev/isp/isp_library.c @@ -180,7 +180,8 @@ isp_send_cmd(ispsoftc_t *isp, void *fqe, void *segp, uint32_t nsegs, uint32_t to isp_put_cont_req(isp, (ispcontreq_t *)storage, qe1); } if (isp->isp_dblev & ISP_LOGDEBUG1) { - isp_print_bytes(isp, "additional queue entry", QENTRY_LEN, storage); + isp_print_bytes(isp, "additional queue entry", + QENTRY_LEN, qe1); } nqe++; } @@ -241,7 +242,7 @@ isp_send_cmd(ispsoftc_t *isp, void *fqe, void *segp, uint32_t nsegs, uint32_t to return (CMD_COMPLETE); } if (isp->isp_dblev & ISP_LOGDEBUG1) { - isp_print_bytes(isp, "first queue entry", QENTRY_LEN, fqe); + isp_print_bytes(isp, "first queue entry", QENTRY_LEN, qe0); } ISP_ADD_REQUEST(isp, nxt); return (CMD_QUEUED); @@ -2193,7 +2194,8 @@ isp_send_tgt_cmd(ispsoftc_t *isp, void *fqe, void *segp, uint32_t nsegs, uint32_ isp_put_cont_req(isp, (ispcontreq_t *)storage, qe1); } if (isp->isp_dblev & ISP_LOGTDEBUG1) { - isp_print_bytes(isp, "additional queue entry", QENTRY_LEN, storage); + isp_print_bytes(isp, "additional queue entry", + QENTRY_LEN, qe1); } nqe++; } @@ -2230,7 +2232,7 @@ isp_send_tgt_cmd(ispsoftc_t *isp, void *fqe, void *segp, uint32_t nsegs, uint32_ return (CMD_COMPLETE); } if (isp->isp_dblev & ISP_LOGTDEBUG1) { - isp_print_bytes(isp, "first queue entry", QENTRY_LEN, fqe); + isp_print_bytes(isp, "first queue entry", QENTRY_LEN, qe0); } ISP_ADD_REQUEST(isp, nxt); return (CMD_QUEUED); From 2b2f4008d07a8fa66d60ee4013a8645fb7a58f48 Mon Sep 17 00:00:00 2001 From: Alexander Motin Date: Mon, 11 Apr 2016 10:53:25 +0000 Subject: [PATCH 157/159] Update 25xx chips firmware from 7.03.00 to 8.03.00. While the same update is also available for 24xx chips, it seems have a problem with disabling virtual ports -- firmware handles the request, but does not respong on it, causing timeout in driver. MFC after: 1 month --- sys/dev/ispfw/asm_2500.h | 29526 +++++++++++++++++++------------------ 1 file changed, 15021 insertions(+), 14505 deletions(-) diff --git a/sys/dev/ispfw/asm_2500.h b/sys/dev/ispfw/asm_2500.h index 1cc3c9fd145..92993f22f2c 100644 --- a/sys/dev/ispfw/asm_2500.h +++ b/sys/dev/ispfw/asm_2500.h @@ -30,1158 +30,1197 @@ * * * ******************************************************************** */ /* - * Firmware Version 7.03.00 (Apr 14, 2014) + * Firmware Version 8.03.00 (2015) */ #ifdef ISP_2500 static const uint32_t isp_2500_risc_code[] = { - 0x0501f042, 0x00112000, 0x00100000, 0x0000d32a, - 0x00000007, 0x00000003, 0x00000000, 0x000090d5, + 0x0501f06b, 0x00116000, 0x00100000, 0x0000daa9, + 0x00000008, 0x00000003, 0x00000000, 0x001090d5, 0x00000004, 0x00000000, 0x20434f50, 0x59524947, - 0x48542032, 0x30303720, 0x514c4f47, 0x49432043, + 0x48542032, 0x30313520, 0x514c4f47, 0x49432043, 0x4f52504f, 0x52415449, 0x4f4e2020, 0x20495350, 0x32357878, 0x20466972, 0x6d776172, 0x65202020, - 0x56657273, 0x696f6e20, 0x2020372e, 0x30332e30, + 0x56657273, 0x696f6e20, 0x2020382e, 0x30332e30, 0x30202024, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00100000, 0x00100000, - 0x0000d32a, 0xffffffff, 0x00112004, 0x00020000, - 0x000011a6, 0xffffffff, 0x001131af, 0x0000c000, - 0x00000aa2, 0x00ffffff, 0x00113c51, 0x00008000, - 0x00000703, 0x00ffffff, 0x00114354, 0x0000a000, - 0x00000621, 0x00ffffff, 0x00114975, 0x0000400e, + 0x0000daa9, 0xffffffff, 0x00116004, 0x00020000, + 0x000011e7, 0xffffffff, 0x001171f0, 0x0000c000, + 0x00000adf, 0x00ffffff, 0x00117ccf, 0x00008000, + 0x0000070b, 0x00ffffff, 0x001183da, 0x0000a000, + 0x0000062a, 0x00ffffff, 0x00118a04, 0x0000400e, 0x00000808, 0xffffffff, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x4203f000, 0x00021fff, - 0x40000000, 0x4203e000, 0x90000100, 0x40000000, - 0x42000800, 0x000211a7, 0x6002f000, 0x608c00e0, - 0x50000000, 0x8c000500, 0x05020003, 0x42000800, - 0x00020000, 0x45780800, 0x80040800, 0x82040580, - 0x00022000, 0x05fe07fc, 0x4178a000, 0x4200a800, - 0x0010d32a, 0x42000800, 0x00111b00, 0x40540000, - 0x8004b480, 0x0569f852, 0x0501ffcd, 0x600c6020, - 0x50304800, 0x8c240500, 0x0500001c, 0x59e00016, - 0x8c000504, 0x05020019, 0x0569f8a9, 0x604808fa, - 0x50041000, 0x82081500, 0xfffffffc, 0x90081d43, - 0x90081540, 0x84244d00, 0x440c0800, 0x44080800, - 0x44246000, 0x64030000, 0x4203e000, 0x70000000, - 0x4203e000, 0xb0300000, 0x603ff84e, 0x59e00016, - 0x8c000504, 0x05020002, 0x05fe47fd, 0x84244d40, - 0x44246000, 0x0569f892, 0x64030000, 0x0501fde5, - 0x4803c856, 0x0509fbf8, 0x6413c020, 0x4203e000, - 0x6000000f, 0x640f70e8, 0x640f78e8, 0x640da8e8, - 0x59e00023, 0x8c000500, 0x0502002b, 0x42002800, - 0x00100022, 0x58140800, 0x4817c857, 0x4807c857, - 0x800409c0, 0x0500000a, 0x58142002, 0x4813c857, - 0x58141003, 0x4c140000, 0x0501ff8c, 0x5c002800, - 0x0502003d, 0x90142c04, 0x05fdf7f3, 0x42002800, - 0x00100022, 0x5814a000, 0x4817c857, 0x4853c857, - 0x8050a1c0, 0x05000014, 0x4c140000, 0x5814a801, - 0x4857c857, 0x40500000, 0x80540480, 0x0500000b, - 0x82540480, 0x0000400e, 0x05020005, 0x9050a404, - 0x0509ff8a, 0x05020028, 0x0501f004, 0x5814b002, - 0x485bc857, 0x0565fff6, 0x5c002800, 0x90142c04, - 0x05fdf7e9, 0x050dfdf3, 0x42001000, 0x7ff481fe, - 0x59e00002, 0x8c00051e, 0x05020003, 0x42001000, - 0x7ff480fe, 0x50081000, 0x480b5092, 0x42002800, - 0x00100022, 0x58140801, 0x4817c857, 0x4807c857, - 0x800409c0, 0x05000023, 0x58142002, 0x4813c857, - 0x58141003, 0x4c140000, 0x82040480, 0x0000400e, - 0x05020004, 0x0509ff94, 0x4803c856, 0x0501f003, - 0x0501ff52, 0x05020004, 0x5c002800, 0x90142c04, - 0x05fdf7ed, 0x4803c856, 0x4a03c020, 0x00004010, - 0x4a03c011, 0x40100011, 0x05006000, 0x4203e000, - 0x40000000, 0x59e00017, 0x60000800, 0x8c00050a, - 0x050a0df0, 0x8d0c0530, 0x050a0de3, 0x050a0de5, - 0x6403c017, 0x4203e000, 0x30000001, 0x0501f000, - 0x4803c856, 0x59e00024, 0x8c000500, 0x050a0f32, - 0x0501ffca, 0x4a03c014, 0x001c001c, 0x4817c857, - 0x0501fff8, 0x42002000, 0x00111b00, 0x0565ffc3, - 0x59a800a1, 0x800001c0, 0x0500000c, 0x59a800ca, - 0x8c000500, 0x05000005, 0x59a8000a, 0x82000480, - 0x0013ffff, 0x05001005, 0x59a820a1, 0x80102000, - 0x59a8280a, 0x0565ffb5, 0x0569f9db, 0x0569fa02, - 0x59a8280a, 0x60000812, 0x60001802, 0x4807503b, - 0x480f529c, 0x60c01000, 0x053dfe68, 0x82040c00, - 0x00111b00, 0x4807500b, 0x600400de, 0x50000000, - 0x8c000502, 0x05000004, 0x59a800ca, 0x84000540, - 0x480350ca, 0x4a03c810, 0x00100000, 0x4a03c811, - 0x0010d32a, 0x0501ff90, 0x6447c829, 0x59e40001, - 0x82000540, 0x0003401f, 0x4803c801, 0x4a03c802, - 0x00000933, 0x59e00003, 0x82000540, 0x00240000, - 0x4803c003, 0x64ffc019, 0x60701000, 0x0501fedf, - 0x4202c000, 0x00111b00, 0x59aab00b, 0x59aaa00b, - 0x59aaa80b, 0x59aac83b, 0x4967509b, 0x496754dd, - 0x59a8000b, 0x4803500c, 0x0501fffe, 0x0549fa90, - 0x0505f807, 0x0505f875, 0x0509ffb5, 0x59a80084, - 0x8c000508, 0x05000004, 0x050dfebf, 0x0525f87d, - 0x050dffef, 0x0505f9b8, 0x0505ffb0, 0x053dfe71, - 0x0501fc55, 0x0515f812, 0x0531fb18, 0x052dfc90, - 0x0539fd03, 0x0509ffe6, 0x0509fe0f, 0x4203e000, - 0xf0000001, 0x0569f9c9, 0x6403c018, 0x4203e000, - 0xa0000001, 0x59a800ca, 0x80000540, 0x05000004, - 0x4203e000, 0x20000551, 0x0501f003, 0x4203e000, - 0x20000511, 0x4203e000, 0x50010000, 0x6403c020, - 0x05027019, 0x59e00020, 0x90000582, 0x05020016, - 0x4a03c020, 0x00004000, 0x4a03c011, 0x40000010, - 0x05006000, 0x4203e000, 0x40000000, 0x4df00000, - 0x4203e000, 0x50000000, 0x59e00017, 0x60000800, - 0x8c00050a, 0x00020892, 0x8d0c0530, 0x050a0d5a, - 0x000209bc, 0x5c03e000, 0x6403c017, 0x4203e000, - 0x30000001, 0x6002d800, 0x4203e000, 0xb0600000, - 0x59a800d5, 0x4003f800, 0x0001f004, 0x4df00000, - 0x4203e000, 0x50000000, 0x416c0000, 0x90000c88, - 0x05021c5e, 0x0c01f803, 0x5c03e000, 0x0001f006, - 0x00100189, 0x0010019a, 0x001002bf, 0x00100188, - 0x001003fa, 0x00100188, 0x00100188, 0x00100592, - 0x0501fc52, 0x42000800, 0x0010dceb, 0x5804001e, - 0x8c000500, 0x0500000c, 0x84000500, 0x4800081e, - 0x6012d800, 0x0501fe6d, 0x49f3c857, 0x5c000800, - 0x5c000000, 0x82000540, 0x00007e20, 0x4c000000, - 0x4c040000, 0x1c01f000, 0x41780000, 0x800001c0, - 0x05020039, 0x59c4000d, 0x8c00051e, 0x0502001f, - 0x59a800a7, 0x8c000500, 0x05000012, 0x60300830, - 0x050dfc0d, 0x90040560, 0x60300830, 0x4c000000, - 0x050dfc0e, 0x6041d04e, 0x0539fe5b, 0x5c000000, - 0x8400050a, 0x60300830, 0x050dfc08, 0x6191d000, - 0x0539fe55, 0x59c4000d, 0x8c00051e, 0x0502000b, - 0x59c40005, 0x8c000500, 0x05020008, 0x050dff96, - 0x640b50b4, 0x64075075, 0x6012d800, 0x42000000, - 0x0010e4be, 0x0565f622, 0x0501fe39, 0x052dfeef, - 0x0500000f, 0x052dfeff, 0x05020032, 0x5994002d, - 0x82000580, 0x001051ae, 0x05020004, 0x5994002c, - 0x800001c0, 0x0502002b, 0x59c40006, 0x82000540, - 0x000000c0, 0x48038806, 0x0501f026, 0x052dfe62, - 0x916c0581, 0x050200c5, 0x59a8003f, 0x90000589, - 0x050200c2, 0x497b503d, 0x42000800, 0xffffd815, - 0x0511fcf2, 0x42024800, 0x0010e512, 0x497a4805, - 0x64078893, 0x4a038805, 0x000000f0, 0x052dfedb, - 0x59c41006, 0x05020006, 0x82081540, 0x000000f1, - 0x82081500, 0xbbffffff, 0x0501f003, 0x82081540, - 0x440000f1, 0x480b8806, 0x0539fe23, 0x0541fb6d, - 0x0501f8ab, 0x050000a9, 0x42000000, 0x0010e39b, - 0x0565fdec, 0x60c01100, 0x497b50b2, 0x0501f036, - 0x0525f9b0, 0x59c400a4, 0x9000050f, 0x90000487, - 0x0502109e, 0x0539fe14, 0x59c400a3, 0x82000500, - 0xffefffff, 0x480388a3, 0x59a800bd, 0x800001c0, - 0x05020003, 0x0525ff01, 0x0501f094, 0x59a80043, - 0x84000546, 0x48035043, 0x052dfeae, 0x59c41006, - 0x05020006, 0x82081540, 0x44000001, 0x82081500, - 0xffffff0f, 0x0501f003, 0x82081540, 0x440000f1, - 0x480b8806, 0x497b9005, 0x0501f885, 0x05000083, - 0x60000000, 0x052dfc3b, 0x4a038802, 0x0000ffff, - 0x4a0378e4, 0x00003000, 0x42007000, 0x0010e060, - 0x58380401, 0x8c000508, 0x05020003, 0x4a01a8e4, - 0x0000c000, 0x42000000, 0x0010e392, 0x0565fdb9, - 0x59a8103d, 0x600c0800, 0x0541fb1b, 0x60401100, - 0x59a81809, 0x0521fdb3, 0x59a804cc, 0x82000500, - 0xffffff40, 0x480354cc, 0x59a80249, 0x84000518, - 0x48035249, 0x59c40001, 0x82000500, 0x00018000, - 0x82000580, 0x00018000, 0x59c400a3, 0x05020004, - 0x82000540, 0x00001000, 0x0501f003, 0x82000500, - 0xffffefff, 0x480388a3, 0x59c80015, 0x84000548, - 0x48039015, 0x050dfacb, 0x59a81008, 0x84081500, - 0x480b5008, 0x850e1d0a, 0x0529fd8a, 0x052dfe67, - 0x05000007, 0x8d0c0506, 0x05000005, 0x640750b2, - 0x850e1d0e, 0x0525fa79, 0x0501f048, 0x0529fe89, - 0x05000005, 0x59c41002, 0x8408150c, 0x480b8802, - 0x0501f017, 0x052dfe59, 0x05020005, 0x59a80046, - 0x80000540, 0x05540e1d, 0x0501f011, 0x0555fe1b, - 0x59a80249, 0x8c000506, 0x0502000d, 0x59a80046, - 0x80000540, 0x05020007, 0x59a81c49, 0x820c0580, - 0x0000ffff, 0x05000006, 0x8c0c0508, 0x05000004, - 0x4a035449, 0x0000ffff, 0x0525ffb4, 0x497b504b, - 0x497b504a, 0x497b50b3, 0x052dfe40, 0x59a81249, - 0x05020009, 0x050df8bd, 0x80001580, 0x59a8004d, - 0x82000500, 0xffff0000, 0x80040d40, 0x4807504d, - 0x0501f005, 0x59a8004d, 0x82000500, 0xffff0000, - 0x4803504d, 0x599c0017, 0x8c00050a, 0x05000002, - 0x84081544, 0x480b5249, 0x052dfe2c, 0x05000003, - 0x050df8aa, 0x48078880, 0x60141000, 0x0541ffae, - 0x497b504b, 0x497b5044, 0x4a035045, 0x0000ffff, - 0x4a01a8e4, 0x000000c0, 0x600ad800, 0x052dfe1f, - 0x05000005, 0x59a80249, 0x9000050c, 0x90000584, - 0x05000002, 0x0511fa30, 0x1c01f000, 0x0521fe7f, - 0x05020026, 0x599c0019, 0x82000500, 0x0000e000, - 0x82000580, 0x00004000, 0x05020020, 0x59c40001, - 0x82000d00, 0x00018000, 0x82040580, 0x00010000, - 0x05000004, 0x82040580, 0x00008000, 0x05020017, - 0x59a800a6, 0x90000483, 0x05001003, 0x90000541, - 0x0501f012, 0x050dfe6f, 0x64075075, 0x4a035076, - 0xaabbccdd, 0x64135069, 0x6403506a, 0x6012d800, - 0x59a800a6, 0x80000000, 0x480350a6, 0x59a800a5, - 0x82000500, 0xfffffff8, 0x90000544, 0x480350a5, - 0x0501fd42, 0x80000580, 0x1c01f000, 0x0525f854, - 0x05000051, 0x59a80249, 0x90000523, 0x900005a3, - 0x0502004d, 0x0525f853, 0x0500004b, 0x4a038802, - 0x0000ffbf, 0x59a804cc, 0x8c00050c, 0x0502012e, - 0x8c000506, 0x0502000b, 0x8c000508, 0x0502012a, - 0x84000548, 0x480354cc, 0x0525f84b, 0x05000004, - 0x417a5800, 0x0559fcae, 0x0501f123, 0x0501f0ea, - 0x8c00050a, 0x05020038, 0x8400054a, 0x480354cc, - 0x497b504b, 0x497b504a, 0x497b5044, 0x4a035045, - 0x0000ffff, 0x59a80249, 0x82000500, 0xffffff7c, - 0x48035249, 0x42024800, 0x0010e512, 0x59240200, - 0x82000500, 0xffffff1f, 0x48024a00, 0x59a802cc, - 0x5924100b, 0x82081500, 0x00001fff, 0x80080580, - 0x05000012, 0x4d3c0000, 0x4d300000, 0x4d400000, - 0x60aa8000, 0x417a6000, 0x600a7800, 0x41780800, - 0x0511fc4a, 0x5c028000, 0x5c026000, 0x5c027800, - 0x59a802cc, 0x5924080b, 0x82040d00, 0xffffe000, - 0x80040540, 0x4802480b, 0x4d300000, 0x417a6000, - 0x0511fbeb, 0x5c026000, 0x4803c856, 0x5924000c, - 0x800001c0, 0x05020006, 0x0001f817, 0x050000ee, - 0x492e480c, 0x5924000b, 0x48025802, 0x0511f9b6, - 0x0501f0e9, 0x59a80045, 0x82000580, 0x0000ffff, - 0x05000003, 0x0511f9b0, 0x0501f0e3, 0x0565fdfe, - 0x05000017, 0x0565fe01, 0x05000008, 0x052dfd93, - 0x05000006, 0x59a80249, 0x8c000506, 0x0500004e, - 0x0529fdb8, 0x050200d8, 0x80000580, 0x0509ff61, - 0x600ed800, 0x4a035045, 0x0000ffff, 0x4a01a8e4, - 0x00000080, 0x4a038802, 0x0000ffff, 0x850e1d02, - 0x0541fd6a, 0x0501fcb8, 0x0501f0cb, 0x59a80249, - 0x8c00050a, 0x05020003, 0x8c000506, 0x05000037, - 0x8c000500, 0x05000035, 0x4a038802, 0x0000ffbf, - 0x8c000502, 0x05000031, 0x0521ffde, 0x05020004, - 0x599c0018, 0x8c000516, 0x05020029, 0x59a8004a, - 0x82000580, 0x0000ffff, 0x05000020, 0x0521ffd5, - 0x05000006, 0x59a804cc, 0x8c000500, 0x05000003, - 0x0511fc27, 0x0501f008, 0x41781800, 0x0565fddb, - 0x05000002, 0x60401800, 0x59a80249, 0x8c00050a, - 0x05120a8a, 0x42024800, 0x0010e512, 0x417a4000, - 0x59240200, 0x82000500, 0x000000e0, 0x82000580, - 0x000000e0, 0x050200a0, 0x050dff2c, 0x59a80249, - 0x8c000504, 0x0502009c, 0x600c1000, 0x417a5800, - 0x050dff4b, 0x0501f098, 0x59a80249, 0x8c00051c, - 0x05020003, 0x8c000504, 0x05fc07f8, 0x59a8004b, - 0x80000540, 0x05020090, 0x59a80249, 0x8c000508, - 0x05020017, 0x59a80044, 0x80000540, 0x0502008a, - 0x59a80249, 0x8c00050e, 0x0500000c, 0x8c000502, - 0x0502000a, 0x052dfd39, 0x05000083, 0x82000500, - 0xffffff77, 0x48035249, 0x4a035045, 0x0000ffff, - 0x0511f949, 0x0501f07c, 0x0565fda8, 0x0500000c, - 0x0511fcc7, 0x05020078, 0x0501f009, 0x599c1819, - 0x8c0c0510, 0x05000004, 0x8c000502, 0x0502001d, - 0x0501f071, 0x8c000516, 0x0500006f, 0x0529fd4d, - 0x0502006d, 0x0521ff8b, 0x05020004, 0x599c0018, - 0x8c000516, 0x05020003, 0x052df90d, 0x05020066, - 0x59a80006, 0x8c00051c, 0x05020004, 0x599c0017, - 0x8c00050a, 0x0500000b, 0x61c0b00f, 0x417a8800, - 0x0001fb00, 0x05020004, 0x59340200, 0x8c00051a, - 0x05020059, 0x81468800, 0x8058b040, 0x05fe07f9, - 0x0565fda3, 0x05000004, 0x4a038802, 0x0000ffbf, - 0x0501f003, 0x4a038802, 0x0000ffff, 0x42001800, - 0x0010dd46, 0x0501fd73, 0x42001800, 0x0010dd53, - 0x0501fd70, 0x850e1d02, 0x4a01a8e4, 0x00000080, - 0x600ed800, 0x4a035045, 0x0000ffff, 0x0501fc2e, - 0x80000580, 0x0509fecb, 0x497b50a6, 0x64075078, - 0x0521ff5c, 0x0502000b, 0x599c0018, 0x8c000516, - 0x05000008, 0x59a804cc, 0x8c00050e, 0x05020036, - 0x8400054e, 0x480354cc, 0x0521fcda, 0x0501f016, - 0x59a81a49, 0x59a82041, 0x82102580, 0x0000aaaa, - 0x05000004, 0x8c0c0506, 0x05020002, 0x480f5449, - 0x8c0c0508, 0x05000007, 0x599c1819, 0x8c0c0510, - 0x05000004, 0x61f8180f, 0x60102000, 0x0501f003, - 0x61fc19ff, 0x60182000, 0x60003000, 0x417a4000, - 0x0521fc6c, 0x052dfce3, 0x0500000a, 0x59c40006, - 0x052dfcce, 0x05000004, 0x82000500, 0xffffff0f, - 0x0501f003, 0x82000500, 0xfbffffff, 0x48038806, - 0x0521ff30, 0x0500000a, 0x59a804cc, 0x8c000500, - 0x05000007, 0x59c40801, 0x82040d40, 0x00004000, - 0x48078801, 0x64c378e4, 0x0501f006, 0x59c40801, - 0x82040d00, 0xffffbfff, 0x48078801, 0x648378e4, - 0x0541fc9e, 0x1c01f000, 0x4c040000, 0x4c080000, - 0x4c100000, 0x59a8006a, 0x90000c84, 0x050219db, - 0x0c01f805, 0x5c002000, 0x5c001000, 0x5c000800, - 0x1c01f000, 0x00100409, 0x001004a3, 0x001004c8, - 0x00100576, 0x60380938, 0x050df9a7, 0x90040550, - 0x82000500, 0xfffffff7, 0x60380938, 0x050df9a7, - 0x59c410a3, 0x84081518, 0x480b88a3, 0x0521fd03, - 0x05020021, 0x599c0019, 0x82000500, 0x0000e000, - 0x82000580, 0x00004000, 0x0502001b, 0x59a808a5, - 0x90040d07, 0x90040580, 0x0502000b, 0x59a80069, - 0x90000582, 0x05000011, 0x050df8ea, 0x497b5068, - 0x050dfce9, 0x640f5076, 0x640b5069, 0x64075075, - 0x0501f00a, 0x90040584, 0x05020008, 0x497b2804, - 0x497b2805, 0x050dfcef, 0x64075075, 0x4a035076, - 0xaabbccdd, 0x64135069, 0x59a800a5, 0x80000000, - 0x480350a5, 0x60000001, 0x0509fe4e, 0x0539fbd6, - 0x59c408a3, 0x82040d00, 0xfffffff7, 0x480788a3, - 0x052dfc78, 0x0500000d, 0x052dfc82, 0x0500000b, - 0x052dfc7a, 0x05020999, 0x59c400a3, 0x84000532, - 0x84000570, 0x480388a3, 0x052dffa3, 0x4a038808, - 0x00000208, 0x0501f012, 0x59c400a3, 0x84000530, - 0x82000500, 0xbf7fffff, 0x480388a3, 0x61e00801, - 0x0525fd72, 0x59c400a3, 0x82000540, 0x00018000, - 0x8400051c, 0x480388a3, 0x82000500, 0xfffeffff, - 0x480388a3, 0x4a038808, 0x00000200, 0x59c40006, - 0x82000500, 0xfbffff0e, 0x48038806, 0x497b282c, - 0x497b282d, 0x61d00803, 0x42001000, 0x00100590, - 0x0539fa3c, 0x59c40805, 0x64078805, 0x0509fefb, - 0x05020006, 0x60040000, 0x050df8db, 0x60040000, - 0x050df8a9, 0x0501f01e, 0x0509fefa, 0x05020006, - 0x41780000, 0x050df8d4, 0x41780000, 0x050df8a2, - 0x0501f017, 0x0509fef9, 0x05020006, 0x60080000, - 0x050df8cd, 0x60080000, 0x050df89b, 0x0501f010, - 0x0509fef8, 0x05020006, 0x600c0000, 0x050df8c6, - 0x600c0000, 0x050df894, 0x0501f009, 0x0509fef7, - 0x05020956, 0x59a80075, 0x800001c0, 0x05000004, - 0x0509fef7, 0x6407506a, 0x0501f018, 0x050df914, - 0x6407506a, 0x052dfc27, 0x05000008, 0x052dfc31, - 0x05000006, 0x052dfc29, 0x05020948, 0x64075042, - 0x052dfb9d, 0x0501f00d, 0x59c400a4, 0x9000050f, - 0x90000588, 0x05000003, 0x4a038805, 0x04000000, - 0x59c400a3, 0x82000540, 0x0001c000, 0x480388a3, - 0x84000520, 0x480388a3, 0x1c01f000, 0x0501f8e9, - 0x05020003, 0x640f506a, 0x0501f021, 0x0509fed3, - 0x0502000d, 0x59a80075, 0x800001c0, 0x0500000a, - 0x0509fed3, 0x59a80074, 0x8c00051e, 0x05000018, - 0x052dfc0a, 0x05020006, 0x64075042, 0x052dfb7e, - 0x0501f003, 0x050df8be, 0x05020011, 0x050df855, - 0x640b506a, 0x497b5075, 0x59c400a3, 0x84000520, - 0x480388a3, 0x052dfbfd, 0x05000009, 0x0521fc57, - 0x05000007, 0x497b282c, 0x497b282d, 0x60b40800, - 0x42001000, 0x00100590, 0x0539f9da, 0x1c01f000, - 0x0501f8c4, 0x05020003, 0x640f506a, 0x0501f0a9, - 0x4a038805, 0x000000f0, 0x050df8a5, 0x050200a0, - 0x050dfab0, 0x05000017, 0x050dfa95, 0x05020015, - 0x050dfa9e, 0x0502000a, 0x59a80076, 0x90000584, - 0x05fc07f2, 0x0509fe9b, 0x0502000e, 0x59a80076, - 0x82000580, 0xaabbccdd, 0x05fc07ec, 0x59a80076, - 0x90000580, 0x05fc07e9, 0x0509fe80, 0x05020005, - 0x59a80076, 0x82000580, 0xaabbccdd, 0x05fc07e3, - 0x59a800a7, 0x8c000500, 0x0502000b, 0x59a80884, - 0x8c04050c, 0x05020008, 0x60380938, 0x050df8c2, - 0x90040548, 0x82000500, 0xffffffef, 0x60380938, - 0x050df8c2, 0x050dfa8b, 0x05000032, 0x0521fe5a, - 0x0500000c, 0x4a03c014, 0x00200020, 0x59c40001, - 0x82000500, 0x00018000, 0x82000580, 0x00018000, - 0x05020026, 0x4a03c013, 0x00200020, 0x0501f025, - 0x4a03c013, 0x03800300, 0x4a03c014, 0x03800380, + 0x00000000, 0x00000000, 0x00000009, 0x0000000c, + 0x0000000f, 0x00000012, 0x00000015, 0x00000000, + 0x00000000, 0x0000000f, 0x00000000, 0x00000000, + 0x00000000, 0x00100046, 0x00100045, 0x00000000, + 0x00100046, 0x00000000, 0x00000000, 0x00100046, + 0x00100045, 0x00100042, 0x00100046, 0x00100045, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00100046, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00100046, + 0x00100046, 0x00100046, 0x00000000, 0x00100046, + 0x00000000, 0x00000000, 0x00000000, 0x4203f000, + 0x00021fff, 0x40000000, 0x4203e000, 0x90000100, + 0x40000000, 0x42000800, 0x000211e8, 0x6002f000, + 0x608c00e0, 0x50000000, 0x8c000500, 0x05020003, + 0x42000800, 0x00020000, 0x45780800, 0x80040800, + 0x82040580, 0x00022000, 0x05fe07fc, 0x4178a000, + 0x4200a800, 0x0010daa9, 0x42000800, 0x00115aa4, + 0x40540000, 0x8004b480, 0x0569ffa4, 0x0501ffd3, + 0x600c6020, 0x50304800, 0x8c240500, 0x0500001c, + 0x59e00016, 0x8c000504, 0x05020019, 0x0569fffb, + 0x604808fa, 0x50041000, 0x82081500, 0xfffffffc, + 0x90081d43, 0x90081540, 0x84244d00, 0x440c0800, + 0x44080800, 0x44246000, 0x64030000, 0x4203e000, + 0x70000000, 0x4203e000, 0xb0300000, 0x603ff84e, + 0x59e00016, 0x8c000504, 0x05020002, 0x05fe47fd, + 0x84244d40, 0x44246000, 0x0569ffe4, 0x64030000, + 0x0501fdf7, 0x4803c856, 0x0509fc3e, 0x6413c020, + 0x4203e000, 0x6000000f, 0x640f70e8, 0x640f78e8, + 0x640da8e8, 0x59e00023, 0x8c000500, 0x0502002b, + 0x42002800, 0x00100022, 0x58140800, 0x4817c857, + 0x4807c857, 0x800409c0, 0x0500000a, 0x58142002, + 0x4813c857, 0x58141003, 0x4c140000, 0x0501ff92, + 0x5c002800, 0x0502003d, 0x90142c04, 0x05fdf7f3, + 0x42002800, 0x00100022, 0x5814a000, 0x4817c857, + 0x4853c857, 0x8050a1c0, 0x05000014, 0x4c140000, + 0x5814a801, 0x4857c857, 0x40500000, 0x80540480, + 0x0500000b, 0x82540480, 0x0000400e, 0x05020005, + 0x9050a404, 0x0509ffd2, 0x05020028, 0x0501f004, + 0x5814b002, 0x485bc857, 0x0569ff48, 0x5c002800, + 0x90142c04, 0x05fdf7e9, 0x050dfe4a, 0x42001000, + 0x7ff481fe, 0x59e00002, 0x8c00051e, 0x05020003, + 0x42001000, 0x7ff480fe, 0x50081000, 0x480b5095, + 0x42002800, 0x00100022, 0x58140801, 0x4817c857, + 0x4807c857, 0x800409c0, 0x05000023, 0x58142002, + 0x4813c857, 0x58141003, 0x4c140000, 0x82040480, + 0x0000400e, 0x05020004, 0x0509ffdc, 0x4803c856, + 0x0501f003, 0x0501ff58, 0x05020004, 0x5c002800, + 0x90142c04, 0x05fdf7ed, 0x4803c856, 0x4a03c020, + 0x00004010, 0x4a03c011, 0x40100011, 0x05006000, + 0x4203e000, 0x40000000, 0x59e00017, 0x60000800, + 0x8c00050a, 0x050a0e38, 0x8d0c0530, 0x050a0e2b, + 0x050a0e2d, 0x6403c017, 0x4203e000, 0x30000001, + 0x0501f000, 0x4803c856, 0x59e00024, 0x8c000500, + 0x050a0f7a, 0x59e00024, 0x8c00050e, 0x05000003, + 0x4a020200, 0x00003800, 0x0501ffd3, 0x4a03c014, + 0x001c001c, 0x4817c857, 0x0505f801, 0x42002000, + 0x00115aa4, 0x0569ff10, 0x59a800a4, 0x800001c0, + 0x0500000c, 0x59a800cf, 0x8c000500, 0x05000005, + 0x59a8000a, 0x82000480, 0x0013ffff, 0x05001005, + 0x59a820a4, 0x80102000, 0x59a8280a, 0x0569ff02, + 0x056df92b, 0x056df953, 0x59a8280a, 0x60800812, + 0x60001802, 0x4807503d, 0x480f529f, 0x900d0420, + 0x800404a0, 0x4803543e, 0x60c01000, 0x0541faf0, + 0x82040c00, 0x00115aa4, 0x4807500b, 0x600400de, + 0x50000000, 0x8c000502, 0x05000004, 0x59a800cf, + 0x84000540, 0x480350cf, 0x4a03c810, 0x00100000, + 0x4a03c811, 0x0010daa9, 0x0501ff96, 0x6447c829, + 0x59e40001, 0x82000540, 0x0003401f, 0x4803c801, + 0x4a03c802, 0x00000933, 0x59e00003, 0x82000540, + 0x00240000, 0x4803c003, 0x64ffc019, 0x60701000, + 0x0501fedd, 0x4202c000, 0x00115aa4, 0x42017800, + 0x00115aa4, 0x59aab00b, 0x59aaa00b, 0x59aaa80b, + 0x59aac83d, 0x4967509e, 0x496754e2, 0x59a8000b, + 0x4803500c, 0x0505f802, 0x0549ff51, 0x0505f80b, + 0x0505f898, 0x0509fff9, 0x59a80087, 0x8c000508, + 0x05000004, 0x050dff0c, 0x0525f9f0, 0x0511f83c, + 0x0505f9e7, 0x0509f81c, 0x0541faf7, 0x0501fc59, + 0x0515f887, 0x0531fdd5, 0x052dff41, 0x053df8ea, + 0x050df82a, 0x0509fe4d, 0x4203e000, 0xf0000001, + 0x056df915, 0x6403c018, 0x4203e000, 0xa0000001, + 0x59a800cf, 0x80000540, 0x05000004, 0x4203e000, + 0x20000551, 0x0501f003, 0x4203e000, 0x20000511, + 0x4203e000, 0x50010000, 0x6403c020, 0x05027019, + 0x59e00020, 0x90000582, 0x05020016, 0x4a03c020, + 0x00004000, 0x4a03c011, 0x40000010, 0x05006000, + 0x4203e000, 0x40000000, 0x4df00000, 0x4203e000, + 0x50000000, 0x59e00017, 0x60000800, 0x8c00050a, + 0x0002089a, 0x8d0c0530, 0x050a0d98, 0x000209c4, + 0x5c03e000, 0x6403c017, 0x4203e000, 0x30000001, + 0x6002d800, 0x4203e000, 0xb0600000, 0x59a800da, + 0x4003f800, 0x0001f004, 0x4df00000, 0x4203e000, + 0x50000000, 0x416c0000, 0x90000c88, 0x05021c66, + 0x0c01f803, 0x5c03e000, 0x0001f006, 0x001001bc, + 0x001001cd, 0x001002f2, 0x001001bb, 0x00100431, + 0x001001bb, 0x001001bb, 0x001005c9, 0x0501fc5a, + 0x42000800, 0x00111c71, 0x5804001e, 0x8c000500, + 0x0500000c, 0x84000500, 0x4800081e, 0x6012d800, + 0x0501fe69, 0x49f3c857, 0x5c000800, 0x5c000000, + 0x82000540, 0x00007e20, 0x4c000000, 0x4c040000, + 0x1c01f000, 0x41780000, 0x800001c0, 0x05020039, + 0x59c4000d, 0x8c00051e, 0x0502001f, 0x59a800aa, + 0x8c000500, 0x05000012, 0x60300830, 0x050dfc5a, + 0x90040560, 0x60300830, 0x4c000000, 0x050dfc5b, + 0x6041d04e, 0x053dfa93, 0x5c000000, 0x8400050a, + 0x60300830, 0x050dfc55, 0x6191d000, 0x053dfa8d, + 0x59c4000d, 0x8c00051e, 0x0502000b, 0x59c40005, + 0x8c000500, 0x05020008, 0x050dffe3, 0x640b50b9, + 0x64075078, 0x6012d800, 0x42000000, 0x00112462, + 0x0569f56a, 0x0501fe35, 0x0531f9a6, 0x0500000f, + 0x0531f9b6, 0x05020032, 0x5994002e, 0x82000580, + 0x001053a5, 0x05020004, 0x5994002d, 0x800001c0, + 0x0502002b, 0x59c40006, 0x82000540, 0x000000c0, + 0x48038806, 0x0501f026, 0x0531f913, 0x916c0581, + 0x050200c5, 0x59a80042, 0x90000589, 0x050200c2, + 0x497b5040, 0x42000800, 0xffffd815, 0x0511fd66, + 0x42024800, 0x001124b6, 0x497a4805, 0x64078893, + 0x4a038805, 0x000000f0, 0x0531f992, 0x59c41006, + 0x05020006, 0x82081540, 0x000000f1, 0x82081500, + 0xbbffffff, 0x0501f003, 0x82081540, 0x440000f1, + 0x480b8806, 0x053dfa5b, 0x0541fff8, 0x0501f8ab, + 0x050000a9, 0x42000000, 0x0011233c, 0x0569fd34, + 0x60c01100, 0x497b50b7, 0x0501f036, 0x0525fb72, + 0x59c400a4, 0x9000050f, 0x90000487, 0x0502109e, + 0x053dfa4c, 0x59c400a3, 0x82000500, 0xffefffff, + 0x480388a3, 0x59a800c2, 0x800001c0, 0x05020003, + 0x0529f8c5, 0x0501f094, 0x59a80046, 0x84000546, + 0x48035046, 0x0531f965, 0x59c41006, 0x05020006, + 0x82081540, 0x44000001, 0x82081500, 0xffffff0f, + 0x0501f003, 0x82081540, 0x440000f1, 0x480b8806, + 0x497b9005, 0x0501f885, 0x05000083, 0x60000000, + 0x052dfeec, 0x4a038802, 0x0000ffff, 0x4a0378e4, + 0x00003000, 0x42007000, 0x00111ffa, 0x58380401, + 0x8c000508, 0x05020003, 0x4a01a8e4, 0x0000c000, + 0x42000000, 0x00112333, 0x0569fd01, 0x59a81040, + 0x600c0800, 0x0541ffa6, 0x60401100, 0x59a81809, + 0x0521ff1d, 0x59a804d1, 0x82000500, 0xffffff40, + 0x480354d1, 0x59a8024c, 0x84000518, 0x4803524c, 0x59c40001, 0x82000500, 0x00018000, 0x82000580, - 0x00018000, 0x0502000c, 0x60880801, 0x61d81000, - 0x60201800, 0x0521fe44, 0x050008c8, 0x60880801, - 0x61b81000, 0x60201800, 0x0521fe3f, 0x050008c3, - 0x0501f00b, 0x60880801, 0x61d81000, 0x60201800, - 0x0521fe47, 0x050008bd, 0x60880801, 0x61b81000, - 0x60201800, 0x0521fe42, 0x050008b8, 0x4a03c014, - 0x03800000, 0x0501f003, 0x4a03c013, 0x00200000, - 0x052dfb92, 0x0500003d, 0x59c400a4, 0x9000050f, - 0x90000588, 0x05000021, 0x59c40005, 0x8c000534, - 0x0502001e, 0x5994002e, 0x800001c0, 0x05000007, - 0x0501fae3, 0x90000402, 0x5994082c, 0x80040480, - 0x0502103c, 0x0501f004, 0x5994002c, 0x90000482, - 0x05021038, 0x052dfb83, 0x05020036, 0x4a038805, - 0x000000f0, 0x052dfbad, 0x4a035041, 0x0000aaaa, - 0x64035042, 0x59c408a3, 0x90040d48, 0x480788a3, - 0x6006d800, 0x6403506a, 0x64078805, 0x497b282c, - 0x497b282d, 0x0501f019, 0x052dfb72, 0x05020007, - 0x59a80041, 0x82000580, 0x0000aaaa, 0x05020003, - 0x4a03503d, 0x00ffffff, 0x497b5041, 0x59c40006, - 0x82000540, 0x04000001, 0x48038806, 0x8d0c0506, - 0x05020004, 0x59c408a3, 0x90040d48, 0x480788a3, - 0x6006d800, 0x6403506a, 0x64078805, 0x497b282c, - 0x497b282d, 0x0501f00f, 0x59c40005, 0x82000500, - 0x000000c0, 0x0500000b, 0x59c40006, 0x82000540, - 0x000000f1, 0x48038806, 0x05fdf7f2, 0x0509fe0b, - 0x05020004, 0x59a80075, 0x800001c0, 0x05fe0757, - 0x497b8885, 0x1c01f000, 0x4803c856, 0x0521fb9f, - 0x05020005, 0x050dfbc2, 0x42000000, 0x0010e4bf, - 0x0565fa63, 0x60000001, 0x0509fd06, 0x6403506a, - 0x0509fdfa, 0x05020009, 0x59a80068, 0x800001c0, - 0x05000004, 0x80000040, 0x48035068, 0x05020003, - 0x642b5068, 0x64075075, 0x497b8885, 0x0501f22c, - 0x5994002c, 0x5994082d, 0x80040540, 0x1c01f000, - 0x497b282d, 0x1c01f000, 0x4a038805, 0x000000f0, - 0x1c01f000, 0x641f5093, 0x640f5094, 0x64035095, - 0x4a035096, 0x000090d5, 0x052dfe64, 0x4a035449, - 0x0000ffff, 0x4a03503d, 0x00ffffff, 0x0555fad7, - 0x4a03504d, 0x20200000, 0x4a03504e, 0x88000200, - 0x4a03504f, 0x00ff001f, 0x4a035050, 0x000007d0, - 0x4a035051, 0x80000a00, 0x4a035052, 0xa0000200, - 0x4a035053, 0x00ff0004, 0x4a035054, 0x00010000, - 0x4a035055, 0x80000000, 0x4a035056, 0x00000200, - 0x4a035057, 0x00ff0000, 0x4a035058, 0x00010000, - 0x4a03505f, 0x514c4f47, 0x4a035060, 0x49432020, - 0x1c01f000, 0x4d440000, 0x417a8800, 0x4c5c0000, - 0x4178b800, 0x0001fb00, 0x05020004, 0x0529fc62, - 0x05020002, 0x805cb800, 0x81468800, 0x83440580, - 0x000007f0, 0x05fe07f8, 0x405c0800, 0x5c00b800, - 0x5c028800, 0x1c01f000, 0x4803c857, 0x5c000000, - 0x4c000000, 0x4803c857, 0x0501f808, 0x485fc857, - 0x4203e000, 0x50000000, 0x5c000000, 0x4d780000, - 0x6008b900, 0x0501f005, 0x485fc857, 0x4203e000, - 0x50000000, 0x6008b900, 0x05006000, 0x4c000000, - 0x4c040000, 0x59bc00ea, 0x4803c857, 0x90000507, - 0x90000581, 0x05020003, 0x60000800, 0x053dff51, - 0x59b800ea, 0x4803c857, 0x641370e8, 0x5c000800, - 0x4807c025, 0x80040920, 0x4807c026, 0x5c000000, - 0x4803c023, 0x80000120, 0x4803c024, 0x5c000000, - 0x4803c857, 0x4803c021, 0x80000120, 0x4803c022, - 0x41f80000, 0x4803c029, 0x80000120, 0x4803c02a, - 0x41780800, 0x4807c027, 0x59a800af, 0x8c00050a, - 0x05000005, 0x59e00027, 0x8400054a, 0x4803c857, - 0x4803c027, 0x0565fafa, 0x0500004a, 0x42000800, - 0x001105c8, 0x46000800, 0xfaceface, 0x80040800, - 0x4c080000, 0x4c0c0000, 0x600010f4, 0x58080013, - 0x44000800, 0x80040800, 0x58080022, 0x44000800, - 0x80040800, 0x58080023, 0x44000800, 0x80040800, - 0x58080024, 0x44000800, 0x80040800, 0x58080025, - 0x44000800, 0x80040800, 0x58080028, 0x44000800, - 0x80040800, 0x610010f4, 0x602c1800, 0x50080000, - 0x44000800, 0x80081000, 0x80040800, 0x800c1840, - 0x05fe07fb, 0x600c1800, 0x600010f6, 0x480c1003, - 0x58080005, 0x44000800, 0x80040800, 0x800c1840, - 0x05fe17fb, 0x600010f8, 0x58080002, 0x44000800, - 0x80040800, 0x58080003, 0x44000800, 0x80040800, - 0x58080020, 0x44000800, 0x80040800, 0x58080021, - 0x44000800, 0x80040800, 0x58080022, 0x44000800, - 0x80040800, 0x58080023, 0x44000800, 0x80040800, - 0x600010f6, 0x58080007, 0x44000800, 0x80040800, - 0x5808002b, 0x44000800, 0x80040800, 0x5808007c, - 0x44000800, 0x80040800, 0x5c001800, 0x5c001000, - 0x64030000, 0x485fc020, 0x905cb9c0, 0x905cbd52, - 0x485fc011, 0x4203e000, 0x40000000, 0x6016d800, - 0x59e00017, 0x60000800, 0x8c00050a, 0x050a0875, - 0x8d0c0530, 0x050a0868, 0x050a086a, 0x6403c017, - 0x4203e000, 0x30000001, 0x0501f956, 0x05fdf7ff, - 0x60100000, 0x0501f80c, 0x4a03c855, 0x0001eb5a, - 0x59e40001, 0x82000540, 0xff000700, 0x4803c801, - 0x42000000, 0x0010e4e5, 0x49780003, 0x49780004, - 0x1c01f000, 0x42000800, 0x0010e4e7, 0x44000800, - 0x59e40801, 0x82041500, 0x00f3c0ff, 0x480bc801, - 0x8c040524, 0x0500000b, 0x4c000000, 0x59e41052, - 0x59e40054, 0x800000d4, 0x82000400, 0x00110772, - 0x80081480, 0x480bc853, 0x6503c800, 0x5c000000, - 0x4a03c850, 0x00110772, 0x800000d4, 0x82002400, - 0x00110771, 0x4813c851, 0x4a03c853, 0x00000400, - 0x42000000, 0x00110772, 0x82001400, 0x00001000, - 0x45780000, 0x80000000, 0x80081d80, 0x05fe07fd, - 0x4807c801, 0x1c01f000, 0x42002000, 0x0010e4e5, - 0x59e41801, 0x58100c01, 0x82040500, 0x00003800, - 0x820c1d00, 0xffffc7ff, 0x800c1d40, 0x480fc801, - 0x1c01f000, 0x5c036000, 0x4db00000, 0x49b3c857, - 0x4803c857, 0x1c01f000, 0x4c5c0000, 0x4c600000, - 0x4c640000, 0x8d0c052a, 0x0500002f, 0x401c0000, - 0x80040d40, 0x4004b800, 0x400cc000, 0x4018c800, - 0x0501f8d3, 0x41784000, 0x42002800, 0x0010e4e5, - 0x58142017, 0x5814000d, 0x80100400, 0x445c0000, - 0x80102000, 0x80000000, 0x82104d00, 0x000000ff, - 0x050008a9, 0x0500001c, 0x4c000000, 0x0501f890, - 0x5c000000, 0x44080000, 0x80102000, 0x80000000, - 0x82104d00, 0x000000ff, 0x0500089f, 0x05000012, - 0x44600000, 0x80102000, 0x80000000, 0x82104d00, - 0x000000ff, 0x05000898, 0x0500000b, 0x44640000, - 0x80102000, 0x80000000, 0x82104d00, 0x000000ff, - 0x05000891, 0x05000004, 0x48102817, 0x802041c0, - 0x05060d32, 0x5c00c800, 0x5c00c000, 0x5c00b800, + 0x00018000, 0x59c400a3, 0x05020004, 0x82000540, + 0x00001000, 0x0501f003, 0x82000500, 0xffffefff, + 0x480388a3, 0x59c80015, 0x84000548, 0x48039015, + 0x050dfb18, 0x59a81008, 0x84081500, 0x480b5008, + 0x850e1d0a, 0x0529ffc1, 0x0531f91e, 0x05000007, + 0x8d0c0506, 0x05000005, 0x640750b7, 0x850e1d0e, + 0x0525fc3b, 0x0501f048, 0x052df8c8, 0x05000005, + 0x59c41002, 0x8408150c, 0x480b8802, 0x0501f017, + 0x0531f910, 0x05020005, 0x59a80049, 0x80000540, + 0x05580b82, 0x0501f011, 0x0559fb80, 0x59a8024c, + 0x8c000506, 0x0502000d, 0x59a80049, 0x80000540, + 0x05020007, 0x59a81c4c, 0x820c0580, 0x0000ffff, + 0x05000006, 0x8c0c0508, 0x05000004, 0x4a03544c, + 0x0000ffff, 0x0529f978, 0x497b504e, 0x497b504d, + 0x497b50b8, 0x0531f8f7, 0x59a8124c, 0x05020009, + 0x050df90a, 0x80001580, 0x59a80050, 0x82000500, + 0xffff0000, 0x80040d40, 0x48075050, 0x0501f005, + 0x59a80050, 0x82000500, 0xffff0000, 0x48035050, + 0x599c0017, 0x8c00050a, 0x05000002, 0x84081544, + 0x480b524c, 0x0531f8e3, 0x05000003, 0x050df8f7, + 0x48078880, 0x60141000, 0x0545fc39, 0x497b504e, + 0x497b5047, 0x4a035048, 0x0000ffff, 0x4a01a8e4, + 0x000000c0, 0x600ad800, 0x0531f8d6, 0x05000005, + 0x59a8024c, 0x9000050c, 0x90000584, 0x05000002, + 0x0511fa95, 0x1c01f000, 0x0521fff2, 0x05020026, + 0x599c0019, 0x82000500, 0x0000e000, 0x82000580, + 0x00004000, 0x05020020, 0x59c40001, 0x82000d00, + 0x00018000, 0x82040580, 0x00010000, 0x05000004, + 0x82040580, 0x00008000, 0x05020017, 0x59a800a9, + 0x90000483, 0x05001003, 0x90000541, 0x0501f012, + 0x050dfebc, 0x64075078, 0x4a035079, 0xaabbccdd, + 0x6413506c, 0x6403506d, 0x6012d800, 0x59a800a9, + 0x80000000, 0x480350a9, 0x59a800a8, 0x82000500, + 0xfffffff8, 0x90000544, 0x480350a8, 0x0501fd3e, + 0x80000580, 0x1c01f000, 0x0525f9c7, 0x05000051, + 0x59a8024c, 0x90000523, 0x900005a3, 0x0502004d, + 0x0525f9c6, 0x0500004b, 0x4a038802, 0x0000ffbf, + 0x59a804d1, 0x8c00050c, 0x05020132, 0x8c000506, + 0x0502000b, 0x8c000508, 0x0502012e, 0x84000548, + 0x480354d1, 0x0525f9be, 0x05000004, 0x417a5800, + 0x055dfa2c, 0x0501f127, 0x0501f0ee, 0x8c00050a, + 0x05020038, 0x8400054a, 0x480354d1, 0x497b504e, + 0x497b504d, 0x497b5047, 0x4a035048, 0x0000ffff, + 0x59a8024c, 0x82000500, 0xffffff7c, 0x4803524c, + 0x42024800, 0x001124b6, 0x59240200, 0x82000500, + 0xffffff1f, 0x48024a00, 0x59a802d1, 0x5924100b, + 0x82081500, 0x00001fff, 0x80080580, 0x05000012, + 0x4d3c0000, 0x4d300000, 0x4d400000, 0x60aa8000, + 0x417a6000, 0x600a7800, 0x41780800, 0x0511fcbe, + 0x5c028000, 0x5c026000, 0x5c027800, 0x59a802d1, + 0x5924080b, 0x82040d00, 0xffffe000, 0x80040540, + 0x4802480b, 0x4d300000, 0x417a6000, 0x0511fc5f, + 0x5c026000, 0x4803c856, 0x5924000c, 0x800001c0, + 0x05020006, 0x0001f81f, 0x050000f2, 0x492e480c, + 0x5924000b, 0x48025802, 0x0511fa1b, 0x0501f0ed, + 0x59a80048, 0x82000580, 0x0000ffff, 0x05000003, + 0x0511fa15, 0x0501f0e7, 0x0569fd46, 0x05000017, + 0x0569fd49, 0x05000008, 0x0531f84a, 0x05000006, + 0x59a8024c, 0x8c000506, 0x0500004e, 0x0529fff7, + 0x050200dc, 0x80000580, 0x0509ffae, 0x600ed800, + 0x4a035048, 0x0000ffff, 0x4a01a8e4, 0x00000080, + 0x4a038802, 0x0000ffff, 0x850e1d02, 0x0545f9f5, + 0x0501fcb4, 0x0501f0cf, 0x59a8024c, 0x8c00050a, + 0x05020003, 0x8c000506, 0x05000037, 0x8c000500, + 0x05000035, 0x4a038802, 0x0000ffbf, 0x8c000502, + 0x05000031, 0x0525f951, 0x05020004, 0x599c0018, + 0x8c000516, 0x05020029, 0x59a8004d, 0x82000580, + 0x0000ffff, 0x05000020, 0x0525f948, 0x05000006, + 0x59a804d1, 0x8c000500, 0x05000003, 0x0511fc9b, + 0x0501f008, 0x41781800, 0x0569fd23, 0x05000002, + 0x60401800, 0x59a8024c, 0x8c00050a, 0x05120af3, + 0x42024800, 0x001124b6, 0x417a4000, 0x59240200, + 0x82000500, 0x000000e0, 0x82000580, 0x000000e0, + 0x050200a4, 0x050dff8c, 0x59a8024c, 0x8c000504, + 0x050200a0, 0x600c1000, 0x417a5800, 0x050dffab, + 0x0501f09c, 0x59a8024c, 0x8c00051c, 0x05020003, + 0x8c000504, 0x05fc07f8, 0x59a8004e, 0x80000540, + 0x05020094, 0x59a8024c, 0x8c000508, 0x05020017, + 0x59a80047, 0x80000540, 0x0502008e, 0x59a8024c, + 0x8c00050e, 0x0500000c, 0x8c000502, 0x0502000a, + 0x052dfff0, 0x05000087, 0x82000500, 0xffffff77, + 0x4803524c, 0x4a035048, 0x0000ffff, 0x0511f9ae, + 0x0501f080, 0x0569fcf0, 0x0500000c, 0x0511fd3c, + 0x0502007c, 0x0501f009, 0x599c1819, 0x8c0c0510, + 0x05000004, 0x8c000502, 0x05020021, 0x0501f075, + 0x8c000516, 0x05000073, 0x0529ff8c, 0x05020071, + 0x0525f8fe, 0x05020004, 0x599c0018, 0x8c000516, + 0x05020003, 0x052dfbaf, 0x0502006a, 0x59a80006, + 0x8c00051c, 0x05020004, 0x599c0017, 0x8c00050a, + 0x0500000f, 0x59a8b0ac, 0x417a8800, 0x0001fb08, + 0x05020004, 0x59340200, 0x8c00051a, 0x0502005d, + 0x81468800, 0x83440580, 0x000007f0, 0x05020002, + 0x60028810, 0x8058b040, 0x05fe07f5, 0x0569fce7, + 0x05000004, 0x4a038802, 0x0000ffbf, 0x0501f003, + 0x4a038802, 0x0000ffff, 0x42001800, 0x00111ce0, + 0x0501fd73, 0x42001800, 0x00111ced, 0x0501fd70, + 0x850e1d02, 0x4a01a8e4, 0x00000080, 0x600ed800, + 0x4a035048, 0x0000ffff, 0x0501fc26, 0x80000580, + 0x0509ff14, 0x497b50a9, 0x6407507b, 0x0525f8cb, + 0x0502000b, 0x599c0018, 0x8c000516, 0x05000008, + 0x59a804d1, 0x8c00050e, 0x05020036, 0x8400054e, + 0x480354d1, 0x0521fe46, 0x0501f016, 0x59a81a4c, + 0x59a82044, 0x82102580, 0x0000aaaa, 0x05000004, + 0x8c0c0506, 0x05020002, 0x480f544c, 0x8c0c0508, + 0x05000007, 0x599c1819, 0x8c0c0510, 0x05000004, + 0x61f8180f, 0x60102000, 0x0501f003, 0x61fc19ff, + 0x60182000, 0x60003000, 0x417a4000, 0x0521fdd2, + 0x052dff96, 0x0500000a, 0x59c40006, 0x052dff81, + 0x05000004, 0x82000500, 0xffffff0f, 0x0501f003, + 0x82000500, 0xfbffffff, 0x48038806, 0x0525f89f, + 0x0500000a, 0x59a804d1, 0x8c000500, 0x05000007, + 0x59c40801, 0x82040d40, 0x00004000, 0x48078801, + 0x64c378e4, 0x0501f006, 0x59c40801, 0x82040d00, + 0xffffbfff, 0x48078801, 0x648378e4, 0x0545f925, + 0x1c01f000, 0x4c040000, 0x4c080000, 0x4c100000, + 0x59a8006d, 0x90000c84, 0x050219df, 0x0c01f805, + 0x5c002000, 0x5c001000, 0x5c000800, 0x1c01f000, + 0x00100440, 0x001004da, 0x001004ff, 0x001005ad, + 0x60380938, 0x050df9f0, 0x90040550, 0x82000500, + 0xfffffff7, 0x60380938, 0x050df9f0, 0x59c410a3, + 0x84081518, 0x480b88a3, 0x0521fe72, 0x05020021, + 0x599c0019, 0x82000500, 0x0000e000, 0x82000580, + 0x00004000, 0x0502001b, 0x59a808a8, 0x90040d07, + 0x90040580, 0x0502000b, 0x59a8006c, 0x90000582, + 0x05000011, 0x050df933, 0x497b506b, 0x050dfd32, + 0x640f5079, 0x640b506c, 0x64075078, 0x0501f00a, + 0x90040584, 0x05020008, 0x497b2804, 0x497b2805, + 0x050dfd38, 0x64075078, 0x4a035079, 0xaabbccdd, + 0x6413506c, 0x59a800a8, 0x80000000, 0x480350a8, + 0x60000001, 0x0509fe97, 0x053df80a, 0x59c408a3, + 0x82040d00, 0xfffffff7, 0x480788a3, 0x052dff2b, + 0x0500000d, 0x052dff35, 0x0500000b, 0x052dff2d, + 0x0502099d, 0x59c400a3, 0x84000532, 0x84000570, + 0x480388a3, 0x0531fa5c, 0x4a038808, 0x00000208, + 0x0501f012, 0x59c400a3, 0x84000530, 0x82000500, + 0xbf7fffff, 0x480388a3, 0x61e00801, 0x0525ff32, + 0x59c400a3, 0x82000540, 0x00018000, 0x8400051c, + 0x480388a3, 0x82000500, 0xfffeffff, 0x480388a3, + 0x4a038808, 0x00000200, 0x59c40006, 0x82000500, + 0xfbffff0e, 0x48038806, 0x497b282d, 0x497b282e, + 0x61d00803, 0x42001000, 0x001005c7, 0x0539fe1f, + 0x59c40805, 0x64078805, 0x0509ff44, 0x05020006, + 0x60040000, 0x050df924, 0x60040000, 0x050df8f2, + 0x0501f01e, 0x0509ff43, 0x05020006, 0x41780000, + 0x050df91d, 0x41780000, 0x050df8eb, 0x0501f017, + 0x0509ff42, 0x05020006, 0x60080000, 0x050df916, + 0x60080000, 0x050df8e4, 0x0501f010, 0x0509ff41, + 0x05020006, 0x600c0000, 0x050df90f, 0x600c0000, + 0x050df8dd, 0x0501f009, 0x0509ff40, 0x0502095a, + 0x59a80078, 0x800001c0, 0x05000004, 0x0509ff40, + 0x6407506d, 0x0501f018, 0x050df95d, 0x6407506d, + 0x052dfeda, 0x05000008, 0x052dfee4, 0x05000006, + 0x052dfedc, 0x0502094c, 0x64075045, 0x052dfe4a, + 0x0501f00d, 0x59c400a4, 0x9000050f, 0x90000588, + 0x05000003, 0x4a038805, 0x04000000, 0x59c400a3, + 0x82000540, 0x0001c000, 0x480388a3, 0x84000520, + 0x480388a3, 0x1c01f000, 0x0501f8e9, 0x05020003, + 0x640f506d, 0x0501f021, 0x0509ff1c, 0x0502000d, + 0x59a80078, 0x800001c0, 0x0500000a, 0x0509ff1c, + 0x59a80077, 0x8c00051e, 0x05000018, 0x052dfebd, + 0x05020006, 0x64075045, 0x052dfe2b, 0x0501f003, + 0x050df907, 0x05020011, 0x050df89e, 0x640b506d, + 0x497b5078, 0x59c400a3, 0x84000520, 0x480388a3, + 0x052dfeb0, 0x05000009, 0x0521fdc6, 0x05000007, + 0x497b282d, 0x497b282e, 0x60b40800, 0x42001000, + 0x001005c7, 0x0539fdbd, 0x1c01f000, 0x0501f8c4, + 0x05020003, 0x640f506d, 0x0501f0a9, 0x4a038805, + 0x000000f0, 0x050df8ee, 0x050200a0, 0x050dfaf9, + 0x05000017, 0x050dfade, 0x05020015, 0x050dfae7, + 0x0502000a, 0x59a80079, 0x90000584, 0x05fc07f2, + 0x0509fee4, 0x0502000e, 0x59a80079, 0x82000580, + 0xaabbccdd, 0x05fc07ec, 0x59a80079, 0x90000580, + 0x05fc07e9, 0x0509fec9, 0x05020005, 0x59a80079, + 0x82000580, 0xaabbccdd, 0x05fc07e3, 0x59a800aa, + 0x8c000500, 0x0502000b, 0x59a80887, 0x8c04050c, + 0x05020008, 0x60380938, 0x050df90b, 0x90040548, + 0x82000500, 0xffffffef, 0x60380938, 0x050df90b, + 0x050dfad4, 0x05000032, 0x0525f817, 0x0500000c, + 0x4a03c014, 0x00200020, 0x59c40001, 0x82000500, + 0x00018000, 0x82000580, 0x00018000, 0x05020026, + 0x4a03c013, 0x00200020, 0x0501f025, 0x4a03c013, + 0x03800300, 0x4a03c014, 0x03800380, 0x59c40001, + 0x82000500, 0x00018000, 0x82000580, 0x00018000, + 0x0502000c, 0x60880801, 0x61d81000, 0x60201800, + 0x0525f801, 0x050008cc, 0x60880801, 0x61b81000, + 0x60201800, 0x0521fffc, 0x050008c7, 0x0501f00b, + 0x60880801, 0x61d81000, 0x60201800, 0x0525f804, + 0x050008c1, 0x60880801, 0x61b81000, 0x60201800, + 0x0521ffff, 0x050008bc, 0x4a03c014, 0x03800000, + 0x0501f003, 0x4a03c013, 0x00200000, 0x052dfe45, + 0x0500003d, 0x59c400a4, 0x9000050f, 0x90000588, + 0x05000021, 0x59c40005, 0x8c000534, 0x0502001e, + 0x5994002f, 0x800001c0, 0x05000007, 0x0501fadb, + 0x90000402, 0x5994082d, 0x80040480, 0x0502103c, + 0x0501f004, 0x5994002d, 0x90000482, 0x05021038, + 0x052dfe36, 0x05020036, 0x4a038805, 0x000000f0, + 0x052dfe60, 0x4a035044, 0x0000aaaa, 0x64035045, + 0x59c408a3, 0x90040d48, 0x480788a3, 0x6006d800, + 0x6403506d, 0x64078805, 0x497b282d, 0x497b282e, + 0x0501f019, 0x052dfe25, 0x05020007, 0x59a80044, + 0x82000580, 0x0000aaaa, 0x05020003, 0x4a035040, + 0x00ffffff, 0x497b5044, 0x59c40006, 0x82000540, + 0x04000001, 0x48038806, 0x8d0c0506, 0x05020004, + 0x59c408a3, 0x90040d48, 0x480788a3, 0x6006d800, + 0x6403506d, 0x64078805, 0x497b282d, 0x497b282e, + 0x0501f00f, 0x59c40005, 0x82000500, 0x000000c0, + 0x0500000b, 0x59c40006, 0x82000540, 0x000000f1, + 0x48038806, 0x05fdf7f2, 0x0509fe54, 0x05020004, + 0x59a80078, 0x800001c0, 0x05fe0757, 0x497b8885, + 0x1c01f000, 0x4803c856, 0x0521fd0e, 0x05020005, + 0x050dfc0b, 0x42000000, 0x00112463, 0x0569f9a7, + 0x60000001, 0x0509fd4f, 0x6403506d, 0x0509fe43, + 0x05020009, 0x59a8006b, 0x800001c0, 0x05000004, + 0x80000040, 0x4803506b, 0x05020003, 0x642b506b, + 0x64075078, 0x497b8885, 0x0501f224, 0x5994002d, + 0x5994082e, 0x80040540, 0x1c01f000, 0x497b282e, + 0x1c01f000, 0x4a038805, 0x000000f0, 0x1c01f000, + 0x64235096, 0x640f5097, 0x64035098, 0x4a035099, + 0x001090d5, 0x0531f91d, 0x4a03544c, 0x0000ffff, + 0x4a035040, 0x00ffffff, 0x0559f838, 0x4a035050, + 0x20200000, 0x4a035051, 0x88000200, 0x4a035052, + 0x00ff001f, 0x4a035053, 0x000007d0, 0x4a035054, + 0x80000a00, 0x4a035055, 0xa0000200, 0x4a035056, + 0x00ff0004, 0x4a035057, 0x00010000, 0x4a035058, + 0x80000000, 0x4a035059, 0x00000200, 0x4a03505a, + 0x00ff0000, 0x4a03505b, 0x00010000, 0x4a035062, + 0x514c4f47, 0x4a035063, 0x49432020, 0x1c01f000, + 0x4d440000, 0x417a8800, 0x4c5c0000, 0x4178b800, + 0x0001fb08, 0x05020004, 0x0529fef4, 0x05020002, + 0x805cb800, 0x81468800, 0x83440580, 0x000007f0, + 0x05020002, 0x60028810, 0x59a800ad, 0x81440580, + 0x05fe07f4, 0x405c0800, 0x5c00b800, 0x5c028800, + 0x1c01f000, 0x4803c857, 0x5c000000, 0x4c000000, + 0x4803c857, 0x0501f808, 0x485fc857, 0x4203e000, + 0x50000000, 0x5c000000, 0x4d780000, 0x6008b900, + 0x0501f005, 0x485fc857, 0x4203e000, 0x50000000, + 0x6008b900, 0x05006000, 0x4c000000, 0x4c040000, + 0x59bc00ea, 0x4803c857, 0x90000507, 0x90000581, + 0x05020003, 0x60000800, 0x0541fbd4, 0x59b800ea, + 0x4803c857, 0x641370e8, 0x5c000800, 0x4807c025, + 0x80040920, 0x4807c026, 0x5c000000, 0x4803c023, + 0x80000120, 0x4803c024, 0x5c000000, 0x4803c857, + 0x4803c021, 0x80000120, 0x4803c022, 0x41f80000, + 0x4803c029, 0x80000120, 0x4803c02a, 0x41780800, + 0x4807c027, 0x59a800b4, 0x8c00050a, 0x05000005, + 0x59e00027, 0x8400054a, 0x4803c857, 0x4803c027, + 0x0569fa3a, 0x0500004a, 0x42000800, 0x0011456c, + 0x46000800, 0xfaceface, 0x80040800, 0x4c080000, + 0x4c0c0000, 0x600010f4, 0x58080013, 0x44000800, + 0x80040800, 0x58080022, 0x44000800, 0x80040800, + 0x58080023, 0x44000800, 0x80040800, 0x58080024, + 0x44000800, 0x80040800, 0x58080025, 0x44000800, + 0x80040800, 0x58080028, 0x44000800, 0x80040800, + 0x610010f4, 0x602c1800, 0x50080000, 0x44000800, + 0x80081000, 0x80040800, 0x800c1840, 0x05fe07fb, + 0x600c1800, 0x600010f6, 0x480c1003, 0x58080005, + 0x44000800, 0x80040800, 0x800c1840, 0x05fe17fb, + 0x600010f8, 0x58080002, 0x44000800, 0x80040800, + 0x58080003, 0x44000800, 0x80040800, 0x58080020, + 0x44000800, 0x80040800, 0x58080021, 0x44000800, + 0x80040800, 0x58080022, 0x44000800, 0x80040800, + 0x58080023, 0x44000800, 0x80040800, 0x600010f6, + 0x58080007, 0x44000800, 0x80040800, 0x5808002b, + 0x44000800, 0x80040800, 0x5808007c, 0x44000800, + 0x80040800, 0x5c001800, 0x5c001000, 0x64030000, + 0x485fc020, 0x905cb9c0, 0x905cbd52, 0x485fc011, + 0x4203e000, 0x40000000, 0x6016d800, 0x59e00017, + 0x60000800, 0x8c00050a, 0x050a08ab, 0x8d0c0530, + 0x050a089e, 0x050a08a0, 0x6403c017, 0x4203e000, + 0x30000001, 0x0501f94a, 0x05fdf7ff, 0x600c0000, + 0x0501f80c, 0x4a03c855, 0x0001eb5a, 0x59e40001, + 0x82000540, 0xff000700, 0x4803c801, 0x42000000, + 0x00112489, 0x49780003, 0x49780004, 0x1c01f000, + 0x42000800, 0x0011248b, 0x44000800, 0x59e40801, + 0x82041500, 0x00f3c0ff, 0x480bc801, 0x4a03c850, + 0x00114716, 0x800000d4, 0x82002400, 0x00114715, + 0x4813c851, 0x4a03c853, 0x00000400, 0x42000000, + 0x00114716, 0x82001400, 0x00000c00, 0x45780000, + 0x80000000, 0x80081d80, 0x05fe07fd, 0x4807c801, + 0x1c01f000, 0x42002000, 0x00112489, 0x59e41801, + 0x58100c01, 0x82040500, 0x00003800, 0x820c1d00, + 0xffffc7ff, 0x800c1d40, 0x480fc801, 0x1c01f000, + 0x5c036000, 0x4db00000, 0x49b3c857, 0x4803c857, 0x1c01f000, 0x4c5c0000, 0x4c600000, 0x4c640000, - 0x42001000, 0x04000000, 0x41ccc800, 0x42002800, - 0x0010e4e5, 0x59a800d0, 0x82000d00, 0x000003ff, - 0x4c000000, 0x58140212, 0x0501f85d, 0x5c000000, - 0x4004b800, 0x4008c000, 0x905cbc06, 0x8c000516, - 0x05000002, 0x905cbc02, 0x0501f016, 0x4c5c0000, - 0x4c600000, 0x4c640000, 0x42002800, 0x0010e4e5, - 0x42001000, 0x03000000, 0x4000c800, 0x821c0500, - 0x00003c00, 0x80000114, 0x821c0d00, 0x000003ff, - 0x4c000000, 0x58140412, 0x0501f845, 0x5c000000, - 0x4004b800, 0x4008c000, 0x805cbc00, 0x805cb840, - 0x825c0480, 0x00000240, 0x05fe1ed0, 0x0501f878, - 0x405c0000, 0x905cbc02, 0x80600d40, 0x42002800, - 0x0010e4e5, 0x41784000, 0x58142017, 0x825c0480, - 0x00000101, 0x05021028, 0x5814000d, 0x80100400, - 0x44040000, 0x80102000, 0x80000000, 0x805cb840, - 0x82104d00, 0x000000ff, 0x05000847, 0x0500001a, - 0x4c000000, 0x0501f82e, 0x5c000000, 0x44080000, + 0x8d0c052a, 0x0500002f, 0x401c0000, 0x80040d40, + 0x4004b800, 0x400cc000, 0x4018c800, 0x0501f8d3, + 0x41784000, 0x42002800, 0x00112489, 0x58142017, + 0x5814000d, 0x80100400, 0x445c0000, 0x80102000, + 0x80000000, 0x82104d00, 0x000000ff, 0x050008a9, + 0x0500001c, 0x4c000000, 0x0501f890, 0x5c000000, + 0x44080000, 0x80102000, 0x80000000, 0x82104d00, + 0x000000ff, 0x0500089f, 0x05000012, 0x44600000, + 0x80102000, 0x80000000, 0x82104d00, 0x000000ff, + 0x05000898, 0x0500000b, 0x44640000, 0x80102000, + 0x80000000, 0x82104d00, 0x000000ff, 0x05000891, + 0x05000004, 0x48102817, 0x802041c0, 0x05060d72, + 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x1c01f000, + 0x4c5c0000, 0x4c600000, 0x4c640000, 0x42001000, + 0x04000000, 0x41ccc800, 0x42002800, 0x00112489, + 0x59a800d5, 0x82000d00, 0x000003ff, 0x4c000000, + 0x58140212, 0x0501f85d, 0x5c000000, 0x4004b800, + 0x4008c000, 0x905cbc06, 0x8c000516, 0x05000002, + 0x905cbc02, 0x0501f016, 0x4c5c0000, 0x4c600000, + 0x4c640000, 0x42002800, 0x00112489, 0x42001000, + 0x03000000, 0x4000c800, 0x821c0500, 0x00003c00, + 0x80000114, 0x821c0d00, 0x000003ff, 0x4c000000, + 0x58140412, 0x0501f845, 0x5c000000, 0x4004b800, + 0x4008c000, 0x805cbc00, 0x805cb840, 0x825c0480, + 0x00000240, 0x05fe1edc, 0x0501f878, 0x405c0000, + 0x905cbc02, 0x80600d40, 0x42002800, 0x00112489, + 0x41784000, 0x58142017, 0x825c0480, 0x00000101, + 0x05021028, 0x5814000d, 0x80100400, 0x44040000, 0x80102000, 0x80000000, 0x805cb840, 0x82104d00, - 0x000000ff, 0x0500083c, 0x0500000f, 0x50641800, - 0x440c0000, 0x80000000, 0x80102000, 0x8064c800, - 0x805cb840, 0x05fe07f6, 0x82104d00, 0x000000ff, - 0x05000831, 0x05000004, 0x48102817, 0x802041c0, - 0x05060cd2, 0x5c00c800, 0x5c00c000, 0x5c00b800, - 0x1c01f000, 0x82100500, 0x000000ff, 0x805c0400, - 0x82000480, 0x00000200, 0x05fc17d4, 0x6108b800, - 0x82600d40, 0x00008040, 0x05fdf7d0, 0x800001c0, - 0x05000006, 0x80041c80, 0x05001004, 0x05000003, - 0x40000800, 0x8408155c, 0x1c01f000, 0x59a800ba, - 0x800018c4, 0x800010ca, 0x800000cc, 0x800c0400, - 0x80081400, 0x59940024, 0x61a01807, 0x800c1c80, - 0x05021002, 0x61a01807, 0x5994002e, 0x800c0400, - 0x82001c80, 0x000007d0, 0x05001002, 0x6140000f, - 0x4c080000, 0x0501f8b6, 0x5c001000, 0x80081400, - 0x1c01f000, 0x4813c857, 0x5c036000, 0x4db00000, - 0x49b3c857, 0x40001800, 0x58140000, 0x8c000502, - 0x05000009, 0x58140821, 0x80040800, 0x48042821, - 0x4807c857, 0x8400054a, 0x48002800, 0x80000580, - 0x0501f00e, 0x82102500, 0x000003ff, 0x80204000, - 0x58140014, 0x80000000, 0x90000503, 0x48002814, - 0x05000003, 0x400c0000, 0x0501f002, 0x5814000d, - 0x80000540, 0x4803c857, 0x1c01f000, 0x42002800, - 0x0010e4e5, 0x58140000, 0x8c00050a, 0x0500002f, - 0x8c000502, 0x0502002d, 0x4c5c0000, 0x5814b821, - 0x49782821, 0x8400050a, 0x48002800, 0x58142017, - 0x4813c857, 0x5814000d, 0x80100400, 0x41784000, - 0x42000800, 0x0b000001, 0x44040000, 0x80000000, - 0x80102000, 0x82104d00, 0x000000ff, 0x05fc0fca, - 0x05fc0e3e, 0x4c000000, 0x05fdffb1, 0x5c000000, - 0x44080000, 0x80000000, 0x80102000, 0x82104d00, - 0x000000ff, 0x05fc0fc0, 0x05fc0e34, 0x445c0000, + 0x000000ff, 0x05000847, 0x0500001a, 0x4c000000, + 0x0501f82e, 0x5c000000, 0x44080000, 0x80102000, + 0x80000000, 0x805cb840, 0x82104d00, 0x000000ff, + 0x0500083c, 0x0500000f, 0x50641800, 0x440c0000, + 0x80000000, 0x80102000, 0x8064c800, 0x805cb840, + 0x05fe07f6, 0x82104d00, 0x000000ff, 0x05000831, + 0x05000004, 0x48102817, 0x802041c0, 0x05060d12, + 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x1c01f000, + 0x82100500, 0x000000ff, 0x805c0400, 0x82000480, + 0x00000200, 0x05fc17d4, 0x6108b800, 0x82600d40, + 0x00008040, 0x05fdf7d0, 0x800001c0, 0x05000006, + 0x80041c80, 0x05001004, 0x05000003, 0x40000800, + 0x8408155c, 0x1c01f000, 0x59a800bf, 0x800018c4, + 0x800010ca, 0x800000cc, 0x800c0400, 0x80081400, + 0x59940024, 0x61a01807, 0x800c1c80, 0x05021002, + 0x61a01807, 0x5994002f, 0x800c0400, 0x82001c80, + 0x000007d0, 0x05001002, 0x6140000f, 0x4c080000, + 0x0501f8b6, 0x5c001000, 0x80081400, 0x1c01f000, + 0x4813c857, 0x5c036000, 0x4db00000, 0x49b3c857, + 0x40001800, 0x58140000, 0x8c000502, 0x05000009, + 0x58140821, 0x80040800, 0x48042821, 0x4807c857, + 0x8400054a, 0x48002800, 0x80000580, 0x0501f00e, + 0x82102500, 0x000003ff, 0x80204000, 0x58140014, + 0x80000000, 0x90000503, 0x48002814, 0x05000003, + 0x400c0000, 0x0501f002, 0x5814000d, 0x80000540, + 0x4803c857, 0x1c01f000, 0x42002800, 0x00112489, + 0x58140000, 0x8c00050a, 0x0500002f, 0x8c000502, + 0x0502002d, 0x4c5c0000, 0x5814b821, 0x49782821, + 0x8400050a, 0x48002800, 0x58142017, 0x4813c857, + 0x5814000d, 0x80100400, 0x41784000, 0x42000800, + 0x0b000001, 0x44040000, 0x80000000, 0x80102000, + 0x82104d00, 0x000000ff, 0x05fc0fca, 0x05fc0e4a, + 0x4c000000, 0x05fdffb1, 0x5c000000, 0x44080000, 0x80000000, 0x80102000, 0x82104d00, 0x000000ff, - 0x05fc0fb9, 0x05fc0e2d, 0x48102817, 0x802041c0, - 0x05060c5a, 0x405c2000, 0x600c1800, 0x60a01100, - 0x0521f828, 0x5c00b800, 0x1c01f000, 0x1c01f000, - 0x59a800b5, 0x8c000530, 0x05fe07fe, 0x4c080000, - 0x60101000, 0x0501f849, 0x5c001000, 0x4201d000, - 0x00028b0a, 0x0539f844, 0x4c080000, 0x60201000, - 0x0501f842, 0x5c001000, 0x4201d000, 0x00028b0a, - 0x0539f83d, 0x4c080000, 0x60401000, 0x0501f83b, - 0x5c001000, 0x4201d000, 0x00028b0a, 0x0539f836, - 0x05fdf7e8, 0x8c00050c, 0x59a808b5, 0x05020003, - 0x84040d30, 0x0501f005, 0x84040d70, 0x480750b5, - 0x60001000, 0x0501f02d, 0x480750b5, 0x916c0507, - 0x0c01f001, 0x00100805, 0x001007f7, 0x001007f7, - 0x001007e5, 0x001007fe, 0x001007f7, 0x001007f7, - 0x001007fe, 0x59c40801, 0x82040d00, 0x00018000, - 0x82040580, 0x00018000, 0x0500000a, 0x82040580, - 0x00010000, 0x05000004, 0x42001000, 0x42004000, - 0x0501f006, 0x42001000, 0x22002000, 0x0501f003, - 0x42001000, 0x12001000, 0x0501f015, 0x59a800b5, - 0x8c000534, 0x05020004, 0x42001000, 0x74057005, - 0x0501f80f, 0x1c01f000, 0x59a800b5, 0x8c000534, - 0x05020004, 0x42001000, 0x74057005, 0x0501f008, - 0x1c01f000, 0x1c01f000, 0x9008151c, 0x82081540, - 0x001c0000, 0x480bc013, 0x1c01f000, 0x59a800b5, - 0x8c000530, 0x05000002, 0x84081570, 0x480b50b5, - 0x8c000530, 0x05020005, 0x82081500, 0x00007000, - 0x80081114, 0x05fdfff1, 0x1c01f000, 0x40001800, - 0x800c18c2, 0x800c0400, 0x800c18c6, 0x800c0400, - 0x800c18c2, 0x800c0400, 0x800c190e, 0x800c0400, - 0x80000112, 0x1c01f000, 0x41780000, 0x50041800, - 0x800c0400, 0x80040800, 0x80102040, 0x05fe07fc, - 0x80080500, 0x80000540, 0x1c01f000, 0x6002f000, - 0x41780000, 0x41780800, 0x41781000, 0x41781800, - 0x41782000, 0x41782800, 0x41783000, 0x41783800, - 0x41784000, 0x41784800, 0x41785000, 0x41785800, - 0x41786000, 0x41786800, 0x41787000, 0x41787800, - 0x41788000, 0x41788800, 0x41789000, 0x41789800, - 0x4178a000, 0x4178a800, 0x4178b000, 0x4178b800, - 0x4178c000, 0x4178c800, 0x4178d000, 0x4178d800, - 0x4178e000, 0x4178e800, 0x4178f000, 0x4178f800, - 0x41790000, 0x41790800, 0x41791000, 0x41791800, - 0x41792000, 0x41792800, 0x41793000, 0x41793800, - 0x41794000, 0x41794800, 0x41795000, 0x41795800, - 0x41796000, 0x41796800, 0x41797000, 0x41797800, - 0x41798000, 0x41798800, 0x41799000, 0x41799800, - 0x4179a000, 0x6001a960, 0x60c9b17e, 0x4179b800, - 0x4179c800, 0x4179c000, 0x4179d000, 0x4179d800, - 0x4179e000, 0x4179e800, 0x4179f000, 0x4179f800, - 0x417a0000, 0x417a0800, 0x417a1000, 0x417a1800, + 0x05fc0fc0, 0x05fc0e40, 0x445c0000, 0x80000000, + 0x80102000, 0x82104d00, 0x000000ff, 0x05fc0fb9, + 0x05fc0e39, 0x48102817, 0x802041c0, 0x05060c9a, + 0x405c2000, 0x600c1800, 0x60a01100, 0x0521f996, + 0x5c00b800, 0x1c01f000, 0x1c01f000, 0x59a800ba, + 0x8c000530, 0x05fe07fe, 0x4c080000, 0x60101000, + 0x0501f849, 0x5c001000, 0x4201d000, 0x00028b0a, + 0x0539fc80, 0x4c080000, 0x60201000, 0x0501f842, + 0x5c001000, 0x4201d000, 0x00028b0a, 0x0539fc79, + 0x4c080000, 0x60401000, 0x0501f83b, 0x5c001000, + 0x4201d000, 0x00028b0a, 0x0539fc72, 0x05fdf7e8, + 0x8c00050c, 0x59a808ba, 0x05020003, 0x84040d30, + 0x0501f005, 0x84040d70, 0x480750ba, 0x60001000, + 0x0501f02d, 0x480750ba, 0x916c0507, 0x0c01f001, + 0x00100834, 0x00100826, 0x00100826, 0x00100814, + 0x0010082d, 0x00100826, 0x00100826, 0x0010082d, + 0x59c40801, 0x82040d00, 0x00018000, 0x82040580, + 0x00018000, 0x0500000a, 0x82040580, 0x00010000, + 0x05000004, 0x42001000, 0x42004000, 0x0501f006, + 0x42001000, 0x22002000, 0x0501f003, 0x42001000, + 0x12001000, 0x0501f015, 0x59a800ba, 0x8c000534, + 0x05020004, 0x42001000, 0x74057005, 0x0501f80f, + 0x1c01f000, 0x59a800ba, 0x8c000534, 0x05020004, + 0x42001000, 0x74057005, 0x0501f008, 0x1c01f000, + 0x1c01f000, 0x9008151c, 0x82081540, 0x001c0000, + 0x480bc013, 0x1c01f000, 0x59a800ba, 0x8c000530, + 0x05000002, 0x84081570, 0x480b50ba, 0x8c000530, + 0x05020005, 0x82081500, 0x00007000, 0x80081114, + 0x05fdfff1, 0x1c01f000, 0x40001800, 0x800c18c2, + 0x800c0400, 0x800c18c6, 0x800c0400, 0x800c18c2, + 0x800c0400, 0x800c190e, 0x800c0400, 0x80000112, + 0x1c01f000, 0x41780000, 0x50041800, 0x800c0400, + 0x80040800, 0x80102040, 0x05fe07fc, 0x80080500, + 0x80000540, 0x1c01f000, 0x6002f000, 0x41780000, + 0x41780800, 0x41781000, 0x41781800, 0x41782000, + 0x41782800, 0x41783000, 0x41783800, 0x41784000, + 0x41784800, 0x41785000, 0x41785800, 0x41786000, + 0x41786800, 0x41787000, 0x41787800, 0x41788000, + 0x41788800, 0x41789000, 0x41789800, 0x4178a000, + 0x4178a800, 0x4178b000, 0x4178b800, 0x4178c000, + 0x4178c800, 0x4178d000, 0x4178d800, 0x4178e000, + 0x4178e800, 0x4178f000, 0x4178f800, 0x41790000, + 0x41790800, 0x41791000, 0x41791800, 0x41792000, + 0x41792800, 0x41793000, 0x41793800, 0x41794000, + 0x41794800, 0x41795000, 0x41795800, 0x41796000, + 0x41796800, 0x41797000, 0x41797800, 0x41798000, + 0x41798800, 0x41799000, 0x41799800, 0x4179a000, + 0x6001a960, 0x60c9b17e, 0x4179b800, 0x4179c800, + 0x4179c000, 0x4179d000, 0x4179d800, 0x4179e000, + 0x4179e800, 0x4179f000, 0x4179f800, 0x42020000, + 0x00111cdc, 0x417a0800, 0x417a1000, 0x417a1800, 0x417a2000, 0x600228c2, 0x417a3000, 0x417a3800, 0x417a4000, 0x417a4800, 0x417a5000, 0x417a5800, 0x417a6000, 0x417a6800, 0x417a7000, 0x417a7800, 0x417a8000, 0x417a8800, 0x417a9000, 0x417a9800, 0x417ae800, 0x417af800, 0x600300f8, 0x42031000, - 0x0010e38c, 0x607f1960, 0x60df2160, 0x42032800, - 0x0010e2f9, 0x42033000, 0x000211b0, 0x42034000, - 0x0010dceb, 0x42033800, 0x0010dd0a, 0x42034800, - 0x0010e063, 0x42035000, 0x0010dc00, 0x42035800, - 0x0010d400, 0x417b6000, 0x600368de, 0x6003c860, - 0x600371fe, 0x6003797e, 0x600380ee, 0x60038880, - 0x600390c0, 0x42039800, 0x001102fe, 0x6003a0ec, - 0x6003a8e8, 0x6003b0e4, 0x6003b8e2, 0x6003c0e0, - 0x6003d000, 0x4203e800, 0x000201e5, 0x417bd800, - 0x1c01f000, 0x6407c830, 0x640fc831, 0x6413c832, - 0x6427c833, 0x6417c834, 0x641bc835, 0x641fc836, - 0x6423c837, 0x6403c838, 0x642bc839, 0x642fc83a, - 0x640bc83b, 0x1c01f000, 0x42002800, 0x00140000, - 0x59a800ca, 0x8c000500, 0x05000003, 0x42002800, - 0x0013a000, 0x46002800, 0xaaaaaaaa, 0x60283000, - 0x80183040, 0x05fe07ff, 0x50140000, 0x82000580, - 0xaaaaaaaa, 0x05020013, 0x41782000, 0x40140800, - 0x82102400, 0x00010000, 0x80042c04, 0x46002800, - 0x55555555, 0x60283000, 0x80183040, 0x05fe07ff, - 0x50140000, 0x82000580, 0x55555555, 0x05020005, - 0x50040000, 0x82000580, 0x55555555, 0x05fe07f1, - 0x59a800ca, 0x8c000500, 0x05000005, 0x82140580, - 0x0013a000, 0x05020005, 0x0501f005, 0x82140580, - 0x00140000, 0x05000002, 0x6407c820, 0x80142840, - 0x4817c857, 0x4817c861, 0x4817500a, 0x1c01f000, - 0x4817c857, 0x4c5c0000, 0x4c600000, 0x0565f814, - 0x05000030, 0x4817c857, 0x606c08f6, 0x50040800, - 0x8c04053e, 0x0500002b, 0x4817c857, 0x850e1d70, - 0x4c040000, 0x4c140000, 0x0505fdc7, 0x5c002800, - 0x5c000800, 0x59e0b81a, 0x8204b500, 0x000007ff, - 0x8058b000, 0x485b50a4, 0x600008f4, 0x58042029, - 0x5804302a, 0x82102500, 0xfffffff8, 0x82183500, - 0xfffffff8, 0x40100000, 0x8018c480, 0x8060c104, - 0x80600417, 0x4803509f, 0x497b50a3, 0x9058b41f, - 0x8058090a, 0x8004c418, 0x8060c040, 0x805cc418, - 0x485f50a0, 0x486350a1, 0x805c2840, 0x59a800ca, - 0x8c000500, 0x05000007, 0x59a8000a, 0x82000580, - 0x00139fff, 0x05020003, 0x4817500a, 0x4817c857, - 0x64030000, 0x5c00c000, 0x5c00b800, 0x1c01f000, - 0x59a80847, 0x800409c0, 0x05020006, 0x49781c0c, - 0x64081a0c, 0x641c1804, 0x59a8003d, 0x48001805, - 0x4c0c0000, 0x05fdfc94, 0x5c001800, 0x800409c0, - 0x05020002, 0x80040800, 0x48041806, 0x1c01f000, - 0x61fcb001, 0x42024800, 0x0010e512, 0x42000000, - 0x0010f212, 0x48024809, 0x90000410, 0x91264c0d, - 0x8058b040, 0x05fe07fc, 0x1c01f000, 0x59a8080c, - 0x4006d000, 0x6006b800, 0x59a8180a, 0x480fc857, - 0x41783000, 0x90041418, 0x90082418, 0x40100000, - 0x800c0480, 0x05001020, 0x8d0c0530, 0x0500000b, - 0x59a800a1, 0x80000482, 0x05001008, 0x40100000, - 0x59a828a0, 0x80140480, 0x05021004, 0x59a810a1, - 0x80081000, 0x05fdf7f1, 0x801831c0, 0x0502000d, - 0x59a800ca, 0x8c000500, 0x05000006, 0x42000000, - 0x0013a000, 0x80000484, 0x0500100e, 0x0501f005, - 0x42000000, 0x00140000, 0x80000484, 0x05001009, - 0x44080800, 0x40080800, 0x40101000, 0x815eb800, - 0x05fdf7de, 0x45780800, 0x495f5048, 0x1c01f000, - 0x42001000, 0x00140000, 0x59a800ca, 0x8c000500, - 0x05000003, 0x42001000, 0x0013a000, 0x80183040, - 0x05fdf7d2, 0x835c0480, 0x00000104, 0x0500100a, - 0x496bc857, 0x815eb840, 0x416a5800, 0x592ed000, - 0x497a5800, 0x497a5801, 0x497a5808, 0x812e59c0, - 0x1c01f000, 0x42000000, 0x0010e441, 0x0561fe5d, - 0x417a5800, 0x05fdf7fa, 0x815eb840, 0x05001009, - 0x416a5800, 0x492fc857, 0x592ed000, 0x497a5800, + 0x0011232d, 0x607f1960, 0x60df2160, 0x42032800, + 0x00112293, 0x42033000, 0x000211f1, 0x42034000, + 0x00111c71, 0x42033800, 0x00111c90, 0x42034800, + 0x00111ffd, 0x42035000, 0x00111b80, 0x4a0350ac, + 0x000007f0, 0x4a0350ad, 0x00000800, 0x4a03500d, + 0x0010e380, 0x42035800, 0x0010db80, 0x41790000, + 0x417b6000, 0x600368de, 0x6003c860, 0x600371fe, + 0x6003797e, 0x600380ee, 0x60038880, 0x600390c0, + 0x42039800, 0x001142a2, 0x6003a0ec, 0x6003a8e8, + 0x6003b0e4, 0x6003b8e2, 0x6003c0e0, 0x6003d000, + 0x4203e800, 0x000201ed, 0x417bd800, 0x1c01f000, + 0x6407c830, 0x640fc831, 0x6413c832, 0x6427c833, + 0x6417c834, 0x641bc835, 0x641fc836, 0x6423c837, + 0x6403c838, 0x642bc839, 0x642fc83a, 0x640bc83b, + 0x1c01f000, 0x42002800, 0x00140000, 0x59a800cf, + 0x8c000500, 0x05000003, 0x42002800, 0x0013a000, + 0x46002800, 0xaaaaaaaa, 0x60283000, 0x80183040, + 0x05fe07ff, 0x50140000, 0x82000580, 0xaaaaaaaa, + 0x05020013, 0x41782000, 0x40140800, 0x82102400, + 0x00010000, 0x80042c04, 0x46002800, 0x55555555, + 0x60283000, 0x80183040, 0x05fe07ff, 0x50140000, + 0x82000580, 0x55555555, 0x05020005, 0x50040000, + 0x82000580, 0x55555555, 0x05fe07f1, 0x59a800cf, + 0x8c000500, 0x05000005, 0x82140580, 0x0013a000, + 0x05020005, 0x0501f005, 0x82140580, 0x00140000, + 0x05000002, 0x6407c820, 0x80142840, 0x4817c857, + 0x4817c861, 0x4817500a, 0x1c01f000, 0x4817c857, + 0x4c5c0000, 0x4c600000, 0x0565ff58, 0x05000030, + 0x4817c857, 0x606c08f6, 0x50040800, 0x8c04053e, + 0x0500002b, 0x4817c857, 0x850e1d70, 0x4c040000, + 0x4c140000, 0x0505fe01, 0x5c002800, 0x5c000800, + 0x59e0b81a, 0x8204b500, 0x000007ff, 0x8058b000, + 0x485b50a7, 0x600008f4, 0x58042029, 0x5804302a, + 0x82102500, 0xfffffff8, 0x82183500, 0xfffffff8, + 0x40100000, 0x8018c480, 0x8060c104, 0x80600417, + 0x480350a2, 0x497b50a6, 0x9058b41f, 0x8058090a, + 0x8004c418, 0x8060c040, 0x805cc418, 0x485f50a3, + 0x486350a4, 0x805c2840, 0x59a800cf, 0x8c000500, + 0x05000007, 0x59a8000a, 0x82000580, 0x00139fff, + 0x05020003, 0x4817500a, 0x4817c857, 0x64030000, + 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x59a8084a, + 0x800409c0, 0x05020006, 0x49781c0c, 0x64081a0c, + 0x641c1804, 0x59a80040, 0x48001805, 0x4c0c0000, + 0x05fdfc94, 0x5c001800, 0x800409c0, 0x05020002, + 0x80040800, 0x48041806, 0x1c01f000, 0x61fcb001, + 0x42024800, 0x001124b6, 0x42000000, 0x001131b6, + 0x48024809, 0x90000410, 0x91264c0d, 0x8058b040, + 0x05fe07fc, 0x1c01f000, 0x59a8080c, 0x4006d000, + 0x6006b800, 0x59a8180a, 0x480fc857, 0x41783000, + 0x90041418, 0x90082418, 0x40100000, 0x800c0480, + 0x05001020, 0x8d0c0530, 0x0500000b, 0x59a800a4, + 0x80000482, 0x05001008, 0x40100000, 0x59a828a3, + 0x80140480, 0x05021004, 0x59a810a4, 0x80081000, + 0x05fdf7f1, 0x801831c0, 0x0502000d, 0x59a800cf, + 0x8c000500, 0x05000006, 0x42000000, 0x0013a000, + 0x80000484, 0x0500100e, 0x0501f005, 0x42000000, + 0x00140000, 0x80000484, 0x05001009, 0x44080800, + 0x40080800, 0x40101000, 0x815eb800, 0x05fdf7de, + 0x45780800, 0x495f504b, 0x1c01f000, 0x42001000, + 0x00140000, 0x59a800cf, 0x8c000500, 0x05000003, + 0x42001000, 0x0013a000, 0x80183040, 0x05fdf7d2, + 0x835c0480, 0x00000104, 0x0500100a, 0x496bc857, + 0x815eb840, 0x416a5800, 0x592ed000, 0x497a5800, 0x497a5801, 0x497a5808, 0x812e59c0, 0x1c01f000, - 0x42000000, 0x0010e441, 0x0561fe4e, 0x417ab800, - 0x417a5800, 0x05fdf7f9, 0x492fc857, 0x496a5800, - 0x412ed000, 0x815eb800, 0x59c80000, 0x82000540, - 0x00001200, 0x48039000, 0x1c01f000, 0x492fc857, - 0x812e59c0, 0x05000007, 0x592c0001, 0x497a5801, - 0x4c000000, 0x05fdfff1, 0x5c025800, 0x05fdf7f9, - 0x1c01f000, 0x42000000, 0x0010e441, 0x0561fe38, - 0x80025d80, 0x1c01f000, 0x4807c856, 0x42007000, - 0x000211a7, 0x64007000, 0x59e00003, 0x82000540, - 0x00008080, 0x4803c003, 0x4a03b805, 0x90000001, - 0x59dc0006, 0x4a03b805, 0x70000000, 0x59dc0006, - 0x4a03b805, 0x30000000, 0x59dc0006, 0x4a03b805, - 0x80000000, 0x6100b000, 0x497bb807, 0x8058b040, - 0x05fe07fe, 0x4a03b805, 0x30000000, 0x59dc0006, - 0x4a03b805, 0x60000001, 0x59dc0006, 0x4a03b805, - 0x60000003, 0x59dc0006, 0x4a03b805, 0x60000005, - 0x59dc0006, 0x4a03b805, 0x60000007, 0x59dc0006, - 0x4a03b805, 0x70000001, 0x59dc0006, 0x4a03b805, - 0x30000002, 0x6100b000, 0x497bb807, 0x8058b040, - 0x05fe07fe, 0x4a03b805, 0x30000000, 0x59dc0006, - 0x4a03b805, 0x60000001, 0x4803c856, 0x05fdffa3, - 0x05fc0bfa, 0x42001000, 0x0010e387, 0x452c1000, - 0x64065801, 0x4a025802, 0x00000100, 0x4a025809, - 0x00108adc, 0x497a580a, 0x497a580b, 0x497a580c, - 0x05fdff96, 0x05fc0bed, 0x42001000, 0x0010e388, + 0x42000000, 0x001123e2, 0x0565fda1, 0x417a5800, + 0x05fdf7fa, 0x815eb840, 0x05001009, 0x416a5800, + 0x492fc857, 0x592ed000, 0x497a5800, 0x497a5801, + 0x497a5808, 0x812e59c0, 0x1c01f000, 0x42000000, + 0x001123e2, 0x0565fd92, 0x417ab800, 0x417a5800, + 0x05fdf7f9, 0x492fc857, 0x496a5800, 0x412ed000, + 0x815eb800, 0x59c80000, 0x82000540, 0x00001200, + 0x48039000, 0x1c01f000, 0x492fc857, 0x812e59c0, + 0x05000007, 0x592c0001, 0x497a5801, 0x4c000000, + 0x05fdfff1, 0x5c025800, 0x05fdf7f9, 0x1c01f000, + 0x42000000, 0x001123e2, 0x0565fd7c, 0x80025d80, + 0x1c01f000, 0x80040840, 0x41783000, 0x90081498, + 0x80040482, 0x05001003, 0x90041401, 0x0501f018, + 0x4c080000, 0x60043000, 0x90081c98, 0x80040483, + 0x05021006, 0x480c1000, 0x49781001, 0x400c1000, + 0x80183000, 0x05fdf7f9, 0xa01abc17, 0x59a8084b, + 0x80180c01, 0x4807504b, 0x4d2c0000, 0x400a5800, + 0x0555f86e, 0x5c025800, 0x05020002, 0x480b500c, + 0x49681000, 0x49781001, 0x5c02d000, 0x1c01f000, + 0x4807c856, 0x42007000, 0x000211e8, 0x64007000, + 0x59e00003, 0x82000540, 0x00008080, 0x4803c003, + 0x4a03b805, 0x90000001, 0x59dc0006, 0x4a03b805, + 0x70000000, 0x59dc0006, 0x4a03b805, 0x30000000, + 0x59dc0006, 0x4a03b805, 0x80000000, 0x6100b000, + 0x497bb807, 0x8058b040, 0x05fe07fe, 0x4a03b805, + 0x30000000, 0x59dc0006, 0x4a03b805, 0x60000001, + 0x59dc0006, 0x4a03b805, 0x60000003, 0x59dc0006, + 0x4a03b805, 0x60000005, 0x59dc0006, 0x4a03b805, + 0x60000007, 0x59dc0006, 0x4a03b805, 0x70000001, + 0x59dc0006, 0x4a03b805, 0x30000002, 0x6100b000, + 0x497bb807, 0x8058b040, 0x05fe07fe, 0x4a03b805, + 0x30000000, 0x59dc0006, 0x4a03b805, 0x60000001, + 0x4803c856, 0x05fdff84, 0x05fc0bdf, 0x42001000, + 0x00112322, 0x452c1000, 0x64065801, 0x4a025802, + 0x00000100, 0x4a025809, 0x00108f9a, 0x497a580a, + 0x497a580b, 0x497a580c, 0x05fdff77, 0x05fc0bd2, + 0x42001000, 0x00112323, 0x452c1000, 0x64025801, + 0x4a025802, 0x00000100, 0x4a025809, 0x0010142b, + 0x497a5803, 0x497a5807, 0x497a5808, 0x497a580a, + 0x05fdff69, 0x05fc0bc4, 0x42001000, 0x00112324, 0x452c1000, 0x64025801, 0x4a025802, 0x00000100, - 0x4a025809, 0x001013bc, 0x497a5803, 0x497a5807, - 0x497a5808, 0x497a580a, 0x05fdff88, 0x05fc0bdf, - 0x42001000, 0x0010e389, 0x452c1000, 0x64025801, - 0x4a025802, 0x00000100, 0x4a025809, 0x001013e0, + 0x4a025809, 0x0010144f, 0x497a5803, 0x497a5807, + 0x497a5808, 0x497a580a, 0x05fdff5b, 0x05fc0bb6, + 0x497a5806, 0x42001000, 0x00112325, 0x492c1001, + 0x64001000, 0x05fdff54, 0x05fc0baf, 0x497a5806, + 0x42001000, 0x00111b9c, 0x452c1000, 0x64025801, + 0x4a025802, 0x00000100, 0x4a025809, 0x00107d74, 0x497a5803, 0x497a5807, 0x497a5808, 0x497a580a, - 0x05fdff7a, 0x05fc0bd1, 0x497a5806, 0x42001000, - 0x0010dc1a, 0x452c1000, 0x64025801, 0x4a025802, - 0x00000100, 0x4a025809, 0x001078b4, 0x497a5803, - 0x497a5807, 0x497a5808, 0x497a580a, 0x05fdff6b, - 0x05fc0bc2, 0x497a5806, 0x492f500d, 0x64025801, - 0x4a025802, 0x00000100, 0x4a025809, 0x001078bf, - 0x497a5803, 0x497a5807, 0x497a5808, 0x497a580a, - 0x497a580b, 0x05fdff5d, 0x05fc0bb4, 0x497a5806, - 0x492f500e, 0x64025801, 0x4a025802, 0x00000100, - 0x4a025809, 0x001078bf, 0x497a5803, 0x497a5807, - 0x497a5808, 0x497a580a, 0x497a580b, 0x1c01f000, - 0x42001000, 0x00020030, 0x0535fc87, 0x0551ff0b, - 0x58380807, 0x60042000, 0x58040801, 0x800409c0, - 0x05000003, 0x80102000, 0x05fdf7fc, 0x0561f8fc, - 0x0502000c, 0x42000000, 0x0010e3a9, 0x0561fd99, - 0x0551ff09, 0x60040800, 0x42001000, 0x00020030, - 0x0535fc4a, 0x42007000, 0x000211a7, 0x0001f039, - 0x4a03b805, 0x30000002, 0x59dc0006, 0x4807b800, - 0x480bb801, 0x42007000, 0x000211a7, 0x65007002, - 0x480c7008, 0x58380007, 0x90000408, 0x48007003, - 0x640c7000, 0x4803b803, 0x0001f05a, 0x58380802, - 0x600011fe, 0x82040480, 0x0000ff00, 0x05021003, - 0x40041000, 0x80000580, 0x48007002, 0x480bb802, - 0x59dc0006, 0x4a03b805, 0x10000000, 0x1c01f000, - 0x4a03b805, 0x30000001, 0x58386001, 0x58301009, - 0x4807c857, 0x4803c857, 0x4833c857, 0x4a006002, - 0x00000200, 0x64007000, 0x800811c0, 0x00000036, - 0x0001f090, 0x4833c857, 0x4807c857, 0x5830080a, - 0x4c040000, 0x4d2c0000, 0x40325800, 0x05fdff18, - 0x5c025800, 0x5c000800, 0x4807c857, 0x0001f092, - 0x59e00017, 0x8c00050c, 0x05020028, 0x59a838a2, - 0xa01c459e, 0x05000025, 0x59a8209f, 0x59a808a3, - 0x59a848a4, 0x40245000, 0x9004051f, 0x81782800, - 0x801428c0, 0x8004010a, 0x80101400, 0x50083000, - 0x80140506, 0x0502000c, 0x80040800, 0x80244840, - 0x05000012, 0x80280581, 0x05000005, 0x80142942, - 0x9004051f, 0x05fe07f7, 0x05fdf7f3, 0x41780800, - 0x05fdf7ee, 0x59a818a0, 0x800400c4, 0x800c1c00, - 0x580c0003, 0x8c000500, 0x05000009, 0x80204040, - 0x05fe07ee, 0x80040800, 0x80280581, 0x05020002, - 0x41780800, 0x480750a3, 0x1c01f000, 0x80142880, - 0x80140506, 0x44001000, 0x80042800, 0x80280585, - 0x05020002, 0x41782800, 0x481750a3, 0x801c3840, - 0x481f50a2, 0x0001f0a3, 0x59a8189f, 0x8004110a, - 0x9004051f, 0x80081c03, 0x81782000, 0x801020c0, - 0x500c0000, 0x80100d00, 0x05020006, 0x80100540, - 0x59a808a2, 0x44001800, 0x80040800, 0x480750a2, - 0x1c01f000, 0x4df00000, 0x4203e000, 0x50000000, - 0x835c0480, 0x00000104, 0x05fe1fb6, 0x5c03e000, - 0x1c01f000, 0x59dc0006, 0x8c000520, 0x05000009, - 0x00044e27, 0x59dc0006, 0x82000500, 0x00006000, - 0x05000004, 0x82000580, 0x00006000, 0x05fe07f9, - 0x1c01f000, 0x41781800, 0x58382005, 0x40300000, - 0x80100580, 0x05000007, 0x40101800, 0x58102000, - 0x801021c0, 0x05fe07fa, 0x4803c856, 0x0501f011, - 0x4833c857, 0x58302000, 0x49786000, 0x800c19c0, - 0x05020008, 0x801021c0, 0x05000003, 0x48107005, - 0x0501f008, 0x49787005, 0x49787004, 0x0501f005, - 0x48101800, 0x801021c0, 0x05020002, 0x480c7004, - 0x1c01f000, 0x4803c856, 0x4dc00000, 0x42007000, - 0x0010e38a, 0x64007400, 0x49787001, 0x600380ee, - 0x60080800, 0x59c00007, 0x4a038006, 0x60000001, - 0x59c00007, 0x4a038006, 0x60000003, 0x59c00007, - 0x4a038006, 0x60000005, 0x59c00007, 0x4a038006, - 0x60000007, 0x59c00007, 0x4a038006, 0x60000009, - 0x59c00007, 0x4a038006, 0x6000000b, 0x59c00007, - 0x4c040000, 0x0501f817, 0x5c000800, 0x4a038009, - 0xf4f60000, 0x91c38420, 0x80040840, 0x05fe07e6, - 0x600380ee, 0x6443c822, 0x640370e8, 0x0501f83c, - 0x4a0370ee, 0x00100000, 0x4a0370ee, 0x00080102, - 0x4a0370e9, 0x00000400, 0x4a0370e9, 0x00003a0f, - 0x640370e8, 0x640770e8, 0x5c038000, 0x1c01f000, - 0x59c00007, 0x4a038006, 0xe0000001, 0x61000800, - 0x497b8005, 0x59c00007, 0x80040840, 0x05fe07fd, - 0x4a038006, 0x30000001, 0x59c00007, 0x8c000508, - 0x05fe07fe, 0x59c00007, 0x4a038006, 0xb0000003, - 0x59c00007, 0x4a038006, 0xb0000005, 0x59c00007, - 0x4a038006, 0xb0000001, 0x59c00007, 0x4a038006, - 0xb0000009, 0x59c00007, 0x4a038006, 0xb0000007, - 0x59c00007, 0x4a038006, 0xb000000b, 0x59c00007, + 0x05fdff45, 0x05fc0ba0, 0x497a5806, 0x492f500f, + 0x64025801, 0x4a025802, 0x00000100, 0x4a025809, + 0x00107d7f, 0x497a5803, 0x497a5807, 0x497a5808, + 0x497a580a, 0x497a580b, 0x05fdff37, 0x05fc0b92, + 0x497a5806, 0x492f5010, 0x64025801, 0x4a025802, + 0x00000100, 0x4a025809, 0x00107d7f, 0x497a5803, + 0x497a5807, 0x497a5808, 0x497a580a, 0x497a580b, + 0x1c01f000, 0x42001000, 0x00020038, 0x0539f844, + 0x59a80c9f, 0x8c040502, 0x05020005, 0x0555fc43, + 0x59a80c9f, 0x84040d42, 0x4807549f, 0x58380807, + 0x60042000, 0x58040801, 0x800409c0, 0x05000003, + 0x80102000, 0x05fdf7fc, 0x0561ffe3, 0x0502000b, + 0x42000000, 0x0011234a, 0x0565fcb1, 0x60040800, + 0x42001000, 0x00020038, 0x0539f802, 0x42007000, + 0x000211e8, 0x0001f041, 0x4a03b805, 0x30000002, + 0x59dc0006, 0x4807b800, 0x480bb801, 0x42007000, + 0x000211e8, 0x65007002, 0x480c7008, 0x58380007, + 0x90000408, 0x48007003, 0x640c7000, 0x4803b803, + 0x0001f062, 0x58380802, 0x600011fe, 0x82040480, + 0x0000ff00, 0x05021003, 0x40041000, 0x80000580, + 0x48007002, 0x480bb802, 0x59dc0006, 0x4a03b805, + 0x10000000, 0x1c01f000, 0x4a03b805, 0x30000001, + 0x58386001, 0x58301009, 0x4807c857, 0x4803c857, + 0x4833c857, 0x4a006002, 0x00000200, 0x64007000, + 0x800811c0, 0x0000003e, 0x0001f098, 0x4833c857, + 0x4807c857, 0x5830080a, 0x4c040000, 0x4d2c0000, + 0x40325800, 0x05fdfeed, 0x5c025800, 0x5c000800, + 0x4807c857, 0x0001f09a, 0x59e00017, 0x8c00050c, + 0x05020028, 0x59a838a5, 0xa01c459e, 0x05000025, + 0x59a820a2, 0x59a808a6, 0x59a848a7, 0x40245000, + 0x9004051f, 0x81782800, 0x801428c0, 0x8004010a, + 0x80101400, 0x50083000, 0x80140506, 0x0502000c, + 0x80040800, 0x80244840, 0x05000012, 0x80280581, + 0x05000005, 0x80142942, 0x9004051f, 0x05fe07f7, + 0x05fdf7f3, 0x41780800, 0x05fdf7ee, 0x59a818a3, + 0x800400c4, 0x800c1c00, 0x580c0003, 0x8c000500, + 0x05000009, 0x80204040, 0x05fe07ee, 0x80040800, + 0x80280581, 0x05020002, 0x41780800, 0x480750a6, + 0x1c01f000, 0x80142880, 0x80140506, 0x44001000, + 0x80042800, 0x80280585, 0x05020002, 0x41782800, + 0x481750a6, 0x801c3840, 0x481f50a5, 0x0001f0ab, + 0x59a818a2, 0x8004110a, 0x9004051f, 0x80081c03, + 0x81782000, 0x801020c0, 0x500c0000, 0x80100d00, + 0x05020006, 0x80100540, 0x59a808a5, 0x44001800, + 0x80040800, 0x480750a5, 0x1c01f000, 0x4df00000, + 0x4203e000, 0x50000000, 0x835c0480, 0x00000104, + 0x05fe1fb6, 0x5c03e000, 0x1c01f000, 0x59dc0006, + 0x8c000520, 0x05000009, 0x00044e5d, 0x59dc0006, + 0x82000500, 0x00006000, 0x05000004, 0x82000580, + 0x00006000, 0x05fe07f9, 0x1c01f000, 0x41781800, + 0x58382005, 0x40300000, 0x80100580, 0x05000007, + 0x40101800, 0x58102000, 0x801021c0, 0x05fe07fa, + 0x4803c856, 0x0501f011, 0x4833c857, 0x58302000, + 0x49786000, 0x800c19c0, 0x05020008, 0x801021c0, + 0x05000003, 0x48107005, 0x0501f008, 0x49787005, + 0x49787004, 0x0501f005, 0x48101800, 0x801021c0, + 0x05020002, 0x480c7004, 0x1c01f000, 0x4803c856, + 0x4dc00000, 0x42007000, 0x0011232b, 0x64007400, + 0x49787001, 0x600380ee, 0x60080800, 0x59c00007, 0x4a038006, 0x60000001, 0x59c00007, 0x4a038006, 0x60000003, 0x59c00007, 0x4a038006, 0x60000005, 0x59c00007, 0x4a038006, 0x60000007, 0x59c00007, - 0x4a038006, 0xe0000000, 0x1c01f000, 0x4c5c0000, - 0x4178b800, 0x0501f809, 0x5c00b800, 0x1c01f000, - 0x4803c856, 0x4c5c0000, 0x905cbd41, 0x0501f803, - 0x5c00b800, 0x1c01f000, 0x4803c856, 0x4dc00000, - 0x4c500000, 0x4c580000, 0x4c540000, 0x640370e8, - 0x805cb9c0, 0x05000009, 0x64138807, 0x4a0370f2, - 0x80000000, 0x59b800ea, 0x8c000510, 0x05000003, - 0x59b800e0, 0x05fdf7fc, 0x608380ee, 0x0501fd02, - 0x59c00007, 0x4a038006, 0x20000000, 0x59c00007, - 0x4a038006, 0x8000000a, 0x59c00007, 0x4a038006, - 0x8000000b, 0x59c00007, 0x4a038006, 0x40000001, - 0x83c00580, 0x00007700, 0x05000003, 0x600380ee, - 0x05fdf7ef, 0x608380ee, 0x60000810, 0x59c00007, - 0x8c00051e, 0x05000006, 0x4a038006, 0x90000001, - 0x80040840, 0x05fe07fa, 0x05fdfa4c, 0x83c00580, - 0x00007700, 0x05000003, 0x600380ee, 0x05fdf7f3, - 0x4178a000, 0x805cb9c0, 0x0502000f, 0x6080b000, - 0x91b8ac20, 0x0561fd16, 0x640770fb, 0x4a037020, - 0x001012ac, 0x59a8005e, 0x82000500, 0x0000ffff, - 0x48037021, 0x4a037035, 0x00110202, 0x4a037038, - 0x001012a3, 0x640770fb, 0x6080b000, 0x91b8ac00, - 0x0561fd07, 0x6100b000, 0xb1b8ac00, 0x0561fd04, - 0x805cb9c0, 0x05020006, 0x4a0370e4, 0xaaaaaaaa, - 0x4a0370e5, 0xaaaaaaaa, 0x0501f005, 0x4a0370e4, - 0x82aa2a82, 0x4a0370e5, 0xaaaaa2aa, 0x4a0370e6, - 0xaaaaaaaa, 0x640370fb, 0x4a0370e6, 0xaaaaaaaa, - 0x608380ee, 0x4a038006, 0x90000000, 0x59c00007, - 0x8c00051e, 0x05fe0a19, 0x600380ee, 0x4a038006, - 0x90000000, 0x59c00007, 0x8c00051e, 0x05fe0a13, - 0x5c00a800, 0x5c00b000, 0x5c00a000, 0x5c038000, - 0x1c01f000, 0x4d300000, 0x4d2c0000, 0x4d340000, + 0x4a038006, 0x60000009, 0x59c00007, 0x4a038006, + 0x6000000b, 0x59c00007, 0x4c040000, 0x0501f817, + 0x5c000800, 0x4a038009, 0xf4f60000, 0x91c38420, + 0x80040840, 0x05fe07e6, 0x600380ee, 0x6443c822, + 0x640370e8, 0x0501f83c, 0x4a0370ee, 0x00100000, + 0x4a0370ee, 0x00080102, 0x4a0370e9, 0x00000400, + 0x4a0370e9, 0x00003a0f, 0x640370e8, 0x640770e8, + 0x5c038000, 0x1c01f000, 0x59c00007, 0x4a038006, + 0xe0000001, 0x61000800, 0x497b8005, 0x59c00007, + 0x80040840, 0x05fe07fd, 0x4a038006, 0x30000001, + 0x59c00007, 0x8c000508, 0x05fe07fe, 0x59c00007, + 0x4a038006, 0xb0000003, 0x59c00007, 0x4a038006, + 0xb0000005, 0x59c00007, 0x4a038006, 0xb0000001, + 0x59c00007, 0x4a038006, 0xb0000009, 0x59c00007, + 0x4a038006, 0xb0000007, 0x59c00007, 0x4a038006, + 0xb000000b, 0x59c00007, 0x4a038006, 0x60000001, + 0x59c00007, 0x4a038006, 0x60000003, 0x59c00007, + 0x4a038006, 0x60000005, 0x59c00007, 0x4a038006, + 0x60000007, 0x59c00007, 0x4a038006, 0xe0000000, + 0x1c01f000, 0x4c5c0000, 0x4178b800, 0x0501f809, + 0x5c00b800, 0x1c01f000, 0x4803c856, 0x4c5c0000, + 0x905cbd41, 0x0501f803, 0x5c00b800, 0x1c01f000, + 0x4803c856, 0x4dc00000, 0x4c500000, 0x4c580000, + 0x4c540000, 0x640370e8, 0x805cb9c0, 0x05000009, + 0x64138807, 0x4a0370f2, 0x80000000, 0x59b800ea, + 0x8c000510, 0x05000003, 0x59b800e0, 0x05fdf7fc, + 0x608380ee, 0x0501fd3e, 0x59c00007, 0x4a038006, + 0x20000000, 0x59c00007, 0x4a038006, 0x8000000a, + 0x59c00007, 0x4a038006, 0x8000000b, 0x59c00007, + 0x4a038006, 0x40000001, 0x83c00580, 0x00007700, + 0x05000003, 0x600380ee, 0x05fdf7ef, 0x608380ee, + 0x60000810, 0x59c00007, 0x8c00051e, 0x05000006, + 0x4a038006, 0x90000001, 0x80040840, 0x05fe07fa, + 0x05fdfa25, 0x83c00580, 0x00007700, 0x05000003, + 0x600380ee, 0x05fdf7f3, 0x4178a000, 0x805cb9c0, + 0x0502000f, 0x6080b000, 0x91b8ac20, 0x0565fc2f, + 0x640770fb, 0x4a037020, 0x0010004b, 0x59a80061, + 0x82000500, 0x0000ffff, 0x48037021, 0x4a037035, + 0x001141a6, 0x4a037038, 0x00100042, 0x640770fb, + 0x6080b000, 0x91b8ac00, 0x0565fc20, 0x6100b000, + 0xb1b8ac00, 0x0565fc1d, 0x805cb9c0, 0x05020006, + 0x4a0370e4, 0xaaaaaaaa, 0x4a0370e5, 0xaaaaaaaa, + 0x0501f005, 0x4a0370e4, 0x82aa2a82, 0x4a0370e5, + 0xaaaaa2aa, 0x4a0370e6, 0xaaaaaaaa, 0x640370fb, + 0x4a0370e6, 0xaaaaaaaa, 0x608380ee, 0x4a038006, + 0x90000000, 0x59c00007, 0x8c00051e, 0x05fe09f2, + 0x600380ee, 0x4a038006, 0x90000000, 0x59c00007, + 0x8c00051e, 0x05fe09ec, 0x5c00a800, 0x5c00b000, + 0x5c00a000, 0x5c038000, 0x1c01f000, 0x4d300000, + 0x4d2c0000, 0x4d340000, 0x4d400000, 0x4cfc0000, + 0x4d380000, 0x4d3c0000, 0x4d440000, 0x4d4c0000, + 0x4d480000, 0x4c5c0000, 0x4c600000, 0x4c640000, + 0x4d040000, 0x4cf40000, 0x4cf80000, 0x0001f8d0, + 0x5c01f000, 0x5c01e800, 0x5c020800, 0x5c00c800, + 0x5c00c000, 0x5c00b800, 0x5c029000, 0x5c029800, + 0x5c028800, 0x5c027800, 0x5c027000, 0x5c01f800, + 0x5c028000, 0x5c026800, 0x5c025800, 0x5c026000, + 0x1c01f000, 0x5c000000, 0x4c000000, 0x4803c857, + 0x4c540000, 0x4c500000, 0x4d240000, 0x4d200000, + 0x4d1c0000, 0x4d300000, 0x4d2c0000, 0x4d340000, 0x4d400000, 0x4cfc0000, 0x4d380000, 0x4d3c0000, 0x4d440000, 0x4d4c0000, 0x4d480000, 0x4c5c0000, 0x4c600000, 0x4c640000, 0x4d040000, 0x4cf40000, - 0x4cf80000, 0x0001f8c8, 0x5c01f000, 0x5c01e800, - 0x5c020800, 0x5c00c800, 0x5c00c000, 0x5c00b800, - 0x5c029000, 0x5c029800, 0x5c028800, 0x5c027800, - 0x5c027000, 0x5c01f800, 0x5c028000, 0x5c026800, - 0x5c025800, 0x5c026000, 0x1c01f000, 0x493bc857, - 0x0001f0f5, 0x83300500, 0x000000ff, 0x90000c88, - 0x05fe19e6, 0x0c01f023, 0x1c01f000, 0x82000d00, - 0xc2000038, 0x05fe09da, 0x05fdf9e0, 0x00000000, - 0x00000048, 0x00000054, 0x00000053, 0x00100c17, - 0x00100c42, 0x00100c30, 0x00100c5c, 0x00100c21, - 0x00100c2a, 0x00100c33, 0x00100c58, 0x00100ccf, - 0x00100c17, 0x00100cd1, 0x00100c17, 0x00100c17, - 0x00100cd4, 0x00100cd8, 0x00100ce9, 0x00100cfb, - 0x00100c84, 0x00100d02, 0x00100d0c, 0x00100c17, - 0x00100c17, 0x00100c5d, 0x00100c17, 0x05fdf9c3, - 0x00100c20, 0x00100d8d, 0x00100ca1, 0x00100cc1, - 0x00100c20, 0x00100c20, 0x00100c20, 0x001010e6, - 0x05fdf9ba, 0x4803c856, 0x59300004, 0x8c00053e, - 0x05020003, 0x61567000, 0x0009f000, 0x053dfc92, - 0x05fc07fd, 0x1c01f000, 0x4803c856, 0x0501f8e3, - 0x40002800, 0x41782000, 0x615a7000, 0x0009f000, - 0x4803c856, 0x615e7000, 0x0009f000, 0x4803c856, - 0x0531ff4c, 0x4a0370e5, 0x00800000, 0x40000000, - 0x59b800e5, 0x8c00052c, 0x05000007, 0x4a0370e5, + 0x4cf80000, 0x4c580000, 0x0001f86e, 0x5c00b000, + 0x5c01f000, 0x5c01e800, 0x5c020800, 0x5c00c800, + 0x5c00c000, 0x5c00b800, 0x5c029000, 0x5c029800, + 0x5c028800, 0x5c027800, 0x5c027000, 0x5c01f800, + 0x5c028000, 0x5c026800, 0x5c025800, 0x5c026000, + 0x5c023800, 0x5c024000, 0x5c024800, 0x5c00a000, + 0x5c00a800, 0x1c01f000, 0x493bc857, 0x0001f0fd, + 0x83300500, 0x000000ff, 0x90000c88, 0x05fe198e, + 0x0c01f026, 0x1c01f000, 0x82000d00, 0xc2000038, + 0x05fe0982, 0x05fdf988, 0x00000000, 0x00000048, + 0x00000054, 0x00000053, 0x00100cad, 0x00100cd8, + 0x00100cc6, 0x00100cf2, 0x00100cb7, 0x00100cc0, + 0x00100cc9, 0x00100cee, 0x00100d6b, 0x00100cad, + 0x00100d6d, 0x00100cad, 0x00100cad, 0x00100d70, + 0x00100d74, 0x00100d85, 0x00100d97, 0x00100d20, + 0x00100d9e, 0x00100da8, 0x00100cad, 0x00100cad, + 0x00100cf3, 0x00100cad, 0x00100cad, 0x00100d1a, + 0x00100cad, 0x05fdf968, 0x00100cb6, 0x00100e29, + 0x00100d3d, 0x00100d5d, 0x00100cb6, 0x00100cb6, + 0x00100cb6, 0x00101181, 0x05fdf95f, 0x4803c856, + 0x59300004, 0x8c00053e, 0x05020003, 0x61567000, + 0x0009f039, 0x0541f8ba, 0x05fc07fd, 0x1c01f000, + 0x4803c856, 0x0501f8e9, 0x40002800, 0x41782000, + 0x615a7000, 0x0009f039, 0x4803c856, 0x615e7000, + 0x0009f039, 0x4803c856, 0x0535faa6, 0x4a0370e5, 0x00800000, 0x40000000, 0x59b800e5, 0x8c00052c, - 0x05fe099a, 0x1c01f000, 0x4803c856, 0x59325809, - 0x812e59c0, 0x05000012, 0x59300008, 0x8c00051a, - 0x0502000b, 0x592c040c, 0x8c00051c, 0x05020003, - 0x4a026013, 0xffffffff, 0x59300004, 0x8c00053e, - 0x05020005, 0x61227000, 0x0009f000, 0x641e5a0a, - 0x05fdf7f8, 0x053dfc64, 0x05fc07fb, 0x1c01f000, - 0x4803c856, 0x83300500, 0x00ffffff, 0x0539f306, - 0x1c01f000, 0x4178b800, 0x59300817, 0x82040580, - 0xdeaddead, 0x05000011, 0x82040580, 0x00110228, - 0x05000009, 0x48066009, 0x497a6017, 0x0001f945, - 0x59300008, 0x60840800, 0x80040540, 0x48026008, - 0x0501f014, 0x48066009, 0x42026000, 0x00111ad0, - 0x0001f945, 0x0501f00f, 0x59a800de, 0x80000d40, - 0x4807c857, 0x05fc0965, 0x58041000, 0x49780800, - 0x59a800df, 0x80040580, 0x05020004, 0x497b50de, - 0x497b50df, 0x0501f002, 0x480b50de, 0x05fdf7ee, - 0x6503900d, 0x642370e5, 0x64126203, 0x1c01f000, - 0x4803c856, 0x813261c0, 0x05fc0954, 0x0551f842, + 0x05000007, 0x4a0370e5, 0x00800000, 0x40000000, + 0x59b800e5, 0x8c00052c, 0x05fe093f, 0x1c01f000, + 0x4803c856, 0x59325809, 0x812e59c0, 0x05000012, + 0x59300008, 0x8c00051a, 0x0502000b, 0x592c040c, + 0x8c00051c, 0x05020003, 0x4a026013, 0xffffffff, + 0x59300004, 0x8c00053e, 0x05020005, 0x61227000, + 0x0009f039, 0x641e5a0a, 0x05fdf7f8, 0x0541f88c, + 0x05fc07fb, 0x1c01f000, 0x4803c856, 0x83300500, + 0x00ffffff, 0x0539f724, 0x1c01f000, 0x4178b800, + 0x59300817, 0x82040580, 0xdeaddead, 0x05000011, + 0x82040580, 0x001141cc, 0x05000009, 0x48066009, + 0x497a6017, 0x0001f94d, 0x59300008, 0x60840800, + 0x80040540, 0x48026008, 0x0501f014, 0x48066009, + 0x42026000, 0x00115a74, 0x0001f94d, 0x0501f00f, + 0x59a800e3, 0x80000d40, 0x4807c857, 0x05fc090a, + 0x58041000, 0x49780800, 0x59a800e4, 0x80040580, + 0x05020004, 0x497b50e3, 0x497b50e4, 0x0501f002, + 0x480b50e3, 0x05fdf7ee, 0x6503900d, 0x642370e5, + 0x64126203, 0x1c01f000, 0x42000000, 0x0011235f, + 0x0565fa3e, 0x42000000, 0x00112484, 0x0565f238, + 0x4803c856, 0x813261c0, 0x05fc08f3, 0x0551fd2f, 0x0500000b, 0x59325809, 0x592c020c, 0x84000552, - 0x48025a0c, 0x0505f8a4, 0x59300004, 0x8c00053e, - 0x05020004, 0x417a7800, 0x054dfb83, 0x1c01f000, - 0x053dfc25, 0x05fc07fc, 0x1c01f000, 0x4c040000, + 0x48025a0c, 0x0505f87a, 0x59300004, 0x8c00053e, + 0x05020004, 0x417a7800, 0x0551f859, 0x1c01f000, + 0x0541f847, 0x05fc07fc, 0x1c01f000, 0x4c040000, 0x59b808ea, 0x90040d07, 0x90040583, 0x05000004, 0x42000000, 0x60000000, 0x0501f894, 0x5c000800, 0x1c01f000, 0x0501f8d7, 0x05000015, 0x59325809, 0x812e59c0, 0x05000012, 0x592c0208, 0x82000500, 0x000000ff, 0x90000da9, 0x0502000d, 0x59300203, 0x90000583, 0x05000008, 0x59300808, 0x84040d26, - 0x48066008, 0x0001f945, 0x6503900d, 0x642370e5, - 0x1c01f000, 0x053dfc04, 0x05fc07f8, 0x42000000, - 0x0010e44c, 0x0561fb23, 0x59880151, 0x80000000, - 0x48031151, 0x6503900d, 0x42000000, 0xc0000000, - 0x0001f13a, 0x4c5c0000, 0x4c600000, 0x4c640000, - 0x4200c800, 0x00110209, 0x6000b860, 0x6014c002, - 0x0531ffed, 0x4a0370e4, 0x02000000, 0x5c00c800, + 0x48066008, 0x0001f94d, 0x6503900d, 0x642370e5, + 0x1c01f000, 0x0541f826, 0x05fc07f8, 0x42000000, + 0x001123f0, 0x0565fa02, 0x59880154, 0x80000000, + 0x48031154, 0x6503900d, 0x42000000, 0xc0000000, + 0x0001f142, 0x4c5c0000, 0x4c600000, 0x4c640000, + 0x4200c800, 0x001141ad, 0x6000b860, 0x6014c002, + 0x0535fb41, 0x4a0370e4, 0x02000000, 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x4933c857, - 0x0005f7dc, 0x4933c857, 0x0501fbab, 0x1c01f000, - 0x41300800, 0x800409c0, 0x05fe0904, 0x05fdf8fc, - 0x42000000, 0x0010e44c, 0x0561fb02, 0x4933c857, - 0x813261c0, 0x05fc08fd, 0x0501f830, 0x40002800, - 0x0561fa66, 0x0501f88e, 0x05000006, 0x5932680a, - 0x59340200, 0x8c00050e, 0x59300416, 0x05520ad7, - 0x1c01f000, 0x42000000, 0x0010e44c, 0x0561faf1, - 0x4933c857, 0x813261c0, 0x05fc08ec, 0x0501f880, - 0x0500000a, 0x054dffd8, 0x05000008, 0x59325809, + 0x0009f010, 0x4933c857, 0x0501fbad, 0x1c01f000, + 0x41300800, 0x800409c0, 0x05fe08a3, 0x05fdf89b, + 0x42000000, 0x001123f0, 0x0565f9e1, 0x4933c857, + 0x813261c0, 0x05fc089c, 0x0501f830, 0x40002800, + 0x0565f942, 0x0501f88e, 0x05000006, 0x5932680a, + 0x59340200, 0x8c00050e, 0x59300416, 0x05520fd3, + 0x1c01f000, 0x42000000, 0x001123f0, 0x0565f9d0, + 0x4933c857, 0x813261c0, 0x05fc088b, 0x0501f880, + 0x0500000a, 0x0551fcc5, 0x05000008, 0x59325809, 0x592c020c, 0x84000544, 0x8400054e, 0x48025a0c, - 0x417a7800, 0x054dfb1c, 0x1c01f000, 0x485fc857, + 0x417a7800, 0x054dfff2, 0x1c01f000, 0x485fc857, 0x5c000000, 0x4d780000, 0x4203e000, 0x50000000, - 0x6014b900, 0x05fdf0dd, 0x4933c857, 0x913004a0, - 0x05fe18d6, 0x83300c00, 0x0010e4c1, 0x50040000, + 0x6014b900, 0x05fdf07c, 0x4933c857, 0x913004a0, + 0x05fe1875, 0x83300c00, 0x00112465, 0x50040000, 0x80000000, 0x05001002, 0x44000800, 0x1c01f000, 0x4933c857, 0x05fdf7f6, 0x4807c856, 0x59b800ea, 0x8c000510, 0x05fc07fd, 0x59b800e0, 0x4803c857, 0x1c01f000, 0x4803c856, 0x42000000, 0x10000000, - 0x41300800, 0x0501f019, 0x8c000510, 0x00000140, + 0x41300800, 0x0501f019, 0x8c000510, 0x00000148, 0x4c040000, 0x0501f808, 0x5c000800, 0x90100488, - 0x00001140, 0x4c040000, 0x05fdfeab, 0x5c000800, - 0x0001f140, 0x59b800e2, 0x59b820e2, 0x80100580, + 0x00001148, 0x4c040000, 0x05fdfe71, 0x5c000800, + 0x0001f148, 0x59b800e2, 0x59b820e2, 0x80100580, 0x05fe07fd, 0x80102114, 0x0501f001, 0x40101800, 0x800c190a, 0x9010051f, 0x900c1d1f, 0x800c2480, 0x9010251f, 0x1c01f000, 0x82000500, 0xf0000000, 0x82040d00, 0x0fffffff, 0x80040d40, 0x4807c857, - 0x42001000, 0x0010e38b, 0x50080000, 0x80000540, + 0x42001000, 0x0011232c, 0x50080000, 0x80000540, 0x05020004, 0x640f70e5, 0x4a0370e4, 0x00000300, 0x80000000, 0x44001000, 0x60001008, 0x59b800ea, 0x8c000510, 0x0500000b, 0x05fdffdf, 0x90100488, - 0x05001007, 0x4c040000, 0x4c080000, 0x05fdfe82, + 0x05001007, 0x4c040000, 0x4c080000, 0x05fdfe48, 0x5c001000, 0x5c000800, 0x0501f01c, 0x59b800ea, 0x8c000516, 0x05020019, 0x4a0370e4, 0x00300000, 0x480770e1, 0x600011fe, 0x80081040, 0x05000010, 0x59b808e4, 0x8c040528, 0x05fe07fc, 0x42001000, - 0x0010e38b, 0x50080000, 0x80000040, 0x05020004, - 0x640b70e5, 0x4a0370e4, 0x00000200, 0x05fc1877, + 0x0011232c, 0x50080000, 0x80000040, 0x05020004, + 0x640b70e5, 0x4a0370e4, 0x00000200, 0x05fc1816, 0x44001000, 0x8c04052c, 0x1c01f000, 0x41f80000, - 0x50000000, 0x05fdf871, 0x80081040, 0x05fe07d8, - 0x41f80000, 0x50000000, 0x05fdf86c, 0x4d380000, + 0x50000000, 0x05fdf810, 0x80081040, 0x05fe07d8, + 0x41f80000, 0x50000000, 0x05fdf80b, 0x4d380000, 0x59300c07, 0x90040589, 0x05020004, 0x611e7000, - 0x0009f800, 0x80000580, 0x5c027000, 0x1c01f000, - 0x4c500000, 0x59a80249, 0x8c000518, 0x05000006, + 0x0009f839, 0x80000580, 0x5c027000, 0x1c01f000, + 0x4c500000, 0x59a8024c, 0x8c000518, 0x05000006, 0x640b900d, 0x59c8a020, 0x640f900d, 0x59c80820, 0x0501f005, 0x6407900d, 0x59c8a020, 0x640b900d, 0x59c80820, 0x8c50052e, 0x05000002, 0x900409c0, - 0x82040d00, 0x0000ffff, 0x0531fd12, 0x5c00a000, - 0x1c01f000, 0x42000000, 0x0010e43e, 0x0561fa4d, - 0x05fdffe8, 0x05000052, 0x4933c857, 0x59300407, - 0x90000580, 0x0500004e, 0x59c82021, 0x6407900d, + 0x82040d00, 0x0000ffff, 0x0535f864, 0x5c00a000, + 0x1c01f000, 0x42000000, 0x001123df, 0x0565f92c, + 0x05fdffe8, 0x05000054, 0x4933c857, 0x59300407, + 0x90000580, 0x05000050, 0x59c82021, 0x6407900d, 0x59c82821, 0x82142d00, 0x0000ffff, 0x59325809, - 0x812e59c0, 0x05000046, 0x59300008, 0x8c000536, - 0x05020043, 0x5932680a, 0x0525fb16, 0x05520a03, - 0x599c0019, 0x8c00050c, 0x0502001e, 0x0525fb11, - 0x0502001c, 0x59300813, 0x4807c857, 0x592c040c, - 0x8c00051c, 0x05020015, 0x8400055c, 0x48025c0c, - 0x42000000, 0x0010e3ba, 0x0561fa2a, 0x592c0a08, - 0x82040d00, 0x000000ff, 0xb0040588, 0x05000007, - 0x90040598, 0x05000005, 0xb00405a8, 0x05000003, - 0xb00405aa, 0x05020005, 0x59300013, 0x0555f8fb, - 0x80000d40, 0x48065806, 0x4a026013, 0x7fffffff, - 0x59300008, 0x8c000516, 0x0502001d, 0x48166015, - 0x0525faf0, 0x05000004, 0x59300416, 0x8c00051c, - 0x05000004, 0x599c0019, 0x8c00050c, 0x05000014, - 0x0501fcfc, 0x05020012, 0x0501fa0b, 0x40280000, - 0x4802600f, 0x05000005, 0x4832600d, 0x50200000, - 0x4802600c, 0x4822600e, 0x59300416, 0x8c00051c, - 0x05020004, 0x599c0019, 0x8c00050c, 0x05020871, - 0x6503900d, 0x642370e5, 0x1c01f000, 0x42000000, - 0x0010e44c, 0x0561f9f7, 0x59880153, 0x80000000, - 0x48031153, 0x6503900d, 0x42000000, 0xc0000000, - 0x0001f13a, 0x4cf80000, 0x58f40000, 0x8001f540, - 0x0501f81e, 0x41781800, 0x0501f903, 0x05020013, - 0x44140800, 0x0501f826, 0x05000010, 0x40043800, - 0x60041800, 0x40142000, 0x0501f8fb, 0x0502000b, - 0x801c3800, 0x501c0000, 0x44000800, 0x0501f80f, - 0x801c0580, 0x05000004, 0x44103800, 0x801c3840, - 0x44143800, 0x0501f816, 0x5c01f000, 0x1c01f000, - 0x80f9f1c0, 0x05020003, 0x58f41202, 0x0501f002, - 0x601c1000, 0x1c01f000, 0x80f9f1c0, 0x05020005, - 0x58f40401, 0x90000482, 0x80f40400, 0x0501f004, - 0x58f80401, 0x90000482, 0x80f80400, 0x50002800, - 0x80000000, 0x50002000, 0x1c01f000, 0x80f9f1c0, - 0x05020006, 0x58f40401, 0x90000482, 0x05f81fbb, - 0x4801ec01, 0x0501f008, 0x58f80401, 0x90000482, - 0x05f81fb6, 0x4801f401, 0x90000582, 0x05020002, - 0x0501f817, 0x58f40202, 0x80000040, 0x4801ea02, - 0x05f80fae, 0x90000581, 0x1c01f000, 0x82f40580, - 0xffffffff, 0x0500000d, 0x58f40201, 0x82000580, - 0x0000dcb3, 0x05fa0fa5, 0x58f40000, 0x8001f540, - 0x05000005, 0x58f80201, 0x82000580, 0x0000ddb9, - 0x05fa0f9e, 0x0501f809, 0x1c01f000, 0x4d2c0000, - 0x40fa5800, 0x05fdfb51, 0x4979e800, 0x4179f000, - 0x5c025800, 0x1c01f000, 0x80f5e9c0, 0x05000008, - 0x80f9f1c0, 0x05fe0ff6, 0x4d2c0000, 0x40f65800, - 0x05fdfb46, 0x4179e800, 0x5c025800, 0x1c01f000, - 0x4cf40000, 0x0525fa67, 0x0502002e, 0x59300808, - 0x82040500, 0x00003000, 0x0502002a, 0x8c040522, - 0x0500002a, 0x5930002b, 0x8001ed40, 0x05f80f7f, - 0x82000580, 0xffffffff, 0x05000022, 0x58f40201, - 0x82000580, 0x0000dcb3, 0x05fa0f78, 0x58f40a02, - 0x82040500, 0x0000fffe, 0x05000003, 0x05fdff86, - 0x58f40a02, 0x9004048f, 0x0502107a, 0x80040800, - 0x4805ea02, 0x90040588, 0x0500007d, 0x90040488, - 0x05001008, 0x58f40000, 0x8001ed40, 0x05f80f67, - 0x58f40201, 0x82000580, 0x0000ddb9, 0x05fa0f63, - 0x58f40401, 0x90000c02, 0x4805ec01, 0x80f40400, - 0x59300814, 0x44040000, 0x80000000, 0x45780000, - 0x5c01e800, 0x1c01f000, 0x60001020, 0x4203e000, - 0xb0800000, 0x4203f800, 0x0c000000, 0x40000000, - 0x80081040, 0x05f80f51, 0x05ffb7fb, 0x59300808, - 0x84040d62, 0x48066008, 0x4203f800, 0x08000000, - 0x4d2c0000, 0x05fdfae0, 0x0500004e, 0x492e602b, - 0x4a025a01, 0x0000dcb3, 0x59300009, 0x80001d40, - 0x05f80f42, 0x580c0813, 0x48065803, 0x580c0208, - 0x82000500, 0x000000ff, 0xb00005a8, 0x05000007, - 0x90000582, 0x05000005, 0x90000598, 0x05000003, - 0x90000588, 0x0502002b, 0x580c1801, 0x800c19c0, - 0x05f80f32, 0x580c0c09, 0x90040d03, 0x90040582, - 0x05020003, 0x592c0803, 0x0501f022, 0x580c2a0a, - 0x580c000b, 0x59301813, 0x800c0580, 0x05000021, - 0x90040580, 0x0500000e, 0x40140000, 0x4c080000, - 0x400c1000, 0x41780800, 0x0539f8d4, 0x800409c0, - 0x05fa0f1e, 0x90140c08, 0x0539f8b4, 0x5c001000, - 0x40041800, 0x592c0803, 0x0501f015, 0x90140408, - 0x4c080000, 0x400c1000, 0x41780800, 0x0539f8c7, - 0x800409c0, 0x05fa0f11, 0x40140800, 0x0539f8a7, - 0x5c001000, 0x40041800, 0x592c0803, 0x0501f008, - 0x59301813, 0x40040000, 0x800c0580, 0x05020004, - 0x497a5a02, 0x64125c01, 0x0501f007, 0x64065a02, - 0x641a5c01, 0x497a5804, 0x400c0000, 0x80040480, - 0x48025805, 0x412de800, 0x5c025800, 0x05fdf789, - 0x5c025800, 0x4a02602b, 0xffffffff, 0x05fdf79d, - 0x4d2c0000, 0x58f65800, 0x05fdfaac, 0x40f65800, - 0x05fdfaaa, 0x5c025800, 0x05fdf7f7, 0x4d2c0000, - 0x05fdfa85, 0x05fc07fa, 0x4a025a01, 0x0000ddb9, - 0x640a5c01, 0x492de800, 0x412de800, 0x5c025800, - 0x05fdf784, 0x05fdff13, 0x90f40404, 0x800c0400, - 0x40000800, 0x50040000, 0x80100580, 0x05000012, - 0x90040c02, 0x80081040, 0x05fe07fb, 0x80f9f1c0, - 0x0500000e, 0x58f41202, 0x90081487, 0x90f80402, - 0x800c0400, 0x40000800, 0x50040000, 0x80100580, - 0x05000005, 0x90040c02, 0x80081040, 0x05fe07fb, - 0x0501f002, 0x1c01f000, 0x90000541, 0x05fdf7fe, - 0x4cf40000, 0x4cf80000, 0x4001e800, 0x812e59c0, - 0x05000021, 0x592c0a0a, 0x800409c0, 0x0502001e, - 0x82f40580, 0xffffffff, 0x05000019, 0x58f40201, - 0x82000580, 0x0000dcb3, 0x05fa0ebc, 0x58f40000, - 0x8001f540, 0x05000005, 0x58f80201, 0x82000580, - 0x0000ddb9, 0x05fa0eb5, 0x41783800, 0x58f44003, - 0x0501f833, 0x05020009, 0x05fdff1c, 0x497a602b, - 0x59300808, 0x84040d22, 0x48066008, 0x5c01f000, - 0x5c01e800, 0x1c01f000, 0x05fdff14, 0x64465a0a, - 0x05fdf7f7, 0x05fdfefa, 0x05fdf7f5, 0x4cf40000, - 0x4cf80000, 0x4001e800, 0x90040581, 0x0502001c, - 0x82f40580, 0xffffffff, 0x05000017, 0x58f40201, - 0x82000580, 0x0000dcb3, 0x05fa0e98, 0x58f40000, - 0x8001f540, 0x05000005, 0x58f80201, 0x82000580, - 0x0000ddb9, 0x05fa0e91, 0x41783800, 0x58f44003, - 0x0501f80f, 0x05020007, 0x05fdfef8, 0x60040800, - 0x497a602b, 0x5c01f000, 0x5c01e800, 0x1c01f000, - 0x05fdfef2, 0x60440800, 0x05fdf7fa, 0x4c040000, - 0x05fdfed7, 0x5c000800, 0x05fdf7f6, 0x4803c856, - 0x401c2000, 0x41781800, 0x4c200000, 0x05fdff96, - 0x5c004000, 0x05020022, 0x40202000, 0x60041800, - 0x05fdff91, 0x0502001e, 0x05fdfea2, 0x40082800, - 0x90f43404, 0x50182000, 0x40100000, 0x801c0580, - 0x05000004, 0x60041800, 0x05fdff87, 0x05020014, - 0x90183402, 0x80142840, 0x05fe07f7, 0x80f9f1c0, - 0x0500000e, 0x58f42a02, 0x90142c87, 0x90f83402, - 0x50182000, 0x40100000, 0x801c0580, 0x05000004, - 0x60041800, 0x05fdff78, 0x05020005, 0x90183402, - 0x80142840, 0x05fe07f7, 0x1c01f000, 0x90000541, - 0x05fdf7fe, 0x05f9fe55, 0x592c020e, 0x8c000502, - 0x05fc07fd, 0x497a6014, 0x0501fdbe, 0x412c7000, - 0x59300008, 0x84000556, 0x48026008, 0x9004050f, - 0x82000c00, 0x001012ac, 0x50044000, 0x80204000, - 0x50200000, 0x80187c00, 0x583c2800, 0x583c2001, - 0x583c1002, 0x58380a0b, 0x40187000, 0x5818300b, - 0x59303808, 0x497a6015, 0x0001f183, 0x592c040e, - 0x8c000500, 0x05f80e39, 0x592c0011, 0x48026014, - 0x05fdf7e6, 0x592c040c, 0x8c000502, 0x05fc07de, - 0x592c040d, 0x80000540, 0x05fc07db, 0x90000c82, - 0x0500100e, 0x58380001, 0x80007540, 0x05f80e2b, - 0x58380208, 0x9000050f, 0x82000400, 0x001012ac, - 0x50004000, 0x40040000, 0x800409c0, 0x05000004, - 0x90040c85, 0x05fe17f4, 0x80204400, 0x50200000, - 0x80387c00, 0x583c2800, 0x583c2001, 0x583c1002, - 0x592c0a0b, 0x592c3011, 0x59303808, 0x497a6014, - 0x497a6015, 0x48166010, 0x48126011, 0x480a6012, - 0x481a6013, 0x80040840, 0x4806600f, 0x0000018a, - 0x80204000, 0x50201800, 0x800c19c0, 0x0502000a, - 0x58380001, 0x80007540, 0x05f80e08, 0x58380208, - 0x9000050f, 0x82000400, 0x001012ac, 0x50004000, - 0x50201800, 0x483a600d, 0x480e600c, 0x4822600e, - 0x0001f18a, 0x4803c856, 0x592c020c, 0x8c00051e, - 0x05020016, 0x50200000, 0x80306c00, 0x40240000, - 0x0c01f001, 0x00100ff5, 0x00100ff5, 0x00100ffd, - 0x00100ff5, 0x00100ff5, 0x00100ff5, 0x00100ff5, - 0x00100ff5, 0x00100ffd, 0x00100ff5, 0x00100ffd, - 0x00100ff5, 0x00100ff5, 0x00100ffd, 0x00100ff5, - 0x00100ff5, 0x05f9fde5, 0x8400051e, 0x48025a0c, - 0x50200000, 0x80306c00, 0x58343801, 0x481e6011, - 0x0501f007, 0x58341802, 0x58342800, 0x58343801, - 0x480e6012, 0x48166010, 0x481e6011, 0x0501f289, - 0x4933c857, 0x5931f809, 0x59301006, 0x800811c0, - 0x05000009, 0x41780800, 0x60280000, 0x0535ff83, - 0x80080102, 0x05020002, 0x84001542, 0x80081040, - 0x4809fc0a, 0x640a6006, 0x592c040d, 0x90000508, - 0x05000008, 0x0501f834, 0x59300203, 0x90000584, - 0x05020003, 0x61227000, 0x0009f800, 0x1c01f000, - 0x4cfc0000, 0x58fc0208, 0x82000500, 0x000000ff, - 0xb0000588, 0x05000003, 0x900005a2, 0x05020009, - 0x58fc040c, 0x8c000500, 0x05000006, 0x58fc080f, - 0x8c040516, 0x0500001c, 0x58fc000b, 0x0501f00a, - 0x58fc040c, 0x8c000512, 0x05020019, 0x58fc0c0d, - 0x8c040516, 0x05020003, 0x5c01f800, 0x1c01f000, - 0x58fc000e, 0x4c000000, 0x4d2c0000, 0x40fe5800, - 0x59300013, 0x0551fe81, 0x5c025800, 0x80000d40, - 0x5c000000, 0x80040580, 0x05020007, 0x59300008, - 0x84000500, 0x48026008, 0x61227000, 0x5c01f800, - 0x0009f000, 0x5c01f800, 0x1c01f000, 0x58fdf80d, - 0x05fdf7e7, 0x5c000000, 0x4c000000, 0x4803c857, - 0x4933c857, 0x59b808ea, 0x90040d07, 0x90040580, - 0x05000021, 0x90040583, 0x0500001f, 0x59300407, - 0x4c000000, 0x64026407, 0x61043000, 0x4a0370e5, - 0x00003000, 0x42000000, 0x50000000, 0x41300800, - 0x4c180000, 0x05fdfcd5, 0x5c003000, 0x0500000d, - 0x60780000, 0x80000040, 0x05fe07ff, 0x80183040, - 0x05fe07f5, 0x42000000, 0x40000000, 0x41300800, - 0x05fdfcca, 0x5988014d, 0x80000000, 0x4803114d, - 0x4a0370e5, 0x00002000, 0x5c000000, 0x48026407, - 0x1c01f000, 0x59300008, 0x84000500, 0x48026008, - 0x05fdf7fc, 0x59c00007, 0x4a038006, 0x30000000, - 0x40000000, 0x59c00007, 0x8c00050a, 0x05fe07fe, - 0x1c01f000, 0x5c000000, 0x4c000000, 0x4803c857, - 0x4dc00000, 0x640370e8, 0x608380ee, 0x05fdfff2, - 0x600380ee, 0x05fdfff0, 0x0529f828, 0x05020011, - 0x4a038891, 0x0000ffff, 0x497b8880, 0x4ce80000, - 0x6059d000, 0x0531ff78, 0x497b8892, 0x6059d000, - 0x0531ff75, 0x5c01d000, 0x42000000, 0x0010e497, - 0x055dff48, 0x0501f810, 0x5c038000, 0x0529f102, - 0x0501f81f, 0x4c080000, 0x4c140000, 0x42000000, - 0x0010e498, 0x055dff3f, 0x0501f807, 0x5c002800, + 0x812e59c0, 0x05000048, 0x59300008, 0x8c000536, + 0x05020045, 0x5932680a, 0x0525fcec, 0x05520eff, + 0x0565fa96, 0x0502001e, 0x0525fce8, 0x0502001c, + 0x59300813, 0x4807c857, 0x592c040c, 0x8c00051c, + 0x05020015, 0x8400055c, 0x48025c0c, 0x42000000, + 0x0011235b, 0x0565f90a, 0x592c0a08, 0x82040d00, + 0x000000ff, 0xb0040588, 0x05000007, 0x90040598, + 0x05000005, 0xb00405a8, 0x05000003, 0xb00405aa, + 0x05020005, 0x59300013, 0x0555fe06, 0x80000d40, + 0x48065806, 0x4a026013, 0x7fffffff, 0x59300014, + 0x80000540, 0x05000004, 0x59300008, 0x8c000516, + 0x0502001d, 0x48166015, 0x0525fcc4, 0x05000004, + 0x59300416, 0x8c00051c, 0x05000005, 0x0565fa6b, + 0x05000015, 0x0525fcbd, 0x05020013, 0x0501fcd0, + 0x05020011, 0x0501fa0a, 0x40280000, 0x4802600f, + 0x05000005, 0x4832600d, 0x50200000, 0x4802600c, + 0x4822600e, 0x59300416, 0x8c00051c, 0x05020003, + 0x0565fa5a, 0x05020871, 0x6503900d, 0x642370e5, + 0x1c01f000, 0x42000000, 0x001123f0, 0x0565f8d4, + 0x59880156, 0x80000000, 0x48031156, 0x6503900d, + 0x42000000, 0xc0000000, 0x0001f142, 0x4cf80000, + 0x58f40000, 0x8001f540, 0x0501f81e, 0x41781800, + 0x0501f903, 0x05020013, 0x44140800, 0x0501f826, + 0x05000010, 0x40043800, 0x60041800, 0x40142000, + 0x0501f8fb, 0x0502000b, 0x801c3800, 0x501c0000, + 0x44000800, 0x0501f80f, 0x801c0580, 0x05000004, + 0x44103800, 0x801c3840, 0x44143800, 0x0501f816, + 0x5c01f000, 0x1c01f000, 0x80f9f1c0, 0x05020003, + 0x58f41202, 0x0501f002, 0x601c1000, 0x1c01f000, + 0x80f9f1c0, 0x05020005, 0x58f40401, 0x90000482, + 0x80f40400, 0x0501f004, 0x58f80401, 0x90000482, + 0x80f80400, 0x50002800, 0x80000000, 0x50002000, + 0x1c01f000, 0x80f9f1c0, 0x05020006, 0x58f40401, + 0x90000482, 0x05f81f58, 0x4801ec01, 0x0501f008, + 0x58f80401, 0x90000482, 0x05f81f53, 0x4801f401, + 0x90000582, 0x05020002, 0x0501f817, 0x58f40202, + 0x80000040, 0x4801ea02, 0x05f80f4b, 0x90000581, + 0x1c01f000, 0x82f40580, 0xffffffff, 0x0500000d, + 0x58f40201, 0x82000580, 0x0000dcb3, 0x05fa0f42, + 0x58f40000, 0x8001f540, 0x05000005, 0x58f80201, + 0x82000580, 0x0000ddb9, 0x05fa0f3b, 0x0501f809, + 0x1c01f000, 0x4d2c0000, 0x40fa5800, 0x05fdfaea, + 0x4979e800, 0x4179f000, 0x5c025800, 0x1c01f000, + 0x80f5e9c0, 0x05000008, 0x80f9f1c0, 0x05fe0ff6, + 0x4d2c0000, 0x40f65800, 0x05fdfadf, 0x4179e800, + 0x5c025800, 0x1c01f000, 0x4cf40000, 0x0525fc3b, + 0x0502002e, 0x59300808, 0x82040500, 0x00003000, + 0x0502002a, 0x8c040522, 0x0500002a, 0x5930002b, + 0x8001ed40, 0x05f80f1c, 0x82000580, 0xffffffff, + 0x05000022, 0x58f40201, 0x82000580, 0x0000dcb3, + 0x05fa0f15, 0x58f40a02, 0x82040500, 0x0000fffe, + 0x05000003, 0x05fdff86, 0x58f40a02, 0x9004048f, + 0x0502107a, 0x80040800, 0x4805ea02, 0x90040588, + 0x0500007d, 0x90040488, 0x05001008, 0x58f40000, + 0x8001ed40, 0x05f80f04, 0x58f40201, 0x82000580, + 0x0000ddb9, 0x05fa0f00, 0x58f40401, 0x90000c02, + 0x4805ec01, 0x80f40400, 0x59300814, 0x44040000, + 0x80000000, 0x45780000, 0x5c01e800, 0x1c01f000, + 0x60001020, 0x4203e000, 0xb0800000, 0x4203f800, + 0x0c000000, 0x40000000, 0x80081040, 0x05f80eee, + 0x05ffb7fb, 0x59300808, 0x84040d62, 0x48066008, + 0x4203f800, 0x08000000, 0x4d2c0000, 0x05fdfa79, + 0x0500004e, 0x492e602b, 0x4a025a01, 0x0000dcb3, + 0x59300009, 0x80001d40, 0x05f80edf, 0x580c0813, + 0x48065803, 0x580c0208, 0x82000500, 0x000000ff, + 0xb00005a8, 0x05000007, 0x90000582, 0x05000005, + 0x90000598, 0x05000003, 0x90000588, 0x0502002b, + 0x580c1801, 0x800c19c0, 0x05f80ecf, 0x580c0c09, + 0x90040d03, 0x90040582, 0x05020003, 0x592c0803, + 0x0501f022, 0x580c2a0a, 0x580c000b, 0x59301813, + 0x800c0580, 0x05000021, 0x90040580, 0x0500000e, + 0x40140000, 0x4c080000, 0x400c1000, 0x41780800, + 0x0539fcef, 0x800409c0, 0x05fa0ebb, 0x90140c08, + 0x0539fccf, 0x5c001000, 0x40041800, 0x592c0803, + 0x0501f015, 0x90140408, 0x4c080000, 0x400c1000, + 0x41780800, 0x0539fce2, 0x800409c0, 0x05fa0eae, + 0x40140800, 0x0539fcc2, 0x5c001000, 0x40041800, + 0x592c0803, 0x0501f008, 0x59301813, 0x40040000, + 0x800c0580, 0x05020004, 0x497a5a02, 0x64125c01, + 0x0501f007, 0x64065a02, 0x641a5c01, 0x497a5804, + 0x400c0000, 0x80040480, 0x48025805, 0x412de800, + 0x5c025800, 0x05fdf789, 0x5c025800, 0x4a02602b, + 0xffffffff, 0x05fdf79d, 0x4d2c0000, 0x58f65800, + 0x05fdfa45, 0x40f65800, 0x05fdfa43, 0x5c025800, + 0x05fdf7f7, 0x4d2c0000, 0x05fdfa1e, 0x05fc07fa, + 0x4a025a01, 0x0000ddb9, 0x640a5c01, 0x492de800, + 0x412de800, 0x5c025800, 0x05fdf784, 0x05fdff13, + 0x90f40404, 0x800c0400, 0x40000800, 0x50040000, + 0x80100580, 0x05000012, 0x90040c02, 0x80081040, + 0x05fe07fb, 0x80f9f1c0, 0x0500000e, 0x58f41202, + 0x90081487, 0x90f80402, 0x800c0400, 0x40000800, + 0x50040000, 0x80100580, 0x05000005, 0x90040c02, + 0x80081040, 0x05fe07fb, 0x0501f002, 0x1c01f000, + 0x90000541, 0x05fdf7fe, 0x4cf40000, 0x4cf80000, + 0x4001e800, 0x812e59c0, 0x05000021, 0x592c0a0a, + 0x800409c0, 0x0502001e, 0x82f40580, 0xffffffff, + 0x05000019, 0x58f40201, 0x82000580, 0x0000dcb3, + 0x05fa0e59, 0x58f40000, 0x8001f540, 0x05000005, + 0x58f80201, 0x82000580, 0x0000ddb9, 0x05fa0e52, + 0x41783800, 0x58f44003, 0x0501f833, 0x05020009, + 0x05fdff1c, 0x497a602b, 0x59300808, 0x84040d22, + 0x48066008, 0x5c01f000, 0x5c01e800, 0x1c01f000, + 0x05fdff14, 0x64465a0a, 0x05fdf7f7, 0x05fdfefa, + 0x05fdf7f5, 0x4cf40000, 0x4cf80000, 0x4001e800, + 0x90040581, 0x0502001c, 0x82f40580, 0xffffffff, + 0x05000017, 0x58f40201, 0x82000580, 0x0000dcb3, + 0x05fa0e35, 0x58f40000, 0x8001f540, 0x05000005, + 0x58f80201, 0x82000580, 0x0000ddb9, 0x05fa0e2e, + 0x41783800, 0x58f44003, 0x0501f80f, 0x05020007, + 0x05fdfef8, 0x60040800, 0x497a602b, 0x5c01f000, + 0x5c01e800, 0x1c01f000, 0x05fdfef2, 0x60440800, + 0x05fdf7fa, 0x4c040000, 0x05fdfed7, 0x5c000800, + 0x05fdf7f6, 0x4803c856, 0x401c2000, 0x41781800, + 0x4c200000, 0x05fdff96, 0x5c004000, 0x05020022, + 0x40202000, 0x60041800, 0x05fdff91, 0x0502001e, + 0x05fdfea2, 0x40082800, 0x90f43404, 0x50182000, + 0x40100000, 0x801c0580, 0x05000004, 0x60041800, + 0x05fdff87, 0x05020014, 0x90183402, 0x80142840, + 0x05fe07f7, 0x80f9f1c0, 0x0500000e, 0x58f42a02, + 0x90142c87, 0x90f83402, 0x50182000, 0x40100000, + 0x801c0580, 0x05000004, 0x60041800, 0x05fdff78, + 0x05020005, 0x90183402, 0x80142840, 0x05fe07f7, + 0x1c01f000, 0x90000541, 0x05fdf7fe, 0x05f9fdf2, + 0x592c020e, 0x8c000502, 0x05fc07fd, 0x497a6014, + 0x0501fd92, 0x412c7000, 0x59300008, 0x84000556, + 0x48026008, 0x9004050f, 0x82000c00, 0x0010004b, + 0x50044000, 0x80204000, 0x50200000, 0x80187c00, + 0x583c2800, 0x583c2001, 0x583c1002, 0x58380a0b, + 0x40187000, 0x5818300b, 0x59303808, 0x497a6015, + 0x0001f18b, 0x592c040e, 0x8c000500, 0x05f80dd6, + 0x592c0011, 0x48026014, 0x05fdf7e6, 0x592c040c, + 0x8c000502, 0x05fc07de, 0x592c040d, 0x80000540, + 0x05fc07db, 0x90000c82, 0x0500100e, 0x58380001, + 0x80007540, 0x05f80dc8, 0x58380208, 0x9000050f, + 0x82000400, 0x0010004b, 0x50004000, 0x40040000, + 0x800409c0, 0x05000004, 0x90040c85, 0x05fe17f4, + 0x80204400, 0x50200000, 0x80387c00, 0x583c2800, + 0x583c2001, 0x583c1002, 0x592c0a0b, 0x592c3011, + 0x59303808, 0x497a6014, 0x497a6015, 0x48166010, + 0x48126011, 0x480a6012, 0x481a6013, 0x80040840, + 0x4806600f, 0x00000192, 0x80204000, 0x50201800, + 0x800c19c0, 0x0502000a, 0x58380001, 0x80007540, + 0x05f80da5, 0x58380208, 0x9000050f, 0x82000400, + 0x0010004b, 0x50004000, 0x50201800, 0x483a600d, + 0x480e600c, 0x4822600e, 0x0001f192, 0x4803c856, + 0x592c020c, 0x8c00051e, 0x05020016, 0x50200000, + 0x80306c00, 0x40240000, 0x0c01f001, 0x00101093, + 0x00101093, 0x0010109b, 0x00101093, 0x00101093, + 0x00101093, 0x00101093, 0x00101093, 0x0010109b, + 0x00101093, 0x0010109b, 0x00101093, 0x00101093, + 0x0010109b, 0x00101093, 0x00101093, 0x05f9fd82, + 0x8400051e, 0x48025a0c, 0x50200000, 0x80306c00, + 0x58343801, 0x481e6011, 0x0501f007, 0x58341802, + 0x58342800, 0x58343801, 0x480e6012, 0x48166010, + 0x481e6011, 0x0501f287, 0x4933c857, 0x5931f809, + 0x59301006, 0x800811c0, 0x05000009, 0x41780800, + 0x60280000, 0x0539fb9e, 0x80080102, 0x05020002, + 0x84001542, 0x80081040, 0x4809fc0a, 0x640a6006, + 0x592c040d, 0x90000508, 0x05000008, 0x0501f834, + 0x59300203, 0x90000584, 0x05020003, 0x61227000, + 0x0009f839, 0x1c01f000, 0x4cfc0000, 0x58fc0208, + 0x82000500, 0x000000ff, 0xb0000588, 0x05000003, + 0x900005a2, 0x05020009, 0x58fc040c, 0x8c000500, + 0x05000006, 0x58fc080f, 0x8c040516, 0x0500001c, + 0x58fc000b, 0x0501f00a, 0x58fc040c, 0x8c000512, + 0x05020019, 0x58fc0c0d, 0x8c040516, 0x05020003, + 0x5c01f800, 0x1c01f000, 0x58fc000e, 0x4c000000, + 0x4d2c0000, 0x40fe5800, 0x59300013, 0x0555fb89, + 0x5c025800, 0x80000d40, 0x5c000000, 0x80040580, + 0x05020007, 0x59300008, 0x84000500, 0x48026008, + 0x61227000, 0x5c01f800, 0x0009f039, 0x5c01f800, + 0x1c01f000, 0x58fdf80d, 0x05fdf7e7, 0x5c000000, + 0x4c000000, 0x4803c857, 0x4933c857, 0x59b808ea, + 0x90040d07, 0x90040580, 0x05000021, 0x90040583, + 0x0500001f, 0x59300407, 0x4c000000, 0x64026407, + 0x61043000, 0x4a0370e5, 0x00003000, 0x42000000, + 0x50000000, 0x41300800, 0x4c180000, 0x05fdfcd3, + 0x5c003000, 0x0500000d, 0x60780000, 0x80000040, + 0x05fe07ff, 0x80183040, 0x05fe07f5, 0x42000000, + 0x40000000, 0x41300800, 0x05fdfcc8, 0x59880150, + 0x80000000, 0x48031150, 0x4a0370e5, 0x00002000, + 0x5c000000, 0x48026407, 0x1c01f000, 0x59300008, + 0x84000500, 0x48026008, 0x05fdf7fc, 0x59c00007, + 0x4a038006, 0x30000000, 0x40000000, 0x59c00007, + 0x8c00050a, 0x05fe07fe, 0x1c01f000, 0x5c000000, + 0x4c000000, 0x4803c857, 0x4dc00000, 0x640370e8, + 0x608380ee, 0x05fdfff2, 0x600380ee, 0x05fdfff0, + 0x0529fa74, 0x05020012, 0x4a038891, 0x0000ffff, + 0x497b8880, 0x4ce80000, 0x6059d000, 0x0535fb45, + 0x497b8892, 0x6059d000, 0x0535fb42, 0x5c01d000, + 0x42000000, 0x0011243b, 0x0561fe25, 0x61fc19ff, + 0x0501f811, 0x5c038000, 0x0529f34d, 0x0501f81b, + 0x4c080000, 0x4c140000, 0x42000000, 0x0011243c, + 0x0561fe1b, 0x61fc19ff, 0x0501f807, 0x5c002800, 0x5c001000, 0x48178892, 0x480b8880, 0x5c038000, - 0x1c01f000, 0x496fc857, 0x916c0583, 0x05020008, - 0x4c080000, 0x4c0c0000, 0x61201100, 0x61fc19ff, - 0x0519ff30, 0x5c001800, 0x5c001000, 0x60f00800, - 0x0501ff46, 0x4a038891, 0x0000ffff, 0x6503900d, - 0x05fdfaa8, 0x640770e8, 0x1c01f000, 0x5c000000, - 0x4c000000, 0x4803c857, 0x59c41080, 0x497b8880, - 0x4ce80000, 0x6059d000, 0x4c080000, 0x0531ff46, - 0x5c001000, 0x5c01d000, 0x59c42892, 0x497b8892, - 0x0525ffea, 0x05020002, 0x1c01f000, 0x61802004, - 0x59c418a4, 0x900c1d0f, 0x900c0580, 0x0500000c, - 0x59c41805, 0x900c1d01, 0x0502000b, 0x59c418a4, - 0x900c1d0f, 0x900c0487, 0x05001003, 0x900c048c, - 0x05001003, 0x80102040, 0x05fe07f2, 0x497b8891, - 0x1c01f000, 0x4c100000, 0x60642000, 0x64078805, - 0x0505fccf, 0x59c41805, 0x900c1d01, 0x05000005, - 0x80102040, 0x05fe07fa, 0x5c002000, 0x05fdf7f4, - 0x5c002000, 0x05fdf7f0, 0x60080020, 0x46000000, - 0x0162c58b, 0x59c8080b, 0x4807c857, 0x59c8103f, - 0x480bc857, 0x05f9fced, 0x4803c856, 0x1c01f000, - 0x00101100, 0x00101100, 0x00101100, 0x00101114, - 0x00101100, 0x00101100, 0x00101100, 0x00101100, - 0x00101100, 0x00101114, 0x00101100, 0x00101101, - 0x00101100, 0x00101100, 0x00101100, 0x00101100, - 0x05f9fcda, 0x900405bb, 0x05fa0cd8, 0x592c020e, - 0x8c000500, 0x0500008d, 0x592c1a0b, 0x9004050f, - 0x82000400, 0x001012ac, 0x50001000, 0x50080000, - 0x59302015, 0x4802600c, 0x492e600d, 0x480a600e, - 0x480e600f, 0x48126014, 0x5c025800, 0x1c01f000, - 0x9004050f, 0x82000400, 0x001012ac, 0x50001000, - 0x50080000, 0x592c1a0b, 0x4802600c, 0x492e600d, - 0x480a600e, 0x480e600f, 0x497a6014, 0x05fdf7f3, - 0x8c040500, 0x05020071, 0x82040d00, 0x00000080, - 0x0500006e, 0x0001f19b, 0x0501fc22, 0x843c7d4e, - 0x0001f1a8, 0x59307804, 0x823c7d00, 0x01880080, - 0x823c7d40, 0x80000005, 0x59300013, 0x82000500, - 0xffff0000, 0x05000002, 0x843c7d6a, 0x59300015, - 0x59301014, 0x80080580, 0x0502000b, 0x800811c0, - 0x05020004, 0x8c3c050e, 0x05000055, 0x0501f004, - 0x592c120c, 0x8c08051e, 0x05020051, 0x843c7d4a, - 0x0501f04f, 0x480bc857, 0x59300804, 0x82040500, - 0x00008080, 0x82000580, 0x00008080, 0x05020016, - 0x592c6001, 0x58300409, 0x90000503, 0x90000581, - 0x05020011, 0x84040d1e, 0x48066004, 0x59302015, - 0x5930001c, 0x80101480, 0x0500100b, 0x5830020a, - 0x41780800, 0x0535fe39, 0x800810c6, 0x59301814, - 0x800c0482, 0x80100580, 0x05020003, 0x48126014, - 0x05fdf7db, 0x42000000, 0x0010e43f, 0x055dfe7d, - 0x59302015, 0x59300416, 0x4803c857, 0x8c000514, - 0x0502000f, 0x599c1819, 0x8c0c0512, 0x0500000a, - 0x592c0813, 0x59300017, 0x80040c80, 0x05000005, - 0x05001004, 0x80040000, 0x80140480, 0x05001008, - 0x0541fac4, 0x900c1d41, 0x0501f01f, 0x84000514, - 0x48026416, 0x48126017, 0x4813c857, 0x4c3c0000, - 0x0501f954, 0x5c007800, 0x05020017, 0x5930500f, - 0x592c020c, 0x4803c857, 0x8c00051e, 0x05020004, - 0x903c7d60, 0x5930400e, 0x0501f004, 0x8400051e, - 0x48025a0c, 0x0501f907, 0x50201800, 0x480e600c, - 0x4832600d, 0x4822600e, 0x482a600f, 0x480fc857, - 0x4833c857, 0x4823c857, 0x482bc857, 0x80000580, - 0x483e6004, 0x1c01f000, 0x05f9fc48, 0x4933c857, - 0x4d2c0000, 0x59900005, 0x81300580, 0x05fa0c43, - 0x054dfb31, 0x05f80c41, 0x59325809, 0x4d3c0000, - 0x4d400000, 0x59300004, 0x4803c857, 0x4c000000, - 0x0539fda9, 0x0539faab, 0x5c000000, 0x8c000516, - 0x05000014, 0x82000d00, 0x01000080, 0x05020004, - 0x592c0a0e, 0x8c040506, 0x0502000e, 0x592c0013, - 0x4803c857, 0x4802580b, 0x41780800, 0x600a8000, - 0x0525fc7b, 0x4a025c0a, 0x0000ffff, 0x492fc857, - 0x0001fb82, 0x0551fcfc, 0x0541fa1a, 0x0501f01b, - 0x640a6203, 0x592c020c, 0x8c000512, 0x05020004, - 0x592c020c, 0x8400054e, 0x48025a0c, 0x59300407, - 0x90000586, 0x0502000f, 0x592c0811, 0x59140001, - 0x82000500, 0xffff0000, 0x05000004, 0x811800ca, - 0x81c80c00, 0x58040939, 0x48066017, 0x592c0011, - 0x80040480, 0x592c0813, 0x80040480, 0x4802580f, - 0x417a7800, 0x0549fe44, 0x5c028000, 0x5c027800, - 0x5c025800, 0x1c01f000, 0x4933c857, 0x4d2c0000, - 0x59900005, 0x81300580, 0x05fa0c00, 0x054dfaee, - 0x05f80bfe, 0x59325809, 0x592c020c, 0x84000540, - 0x48025a0c, 0x05fdf7ba, 0x491bc857, 0x4dd00000, + 0x1c01f000, 0x496fc857, 0x916c0583, 0x05020003, + 0x61201100, 0x051df830, 0x60f00800, 0x0501ff1c, + 0x4a038891, 0x0000ffff, 0x6503900d, 0x05fdfa6f, + 0x640770e8, 0x1c01f000, 0x5c000000, 0x4c000000, + 0x4803c857, 0x59c41080, 0x497b8880, 0x4ce80000, + 0x6059d000, 0x4c080000, 0x0535fb16, 0x5c001000, + 0x5c01d000, 0x59c42892, 0x497b8892, 0x0529fa39, + 0x05020002, 0x1c01f000, 0x61802004, 0x59c418a4, + 0x900c1d0f, 0x900c0580, 0x0500000c, 0x59c41805, + 0x900c1d01, 0x0502000b, 0x59c418a4, 0x900c1d0f, + 0x900c0487, 0x05001003, 0x900c048c, 0x05001003, + 0x80102040, 0x05fe07f2, 0x497b8891, 0x1c01f000, + 0x4c100000, 0x60642000, 0x64078805, 0x0505fcb4, + 0x59c41805, 0x900c1d01, 0x05000005, 0x80102040, + 0x05fe07fa, 0x5c002000, 0x05fdf7f4, 0x5c002000, + 0x05fdf7f0, 0x60080020, 0x46000000, 0x0162c58b, + 0x59c8080b, 0x4807c857, 0x59c8103f, 0x480bc857, + 0x42000000, 0x00112438, 0x0561fdcd, 0x05fdff90, + 0x1c01f000, 0x4803c856, 0x1c01f000, 0x0010119f, + 0x0010119f, 0x0010119f, 0x001011b3, 0x0010119f, + 0x0010119f, 0x0010119f, 0x0010119f, 0x0010119f, + 0x001011b3, 0x0010119f, 0x001011a0, 0x0010119f, + 0x0010119f, 0x0010119f, 0x0010119f, 0x05f9fc76, + 0x900405bb, 0x05fa0c74, 0x592c020e, 0x8c000500, + 0x0500008d, 0x592c1a0b, 0x9004050f, 0x82000400, + 0x0010004b, 0x50001000, 0x50080000, 0x59302015, + 0x4802600c, 0x492e600d, 0x480a600e, 0x480e600f, + 0x48126014, 0x5c025800, 0x1c01f000, 0x9004050f, + 0x82000400, 0x0010004b, 0x50001000, 0x50080000, + 0x592c1a0b, 0x4802600c, 0x492e600d, 0x480a600e, + 0x480e600f, 0x497a6014, 0x05fdf7f3, 0x8c040500, + 0x05020071, 0x82040d00, 0x00000080, 0x0500006e, + 0x0001f1a3, 0x0501fbf5, 0x843c7d4e, 0x0001f1b0, + 0x59307804, 0x823c7d00, 0x01880080, 0x823c7d40, + 0x80000005, 0x59300013, 0x82000500, 0xffff0000, + 0x05000002, 0x843c7d6a, 0x59300015, 0x59301014, + 0x80080580, 0x0502000b, 0x800811c0, 0x05020004, + 0x8c3c050e, 0x05000055, 0x0501f004, 0x592c120c, + 0x8c08051e, 0x05020051, 0x843c7d4a, 0x0501f04f, + 0x480bc857, 0x59300804, 0x82040500, 0x00008080, + 0x82000580, 0x00008080, 0x05020016, 0x592c6001, + 0x58300409, 0x90000503, 0x90000581, 0x05020011, + 0x84040d1e, 0x48066004, 0x59302015, 0x5930001c, + 0x80101480, 0x0500100b, 0x5830020a, 0x41780800, + 0x0539fa53, 0x800810c6, 0x59301814, 0x800c0482, + 0x80100580, 0x05020003, 0x48126014, 0x05fdf7db, + 0x42000000, 0x001123e0, 0x0561fd59, 0x59302015, + 0x59300416, 0x4803c857, 0x8c000514, 0x0502000f, + 0x599c1819, 0x8c0c0512, 0x0500000a, 0x592c0813, + 0x59300017, 0x80040c80, 0x05000005, 0x05001004, + 0x80040000, 0x80140480, 0x05001008, 0x0541ff57, + 0x900c1d41, 0x0501f01f, 0x84000514, 0x48026416, + 0x48126017, 0x4813c857, 0x4c3c0000, 0x0501f928, + 0x5c007800, 0x05020017, 0x5930500f, 0x592c020c, + 0x4803c857, 0x8c00051e, 0x05020004, 0x903c7d60, + 0x5930400e, 0x0501f004, 0x8400051e, 0x48025a0c, + 0x0501f904, 0x50201800, 0x480e600c, 0x4832600d, + 0x4822600e, 0x482a600f, 0x480fc857, 0x4833c857, + 0x4823c857, 0x482bc857, 0x80000580, 0x483e6004, + 0x1c01f000, 0x05f9fbe4, 0x4933c857, 0x4d2c0000, + 0x59900005, 0x81300580, 0x05fa0bdf, 0x0551f81b, + 0x05f80bdd, 0x59325809, 0x4d3c0000, 0x4d400000, + 0x59300004, 0x4803c857, 0x4c000000, 0x053df9c8, + 0x0539feca, 0x5c000000, 0x8c000516, 0x05000014, + 0x82000d00, 0x01000080, 0x05020004, 0x592c0a0e, + 0x8c040506, 0x0502000e, 0x592c0013, 0x4803c857, + 0x4802580b, 0x41780800, 0x600a8000, 0x0525fec0, + 0x4a025c0a, 0x0000ffff, 0x492fc857, 0x0001fba8, + 0x0555fa03, 0x0541fe90, 0x0501f01b, 0x640a6203, + 0x592c020c, 0x8c000512, 0x05020004, 0x592c020c, + 0x8400054e, 0x48025a0c, 0x59300407, 0x90000586, + 0x0502000f, 0x592c0811, 0x59140001, 0x82000500, + 0xffff0000, 0x05000004, 0x811800ca, 0x81c80c00, + 0x58040939, 0x48066017, 0x592c0011, 0x80040480, + 0x592c0813, 0x80040480, 0x4802580f, 0x417a7800, + 0x054dfb17, 0x5c028000, 0x5c027800, 0x5c025800, + 0x1c01f000, 0x4933c857, 0x4d2c0000, 0x054dffdb, + 0x05f80b9d, 0x59325809, 0x592c020c, 0x84000540, + 0x48025a0c, 0x05fdf7bd, 0x491bc857, 0x4dd00000, 0x4c580000, 0x41780800, 0x8007a0ca, 0x83d3a400, 0x00007600, 0x4a03a005, 0x80000002, 0x05024004, - 0x4c040000, 0x00044e27, 0x5c000800, 0x59d01006, + 0x4c040000, 0x00044e5d, 0x5c000800, 0x59d01006, 0x82080500, 0x00006000, 0x82000580, 0x00006000, 0x05000007, 0x8c08051e, 0x05fc07f5, 0x59d01006, 0x82080500, 0x00006000, 0x05fe07f1, 0x91d3a420, @@ -1202,20 +1241,20 @@ static const uint32_t isp_2500_risc_code[] = { 0x480c2822, 0x59d0000f, 0x59d00810, 0x59d01011, 0x59d01812, 0x48002c23, 0x48042824, 0x48082825, 0x480c2826, 0x6401b006, 0x4a03a005, 0x30000000, - 0x59d00006, 0x1c01f000, 0x42000000, 0x0010e4e1, - 0x055dfd98, 0x600008ec, 0x580410a2, 0x41780800, + 0x59d00006, 0x1c01f000, 0x42000000, 0x00112485, + 0x0561fc77, 0x600008ec, 0x580410a2, 0x41780800, 0x9008050f, 0x8c000506, 0x05020003, 0x81180580, 0x05000006, 0x80040800, 0x80081108, 0x90040587, - 0x05fe07f8, 0x05f9fb89, 0x4a039040, 0x04000000, + 0x05fe07f8, 0x05f9fb28, 0x4a039040, 0x04000000, 0x59c80040, 0x8c000532, 0x05fe07fe, 0x59d0000d, 0x800000e0, 0x59d0100c, 0x82081500, 0x0000ffff, 0x80081540, 0x480b9028, 0x4d2c0000, 0x59325809, - 0x054dfa69, 0x05f80b79, 0x59d02004, 0x592c0208, + 0x054dff56, 0x05f80b18, 0x59d02004, 0x592c0208, 0x82001500, 0x000000ff, 0x9000050f, 0x90000582, 0x05000003, 0xb00805ba, 0x05020004, 0x592c0011, - 0x80102480, 0x05f81b6d, 0x5c025800, 0x9010250f, - 0x90102588, 0x05fa0b69, 0x59c80047, 0x8c000530, - 0x05fa0b66, 0x59d0000b, 0x48039029, 0x800400d6, + 0x80102480, 0x05f81b0c, 0x5c025800, 0x9010250f, + 0x90102588, 0x05fa0b08, 0x59c80047, 0x8c000530, + 0x05fa0b05, 0x59d0000b, 0x48039029, 0x800400d6, 0x40001000, 0x800400dc, 0x80081400, 0x82081540, 0x0400002f, 0x480b9047, 0x59c80047, 0x8c000532, 0x05fe07fe, 0x64079048, 0x59c80048, 0x8c000500, @@ -1224,546 +1263,539 @@ static const uint32_t isp_2500_risc_code[] = { 0x4803c856, 0x80204000, 0x50200000, 0x80000540, 0x05000003, 0x80285040, 0x1c01f000, 0x58300001, 0x80000540, 0x0500000c, 0x4802600d, 0x40006000, - 0x58300208, 0x9000050f, 0x82000400, 0x001012ac, - 0x50004000, 0x802041c0, 0x05f80b3c, 0x80285040, - 0x1c01f000, 0x40005000, 0x1c01f000, 0x00000009, - 0x0000000c, 0x0000000f, 0x00000012, 0x00000015, - 0x00000000, 0x00000000, 0x0000000f, 0x00000000, - 0x00000000, 0x00000000, 0x001012a7, 0x001012a6, - 0x00000000, 0x001012a7, 0x00000000, 0x00000000, - 0x001012a7, 0x001012a6, 0x001012a3, 0x001012a7, - 0x001012a6, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x001012a7, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x001012a7, 0x001012a7, 0x001012a7, 0x00000000, - 0x001012a7, 0x00000000, 0x00000000, 0x00000000, - 0x4813c857, 0x492fc857, 0x4933c857, 0x48126014, - 0x592c520b, 0x802851c0, 0x05000076, 0x59300008, - 0x8c000516, 0x0500001e, 0x592c0208, 0x82001500, - 0x000000ff, 0x9000050f, 0x90000582, 0x05000003, - 0xb00805ba, 0x05020003, 0x592c0011, 0x80102480, - 0x801021c0, 0x41781000, 0x0500000e, 0x592c6001, - 0x58300409, 0x58300a0a, 0x90000503, 0x90000580, - 0x05000002, 0x90040c08, 0x40040000, 0x40101000, - 0x41780800, 0x0535fca1, 0x800409c0, 0x05020059, - 0x0501fa86, 0x0500004f, 0x0501f056, 0x59300004, - 0x8c00050e, 0x0500000d, 0x0501fb13, 0x05020051, - 0x592c6001, 0x42004000, 0x001012a4, 0x58300409, - 0x8c000510, 0x0500000f, 0x5830540d, 0x42004000, - 0x001012a5, 0x0501f00b, 0x412c6000, 0x0501f847, - 0x05000008, 0x90240582, 0x05020003, 0x58300011, - 0x80102480, 0x50200000, 0x80004540, 0x0500003d, - 0x50200000, 0x80000540, 0x0500000b, 0x80301400, - 0x58080002, 0x80102480, 0x0500101d, 0x801021c0, - 0x05000009, 0x80285040, 0x05000032, 0x80204000, - 0x05fdf7f4, 0x58300001, 0x80006540, 0x0500002d, - 0x05fdf7e7, 0x80285040, 0x0500002a, 0x80204000, - 0x50200000, 0x80000540, 0x05020009, 0x58300001, - 0x80006540, 0x05000023, 0x58300208, 0x90004d0f, - 0x82244400, 0x001012ac, 0x50204000, 0x592c020c, - 0x8400051e, 0x48025a0c, 0x0501f012, 0x80102080, - 0x80102000, 0x48126012, 0x4813c857, 0x58080802, - 0x40100000, 0x80042480, 0x05f81aa4, 0x58080000, - 0x58081801, 0x80102400, 0x48126010, 0x480e6011, - 0x4813c857, 0x592c020c, 0x8400055e, 0x48025a0c, - 0x4833c857, 0x4823c857, 0x482bc857, 0x4832600d, - 0x4822600e, 0x482a600f, 0x80000580, 0x0501f002, - 0x90000541, 0x1c01f000, 0x58300208, 0x90004d0f, - 0x82244400, 0x001012ac, 0x82000500, 0x000000ff, - 0x900005a9, 0x05020016, 0x50204000, 0x592c040d, - 0x80000540, 0x05f80a85, 0x90000c82, 0x0500100e, - 0x58300001, 0x80006540, 0x05f80a80, 0x58300208, - 0x9000050f, 0x82000400, 0x001012ac, 0x50004000, - 0x40040000, 0x800409c0, 0x05000005, 0x90040c85, - 0x05fe17f4, 0x80204400, 0x80000580, 0x1c01f000, - 0x4c5c0000, 0x59e4b800, 0x485fc857, 0x905c051f, - 0x05fa0a6e, 0x825c0500, 0x000000e0, 0x05f80a6b, - 0x8c5c050e, 0x05020807, 0x8c5c050c, 0x05020809, - 0x8c5c050a, 0x05020900, 0x5c00b800, 0x1c01f000, - 0x4803c856, 0x4a03c800, 0x00000080, 0x1c01f000, - 0x4d2c0000, 0x42007800, 0x0010e4e5, 0x583c0003, - 0x583c0804, 0x80040540, 0x05000037, 0x42000800, - 0x0010e388, 0x50065800, 0x592c0002, 0x90000580, - 0x05000031, 0x59e40050, 0x59e40852, 0x80040480, - 0x82000500, 0xfffffc00, 0x05020005, 0x59e40050, - 0x59e40851, 0x80040800, 0x80040480, 0x82000c80, - 0x00000400, 0x59e40050, 0x80041400, 0x480bc857, - 0x50080000, 0x58080801, 0x80040540, 0x0500001e, - 0x480bc857, 0x480a5803, 0x583c1009, 0x583c000a, - 0x80080580, 0x05020005, 0x583c0000, 0x84000550, - 0x48007800, 0x41781000, 0x82080400, 0x00001000, - 0x4803c857, 0x48007809, 0x583c0003, 0x80081400, - 0x480bc857, 0x583c0804, 0x64025801, 0x4a025809, - 0x001013bc, 0x480a5807, 0x48065808, 0x59e40053, - 0x800000c4, 0x48025805, 0x412c1000, 0x492fc857, - 0x0001f821, 0x5c025800, 0x6503c800, 0x1c01f000, - 0x42007800, 0x0010e388, 0x503c7800, 0x4a007802, - 0x00000100, 0x42007800, 0x0010e4e5, 0x583c0000, - 0x84000552, 0x48007800, 0x583c100c, 0x480bc857, - 0x80081000, 0x4808780c, 0x583c180b, 0x800c19c0, - 0x05000013, 0x90080503, 0x05020011, 0x583c0007, - 0x4803c857, 0x583c2008, 0x4813c857, 0x80102000, - 0x80100580, 0x05020002, 0x41782000, 0x48107808, - 0x400c0000, 0x80080580, 0x05020005, 0x4978780c, - 0x60041800, 0x60a01100, 0x0519fbfe, 0x1c01f000, - 0x42007800, 0x0010e4e5, 0x4d2c0000, 0x4c5c0000, - 0x4c600000, 0x4030b800, 0x583cc000, 0x4a00b802, - 0x00000100, 0x583c2015, 0x80100800, 0x583c0013, - 0x80040580, 0x05020003, 0x8460c554, 0x41780800, - 0x48047815, 0x8c600502, 0x05f809e8, 0x8460c502, - 0x48607800, 0x42000000, 0x0010e389, 0x50000000, - 0x80300580, 0x05fa09e1, 0x583c081e, 0x800409c0, - 0x05000008, 0x583c001f, 0x80040580, 0x05020005, - 0x4978781f, 0x60081800, 0x60a01100, 0x0519fbd9, - 0x8c600508, 0x050e0c69, 0x5c00c000, 0x5c00b800, - 0x5c025800, 0x1c01f000, 0x4d2c0000, 0x4c5c0000, - 0x4c600000, 0x4c640000, 0x42000800, 0x0010e389, - 0x50065800, 0x4a025809, 0x001013e0, 0x6000c002, - 0x4200b800, 0x0010e4e5, 0x585cc800, 0x4867c857, - 0x8d0c052a, 0x0502000f, 0x40ee5800, 0x492fc857, - 0x4a025802, 0x00000100, 0x585c0014, 0x80000000, - 0x90000503, 0x4800b814, 0x4a025809, 0x0010306e, - 0x585cc017, 0x8260c500, 0x000000ff, 0x05f809b3, - 0x4c580000, 0x61e8b001, 0x8058b040, 0x05f809af, - 0x8c640502, 0x0500000b, 0x8d0c052a, 0x05fa09ab, - 0x4c580000, 0x4c600000, 0x0001f9b8, 0x585cc800, - 0x5c00c000, 0x5c00b000, 0x485bc857, 0x05fdf7f3, - 0x5c00b000, 0x4200b800, 0x0010e4e5, 0x8464cd42, - 0x4864b800, 0x592c0002, 0x90000580, 0x05f8099b, - 0x585c100d, 0x585c0018, 0x80081400, 0x80600400, - 0x4800b818, 0x585c0014, 0x800001c0, 0x05020002, - 0x4978b818, 0x8060c0c4, 0x492fc857, 0x480bc857, - 0x4863c857, 0x480a5803, 0x585c001d, 0x4803c857, - 0x585c180e, 0x800c1400, 0x480a5807, 0x4808b81b, - 0x80600400, 0x4800b81d, 0x4803c857, 0x800c0400, - 0x4800b819, 0x585c0810, 0x4807c857, 0x4803c857, - 0x80040d80, 0x05020004, 0x4978b81d, 0x585c080e, - 0x4804b819, 0x585c080e, 0x80040580, 0x82000500, - 0x000003ff, 0x05020004, 0x585c001f, 0x80000000, - 0x4800b81f, 0x585c080f, 0x48065808, 0x4807c857, - 0x64025801, 0x48625805, 0x412c1000, 0x0001f821, - 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x5c025800, - 0x1c01f000, 0x6483c800, 0x055dfb5f, 0x59e40000, - 0x1c01f000, 0x60001020, 0x80081040, 0x05000022, - 0x055dfc83, 0x05fc07fd, 0x59800801, 0x82040d00, - 0xfff006ff, 0x82040d40, 0x000ff900, 0x48070001, - 0x59e00002, 0x8c00051e, 0x05020016, 0x605c00f4, - 0x50001000, 0x82081500, 0x03f00000, 0x82080580, - 0x00800000, 0x0500000f, 0x61901000, 0x80081040, - 0x0500000c, 0x59800881, 0x8c040514, 0x05fc07fc, - 0x82040500, 0x00000180, 0x82000580, 0x00000180, - 0x05020004, 0x59800080, 0x84000540, 0x48030080, - 0x90000541, 0x64030000, 0x1c01f000, 0x61880809, - 0x055dfc68, 0x05020003, 0x4803c856, 0x055dfc6c, - 0x59800802, 0x4807c857, 0x8c040520, 0x05000007, - 0x64030000, 0x60101020, 0x50080000, 0x8400054c, - 0x44001000, 0x0501f000, 0x82040500, 0x00001084, - 0x05fa092a, 0x8c040510, 0x05000006, 0x42000000, - 0x0010e4e2, 0x055dfb27, 0x4a030002, 0x00000100, - 0x8c040522, 0x0500002d, 0x59e00002, 0x8c00051e, - 0x0502002a, 0x601c20f6, 0x50102800, 0x4817c857, - 0x605c00f4, 0x50003000, 0x82180500, 0x000f0000, - 0x40003800, 0x40144000, 0x821c0580, 0x00020000, - 0x05020002, 0x902041c0, 0x8c18050c, 0x05000002, - 0x842041c0, 0x82204500, 0x000000ff, 0x90204401, - 0x8c200510, 0x05000005, 0x42000000, 0x0010e4e3, - 0x055dfb08, 0x61fc4001, 0x42001800, 0xffffff00, - 0x8c18050c, 0x05000003, 0x840c19c0, 0x842041c0, - 0x821c0580, 0x00020000, 0x05020003, 0x900c19c0, - 0x902041c0, 0x800c0505, 0x80200540, 0x44002000, - 0x4a030002, 0x00020000, 0x64030000, 0x1c01f000, - 0x4d2c0000, 0x64007000, 0x82040d00, 0x43200f80, - 0x05fa08ee, 0x58380008, 0x4803c00f, 0x583a5807, - 0x592c0801, 0x800409c0, 0x0500000e, 0x592c0000, - 0x48000800, 0x58380006, 0x812c0580, 0x05020002, - 0x48047006, 0x48047007, 0x60042000, 0x0559fe40, - 0x05f808de, 0x05f9fc95, 0x5c025800, 0x05f9f54d, - 0x4a0370e4, 0x00003000, 0x054dfc4b, 0x583a5807, - 0x592c0000, 0x48007007, 0x800001c0, 0x05020002, - 0x49787006, 0x05f9fc89, 0x5c025800, 0x42007000, - 0x000211a7, 0x0001f036, 0x4803c856, 0x4c3c0000, - 0x4d2c0000, 0x4d300000, 0x5830000a, 0x80025d40, - 0x0500001a, 0x592e600c, 0x4c300000, 0x054dfc4b, - 0x5c006000, 0x05f808c1, 0x58300002, 0x82000580, - 0x00000100, 0x05000003, 0x640a5a0a, 0x492fc857, - 0x4c300000, 0x0001fb82, 0x5c025800, 0x05f9fc6f, - 0x0005ffdc, 0x59c80000, 0x82000540, 0x00001200, - 0x48039000, 0x850e1d1c, 0x5c026000, 0x5c025800, - 0x5c007800, 0x1c01f000, 0x40325800, 0x05f9fc63, - 0x05fdf7fa, 0x59300025, 0x48025814, 0x59300026, - 0x48025815, 0x59300a23, 0x8c04050c, 0x05020007, - 0x59300020, 0x59300a21, 0x800408e0, 0x80040540, - 0x5930081f, 0x0501f006, 0x59300820, 0x59300221, - 0x800408e0, 0x80040d40, 0x5930001f, 0x9c0001c0, - 0x9c0409c0, 0x48025816, 0x48065817, 0x1c01f000, - 0x592c0001, 0x80003540, 0x05f80890, 0x58180a08, - 0x82040d00, 0x000000ff, 0xb004058a, 0x05fa088b, - 0x592c1015, 0x592c1a16, 0x58182209, 0x592c2c16, - 0x592c0017, 0x800000e0, 0x80142d40, 0x592c0017, - 0x80003920, 0x58184409, 0x5818020a, 0x8c20050e, - 0x05fa087e, 0x800048e0, 0x80244d40, 0x5818000b, - 0x4802602c, 0x8c20050c, 0x05020009, 0x901c51c0, - 0x841401c0, 0x82003d00, 0x0000ffff, 0x80140120, - 0x80280540, 0x9c0029c0, 0x0501f003, 0x9c1429c0, - 0x841c39c0, 0x480a601f, 0x480e6020, 0x48126421, - 0x48126221, 0x48166022, 0x481e6423, 0x48226223, - 0x48266024, 0x1c01f000, 0x4c5c0000, 0x592c0001, - 0x80006540, 0x05f80861, 0x58300a08, 0x82040d00, - 0x000000ff, 0xb004058a, 0x05fa085c, 0x58302c09, - 0x8c140506, 0x58300209, 0x05000002, 0x80080400, - 0x48026421, 0x48026221, 0x5830020a, 0x800008e0, - 0x80040540, 0x48026024, 0x8c14050a, 0x05020004, - 0x592c0015, 0x80080400, 0x4802601f, 0x5830320a, - 0x8c140510, 0x0502000c, 0x90142d03, 0x90140582, - 0x0500000e, 0x90140581, 0x05000007, 0x40080800, - 0x90180408, 0x40001000, 0x0535f9d8, 0x40042000, - 0x0501f006, 0x40080800, 0x40181000, 0x4004b800, - 0x0535f9d2, 0x40042000, 0x4c100000, 0x05fdfda7, - 0x05f80836, 0x5c002000, 0x50200000, 0x80004540, - 0x0500005e, 0x58300a08, 0x82040d00, 0x000000ff, - 0xb004058a, 0x05020006, 0x80204000, 0x58300409, - 0x8c000510, 0x05000002, 0x80204000, 0x50200000, + 0x58300208, 0x9000050f, 0x82000400, 0x0010004b, + 0x50004000, 0x802041c0, 0x05f80adb, 0x80285040, + 0x1c01f000, 0x40005000, 0x1c01f000, 0x4813c857, + 0x492fc857, 0x4933c857, 0x48126014, 0x592c520b, + 0x802851c0, 0x05000076, 0x59300008, 0x8c000516, + 0x0500001e, 0x592c0208, 0x82001500, 0x000000ff, + 0x9000050f, 0x90000582, 0x05000003, 0xb00805ba, + 0x05020003, 0x592c0011, 0x80102480, 0x801021c0, + 0x41781000, 0x0500000e, 0x592c6001, 0x58300409, + 0x58300a0a, 0x90000503, 0x90000580, 0x05000002, + 0x90040c08, 0x40040000, 0x40101000, 0x41780800, + 0x0539f8e7, 0x800409c0, 0x05020059, 0x0501fa85, + 0x0500004f, 0x0501f056, 0x59300004, 0x8c00050e, + 0x0500000d, 0x0501fb11, 0x05020051, 0x592c6001, + 0x42004000, 0x00100043, 0x58300409, 0x8c000510, + 0x0500000f, 0x5830540d, 0x42004000, 0x00100044, + 0x0501f00b, 0x412c6000, 0x0501f847, 0x05000008, + 0x90240582, 0x05020003, 0x58300011, 0x80102480, + 0x50200000, 0x80004540, 0x0500003d, 0x50200000, 0x80000540, 0x0500000b, 0x80301400, 0x58080002, 0x80102480, 0x0500101d, 0x801021c0, 0x05000009, - 0x80285040, 0x05000049, 0x80204000, 0x05fdf7f4, - 0x58300001, 0x80006540, 0x05000044, 0x05fdf7df, - 0x80285040, 0x05000041, 0x80204000, 0x50200000, + 0x80285040, 0x05000032, 0x80204000, 0x05fdf7f4, + 0x58300001, 0x80006540, 0x0500002d, 0x05fdf7e7, + 0x80285040, 0x0500002a, 0x80204000, 0x50200000, 0x80000540, 0x05020009, 0x58300001, 0x80006540, - 0x0500003a, 0x58300208, 0x90004d0f, 0x82244400, - 0x001012ac, 0x50204000, 0x592c020c, 0x8400051e, - 0x48025a0c, 0x0501f010, 0x80102080, 0x80102000, + 0x05000023, 0x58300208, 0x90004d0f, 0x82244400, + 0x0010004b, 0x50204000, 0x592c020c, 0x8400051e, + 0x48025a0c, 0x0501f012, 0x80102080, 0x80102000, 0x48126012, 0x4813c857, 0x58080802, 0x40100000, - 0x80042480, 0x05f41ffd, 0x58080000, 0x80102400, - 0x48126010, 0x4813c857, 0x592c020c, 0x8400055e, - 0x48025a0c, 0x59300008, 0x8400052c, 0x48026008, - 0x592c1001, 0x58080409, 0x90000503, 0x90000581, - 0x05020012, 0x599c0019, 0x8c00050c, 0x0502000f, - 0x90280581, 0x05020003, 0x59300812, 0x0501f007, - 0x80280840, 0x5808020a, 0x40001000, 0x0535f97b, - 0x59300012, 0x80040c00, 0x48066013, 0x59300008, - 0x8400056c, 0x48026008, 0x592c1001, 0x58080409, - 0x8c000510, 0x05000003, 0x0501f822, 0x05000003, - 0x80000580, 0x0501f002, 0x90000541, 0x5c00b800, - 0x1c01f000, 0x592c6801, 0x803469c0, 0x05000017, - 0x58347805, 0x58347409, 0x90380503, 0x8c380510, - 0x0c020006, 0x0c01f001, 0x0010161d, 0x0010161a, - 0x00101620, 0x00101622, 0x00101622, 0x00101622, - 0x0010161d, 0x0010161d, 0x803c00c6, 0x80102400, - 0x0501f004, 0x803c00c6, 0x80102480, 0x05001003, - 0x80000580, 0x1c01f000, 0x90000541, 0x1c01f000, - 0x4c040000, 0x4c080000, 0x4c600000, 0x592c0208, - 0x82000500, 0x000000ff, 0xb00005a8, 0x05000007, - 0x90000582, 0x05000005, 0x90000598, 0x05000003, - 0x90000588, 0x05020037, 0x592c6801, 0x803469c0, - 0x05000034, 0x58340208, 0x82000500, 0x000000ff, - 0xb000058a, 0x0502002f, 0x5834740d, 0x592cc20b, - 0x40380000, 0x8060c480, 0x42007800, 0x001012a5, - 0x0501f82a, 0x05fe07ff, 0x40607000, 0x503c0000, - 0x80341400, 0x805c00c6, 0x58088002, 0x80408480, - 0x0500101b, 0x0500001a, 0x58088800, 0x80448c00, - 0x58089001, 0x90489440, 0x59300827, 0x800409c0, - 0x05000018, 0x4844080d, 0x4848080e, 0x4840080f, - 0x4978080c, 0x80380040, 0x05000003, 0x05020813, - 0x4838080c, 0x59300827, 0x4834080a, 0x483c080b, - 0x503c0000, 0x48000809, 0x90000541, 0x5c00c000, - 0x5c001000, 0x5c000800, 0x1c01f000, 0x58088002, - 0x80400106, 0x805cbc80, 0x0501f804, 0x05fe07dc, - 0x80000580, 0x05fdf7f6, 0x4803c856, 0x803c7800, - 0x503c0000, 0x80000540, 0x05000003, 0x80387040, - 0x1c01f000, 0x58340001, 0x80006d40, 0x0500000a, - 0x58340208, 0x9000050f, 0x82000400, 0x001012ac, - 0x50007800, 0x803c79c0, 0x05f40f60, 0x80387040, - 0x1c01f000, 0x40007000, 0x1c01f000, 0x802850c6, - 0x59306827, 0x58340009, 0x5834100a, 0x5834180b, - 0x5834200c, 0x58344810, 0x80087c00, 0x583c0002, - 0x80284480, 0x0500100f, 0x80102040, 0x0500001f, - 0x80244c80, 0x0500001d, 0x40205000, 0x800c1800, - 0x500c0000, 0x80000d40, 0x05fe07f4, 0x58081001, - 0x42001800, 0x001012a3, 0x60240000, 0x05fdf7ef, - 0x80204080, 0x80204000, 0x4810680c, 0x583c0000, - 0x80282c00, 0x583c3001, 0x90183440, 0x500c0800, - 0x48046809, 0x4808680a, 0x480c680b, 0x4810680c, - 0x4814680d, 0x4818680e, 0x4820680f, 0x48246810, - 0x80000580, 0x1c01f000, 0x90000541, 0x1c01f000, - 0x4d2c0000, 0x0001f817, 0x05f40f2c, 0x412c1000, - 0x5c025800, 0x4a001009, 0x000201cd, 0x9008040a, - 0x48001003, 0x0001f1c3, 0x4d2c0000, 0x40325800, - 0x05f9fadb, 0x5c025800, 0x1c01f000, 0x4807c857, - 0x05f5ff1e, 0x42001000, 0x001105e7, 0x4a001003, - 0x001105f1, 0x4a001009, 0x000201cd, 0x4978100a, - 0x1c01f000, 0x59e00017, 0x8c000500, 0x1c01f000, - 0x0001f9d6, 0x4d040000, 0x4c640000, 0x4c600000, - 0x40120800, 0x400cc800, 0x4014c000, 0x0501f01a, - 0x59e00017, 0x8c00050c, 0x05020005, 0x59a808a0, - 0x58040003, 0x8c000500, 0x0500000d, 0x4c080000, - 0x59a8109f, 0x50080000, 0x84000542, 0x44001000, - 0x5c001000, 0x59e00017, 0x8c00050c, 0x05fe07fe, - 0x58040003, 0x8c000500, 0x05fe07fb, 0x4d040000, - 0x4c640000, 0x4c600000, 0x5804c800, 0x58060801, - 0x5804c002, 0x4a03b805, 0x20000000, 0x59dc0006, + 0x80042480, 0x05f81a6c, 0x58080000, 0x58081801, + 0x80102400, 0x48126010, 0x480e6011, 0x4813c857, + 0x592c020c, 0x8400055e, 0x48025a0c, 0x4833c857, + 0x4823c857, 0x482bc857, 0x4832600d, 0x4822600e, + 0x482a600f, 0x80000580, 0x0501f002, 0x90000541, + 0x1c01f000, 0x58300208, 0x90004d0f, 0x82244400, + 0x0010004b, 0x82000500, 0x000000ff, 0x900005a9, + 0x05020016, 0x50204000, 0x592c040d, 0x80000540, + 0x05f80a4d, 0x90000c82, 0x0500100e, 0x58300001, + 0x80006540, 0x05f80a48, 0x58300208, 0x9000050f, + 0x82000400, 0x0010004b, 0x50004000, 0x40040000, + 0x800409c0, 0x05000005, 0x90040c85, 0x05fe17f4, + 0x80204400, 0x80000580, 0x1c01f000, 0x4c5c0000, + 0x59e4b800, 0x485fc857, 0x905c051f, 0x05fa0a36, + 0x825c0500, 0x000000e0, 0x05f80a33, 0x8c5c050e, + 0x05020807, 0x8c5c050c, 0x05020809, 0x8c5c050a, + 0x050208fc, 0x5c00b800, 0x1c01f000, 0x4803c856, + 0x4a03c800, 0x00000080, 0x1c01f000, 0x4d2c0000, + 0x42007800, 0x00112489, 0x583c0003, 0x583c0804, + 0x80040540, 0x05000033, 0x42000800, 0x00112323, + 0x50065800, 0x592c0002, 0x90000580, 0x0500002d, + 0x59e40050, 0x59e40852, 0x80040480, 0x82000500, + 0xfffffc00, 0x05020005, 0x59e40050, 0x59e40851, + 0x80040800, 0x80040480, 0x82000c80, 0x00000400, + 0x59e40050, 0x80041400, 0x480bc857, 0x480bc857, + 0x480a5803, 0x583c1009, 0x583c000a, 0x80080580, + 0x05020005, 0x583c0000, 0x84000550, 0x48007800, + 0x41781000, 0x82080400, 0x00001000, 0x4803c857, + 0x48007809, 0x583c0003, 0x80081400, 0x480bc857, + 0x583c0804, 0x64025801, 0x4a025809, 0x0010142b, + 0x480a5807, 0x48065808, 0x59e40053, 0x800000c4, + 0x48025805, 0x412c1000, 0x492fc857, 0x0001f829, + 0x5c025800, 0x6503c800, 0x1c01f000, 0x42007800, + 0x00112323, 0x503c7800, 0x4a007802, 0x00000100, + 0x42007800, 0x00112489, 0x583c0000, 0x84000552, + 0x48007800, 0x583c100c, 0x480bc857, 0x80081000, + 0x4808780c, 0x583c180b, 0x800c19c0, 0x05000013, + 0x90080503, 0x05020011, 0x583c0007, 0x4803c857, + 0x583c2008, 0x4813c857, 0x80102000, 0x80100580, + 0x05020002, 0x41782000, 0x48107808, 0x400c0000, + 0x80080580, 0x05020005, 0x4978780c, 0x60041800, + 0x60a01100, 0x0519fd2c, 0x1c01f000, 0x42007800, + 0x00112489, 0x4d2c0000, 0x4c5c0000, 0x4c600000, + 0x4030b800, 0x583cc000, 0x4a00b802, 0x00000100, + 0x583c2015, 0x80100800, 0x583c0013, 0x80040580, + 0x05020003, 0x8460c554, 0x41780800, 0x48047815, + 0x8c600502, 0x05f809b4, 0x8460c502, 0x48607800, + 0x42000000, 0x00112324, 0x50000000, 0x80300580, + 0x05fa09ad, 0x583c081e, 0x800409c0, 0x05000008, + 0x583c001f, 0x80040580, 0x05020005, 0x4978781f, + 0x60081800, 0x60a01100, 0x0519fd07, 0x8c600508, + 0x050e0ca2, 0x5c00c000, 0x5c00b800, 0x5c025800, + 0x1c01f000, 0x4d2c0000, 0x4c5c0000, 0x4c600000, + 0x4c640000, 0x42000800, 0x00112324, 0x50065800, + 0x4a025809, 0x0010144f, 0x6000c002, 0x4200b800, + 0x00112489, 0x585cc800, 0x4867c857, 0x8d0c052a, + 0x0502000f, 0x40ee5800, 0x492fc857, 0x4a025802, + 0x00000100, 0x585c0014, 0x80000000, 0x90000503, + 0x4800b814, 0x4a025809, 0x00103116, 0x585cc017, + 0x8260c500, 0x000000ff, 0x05f8097f, 0x4c580000, + 0x61e8b001, 0x8058b040, 0x05f8097b, 0x8c640502, + 0x0500000b, 0x8d0c052a, 0x05fa0977, 0x4c580000, + 0x4c600000, 0x0001f9c0, 0x585cc800, 0x5c00c000, + 0x5c00b000, 0x485bc857, 0x05fdf7f3, 0x5c00b000, + 0x4200b800, 0x00112489, 0x8464cd42, 0x4864b800, + 0x592c0002, 0x90000580, 0x05f80967, 0x585c100d, + 0x585c0018, 0x80081400, 0x80600400, 0x4800b818, + 0x585c0014, 0x800001c0, 0x05020002, 0x4978b818, + 0x8060c0c4, 0x492fc857, 0x480bc857, 0x4863c857, + 0x480a5803, 0x585c001d, 0x4803c857, 0x585c180e, + 0x800c1400, 0x480a5807, 0x4808b81b, 0x80600400, + 0x4800b81d, 0x4803c857, 0x800c0400, 0x4800b819, + 0x585c0810, 0x4807c857, 0x4803c857, 0x80040d80, + 0x05020004, 0x4978b81d, 0x585c080e, 0x4804b819, + 0x585c080e, 0x80040580, 0x82000500, 0x000003ff, + 0x05020004, 0x585c001f, 0x80000000, 0x4800b81f, + 0x585c080f, 0x48065808, 0x4807c857, 0x64025801, + 0x48625805, 0x412c1000, 0x0001f829, 0x5c00c800, + 0x5c00c000, 0x5c00b800, 0x5c025800, 0x1c01f000, + 0x6483c800, 0x0561fa6b, 0x59e40000, 0x1c01f000, + 0x60001020, 0x80081040, 0x05000022, 0x0561fb8f, + 0x05fc07fd, 0x59800801, 0x82040d00, 0xfff006ff, + 0x82040d40, 0x000ff900, 0x48070001, 0x59e00002, + 0x8c00051e, 0x05020016, 0x605c00f4, 0x50001000, + 0x82081500, 0x03f00000, 0x82080580, 0x00800000, + 0x0500000f, 0x61901000, 0x80081040, 0x0500000c, + 0x59800881, 0x8c040514, 0x05fc07fc, 0x82040500, + 0x00000180, 0x82000580, 0x00000180, 0x05020004, + 0x59800080, 0x84000540, 0x48030080, 0x90000541, + 0x64030000, 0x1c01f000, 0x61880809, 0x0561fb74, + 0x05020003, 0x4803c856, 0x0561fb78, 0x59800802, + 0x4807c857, 0x8c040520, 0x05000007, 0x64030000, + 0x60101020, 0x50080000, 0x8400054c, 0x44001000, + 0x0501f000, 0x82040500, 0x00001084, 0x05fa08f6, + 0x8c040510, 0x05000006, 0x42000000, 0x00112486, + 0x0561fa33, 0x4a030002, 0x00000100, 0x8c040522, + 0x0500002d, 0x59e00002, 0x8c00051e, 0x0502002a, + 0x601c20f6, 0x50102800, 0x4817c857, 0x605c00f4, + 0x50003000, 0x82180500, 0x000f0000, 0x40003800, + 0x40144000, 0x821c0580, 0x00020000, 0x05020002, + 0x902041c0, 0x8c18050c, 0x05000002, 0x842041c0, + 0x82204500, 0x000000ff, 0x90204401, 0x8c200510, + 0x05000005, 0x42000000, 0x00112487, 0x0561fa14, + 0x61fc4001, 0x42001800, 0xffffff00, 0x8c18050c, + 0x05000003, 0x840c19c0, 0x842041c0, 0x821c0580, + 0x00020000, 0x05020003, 0x900c19c0, 0x902041c0, + 0x800c0505, 0x80200540, 0x44002000, 0x4a030002, + 0x00020000, 0x64030000, 0x1c01f000, 0x4d2c0000, + 0x64007000, 0x82040d00, 0x43200f80, 0x05fa08ba, + 0x58380008, 0x4803c00f, 0x583a5807, 0x592c0801, + 0x800409c0, 0x0500000e, 0x592c0000, 0x48000800, + 0x58380006, 0x812c0580, 0x05020002, 0x48047006, + 0x48047007, 0x60042000, 0x055dfd1b, 0x05f808aa, + 0x05f9fc5d, 0x5c025800, 0x05f9f540, 0x4a0370e4, + 0x00003000, 0x0551f978, 0x59a8049f, 0x84000502, + 0x4803549f, 0x583a5807, 0x592c0000, 0x48007007, + 0x800001c0, 0x05020002, 0x49787006, 0x05f9fc4e, + 0x5c025800, 0x42007000, 0x000211e8, 0x0001f03e, + 0x4803c856, 0x4c3c0000, 0x4d2c0000, 0x4d300000, + 0x5830000a, 0x80025d40, 0x0500001a, 0x592e600c, + 0x4c300000, 0x0551f975, 0x5c006000, 0x05f8088a, + 0x58300002, 0x82000580, 0x00000100, 0x05000003, + 0x640a5a0a, 0x492fc857, 0x4c300000, 0x0001fba8, + 0x5c025800, 0x05f9fc34, 0x0009f810, 0x59c80000, + 0x82000540, 0x00001200, 0x48039000, 0x850e1d1c, + 0x5c026000, 0x5c025800, 0x5c007800, 0x1c01f000, + 0x40325800, 0x05f9fc28, 0x05fdf7fa, 0x59300025, + 0x48025814, 0x59300026, 0x48025815, 0x59300a23, + 0x8c04050c, 0x05020007, 0x59300020, 0x59300a21, + 0x800408e0, 0x80040540, 0x5930081f, 0x0501f006, + 0x59300820, 0x59300221, 0x800408e0, 0x80040d40, + 0x5930001f, 0x9c0001c0, 0x9c0409c0, 0x48025816, + 0x48065817, 0x1c01f000, 0x592c0001, 0x80003540, + 0x05f80859, 0x58180a08, 0x82040d00, 0x000000ff, + 0xb004058a, 0x05fa0854, 0x592c1015, 0x592c1a16, + 0x58182209, 0x592c2c16, 0x592c0017, 0x800000e0, + 0x80142d40, 0x592c0017, 0x80003920, 0x58184409, + 0x5818020a, 0x8c20050e, 0x05fa0847, 0x800048e0, + 0x80244d40, 0x5818000b, 0x4802602c, 0x8c20050c, + 0x05020009, 0x901c51c0, 0x841401c0, 0x82003d00, + 0x0000ffff, 0x80140120, 0x80280540, 0x9c0029c0, + 0x0501f003, 0x9c1429c0, 0x841c39c0, 0x480a601f, + 0x480e6020, 0x48126421, 0x48126221, 0x48166022, + 0x481e6423, 0x48226223, 0x48266024, 0x1c01f000, + 0x4c5c0000, 0x592c0001, 0x80006540, 0x05f8082a, + 0x58300a08, 0x82040d00, 0x000000ff, 0xb004058a, + 0x05fa0825, 0x58302c09, 0x8c140506, 0x58300209, + 0x05000002, 0x80080400, 0x48026421, 0x48026221, + 0x5830020a, 0x800008e0, 0x80040540, 0x48026024, + 0x8c14050a, 0x05020004, 0x592c0015, 0x80080400, + 0x4802601f, 0x5830320a, 0x8c140510, 0x0502000c, + 0x90142d03, 0x90140582, 0x0500000e, 0x90140581, + 0x05000007, 0x40080800, 0x90180408, 0x40001000, + 0x0535fe1f, 0x40042000, 0x0501f006, 0x40080800, + 0x40181000, 0x4004b800, 0x0535fe19, 0x40042000, + 0x4c100000, 0x05fdfda8, 0x05f40fff, 0x5c002000, + 0x50200000, 0x80004540, 0x0500005d, 0x58300a08, + 0x82040d00, 0x000000ff, 0xb004058a, 0x05020006, + 0x80204000, 0x58300409, 0x8c000510, 0x05000002, + 0x80204000, 0x50200000, 0x80000540, 0x0500000b, + 0x80301400, 0x58080002, 0x80102480, 0x0500101d, + 0x801021c0, 0x05000009, 0x80285040, 0x05000048, + 0x80204000, 0x05fdf7f4, 0x58300001, 0x80006540, + 0x05000043, 0x05fdf7df, 0x80285040, 0x05000040, + 0x80204000, 0x50200000, 0x80000540, 0x05020009, + 0x58300001, 0x80006540, 0x05000039, 0x58300208, + 0x90004d0f, 0x82244400, 0x0010004b, 0x50204000, + 0x592c020c, 0x8400051e, 0x48025a0c, 0x0501f010, + 0x80102080, 0x80102000, 0x48126012, 0x4813c857, + 0x58080802, 0x40100000, 0x80042480, 0x05f41fc6, + 0x58080000, 0x80102400, 0x48126010, 0x4813c857, + 0x592c020c, 0x8400055e, 0x48025a0c, 0x59300008, + 0x8400052c, 0x48026008, 0x592c1001, 0x58080409, + 0x90000503, 0x90000581, 0x05020011, 0x0561fa77, + 0x0502000f, 0x90280581, 0x05020003, 0x59300812, + 0x0501f007, 0x80280840, 0x5808020a, 0x40001000, + 0x0535fdc3, 0x59300012, 0x80040c00, 0x48066013, + 0x59300008, 0x8400056c, 0x48026008, 0x592c1001, + 0x58080409, 0x8c000510, 0x05000003, 0x0501f822, + 0x05000003, 0x80000580, 0x0501f002, 0x90000541, + 0x5c00b800, 0x1c01f000, 0x592c6801, 0x803469c0, + 0x05000017, 0x58347805, 0x58347409, 0x90380503, + 0x8c380510, 0x0c020006, 0x0c01f001, 0x0010168e, + 0x0010168b, 0x00101691, 0x00101693, 0x00101693, + 0x00101693, 0x0010168e, 0x0010168e, 0x803c00c6, + 0x80102400, 0x0501f004, 0x803c00c6, 0x80102480, + 0x05001003, 0x80000580, 0x1c01f000, 0x90000541, + 0x1c01f000, 0x4c040000, 0x4c080000, 0x4c600000, + 0x592c0208, 0x82000500, 0x000000ff, 0xb00005a8, + 0x05000007, 0x90000582, 0x05000005, 0x90000598, + 0x05000003, 0x90000588, 0x05020037, 0x592c6801, + 0x803469c0, 0x05000034, 0x58340208, 0x82000500, + 0x000000ff, 0xb000058a, 0x0502002f, 0x5834740d, + 0x592cc20b, 0x40380000, 0x8060c480, 0x42007800, + 0x00100044, 0x0501f82a, 0x05fe07ff, 0x40607000, + 0x503c0000, 0x80341400, 0x805c00c6, 0x58088002, + 0x80408480, 0x0500101b, 0x0500001a, 0x58088800, + 0x80448c00, 0x58089001, 0x90489440, 0x59300827, + 0x800409c0, 0x05000018, 0x4844080d, 0x4848080e, + 0x4840080f, 0x4978080c, 0x80380040, 0x05000003, + 0x05020813, 0x4838080c, 0x59300827, 0x4834080a, + 0x483c080b, 0x503c0000, 0x48000809, 0x90000541, + 0x5c00c000, 0x5c001000, 0x5c000800, 0x1c01f000, + 0x58088002, 0x80400106, 0x805cbc80, 0x0501f804, + 0x05fe07dc, 0x80000580, 0x05fdf7f6, 0x4803c856, + 0x803c7800, 0x503c0000, 0x80000540, 0x05000003, + 0x80387040, 0x1c01f000, 0x58340001, 0x80006d40, + 0x0500000a, 0x58340208, 0x9000050f, 0x82000400, + 0x0010004b, 0x50007800, 0x803c79c0, 0x05f40f2a, + 0x80387040, 0x1c01f000, 0x40007000, 0x1c01f000, + 0x802850c6, 0x59306827, 0x58340009, 0x5834100a, + 0x5834180b, 0x5834200c, 0x58344810, 0x80087c00, + 0x583c0002, 0x80284480, 0x0500100f, 0x80102040, + 0x0500001f, 0x80244c80, 0x0500001d, 0x40205000, + 0x800c1800, 0x500c0000, 0x80000d40, 0x05fe07f4, + 0x58081001, 0x42001800, 0x00100042, 0x60240000, + 0x05fdf7ef, 0x80204080, 0x80204000, 0x4810680c, + 0x583c0000, 0x80282c00, 0x583c3001, 0x90183440, + 0x500c0800, 0x48046809, 0x4808680a, 0x480c680b, + 0x4810680c, 0x4814680d, 0x4818680e, 0x4820680f, + 0x48246810, 0x80000580, 0x1c01f000, 0x90000541, + 0x1c01f000, 0x4d2c0000, 0x0001f81f, 0x05f40ef6, + 0x412c1000, 0x5c025800, 0x4a001009, 0x000201d5, + 0x9008040a, 0x48001003, 0x0001f1cb, 0x4d2c0000, + 0x40325800, 0x05f9faa1, 0x5c025800, 0x1c01f000, + 0x4807c857, 0x05f5fee8, 0x42001000, 0x0011458b, + 0x4a001003, 0x00114595, 0x4a001009, 0x000201d5, + 0x4978100a, 0x1c01f000, 0x59e00017, 0x8c000500, + 0x1c01f000, 0x0001f9de, 0x4d040000, 0x4c640000, + 0x4c600000, 0x40120800, 0x400cc800, 0x4014c000, + 0x0501f01a, 0x59e00017, 0x8c00050c, 0x05020005, + 0x59a808a3, 0x58040003, 0x8c000500, 0x0500000d, + 0x4c080000, 0x59a810a2, 0x50080000, 0x84000542, + 0x44001000, 0x5c001000, 0x59e00017, 0x8c00050c, + 0x05fe07fe, 0x58040003, 0x8c000500, 0x05fe07fb, + 0x4d040000, 0x4c640000, 0x4c600000, 0x5804c800, + 0x58060801, 0x5804c002, 0x4a03b805, 0x20000000, + 0x59dc0006, 0x4a03b805, 0x30000000, 0x59dc0006, + 0x4a03b805, 0x70000000, 0x59dc0006, 0x4867b800, + 0x4907b801, 0x6413b802, 0x601c00e2, 0x44600000, 0x4a03b805, 0x30000000, 0x59dc0006, 0x4a03b805, - 0x70000000, 0x59dc0006, 0x4867b800, 0x4907b801, - 0x6413b802, 0x601c00e2, 0x44600000, 0x4a03b805, - 0x30000000, 0x59dc0006, 0x4a03b805, 0x10000003, - 0x59dc0006, 0x8c00053e, 0x05fc07fe, 0x4a03b805, - 0x20000000, 0x59dc0006, 0x5c00c000, 0x5c00c800, - 0x5c020800, 0x1c01f000, 0x4803c856, 0x055dfa08, - 0x0001f1df, 0x59300c03, 0xb0040592, 0x05020037, - 0x59c80000, 0x82000540, 0x00001200, 0x48039000, - 0x850e1d1c, 0x4d2c0000, 0x59325809, 0x42007000, - 0x000211a7, 0x58380800, 0x90040582, 0x0502000c, - 0x58386001, 0x58300009, 0x82000580, 0x0010150e, - 0x05020007, 0x5830000a, 0x812c0580, 0x05020004, - 0x4933c857, 0x4978600a, 0x0501f01e, 0x58386005, - 0x40305000, 0x803061c0, 0x0500001a, 0x58300009, - 0x82000580, 0x0010150e, 0x05020004, 0x5830000a, - 0x812c0580, 0x05000004, 0x40305000, 0x58306000, - 0x05fdf7f5, 0x4933c856, 0x8030058a, 0x58300000, - 0x05000006, 0x48005000, 0x800001c0, 0x05020007, - 0x48287004, 0x0501f005, 0x800001c0, 0x05020002, - 0x48007004, 0x48007005, 0x40325800, 0x05f9fa53, - 0x5c025800, 0x0501f010, 0x59300a03, 0x90040581, - 0x0502000d, 0x42001000, 0x0010e387, 0x50081000, - 0x58080002, 0x82000580, 0x00000100, 0x05000006, - 0x5808000c, 0x81300580, 0x05020003, 0x4933c856, - 0x4978100c, 0x59300004, 0x84000520, 0x48026004, - 0x1c01f000, 0x4803c856, 0x60f00800, 0x48079000, - 0x59c80000, 0x80040500, 0x05fe07fe, 0x497b9005, - 0x4a039035, 0x00880400, 0x59a8003b, 0x800000e0, - 0x4803900e, 0x64c39011, 0x4a03900f, 0x00111b00, - 0x4a039010, 0x00111b00, 0x65db9015, 0x4a039003, - 0x00001f07, 0x6503900d, 0x4a039000, 0x00001600, - 0x1c01f000, 0x59c80007, 0x8c000508, 0x05020885, - 0x59c80800, 0x8c040516, 0x05020003, 0x90000506, - 0x0c01f004, 0x4807c857, 0x9000050e, 0x0c01f001, - 0x00101789, 0x00101788, 0x00106d20, 0x00101788, - 0x0010178b, 0x00101788, 0x0010178b, 0x0010178b, - 0x00101788, 0x00101788, 0x00101788, 0x00101788, - 0x0010178b, 0x00101788, 0x0010178b, 0x00101788, - 0x05f5fe52, 0x4803c857, 0x1c01f000, 0x59c8080c, - 0x4807c857, 0x82040500, 0x00006000, 0x05000003, - 0x055df808, 0x0501f005, 0x82040500, 0x007f0000, - 0x05000004, 0x0559ffd5, 0x0539f899, 0x0501f02c, - 0x90040514, 0x0500000d, 0x055df82d, 0x916c0583, - 0x05000008, 0x0525f911, 0x05000003, 0x051df94c, - 0x0501f004, 0x64075042, 0x6006d800, 0x0525f88e, - 0x0501f820, 0x0501f01e, 0x82040500, 0x00001c00, - 0x05000004, 0x0559fffd, 0x0501f81a, 0x0501f018, - 0x82040500, 0x00000140, 0x05000004, 0x055df80a, - 0x0501f814, 0x0501f012, 0x82040500, 0x00008000, - 0x0500000f, 0x0525f8f9, 0x0500000b, 0x59c400a4, - 0x9000050f, 0x9000058b, 0x05020007, 0x4c040000, - 0x051df946, 0x60780000, 0x80000040, 0x05fe07ff, - 0x5c000800, 0x0559ffd0, 0x0501f802, 0x1c01f000, - 0x4c0c0000, 0x4c100000, 0x4c140000, 0x05fdf8b6, - 0x5c002800, 0x5c002000, 0x5c001800, 0x1c01f000, - 0x4803c856, 0x59a80804, 0x59a8004e, 0x82000500, - 0xfffff000, 0x80040540, 0x4803504e, 0x59a80052, - 0x82000500, 0xfffff000, 0x80040540, 0x48035052, - 0x59a80056, 0x82000500, 0xfffff000, 0x80040540, - 0x48035056, 0x48078882, 0x82040480, 0x00000204, - 0x05021004, 0x42001000, 0x00240f00, 0x0501f00f, - 0x82040480, 0x00000404, 0x05021004, 0x42001000, - 0x00440800, 0x0501f009, 0x82040480, 0x00000804, - 0x05021004, 0x42001000, 0x00840400, 0x0501f003, - 0x42001000, 0x00880400, 0x480b9035, 0x0501f350, - 0x59c80815, 0x05f5fdde, 0x4807c857, 0xb0040d3c, + 0x10000003, 0x59dc0006, 0x8c00053e, 0x05fc07fe, + 0x4a03b805, 0x20000000, 0x59dc0006, 0x5c00c000, + 0x5c00c800, 0x5c020800, 0x1c01f000, 0x4803c856, + 0x0561f912, 0x0001f1e7, 0x59300c03, 0xb0040592, + 0x05020037, 0x59c80000, 0x82000540, 0x00001200, + 0x48039000, 0x850e1d1c, 0x4d2c0000, 0x59325809, + 0x42007000, 0x000211e8, 0x58380800, 0x90040582, + 0x0502000c, 0x58386001, 0x58300009, 0x82000580, + 0x00101580, 0x05020007, 0x5830000a, 0x812c0580, + 0x05020004, 0x4933c857, 0x4978600a, 0x0501f01e, + 0x58386005, 0x40305000, 0x803061c0, 0x0500001a, + 0x58300009, 0x82000580, 0x00101580, 0x05020004, + 0x5830000a, 0x812c0580, 0x05000004, 0x40305000, + 0x58306000, 0x05fdf7f5, 0x4933c856, 0x8030058a, + 0x58300000, 0x05000006, 0x48005000, 0x800001c0, + 0x05020007, 0x48287004, 0x0501f005, 0x800001c0, + 0x05020002, 0x48007004, 0x48007005, 0x40325800, + 0x05f9fa19, 0x5c025800, 0x0501f010, 0x59300a03, + 0x90040581, 0x0502000d, 0x42001000, 0x00112322, + 0x50081000, 0x58080002, 0x82000580, 0x00000100, + 0x05000006, 0x5808000c, 0x81300580, 0x05020003, + 0x4933c856, 0x4978100c, 0x59300004, 0x84000520, + 0x48026004, 0x1c01f000, 0x4803c856, 0x60f00800, 0x48079000, 0x59c80000, 0x80040500, 0x05fe07fe, - 0x8c040504, 0x0500001b, 0x59c80035, 0x48039035, - 0x59a800ca, 0x80000540, 0x05000016, 0x4c300000, - 0x600060de, 0x58300801, 0x82040d00, 0xffc00000, - 0x8004090c, 0x58300000, 0x90000541, 0x48006000, - 0x58300000, 0x8c000500, 0x05fe07fe, 0x82000500, - 0xfc00ffff, 0x80040540, 0x84000574, 0x48006000, - 0x58300000, 0x8c000534, 0x05fe07fe, 0x5c006000, - 0x59c80000, 0x82000540, 0x00001200, 0x48039000, - 0x1c01f000, 0x60100020, 0x50000000, 0x8c000520, - 0x05020006, 0x42006000, 0x7ff4c000, 0x58300003, - 0x8c000502, 0x0502000a, 0x600060de, 0x64686000, - 0x58300000, 0x8c000504, 0x05fe07fe, 0x641c6002, - 0x59a800ca, 0x84000540, 0x480350ca, 0x1c01f000, - 0x600060de, 0x58300801, 0x9004050c, 0x05f60da7, - 0x60f00800, 0x05fdf7c1, 0x4853c857, 0x497b8801, - 0x850e1d1a, 0x5050b000, 0x485bc857, 0x8058b1c0, - 0x0500089d, 0x82580480, 0x00000804, 0x0502189a, - 0x60040000, 0x61000801, 0x0501fd74, 0x40582000, - 0x8050a000, 0x50500000, 0x80102400, 0x9058b483, - 0x8050a000, 0x485bc857, 0x4853c857, 0x50501000, - 0x80082404, 0x60101800, 0x82080500, 0x000000ff, - 0x61000821, 0x0501fd65, 0x80081110, 0x800c1840, - 0x05fe07fa, 0x8050a000, 0x8058b040, 0x05fe07f4, - 0x4803c856, 0x41780000, 0x61000801, 0x0501fd5b, - 0x50501000, 0x80082404, 0x0502087b, 0x4803c856, - 0x1c01f000, 0x4a035076, 0xaabbccdd, 0x600c0000, - 0x0501fcb1, 0x600c0000, 0x0501fcdf, 0x60300868, - 0x0501fd49, 0x90040541, 0x60300868, 0x0501fd4b, - 0x60480888, 0x0501fd44, 0x90040548, 0x60480888, - 0x0501fd46, 0x60180818, 0x0501fd3f, 0x82040540, - 0x00000080, 0x60180818, 0x0501fd40, 0x60480828, - 0x0501fd39, 0x90040541, 0x60480828, 0x0501fd3b, - 0x59a80084, 0x8c00050e, 0x05000006, 0x4803c857, - 0x82000500, 0x0000ff00, 0x80000110, 0x0501f002, - 0x60e00001, 0x60300800, 0x0501fd30, 0x60380940, - 0x0501fd29, 0x82040500, 0xffffff0f, 0x0501fef5, - 0x05020003, 0x90000540, 0x0501f002, 0x90000550, - 0x60380940, 0x0501fd25, 0x60380938, 0x0501fd1e, - 0x90040550, 0x60380938, 0x0501fd20, 0x60800000, - 0x61000859, 0x0501fd1d, 0x61000000, 0x61000851, - 0x0501fd1a, 0x60300000, 0x61800861, 0x0501fd17, - 0x60840000, 0x61800821, 0x0501fd14, 0x59c40001, - 0x84000574, 0x48038801, 0x850e1d5a, 0x61602004, - 0x6029d000, 0x0501f83c, 0x4813c857, 0x61000849, - 0x0501fd05, 0x4807c857, 0x82041500, 0x000000c0, - 0x82081580, 0x000000c0, 0x05000004, 0x80102040, - 0x05000825, 0x05fdf7f3, 0x4803c856, 0x60c82000, - 0x6029d000, 0x0501f82c, 0x60380878, 0x0501fcf6, - 0x90040d01, 0x05020004, 0x80102040, 0x0500081a, - 0x05fdf7f8, 0x4803c856, 0x61702001, 0x6029d000, - 0x052dff41, 0x60380818, 0x0501fceb, 0x90040d10, - 0x05020004, 0x80102040, 0x05f40d10, 0x05fdf7f8, - 0x4803c856, 0x60a02000, 0x6029d000, 0x052dff36, - 0x603808b8, 0x0501fce0, 0x90040d04, 0x05000004, - 0x80102040, 0x05f40d05, 0x05fdf7f8, 0x4803c856, - 0x1c01f000, 0x4803c856, 0x4a03c020, 0x00004010, - 0x4a03c011, 0x40100011, 0x05006000, 0x4203e000, - 0x40000000, 0x4203e000, 0x30000001, 0x4803c856, - 0x0501f000, 0x61201801, 0x800c1840, 0x05fe07ff, - 0x80e9d040, 0x05fe07fc, 0x1c01f000, 0x4803c856, - 0x497b88a9, 0x64078807, 0x497b8807, 0x59c40005, - 0x48038805, 0x0501fde0, 0x0501fe23, 0x0501f9f6, - 0x4a0388a7, 0x0000f7f7, 0x4a0388a3, 0x8000403c, - 0x4a0388ae, 0x000061a8, 0x59c40001, 0x82000500, - 0xfffe7fff, 0x82000540, 0x005fe063, 0x48038801, - 0x4a038810, 0x00410108, 0x4a038811, 0x00520608, - 0x4a038812, 0x00450320, 0x4a038813, 0x00440405, - 0x4a03881c, 0x004132e1, 0x4a038850, 0x80000108, - 0x64238860, 0x64238870, 0x4a038851, 0x80000508, - 0x4a038861, 0x00800000, 0x4a038871, 0x00800000, - 0x4a038852, 0x80000708, 0x4a038862, 0x00800000, - 0x4a038872, 0x00800000, 0x4a038853, 0x80000608, - 0x497b8863, 0x4a038873, 0x00800000, 0x4a038882, - 0x00000840, 0x4a0388a5, 0x000000fe, 0x647b88a6, - 0x4a0388b0, 0x00007530, 0x4a038802, 0x0000ffff, - 0x4a038806, 0xc0e80b00, 0x1c01f000, 0x850e1d4e, - 0x1c01f000, 0x59c40805, 0x59c40006, 0x80040d00, - 0x05f40caa, 0x82040500, 0x00e80b00, 0x05020004, - 0x8c04053e, 0x050208c9, 0x0501f005, 0x82040500, - 0x00880b00, 0x05f60c9a, 0x05f5fca0, 0x4c5c0000, - 0x4c600000, 0x59c4b805, 0x485fc857, 0x59c410a3, - 0x84081518, 0x825c0500, 0x04000000, 0x05020d5c, - 0x59c40006, 0x8c000500, 0x05000003, 0x8c5c0500, - 0x05020080, 0x0521ff65, 0x0500001c, 0x0521ff6f, - 0x0500001a, 0x59c40005, 0x82000500, 0x000000c0, - 0x05000042, 0x0521ff6f, 0x05020040, 0x59c40006, - 0x82000500, 0x000000f0, 0x05020004, 0x4a038805, - 0x000000c0, 0x0501f039, 0x59a80043, 0x84000506, - 0x48035043, 0x42006000, 0xff203fff, 0x42006800, - 0x40000000, 0x051df8f6, 0x60400800, 0x42001000, - 0x001051b3, 0x052dfe99, 0x8c5c0534, 0x0502002b, - 0x4a035041, 0x0000aaaa, 0x59c40005, 0x8c00050c, - 0x0502000f, 0x8c00050e, 0x05020015, 0x8c00050a, - 0x0502001b, 0x8c000508, 0x05000008, 0x59a8003f, - 0x90000589, 0x05020005, 0x42000000, 0x0010e3a4, - 0x0559fe64, 0x0525f8e2, 0x0501f04c, 0x42000000, - 0x0010e3b2, 0x0559fe5f, 0x41781800, 0x60042000, - 0x0501fd13, 0x64035042, 0x0501f00e, 0x42000000, - 0x0010e3b3, 0x0559fe57, 0x41781800, 0x60082000, - 0x0501fd0b, 0x640b5042, 0x0501f006, 0x42000000, - 0x0010e3a6, 0x0559fe4f, 0x0525f873, 0x0501f037, - 0x0525f91f, 0x0501f035, 0x8c5c0534, 0x05000031, - 0x59c40005, 0x8c00053a, 0x05020004, 0x42000000, - 0x0010e39a, 0x0559fe43, 0x4a038805, 0x20000000, - 0x0521ff12, 0x0502000e, 0x4a038805, 0x04000000, - 0x59c418a8, 0x60002000, 0x0501fcf1, 0x0521ff17, - 0x05020005, 0x64075042, 0x6006d800, 0x0521fe8a, - 0x0501f053, 0x41780000, 0x0521fedd, 0x0501fce1, - 0x4000c000, 0x0501fc28, 0x916c1584, 0x0502000b, + 0x497b9005, 0x4a039035, 0x00880400, 0x59a8003d, + 0x800000e0, 0x4803900e, 0x64c39011, 0x4a03900f, + 0x00115aa4, 0x4a039010, 0x00115aa4, 0x65db9015, + 0x4a039003, 0x00001f07, 0x6503900d, 0x4a039000, + 0x00001600, 0x1c01f000, 0x59c80007, 0x8c000508, + 0x05020885, 0x59c80800, 0x8c040516, 0x05020003, + 0x90000506, 0x0c01f004, 0x4807c857, 0x9000050e, + 0x0c01f001, 0x001017fa, 0x001017f9, 0x001070b1, + 0x001017f9, 0x001017fc, 0x001017f9, 0x001017fc, + 0x001017fc, 0x001017f9, 0x001017f9, 0x001017f9, + 0x001017f9, 0x001017fc, 0x001017f9, 0x001017fc, + 0x001017f9, 0x05f5fe1c, 0x4803c857, 0x1c01f000, + 0x59c8080c, 0x4807c857, 0x82040500, 0x00006000, + 0x05000003, 0x055dff12, 0x0501f005, 0x82040500, + 0x007f0000, 0x05000004, 0x055dfedf, 0x0539fce6, + 0x0501f02c, 0x90040514, 0x0500000d, 0x055dff37, + 0x916c0583, 0x05000008, 0x0525fb8a, 0x05000003, + 0x051dfad2, 0x0501f004, 0x64075045, 0x6006d800, + 0x0525fb01, 0x0501f820, 0x0501f01e, 0x82040500, + 0x00001c00, 0x05000004, 0x055dff07, 0x0501f81a, + 0x0501f018, 0x82040500, 0x00000140, 0x05000004, + 0x055dff14, 0x0501f814, 0x0501f012, 0x82040500, + 0x00008000, 0x0500000f, 0x0525fb72, 0x0500000b, + 0x59c400a4, 0x9000050f, 0x9000058b, 0x05020007, + 0x4c040000, 0x051dfacc, 0x60780000, 0x80000040, + 0x05fe07ff, 0x5c000800, 0x055dfeda, 0x0501f802, + 0x1c01f000, 0x4c0c0000, 0x4c100000, 0x4c140000, + 0x05fdf8e3, 0x5c002800, 0x5c002000, 0x5c001800, + 0x1c01f000, 0x4803c856, 0x59a80804, 0x59a80051, + 0x82000500, 0xfffff000, 0x80040540, 0x48035051, + 0x59a80055, 0x82000500, 0xfffff000, 0x80040540, + 0x48035055, 0x59a80059, 0x82000500, 0xfffff000, + 0x80040540, 0x48035059, 0x48078882, 0x82040480, + 0x00000204, 0x05021004, 0x42001000, 0x00240f00, + 0x0501f00f, 0x82040480, 0x00000404, 0x05021004, + 0x42001000, 0x00440800, 0x0501f009, 0x82040480, + 0x00000804, 0x05021004, 0x42001000, 0x00840400, + 0x0501f003, 0x42001000, 0x00880400, 0x480b9035, + 0x0501f35f, 0x59c80815, 0x05f5fda8, 0x4807c857, + 0xb0040d3c, 0x48079000, 0x59c80000, 0x80040500, + 0x05fe07fe, 0x8c040504, 0x0500001b, 0x59c80035, + 0x48039035, 0x59a800cf, 0x80000540, 0x05000016, + 0x4c300000, 0x600060de, 0x58300801, 0x82040d00, + 0xffc00000, 0x8004090c, 0x58300000, 0x90000541, + 0x48006000, 0x58300000, 0x8c000500, 0x05fe07fe, + 0x82000500, 0xfc00ffff, 0x80040540, 0x84000574, + 0x48006000, 0x58300000, 0x8c000534, 0x05fe07fe, + 0x5c006000, 0x59c80000, 0x82000540, 0x00001200, + 0x48039000, 0x1c01f000, 0x60100020, 0x50000000, + 0x8c000520, 0x05020006, 0x42006000, 0x7ff4c000, + 0x58300003, 0x8c000502, 0x0502000a, 0x600060de, + 0x64686000, 0x58300000, 0x8c000504, 0x05fe07fe, + 0x641c6002, 0x59a800cf, 0x84000540, 0x480350cf, + 0x1c01f000, 0x600060de, 0x58300801, 0x9004050c, + 0x05f60d71, 0x60f00800, 0x05fdf7c1, 0x4853c857, + 0x497b8801, 0x850e1d1a, 0x5050b000, 0x485bc857, + 0x8058b1c0, 0x050008a3, 0x82580480, 0x00000804, + 0x050218a0, 0x60040000, 0x61000801, 0x0501fd83, + 0x40582000, 0x8050a000, 0x50500000, 0x80102400, + 0x9058b483, 0x8050a000, 0x485bc857, 0x4853c857, + 0x50501000, 0x80082404, 0x60101800, 0x82080500, + 0x000000ff, 0x61000821, 0x0501fd74, 0x80081110, + 0x800c1840, 0x05fe07fa, 0x8050a000, 0x8058b040, + 0x05fe07f4, 0x4803c856, 0x41780000, 0x61000801, + 0x0501fd6a, 0x50501000, 0x80082404, 0x05020881, + 0x4803c856, 0x1c01f000, 0x4a035079, 0xaabbccdd, + 0x600c0000, 0x0501fcc0, 0x600c0000, 0x0501fcee, + 0x60300868, 0x0501fd58, 0x90040541, 0x60300868, + 0x0501fd5a, 0x60480888, 0x0501fd53, 0x90040548, + 0x60480888, 0x0501fd55, 0x60180818, 0x0501fd4e, + 0x82040540, 0x00000080, 0x60180818, 0x0501fd4f, + 0x60480828, 0x0501fd48, 0x90040541, 0x60480828, + 0x0501fd4a, 0x60300830, 0x0501fd43, 0x82040540, + 0x00000080, 0x60300830, 0x0501fd44, 0x59a80087, + 0x8c00050e, 0x05000006, 0x4803c857, 0x82000500, + 0x0000ff00, 0x80000110, 0x0501f002, 0x60e00001, + 0x60300800, 0x0501fd39, 0x60380940, 0x0501fd32, + 0x82040500, 0xffffff0f, 0x0501fefe, 0x05020003, + 0x90000540, 0x0501f002, 0x90000550, 0x60380940, + 0x0501fd2e, 0x60380938, 0x0501fd27, 0x90040550, + 0x60380938, 0x0501fd29, 0x60800000, 0x61000859, + 0x0501fd26, 0x61000000, 0x61000851, 0x0501fd23, + 0x60300000, 0x61800861, 0x0501fd20, 0x60840000, + 0x61800821, 0x0501fd1d, 0x59c40001, 0x84000574, + 0x48038801, 0x850e1d5a, 0x61602004, 0x6029d000, + 0x0501f83c, 0x4813c857, 0x61000849, 0x0501fd0e, + 0x4807c857, 0x82041500, 0x000000c0, 0x82081580, + 0x000000c0, 0x05000004, 0x80102040, 0x05000825, + 0x05fdf7f3, 0x4803c856, 0x60c82000, 0x6029d000, + 0x0501f82c, 0x60380878, 0x0501fcff, 0x90040d01, + 0x05020004, 0x80102040, 0x0500081a, 0x05fdf7f8, + 0x4803c856, 0x61702001, 0x6029d000, 0x0531fb35, + 0x60380818, 0x0501fcf4, 0x90040d10, 0x05020004, + 0x80102040, 0x05f40cd4, 0x05fdf7f8, 0x4803c856, + 0x60a02000, 0x6029d000, 0x0531fb2a, 0x603808b8, + 0x0501fce9, 0x90040d04, 0x05000004, 0x80102040, + 0x05f40cc9, 0x05fdf7f8, 0x4803c856, 0x1c01f000, + 0x4803c856, 0x4a03c020, 0x00004010, 0x4a03c011, + 0x40100011, 0x05006000, 0x4203e000, 0x40000000, + 0x4203e000, 0x30000001, 0x4803c856, 0x0501f000, + 0x61201801, 0x800c1840, 0x05fe07ff, 0x80e9d040, + 0x05fe07fc, 0x1c01f000, 0x4803c856, 0x497b88a9, + 0x64078807, 0x497b8807, 0x59c40005, 0x48038805, + 0x0501fde9, 0x0501fe2c, 0x0501f9ff, 0x4a0388a7, + 0x0000f7f7, 0x4a0388a3, 0x8000403c, 0x4a0388ae, + 0x000061a8, 0x59c40001, 0x82000500, 0xfffe7fff, + 0x82000540, 0x005fe063, 0x48038801, 0x4a038810, + 0x00410108, 0x4a038811, 0x00520608, 0x4a038812, + 0x00450320, 0x4a038813, 0x00440405, 0x4a03881c, + 0x004132e1, 0x4a038850, 0x80000108, 0x64238860, + 0x64238870, 0x4a038851, 0x80000508, 0x4a038861, + 0x00800000, 0x4a038871, 0x00800000, 0x4a038852, + 0x80000708, 0x4a038862, 0x00800000, 0x4a038872, + 0x00800000, 0x4a038853, 0x80000608, 0x497b8863, + 0x4a038873, 0x00800000, 0x4a038882, 0x00000840, + 0x4a0388a5, 0x000000fe, 0x647b88a6, 0x4a0388b0, + 0x00007530, 0x4a038802, 0x0000ffff, 0x4a038806, + 0xc0e80b00, 0x1c01f000, 0x850e1d4e, 0x1c01f000, + 0x59c40805, 0x59c40006, 0x80040d00, 0x05f40c6e, + 0x82040500, 0x00e80b00, 0x05020004, 0x8c04053e, + 0x050208d2, 0x0501f005, 0x82040500, 0x00880b00, + 0x05f60c5e, 0x05f5fc64, 0x4c5c0000, 0x4c600000, + 0x59c4b805, 0x485fc857, 0x59c410a3, 0x84081518, + 0x825c0500, 0x04000000, 0x05020d65, 0x59c40006, + 0x8c000500, 0x05000003, 0x8c5c0500, 0x05020089, + 0x0525f9d8, 0x0500001c, 0x0525f9e2, 0x0500001a, + 0x59c40005, 0x82000500, 0x000000c0, 0x05000042, + 0x0525f9e2, 0x05020040, 0x59c40006, 0x82000500, + 0x000000f0, 0x05020004, 0x4a038805, 0x000000c0, + 0x0501f039, 0x59a80046, 0x84000506, 0x48035046, + 0x42006000, 0xff203fff, 0x42006800, 0x40000000, + 0x051dfa76, 0x60400800, 0x42001000, 0x001053aa, + 0x0531fa8d, 0x8c5c0534, 0x0502002b, 0x4a035044, + 0x0000aaaa, 0x59c40005, 0x8c00050c, 0x0502000f, + 0x8c00050e, 0x05020015, 0x8c00050a, 0x0502001b, + 0x8c000508, 0x05000008, 0x59a80042, 0x90000589, + 0x05020005, 0x42000000, 0x00112345, 0x055dfd68, + 0x0525fb59, 0x0501f055, 0x42000000, 0x00112353, + 0x055dfd63, 0x41781800, 0x60042000, 0x0501fd1c, + 0x64035045, 0x0501f00e, 0x42000000, 0x00112354, + 0x055dfd5b, 0x41781800, 0x60082000, 0x0501fd14, + 0x640b5045, 0x0501f006, 0x42000000, 0x00112347, + 0x055dfd53, 0x0525fae8, 0x0501f040, 0x0525fb97, + 0x0501f03e, 0x8c5c0534, 0x0500003a, 0x59c40005, + 0x8c00053a, 0x05020004, 0x42000000, 0x0011233b, + 0x055dfd47, 0x4a038805, 0x20000000, 0x0525f985, + 0x0502000e, 0x4a038805, 0x04000000, 0x59c418a8, + 0x60002000, 0x0501fcfa, 0x0525f98a, 0x05020005, + 0x64075045, 0x6006d800, 0x0525f8f7, 0x0501f05c, + 0x41780000, 0x0525f94a, 0x0501fcea, 0x4000c000, + 0x59c400a2, 0x82000500, 0x0000ffff, 0x59881023, + 0x80081400, 0x05021002, 0x81781040, 0x480b1023, + 0x0505f8a7, 0x0501fc28, 0x916c1584, 0x0502000b, 0x8c5c0500, 0x05020013, 0x8d0c0506, 0x05020004, 0x59c410a3, 0x90081548, 0x480b88a3, 0x59c41006, 0x84081540, 0x480b8806, 0x4a038805, 0x04000000, - 0x6006d800, 0x497b503e, 0x8d0c0518, 0x05020004, - 0x4803c856, 0x850e1d06, 0x0519ff45, 0x0519f9e1, + 0x6006d800, 0x497b5041, 0x8d0c0518, 0x05020004, + 0x4803c856, 0x850e1d06, 0x051df8bc, 0x0519fb56, 0x8c5c053c, 0x05020852, 0x8c5c0500, 0x05000031, - 0x42000000, 0x0010e4bc, 0x0559fe12, 0x64078805, - 0x6148b006, 0x6191d000, 0x4c580000, 0x052dfe36, + 0x42000000, 0x00112460, 0x055dfd0d, 0x64078805, + 0x6148b006, 0x6191d000, 0x4c580000, 0x0531fa21, 0x0501fba3, 0x5c00b000, 0x05000004, 0x8058b040, 0x05fe07f9, 0x0501f004, 0x485bc857, 0x64078805, 0x0501f020, 0x485bc857, 0x59c40006, 0x84000500, - 0x48038806, 0x0535fe78, 0x497b8880, 0x0501fda1, + 0x48038806, 0x0539fab6, 0x497b8880, 0x0501fda1, 0x05000008, 0x60000818, 0x0501fbcf, 0x8c040500, - 0x05000004, 0x60142000, 0x0525f908, 0x0501f003, - 0x60182000, 0x0525f905, 0x59c400a3, 0x82000500, - 0xfcf8ffff, 0x480388a3, 0x640b50b4, 0x6012d800, - 0x6403506a, 0x64078805, 0x05f5fe0c, 0x0501fb19, - 0x497b5068, 0x64075075, 0x497b50a6, 0x05f5fa03, + 0x05000004, 0x60142000, 0x0525fb78, 0x0501f003, + 0x60182000, 0x0525fb75, 0x59c400a3, 0x82000500, + 0xfcf8ffff, 0x480388a3, 0x640b50b9, 0x6012d800, + 0x6403506d, 0x64078805, 0x05f5fdbb, 0x0501fb19, + 0x497b506b, 0x64075078, 0x497b50a9, 0x05f5f9ba, 0x825cbd00, 0xbbfffffe, 0x485f8805, 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x4d180000, 0x59c41004, 0x480bc857, 0x8c080500, 0x05000006, 0x4803c856, - 0x4a01a8e5, 0x00000800, 0x0535fefb, 0x0501f007, + 0x4a01a8e5, 0x00000800, 0x0539fb39, 0x0501f007, 0x82080500, 0x000001f0, 0x05000004, 0x4803c856, - 0x0539f820, 0x05360f13, 0x4a038805, 0x80000000, + 0x0539fc5e, 0x053a0b51, 0x4a038805, 0x80000000, 0x5c023000, 0x1c01f000, 0x59c408a3, 0x4807c857, 0x84040d40, 0x480788a3, 0x1c01f000, 0x4d900000, 0x4dd00000, 0x4da40000, 0x4d140000, 0x4cd80000, - 0x4a038805, 0x40000000, 0x42000000, 0x0010e3ac, - 0x0559fdbc, 0x0535faf2, 0x59c41004, 0x8c080500, + 0x4a038805, 0x40000000, 0x42000000, 0x0011234d, + 0x055dfcb7, 0x0535ff30, 0x59c41004, 0x8c080500, 0x05000040, 0x598e600b, 0x4a01a8e5, 0x00000800, 0x813261c0, 0x05000024, 0x59300403, 0x900005b2, 0x05020021, 0x5930001e, 0x48038833, 0x4a038807, - 0x00018000, 0x6009d000, 0x052dfdd3, 0x497b8807, - 0x6009d000, 0x052dfdd0, 0x0535fd6c, 0x60c1d0ea, - 0x052dfdcd, 0x59c408a4, 0x90040d0f, 0x90040d80, + 0x00018000, 0x6009d000, 0x0531f9be, 0x497b8807, + 0x6009d000, 0x0531f9bb, 0x0539f9aa, 0x60c1d0ea, + 0x0531f9b8, 0x59c408a4, 0x90040d0f, 0x90040d80, 0x05000004, 0x42000000, 0x00200000, 0x0501fb7c, - 0x0535fa29, 0x59300009, 0x80000540, 0x05f40b97, + 0x0535fe67, 0x59300009, 0x80000540, 0x05f40b52, 0x40025800, 0x4a025a08, 0x00000103, 0x5931d82d, - 0x58ef400b, 0x58ec0009, 0x0801f800, 0x0005ffdc, + 0x58ef400b, 0x58ec0009, 0x0801f800, 0x0009f810, 0x0501f032, 0x598c000d, 0x82001c80, 0x000000c8, 0x0502100c, 0x80000000, 0x4803180d, 0x59c400a4, 0x9000050f, 0x90000582, 0x05020004, 0x42000000, - 0x00200000, 0x0501fb62, 0x052dfd59, 0x0501f023, - 0x4933c857, 0x0535fd45, 0x813261c0, 0x0500001f, - 0x64066203, 0x609e7000, 0x0009f800, 0x0501f01b, - 0x0535ffc8, 0x05000019, 0x0535ffee, 0x052dfd74, + 0x00200000, 0x0501fb62, 0x0531f93d, 0x0501f023, + 0x4933c857, 0x0539f983, 0x813261c0, 0x0500001f, + 0x64066203, 0x609e7000, 0x0009f839, 0x0501f01b, + 0x0539fc06, 0x05000019, 0x0539fc2c, 0x0531f958, 0x59926005, 0x813261c0, 0x0500000d, 0x61201801, - 0x0535ffb7, 0x0502000a, 0x59c400a4, 0x9000050f, + 0x0539fbf5, 0x0502000a, 0x59c400a4, 0x9000050f, 0x90000582, 0x05020004, 0x42000000, 0x00200000, - 0x0501fb47, 0x052dfd44, 0x0501f008, 0x4933c857, - 0x0535fcd1, 0x813261c0, 0x05000004, 0x613e7000, - 0x640e6203, 0x0009f800, 0x5c01b000, 0x5c022800, - 0x5c034800, 0x5c03a000, 0x5c032000, 0x0535f281, + 0x0501fb47, 0x0531f928, 0x0501f008, 0x4933c857, + 0x0539f90f, 0x813261c0, 0x05000004, 0x613e7000, + 0x640e6203, 0x0009f839, 0x5c01b000, 0x5c022800, + 0x5c034800, 0x5c03a000, 0x5c032000, 0x0535f6bf, 0x810c0d80, 0x8c04050e, 0x05000055, 0x4803c857, - 0x8d0c050e, 0x05000021, 0x850e1d0e, 0x497b50b4, - 0x42000000, 0x0010e393, 0x0559fd4e, 0x0559fdfa, - 0x0001ff09, 0x60441100, 0x497b50a8, 0x59c40001, + 0x8d0c050e, 0x05000021, 0x850e1d0e, 0x497b50b9, + 0x42000000, 0x00112334, 0x055dfc49, 0x055dfcf5, + 0x0001ff2f, 0x60441100, 0x497b50ab, 0x59c40001, 0x82000500, 0x00018000, 0x90001d80, 0x0500000b, 0x82001d80, 0x00008000, 0x0500000a, 0x82001d80, 0x00010000, 0x05000009, 0x82001d80, 0x00018000, - 0x05000008, 0x05f5fb39, 0x60001800, 0x0501f006, + 0x05000008, 0x05f5faf4, 0x60001800, 0x0501f006, 0x60041800, 0x0501f004, 0x600c1800, 0x0501f002, - 0x60101800, 0x0515f533, 0x850e1d4e, 0x59a808b4, + 0x60101800, 0x0515f650, 0x850e1d4e, 0x59a808b9, 0x800409c0, 0x05020006, 0x59c4000d, 0x8c000520, 0x05000003, 0x600c1800, 0x0501f002, 0x40041800, - 0x0559fdbd, 0x4c0c0000, 0x4c0c0000, 0x41782000, + 0x055dfcb8, 0x4c0c0000, 0x4c0c0000, 0x41782000, 0x0501fcc8, 0x0500000f, 0x0501fcad, 0x60042000, 0x0502000c, 0x0501fcb5, 0x05020006, 0x60082000, 0x0501f8b4, 0x05020007, 0x60102000, 0x0501f005, 0x600c2000, 0x0501f89d, 0x05020002, 0x60142000, - 0x5c001800, 0x60481100, 0x5c001800, 0x0515fd11, - 0x05f5fd32, 0x0559fe1f, 0x0502000c, 0x4d200000, + 0x5c001800, 0x60481100, 0x5c001800, 0x0515fe2e, + 0x05f5fce1, 0x055dfd1a, 0x0502000c, 0x4d200000, 0x61fe4001, 0x0501f857, 0x5c024000, 0x4d400000, - 0x4d3c0000, 0x60a28000, 0x60227800, 0x0501fffb, + 0x4d3c0000, 0x60a28000, 0x60227800, 0x0505f80e, 0x5c027800, 0x5c028000, 0x1c01f000, 0x80000540, - 0x05fc07fe, 0x4d3c0000, 0x60067800, 0x054dfb48, + 0x05fc07fe, 0x4d3c0000, 0x60067800, 0x0551f86f, 0x5c027800, 0x1c01f000, 0x4803c857, 0x82000400, - 0x00102853, 0x50000800, 0x82040d00, 0x000000ff, + 0x001028fb, 0x50000800, 0x82040d00, 0x000000ff, 0x1c01f000, 0x4803c856, 0x4c580000, 0x6040b000, 0x497b88ac, 0x497b88ad, 0x8058b040, 0x05fe07fe, 0x5c00b000, 0x1c01f000, 0x4807c857, 0x80041908, - 0x480f88ac, 0x9004250f, 0x82102400, 0x0010d15b, + 0x480f88ac, 0x9004250f, 0x82102400, 0x0010d8d9, 0x50102000, 0x59c400ad, 0x80100540, 0x480f88ac, - 0x480388ad, 0x0559fe18, 0x05000002, 0x4807503d, + 0x480388ad, 0x055dfd13, 0x05000002, 0x48075040, 0x1c01f000, 0x4807c857, 0x80041908, 0x480f88ac, - 0x9004250f, 0x82102400, 0x0010d15b, 0x50102000, + 0x9004250f, 0x82102400, 0x0010d8d9, 0x50102000, 0x59c400ad, 0x80101500, 0x05000004, 0x80100580, 0x480f88ac, 0x480388ad, 0x1c01f000, 0x4803c857, 0x4c080000, 0x4c040000, 0x4c000000, 0x59c40892, @@ -1773,12 +1805,12 @@ static const uint32_t isp_2500_risc_code[] = { 0x48038886, 0x8058b040, 0x05fe07fe, 0x497b8886, 0x5c000000, 0x5c000800, 0x5c001000, 0x1c01f000, 0x4803c856, 0x8d0c0520, 0x05000003, 0x60ba8000, - 0x0555f47d, 0x1c01f000, 0x59a800ca, 0x80000540, - 0x05000008, 0x0521fd7d, 0x60280800, 0x0502000e, + 0x0559f344, 0x1c01f000, 0x59a800cf, 0x80000540, + 0x05000008, 0x0521ffe7, 0x60280800, 0x0502000e, 0x600008de, 0x58040001, 0x8000092c, 0x0501f00a, 0x59c80835, 0x82040d00, 0x00001f00, 0x80040910, - 0x80040800, 0x59a800ca, 0x80000540, 0x05000002, - 0x61680804, 0x4807c857, 0x1c01f000, 0x59a800ca, + 0x80040800, 0x59a800cf, 0x80000540, 0x05000002, + 0x61680804, 0x4807c857, 0x1c01f000, 0x59a800cf, 0x80000540, 0x0500001c, 0x599c1a01, 0x60a80801, 0x820c0480, 0x00000204, 0x0500100a, 0x61680800, 0x820c0480, 0x00000404, 0x05001006, 0x60b80800, @@ -1786,116 +1818,116 @@ static const uint32_t isp_2500_risc_code[] = { 0x4c300000, 0x600060de, 0x58301000, 0x82081500, 0xfc00ffff, 0x800400e0, 0x80080540, 0x84000574, 0x48006000, 0x58300000, 0x8c000534, 0x05fe07fe, - 0x5c006000, 0x1c01f000, 0x4c000000, 0x59a80069, + 0x5c006000, 0x1c01f000, 0x4c000000, 0x59a8006c, 0x4803c857, 0x90000580, 0x5c000000, 0x1c01f000, - 0x4c000000, 0x59a80069, 0x4803c857, 0x90000581, - 0x5c000000, 0x1c01f000, 0x4c000000, 0x59a80069, + 0x4c000000, 0x59a8006c, 0x4803c857, 0x90000581, + 0x5c000000, 0x1c01f000, 0x4c000000, 0x59a8006c, 0x4803c857, 0x90000583, 0x5c000000, 0x1c01f000, - 0x4c000000, 0x59a80069, 0x4803c857, 0x90000584, - 0x5c000000, 0x1c01f000, 0x4c000000, 0x59a80069, + 0x4c000000, 0x59a8006c, 0x4803c857, 0x90000584, + 0x5c000000, 0x1c01f000, 0x4c000000, 0x59a8006c, 0x90000582, 0x5c000000, 0x1c01f000, 0x4c000000, - 0x4c040000, 0x4c080000, 0x4c380000, 0x59a8006c, - 0x90000c87, 0x05f61a55, 0x0c01f806, 0x5c007000, + 0x4c040000, 0x4c080000, 0x4c380000, 0x59a8006f, + 0x90000c87, 0x05f61a10, 0x0c01f806, 0x5c007000, 0x5c001000, 0x5c000800, 0x5c000000, 0x1c01f000, - 0x00101b93, 0x00101ba0, 0x00101bad, 0x00101bae, - 0x00101bcc, 0x00101bcd, 0x00101bce, 0x4803c856, - 0x6403506e, 0x600c0000, 0x0501f9af, 0x600c0000, - 0x0501f97d, 0x0501fa06, 0x4803c856, 0x641b506c, - 0x60740800, 0x42001000, 0x00101bcf, 0x052df449, - 0x497b5071, 0x64db5066, 0x64ab5065, 0x4803c856, - 0x6407506e, 0x600c0000, 0x0501f96f, 0x4803c856, - 0x641b506c, 0x60740800, 0x42001000, 0x00101bcf, - 0x052df43c, 0x05f5fa2d, 0x64db5066, 0x4803c856, - 0x640f506e, 0x60000800, 0x0501f9ff, 0x90040d1c, + 0x00101c13, 0x00101c20, 0x00101c2d, 0x00101c2e, + 0x00101c4c, 0x00101c4d, 0x00101c4e, 0x4803c856, + 0x64035071, 0x600c0000, 0x0501f9af, 0x600c0000, + 0x0501f97d, 0x0501fa06, 0x4803c856, 0x641b506f, + 0x60740800, 0x42001000, 0x00101c4f, 0x0531f02d, + 0x497b5074, 0x64db5069, 0x64ab5068, 0x4803c856, + 0x64075071, 0x600c0000, 0x0501f96f, 0x4803c856, + 0x641b506f, 0x60740800, 0x42001000, 0x00101c4f, + 0x0531f020, 0x05f5f9e8, 0x64db5069, 0x4803c856, + 0x640f5071, 0x60000800, 0x0501f9ff, 0x90040d1c, 0x9004059c, 0x05000008, 0x90040598, 0x05000008, 0x90040594, 0x05000008, 0x90040590, 0x05000008, - 0x05f5fa1e, 0x60040000, 0x0501f006, 0x60000000, + 0x05f5f9d9, 0x60040000, 0x0501f006, 0x60000000, 0x0501f004, 0x60080000, 0x0501f002, 0x600c0000, - 0x0501f951, 0x497b5072, 0x4803c856, 0x641b506c, - 0x60740800, 0x42001000, 0x00101bcf, 0x052df41d, - 0x05f5fa0e, 0x05f5fa0d, 0x1c01f000, 0x4c000000, - 0x4c040000, 0x4c080000, 0x4c380000, 0x59a8006e, - 0x90000c87, 0x05f61a05, 0x0c01f806, 0x5c007000, + 0x0501f951, 0x497b5075, 0x4803c856, 0x641b506f, + 0x60740800, 0x42001000, 0x00101c4f, 0x0531f001, + 0x05f5f9c9, 0x05f5f9c8, 0x1c01f000, 0x4c000000, + 0x4c040000, 0x4c080000, 0x4c380000, 0x59a80071, + 0x90000c87, 0x05f619c0, 0x0c01f806, 0x5c007000, 0x5c001000, 0x5c000800, 0x5c000000, 0x1c01f000, - 0x00101be3, 0x00101bff, 0x00101c50, 0x00101c65, - 0x00101c79, 0x00101c82, 0x00101c83, 0x0501f990, - 0x05020018, 0x59a81074, 0x60000800, 0x0501f9ca, + 0x00101c63, 0x00101c7f, 0x00101cd0, 0x00101ce5, + 0x00101cf9, 0x00101d02, 0x00101d03, 0x0501f990, + 0x05020018, 0x59a81077, 0x60000800, 0x0501f9ca, 0x90040d1c, 0x9004059c, 0x05000008, 0x90040598, 0x05000008, 0x90040594, 0x05000008, 0x90040590, - 0x05000008, 0x05f5f9e9, 0x84081540, 0x0501f006, + 0x05000008, 0x05f5f9a4, 0x84081540, 0x0501f006, 0x84081542, 0x0501f004, 0x84081544, 0x0501f002, - 0x84081546, 0x480b5074, 0x6407506c, 0x0501f003, + 0x84081546, 0x480b5077, 0x6407506f, 0x0501f003, 0x0501f8be, 0x05fdff9d, 0x1c01f000, 0x0501f885, 0x0500004f, 0x0501f972, 0x05020029, 0x60000800, 0x0501f9ad, 0x59c41001, 0x82081500, 0x00018000, 0x90040d1c, 0x90040590, 0x05000042, 0x90040594, 0x05000006, 0x90040598, 0x0500000a, 0x9004059c, - 0x0500000a, 0x05f5f9c9, 0x90080580, 0x05000039, + 0x0500000a, 0x05f5f984, 0x90080580, 0x05000039, 0x82080580, 0x00008000, 0x05000036, 0x0501f003, 0x90080580, 0x05000033, 0x60000800, 0x0501f996, - 0x59a80074, 0x90040d1c, 0x90041594, 0x05000006, + 0x59a80077, 0x90040d1c, 0x90041594, 0x05000006, 0x90041598, 0x05000006, 0x9004159c, 0x05000006, - 0x05f609b6, 0x84000544, 0x0501f004, 0x84000542, - 0x0501f002, 0x84000540, 0x48035074, 0x59a80071, - 0x80000000, 0x48035071, 0x90000585, 0x05000003, - 0x0501f859, 0x0501f01d, 0x497b5071, 0x59c40801, + 0x05f60971, 0x84000544, 0x0501f004, 0x84000542, + 0x0501f002, 0x84000540, 0x48035077, 0x59a80074, + 0x80000000, 0x48035074, 0x90000585, 0x05000003, + 0x0501f859, 0x0501f01d, 0x497b5074, 0x59c40801, 0x82040d00, 0x00018000, 0x90040580, 0x0500000b, 0x82040580, 0x00008000, 0x0500000a, 0x82040580, 0x00010000, 0x05000009, 0x82040580, 0x00018000, - 0x05000008, 0x05f5f999, 0x60040000, 0x0501f006, + 0x05000008, 0x05f5f954, 0x60040000, 0x0501f006, 0x60000000, 0x0501f004, 0x60080000, 0x0501f002, - 0x600c0000, 0x0501f8fc, 0x640b506e, 0x0501f003, - 0x640f506c, 0x0501f002, 0x05fdff59, 0x1c01f000, - 0x0501f834, 0x05000013, 0x59a80065, 0x80000040, - 0x48035065, 0x0501f91e, 0x05020004, 0x640f506c, - 0x497b506d, 0x0501f00b, 0x59a80065, 0x80000540, + 0x600c0000, 0x0501f8fc, 0x640b5071, 0x0501f003, + 0x640f506f, 0x0501f002, 0x05fdff59, 0x1c01f000, + 0x0501f834, 0x05000013, 0x59a80068, 0x80000040, + 0x48035068, 0x0501f91e, 0x05020004, 0x640f506f, + 0x497b5070, 0x0501f00b, 0x59a80068, 0x80000540, 0x05020003, 0x0501f891, 0x0501f002, 0x0501f841, - 0x0501f829, 0x497b5071, 0x6407506e, 0x05fdff44, + 0x0501f829, 0x497b5074, 0x64075071, 0x05fdff44, 0x1c01f000, 0x0501f81f, 0x05000012, 0x0501f90c, - 0x0502000d, 0x59a80072, 0x80000000, 0x48035072, - 0x90000587, 0x0502000a, 0x642b5068, 0x497b5075, - 0x59a80074, 0x8400055e, 0x48035074, 0x4803c857, - 0x0501f004, 0x0501f814, 0x6413506e, 0x05fdff4f, + 0x0502000d, 0x59a80075, 0x80000000, 0x48035075, + 0x90000587, 0x0502000a, 0x642b506b, 0x497b5078, + 0x59a80077, 0x8400055e, 0x48035077, 0x4803c857, + 0x0501f004, 0x0501f814, 0x64135071, 0x05fdff4f, 0x1c01f000, 0x0501f80b, 0x05000007, 0x0501f8f8, 0x05020003, 0x05fdff32, 0x0501f003, 0x0501f80a, - 0x05fdff46, 0x1c01f000, 0x05f5f958, 0x05f5f957, - 0x59a80066, 0x80000040, 0x48035066, 0x05000885, + 0x05fdff46, 0x1c01f000, 0x05f5f913, 0x05f5f912, + 0x59a80069, 0x80000040, 0x48035069, 0x05000885, 0x1c01f000, 0x4c040000, 0x60000800, 0x0501f926, 0x90040d1c, 0x9004059c, 0x05000008, 0x90040598, 0x0500000a, 0x90040594, 0x0500000a, 0x90040590, - 0x05000004, 0x05f5f945, 0x600c0000, 0x0501f006, + 0x05000004, 0x05f5f900, 0x600c0000, 0x0501f006, 0x60080000, 0x0501f004, 0x60040000, 0x0501f002, 0x60000000, 0x0501f8a8, 0x5c000800, 0x1c01f000, 0x4c040000, 0x59c40801, 0x82040d00, 0x00018000, 0x90040580, 0x0500000b, 0x82040580, 0x00008000, 0x0500000c, 0x82040580, 0x00010000, 0x0500000b, - 0x82040580, 0x00018000, 0x05000004, 0x05f5f92b, + 0x82040580, 0x00018000, 0x05000004, 0x05f5f8e6, 0x600c0000, 0x0501f006, 0x60080000, 0x0501f004, 0x60040000, 0x0501f002, 0x60000000, 0x0501f85e, - 0x5c000800, 0x1c01f000, 0x4c040000, 0x59a80071, - 0x80000000, 0x48035071, 0x90000585, 0x05020019, - 0x497b5071, 0x59c40801, 0x82040d00, 0x00018000, + 0x5c000800, 0x1c01f000, 0x4c040000, 0x59a80074, + 0x80000000, 0x48035074, 0x90000585, 0x05020019, + 0x497b5074, 0x59c40801, 0x82040d00, 0x00018000, 0x90040580, 0x0500000b, 0x82040580, 0x00008000, 0x0500000c, 0x82040580, 0x00010000, 0x0500000b, - 0x82040580, 0x00018000, 0x05000004, 0x05f5f90b, + 0x82040580, 0x00018000, 0x05000004, 0x05f5f8c6, 0x600c0000, 0x0501f006, 0x60080000, 0x0501f004, 0x60040000, 0x0501f002, 0x60000000, 0x0501f83e, 0x60000800, 0x0501f8d8, 0x90040d1c, 0x9004059c, 0x05000008, 0x90040598, 0x0500000a, 0x90040594, - 0x0500000a, 0x90040590, 0x05000004, 0x05f5f8f7, + 0x0500000a, 0x90040590, 0x05000004, 0x05f5f8b2, 0x600c0000, 0x0501f006, 0x60080000, 0x0501f004, 0x60040000, 0x0501f002, 0x60000000, 0x0501f85a, - 0x5c000800, 0x1c01f000, 0x4c200000, 0x59a80074, - 0x82000500, 0x00007fff, 0x05f408e8, 0x59a84073, - 0x80204102, 0x05f418e5, 0x48235073, 0x80204500, + 0x5c000800, 0x1c01f000, 0x4c200000, 0x59a80077, + 0x82000500, 0x00007fff, 0x05f408a3, 0x59a84076, + 0x80204102, 0x05f418a0, 0x48235076, 0x80204500, 0x05fc07fb, 0x8c000506, 0x05020008, 0x8c000504, 0x05020008, 0x8c000502, 0x05020008, 0x8c000500, - 0x05020008, 0x05f5f8d9, 0x600c0000, 0x0501f006, + 0x05020008, 0x05f5f894, 0x600c0000, 0x0501f006, 0x60080000, 0x0501f004, 0x60000000, 0x0501f002, 0x60040000, 0x0501f80c, 0x5c004000, 0x1c01f000, - 0x05011000, 0x4a03c840, 0x0010dc6c, 0x6427c842, - 0x40000000, 0x05fd17ff, 0x64235073, 0x6403506a, - 0x1c01f000, 0x4c000000, 0x59a800a7, 0x8c000500, + 0x05011000, 0x4a03c840, 0x00111bef, 0x6427c842, + 0x40000000, 0x05fd17ff, 0x64235076, 0x6403506d, + 0x1c01f000, 0x4c000000, 0x59a800aa, 0x8c000500, 0x05020002, 0x0501f960, 0x5c000000, 0x0501fa6b, 0x60080800, 0x0501f894, 0x82041500, 0xffffffe3, 0x59c41801, 0x820c1d00, 0xfffe7fff, 0x800001c0, @@ -1904,8 +1936,8 @@ static const uint32_t isp_2500_risc_code[] = { 0x820c1d40, 0x00008000, 0x840c1d32, 0x0501f00d, 0x90000d82, 0x05020006, 0x90080554, 0x820c1d40, 0x00010000, 0x840c1d32, 0x0501f006, 0x90000d83, - 0x05f608a2, 0x90080550, 0x820c1d40, 0x02018000, - 0x60080800, 0x0501f879, 0x480f8801, 0x59a800a7, + 0x05f6085d, 0x90080550, 0x820c1d40, 0x02018000, + 0x60080800, 0x0501f879, 0x480f8801, 0x59a800aa, 0x8c000500, 0x05020002, 0x0501f13c, 0x1c01f000, 0x1c01f000, 0x4c000000, 0x0501f92e, 0x5c000000, 0x0501fa3e, 0x60000800, 0x0501f867, 0x82041500, @@ -1913,7 +1945,7 @@ static const uint32_t isp_2500_risc_code[] = { 0x90000d81, 0x05020007, 0x9008055c, 0x840c1d30, 0x0501f00d, 0x90080558, 0x840c1d30, 0x0501f00a, 0x90000d82, 0x05020004, 0x90080554, 0x840c1d30, - 0x0501f005, 0x90000d83, 0x05f6087c, 0x90080550, + 0x0501f005, 0x90000d83, 0x05f60837, 0x90080550, 0x840c1d70, 0x480f8801, 0x60000800, 0x0501f853, 0x0501fa1c, 0x0500000d, 0x4a03c014, 0x00200020, 0x60000800, 0x0501f848, 0x90040d1c, 0x90040590, @@ -1944,18 +1976,18 @@ static const uint32_t isp_2500_risc_code[] = { 0x480388a3, 0x480788a3, 0x1c01f000, 0x59c400a3, 0x84000556, 0x480388a3, 0x84000516, 0x480388a3, 0x1c01f000, 0x485fc857, 0x4863c857, 0x4c640000, - 0x4d3c0000, 0x4d400000, 0x0535fa7b, 0x48635009, + 0x4d3c0000, 0x4d400000, 0x0535feb9, 0x48635009, 0x40601800, 0x60002000, 0x0501f8b5, 0x42000000, - 0x0010e3b1, 0x0559f9fb, 0x82600500, 0x0000ff00, + 0x00112352, 0x055df8f6, 0x82600500, 0x0000ff00, 0x82000580, 0x0000f700, 0x05020004, 0x42000000, - 0x0010e399, 0x0559f9f3, 0x0559fb02, 0x05020084, + 0x0011233a, 0x055df8ee, 0x055df9fd, 0x05020084, 0x82600d00, 0x0000ff00, 0x61fe41ff, 0x800409c0, 0x0500001b, 0x82041580, 0x0000f700, 0x05000013, 0x82041580, 0x0000f800, 0x05000010, 0x82041580, 0x0000ff00, 0x6000c800, 0x05000029, 0x840439c0, - 0x0505f82c, 0x05020019, 0x83200400, 0x0010d17b, + 0x0505f848, 0x05020019, 0x83200400, 0x0010d8f9, 0x50024800, 0x59240200, 0x8c000500, 0x05000013, - 0x6004c800, 0x0501f01e, 0x42024800, 0x0010e512, + 0x6004c800, 0x0501f01e, 0x42024800, 0x001124b6, 0x59240200, 0x8c000502, 0x0500000c, 0x59c410a3, 0x82081500, 0x00008000, 0x05000008, 0x59c410a7, 0x82081500, 0x0000ff00, 0x82081580, 0x0000ff00, @@ -1965,23 +1997,23 @@ static const uint32_t isp_2500_risc_code[] = { 0x60128000, 0x60227800, 0x0501f004, 0x850e1d40, 0x60128000, 0x417a7800, 0x59a80005, 0x8c000502, 0x05020004, 0x8d0c050a, 0x05020045, 0x850e1d4a, - 0x42000000, 0x0010e398, 0x0559f9ae, 0x59a81809, - 0x604c1100, 0x0515f9ab, 0x83200580, 0x0000ffff, + 0x42000000, 0x00112339, 0x055df8a9, 0x59a81809, + 0x604c1100, 0x0515fac8, 0x83200580, 0x0000ffff, 0x05000018, 0x59240400, 0x8c000508, 0x05000009, - 0x417a7800, 0x4d300000, 0x417a6000, 0x0505f82a, + 0x417a7800, 0x4d300000, 0x417a6000, 0x0505f850, 0x5c026000, 0x59240400, 0x8c00050a, 0x05020030, 0x4d400000, 0x82600500, 0x000000ff, 0x61fe89ff, - 0x40643000, 0x603a8000, 0x0555f960, 0x60040800, - 0x60001002, 0x0531f8fb, 0x5c028000, 0x0501f024, + 0x40643000, 0x603a8000, 0x0559f827, 0x60040800, + 0x60001002, 0x0531fd2f, 0x5c028000, 0x0501f024, 0x8d0c0520, 0x05000018, 0x4c580000, 0x42024800, - 0x0010e512, 0x0559faa3, 0x4d400000, 0x59240200, + 0x001124b6, 0x055df99e, 0x4d400000, 0x59240200, 0x8c000500, 0x05000004, 0x60040800, 0x60001002, - 0x0531f8ec, 0x91264c0d, 0x8058b040, 0x05fe07f8, - 0x603a8000, 0x61fe89ff, 0x40643000, 0x0555f947, + 0x0531fd20, 0x91264c0d, 0x8058b040, 0x05fe07f8, + 0x603a8000, 0x61fe89ff, 0x40643000, 0x0559f80e, 0x5c028000, 0x5c00b000, 0x599c0817, 0x8c04050a, - 0x0502000b, 0x493fc857, 0x4943c857, 0x0501fc6b, + 0x0502000b, 0x493fc857, 0x4943c857, 0x0501fc7e, 0x0501f007, 0x8d0c0520, 0x05000005, 0x603e8000, - 0x61fe89ff, 0x60003000, 0x0555f93b, 0x497b8880, + 0x61fe89ff, 0x60003000, 0x0559f802, 0x497b8880, 0x5c028000, 0x5c027800, 0x5c00c800, 0x1c01f000, 0x60000800, 0x05fdff3c, 0x90040542, 0x60000800, 0x05fdf73e, 0x60080800, 0x05fdff37, 0x90040542, @@ -1993,20 +2025,20 @@ static const uint32_t isp_2500_risc_code[] = { 0x80040d80, 0x05fe07fb, 0x1c01f000, 0x59a80005, 0x8c000500, 0x05000008, 0x59a80008, 0x8c000500, 0x05020005, 0x84000540, 0x48035008, 0x60581100, - 0x0515f940, 0x1c01f000, 0x1c01f000, 0x59c40801, + 0x0515fa5d, 0x1c01f000, 0x1c01f000, 0x59c40801, 0x82040d00, 0x00018000, 0x82040d80, 0x00018000, 0x05000002, 0x84081518, 0x480b88a3, 0x1c01f000, 0x42000800, 0x7ff4818e, 0x59e00002, 0x8c00051e, 0x05020003, 0x42000800, 0x7ff4808e, 0x58041800, - 0x480f5084, 0x8c0c0500, 0x05020007, 0x8c0c0502, + 0x480f5087, 0x8c0c0500, 0x05020007, 0x8c0c0502, 0x05000005, 0x58044001, 0x58042002, 0x58041003, 0x0501f007, 0x42004000, 0x0003c014, 0x42002000, - 0x0003c014, 0x42001000, 0x0002e014, 0x480b507e, - 0x4813507f, 0x48235080, 0x8c0c0500, 0x05020007, + 0x0003c014, 0x42001000, 0x0002e014, 0x480b5081, + 0x48135082, 0x48235083, 0x8c0c0500, 0x05020007, 0x8c0c0504, 0x05000005, 0x58044004, 0x58042005, 0x58041006, 0x0501f004, 0x60c8400d, 0x60c8200d, - 0x60c8100d, 0x480b5081, 0x48135082, 0x48235083, - 0x1c01f000, 0x59a81081, 0x59a82082, 0x59a84083, + 0x60c8100d, 0x480b5084, 0x48135085, 0x48235086, + 0x1c01f000, 0x59a81084, 0x59a82085, 0x59a84086, 0x60380840, 0x05fdfedc, 0x82040d00, 0xffffffc0, 0x82200500, 0x003f0000, 0x80000120, 0x80040540, 0x60380840, 0x05fdfed9, 0x60380848, 0x05fdfed2, @@ -2023,7 +2055,7 @@ static const uint32_t isp_2500_risc_code[] = { 0x0000fc00, 0x80000114, 0x60380920, 0x05fdfeab, 0x82080500, 0x000003e0, 0x8000010a, 0x603808e8, 0x05fdfea6, 0x9008051f, 0x60380900, 0x05fdfea3, - 0x1c01f000, 0x59a8107e, 0x59a8207f, 0x59a84080, + 0x1c01f000, 0x59a81081, 0x59a82082, 0x59a84083, 0x9020051f, 0x800000c2, 0x84000540, 0x60480800, 0x05fdfe9a, 0x82200500, 0x000001e0, 0x80000908, 0x84040d40, 0x82200500, 0x00000600, 0x80000106, @@ -2044,32 +2076,32 @@ static const uint32_t isp_2500_risc_code[] = { 0x82080500, 0x00001800, 0x80000916, 0x82080500, 0x0003e000, 0x80000114, 0x84000544, 0x80040540, 0x60480858, 0x05fdfe51, 0x1c01f000, 0x4c000000, - 0x0515fbe9, 0x05000007, 0x0515f99d, 0x05020003, + 0x0515fd5d, 0x05000007, 0x0515fac3, 0x05020003, 0x90000541, 0x0501f003, 0x59e00013, 0x8c00050e, 0x5c000000, 0x1c01f000, 0x4c140000, 0x4a03c013, 0x03800300, 0x4a03c014, 0x03800380, 0x60800801, - 0x60281000, 0x0509faf3, 0x05000002, 0x8c14050c, + 0x60281000, 0x0509fb25, 0x05000002, 0x8c14050c, 0x4a03c014, 0x03800000, 0x5c002800, 0x1c01f000, - 0x4c000000, 0x59a80084, 0x90000510, 0x90000590, + 0x4c000000, 0x59a80087, 0x90000510, 0x90000590, 0x5c000000, 0x1c01f000, 0x4c5c0000, 0x4000b800, - 0x59a80076, 0x82000d80, 0xaabbccdd, 0x0500000f, - 0x90000c85, 0x05f21e4d, 0x4c000000, 0x0515f95b, + 0x59a80079, 0x82000d80, 0xaabbccdd, 0x0500000f, + 0x90000c85, 0x05f21e08, 0x4c000000, 0x0515fa81, 0x5c000000, 0x05020003, 0x0c01f81a, 0x0501f016, - 0x4c000000, 0x0515f96c, 0x5c000000, 0x05fc07fb, + 0x4c000000, 0x0515fa92, 0x5c000000, 0x05fc07fb, 0x0c01f819, 0x0501f010, 0x05fdffe6, 0x0500000e, 0x8d0c051a, 0x0500000c, 0x05fdffc9, 0x0502000a, 0x05fdffd2, 0x05020005, 0x905c0d83, 0x05020006, 0x6008b800, 0x0501f004, 0x905c0d81, 0x05020002, 0x600cb800, 0x405c0000, 0x5c00b800, 0x1c01f000, - 0x00101fb6, 0x00101fb7, 0x00101fb8, 0x00101fb9, - 0x00101fbd, 0x00101fbe, 0x00101fc0, 0x00101fd0, - 0x00101fde, 0x00101fee, 0x1c01f000, 0x1c01f000, + 0x00102036, 0x00102037, 0x00102038, 0x00102039, + 0x0010203d, 0x0010203e, 0x00102040, 0x00102050, + 0x0010205e, 0x0010206e, 0x1c01f000, 0x1c01f000, 0x1c01f000, 0x905c0d83, 0x05020002, 0x6008b800, 0x1c01f000, 0x1c01f000, 0x6004b800, 0x1c01f000, 0x05fdffc0, 0x05000007, 0x05fdffa5, 0x05020005, 0x05fdffae, 0x05000003, 0x6000b800, 0x0501f008, 0x905c0d83, 0x05020003, 0x6000b800, 0x0501f004, - 0x905c0d82, 0x05020002, 0x05f1fe0c, 0x1c01f000, + 0x905c0d82, 0x05020002, 0x05f1fdc7, 0x1c01f000, 0x05fdffb0, 0x0500000c, 0x05fdff95, 0x0502000a, 0x05fdff9e, 0x05020005, 0x905c0d83, 0x05020006, 0x6008b800, 0x0501f004, 0x905c0d81, 0x05020002, @@ -2081,31 +2113,31 @@ static const uint32_t isp_2500_risc_code[] = { 0x05fdff77, 0x05020004, 0x05fdff80, 0x05020002, 0x0501f004, 0x905c0d81, 0x05020002, 0x600cb800, 0x1c01f000, 0x4803c856, 0x4c5c0000, 0x4c600000, - 0x4c640000, 0x4c580000, 0x497b5086, 0x4200c000, - 0x7ff52000, 0x0515f906, 0x05020031, 0x4803c856, - 0x0515f91b, 0x05020029, 0x4803c856, 0x4a03c014, + 0x4c640000, 0x4c580000, 0x497b5089, 0x4200c000, + 0x7ff52000, 0x0515fa2c, 0x05020031, 0x4803c856, + 0x0515fa41, 0x05020029, 0x4803c856, 0x4a03c014, 0x07030701, 0x0501f965, 0x4a03c013, 0x07010701, 0x0501f9ef, 0x0501fa1f, 0x0501f981, 0x4201d000, - 0x000f4240, 0x0529fff4, 0x0501f95c, 0x0501f9e8, + 0x000f4240, 0x052dfbdf, 0x0501f95c, 0x0501f9e8, 0x0501fa23, 0x61800801, 0x600c1000, 0x60801801, - 0x0509fa1e, 0x05f00dc1, 0x61800801, 0x60001000, - 0x0509fa50, 0x05f00dbd, 0x4817c857, 0x90141d50, - 0x61800801, 0x60041000, 0x0509fa14, 0x05f00db7, - 0x0501f9df, 0x6140b801, 0x0509fa37, 0x05f00db3, + 0x0509fa4e, 0x05f00d7c, 0x61800801, 0x60001000, + 0x0509fa82, 0x05f00d78, 0x4817c857, 0x90141d50, + 0x61800801, 0x60041000, 0x0509fa44, 0x05f00d72, + 0x0501f9df, 0x6140b801, 0x0509fa68, 0x05f00d6e, 0x4867c857, 0x4c640000, 0x0501f96b, 0x0501f964, 0x5c00c800, 0x0501f01c, 0x4a03c014, 0x07e30000, - 0x59e0c813, 0x0501f8be, 0x0501f017, 0x59a80092, + 0x59e0c813, 0x0501f8be, 0x0501f017, 0x59a80095, 0x82000d80, 0x3261103c, 0x05000004, 0x82000d80, 0x338e103c, 0x050200b1, 0x4803c856, 0x42000800, 0x7ff481e6, 0x59e06802, 0x8c34051e, 0x05020003, 0x42000800, 0x7ff480e6, 0x50040000, 0x4803c857, - 0x4803508d, 0x8c00051e, 0x050000a4, 0x8200cd00, - 0x000000ff, 0x4867c857, 0x48675087, 0x50600800, - 0x48075088, 0x4807c857, 0x82040d80, 0x53434651, - 0x05020098, 0x8060c000, 0x50600800, 0x48075089, - 0x8060c000, 0x50600800, 0x4807508a, 0x8060c000, - 0x50600800, 0x4807508b, 0x8060c000, 0x50600800, - 0x82040d00, 0x0000ffff, 0x4807508c, 0x4200c000, + 0x48035090, 0x8c00051e, 0x050000a4, 0x8200cd00, + 0x000000ff, 0x4867c857, 0x4867508a, 0x50600800, + 0x4807508b, 0x4807c857, 0x82040d80, 0x53434651, + 0x05020098, 0x8060c000, 0x50600800, 0x4807508c, + 0x8060c000, 0x50600800, 0x4807508d, 0x8060c000, + 0x50600800, 0x4807508e, 0x8060c000, 0x50600800, + 0x82040d00, 0x0000ffff, 0x4807508f, 0x4200c000, 0x7ff52002, 0x5060b800, 0x825cbd00, 0xffff0000, 0x805cb920, 0x805cb800, 0x05001082, 0x8c5c051e, 0x05020080, 0x59e06802, 0x8c34051e, 0x0502006a, @@ -2115,23 +2147,23 @@ static const uint32_t isp_2500_risc_code[] = { 0xffff0000, 0x80000120, 0x82100d00, 0x0000ffff, 0x4803c857, 0x4807c857, 0x4c180000, 0x05fdfd37, 0x5c003000, 0x80183040, 0x05fe07f3, 0x41780800, - 0x40641000, 0x60100000, 0x052dff08, 0x59e06802, + 0x40641000, 0x60100000, 0x0531fb41, 0x59e06802, 0x8c34051e, 0x05020057, 0x4200c000, 0x7ff52005, 0x8008c418, 0x5060c800, 0x800409c0, 0x0500000a, 0x90041581, 0x05020003, 0x8064c910, 0x0501f006, 0x90041582, 0x05020003, 0x8064c920, 0x0501f002, 0x8064c930, 0x8264cd00, 0x000000ff, 0x4867c857, - 0x4867508e, 0x42001000, 0x7ff52002, 0x50080000, + 0x48675091, 0x42001000, 0x7ff52002, 0x50080000, 0x82000500, 0x0000ffff, 0x4803c857, 0x8c00051e, 0x05020044, 0x80640480, 0x05021042, 0x40640800, - 0x405c1000, 0x052dfec9, 0x4803c857, 0x800001c0, + 0x405c1000, 0x0531fb02, 0x4803c857, 0x800001c0, 0x0502003c, 0x59e06802, 0x8c34051e, 0x05020034, 0x4200c000, 0x7ff52045, 0x805cc418, 0x8004c418, 0x05001034, 0x05000033, 0x4863c857, 0x50600000, - 0x82000500, 0x0000ffff, 0x4803508f, 0x8c00051e, + 0x82000500, 0x0000ffff, 0x48035092, 0x8c00051e, 0x0502002c, 0x4803c857, 0x80000c97, 0x05021029, - 0x40601000, 0x80081000, 0x50080800, 0x48075090, - 0x80081000, 0x50080800, 0x48075091, 0x4000b800, + 0x40601000, 0x80081000, 0x50080800, 0x48075093, + 0x80081000, 0x50080800, 0x48075094, 0x4000b800, 0x8060c000, 0x50602000, 0x82100500, 0xffff0000, 0x80000120, 0x82100d00, 0x0000ffff, 0x4803c857, 0x4807c857, 0x05fdfce5, 0x805cb840, 0x05fe07f5, @@ -2140,7 +2172,7 @@ static const uint32_t isp_2500_risc_code[] = { 0x8258c400, 0x7ff52000, 0xb060c400, 0x05fdf790, 0x8258c400, 0x7ff52000, 0x05fdf7aa, 0x8258c400, 0x7ff52000, 0xb060c400, 0x805cc418, 0x05fdf7cc, - 0x4a035086, 0xdeaddead, 0x5c00b000, 0x5c00c800, + 0x4a035089, 0xdeaddead, 0x5c00b000, 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x4867c857, 0x90640d20, 0x8004690a, 0x82640d00, 0x00000400, 0x80040912, 0x80046d4d, 0x90640d01, 0x800408c4, @@ -2149,307 +2181,314 @@ static const uint32_t isp_2500_risc_code[] = { 0x82640d00, 0x00000080, 0x80040904, 0x80046d4d, 0xb0640d00, 0x80046d4d, 0x82640d00, 0x00000200, 0x80040904, 0x80046d4d, 0x8234cd00, 0x000000ff, - 0x1c01f000, 0x0515f809, 0x0502000d, 0x4803c856, + 0x1c01f000, 0x0515f92f, 0x0502000d, 0x4803c856, 0x4a03c014, 0x18001800, 0x4a03c013, 0x18000800, 0x05fdfc97, 0x4a03c013, 0x18000000, 0x61a1d007, - 0x0529feed, 0x4a03c013, 0x18000800, 0x1c01f000, - 0x0511fffa, 0x0502000d, 0x4803c856, 0x4a03c014, + 0x052dfad8, 0x4a03c013, 0x18000800, 0x1c01f000, + 0x0515f920, 0x0502000d, 0x4803c856, 0x4a03c014, 0x18001800, 0x4a03c013, 0x18001800, 0x05fdfc88, - 0x4a03c013, 0x18001000, 0x61a1d007, 0x0529fede, - 0x4a03c013, 0x18001800, 0x1c01f000, 0x0511ffeb, + 0x4a03c013, 0x18001000, 0x61a1d007, 0x052dfac9, + 0x4a03c013, 0x18001800, 0x1c01f000, 0x0515f911, 0x0502000e, 0x0501f831, 0x60041800, 0x42001000, - 0x0010dc87, 0x60900800, 0x60002180, 0x50080000, - 0x82000500, 0x000000ff, 0x4803c857, 0x0515f8cb, - 0x05f00ca2, 0x0501f82d, 0x1c01f000, 0x0501f823, + 0x00111c0a, 0x60900800, 0x60002180, 0x50080000, + 0x82000500, 0x000000ff, 0x4803c857, 0x0515f9f1, + 0x05f00c5d, 0x0501f82d, 0x1c01f000, 0x0501f823, 0x59e00802, 0x8c04051e, 0x05000004, 0x4807c856, 0x60a00800, 0x0501f002, 0x609c0800, 0x4807c857, - 0x60041800, 0x42001000, 0x0010dc85, 0x60002180, - 0x64041000, 0x0515f8b9, 0x05f00c90, 0x0501f81b, - 0x1c01f000, 0x0511ffc9, 0x0502000f, 0x59c40001, + 0x60041800, 0x42001000, 0x00111c08, 0x60002180, + 0x64041000, 0x0515f9df, 0x05f00c4b, 0x0501f81b, + 0x1c01f000, 0x0515f8ef, 0x0502000f, 0x59c40001, 0x82000500, 0x00018000, 0x82000d80, 0x00008000, 0x05000006, 0x82000d80, 0x00010000, 0x05000003, - 0x497b50a6, 0x0501f004, 0x59a800a6, 0x90000c82, + 0x497b50a9, 0x0501f004, 0x59a800a9, 0x90000c82, 0x05fc17fc, 0x1c01f000, 0x42000800, 0x00895440, - 0x0555ff9f, 0x05020004, 0x80040840, 0x05fe07fd, - 0x0555ffab, 0x1c01f000, 0x64030000, 0x1c01f000, + 0x0559fe9a, 0x05020004, 0x80040840, 0x05fe07fd, + 0x0559fea6, 0x1c01f000, 0x64030000, 0x1c01f000, 0x4c5c0000, 0x59e0b802, 0x8c5c051e, 0x05000001, 0x5c00b800, 0x1c01f000, 0x4c5c0000, 0x4c600000, 0x6110b813, 0x4a03c016, 0x00010001, 0x59e00016, 0x8c000500, 0x05000010, 0x8c00051e, 0x05020002, 0x0501f014, 0x4a03c016, 0x00010000, 0x6140c00f, - 0x61a1d007, 0x0529fe88, 0x59e00016, 0x8c00051e, + 0x61a1d007, 0x052dfa73, 0x59e00016, 0x8c00051e, 0x05fc07f1, 0x8060c040, 0x05fe07fa, 0x4a03c016, - 0x80000000, 0x61a1d007, 0x0529fe7f, 0x805cb840, + 0x80000000, 0x61a1d007, 0x052dfa6a, 0x805cb840, 0x05fe07e9, 0x4803c856, 0x4a03c016, 0x80008000, 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x4a03c013, 0x04010401, 0x4a03c016, 0x80010000, 0x05fdfc18, 0x1c01f000, 0x60800801, 0x61d0100d, 0x8408157e, - 0x0509f8d4, 0x05f00c41, 0x48175079, 0x4817c857, - 0x60800801, 0x61c0100d, 0x8408157e, 0x0509f8cd, - 0x05f00c3a, 0x4817507a, 0x4817c857, 0x60800801, - 0x61e0100d, 0x8408157e, 0x0509f8c6, 0x05f00c33, - 0x4817507b, 0x4817c857, 0x641f507c, 0x617c1800, + 0x0509f906, 0x05f00bfc, 0x4817507c, 0x4817c857, + 0x60800801, 0x61c0100d, 0x8408157e, 0x0509f8ff, + 0x05f00bf5, 0x4817507d, 0x4817c857, 0x60800801, + 0x61e0100d, 0x8408157e, 0x0509f8f8, 0x05f00bee, + 0x4817507e, 0x4817c857, 0x641f507f, 0x617c1800, 0x0501f833, 0x0501f84e, 0x60600801, 0x60001000, - 0x0509f8bc, 0x05020004, 0x0501f859, 0x60600801, - 0x05f1fc1f, 0x0501f864, 0x4817c857, 0x59a8207c, - 0x59a80079, 0x80140480, 0x0502101c, 0x59a8007a, - 0x80140480, 0x05021012, 0x59a8007b, 0x80140480, + 0x0509f8ee, 0x05020004, 0x0501f859, 0x60600801, + 0x05f1fbda, 0x0501f864, 0x4817c857, 0x59a8207f, + 0x59a8007c, 0x80140480, 0x0502101c, 0x59a8007d, + 0x80140480, 0x05021012, 0x59a8007e, 0x80140480, 0x05021008, 0x601c1800, 0x90100583, 0x05020014, - 0x90142c05, 0x59a8007b, 0x80140480, 0x05001010, + 0x90142c05, 0x59a8007e, 0x80140480, 0x05001010, 0x600c1800, 0x90100582, 0x0502000d, 0x90142c05, - 0x59a8007a, 0x80140480, 0x05001009, 0x60081800, - 0x90100580, 0x05020006, 0x90142c05, 0x59a80079, + 0x59a8007d, 0x80140480, 0x05001009, 0x60081800, + 0x90100580, 0x05020006, 0x90142c05, 0x59a8007c, 0x80140480, 0x05001002, 0x60001800, 0x80102583, - 0x480f507c, 0x480fc857, 0x05000003, 0xb00c1d58, - 0x0501f803, 0x65935078, 0x1c01f000, 0x59a80a77, + 0x480f507f, 0x480fc857, 0x05000003, 0xb00c1d58, + 0x0501f803, 0x6593507b, 0x1c01f000, 0x59a80a7a, 0x8c040500, 0x05000003, 0x820c1d00, 0xfffffff7, - 0x0501f817, 0x61800801, 0x60041000, 0x0509f84f, - 0x05f00bf2, 0x1c01f000, 0x4c580000, 0x0501f810, - 0x6140b00f, 0x61800801, 0x60001000, 0x0509f87d, - 0x05f00bea, 0x4817c857, 0x82140d00, 0x000000a0, + 0x0501f817, 0x61800801, 0x60041000, 0x0509f87f, + 0x05f00bad, 0x1c01f000, 0x4c580000, 0x0501f810, + 0x6140b00f, 0x61800801, 0x60001000, 0x0509f8af, + 0x05f00ba5, 0x4817c857, 0x82140d00, 0x000000a0, 0x90040da0, 0x05000004, 0x8058b040, 0x05fe07f6, 0x90000541, 0x5c00b000, 0x1c01f000, 0x05fdff6d, 0x05000004, 0x4a03c013, 0x04010401, 0x0501f003, 0x4a03c013, 0x04010400, 0x05fdf3a9, 0x05fdff65, 0x05000004, 0x4a03c013, 0x04010001, 0x0501f003, - 0x4a03c013, 0x04010000, 0x05fdf3a1, 0x59a80a77, - 0x84040d40, 0x4807c857, 0x48075277, 0x61800801, - 0x60001000, 0x0509f85b, 0x05f00bc8, 0x4817c857, + 0x4a03c013, 0x04010000, 0x05fdf3a1, 0x59a80a7a, + 0x84040d40, 0x4807c857, 0x4807527a, 0x61800801, + 0x60001000, 0x0509f88d, 0x05f00b83, 0x4817c857, 0x82142d00, 0xfffffff7, 0xb0142d40, 0x40141800, - 0x05fdf7c7, 0xb0142c80, 0x05001010, 0x59a80084, - 0x8c000520, 0x0500000a, 0x59a8087d, 0x9004050f, + 0x05fdf7c7, 0xb0142c80, 0x05001010, 0x59a80087, + 0x8c000520, 0x0500000a, 0x59a80880, 0x9004050f, 0x05020007, 0x80040910, 0x82040d00, 0x000000ff, 0x4807c857, 0x80142c01, 0x0501f002, 0x90142c05, 0x4817c857, 0x1c01f000, 0x41782800, 0x05fdf7fd, - 0x60600801, 0x60241000, 0x60101800, 0x0509f807, - 0x05f00baa, 0x60600801, 0x60281000, 0x601c1800, - 0x0509f802, 0x05f00ba5, 0x1c01f000, 0x42000800, + 0x60600801, 0x60241000, 0x60101800, 0x0509f837, + 0x05f00b65, 0x60600801, 0x60281000, 0x601c1800, + 0x0509f832, 0x05f00b60, 0x1c01f000, 0x42000800, 0x7ff481f4, 0x59e00002, 0x8c00051e, 0x05020003, 0x42000800, 0x7ff480f4, 0x4807c857, 0x50040000, - 0x4803c857, 0x4803507d, 0x1c01f000, 0x59c468a4, + 0x4803c857, 0x48035080, 0x1c01f000, 0x59c468a4, + 0x90346d0f, 0x90346d8a, 0x1c01f000, 0x59c468a4, 0x90346d0f, 0x90346d82, 0x1c01f000, 0x59c468a4, 0x90346d0f, 0x90346d81, 0x1c01f000, 0x59c468a4, - 0x90346d0f, 0x90346d80, 0x1c01f000, 0x59a80006, - 0x8c00051c, 0x05020016, 0x4937c857, 0x0539f9b0, - 0x05000013, 0x4926601d, 0x4936600a, 0x0545fe38, - 0x64066407, 0x417a7800, 0x0519fa89, 0x59a80044, - 0x80000000, 0x48035044, 0x60127000, 0x599c0019, - 0x8c00050e, 0x05000002, 0x60027000, 0x599c0208, - 0x48026c12, 0x0009f800, 0x90000541, 0x1c01f000, - 0x4937c857, 0x0539f99a, 0x0500001b, 0x4926601d, - 0x4936600a, 0x59340403, 0x82000580, 0x000007fe, - 0x05000005, 0x4d3c0000, 0x417a7800, 0x0501f8b9, - 0x5c027800, 0x0545fe1a, 0x64066407, 0x417a7800, - 0x0519fa6b, 0x600c0800, 0x0519fa73, 0x0555fe9a, - 0x05020004, 0x59a80044, 0x80000000, 0x48035044, - 0x599c0208, 0x48026c12, 0x600a7000, 0x0009f800, - 0x90000541, 0x1c01f000, 0x4803c856, 0x59a80006, - 0x8c00051e, 0x05020008, 0x61f2880f, 0x42003000, - 0x00fffffc, 0x0519fa87, 0x05020007, 0x0501f808, - 0x05000005, 0x4a03504a, 0x0000ffff, 0x90000541, - 0x1c01f000, 0x80000580, 0x05fdf7fe, 0x4937c857, - 0x0539f96b, 0x05000011, 0x4926601d, 0x4936600a, - 0x0545fdf3, 0x64066407, 0x417a7800, 0x0519fa44, - 0x600c0800, 0x0519fa4c, 0x59a8004b, 0x80000000, - 0x4803504b, 0x599c0208, 0x48026c12, 0x600a7000, - 0x0009f800, 0x90000541, 0x1c01f000, 0x480bc857, - 0x492fc857, 0x4923c857, 0x4927c857, 0x4c5c0000, - 0x4008b800, 0x61f6880f, 0x42003000, 0x00fffffd, - 0x0519fa60, 0x0502001b, 0x5934000a, 0x84000544, - 0x4802680a, 0x0539f94a, 0x05000016, 0x4926601d, - 0x4936600a, 0x812e59c0, 0x05000006, 0x592c0408, - 0x8c00051e, 0x05000003, 0x48ee602d, 0x0501f004, - 0x59a80249, 0x8400055c, 0x48035249, 0x492e6009, - 0x64066407, 0x485e601e, 0x0545fdc5, 0x608a7000, - 0x0009f800, 0x90000541, 0x5c00b800, 0x1c01f000, - 0x80000580, 0x05fdf7fd, 0x5c000000, 0x4c000000, - 0x4803c857, 0x4943c857, 0x493fc857, 0x4d340000, - 0x4d440000, 0x4c580000, 0x4d2c0000, 0x4c5c0000, - 0x0531fa37, 0x4df00000, 0x833c0500, 0x00001800, - 0x05000003, 0x8d3c0516, 0x052c0f54, 0x0531f81d, - 0x0531f8a9, 0x052dfd9f, 0x053dfcb0, 0x5c03e000, - 0x05300a1c, 0x61c0b00f, 0x417a8800, 0x0001fb00, - 0x05020025, 0x8d3c0506, 0x05000004, 0x59340200, - 0x8c00050e, 0x05020020, 0x0519fccf, 0x497a6c0b, - 0x8d3c0518, 0x05000017, 0x5934b80f, 0x805cb9c0, - 0x0500000a, 0x405e5800, 0x49425a0a, 0x492fc857, - 0x592cb800, 0x0001fb82, 0x805cb9c0, 0x05fe07fa, - 0x497a680f, 0x497a6810, 0x4937c857, 0x4a026c00, - 0x00000707, 0x497a6a03, 0x497a6811, 0x59340402, - 0x82000500, 0x000000ff, 0x48026c02, 0x0501f006, - 0x4937c857, 0x4a026c00, 0x00000707, 0x8d0c0520, - 0x05140f78, 0x81468800, 0x8058b040, 0x05fe07d8, - 0x8d3c0502, 0x05000011, 0x497b5046, 0x61c2880f, - 0x6040b000, 0x0001fb00, 0x05020009, 0x4937c857, - 0x5934b80f, 0x5934000c, 0x4a026c00, 0x00000707, - 0x805c0540, 0x05020002, 0x0515ff66, 0x81468800, - 0x8058b040, 0x05fe07f4, 0x5c00b800, 0x5c025800, - 0x5c00b000, 0x5c028800, 0x5c026800, 0x1c01f000, - 0x5c000000, 0x4c000000, 0x4803c857, 0x4933c857, - 0x493fc857, 0x4927c857, 0x4d340000, 0x4d400000, - 0x4d440000, 0x4d2c0000, 0x4c5c0000, 0x0531f9dc, - 0x4df00000, 0x5932680a, 0x813669c0, 0x05000030, - 0x59368c03, 0x60a68000, 0x833c0500, 0x00001800, - 0x05000003, 0x8d3c0516, 0x052c0f03, 0x0531f808, - 0x0531f851, 0x052dfdd7, 0x0551fb2b, 0x4937c857, + 0x90346d0f, 0x90346d80, 0x1c01f000, 0x59c40007, + 0x84000568, 0x48038807, 0x1c01f000, 0x42006000, + 0xfc18ffff, 0x42006800, 0x01000000, 0x0519f973, + 0x05fdfb4f, 0x59c408a4, 0x90040d0f, 0x90040d8c, + 0x052208f8, 0x1c01f000, 0x59a80006, 0x8c00051c, + 0x05020016, 0x4937c857, 0x0539fe32, 0x05000013, + 0x4926601d, 0x4936600a, 0x0549fb3d, 0x64066407, + 0x417a7800, 0x0519fc09, 0x59a80047, 0x80000000, + 0x48035047, 0x60127000, 0x599c0019, 0x8c00050e, + 0x05000002, 0x60027000, 0x599c0208, 0x48026c12, + 0x0009f839, 0x90000541, 0x1c01f000, 0x4937c857, + 0x0539fe1c, 0x0500001b, 0x4926601d, 0x4936600a, + 0x59340403, 0x82000580, 0x000007fe, 0x05000005, + 0x4d3c0000, 0x417a7800, 0x0501f8bd, 0x5c027800, + 0x0549fb1f, 0x64066407, 0x417a7800, 0x0519fbeb, + 0x600c0800, 0x0519fbf3, 0x0559fd82, 0x05020004, + 0x59a80047, 0x80000000, 0x48035047, 0x599c0208, + 0x48026c12, 0x600a7000, 0x0009f839, 0x90000541, + 0x1c01f000, 0x4803c856, 0x59a80006, 0x8c00051e, + 0x05020008, 0x61f2880f, 0x42003000, 0x00fffffc, + 0x0519fc0f, 0x05020007, 0x0501f808, 0x05000005, + 0x4a03504d, 0x0000ffff, 0x90000541, 0x1c01f000, + 0x80000580, 0x05fdf7fe, 0x4937c857, 0x0539fded, + 0x05000011, 0x4926601d, 0x4936600a, 0x0549faf8, + 0x64066407, 0x417a7800, 0x0519fbc4, 0x600c0800, + 0x0519fbcc, 0x59a8004e, 0x80000000, 0x4803504e, + 0x599c0208, 0x48026c12, 0x600a7000, 0x0009f839, + 0x90000541, 0x1c01f000, 0x480bc857, 0x492fc857, + 0x4923c857, 0x4927c857, 0x4c5c0000, 0x4008b800, + 0x61f6880f, 0x42003000, 0x00fffffd, 0x0519fbe8, + 0x0502001b, 0x5934000a, 0x84000544, 0x4802680a, + 0x0539fdcc, 0x05000016, 0x4926601d, 0x4936600a, + 0x812e59c0, 0x05000006, 0x592c0408, 0x8c00051e, + 0x05000003, 0x48ee602d, 0x0501f004, 0x59a8024c, + 0x8400055c, 0x4803524c, 0x492e6009, 0x64066407, + 0x485e601e, 0x0549faca, 0x608a7000, 0x0009f839, + 0x90000541, 0x5c00b800, 0x1c01f000, 0x80000580, + 0x05fdf7fd, 0x5c000000, 0x4c000000, 0x4803c857, + 0x4943c857, 0x493fc857, 0x4d340000, 0x4d440000, + 0x4c580000, 0x4d2c0000, 0x4c5c0000, 0x0531fe62, + 0x4df00000, 0x833c0500, 0x00001800, 0x05000003, + 0x8d3c0516, 0x05300b7a, 0x0531fc49, 0x0531fcd5, + 0x0531f9c5, 0x0541f964, 0x5c03e000, 0x05300e47, + 0x59a8b0ac, 0x417a8800, 0x0001fb08, 0x05020025, 0x8d3c0506, 0x05000004, 0x59340200, 0x8c00050e, - 0x0502001f, 0x0519fc74, 0x497a6c0b, 0x8d3c0518, + 0x05020020, 0x0519fea6, 0x497a6c0b, 0x8d3c0518, 0x05000017, 0x5934b80f, 0x805cb9c0, 0x0500000a, 0x405e5800, 0x49425a0a, 0x492fc857, 0x592cb800, - 0x0001fb82, 0x805cb9c0, 0x05fe07fa, 0x497a680f, + 0x0001fba8, 0x805cb9c0, 0x05fe07fa, 0x497a680f, 0x497a6810, 0x4937c857, 0x4a026c00, 0x00000707, 0x497a6a03, 0x497a6811, 0x59340402, 0x82000500, - 0x000000ff, 0x48026c02, 0x0501f005, 0x4a026c00, - 0x00000707, 0x8d0c0520, 0x05140f1e, 0x5c03e000, - 0x05300998, 0x5c00b800, 0x5c025800, 0x5c028800, - 0x5c028000, 0x5c026800, 0x1c01f000, 0x4933c857, - 0x59a80249, 0x8c000508, 0x05020013, 0x5930500a, - 0x482bc857, 0x916c0582, 0x0502000f, 0x0501f81a, - 0x0502000d, 0x58280403, 0x82004d80, 0x000007fc, - 0x0500000a, 0x82004d80, 0x000007fd, 0x05000006, - 0x59a80044, 0x80000040, 0x4803c857, 0x05f01a53, - 0x48035044, 0x1c01f000, 0x59300429, 0x90004da1, - 0x05fc07f8, 0xb0000591, 0x05fc07fb, 0x59a8004b, - 0x80000040, 0x4803c857, 0x05fc17f7, 0x4803504b, - 0x1c01f000, 0x59300009, 0x800001c0, 0x05020007, - 0x59300403, 0x90000581, 0x05020003, 0x90000541, - 0x0501f002, 0x80000580, 0x1c01f000, 0x4937c857, - 0x59340200, 0x84000502, 0x48026a00, 0x1c01f000, - 0x4933c857, 0x493fc857, 0x4947c857, 0x4927c857, - 0x4d400000, 0x4d340000, 0x4d440000, 0x4c580000, - 0x0531f967, 0x4df00000, 0x8060c1c0, 0x05020003, - 0x6004b000, 0x0501f003, 0x61c0b00f, 0x417a8800, - 0x41440000, 0x81ac0400, 0x50000000, 0x80026d40, - 0x05000018, 0x59245005, 0x59340013, 0x82000500, + 0x000000ff, 0x48026c02, 0x0501f006, 0x4937c857, + 0x4a026c00, 0x00000707, 0x8d0c0520, 0x051808dc, + 0x81468800, 0x83440580, 0x000007f0, 0x05020002, + 0x60028810, 0x8058b040, 0x05fe07d4, 0x8d3c0502, + 0x05000011, 0x497b5049, 0x61c2880f, 0x6040b000, + 0x0001fb08, 0x05020009, 0x4937c857, 0x5934b80f, + 0x5934000c, 0x4a026c00, 0x00000707, 0x805c0540, + 0x05020002, 0x0519f8c6, 0x81468800, 0x8058b040, + 0x05fe07f4, 0x5c00b800, 0x5c025800, 0x5c00b000, + 0x5c028800, 0x5c026800, 0x1c01f000, 0x5c000000, + 0x4c000000, 0x4803c857, 0x4933c857, 0x493fc857, + 0x4927c857, 0x4d340000, 0x4d400000, 0x4d440000, + 0x4d2c0000, 0x4c5c0000, 0x0531fe03, 0x4df00000, + 0x5932680a, 0x813669c0, 0x05000030, 0x59368c03, + 0x60a68000, 0x833c0500, 0x00001800, 0x05000003, + 0x8d3c0516, 0x05300b25, 0x0531fc30, 0x0531fc79, + 0x0531f9f9, 0x0555f9ab, 0x4937c857, 0x8d3c0506, + 0x05000004, 0x59340200, 0x8c00050e, 0x0502001f, + 0x0519fe47, 0x497a6c0b, 0x8d3c0518, 0x05000017, + 0x5934b80f, 0x805cb9c0, 0x0500000a, 0x405e5800, + 0x49425a0a, 0x492fc857, 0x592cb800, 0x0001fba8, + 0x805cb9c0, 0x05fe07fa, 0x497a680f, 0x497a6810, + 0x4937c857, 0x4a026c00, 0x00000707, 0x497a6a03, + 0x497a6811, 0x59340402, 0x82000500, 0x000000ff, + 0x48026c02, 0x0501f005, 0x4a026c00, 0x00000707, + 0x8d0c0520, 0x0518087e, 0x5c03e000, 0x05300dbf, + 0x5c00b800, 0x5c025800, 0x5c028800, 0x5c028000, + 0x5c026800, 0x1c01f000, 0x4933c857, 0x59a8024c, + 0x8c000508, 0x05020013, 0x5930500a, 0x482bc857, + 0x916c0582, 0x0502000f, 0x0501f81a, 0x0502000d, + 0x58280403, 0x82004d80, 0x000007fc, 0x0500000a, + 0x82004d80, 0x000007fd, 0x05000006, 0x59a80047, + 0x80000040, 0x4803c857, 0x05f019f7, 0x48035047, + 0x1c01f000, 0x59300429, 0x90004da1, 0x05fc07f8, + 0xb0000591, 0x05fc07fb, 0x59a8004e, 0x80000040, + 0x4803c857, 0x05fc17f7, 0x4803504e, 0x1c01f000, + 0x59300009, 0x800001c0, 0x05020007, 0x59300403, + 0x90000581, 0x05020003, 0x90000541, 0x0501f002, + 0x80000580, 0x1c01f000, 0x4937c857, 0x59340200, + 0x84000502, 0x48026a00, 0x1c01f000, 0x4933c857, + 0x493fc857, 0x4947c857, 0x4927c857, 0x4d400000, + 0x4d340000, 0x4d440000, 0x4c580000, 0x0531fd8e, + 0x4df00000, 0x8060c1c0, 0x05020003, 0x6004b000, + 0x0501f003, 0x59a8b0ac, 0x417a8800, 0x0001fb08, + 0x05020018, 0x59245005, 0x59340013, 0x82000500, 0x00ffffff, 0x80280580, 0x05020012, 0x4d3c0000, - 0x60067800, 0x0519fd32, 0x5c027800, 0x60a68000, - 0x052dff87, 0x052dffd0, 0x052dfd56, 0x0519fe5e, + 0x60067800, 0x0519ff10, 0x5c027800, 0x60a68000, + 0x0531fbb2, 0x0531fbfb, 0x0531f97b, 0x051df893, 0x05020005, 0x4937c857, 0x4a026c00, 0x00000404, - 0x0501f002, 0x0519fe83, 0x0551faa3, 0x0519fbf2, - 0x81468800, 0x8058b040, 0x05fe07e2, 0x5c03e000, - 0x05300930, 0x5c00b000, 0x5c028800, 0x5c026800, + 0x0501f002, 0x051df8b8, 0x0555f926, 0x0519fdc8, + 0x81468800, 0x83440580, 0x000007f0, 0x05020002, + 0x60028810, 0x8058b040, 0x05fe07e1, 0x5c03e000, + 0x05300d56, 0x5c00b000, 0x5c028800, 0x5c026800, 0x5c028000, 0x1c01f000, 0x4937c857, 0x4947c857, - 0x4c5c0000, 0x4c600000, 0x4c640000, 0x59a800b2, + 0x4c5c0000, 0x4c600000, 0x4c640000, 0x59a800b7, 0x8c000500, 0x0500001d, 0x599c0017, 0x8c00050a, 0x0502001a, 0x5934ba02, 0x825cbd00, 0x000000ff, 0x485fc857, 0x4178c000, 0x4178c800, 0x82600400, - 0x00110258, 0x50002000, 0x8060c1c0, 0x05000008, + 0x001141fc, 0x50002000, 0x8060c1c0, 0x05000008, 0x82100500, 0x000000ff, 0x82002d80, 0x000000ff, 0x0500000a, 0x805c0580, 0x0500000a, 0x80102110, 0x8064c800, 0x90640584, 0x05fe07f6, 0x8060c000, 0x906005a0, 0x05fe07ed, 0x4813c857, 0x90000541, 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x1c01f000, - 0x59a80249, 0x8c000512, 0x05f20a9b, 0x1c01f000, + 0x59a8024c, 0x8c000512, 0x05f20a32, 0x1c01f000, 0x4c5c0000, 0x4c600000, 0x4c640000, 0x4c500000, - 0x6004b000, 0x42024800, 0x0010e512, 0x417a4000, - 0x61fa880f, 0x0555fd04, 0x05000020, 0x0555fce1, - 0x5924ba00, 0x8c5c0500, 0x0500007c, 0x59a8a249, + 0x6004b000, 0x42024800, 0x001124b6, 0x417a4000, + 0x61fa880f, 0x0559fbe7, 0x05000020, 0x0559fbc4, + 0x5924ba00, 0x8c5c0500, 0x0500007c, 0x59a8a24c, 0x8c500506, 0x0500000d, 0x825c0500, 0x000000e0, 0x82000580, 0x000000e0, 0x05000074, 0x0501f881, - 0x59a80044, 0x4923c857, 0x4803c857, 0x80000000, - 0x48035044, 0x0501f06d, 0x8c5c051e, 0x0500006b, + 0x59a80047, 0x4923c857, 0x4803c857, 0x80000000, + 0x48035047, 0x0501f06d, 0x8c5c051e, 0x0500006b, 0x4927c856, 0x6004b000, 0x825c0500, 0x000000e1, 0x48024a00, 0x485fc857, 0x825cc500, 0x000000e0, - 0x0502001f, 0x0501f018, 0x051dfc7c, 0x05000002, - 0x0555fcc4, 0x5924ba00, 0x8c5c0500, 0x0500005b, - 0x0555fcdd, 0x05000005, 0x59a80249, 0x8c00050e, - 0x05020013, 0x0501f004, 0x83240d80, 0x0010e512, + 0x0502001f, 0x0501f018, 0x051dfece, 0x05000002, + 0x0559fba7, 0x5924ba00, 0x8c5c0500, 0x0500005b, + 0x0559fbc0, 0x05000005, 0x59a8024c, 0x8c00050e, + 0x05020013, 0x0501f004, 0x83240d80, 0x001124b6, 0x0502000f, 0x825cc500, 0x000000e0, 0x0502000c, - 0x051dfc6a, 0x05000004, 0x42000800, 0xffffff1d, - 0x0501fa82, 0x59a80249, 0x82000500, 0xffffdafc, - 0x8400054e, 0x48035249, 0x0501f006, 0x82600580, + 0x051dfebc, 0x05000004, 0x42000800, 0xffffff1d, + 0x0501fa91, 0x59a8024c, 0x82000500, 0xffffdafc, + 0x8400054e, 0x4803524c, 0x0501f006, 0x82600580, 0x000000e0, 0x0502004a, 0x8c5c050e, 0x0502003f, 0x5924c809, 0x9064040e, 0x50000000, 0x4803c857, - 0x80026d40, 0x05000011, 0x051dfc54, 0x05000013, + 0x80026d40, 0x05000011, 0x051dfea6, 0x05000013, 0x59340200, 0x8c00051a, 0x05020034, 0x59240805, - 0x80040910, 0x0500000d, 0x59a80046, 0x4803c857, + 0x80040910, 0x0500000d, 0x59a80049, 0x4803c857, 0x4807c857, 0x80040580, 0x05000008, 0x4a026806, 0xdeaddead, 0x0501f005, 0x42003000, 0x00fffffe, - 0x0519f8a8, 0x0502002e, 0x0535ff95, 0x0500002c, + 0x0519fa2b, 0x0502002e, 0x0539fc12, 0x0500002c, 0x4936600a, 0x4926601d, 0x64066407, 0x417a7800, - 0x0519f86f, 0x05fdff2a, 0x600c0800, 0x0519f876, - 0x0545fc17, 0x49235045, 0x4923c857, 0x59240005, + 0x0519f9ea, 0x05fdff29, 0x600c0800, 0x0519f9f1, + 0x0549f917, 0x49235048, 0x4923c857, 0x59240005, 0x82000500, 0x000000ff, 0x48024805, 0x916c0583, - 0x05000004, 0x59a80044, 0x80000000, 0x48035044, - 0x599c0208, 0x48026c12, 0x600a7000, 0x0009f800, + 0x05000004, 0x59a80047, 0x80000000, 0x48035047, + 0x599c0208, 0x48026c12, 0x600a7000, 0x0009f839, 0x59240200, 0x82000500, 0xffffff9d, 0x8400054e, - 0x8400055e, 0x59a80ccc, 0x8c04050a, 0x05000002, + 0x8400055e, 0x59a80cd1, 0x8c04050a, 0x05000002, 0x8400055e, 0x48024a00, 0x81224000, 0x91264c0d, - 0x8058b040, 0x05000004, 0x0555fc7f, 0x05fe077d, - 0x05fdf79d, 0x4a035045, 0x0000ffff, 0x5c00a000, + 0x8058b040, 0x05000004, 0x0559fb62, 0x05fe077d, + 0x05fdf79d, 0x4a035048, 0x0000ffff, 0x5c00a000, 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x4d300000, 0x4d440000, 0x4d340000, 0x61fa880f, - 0x42003000, 0x00fffffe, 0x0519f86e, 0x0502001c, - 0x0535ff5b, 0x0500001a, 0x4927c857, 0x4923c857, + 0x42003000, 0x00fffffe, 0x0519f9f1, 0x0502001c, + 0x0539fbd8, 0x0500001a, 0x4927c857, 0x4923c857, 0x497a6009, 0x4936600a, 0x4926601d, 0x64066407, - 0x600c0800, 0x0519f83c, 0x599c0208, 0x48026c12, - 0x600a7000, 0x0009f800, 0x59a80a49, 0x8c040506, + 0x600c0800, 0x0519f9b7, 0x599c0208, 0x48026c12, + 0x600a7000, 0x0009f839, 0x59a80a4c, 0x8c040506, 0x05020002, 0x497a4805, 0x59240200, 0x82000500, 0xffffff9d, 0x8400054e, 0x48024a00, 0x5c026800, 0x5c028800, 0x5c026000, 0x1c01f000, 0x80000580, 0x05fdf7fb, 0x4d200000, 0x4d240000, 0x4c580000, 0x4d340000, 0x4d300000, 0x4d3c0000, 0x4d380000, - 0x4d440000, 0x0519fc0b, 0x05020009, 0x051dfbdf, - 0x05000004, 0x59a81249, 0x8c080506, 0x05000003, + 0x4d440000, 0x0519fde5, 0x05020009, 0x051dfe31, + 0x05000004, 0x59a8124c, 0x8c080506, 0x05000003, 0x05fdff34, 0x0501f002, 0x0501f80a, 0x5c028800, 0x5c027000, 0x5c027800, 0x5c026000, 0x5c026800, 0x5c00b000, 0x5c024800, 0x5c024000, 0x1c01f000, - 0x4803c856, 0x4c600000, 0x0555fc16, 0x4200c000, - 0x0010e510, 0x50600000, 0x82024580, 0x0000ffff, - 0x05020004, 0x42024800, 0x0010e512, 0x0501f008, + 0x4803c856, 0x4c600000, 0x0559faf9, 0x4200c000, + 0x001124b4, 0x50600000, 0x82024580, 0x0000ffff, + 0x05020004, 0x42024800, 0x001124b6, 0x0501f008, 0x8058b480, 0x05000026, 0x05001025, 0x40024000, - 0x82000400, 0x0010d17b, 0x50024800, 0x4520c000, + 0x82000400, 0x0010d8f9, 0x50024800, 0x4520c000, 0x59240005, 0x82000500, 0x000000ff, 0x48024805, 0x59240200, 0x90000503, 0x90000583, 0x0502000e, - 0x59240400, 0x8c000508, 0x0500000b, 0x59a800b2, + 0x59240400, 0x8c000508, 0x0500000b, 0x59a800b7, 0x8c000500, 0x05000003, 0x0501f813, 0x0501f002, - 0x0501f85e, 0x59a80045, 0x82000580, 0x0000ffff, + 0x0501f85e, 0x59a80048, 0x82000580, 0x0000ffff, 0x0502000b, 0x81224000, 0x91264c0d, 0x8058b040, 0x05fe07e7, 0x599c0019, 0x8c00050e, 0x05020004, - 0x59a800b2, 0x8c000500, 0x05020881, 0x5c00c000, + 0x59a800b7, 0x8c000500, 0x05020881, 0x5c00c000, 0x1c01f000, 0x4927c857, 0x4923c857, 0x4c580000, 0x4c100000, 0x4c0c0000, 0x4c080000, 0x4c040000, - 0x4d240000, 0x59243c08, 0x59a81845, 0x820c1580, + 0x4d240000, 0x59243c08, 0x59a81848, 0x820c1580, 0x0000ffff, 0x05020002, 0x60041800, 0x800c1104, - 0x82082400, 0x00110258, 0x50102000, 0x900c0503, - 0x0c01f001, 0x0010252d, 0x0010252f, 0x00102531, - 0x00102533, 0x40101000, 0x0501f006, 0x80101110, + 0x82082400, 0x001141fc, 0x50102000, 0x900c0503, + 0x0c01f001, 0x001025c5, 0x001025c7, 0x001025c9, + 0x001025cb, 0x40101000, 0x0501f006, 0x80101110, 0x0501f004, 0x80101120, 0x0501f002, 0x80101130, 0x4c0c0000, 0x82080500, 0x000000ff, 0x801c0d80, 0x05000019, 0x800001c0, 0x05000017, 0x40000800, - 0x82000580, 0x000000ff, 0x05000017, 0x0501f916, - 0x05000011, 0x40040000, 0x0525fb8c, 0x0502001c, - 0x0519f84b, 0x05000004, 0x05fdfd09, 0x05000018, + 0x82000580, 0x000000ff, 0x05000017, 0x0501f924, + 0x05000011, 0x40040000, 0x0525fea0, 0x0502001c, + 0x0519f9f0, 0x05000004, 0x05fdfd04, 0x05000018, 0x0501f009, 0x599c0019, 0x8c00050e, 0x05020006, - 0x0515ffc8, 0x05020012, 0x05fdfe51, 0x05fdfd19, - 0x0500000f, 0x5c001800, 0x480f5045, 0x800c1800, - 0x05fdf7cf, 0x5c001800, 0x4a035045, 0x0000ffff, + 0x0519f94b, 0x05020012, 0x05fdfe50, 0x05fdfd14, + 0x0500000f, 0x5c001800, 0x480f5048, 0x800c1800, + 0x05fdf7cf, 0x5c001800, 0x4a035048, 0x0000ffff, 0x5c024800, 0x5c000800, 0x5c001000, 0x5c001800, 0x5c002000, 0x5c00b000, 0x1c01f000, 0x5c001800, - 0x480f5045, 0x05fdf7f7, 0x4927c857, 0x4c5c0000, + 0x480f5048, 0x05fdf7f7, 0x4927c857, 0x4c5c0000, 0x4c580000, 0x4c540000, 0x61f8b000, 0x59243c08, - 0x59a80045, 0x82001580, 0x0000ffff, 0x05020003, + 0x59a80048, 0x82001580, 0x0000ffff, 0x05020003, 0x4178a800, 0x0501f004, 0x8058b480, 0x0500101e, - 0x4000a800, 0x48575045, 0x8254bc00, 0x00102853, + 0x4000a800, 0x48575048, 0x8254bc00, 0x001028fb, 0x505cb800, 0x825cbd00, 0x000000ff, 0x405c0800, - 0x0501f8dd, 0x05000011, 0x405c0000, 0x0525fb53, - 0x05020013, 0x0519f812, 0x05000004, 0x05fdfcd0, + 0x0501f8eb, 0x05000011, 0x405c0000, 0x0525fe67, + 0x05020013, 0x0519f9b7, 0x05000004, 0x05fdfccb, 0x0500000f, 0x0501f009, 0x599c0019, 0x8c00050e, - 0x05020006, 0x0515ff8f, 0x05020009, 0x05fdfe18, - 0x05fdfce0, 0x05000006, 0x8054a800, 0x8058b040, - 0x05fe07e5, 0x4a035045, 0x0000ffff, 0x5c00a800, + 0x05020006, 0x0519f912, 0x05020009, 0x05fdfe17, + 0x05fdfcdb, 0x05000006, 0x8054a800, 0x8058b040, + 0x05fe07e5, 0x4a035048, 0x0000ffff, 0x5c00a800, 0x5c00b000, 0x5c00b800, 0x1c01f000, 0x4c580000, - 0x4d440000, 0x61c0b00f, 0x80028d80, 0x0001fb00, + 0x4d440000, 0x59a8b0ac, 0x80028d80, 0x0001fb08, 0x05020018, 0x05fdfe41, 0x05000016, 0x4937c857, - 0x0519fcd5, 0x42026000, 0x00111a70, 0x4936600a, - 0x497a6009, 0x4926601d, 0x417a7800, 0x05fdfd89, - 0x42000000, 0x0010e454, 0x0555fa36, 0x59240400, + 0x0519ff06, 0x42026000, 0x00115a14, 0x4936600a, + 0x497a6009, 0x4926601d, 0x417a7800, 0x05fdfd88, + 0x42000000, 0x001123f8, 0x0559f919, 0x59240400, 0x8c00050a, 0x05020007, 0x41782800, 0x60203000, - 0x4d400000, 0x60a68000, 0x0551f9f8, 0x5c028000, - 0x81468800, 0x8058b040, 0x05fe07e5, 0x5c028800, + 0x4d400000, 0x60a68000, 0x0555f8a7, 0x5c028000, + 0x81468800, 0x83440580, 0x000007f0, 0x05020002, + 0x60028810, 0x8058b040, 0x05fe07e1, 0x5c028800, 0x5c00b000, 0x1c01f000, 0x4927c857, 0x4c5c0000, 0x400cb800, 0x4d200000, 0x4d240000, 0x4c580000, - 0x0555fb38, 0x417a4000, 0x42024800, 0x0010e512, + 0x0559fa17, 0x417a4000, 0x42024800, 0x001124b6, 0x59240200, 0x8c000500, 0x0500000f, 0x8c5c0508, 0x05000004, 0x8400055a, 0x48024a00, 0x0501f00a, 0x82000500, 0x000000e0, 0x82000580, 0x000000e0, @@ -2458,10 +2497,10 @@ static const uint32_t isp_2500_risc_code[] = { 0x05fe07ec, 0x5c00b000, 0x5c024800, 0x5c024000, 0x5c00b800, 0x1c01f000, 0x4d200000, 0x4d240000, 0x4c580000, 0x4c5c0000, 0x400cb800, 0x485fc857, - 0x0555fb14, 0x8058b040, 0x0500001f, 0x60064000, - 0x42024800, 0x0010e51f, 0x59a80249, 0x8c000514, + 0x0559f9f3, 0x8058b040, 0x0500001f, 0x60064000, + 0x42024800, 0x001124c3, 0x59a8024c, 0x8c000514, 0x0500001e, 0x59241200, 0x8c080510, 0x05020012, - 0x8c080500, 0x05000010, 0x59a80acc, 0x5924000b, + 0x8c080500, 0x05000010, 0x59a80ad1, 0x5924000b, 0x82000500, 0x00001fff, 0x80040580, 0x0502000a, 0x8c08051e, 0x05020008, 0x8c5c0508, 0x05000004, 0x8408155a, 0x480a4a00, 0x0501f003, 0x0501f813, @@ -2470,149 +2509,152 @@ static const uint32_t isp_2500_risc_code[] = { 0x5c024000, 0x1c01f000, 0x497a4805, 0x59240200, 0x90000501, 0x48024a00, 0x91264c0d, 0x8058b040, 0x05fe07fa, 0x05fdf7f4, 0x4927c857, 0x4923c857, - 0x59a80249, 0x8c000514, 0x05000003, 0x0501f9e6, + 0x59a8024c, 0x8c000514, 0x05000003, 0x0501f9f1, 0x1c01f000, 0x80000580, 0x05fdf7fe, 0x4c580000, - 0x0555fadc, 0x417a4000, 0x42000800, 0x0010e512, + 0x0559f9bb, 0x417a4000, 0x42000800, 0x001124b6, 0x5930001d, 0x80040580, 0x05000006, 0x81224000, - 0x90040c0d, 0x8058b040, 0x05fe07fa, 0x05edffb7, + 0x90040c0d, 0x8058b040, 0x05fe07fa, 0x05edff56, 0x4933c857, 0x4923c857, 0x5c00b000, 0x1c01f000, - 0x4c580000, 0x0555facb, 0x417a4000, 0x42024800, - 0x0010e512, 0x59a81249, 0x8c080508, 0x0500000a, - 0x821c0d80, 0x00fffffe, 0x05000020, 0x8c08050c, - 0x0500001e, 0x59240005, 0x801c0580, 0x0500001b, - 0x0501f017, 0x90080528, 0x05020005, 0x59240005, - 0x82000500, 0x000000ff, 0x0501f008, 0x821c0580, - 0x00fffff0, 0x05000011, 0x59240200, 0x8c000500, - 0x05000004, 0x59240005, 0x801c0580, 0x0500000b, - 0x81224000, 0x91264c0d, 0x8058b040, 0x05000004, - 0x90080528, 0x05fe07f2, 0x05fdf7ed, 0x61fe41ff, - 0x90000541, 0x481fc856, 0x4923c857, 0x5c00b000, - 0x1c01f000, 0x4807c857, 0x4c580000, 0x0555fa9d, - 0x42006800, 0x0010e512, 0x58340005, 0x82000500, - 0x000000ff, 0x80040580, 0x05000005, 0x90346c0d, - 0x8058b040, 0x05fe07f9, 0x90000541, 0x5c00b000, - 0x1c01f000, 0x4923c857, 0x493fc857, 0x4c580000, - 0x4d400000, 0x4d440000, 0x4d340000, 0x4c5c0000, - 0x052dfea7, 0x4df00000, 0x61c0b00f, 0x417a8800, - 0x83440400, 0x0010d400, 0x50000000, 0x80026d40, - 0x0500001f, 0x59340013, 0x80000130, 0x81200580, - 0x0502001b, 0x60a68000, 0x833c0500, 0x00004000, - 0x052e0bc9, 0x052dfcce, 0x052dfd17, 0x052dfa9d, - 0x054dfff1, 0x8d3c051c, 0x05000004, 0x41240800, - 0x0519fc0c, 0x0501f00e, 0x8d3c0506, 0x05000004, - 0x59340200, 0x8c00050e, 0x05020009, 0x4937c857, - 0x0519f935, 0x497a6c0b, 0x4a026c00, 0x00000707, - 0x59240400, 0x8c00050a, 0x05160bf6, 0x81468800, - 0x8058b040, 0x05fe07db, 0x8d3c0502, 0x0500001f, - 0x6040b000, 0x5924b809, 0x505c0000, 0x80026d40, - 0x05000017, 0x59368c03, 0x833c0500, 0x00004000, - 0x052e0ba5, 0x052dfcaa, 0x052dfcf3, 0x052dfa79, - 0x054dffcd, 0x8d3c051c, 0x0502000b, 0x83440580, - 0x000007fe, 0x05020006, 0x59340813, 0x82040d00, - 0xff000000, 0x48066813, 0x0501f005, 0x0515fbd9, - 0x0501f003, 0x41240800, 0x0519fbde, 0x805cb800, - 0x8058b040, 0x05fe07e5, 0x4d300000, 0x61fe89ff, - 0x42026000, 0x00111a70, 0x4a02600a, 0x00110210, - 0x0519feee, 0x4926601d, 0x60a68000, 0x052dfc8c, - 0x054dffb1, 0x5c026000, 0x5c03e000, 0x052c0e41, - 0x5c00b800, 0x5c026800, 0x5c028800, 0x5c028000, - 0x5c00b000, 0x1c01f000, 0x4807c857, 0x4c580000, - 0x0555fa28, 0x42001000, 0x0010e512, 0x58080200, - 0x80040500, 0x48001200, 0x9008140d, 0x8058b040, - 0x05fe07fb, 0x5c00b000, 0x1c01f000, 0x4803c856, - 0x4d440000, 0x4d340000, 0x4c580000, 0x4c5c0000, - 0x6040b000, 0x61c2880f, 0x5924b809, 0x83440580, - 0x000007fe, 0x05000005, 0x505e6800, 0x813669c0, - 0x05000002, 0x0515fba3, 0x81468800, 0x805cb800, - 0x8058b040, 0x05fe07f6, 0x5c00b800, 0x5c00b000, - 0x5c026800, 0x5c028800, 0x1c01f000, 0x5c000000, - 0x4c000000, 0x4803c857, 0x4c5c0000, 0x4c600000, - 0x4c580000, 0x4d240000, 0x4d200000, 0x4178c000, - 0x59a804cc, 0x4803c857, 0x8c00050c, 0x0502001c, - 0x0555f9f8, 0x417a4000, 0x42024800, 0x0010e512, - 0x5924b80b, 0x825cbd00, 0x00001fff, 0x805cb9c0, - 0x0500000f, 0x405c1000, 0x0501f827, 0x05000017, - 0x916c0583, 0x0502000a, 0x59240200, 0x8c000500, - 0x05000007, 0x8c000502, 0x05020005, 0x8c00051e, - 0x05000003, 0x41780800, 0x0501f87f, 0x81224000, - 0x91264c0d, 0x8058b040, 0x05fe07ea, 0x8060c1c0, - 0x5c024000, 0x5c024800, 0x5c00b000, 0x5c00c000, - 0x5c00b800, 0x1c01f000, 0x405c1000, 0x480bc856, - 0x4d3c0000, 0x4d400000, 0x60aa8000, 0x600a7800, - 0x41780800, 0x813261c0, 0x05000002, 0x60400800, - 0x0501f81a, 0x5c028000, 0x5c027800, 0x8060c000, - 0x05fdf7e7, 0x5c000000, 0x4c000000, 0x4803c857, - 0x480bc857, 0x41780800, 0x60800000, 0x052df85b, - 0x4807c857, 0x607c1800, 0x40040000, 0x800c0480, - 0x82000c00, 0x0010d15b, 0x50040800, 0x4807c857, - 0x82080400, 0x00110672, 0x50000000, 0x4803c857, - 0x80040500, 0x1c01f000, 0x480bc857, 0x4d200000, - 0x4d240000, 0x4c580000, 0x4c5c0000, 0x4c600000, - 0x4008c000, 0x4004b800, 0x0555f9aa, 0x417a4000, - 0x42024800, 0x0010e512, 0x5924000b, 0x82000500, - 0x00001fff, 0x80600580, 0x05020013, 0x8c5c0506, - 0x0502000a, 0x05fdff10, 0x497a4805, 0x8c5c0508, - 0x0500000d, 0x60643000, 0x61fc19ff, 0x601c2000, - 0x0511f8ec, 0x0501f008, 0x8c640502, 0x05020005, - 0x05fdff05, 0x497a4805, 0x497a480b, 0x0501f002, - 0x0521fa84, 0x81224000, 0x91264c0d, 0x8058b040, - 0x05fe07e6, 0x5c00c000, 0x5c00b800, 0x5c00b000, - 0x5c024800, 0x5c024000, 0x1c01f000, 0x4803c856, - 0x4c580000, 0x4d240000, 0x4d200000, 0x59a804cc, - 0x8c00050c, 0x05020018, 0x0555f97e, 0x8058b040, - 0x05000015, 0x60064000, 0x42024800, 0x0010e51f, - 0x59240200, 0x8c00051e, 0x0500000b, 0x8c00050e, - 0x05020009, 0x59a802cc, 0x5924080b, 0x82040d00, - 0x00001fff, 0x80040580, 0x05000003, 0x41780800, - 0x0501f809, 0x91264c0d, 0x81224000, 0x8058b040, - 0x05fe07f0, 0x5c024000, 0x5c024800, 0x5c00b000, - 0x1c01f000, 0x4d300000, 0x4d440000, 0x4c040000, - 0x61fa880f, 0x42003000, 0x00fffffe, 0x0515fd7d, - 0x05020018, 0x0535fc6a, 0x05000016, 0x5c000800, - 0x48066009, 0x4936600a, 0x4926601d, 0x64066407, - 0x600c0800, 0x0515fd4c, 0x599c0208, 0x48026c12, - 0x600a7000, 0x0009f800, 0x497a4805, 0x59240200, - 0x82000500, 0xffffff9d, 0x82000540, 0x00008080, - 0x48024a00, 0x5c028800, 0x5c026000, 0x1c01f000, - 0x5c000800, 0x05fdf7fc, 0x480bc857, 0x4c5c0000, - 0x4c580000, 0x4d200000, 0x4d240000, 0x0555f93d, - 0x8058b040, 0x0500001c, 0x4008b800, 0x60064000, - 0x42024800, 0x0010e51f, 0x59240200, 0x8c000500, - 0x05000011, 0x82000500, 0x00008100, 0x0502000e, - 0x5924000b, 0x82000500, 0x00001fff, 0x05000005, - 0x805c0580, 0x05020008, 0x0501f82f, 0x0501f006, - 0x42001000, 0x0010e512, 0x5808000b, 0x4802480b, - 0x0501f829, 0x81224000, 0x91264c0d, 0x8058b040, - 0x05fe07ea, 0x5c024800, 0x5c024000, 0x5c00b000, - 0x5c00b800, 0x1c01f000, 0x480bc857, 0x4c580000, - 0x4c600000, 0x4008c000, 0x0555f916, 0x42001800, - 0x0010e512, 0x580c000b, 0x82000500, 0x00001fff, - 0x80600580, 0x0502000e, 0x81240583, 0x0500000c, - 0x580c0a00, 0x90040503, 0x90000583, 0x05020008, - 0x82040d40, 0x000080e0, 0x48041a00, 0x5924080c, - 0x497a480c, 0x4804180c, 0x0501f004, 0x900c1c0d, - 0x8058b040, 0x05fe07ec, 0x5c00c000, 0x5c00b000, - 0x1c01f000, 0x4923c857, 0x61fa880f, 0x42003000, - 0x00fffffe, 0x0515fd17, 0x05020011, 0x599c0208, - 0x48026c12, 0x4d2c0000, 0x417a5800, 0x0545fa54, - 0x5c025800, 0x0500000a, 0x59a800bb, 0x80000000, - 0x480350bb, 0x59240200, 0x84000550, 0x84000512, + 0x4c580000, 0x0559f9aa, 0x417a4000, 0x42024800, + 0x001124b6, 0x59a8124c, 0x8c080508, 0x05000013, + 0x821c0d80, 0x00fffffe, 0x0502000a, 0x0559f9c1, + 0x05000028, 0x60040900, 0x0501fa0b, 0x05000022, + 0x40124800, 0x40164000, 0x80000580, 0x0501f021, + 0x8c08050c, 0x0500001f, 0x59240005, 0x801c0580, + 0x0500001c, 0x0501f018, 0x90080528, 0x05020005, + 0x59240005, 0x82000500, 0x000000ff, 0x0501f009, + 0x821c0580, 0x00fffff0, 0x05000012, 0x59240200, + 0x90000503, 0x90000583, 0x05020004, 0x59240005, + 0x801c0580, 0x0500000b, 0x81224000, 0x91264c0d, + 0x8058b040, 0x05000004, 0x90080528, 0x05fe07f1, + 0x05fdf7ec, 0x61fe41ff, 0x90000541, 0x481fc856, + 0x4923c857, 0x5c00b000, 0x1c01f000, 0x4807c857, + 0x4c580000, 0x0559f972, 0x42006800, 0x001124b6, + 0x58340005, 0x82000500, 0x000000ff, 0x80040580, + 0x05000005, 0x90346c0d, 0x8058b040, 0x05fe07f9, + 0x90000541, 0x5c00b000, 0x1c01f000, 0x4923c857, + 0x493fc857, 0x4c580000, 0x4d400000, 0x4d440000, + 0x4d340000, 0x4c5c0000, 0x0531fabf, 0x4df00000, + 0x59a8b0ac, 0x417a8800, 0x0001fb08, 0x0502001f, + 0x59340013, 0x80000130, 0x81200580, 0x0502001b, + 0x60a68000, 0x833c0500, 0x00004000, 0x052e0fdf, + 0x0531f8ea, 0x0531f933, 0x052dfeb3, 0x0551fe65, + 0x8d3c051c, 0x05000004, 0x41240800, 0x0519fe38, + 0x0501f00e, 0x8d3c0506, 0x05000004, 0x59340200, + 0x8c00050e, 0x05020009, 0x4937c857, 0x0519fafc, + 0x497a6c0b, 0x4a026c00, 0x00000707, 0x59240400, + 0x8c00050a, 0x05160d4a, 0x81468800, 0x83440580, + 0x000007f0, 0x05020002, 0x60028810, 0x8058b040, + 0x05fe07da, 0x8d3c0502, 0x0500001f, 0x6040b000, + 0x5924b809, 0x505c0000, 0x80026d40, 0x05000017, + 0x59368c03, 0x833c0500, 0x00004000, 0x052e0fb7, + 0x0531f8c2, 0x0531f90b, 0x052dfe8b, 0x0551fe3d, + 0x8d3c051c, 0x0502000b, 0x83440580, 0x000007fe, + 0x05020006, 0x59340813, 0x82040d00, 0xff000000, + 0x48066813, 0x0501f005, 0x0515fd29, 0x0501f003, + 0x41240800, 0x0519fe06, 0x805cb800, 0x8058b040, + 0x05fe07e5, 0x4d300000, 0x61fe89ff, 0x42026000, + 0x00115a14, 0x4a02600a, 0x001141b4, 0x051df91c, + 0x4926601d, 0x60a68000, 0x0531f8a4, 0x0551fe21, + 0x5c026000, 0x5c03e000, 0x05300a58, 0x5c00b800, + 0x5c026800, 0x5c028800, 0x5c028000, 0x5c00b000, + 0x1c01f000, 0x4807c857, 0x4c580000, 0x0559f8fc, + 0x42001000, 0x001124b6, 0x58080200, 0x80040500, + 0x48001200, 0x9008140d, 0x8058b040, 0x05fe07fb, + 0x5c00b000, 0x1c01f000, 0x4803c856, 0x4d440000, + 0x4d340000, 0x4c580000, 0x4c5c0000, 0x6040b000, + 0x61c2880f, 0x5924b809, 0x83440580, 0x000007fe, + 0x05000005, 0x505e6800, 0x813669c0, 0x05000002, + 0x0515fcf3, 0x81468800, 0x805cb800, 0x8058b040, + 0x05fe07f6, 0x5c00b800, 0x5c00b000, 0x5c026800, + 0x5c028800, 0x1c01f000, 0x5c000000, 0x4c000000, + 0x4803c857, 0x4c5c0000, 0x4c600000, 0x4c580000, + 0x4d240000, 0x4d200000, 0x4178c000, 0x59a804d1, + 0x4803c857, 0x8c00050c, 0x0502001c, 0x0559f8cc, + 0x417a4000, 0x42024800, 0x001124b6, 0x5924b80b, + 0x825cbd00, 0x00001fff, 0x805cb9c0, 0x0500000f, + 0x405c1000, 0x0501f827, 0x05000017, 0x916c0583, + 0x0502000a, 0x59240200, 0x8c000500, 0x05000007, + 0x8c000502, 0x05020005, 0x8c00051e, 0x05000003, + 0x41780800, 0x0501f87f, 0x81224000, 0x91264c0d, + 0x8058b040, 0x05fe07ea, 0x8060c1c0, 0x5c024000, + 0x5c024800, 0x5c00b000, 0x5c00c000, 0x5c00b800, + 0x1c01f000, 0x405c1000, 0x480bc856, 0x4d3c0000, + 0x4d400000, 0x60aa8000, 0x600a7800, 0x41780800, + 0x813261c0, 0x05000002, 0x60400800, 0x0501f81a, + 0x5c028000, 0x5c027800, 0x8060c000, 0x05fdf7e7, + 0x5c000000, 0x4c000000, 0x4803c857, 0x480bc857, + 0x41780800, 0x60800000, 0x052dfc6d, 0x4807c857, + 0x607c1800, 0x40040000, 0x800c0480, 0x82000c00, + 0x0010d8d9, 0x50040800, 0x4807c857, 0x82080400, + 0x00114616, 0x50000000, 0x4803c857, 0x80040500, + 0x1c01f000, 0x480bc857, 0x4d200000, 0x4d240000, + 0x4c580000, 0x4c5c0000, 0x4c600000, 0x4008c000, + 0x4004b800, 0x0559f87e, 0x417a4000, 0x42024800, + 0x001124b6, 0x5924000b, 0x82000500, 0x00001fff, + 0x80600580, 0x05020013, 0x8c5c0506, 0x0502000a, + 0x05fdff0f, 0x497a4805, 0x8c5c0508, 0x0500000d, + 0x60643000, 0x61fc19ff, 0x601c2000, 0x0511f9e2, + 0x0501f008, 0x8c640502, 0x05020005, 0x05fdff04, + 0x497a4805, 0x497a480b, 0x0501f002, 0x0521fd19, + 0x81224000, 0x91264c0d, 0x8058b040, 0x05fe07e6, + 0x5c00c000, 0x5c00b800, 0x5c00b000, 0x5c024800, + 0x5c024000, 0x1c01f000, 0x4803c856, 0x4c580000, + 0x4d240000, 0x4d200000, 0x59a804d1, 0x8c00050c, + 0x05020018, 0x0559f852, 0x8058b040, 0x05000015, + 0x60064000, 0x42024800, 0x001124c3, 0x59240200, + 0x8c00051e, 0x0500000b, 0x8c00050e, 0x05020009, + 0x59a802d1, 0x5924080b, 0x82040d00, 0x00001fff, + 0x80040580, 0x05000003, 0x41780800, 0x0501f809, + 0x91264c0d, 0x81224000, 0x8058b040, 0x05fe07f0, + 0x5c024000, 0x5c024800, 0x5c00b000, 0x1c01f000, + 0x4d300000, 0x4d440000, 0x4c040000, 0x61fa880f, + 0x42003000, 0x00fffffe, 0x0515fef1, 0x05020018, + 0x0539f8d8, 0x05000016, 0x5c000800, 0x48066009, + 0x4936600a, 0x4926601d, 0x64066407, 0x600c0800, + 0x0515feb8, 0x599c0208, 0x48026c12, 0x600a7000, + 0x0009f839, 0x497a4805, 0x59240200, 0x82000500, + 0xffffff9d, 0x82000540, 0x00008080, 0x48024a00, + 0x5c028800, 0x5c026000, 0x1c01f000, 0x5c000800, + 0x05fdf7fc, 0x480bc857, 0x4c5c0000, 0x4c580000, + 0x4d200000, 0x4d240000, 0x0559f811, 0x8058b040, + 0x0500001c, 0x4008b800, 0x60064000, 0x42024800, + 0x001124c3, 0x59240200, 0x8c000500, 0x05000011, + 0x82000500, 0x00008100, 0x0502000e, 0x5924000b, + 0x82000500, 0x00001fff, 0x05000005, 0x805c0580, + 0x05020008, 0x0501f82f, 0x0501f006, 0x42001000, + 0x001124b6, 0x5808000b, 0x4802480b, 0x0501f829, + 0x81224000, 0x91264c0d, 0x8058b040, 0x05fe07ea, + 0x5c024800, 0x5c024000, 0x5c00b000, 0x5c00b800, + 0x1c01f000, 0x480bc857, 0x4c580000, 0x4c600000, + 0x4008c000, 0x0555ffea, 0x42001800, 0x001124b6, + 0x580c000b, 0x82000500, 0x00001fff, 0x80600580, + 0x0502000e, 0x81240583, 0x0500000c, 0x580c0a00, + 0x90040503, 0x90000583, 0x05020008, 0x82040d40, + 0x000080e0, 0x48041a00, 0x5924080c, 0x497a480c, + 0x4804180c, 0x0501f004, 0x900c1c0d, 0x8058b040, + 0x05fe07ec, 0x5c00c000, 0x5c00b000, 0x1c01f000, + 0x4923c857, 0x61fa880f, 0x42003000, 0x00fffffe, + 0x0515fe8b, 0x05020012, 0x599c0208, 0x48026c12, + 0x4d2c0000, 0x417a5800, 0x0545ff4c, 0x5c025800, + 0x0500000b, 0x59a800c0, 0x80000000, 0x480350c0, + 0x59240200, 0x82000500, 0xfffffd1d, 0x84000550, 0x48024a00, 0x90000541, 0x1c01f000, 0x80000580, 0x05fdf7fe, 0x4923c857, 0x4d300000, 0x4d440000, - 0x61fa880f, 0x42003000, 0x00fffffe, 0x0515fcfd, - 0x0502001b, 0x0535fbea, 0x05000019, 0x497a6009, + 0x61fa880f, 0x42003000, 0x00fffffe, 0x0515fe70, + 0x0502001b, 0x0539f857, 0x05000019, 0x497a6009, 0x4936600a, 0x4926601d, 0x64066407, 0x600c0800, - 0x0515fccd, 0x599c0208, 0x48026c12, 0x600a7000, - 0x0009f800, 0x59240200, 0x4927c857, 0x82000500, - 0xffffff9d, 0x8400054e, 0x48024a00, 0x59a80249, - 0x82000500, 0xffffdafc, 0x8400054e, 0x48035249, + 0x0515fe38, 0x599c0208, 0x48026c12, 0x600a7000, + 0x0009f839, 0x59240200, 0x4927c857, 0x82000500, + 0xffffff9d, 0x8400054e, 0x48024a00, 0x59a8024c, + 0x82000500, 0xffffdafc, 0x8400054e, 0x4803524c, 0x5c028800, 0x5c026000, 0x1c01f000, 0x80000580, - 0x05fdf7fc, 0x4c580000, 0x4807c857, 0x0555f8bd, - 0x41782800, 0x42002000, 0x0010e512, 0x58100200, + 0x05fdf7fc, 0x4c580000, 0x4807c857, 0x0555ff90, + 0x41782800, 0x42002000, 0x001124b6, 0x58100200, 0x80040500, 0x80040580, 0x05000007, 0x80142800, 0x9010240d, 0x8058b040, 0x05fe07f9, 0x5c00b000, 0x1c01f000, 0x90000541, 0x05fdf7fd, 0x4c580000, - 0x0555f8ac, 0x42001000, 0x0010e512, 0x58080200, + 0x0555ff7f, 0x42001000, 0x001124b6, 0x58080200, 0x8c00051a, 0x05020004, 0x9008140d, 0x8058b040, 0x05fe07fb, 0x5c00b000, 0x1c01f000, 0x00007eef, 0x00007de8, 0x00007ce4, 0x000080e2, 0x00007be1, @@ -2678,74 +2720,74 @@ static const uint32_t isp_2500_risc_code[] = { 0x00008000, 0x00008000, 0x00008000, 0x00008000, 0x00008000, 0x00008000, 0x00008000, 0x00008000, 0x00008000, 0x00008000, 0x00008000, 0x00008000, - 0x00008000, 0x00008000, 0x00008000, 0x05f1f81e, - 0x05ec0c86, 0x492f4017, 0x1c01f000, 0x91a0ac07, - 0x83a00580, 0x0010dceb, 0x05000008, 0x492fc857, - 0x812e59c0, 0x05ec0c7d, 0x912ca40a, 0x6034b000, - 0x0551ff47, 0x0501f00d, 0x6040b000, 0x91e0a420, + 0x00008000, 0x00008000, 0x00008000, 0x05edffad, + 0x05ec0c19, 0x492f4017, 0x1c01f000, 0x91a0ac07, + 0x83a00580, 0x00111c71, 0x05000008, 0x492fc857, + 0x812e59c0, 0x05ec0c10, 0x912ca40a, 0x6034b000, + 0x0555fe1a, 0x0501f00d, 0x6040b000, 0x91e0a420, 0x50500000, 0x8050a000, 0x50500800, 0x900409c0, 0x80040540, 0x4400a800, 0x8050a000, 0x8054a800, 0x8058b040, 0x05fe07f7, 0x1c01f000, 0x42000000, - 0x0010e3bc, 0x0551fe6e, 0x59a00207, 0xb0000cbf, - 0x050210ba, 0x0c01f001, 0x001029f8, 0x00102a2e, - 0x00102a2e, 0x00102a7a, 0x00102a8f, 0x00102a2e, - 0x001029f8, 0x00102aa6, 0x00102ab7, 0x00102a2e, - 0x00102a2e, 0x00102ad0, 0x00102aef, 0x00102b0e, - 0x00102a2e, 0x00102b2b, 0x00102a2e, 0x00102a2e, - 0x00102b4b, 0x00102a2e, 0x00102c08, 0x00102a2e, - 0x00102a2e, 0x00102a2e, 0x00102a2e, 0x00102c2f, - 0x00102c8a, 0x00102a2e, 0x00102a2e, 0x00102a2e, - 0x00102cd8, 0x00102cf9, 0x00102f40, 0x00102a2e, - 0x00102f8d, 0x00102a2e, 0x00102a2e, 0x00102a2e, - 0x00102a2e, 0x00102f92, 0x00103094, 0x00102a2e, - 0x0010309b, 0x00102a2e, 0x00102a2e, 0x00102a2e, - 0x00102a2e, 0x00102a2e, 0x0010309c, 0x0010315f, - 0x00103360, 0x0010336c, 0x00102a2e, 0x00102a2e, - 0x00102a2e, 0x00102a2e, 0x0010337f, 0x00102a2e, - 0x00102a2e, 0x00102a2e, 0x00102a2e, 0x00102a2e, - 0x00102a2e, 0x00102a2e, 0x001033a8, 0x001033ea, - 0x00103432, 0x00103449, 0x00103461, 0x001036ae, - 0x00103a28, 0x00102a2e, 0x00103f5d, 0x00103b98, - 0x00103bcd, 0x00102a2e, 0x00102a2e, 0x00102a2e, - 0x00102a2e, 0x00102a2e, 0x00102a2e, 0x00102a2e, - 0x00102a2e, 0x00103be8, 0x00103c39, 0x00102a2e, - 0x00102a2e, 0x00103c8d, 0x00102a2e, 0x00103d05, - 0x00103dba, 0x00103e61, 0x00102a2e, 0x00103e8f, - 0x00103f19, 0x00102a2e, 0x00103f5d, 0x001042c2, - 0x00102a2e, 0x001042d1, 0x0010434b, 0x00102a2e, - 0x00102a2e, 0x00102a2e, 0x00102a2e, 0x001043a8, - 0x001043c2, 0x001043db, 0x00102a2e, 0x0010444d, - 0x00102a2e, 0x00102a2e, 0x00104491, 0x00102a2e, - 0x001044b5, 0x00102a2e, 0x00102a2e, 0x0010450c, - 0x00104639, 0x00102a2e, 0x00102a2e, 0x00102a2e, - 0x00102a2e, 0x00102a2e, 0x0010467b, 0x001046fa, - 0x00102a2e, 0x48efc857, 0x0509fc65, 0x0500003b, - 0x48efc857, 0x4a034207, 0x00004000, 0x050dfdb6, - 0x83a00580, 0x0010dceb, 0x0500000b, 0x58ee580a, - 0x4d2c0000, 0x0501f852, 0x41a25800, 0x05edff8f, - 0x40ee5800, 0x05edff8d, 0x5c025800, 0x492fc857, - 0x0001f382, 0x05026007, 0x59a0001e, 0x84000542, - 0x4803401e, 0x4a01d809, 0x00102a09, 0x1c01f000, + 0x0011235d, 0x0555fd41, 0x59a00207, 0xb0000cbf, + 0x050210ba, 0x0c01f001, 0x00102aa0, 0x00102ad6, + 0x00102ad6, 0x00102b22, 0x00102b37, 0x00102ad6, + 0x00102aa0, 0x00102b4e, 0x00102b5f, 0x00102ad6, + 0x00102ad6, 0x00102b79, 0x00102b98, 0x00102bb7, + 0x00102ad6, 0x00102bd4, 0x00102ad6, 0x00102ad6, + 0x00102bf4, 0x00102ad6, 0x00102cb0, 0x00102ad6, + 0x00102ad6, 0x00102ad6, 0x00102ad6, 0x00102cd7, + 0x00102d32, 0x00102ad6, 0x00102ad6, 0x00102ad6, + 0x00102d80, 0x00102da1, 0x00102feb, 0x00102ad6, + 0x00103038, 0x00102ad6, 0x00102ad6, 0x00102ad6, + 0x00102ad6, 0x0010303d, 0x0010313c, 0x00102ad6, + 0x00103143, 0x00102ad6, 0x00102ad6, 0x00102ad6, + 0x00102ad6, 0x00102ad6, 0x00103144, 0x00103207, + 0x0010348c, 0x00103498, 0x00104cec, 0x00102ad6, + 0x00102ad6, 0x00102ad6, 0x001034ab, 0x00102ad6, + 0x00102ad6, 0x00102ad6, 0x00102ad6, 0x00102ad6, + 0x00102ad6, 0x00102ad6, 0x001034f5, 0x00103537, + 0x0010357f, 0x00103594, 0x001035ac, 0x001037f9, + 0x00103b9b, 0x00102ad6, 0x001040d3, 0x00103d0b, + 0x00103d40, 0x00102ad6, 0x00102ad6, 0x00102ad6, + 0x00102ad6, 0x00102ad6, 0x00102ad6, 0x00102ad6, + 0x00102ad6, 0x00103d5b, 0x00103dac, 0x00102ad6, + 0x00102ad6, 0x00103e00, 0x00102ad6, 0x00103e78, + 0x00103f2d, 0x00103fd7, 0x00102ad6, 0x00104005, + 0x0010408f, 0x00102ad6, 0x001040d3, 0x00104441, + 0x00102ad6, 0x00104450, 0x001044cc, 0x00102ad6, + 0x00102ad6, 0x00102ad6, 0x00102ad6, 0x0010452c, + 0x00104546, 0x0010455f, 0x00102ad6, 0x001045d1, + 0x00102ad6, 0x00102ad6, 0x00104621, 0x00102ad6, + 0x00104645, 0x00102ad6, 0x00102ad6, 0x0010469c, + 0x001047db, 0x00102ad6, 0x00102ad6, 0x00102ad6, + 0x00102ad6, 0x00102ad6, 0x0010481d, 0x0010489c, + 0x00102ad6, 0x48efc857, 0x0509fd33, 0x0500003b, + 0x48efc857, 0x4a034207, 0x00004000, 0x050dfeb0, + 0x83a00580, 0x00111c71, 0x0500000b, 0x58ee580a, + 0x4d2c0000, 0x0501f852, 0x41a25800, 0x05edff1e, + 0x40ee5800, 0x05edff1c, 0x5c025800, 0x492fc857, + 0x0001f3a8, 0x05026007, 0x59a0001e, 0x84000542, + 0x4803401e, 0x4a01d809, 0x00102ab1, 0x1c01f000, 0x59a00207, 0x82000d80, 0x00004000, 0x05000005, 0x900001c0, 0x90000551, 0x4803c011, 0x0501f004, 0x900001c0, 0x90000550, 0x4803c011, 0x0501f846, - 0x59e00017, 0x8c00050a, 0x60000800, 0x00020892, - 0x8d0c0530, 0x05f60ca4, 0x000209bc, 0x6403c017, + 0x59e00017, 0x8c00050a, 0x60000800, 0x0002089a, + 0x8d0c0530, 0x05f60c6d, 0x000209c4, 0x6403c017, 0x4203e000, 0x30000001, 0x4203e000, 0x40000000, - 0x40ee5800, 0x05edff69, 0x59a0001e, 0x84000504, + 0x40ee5800, 0x05edfef8, 0x59a0001e, 0x84000504, 0x4803401e, 0x1c01f000, 0x4803c856, 0x4a034207, 0x00004001, 0x05fdf7ca, 0x4803c856, 0x4a034207, 0x00004002, 0x05fdf7c6, 0x4803c856, 0x4a034207, - 0x00004003, 0x05fdf7c2, 0x05f9ff55, 0x4803c856, - 0x4a034207, 0x00004005, 0x05fdf7bd, 0x05f9ff50, + 0x00004003, 0x05fdf7c2, 0x05f9ff2d, 0x4803c856, + 0x4a034207, 0x00004005, 0x05fdf7bd, 0x05f9ff28, 0x4803c856, 0x4a034207, 0x00004006, 0x05fdf7b8, 0x4803c856, 0x4a034207, 0x0000400b, 0x05fdf7b4, 0x4803c856, 0x4a034207, 0x0000400c, 0x05fdf7b0, 0x4803c856, 0x4a034207, 0x0000400c, 0x05fdf7ac, 0x4a034207, 0x00004020, 0x05fdf7a9, 0x4c580000, 0x4c500000, 0x4c540000, 0x58eca80a, 0x8054a9c0, - 0x05ec0b82, 0x91a0a407, 0x9054ac0a, 0x6034b000, - 0x0551fe4b, 0x5c00a800, 0x5c00a000, 0x5c00b000, + 0x05ec0b15, 0x91a0a407, 0x9054ac0a, 0x6034b000, + 0x0555fd1e, 0x5c00a800, 0x5c00a000, 0x5c00b000, 0x1c01f000, 0x4c580000, 0x4c500000, 0x4c540000, 0x59a00007, 0x4803c857, 0x59a00008, 0x4803c857, 0x59a00009, 0x4803c857, 0x91e0ac20, 0x91a0a407, @@ -2755,11 +2797,11 @@ static const uint32_t isp_2500_risc_code[] = { 0x5c00b000, 0x1c01f000, 0x59a00407, 0x800000c2, 0x59a00a08, 0x900409c0, 0x80040540, 0x84000540, 0x59a00c08, 0x8c040500, 0x0500000b, 0x4c000000, - 0x0551fe7b, 0x5c000000, 0x05000004, 0x48030004, + 0x0555fd4e, 0x5c000000, 0x05000004, 0x48030004, 0x64030000, 0x05fdf76f, 0x64030000, 0x64134407, 0x05fc07af, 0x4803880e, 0x05fdf76a, 0x59a00407, 0x800000c2, 0x59a00c08, 0x8c040500, 0x0500000d, - 0x4c000000, 0x0551fe6a, 0x5c000000, 0x05000006, + 0x4c000000, 0x0555fd3d, 0x5c000000, 0x05000006, 0x48030004, 0x59800805, 0x48074407, 0x64030000, 0x05fdf75c, 0x64030000, 0x64134407, 0x05fc079c, 0x4803880e, 0x59c4080f, 0x48074407, 0x900409c0, @@ -2767,103 +2809,103 @@ static const uint32_t isp_2500_risc_code[] = { 0x900c19c0, 0x800c1d40, 0x580c0803, 0x80000580, 0x500c1000, 0x80080400, 0x800c1800, 0x80040840, 0x05fe07fc, 0x48034407, 0x900001c0, 0x48034208, - 0x800001c0, 0x05fc0743, 0x05fdf780, 0x641f4407, + 0x800001c0, 0x05fc0743, 0x05fdf780, 0x64234407, 0x640f4208, 0x64034408, 0x59a8000a, 0x82000c80, 0x00140000, 0x05021004, 0x42000000, 0x0013ffff, - 0x0501f006, 0x59a808ca, 0x8c040500, 0x05000003, + 0x0501f006, 0x59a808cf, 0x8c040500, 0x05000003, 0x82000400, 0x00006000, 0x48034209, 0x900001c0, - 0x48034409, 0x61540121, 0x4803420a, 0x900001c0, - 0x4803440e, 0x60000000, 0x4803400f, 0x05fdf729, + 0x48034409, 0x42000000, 0x001090d5, 0x4803420a, + 0x900001c0, 0x4803440e, 0x60000000, 0x4803400f, + 0x05fdf728, 0x59a00408, 0x59a01208, 0x900811c0, + 0x80081540, 0x59a0040a, 0x59a01a0a, 0x900c19c0, + 0x800c1d40, 0x59a00a09, 0x59a00409, 0x900409c0, + 0x80040d40, 0x59a0020b, 0x59a02407, 0x900001c0, + 0x80100540, 0x82002480, 0x00100000, 0x05fc175d, + 0x59a8280a, 0x80142480, 0x050e15d3, 0x42002800, + 0x7fefffff, 0x80142480, 0x05fe1756, 0x42002800, + 0x7ffd0000, 0x80142480, 0x05fc1752, 0x050df5ca, 0x59a00408, 0x59a01208, 0x900811c0, 0x80081540, 0x59a0040a, 0x59a01a0a, 0x900c19c0, 0x800c1d40, 0x59a00a09, 0x59a00409, 0x900409c0, 0x80040d40, 0x59a0020b, 0x59a02407, 0x900001c0, 0x80100540, - 0x82002480, 0x00100000, 0x05fc175e, 0x59a8280a, - 0x80142480, 0x050e14da, 0x42002800, 0x7fefffff, - 0x80142480, 0x05fe1757, 0x42002800, 0x7ffd0000, - 0x80142480, 0x05fc1753, 0x050df4d1, 0x59a00408, - 0x59a01208, 0x900811c0, 0x80081540, 0x59a0040a, - 0x59a01a0a, 0x900c19c0, 0x800c1d40, 0x59a00a09, - 0x59a00409, 0x900409c0, 0x80040d40, 0x59a0020b, - 0x59a02407, 0x900001c0, 0x80100540, 0x82002480, - 0x00100000, 0x05fc173f, 0x59a8280a, 0x80142480, - 0x050e14c4, 0x42002800, 0x7fefffff, 0x80142480, - 0x05fe1738, 0x42002800, 0x7ffd0000, 0x80142480, - 0x05fc1734, 0x050df4bb, 0x59a02408, 0x59a00208, - 0x901021c0, 0x80102540, 0x59a01a0b, 0x59a00407, - 0x900c19c0, 0x800c1d40, 0x41781000, 0x820c0580, - 0x00007c00, 0x0500000a, 0x820c0480, 0x00007a00, - 0x05001007, 0x820c0480, 0x00007cff, 0x05021004, - 0x0551fddf, 0x05000007, 0x80081000, 0x44101800, - 0x800811c0, 0x05fc06d3, 0x64030000, 0x05fdf6d1, - 0x64030000, 0x64134407, 0x05fdf711, 0x59a01a0b, + 0x82002480, 0x00100000, 0x05fc173e, 0x59a8280a, + 0x80142480, 0x050e15bd, 0x42002800, 0x7fefffff, + 0x80142480, 0x05fe1737, 0x42002800, 0x7ffd0000, + 0x80142480, 0x05fc1733, 0x050df5b4, 0x59a02408, + 0x59a00208, 0x901021c0, 0x80102540, 0x59a01a0b, 0x59a00407, 0x900c19c0, 0x800c1d40, 0x41781000, 0x820c0580, 0x00007c00, 0x0500000a, 0x820c0480, 0x00007a00, 0x05001007, 0x820c0480, 0x00007cff, - 0x05021004, 0x0551fdc6, 0x0500000e, 0x80081000, - 0x500c0000, 0x82000d00, 0x0000ffff, 0x48074208, - 0x82000d00, 0xffff0000, 0x900409c0, 0x48074408, - 0x800811c0, 0x05fc06b3, 0x64030000, 0x05fdf6b1, - 0x64030000, 0x64134407, 0x05fdf6f1, 0x4d2c0000, - 0x4d340000, 0x4d300000, 0x4d440000, 0x050dfd36, - 0x05020006, 0x4923c857, 0x4927c857, 0x59a28c07, - 0x0515ff25, 0x05000006, 0x5c028800, 0x5c026000, - 0x5c026800, 0x5c025800, 0x05fdf6e6, 0x4937c857, - 0x59a04408, 0x59a00208, 0x900001c0, 0x80204540, - 0x4823c857, 0x59a04a0b, 0x0501f877, 0x05000008, - 0x64074209, 0x4a034407, 0x0000ffff, 0x4a034208, - 0x0000ffff, 0x497b4408, 0x0501f03d, 0x497b4407, - 0x0501f87e, 0x0500003f, 0x59300402, 0x48034407, - 0x59300202, 0x48034208, 0x59300006, 0x48034408, - 0x59a0020c, 0x8c000500, 0x05000030, 0x4933c857, - 0x0515feb9, 0x05000003, 0x64274407, 0x0501f031, - 0x8d0c050e, 0x05000003, 0x64074407, 0x0501f02d, - 0x916c0583, 0x05000003, 0x641f4407, 0x0501f029, - 0x59340200, 0x8c00050e, 0x05000003, 0x64834407, - 0x0501f024, 0x59300407, 0x90000d83, 0x05020007, - 0x59300804, 0x9004051f, 0x90000584, 0x05020003, - 0x8c04053e, 0x05020015, 0x050dfc0d, 0x05020003, - 0x640b4407, 0x0501f017, 0x492fc857, 0x4a025c08, - 0x00008000, 0x497a5a08, 0x497a5809, 0x0545fb53, - 0x05020003, 0x640f4407, 0x0501f00e, 0x4a01d809, - 0x00102bb1, 0x5c028800, 0x5c026000, 0x5c026800, - 0x5c025800, 0x1c01f000, 0x640b4209, 0x5c028800, - 0x5c026000, 0x5c026800, 0x5c025800, 0x05fdf64d, + 0x05021004, 0x0555fcb1, 0x05000007, 0x80081000, + 0x44101800, 0x800811c0, 0x05fc06d2, 0x64030000, + 0x05fdf6d0, 0x64030000, 0x64134407, 0x05fdf710, + 0x59a01a0b, 0x59a00407, 0x900c19c0, 0x800c1d40, + 0x41781000, 0x820c0580, 0x00007c00, 0x0500000a, + 0x820c0480, 0x00007a00, 0x05001007, 0x820c0480, + 0x00007cff, 0x05021004, 0x0555fc98, 0x0500000e, + 0x80081000, 0x500c0000, 0x82000d00, 0x0000ffff, + 0x48074208, 0x82000d00, 0xffff0000, 0x900409c0, + 0x48074408, 0x800811c0, 0x05fc06b2, 0x64030000, + 0x05fdf6b0, 0x64030000, 0x64134407, 0x05fdf6f0, + 0x4d2c0000, 0x4d340000, 0x4d300000, 0x4d440000, + 0x050dfe2a, 0x05020006, 0x4923c857, 0x4927c857, + 0x59a28c07, 0x0519f945, 0x05000006, 0x5c028800, + 0x5c026000, 0x5c026800, 0x5c025800, 0x05fdf6e5, + 0x4937c857, 0x59a04408, 0x59a00208, 0x900001c0, + 0x80204540, 0x4823c857, 0x59a04a0b, 0x0501f877, + 0x05000008, 0x64074209, 0x4a034407, 0x0000ffff, + 0x4a034208, 0x0000ffff, 0x497b4408, 0x0501f03d, + 0x497b4407, 0x0501f87e, 0x0500003f, 0x59300402, + 0x48034407, 0x59300202, 0x48034208, 0x59300006, + 0x48034408, 0x59a0020c, 0x8c000500, 0x05000030, + 0x4933c857, 0x0519f8d9, 0x05000003, 0x64274407, + 0x0501f031, 0x8d0c050e, 0x05000003, 0x64074407, + 0x0501f02d, 0x916c0583, 0x05000003, 0x641f4407, + 0x0501f029, 0x59340200, 0x8c00050e, 0x05000003, + 0x64834407, 0x0501f024, 0x59300407, 0x90000d83, + 0x05020007, 0x59300804, 0x9004051f, 0x90000584, + 0x05020003, 0x8c04053e, 0x05020015, 0x050dfd06, + 0x05020003, 0x640b4407, 0x0501f017, 0x492fc857, + 0x4a025c08, 0x00008000, 0x497a5a08, 0x497a5809, + 0x0549f85b, 0x05020003, 0x640f4407, 0x0501f00e, + 0x4a01d809, 0x00102c5a, 0x5c028800, 0x5c026000, + 0x5c026800, 0x5c025800, 0x1c01f000, 0x640b4209, 0x5c028800, 0x5c026000, 0x5c026800, 0x5c025800, - 0x05fdf68b, 0x492fc857, 0x4933c857, 0x497a602a, - 0x592c0009, 0x82000580, 0x01000000, 0x05020003, - 0x64134407, 0x05fdf682, 0x4d2c0000, 0x912e5c0a, - 0x592c0000, 0x82000580, 0x02000000, 0x05020011, - 0x4803c856, 0x64134209, 0x592c0804, 0x82040500, - 0x0000ffff, 0x48034409, 0x80040920, 0x4807420a, - 0x592c0805, 0x82040500, 0x0000ffff, 0x4803440a, - 0x80040920, 0x4807420b, 0x5c025800, 0x05fdf629, - 0x4803c856, 0x64174209, 0x592c0801, 0x82040500, - 0x0000ffff, 0x48034409, 0x80040920, 0x4807420a, - 0x05fdf7f6, 0x4937c857, 0x4823c857, 0x4827c857, - 0x5934000f, 0x80001d40, 0x05000009, 0x580c0009, - 0x80200580, 0x05020007, 0x580c0003, 0x58000211, - 0x80240580, 0x05020003, 0x81780000, 0x1c01f000, - 0x580c0000, 0x05fdf7f4, 0x4823c857, 0x4d2c0000, - 0x42026000, 0x00111b00, 0x59300407, 0x90000d83, + 0x05fdf64c, 0x5c028800, 0x5c026000, 0x5c026800, + 0x5c025800, 0x05fdf68a, 0x492fc857, 0x4933c857, + 0x497a602a, 0x592c0009, 0x82000580, 0x01000000, + 0x05020003, 0x64134407, 0x05fdf681, 0x4d2c0000, + 0x912e5c0a, 0x592c0000, 0x82000580, 0x02000000, + 0x05020011, 0x4803c856, 0x64134209, 0x592c0804, + 0x82040500, 0x0000ffff, 0x48034409, 0x80040920, + 0x4807420a, 0x592c0805, 0x82040500, 0x0000ffff, + 0x4803440a, 0x80040920, 0x4807420b, 0x5c025800, + 0x05fdf628, 0x4803c856, 0x64174209, 0x592c0801, + 0x82040500, 0x0000ffff, 0x48034409, 0x80040920, + 0x4807420a, 0x05fdf7f6, 0x4937c857, 0x4823c857, + 0x4827c857, 0x5934000f, 0x80001d40, 0x05000009, + 0x580c0009, 0x80200580, 0x05020007, 0x580c0003, + 0x58000211, 0x80240580, 0x05020003, 0x81780000, + 0x1c01f000, 0x580c0000, 0x05fdf7f4, 0x4823c857, + 0x4d2c0000, 0x40be6000, 0x59300407, 0x90000d83, 0x05000003, 0x90000d86, 0x0502000b, 0x59325809, 0x812e59c0, 0x05000008, 0x592c0003, 0x58000211, 0x80240580, 0x05020004, 0x592c0009, 0x80200580, 0x05000009, 0x91326430, 0x59a8000b, 0x81300480, 0x05fc17ee, 0x417a6000, 0x80000580, 0x5c025800, 0x1c01f000, 0x90000541, 0x5c025800, 0x1c01f000, - 0x83a00580, 0x0010dceb, 0x050e076a, 0x64030000, + 0x83a00580, 0x00111c71, 0x051200b6, 0x64030000, 0x4a034207, 0x00004000, 0x4a03c011, 0x40000010, 0x05fdfe51, 0x59e00017, 0x8c00050a, 0x60000800, - 0x00020892, 0x8d0c0530, 0x05f60aaf, 0x000209bc, + 0x0002089a, 0x8d0c0530, 0x05f60a78, 0x000209c4, 0x6403c017, 0x4203e000, 0x30000001, 0x4203e000, 0x40000000, 0x4203e000, 0xb0100000, 0x41fc0000, - 0x8c00050a, 0x05fc07fc, 0x0551fcdd, 0x05fc07ff, + 0x8c00050a, 0x05fc07fc, 0x0555fbb0, 0x05fc07ff, 0x59800802, 0x8c040520, 0x05020003, 0x64030000, 0x05fdf7f5, 0x60101020, 0x50080000, 0x8400054c, 0x44001000, 0x64030000, 0x0501f000, 0x59a00c07, 0x800409c0, 0x05000005, 0x916c0580, 0x05000003, - 0x646b4407, 0x05fdf606, 0x42007000, 0x0010e060, + 0x646b4407, 0x05fdf606, 0x42007000, 0x00111ffa, 0x58381c01, 0x58382201, 0x58383202, 0x8c040500, 0x0500000b, 0x59a01208, 0x82080500, 0x0000f003, 0x05fe0600, 0x82080480, 0x00000841, 0x05fe15fd, @@ -2878,15 +2920,15 @@ static const uint32_t isp_2500_risc_code[] = { 0xd0000000, 0x40040000, 0x800c0540, 0x48007401, 0x8c040500, 0x05000002, 0x48087201, 0x8c04050a, 0x0500001a, 0x481c7202, 0x4c0c0000, 0x4c100000, - 0x4c180000, 0x052df8a2, 0x4df00000, 0x58383a02, + 0x4c180000, 0x052dfcb8, 0x4df00000, 0x58383a02, 0x481fc857, 0x41780000, 0x801c3840, 0x800010c8, 0x82081400, 0x0000b037, 0x64001002, 0x801c1c80, 0x05021002, 0x64081002, 0x80000000, 0x90001c85, - 0x05fc17f7, 0x5c03e000, 0x052c0882, 0x5c003000, + 0x05fc17f7, 0x5c03e000, 0x052c0c98, 0x5c003000, 0x5c002000, 0x5c001800, 0x480f4407, 0x48134208, 0x481b4408, 0x05fdf56f, 0x4d440000, 0x4d340000, - 0x59a28c07, 0x050dfbf8, 0x05020009, 0x0515fdea, - 0x05020007, 0x0515fda0, 0x05000008, 0x64274407, + 0x59a28c07, 0x050dfced, 0x05020009, 0x0519f80b, + 0x05020007, 0x0515ffc1, 0x05000008, 0x64274407, 0x5c026800, 0x5c028800, 0x05fdf5a5, 0x5c026800, 0x5c028800, 0x05fdf5a7, 0x59a01208, 0x59a01c08, 0x5934400a, 0x82203d00, 0x0002e000, 0x801c391a, @@ -2896,7 +2938,7 @@ static const uint32_t isp_2500_risc_code[] = { 0x05000005, 0x90040585, 0x05000003, 0x4937c857, 0x60100800, 0x82204500, 0xfffd1fff, 0x800400da, 0x80200540, 0x4802680a, 0x4c080000, 0x4c1c0000, - 0x052df85b, 0x0519f815, 0x052df84a, 0x5c003800, + 0x052dfc71, 0x0519fa42, 0x052dfc60, 0x5c003800, 0x5c001000, 0x481f4408, 0x5934400a, 0x82203d00, 0x0f000000, 0x801c3930, 0x8c080504, 0x05020011, 0x8c080502, 0x0500000b, 0x4823c857, 0x82204500, @@ -2906,234 +2948,234 @@ static const uint32_t isp_2500_risc_code[] = { 0x82204500, 0xf07fffff, 0x4822680a, 0x05fdf7f9, 0x59a02c07, 0x8c140502, 0x05020005, 0x59a00a09, 0x82040480, 0x00000100, 0x05021019, 0x82041400, - 0x0010de60, 0x50080000, 0x80025d40, 0x05000014, + 0x00111dfa, 0x50080000, 0x80025d40, 0x05000014, 0x4178b000, 0x592c0005, 0x80000d40, 0x05000004, 0x8058b000, 0x58040000, 0x05fdf7fc, 0x485b4209, 0x592c1408, 0x592c0c09, 0x58080100, 0x80040c80, 0x05021003, 0x592c0208, 0x80040c00, 0x48074407, 0x497b4408, 0x497b4208, 0x05fdf502, 0x64774407, - 0x05fdf543, 0x916c2d80, 0x050c0678, 0x83a00580, - 0x0010dceb, 0x050e0677, 0x59a02c07, 0x4817c857, + 0x05fdf543, 0x916c2d80, 0x050c07c4, 0x83a00580, + 0x00111c71, 0x050e07c3, 0x59a02c07, 0x4817c857, 0x8c140516, 0x0502003a, 0x82140500, 0x00000408, 0x050200a3, 0x8c140500, 0x050200af, 0x8d0c0516, 0x05000003, 0x64874407, 0x05fdf531, 0x59a00a09, - 0x82040480, 0x00000100, 0x050211a2, 0x8c140502, - 0x05020004, 0x82041400, 0x0010dd60, 0x0501f007, + 0x82040480, 0x00000100, 0x050211a4, 0x8c140502, + 0x05020004, 0x82041400, 0x00111cfa, 0x0501f007, 0x59a0020e, 0x82000480, 0x00000100, 0x05fe1529, - 0x82041400, 0x0010de60, 0x50080000, 0x80000540, - 0x05020192, 0x4c040000, 0x4c080000, 0x05edfc52, - 0x5c001000, 0x5c000800, 0x0500018a, 0x05011000, + 0x82041400, 0x00111dfa, 0x50080000, 0x80000540, + 0x05020194, 0x4c040000, 0x4c080000, 0x05edfbe1, + 0x5c001000, 0x5c000800, 0x0500018c, 0x05011000, 0x492fc840, 0x6463c842, 0x05011000, 0x8c140502, - 0x05020007, 0x4c080000, 0x0501f9a4, 0x5c001000, + 0x05020007, 0x4c080000, 0x0501f9a7, 0x5c001000, 0x05fe050f, 0x452c1000, 0x05fdf4ca, 0x4c080000, - 0x0501f9d7, 0x5c001000, 0x05fe0509, 0x452c1000, + 0x0501f9da, 0x5c001000, 0x05fe0509, 0x452c1000, 0x05fdf4c4, 0x592c000e, 0x48034407, 0x80000120, 0x48034208, 0x497a580e, 0x05fdf4be, 0x59a00a09, - 0x82040480, 0x00000100, 0x05021172, 0x8d0c0516, + 0x82040480, 0x00000100, 0x05021174, 0x8d0c0516, 0x05000003, 0x64874407, 0x05fdf4f9, 0x8c140502, - 0x0502002e, 0x82041400, 0x0010dd60, 0x50080000, - 0x80025d40, 0x05000167, 0x592c1a00, 0x580c0000, - 0x592c1a0c, 0x800c0580, 0x05020160, 0x91701d82, - 0x0500015e, 0x412c1800, 0x59980002, 0x90000482, + 0x0502002e, 0x82041400, 0x00111cfa, 0x50080000, + 0x80025d40, 0x05000169, 0x592c1a00, 0x580c0000, + 0x592c1a0c, 0x800c0580, 0x05020162, 0x91701d82, + 0x05000160, 0x412c1800, 0x59980002, 0x90000482, 0x05021004, 0x4a03b004, 0x10000000, 0x0501f005, - 0x4c0c0000, 0x80f01d83, 0x05180f10, 0x5c001800, + 0x4c0c0000, 0x80f01d83, 0x051c0958, 0x5c001800, 0x59a01208, 0x800810e0, 0x59a00408, 0x80080540, 0x48001808, 0x59a0120a, 0x800810e0, 0x59a0040a, 0x80080540, 0x48001809, 0x59a00a09, 0x59a0140b, 0x82040400, 0x00005c00, 0x48080100, 0x480a5a0c, 0x59980002, 0x90000482, 0x05fe148a, 0x4a03b004, - 0x10000001, 0x05fdf487, 0x82041400, 0x0010de60, - 0x50080000, 0x80025d40, 0x0500013a, 0x592c0005, - 0x80000540, 0x05020135, 0x592c1c08, 0x592c0409, - 0x580c0900, 0x80040580, 0x05020130, 0x412c1800, + 0x10000001, 0x05fdf487, 0x82041400, 0x00111dfa, + 0x50080000, 0x80025d40, 0x0500013c, 0x592c0005, + 0x80000540, 0x05020137, 0x592c1c08, 0x592c0409, + 0x580c0900, 0x80040580, 0x05020132, 0x412c1800, 0x412c0000, 0x81740580, 0x0502000f, 0x59d80106, - 0x80000540, 0x05020129, 0x8d0c0524, 0x05020127, + 0x80000540, 0x0502012b, 0x8d0c0524, 0x05020129, 0x59980008, 0x90000482, 0x05021004, 0x4a03b104, - 0x10000000, 0x0501f004, 0x4c0c0000, 0x0519f8bb, + 0x10000000, 0x0501f004, 0x4c0c0000, 0x0519faf7, 0x5c001800, 0x59a01208, 0x800810e0, 0x59a00408, 0x80080540, 0x48001806, 0x59a0120a, 0x800810e0, 0x59a0040a, 0x80080540, 0x48001807, 0x59a00a09, 0x59a0120b, 0x82040400, 0x00005e00, 0x48080000, 0x48081c09, 0x59980008, 0x90000482, 0x05fe1455, 0x4a03b104, 0x10000001, 0x05fdf452, 0x59a00a09, - 0x82040480, 0x00000100, 0x05021106, 0x82041400, - 0x0010dd60, 0x50080000, 0x80025d40, 0x05000101, - 0x8c140514, 0x05fe0784, 0x41780000, 0x0501f8ff, + 0x82040480, 0x00000100, 0x05021108, 0x82041400, + 0x00111cfa, 0x50080000, 0x80025d40, 0x05000103, + 0x8c140514, 0x05fe0784, 0x41780000, 0x0501f901, 0x05fdf444, 0x8c140512, 0x05000003, 0x8d0c0520, - 0x050200f8, 0x59a00a09, 0x82040480, 0x00000100, - 0x050210f4, 0x800409c0, 0x050000f2, 0x8c140502, - 0x05020087, 0x82041400, 0x0010dd60, 0x50080000, - 0x80025d40, 0x050000eb, 0x592c1a00, 0x580c0000, - 0x592c1a0c, 0x800c0580, 0x05000003, 0x0501f96c, - 0x050200e2, 0x592c1a00, 0x580c0000, 0x48025a0c, - 0x4d340000, 0x4d440000, 0x4c080000, 0x61c2880f, - 0x59a04a09, 0x41440000, 0x81ac0400, 0x50026800, - 0x813669c0, 0x05000020, 0x5934000f, 0x40002000, - 0x80001d40, 0x0500001c, 0x580c0003, 0x58000211, - 0x80240580, 0x05000004, 0x580c0000, 0x400c2000, - 0x05fdf7f8, 0x4937c857, 0x4947c857, 0x480fc857, - 0x0501f94f, 0x0502001c, 0x4d2c0000, 0x400e5800, - 0x592c0800, 0x05edfbae, 0x5c025800, 0x40040000, - 0x5934100f, 0x800c1582, 0x0500000b, 0x4807c857, - 0x4813c857, 0x48042000, 0x800409c0, 0x05fe07e5, - 0x48126810, 0x814689c0, 0x0500000f, 0x81468840, - 0x05fdf7d9, 0x800409c0, 0x05020004, 0x497a680f, - 0x497a6810, 0x05fdf7f8, 0x4806680f, 0x40042000, - 0x05fdf7d8, 0x5c001000, 0x5c028800, 0x5c026800, - 0x0501f0a6, 0x5c001000, 0x5c028800, 0x5c026800, - 0x4d300000, 0x4d2c0000, 0x42026000, 0x00111b00, - 0x59325809, 0x812e59c0, 0x05000018, 0x592c0003, - 0x58000211, 0x80240580, 0x05020014, 0x0501f920, - 0x0502000f, 0x492fc857, 0x4d2c0000, 0x4c140000, - 0x4c080000, 0x053df9f8, 0x5c001000, 0x5c002800, - 0x5c025800, 0x05020009, 0x4c080000, 0x0005ffdc, - 0x05edfb77, 0x5c001000, 0x0501f004, 0x5c025800, - 0x5c026000, 0x0501f085, 0x91326430, 0x59a8000b, - 0x81300480, 0x05fc17e3, 0x5c025800, 0x5c026000, - 0x59980802, 0x80040840, 0x48073002, 0x45781000, - 0x59a00a09, 0x4807c857, 0x40f01000, 0x58080801, - 0x412c0000, 0x80040580, 0x05000004, 0x40041000, - 0x58040801, 0x05fdf7fb, 0x58040801, 0x48041001, - 0x4d2c0000, 0x412c0000, 0x80f00580, 0x05180e27, - 0x5c025800, 0x05edfb4d, 0x05fdf3b2, 0x82041400, - 0x0010de60, 0x50080000, 0x80025d40, 0x05000065, - 0x592c0005, 0x80000540, 0x05000012, 0x0501f8e8, - 0x0502005e, 0x592c0805, 0x4d2c0000, 0x40065800, - 0x58040000, 0x4c080000, 0x4c000000, 0x05edfb44, - 0x5c000000, 0x5c001000, 0x80000d40, 0x05fe07f8, - 0x5c025800, 0x48025804, 0x48025805, 0x850e1d26, - 0x592c1c08, 0x592c0409, 0x580c0900, 0x80040580, - 0x05000003, 0x0501f8d2, 0x05020048, 0x412c0000, - 0x81740580, 0x05020019, 0x59d80106, 0x80000540, - 0x05000011, 0x0501f8ca, 0x05020040, 0x42000800, - 0x000fffff, 0x59d80106, 0x80000540, 0x0500000a, - 0x0502e005, 0x59da5908, 0x4c080000, 0x05edfb1b, - 0x5c001000, 0x80040840, 0x05fe07f7, 0x4803c857, - 0x0501f032, 0x8d0c0524, 0x05000004, 0x0501f8b8, - 0x0502002e, 0x850e1d24, 0x60000802, 0x80040840, - 0x0500100a, 0x82040400, 0x0010dd60, 0x50000000, - 0x80000540, 0x05fc07fa, 0x58000012, 0x812c0580, - 0x05000010, 0x05fdf7f6, 0x59980808, 0x80040840, - 0x48073008, 0x45781000, 0x59a00a09, 0x4807c857, - 0x41741000, 0x58080800, 0x412c0000, 0x80040580, - 0x05000006, 0x40041000, 0x58040800, 0x05fdf7fb, - 0x492fc857, 0x0501f011, 0x58040800, 0x48041000, - 0x4d2c0000, 0x412c0000, 0x81740580, 0x05140fa7, - 0x5c025800, 0x592c0209, 0xb000053f, 0x82000400, - 0x0010df60, 0x45780000, 0x05edfae8, 0x05fdf34d, - 0x640b4407, 0x05fdf38e, 0x647b4407, 0x05fdf38c, - 0x64774407, 0x05fdf38a, 0x59a00c07, 0x8c040510, - 0x0500000a, 0x64065a0a, 0x59a0020d, 0x48025c11, - 0x0001ff16, 0x42000000, 0x00102ecb, 0x50000000, - 0x48025a10, 0x1c01f000, 0x59a00a0d, 0x90040486, - 0x05001002, 0x60040800, 0x82040c00, 0x00102ec8, - 0x50040000, 0x48025a10, 0x64025a0a, 0x1c01f000, - 0x00000002, 0x00000002, 0x00000005, 0x0000000a, - 0x00000014, 0x000000ff, 0x8c14050e, 0x05020008, - 0x59a0020c, 0x82000400, 0x0010de60, 0x50000000, - 0x80000540, 0x0500002d, 0x48025812, 0x48065a11, - 0x59a01208, 0x800810e0, 0x59a00408, 0x80080540, - 0x48025808, 0x59a0120a, 0x800810e0, 0x59a0040a, - 0x80080540, 0x48025809, 0x59a00409, 0x48025c0a, - 0x64065c10, 0x59980002, 0x80000000, 0x48033002, - 0x58f01001, 0x492de001, 0x480a5801, 0x82040400, - 0x00005c00, 0x59a0140b, 0x48080100, 0x480a5a0c, - 0x48025a00, 0x05fdffc1, 0x59a0140d, 0x8c140508, - 0x05000002, 0x8408157e, 0x8c14050a, 0x05000002, - 0x8408157c, 0x8c140504, 0x05000003, 0x82081540, - 0x20000000, 0x480a580b, 0x59a0040c, 0x48025c0c, - 0x80000580, 0x1c01f000, 0x45781000, 0x05edfa8f, - 0x647f4407, 0x90000541, 0x1c01f000, 0x4a025803, - 0xffff0000, 0x48065a02, 0x59a0020e, 0x48025a09, - 0x59a01208, 0x800810e0, 0x59a00408, 0x80080540, - 0x48025806, 0x59a0120a, 0x800810e0, 0x59a0040a, - 0x80080540, 0x48025807, 0x59a00409, 0x48025a08, - 0x59980008, 0x80000000, 0x48033008, 0x59741000, - 0x492ee800, 0x480a5800, 0x82040400, 0x00005e00, - 0x59a0120b, 0x48080000, 0x480a5c09, 0x48025c08, - 0x59a00c07, 0x59a0140d, 0x8c040508, 0x05000002, - 0x8408157e, 0x8c04050a, 0x05000002, 0x8408157c, - 0x8c040504, 0x05000003, 0x82081540, 0x20000000, - 0x480a5801, 0x59a0020e, 0x82000400, 0x0010df60, - 0x44080000, 0x80000580, 0x1c01f000, 0x8c140512, - 0x05000005, 0x8d0c0520, 0x05020003, 0x80000580, - 0x0501f002, 0x90000541, 0x4803c857, 0x1c01f000, - 0x8d0c050e, 0x05000003, 0x64074407, 0x05fdf2f8, - 0x916c0583, 0x05020014, 0x050df93f, 0x05fe02f9, - 0x59240200, 0x8c000502, 0x05000041, 0x59240005, - 0x497b4407, 0x0519f961, 0x0500000e, 0x82000d00, - 0x00ffff00, 0x0502000b, 0x82000c00, 0x00102853, - 0x50040800, 0x80040910, 0x82041580, 0x00000080, - 0x05020003, 0x641f4407, 0x05fdf2e1, 0x48074407, - 0x82000d00, 0x0000ffff, 0x48074208, 0x80000120, - 0x48034408, 0x59a80249, 0x82001500, 0x00003500, - 0x480b440a, 0x5924100b, 0x82081500, 0x00001fff, - 0x480b420b, 0x480b420b, 0x8c000502, 0x05000016, - 0x8c000506, 0x05000006, 0x90000d0a, 0x90040d8a, - 0x05020003, 0x6407420a, 0x0501f018, 0x8c00050a, - 0x05000006, 0x90000d22, 0x90040da2, 0x05020003, - 0x640f420a, 0x0501f011, 0x8c000508, 0x05000006, - 0x90000d12, 0x90040d92, 0x05020003, 0x640b420a, - 0x0501f00a, 0x0519f92d, 0x05020003, 0x6413420a, - 0x05fdf274, 0x8c000506, 0x05000003, 0x64174407, - 0x05fdf2b3, 0x6403420a, 0x05fdf26e, 0x646f4407, - 0x05fdf2af, 0x59a8005c, 0x48034408, 0x59a8005d, - 0x4803420a, 0x05fdf267, 0x42007800, 0x0010e4e5, - 0x59a00407, 0x4803c857, 0x90000c8c, 0x05fe12a9, - 0x0c01f001, 0x0010300c, 0x00102fac, 0x00102fb9, - 0x00102fc9, 0x00102fe8, 0x0010300d, 0x00102fa5, - 0x00102fa5, 0x00103019, 0x00103054, 0x00102fa6, - 0x00103067, 0x05fdf29b, 0x59a00208, 0x48007c01, - 0x59a00408, 0x48007a01, 0x05e9feec, 0x0501f061, - 0x916c0580, 0x05fc028e, 0x59a00a08, 0x59a00408, - 0x900001c0, 0x80040d40, 0x4807c857, 0x59a00a09, - 0x59a00409, 0x900001c0, 0x80040d40, 0x4807c857, - 0x0501f054, 0x916c0580, 0x05fc0281, 0x59a00408, - 0x59a01208, 0x900001c0, 0x80081540, 0x59a00409, - 0x59a01a09, 0x900001c0, 0x800c1d40, 0x42000000, - 0x00110772, 0x480fc857, 0x480bc857, 0x60000820, - 0x050df000, 0x59a00a08, 0x59a00408, 0x900001c0, - 0x80041d40, 0x820c0c80, 0x0010d32a, 0x05fe1271, - 0x820c0c80, 0x00100000, 0x05fc126e, 0x480fc857, - 0x903c7c22, 0x503c0800, 0x800409c0, 0x05000005, - 0x903c05a6, 0x05fc0267, 0x803c7800, 0x05fdf7fa, - 0x59e41001, 0x82080d00, 0xfffeffcf, 0x4807c801, - 0x440c7800, 0x46001800, 0x0201f800, 0x800c1800, - 0x46001800, 0x001005ce, 0x480bc801, 0x0501f025, - 0x59a01a08, 0x59a00408, 0x900001c0, 0x800c1d40, - 0x480c7803, 0x59a02209, 0x59a00409, 0x900001c0, - 0x80102540, 0x48107804, 0x59a0020a, 0x40001000, - 0x48007807, 0x80000040, 0x05fc124a, 0x48007808, - 0x60000880, 0x0525ff79, 0x80000540, 0x05000002, - 0x05fdf244, 0x40040000, 0x800c1c00, 0x05fc1241, - 0x4800780a, 0x480c7805, 0x48107806, 0x4978780c, - 0x59a0040a, 0x800000c4, 0x4800780b, 0x59e40001, - 0x4803c857, 0x82000540, 0x00040000, 0x4803c801, - 0x05fdf1ec, 0x49787803, 0x49787804, 0x49787808, - 0x49787807, 0x49787803, 0x49787805, 0x49787806, - 0x4978780c, 0x4978780b, 0x59e40001, 0x84000524, - 0x05fdf7f3, 0x4978781f, 0x49787814, 0x49787815, - 0x4978781d, 0x49787817, 0x49787818, 0x59a01a08, - 0x59a00408, 0x900001c0, 0x800c1d40, 0x480c780e, - 0x480c7819, 0x480c781b, 0x59a02209, 0x59a00409, - 0x900001c0, 0x80102540, 0x4810780f, 0x4810781a, - 0x4810781c, 0x59a0020a, 0x80000540, 0x05fc0211, - 0x48007813, 0x60000808, 0x40001000, 0x0525ff3f, - 0x80000540, 0x05fe020b, 0x40040000, 0x800c1c00, - 0x05fc1208, 0x480c7810, 0x48107811, 0x4a03420a, - 0x00000400, 0x59a0040a, 0x4800781e, 0x850e1d6a, - 0x59a0040b, 0x48007a12, 0x59a0020c, 0x48007c12, - 0x600c0000, 0x05e9fe2c, 0x80102000, 0x4810780d, - 0x48134209, 0x901021c0, 0x48134409, 0x59e40052, - 0x4803c857, 0x4a007816, 0x00000400, 0x903c0416, + 0x050200fa, 0x59a00a09, 0x82040480, 0x00000100, + 0x050210f6, 0x800409c0, 0x050000f4, 0x8c140502, + 0x05020089, 0x82041400, 0x00111cfa, 0x50080000, + 0x80025d40, 0x050000ed, 0x592c1a00, 0x580c0000, + 0x592c1a0c, 0x800c0580, 0x05000003, 0x0501f96f, + 0x050200e4, 0x592c1a00, 0x580c0000, 0x48025a0c, + 0x4d340000, 0x4d440000, 0x4c080000, 0x59aa88ac, + 0x81468840, 0x59a04a09, 0x0001fb08, 0x05020020, + 0x5934000f, 0x40002000, 0x80001d40, 0x0500001c, + 0x580c0003, 0x58000211, 0x80240580, 0x05000004, + 0x580c0000, 0x400c2000, 0x05fdf7f8, 0x4937c857, + 0x4947c857, 0x480fc857, 0x0501f954, 0x05020020, + 0x4d2c0000, 0x400e5800, 0x592c0800, 0x05edfb3f, + 0x5c025800, 0x40040000, 0x5934100f, 0x800c1582, + 0x0500000f, 0x4807c857, 0x4813c857, 0x48042000, + 0x800409c0, 0x05fe07e5, 0x48126810, 0x814689c0, + 0x05000013, 0x81468840, 0x83440580, 0x000007ff, + 0x05fe07da, 0x61be887f, 0x05fdf7d8, 0x800409c0, + 0x05020004, 0x497a680f, 0x497a6810, 0x05fdf7f4, + 0x4806680f, 0x40042000, 0x05fdf7d4, 0x5c001000, + 0x5c028800, 0x5c026800, 0x0501f0a6, 0x5c001000, + 0x5c028800, 0x5c026800, 0x4d300000, 0x4d2c0000, + 0x42026000, 0x00115aa4, 0x59325809, 0x812e59c0, + 0x05000018, 0x592c0003, 0x58000211, 0x80240580, + 0x05020014, 0x0501f921, 0x0502000f, 0x492fc857, + 0x4d2c0000, 0x4c140000, 0x4c080000, 0x053dfec0, + 0x5c001000, 0x5c002800, 0x5c025800, 0x05020009, + 0x4c080000, 0x0009f810, 0x05edfb04, 0x5c001000, + 0x0501f004, 0x5c025800, 0x5c026000, 0x0501f085, + 0x91326430, 0x59a8000b, 0x81300480, 0x05fc17e3, + 0x5c025800, 0x5c026000, 0x59980802, 0x80040840, + 0x48073002, 0x45781000, 0x59a00a09, 0x4807c857, + 0x40f01000, 0x58080801, 0x412c0000, 0x80040580, + 0x05000004, 0x40041000, 0x58040801, 0x05fdf7fb, + 0x58040801, 0x48041001, 0x4d2c0000, 0x412c0000, + 0x80f00580, 0x051c086d, 0x5c025800, 0x05edfada, + 0x05fdf3b0, 0x82041400, 0x00111dfa, 0x50080000, + 0x80025d40, 0x05000065, 0x592c0005, 0x80000540, + 0x05000012, 0x0501f8e9, 0x0502005e, 0x592c0805, + 0x4d2c0000, 0x40065800, 0x58040000, 0x4c080000, + 0x4c000000, 0x05edfad1, 0x5c000000, 0x5c001000, + 0x80000d40, 0x05fe07f8, 0x5c025800, 0x48025804, + 0x48025805, 0x850e1d26, 0x592c1c08, 0x592c0409, + 0x580c0900, 0x80040580, 0x05000003, 0x0501f8d3, + 0x05020048, 0x412c0000, 0x81740580, 0x05020019, + 0x59d80106, 0x80000540, 0x05000011, 0x0501f8cb, + 0x05020040, 0x42000800, 0x000fffff, 0x59d80106, + 0x80000540, 0x0500000a, 0x0502e005, 0x59da5908, + 0x4c080000, 0x05edfaa8, 0x5c001000, 0x80040840, + 0x05fe07f7, 0x4803c857, 0x0501f032, 0x8d0c0524, + 0x05000004, 0x0501f8b9, 0x0502002e, 0x850e1d24, + 0x60000802, 0x80040840, 0x0500100a, 0x82040400, + 0x00111cfa, 0x50000000, 0x80000540, 0x05fc07fa, + 0x58000012, 0x812c0580, 0x05000010, 0x05fdf7f6, + 0x59980808, 0x80040840, 0x48073008, 0x45781000, + 0x59a00a09, 0x4807c857, 0x41741000, 0x58080800, + 0x412c0000, 0x80040580, 0x05000006, 0x40041000, + 0x58040800, 0x05fdf7fb, 0x492fc857, 0x0501f011, + 0x58040800, 0x48041000, 0x4d2c0000, 0x412c0000, + 0x81740580, 0x051809e1, 0x5c025800, 0x592c0209, + 0xb000053f, 0x82000400, 0x00111efa, 0x45780000, + 0x05edfa75, 0x05fdf34b, 0x640b4407, 0x05fdf38c, + 0x647b4407, 0x05fdf38a, 0x64774407, 0x05fdf388, + 0x59a00c07, 0x8c040510, 0x0500000b, 0x64065a0a, + 0x497a580d, 0x59a0020d, 0x48025c11, 0x0001ff3c, + 0x42000000, 0x00102f76, 0x50000000, 0x48025a10, + 0x1c01f000, 0x59a00a0d, 0x90040486, 0x05001002, + 0x60040800, 0x82040c00, 0x00102f73, 0x50040000, + 0x48025a10, 0x64025a0a, 0x1c01f000, 0x00000002, + 0x00000002, 0x00000005, 0x0000000a, 0x00000014, + 0x000000ff, 0x8c14050e, 0x05020008, 0x59a0020c, + 0x82000400, 0x00111dfa, 0x50000000, 0x80000540, + 0x0500002d, 0x48025812, 0x48065a11, 0x59a01208, + 0x800810e0, 0x59a00408, 0x80080540, 0x48025808, + 0x59a0120a, 0x800810e0, 0x59a0040a, 0x80080540, + 0x48025809, 0x59a00409, 0x48025c0a, 0x64065c10, + 0x59980002, 0x80000000, 0x48033002, 0x58f01001, + 0x492de001, 0x480a5801, 0x82040400, 0x00005c00, + 0x59a0140b, 0x48080100, 0x480a5a0c, 0x48025a00, + 0x05fdffc0, 0x59a0140d, 0x8c140508, 0x05000002, + 0x8408157e, 0x8c14050a, 0x05000002, 0x8408157c, + 0x8c140504, 0x05000003, 0x82081540, 0x20000000, + 0x480a580b, 0x59a0040c, 0x48025c0c, 0x80000580, + 0x1c01f000, 0x45781000, 0x05edfa1b, 0x647f4407, + 0x90000541, 0x1c01f000, 0x4a025803, 0xffff0000, + 0x48065a02, 0x59a0020e, 0x48025a09, 0x59a01208, + 0x800810e0, 0x59a00408, 0x80080540, 0x48025806, + 0x59a0120a, 0x800810e0, 0x59a0040a, 0x80080540, + 0x48025807, 0x59a00409, 0x48025a08, 0x59980008, + 0x80000000, 0x48033008, 0x59741000, 0x492ee800, + 0x480a5800, 0x82040400, 0x00005e00, 0x59a0120b, + 0x48080000, 0x480a5c09, 0x48025c08, 0x59a00c07, + 0x59a0140d, 0x8c040508, 0x05000002, 0x8408157e, + 0x8c04050a, 0x05000002, 0x8408157c, 0x8c040504, + 0x05000003, 0x82081540, 0x20000000, 0x480a5801, + 0x59a0020e, 0x82000400, 0x00111efa, 0x44080000, + 0x80000580, 0x1c01f000, 0x8c140512, 0x05000005, + 0x8d0c0520, 0x05020003, 0x80000580, 0x0501f002, + 0x90000541, 0x4803c857, 0x1c01f000, 0x8d0c050e, + 0x05000003, 0x64074407, 0x05fdf2f5, 0x916c0583, + 0x05020014, 0x050dfa31, 0x05fe02f6, 0x59240200, + 0x8c000502, 0x05000041, 0x59240005, 0x497b4407, + 0x0519fba0, 0x0500000e, 0x82000d00, 0x00ffff00, + 0x0502000b, 0x82000c00, 0x001028fb, 0x50040800, + 0x80040910, 0x82041580, 0x00000080, 0x05020003, + 0x641f4407, 0x05fdf2de, 0x48074407, 0x82000d00, + 0x0000ffff, 0x48074208, 0x80000120, 0x48034408, + 0x59a8024c, 0x82001500, 0x00003500, 0x480b440a, + 0x5924100b, 0x82081500, 0x00001fff, 0x480b420b, + 0x480b420b, 0x8c000502, 0x05000016, 0x8c000506, + 0x05000006, 0x90000d0a, 0x90040d8a, 0x05020003, + 0x6407420a, 0x0501f018, 0x8c00050a, 0x05000006, + 0x90000d22, 0x90040da2, 0x05020003, 0x640f420a, + 0x0501f011, 0x8c000508, 0x05000006, 0x90000d12, + 0x90040d92, 0x05020003, 0x640b420a, 0x0501f00a, + 0x0519fb6c, 0x05020003, 0x6413420a, 0x05fdf271, + 0x8c000506, 0x05000003, 0x64174407, 0x05fdf2b0, + 0x6403420a, 0x05fdf26b, 0x646f4407, 0x05fdf2ac, + 0x59a8005f, 0x48034408, 0x59a80060, 0x4803420a, + 0x05fdf264, 0x42007800, 0x00112489, 0x59a00407, + 0x4803c857, 0x90000c8c, 0x05fe12a6, 0x0c01f001, + 0x001030b7, 0x00103057, 0x00103064, 0x00103074, + 0x00103093, 0x001030b8, 0x00103050, 0x00103050, + 0x001030c4, 0x001030fc, 0x00103051, 0x0010310f, + 0x05fdf298, 0x59a00208, 0x48007c01, 0x59a00408, + 0x48007a01, 0x05e9fe70, 0x0501f061, 0x916c0580, + 0x05fc028b, 0x59a00a08, 0x59a00408, 0x900001c0, + 0x80040d40, 0x4807c857, 0x59a00a09, 0x59a00409, + 0x900001c0, 0x80040d40, 0x4807c857, 0x0501f054, + 0x916c0580, 0x05fc027e, 0x59a00408, 0x59a01208, + 0x900001c0, 0x80081540, 0x59a00409, 0x59a01a09, + 0x900001c0, 0x800c1d40, 0x42000000, 0x00114716, + 0x480fc857, 0x480bc857, 0x60000820, 0x050df0f7, + 0x59a00a08, 0x59a00408, 0x900001c0, 0x80041d40, + 0x820c0c80, 0x0010daa9, 0x05fe126e, 0x820c0c80, + 0x00100000, 0x05fc126b, 0x480fc857, 0x903c7c22, + 0x503c0800, 0x800409c0, 0x05000005, 0x903c05a6, + 0x05fc0264, 0x803c7800, 0x05fdf7fa, 0x59e41001, + 0x82080d00, 0xfffeffcf, 0x4807c801, 0x440c7800, + 0x46001800, 0x0201f800, 0x800c1800, 0x46001800, + 0x00100609, 0x480bc801, 0x0501f025, 0x59a01a08, + 0x59a00408, 0x900001c0, 0x800c1d40, 0x480c7803, + 0x59a02209, 0x59a00409, 0x900001c0, 0x80102540, + 0x48107804, 0x59a0020a, 0x40001000, 0x48007807, + 0x80000040, 0x05fc1247, 0x48007808, 0x60000880, + 0x0529fb87, 0x80000540, 0x05000002, 0x05fdf241, + 0x40040000, 0x800c1c00, 0x05fc123e, 0x4800780a, + 0x480c7805, 0x48107806, 0x4978780c, 0x59a0040a, + 0x800000c4, 0x4800780b, 0x59e40001, 0x4803c857, + 0x82000540, 0x00040000, 0x4803c801, 0x05fdf1e9, + 0x49787803, 0x49787804, 0x49787808, 0x49787807, + 0x49787803, 0x49787805, 0x49787806, 0x4978780c, + 0x4978780b, 0x59e40001, 0x84000524, 0x05fdf7f3, + 0x4978781f, 0x49787814, 0x49787815, 0x4978781d, + 0x49787817, 0x49787818, 0x59a01a08, 0x59a00408, + 0x900001c0, 0x800c1d40, 0x480c780e, 0x480c7819, + 0x480c781b, 0x59a02209, 0x59a00409, 0x900001c0, + 0x80102540, 0x4810780f, 0x4810781a, 0x4810781c, + 0x59a0020a, 0x80000540, 0x05fc020e, 0x48007813, + 0x60000808, 0x40001000, 0x0529fb4d, 0x80000540, + 0x05fe0208, 0x40040000, 0x800c1c00, 0x05fc1205, + 0x480c7810, 0x48107811, 0x4a03420a, 0x00000400, + 0x59a0040a, 0x4800781e, 0x850e1d6a, 0x59a0040b, + 0x48007a12, 0x59a0020c, 0x48007c12, 0x59e42051, + 0x80102000, 0x4810780d, 0x48134209, 0x901021c0, + 0x48134409, 0x4a007816, 0x00000400, 0x903c0416, 0x48034208, 0x900001c0, 0x48034408, 0x05fdf1a5, 0x583c0800, 0x830e1d00, 0xffcfffff, 0x48ec7820, 0x4a01d802, 0x00000100, 0x583c0017, 0x82000500, 0x000000ff, 0x05020008, 0x4807c857, 0x8c040502, 0x05000004, 0x84040d48, 0x48047800, 0x1c01f000, - 0x0501f00a, 0x05f1fba5, 0x1c01f000, 0x916c0580, - 0x05fc01d3, 0x05e9fee6, 0x900801c0, 0x480b4407, - 0x48034208, 0x05fdf18b, 0x42007800, 0x0010e4e5, + 0x0501f00a, 0x05f1fb6c, 0x1c01f000, 0x916c0580, + 0x05fc01d3, 0x05e9fe6d, 0x900801c0, 0x480b4407, + 0x48034208, 0x05fdf18b, 0x42007800, 0x00112489, 0x583dd820, 0x58ef400b, 0x40ec6000, 0x583c0000, 0x48efc857, 0x49a3c857, 0x4803c857, 0x82000500, 0x0000ffc0, 0x48007800, 0x583c001d, 0x4803c857, @@ -3144,2901 +3186,3044 @@ static const uint32_t isp_2500_risc_code[] = { 0x4807440b, 0x49787818, 0x583c0017, 0x49787817, 0x82000500, 0x000000ff, 0x05fe0163, 0x05fdf165, 0x59a80005, 0x48034407, 0x59a80006, 0x48034208, - 0x59a80007, 0x48034408, 0x05fdf15e, 0x05e9fd3f, + 0x59a80007, 0x48034408, 0x05fdf15e, 0x05e9fcd2, 0x4803c856, 0x59a0020c, 0x4803c857, 0x8c00051e, - 0x050e00de, 0x8c00051a, 0x05000005, 0x050df87c, - 0x05000018, 0x65034407, 0x05fdf195, 0x05f5fed9, - 0x05000003, 0x05f5febe, 0x05000003, 0x648b4407, + 0x050e01dc, 0x8c00051a, 0x05000005, 0x050df97a, + 0x05000018, 0x65034407, 0x05fdf195, 0x05f5feb1, + 0x05000003, 0x05f5fe96, 0x05000003, 0x648b4407, 0x05fdf18f, 0x4a03c013, 0x03800300, 0x4a03c014, 0x03800380, 0x59a00c07, 0x82040580, 0x000000a0, 0x05000004, 0x82040580, 0x000000a2, 0x0502001e, 0x59a0140b, 0x82080480, 0x00000100, 0x0502101a, - 0x050df869, 0x05fe0183, 0x59a0020c, 0x8c000500, + 0x050df967, 0x05fe0183, 0x59a0020c, 0x8c000500, 0x0502001b, 0x59a00a0b, 0x800409c0, 0x05000012, - 0xb0040481, 0x05021010, 0x0509fed9, 0x0500000a, + 0xb0040481, 0x05021010, 0x0509ffd3, 0x0500000a, 0x59a01008, 0x900811c0, 0x59a0180a, 0x900c19c0, - 0x59a00a0b, 0x0509fef4, 0x4a01d809, 0x001030d8, + 0x59a00a0b, 0x0509ffee, 0x4a01d809, 0x00103180, 0x1c01f000, 0x640b4407, 0x4a03c014, 0x03800000, 0x05fdf167, 0x4a03c014, 0x03800000, 0x05fdf169, - 0x0505fd83, 0x05fc0159, 0x58ee580d, 0x59a00c07, + 0x0505fe51, 0x05fc0159, 0x58ee580d, 0x59a00c07, 0x59a0140b, 0x59a0020c, 0x8c000500, 0x0502004e, - 0x912e5c08, 0x4178c000, 0x59a0ba0b, 0x050df853, - 0x05000009, 0x05f9f889, 0x05f9f904, 0x05000003, - 0x65074407, 0x05fdf151, 0x05f9f919, 0x59a00c07, + 0x912e5c08, 0x4178c000, 0x59a0ba0b, 0x050df951, + 0x05000009, 0x05f9f861, 0x05f9f8dc, 0x05000003, + 0x65074407, 0x05fdf151, 0x05f9f8f1, 0x59a00c07, 0x59a0140b, 0x40600000, 0x812c0400, 0x5000c800, 0x82641d00, 0x000000ff, 0x4c040000, 0x4c080000, - 0x050df842, 0x05000002, 0x8408157e, 0x0501f93f, + 0x050df940, 0x05000002, 0x8408157e, 0x0501f947, 0x5c001000, 0x5c000800, 0x0500005f, 0x805cb840, 0x05000058, 0x80081000, 0x82641d00, 0x0000ff00, - 0x800c1910, 0x4c040000, 0x4c080000, 0x050df833, - 0x05000002, 0x8408157e, 0x0501f930, 0x5c001000, + 0x800c1910, 0x4c040000, 0x4c080000, 0x050df931, + 0x05000002, 0x8408157e, 0x0501f938, 0x5c001000, 0x5c000800, 0x05000050, 0x805cb840, 0x05000049, 0x80081000, 0x82641d00, 0x00ff0000, 0x800c1920, - 0x4c040000, 0x4c080000, 0x050df824, 0x05000002, - 0x8408157e, 0x0501f921, 0x5c001000, 0x5c000800, + 0x4c040000, 0x4c080000, 0x050df922, 0x05000002, + 0x8408157e, 0x0501f929, 0x5c001000, 0x5c000800, 0x05000041, 0x805cb840, 0x0500003a, 0x80081000, 0x82641d00, 0xff000000, 0x800c1930, 0x4c040000, - 0x4c080000, 0x050df815, 0x05000002, 0x8408157e, - 0x0501f912, 0x5c001000, 0x5c000800, 0x05000032, + 0x4c080000, 0x050df913, 0x05000002, 0x8408157e, + 0x0501f91a, 0x5c001000, 0x5c000800, 0x05000032, 0x805cb840, 0x0500002b, 0x80081000, 0x8060c000, 0x05fdf7c1, 0x59a0020b, 0x82000500, 0x000000ff, - 0x40001800, 0x050df805, 0x05000020, 0x4c0c0000, - 0x05f9f83a, 0x5c001800, 0x05f9f8c5, 0x59a00c07, + 0x40001800, 0x050df903, 0x05000020, 0x4c0c0000, + 0x05f9f812, 0x5c001800, 0x05f9f89d, 0x59a00c07, 0x59a0140b, 0x82040580, 0x000000e0, 0x05000013, - 0x05f9f8c7, 0x82040580, 0x000000a0, 0x05000007, + 0x05f9f89f, 0x82040580, 0x000000a0, 0x05000007, 0x82040580, 0x000000d0, 0x05fe00fd, 0x4807c857, - 0x8408157c, 0x0501f009, 0x05f9f8a4, 0x05000003, - 0x65074407, 0x05fdf0f1, 0x05f9f8b9, 0x59a00c07, - 0x59a0140b, 0x8408157e, 0x0501f8e8, 0x0500000a, - 0x4817c857, 0x0501f003, 0x0501f8e4, 0x05000006, - 0x0509ffe2, 0x05fa083a, 0x4a03c014, 0x03800000, - 0x05fdf0a0, 0x0509ffdd, 0x05fa0835, 0x4a03c014, + 0x8408157c, 0x0501f009, 0x05f9f87c, 0x05000003, + 0x65074407, 0x05fdf0f1, 0x05f9f891, 0x59a00c07, + 0x59a0140b, 0x8408157e, 0x0501f8f0, 0x0500000a, + 0x4817c857, 0x0501f003, 0x0501f8ec, 0x05000006, + 0x050df8e0, 0x05fa0812, 0x4a03c014, 0x03800000, + 0x05fdf0a0, 0x050df8db, 0x05fa080d, 0x4a03c014, 0x03800000, 0x64134407, 0x05fdf0dd, 0x4803c856, - 0x59a0020c, 0x4803c857, 0x8c00051e, 0x050a07d6, - 0x8c00051a, 0x05000005, 0x0509ffb9, 0x05000018, - 0x65034407, 0x05fdf0d2, 0x05f5fe16, 0x05000003, - 0x05f5fdfb, 0x05000003, 0x648b4407, 0x05fdf0cc, + 0x59a0020c, 0x4803c857, 0x8c00051e, 0x050e00d4, + 0x8c00051a, 0x05000005, 0x050df8b7, 0x05000018, + 0x65034407, 0x05fdf0d2, 0x05f5fdee, 0x05000003, + 0x05f5fdd3, 0x05000003, 0x648b4407, 0x05fdf0cc, 0x4a03c013, 0x03800300, 0x4a03c014, 0x03800380, 0x59a00c07, 0x82040580, 0x000000a0, 0x05000004, - 0x82040580, 0x000000a2, 0x050200b9, 0x59a0140b, - 0x82080480, 0x00000100, 0x050210b5, 0x0509ffa6, + 0x82040580, 0x000000a2, 0x050200c1, 0x59a0140b, + 0x82080480, 0x00000100, 0x050210bd, 0x050df8a4, 0x05fe00c0, 0x59a00c07, 0x59a0140b, 0x4807c857, - 0x480bc857, 0x59a0020c, 0x8c000500, 0x05020068, - 0x59a01a0b, 0x800c19c0, 0x050000a9, 0xb00c0481, - 0x050210a7, 0x0509fe12, 0x05020006, 0x640b4407, + 0x480bc857, 0x59a0020c, 0x8c000500, 0x05020070, + 0x59a01a0b, 0x800c19c0, 0x050000b1, 0xb00c0481, + 0x050210af, 0x0509ff0c, 0x05020006, 0x640b4407, 0x4a03c014, 0x03800000, 0x4803c857, 0x05fdf0a8, - 0x912e5c08, 0x4178c000, 0x59a0ba0b, 0x0509ff9f, - 0x05000007, 0x05f5ffd5, 0x05f9f850, 0x05000003, - 0x65074407, 0x05fdf09d, 0x05f9f865, 0x59a00c07, + 0x912e5c08, 0x4178c000, 0x59a0ba0b, 0x59a0020c, + 0x8c00051a, 0x05020006, 0x8c000502, 0x0500000e, + 0x0501f8ff, 0x0502004f, 0x0501f097, 0x050df895, + 0x05000007, 0x05f5ffa5, 0x05f9f820, 0x05000003, + 0x65074407, 0x05fdf095, 0x05f9f835, 0x59a00c07, 0x59a0140b, 0x4803c857, 0x40600000, 0x812c0400, - 0x4000c800, 0x4c040000, 0x4c080000, 0x0509ff8f, - 0x05000002, 0x8408157e, 0x0501f8c2, 0x5c001000, + 0x4000c800, 0x4c040000, 0x4c080000, 0x050df885, + 0x05000002, 0x8408157e, 0x0501f8c4, 0x5c001000, 0x5c000800, 0x05000080, 0x4414c800, 0x805cb840, 0x05000034, 0x80081000, 0x4c040000, 0x4c080000, - 0x0509ff82, 0x05000002, 0x8408157e, 0x0501f8b5, + 0x050df878, 0x05000002, 0x8408157e, 0x0501f8b7, 0x5c001000, 0x5c000800, 0x05000073, 0x50640000, 0x801428d0, 0x80140540, 0x4400c800, 0x805cb840, 0x05000024, 0x80081000, 0x4c040000, 0x4c080000, - 0x0509ff72, 0x05000002, 0x8408157e, 0x0501f8a5, + 0x050df868, 0x05000002, 0x8408157e, 0x0501f8a7, 0x5c001000, 0x5c000800, 0x05000063, 0x50640000, 0x801428e0, 0x80140540, 0x4400c800, 0x805cb840, 0x05000014, 0x80081000, 0x4c040000, 0x4c080000, - 0x0509ff62, 0x05000002, 0x8408157e, 0x0501f895, + 0x050df858, 0x05000002, 0x8408157e, 0x0501f897, 0x5c001000, 0x5c000800, 0x05000053, 0x50640000, 0x801428f0, 0x80140540, 0x4400c800, 0x805cb840, 0x05000004, 0x80081000, 0x8060c000, 0x05fdf7be, - 0x0509ff52, 0x05f60faa, 0x59a00a0b, 0x59a01008, + 0x050df848, 0x05f60f7a, 0x59a00a0b, 0x59a01008, 0x900811c0, 0x59a0180a, 0x900c19c0, 0x4a03c014, - 0x03800000, 0x412c0000, 0x0509f5d5, 0x4803c857, - 0x0509ff46, 0x05000036, 0x05f5ff7c, 0x05f9f808, + 0x03800000, 0x412c0000, 0x0509f6c7, 0x4803c857, + 0x050df83c, 0x05000036, 0x05f5ff4c, 0x05f5ffd8, 0x59a00c07, 0x59a0140b, 0x82040580, 0x00000098, - 0x0502000d, 0x59a80084, 0x8c000520, 0x05000006, - 0x59a8287d, 0x9014050f, 0x05020003, 0x8c140508, + 0x0502000d, 0x59a80087, 0x8c000520, 0x05000006, + 0x59a82880, 0x9014050f, 0x05020003, 0x8c140508, 0x0500001c, 0x90080581, 0x0502001a, 0x60001000, 0x0501f018, 0x82040580, 0x000000e0, 0x05000015, - 0x05f5fffb, 0x82040580, 0x000000a0, 0x05000009, - 0x82040580, 0x000000d0, 0x05fe0031, 0x4807c857, - 0x6140b801, 0x0501f84c, 0x40642800, 0x0501f011, - 0x05f5ffd6, 0x05000003, 0x65074407, 0x05fdf023, - 0x05f5ffeb, 0x59a00c07, 0x59a0140b, 0x8408157e, - 0x0501f850, 0x05020003, 0x65074407, 0x05fdf01b, - 0x59a00c07, 0x82040580, 0x00000098, 0x05f40ff6, - 0x4817c857, 0x05f5ff6a, 0x0501f003, 0x0501f845, + 0x05f5ffcb, 0x82040580, 0x000000a0, 0x05000009, + 0x82040580, 0x000000d0, 0x05fe0029, 0x4807c857, + 0x6140b801, 0x0501f84d, 0x40642800, 0x0501f011, + 0x05f5ffa6, 0x05000003, 0x65074407, 0x05fdf01b, + 0x05f5ffbb, 0x59a00c07, 0x59a0140b, 0x8408157e, + 0x0501f852, 0x05020003, 0x65074407, 0x05fdf013, + 0x59a00c07, 0x82040580, 0x00000098, 0x05f40fc6, + 0x4817c857, 0x05f5ff3a, 0x0501f003, 0x0501f847, 0x05000005, 0x48174407, 0x4a03c014, 0x03800000, - 0x05f9f7cc, 0x0509ff09, 0x05f60f61, 0x4a03c014, - 0x03800000, 0x64134407, 0x05fdf009, 0x4a03c014, - 0x03800000, 0x05fdf00b, 0x4c5c0000, 0x4c600000, + 0x05f9f7c4, 0x0509ffff, 0x05f60f31, 0x4a03c014, + 0x03800000, 0x64134407, 0x05fdf001, 0x4a03c014, + 0x03800000, 0x05fdf003, 0x4c5c0000, 0x4c600000, 0x4c640000, 0x4004b800, 0x4008c000, 0x400cc800, - 0x0501f877, 0x05000019, 0x0501f8a3, 0x0502001b, + 0x0501f8e7, 0x05000019, 0x0501f913, 0x0502001b, 0x8c60053c, 0x0502000c, 0x8c60053e, 0x05000007, 0x4060b800, 0x825cbd00, 0x0000ff00, 0x805cb910, - 0x0501f899, 0x05020011, 0x4060b800, 0x0501f896, - 0x0502000e, 0x4064b800, 0x0501f893, 0x0502000b, - 0x0501f882, 0x4ce80000, 0x6021d027, 0x0521fdb2, + 0x0501f909, 0x05020011, 0x4060b800, 0x0501f906, + 0x0502000e, 0x4064b800, 0x0501f903, 0x0502000b, + 0x0501f8f2, 0x4ce80000, 0x6021d027, 0x0525f96d, 0x5c01d000, 0x90000541, 0x5c00c800, 0x5c00c000, - 0x5c00b800, 0x1c01f000, 0x0501f878, 0x80000580, - 0x05fdf7fa, 0x4c5c0000, 0x0501f855, 0x05000008, - 0x905cbd41, 0x0501f880, 0x05020007, 0x0501f8ba, - 0x0501f8ec, 0x0501f86d, 0x90000541, 0x5c00b800, - 0x1c01f000, 0x0501f869, 0x80000580, 0x05fdf7fc, - 0x4c5c0000, 0x4c600000, 0x4c640000, 0x4004b800, - 0x4008c000, 0x0501f842, 0x05000016, 0x0501f86e, - 0x05020019, 0x8c60053e, 0x05000009, 0x4c5c0000, - 0x4060b800, 0x825cbd00, 0x0000ff00, 0x805cb910, - 0x0501f865, 0x5c00b800, 0x0502000f, 0x4c5c0000, - 0x4060b800, 0x0501f860, 0x5c00b800, 0x0502000a, - 0x05fdffd9, 0x05000003, 0x0501f84c, 0x90000541, - 0x40642800, 0x5c00c800, 0x5c00c000, 0x5c00b800, - 0x1c01f000, 0x0501f845, 0x80000580, 0x05fdf7f9, - 0x4ce80000, 0x4c580000, 0x4803c856, 0x6030b000, - 0x6029d000, 0x0521fd70, 0x4a03c013, 0x02000200, - 0x6029d000, 0x0521fd6c, 0x4a03c013, 0x02000000, - 0x8058b040, 0x05fe07f7, 0x61a00807, 0x4a03c013, - 0x03800300, 0x80040840, 0x0500000f, 0x4a03c014, - 0x03800000, 0x59e00013, 0x4a03c014, 0x03800380, - 0x82000500, 0x00000300, 0x82000580, 0x00000300, - 0x05fe07f3, 0x90000541, 0x5c00b000, 0x5c01d000, - 0x1c01f000, 0x80000580, 0x05fdf7fc, 0x4ce80000, + 0x5c00b800, 0x1c01f000, 0x0501f8e8, 0x80000580, + 0x4803c856, 0x05fdf7f9, 0x4c5c0000, 0x0501f8c4, + 0x05000008, 0x905cbd41, 0x0501f8ef, 0x05020007, + 0x0501f929, 0x0501f959, 0x0501f8dc, 0x90000541, + 0x5c00b800, 0x1c01f000, 0x0501f8d8, 0x80000580, + 0x485fc857, 0x05fdf7fb, 0x4c5c0000, 0x4c600000, + 0x4c640000, 0x4004b800, 0x4008c000, 0x0501f8b0, + 0x05000016, 0x0501f8dc, 0x05020019, 0x8c60053e, + 0x05000009, 0x4c5c0000, 0x4060b800, 0x825cbd00, + 0x0000ff00, 0x805cb910, 0x0501f8d3, 0x5c00b800, + 0x0502000f, 0x4c5c0000, 0x4060b800, 0x0501f8ce, + 0x5c00b800, 0x0502000a, 0x05fdffd8, 0x05000003, + 0x0501f8ba, 0x90000541, 0x40642800, 0x5c00c800, + 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x0501f8b3, + 0x80000580, 0x4867c857, 0x05fdf7f8, 0x4c5c0000, + 0x4c600000, 0x4c640000, 0x4d040000, 0x4c500000, + 0x4c540000, 0x4c580000, 0x4004a000, 0x4008a800, + 0x400cb000, 0x412e0800, 0x40500800, 0x40541000, + 0x4004b800, 0x4008c000, 0x0501f881, 0x0500004f, + 0x0501f8ad, 0x05020056, 0x8c60053e, 0x05000009, + 0x4c5c0000, 0x4060b800, 0x825cbd00, 0x0000ff00, + 0x805cb910, 0x0501f8a4, 0x5c00b800, 0x0502004c, + 0x4c5c0000, 0x4060b800, 0x0501f89f, 0x5c00b800, + 0x05020047, 0x0501f86e, 0x0500003c, 0x905cbd41, + 0x0501f899, 0x05020042, 0x40581800, 0x900c1c88, + 0x05001004, 0x400cb000, 0x6020b800, 0x0501f003, + 0x4058b800, 0x4178b000, 0x0501f8cb, 0x82642d00, + 0x000000ff, 0x805cb840, 0x05000020, 0x0501f906, + 0x0501f8c5, 0x8064c8d0, 0x82640500, 0x0000ff00, + 0x80142d40, 0x805cb840, 0x05000018, 0x0501f8fe, + 0x0501f8bd, 0x8064c8e0, 0x82640500, 0x00ff0000, + 0x80142d40, 0x805cb840, 0x05000010, 0x0501f8f6, + 0x0501f8b5, 0x8064c8f0, 0x82640500, 0xff000000, + 0x80142d40, 0x805cb840, 0x05000008, 0x0501f8ee, + 0x44160800, 0x81060800, 0x40541800, 0x900c1c04, + 0x400ca800, 0x05fdf7dd, 0x44160800, 0x0501f8d7, + 0x0501f85a, 0x40581800, 0x90000541, 0x800c19c0, + 0x05000006, 0x81060800, 0x40541800, 0x900c1c04, + 0x400ca800, 0x05fdf7ad, 0x90000541, 0x5c00b000, + 0x5c00a800, 0x5c00a000, 0x5c020800, 0x5c00c800, + 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x0501f847, + 0x80000580, 0x4867c857, 0x05fdf7f5, 0x4ce80000, + 0x4c580000, 0x4803c856, 0x6030b000, 0x6029d000, + 0x0525f8bc, 0x4a03c013, 0x02000200, 0x6029d000, + 0x0525f8b8, 0x4a03c013, 0x02000000, 0x8058b040, + 0x05fe07f7, 0x61a00807, 0x4a03c013, 0x03800300, + 0x80040840, 0x0500000f, 0x4a03c014, 0x03800000, + 0x59e00013, 0x4a03c014, 0x03800380, 0x82000500, + 0x00000300, 0x82000580, 0x00000300, 0x05fe07f3, + 0x90000541, 0x5c00b000, 0x5c01d000, 0x1c01f000, + 0x4803c856, 0x80000580, 0x05fdf7fb, 0x4ce80000, 0x61a00807, 0x4a03c013, 0x03800300, 0x80040840, 0x05000016, 0x4a03c014, 0x03800000, 0x59e00013, 0x4a03c014, 0x03800380, 0x82000500, 0x00000300, - 0x82000580, 0x00000300, 0x05fe07f3, 0x6029d000, - 0x0521fd41, 0x4a03c013, 0x01000000, 0x6029d000, - 0x0521fd3d, 0x4a03c013, 0x02000000, 0x90000541, - 0x5c01d000, 0x1c01f000, 0x4803c857, 0x05fdffc1, + 0x82000580, 0x00000300, 0x05fe07f3, 0x6055d000, + 0x0525f88c, 0x4a03c013, 0x01000000, 0x6029d000, + 0x0525f888, 0x4a03c013, 0x02000000, 0x90000541, + 0x5c01d000, 0x1c01f000, 0x4803c856, 0x05fdffc0, 0x05fe07f3, 0x05fdf7fb, 0x4a03c013, 0x01000000, - 0x4ce80000, 0x6029d000, 0x0521fd2f, 0x5c01d000, + 0x4ce80000, 0x6029d000, 0x0525f87a, 0x5c01d000, 0x4a03c013, 0x02000200, 0x4ce80000, 0x6029d000, - 0x0521fd29, 0x5c01d000, 0x4a03c013, 0x01000100, + 0x0525f874, 0x5c01d000, 0x4a03c013, 0x01000100, 0x1c01f000, 0x4c5c0000, 0x4c600000, 0x6020c000, 0x825c0500, 0x00000080, 0x800000c2, 0x82000540, 0x01000000, 0x4803c013, 0x4ce80000, 0x6029d000, - 0x0521fd19, 0x5c01d000, 0x4a03c013, 0x02000200, - 0x4ce80000, 0x6029d000, 0x0521fd13, 0x5c01d000, + 0x0525f864, 0x5c01d000, 0x4a03c013, 0x02000200, + 0x4ce80000, 0x6029d000, 0x0525f85e, 0x5c01d000, 0x4a03c013, 0x02000000, 0x805cb8c2, 0x8060c040, 0x05fe07ec, 0x4a03c013, 0x01000100, 0x4ce80000, - 0x6029d000, 0x0521fd08, 0x5c01d000, 0x4a03c013, - 0x02000200, 0x4ce80000, 0x6029d000, 0x0521fd02, + 0x6029d000, 0x0525f853, 0x5c01d000, 0x4a03c013, + 0x02000200, 0x4ce80000, 0x6029d000, 0x0525f84d, 0x5c01d000, 0x4a03c014, 0x03800000, 0x61a00807, 0x59e0b813, 0x825cbd00, 0x00000100, 0x80040840, 0x05000004, 0x405c0000, 0x80000540, 0x05fe07f9, 0x4a03c014, 0x03800380, 0x4a03c013, 0x02000000, - 0x4ce80000, 0x6029d000, 0x0521fcef, 0x5c01d000, + 0x4ce80000, 0x6029d000, 0x0525f83a, 0x5c01d000, 0x405c0000, 0x80000540, 0x5c00c000, 0x5c00b800, - 0x1c01f000, 0x4c600000, 0x4803c856, 0x4a03c013, - 0x01000100, 0x6020c000, 0x61a0c807, 0x4ce80000, - 0x6029d000, 0x0521fce0, 0x5c01d000, 0x4a03c013, - 0x02000200, 0x4a03c014, 0x03800000, 0x59e00013, - 0x4a03c014, 0x03800380, 0x82000500, 0x00000200, - 0x05020003, 0x8064c840, 0x05fe07f7, 0x4178c800, - 0x0501f007, 0x4ce80000, 0x6029d000, 0x0521fcce, - 0x5c01d000, 0x4a03c013, 0x02000200, 0x4ce80000, - 0x6029d000, 0x0521fcc8, 0x5c01d000, 0x4a03c014, - 0x03800000, 0x59e00013, 0x4a03c014, 0x03800380, - 0x82000500, 0x00000100, 0x80000110, 0x8064c8c2, - 0x8064cd40, 0x4a03c013, 0x02000000, 0x8060c040, - 0x05fe07e9, 0x4867c857, 0x5c00c000, 0x1c01f000, - 0x4803c856, 0x4a03c013, 0x01000100, 0x4ce80000, - 0x6029d000, 0x0521fcb0, 0x5c01d000, 0x4a03c013, - 0x02000200, 0x4ce80000, 0x6029d000, 0x0521fcaa, + 0x1c01f000, 0x4c600000, 0x4a03c013, 0x01000100, + 0x6020c000, 0x61a0c807, 0x4ce80000, 0x6029d000, + 0x0525f82c, 0x5c01d000, 0x4a03c013, 0x02000200, + 0x4a03c014, 0x03800000, 0x59e00013, 0x4a03c014, + 0x03800380, 0x82000500, 0x00000200, 0x05020003, + 0x8064c840, 0x05fe07f7, 0x4178c800, 0x0501f007, + 0x4ce80000, 0x6029d000, 0x0525f81a, 0x5c01d000, + 0x4a03c013, 0x02000200, 0x4ce80000, 0x6029d000, + 0x0525f814, 0x5c01d000, 0x4a03c014, 0x03800000, + 0x59e00013, 0x4a03c014, 0x03800380, 0x82000500, + 0x00000100, 0x80000110, 0x8064c8c2, 0x8064cd40, + 0x4a03c013, 0x02000000, 0x8060c040, 0x05fe07e9, + 0x5c00c000, 0x1c01f000, 0x4a03c013, 0x01000100, + 0x4ce80000, 0x6029d000, 0x0521fffe, 0x5c01d000, + 0x4a03c013, 0x02000200, 0x4ce80000, 0x6029d000, + 0x0521fff8, 0x5c01d000, 0x4a03c013, 0x02000000, + 0x1c01f000, 0x4a03c013, 0x01000000, 0x4ce80000, + 0x6029d000, 0x0521ffef, 0x5c01d000, 0x4a03c013, + 0x02000200, 0x4ce80000, 0x6029d000, 0x0521ffe9, 0x5c01d000, 0x4a03c013, 0x02000000, 0x1c01f000, - 0x59a00408, 0x59a8085c, 0x4803505c, 0x48074408, - 0x59a00a0a, 0x90040494, 0x05021002, 0x6140080f, - 0x59a8005d, 0x4807505d, 0x4803420a, 0x05f9f68d, + 0x59a00408, 0x59a8085f, 0x4803505f, 0x48074408, + 0x59a00a0a, 0x90040494, 0x05021002, 0x60500800, + 0x59a80060, 0x48075060, 0x4803420a, 0x05f9f609, 0x59a00407, 0x59a00a08, 0x900409c0, 0x80040d40, 0x59a00408, 0x59a01209, 0x900811c0, 0x80081540, 0x59a00409, 0x59a01a0a, 0x900c19c0, 0x800c1d40, 0x59a0040a, 0x59a0220b, 0x901021c0, 0x80102540, - 0x054dfeff, 0x05f8067b, 0x05f9f6d2, 0x916c0580, + 0x0551fd51, 0x05f805f7, 0x05f9f64e, 0x916c0580, 0x0500000a, 0x59a80005, 0x59a00c07, 0x80041580, - 0xb0081500, 0x05f80673, 0x80080580, 0x48035005, - 0x05e9fc49, 0x05f9f66f, 0x59a00407, 0x59a80805, + 0xb0081500, 0x05f805ef, 0x80080580, 0x48035005, + 0x05e9fb4c, 0x05f9f5eb, 0x59a00407, 0x59a80805, 0x48035005, 0x80040d80, 0x8c040512, 0x05000004, 0x59c40001, 0x84000544, 0x48038801, 0x8c04050c, - 0x05ea0c3d, 0x59a00208, 0x599c0818, 0x8c040510, - 0x05000002, 0x8400054a, 0x48035006, 0x59a00408, - 0x8c00051a, 0x05000009, 0x600018ec, 0x60140800, - 0x580c1006, 0x4a001805, 0x70000005, 0x900c1c20, - 0x80040840, 0x05fe07fb, 0x48035007, 0x05f9f651, - 0x8d0c050e, 0x05000003, 0x64074407, 0x05f9f690, - 0x0515fd02, 0x05020003, 0x645b4407, 0x05f9f68c, - 0x916c0583, 0x05000003, 0x641f4407, 0x05f9f688, - 0x59a00c07, 0x82040500, 0xffffff00, 0x05fa0689, - 0x82041580, 0x000000ff, 0x05020007, 0x59a8003d, - 0x82000500, 0x000000ff, 0x82001540, 0x0000ff00, - 0x0501f00f, 0x82040400, 0x00102853, 0x50000000, - 0x80000110, 0x82000580, 0x00000080, 0x05f80679, - 0x59a8003d, 0x82000500, 0x000000ff, 0x80041580, - 0x05f80674, 0x840409c0, 0x80041540, 0x4c080000, - 0x0531f833, 0x5c001000, 0x05020003, 0x640f4407, - 0x05f9f667, 0x48ee602d, 0x480a621e, 0x4a02641e, - 0x0000bc09, 0x64066407, 0x0509fbc5, 0x05020004, - 0x0005ffdc, 0x640b4407, 0x05f9f65d, 0x497a5a08, - 0x4a02601d, 0x0010e512, 0x497a5809, 0x4a025c08, - 0x00008000, 0x4a01d809, 0x0010342c, 0x492e6009, - 0x60ca7000, 0x0009f000, 0x8d0c050e, 0x05000003, - 0x64074407, 0x05f9f64e, 0x0515fcc0, 0x05020003, - 0x645b4407, 0x05f9f64a, 0x916c0583, 0x05000003, - 0x641f4407, 0x05f9f646, 0x59a00c07, 0x82040500, - 0xffffff00, 0x05fa0647, 0x82041580, 0x000000ff, - 0x05020007, 0x59a8003d, 0x82000500, 0x000000ff, - 0x82001540, 0x0000ff00, 0x0501f00f, 0x82040400, - 0x00102853, 0x50000000, 0x80000110, 0x82000580, - 0x00000080, 0x05f80637, 0x59a8003d, 0x82000500, - 0x000000ff, 0x80041580, 0x05f80632, 0x840409c0, - 0x80041540, 0x4c080000, 0x052dfff1, 0x5c001000, - 0x05020003, 0x640f4407, 0x05f9f625, 0x48ee602d, - 0x480a621e, 0x4a02641e, 0x0000bc05, 0x64066407, - 0x0509fb83, 0x05020004, 0x0005ffdc, 0x640b4407, - 0x05f9f61b, 0x497a5a08, 0x4a02601d, 0x0010e512, - 0x497a5809, 0x4a025c08, 0x00008000, 0x4a01d809, - 0x0010342c, 0x492e6009, 0x60ca7000, 0x0009f000, - 0x592c0009, 0x82000580, 0x01000000, 0x05fa05c9, - 0x64134407, 0x05f9f60a, 0x497b4407, 0x497b4208, - 0x8d0c0520, 0x05000008, 0x59a80098, 0x59a80899, - 0x80040480, 0x59a8089a, 0x48074407, 0x80041480, - 0x480b4208, 0x0509fc8f, 0x48034408, 0x59a8103b, - 0x59a8029c, 0x80080480, 0x4803420a, 0x495f440a, - 0x59a80048, 0x4803420c, 0x4a03440c, 0x000000fe, - 0x05f9f5b0, 0x8d0c050e, 0x05000003, 0x64074407, - 0x05f9f5ef, 0x59a00407, 0x8c000500, 0x0502000d, - 0x59a8009b, 0x81640480, 0x05001008, 0x59a8000b, - 0x81500580, 0x05000007, 0x59a80099, 0x59a81098, - 0x80080580, 0x05000003, 0x64634407, 0x05f9f5e0, - 0x850e1d58, 0x4803c856, 0x850e1d46, 0x050df867, - 0x05f9f598, 0x4803c856, 0x8d0c050e, 0x05fa05e1, - 0x59a00407, 0x8c00051e, 0x05000007, 0x4803c856, - 0x59a0020c, 0x82000480, 0x00000800, 0x0500100f, - 0x05f9f5d4, 0x4803c856, 0x59a0020c, 0x599c0a01, - 0x80040480, 0x05021002, 0x05f9f5ce, 0x59a8003b, - 0x81640580, 0x05000005, 0x64634407, 0x05f9f5c4, - 0x64174407, 0x05f9f5c2, 0x59a80249, 0x8c00050a, - 0x05fc07fc, 0x59a00407, 0x8c00051e, 0x05000033, - 0x052dff83, 0x05020003, 0x640f4407, 0x05f9f5b8, - 0x0509fb1b, 0x05020004, 0x0005ffdc, 0x640b4407, - 0x05f9f5b3, 0x497a5a08, 0x59a00407, 0x4802620c, - 0x59a0020a, 0x4802640c, 0x59a0040a, 0x4802620d, - 0x59a0020e, 0x4802620e, 0x59a0040e, 0x4802640e, - 0x59a0020f, 0x4802620f, 0x59a0040f, 0x4802640f, - 0x59a00211, 0x48026210, 0x59a00411, 0x48026410, - 0x59a0020c, 0x4802640d, 0x0501f9f9, 0x05fc07e7, - 0x48ee602d, 0x58ee580d, 0x59300210, 0x59301c10, - 0x900c19c0, 0x800c1d40, 0x5930020e, 0x5930140e, - 0x900811c0, 0x80081540, 0x592c0a09, 0x912c040a, - 0x0509fb15, 0x4a01d809, 0x00103637, 0x64074000, - 0x49334001, 0x1c01f000, 0x0509fe75, 0x05fa0595, - 0x0529f85f, 0x598e600b, 0x0529fb5a, 0x0529f85c, - 0x417a3000, 0x0529fd9b, 0x59926005, 0x813261c0, - 0x05000007, 0x0529fa8c, 0x0529f825, 0x0529f82a, - 0x60027820, 0x60ba8000, 0x0525fede, 0x811a3000, - 0x91180485, 0x05fc17f4, 0x05e9ffd1, 0x0501f88f, - 0x497b50be, 0x64034408, 0x4201d000, 0x003d0900, - 0x0521fb63, 0x59c40880, 0x4c040000, 0x59c408a3, - 0x4c040000, 0x497b4002, 0x0501f892, 0x0501f8ac, - 0x4a03a005, 0x10000000, 0x4a038805, 0x000000f0, - 0x0501f8c6, 0x0501f916, 0x0500006c, 0x59dc0806, - 0x82040500, 0x43200f80, 0x05000007, 0x82040500, - 0x80000000, 0x05000004, 0x4a034408, 0x0000dddd, - 0x0501f062, 0x59d00806, 0x82040500, 0x43dc0700, - 0x05000007, 0x82040500, 0x80000000, 0x05000004, - 0x4a034408, 0x0000dddd, 0x0501f058, 0x59c80001, - 0x800001c0, 0x05fc07e8, 0x59c80018, 0x82000500, - 0xf0000000, 0x59c00808, 0x82040d00, 0x0fffffff, - 0x80040540, 0x48038008, 0x05edfb7b, 0x59c00006, - 0x4a038006, 0x10000000, 0x59c00009, 0x82000d00, - 0x00e00000, 0x05020020, 0x6403900d, 0x59c80020, - 0x82000500, 0xff000000, 0x82000580, 0x32000000, - 0x05020019, 0x6407900d, 0x59c80020, 0x82000500, - 0xff000000, 0x82000580, 0xe1000000, 0x05020012, - 0x6403900d, 0x59c80020, 0x82000500, 0x00ffffff, - 0x6403900d, 0x59c80821, 0x82040d00, 0x00ffffff, - 0x80040580, 0x05020008, 0x59a8003d, 0x80040580, - 0x05020005, 0x59c40005, 0x82000500, 0x000000f0, - 0x05000005, 0x4803c856, 0x0501f8da, 0x640750be, - 0x0501f002, 0x0501f8e5, 0x61900000, 0x80000040, - 0x0502001a, 0x05f5f84a, 0x0502000c, 0x59c40005, - 0x82000500, 0x000000f0, 0x0502000b, 0x0501f8c0, - 0x0500000c, 0x59c00007, 0x82000500, 0x000501c0, - 0x0502000b, 0x497b4408, 0x4a034408, 0x0000aaaa, - 0x0501f00e, 0x4a034408, 0x0000bbbb, 0x0501f00b, - 0x4a034408, 0x0000cccc, 0x0501f008, 0x4a034408, - 0x0000dddd, 0x0501f005, 0x59c00807, 0x90040d0c, - 0x05fc07e3, 0x0501f002, 0x640750be, 0x0501f8c8, - 0x0509fdf6, 0x0529fb4d, 0x0501f813, 0x4201d000, - 0x000186a0, 0x0521fae2, 0x5c000800, 0x480788a3, - 0x5c000800, 0x48078880, 0x59a800be, 0x800001c0, - 0x05f804a4, 0x05f9f4f3, 0x599c0201, 0x480350bf, - 0x41780800, 0x60401076, 0x0525fa34, 0x480b50c0, - 0x1c01f000, 0x0525ffa7, 0x59b800ea, 0x90000507, - 0x90000583, 0x05020002, 0x640770e8, 0x1c01f000, - 0x600380ee, 0x4a038006, 0x30000000, 0x59c00007, - 0x8c00050a, 0x05fe07fe, 0x59c00006, 0x59a0020a, - 0x59a00c0a, 0x900409c0, 0x80040d40, 0x48078001, - 0x59a0020f, 0x59a00c0f, 0x900409c0, 0x80040d40, - 0x48078000, 0x59a0020c, 0x48038002, 0x48038003, - 0x48038005, 0x497b9009, 0x59e00003, 0x82000540, - 0x00008060, 0x4803c003, 0x1c01f000, 0x41780800, - 0x8007a0ca, 0x83d3a400, 0x00007600, 0x61000800, - 0x05f1fa72, 0x6407a00a, 0x4a03a005, 0x20000000, - 0x59d00006, 0x4a03a005, 0x30000000, 0x59d00006, - 0x8c00050a, 0x05fe07fe, 0x59d00005, 0x59a00211, - 0x59a00c11, 0x900409c0, 0x80040d40, 0x4807a001, - 0x59a0020e, 0x59a00c0e, 0x900409c0, 0x80040d40, - 0x4807a000, 0x59a0020c, 0x4803a003, 0x4803a002, - 0x4803a008, 0x1c01f000, 0x59a00002, 0x4803c857, - 0x800001c0, 0x0502004d, 0x59a800ca, 0x8c000500, - 0x05020003, 0x59a800c0, 0x48038880, 0x59c400a3, - 0x82000540, 0x00002008, 0x8400053a, 0x480388a3, - 0x59c40008, 0x82000500, 0xffffffe1, 0x82000540, - 0x00000280, 0x48038808, 0x59c80040, 0x84000534, - 0x48039040, 0x0501f8f6, 0x05020012, 0x59a8003d, - 0x800000d0, 0x90000551, 0x48039120, 0x59a8003d, - 0x82000500, 0x00ffffff, 0x82000540, 0x32000000, - 0x48039121, 0x4a039123, 0xe1290008, 0x59a8003d, - 0x82000500, 0x00ffffff, 0x48039122, 0x0501f015, - 0x59a8003d, 0x82000500, 0x000000ff, 0x900009c0, - 0x840001c0, 0x80040540, 0x90000540, 0x48039120, - 0x59a8003d, 0x82000500, 0x000000ff, 0x82000540, - 0x01000000, 0x48039121, 0x4a039123, 0x08210008, - 0x59a8003d, 0x82000500, 0x000000ff, 0x48039122, - 0x497b9124, 0x59a80cc1, 0x80040800, 0x480754c1, - 0x900409c0, 0x82040540, 0x0000aaaa, 0x48039125, - 0x497b9126, 0x497b9127, 0x59c80101, 0x0501f8c4, - 0x05020004, 0x4a039100, 0x0000e980, 0x0501f003, - 0x4a039100, 0x0000e9a0, 0x1c01f000, 0x90000541, - 0x0502500b, 0x4203e000, 0x80000000, 0x40e81000, - 0x41780800, 0x61900000, 0x0525f998, 0x5994002e, - 0x80080400, 0x4803282e, 0x80000580, 0x1c01f000, - 0x4d900000, 0x4dd00000, 0x4da40000, 0x4d140000, - 0x4cd80000, 0x417a3000, 0x0529fc52, 0x0529f946, - 0x5c01b000, 0x5c022800, 0x5c034800, 0x5c03a000, - 0x5c032000, 0x1c01f000, 0x59c80007, 0x8c000500, - 0x05000002, 0x64c3900d, 0x1c01f000, 0x4a038805, - 0x00020000, 0x60f00800, 0x05f1f9e4, 0x4a038891, - 0x0000ffff, 0x59c80035, 0x48039035, 0x6503900d, - 0x600380ee, 0x05edfa5c, 0x4a038006, 0x20000000, - 0x608380ee, 0x05edfa58, 0x4a038006, 0x20000000, - 0x4a03a005, 0x20000000, 0x59d00006, 0x4a03a005, - 0x30000000, 0x59a00207, 0xb0000585, 0x05020004, - 0x59a0000d, 0x800001c0, 0x05000009, 0x4a03b805, - 0x30000001, 0x59dc0006, 0x4a03b805, 0x20000000, - 0x59dc0806, 0x8c04050a, 0x05fe07fe, 0x59d00806, - 0x8c04050a, 0x05fe07fe, 0x1c01f000, 0x0505f824, - 0x05f803fa, 0x58ee580d, 0x4d300000, 0x59a26001, - 0x59a00000, 0x4000b000, 0x80000000, 0x48034000, - 0x592c0001, 0x80000540, 0x0500001a, 0x40025800, - 0x8058b040, 0x05fe07fb, 0x58ec1007, 0x58ec1808, - 0x592c0a09, 0x4d2c0000, 0x58ec000d, 0x40025800, - 0x592c0208, 0x5c025800, 0x82000580, 0x00000103, - 0x05000006, 0x912c040a, 0x0509f96f, 0x4a01d809, - 0x00103637, 0x0501f005, 0x912c040a, 0x0509f96c, - 0x4a01d809, 0x00103637, 0x5c026000, 0x1c01f000, - 0x58ec000d, 0x40025800, 0x592c0208, 0x82000580, - 0x00000103, 0x05020004, 0x0005ffdc, 0x5c026000, - 0x05f9f394, 0x58ec000d, 0x40025800, 0x592c0408, - 0x8400055e, 0x48025c08, 0x61f6880f, 0x42003000, - 0x00fffffd, 0x050dfea7, 0x59a26001, 0x05000005, - 0x0005ffdc, 0x497b4407, 0x5c026000, 0x05f9f3c8, - 0x053dfa6a, 0x05fc07fb, 0x4a01d809, 0x00103679, - 0x05fdf7e2, 0x592c0009, 0x82000580, 0x01000000, - 0x05000013, 0x4d300000, 0x59a26001, 0x5930020d, - 0x59301c0c, 0x900001c0, 0x800c1d40, 0x5930040f, - 0x5930120f, 0x900001c0, 0x80081540, 0x592c0a09, - 0x912c040a, 0x0509f93a, 0x4a01d809, 0x00103637, - 0x64074000, 0x5c026000, 0x1c01f000, 0x4d300000, - 0x59a26001, 0x4a034408, 0x0000cccc, 0x4933c857, - 0x052dfd3c, 0x5c026000, 0x05f9f3b2, 0x4933c857, - 0x4c300000, 0x5930040d, 0x90000cb8, 0x05001003, - 0x64e25a09, 0x0501f003, 0x48025a09, 0x0501f009, - 0x800409c0, 0x05000007, 0x4c040000, 0x0509f8fc, - 0x5c000800, 0x05000004, 0x40040000, 0x05fdf7f3, - 0x90000541, 0x5c006000, 0x1c01f000, 0x59a00207, - 0xb0000584, 0x1c01f000, 0x490fc857, 0x8d0c050e, - 0x05000007, 0x05f1fcc9, 0x05020005, 0x600c0000, - 0x05f1fe91, 0x600c0000, 0x05f1fe5f, 0x59a00407, - 0x90000507, 0x0c01f001, 0x001036c3, 0x001036ca, - 0x001036e2, 0x001036c2, 0x001036c2, 0x001036c2, - 0x001036c2, 0x001036c2, 0x05f9f37e, 0x0509fcb3, - 0x60080810, 0x05f1feec, 0x90040542, 0x60080810, - 0x05f1feee, 0x0501f00e, 0x0509fcac, 0x60080810, - 0x05f1fee5, 0x90040541, 0x60080810, 0x05f1fee7, - 0x60300848, 0x05f1fee0, 0x82040540, 0x00000080, - 0x60300848, 0x05f1fee1, 0x0501f001, 0x59c80040, - 0x4c000000, 0x59a8003d, 0x4c000000, 0x59c400a3, - 0x4c000000, 0x59c40008, 0x4c000000, 0x0501f929, - 0x0500003a, 0x05e5fef9, 0x8d0c050e, 0x05000023, - 0x59c40006, 0x84000500, 0x48038806, 0x0529f96e, - 0x497b8880, 0x59c400a3, 0x82000500, 0xfcf8ffff, - 0x480388a3, 0x6012d800, 0x64078805, 0x05e9f90f, - 0x05f1fe1c, 0x497b5068, 0x64075075, 0x59a800a7, - 0x84000540, 0x480350a7, 0x4803c857, 0x4a01d809, - 0x001036fb, 0x64535078, 0x1c01f000, 0x42000000, - 0x0010dd09, 0x50000800, 0x84040d08, 0x44040000, - 0x59a800a7, 0x84000500, 0x480350a7, 0x4803c857, - 0x8d0c050e, 0x05fa033f, 0x0515f9a8, 0x05020003, - 0x645b4407, 0x05f9f332, 0x916c0583, 0x05fa0339, - 0x59c408a4, 0x90040d0f, 0x90040580, 0x05fa0335, - 0x0509fc17, 0x05fa033b, 0x59c80040, 0x4c000000, - 0x59a8003d, 0x4c000000, 0x59c400a3, 0x4c000000, - 0x59c40008, 0x4c000000, 0x59c40080, 0x4c000000, - 0x59a00210, 0x59a0bc10, 0x905cb9c0, 0x805cbd40, - 0x41784800, 0x41785000, 0x41785800, 0x41789000, - 0x41789800, 0x05fdfe31, 0x64034408, 0x0525fdec, - 0x598e600b, 0x0529f8e7, 0x0525fde9, 0x417a3000, - 0x0529fb28, 0x59926005, 0x813261c0, 0x05000007, - 0x0529f819, 0x0525fdb2, 0x0525fdb7, 0x60027820, - 0x60ba8000, 0x0525fc6b, 0x811a3000, 0x91180485, - 0x05fc17f4, 0x05e9fd5e, 0x4178c000, 0x497b4002, - 0x0501f936, 0x59a00408, 0x82000580, 0x0000dddd, - 0x05000072, 0x0501f976, 0x59a00408, 0x82000580, - 0x0000dddd, 0x0500006d, 0x59a0020d, 0x59a00c0d, - 0x80040d40, 0x05000002, 0x0501f9b8, 0x0501f9b7, - 0x05fdfe52, 0x8060c1c0, 0x05020014, 0x0501fa49, - 0x59a00408, 0x82000580, 0x0000dddd, 0x0500005f, - 0x05fdfe9b, 0x0502000a, 0x05f1fe1d, 0x05020006, - 0x645f4407, 0x05f9fae2, 0x4203e000, 0x50000000, - 0x0501f000, 0x60a85955, 0x0501f059, 0x59c80001, - 0x800001c0, 0x05fc07ee, 0x59c80801, 0x800409c0, - 0x05000006, 0x0501fa21, 0x40240000, 0x80280540, - 0x802c0540, 0x0502004e, 0x59a00002, 0x82000580, - 0xfeedbeef, 0x05000004, 0x42008800, 0x10000000, - 0x0501f003, 0x42008800, 0x10000004, 0x0501f9cf, - 0x4a034002, 0xfeedbeef, 0x0501fa22, 0x59a00408, - 0x82000580, 0x0000dddd, 0x05000038, 0x0501fa4e, - 0x59a00408, 0x82000580, 0x0000dddd, 0x05000033, - 0x05fdfe8a, 0x59c40005, 0x8c000534, 0x05000003, - 0x60ec5977, 0x0501f032, 0x05fdfe69, 0x05020006, - 0x61305999, 0x485f4210, 0x905cb9c0, 0x485f4410, - 0x0501f02b, 0x59a0040d, 0x800001c0, 0x0500000e, - 0x59a26000, 0x5930000f, 0x800001c0, 0x05fe07b8, - 0x59a26001, 0x5930080f, 0x800409c0, 0x05fe07b4, - 0x804891c0, 0x05fe07b2, 0x804c99c0, 0x05fe07b0, - 0x0501f85f, 0x805cb840, 0x05000005, 0x40240000, - 0x80280540, 0x802c0540, 0x05020015, 0x42000000, - 0x00030d40, 0x80000040, 0x0502000e, 0x59c00007, - 0x82000500, 0x000501c0, 0x05020008, 0x05f1fdc8, - 0x05020006, 0x645f4407, 0x05f9fa8d, 0x4203e000, - 0x50000000, 0x0501f000, 0x617459bb, 0x0501f004, - 0x59c00807, 0x90040d0c, 0x05fc07ef, 0x05fdfe45, - 0x59a0040d, 0x800001c0, 0x05000002, 0x0501f840, - 0x05fdfe53, 0x40240000, 0x80280540, 0x802c0540, - 0x05020003, 0x805cb9c0, 0x05fe0778, 0x0509fb7b, - 0x0529f8d2, 0x05fdfd98, 0x4201d000, 0x000186a0, - 0x0521f867, 0x5c000800, 0x48078880, 0x5c000800, - 0x48078808, 0x5c000800, 0x480788a3, 0x5c000800, - 0x4807503d, 0x5c000800, 0x48079040, 0x05e9fb22, - 0x59a00407, 0x90000503, 0x90000582, 0x0500001c, - 0x60080810, 0x05f1fdd8, 0x82040500, 0xfffffffc, - 0x60080810, 0x05f1fdd9, 0x60300848, 0x05f1fdd2, - 0x82040500, 0xffffff7f, 0x60300848, 0x05f1fdd3, - 0x0515f8d6, 0x05020003, 0x0515fc70, 0x0501f00c, - 0x4a0388a7, 0x0000f7f7, 0x42006000, 0xbeffffff, - 0x42006800, 0x80018000, 0x050dfa69, 0x42006000, - 0xfffeffff, 0x41786800, 0x050dfa65, 0x402c0000, - 0x80280540, 0x80240540, 0x05f80202, 0x48274407, - 0x482b4208, 0x482f4408, 0x05f9f252, 0x59a26000, - 0x813261c0, 0x0500000a, 0x59325809, 0x812e59c0, - 0x05000007, 0x0005ffdc, 0x05e9f999, 0x59a26001, - 0x59325809, 0x0005ffdc, 0x05e9f995, 0x1c01f000, - 0x61bc0801, 0x05f1fae9, 0x4a03503d, 0x000000ef, - 0x59c400a3, 0x8400055a, 0x8400053a, 0x480388a3, - 0x05f1fb52, 0x05020006, 0x60040000, 0x05f1fd32, - 0x60040000, 0x05f1fd00, 0x0501f013, 0x05f1fb51, - 0x05020006, 0x60000000, 0x05f1fd2b, 0x60000000, - 0x05f1fcf9, 0x0501f00c, 0x05f1fb50, 0x05020006, - 0x60080000, 0x05f1fd24, 0x60080000, 0x05f1fcf2, - 0x0501f005, 0x600c0000, 0x05f1fd1f, 0x600c0000, - 0x05f1fced, 0x6051d000, 0x051dffdb, 0x59c40008, - 0x82000500, 0xffffffe1, 0x82000540, 0x00000280, - 0x48038808, 0x4a0388a7, 0x0000f8f7, 0x4a038805, - 0x04000001, 0x42006000, 0xbe20bfff, 0x42006800, - 0x80018000, 0x050dfa1e, 0x42006000, 0xfffeffff, - 0x41786800, 0x050dfa1a, 0x6020b027, 0x6051d000, - 0x4c580000, 0x051dffc4, 0x05f1fd31, 0x5c00b000, - 0x05000004, 0x8058b040, 0x05fe07f9, 0x0501f029, - 0x59c40005, 0x8c000534, 0x05020005, 0x59c400a4, - 0x9000050f, 0x90000588, 0x05020022, 0x42006000, - 0x00020000, 0x050dfa0b, 0x6191d000, 0x051dffb2, - 0x42006000, 0xfeffffff, 0x42006800, 0x02000000, - 0x050df9ff, 0x42006000, 0xfdffffff, 0x41786800, - 0x050df9fb, 0x59c40001, 0x82000500, 0x00018000, - 0x82000580, 0x00018000, 0x59c400a3, 0x05020004, - 0x82000540, 0x00001000, 0x0501f003, 0x82000500, - 0xffffefff, 0x480388a3, 0x4a038805, 0x04000001, - 0x59c400a4, 0x9000050f, 0x90000580, 0x05000002, - 0x90000541, 0x1c01f000, 0x4803c856, 0x600380ee, - 0x05edf801, 0x59c00006, 0x59a0040d, 0x800001c0, - 0x05000037, 0x59a03c0d, 0x59a0020a, 0x59a01c0a, - 0x900c19c0, 0x800c1d40, 0x59a0020f, 0x59a0240f, - 0x901021c0, 0x80102540, 0x59a0020c, 0x82000500, - 0x0000fffc, 0x59a0140c, 0x900811c0, 0x80081540, - 0x480b8003, 0x052dfb7a, 0x05e40d50, 0x49334000, - 0x05e9f8f6, 0x64625a08, 0x4a025809, 0x00abcdef, - 0x492e6009, 0x492e600d, 0x481e600f, 0x6412600e, - 0x912c0415, 0x4802600c, 0x60301000, 0x901c0d81, - 0x05000008, 0x801c3840, 0x0501f963, 0x59a00408, - 0x82000580, 0x0000dddd, 0x05000011, 0x0501f004, - 0x41783800, 0x0501f95c, 0x0501f00d, 0x901c0c85, - 0x05001004, 0x40043800, 0x60f01000, 0x0501f005, - 0x80001580, 0x9008140c, 0x801c3840, 0x05fe07fe, - 0x912c0409, 0x0501f950, 0x05fe07f5, 0x497b9009, - 0x59e00003, 0x82000540, 0x00008060, 0x4803c003, - 0x4a038009, 0x00e00000, 0x1c01f000, 0x4803c856, - 0x41780800, 0x8007a0ca, 0x83d3a400, 0x00007600, - 0x61000800, 0x05edff39, 0x6407a00a, 0x4a03a005, - 0x20000000, 0x59d00006, 0x4a03a005, 0x30000000, - 0x59d00006, 0x8c00050a, 0x05fe07fe, 0x59d00005, - 0x59a0020d, 0x800001c0, 0x05000037, 0x59a03a0d, - 0x59a00211, 0x59a01c11, 0x900c19c0, 0x800c1d40, - 0x59a0020e, 0x59a0240e, 0x901021c0, 0x80102540, - 0x59a0120c, 0x82081500, 0x0000fffc, 0x59a0040c, - 0x900001c0, 0x80081540, 0x480ba003, 0x052dfb28, - 0x05e40cfe, 0x49334001, 0x05e9f8a4, 0x64625a08, - 0x4a025809, 0x00abcdef, 0x492e6009, 0x492e600d, - 0x481e600f, 0x6412600e, 0x912c0415, 0x4802600c, - 0x60301000, 0x901c0d81, 0x05000008, 0x801c3840, - 0x0501f911, 0x59a00408, 0x82000580, 0x0000dddd, - 0x05000011, 0x0501f004, 0x41783800, 0x0501f90a, - 0x0501f00d, 0x901c0c85, 0x05001004, 0x40043800, - 0x60f01000, 0x0501f005, 0x80001580, 0x9008140c, - 0x801c3840, 0x05fe07fe, 0x912c0409, 0x0501f8fe, - 0x05fe07f5, 0x1c01f000, 0x4803c856, 0x59a0020d, - 0x800001c0, 0x05000020, 0x904c0582, 0x0500003a, - 0x59a26001, 0x5930380f, 0x801c39c0, 0x05000036, - 0x801c3840, 0x481e600f, 0x5932580d, 0x5930080c, - 0x50042000, 0x58041801, 0x58041002, 0x82081500, - 0xfffffffc, 0x5930000e, 0x80000000, 0x90000d85, - 0x05020008, 0x497a600e, 0x592e5801, 0x812e59c0, - 0x05000018, 0x492e600d, 0x912c0c09, 0x0501f004, - 0x4802600e, 0x5930080c, 0x90040c03, 0x4806600c, - 0x0501f010, 0x59a0120c, 0x82081500, 0x0000fffc, - 0x59a0040c, 0x900001c0, 0x80081540, 0x480ba003, - 0x59a0020e, 0x59a0240e, 0x901021c0, 0x80102540, - 0x59a00211, 0x59a01c11, 0x900c19c0, 0x800c1d40, - 0x6061d075, 0x051dfefa, 0x6423a00a, 0x480ba002, - 0x59a800bf, 0x4803a008, 0x4813a000, 0x480fa001, - 0x4a03a005, 0x10000000, 0x05e45c9c, 0x804c9800, - 0x90000541, 0x1c01f000, 0x4847c857, 0x59a0040d, - 0x800001c0, 0x05000020, 0x90480582, 0x0500003e, - 0x59a26000, 0x5930380f, 0x801c39c0, 0x0500003a, - 0x801c3840, 0x481e600f, 0x5932580d, 0x5930080c, - 0x50042000, 0x58041801, 0x58041002, 0x82081500, - 0xfffffffc, 0x5930000e, 0x80000000, 0x90000d85, - 0x05020008, 0x497a600e, 0x592e5801, 0x812e59c0, - 0x0500001b, 0x492e600d, 0x912c0c09, 0x0501f004, - 0x4802600e, 0x5930080c, 0x90040c03, 0x4806600c, - 0x0501f013, 0x82440580, 0x10000000, 0x0502001e, - 0x59a0020f, 0x59a0240f, 0x901021c0, 0x80102540, - 0x59a0020a, 0x59a01c0a, 0x900c19c0, 0x800c1d40, - 0x59a0020c, 0x82000500, 0x0000fffc, 0x59a0140c, - 0x900811c0, 0x80081540, 0x480b8003, 0x48138000, - 0x480f8001, 0x480b8002, 0x59c80018, 0x82000500, - 0xf0000000, 0x59c02008, 0x82102500, 0x0fffffff, - 0x80100540, 0x48038008, 0x48478006, 0x80489000, - 0x9060c541, 0x1c01f000, 0x59c00009, 0x4803c857, - 0x82000d00, 0x00e00000, 0x0500000d, 0x485f4210, - 0x905cb9c0, 0x485f4410, 0x8c00052e, 0x05000002, - 0x80285000, 0x8c00052c, 0x05000002, 0x80244800, - 0x8c00052a, 0x05000002, 0x802c5800, 0x1c01f000, + 0x05ea0b40, 0x59a00208, 0x599c0818, 0x8c040510, + 0x05000002, 0x8400054a, 0x48035006, 0x59a8103f, + 0x4c000000, 0x8c000510, 0x0502000e, 0x800811c0, + 0x0500001b, 0x497b503f, 0x497b523e, 0x42017800, + 0x00115aa4, 0x40bec000, 0x59a80a9f, 0x90050420, + 0x59a8003d, 0x8006cc00, 0x4967503d, 0x0501f010, + 0x800811c0, 0x0502000e, 0x59a80a9f, 0x4807523e, + 0x4a03503f, 0x00115aa4, 0x60c01000, 0x0525ff4c, + 0x82057c00, 0x00115aa4, 0x40bec000, 0x60810000, + 0x59aacc3e, 0x9166cc20, 0x4967503d, 0x5c000000, + 0x59a00408, 0x8c00051a, 0x05000009, 0x600018ec, + 0x60140800, 0x580c1006, 0x4a001805, 0x70000005, + 0x900c1c20, 0x80040840, 0x05fe07fb, 0x48035007, + 0x05f9f5ac, 0x8d0c050e, 0x05000003, 0x64074407, + 0x05f9f5eb, 0x0515fe9f, 0x05020003, 0x645b4407, + 0x05f9f5e7, 0x916c0583, 0x05000003, 0x641f4407, + 0x05f9f5e3, 0x59a00c07, 0x82040500, 0xffffff00, + 0x05fa05e4, 0x82041580, 0x000000ff, 0x05020007, + 0x59a80040, 0x82000500, 0x000000ff, 0x82001540, + 0x0000ff00, 0x0501f00f, 0x82040400, 0x001028fb, + 0x50000000, 0x80000110, 0x82000580, 0x00000080, + 0x05f805d4, 0x59a80040, 0x82000500, 0x000000ff, + 0x80041580, 0x05f805cf, 0x840409c0, 0x80041540, + 0x4c080000, 0x0531fbfb, 0x5c001000, 0x05020003, + 0x640f4407, 0x05f9f5c2, 0x48ee602d, 0x480a621e, + 0x4a02641e, 0x0000bc09, 0x64066407, 0x0509fc1a, + 0x05020004, 0x0009f810, 0x640b4407, 0x05f9f5b8, + 0x497a5a08, 0x4a02601d, 0x001124b6, 0x497a5809, + 0x4a025c08, 0x00008000, 0x4a01d809, 0x00103579, + 0x492e6009, 0x60ca7000, 0x0009f039, 0x8d0c050e, + 0x05000003, 0x64074407, 0x05f9f5a9, 0x0515fe5d, + 0x05020003, 0x645b4407, 0x05f9f5a5, 0x916c0583, + 0x05000003, 0x641f4407, 0x05f9f5a1, 0x59a00c07, + 0x82040500, 0xffffff00, 0x05fa05a2, 0x82041580, + 0x000000ff, 0x05020007, 0x59a80040, 0x82000500, + 0x000000ff, 0x82001540, 0x0000ff00, 0x0501f00f, + 0x82040400, 0x001028fb, 0x50000000, 0x80000110, + 0x82000580, 0x00000080, 0x05f80592, 0x59a80040, + 0x82000500, 0x000000ff, 0x80041580, 0x05f8058d, + 0x840409c0, 0x80041540, 0x4c080000, 0x0531fbb9, + 0x5c001000, 0x05020003, 0x640f4407, 0x05f9f580, + 0x48ee602d, 0x480a621e, 0x4a02641e, 0x0000bc05, + 0x64066407, 0x0509fbd8, 0x05020004, 0x0009f810, + 0x640b4407, 0x05f9f576, 0x497a5a08, 0x4a02601d, + 0x001124b6, 0x497a5809, 0x4a025c08, 0x00008000, + 0x4a01d809, 0x00103579, 0x492e6009, 0x60ca7000, + 0x0009f039, 0x592c0009, 0x82000580, 0x01000000, + 0x05fa0524, 0x64134407, 0x05f9f565, 0x497b4407, + 0x497b4208, 0x8d0c0520, 0x05000008, 0x59a8009b, + 0x59a8089c, 0x80040480, 0x59a8089d, 0x48074407, + 0x80041480, 0x480b4208, 0x0509fce5, 0x48034408, + 0x59a8043e, 0x4803420a, 0x495f440a, 0x59a8004b, + 0x4803420c, 0x4a03440c, 0x000000fe, 0x05f9f50d, + 0x8d0c050e, 0x05000003, 0x64074407, 0x05f9f54c, + 0x59a00407, 0x8c000500, 0x0502000d, 0x59a8009e, + 0x81640480, 0x05001008, 0x59a8000b, 0x81500580, + 0x05000007, 0x59a8009c, 0x59a8109b, 0x80080580, + 0x05000003, 0x64634407, 0x05f9f53d, 0x850e1d58, + 0x4803c856, 0x850e1d46, 0x050df911, 0x05f9f4f5, + 0x4803c856, 0x8d0c050e, 0x05fa053e, 0x59a00407, + 0x8c00051e, 0x05000007, 0x4803c856, 0x59a0020c, + 0x82000480, 0x00000800, 0x0500100f, 0x05f9f531, + 0x4803c856, 0x59a0020c, 0x599c0a01, 0x80040480, + 0x05021002, 0x05f9f52b, 0x59a8003d, 0x81640580, + 0x05000005, 0x64634407, 0x05f9f521, 0x64174407, + 0x05f9f51f, 0x59a8024c, 0x8c00050a, 0x05fc07fc, + 0x59a00407, 0x8c00051e, 0x05000033, 0x0531fb4d, + 0x05020003, 0x640f4407, 0x05f9f515, 0x0509fb72, + 0x05020004, 0x0009f810, 0x640b4407, 0x05f9f510, + 0x497a5a08, 0x59a00407, 0x4802620c, 0x59a0020a, + 0x4802640c, 0x59a0040a, 0x4802620d, 0x59a0020e, + 0x4802620e, 0x59a0040e, 0x4802640e, 0x59a0020f, + 0x4802620f, 0x59a0040f, 0x4802640f, 0x59a00211, + 0x48026210, 0x59a00411, 0x48026410, 0x59a0020c, + 0x4802640d, 0x0501f9f9, 0x05fc07e7, 0x48ee602d, + 0x58ee580d, 0x59300210, 0x59301c10, 0x900c19c0, + 0x800c1d40, 0x5930020e, 0x5930140e, 0x900811c0, + 0x80081540, 0x592c0a09, 0x912c040a, 0x0509fb6c, + 0x4a01d809, 0x00103782, 0x64074000, 0x49334001, + 0x1c01f000, 0x0509fecd, 0x05fa04f2, 0x0529fbd2, + 0x598e600b, 0x0529fecd, 0x0529fbcf, 0x417a3000, + 0x052df90e, 0x59926005, 0x813261c0, 0x05000007, + 0x0529fdff, 0x0529fb98, 0x0529fb9d, 0x60027820, + 0x60ba8000, 0x0529fa52, 0x811a3000, 0x91180485, + 0x05fc17f4, 0x05e9ff22, 0x0501f88f, 0x497b50c3, + 0x64034408, 0x4201d000, 0x003d0900, 0x0521fe83, + 0x59c40880, 0x4c040000, 0x59c408a3, 0x4c040000, + 0x497b4002, 0x0501f892, 0x0501f8ac, 0x4a03a005, + 0x10000000, 0x4a038805, 0x000000f0, 0x0501f8c6, + 0x0501f916, 0x0500006c, 0x59dc0806, 0x82040500, + 0x43200f80, 0x05000007, 0x82040500, 0x80000000, + 0x05000004, 0x4a034408, 0x0000dddd, 0x0501f062, 0x59d00806, 0x82040500, 0x43dc0700, 0x05000007, 0x82040500, 0x80000000, 0x05000004, 0x4a034408, - 0x0000dddd, 0x0501f027, 0x59a0020d, 0x800001c0, - 0x05000024, 0x59d00806, 0x4807c857, 0x8c04053e, - 0x05000020, 0x8c040504, 0x0500001e, 0x4a03a005, - 0x20000000, 0x82040d00, 0x43dc0700, 0x05000004, - 0x4a034408, 0x0000dddd, 0x0501f016, 0x904c0483, - 0x05e61c26, 0x404c0000, 0x0c01f001, 0x001039ba, - 0x001039bb, 0x001039c1, 0x05e5fc20, 0x80000040, - 0x40009800, 0x05fdff45, 0x0500000a, 0x05fdff43, - 0x0501f008, 0x80000040, 0x40009800, 0x59d00806, - 0x4807c857, 0x8c04053e, 0x05fe07e5, 0x05fdff3b, - 0x1c01f000, 0x59c00807, 0x82040500, 0x00f507c0, - 0x05000007, 0x82040500, 0x80000000, 0x05000004, - 0x4a034408, 0x0000dddd, 0x0501f02a, 0x59a0040d, - 0x800001c0, 0x05000027, 0x59c00807, 0x4807c857, - 0x8c04053e, 0x05000023, 0x59c00807, 0x4a038006, - 0x20000000, 0x82040d00, 0x00f507c0, 0x05000004, - 0x4a034408, 0x0000dddd, 0x0501f01a, 0x90480483, - 0x05e61bf6, 0x40480000, 0x0c01f001, 0x001039ea, - 0x001039eb, 0x001039f3, 0x05e5fbf0, 0x80000040, - 0x40009000, 0x42008800, 0x10000004, 0x05fdff53, - 0x0500000c, 0x05fdff51, 0x0501f00a, 0x80000040, - 0x40009000, 0x59c00807, 0x4807c857, 0x8c04053e, - 0x05fe07e2, 0x42008800, 0x10000004, 0x05fdff47, - 0x1c01f000, 0x492fc857, 0x4000a800, 0x4a03b805, - 0x20000000, 0x59dc0006, 0x4a03b805, 0x30000000, - 0x4813b800, 0x480fb801, 0x480bb802, 0x4857b803, - 0x4a03b805, 0x30000002, 0x59dc0006, 0x4a03b805, - 0x70000001, 0x59dc0006, 0x4a03b805, 0x10000000, - 0x59dc0006, 0x8c00053e, 0x05fc07fe, 0x4a03b805, - 0x20000000, 0x59dc0006, 0x82000500, 0x43200f80, - 0x05000005, 0x4a034408, 0x0000dddd, 0x80000580, - 0x0501f00b, 0x59dc2000, 0x59dc1801, 0x801c39c0, - 0x05000007, 0x4d2c0000, 0x05e5ff60, 0x5c000800, - 0x05e40bb6, 0x642a5a08, 0x492c0801, 0x1c01f000, - 0x49cbc857, 0x59c80003, 0x82000500, 0xffffe0ff, - 0x48039003, 0x61f00800, 0x05edfdc8, 0x4a03902c, - 0x00200000, 0x61d0b003, 0x59c8002c, 0x8c00052c, + 0x0000dddd, 0x0501f058, 0x59c80001, 0x800001c0, + 0x05fc07e8, 0x59c80018, 0x82000500, 0xf0000000, + 0x59c00808, 0x82040d00, 0x0fffffff, 0x80040540, + 0x48038008, 0x05edface, 0x59c00006, 0x4a038006, + 0x10000000, 0x59c00009, 0x82000d00, 0x00e00000, + 0x05020020, 0x6403900d, 0x59c80020, 0x82000500, + 0xff000000, 0x82000580, 0x32000000, 0x05020019, + 0x6407900d, 0x59c80020, 0x82000500, 0xff000000, + 0x82000580, 0xe1000000, 0x05020012, 0x6403900d, + 0x59c80020, 0x82000500, 0x00ffffff, 0x6403900d, + 0x59c80821, 0x82040d00, 0x00ffffff, 0x80040580, + 0x05020008, 0x59a80040, 0x80040580, 0x05020005, + 0x59c40005, 0x82000500, 0x000000f0, 0x05000005, + 0x4803c856, 0x0501f8da, 0x640750c3, 0x0501f002, + 0x0501f8e5, 0x61900000, 0x80000040, 0x0502001a, + 0x05f1ff7f, 0x0502000c, 0x59c40005, 0x82000500, + 0x000000f0, 0x0502000b, 0x0501f8c0, 0x0500000c, + 0x59c00007, 0x82000500, 0x000501c0, 0x0502000b, + 0x497b4408, 0x4a034408, 0x0000aaaa, 0x0501f00e, + 0x4a034408, 0x0000bbbb, 0x0501f00b, 0x4a034408, + 0x0000cccc, 0x0501f008, 0x4a034408, 0x0000dddd, + 0x0501f005, 0x59c00807, 0x90040d0c, 0x05fc07e3, + 0x0501f002, 0x640750c3, 0x0501f8c8, 0x0509fe4e, + 0x0529fec0, 0x0501f813, 0x4201d000, 0x000186a0, + 0x0521fe02, 0x5c000800, 0x480788a3, 0x5c000800, + 0x48078880, 0x59a800c3, 0x800001c0, 0x05f80401, + 0x05f9f450, 0x599c0201, 0x480350c4, 0x41780800, + 0x60401076, 0x0525fda2, 0x480b50c5, 0x1c01f000, + 0x0529fb1a, 0x59b800ea, 0x90000507, 0x90000583, + 0x05020002, 0x640770e8, 0x1c01f000, 0x600380ee, + 0x4a038006, 0x30000000, 0x59c00007, 0x8c00050a, + 0x05fe07fe, 0x59c00006, 0x59a0020a, 0x59a00c0a, + 0x900409c0, 0x80040d40, 0x48078001, 0x59a0020f, + 0x59a00c0f, 0x900409c0, 0x80040d40, 0x48078000, + 0x59a0020c, 0x48038002, 0x48038003, 0x48038005, + 0x497b9009, 0x59e00003, 0x82000540, 0x00008060, + 0x4803c003, 0x1c01f000, 0x41780800, 0x8007a0ca, + 0x83d3a400, 0x00007600, 0x61000800, 0x05f1f998, + 0x6407a00a, 0x4a03a005, 0x20000000, 0x59d00006, + 0x4a03a005, 0x30000000, 0x59d00006, 0x8c00050a, + 0x05fe07fe, 0x59d00005, 0x59a00211, 0x59a00c11, + 0x900409c0, 0x80040d40, 0x4807a001, 0x59a0020e, + 0x59a00c0e, 0x900409c0, 0x80040d40, 0x4807a000, + 0x59a0020c, 0x4803a003, 0x4803a002, 0x4803a008, + 0x1c01f000, 0x59a00002, 0x4803c857, 0x800001c0, + 0x0502004d, 0x59a800cf, 0x8c000500, 0x05020003, + 0x59a800c5, 0x48038880, 0x59c400a3, 0x82000540, + 0x00002008, 0x8400053a, 0x480388a3, 0x59c40008, + 0x82000500, 0xffffffe1, 0x82000540, 0x00000280, + 0x48038808, 0x59c80040, 0x84000534, 0x48039040, + 0x0501f8f6, 0x05020012, 0x59a80040, 0x800000d0, + 0x90000551, 0x48039120, 0x59a80040, 0x82000500, + 0x00ffffff, 0x82000540, 0x32000000, 0x48039121, + 0x4a039123, 0xe1290008, 0x59a80040, 0x82000500, + 0x00ffffff, 0x48039122, 0x0501f015, 0x59a80040, + 0x82000500, 0x000000ff, 0x900009c0, 0x840001c0, + 0x80040540, 0x90000540, 0x48039120, 0x59a80040, + 0x82000500, 0x000000ff, 0x82000540, 0x01000000, + 0x48039121, 0x4a039123, 0x08210008, 0x59a80040, + 0x82000500, 0x000000ff, 0x48039122, 0x497b9124, + 0x59a80cc6, 0x80040800, 0x480754c6, 0x900409c0, + 0x82040540, 0x0000aaaa, 0x48039125, 0x497b9126, + 0x497b9127, 0x59c80101, 0x0501f8c4, 0x05020004, + 0x4a039100, 0x0000e980, 0x0501f003, 0x4a039100, + 0x0000e9a0, 0x1c01f000, 0x90000541, 0x0502500b, + 0x4203e000, 0x80000000, 0x40e81000, 0x41780800, + 0x61900000, 0x0525fd06, 0x5994002f, 0x80080400, + 0x4803282f, 0x80000580, 0x1c01f000, 0x4d900000, + 0x4dd00000, 0x4da40000, 0x4d140000, 0x4cd80000, + 0x417a3000, 0x0529ffc5, 0x0529fcb9, 0x5c01b000, + 0x5c022800, 0x5c034800, 0x5c03a000, 0x5c032000, + 0x1c01f000, 0x59c80007, 0x8c000500, 0x05000002, + 0x64c3900d, 0x1c01f000, 0x4a038805, 0x00020000, + 0x60f00800, 0x05f1f90a, 0x4a038891, 0x0000ffff, + 0x59c80035, 0x48039035, 0x6503900d, 0x600380ee, + 0x05edf9af, 0x4a038006, 0x20000000, 0x608380ee, + 0x05edf9ab, 0x4a038006, 0x20000000, 0x4a03a005, + 0x20000000, 0x59d00006, 0x4a03a005, 0x30000000, + 0x59a00207, 0xb0000585, 0x05020004, 0x59a0000d, + 0x800001c0, 0x05000009, 0x4a03b805, 0x30000001, + 0x59dc0006, 0x4a03b805, 0x20000000, 0x59dc0806, + 0x8c04050a, 0x05fe07fe, 0x59d00806, 0x8c04050a, + 0x05fe07fe, 0x1c01f000, 0x0505f84f, 0x05f80357, + 0x58ee580d, 0x4d300000, 0x59a26001, 0x59a00000, + 0x4000b000, 0x80000000, 0x48034000, 0x592c0001, + 0x80000540, 0x0500001a, 0x40025800, 0x8058b040, + 0x05fe07fb, 0x58ec1007, 0x58ec1808, 0x592c0a09, + 0x4d2c0000, 0x58ec000d, 0x40025800, 0x592c0208, + 0x5c025800, 0x82000580, 0x00000103, 0x05000006, + 0x912c040a, 0x0509f9c6, 0x4a01d809, 0x00103782, + 0x0501f005, 0x912c040a, 0x0509f9c3, 0x4a01d809, + 0x00103782, 0x5c026000, 0x1c01f000, 0x58ec000d, + 0x40025800, 0x592c0208, 0x82000580, 0x00000103, + 0x05020004, 0x0009f810, 0x5c026000, 0x05f9f2f1, + 0x58ec000d, 0x40025800, 0x592c0408, 0x8400055e, + 0x48025c08, 0x61f6880f, 0x42003000, 0x00fffffd, + 0x050dff77, 0x59a26001, 0x05000005, 0x0009f810, + 0x497b4407, 0x5c026000, 0x05f9f325, 0x053dfeb7, + 0x05fc07fb, 0x4a01d809, 0x001037c4, 0x05fdf7e2, + 0x592c0009, 0x82000580, 0x01000000, 0x05000013, + 0x4d300000, 0x59a26001, 0x5930020d, 0x59301c0c, + 0x900001c0, 0x800c1d40, 0x5930040f, 0x5930120f, + 0x900001c0, 0x80081540, 0x592c0a09, 0x912c040a, + 0x0509f991, 0x4a01d809, 0x00103782, 0x64074000, + 0x5c026000, 0x1c01f000, 0x4d300000, 0x59a26001, + 0x4a034408, 0x0000cccc, 0x4933c857, 0x0531f906, + 0x5c026000, 0x05f9f30f, 0x4933c857, 0x4c300000, + 0x5930040d, 0x90000cb8, 0x05001003, 0x64e25a09, + 0x0501f003, 0x48025a09, 0x0501f009, 0x800409c0, + 0x05000007, 0x4c040000, 0x0509f953, 0x5c000800, + 0x05000004, 0x40040000, 0x05fdf7f3, 0x90000541, + 0x5c006000, 0x1c01f000, 0x59a00207, 0xb0000584, + 0x1c01f000, 0x490fc857, 0x8d0c050e, 0x05000007, + 0x05f1fbfe, 0x05020005, 0x600c0000, 0x05f1fdc6, + 0x600c0000, 0x05f1fd94, 0x59a00407, 0x90000507, + 0x0c01f001, 0x0010380e, 0x00103815, 0x0010383c, + 0x0010380d, 0x0010380d, 0x0010380d, 0x0010380d, + 0x0010380d, 0x05f9f2db, 0x0509fd5c, 0x60080810, + 0x05f1fe21, 0x90040542, 0x60080810, 0x05f1fe23, + 0x0501f00d, 0x60080810, 0x05f1fe1b, 0x90040541, + 0x60080810, 0x05f1fe1d, 0x60300848, 0x05f1fe16, + 0x82040540, 0x00000080, 0x60300848, 0x05f1fe17, + 0x0501f001, 0x0509fd49, 0x59c80040, 0x4c000000, + 0x59a80040, 0x4c000000, 0x59c400a3, 0x4c000000, + 0x59c40008, 0x4c000000, 0x0501f948, 0x05000049, + 0x0515fbac, 0x42006000, 0xfeffffff, 0x42006800, + 0x02000000, 0x050dfc1d, 0x42006000, 0xfdffffff, + 0x41786800, 0x050dfc19, 0x05f1fdf5, 0x59c408a4, + 0x90040d0f, 0x90040d80, 0x0500003a, 0x05e5fdda, + 0x8d0c050e, 0x05000023, 0x59c40006, 0x84000500, + 0x48038806, 0x0529fcd2, 0x497b8880, 0x59c400a3, + 0x82000500, 0xfcf8ffff, 0x480388a3, 0x6012d800, + 0x64078805, 0x05e5ffe4, 0x05f1fd42, 0x497b506b, + 0x64075078, 0x59a800aa, 0x84000540, 0x480350aa, + 0x4803c857, 0x4a01d809, 0x00103855, 0x6453507b, + 0x1c01f000, 0x42000000, 0x00111c8f, 0x50000800, + 0x84040d08, 0x44040000, 0x59a800aa, 0x84000500, + 0x480350aa, 0x4803c857, 0x8d0c050e, 0x05fa028d, + 0x0515fb38, 0x05020003, 0x645b4407, 0x05f9f280, + 0x916c0583, 0x05fa0287, 0x59c408a4, 0x90040d0f, + 0x90040580, 0x05fa0283, 0x0509fc60, 0x05fa0289, + 0x59c80040, 0x4c000000, 0x59a80040, 0x4c000000, + 0x59c400a3, 0x4c000000, 0x59c40008, 0x4c000000, + 0x59c40080, 0x4c000000, 0x59a00210, 0x59a0bc10, + 0x905cb9c0, 0x805cbd40, 0x41784800, 0x41785000, + 0x41785800, 0x41789000, 0x41789800, 0x05fdfe22, + 0x64034408, 0x0529f950, 0x598e600b, 0x0529fc4b, + 0x0529f94d, 0x417a3000, 0x0529fe8c, 0x59926005, + 0x813261c0, 0x05000007, 0x0529fb7d, 0x0529f916, + 0x0529f91b, 0x60027820, 0x60ba8000, 0x0525ffd0, + 0x811a3000, 0x91180485, 0x05fc17f4, 0x05e9fca0, + 0x4178c000, 0x497b4002, 0x0501f94d, 0x59a00408, + 0x82000580, 0x0000dddd, 0x05000082, 0x0501f98d, + 0x59a00408, 0x82000580, 0x0000dddd, 0x0500007d, + 0x59a0020d, 0x59a00c0d, 0x80040d40, 0x05000002, + 0x0501f9cf, 0x0501f9ce, 0x05fdfe43, 0x8060c1c0, + 0x0502001c, 0x0501fa62, 0x59a00408, 0x82000580, + 0x0000dddd, 0x0500006f, 0x05fdfe8c, 0x05020012, + 0x05f1fd43, 0x0502000e, 0x59c40004, 0x48034409, + 0x59c400a4, 0x4803420a, 0x59c40005, 0x4803440a, + 0x4a034209, 0x00000555, 0x645f4407, 0x05f9fa28, + 0x4203e000, 0x50000000, 0x0501f000, 0x60a85955, + 0x0501f061, 0x59c80001, 0x800001c0, 0x05fc07e6, + 0x59c80801, 0x800409c0, 0x05000006, 0x0501fa32, + 0x40240000, 0x80280540, 0x802c0540, 0x05020056, + 0x59a00002, 0x82000580, 0xfeedbeef, 0x05000004, + 0x42008800, 0x10000000, 0x0501f003, 0x42008800, + 0x10000004, 0x0501f9df, 0x4a034002, 0xfeedbeef, + 0x0501fa33, 0x59a00408, 0x82000580, 0x0000dddd, + 0x05000040, 0x0501fa5f, 0x59a00408, 0x82000580, + 0x0000dddd, 0x0500003b, 0x05fdfe73, 0x59c40005, + 0x8c000534, 0x05000003, 0x60ec5977, 0x0501f03a, + 0x05fdfe52, 0x05020006, 0x61305999, 0x485f4210, + 0x905cb9c0, 0x485f4410, 0x0501f033, 0x59a0040d, + 0x800001c0, 0x0500000e, 0x59a26000, 0x5930000f, + 0x800001c0, 0x05fe07b0, 0x59a26001, 0x5930080f, + 0x800409c0, 0x05fe07ac, 0x804891c0, 0x05fe07aa, + 0x804c99c0, 0x05fe07a8, 0x0501f867, 0x805cb840, + 0x05000005, 0x40240000, 0x80280540, 0x802c0540, + 0x0502001d, 0x42000000, 0x00030d40, 0x80000040, + 0x05020016, 0x59c00007, 0x82000500, 0x000501c0, + 0x05020010, 0x05f1fce6, 0x0502000e, 0x59c40004, + 0x48034409, 0x59c400a4, 0x4803420a, 0x59c40005, + 0x4803440a, 0x4a034209, 0x00000666, 0x645f4407, + 0x05f9f9cb, 0x4203e000, 0x50000000, 0x0501f000, + 0x617459bb, 0x0501f004, 0x59c00807, 0x90040d0c, + 0x05fc07e7, 0x05fdfe26, 0x59a0040d, 0x800001c0, + 0x05000002, 0x0501f840, 0x05fdfe34, 0x40240000, + 0x80280540, 0x802c0540, 0x05020003, 0x805cb9c0, + 0x05fe0768, 0x0509fbb4, 0x0529fc26, 0x05fdfd79, + 0x4201d000, 0x000186a0, 0x0521fb68, 0x5c000800, + 0x48078880, 0x5c000800, 0x48078808, 0x5c000800, + 0x480788a3, 0x5c000800, 0x48075040, 0x5c000800, + 0x48079040, 0x05e9fa1a, 0x59a00407, 0x90000503, + 0x90000582, 0x0500001c, 0x60080810, 0x05f1fcee, + 0x82040500, 0xfffffffc, 0x60080810, 0x05f1fcef, + 0x60300848, 0x05f1fce8, 0x82040500, 0xffffff7f, + 0x60300848, 0x05f1fce9, 0x0515fa56, 0x05020003, + 0x0515fdf6, 0x0501f00c, 0x4a0388a7, 0x0000f7f7, + 0x42006000, 0xbeffffff, 0x42006800, 0x80018000, + 0x050dfaf6, 0x42006000, 0xfffeffff, 0x41786800, + 0x050dfaf2, 0x402c0000, 0x80280540, 0x80240540, + 0x05f80140, 0x48274407, 0x482b4208, 0x482f4408, + 0x05f9f190, 0x59a26000, 0x813261c0, 0x0500000a, + 0x59325809, 0x812e59c0, 0x05000007, 0x0009f810, + 0x05e9f866, 0x59a26001, 0x59325809, 0x0009f810, + 0x05e9f862, 0x1c01f000, 0x61bc0801, 0x05f1f9ff, + 0x4a035040, 0x000000ef, 0x59c400a3, 0x8400055a, + 0x8400053a, 0x480388a3, 0x05f1fa68, 0x05020006, + 0x60040000, 0x05f1fc48, 0x60040000, 0x05f1fc16, + 0x0501f013, 0x05f1fa67, 0x05020006, 0x60000000, + 0x05f1fc41, 0x60000000, 0x05f1fc0f, 0x0501f00c, + 0x05f1fa66, 0x05020006, 0x60080000, 0x05f1fc3a, + 0x60080000, 0x05f1fc08, 0x0501f005, 0x600c0000, + 0x05f1fc35, 0x600c0000, 0x05f1fc03, 0x6051d000, + 0x0521fadc, 0x59c40008, 0x82000500, 0xffffffe1, + 0x82000540, 0x00000280, 0x48038808, 0x4a0388a7, + 0x0000f8f7, 0x4a038805, 0x04000001, 0x42006000, + 0xbe20bfff, 0x42006800, 0x80018000, 0x050dfaab, + 0x42006000, 0xfffeffff, 0x41786800, 0x050dfaa7, + 0x6020b027, 0x6051d000, 0x4c580000, 0x0521fac5, + 0x05f1fc47, 0x5c00b000, 0x05000006, 0x8058b040, + 0x05fe07f9, 0x4a034209, 0x00000111, 0x0501f02e, + 0x59c40005, 0x8c000534, 0x05020008, 0x4a034209, + 0x00000222, 0x59c400a4, 0x9000050f, 0x90000588, + 0x05020025, 0x497b4209, 0x42006000, 0x00020000, + 0x050dfa93, 0x6191d000, 0x0521faae, 0x42006000, + 0xfeffffff, 0x42006800, 0x02000000, 0x050dfa87, + 0x42006000, 0xfdffffff, 0x41786800, 0x050dfa83, + 0x59c40001, 0x82000500, 0x00018000, 0x82000580, + 0x00018000, 0x59c400a3, 0x05020004, 0x82000540, + 0x00001000, 0x0501f003, 0x82000500, 0xffffefff, + 0x480388a3, 0x4a038805, 0x04000001, 0x59c400a4, + 0x9000050f, 0x90000580, 0x05000004, 0x4a034209, + 0x00000333, 0x90000541, 0x1c01f000, 0x4803c856, + 0x600380ee, 0x05e9ff2e, 0x59c00006, 0x59a0040d, + 0x800001c0, 0x05000037, 0x59a03c0d, 0x59a0020a, + 0x59a01c0a, 0x900c19c0, 0x800c1d40, 0x59a0020f, + 0x59a0240f, 0x901021c0, 0x80102540, 0x59a0020c, + 0x82000500, 0x0000fffc, 0x59a0140c, 0x900811c0, + 0x80081540, 0x480b8003, 0x052dff1e, 0x05e40c1a, + 0x49334000, 0x05e5ffbc, 0x64625a08, 0x4a025809, + 0x00abcdef, 0x492e6009, 0x492e600d, 0x481e600f, + 0x6412600e, 0x912c0415, 0x4802600c, 0x60301000, + 0x901c0d81, 0x05000008, 0x801c3840, 0x0501f965, + 0x59a00408, 0x82000580, 0x0000dddd, 0x05000011, + 0x0501f004, 0x41783800, 0x0501f95e, 0x0501f00d, + 0x901c0c85, 0x05001004, 0x40043800, 0x60f01000, + 0x0501f005, 0x80001580, 0x9008140c, 0x801c3840, + 0x05fe07fe, 0x912c0409, 0x0501f952, 0x05fe07f5, + 0x497b9009, 0x59e00003, 0x82000540, 0x00008060, + 0x4803c003, 0x4a038009, 0x00e00000, 0x1c01f000, + 0x4803c856, 0x41780800, 0x8007a0ca, 0x83d3a400, + 0x00007600, 0x61000800, 0x05edfe39, 0x6407a00a, + 0x4a03a005, 0x20000000, 0x59d00006, 0x4a03a005, + 0x30000000, 0x59d00006, 0x8c00050a, 0x05fe07fe, + 0x59d00005, 0x59a0020d, 0x800001c0, 0x05000037, + 0x59a03a0d, 0x59a00211, 0x59a01c11, 0x900c19c0, + 0x800c1d40, 0x59a0020e, 0x59a0240e, 0x901021c0, + 0x80102540, 0x59a0120c, 0x82081500, 0x0000fffc, + 0x59a0040c, 0x900001c0, 0x80081540, 0x480ba003, + 0x052dfecc, 0x05e40bc8, 0x49334001, 0x05e5ff6a, + 0x64625a08, 0x4a025809, 0x00abcdef, 0x492e6009, + 0x492e600d, 0x481e600f, 0x6412600e, 0x912c0415, + 0x4802600c, 0x60301000, 0x901c0d81, 0x05000008, + 0x801c3840, 0x0501f913, 0x59a00408, 0x82000580, + 0x0000dddd, 0x05000011, 0x0501f004, 0x41783800, + 0x0501f90c, 0x0501f00d, 0x901c0c85, 0x05001004, + 0x40043800, 0x60f01000, 0x0501f005, 0x80001580, + 0x9008140c, 0x801c3840, 0x05fe07fe, 0x912c0409, + 0x0501f900, 0x05fe07f5, 0x1c01f000, 0x4803c856, + 0x59a0020d, 0x800001c0, 0x05000020, 0x904c0582, + 0x0500003b, 0x59a26001, 0x5930380f, 0x801c39c0, + 0x05000037, 0x801c3840, 0x481e600f, 0x5932580d, + 0x5930080c, 0x50042000, 0x58041801, 0x58041002, + 0x82081500, 0xfffffffc, 0x5930000e, 0x80000000, + 0x90000d85, 0x05020008, 0x497a600e, 0x592e5801, + 0x812e59c0, 0x05000018, 0x492e600d, 0x912c0c09, + 0x0501f004, 0x4802600e, 0x5930080c, 0x90040c03, + 0x4806600c, 0x0501f010, 0x59a0120c, 0x82081500, + 0x0000fffc, 0x59a0040c, 0x900001c0, 0x80081540, + 0x480ba003, 0x59a0020e, 0x59a0240e, 0x901021c0, + 0x80102540, 0x59a00211, 0x59a01c11, 0x900c19c0, + 0x800c1d40, 0x6061d075, 0x0521f9f4, 0x6423a00a, + 0x480ba002, 0x59a800c4, 0x4803a008, 0x4813a000, + 0x480fa001, 0x59d00805, 0x4a03a005, 0x10000000, + 0x05e45b65, 0x804c9800, 0x90000541, 0x1c01f000, + 0x4847c857, 0x59a0040d, 0x800001c0, 0x05000020, + 0x90480582, 0x0500003f, 0x59a26000, 0x5930380f, + 0x801c39c0, 0x0500003b, 0x801c3840, 0x481e600f, + 0x5932580d, 0x5930080c, 0x50042000, 0x58041801, + 0x58041002, 0x82081500, 0xfffffffc, 0x5930000e, + 0x80000000, 0x90000d85, 0x05020008, 0x497a600e, + 0x592e5801, 0x812e59c0, 0x0500001b, 0x492e600d, + 0x912c0c09, 0x0501f004, 0x4802600e, 0x5930080c, + 0x90040c03, 0x4806600c, 0x0501f013, 0x82440580, + 0x10000000, 0x0502001f, 0x59a0020f, 0x59a0240f, + 0x901021c0, 0x80102540, 0x59a0020a, 0x59a01c0a, + 0x900c19c0, 0x800c1d40, 0x59a0020c, 0x82000500, + 0x0000fffc, 0x59a0140c, 0x900811c0, 0x80081540, + 0x480b8003, 0x48138000, 0x480f8001, 0x480b8002, + 0x59c80018, 0x82000500, 0xf0000000, 0x59c02008, + 0x82102500, 0x0fffffff, 0x80100540, 0x48038008, + 0x59c00806, 0x48478006, 0x80489000, 0x9060c541, + 0x1c01f000, 0x59c00009, 0x4803c857, 0x82000d00, + 0x00e00000, 0x0500000d, 0x485f4210, 0x905cb9c0, + 0x485f4410, 0x8c00052e, 0x05000002, 0x80285000, + 0x8c00052c, 0x05000002, 0x80244800, 0x8c00052a, + 0x05000002, 0x802c5800, 0x1c01f000, 0x59d00806, + 0x82040500, 0x43dc0700, 0x05000007, 0x82040500, + 0x80000000, 0x05000004, 0x4a034408, 0x0000dddd, + 0x0501f027, 0x59a0020d, 0x800001c0, 0x05000024, + 0x59d00806, 0x4807c857, 0x8c04053e, 0x05000020, + 0x8c040504, 0x0500001e, 0x4a03a005, 0x20000000, + 0x82040d00, 0x43dc0700, 0x05000004, 0x4a034408, + 0x0000dddd, 0x0501f016, 0x904c0483, 0x05e61aee, + 0x404c0000, 0x0c01f001, 0x00103b2d, 0x00103b2e, + 0x00103b34, 0x05e5fae8, 0x80000040, 0x40009800, + 0x05fdff43, 0x0500000a, 0x05fdff41, 0x0501f008, + 0x80000040, 0x40009800, 0x59d00806, 0x4807c857, + 0x8c04053e, 0x05fe07e5, 0x05fdff39, 0x1c01f000, + 0x59c00807, 0x82040500, 0x00f507c0, 0x05000007, + 0x82040500, 0x80000000, 0x05000004, 0x4a034408, + 0x0000dddd, 0x0501f02a, 0x59a0040d, 0x800001c0, + 0x05000027, 0x59c00807, 0x4807c857, 0x8c04053e, + 0x05000023, 0x59c00807, 0x4a038006, 0x20000000, + 0x82040d00, 0x00f507c0, 0x05000004, 0x4a034408, + 0x0000dddd, 0x0501f01a, 0x90480483, 0x05e61abe, + 0x40480000, 0x0c01f001, 0x00103b5d, 0x00103b5e, + 0x00103b66, 0x05e5fab8, 0x80000040, 0x40009000, + 0x42008800, 0x10000004, 0x05fdff52, 0x0500000c, + 0x05fdff50, 0x0501f00a, 0x80000040, 0x40009000, + 0x59c00807, 0x4807c857, 0x8c04053e, 0x05fe07e2, + 0x42008800, 0x10000004, 0x05fdff46, 0x1c01f000, + 0x492fc857, 0x4000a800, 0x4a03b805, 0x20000000, + 0x59dc0006, 0x4a03b805, 0x30000000, 0x4813b800, + 0x480fb801, 0x480bb802, 0x4857b803, 0x4a03b805, + 0x30000002, 0x59dc0006, 0x4a03b805, 0x70000001, + 0x59dc0006, 0x4a03b805, 0x10000000, 0x59dc0006, + 0x8c00053e, 0x05fc07fe, 0x4a03b805, 0x20000000, + 0x59dc0006, 0x82000500, 0x43200f80, 0x05000005, + 0x4a034408, 0x0000dddd, 0x80000580, 0x0501f00b, + 0x59dc2000, 0x59dc1801, 0x801c39c0, 0x05000007, + 0x4d2c0000, 0x05e5fe24, 0x5c000800, 0x05e40a7e, + 0x642a5a08, 0x492c0801, 0x1c01f000, 0x49cbc857, + 0x59c80003, 0x82000500, 0xffffe0ff, 0x48039003, + 0x61f00800, 0x05edfcc6, 0x4a03902c, 0x00200000, + 0x61d0b003, 0x59c8002c, 0x8c00052c, 0x05000006, + 0x8058b040, 0x05fe07fc, 0x600c0080, 0x41781000, + 0x0501f148, 0x640b50cd, 0x42006000, 0x00103d09, + 0x50301000, 0x480bc857, 0x41784800, 0x4a03902d, + 0x00008000, 0x61d0b003, 0x59c8002c, 0x8c000534, 0x05000006, 0x8058b040, 0x05fe07fc, 0x600c0080, - 0x41781000, 0x0501f148, 0x640b50c8, 0x42006000, - 0x00103b96, 0x50301000, 0x480bc857, 0x41784800, - 0x4a03902d, 0x00008000, 0x61d0b003, 0x59c8002c, - 0x8c000534, 0x05000006, 0x8058b040, 0x05fe07fc, - 0x600c0080, 0x41781000, 0x0501f137, 0x0501f8ab, - 0x80244800, 0x82081400, 0x02020202, 0x82240580, - 0x000003b1, 0x05fe07fa, 0x0501f93f, 0x41784800, - 0x50301000, 0x0501f8cc, 0x80244800, 0x82081400, - 0x02020202, 0x82240580, 0x000003b1, 0x05fe07fa, - 0x80306000, 0x82300580, 0x00103b98, 0x05fe07de, - 0x59a808c7, 0x800409c0, 0x05000005, 0x60100080, - 0x60081000, 0x59a818c6, 0x0501f11b, 0x42006000, - 0x00103b96, 0x644350c8, 0x50301000, 0x480bc857, - 0x41784800, 0x4a03902d, 0x00000800, 0x0501f887, + 0x41781000, 0x0501f137, 0x0501f8ab, 0x80244800, + 0x82081400, 0x02020202, 0x82240580, 0x000003b1, + 0x05fe07fa, 0x0501f93f, 0x41784800, 0x50301000, + 0x0501f8cc, 0x80244800, 0x82081400, 0x02020202, + 0x82240580, 0x000003b1, 0x05fe07fa, 0x80306000, + 0x82300580, 0x00103d0b, 0x05fe07de, 0x59a808cc, + 0x800409c0, 0x05000005, 0x60100080, 0x60081000, + 0x59a818cb, 0x0501f11b, 0x42006000, 0x00103d09, + 0x644350cd, 0x50301000, 0x480bc857, 0x41784800, + 0x4a03902d, 0x00000800, 0x0501f887, 0x80244800, + 0x82081400, 0x02020202, 0x90240598, 0x05fe07fb, + 0x0501f91c, 0x41784800, 0x50301000, 0x0501f8a9, 0x80244800, 0x82081400, 0x02020202, 0x90240598, - 0x05fe07fb, 0x0501f91c, 0x41784800, 0x50301000, - 0x0501f8a9, 0x80244800, 0x82081400, 0x02020202, - 0x90240598, 0x05fe07fb, 0x80306000, 0x82300580, - 0x00103b98, 0x05fe07e9, 0x59a808c7, 0x800409c0, - 0x05000005, 0x60100080, 0x60401000, 0x59a818c6, - 0x0501f0f9, 0x42006000, 0x00103b96, 0x642350c8, - 0x50301000, 0x480bc857, 0x41784800, 0x4a03902d, - 0x00000400, 0x0501f865, 0x80244800, 0x82081400, - 0x03030303, 0x82240580, 0x00000088, 0x05fe07fa, - 0x0501f8f9, 0x41784800, 0x50301000, 0x0501f886, - 0x80244800, 0x82081400, 0x03030303, 0x82240580, - 0x00000088, 0x05fe07fa, 0x80306000, 0x82300580, - 0x00103b98, 0x05fe07e7, 0x59a808c7, 0x800409c0, - 0x05000005, 0x60100080, 0x60201000, 0x59a818c6, - 0x0501f0d5, 0x42006000, 0x00103b96, 0x648350c8, - 0x50301000, 0x480bc857, 0x41784800, 0x4a03902d, - 0x00002000, 0x61d0b003, 0x59c8002c, 0x8c000530, - 0x05000006, 0x8058b040, 0x05fe07fc, 0x600c0080, - 0x41781000, 0x0501f0c4, 0x59c8002c, 0x82000500, - 0xffe0ffff, 0x82080d00, 0x001f0000, 0x80040540, - 0x4803902c, 0x0501f831, 0x80244800, 0x82081400, - 0x02020202, 0x82240580, 0x00000110, 0x05fe07fa, - 0x0501f8c5, 0x41784800, 0x50301000, 0x0501f852, - 0x59c80034, 0x82080d00, 0x001f0000, 0x82000500, - 0x001f0000, 0x80040580, 0x05000006, 0x59a800c7, - 0x80000000, 0x480350c7, 0x40240000, 0x480350c6, - 0x80244800, 0x82081400, 0x02020202, 0x82240580, - 0x00000110, 0x05fe07ee, 0x80306000, 0x82300580, - 0x00103b98, 0x05fe07cb, 0x59a808c7, 0x800409c0, - 0x05000004, 0x60100080, 0x60801000, 0x59a818c6, - 0x59c80803, 0x82040d40, 0x00001f00, 0x48079003, - 0x59c8002c, 0x8400052a, 0x4803902c, 0x61f00800, - 0x05edfd02, 0x05f5f703, 0x59c8002c, 0x82000500, - 0xffff0000, 0x82080d00, 0x0000ffff, 0x80040540, - 0x4803902c, 0x480b9028, 0x480b9029, 0x59a800c8, - 0x90004584, 0x05000007, 0x90000590, 0x05020003, - 0x80080920, 0x4807903a, 0x480b902a, 0x480b902b, - 0x59c8002d, 0x82000500, 0xfffffc00, 0x80240540, - 0x4803902d, 0x61d0b003, 0x59c8002c, 0x82000500, - 0x18000000, 0x05000006, 0x8058b040, 0x05fe07fb, - 0x600c0080, 0x41781000, 0x0501f06b, 0x6407902e, - 0x61d0b003, 0x59c8002e, 0x8c000500, 0x05000005, - 0x8058b040, 0x05fe07fc, 0x600c0080, 0x0501f062, - 0x1c01f000, 0x41783800, 0x59c8002d, 0x82000500, - 0xfffffc00, 0x80240d40, 0x4807902d, 0x61d0b003, - 0x59c8002c, 0x82000500, 0x18000000, 0x05000006, - 0x8058b040, 0x05fe07fb, 0x600c0080, 0x41781000, - 0x0501f051, 0x59c81830, 0x59c80030, 0x800c0d80, - 0x05fe07fd, 0x80080d80, 0x05000005, 0x4803c857, - 0x480bc857, 0x4827c857, 0x801c3800, 0x59c82031, - 0x59c80031, 0x80100d80, 0x05fe07fd, 0x80080d80, + 0x05fe07fb, 0x80306000, 0x82300580, 0x00103d0b, + 0x05fe07e9, 0x59a808cc, 0x800409c0, 0x05000005, + 0x60100080, 0x60401000, 0x59a818cb, 0x0501f0f9, + 0x42006000, 0x00103d09, 0x642350cd, 0x50301000, + 0x480bc857, 0x41784800, 0x4a03902d, 0x00000400, + 0x0501f865, 0x80244800, 0x82081400, 0x03030303, + 0x82240580, 0x00000088, 0x05fe07fa, 0x0501f8f9, + 0x41784800, 0x50301000, 0x0501f886, 0x80244800, + 0x82081400, 0x03030303, 0x82240580, 0x00000088, + 0x05fe07fa, 0x80306000, 0x82300580, 0x00103d0b, + 0x05fe07e7, 0x59a808cc, 0x800409c0, 0x05000005, + 0x60100080, 0x60201000, 0x59a818cb, 0x0501f0d5, + 0x42006000, 0x00103d09, 0x648350cd, 0x50301000, + 0x480bc857, 0x41784800, 0x4a03902d, 0x00002000, + 0x61d0b003, 0x59c8002c, 0x8c000530, 0x05000006, + 0x8058b040, 0x05fe07fc, 0x600c0080, 0x41781000, + 0x0501f0c4, 0x59c8002c, 0x82000500, 0xffe0ffff, + 0x82080d00, 0x001f0000, 0x80040540, 0x4803902c, + 0x0501f831, 0x80244800, 0x82081400, 0x02020202, + 0x82240580, 0x00000110, 0x05fe07fa, 0x0501f8c5, + 0x41784800, 0x50301000, 0x0501f852, 0x59c80034, + 0x82080d00, 0x001f0000, 0x82000500, 0x001f0000, + 0x80040580, 0x05000006, 0x59a800cc, 0x80000000, + 0x480350cc, 0x40240000, 0x480350cb, 0x80244800, + 0x82081400, 0x02020202, 0x82240580, 0x00000110, + 0x05fe07ee, 0x80306000, 0x82300580, 0x00103d0b, + 0x05fe07cb, 0x59a808cc, 0x800409c0, 0x05000004, + 0x60100080, 0x60801000, 0x59a818cb, 0x59c80803, + 0x82040d40, 0x00001f00, 0x48079003, 0x59c8002c, + 0x8400052a, 0x4803902c, 0x61f00800, 0x05edfc00, + 0x05f5f638, 0x59c8002c, 0x82000500, 0xffff0000, + 0x82080d00, 0x0000ffff, 0x80040540, 0x4803902c, + 0x480b9028, 0x480b9029, 0x59a800cd, 0x90004584, + 0x05000007, 0x90000590, 0x05020003, 0x80080920, + 0x4807903a, 0x480b902a, 0x480b902b, 0x59c8002d, + 0x82000500, 0xfffffc00, 0x80240540, 0x4803902d, + 0x61d0b003, 0x59c8002c, 0x82000500, 0x18000000, + 0x05000006, 0x8058b040, 0x05fe07fb, 0x600c0080, + 0x41781000, 0x0501f06b, 0x6407902e, 0x61d0b003, + 0x59c8002e, 0x8c000500, 0x05000005, 0x8058b040, + 0x05fe07fc, 0x600c0080, 0x0501f062, 0x1c01f000, + 0x41783800, 0x59c8002d, 0x82000500, 0xfffffc00, + 0x80240d40, 0x4807902d, 0x61d0b003, 0x59c8002c, + 0x82000500, 0x18000000, 0x05000006, 0x8058b040, + 0x05fe07fb, 0x600c0080, 0x41781000, 0x0501f051, + 0x59c81830, 0x59c80030, 0x800c0d80, 0x05fe07fd, + 0x80080d80, 0x05000005, 0x4803c857, 0x480bc857, + 0x4827c857, 0x801c3800, 0x59c82031, 0x59c80031, + 0x80100d80, 0x05fe07fd, 0x80080d80, 0x05000005, + 0x4803c857, 0x480bc857, 0x4827c857, 0x801c3800, + 0x59a800cd, 0x90004584, 0x05000027, 0x61fc41ff, + 0x90000590, 0x05020003, 0x42004000, 0x7f7f7f7f, + 0x59c82832, 0x59c80032, 0x80140d80, 0x05fe07fd, + 0x80080d80, 0x05000005, 0x4803c857, 0x480bc857, + 0x4827c857, 0x801c3800, 0x59c83033, 0x59c80033, + 0x80180d80, 0x05fe07fd, 0x80080d80, 0x05000005, + 0x4803c857, 0x480bc857, 0x4827c857, 0x801c3800, + 0x59c80034, 0x59c80834, 0x80040d80, 0x05fe07fd, + 0x80080d80, 0x40200000, 0x80040d00, 0x05000012, + 0x4803c857, 0x480bc857, 0x4827c857, 0x801c3800, + 0x0501f00d, 0x59c80034, 0x59c80834, 0x80040d80, + 0x05fe07fd, 0x80080d80, 0x82040d00, 0x000000ff, 0x05000005, 0x4803c857, 0x480bc857, 0x4827c857, - 0x801c3800, 0x59a800c8, 0x90004584, 0x05000027, - 0x61fc41ff, 0x90000590, 0x05020003, 0x42004000, - 0x7f7f7f7f, 0x59c82832, 0x59c80032, 0x80140d80, - 0x05fe07fd, 0x80080d80, 0x05000005, 0x4803c857, - 0x480bc857, 0x4827c857, 0x801c3800, 0x59c83033, - 0x59c80033, 0x80180d80, 0x05fe07fd, 0x80080d80, - 0x05000005, 0x4803c857, 0x480bc857, 0x4827c857, - 0x801c3800, 0x59c80034, 0x59c80834, 0x80040d80, - 0x05fe07fd, 0x80080d80, 0x40200000, 0x80040d00, - 0x05000012, 0x4803c857, 0x480bc857, 0x4827c857, - 0x801c3800, 0x0501f00d, 0x59c80034, 0x59c80834, - 0x80040d80, 0x05fe07fd, 0x80080d80, 0x82040d00, - 0x000000ff, 0x05000005, 0x4803c857, 0x480bc857, - 0x4827c857, 0x801c3800, 0x801c39c0, 0x05000005, - 0x59a800c7, 0x801c0400, 0x480350c7, 0x482750c6, - 0x1c01f000, 0x48034207, 0x48074407, 0x480b4208, - 0x480f4408, 0x48134209, 0x48174409, 0x59c80003, - 0x82000540, 0x00001f00, 0x48039003, 0x59c8002c, - 0x8400052a, 0x4803902c, 0x61f00800, 0x05edfc67, - 0x05f5f66b, 0x42000000, 0x00600000, 0x80000040, - 0x05fe07ff, 0x1c01f000, 0x11121111, 0x44454442, - 0x0505fc07, 0x05020003, 0x640b4407, 0x05f5f6a0, - 0x42005000, 0x0010e511, 0x50285000, 0x482b4000, - 0x4200a000, 0x0010e512, 0x59a00408, 0x59a01208, - 0x900811c0, 0x80081540, 0x59a0040a, 0x59a01a0a, - 0x900c19c0, 0x800c1d40, 0x42024800, 0x0010e512, - 0x912cac08, 0x6018b000, 0x9050040d, 0x48034001, - 0x0549fcf7, 0x60180800, 0x800400c4, 0x80080c00, - 0x48074002, 0x900c0c40, 0x48074003, 0x60180800, - 0x912c0408, 0x0505fc0f, 0x4a01d809, 0x00103bbd, - 0x1c01f000, 0x0501fa9e, 0x05f40674, 0x59a0a001, - 0x59a01000, 0x80081040, 0x480b4000, 0x05000005, - 0x59a01002, 0x59a01803, 0x58ee580d, 0x05fdf7e5, - 0x42000800, 0x0010e511, 0x50040800, 0x48074407, - 0x05f5f62c, 0x0505fbd2, 0x05020003, 0x640b4407, - 0x05f5f66b, 0x59a00c0b, 0x42000000, 0x0010e511, - 0x50000000, 0x80040480, 0x05f6166a, 0x8204a400, - 0x0010d17b, 0x5050a000, 0x912cac08, 0x6018b000, - 0x0549fccb, 0x59a00408, 0x59a01208, 0x900811c0, + 0x801c3800, 0x801c39c0, 0x05000005, 0x59a800cc, + 0x801c0400, 0x480350cc, 0x482750cb, 0x1c01f000, + 0x48034207, 0x48074407, 0x480b4208, 0x480f4408, + 0x48134209, 0x48174409, 0x59c80003, 0x82000540, + 0x00001f00, 0x48039003, 0x59c8002c, 0x8400052a, + 0x4803902c, 0x61f00800, 0x05edfb65, 0x05f5f5a0, + 0x42000000, 0x00600000, 0x80000040, 0x05fe07ff, + 0x1c01f000, 0x11121111, 0x44454442, 0x0505fc36, + 0x05020003, 0x640b4407, 0x05f5f5d5, 0x42005000, + 0x001124b5, 0x50285000, 0x482b4000, 0x4200a000, + 0x001124b6, 0x59a00408, 0x59a01208, 0x900811c0, 0x80081540, 0x59a0040a, 0x59a01a0a, 0x900c19c0, - 0x800c1d40, 0x60180800, 0x912c0408, 0x0505f3e1, - 0x59a00c0b, 0x800409c0, 0x05f40656, 0x900404a1, - 0x05f61654, 0x90040491, 0x05001002, 0x60400800, - 0x59a00209, 0x59a01408, 0x900811c0, 0x80081540, - 0x59a00208, 0x59a01c07, 0x900c19c0, 0x800c1d40, - 0x0505fba7, 0x05000005, 0x0505fbc5, 0x4a01d809, - 0x00103c00, 0x1c01f000, 0x640b4407, 0x05f5f63c, - 0x0501fa5b, 0x05f40631, 0x59a00c0b, 0x90040491, - 0x05001002, 0x60400800, 0x59a0040c, 0x59a0120c, - 0x900811c0, 0x80081540, 0x59a0020a, 0x59a01c09, - 0x900c19c0, 0x800c1d40, 0x58ec0003, 0x0505fbb9, - 0x4a01d809, 0x00103c13, 0x1c01f000, 0x0501fa48, - 0x05f4061e, 0x59a00c0b, 0x90040491, 0x05f415e1, - 0x90040c90, 0x59a00209, 0x59a01408, 0x900811c0, - 0x80081540, 0x59a00208, 0x59a01c07, 0x900c19c0, - 0x800c1d40, 0xb0081400, 0x58ec0003, 0x0505fb9c, - 0x4a01d809, 0x00103c27, 0x1c01f000, 0x0501fa34, - 0x05f4060a, 0x59a0040b, 0x90000c90, 0x59a0040c, - 0x59a0120c, 0x900811c0, 0x80081540, 0x59a0020a, - 0x59a01c09, 0x900c19c0, 0x800c1d40, 0xb0081400, - 0x58ec0003, 0x0505fb93, 0x4a01d809, 0x001029f5, - 0x1c01f000, 0x48efc857, 0x59a00208, 0x59a01408, - 0x900001c0, 0x80081540, 0x59a0020a, 0x59a01c0a, - 0x900001c0, 0x800c1d40, 0x59a00407, 0x48034000, - 0x480b4001, 0x480f4002, 0x0505fb59, 0x05020003, - 0x640b4407, 0x05f5f5f2, 0x60400800, 0x0505fb74, - 0x4a01d809, 0x00103c4f, 0x1c01f000, 0x0501fa0c, - 0x05f405e2, 0x58ee580d, 0x48efc857, 0x49a3c857, - 0x492fc857, 0x592c0a08, 0x80040910, 0x05020003, - 0x64674407, 0x05f5f5e2, 0x4805d80c, 0x0501f005, - 0x0501f9ff, 0x05f405d5, 0x48efc857, 0x49a3c857, - 0x48efc857, 0x49a3c857, 0x58ec000c, 0x80000040, - 0x0500000d, 0x4801d80c, 0x0505fb39, 0x05020003, - 0x640b4407, 0x05f5f5d2, 0x60400800, 0x58ec1007, - 0x58ec1808, 0x0505fb52, 0x4a01d809, 0x00103c5c, - 0x1c01f000, 0x58ee580d, 0x48efc857, 0x49a3c857, - 0x492fc857, 0x492f3000, 0x592c0408, 0x8400055e, - 0x48025c08, 0x4a01d809, 0x00103c7c, 0x1c01f000, - 0x4d2c0000, 0x58ee580d, 0x48efc857, 0x49a3c857, - 0x492fc857, 0x592c0408, 0x8400051e, 0x48025c08, - 0x59a00000, 0x59a01001, 0x59a01802, 0x80081400, - 0x900c1c40, 0x912c0408, 0x60400800, 0x5c025800, - 0x0505f33c, 0x8d0c050e, 0x05000003, 0x64074407, - 0x05f5f5ab, 0x916c0583, 0x05000003, 0x641f4407, - 0x05f5f5a7, 0x59a0320c, 0x82183500, 0x000000ff, - 0x59a28c07, 0x0505fbec, 0x05f605a6, 0x050dfdde, - 0x05f605a4, 0x83440580, 0x000007fd, 0x05000005, - 0x050dfd85, 0x05000003, 0x64274407, 0x05f5f598, - 0x0505fafb, 0x05020003, 0x640b4407, 0x05f5f594, - 0x801831c0, 0x05000007, 0x412c0800, 0x0505faf4, - 0x05020003, 0x640b4407, 0x05f5f58d, 0x40065800, - 0x4a025c08, 0x00008000, 0x497a5a08, 0x0539f8cf, - 0x05020003, 0x640f4407, 0x05f5f585, 0x4a01d809, - 0x00103cba, 0x1c01f000, 0x592c0009, 0x82000580, - 0x01000000, 0x05020003, 0x64134407, 0x05f5f57c, - 0x592c040a, 0x82002d00, 0x0000ff00, 0x82000500, - 0x000000ff, 0x80000904, 0x80040800, 0x90040486, - 0x05001002, 0x60140800, 0x4c500000, 0x4c540000, - 0x4c580000, 0x912ca40a, 0x4050a800, 0x4004b000, - 0x0549fc12, 0x59a00408, 0x59a01208, 0x900811c0, - 0x80081540, 0x59a0040a, 0x59a01a0a, 0x900c19c0, - 0x800c1d40, 0x912c040a, 0x4c140000, 0x0505faed, - 0x5c002800, 0x801429c0, 0x05000003, 0x4a01d809, - 0x00103ce5, 0x5c00b000, 0x5c00a800, 0x5c00a000, - 0x1c01f000, 0x0501f976, 0x05f4054c, 0x58ee580d, - 0x812e59c0, 0x05e408f1, 0x592c000a, 0x82000500, - 0xff000000, 0x80000904, 0x800409c0, 0x05f40509, - 0x4807c857, 0x9004048e, 0x05001002, 0x60340800, - 0x592e5801, 0x812e59c0, 0x05e408e4, 0x4c500000, - 0x4c540000, 0x4c580000, 0x912ca409, 0x4050a800, - 0x4004b000, 0x0549fbe5, 0x5c00b000, 0x5c00a800, - 0x5c00a000, 0x58ec1007, 0x58ec1808, 0x912c0409, - 0x0505f2c4, 0x0505fa9a, 0x05020003, 0x640b4407, - 0x05f5f533, 0x59a00c07, 0x82040500, 0x0000ff00, - 0x840001c0, 0x9000148e, 0x05f61532, 0x0c01f001, - 0x00103d1e, 0x00103d24, 0x00103d2a, 0x00103d2b, - 0x00103d2f, 0x00103d49, 0x00103d4d, 0x00103d36, - 0x00103d3b, 0x00103d41, 0x00103d2a, 0x00103d2a, - 0x00103d2a, 0x00103d2a, 0x60340800, 0x42003800, - 0x00103d76, 0x4a034000, 0x0010dd46, 0x0501f02d, - 0x60340800, 0x42003800, 0x00103d76, 0x4a034000, - 0x0010dd53, 0x0501f027, 0x05f5f516, 0x0505fc9e, - 0x05f60514, 0x497b501c, 0x05f5f4ca, 0x0505fc9a, - 0x05f60510, 0x59a8101b, 0x800811c0, 0x05f404c5, - 0x480b501c, 0x05f5f4c3, 0x0505fc93, 0x05f60509, - 0x497b500f, 0x497b5010, 0x05f5f4be, 0x0505fc8e, - 0x05f60504, 0x6403500f, 0x4a035010, 0x000927c0, - 0x05f5f4b8, 0x59a00c07, 0x82040d00, 0x000000ff, - 0x05f404fc, 0x48074000, 0x42003800, 0x00103d57, - 0x0501f008, 0x60200800, 0x42003800, 0x00103d7f, - 0x0501f004, 0x60100800, 0x42003800, 0x00103db0, - 0x0501f902, 0x912c0409, 0x4c1c0000, 0x0505fa6c, - 0x5c003800, 0x481dd809, 0x1c01f000, 0x0501f904, - 0x05f404da, 0x58ee580d, 0x59a0b000, 0x912ca409, - 0x50500800, 0x82040580, 0x00110307, 0x0502000f, - 0x82041500, 0x000000ff, 0x90080488, 0x0502100b, - 0x4200a800, 0x0010dc14, 0x80081840, 0x8050a000, - 0x50500000, 0x4400a800, 0x8054a800, 0x800c1840, - 0x05fe07fb, 0x0501f005, 0x48074407, 0x900409c0, - 0x48074208, 0x05f5f4cf, 0x8050a000, 0x8058b482, - 0x05fe07e8, 0x05f5f483, 0x0501f8e5, 0x05f404bb, - 0x58ee580d, 0x64075047, 0x6034b000, 0x59a0a800, - 0x912ca409, 0x0549fb65, 0x05f5f47a, 0x0501f8dc, - 0x05f404b2, 0x58ee580d, 0x912ca409, 0x50500000, - 0x82001500, 0x000c0016, 0x05f604ba, 0x90500c03, - 0x50040000, 0x90001501, 0x05f604b6, 0x50500000, - 0x90001528, 0x05000015, 0x900815a8, 0x05f604b1, - 0x80500800, 0x50040000, 0x90001513, 0x90081593, - 0x05f604ac, 0x80040800, 0x50040000, 0x82001500, - 0x00050000, 0x82081580, 0x00050000, 0x05f604a5, - 0x916c0580, 0x0500000e, 0x599c0019, 0x8c00050e, - 0x0502000b, 0x05f5f49f, 0x80500800, 0x50040000, - 0x90001513, 0x05f6049b, 0x80040800, 0x50040000, - 0x82001500, 0x00050000, 0x05f60496, 0x6020b000, - 0x4200a800, 0x0010dd3e, 0x0549faf9, 0x05f5f449, - 0x0501f8ab, 0x05f40481, 0x58ee580d, 0x6010b000, - 0x4200a800, 0x0010e50c, 0x912ca409, 0x0549faf0, - 0x850e1d50, 0x05f5f43f, 0x0505f9e5, 0x05020003, - 0x640b4407, 0x05f5f47e, 0x912cac09, 0x59a00c07, - 0x82040500, 0x0000ff00, 0x840001c0, 0x9000148e, - 0x05f6147c, 0x0c01f001, 0x00103dd4, 0x00103dd7, - 0x00103dda, 0x00103ddb, 0x00103dee, 0x00103e10, - 0x00103dda, 0x00103e16, 0x00103df5, 0x00103e06, - 0x00103dda, 0x00103dda, 0x00103dda, 0x00103dda, - 0x4200a000, 0x0010dd46, 0x0501f06e, 0x4200a000, - 0x0010dd53, 0x0501f06b, 0x05f5f466, 0x0505fbee, - 0x05f60464, 0x59a8041d, 0x48034407, 0x59a8021d, - 0x48034208, 0x59a8041e, 0x48034408, 0x59a8021e, - 0x4803420a, 0x59a8041b, 0x4803440a, 0x59a8021b, - 0x4803420b, 0x59a8041c, 0x4803440b, 0x59a8021c, - 0x4803420c, 0x05f5f40b, 0x0505fbdb, 0x05f60451, - 0x0501f862, 0x60600800, 0x42000000, 0x0010dc23, - 0x0505f1d4, 0x0505fbd4, 0x05000002, 0x05f5f449, - 0x59a80411, 0x48034407, 0x59a80211, 0x48034208, - 0x59a80412, 0x48034408, 0x59a80212, 0x4803420a, - 0x6403440a, 0x6403420b, 0x6427440b, 0x4a03420c, - 0x000027c0, 0x05f5f3f3, 0x0505fbc3, 0x05000002, - 0x05f40438, 0x0501f849, 0x61ec0801, 0x800400c4, - 0x48034407, 0x42000000, 0x00107dd1, 0x0505f1b9, - 0x6020b000, 0x40580800, 0x4200a000, 0x0010dd3e, - 0x0549fa93, 0x0501f032, 0x59a00a0b, 0x6473420b, - 0x9004049c, 0x05f41427, 0x603cb000, 0x4178a000, - 0x0549fa93, 0x912cac09, 0x6010b000, 0xb1a8a40d, - 0x0549fa87, 0x916c0580, 0x05000004, 0x6010b000, - 0x91a8a400, 0x0549fa82, 0x912cac15, 0x600cb000, - 0xb1a8a411, 0x0549fa7e, 0x492f4000, 0x0505f974, - 0x05020003, 0x640b4407, 0x05f5f40d, 0x912cac09, - 0x603cb000, 0x4178a000, 0x0549fa7d, 0x912cac09, - 0x6004b000, 0xb1a8a414, 0x0549fa71, 0x912cac0a, - 0x6010b000, 0xb1a8a415, 0x0549fa6d, 0x0501f817, - 0x492f4001, 0x59a25800, 0x912c0409, 0x603c0800, - 0x0505f988, 0x4a01d809, 0x00103e4a, 0x1c01f000, - 0x6034b000, 0x40580800, 0x0549fa9c, 0x0501f80b, - 0x912c0409, 0x0505f17f, 0x0501f811, 0x05f403e7, - 0x59a25801, 0x58ec1007, 0x58ec1808, 0x912c0409, - 0x60340800, 0x0505f177, 0x59a00208, 0x59a01408, - 0x900001c0, 0x80081540, 0x59a0020a, 0x59a01c0a, - 0x900001c0, 0x800c1d40, 0x1c01f000, 0x4031d800, - 0x58ef400b, 0x58ec0002, 0x82000580, 0x00000200, - 0x1c01f000, 0x59a00407, 0x80000d40, 0x05020003, - 0x48072832, 0x05f5f393, 0x8d0c050e, 0x05020007, - 0x4c000000, 0x0511fa45, 0x5c000000, 0x05000003, - 0x645b4407, 0x05f5f3ce, 0x82000c80, 0x00001000, - 0x05f613d0, 0x90000c82, 0x05f413ce, 0x800008c6, - 0x80040c00, 0x80040c00, 0x48072832, 0x59a800af, - 0x84000500, 0x59a00a08, 0x8c040500, 0x05000002, - 0x84000540, 0x480350af, 0x05f5f37a, 0x8d0c050e, - 0x05020003, 0x0511fa2d, 0x0502000c, 0x59a800af, - 0x8c000500, 0x05020005, 0x4a03c014, 0x00400040, - 0x4a03c013, 0x00400040, 0x59a800af, 0x8400054a, - 0x480350af, 0x05e1ff4d, 0x1c01f000, 0x916c0580, - 0x05020003, 0x641f4407, 0x05f5f3a9, 0x59a01407, - 0x800811c0, 0x0502002a, 0x497b4208, 0x05f1f8e9, - 0x05000011, 0x05f1f8ce, 0x64074208, 0x0502000e, - 0x4c080000, 0x05f1f8d5, 0x5c001000, 0x05020006, - 0x640b4208, 0x05edfcd3, 0x05020007, 0x64134208, - 0x0501f005, 0x640f4208, 0x05edfcbc, 0x05020002, - 0x64174208, 0x59c40801, 0x82040d00, 0x00018000, - 0x90040580, 0x05020003, 0x64034407, 0x0501f069, - 0x82040580, 0x00008000, 0x05020003, 0x64074407, - 0x0501f064, 0x82040580, 0x00010000, 0x05020003, - 0x640f4407, 0x0501f05f, 0x82040580, 0x00018000, - 0x05e20f1e, 0x64134407, 0x0501f05a, 0x59a800d1, - 0x8c000502, 0x05000004, 0x60080000, 0x40000800, - 0x0501f012, 0x59a00208, 0x4c000000, 0x0505fa23, - 0x5c000000, 0x05000005, 0x4c000000, 0x0505fa36, - 0x5c000000, 0x05020007, 0x90000d84, 0x05000003, - 0x90000d82, 0x05020003, 0x600c0000, 0x600c1000, - 0x48034002, 0x59a80869, 0x48035069, 0x599c7819, - 0x823c7d00, 0xffff1fff, 0x800000da, 0x803c7d40, - 0x483f3819, 0x497b4208, 0x05f1f8a2, 0x05000013, - 0x05f1f887, 0x64074208, 0x05020010, 0x4c040000, - 0x4c080000, 0x05f1f88d, 0x5c001000, 0x5c000800, - 0x05020006, 0x640b4208, 0x05edfc8a, 0x05020007, - 0x64134208, 0x0501f005, 0x640f4208, 0x05edfc73, - 0x05020002, 0x64174208, 0x05edfc88, 0x0500000b, - 0x05edfc6e, 0x05000009, 0x05edfc72, 0x05000007, - 0x05edfc76, 0x05000005, 0x05edfc7a, 0x05000003, - 0x48075069, 0x05f5f343, 0x90080583, 0x05020005, - 0x59a00002, 0x48035076, 0x640b5069, 0x0501f005, - 0x4a035076, 0xaabbccdd, 0x90080582, 0x05020011, - 0x59c40006, 0x84000500, 0x48038806, 0x0525f94a, - 0x497b8880, 0x42000000, 0x0010e4bc, 0x0549f8cd, - 0x4803c856, 0x850e1d48, 0x4a038808, 0x00000200, - 0x6012d800, 0x64078805, 0x64075075, 0x05e5f8e7, - 0x05f5f2e0, 0x8d0c050e, 0x05000003, 0x64074407, - 0x05f5f31f, 0x916c0583, 0x05000003, 0x641f4407, - 0x05f5f31b, 0x59a28c07, 0x59a0320c, 0x82183500, - 0x000000ff, 0x0505f960, 0x05f6031a, 0x050dfb52, - 0x05f60318, 0x83440580, 0x000007fd, 0x05000005, - 0x050dfaf9, 0x05000003, 0x60240800, 0x05f5f30c, - 0x0505f86f, 0x05020003, 0x640b4407, 0x05f5f308, - 0x497a5a08, 0x4a025c08, 0x00008000, 0x0535fe5e, - 0x05020003, 0x640f4407, 0x05f5f301, 0x4a01d809, - 0x00103f3e, 0x1c01f000, 0x592c0009, 0x82000d00, - 0x0000ffff, 0x82000500, 0xffff0000, 0x82000580, - 0x01000000, 0x05020003, 0x64134407, 0x05f5f2f4, - 0x80040904, 0x4c500000, 0x4c540000, 0x4c580000, - 0x912ca409, 0x4050a800, 0x4004b000, 0x0549f993, - 0x5c00b000, 0x5c00a800, 0x5c00a000, 0x59a00208, - 0x59a01408, 0x900001c0, 0x80081540, 0x59a0020a, - 0x59a01c0a, 0x900001c0, 0x800c1d40, 0x912c0409, - 0x0505f06c, 0x60000020, 0x50000000, 0x82000480, - 0x25320001, 0x0502000a, 0x599c1019, 0x8c08053c, - 0x05020005, 0x4a03c014, 0x00400040, 0x4a03c013, - 0x00400000, 0x6041d04e, 0x051df89b, 0x496fc857, - 0x916c0580, 0x05000003, 0x646b4407, 0x05f5f2cc, - 0x0511f93e, 0x050a0996, 0x60800800, 0x59a00408, - 0x59a01208, 0x900811c0, 0x80081540, 0x59a0040a, - 0x59a01a0a, 0x900c19c0, 0x800c1d40, 0x419c0000, - 0x49a3c857, 0x0505f842, 0x4a01d809, 0x00103f81, - 0x1c01f000, 0x4833c857, 0x05fdfed9, 0x05f402af, - 0x59a00407, 0x8c000500, 0x05000061, 0x59a0020e, - 0x80000104, 0x05f402b7, 0x90000c95, 0x05f612b5, - 0x40000800, 0x59a0040c, 0x59a0120c, 0x900811c0, - 0x80081540, 0x59a0040d, 0x59a01a0d, 0x900c19c0, - 0x800c1d40, 0x42000000, 0x0010dd2a, 0x49a3c857, - 0x0505f827, 0x4a01d809, 0x00103f9c, 0x1c01f000, - 0x05fdfebf, 0x05f40295, 0x42000800, 0x0010dd2a, - 0x58040200, 0x800001c0, 0x05f4029e, 0x599c0017, - 0x8c000508, 0x05000042, 0x58040204, 0x8c000500, - 0x0500003f, 0x599c0202, 0x800001c0, 0x05f40295, - 0x599c141e, 0x80000000, 0x80080480, 0x05f61291, - 0x42001000, 0x00110228, 0x4a001008, 0x00000112, - 0x6428120b, 0x4978140b, 0x49781011, 0x4a00140e, - 0x00000101, 0x58040005, 0x48001015, 0x4a00120a, - 0x0000ffff, 0x4a00100d, 0x00111ad0, 0x58040006, - 0x48001016, 0x58040007, 0x48001017, 0x4a001013, - 0xdeadbeff, 0x4a001001, 0x00110240, 0x42001000, - 0x00110240, 0x48081000, 0x48081001, 0x64281208, - 0x58040005, 0x48001009, 0x4800100c, 0x4800100f, - 0x48001012, 0x48001015, 0x58040006, 0x4800100a, - 0x4800100d, 0x48001010, 0x48001013, 0x48001016, - 0x58040007, 0x4800100b, 0x4800100e, 0x48001011, - 0x48001014, 0x48001017, 0x42001000, 0x00111ad0, - 0x4a001009, 0x00110228, 0x4a001013, 0xdeadbeff, - 0x64841008, 0x64101203, 0x64181407, 0x599c0200, - 0x800001c0, 0x05f40257, 0x59a800d1, 0x8c000502, - 0x05000011, 0x599c0017, 0x84000508, 0x48033817, - 0x599c0019, 0x82000500, 0xffff1fff, 0x82000540, - 0x00004000, 0x48033819, 0x599c0018, 0x84000510, - 0x84000516, 0x82000500, 0xffffffcf, 0x90000560, - 0x0501f004, 0x8c000504, 0x05000004, 0x599c0018, - 0x84000514, 0x48033818, 0x0539fd97, 0x850e1d20, - 0x599c0017, 0x8c000508, 0x05000003, 0x850e1d60, - 0x0501f006, 0x8c00050a, 0x05f60236, 0x59a80806, - 0x8c040516, 0x05f60233, 0x42024800, 0x0010e512, - 0x64124a00, 0x42000800, 0x0010e511, 0x64040800, - 0x42000800, 0x0010e510, 0x46000800, 0x0000ffff, - 0x59240c00, 0x84040d46, 0x599c1017, 0x8c08050a, - 0x05020002, 0x84040d48, 0x8c080508, 0x05020002, - 0x84040d4a, 0x84040d4c, 0x48064c00, 0x59240a00, - 0x84040d40, 0x48064a00, 0x0505faed, 0x05000017, - 0x59c40801, 0x82040d40, 0x00004000, 0x48078801, - 0x64c378e4, 0x640752cd, 0x640752cc, 0x640b50ce, - 0x4a02480b, 0x0f000001, 0x4c000000, 0x4c500000, - 0x60000001, 0x4200a000, 0x001105f2, 0x4600a000, - 0xffffffff, 0x8050a000, 0x80000040, 0x05fe07fc, - 0x5c00a000, 0x5c000000, 0x4803c857, 0x8c000504, - 0x05020004, 0x59c408a3, 0x84040d7a, 0x480788a3, - 0x8c000502, 0x05020004, 0x59c408a3, 0x84040d08, - 0x480788a3, 0x599c0c02, 0x8c000500, 0x0502000b, - 0x8c000516, 0x0500001f, 0x4c000000, 0x59240400, - 0x84000542, 0x840411c0, 0x80081540, 0x480a4c00, - 0x5c000000, 0x0501f008, 0x4c000000, 0x59240400, - 0x84000540, 0x840411c0, 0x80081540, 0x480a4c00, - 0x5c000000, 0xb00414bf, 0x05f611e2, 0x82041400, - 0x00102853, 0x50081000, 0x82081500, 0x000000ff, - 0x48064a08, 0x480a4805, 0x480a4c08, 0x8c000500, - 0x05020004, 0x480b503d, 0x600c0800, 0x0521fcd6, - 0x0501ffeb, 0x05000004, 0x59240400, 0x84000544, - 0x48024c00, 0x599c0019, 0x8c000506, 0x05000003, - 0x4a03b805, 0x90000000, 0x8c00050e, 0x05020005, - 0x4c000000, 0x0505fad0, 0x5c000000, 0x05f601c5, - 0x90000530, 0x05000003, 0x80000108, 0x0501f002, - 0x60080000, 0x48039040, 0x60080800, 0x82000400, - 0x001042be, 0x50001000, 0x0521fcbb, 0x599c0201, - 0x82000c80, 0x00000100, 0x05f411b6, 0x82000c80, - 0x00000841, 0x05f611b3, 0x90000507, 0x05f601b1, - 0x599c0401, 0x80000540, 0x05f401ae, 0x59a808d1, - 0x8c040502, 0x05000005, 0x90000c90, 0x05001003, - 0x60400000, 0x48033c01, 0x850e1d52, 0x82000580, - 0x0000ffff, 0x05000002, 0x850e1d12, 0x599c0409, - 0x599c0c07, 0x80040c80, 0x05f6119e, 0x80000040, - 0x05f4019c, 0x599c0209, 0x599c0a07, 0x80040c80, - 0x05f61198, 0x80000040, 0x05f40196, 0xb1a81411, - 0x599c0818, 0x8c040510, 0x05020005, 0x50080000, - 0x8400053e, 0x44001000, 0x0501f00b, 0x59a80006, - 0x8400054a, 0x48035006, 0x4a0370e4, 0x0000c000, - 0x4c040000, 0x59c408a3, 0x84040d3a, 0x480788a3, - 0x5c000800, 0x8c040512, 0x05020009, 0x50080000, - 0x82000500, 0xfffff5ff, 0x44001000, 0x80081000, - 0x50080000, 0x8400053e, 0x44001000, 0x59e00002, - 0x84000568, 0x4803c002, 0x05e5f8a7, 0x42000000, - 0x0010dd60, 0x452c0000, 0x64073002, 0x412de000, - 0x492fc840, 0x644fc842, 0x05011000, 0x599c0018, - 0x8c00052e, 0x05000012, 0x850e1d16, 0x59a810d2, - 0x90081493, 0x0500100c, 0x0500000b, 0x480b50d2, - 0x480b50d3, 0x59a810d4, 0x9008148a, 0x05001004, - 0x05000003, 0x480b50d4, 0x0501f005, 0x60041000, - 0x05fdf7fd, 0x60041000, 0x05fdf7f5, 0x600000b8, - 0x599c1407, 0x48080100, 0x480a5a0c, 0x48025a00, - 0x492e5801, 0x599c000b, 0x48025808, 0x599c000c, - 0x48025809, 0x64065c10, 0x599c0409, 0x48025c0a, - 0x05e5f87d, 0x42000000, 0x0010de60, 0x452c0000, - 0x64073008, 0x492fc840, 0x642bc842, 0x05011000, - 0x412ee800, 0x492e5800, 0x492de012, 0x4a025803, - 0xffff0000, 0x60040000, 0x8d0c0516, 0x05020006, - 0x599c0211, 0x82001480, 0x00000100, 0x05f61139, - 0x599c1018, 0x48025a09, 0x600000bc, 0x599c1207, - 0x48080000, 0x480a5c09, 0x48025c08, 0x599c000d, - 0x48025806, 0x599c000e, 0x48025807, 0x599c0209, - 0x48025a08, 0x599c0818, 0x8c040532, 0x05000009, - 0x6405e20a, 0x599c021a, 0x4801e411, 0x42000000, - 0x00102ecb, 0x50000000, 0x4801e210, 0x0501f009, - 0x599c0a1a, 0x90040486, 0x05001002, 0x60040800, - 0x82040c00, 0x00102ec8, 0x50040000, 0x4801e210, - 0x599c0818, 0x599c141a, 0x8c040526, 0x05000002, - 0x8408157e, 0x8c040524, 0x05000002, 0x8408157c, - 0x8c040528, 0x05000003, 0x82081540, 0x20000000, - 0x4809e00b, 0x480a5801, 0x480bb01f, 0x480bb11f, - 0x599c0211, 0x82000400, 0x0010df60, 0x44080000, - 0x42000000, 0x0010e389, 0x50000000, 0x48080006, - 0x42000000, 0x0010e388, 0x50000000, 0x48080006, - 0x0511fb2e, 0x050dfca4, 0x599c0201, 0x48035004, - 0x05e9fe84, 0x599c020a, 0x800001c0, 0x05000003, - 0x48035063, 0x0501f003, 0x4a035063, 0x000000c8, - 0x8d0c0520, 0x05000006, 0x599c0413, 0x90000c82, - 0x05f410ec, 0x051dfd7e, 0x417a5000, 0x599c0003, - 0x599c0804, 0x9c0001c0, 0x9c0409c0, 0x48024801, - 0x48064802, 0x48035002, 0x48075003, 0x599c1017, - 0x8c08051c, 0x05000006, 0x599c0005, 0x599c0806, - 0x9c0001c0, 0x9c0409c0, 0x0501f003, 0x82000500, - 0xf0ffffff, 0x48024803, 0x48064804, 0x48035000, - 0x48075001, 0x42001000, 0x0010dd46, 0x48001000, - 0x48041001, 0x42001000, 0x0010dd53, 0x48001000, - 0x48041001, 0x59a00207, 0xb0000588, 0x050200b0, - 0x0501fe27, 0x05020003, 0x640b4407, 0x05f5f0c0, - 0x60400800, 0x59a00208, 0x59a01408, 0x900001c0, - 0x80081540, 0x59a0020a, 0x59a01c0a, 0x900001c0, - 0x800c1d40, 0x82081400, 0x00000080, 0xb0083400, - 0x481b4002, 0x900c3440, 0x481b4003, 0x912c0408, - 0x0501fe33, 0x4a01d809, 0x00104190, 0x1c01f000, - 0x05fdfccb, 0x05f400a1, 0x58ee580d, 0x592c1008, - 0x480bc857, 0x80080120, 0x42024800, 0x0010e512, - 0x48024c06, 0x82081500, 0x0000ffff, 0x599c0818, - 0x90040d30, 0x90040580, 0x05020004, 0xb00804be, - 0x05f610a0, 0x0501f001, 0x0545ff73, 0x05000014, - 0x82080480, 0x00000100, 0x05f6109a, 0x42000000, - 0x0010e511, 0x44080000, 0x800811c0, 0x05f40095, - 0x40080800, 0x42024800, 0x0010e512, 0x912e5c09, - 0x592c0400, 0x8c000506, 0x05020012, 0x59240200, - 0x84000500, 0x48024a00, 0x0501f00e, 0x82080480, - 0x000000ff, 0x05f61087, 0x80080800, 0x42000000, - 0x0010e511, 0x44040000, 0x800811c0, 0x05000068, - 0x42024800, 0x0010e51f, 0x80040840, 0x912e5c09, - 0x600c4000, 0x592c0400, 0x8c000506, 0x05000012, - 0x59a810d1, 0x90081506, 0x05f60076, 0x8c00050a, - 0x05020003, 0x8d0c0520, 0x05f40072, 0x64164a00, - 0x90001503, 0x05000006, 0x840011c0, 0x82081500, - 0x000000ff, 0x480a4a08, 0x0501f003, 0x82000500, - 0x000000ff, 0x48024c00, 0x592c0001, 0x592c1002, - 0x9c0001c0, 0x9c0811c0, 0x48024801, 0x480a4802, - 0x599c1817, 0x8c0c051c, 0x05000006, 0x592c0003, - 0x592c1004, 0x9c0001c0, 0x9c0811c0, 0x0501f003, - 0x82000500, 0xf0ffffff, 0x48024803, 0x480a4804, - 0x912e5c05, 0x91264c0d, 0x80040840, 0x05000019, - 0x80204040, 0x05fe07d4, 0x48074000, 0x49274001, - 0x603c0800, 0x59a01002, 0x59a01803, 0x9008343c, - 0x481b4002, 0x900c3440, 0x481b4003, 0x58ee580d, - 0x912c0408, 0x0501fdc2, 0x4a01d809, 0x00104201, - 0x1c01f000, 0x05fdfc5a, 0x05f40030, 0x58ee580d, - 0x912e5c08, 0x59a00800, 0x59a24801, 0x05fdf7bd, - 0x0545ff0d, 0x05000010, 0x42006800, 0x0010e512, - 0x4200b000, 0x0010e511, 0x5058b000, 0x58340400, - 0x8c000506, 0x05000005, 0x58340200, 0x8400055e, - 0x48006a00, 0x0501f004, 0x90346c0d, 0x8058b040, - 0x05fe07f7, 0x42006800, 0x0010e512, 0x4200b000, - 0x0010e511, 0x5058b000, 0x8058b040, 0x05000008, - 0x42024800, 0x0010e51f, 0x58340206, 0x48024a06, - 0x91264c0d, 0x8058b040, 0x05fe07fc, 0x599c1019, - 0x82081500, 0x0000e000, 0x497b4208, 0x05edfd55, - 0x05000012, 0x05edfd3a, 0x64074208, 0x0502000f, - 0x4c080000, 0x05edfd41, 0x5c001000, 0x05020007, - 0x640b4208, 0x82080580, 0x00008000, 0x05020007, - 0x64134208, 0x0501f005, 0x640f4208, 0x90080580, - 0x05020002, 0x64174208, 0x90080580, 0x05020007, - 0x64035069, 0x60040000, 0x05edfb03, 0x60040000, - 0x05edfad1, 0x0501f02b, 0x82080580, 0x00002000, - 0x05020008, 0x64075069, 0x60000000, 0x05edfafa, - 0x60000000, 0x05edfac8, 0x05edfebf, 0x0501f021, - 0x82080580, 0x00004000, 0x05020004, 0x640b5069, - 0x64075075, 0x05fdf7f9, 0x82080580, 0x00006000, - 0x0502000f, 0x59a80892, 0x82040d80, 0x01391077, - 0x05020004, 0x59e00813, 0x8c040500, 0x05f207e1, - 0x640f5069, 0x60080000, 0x05edfae3, 0x60080000, - 0x05edfab1, 0x05fdf7e9, 0x0501f00a, 0x82080580, - 0x00008000, 0x05f207d7, 0x05edfeb2, 0x64135069, - 0x600c0000, 0x05edfad8, 0x600c0000, 0x05edfaa6, - 0x599c1019, 0x82081500, 0x0000e000, 0x4c080000, - 0x0501fea2, 0x5c001000, 0x05020004, 0x82080580, - 0x00004000, 0x0500000b, 0x0501fe70, 0x05000003, - 0x0501fe85, 0x05020009, 0x82080580, 0x00008000, - 0x05000004, 0x82080580, 0x00004000, 0x05020003, - 0x600010c0, 0x0501f004, 0x599c0019, 0x8c000518, - 0x05000005, 0x8008111a, 0x480b5076, 0x640b5069, - 0x64075075, 0x599c0019, 0x8c000520, 0x05000001, - 0x4a035041, 0x0000aaaa, 0x599c1018, 0x90081530, - 0x90080d80, 0x05000005, 0x90080d90, 0x05000008, - 0x90080da0, 0x05020002, 0x48075041, 0x0501fdb7, - 0x05000007, 0x4803c856, 0x850e1d46, 0x05edf88f, - 0x59a8004d, 0x80040540, 0x4803504d, 0x49f3c857, - 0x42001000, 0x00106004, 0x0519fc0f, 0x42001000, - 0x00105ff7, 0x0519fd4d, 0x4a038805, 0xffffffff, - 0x0501fe5b, 0x05000008, 0x599c1019, 0x8c08053c, - 0x05020005, 0x4a03c014, 0x00400040, 0x4a03c013, - 0x00400000, 0x59a0001e, 0x84000540, 0x4803401e, - 0x49f3c857, 0x59a802dd, 0x48034209, 0x59a804dd, - 0x48034409, 0x05f1f73b, 0x00000018, 0x0000000c, - 0x00000018, 0x00000020, 0x916c0580, 0x05020003, - 0x601c0800, 0x05f1f776, 0x60800800, 0x59a00408, - 0x59a01208, 0x900811c0, 0x80081540, 0x59a0040a, - 0x59a01a0a, 0x900c19c0, 0x800c1d40, 0x419c0000, - 0x0501f4f8, 0x8d0c050e, 0x05000003, 0x64074407, - 0x05f1f767, 0x050dfdd9, 0x05020003, 0x645b4407, - 0x05f1f763, 0x59a800b2, 0x8c000500, 0x0500000e, - 0x64034407, 0x60800800, 0x59a00408, 0x59a01208, - 0x900811c0, 0x80081540, 0x59a0040a, 0x59a01a0a, - 0x900c19c0, 0x800c1d40, 0x42000000, 0x00110258, - 0x0501f4e0, 0x64074407, 0x6080b000, 0x4200a800, - 0x00110258, 0x4200a000, 0xffffffff, 0x4450a800, - 0x8054a800, 0x8058b040, 0x05fe07fd, 0x4d440000, - 0x4d340000, 0x42028800, 0xffffffff, 0x42002000, - 0xffffffff, 0x60043000, 0x60043800, 0x42001800, - 0x00110258, 0x59a8103d, 0x82081500, 0x000000ff, - 0x40180000, 0x0c01f001, 0x00104306, 0x00104309, - 0x0010430d, 0x00104311, 0x82102500, 0xffffff00, - 0x0501f014, 0x82102500, 0xffff00ff, 0x840811c0, - 0x0501f010, 0x82102500, 0xff00ffff, 0x900811c0, - 0x0501f00c, 0x82102500, 0x00ffffff, 0x9c0801c0, - 0x80102540, 0x44101800, 0x42003000, 0xffffffff, - 0x42002000, 0xffffffff, 0x800c1800, 0x0501f003, - 0x40080000, 0x80102540, 0x81468800, 0xb1442cbf, - 0x05021012, 0x4c080000, 0x4c0c0000, 0x4c180000, - 0x4c1c0000, 0x0001fb00, 0x5c003800, 0x5c003000, - 0x5c001800, 0x5c001000, 0x05fe07f4, 0x0509ff06, - 0x05fe07f2, 0x80183000, 0x801c3800, 0x59341202, - 0x40180000, 0x0c01f7d1, 0x82100580, 0xffffffff, - 0x05000002, 0x44101800, 0x42001800, 0x00110258, - 0x500c0000, 0x82000500, 0xffffff00, 0x801c0540, - 0x44001800, 0x5c026800, 0x5c028800, 0x60800800, + 0x800c1d40, 0x42024800, 0x001124b6, 0x912cac08, + 0x6018b000, 0x9050040d, 0x48034001, 0x054dfaff, + 0x60180800, 0x800400c4, 0x80080c00, 0x48074002, + 0x900c0c40, 0x48074003, 0x60180800, 0x912c0408, + 0x0505fc3e, 0x4a01d809, 0x00103d30, 0x1c01f000, + 0x0501faa1, 0x05f405a9, 0x59a0a001, 0x59a01000, + 0x80081040, 0x480b4000, 0x05000005, 0x59a01002, + 0x59a01803, 0x58ee580d, 0x05fdf7e5, 0x42000800, + 0x001124b5, 0x50040800, 0x48074407, 0x05f5f561, + 0x0505fc01, 0x05020003, 0x640b4407, 0x05f5f5a0, + 0x59a00c0b, 0x42000000, 0x001124b5, 0x50000000, + 0x80040480, 0x05f6159f, 0x8204a400, 0x0010d8f9, + 0x5050a000, 0x912cac08, 0x6018b000, 0x054dfad3, 0x59a00408, 0x59a01208, 0x900811c0, 0x80081540, 0x59a0040a, 0x59a01a0a, 0x900c19c0, 0x800c1d40, - 0x42000000, 0x00110258, 0x0501f47e, 0x59a28c07, - 0x0501fd39, 0x05f206f3, 0x59a0020c, 0x8c000500, - 0x0500000c, 0x59a01209, 0x59a00409, 0x82000500, - 0x000000ff, 0x900001c0, 0x80081540, 0x41784000, - 0x0509fdb5, 0x05000005, 0x48034407, 0x05f1f6e5, - 0x0509ff1d, 0x05f206e3, 0x0501fc41, 0x05020003, - 0x640b4407, 0x05f1f6da, 0x59a0020c, 0x8c000500, - 0x05000003, 0x0509fecc, 0x050204f6, 0x59a0020c, - 0x8c000502, 0x05000015, 0x83440480, 0x000007f0, - 0x05021012, 0x0509fecd, 0x05020010, 0x497a5a08, - 0x4a025c08, 0x00008000, 0x59a24805, 0x0535f9f8, - 0x05020003, 0x640f4407, 0x05f1f6c5, 0x4a01d809, - 0x0010437a, 0x1c01f000, 0x59a28c07, 0x59a2440b, - 0x0509fefd, 0x05f206c3, 0x4c580000, 0x4c500000, + 0x60180800, 0x912c0408, 0x0505f410, 0x59a00c0b, + 0x800409c0, 0x05f4058b, 0x900404a1, 0x05f61589, + 0x90040491, 0x05001002, 0x60400800, 0x59a00209, + 0x59a01408, 0x900811c0, 0x80081540, 0x59a00208, + 0x59a01c07, 0x900c19c0, 0x800c1d40, 0x0505fbd6, + 0x05000005, 0x0505fbf4, 0x4a01d809, 0x00103d73, + 0x1c01f000, 0x640b4407, 0x05f5f571, 0x0501fa5e, + 0x05f40566, 0x59a00c0b, 0x90040491, 0x05001002, + 0x60400800, 0x59a0040c, 0x59a0120c, 0x900811c0, + 0x80081540, 0x59a0020a, 0x59a01c09, 0x900c19c0, + 0x800c1d40, 0x58ec0003, 0x0505fbe8, 0x4a01d809, + 0x00103d86, 0x1c01f000, 0x0501fa4b, 0x05f40553, + 0x59a00c0b, 0x90040491, 0x05f41516, 0x90040c90, + 0x59a00209, 0x59a01408, 0x900811c0, 0x80081540, + 0x59a00208, 0x59a01c07, 0x900c19c0, 0x800c1d40, + 0xb0081400, 0x58ec0003, 0x0505fbcb, 0x4a01d809, + 0x00103d9a, 0x1c01f000, 0x0501fa37, 0x05f4053f, + 0x59a0040b, 0x90000c90, 0x59a0040c, 0x59a0120c, + 0x900811c0, 0x80081540, 0x59a0020a, 0x59a01c09, + 0x900c19c0, 0x800c1d40, 0xb0081400, 0x58ec0003, + 0x0505fbc2, 0x4a01d809, 0x00102a9d, 0x1c01f000, + 0x48efc857, 0x59a00208, 0x59a01408, 0x900001c0, + 0x80081540, 0x59a0020a, 0x59a01c0a, 0x900001c0, + 0x800c1d40, 0x59a00407, 0x48034000, 0x480b4001, + 0x480f4002, 0x0505fb88, 0x05020003, 0x640b4407, + 0x05f5f527, 0x60400800, 0x0505fba3, 0x4a01d809, + 0x00103dc2, 0x1c01f000, 0x0501fa0f, 0x05f40517, + 0x58ee580d, 0x48efc857, 0x49a3c857, 0x492fc857, + 0x592c0a08, 0x80040910, 0x05020003, 0x64674407, + 0x05f5f517, 0x4805d80c, 0x0501f005, 0x0501fa02, + 0x05f4050a, 0x48efc857, 0x49a3c857, 0x48efc857, + 0x49a3c857, 0x58ec000c, 0x80000040, 0x0500000d, + 0x4801d80c, 0x0505fb68, 0x05020003, 0x640b4407, + 0x05f5f507, 0x60400800, 0x58ec1007, 0x58ec1808, + 0x0505fb81, 0x4a01d809, 0x00103dcf, 0x1c01f000, + 0x58ee580d, 0x48efc857, 0x49a3c857, 0x492fc857, + 0x492f3000, 0x592c0408, 0x8400055e, 0x48025c08, + 0x4a01d809, 0x00103def, 0x1c01f000, 0x4d2c0000, + 0x58ee580d, 0x48efc857, 0x49a3c857, 0x492fc857, + 0x592c0408, 0x8400051e, 0x48025c08, 0x59a00000, + 0x59a01001, 0x59a01802, 0x80081400, 0x900c1c40, + 0x912c0408, 0x60400800, 0x5c025800, 0x0505f36b, + 0x8d0c050e, 0x05000003, 0x64074407, 0x05f5f4e0, + 0x916c0583, 0x05000003, 0x641f4407, 0x05f5f4dc, + 0x59a0320c, 0x82183500, 0x000000ff, 0x59a28c07, + 0x0505fc16, 0x05f604db, 0x050dff34, 0x05f604d9, + 0x83440580, 0x000007fd, 0x05000005, 0x050dfedb, + 0x05000003, 0x64274407, 0x05f5f4cd, 0x0505fb2a, + 0x05020003, 0x640b4407, 0x05f5f4c9, 0x801831c0, + 0x05000007, 0x412c0800, 0x0505fb23, 0x05020003, + 0x640b4407, 0x05f5f4c2, 0x40065800, 0x4a025c08, + 0x00008000, 0x497a5a08, 0x0539fcf5, 0x05020003, + 0x640f4407, 0x05f5f4ba, 0x4a01d809, 0x00103e2d, + 0x1c01f000, 0x592c0009, 0x82000580, 0x01000000, + 0x05020003, 0x64134407, 0x05f5f4b1, 0x592c040a, + 0x82002d00, 0x0000ff00, 0x82000500, 0x000000ff, + 0x80000904, 0x80040800, 0x90040486, 0x05001002, + 0x60140800, 0x4c500000, 0x4c540000, 0x4c580000, + 0x912ca40a, 0x4050a800, 0x4004b000, 0x054dfa1a, + 0x59a00408, 0x59a01208, 0x900811c0, 0x80081540, + 0x59a0040a, 0x59a01a0a, 0x900c19c0, 0x800c1d40, + 0x912c040a, 0x4c140000, 0x0505fb1c, 0x5c002800, + 0x801429c0, 0x05000003, 0x4a01d809, 0x00103e58, + 0x5c00b000, 0x5c00a800, 0x5c00a000, 0x1c01f000, + 0x0501f979, 0x05f40481, 0x58ee580d, 0x812e59c0, + 0x05e00fb9, 0x592c000a, 0x82000500, 0xff000000, + 0x80000904, 0x800409c0, 0x05f4043e, 0x4807c857, + 0x9004048e, 0x05001002, 0x60340800, 0x592e5801, + 0x812e59c0, 0x05e00fac, 0x4c500000, 0x4c540000, + 0x4c580000, 0x912ca409, 0x4050a800, 0x4004b000, + 0x054df9ed, 0x5c00b000, 0x5c00a800, 0x5c00a000, + 0x58ec1007, 0x58ec1808, 0x912c0409, 0x0505f2f3, + 0x0505fac9, 0x05020003, 0x640b4407, 0x05f5f468, + 0x59a00c07, 0x82040500, 0x0000ff00, 0x840001c0, + 0x9000148e, 0x05f61467, 0x0c01f001, 0x00103e91, + 0x00103e97, 0x00103e9d, 0x00103e9e, 0x00103ea2, + 0x00103ebc, 0x00103ec0, 0x00103ea9, 0x00103eae, + 0x00103eb4, 0x00103e9d, 0x00103e9d, 0x00103e9d, + 0x00103e9d, 0x60340800, 0x42003800, 0x00103ee9, + 0x4a034000, 0x00111ce0, 0x0501f02d, 0x60340800, + 0x42003800, 0x00103ee9, 0x4a034000, 0x00111ced, + 0x0501f027, 0x05f5f44b, 0x0505fcd1, 0x05f60449, + 0x497b501e, 0x05f5f3ff, 0x0505fccd, 0x05f60445, + 0x59a8101d, 0x800811c0, 0x05f403fa, 0x480b501e, + 0x05f5f3f8, 0x0505fcc6, 0x05f6043e, 0x497b5011, + 0x497b5012, 0x05f5f3f3, 0x0505fcc1, 0x05f60439, + 0x64035011, 0x4a035012, 0x000927c0, 0x05f5f3ed, + 0x59a00c07, 0x82040d00, 0x000000ff, 0x05f40431, + 0x48074000, 0x42003800, 0x00103eca, 0x0501f008, + 0x60200800, 0x42003800, 0x00103ef2, 0x0501f004, + 0x60100800, 0x42003800, 0x00103f23, 0x0501f905, + 0x912c0409, 0x4c1c0000, 0x0505fa9b, 0x5c003800, + 0x481dd809, 0x1c01f000, 0x0501f907, 0x05f4040f, + 0x58ee580d, 0x59a0b000, 0x912ca409, 0x50500800, + 0x82040580, 0x00110307, 0x0502000f, 0x82041500, + 0x000000ff, 0x90080488, 0x0502100b, 0x4200a800, + 0x00111b96, 0x80081840, 0x8050a000, 0x50500000, + 0x4400a800, 0x8054a800, 0x800c1840, 0x05fe07fb, + 0x0501f005, 0x48074407, 0x900409c0, 0x48074208, + 0x05f5f404, 0x8050a000, 0x8058b482, 0x05fe07e8, + 0x05f5f3b8, 0x0501f8e8, 0x05f403f0, 0x58ee580d, + 0x6407504a, 0x6034b000, 0x59a0a800, 0x912ca409, + 0x054df96d, 0x05f5f3af, 0x0501f8df, 0x05f403e7, + 0x58ee580d, 0x912ca409, 0x50500000, 0x82001500, + 0x000c0016, 0x05f603ef, 0x90500c03, 0x50040000, + 0x90001501, 0x05f603eb, 0x50500000, 0x90001528, + 0x05000015, 0x900815a8, 0x05f603e6, 0x80500800, + 0x50040000, 0x90001513, 0x90081593, 0x05f603e1, + 0x80040800, 0x50040000, 0x82001500, 0x00050000, + 0x82081580, 0x00050000, 0x05f603da, 0x916c0580, + 0x0500000e, 0x599c0019, 0x8c00050e, 0x0502000b, + 0x05f5f3d4, 0x80500800, 0x50040000, 0x90001513, + 0x05f603d0, 0x80040800, 0x50040000, 0x82001500, + 0x00050000, 0x05f603cb, 0x6020b000, 0x4200a800, + 0x00111cc4, 0x054df901, 0x05f5f37e, 0x0501f8ae, + 0x05f403b6, 0x58ee580d, 0x6010b000, 0x4200a800, + 0x001124b0, 0x912ca409, 0x054df8f8, 0x850e1d50, + 0x05f5f374, 0x0505fa14, 0x05020003, 0x640b4407, + 0x05f5f3b3, 0x912cac09, 0x59a00c07, 0x82040500, + 0x0000ff00, 0x840001c0, 0x9000148e, 0x05f613b1, + 0x0c01f001, 0x00103f47, 0x00103f4a, 0x00103f4d, + 0x00103f4e, 0x00103f61, 0x00103f83, 0x00103f4d, + 0x00103f89, 0x00103f68, 0x00103f79, 0x00103f4d, + 0x00103f4d, 0x00103f4d, 0x00103f4d, 0x4200a000, + 0x00111ce0, 0x0501f071, 0x4200a000, 0x00111ced, + 0x0501f06e, 0x05f5f39b, 0x0505fc21, 0x05f60399, + 0x59a8041f, 0x48034407, 0x59a8021f, 0x48034208, + 0x59a80420, 0x48034408, 0x59a80220, 0x4803420a, + 0x59a8041d, 0x4803440a, 0x59a8021d, 0x4803420b, + 0x59a8041e, 0x4803440b, 0x59a8021e, 0x4803420c, + 0x05f5f340, 0x0505fc0e, 0x05f60386, 0x0501f865, + 0x60600800, 0x42000000, 0x00111ba5, 0x0505f203, + 0x0505fc07, 0x05000002, 0x05f5f37e, 0x59a80413, + 0x48034407, 0x59a80213, 0x48034208, 0x59a80414, + 0x48034408, 0x59a80214, 0x4803420a, 0x6403440a, + 0x6403420b, 0x6427440b, 0x4a03420c, 0x000027c0, + 0x05f5f328, 0x0505fbf6, 0x05000002, 0x05f4036d, + 0x0501f84c, 0x61ec0801, 0x800400c4, 0x48034407, + 0x42000000, 0x00108288, 0x0505f1e8, 0x6020b000, + 0x40580800, 0x4200a000, 0x00111cc4, 0x054df89b, + 0x0501f035, 0x59a00a0b, 0x6473420b, 0x9004049c, + 0x05f4135c, 0x603cb000, 0x4178a000, 0x054df89b, + 0x912cac09, 0x6010b000, 0xb1a8a410, 0x054df88f, + 0x916c0580, 0x05000007, 0x6008b000, 0x91a8a402, + 0x054df88a, 0x6008b000, 0x91a8a400, 0x054df887, + 0x912cac15, 0x600cb000, 0xb1a8a414, 0x054df883, + 0x492f4000, 0x0505f9a0, 0x05020003, 0x640b4407, + 0x05f5f33f, 0x912cac09, 0x603cb000, 0x4178a000, + 0x054df882, 0x912cac09, 0x6004b000, 0xb1a8a417, + 0x054df876, 0x912cac0a, 0x6010b000, 0xb1a8a418, + 0x054df872, 0x0501f817, 0x492f4001, 0x59a25800, + 0x912c0409, 0x603c0800, 0x0505f9b4, 0x4a01d809, + 0x00103fc0, 0x1c01f000, 0x6034b000, 0x40580800, + 0x054df8a1, 0x0501f80b, 0x912c0409, 0x0505f1ab, + 0x0501f811, 0x05f40319, 0x59a25801, 0x58ec1007, + 0x58ec1808, 0x912c0409, 0x60340800, 0x0505f1a3, + 0x59a00208, 0x59a01408, 0x900001c0, 0x80081540, + 0x59a0020a, 0x59a01c0a, 0x900001c0, 0x800c1d40, + 0x1c01f000, 0x4031d800, 0x58ef400b, 0x58ec0002, + 0x82000580, 0x00000200, 0x1c01f000, 0x59a00407, + 0x80000d40, 0x05020003, 0x48072833, 0x05f5f2c5, + 0x8d0c050e, 0x05020007, 0x4c000000, 0x0511fbb9, + 0x5c000000, 0x05000003, 0x645b4407, 0x05f5f300, + 0x82000c80, 0x00001000, 0x05f61302, 0x90000c82, + 0x05f41300, 0x800008c6, 0x80040c00, 0x80040c00, + 0x48072833, 0x59a800b4, 0x84000500, 0x59a00a08, + 0x8c040500, 0x05000002, 0x84000540, 0x480350b4, + 0x05f5f2ac, 0x8d0c050e, 0x05020003, 0x0511fba1, + 0x0502000c, 0x59a800b4, 0x8c000500, 0x05020005, + 0x4a03c014, 0x00400040, 0x4a03c013, 0x00400040, + 0x59a800b4, 0x8400054a, 0x480350b4, 0x05e1fe12, + 0x1c01f000, 0x916c0580, 0x05020003, 0x641f4407, + 0x05f5f2db, 0x59a01407, 0x800811c0, 0x0502002a, + 0x497b4208, 0x05edfff3, 0x05000011, 0x05edffd8, + 0x64074208, 0x0502000e, 0x4c080000, 0x05edffdf, + 0x5c001000, 0x05020006, 0x640b4208, 0x05edfbdd, + 0x05020007, 0x64134208, 0x0501f005, 0x640f4208, + 0x05edfbc6, 0x05020002, 0x64174208, 0x59c40801, + 0x82040d00, 0x00018000, 0x90040580, 0x05020003, + 0x64034407, 0x0501f069, 0x82040580, 0x00008000, + 0x05020003, 0x64074407, 0x0501f064, 0x82040580, + 0x00010000, 0x05020003, 0x640f4407, 0x0501f05f, + 0x82040580, 0x00018000, 0x05e20de3, 0x64134407, + 0x0501f05a, 0x59a800d6, 0x8c000502, 0x05000004, + 0x60080000, 0x40000800, 0x0501f012, 0x59a00208, + 0x4c000000, 0x0505fa53, 0x5c000000, 0x05000005, + 0x4c000000, 0x0505fa66, 0x5c000000, 0x05020007, + 0x90000d84, 0x05000003, 0x90000d82, 0x05020003, + 0x600c0000, 0x600c1000, 0x48034002, 0x59a8086c, + 0x4803506c, 0x599c7819, 0x823c7d00, 0xffff1fff, + 0x800000da, 0x803c7d40, 0x483f3819, 0x497b4208, + 0x05edffac, 0x05000013, 0x05edff91, 0x64074208, + 0x05020010, 0x4c040000, 0x4c080000, 0x05edff97, + 0x5c001000, 0x5c000800, 0x05020006, 0x640b4208, + 0x05edfb94, 0x05020007, 0x64134208, 0x0501f005, + 0x640f4208, 0x05edfb7d, 0x05020002, 0x64174208, + 0x05edfb92, 0x0500000b, 0x05edfb78, 0x05000009, + 0x05edfb7c, 0x05000007, 0x05edfb80, 0x05000005, + 0x05edfb84, 0x05000003, 0x4807506c, 0x05f5f275, + 0x90080583, 0x05020005, 0x59a00002, 0x48035079, + 0x640b506c, 0x0501f005, 0x4a035079, 0xaabbccdd, + 0x90080582, 0x05020011, 0x59c40006, 0x84000500, + 0x48038806, 0x0525fc92, 0x497b8880, 0x42000000, + 0x00112460, 0x0549fed2, 0x4803c856, 0x850e1d48, + 0x4a038808, 0x00000200, 0x6012d800, 0x64078805, + 0x64075078, 0x05e1ffa0, 0x05f5f212, 0x8d0c050e, + 0x05000003, 0x64074407, 0x05f5f251, 0x916c0583, + 0x05000003, 0x641f4407, 0x05f5f24d, 0x59a28c07, + 0x59a0320c, 0x82183500, 0x000000ff, 0x0505f987, + 0x05f6024c, 0x050dfca5, 0x05f6024a, 0x83440580, + 0x000007fd, 0x05000005, 0x050dfc4c, 0x05000003, + 0x60240800, 0x05f5f23e, 0x0505f89b, 0x05020003, + 0x640b4407, 0x05f5f23a, 0x497a5a08, 0x4a025c08, + 0x00008000, 0x0539fa81, 0x05020003, 0x640f4407, + 0x05f5f233, 0x4a01d809, 0x001040b4, 0x1c01f000, + 0x592c0009, 0x82000d00, 0x0000ffff, 0x82000500, + 0xffff0000, 0x82000580, 0x01000000, 0x05020003, + 0x64134407, 0x05f5f226, 0x80040904, 0x4c500000, + 0x4c540000, 0x4c580000, 0x912ca409, 0x4050a800, + 0x4004b000, 0x0549ff98, 0x5c00b000, 0x5c00a800, + 0x5c00a000, 0x59a00208, 0x59a01408, 0x900001c0, + 0x80081540, 0x59a0020a, 0x59a01c0a, 0x900001c0, + 0x800c1d40, 0x912c0409, 0x0505f098, 0x60000020, + 0x50000000, 0x82000480, 0x25320001, 0x0502000a, + 0x599c1019, 0x8c08053c, 0x05020005, 0x4a03c014, + 0x00400040, 0x4a03c013, 0x00400000, 0x6041d04e, + 0x051dfb90, 0x496fc857, 0x916c0580, 0x05000003, + 0x646b4407, 0x05f5f1fe, 0x0511fab2, 0x050a0a17, + 0x60800800, 0x59a00408, 0x59a01208, 0x900811c0, + 0x80081540, 0x59a0040a, 0x59a01a0a, 0x900c19c0, + 0x800c1d40, 0x419c0000, 0x49a3c857, 0x0505f86e, + 0x4a01d809, 0x001040f7, 0x1c01f000, 0x4833c857, + 0x05fdfed9, 0x05f401e1, 0x59a00407, 0x8c000500, + 0x05000061, 0x59a0020e, 0x80000104, 0x05f401e9, + 0x90000c95, 0x05f611e7, 0x40000800, 0x59a0040c, + 0x59a0120c, 0x900811c0, 0x80081540, 0x59a0040d, + 0x59a01a0d, 0x900c19c0, 0x800c1d40, 0x42000000, + 0x00111cb0, 0x49a3c857, 0x0505f853, 0x4a01d809, + 0x00104112, 0x1c01f000, 0x05fdfebf, 0x05f401c7, + 0x42000800, 0x00111cb0, 0x58040200, 0x800001c0, + 0x05f401d0, 0x599c0017, 0x8c000508, 0x05000042, + 0x58040204, 0x8c000500, 0x0500003f, 0x599c0202, + 0x800001c0, 0x05f401c7, 0x599c141e, 0x80000000, + 0x80080480, 0x05f611c3, 0x42001000, 0x001141cc, + 0x4a001008, 0x00000112, 0x6428120b, 0x4978140b, + 0x49781011, 0x4a00140e, 0x00000101, 0x58040005, + 0x48001015, 0x4a00120a, 0x0000ffff, 0x4a00100d, + 0x00115a74, 0x58040006, 0x48001016, 0x58040007, + 0x48001017, 0x4a001013, 0xdeadbeff, 0x4a001001, + 0x001141e4, 0x42001000, 0x001141e4, 0x48081000, + 0x48081001, 0x64281208, 0x58040005, 0x48001009, + 0x4800100c, 0x4800100f, 0x48001012, 0x48001015, + 0x58040006, 0x4800100a, 0x4800100d, 0x48001010, + 0x48001013, 0x48001016, 0x58040007, 0x4800100b, + 0x4800100e, 0x48001011, 0x48001014, 0x48001017, + 0x42001000, 0x00115a74, 0x4a001009, 0x001141cc, + 0x4a001013, 0xdeadbeff, 0x64841008, 0x64101203, + 0x64181407, 0x599c0200, 0x800001c0, 0x05f40189, + 0x59a800d6, 0x8c000502, 0x05000011, 0x599c0017, + 0x84000508, 0x48033817, 0x599c0019, 0x82000500, + 0xffff1fff, 0x82000540, 0x00004000, 0x48033819, + 0x599c0018, 0x84000510, 0x84000516, 0x82000500, + 0xffffffcf, 0x90000560, 0x0501f004, 0x8c000504, + 0x05000004, 0x599c0018, 0x84000514, 0x48033818, + 0x053df9c8, 0x850e1d20, 0x599c0017, 0x8c000508, + 0x05000003, 0x850e1d60, 0x0501f006, 0x8c00050a, + 0x05f60168, 0x59a80806, 0x8c040516, 0x05f60165, + 0x42024800, 0x001124b6, 0x64124a00, 0x42000800, + 0x001124b5, 0x64040800, 0x42000800, 0x001124b4, + 0x46000800, 0x0000ffff, 0x59240c00, 0x84040d46, + 0x599c1017, 0x8c08050a, 0x05020002, 0x84040d48, + 0x8c080508, 0x05020002, 0x84040d4a, 0x84040d4c, + 0x48064c00, 0x59240a00, 0x84040d40, 0x48064a00, + 0x0505fb1d, 0x05000017, 0x59c40801, 0x82040d40, + 0x00004000, 0x48078801, 0x64c378e4, 0x640752d2, + 0x640752d1, 0x640b50d3, 0x4a02480b, 0x0f000001, + 0x4c000000, 0x4c500000, 0x60000001, 0x4200a000, + 0x00114596, 0x4600a000, 0xffffffff, 0x8050a000, + 0x80000040, 0x05fe07fc, 0x5c00a000, 0x5c000000, + 0x4803c857, 0x8c000504, 0x05020004, 0x59c408a3, + 0x84040d7a, 0x480788a3, 0x8c000502, 0x05020004, + 0x59c408a3, 0x84040d08, 0x480788a3, 0x599c0c02, + 0x8c000500, 0x0502000b, 0x8c000516, 0x0500001f, + 0x4c000000, 0x59240400, 0x84000542, 0x840411c0, + 0x80081540, 0x480a4c00, 0x5c000000, 0x0501f008, + 0x4c000000, 0x59240400, 0x84000540, 0x840411c0, + 0x80081540, 0x480a4c00, 0x5c000000, 0xb00414bf, + 0x05f61114, 0x82041400, 0x001028fb, 0x50081000, + 0x82081500, 0x000000ff, 0x48064a08, 0x480a4805, + 0x480a4c08, 0x8c000500, 0x05020004, 0x480b5040, + 0x600c0800, 0x0525f81e, 0x0505f812, 0x05000004, + 0x59240400, 0x84000544, 0x48024c00, 0x599c0019, + 0x8c000506, 0x05000003, 0x4a03b805, 0x90000000, + 0x8c00050e, 0x05020005, 0x4c000000, 0x0505fb4e, + 0x5c000000, 0x05f600f7, 0x90000530, 0x05000003, + 0x80000108, 0x0501f002, 0x60080000, 0x48039040, + 0x60080800, 0x82000400, 0x0010443d, 0x50001000, + 0x0525f803, 0x599c0201, 0x82000c80, 0x00000100, + 0x05f410e8, 0x82000c80, 0x00000841, 0x05f610e5, + 0x90000507, 0x05f600e3, 0x599c0401, 0x80000540, + 0x05f400e0, 0x59a808d6, 0x8c040502, 0x05000005, + 0x90000c90, 0x05001003, 0x60400000, 0x48033c01, + 0x850e1d52, 0x82000580, 0x0000ffff, 0x05000002, + 0x850e1d12, 0x599c0409, 0x599c0c07, 0x80040c80, + 0x05f610d0, 0x80000040, 0x05f400ce, 0x599c0209, + 0x599c0a07, 0x80040c80, 0x05f610ca, 0x80000040, + 0x05f400c8, 0xb1a81414, 0x599c0818, 0x8c040510, + 0x05020005, 0x50080000, 0x8400053e, 0x44001000, + 0x0501f00b, 0x59a80006, 0x8400054a, 0x48035006, + 0x4a0370e4, 0x0000c000, 0x4c040000, 0x59c408a3, + 0x84040d3a, 0x480788a3, 0x5c000800, 0x8c040512, + 0x05020009, 0x50080000, 0x82000500, 0xfffff5ff, + 0x44001000, 0x80081000, 0x50080000, 0x8400053e, + 0x44001000, 0x59e00002, 0x84000568, 0x4803c002, + 0x05e1ff68, 0x42000000, 0x00111cfa, 0x452c0000, + 0x64073002, 0x412de000, 0x492fc840, 0x644fc842, + 0x05011000, 0x599c0018, 0x8c00052e, 0x05000012, + 0x850e1d16, 0x59a810d7, 0x90081493, 0x0500100c, + 0x0500000b, 0x480b50d7, 0x480b50d8, 0x59a810d9, + 0x9008148a, 0x05001004, 0x05000003, 0x480b50d9, + 0x0501f005, 0x60041000, 0x05fdf7fd, 0x60041000, + 0x05fdf7f5, 0x600000b8, 0x599c1407, 0x48080100, + 0x480a5a0c, 0x48025a00, 0x492e5801, 0x599c100b, + 0x480a5808, 0x599c180c, 0x480e5809, 0x64065c10, + 0x599c0c09, 0x48065c0a, 0x05e1ff3e, 0x42000000, + 0x00111dfa, 0x452c0000, 0x64073008, 0x492fc840, + 0x642bc842, 0x05011000, 0x412ee800, 0x492e5800, + 0x492de012, 0x4a025803, 0xffff0000, 0x60040000, + 0x8d0c0516, 0x05020006, 0x599c0211, 0x82001480, + 0x00000100, 0x05f6106b, 0x599c1018, 0x48025a09, + 0x600000bc, 0x599c1207, 0x48080000, 0x480a5c09, + 0x48025c08, 0x599c100d, 0x480a5806, 0x599c180e, + 0x480e5807, 0x599c0a09, 0x48065a08, 0x599c0818, + 0x8c040532, 0x05000009, 0x6405e20a, 0x599c021a, + 0x4801e411, 0x42000000, 0x00102f76, 0x50000000, + 0x4801e210, 0x0501f009, 0x599c0a1a, 0x90040486, + 0x05001002, 0x60040800, 0x82040c00, 0x00102f73, + 0x50040000, 0x4801e210, 0x599c0818, 0x599c141a, + 0x8c040526, 0x05000002, 0x8408157e, 0x8c040524, + 0x05000002, 0x8408157c, 0x8c040528, 0x05000003, + 0x82081540, 0x20000000, 0x4809e00b, 0x480a5801, + 0x480bb01f, 0x480bb11f, 0x599c0211, 0x82000400, + 0x00111efa, 0x44080000, 0x42000000, 0x00112324, + 0x50000000, 0x48080006, 0x42000000, 0x00112323, + 0x50000000, 0x48080006, 0x0511fca8, 0x050dfe12, + 0x599c0201, 0x48035004, 0x05e9fd7f, 0x599c020a, + 0x800001c0, 0x05000003, 0x48035066, 0x0501f003, + 0x4a035066, 0x000000c8, 0x8d0c0520, 0x05000006, + 0x599c0413, 0x90000c82, 0x05f4101e, 0x0521f8bf, + 0x417a5000, 0x599c0003, 0x599c0804, 0x9c0001c0, + 0x9c0409c0, 0x48024801, 0x48064802, 0x48035002, + 0x48075003, 0x599c1017, 0x8c08051c, 0x05000006, + 0x599c0005, 0x599c0806, 0x9c0001c0, 0x9c0409c0, + 0x0501f003, 0x82000500, 0xf0ffffff, 0x48024803, + 0x48064804, 0x48035000, 0x48075001, 0x42001000, + 0x00111ce0, 0x48001000, 0x48041001, 0x42001000, + 0x00111ced, 0x48001000, 0x48041001, 0x59a00207, + 0xb0000588, 0x050200b0, 0x0501fe53, 0x05020003, + 0x640b4407, 0x05f1f7f2, 0x60400800, 0x59a00208, + 0x59a01408, 0x900001c0, 0x80081540, 0x59a0020a, + 0x59a01c0a, 0x900001c0, 0x800c1d40, 0x82081400, + 0x00000080, 0xb0083400, 0x481b4002, 0x900c3440, + 0x481b4003, 0x912c0408, 0x0501fe5f, 0x4a01d809, + 0x00104306, 0x1c01f000, 0x05fdfccb, 0x05f007d3, + 0x58ee580d, 0x592c1008, 0x480bc857, 0x80080120, + 0x42024800, 0x001124b6, 0x48024c06, 0x82081500, + 0x0000ffff, 0x599c0818, 0x90040d30, 0x90040580, + 0x05020004, 0xb00804be, 0x05f217d2, 0x0501f001, + 0x0549fd78, 0x05000014, 0x82080480, 0x00000100, + 0x05f217cc, 0x42000000, 0x001124b5, 0x44080000, + 0x800811c0, 0x05f007c7, 0x40080800, 0x42024800, + 0x001124b6, 0x912e5c09, 0x592c0400, 0x8c000506, + 0x05020012, 0x59240200, 0x84000500, 0x48024a00, + 0x0501f00e, 0x82080480, 0x000000ff, 0x05f217b9, + 0x80080800, 0x42000000, 0x001124b5, 0x44040000, + 0x800811c0, 0x05000068, 0x42024800, 0x001124c3, + 0x80040840, 0x912e5c09, 0x600c4000, 0x592c0400, + 0x8c000506, 0x05000012, 0x59a810d6, 0x90081506, + 0x05f207a8, 0x8c00050a, 0x05020003, 0x8d0c0520, + 0x05f007a4, 0x64164a00, 0x90001503, 0x05000006, + 0x840011c0, 0x82081500, 0x000000ff, 0x480a4a08, + 0x0501f003, 0x82000500, 0x000000ff, 0x48024c00, + 0x592c0001, 0x592c1002, 0x9c0001c0, 0x9c0811c0, + 0x48024801, 0x480a4802, 0x599c1817, 0x8c0c051c, + 0x05000006, 0x592c0003, 0x592c1004, 0x9c0001c0, + 0x9c0811c0, 0x0501f003, 0x82000500, 0xf0ffffff, + 0x48024803, 0x480a4804, 0x912e5c05, 0x91264c0d, + 0x80040840, 0x05000019, 0x80204040, 0x05fe07d4, + 0x48074000, 0x49274001, 0x603c0800, 0x59a01002, + 0x59a01803, 0x9008343c, 0x481b4002, 0x900c3440, + 0x481b4003, 0x58ee580d, 0x912c0408, 0x0501fdee, + 0x4a01d809, 0x00104377, 0x1c01f000, 0x05fdfc5a, + 0x05f00762, 0x58ee580d, 0x912e5c08, 0x59a00800, + 0x59a24801, 0x05fdf7bd, 0x0549fd12, 0x05000010, + 0x42006800, 0x001124b6, 0x4200b000, 0x001124b5, + 0x5058b000, 0x58340400, 0x8c000506, 0x05000005, + 0x58340200, 0x8400055e, 0x48006a00, 0x0501f004, + 0x90346c0d, 0x8058b040, 0x05fe07f7, 0x42006800, + 0x001124b6, 0x4200b000, 0x001124b5, 0x5058b000, + 0x8058b040, 0x05000008, 0x42024800, 0x001124c3, + 0x58340206, 0x48024a06, 0x91264c0d, 0x8058b040, + 0x05fe07fc, 0x599c1019, 0x82081500, 0x0000e000, + 0x497b4208, 0x05edfc5f, 0x05000012, 0x05edfc44, + 0x64074208, 0x0502000f, 0x4c080000, 0x05edfc4b, + 0x5c001000, 0x05020007, 0x640b4208, 0x82080580, + 0x00008000, 0x05020007, 0x64134208, 0x0501f005, + 0x640f4208, 0x90080580, 0x05020002, 0x64174208, + 0x90080580, 0x05020007, 0x6403506c, 0x60040000, + 0x05edfa0d, 0x60040000, 0x05edf9db, 0x0501f02b, + 0x82080580, 0x00002000, 0x05020008, 0x6407506c, + 0x60000000, 0x05edfa04, 0x60000000, 0x05edf9d2, + 0x05edfdc9, 0x0501f021, 0x82080580, 0x00004000, + 0x05020004, 0x640b506c, 0x64075078, 0x05fdf7f9, + 0x82080580, 0x00006000, 0x0502000f, 0x59a80895, + 0x82040d80, 0x01391077, 0x05020004, 0x59e00813, + 0x8c040500, 0x05f20713, 0x640f506c, 0x60080000, + 0x05edf9ed, 0x60080000, 0x05edf9bb, 0x05fdf7e9, + 0x0501f00a, 0x82080580, 0x00008000, 0x05f20709, + 0x05edfdbc, 0x6413506c, 0x600c0000, 0x05edf9e2, + 0x600c0000, 0x05edf9b0, 0x599c1019, 0x82081500, + 0x0000e000, 0x4c080000, 0x0501fed2, 0x5c001000, + 0x05020004, 0x82080580, 0x00004000, 0x0500000b, + 0x0501fea0, 0x05000003, 0x0501feb5, 0x05020009, + 0x82080580, 0x00008000, 0x05000004, 0x82080580, + 0x00004000, 0x05020003, 0x600010c0, 0x0501f004, + 0x599c0019, 0x8c000518, 0x05000005, 0x8008111a, + 0x480b5079, 0x640b506c, 0x64075078, 0x599c0019, + 0x8c000520, 0x05000001, 0x4a035044, 0x0000aaaa, + 0x599c1018, 0x90081530, 0x90080d80, 0x05000005, + 0x90080d90, 0x05000008, 0x90080da0, 0x05020002, + 0x48075044, 0x0501fdde, 0x05000007, 0x4803c856, + 0x850e1d46, 0x05e9ff99, 0x59a80050, 0x80040540, + 0x48035050, 0x49f3c857, 0x42001000, 0x001062e8, + 0x0519feb3, 0x42001000, 0x001062db, 0x051df83b, + 0x4a038805, 0xffffffff, 0x0501fe8b, 0x05000008, + 0x599c1019, 0x8c08053c, 0x05020005, 0x4a03c014, + 0x00400040, 0x4a03c013, 0x00400000, 0x59a0001e, + 0x84000540, 0x4803401e, 0x8d0c0538, 0x05020008, + 0x42000800, 0x0010e380, 0x82041400, 0x00003800, + 0x05e1fdad, 0x480b500d, 0x481b500e, 0x49f3c857, + 0x59a802e2, 0x48034209, 0x59a804e2, 0x48034409, + 0x05f1f664, 0x00000018, 0x0000000c, 0x00000018, + 0x00000020, 0x916c0580, 0x05020003, 0x601c0800, + 0x05f1f69f, 0x60800800, 0x59a00408, 0x59a01208, + 0x900811c0, 0x80081540, 0x59a0040a, 0x59a01a0a, + 0x900c19c0, 0x800c1d40, 0x419c0000, 0x0501f51b, + 0x8d0c050e, 0x05000003, 0x64074407, 0x05f1f690, + 0x050dff44, 0x05020003, 0x645b4407, 0x05f1f68c, + 0x59a800b7, 0x8c000500, 0x0500000e, 0x64034407, + 0x60800800, 0x59a00408, 0x59a01208, 0x900811c0, + 0x80081540, 0x59a0040a, 0x59a01a0a, 0x900c19c0, + 0x800c1d40, 0x42000000, 0x001141fc, 0x0501f503, + 0x64074407, 0x6080b000, 0x4200a800, 0x001141fc, + 0x4200a000, 0xffffffff, 0x4450a800, 0x8054a800, + 0x8058b040, 0x05fe07fd, 0x4d440000, 0x4d340000, + 0x42028800, 0xffffffff, 0x42002000, 0xffffffff, + 0x60043000, 0x60043800, 0x42001800, 0x001141fc, + 0x59a81040, 0x82081500, 0x000000ff, 0x40180000, + 0x0c01f001, 0x00104485, 0x00104488, 0x0010448c, + 0x00104490, 0x82102500, 0xffffff00, 0x0501f014, + 0x82102500, 0xffff00ff, 0x840811c0, 0x0501f010, + 0x82102500, 0xff00ffff, 0x900811c0, 0x0501f00c, + 0x82102500, 0x00ffffff, 0x9c0801c0, 0x80102540, + 0x44101800, 0x42003000, 0xffffffff, 0x42002000, + 0xffffffff, 0x800c1800, 0x0501f003, 0x40080000, + 0x80102540, 0x81468800, 0xb1442cbf, 0x05021014, + 0x4c100000, 0x4c080000, 0x4c0c0000, 0x4c180000, + 0x4c1c0000, 0x0001fb08, 0x5c003800, 0x5c003000, + 0x5c001800, 0x5c001000, 0x5c002000, 0x05fe07f2, + 0x050df84e, 0x05fe07f0, 0x80183000, 0x801c3800, + 0x59341202, 0x40180000, 0x0c01f7cf, 0x82100580, + 0xffffffff, 0x05000002, 0x44101800, 0x42001800, + 0x001141fc, 0x500c0000, 0x82000500, 0xffffff00, + 0x801c0540, 0x44001800, 0x5c026800, 0x5c028800, + 0x60800800, 0x59a00408, 0x59a01208, 0x900811c0, + 0x80081540, 0x59a0040a, 0x59a01a0a, 0x900c19c0, + 0x800c1d40, 0x42000000, 0x001141fc, 0x0501f49f, + 0x59a28c07, 0x0501fd55, 0x05f2061a, 0x59a0020c, + 0x8c000500, 0x0500000c, 0x59a01209, 0x59a00409, + 0x82000500, 0x000000ff, 0x900001c0, 0x80081540, + 0x41784000, 0x0509fea6, 0x05000005, 0x48034407, + 0x05f1f60c, 0x050df865, 0x05f2060a, 0x0501fc62, + 0x05020003, 0x640b4407, 0x05f1f601, 0x59a0020c, + 0x8c000500, 0x05000003, 0x050df814, 0x05020512, + 0x59a0020c, 0x8c000502, 0x05000018, 0x83440480, + 0x000007f0, 0x05001004, 0x83440480, 0x00000800, + 0x05001012, 0x050df812, 0x05020010, 0x497a5a08, + 0x4a025c08, 0x00008000, 0x59a24805, 0x0535fe0d, + 0x05020003, 0x640f4407, 0x05f1f5e9, 0x4a01d809, + 0x001044fe, 0x1c01f000, 0x59a28c07, 0x59a2440b, + 0x050df842, 0x05f205e7, 0x4c580000, 0x4c500000, 0x4c540000, 0x6028b000, 0x4134a000, 0x912e5c05, - 0x412ca800, 0x0545fd22, 0x912cac06, 0x4054a000, - 0x6010b000, 0x0545fd59, 0x5c00a800, 0x5c00a000, + 0x412ca800, 0x0549fb19, 0x912cac06, 0x4054a000, + 0x6010b000, 0x0549fb50, 0x5c00a800, 0x5c00a000, 0x5c00b000, 0x592c0802, 0x82040500, 0x00ff00ff, 0x900001c0, 0x82041500, 0xff00ff00, 0x80080540, 0x48025802, 0x592c0801, 0x82040500, 0x00ff00ff, 0x900001c0, 0x82041500, 0xff00ff00, 0x80080540, 0x48025801, 0x60280800, 0x59a00408, 0x59a01208, 0x900811c0, 0x80081540, 0x59a0040a, 0x59a01a0a, - 0x900c19c0, 0x800c1d40, 0x412c0000, 0x0501f421, - 0x496fc857, 0x496f4407, 0x497b4208, 0x05edfbd5, - 0x05000015, 0x05edfbba, 0x64074208, 0x05020012, - 0x4c080000, 0x05edfbc1, 0x5c001000, 0x05020008, - 0x640b4208, 0x916c0580, 0x0500000b, 0x05e9ffbd, + 0x900c19c0, 0x800c1d40, 0x412c0000, 0x0501f43f, + 0x496fc857, 0x496f4407, 0x497b4208, 0x05edfad1, + 0x05000015, 0x05edfab6, 0x64074208, 0x05020012, + 0x4c080000, 0x05edfabd, 0x5c001000, 0x05020008, + 0x640b4208, 0x916c0580, 0x0500000b, 0x05e9feb9, 0x05020009, 0x64134208, 0x0501f007, 0x640f4208, - 0x916c0580, 0x05000004, 0x05e9ffa4, 0x05020002, - 0x64174208, 0x05f1f637, 0x59a28c07, 0x0501fcc2, - 0x05f2067c, 0x0509feb4, 0x05f2067a, 0x916c0583, - 0x05000003, 0x641f4407, 0x05f1f671, 0x91340c06, + 0x916c0580, 0x05000004, 0x05e9fea0, 0x05020002, + 0x64174208, 0x05f1f55b, 0x59a28c07, 0x0501fcdb, + 0x05f205a0, 0x0509fff9, 0x05f2059e, 0x916c0583, + 0x05000003, 0x641f4407, 0x05f1f595, 0x91340c06, 0x59a0020c, 0x8c000500, 0x05000002, 0x91340c08, 0x58040001, 0x4803440a, 0x900001c0, 0x4803420a, 0x50040000, 0x48034408, 0x900001c0, 0x48034208, - 0x59340200, 0x48034407, 0x05f1f61e, 0x8d0c050e, - 0x05000003, 0x64074407, 0x05f1f65d, 0x59a0220c, + 0x59340200, 0x48034407, 0x05f1f542, 0x8d0c050e, + 0x05000003, 0x64074407, 0x05f1f581, 0x59a0220c, 0x8c100500, 0x05020021, 0x8c100506, 0x05020004, - 0x59a03209, 0x90180483, 0x05f2165a, 0x59a28c07, - 0x0001fb00, 0x05f20657, 0x0509fe3b, 0x05000003, - 0x64274407, 0x05f1f64e, 0x0501fbb1, 0x05020003, - 0x640b4407, 0x05f1f64a, 0x59a0220c, 0x8c100506, + 0x59a03209, 0x90180483, 0x05f2157e, 0x59a28c07, + 0x0001fb08, 0x05f2057b, 0x0509ff80, 0x05000003, + 0x64274407, 0x05f1f572, 0x0501fbcf, 0x05020003, + 0x640b4407, 0x05f1f56e, 0x59a0220c, 0x8c100506, 0x05000004, 0x59343002, 0x82183500, 0x00ffffff, - 0x497a5a08, 0x4a025c08, 0x00008000, 0x0535f938, - 0x05020003, 0x640f4407, 0x05f1f63d, 0x4a01d809, - 0x0010443c, 0x1c01f000, 0x59a28c07, 0x0001fb00, - 0x05f2063c, 0x0509fe20, 0x05000003, 0x64274407, - 0x05f1f633, 0x0501fb96, 0x05020003, 0x640b4407, - 0x05f1f62f, 0x497a5a08, 0x4a025c08, 0x00008000, - 0x0501fb8f, 0x05020003, 0x640b4407, 0x05f1f628, - 0x592e5800, 0x0535f931, 0x05020003, 0x640f4407, - 0x05f1f623, 0x4a01d809, 0x0010441c, 0x1c01f000, + 0x497a5a08, 0x4a025c08, 0x00008000, 0x0535fd4d, + 0x05020003, 0x640f4407, 0x05f1f561, 0x4a01d809, + 0x001045c0, 0x1c01f000, 0x59a28c07, 0x0001fb08, + 0x05f20560, 0x0509ff65, 0x05000003, 0x64274407, + 0x05f1f557, 0x0501fbb4, 0x05020003, 0x640b4407, + 0x05f1f553, 0x497a5a08, 0x4a025c08, 0x00008000, + 0x0501fbad, 0x05020003, 0x640b4407, 0x05f1f54c, + 0x592e5800, 0x0535fd46, 0x05020003, 0x640f4407, + 0x05f1f547, 0x4a01d809, 0x001045a0, 0x1c01f000, 0x592c2809, 0x82140d80, 0x01000000, 0x05020003, - 0x64134407, 0x05f1f61a, 0x60200800, 0x59a00208, + 0x64134407, 0x05f1f53e, 0x60200800, 0x59a00208, 0x59a01408, 0x900001c0, 0x80081540, 0x59a0020a, 0x59a01c0a, 0x900001c0, 0x800c1d40, 0x912c0409, - 0x0501fb9c, 0x8c140500, 0x05000003, 0x4a01d809, - 0x00104432, 0x1c01f000, 0x05fdfa29, 0x05f005ff, - 0x58ee580e, 0x812e59c0, 0x05e009a4, 0x60200800, - 0x912c0409, 0x58ec1007, 0x58ec1808, 0x0501f38d, + 0x0501fbba, 0x8c140500, 0x05000003, 0x4a01d809, + 0x001045b6, 0x1c01f000, 0x05fdfa1b, 0x05f00523, + 0x58ee580e, 0x812e59c0, 0x05e0085b, 0x60200800, + 0x912c0409, 0x58ec1007, 0x58ec1808, 0x0501f3ab, 0x592c0009, 0x82000580, 0x01000000, 0x05020003, - 0x64134407, 0x05f1f5fa, 0x59a00208, 0x59a01408, + 0x64134407, 0x05f1f51e, 0x59a00208, 0x59a01408, 0x900001c0, 0x80081540, 0x59a0020a, 0x59a01c0a, 0x900001c0, 0x800c1d40, 0x60180800, 0x912c040a, - 0x0501f37c, 0x59a00a0b, 0x800409c0, 0x05f005f1, + 0x0501f39a, 0x59a00a0b, 0x800409c0, 0x05f00515, 0x82040480, 0x00000081, 0x05001002, 0x60000801, 0x59c40085, 0x59881004, 0x80081400, 0x480b1004, - 0x497b8885, 0x59c400b1, 0x59a810a9, 0x80080400, - 0x48031022, 0x59c400b2, 0x59a810aa, 0x80080400, + 0x497b8885, 0x59c400b1, 0x59a810ae, 0x80080400, + 0x48031022, 0x59c400b2, 0x59a810af, 0x80080400, 0x48031021, 0x59c400a2, 0x82000500, 0x0000ffff, - 0x48031023, 0x598810bc, 0x598800bd, 0x80081400, - 0x598800be, 0x80081400, 0x598800bf, 0x80081400, - 0x59880122, 0x80081400, 0x598800c0, 0x80081400, - 0x5988013c, 0x80081400, 0x5988013a, 0x80081400, - 0x59880139, 0x80081400, 0x480b1024, 0x59a00208, + 0x59881023, 0x80080400, 0x05021002, 0x81780040, + 0x48031023, 0x598810bf, 0x598800c0, 0x80081400, + 0x598800c1, 0x80081400, 0x598800c2, 0x80081400, + 0x59880125, 0x80081400, 0x598800c3, 0x80081400, + 0x59880145, 0x80081400, 0x5988014b, 0x80081400, + 0x59880157, 0x80081400, 0x5988014e, 0x80081400, + 0x5988013f, 0x80081400, 0x5988013d, 0x80081400, + 0x5988013c, 0x80081400, 0x480b1024, 0x59a00208, 0x59a01408, 0x900001c0, 0x80081540, 0x59a0020a, 0x59a01c0a, 0x900001c0, 0x800c1d40, 0x91880400, - 0x0501fb48, 0x4a01d809, 0x00104484, 0x1c01f000, - 0x05fdf9d7, 0x05f005ad, 0x59a0020c, 0x8c000500, + 0x0501fb5a, 0x4a01d809, 0x00104614, 0x1c01f000, + 0x05fdf9bd, 0x05f004c5, 0x59a0020c, 0x8c000500, 0x05000006, 0x91880400, 0x4803c840, 0x641bc842, 0x05011000, 0x497b8885, 0x4a034208, 0x00000080, - 0x05f1f568, 0x8d0c050e, 0x05000003, 0x64074407, - 0x05f1f5a7, 0x0501fbf0, 0x05f205aa, 0x0501fb08, - 0x05020003, 0x640b4407, 0x05f1f5a1, 0x497a5a08, + 0x05f1f480, 0x8d0c050e, 0x05000003, 0x64074407, + 0x05f1f4bf, 0x0501fbfd, 0x05f204c2, 0x0501fb1a, + 0x05020003, 0x640b4407, 0x05f1f4b9, 0x497a5a08, 0x4a025c08, 0x00008000, 0x59a00407, 0x800001c0, - 0x05f005a0, 0x82001580, 0x000000ff, 0x05000003, - 0x90001484, 0x05f2159b, 0x40001000, 0x59a24805, - 0x05edfe03, 0x05020003, 0x640f4407, 0x05f1f590, - 0x4a01d809, 0x001044af, 0x1c01f000, 0x592c0009, - 0x82000580, 0x01000000, 0x05f20546, 0x64134407, - 0x05f1f587, 0x59a01407, 0x8c080508, 0x05020005, - 0x8d0c050e, 0x05000003, 0x64074407, 0x05f1f580, - 0x59a01c08, 0x820c0480, 0x00001000, 0x05f21581, + 0x05f004b8, 0x82001580, 0x000000ff, 0x05000003, + 0x90001484, 0x05f214b3, 0x40001000, 0x59a24805, + 0x05edfd06, 0x05020003, 0x640f4407, 0x05f1f4a8, + 0x4a01d809, 0x0010463f, 0x1c01f000, 0x592c0009, + 0x82000580, 0x01000000, 0x05f2045e, 0x64134407, + 0x05f1f49f, 0x59a01407, 0x8c080508, 0x05020005, + 0x8d0c050e, 0x05000003, 0x64074407, 0x05f1f498, + 0x59a01c08, 0x820c0480, 0x00001000, 0x05f21499, 0x497b2804, 0x497b2805, 0x497b2826, 0x497b2827, - 0x497b2829, 0x497b282a, 0x497b282c, 0x497b282d, + 0x497b282a, 0x497b282b, 0x497b282d, 0x497b282e, 0x4803c856, 0x850e1d06, 0x8c080500, 0x05000004, 0x4803c856, 0x910e1d51, 0x0501f004, 0x8c080506, 0x05000002, 0x850e1d42, 0x850e1d0a, 0x6006d800, 0x82081500, 0x000000e0, 0x8008010a, 0x0c02002d, - 0x050dfbd6, 0x05020008, 0x64075042, 0x4a035041, - 0x0000aaaa, 0x050dfb54, 0x0501f01b, 0x64035042, - 0x05fdf7fb, 0x050dfbd9, 0x05fc07f8, 0x0505fc24, - 0x0521fb71, 0x050dfbc9, 0x05020003, 0x60000000, - 0x050dfb9f, 0x59a00a08, 0x480788a7, 0x59c400a3, + 0x050dfd30, 0x05020008, 0x64075045, 0x4a035044, + 0x0000aaaa, 0x050dfca8, 0x0501f01b, 0x64035045, + 0x05fdf7fb, 0x050dfd33, 0x05fc07f8, 0x0505fc8b, + 0x0521fe9f, 0x050dfd23, 0x05020003, 0x60000000, + 0x050dfcf3, 0x59a00a08, 0x480788a7, 0x59c400a3, 0x82000500, 0xfeffffff, 0x82000540, 0x80018000, 0x40000800, 0x84040d20, 0x480388a3, 0x480788a3, - 0x497b5064, 0x60b40800, 0x42001000, 0x00105184, - 0x0519f991, 0x59a00408, 0x800000c2, 0x800008c4, - 0x8005d400, 0x61fc01ff, 0x050dfbb0, 0x05000003, - 0x59a00208, 0x80000110, 0x0501fb98, 0x05f1f4f5, - 0x001044d8, 0x001044da, 0x001044e1, 0x00102a40, - 0x001044df, 0x00102a40, 0x00102a40, 0x00102a40, - 0x916c0583, 0x05000003, 0x641f4407, 0x05f1f52c, - 0x0501fb75, 0x05f2052f, 0x59a00408, 0x59a00a08, + 0x497b5067, 0x60b40800, 0x42001000, 0x0010537b, + 0x0519fc1b, 0x59a00408, 0x800000c2, 0x800008c4, + 0x8005d400, 0x61fc01ff, 0x050dfd0a, 0x05000003, + 0x59a00208, 0x80000110, 0x0501fba5, 0x05f1f40d, + 0x00104668, 0x0010466a, 0x00104671, 0x00102ae8, + 0x0010466f, 0x00102ae8, 0x00102ae8, 0x00102ae8, + 0x916c0583, 0x05000003, 0x641f4407, 0x05f1f444, + 0x0501fb82, 0x05f20447, 0x59a00408, 0x59a00a08, 0x900409c0, 0x80040d40, 0x4805d807, 0x59a0040a, 0x59a00a0a, 0x900409c0, 0x80040d40, 0x4805d808, - 0x6401d801, 0x0501fa82, 0x05020003, 0x640b4407, - 0x05f1f51b, 0x417a8800, 0x497b4001, 0x912c0409, - 0x48034002, 0x59a00407, 0x8c000504, 0x05020088, + 0x6401d801, 0x0501fa94, 0x05020003, 0x640b4407, + 0x05f1f433, 0x417a8800, 0x497b4001, 0x912c0409, + 0x48034002, 0x59a00407, 0x8c000504, 0x05020091, 0x4c5c0000, 0x4c600000, 0x4c640000, 0x4178b800, - 0x59a0c407, 0x59a0c802, 0x59a2440b, 0x0509fd4a, - 0x05020027, 0x0509fcf4, 0x05000003, 0x0509fb8f, + 0x59a0c407, 0x59a0c802, 0x59a2440b, 0x0509fe83, + 0x05020027, 0x0509fe2d, 0x05000003, 0x0509fc71, 0x05020023, 0x8c60053e, 0x05020020, 0x8c600500, 0x05000008, 0x59340009, 0x4400c800, 0x8064c800, 0x59340008, 0x4400c800, 0x8064c800, 0x0501f007, 0x59340007, 0x4400c800, 0x8064c800, 0x59340006, 0x4400c800, 0x8064c800, 0x83440580, 0x000007fe, 0x0500000b, 0x83440580, 0x000007fc, 0x05000008, - 0x0509fce5, 0x05000003, 0x85468d5e, 0x0501f004, - 0x0509fa7b, 0x05020002, 0x85468d5e, 0x4544c800, + 0x0509fe1e, 0x05000003, 0x85468d5e, 0x0501f004, + 0x0509fb55, 0x05020002, 0x85468d5e, 0x4544c800, 0x85468d1e, 0x8064c800, 0x905cbc0c, 0x81468800, - 0x83440480, 0x000007f0, 0x0500100c, 0x8c600506, - 0x05000025, 0x83440580, 0x000007f0, 0x05020003, - 0x61fa880f, 0x0501f005, 0x83440580, 0x000007ff, - 0x0502001d, 0x61f2880f, 0x905c05bc, 0x05fe07c8, + 0x83440480, 0x000007f0, 0x05001015, 0x83440480, + 0x00000800, 0x05001005, 0x59a800ad, 0x81440480, + 0x0500100f, 0x0501f029, 0x8c600506, 0x05000009, + 0x83440580, 0x000007f0, 0x05020003, 0x61fa880f, + 0x0501f007, 0x83440580, 0x000007ff, 0x05000003, + 0x60028810, 0x0501f002, 0x61f2880f, 0x905c05bc, + 0x05fe07bf, 0x59a00001, 0x805c0400, 0x48034001, + 0x8c60053e, 0x05020007, 0x59a00a0b, 0x800409c0, + 0x05000006, 0x80040480, 0x05021004, 0x8460c57e, + 0x4178b800, 0x05fdf7b2, 0x49474000, 0x485dd805, + 0x59a00002, 0x4801d803, 0x40ec1000, 0x0001f829, + 0x4a01d809, 0x00104744, 0x5c00c800, 0x5c00c000, + 0x5c00b800, 0x1c01f000, 0x8c60053e, 0x05020019, + 0x805cb9c0, 0x05000021, 0x59a00001, 0x805c0400, + 0x48034001, 0x59a00a0b, 0x800409c0, 0x05000005, + 0x80040480, 0x05021003, 0x4178b800, 0x0501f00d, + 0x59a00801, 0x48074407, 0x485dd805, 0x59a00002, + 0x4801d803, 0x4a01d809, 0x00102a9d, 0x40ec1000, + 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x0001f029, + 0x59a00001, 0x805c0c00, 0x59a0020b, 0x80040480, + 0x48034208, 0x642b4407, 0x5c00c800, 0x5c00c000, + 0x5c00b800, 0x05f1f3a6, 0x59a00801, 0x48074407, + 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x05f1f35d, + 0x05fdf88d, 0x05f00395, 0x59a28800, 0x05fdf771, + 0x4c5c0000, 0x4c600000, 0x4c640000, 0x4178b800, + 0x59a0c407, 0x59a0c802, 0x59a2440b, 0x0509fdf3, + 0x05020029, 0x0509fd9d, 0x05000003, 0x0509fbe1, + 0x05020025, 0x8c60053e, 0x05020022, 0x83440580, + 0x000007fe, 0x0500000f, 0x83440580, 0x000007fc, + 0x0500000c, 0x0509fd9d, 0x05000005, 0x59340403, + 0x8400055e, 0x48026c03, 0x0501f006, 0x0509fad2, + 0x05020004, 0x59340403, 0x8400055e, 0x48026c03, + 0x4134a000, 0x4064a800, 0x6018b000, 0x0549f8b7, + 0x59340007, 0x4400a800, 0x59340006, 0x4800a801, + 0x59340009, 0x4800a802, 0x59340008, 0x4800a803, + 0x59340403, 0x8400051e, 0x48026c03, 0x9064cc0a, + 0x905cbc28, 0x81468800, 0x83440480, 0x000007f0, + 0x05001015, 0x83440480, 0x00000800, 0x05001005, + 0x59a800ad, 0x81440480, 0x0500100f, 0x0501f02a, + 0x8c600506, 0x05000009, 0x83440580, 0x000007f0, + 0x05020003, 0x61fa880f, 0x0501f007, 0x83440580, + 0x000007ff, 0x05000003, 0x60028810, 0x0501f002, + 0x61f2880f, 0x905c05a8, 0x05000002, 0x05fdf7bb, 0x59a00001, 0x805c0400, 0x48034001, 0x8c60053e, 0x05020007, 0x59a00a0b, 0x800409c0, 0x05000006, 0x80040480, 0x05021004, 0x8460c57e, 0x4178b800, - 0x05fdf7bb, 0x49474000, 0x485dd805, 0x59a00002, - 0x4801d803, 0x40ec1000, 0x0001f821, 0x4a01d809, - 0x001045ab, 0x5c00c800, 0x5c00c000, 0x5c00b800, + 0x05fdf7ae, 0x49474000, 0x485dd805, 0x59a00002, + 0x4801d803, 0x40ec1000, 0x0001f829, 0x4a01d809, + 0x001047d7, 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x8c60053e, 0x05020019, 0x805cb9c0, 0x05000021, 0x59a00001, 0x805c0400, 0x48034001, 0x59a00a0b, 0x800409c0, 0x05000005, 0x80040480, 0x05021003, 0x4178b800, 0x0501f00d, 0x59a00801, 0x48074407, 0x485dd805, 0x59a00002, 0x4801d803, - 0x4a01d809, 0x001029f5, 0x40ec1000, 0x5c00c800, - 0x5c00c000, 0x5c00b800, 0x0001f021, 0x59a00001, + 0x4a01d809, 0x00102a9d, 0x40ec1000, 0x5c00c800, + 0x5c00c000, 0x5c00b800, 0x0001f029, 0x59a00001, 0x805c0c00, 0x59a0020b, 0x80040480, 0x48034208, 0x642b4407, 0x5c00c800, 0x5c00c000, 0x5c00b800, - 0x05f1f497, 0x59a00801, 0x48074407, 0x5c00c800, - 0x5c00c000, 0x5c00b800, 0x05f1f44e, 0x05fdf8b0, - 0x05f00486, 0x59a28800, 0x05fdf77a, 0x4c5c0000, - 0x4c600000, 0x4c640000, 0x4178b800, 0x59a0c407, - 0x59a0c802, 0x59a2440b, 0x0509fcc3, 0x05020029, - 0x0509fc6d, 0x05000003, 0x0509fb08, 0x05020025, - 0x8c60053e, 0x05020022, 0x83440580, 0x000007fe, - 0x0500000f, 0x83440580, 0x000007fc, 0x0500000c, - 0x0509fc6d, 0x05000005, 0x59340403, 0x8400055e, - 0x48026c03, 0x0501f006, 0x0509fa01, 0x05020004, - 0x59340403, 0x8400055e, 0x48026c03, 0x4134a000, - 0x4064a800, 0x6018b000, 0x0545fad5, 0x59340007, - 0x4400a800, 0x59340006, 0x4800a801, 0x59340009, - 0x4800a802, 0x59340008, 0x4800a803, 0x59340403, - 0x8400051e, 0x48026c03, 0x9064cc0a, 0x905cbc28, - 0x81468800, 0x83440480, 0x000007f0, 0x0500100c, - 0x8c600506, 0x05000026, 0x83440580, 0x000007f0, - 0x05020003, 0x61fa880f, 0x0501f005, 0x83440580, - 0x000007ff, 0x0502001e, 0x61f2880f, 0x905c05a8, - 0x05000002, 0x05fdf7c4, 0x59a00001, 0x805c0400, - 0x48034001, 0x8c60053e, 0x05020007, 0x59a00a0b, - 0x800409c0, 0x05000006, 0x80040480, 0x05021004, - 0x8460c57e, 0x4178b800, 0x05fdf7b7, 0x49474000, - 0x485dd805, 0x59a00002, 0x4801d803, 0x40ec1000, - 0x0001f821, 0x4a01d809, 0x00104635, 0x5c00c800, - 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x8c60053e, - 0x05020019, 0x805cb9c0, 0x05000021, 0x59a00001, - 0x805c0400, 0x48034001, 0x59a00a0b, 0x800409c0, - 0x05000005, 0x80040480, 0x05021003, 0x4178b800, - 0x0501f00d, 0x59a00801, 0x48074407, 0x485dd805, - 0x59a00002, 0x4801d803, 0x4a01d809, 0x001029f5, + 0x05f1f313, 0x59a00801, 0x48074407, 0x5c00c800, + 0x5c00c000, 0x5c00b800, 0x05f1f2ca, 0x05f9fffa, + 0x05f00302, 0x59a28800, 0x05fdf76e, 0x61f82800, + 0x59a00c07, 0x59a01208, 0x59a01c08, 0x59a0220a, + 0x82040500, 0x0000ff00, 0x840001c0, 0x900034a0, + 0x05f01304, 0x80140480, 0x05f01302, 0x82040500, + 0x000000ff, 0x900034a0, 0x05f012fe, 0x80140480, + 0x05f012fc, 0x82080500, 0x0000ff00, 0x840001c0, + 0x900034a0, 0x05f012f7, 0x80140480, 0x05f012f5, + 0x82080500, 0x000000ff, 0x900034a0, 0x05f012f1, + 0x80140480, 0x05f012ef, 0x820c0500, 0x0000ff00, + 0x840001c0, 0x900034a0, 0x05f012ea, 0x80140480, + 0x05f012e8, 0x820c0500, 0x000000ff, 0x900034a0, + 0x05f012e4, 0x80140480, 0x05f012e2, 0x82100500, + 0x0000ff00, 0x840001c0, 0x900034a0, 0x05f012dd, + 0x80140480, 0x05f012db, 0x82100500, 0x000000ff, + 0x900034a0, 0x05f012d7, 0x80140480, 0x05f012d5, + 0x900401c0, 0x80080d40, 0x900c01c0, 0x80101d40, + 0xb1a83422, 0x44043000, 0x80183000, 0x440c3000, + 0x05f1f284, 0x916c0583, 0x05000003, 0x641f4407, + 0x05f1f2c3, 0x0501fa01, 0x05f202c6, 0x49234003, + 0x59a00408, 0x59a00a08, 0x900409c0, 0x80040d40, + 0x4805d807, 0x59a0040a, 0x59a00a0a, 0x900409c0, + 0x80040d40, 0x4805d808, 0x6401d801, 0x0501f912, + 0x05020003, 0x640b4407, 0x05f1f2b1, 0x417a8800, + 0x497b4001, 0x912c0408, 0x48034002, 0x4c5c0000, + 0x4c600000, 0x4c640000, 0x4178b800, 0x4178c800, + 0x59a0c002, 0x0509fd05, 0x0502000a, 0x0509fcaf, + 0x05020008, 0x8c64053e, 0x05020005, 0x59340002, + 0x4800c000, 0x4944c001, 0x9060c402, 0x905cbc08, + 0x81468800, 0x59a800ad, 0x81440480, 0x0502101f, + 0xb05c0480, 0x05021002, 0x05fdf7ef, 0x59a00001, + 0x805c0400, 0x48034001, 0x8c64053e, 0x05000003, + 0x4178b800, 0x05fdf7e8, 0x59a00a0b, 0x800409c0, + 0x05000006, 0x80040480, 0x05021004, 0x4178b800, + 0x8464cd7e, 0x05fdf7e0, 0x49474000, 0x485dd805, + 0x59a00002, 0x4801d803, 0x40ec1000, 0x0001f829, + 0x4a01d809, 0x00104896, 0x5c00c800, 0x5c00c000, + 0x5c00b800, 0x1c01f000, 0x8c64053e, 0x0502001a, + 0x805cb9c0, 0x05000022, 0x59a00001, 0x805c0400, + 0x48034001, 0x59a00a0b, 0x800409c0, 0x05000005, + 0x80040480, 0x05021003, 0x4178b800, 0x0501f00e, + 0x59a00801, 0x80040906, 0x48074407, 0x485dd805, + 0x59a00002, 0x4801d803, 0x4a01d809, 0x00102a9d, 0x40ec1000, 0x5c00c800, 0x5c00c000, 0x5c00b800, - 0x0001f021, 0x59a00001, 0x805c0c00, 0x59a0020b, + 0x0001f029, 0x59a00001, 0x805c0c00, 0x59a0020b, 0x80040480, 0x48034208, 0x642b4407, 0x5c00c800, - 0x5c00c000, 0x5c00b800, 0x05f1f40d, 0x59a00801, - 0x48074407, 0x5c00c800, 0x5c00c000, 0x5c00b800, - 0x05f1f3c4, 0x05fdf826, 0x05f003fc, 0x59a28800, - 0x05fdf777, 0x61f82800, 0x59a00c07, 0x59a01208, - 0x59a01c08, 0x59a0220a, 0x82040500, 0x0000ff00, - 0x840001c0, 0x900034a0, 0x05f013fe, 0x80140480, - 0x05f013fc, 0x82040500, 0x000000ff, 0x900034a0, - 0x05f013f8, 0x80140480, 0x05f013f6, 0x82080500, - 0x0000ff00, 0x840001c0, 0x900034a0, 0x05f013f1, - 0x80140480, 0x05f013ef, 0x82080500, 0x000000ff, - 0x900034a0, 0x05f013eb, 0x80140480, 0x05f013e9, - 0x820c0500, 0x0000ff00, 0x840001c0, 0x900034a0, - 0x05f013e4, 0x80140480, 0x05f013e2, 0x820c0500, - 0x000000ff, 0x900034a0, 0x05f013de, 0x80140480, - 0x05f013dc, 0x82100500, 0x0000ff00, 0x840001c0, - 0x900034a0, 0x05f013d7, 0x80140480, 0x05f013d5, - 0x82100500, 0x000000ff, 0x900034a0, 0x05f013d1, - 0x80140480, 0x05f013cf, 0x900401c0, 0x80080d40, - 0x900c01c0, 0x80101d40, 0xb1a8341f, 0x44043000, - 0x80183000, 0x440c3000, 0x05f1f37e, 0x916c0583, - 0x05000003, 0x641f4407, 0x05f1f3bd, 0x0501fa06, - 0x05f203c0, 0x49234003, 0x59a00408, 0x59a00a08, - 0x900409c0, 0x80040d40, 0x4805d807, 0x59a0040a, - 0x59a00a0a, 0x900409c0, 0x80040d40, 0x4805d808, - 0x6401d801, 0x0501f912, 0x05020003, 0x640b4407, - 0x05f1f3ab, 0x417a8800, 0x497b4001, 0x912c0408, - 0x48034002, 0x4c5c0000, 0x4c600000, 0x4c640000, - 0x4178b800, 0x4178c800, 0x59a0c002, 0x0509fbde, - 0x0502000a, 0x0509fb88, 0x05020008, 0x8c64053e, - 0x05020005, 0x59340002, 0x4800c000, 0x4944c001, - 0x9060c402, 0x905cbc08, 0x81468800, 0x83440480, - 0x00000800, 0x0502101f, 0xb05c0480, 0x05021002, - 0x05fdf7ef, 0x59a00001, 0x805c0400, 0x48034001, - 0x8c64053e, 0x05000003, 0x4178b800, 0x05fdf7e8, - 0x59a00a0b, 0x800409c0, 0x05000006, 0x80040480, - 0x05021004, 0x4178b800, 0x8464cd7e, 0x05fdf7e0, - 0x49474000, 0x485dd805, 0x59a00002, 0x4801d803, - 0x40ec1000, 0x0001f821, 0x4a01d809, 0x001046f4, - 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x1c01f000, - 0x8c64053e, 0x0502001a, 0x805cb9c0, 0x05000022, - 0x59a00001, 0x805c0400, 0x48034001, 0x59a00a0b, - 0x800409c0, 0x05000005, 0x80040480, 0x05021003, - 0x4178b800, 0x0501f00e, 0x59a00801, 0x80040906, - 0x48074407, 0x485dd805, 0x59a00002, 0x4801d803, - 0x4a01d809, 0x001029f5, 0x40ec1000, 0x5c00c800, - 0x5c00c000, 0x5c00b800, 0x0001f021, 0x59a00001, - 0x805c0c00, 0x59a0020b, 0x80040480, 0x48034208, - 0x642b4407, 0x5c00c800, 0x5c00c000, 0x5c00b800, - 0x05f1f34f, 0x59a00801, 0x80040906, 0x48074407, - 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x05f1f305, - 0x05f9ff67, 0x05f0033d, 0x59a28800, 0x59a24003, - 0x59a24805, 0x05fdf79c, 0x8d0c050e, 0x05000003, - 0x64074407, 0x05f1f33e, 0x59a80249, 0x8c00050a, - 0x05020005, 0x8c000506, 0x05020003, 0x645b4407, - 0x05f1f337, 0x0501f980, 0x05f2033a, 0x0501f898, - 0x05020003, 0x640b4407, 0x05f1f331, 0x59a00c07, - 0x80040902, 0x59a00408, 0x59a01208, 0x900811c0, - 0x80081540, 0x59a0040a, 0x59a01a0a, 0x900c19c0, - 0x800c1d40, 0x912c0409, 0x0501f8a9, 0x4a01d809, - 0x0010471a, 0x1c01f000, 0x05f9ff41, 0x05f00317, - 0x58ee580d, 0x592c000d, 0x59a8383d, 0x0515f9af, - 0x05040df4, 0x05f2031f, 0x49474001, 0x481a6802, - 0x592c000e, 0x82001d80, 0x70000000, 0x05020005, - 0x0501f877, 0x0502000c, 0x640b4407, 0x05f1f310, - 0x82001d80, 0x72000000, 0x05f20312, 0x0501f870, - 0x0502086f, 0x0502086e, 0x05020003, 0x640b4407, - 0x05f1f307, 0x58ee580d, 0x4a025c08, 0x00008000, - 0x497a5a08, 0x592c320c, 0x80183102, 0x592c1801, - 0x4a001809, 0x01000000, 0x0531fe1a, 0x05020003, - 0x640f4407, 0x05f1f2fa, 0x4a01d809, 0x00104745, - 0x1c01f000, 0x592c4000, 0x592c0009, 0x82000580, - 0x01000000, 0x05020003, 0x64134407, 0x05f1f2f0, - 0x4c580000, 0x4c500000, 0x4c540000, 0x912c3c09, - 0x401ca000, 0x401ca800, 0x5820280e, 0x6008b000, - 0x82143580, 0x70000000, 0x05000002, 0x603cb000, - 0x0545f98a, 0x5c00a800, 0x5c00a000, 0x5c00b000, - 0x401c0000, 0x5820100a, 0x5820180b, 0x58202209, - 0x80102102, 0x82143580, 0x70000000, 0x05020005, - 0x90103482, 0x05f012db, 0x60080800, 0x0501f061, - 0x82143580, 0x72000000, 0x05f202d6, 0x901034aa, - 0x05f012d4, 0x603c0800, 0x0501f85a, 0x4a01d809, - 0x00104772, 0x1c01f000, 0x05f9fee9, 0x05f002bf, - 0x58ee580e, 0x592e5800, 0x912c0c09, 0x4c580000, - 0x4c500000, 0x4c540000, 0x4004a000, 0x4004a800, - 0x603cb000, 0x0545f965, 0x5c00a800, 0x5c00a000, - 0x5c00b000, 0x40ec1000, 0x64001001, 0x64f01005, - 0x48041003, 0x0001f821, 0x4a01d809, 0x00104789, - 0x1c01f000, 0x05f9fed2, 0x05f002a8, 0x58ee580e, + 0x5c00c000, 0x5c00b800, 0x05f1f255, 0x59a00801, + 0x80040906, 0x48074407, 0x5c00c800, 0x5c00c000, + 0x5c00b800, 0x05f1f20b, 0x05f9ff3b, 0x05f00243, + 0x59a28800, 0x59a24003, 0x59a24805, 0x05fdf79c, + 0x8d0c050e, 0x05000003, 0x64074407, 0x05f1f244, + 0x59a8024c, 0x8c00050a, 0x05020005, 0x8c000506, + 0x05020003, 0x645b4407, 0x05f1f23d, 0x0501f97b, + 0x05f20240, 0x0501f898, 0x05020003, 0x640b4407, + 0x05f1f237, 0x59a00c07, 0x80040902, 0x59a00408, + 0x59a01208, 0x900811c0, 0x80081540, 0x59a0040a, + 0x59a01a0a, 0x900c19c0, 0x800c1d40, 0x912c0409, + 0x0501f8a9, 0x4a01d809, 0x001048bc, 0x1c01f000, + 0x05f9ff15, 0x05f0021d, 0x58ee580d, 0x592c000d, + 0x59a83840, 0x0515fbb9, 0x05040e6d, 0x05f20225, + 0x49474001, 0x481a6802, 0x592c000e, 0x82001d80, + 0x70000000, 0x05020005, 0x0501f877, 0x0502000c, + 0x640b4407, 0x05f1f216, 0x82001d80, 0x72000000, + 0x05f20218, 0x0501f870, 0x0502086f, 0x0502086e, + 0x05020003, 0x640b4407, 0x05f1f20d, 0x58ee580d, + 0x4a025c08, 0x00008000, 0x497a5a08, 0x592c320c, + 0x80183102, 0x592c1801, 0x4a001809, 0x01000000, + 0x0535fa11, 0x05020003, 0x640f4407, 0x05f1f200, + 0x4a01d809, 0x001048e7, 0x1c01f000, 0x592c4000, + 0x592c0009, 0x82000580, 0x01000000, 0x05020003, + 0x64134407, 0x05f1f1f6, 0x4c580000, 0x4c500000, + 0x4c540000, 0x912c3c09, 0x401ca000, 0x401ca800, + 0x5820280e, 0x6008b000, 0x82143580, 0x70000000, + 0x05000002, 0x603cb000, 0x0545ff63, 0x5c00a800, + 0x5c00a000, 0x5c00b000, 0x401c0000, 0x5820100a, + 0x5820180b, 0x58202209, 0x80102102, 0x82143580, + 0x70000000, 0x05020005, 0x90103482, 0x05f011e1, + 0x60080800, 0x0501f061, 0x82143580, 0x72000000, + 0x05f201dc, 0x901034aa, 0x05f011da, 0x603c0800, + 0x0501f85a, 0x4a01d809, 0x00104914, 0x1c01f000, + 0x05f9febd, 0x05f001c5, 0x58ee580e, 0x592e5800, 0x912c0c09, 0x4c580000, 0x4c500000, 0x4c540000, - 0x4004a000, 0x4004a800, 0x6030b000, 0x0545f94f, + 0x4004a000, 0x4004a800, 0x603cb000, 0x0545ff3e, 0x5c00a800, 0x5c00a000, 0x5c00b000, 0x40ec1000, - 0x64001001, 0x64c01005, 0x48041003, 0x0001f821, - 0x4a01d809, 0x001029f5, 0x1c01f000, 0x05e1f9e3, - 0x0500000e, 0x497a5800, 0x58ec000d, 0x80000540, - 0x05020004, 0x492dd80d, 0x492dd80e, 0x0501f006, - 0x58ec000e, 0x48025800, 0x90000401, 0x452c0000, - 0x492dd80e, 0x912c0408, 0x492fc857, 0x4803c857, - 0x1c01f000, 0x4d2c0000, 0x58ec400d, 0x802041c0, - 0x05000007, 0x4823c857, 0x40225800, 0x592c4001, - 0x497a5801, 0x05e1f9d9, 0x05fdf7f9, 0x4979d80d, - 0x4979d80e, 0x5c025800, 0x1c01f000, 0x60043000, - 0x0501f009, 0x60043000, 0x0501f008, 0x60003000, - 0x0501f006, 0x60003000, 0x800408c4, 0x0501f00b, - 0x60003000, 0x800408c4, 0x800409c0, 0x05dc0e0f, - 0x4803c857, 0x4807c857, 0x480bc857, 0x480fc857, - 0x481bc857, 0x48efc857, 0x4819d801, 0x4801d803, - 0x4809d807, 0x480dd808, 0x4805d805, 0x40ec1000, - 0x0001f821, 0x4a01d809, 0x001029f5, 0x1c01f000, - 0x80002d80, 0x480bc857, 0x480fc857, 0x4813c857, - 0x4817c857, 0x0001fab3, 0x0542004b, 0x4d2c0000, - 0x4da00000, 0x42034000, 0x0010dceb, 0x59a00018, - 0x800001c0, 0x05020014, 0x05006013, 0x480bc020, - 0x480fc021, 0x4813c022, 0x4817c023, 0x900811c0, - 0x90081552, 0x480bc011, 0x59e00017, 0x8c00050a, - 0x60000800, 0x00020892, 0x8d0c0530, 0x05e60ece, - 0x000209bc, 0x6403c017, 0x4203e000, 0x30000001, - 0x0501f049, 0x4c040000, 0x4c1c0000, 0x80000800, - 0x48074018, 0x59a0381b, 0x481fc857, 0x801c39c0, - 0x05020023, 0x9000048c, 0x0502100e, 0x59a00019, - 0x80000000, 0x48034019, 0x59a0021a, 0x90000402, - 0x90000c97, 0x4803421a, 0x05001003, 0x497b421a, - 0x41780000, 0x59a03817, 0x801c3c00, 0x0501f02c, - 0x4803c856, 0x05e1f96d, 0x05000007, 0x492f401b, - 0x492f401c, 0x412c3800, 0x497b421d, 0x497a5817, - 0x0501f023, 0x5988001e, 0x80000000, 0x4803101e, - 0x59a00018, 0x80000040, 0x48034018, 0x59a0021a, - 0x59a03817, 0x801c3c00, 0x0501f019, 0x59a0021d, - 0x90000402, 0x90000c96, 0x05021004, 0x4803421d, - 0x801c3c00, 0x0501f012, 0x05e1f954, 0x0502000b, - 0x5988001e, 0x80000000, 0x4803101e, 0x59a00018, - 0x80000040, 0x48034018, 0x4803c857, 0x59a0021d, - 0x801c3c00, 0x0501f006, 0x492f401b, 0x492c3817, - 0x412c3800, 0x497b421d, 0x497a5817, 0x48083c00, - 0x480c3a00, 0x48103c01, 0x48143a01, 0x5c003800, - 0x5c000800, 0x5c034000, 0x5c025800, 0x1c01f000, - 0x480fc857, 0x4813c857, 0x481bc857, 0x42000000, - 0x0010e40c, 0x0541ff8f, 0x801800d0, 0x81202d40, - 0x60501100, 0x05fdf78c, 0x4c000000, 0x599c0017, - 0x8c000512, 0x5c000000, 0x1c01f000, 0x4c000000, - 0x599c0018, 0x8c00050e, 0x5c000000, 0x1c01f000, - 0x8d0c050e, 0x05000003, 0x64074407, 0x05f1f1dc, - 0x916c0583, 0x05000003, 0x641f4407, 0x05f1f1d8, - 0x59a24805, 0x59240400, 0x8c000508, 0x05020003, - 0x64234407, 0x05f1f1d2, 0x59340405, 0x8c000508, - 0x05020003, 0x8c00050a, 0x05fe02f9, 0x497a5a08, - 0x497a5809, 0x4a025c08, 0x00008000, 0x0531fd79, - 0x05020003, 0x640f4407, 0x05f1f1c5, 0x4a01d809, - 0x0010487a, 0x1c01f000, 0x592c0009, 0x82000580, - 0x01000000, 0x05020003, 0x64134407, 0x05f1f1bc, - 0x59a28c07, 0x59a2440b, 0x0509f9f7, 0x05f201bd, - 0x05fdf2e3, 0x4c040000, 0x59a2440b, 0x42000000, - 0x0010e511, 0x50000000, 0x81200480, 0x0502100d, - 0x83200c00, 0x0010d17b, 0x50064800, 0x812649c0, - 0x05000008, 0x59240200, 0x8c000500, 0x05000005, - 0x49274005, 0x80000580, 0x5c000800, 0x1c01f000, - 0x90000541, 0x05fdf7fd, 0x61be880f, 0x0001fb00, - 0x05140e31, 0x81468840, 0x05fe17fd, 0x1c01f000, - 0x4803c856, 0x4c0c0000, 0x4d340000, 0x4d440000, - 0x61fa880f, 0x60024000, 0x0509f9d3, 0x0502000a, - 0x5934180a, 0x900c1d01, 0x900c1d81, 0x60002000, - 0x0501fa6c, 0x05000002, 0x60042000, 0x606c1100, - 0x05fdff2c, 0x5c028800, 0x5c026800, 0x5c001800, - 0x1c01f000, 0x48efc857, 0x05011000, 0x48efc840, - 0x6443c842, 0x40000000, 0x05fd17ff, 0x42000000, - 0x0010dd60, 0x50000000, 0x80000540, 0x05000003, - 0x5800000b, 0x4801d806, 0x4a01d80f, 0xbeefbeef, - 0x1c01f000, 0x497b4000, 0x497b4001, 0x497b4002, - 0x497b4003, 0x497b4004, 0x497b4005, 0x1c01f000, - 0x42002000, 0x00111b00, 0x41580000, 0x41781000, + 0x64001001, 0x64f01005, 0x48041003, 0x0001f829, + 0x4a01d809, 0x0010492b, 0x1c01f000, 0x05f9fea6, + 0x05f001ae, 0x58ee580e, 0x912c0c09, 0x4c580000, + 0x4c500000, 0x4c540000, 0x4004a000, 0x4004a800, + 0x6030b000, 0x0545ff28, 0x5c00a800, 0x5c00a000, + 0x5c00b000, 0x40ec1000, 0x64001001, 0x64c01005, + 0x48041003, 0x0001f829, 0x4a01d809, 0x00102a9d, + 0x1c01f000, 0x05e1f878, 0x0500000e, 0x497a5800, + 0x58ec000d, 0x80000540, 0x05020004, 0x492dd80d, + 0x492dd80e, 0x0501f006, 0x58ec000e, 0x48025800, + 0x90000401, 0x452c0000, 0x492dd80e, 0x912c0408, + 0x492fc857, 0x4803c857, 0x1c01f000, 0x4d2c0000, + 0x58ec400d, 0x802041c0, 0x05000007, 0x4823c857, + 0x40225800, 0x592c4001, 0x497a5801, 0x05e1f86e, + 0x05fdf7f9, 0x4979d80d, 0x4979d80e, 0x5c025800, + 0x1c01f000, 0x60043000, 0x0501f009, 0x60043000, + 0x0501f008, 0x60003000, 0x0501f006, 0x60003000, + 0x800408c4, 0x0501f006, 0x60003000, 0x800408c4, + 0x800409c0, 0x05dc0ca8, 0x4803c857, 0x4819d801, + 0x4801d803, 0x4809d807, 0x480dd808, 0x4805d805, + 0x40ec1000, 0x0001f829, 0x4a01d809, 0x00102a9d, + 0x1c01f000, 0x80002d80, 0x480bc857, 0x480fc857, + 0x4813c857, 0x4817c857, 0x0001fabb, 0x054205f8, + 0x4d2c0000, 0x4da00000, 0x42034000, 0x00111c71, + 0x59a00018, 0x800001c0, 0x05020014, 0x05006013, + 0x480bc020, 0x480fc021, 0x4813c022, 0x4817c023, + 0x900811c0, 0x90081552, 0x480bc011, 0x59e00017, + 0x8c00050a, 0x60000800, 0x0002089a, 0x8d0c0530, + 0x05e60da2, 0x000209c4, 0x6403c017, 0x4203e000, + 0x30000001, 0x0501f049, 0x4c040000, 0x4c1c0000, + 0x80000800, 0x48074018, 0x59a0381b, 0x481fc857, + 0x801c39c0, 0x05020023, 0x9000048c, 0x0502100e, + 0x59a00019, 0x80000000, 0x48034019, 0x59a0021a, + 0x90000402, 0x90000c97, 0x4803421a, 0x05001003, + 0x497b421a, 0x41780000, 0x59a03817, 0x801c3c00, + 0x0501f02c, 0x4803c856, 0x05e1f807, 0x05000007, + 0x492f401b, 0x492f401c, 0x412c3800, 0x497b421d, + 0x497a5817, 0x0501f023, 0x5988001e, 0x80000000, + 0x4803101e, 0x59a00018, 0x80000040, 0x48034018, + 0x59a0021a, 0x59a03817, 0x801c3c00, 0x0501f019, + 0x59a0021d, 0x90000402, 0x90000c96, 0x05021004, + 0x4803421d, 0x801c3c00, 0x0501f012, 0x05ddffee, + 0x0502000b, 0x5988001e, 0x80000000, 0x4803101e, + 0x59a00018, 0x80000040, 0x48034018, 0x4803c857, + 0x59a0021d, 0x801c3c00, 0x0501f006, 0x492f401b, + 0x492c3817, 0x412c3800, 0x497b421d, 0x497a5817, + 0x48083c00, 0x480c3a00, 0x48103c01, 0x48143a01, + 0x5c003800, 0x5c000800, 0x5c034000, 0x5c025800, + 0x1c01f000, 0x480fc857, 0x4813c857, 0x481bc857, + 0x42000000, 0x001123ad, 0x0545fd6d, 0x801800d0, + 0x81202d40, 0x60501100, 0x05fdf78c, 0x4c000000, + 0x599c0017, 0x8c000512, 0x5c000000, 0x1c01f000, + 0x4c000000, 0x599c0018, 0x8c00050e, 0x5c000000, + 0x1c01f000, 0x8d0c050e, 0x05000003, 0x64074407, + 0x05f1f0e7, 0x916c0583, 0x05000003, 0x641f4407, + 0x05f1f0e3, 0x59a24805, 0x59240400, 0x8c000508, + 0x05020003, 0x64234407, 0x05f1f0dd, 0x59340405, + 0x8c000508, 0x05020003, 0x8c00050a, 0x05fe02dd, + 0x497a5a08, 0x497a5809, 0x4a025c08, 0x00008000, + 0x0535f975, 0x05020003, 0x640f4407, 0x05f1f0d0, + 0x4a01d809, 0x00104a17, 0x1c01f000, 0x592c0009, + 0x82000580, 0x01000000, 0x05020003, 0x64134407, + 0x05f1f0c7, 0x59a28c07, 0x59a2440b, 0x0509fb23, + 0x05f200c8, 0x05fdf2c7, 0x4c040000, 0x59a2440b, + 0x42000000, 0x001124b5, 0x50000000, 0x81200480, + 0x0502100d, 0x83200c00, 0x0010d8f9, 0x50064800, + 0x812649c0, 0x05000008, 0x59240200, 0x8c000500, + 0x05000005, 0x49274005, 0x80000580, 0x5c000800, + 0x1c01f000, 0x90000541, 0x05fdf7fd, 0x59a800ad, + 0x80000040, 0x40028800, 0x0001fb08, 0x051808ac, + 0x83440580, 0x00000800, 0x05020002, 0x61c2880f, + 0x81468840, 0x05fe17f9, 0x1c01f000, 0x4803c856, + 0x4c0c0000, 0x4d340000, 0x4d440000, 0x61fa880f, + 0x60024000, 0x0509faf9, 0x0502000a, 0x5934180a, + 0x900c1d01, 0x900c1d81, 0x60002000, 0x0501fa6f, + 0x05000002, 0x60042000, 0x606c1100, 0x05fdff26, + 0x5c028800, 0x5c026800, 0x5c001800, 0x1c01f000, + 0x48efc857, 0x05011000, 0x48efc840, 0x6443c842, + 0x40000000, 0x05fd17ff, 0x42000000, 0x00111cfa, + 0x50000000, 0x80000540, 0x05000003, 0x5800000b, + 0x4801d806, 0x4a01d80f, 0xbeefbeef, 0x1c01f000, + 0x497b4000, 0x497b4001, 0x497b4002, 0x497b4003, + 0x497b4004, 0x497b4005, 0x1c01f000, 0x0501fb27, + 0x05000004, 0x916404a0, 0x0502101d, 0x0501f01b, + 0x42002000, 0x00115aa4, 0x41580000, 0x41781000, 0x58100c07, 0x800409c0, 0x0500000c, 0x90041d83, 0x0500000a, 0x90041c86, 0x05001007, 0x90041d8a, 0x05000005, 0x90041c8f, 0x05001004, 0x90041c92, 0x05021002, 0x80081000, 0x90102430, 0x80100c80, - 0x05fc17f0, 0x40080000, 0x59a8129c, 0x80080480, - 0x05021002, 0x41780000, 0x81640480, 0x05021002, - 0x41780000, 0x1c01f000, 0x05e9fe96, 0x05020015, - 0x59a86892, 0x82346d80, 0x3261103c, 0x05020011, - 0x0545f80f, 0x0500000d, 0x605c70f4, 0x50386800, - 0x82347500, 0x03f00000, 0x82387580, 0x00400000, - 0x05020007, 0x82347500, 0x000f0000, 0x82387580, - 0x00010000, 0x05000002, 0x90000541, 0x64030000, - 0x1c01f000, 0x05e9fe7f, 0x05020004, 0x59a86892, - 0x82347580, 0x01651077, 0x1c01f000, 0x05e9fe79, - 0x0502000d, 0x59a86892, 0x82347580, 0x01751077, - 0x05000009, 0x82347580, 0x01661077, 0x05000006, - 0x82347580, 0x01681077, 0x05000003, 0x82347580, - 0x01761077, 0x1c01f000, 0x05e9fe6a, 0x05020007, - 0x59a86892, 0x82347580, 0x01681077, 0x05000003, - 0x82347580, 0x01761077, 0x1c01f000, 0x05e9fe61, - 0x05020004, 0x59a86892, 0x82347580, 0x01751077, - 0x1c01f000, 0x05fdfffa, 0x05000003, 0x80000580, - 0x0501f00d, 0x59a00c07, 0x82040580, 0x000000a0, - 0x05000009, 0x82040580, 0x000000e0, 0x05000006, - 0x82040580, 0x000000d0, 0x05000003, 0x82040580, - 0x00000098, 0x1c01f000, 0x59a0020c, 0x8c00051a, - 0x1c01f000, 0x4803c856, 0x05fdffdc, 0x05000005, - 0x0501f88d, 0x05000003, 0x65034407, 0x05f1f0fc, - 0x59a0020b, 0x4803c857, 0x800001c0, 0x05f000fd, - 0xb0000485, 0x05f210fb, 0x59a0220c, 0x8c100500, - 0x0502001d, 0x4803c856, 0x05fdfe55, 0x05020004, - 0x640b4407, 0x4803c856, 0x05f1f0ed, 0x05edf80f, - 0x59a00c0b, 0x59a01a0b, 0x59a0220c, 0x59a02c07, - 0x912e5c05, 0x412cc800, 0x4807c857, 0x480fc857, - 0x4813c857, 0x4817c857, 0x4867c857, 0x0501f916, - 0x64030000, 0x0500001f, 0x59a00a0b, 0x59a01008, - 0x900811c0, 0x59a0180a, 0x900c19c0, 0x412c0000, - 0x05fdf65f, 0x4807c856, 0x59a00c0b, 0x59a01a0b, - 0x900c0581, 0x05f200d7, 0x4c040000, 0x4c0c0000, - 0x4c100000, 0x05e9fff1, 0x5c002000, 0x5c001800, - 0x5c000800, 0x59a02c07, 0x91a0cc07, 0x4807c857, - 0x4813c857, 0x4817c857, 0x0501f8fb, 0x64030000, - 0x05000004, 0x59a00a07, 0x48074407, 0x05f1f07d, - 0x64134407, 0x05f1f0be, 0x59a0220c, 0x4813c857, - 0x05fdff96, 0x05000005, 0x0501f847, 0x05000003, - 0x65034407, 0x05f1f0b6, 0x59a00c0b, 0x4807c857, - 0x8c100500, 0x05020017, 0x05fdfe15, 0x05020003, - 0x640b4407, 0x05f1f0ae, 0x59a00a0b, 0xb0040485, - 0x05f210b0, 0x59a01008, 0x900811c0, 0x59a0180a, - 0x900c19c0, 0x912c0405, 0x05fdfe2b, 0x4a01d809, - 0x0010499a, 0x1c01f000, 0x05f9fcc1, 0x05f00097, - 0x58ee580d, 0x912c1405, 0x59a01a0b, 0x0501f003, - 0x91a0140b, 0x60041800, 0x4c080000, 0x4c0c0000, - 0x05e9ffba, 0x5c001800, 0x5c001000, 0x59a00c0b, - 0x59a0220c, 0x59a02c07, 0x4807c857, 0x480bc857, - 0x50080000, 0x82000500, 0x000000ff, 0x4803c857, - 0x480fc857, 0x4813c857, 0x4817c857, 0x0501f84f, - 0x64030000, 0x05f20043, 0x64134407, 0x05f1f084, - 0x05fdff5e, 0x05000003, 0x0501f80f, 0x0502000d, - 0x4803c856, 0x61c0083f, 0x61c4103f, 0x64000800, - 0x46001000, 0x000001a7, 0x64040800, 0x64041000, - 0x64080800, 0x50080000, 0x8400054e, 0x44001000, - 0x1c01f000, 0x59a80092, 0x82000580, 0x338e103c, - 0x1c01f000, 0x4803c856, 0x4c5c0000, 0x64103000, - 0x4200b800, 0x000f4240, 0x05e9fbd9, 0x805cb840, - 0x05000005, 0x501c6800, 0x90346d02, 0x05fe07fb, - 0x90346d41, 0x485fc857, 0x5c00b800, 0x1c01f000, - 0x4803c856, 0x4c5c0000, 0x64103000, 0x4200b800, - 0x000f4240, 0x05e9fbca, 0x805cb840, 0x05000006, - 0x501c6800, 0x82346d00, 0x00000082, 0x05fe07fa, - 0x90346d41, 0x485fc857, 0x5c00b800, 0x1c01f000, - 0x4803c856, 0x4c5c0000, 0x4c600000, 0x6000b8f8, - 0x4200c000, 0x000f4240, 0x6404b800, 0x40000000, - 0x8060c040, 0x05000004, 0x505c0000, 0x8c000500, - 0x05fc07fa, 0x5c00c000, 0x5c00b800, 0x1c01f000, - 0x4803c856, 0x4c5c0000, 0x6000b8f8, 0x4578b800, - 0x5c00b800, 0x1c01f000, 0x4803c856, 0x05fdffe9, - 0x0500006a, 0x4c5c0000, 0x61c0303f, 0x61c4383f, - 0x64103000, 0x4200b800, 0x000f4240, 0x805cb840, - 0x60080000, 0x0500004f, 0x501c0000, 0x8c00050c, - 0x05fe07fb, 0x640c3000, 0x4817c857, 0x05fdffb6, - 0x05000002, 0x60802801, 0x44143800, 0x64103000, - 0x46003800, 0x00000090, 0x05fdffc2, 0x05000054, - 0x8c10051c, 0x05000008, 0x640c3000, 0x4807c857, - 0x44043800, 0x64103000, 0x64403800, 0x05fdffb9, - 0x0500004b, 0x800c19c0, 0x05000033, 0x640c3000, - 0x5008b800, 0x445c3800, 0x485fc857, 0x480fc857, - 0x800c1840, 0x05000028, 0x64103000, 0x64403800, - 0x05fdffac, 0x0500003e, 0x640c3000, 0x805cb910, - 0x445c3800, 0x485fc857, 0x480fc857, 0x800c1840, - 0x0500001d, 0x64103000, 0x64403800, 0x05fdffa1, - 0x05000033, 0x640c3000, 0x805cb910, 0x445c3800, - 0x485fc857, 0x480fc857, 0x800c1840, 0x05000012, - 0x64103000, 0x64403800, 0x05fdff96, 0x05000028, - 0x640c3000, 0x805cb910, 0x445c3800, 0x485fc857, - 0x480fc857, 0x800c1840, 0x05000007, 0x64103000, - 0x64403800, 0x05fdff8b, 0x0500001d, 0x80081000, - 0x05fdf7d3, 0x64103000, 0x65403800, 0x05fdff85, - 0x05000017, 0x90000541, 0x4803c856, 0x0501f011, - 0x4803c857, 0x64103000, 0x65403800, 0x05fdff7d, - 0x64103000, 0x4200b800, 0x000f4240, 0x805cb840, - 0x05000005, 0x501c0000, 0x8c00050c, 0x05fe07fc, - 0x05fdf7a9, 0x4803c857, 0x05ddfb70, 0x4803c856, - 0x5c00b800, 0x05fdff8f, 0x1c01f000, 0x600c0000, - 0x05fdf7fb, 0x4803c856, 0x05fdff7a, 0x60040000, - 0x0500009c, 0x4c5c0000, 0x4c600000, 0x400c6000, + 0x05fc17f0, 0x80800482, 0x05021002, 0x41780000, + 0x81640480, 0x05021002, 0x41780000, 0x1c01f000, + 0x05e9fd70, 0x05020015, 0x59a86895, 0x82346d80, + 0x3261103c, 0x05020011, 0x0545fde4, 0x0500000d, + 0x605c70f4, 0x50386800, 0x82347500, 0x03f00000, + 0x82387580, 0x00400000, 0x05020007, 0x82347500, + 0x000f0000, 0x82387580, 0x00010000, 0x05000002, + 0x90000541, 0x64030000, 0x1c01f000, 0x05e9fd59, + 0x05020004, 0x59a86895, 0x82347580, 0x01651077, + 0x1c01f000, 0x05e9fd53, 0x0502000d, 0x59a86895, + 0x82347580, 0x01751077, 0x05000009, 0x82347580, + 0x01661077, 0x05000006, 0x82347580, 0x01681077, + 0x05000003, 0x82347580, 0x01761077, 0x1c01f000, + 0x05e9fd44, 0x05020007, 0x59a86895, 0x82347580, + 0x01681077, 0x05000003, 0x82347580, 0x01761077, + 0x1c01f000, 0x05e9fd3b, 0x05020004, 0x59a86895, + 0x82347580, 0x01751077, 0x1c01f000, 0x05fdfffa, + 0x05000003, 0x80000580, 0x0501f00d, 0x59a00c07, + 0x82040580, 0x000000a0, 0x05000009, 0x82040580, + 0x000000e0, 0x05000006, 0x82040580, 0x000000d0, + 0x05000003, 0x82040580, 0x00000098, 0x1c01f000, + 0x59a0020c, 0x8c00051a, 0x1c01f000, 0x4803c856, + 0x05fdffdc, 0x05000005, 0x0501f88d, 0x05000003, + 0x65034407, 0x05edf7fe, 0x59a0020b, 0x4803c857, + 0x800001c0, 0x05ec07ff, 0xb0000485, 0x05ee17fd, + 0x59a0220c, 0x8c100500, 0x0502001d, 0x4803c856, + 0x05fdfe51, 0x05020004, 0x640b4407, 0x4803c856, + 0x05edf7ef, 0x05e9fee9, 0x59a00c0b, 0x59a01a0b, + 0x59a0220c, 0x59a02c07, 0x912e5c05, 0x412cc800, + 0x4807c857, 0x480fc857, 0x4813c857, 0x4817c857, + 0x4867c857, 0x0501f916, 0x64030000, 0x0500001f, + 0x59a00a0b, 0x59a01008, 0x900811c0, 0x59a0180a, + 0x900c19c0, 0x412c0000, 0x05fdf65b, 0x4807c856, + 0x59a00c0b, 0x59a01a0b, 0x900c0581, 0x05ee07d9, + 0x4c040000, 0x4c0c0000, 0x4c100000, 0x05e9fecb, + 0x5c002000, 0x5c001800, 0x5c000800, 0x59a02c07, + 0x91a0cc07, 0x4807c857, 0x4813c857, 0x4817c857, + 0x0501f8fb, 0x64030000, 0x05000004, 0x59a00a07, + 0x48074407, 0x05edf77f, 0x64134407, 0x05edf7c0, + 0x59a0220c, 0x4813c857, 0x05fdff96, 0x05000005, + 0x0501f847, 0x05000003, 0x65034407, 0x05edf7b8, + 0x59a00c0b, 0x4807c857, 0x8c100500, 0x05020017, + 0x05fdfe11, 0x05020003, 0x640b4407, 0x05edf7b0, + 0x59a00a0b, 0xb0040485, 0x05ee17b2, 0x59a01008, + 0x900811c0, 0x59a0180a, 0x900c19c0, 0x912c0405, + 0x05fdfe27, 0x4a01d809, 0x00104b40, 0x1c01f000, + 0x05f9fc91, 0x05ec0799, 0x58ee580d, 0x912c1405, + 0x59a01a0b, 0x0501f003, 0x91a0140b, 0x60041800, + 0x4c080000, 0x4c0c0000, 0x05e9fe94, 0x5c001800, + 0x5c001000, 0x59a00c0b, 0x59a0220c, 0x59a02c07, + 0x4807c857, 0x480bc857, 0x50080000, 0x82000500, + 0x000000ff, 0x4803c857, 0x480fc857, 0x4813c857, + 0x4817c857, 0x0501f84f, 0x64030000, 0x05ee0745, + 0x64134407, 0x05edf786, 0x05fdff5e, 0x05000003, + 0x0501f80f, 0x0502000d, 0x4803c856, 0x61c0083f, + 0x61c4103f, 0x64000800, 0x46001000, 0x000001a7, + 0x64040800, 0x64041000, 0x64080800, 0x50080000, + 0x8400054e, 0x44001000, 0x1c01f000, 0x59a80095, + 0x82000580, 0x338e103c, 0x1c01f000, 0x4803c856, + 0x4c5c0000, 0x64103000, 0x4200b800, 0x000f4240, + 0x05e9fab3, 0x805cb840, 0x05000005, 0x501c6800, + 0x90346d02, 0x05fe07fb, 0x90346d41, 0x485fc857, + 0x5c00b800, 0x1c01f000, 0x4803c856, 0x4c5c0000, + 0x64103000, 0x4200b800, 0x000f4240, 0x05e9faa4, + 0x805cb840, 0x05000006, 0x501c6800, 0x82346d00, + 0x00000082, 0x05fe07fa, 0x90346d41, 0x485fc857, + 0x5c00b800, 0x1c01f000, 0x4803c856, 0x4c5c0000, + 0x4c600000, 0x6000b8f8, 0x4200c000, 0x000f4240, + 0x6404b800, 0x40000000, 0x8060c040, 0x05000004, + 0x505c0000, 0x8c000500, 0x05fc07fa, 0x5c00c000, + 0x5c00b800, 0x1c01f000, 0x4803c856, 0x4c5c0000, + 0x6000b8f8, 0x4578b800, 0x5c00b800, 0x1c01f000, + 0x4803c856, 0x05fdffe9, 0x0500006a, 0x4c5c0000, 0x61c0303f, 0x61c4383f, 0x64103000, 0x4200b800, - 0x000f4240, 0x805cb840, 0x60080000, 0x0500008e, - 0x501c0000, 0x4803c857, 0x8c00050c, 0x05fe07fa, - 0x8c10051c, 0x05000017, 0x640c3000, 0x50180000, - 0x4803c857, 0x501c0000, 0x4803c857, 0x4817c857, - 0x05fdff3d, 0x05000002, 0x60802801, 0x44143800, - 0x64103000, 0x46003800, 0x00000090, 0x05fdff49, - 0x0500007d, 0x640c3000, 0x4807c857, 0x44043800, - 0x64103000, 0x64403800, 0x05fdff42, 0x05000076, - 0x640c3000, 0x80142800, 0x05fdff2b, 0x05000002, - 0x60842801, 0x44143800, 0x64103000, 0x46003800, - 0x00000090, 0x05fdff37, 0x0500006b, 0x800c19c0, - 0x05dc0b32, 0x4178b800, 0x900c1581, 0x05000040, - 0x64103000, 0x64803800, 0x05fdff1f, 0x05000062, - 0x640c3000, 0x501c0800, 0x4807c857, 0x9c0409c0, - 0x8004bd57, 0x485fc857, 0x480fc857, 0x805cb910, - 0x800c1840, 0x900c1581, 0x05000031, 0x64103000, - 0x64803800, 0x05fdff10, 0x05000053, 0x640c3000, - 0x501c0800, 0x4807c857, 0x9c0409c0, 0x8004bd57, - 0x485fc857, 0x480fc857, 0x805cb910, 0x800c1840, - 0x900c1581, 0x05000022, 0x64103000, 0x64803800, - 0x05fdff01, 0x05000044, 0x640c3000, 0x501c0800, + 0x000f4240, 0x805cb840, 0x60080000, 0x0500004f, + 0x501c0000, 0x8c00050c, 0x05fe07fb, 0x640c3000, + 0x4817c857, 0x05fdffb6, 0x05000002, 0x60802801, + 0x44143800, 0x64103000, 0x46003800, 0x00000090, + 0x05fdffc2, 0x05000054, 0x8c10051c, 0x05000008, + 0x640c3000, 0x4807c857, 0x44043800, 0x64103000, + 0x64403800, 0x05fdffb9, 0x0500004b, 0x800c19c0, + 0x05000033, 0x640c3000, 0x5008b800, 0x445c3800, + 0x485fc857, 0x480fc857, 0x800c1840, 0x05000028, + 0x64103000, 0x64403800, 0x05fdffac, 0x0500003e, + 0x640c3000, 0x805cb910, 0x445c3800, 0x485fc857, + 0x480fc857, 0x800c1840, 0x0500001d, 0x64103000, + 0x64403800, 0x05fdffa1, 0x05000033, 0x640c3000, + 0x805cb910, 0x445c3800, 0x485fc857, 0x480fc857, + 0x800c1840, 0x05000012, 0x64103000, 0x64403800, + 0x05fdff96, 0x05000028, 0x640c3000, 0x805cb910, + 0x445c3800, 0x485fc857, 0x480fc857, 0x800c1840, + 0x05000007, 0x64103000, 0x64403800, 0x05fdff8b, + 0x0500001d, 0x80081000, 0x05fdf7d3, 0x64103000, + 0x65403800, 0x05fdff85, 0x05000017, 0x90000541, + 0x4803c856, 0x0501f011, 0x4803c857, 0x64103000, + 0x65403800, 0x05fdff7d, 0x64103000, 0x4200b800, + 0x000f4240, 0x805cb840, 0x05000005, 0x501c0000, + 0x8c00050c, 0x05fe07fc, 0x05fdf7a9, 0x4803c857, + 0x05ddfa05, 0x4803c856, 0x5c00b800, 0x05fdff8f, + 0x1c01f000, 0x600c0000, 0x05fdf7fb, 0x4803c856, + 0x05fdff7a, 0x60040000, 0x0500009c, 0x4c5c0000, + 0x4c600000, 0x400c6000, 0x61c0303f, 0x61c4383f, + 0x64103000, 0x4200b800, 0x000f4240, 0x805cb840, + 0x60080000, 0x0500008e, 0x501c0000, 0x4803c857, + 0x8c00050c, 0x05fe07fa, 0x8c10051c, 0x05000017, + 0x640c3000, 0x50180000, 0x4803c857, 0x501c0000, + 0x4803c857, 0x4817c857, 0x05fdff3d, 0x05000002, + 0x60802801, 0x44143800, 0x64103000, 0x46003800, + 0x00000090, 0x05fdff49, 0x0500007d, 0x640c3000, + 0x4807c857, 0x44043800, 0x64103000, 0x64403800, + 0x05fdff42, 0x05000076, 0x640c3000, 0x80142800, + 0x05fdff2b, 0x05000002, 0x60842801, 0x44143800, + 0x64103000, 0x46003800, 0x00000090, 0x05fdff37, + 0x0500006b, 0x800c19c0, 0x05dc09c7, 0x4178b800, + 0x900c1581, 0x05000040, 0x64103000, 0x64803800, + 0x05fdff1f, 0x05000062, 0x640c3000, 0x501c0800, 0x4807c857, 0x9c0409c0, 0x8004bd57, 0x485fc857, 0x480fc857, 0x805cb910, 0x800c1840, 0x900c1581, - 0x05000013, 0x64103000, 0x64803800, 0x05fdfef2, - 0x05000035, 0x640c3000, 0x501c0800, 0x4807c857, + 0x05000031, 0x64103000, 0x64803800, 0x05fdff10, + 0x05000053, 0x640c3000, 0x501c0800, 0x4807c857, 0x9c0409c0, 0x8004bd57, 0x485fc857, 0x480fc857, - 0x445cc800, 0x8064c800, 0x4178b800, 0x800c1840, - 0x900c1581, 0x05000002, 0x05fdf7c2, 0x64103000, - 0x65a03800, 0x05fdfee0, 0x05000023, 0x640c3000, - 0x501c0800, 0x4807c857, 0x82040d00, 0x000000ff, - 0x9c0409c0, 0x8004bd57, 0x4807c857, 0x485fc857, - 0x4863c857, 0x4867c857, 0x480fc857, 0x40301000, - 0x41780800, 0x60100000, 0x0519fc90, 0x4807c857, - 0x800409c0, 0x05000006, 0x60100000, 0x80000c81, - 0x805cb910, 0x80040840, 0x05fe07fe, 0x445cc800, - 0x485fc857, 0x4863c857, 0x4867c857, 0x90000541, - 0x4803c856, 0x5c00c000, 0x5c00b800, 0x05fdfeed, - 0x1c01f000, 0x600c0000, 0x05fdf7fb, 0x4c000000, - 0x599c0018, 0x8c000514, 0x5c000000, 0x1c01f000, - 0x05fdfffb, 0x05000003, 0x59a80249, 0x8c000518, - 0x1c01f000, 0x599c0018, 0x8c000516, 0x05020003, - 0x90000541, 0x1c01f000, 0x80000580, 0x05fdf7fe, - 0x59a0020c, 0x8c000518, 0x1c01f000, 0x60003020, - 0x80183040, 0x05000010, 0x0541fdd5, 0x05fc07fd, - 0x05ddffa1, 0x605430f4, 0x50183800, 0x821c0500, - 0x00007000, 0x05000006, 0x480350d8, 0x821c0500, - 0xffff8fff, 0x44003000, 0x80000580, 0x64030000, - 0x1c01f000, 0x4803c856, 0x4a034408, 0x0000cccc, - 0x90000541, 0x05fdf7fa, 0x0541fdc1, 0x05fc07ff, - 0x600008f4, 0x58040015, 0x82000500, 0xffff8fff, - 0x59a810d8, 0x80080540, 0x48000815, 0x64030000, - 0x1c01f000, 0x59a80005, 0x8c000514, 0x05000005, - 0x42000000, 0x0010dd3e, 0x50000000, 0x90000528, - 0x1c01f000, 0x59a80092, 0x82000580, 0x041e1014, + 0x805cb910, 0x800c1840, 0x900c1581, 0x05000022, + 0x64103000, 0x64803800, 0x05fdff01, 0x05000044, + 0x640c3000, 0x501c0800, 0x4807c857, 0x9c0409c0, + 0x8004bd57, 0x485fc857, 0x480fc857, 0x805cb910, + 0x800c1840, 0x900c1581, 0x05000013, 0x64103000, + 0x64803800, 0x05fdfef2, 0x05000035, 0x640c3000, + 0x501c0800, 0x4807c857, 0x9c0409c0, 0x8004bd57, + 0x485fc857, 0x480fc857, 0x445cc800, 0x8064c800, + 0x4178b800, 0x800c1840, 0x900c1581, 0x05000002, + 0x05fdf7c2, 0x64103000, 0x65a03800, 0x05fdfee0, + 0x05000023, 0x640c3000, 0x501c0800, 0x4807c857, + 0x82040d00, 0x000000ff, 0x9c0409c0, 0x8004bd57, + 0x4807c857, 0x485fc857, 0x4863c857, 0x4867c857, + 0x480fc857, 0x40301000, 0x41780800, 0x60100000, + 0x0519ffa3, 0x4807c857, 0x800409c0, 0x05000006, + 0x60100000, 0x80000c81, 0x805cb910, 0x80040840, + 0x05fe07fe, 0x445cc800, 0x485fc857, 0x4863c857, + 0x4867c857, 0x90000541, 0x4803c856, 0x5c00c000, + 0x5c00b800, 0x05fdfeed, 0x1c01f000, 0x600c0000, + 0x05fdf7fb, 0x4c000000, 0x599c0018, 0x8c000514, + 0x5c000000, 0x1c01f000, 0x05fdfffb, 0x05000003, + 0x59a8024c, 0x8c000518, 0x1c01f000, 0x599c0018, + 0x8c000516, 0x05020003, 0x90000541, 0x1c01f000, + 0x80000580, 0x05fdf7fe, 0x60003020, 0x80183040, + 0x05000010, 0x0545fbad, 0x05fc07fd, 0x05ddfe60, + 0x605430f4, 0x50183800, 0x821c0500, 0x00007000, + 0x05000006, 0x480350dd, 0x821c0500, 0xffff8fff, + 0x44003000, 0x80000580, 0x64030000, 0x1c01f000, + 0x4803c856, 0x4a034408, 0x0000cccc, 0x90000541, + 0x05fdf7fa, 0x0545fb99, 0x05fc07ff, 0x600008f4, + 0x58040015, 0x82000500, 0xffff8fff, 0x59a810dd, + 0x80080540, 0x48000815, 0x64030000, 0x1c01f000, + 0x59a00c07, 0x90040588, 0x05000004, 0x90040589, + 0x05000016, 0x05edf5f7, 0x59000200, 0x80000540, + 0x05000043, 0x59001001, 0x59001802, 0x59002803, + 0x900811c0, 0x900c19c0, 0x901429c0, 0x61702000, + 0x8d0c0538, 0x05000002, 0x8410255e, 0x59000800, + 0x480b4008, 0x48134209, 0x480f400a, 0x4817400b, + 0x4807400c, 0x05edf59b, 0x916c0580, 0x0502002e, + 0x8d0c0538, 0x05020030, 0x59000200, 0x80001d40, + 0x0500002b, 0x59a0100b, 0x800811c0, 0x05ec05d9, + 0x900811c0, 0x41780800, 0x61700000, 0x4c0c0000, + 0x0519ff33, 0x5c001800, 0x800409c0, 0x05ee05d1, + 0x400c0000, 0x80080480, 0x05001002, 0x400c1000, + 0x480a0400, 0x82080400, 0x00000800, 0x480350ad, + 0x82080400, 0x000007f0, 0x480350ac, 0x82080c00, + 0x0010e380, 0x42001000, 0x00111b80, 0x05ddfcba, + 0x480b500d, 0x481b500e, 0x59a0280b, 0x59a01008, + 0x59a0180a, 0x900801c0, 0x48020001, 0x900c01c0, + 0x48020002, 0x901401c0, 0x48020003, 0x850e1d78, + 0x05fdf7c7, 0x60c00800, 0x0501f004, 0x60c40800, + 0x0501f002, 0x60c80800, 0x4807c857, 0x48074407, + 0x05edf5a7, 0x59a80005, 0x8c000514, 0x05000005, + 0x42000000, 0x00111cc4, 0x50000000, 0x90000528, + 0x1c01f000, 0x59a80095, 0x82000580, 0x041e1014, 0x1c01f000, 0x4807c857, 0x480bc857, 0x480fc857, - 0x4c040000, 0x4c080000, 0x4c0c0000, 0x05f1ff11, + 0x4c040000, 0x4c080000, 0x4c0c0000, 0x05f1fdcf, 0x5c001800, 0x5c001000, 0x5c000800, 0x05000003, - 0x80141d43, 0x05f1fed5, 0x1c01f000, 0x4807c857, + 0x80141d43, 0x05f1fd91, 0x1c01f000, 0x4807c857, 0x480bc857, 0x480fc857, 0x4c040000, 0x4c080000, - 0x4c0c0000, 0x05f1ff03, 0x5c001800, 0x5c001000, + 0x4c0c0000, 0x05f1fdc1, 0x5c001800, 0x5c001000, 0x5c000800, 0x05000004, 0x800c1880, 0x80141d03, - 0x05f1fec6, 0x1c01f000, 0x641f4407, 0x05edf6c8, - 0x64eb4407, 0x05edf6c6, 0x051dfcdf, 0x497b8880, + 0x05f1fd82, 0x1c01f000, 0x641f4407, 0x05edf57c, + 0x64eb4407, 0x05edf57a, 0x051dffa9, 0x497b8880, 0x59c400a3, 0x82000500, 0xfcf8ffff, 0x480388a3, - 0x05e9fecb, 0x05020003, 0x600dd000, 0x0515fc86, - 0x4d3c0000, 0x60067800, 0x0535faa5, 0x5c027800, - 0x05e9fec3, 0x0502000b, 0x59c408a3, 0x84040d72, - 0x480788a3, 0x6009d000, 0x0515fc7b, 0x05e9fec0, - 0x05de0a4e, 0x59c408a3, 0x84040d32, 0x480788a3, - 0x05e9feb3, 0x05020012, 0x42000000, 0x00200000, - 0x05e9fa27, 0x600dd000, 0x0515fc6f, 0x05e9feb4, - 0x0500000b, 0x59c408a3, 0x84040d72, 0x480788a3, - 0x6009d000, 0x0515fc68, 0x05e9fead, 0x05de0a3b, - 0x59c408a3, 0x84040d32, 0x480788a3, 0x1c01f000, - 0x59c400a4, 0x4c580000, 0x4c500000, 0x4c540000, - 0x9000050f, 0x90000487, 0x05001008, 0x90006c87, - 0x05de1a2e, 0x0c01f807, 0x5c00a800, 0x5c00a000, - 0x5c00b000, 0x1c01f000, 0x0501f8e9, 0x05fdf7fb, - 0x00104bbb, 0x00104bc1, 0x00104be5, 0x00104bff, - 0x00104ca1, 0x00104bba, 0x1c01f000, 0x59c40806, - 0x8c040500, 0x05020003, 0x84040d40, 0x48078806, - 0x1c01f000, 0x59c40005, 0x8c000534, 0x050206b2, - 0x4a038805, 0xffffffff, 0x42006000, 0x00020000, - 0x0501fe94, 0x59a80043, 0x82000500, 0xfffffffa, - 0x84000542, 0x48035043, 0x497b5249, 0x42000800, - 0x00110258, 0x45780800, 0x497b50b2, 0x42000000, - 0x0010e510, 0x46000000, 0x0000ffff, 0x42006000, - 0xffefffff, 0x42006800, 0x40000000, 0x0501fe7c, + 0x05e9fd5b, 0x05020003, 0x600dd000, 0x0515fefd, + 0x4d3c0000, 0x60067800, 0x0535fe58, 0x5c027800, + 0x05e9fd53, 0x05020009, 0x59c408a3, 0x84040d72, + 0x480788a3, 0x6009d000, 0x0515fef2, 0x59c408a3, + 0x84040d32, 0x480788a3, 0x05e9fd45, 0x05020010, + 0x42000000, 0x00200000, 0x05e9f8b5, 0x600dd000, + 0x0515fee8, 0x05e9fd46, 0x05000009, 0x59c408a3, + 0x84040d72, 0x480788a3, 0x6009d000, 0x0515fee1, + 0x59c408a3, 0x84040d32, 0x480788a3, 0x05e9fd30, + 0x05fc07f7, 0x1c01f000, 0x59a80006, 0x8c000510, + 0x1c01f000, 0x59c400a4, 0x4c580000, 0x4c500000, + 0x4c540000, 0x9000050f, 0x90000487, 0x05001008, + 0x90006c87, 0x05de1874, 0x0c01f807, 0x5c00a800, + 0x5c00a000, 0x5c00b000, 0x1c01f000, 0x0501f8e9, + 0x05fdf7fb, 0x00104db0, 0x00104db6, 0x00104dda, + 0x00104df4, 0x00104e96, 0x00104daf, 0x1c01f000, + 0x59c40806, 0x8c040500, 0x05020003, 0x84040d40, + 0x48078806, 0x1c01f000, 0x59c40005, 0x8c000534, + 0x050206b4, 0x4a038805, 0xffffffff, 0x42006000, + 0x00020000, 0x0501fe96, 0x59a80046, 0x82000500, + 0xfffffffa, 0x84000542, 0x48035046, 0x497b524c, + 0x42000800, 0x001141fc, 0x45780800, 0x497b50b7, + 0x42000000, 0x001124b4, 0x46000000, 0x0000ffff, + 0x42006000, 0xffefffff, 0x42006800, 0x40000000, + 0x0501fe7e, 0x59c40006, 0x82000500, 0xffffff0f, + 0x48038806, 0x60400800, 0x42001000, 0x001053a5, + 0x0515fce2, 0x0501f001, 0x42006000, 0xffffffff, + 0x42006800, 0x00800000, 0x0501fe70, 0x6120b001, + 0x59c400a4, 0x9000050f, 0x9000058a, 0x0500000d, + 0x8058b040, 0x05fe07fb, 0x497b5041, 0x42006000, + 0xbf7fffff, 0x42006800, 0x00018000, 0x0501fe63, + 0x42006000, 0xfffeffff, 0x41786800, 0x0501f65f, + 0x497b5041, 0x640350b6, 0x80000580, 0x0501f667, + 0x4a038805, 0xffffffff, 0x59a800b6, 0x90000c84, + 0x05de181d, 0x0c01f001, 0x00104dfd, 0x00104e23, + 0x00104e8f, 0x4803c856, 0x59c400a3, 0x8400051e, + 0x480388a3, 0x640750b6, 0x59c40008, 0x82000540, + 0x00000280, 0x48038808, 0x0501fe32, 0x42007800, + 0x00112005, 0x4a007806, 0x11010000, 0x4200a000, + 0x001124b7, 0x4200a800, 0x0011200c, 0x6008b000, + 0x0545fa12, 0x59c40802, 0x84040d0c, 0x48078802, + 0x600c0800, 0x497b50c1, 0x0501fd11, 0x640750c1, + 0x497b50bb, 0x0501fe47, 0x42006000, 0xffffffff, + 0x42006800, 0x00080000, 0x0501fe30, 0x42006000, + 0xfff7ffff, 0x41786800, 0x0501f62c, 0x59a800bb, + 0x497b50bb, 0x80002540, 0x0500005e, 0x59c40004, + 0x90000503, 0x05020065, 0x59a80846, 0x8c040502, + 0x05000049, 0x9010058c, 0x0502004c, 0x90100418, + 0x8000b104, 0x41cc1000, 0x42001800, 0x00112005, + 0x50080800, 0x500c0000, 0x80040580, 0x05020019, + 0x80081000, 0x800c1800, 0x8058b040, 0x05fe07f9, + 0x0501fe24, 0x59c80015, 0x84000508, 0x48039015, + 0x42006000, 0xffffffff, 0x42006800, 0x00500000, + 0x0501fe0a, 0x640b50b6, 0x640b5041, 0x05e5fd22, + 0x6140080f, 0x42001000, 0x00105303, 0x0515fe01, + 0x59a80046, 0x84000506, 0x48035046, 0x0501f5e9, + 0x59cc0806, 0x82040d80, 0x11010000, 0x05020027, + 0x59cc0800, 0x82040500, 0x00ffffff, 0x05000018, + 0x82000580, 0x000000ef, 0x05020015, 0x59cc0801, + 0x82040500, 0x00ffffff, 0x82000580, 0x000000ef, + 0x0502000f, 0x91cca407, 0x4200a800, 0x001124b7, + 0x6008b000, 0x50500800, 0x50540000, 0x80040480, + 0x05001007, 0x05020011, 0x8050a000, 0x8054a800, + 0x8058b040, 0x05fe07f8, 0x0501f00c, 0x59a80046, + 0x84000502, 0x48035046, 0x59c80015, 0x84000508, + 0x48039015, 0x41cca000, 0x4200a800, 0x00112005, + 0x6024b000, 0x0545f9a9, 0x0501fde6, 0x42006000, + 0xffffffff, 0x42006800, 0x00080000, 0x0501fdcf, + 0x42006000, 0xfff7ffff, 0x41786800, 0x0501fdcb, + 0x42006000, 0xffffffff, 0x60006880, 0x0501fdc7, + 0x59c40004, 0x90000503, 0x05020004, 0x497b50bb, + 0x600c0800, 0x0501f49a, 0x1c01f000, 0x1c01f000, + 0x59a80041, 0x90006d8f, 0x05000003, 0x9000059b, + 0x05020c65, 0x1c01f000, 0x59a80046, 0x84000506, + 0x48035046, 0x497b50c1, 0x59a80041, 0x90000c9e, + 0x05da1f79, 0x0c01f001, 0x00104ecd, 0x00104edd, + 0x00104eff, 0x00104f1a, 0x00104f38, 0x00104f3b, + 0x00104f3e, 0x00104f41, 0x00104f44, 0x00104f58, + 0x00104f5b, 0x00104faf, 0x00104fb2, 0x00104fbf, + 0x00104fc2, 0x00104fd4, 0x00104fd9, 0x00105029, + 0x00105050, 0x001050c8, 0x001050ef, 0x0010513e, + 0x00105184, 0x001051d3, 0x001051f1, 0x00105233, + 0x00105251, 0x00105261, 0x00105262, 0x4803c856, + 0x601ed800, 0x0509fcdb, 0x05000006, 0x42006000, + 0xffffffd7, 0x41786800, 0x0501fd8c, 0x0501f009, 0x59c40006, 0x82000500, 0xffffff0f, 0x48038806, - 0x60400800, 0x42001000, 0x001051ae, 0x0515fabd, - 0x0501f001, 0x42006000, 0xffffffff, 0x42006800, - 0x00800000, 0x0501fe6e, 0x6120b001, 0x59c400a4, - 0x9000050f, 0x9000058a, 0x0500000d, 0x8058b040, - 0x05fe07fb, 0x497b503e, 0x42006000, 0xbf7fffff, - 0x42006800, 0x00018000, 0x0501fe61, 0x42006000, - 0xfffeffff, 0x41786800, 0x0501f65d, 0x497b503e, - 0x640350b1, 0x80000580, 0x0501f665, 0x4a038805, - 0xffffffff, 0x59a800b1, 0x90000c84, 0x05de19d7, - 0x0c01f001, 0x00104c08, 0x00104c2e, 0x00104c9a, - 0x4803c856, 0x59c400a3, 0x8400051e, 0x480388a3, - 0x640750b1, 0x59c40008, 0x82000540, 0x00000280, - 0x48038808, 0x0501fe30, 0x42007800, 0x0010e06b, - 0x4a007806, 0x11010000, 0x4200a000, 0x0010e513, - 0x4200a800, 0x0010e072, 0x6008b000, 0x0541fc8c, - 0x59c40802, 0x84040d0c, 0x48078802, 0x600c0800, - 0x497b50bc, 0x0501fd0f, 0x640750bc, 0x497b50b6, - 0x0501fe45, 0x42006000, 0xffffffff, 0x42006800, - 0x00080000, 0x0501fe2e, 0x42006000, 0xfff7ffff, - 0x41786800, 0x0501f62a, 0x59a800b6, 0x497b50b6, - 0x80002540, 0x0500005e, 0x59c40004, 0x90000503, - 0x05020065, 0x59a80843, 0x8c040502, 0x05000049, - 0x9010058c, 0x0502004c, 0x90100418, 0x8000b104, - 0x41cc1000, 0x42001800, 0x0010e06b, 0x50080800, - 0x500c0000, 0x80040580, 0x05020019, 0x80081000, - 0x800c1800, 0x8058b040, 0x05fe07f9, 0x0501fe22, - 0x59c80015, 0x84000508, 0x48039015, 0x42006000, - 0xffffffff, 0x42006800, 0x00500000, 0x0501fe08, - 0x640b50b1, 0x640b503e, 0x05e5fe97, 0x6140080f, - 0x42001000, 0x0010510c, 0x0515fb92, 0x59a80043, - 0x84000506, 0x48035043, 0x0501f5e7, 0x59cc0806, - 0x82040d80, 0x11010000, 0x05020027, 0x59cc0800, - 0x82040500, 0x00ffffff, 0x05000018, 0x82000580, - 0x000000ef, 0x05020015, 0x59cc0801, 0x82040500, - 0x00ffffff, 0x82000580, 0x000000ef, 0x0502000f, - 0x91cca407, 0x4200a800, 0x0010e513, 0x6008b000, - 0x50500800, 0x50540000, 0x80040480, 0x05001007, - 0x05020011, 0x8050a000, 0x8054a800, 0x8058b040, - 0x05fe07f8, 0x0501f00c, 0x59a80043, 0x84000502, - 0x48035043, 0x59c80015, 0x84000508, 0x48039015, - 0x41cca000, 0x4200a800, 0x0010e06b, 0x6024b000, - 0x0541fc23, 0x0501fde4, 0x42006000, 0xffffffff, - 0x42006800, 0x00080000, 0x0501fdcd, 0x42006000, - 0xfff7ffff, 0x41786800, 0x0501fdc9, 0x42006000, - 0xffffffff, 0x60006880, 0x0501fdc5, 0x59c40004, - 0x90000503, 0x05020004, 0x497b50b6, 0x600c0800, - 0x0501f498, 0x1c01f000, 0x1c01f000, 0x59a8003e, - 0x90006d8f, 0x05000003, 0x9000059b, 0x05020c63, - 0x1c01f000, 0x59a80043, 0x84000506, 0x48035043, - 0x497b50bc, 0x59a8003e, 0x90000c9e, 0x05de1933, - 0x0c01f001, 0x00104cd8, 0x00104ce8, 0x00104d0a, - 0x00104d24, 0x00104d42, 0x00104d45, 0x00104d48, - 0x00104d4b, 0x00104d4e, 0x00104d62, 0x00104d65, - 0x00104db9, 0x00104dbc, 0x00104dc9, 0x00104dcc, - 0x00104dde, 0x00104de3, 0x00104e32, 0x00104e59, - 0x00104ed1, 0x00104ef8, 0x00104f47, 0x00104f8d, - 0x00104fdc, 0x00104ffa, 0x0010503c, 0x0010505a, - 0x0010506a, 0x0010506b, 0x4803c856, 0x601ed800, - 0x0509fbe6, 0x05000006, 0x42006000, 0xffffffd7, - 0x41786800, 0x0501fd8a, 0x0501f009, 0x59c40006, - 0x82000500, 0xffffff0f, 0x48038806, 0x4a038805, - 0x000000f0, 0x0509ff22, 0x0509fb52, 0x1c01f000, - 0x4803c856, 0x42006000, 0xbf7fffff, 0x42006800, - 0x00400000, 0x0501fd7a, 0x05e5fe0b, 0x6407503e, - 0x42001000, 0x001051ae, 0x0515f9e3, 0x0501fcd4, - 0x6140080f, 0x42001000, 0x0010510c, 0x0515f301, - 0x59a800b6, 0x90000594, 0x0502001e, 0x4803c857, - 0x42006000, 0xffbfffff, 0x41786800, 0x0501fd68, - 0x59c40004, 0x90000503, 0x05020016, 0x42001000, - 0x0010510c, 0x0515f9c0, 0x59cc1006, 0x82081580, - 0x11020000, 0x05020010, 0x59cc1007, 0x8c08053e, - 0x0500000a, 0x59a80043, 0x8c000504, 0x05020007, - 0x42000000, 0x0010e39d, 0x0541fada, 0x59a80043, - 0x84000544, 0x48035043, 0x6443503e, 0x0501f0dc, - 0x1c01f000, 0x0501f3f9, 0x4803c856, 0x640f503e, - 0x42006000, 0xbf3fffff, 0x42006800, 0x00100000, - 0x0501fd47, 0x42001000, 0x001051ae, 0x0515f9b2, - 0x0501fca3, 0x42001000, 0x0010510c, 0x0515f99e, - 0x59a80449, 0x90000528, 0x05000004, 0x42000800, - 0xffffd815, 0x05edf9ad, 0x42007800, 0x0010e071, - 0x46007800, 0x11020000, 0x60140800, 0x0501f40d, - 0x59a800b6, 0x80000540, 0x0500001a, 0x4803c857, - 0x42001000, 0x0010510c, 0x0515f98b, 0x59a800b6, - 0x90000594, 0x05020014, 0x59cc1006, 0x82081580, - 0x11020000, 0x05020010, 0x59cc1007, 0x8c08053e, - 0x0500000a, 0x59a80043, 0x8c000504, 0x05020007, - 0x42000000, 0x0010e39d, 0x0541faa2, 0x59a80043, - 0x84000544, 0x48035043, 0x6413503e, 0x0501f003, - 0x1c01f000, 0x0501f3c1, 0x4803c856, 0x6417503e, - 0x0501f117, 0x4c5c0000, 0x6004b800, 0x0501f0ed, - 0x4803c856, 0x641f503e, 0x0501f1b0, 0x4c5c0000, - 0x6004b800, 0x0501f186, 0x4803c856, 0x6427503e, - 0x91cca406, 0x4200a800, 0x0010e071, 0x6014b000, - 0x0541fb53, 0x42007800, 0x0010e071, 0x46007800, - 0x11050100, 0x8d0c0506, 0x05000243, 0x60140800, - 0x0501fbd4, 0x4d3c0000, 0x60067800, 0x0535f8c8, - 0x5c027800, 0x1c01f000, 0x4c5c0000, 0x6004b800, - 0x0501f1e5, 0x4803c856, 0x642f503e, 0x42001000, - 0x0010e072, 0x4008a800, 0x6080b000, 0x4600a800, - 0xffffffff, 0x8054a800, 0x8058b040, 0x05fe07fc, - 0x42007800, 0x0010e071, 0x46007800, 0x11060000, - 0x8d0c0506, 0x05000005, 0x50080000, 0x46001000, - 0x00ffffff, 0x0501f03e, 0x42024800, 0x0010e512, - 0x0541fb7c, 0x40083000, 0x41782800, 0x41781800, - 0x41782000, 0x59240200, 0x8c000500, 0x05000012, - 0x8c000502, 0x05000010, 0x801429c0, 0x05020002, - 0x800c1800, 0x80142800, 0x59244408, 0x82204500, - 0x000000ff, 0x400c0000, 0x50182000, 0x0c01f810, - 0x80102540, 0x44103000, 0x800c19c0, 0x05020002, - 0x80183000, 0x91264c0d, 0x8058b040, 0x05fe07ea, - 0x50080000, 0x82000500, 0x00ffffff, 0x801428f0, - 0x80140540, 0x44001000, 0x0501f019, 0x00104da3, - 0x00104da8, 0x00104dad, 0x00104db2, 0x802000f0, - 0x82102500, 0x00ffffff, 0x800c1800, 0x1c01f000, - 0x802000e0, 0x82102500, 0xff00ffff, 0x800c1800, - 0x1c01f000, 0x802000d0, 0x82102500, 0xffff00ff, - 0x800c1800, 0x1c01f000, 0x40200000, 0x82102500, - 0xffffff00, 0x41781800, 0x1c01f000, 0x60840800, - 0x0501f378, 0x4c5c0000, 0x6004b800, 0x0501f223, - 0x4803c856, 0x6437503e, 0x91cca406, 0x4200a800, - 0x0010e071, 0x6084b000, 0x0541fae5, 0x42007800, - 0x0010e071, 0x46007800, 0x11070000, 0x60840800, - 0x0501f368, 0x4c5c0000, 0x6004b800, 0x0501f273, - 0x4803c856, 0x90040d41, 0x0501fc95, 0x643f503e, - 0x497b50b6, 0x42006000, 0xffffffff, 0x42006800, - 0x00300000, 0x0501fc82, 0x42006000, 0xffdfffff, - 0x41786800, 0x0501fc7e, 0x6140080f, 0x42001000, - 0x0010510c, 0x0515f0ac, 0x4803c856, 0x59a800b6, - 0x80000540, 0x05020321, 0x1c01f000, 0x4803c856, - 0x6447503e, 0x91cca406, 0x4200a800, 0x0010e071, - 0x6014b000, 0x0541fabe, 0x4200a800, 0x0010e071, - 0x4600a800, 0x11020000, 0x8d0c0506, 0x05020041, - 0x59a80c49, 0x82040580, 0x0000ffff, 0x0500003d, - 0x90040d30, 0x05000005, 0x42000800, 0xffffd815, - 0x05edf8d2, 0x0501f037, 0x59cc0007, 0x8c00053c, - 0x05000034, 0x42024800, 0x0010e512, 0x0541faf9, - 0x59240200, 0xb0000d23, 0xb0040da3, 0x05020021, - 0x59240a08, 0x42001000, 0x0010e072, 0x0501fab6, - 0x05000009, 0x59240c08, 0x05e5fcf7, 0x59240200, - 0x84000502, 0x84000518, 0x84000544, 0x48024a00, - 0x0501f014, 0x59240200, 0x82000540, 0x00001006, - 0x84000506, 0x48024a00, 0x48064a08, 0x82042c00, - 0x00102853, 0x50142800, 0x82142d00, 0x000000ff, - 0x48164c08, 0x59240005, 0x82000500, 0x00ffff00, - 0x80140d40, 0x48064805, 0x40140800, 0x05e5fccf, - 0x91264c0d, 0x8058b040, 0x05fe07da, 0x42024800, - 0x0010e512, 0x59242a00, 0x8c140502, 0x05000005, - 0x8c140500, 0x05000003, 0x59242c08, 0x4817503d, - 0x60140800, 0x0501f2ff, 0x4c5c0000, 0x4178b800, - 0x59a800b6, 0x80000540, 0x05000021, 0x4803c857, - 0x42001000, 0x0010510c, 0x0515f87b, 0x59a800b6, - 0x90000594, 0x05020019, 0x59cc1006, 0x82081580, - 0x11030000, 0x05020015, 0x59cc1007, 0x8c08053e, - 0x0500000a, 0x59a80043, 0x8c000504, 0x05020007, - 0x42000000, 0x0010e39d, 0x0541f992, 0x59a80043, - 0x84000544, 0x48035043, 0x805cb9c0, 0x05000004, - 0x641b503e, 0x05fdfef7, 0x0501f005, 0x644b503e, - 0x0501f805, 0x0501f002, 0x0501faac, 0x5c00b800, - 0x1c01f000, 0x4803c856, 0x644f503e, 0x91cca407, - 0x4200a800, 0x0010e072, 0x6010b000, 0x0541fa48, - 0x4200a800, 0x0010e071, 0x4600a800, 0x11030000, - 0x8d0c0506, 0x0502006a, 0x42024800, 0x0010e512, - 0x0541fa90, 0x4c600000, 0x4178c000, 0x59a80249, - 0x82000500, 0xfffffffc, 0x48035249, 0x59240200, - 0x40000800, 0x82040d00, 0xfffffb17, 0x48064a00, - 0x8c000500, 0x05000048, 0x8c000518, 0x05020046, - 0x8c000502, 0x05020004, 0x59240400, 0x8c000502, - 0x05000041, 0x59240a08, 0x42001000, 0x0010e072, - 0x0501fa3d, 0x0500002b, 0x59240005, 0x82000500, - 0x00ffff00, 0x48024805, 0x59240200, 0x8c000502, - 0x05000019, 0x59240207, 0x82000500, 0x0000ffff, - 0x05000015, 0x8060c000, 0x59240c08, 0x05e5fc72, - 0x4c640000, 0x4c580000, 0x4d2c0000, 0x5924c809, - 0x6040b000, 0x50640000, 0x800001c0, 0x05000004, - 0x4578c800, 0x40025800, 0x05ddfaf8, 0x8064c800, - 0x8058b040, 0x05fe07f8, 0x5c025800, 0x5c00b000, - 0x5c00c800, 0x59240200, 0x84000502, 0x84000544, - 0x48024a00, 0x59240400, 0x8c000504, 0x05000016, - 0x59240200, 0x84000546, 0x48024a00, 0x0501f012, - 0x59240200, 0x90000546, 0x84000506, 0x48024a00, - 0x82042c00, 0x00102853, 0x50142800, 0x82142d00, - 0x000000ff, 0x48164c08, 0x59240005, 0x82000500, - 0x00ffff00, 0x80140d40, 0x48064805, 0x40140800, - 0x05e5fc36, 0x59240200, 0x84000518, 0x48024a00, - 0x91264c0d, 0x8058b040, 0x05fe07ad, 0x8060c1c0, - 0x05020b0b, 0x5c00c000, 0x42024800, 0x0010e512, - 0x59242a00, 0x8c140502, 0x05000005, 0x8c140500, - 0x05000003, 0x59242c08, 0x4817503d, 0x60140800, - 0x0501f260, 0x4c5c0000, 0x4178b800, 0x59a800b6, + 0x4a038805, 0x000000f0, 0x050df81d, 0x0509fc41, + 0x1c01f000, 0x4803c856, 0x42006000, 0xbf7fffff, + 0x42006800, 0x00400000, 0x0501fd7c, 0x05e5fc96, + 0x64075041, 0x42001000, 0x001053a5, 0x0515fc08, + 0x0501fcd6, 0x6140080f, 0x42001000, 0x00105303, + 0x0515f570, 0x59a800bb, 0x90000594, 0x0502001e, + 0x4803c857, 0x42006000, 0xffbfffff, 0x41786800, + 0x0501fd6a, 0x59c40004, 0x90000503, 0x05020016, + 0x42001000, 0x00105303, 0x0515fbe5, 0x59cc1006, + 0x82081580, 0x11020000, 0x05020010, 0x59cc1007, + 0x8c08053e, 0x0500000a, 0x59a80046, 0x8c000504, + 0x05020007, 0x42000000, 0x0011233e, 0x0545f860, + 0x59a80046, 0x84000544, 0x48035046, 0x64435041, + 0x0501f0dd, 0x1c01f000, 0x0501f3fb, 0x4803c856, + 0x640f5041, 0x42006000, 0xbf3fffff, 0x42006800, + 0x00100000, 0x0501fd49, 0x42001000, 0x001053a5, + 0x0515fbd7, 0x0501fca5, 0x42001000, 0x00105303, + 0x0515fbc3, 0x59a8044c, 0x90000528, 0x05000004, + 0x42000800, 0xffffd815, 0x05edf85f, 0x05e9fbc0, + 0x42007800, 0x0011200b, 0x46007800, 0x11020000, + 0x60140800, 0x0501f40e, 0x59a800bb, 0x80000540, + 0x0500001a, 0x4803c857, 0x42001000, 0x00105303, + 0x0515fbaf, 0x59a800bb, 0x90000594, 0x05020014, + 0x59cc1006, 0x82081580, 0x11020000, 0x05020010, + 0x59cc1007, 0x8c08053e, 0x0500000a, 0x59a80046, + 0x8c000504, 0x05020007, 0x42000000, 0x0011233e, + 0x0545f827, 0x59a80046, 0x84000544, 0x48035046, + 0x64135041, 0x0501f003, 0x1c01f000, 0x0501f3c2, + 0x4803c856, 0x64175041, 0x0501f118, 0x4c5c0000, + 0x6004b800, 0x0501f0ee, 0x4803c856, 0x641f5041, + 0x0501f1b1, 0x4c5c0000, 0x6004b800, 0x0501f187, + 0x4803c856, 0x64275041, 0x91cca406, 0x4200a800, + 0x0011200b, 0x6014b000, 0x0545f8d8, 0x42007800, + 0x0011200b, 0x46007800, 0x11050100, 0x8d0c0506, + 0x05000244, 0x60140800, 0x0501fbd5, 0x4d3c0000, + 0x60067800, 0x0535fc79, 0x5c027800, 0x1c01f000, + 0x4c5c0000, 0x6004b800, 0x0501f1e6, 0x4803c856, + 0x642f5041, 0x42001000, 0x0011200c, 0x4008a800, + 0x6080b000, 0x4600a800, 0xffffffff, 0x8054a800, + 0x8058b040, 0x05fe07fc, 0x42007800, 0x0011200b, + 0x46007800, 0x11060000, 0x8d0c0506, 0x05000005, + 0x50080000, 0x46001000, 0x00ffffff, 0x0501f03e, + 0x42024800, 0x001124b6, 0x0545f901, 0x40083000, + 0x41782800, 0x41781800, 0x41782000, 0x59240200, + 0x8c000500, 0x05000012, 0x8c000502, 0x05000010, + 0x801429c0, 0x05020002, 0x800c1800, 0x80142800, + 0x59244408, 0x82204500, 0x000000ff, 0x400c0000, + 0x50182000, 0x0c01f810, 0x80102540, 0x44103000, + 0x800c19c0, 0x05020002, 0x80183000, 0x91264c0d, + 0x8058b040, 0x05fe07ea, 0x50080000, 0x82000500, + 0x00ffffff, 0x801428f0, 0x80140540, 0x44001000, + 0x0501f019, 0x00104f99, 0x00104f9e, 0x00104fa3, + 0x00104fa8, 0x802000f0, 0x82102500, 0x00ffffff, + 0x800c1800, 0x1c01f000, 0x802000e0, 0x82102500, + 0xff00ffff, 0x800c1800, 0x1c01f000, 0x802000d0, + 0x82102500, 0xffff00ff, 0x800c1800, 0x1c01f000, + 0x40200000, 0x82102500, 0xffffff00, 0x41781800, + 0x1c01f000, 0x60840800, 0x0501f379, 0x4c5c0000, + 0x6004b800, 0x0501f224, 0x4803c856, 0x64375041, + 0x91cca406, 0x4200a800, 0x0011200b, 0x6084b000, + 0x0545f86a, 0x42007800, 0x0011200b, 0x46007800, + 0x11070000, 0x60840800, 0x0501f369, 0x4c5c0000, + 0x6004b800, 0x0501f274, 0x4803c856, 0x90040d41, + 0x0501fc96, 0x643f5041, 0x497b50bb, 0x42006000, + 0xffffffff, 0x42006800, 0x00300000, 0x0501fc83, + 0x42006000, 0xffdfffff, 0x41786800, 0x0501fc7f, + 0x6140080f, 0x42001000, 0x00105303, 0x0515f2d0, + 0x4803c856, 0x59a800bb, 0x80000540, 0x05020322, + 0x1c01f000, 0x4803c856, 0x64475041, 0x91cca406, + 0x4200a800, 0x0011200b, 0x6014b000, 0x0545f843, + 0x4200a800, 0x0011200b, 0x4600a800, 0x11020000, + 0x8d0c0506, 0x05020041, 0x59a80c4c, 0x82040580, + 0x0000ffff, 0x0500003d, 0x90040d30, 0x05000005, + 0x42000800, 0xffffd815, 0x05e9ff83, 0x0501f037, + 0x59cc0007, 0x8c00053c, 0x05000034, 0x42024800, + 0x001124b6, 0x0545f87e, 0x59240200, 0xb0000d23, + 0xb0040da3, 0x05020021, 0x59240a08, 0x42001000, + 0x0011200c, 0x0501fab7, 0x05000009, 0x59240c08, + 0x05e5fb81, 0x59240200, 0x84000502, 0x84000518, + 0x84000544, 0x48024a00, 0x0501f014, 0x59240200, + 0x82000540, 0x00001006, 0x84000506, 0x48024a00, + 0x48064a08, 0x82042c00, 0x001028fb, 0x50142800, + 0x82142d00, 0x000000ff, 0x48164c08, 0x59240005, + 0x82000500, 0x00ffff00, 0x80140d40, 0x48064805, + 0x40140800, 0x05e5fb59, 0x91264c0d, 0x8058b040, + 0x05fe07da, 0x42024800, 0x001124b6, 0x59242a00, + 0x8c140502, 0x05000005, 0x8c140500, 0x05000003, + 0x59242c08, 0x48175040, 0x05e9faad, 0x60140800, + 0x0501f2ff, 0x4c5c0000, 0x4178b800, 0x59a800bb, 0x80000540, 0x05000021, 0x4803c857, 0x42001000, - 0x0010510c, 0x0511ffdc, 0x59a800b6, 0x90000594, - 0x05020019, 0x59cc1006, 0x82081580, 0x11040000, + 0x00105303, 0x0515fa9e, 0x59a800bb, 0x90000594, + 0x05020019, 0x59cc1006, 0x82081580, 0x11030000, 0x05020015, 0x59cc1007, 0x8c08053e, 0x0500000a, - 0x59a80043, 0x8c000504, 0x05020007, 0x42000000, - 0x0010e39d, 0x0541f8f3, 0x59a80043, 0x84000544, - 0x48035043, 0x805cb9c0, 0x05000004, 0x6423503e, - 0x05fdfe5e, 0x0501f005, 0x6453503e, 0x0501f805, - 0x0501f002, 0x0501fa0d, 0x5c00b800, 0x1c01f000, - 0x4803c856, 0x6457503e, 0x91cca407, 0x4200a800, - 0x0010e072, 0x6010b000, 0x0541f9a9, 0x4200a800, - 0x0010e071, 0x4600a800, 0x11040000, 0x8d0c0506, - 0x05020041, 0x42024800, 0x0010e512, 0x0541f9f1, - 0x59240400, 0x8c000500, 0x0500002f, 0x59240200, - 0x8c000500, 0x0500002c, 0x8c000502, 0x0502002a, - 0x59240c00, 0x80040910, 0x82040d00, 0x000000ff, - 0x42001000, 0x0010e072, 0x0501f9a7, 0x05000010, + 0x59a80046, 0x8c000504, 0x05020007, 0x42000000, + 0x0011233e, 0x0541ff16, 0x59a80046, 0x84000544, + 0x48035046, 0x805cb9c0, 0x05000004, 0x641b5041, + 0x05fdfef6, 0x0501f005, 0x644b5041, 0x0501f805, + 0x0501f002, 0x0501faac, 0x5c00b800, 0x1c01f000, + 0x4803c856, 0x644f5041, 0x91cca407, 0x4200a800, + 0x0011200c, 0x6010b000, 0x0541ffcc, 0x4200a800, + 0x0011200b, 0x4600a800, 0x11030000, 0x8d0c0506, + 0x0502006a, 0x42024800, 0x001124b6, 0x0545f814, + 0x4c600000, 0x4178c000, 0x59a8024c, 0x82000500, + 0xfffffffc, 0x4803524c, 0x59240200, 0x40000800, + 0x82040d00, 0xfffffb17, 0x48064a00, 0x8c000500, + 0x05000048, 0x8c000518, 0x05020046, 0x8c000502, + 0x05020004, 0x59240400, 0x8c000502, 0x05000041, + 0x59240a08, 0x42001000, 0x0011200c, 0x0501fa3d, + 0x0500002b, 0x59240005, 0x82000500, 0x00ffff00, + 0x48024805, 0x59240200, 0x8c000502, 0x05000019, + 0x59240207, 0x82000500, 0x0000ffff, 0x05000015, + 0x8060c000, 0x59240c08, 0x05e5fafb, 0x4c640000, + 0x4c580000, 0x4d2c0000, 0x5924c809, 0x6040b000, + 0x50640000, 0x800001c0, 0x05000004, 0x4578c800, + 0x40025800, 0x05ddf938, 0x8064c800, 0x8058b040, + 0x05fe07f8, 0x5c025800, 0x5c00b000, 0x5c00c800, + 0x59240200, 0x84000502, 0x84000544, 0x48024a00, + 0x59240400, 0x8c000504, 0x05000016, 0x59240200, + 0x84000546, 0x48024a00, 0x0501f012, 0x59240200, + 0x90000546, 0x84000506, 0x48024a00, 0x82042c00, + 0x001028fb, 0x50142800, 0x82142d00, 0x000000ff, + 0x48164c08, 0x59240005, 0x82000500, 0x00ffff00, + 0x80140d40, 0x48064805, 0x40140800, 0x05e5fabf, + 0x59240200, 0x84000518, 0x48024a00, 0x91264c0d, + 0x8058b040, 0x05fe07ad, 0x8060c1c0, 0x05020b0b, + 0x5c00c000, 0x42024800, 0x001124b6, 0x59242a00, + 0x8c140502, 0x05000005, 0x8c140500, 0x05000003, + 0x59242c08, 0x48175040, 0x60140800, 0x0501f260, + 0x4c5c0000, 0x4178b800, 0x59a800bb, 0x80000540, + 0x05000021, 0x4803c857, 0x42001000, 0x00105303, + 0x0515f9ff, 0x59a800bb, 0x90000594, 0x05020019, + 0x59cc1006, 0x82081580, 0x11040000, 0x05020015, + 0x59cc1007, 0x8c08053e, 0x0500000a, 0x59a80046, + 0x8c000504, 0x05020007, 0x42000000, 0x0011233e, + 0x0541fe77, 0x59a80046, 0x84000544, 0x48035046, + 0x805cb9c0, 0x05000004, 0x64235041, 0x05fdfe5d, + 0x0501f005, 0x64535041, 0x0501f805, 0x0501f002, + 0x0501fa0d, 0x5c00b800, 0x1c01f000, 0x4803c856, + 0x64575041, 0x91cca407, 0x4200a800, 0x0011200c, + 0x6010b000, 0x0541ff2d, 0x4200a800, 0x0011200b, + 0x4600a800, 0x11040000, 0x8d0c0506, 0x05020041, + 0x42024800, 0x001124b6, 0x0541ff75, 0x59240400, + 0x8c000500, 0x0500002f, 0x59240200, 0x8c000500, + 0x0500002c, 0x8c000502, 0x0502002a, 0x59240c00, + 0x80040910, 0x82040d00, 0x000000ff, 0x42001000, + 0x0011200c, 0x0501f9a7, 0x05000010, 0x59240005, + 0x82000500, 0x00ffff00, 0x48024805, 0x59240200, + 0x84000502, 0x48024a00, 0x59242400, 0x8c100504, + 0x05000018, 0x84000546, 0x84000544, 0x48024a00, + 0x8060c000, 0x0501f013, 0x59240200, 0x90000546, + 0x84000506, 0x48024a00, 0x48064a08, 0x82042c00, + 0x001028fb, 0x50142800, 0x82142d00, 0x000000ff, + 0x48164c08, 0x59240005, 0x82000500, 0x00ffff00, + 0x80140d40, 0x48064805, 0x40140800, 0x05e5fa43, + 0x91264c0d, 0x8058b040, 0x05fe07cd, 0x42024800, + 0x001124b6, 0x59242a00, 0x8c140502, 0x05000005, + 0x8c140500, 0x05000003, 0x59242c08, 0x48175040, + 0x60140800, 0x0501f1ea, 0x4c5c0000, 0x4178b800, + 0x59a800bb, 0x80000540, 0x05000040, 0x4803c857, + 0x42001000, 0x00105303, 0x0515f989, 0x59a800bb, + 0x90000594, 0x05020038, 0x59cc1006, 0x82080500, + 0x11050000, 0x82000580, 0x11050000, 0x05020032, + 0x8c080510, 0x05000013, 0x0501fb08, 0x59cc1007, + 0x8c08053e, 0x0500000a, 0x59a80046, 0x8c000504, + 0x05020007, 0x42000000, 0x0011233e, 0x0541fdfc, + 0x59a80046, 0x84000544, 0x48035046, 0x805cb9c0, + 0x05000014, 0x642b5041, 0x05fdfdf9, 0x0501f01f, + 0x59cc1007, 0x8c08053e, 0x0500000a, 0x59a80046, + 0x8c000504, 0x05020007, 0x42000000, 0x0011233e, + 0x0541fdeb, 0x59a80046, 0x84000544, 0x48035046, + 0x90000541, 0x0501fae9, 0x497b50b7, 0x0501f002, + 0x640750b7, 0x59cc1007, 0x8c08053c, 0x05000002, + 0x6423524c, 0x805cb9c0, 0x05020004, 0x645b5041, + 0x0501f808, 0x0501f005, 0x643b5041, 0x05fdfe43, + 0x0501f002, 0x0501f978, 0x5c00b800, 0x1c01f000, + 0x4803c856, 0x91cca406, 0x4200a800, 0x0011200b, + 0x6014b000, 0x0541fe99, 0x645f5041, 0x59a800b7, + 0x8c000500, 0x05000006, 0x42001000, 0x0011200b, + 0x46001000, 0x11050100, 0x0501f002, 0x646f5041, + 0x8d0c0506, 0x05020037, 0x42024800, 0x001124b6, + 0x0541fedb, 0x59240200, 0x8c000500, 0x05000025, + 0x8c000502, 0x05020023, 0x8c000506, 0x05020021, + 0x4c580000, 0x0501f8c2, 0x5c00b000, 0x0502000b, 0x59240005, 0x82000500, 0x00ffff00, 0x48024805, - 0x59240200, 0x84000502, 0x48024a00, 0x59242400, - 0x8c100504, 0x05000018, 0x84000546, 0x84000544, - 0x48024a00, 0x8060c000, 0x0501f013, 0x59240200, - 0x90000546, 0x84000506, 0x48024a00, 0x48064a08, - 0x82042c00, 0x00102853, 0x50142800, 0x82142d00, - 0x000000ff, 0x48164c08, 0x59240005, 0x82000500, - 0x00ffff00, 0x80140d40, 0x48064805, 0x40140800, - 0x05e5fbba, 0x91264c0d, 0x8058b040, 0x05fe07cd, - 0x42024800, 0x0010e512, 0x59242a00, 0x8c140502, - 0x05000005, 0x8c140500, 0x05000003, 0x59242c08, - 0x4817503d, 0x60140800, 0x0501f1ea, 0x4c5c0000, - 0x4178b800, 0x59a800b6, 0x80000540, 0x05000040, - 0x4803c857, 0x42001000, 0x0010510c, 0x0511ff66, - 0x59a800b6, 0x90000594, 0x05020038, 0x59cc1006, - 0x82080500, 0x11050000, 0x82000580, 0x11050000, - 0x05020032, 0x8c080510, 0x05000013, 0x0501fb08, - 0x59cc1007, 0x8c08053e, 0x0500000a, 0x59a80043, - 0x8c000504, 0x05020007, 0x42000000, 0x0010e39d, - 0x0541f878, 0x59a80043, 0x84000544, 0x48035043, - 0x805cb9c0, 0x05000014, 0x642b503e, 0x05fdfdfa, - 0x0501f01f, 0x59cc1007, 0x8c08053e, 0x0500000a, - 0x59a80043, 0x8c000504, 0x05020007, 0x42000000, - 0x0010e39d, 0x0541f867, 0x59a80043, 0x84000544, - 0x48035043, 0x90000541, 0x0501fae9, 0x497b50b2, - 0x0501f002, 0x640750b2, 0x59cc1007, 0x8c08053c, - 0x05000002, 0x64235249, 0x805cb9c0, 0x05020004, - 0x645b503e, 0x0501f808, 0x0501f005, 0x643b503e, - 0x05fdfe44, 0x0501f002, 0x0501f978, 0x5c00b800, - 0x1c01f000, 0x4803c856, 0x91cca406, 0x4200a800, - 0x0010e071, 0x6014b000, 0x0541f915, 0x645f503e, - 0x59a800b2, 0x8c000500, 0x05000006, 0x42001000, - 0x0010e071, 0x46001000, 0x11050100, 0x0501f002, - 0x646f503e, 0x8d0c0506, 0x05020037, 0x42024800, - 0x0010e512, 0x0541f957, 0x59240200, 0x8c000500, - 0x05000025, 0x8c000502, 0x05020023, 0x8c000506, - 0x05020021, 0x4c580000, 0x0501f8c2, 0x5c00b000, - 0x0502000b, 0x59240005, 0x82000500, 0x00ffff00, - 0x48024805, 0x59240200, 0x84000502, 0x84000546, - 0x84000544, 0x48024a00, 0x0501f013, 0x59240200, - 0x90000546, 0x84000506, 0x48024a00, 0x48064a08, - 0x82042c00, 0x00102853, 0x50142800, 0x82142d00, - 0x000000ff, 0x48164c08, 0x59240005, 0x82000500, - 0x00ffff00, 0x80140d40, 0x48064805, 0x40140800, - 0x05e5fb2a, 0x91264c0d, 0x8058b040, 0x05fe07d7, - 0x42024800, 0x0010e512, 0x59242a00, 0x8c140502, - 0x05000005, 0x8c140500, 0x05000003, 0x59242c08, - 0x4817503d, 0x60140800, 0x0501f95a, 0x4d3c0000, - 0x60067800, 0x0531fe4e, 0x5c027800, 0x1c01f000, - 0x4c5c0000, 0x4178b800, 0x59a800b6, 0x80000540, - 0x05000018, 0x4803c857, 0x42001000, 0x0010510c, - 0x0511fed1, 0x59a800b6, 0x82000580, 0x00000084, - 0x0502000f, 0x59cc1006, 0x82081580, 0x11060000, - 0x0502000b, 0x80000580, 0x0501fa75, 0x805cb9c0, - 0x05000004, 0x6433503e, 0x05fdfdca, 0x0501f005, - 0x6463503e, 0x0501f805, 0x0501f002, 0x0501f90b, - 0x5c00b800, 0x1c01f000, 0x4803c856, 0x6467503e, - 0x91cca406, 0x4200a800, 0x0010e071, 0x6084b000, - 0x0541f8a7, 0x42003800, 0x0010e072, 0x42024800, - 0x0010e512, 0x4200b000, 0x0010e511, 0x5058b000, - 0x59240200, 0x8c000500, 0x05000019, 0x8c000502, - 0x05000017, 0x401c2800, 0x50141000, 0x80080130, - 0x80000000, 0x40001800, 0x82081500, 0x00ffffff, - 0x800000f0, 0x80080540, 0x44002800, 0x59244408, - 0x82204500, 0x000000ff, 0x400c1000, 0x80081104, - 0x82083400, 0x0010e072, 0x50181000, 0x900c0503, - 0x0c01f808, 0x80081540, 0x44083000, 0x91264c0d, - 0x8058b040, 0x05fe07e3, 0x60840800, 0x0501f109, - 0x0010502c, 0x00105030, 0x00105034, 0x00105038, - 0x802000f0, 0x82081500, 0x00ffffff, 0x1c01f000, - 0x802000e0, 0x82081500, 0xff00ffff, 0x1c01f000, - 0x802000d0, 0x82081500, 0xffff00ff, 0x1c01f000, - 0x40200000, 0x82081500, 0xffffff00, 0x1c01f000, - 0x4c5c0000, 0x4178b800, 0x59a800b6, 0x80000540, - 0x05000018, 0x4803c857, 0x42001000, 0x0010510c, - 0x0511fe71, 0x59a800b6, 0x82000580, 0x00000084, - 0x0502000f, 0x59cc1006, 0x82081580, 0x11070000, - 0x0502000b, 0x640750b2, 0x0501f897, 0x805cb9c0, - 0x05000004, 0x643b503e, 0x05fdfd7a, 0x0501f005, - 0x646b503e, 0x0501f805, 0x0501f002, 0x0501f8ab, - 0x5c00b800, 0x1c01f000, 0x90000541, 0x0501fa08, - 0x646f503e, 0x91cca406, 0x4200a800, 0x0010e071, - 0x59a820b6, 0x40100000, 0x8000b104, 0x40580800, - 0x5450a800, 0x8050a000, 0x8054a800, 0x8058b040, - 0x05fe07fc, 0x0501f0c7, 0x1c01f000, 0x1c01f000, - 0x4803c856, 0x60103000, 0x42004000, 0x0010e072, - 0x599c2817, 0x8c140514, 0x0502001c, 0x600c1000, - 0x40200000, 0x80080400, 0x50000800, 0x82042580, - 0xffffffff, 0x05020005, 0x80081040, 0x80183040, - 0x05fe07f8, 0x0501f03f, 0x800811c0, 0x05020006, - 0x82042580, 0x3fffffff, 0x05000039, 0x82040d40, - 0xc0000000, 0x6080b000, 0x60041800, 0x40042000, - 0x80102102, 0x0502101f, 0x800c18c2, 0x8058b040, - 0x05fe07fc, 0x0501f02e, 0x41781000, 0x40200000, + 0x59240200, 0x84000502, 0x84000546, 0x84000544, + 0x48024a00, 0x0501f013, 0x59240200, 0x90000546, + 0x84000506, 0x48024a00, 0x48064a08, 0x82042c00, + 0x001028fb, 0x50142800, 0x82142d00, 0x000000ff, + 0x48164c08, 0x59240005, 0x82000500, 0x00ffff00, + 0x80140d40, 0x48064805, 0x40140800, 0x05e5f9b3, + 0x91264c0d, 0x8058b040, 0x05fe07d7, 0x42024800, + 0x001124b6, 0x59242a00, 0x8c140502, 0x05000005, + 0x8c140500, 0x05000003, 0x59242c08, 0x48175040, + 0x60140800, 0x0501f95a, 0x4d3c0000, 0x60067800, + 0x0535f9fe, 0x5c027800, 0x1c01f000, 0x4c5c0000, + 0x4178b800, 0x59a800bb, 0x80000540, 0x05000018, + 0x4803c857, 0x42001000, 0x00105303, 0x0515f8f4, + 0x59a800bb, 0x82000580, 0x00000084, 0x0502000f, + 0x59cc1006, 0x82081580, 0x11060000, 0x0502000b, + 0x80000580, 0x0501fa75, 0x805cb9c0, 0x05000004, + 0x64335041, 0x05fdfdc9, 0x0501f005, 0x64635041, + 0x0501f805, 0x0501f002, 0x0501f90b, 0x5c00b800, + 0x1c01f000, 0x4803c856, 0x64675041, 0x91cca406, + 0x4200a800, 0x0011200b, 0x6084b000, 0x0541fe2b, + 0x42003800, 0x0011200c, 0x42024800, 0x001124b6, + 0x4200b000, 0x001124b5, 0x5058b000, 0x59240200, + 0x8c000500, 0x05000019, 0x8c000502, 0x05000017, + 0x401c2800, 0x50141000, 0x80080130, 0x80000000, + 0x40001800, 0x82081500, 0x00ffffff, 0x800000f0, + 0x80080540, 0x44002800, 0x59244408, 0x82204500, + 0x000000ff, 0x400c1000, 0x80081104, 0x82083400, + 0x0011200c, 0x50181000, 0x900c0503, 0x0c01f808, + 0x80081540, 0x44083000, 0x91264c0d, 0x8058b040, + 0x05fe07e3, 0x60840800, 0x0501f109, 0x00105223, + 0x00105227, 0x0010522b, 0x0010522f, 0x802000f0, + 0x82081500, 0x00ffffff, 0x1c01f000, 0x802000e0, + 0x82081500, 0xff00ffff, 0x1c01f000, 0x802000d0, + 0x82081500, 0xffff00ff, 0x1c01f000, 0x40200000, + 0x82081500, 0xffffff00, 0x1c01f000, 0x4c5c0000, + 0x4178b800, 0x59a800bb, 0x80000540, 0x05000018, + 0x4803c857, 0x42001000, 0x00105303, 0x0515f894, + 0x59a800bb, 0x82000580, 0x00000084, 0x0502000f, + 0x59cc1006, 0x82081580, 0x11070000, 0x0502000b, + 0x640750b7, 0x0501f897, 0x805cb9c0, 0x05000004, + 0x643b5041, 0x05fdfd79, 0x0501f005, 0x646b5041, + 0x0501f805, 0x0501f002, 0x0501f8ab, 0x5c00b800, + 0x1c01f000, 0x90000541, 0x0501fa08, 0x646f5041, + 0x91cca406, 0x4200a800, 0x0011200b, 0x59a820bb, + 0x40100000, 0x8000b104, 0x40580800, 0x5450a800, + 0x8050a000, 0x8054a800, 0x8058b040, 0x05fe07fc, + 0x0501f0c7, 0x1c01f000, 0x1c01f000, 0x4803c856, + 0x60103000, 0x42004000, 0x0011200c, 0x599c2817, + 0x8c140514, 0x0502001c, 0x600c1000, 0x40200000, 0x80080400, 0x50000800, 0x82042580, 0xffffffff, - 0x05020005, 0x80081000, 0x80183040, 0x05fe07f8, - 0x0501f023, 0x800811c0, 0x05020003, 0x82040d40, - 0xc0000000, 0x6004b000, 0x42001800, 0x80000000, - 0x40042000, 0x801020c2, 0x05021006, 0x800c1902, - 0x8058b000, 0x905804a1, 0x05fc17fb, 0x0501f014, - 0x40200000, 0x80082400, 0x50100000, 0x800c0540, - 0x44002000, 0x59a80043, 0x84000540, 0x48035043, - 0x40580000, 0x60802800, 0x80142c80, 0x40080000, - 0x600c3800, 0x801c0480, 0x800000ca, 0x80142d40, - 0x40140800, 0x90000541, 0x0501f002, 0x80000580, - 0x1c01f000, 0x4807c857, 0x480bc857, 0x40041800, - 0x41782000, 0x600c0000, 0x900c1ca0, 0x05001004, - 0x80102000, 0x80000040, 0x05fdf7fc, 0x40041800, - 0x801021c0, 0x05000004, 0x900c1ca0, 0x80102040, - 0x05fe07fe, 0x60042000, 0x800c19c0, 0x05000004, - 0x801020c2, 0x800c1840, 0x05fe07fe, 0x80083c00, - 0x401c2800, 0x50140000, 0x80102d00, 0x05020007, - 0x80100540, 0x44003800, 0x59a80043, 0x84000540, - 0x48035043, 0x80000580, 0x1c01f000, 0x4807c856, - 0x605c1100, 0x59a81864, 0x053dff04, 0x05f9fef9, - 0x1c01f000, 0x4807c856, 0x6080b000, 0x91cca407, - 0x4200a800, 0x00110258, 0x053df7f8, 0x4807c856, - 0x0519ff69, 0x61dc0801, 0x0501f8d4, 0x497b2804, - 0x497b2805, 0x497b2826, 0x497b2827, 0x6006d800, - 0x42006000, 0xbe7fffff, 0x42006800, 0x00018000, - 0x0501f95f, 0x42006000, 0xfffeffff, 0x41786800, - 0x0501f95b, 0x497b5064, 0x60b40800, 0x42001000, - 0x00105184, 0x0511f588, 0x4807c856, 0x05fdffe8, - 0x497b503e, 0x497b50b6, 0x1c01f000, 0x4807c856, - 0x42006000, 0xffffffff, 0x60a06800, 0x0501f14c, - 0x4807c856, 0x05fdffd2, 0x0519fc05, 0x4df00000, - 0x0519fe92, 0x5c03e000, 0x05180bf2, 0x59c400a4, - 0x9000050f, 0x90000582, 0x0502000a, 0x42006000, - 0xffffffff, 0x42006800, 0x00200000, 0x0501f93c, - 0x42006000, 0xffdfffff, 0x41786800, 0x0501f938, - 0x497b503e, 0x61dc0801, 0x0501f8a0, 0x59c400a3, - 0x82000500, 0xbf20bfff, 0x82000540, 0x0001c000, - 0x480388a3, 0x84000520, 0x480388a3, 0x497b5064, - 0x60b40800, 0x42001000, 0x00105184, 0x0511f55a, - 0x497b50b6, 0x59b400f5, 0x8c000500, 0x05020003, - 0x90000541, 0x480368f5, 0x800400c4, 0x82000400, - 0x00002000, 0x4803910a, 0x59b400f6, 0x90000518, - 0x05fe07fe, 0x4a0368f0, 0x0010e06a, 0x42000000, - 0x0010e071, 0x4c040000, 0x40043800, 0x50000800, - 0x82040d80, 0x11010000, 0x0500000c, 0x50000800, - 0x4807c857, 0x8d0c052a, 0x05000008, 0x4c000000, - 0x821c3d40, 0x0000dc00, 0x42000000, 0x0010e06b, - 0x05d9fda3, 0x5c000000, 0x5c000800, 0x480368f1, - 0x82040400, 0x0000dc00, 0x480368f3, 0x59c408a4, - 0x90040d0f, 0x90040588, 0x05020013, 0x4c5c0000, - 0x4c600000, 0x59c4b805, 0x8c5c053a, 0x05020004, - 0x42000000, 0x0010e39a, 0x053dfe7a, 0x4a038805, - 0x20000000, 0x05e5fd27, 0x4000c000, 0x05e5fc6e, - 0x6006d800, 0x497b503e, 0x5c00c000, 0x5c00b800, - 0x1c01f000, 0x9004058c, 0x05000015, 0x59c8010b, - 0x8c000502, 0x05fc07e6, 0x90040d8b, 0x05020005, - 0x59a8083e, 0x82040d40, 0x00002000, 0x0501f004, - 0x59a808b1, 0x82040d40, 0x00001000, 0x48075064, - 0x59a808bc, 0x800409c0, 0x05020005, 0x6140080f, - 0x42001000, 0x0010510c, 0x0511fe66, 0x1c01f000, - 0x4807c856, 0x05fdff5a, 0x0519fb8d, 0x4df00000, - 0x0519fe1a, 0x5c03e000, 0x05180b7a, 0x59c400a4, - 0x9000050f, 0x90000582, 0x0502000a, 0x42006000, - 0xffffffff, 0x42006800, 0x00200000, 0x0501f8c4, - 0x42006000, 0xffdfffff, 0x41786800, 0x0501f8c0, - 0x0505ff1c, 0x05000010, 0x0505ff26, 0x0502000e, - 0x4a035041, 0x0000aaaa, 0x4c040000, 0x05e5f98f, - 0x59a8004d, 0x82000500, 0xffff0000, 0x80040540, - 0x4803504d, 0x5c000800, 0x64035042, 0x0505fe8a, - 0x0501f005, 0x641750b4, 0x60000001, 0x05e5f8d9, - 0x05fdff3f, 0x1c01f000, 0x0501f809, 0x42006000, - 0xbf7f7fff, 0x41786800, 0x0501f0a5, 0x42006000, - 0xbf7f7fff, 0x41786800, 0x0501f0a1, 0x0505ff09, - 0x05020009, 0x59c40006, 0x82000540, 0x000000f0, - 0x48038806, 0x42006000, 0xbfffffff, 0x41786800, - 0x0501f897, 0x1c01f000, 0x800408d0, 0x59a80043, - 0x8c000506, 0x05000006, 0x59a8003d, 0x82000500, - 0x000000ff, 0x80040540, 0x0501f003, 0x82040540, - 0x000000f7, 0x480388a7, 0x1c01f000, 0x4807c856, - 0x42000000, 0x0010e432, 0x053dfe0a, 0x60143000, - 0x4d3c0000, 0x4c180000, 0x60343000, 0x600a7800, - 0x0501f04f, 0x4807c856, 0x42000000, 0x0010e45c, - 0x053dfe00, 0x60003000, 0x4d3c0000, 0x4c180000, - 0x603c3000, 0x61fc19ff, 0x601c2000, 0x05f9fe65, - 0x5c003000, 0x59240200, 0x84000556, 0x48024a00, - 0x4d400000, 0x60aa8000, 0x59240400, 0x8c00050a, - 0x05380dbd, 0x600a7800, 0x05e9fc77, 0x5c028000, - 0x5c027800, 0x0005f7dc, 0x4807c856, 0x053dff38, - 0x0500000b, 0x4d400000, 0x4d200000, 0x05e9fc20, - 0x60068000, 0x60001802, 0x600c2800, 0x60040000, - 0x0505fc54, 0x5c024000, 0x5c028000, 0x42000000, - 0x0010e45a, 0x053dfddb, 0x600c3000, 0x4d3c0000, - 0x4c180000, 0x60383000, 0x600a7804, 0x0501f020, - 0x4807c856, 0x053dff22, 0x0500000b, 0x4d400000, - 0x4d200000, 0x05e9fc0a, 0x60068000, 0x60001802, - 0x60402800, 0x60040000, 0x0505fc3e, 0x5c024000, - 0x5c028000, 0x42000000, 0x0010e459, 0x053dfdc5, - 0x60103000, 0x4d3c0000, 0x4c180000, 0x60403000, - 0x600a7804, 0x0501f00a, 0x4807c856, 0x42000000, - 0x0010e39c, 0x053dfdbb, 0x60043000, 0x4d3c0000, - 0x4c180000, 0x60303000, 0x600a7800, 0x61fc19ff, - 0x601c2000, 0x4d200000, 0x417a4000, 0x05f9fe1d, - 0x5c024000, 0x5c003000, 0x4d400000, 0x053dfb65, - 0x60aa8000, 0x05e9f8a1, 0x4c580000, 0x053dfec5, - 0x42000800, 0x0010e512, 0x58040005, 0x82000500, - 0x000000ff, 0x48000805, 0x90040c0d, 0x8058b040, - 0x05fe07fa, 0x5c00b000, 0x5c028000, 0x5c027800, - 0x1c01f000, 0x4807c856, 0x05011000, 0x4a03c840, - 0x0010e06a, 0x6503c842, 0x40000000, 0x05fd17ff, - 0x42007800, 0x0010e06a, 0x64447800, 0x803c7800, - 0x4a007800, 0x220000ef, 0x4a007801, 0x000000ef, - 0x4a007802, 0x01380000, 0x64007803, 0x4a007804, - 0xffffffff, 0x64007805, 0x1c01f000, 0x59c400a3, - 0x80300500, 0x80340540, 0x480388a3, 0x1c01f000, - 0x4833c857, 0x59c400a3, 0x80300540, 0x480388a3, - 0x80300580, 0x480388a3, 0x1c01f000, 0x4803c856, - 0x05000003, 0x640750bd, 0x0501f002, 0x497b50bd, - 0x1c01f000, 0x59c80002, 0x80000540, 0x05000009, - 0x80000040, 0x05000007, 0x4a039005, 0x00000140, - 0x60300000, 0x80000040, 0x05fe07ff, 0x05fdf7f6, - 0x1c01f000, 0x4c5c0000, 0x4c600000, 0x59c4b805, - 0x485fc856, 0x8c5c053a, 0x05020004, 0x42000000, - 0x0010e39a, 0x053dfd5f, 0x4a038805, 0x20000000, - 0x05e5fc0c, 0x4000c000, 0x05e5fb53, 0x4a038805, - 0x04000000, 0x5c00c000, 0x5c00b800, 0x1c01f000, - 0x497a6a00, 0x0501faf4, 0x4a026c00, 0x00000707, - 0x497a6801, 0x497a6808, 0x497a6809, 0x497a6806, - 0x497a6807, 0x497a6c0b, 0x497a680c, 0x59240400, - 0x8c00050a, 0x05000005, 0x5934080f, 0x59340010, - 0x80040540, 0x05da0b41, 0x4a026a04, 0x00000100, - 0x497a6a03, 0x59340402, 0x82000500, 0x000000ff, - 0x48026c02, 0x497a6c04, 0x497a6a05, 0x497a6c05, - 0x497a6811, 0x4d2c0000, 0x5934000d, 0x49466c03, - 0x80025d40, 0x05000003, 0x05d9fef1, 0x497a680d, - 0x5c025800, 0x599c0401, 0x48026a0b, 0x599c0208, - 0x48026c12, 0x4a02680a, 0x00008000, 0x0505f1fb, - 0x60140000, 0x80000d80, 0x0501f024, 0x0501ff90, - 0x05020013, 0x59a80249, 0x8c00050a, 0x0502000d, - 0x59340212, 0x82000500, 0x0000ff00, 0x4803c857, - 0x05000008, 0x59340a00, 0x8c04051e, 0x000002be, - 0x60a40000, 0x60000820, 0x492fc857, 0x0501f013, - 0x492fc857, 0x60a00000, 0x0501f00e, 0x8d0c0502, - 0x05020003, 0x8d0c0500, 0x05000003, 0x60100000, - 0x0501f008, 0x60a40000, 0x59340a00, 0x8c04051e, - 0x05000004, 0x492fc857, 0x60000820, 0x0501f003, - 0x492fc857, 0x80000d80, 0x4803c857, 0x80028540, - 0x1c01f000, 0x490fc857, 0x8d0c0500, 0x05fe07f0, - 0x0501ff45, 0x05fe07ea, 0x59340200, 0x8c00050e, - 0x05fc07e7, 0x0001f2be, 0x4d480000, 0x4d4c0000, - 0x592e900c, 0x592e980d, 0x0501fc9f, 0x5c029800, - 0x5c029000, 0x05fc07c7, 0x0001f2c1, 0x492fc857, - 0x592e8c0a, 0x83440d80, 0x000007fc, 0x05000004, - 0x83440480, 0x000007f0, 0x05021018, 0x592e440b, - 0x050df861, 0x05000f80, 0x05020014, 0x0509ff48, - 0x05020012, 0x0501ff34, 0x05020012, 0x0521f904, - 0x05000019, 0x83200400, 0x0010d17b, 0x50024800, - 0x4926601d, 0x59340002, 0x4802600b, 0x4936600a, - 0x492e6009, 0x642a6407, 0x61027000, 0x0009f800, - 0x80000580, 0x0501f00b, 0x60a00000, 0x0501f008, - 0x0501ff37, 0x05fc07fd, 0x910c0d03, 0x05000003, - 0x60100000, 0x0501f002, 0x60a40000, 0x80000540, - 0x1c01f000, 0x60b00000, 0x05fdf7fd, 0x492fc857, - 0x592e440b, 0x4923c857, 0x050df83b, 0x592c420b, - 0x0500000a, 0x60380000, 0x59240a00, 0x8c040500, - 0x05000198, 0x90200d0f, 0x90040d88, 0x05020195, - 0x90200d30, 0x05000193, 0x592e8c0a, 0x4947c857, - 0x83440c80, 0x00000800, 0x60280000, 0x0502118d, - 0x4823c857, 0x9020050f, 0x0c01f001, 0x00105346, - 0x001053d9, 0x00105428, 0x00105430, 0x00105438, - 0x00105343, 0x00105343, 0x00105343, 0x00105442, - 0x0010549f, 0x001054bb, 0x00105343, 0x00105343, - 0x00105343, 0x00105343, 0x00105343, 0x4803c857, - 0x60300000, 0x0501f177, 0x592c100c, 0x82081500, - 0x00ffffff, 0x0501fdc4, 0x0500002d, 0x4803c857, - 0x90004d9d, 0x05020016, 0x0509fcb5, 0x59340405, - 0x4c000000, 0x0501fed4, 0x5c000000, 0x05000004, - 0x8c20050a, 0x05000022, 0x80000580, 0x44002800, - 0x59340008, 0x48002802, 0x59340009, 0x48002801, - 0x59340006, 0x48002804, 0x59340007, 0x48002803, - 0x6014b000, 0x052dffb9, 0x0501f17d, 0x4803c857, - 0x90004d9a, 0x05020003, 0x40101000, 0x0501f15a, - 0x4803c857, 0x90004d9b, 0x05020003, 0x40181000, - 0x0501f155, 0x4803c857, 0x90004d9f, 0x05000156, - 0x90004d9c, 0x05000154, 0x90004d99, 0x60280000, - 0x05000148, 0x60280000, 0x05020159, 0x59a800d1, - 0x8c000502, 0x05000016, 0x0501feab, 0x05000014, - 0x59340212, 0x82000500, 0x0000ff00, 0x60401000, - 0x0502000b, 0x60201000, 0x59a80249, 0x8c000506, - 0x05020008, 0x59340002, 0x82000500, 0x00ff0000, - 0x82000580, 0x00ff0000, 0x05000005, 0x0505f924, - 0x60700000, 0x40181000, 0x05020133, 0x0521f874, - 0x0500013b, 0x82200500, 0x00000100, 0x0501fe3e, - 0x4926601d, 0x4936600a, 0x052dfcf9, 0x492e6009, - 0x64066407, 0x8c20050a, 0x05000004, 0x592c0408, - 0x8400055c, 0x48025c08, 0x4c200000, 0x4d3c0000, - 0x60027830, 0x05e5ff8b, 0x5c027800, 0x5c004000, - 0x592c100c, 0x82081500, 0x00ffffff, 0x59240005, - 0x80081d80, 0x0502001c, 0x4a026c00, 0x00000404, - 0x497a6a05, 0x497a6c05, 0x8c20050a, 0x05020006, - 0x4a026c00, 0x00000606, 0x4a026a05, 0x00002000, - 0x648a6c05, 0x59240001, 0x59240802, 0x48026806, - 0x48066807, 0x59240003, 0x59240804, 0x48026808, - 0x48066809, 0x59a80004, 0x48026a04, 0x0505f90f, - 0x0005ffdc, 0x592c0408, 0x8400051c, 0x48025c08, - 0x0501f11b, 0x8c200512, 0x0500000b, 0x599c0018, + 0x05020005, 0x80081040, 0x80183040, 0x05fe07f8, + 0x0501f03f, 0x800811c0, 0x05020006, 0x82042580, + 0x3fffffff, 0x05000039, 0x82040d40, 0xc0000000, + 0x6080b000, 0x60041800, 0x40042000, 0x80102102, + 0x0502101f, 0x800c18c2, 0x8058b040, 0x05fe07fc, + 0x0501f02e, 0x41781000, 0x40200000, 0x80080400, + 0x50000800, 0x82042580, 0xffffffff, 0x05020005, + 0x80081000, 0x80183040, 0x05fe07f8, 0x0501f023, + 0x800811c0, 0x05020003, 0x82040d40, 0xc0000000, + 0x6004b000, 0x42001800, 0x80000000, 0x40042000, + 0x801020c2, 0x05021006, 0x800c1902, 0x8058b000, + 0x905804a1, 0x05fc17fb, 0x0501f014, 0x40200000, + 0x80082400, 0x50100000, 0x800c0540, 0x44002000, + 0x59a80046, 0x84000540, 0x48035046, 0x40580000, + 0x60802800, 0x80142c80, 0x40080000, 0x600c3800, + 0x801c0480, 0x800000ca, 0x80142d40, 0x40140800, + 0x90000541, 0x0501f002, 0x80000580, 0x1c01f000, + 0x4807c857, 0x480bc857, 0x40041800, 0x41782000, + 0x600c0000, 0x900c1ca0, 0x05001004, 0x80102000, + 0x80000040, 0x05fdf7fc, 0x40041800, 0x801021c0, + 0x05000004, 0x900c1ca0, 0x80102040, 0x05fe07fe, + 0x60042000, 0x800c19c0, 0x05000004, 0x801020c2, + 0x800c1840, 0x05fe07fe, 0x80083c00, 0x401c2800, + 0x50140000, 0x80102d00, 0x05020007, 0x80100540, + 0x44003800, 0x59a80046, 0x84000540, 0x48035046, + 0x80000580, 0x1c01f000, 0x4807c856, 0x605c1100, + 0x59a81867, 0x0541fc88, 0x05f9fe9f, 0x1c01f000, + 0x4807c856, 0x6080b000, 0x91cca407, 0x4200a800, + 0x001141fc, 0x0541f57c, 0x4807c856, 0x051dfa30, + 0x61dc0801, 0x0501f8d4, 0x497b2804, 0x497b2805, + 0x497b2826, 0x497b2827, 0x6006d800, 0x42006000, + 0xbe7fffff, 0x42006800, 0x00018000, 0x0501f95f, + 0x42006000, 0xfffeffff, 0x41786800, 0x0501f95b, + 0x497b5067, 0x60b40800, 0x42001000, 0x0010537b, + 0x0511f7ab, 0x4807c856, 0x05fdffe8, 0x497b5041, + 0x497b50bb, 0x1c01f000, 0x4807c856, 0x42006000, + 0xffffffff, 0x60a06800, 0x0501f14c, 0x4807c856, + 0x05fdffd2, 0x0519fecc, 0x4df00000, 0x051df959, + 0x5c03e000, 0x05180eb9, 0x59c400a4, 0x9000050f, + 0x90000582, 0x0502000a, 0x42006000, 0xffffffff, + 0x42006800, 0x00200000, 0x0501f93c, 0x42006000, + 0xffdfffff, 0x41786800, 0x0501f938, 0x497b5041, + 0x61dc0801, 0x0501f8a0, 0x59c400a3, 0x82000500, + 0xbf20bfff, 0x82000540, 0x0001c000, 0x480388a3, + 0x84000520, 0x480388a3, 0x497b5067, 0x60b40800, + 0x42001000, 0x0010537b, 0x0511f77d, 0x497b50bb, + 0x59b400f5, 0x8c000500, 0x05020003, 0x90000541, + 0x480368f5, 0x800400c4, 0x82000400, 0x00002000, + 0x4803910a, 0x59b400f6, 0x90000518, 0x05fe07fe, + 0x4a0368f0, 0x00112004, 0x42000000, 0x0011200b, + 0x4c040000, 0x40043800, 0x50000800, 0x82040d80, + 0x11010000, 0x0500000c, 0x50000800, 0x4807c857, + 0x8d0c052a, 0x05000008, 0x4c000000, 0x821c3d40, + 0x0000dc00, 0x42000000, 0x00112005, 0x05d9fbdb, + 0x5c000000, 0x5c000800, 0x480368f1, 0x82040400, + 0x0000dc00, 0x480368f3, 0x59c408a4, 0x90040d0f, + 0x90040588, 0x05020013, 0x4c5c0000, 0x4c600000, + 0x59c4b805, 0x8c5c053a, 0x05020004, 0x42000000, + 0x0011233b, 0x0541fbfe, 0x4a038805, 0x20000000, + 0x05e5fbb0, 0x4000c000, 0x05e5faf7, 0x6006d800, + 0x497b5041, 0x5c00c000, 0x5c00b800, 0x1c01f000, + 0x9004058c, 0x05000015, 0x59c8010b, 0x8c000502, + 0x05fc07e6, 0x90040d8b, 0x05020005, 0x59a80841, + 0x82040d40, 0x00002000, 0x0501f004, 0x59a808b6, + 0x82040d40, 0x00001000, 0x48075067, 0x59a808c1, + 0x800409c0, 0x05020005, 0x6140080f, 0x42001000, + 0x00105303, 0x0515f8d3, 0x1c01f000, 0x4807c856, + 0x05fdff5a, 0x0519fe54, 0x4df00000, 0x051df8e1, + 0x5c03e000, 0x05180e41, 0x59c400a4, 0x9000050f, + 0x90000582, 0x0502000a, 0x42006000, 0xffffffff, + 0x42006800, 0x00200000, 0x0501f8c4, 0x42006000, + 0xffdfffff, 0x41786800, 0x0501f8c0, 0x0509f80f, + 0x05000010, 0x0509f819, 0x0502000e, 0x4a035044, + 0x0000aaaa, 0x4c040000, 0x05e5f818, 0x59a80050, + 0x82000500, 0xffff0000, 0x80040540, 0x48035050, + 0x5c000800, 0x64035045, 0x0505ff77, 0x0501f005, + 0x641750b9, 0x60000001, 0x05e1ff62, 0x05fdff3f, + 0x1c01f000, 0x0501f809, 0x42006000, 0xbf7f7fff, + 0x41786800, 0x0501f0a5, 0x42006000, 0xbf7f7fff, + 0x41786800, 0x0501f0a1, 0x0505fffc, 0x05020009, + 0x59c40006, 0x82000540, 0x000000f0, 0x48038806, + 0x42006000, 0xbfffffff, 0x41786800, 0x0501f897, + 0x1c01f000, 0x800408d0, 0x59a80046, 0x8c000506, + 0x05000006, 0x59a80040, 0x82000500, 0x000000ff, + 0x80040540, 0x0501f003, 0x82040540, 0x000000f7, + 0x480388a7, 0x1c01f000, 0x4807c856, 0x42000000, + 0x001123d3, 0x0541fb8e, 0x60143000, 0x4d3c0000, + 0x4c180000, 0x60343000, 0x600a7800, 0x0501f04f, + 0x4807c856, 0x42000000, 0x00112400, 0x0541fb84, + 0x60003000, 0x4d3c0000, 0x4c180000, 0x603c3000, + 0x61fc19ff, 0x601c2000, 0x05f9fe0b, 0x5c003000, + 0x59240200, 0x84000556, 0x48024a00, 0x4d400000, + 0x60aa8000, 0x59240400, 0x8c00050a, 0x053c0b0d, + 0x600a7800, 0x05e9fb26, 0x5c028000, 0x5c027800, + 0x0009f010, 0x4807c856, 0x0541fcbc, 0x0500000b, + 0x4d400000, 0x4d200000, 0x05e9fac5, 0x60068000, + 0x60001802, 0x600c2800, 0x60040000, 0x0505fd41, + 0x5c024000, 0x5c028000, 0x42000000, 0x001123fe, + 0x0541fb5f, 0x600c3000, 0x4d3c0000, 0x4c180000, + 0x60383000, 0x600a7804, 0x0501f020, 0x4807c856, + 0x0541fca6, 0x0500000b, 0x4d400000, 0x4d200000, + 0x05e9faaf, 0x60068000, 0x60001802, 0x60402800, + 0x60040000, 0x0505fd2b, 0x5c024000, 0x5c028000, + 0x42000000, 0x001123fd, 0x0541fb49, 0x60103000, + 0x4d3c0000, 0x4c180000, 0x60403000, 0x600a7804, + 0x0501f00a, 0x4807c856, 0x42000000, 0x0011233d, + 0x0541fb3f, 0x60043000, 0x4d3c0000, 0x4c180000, + 0x60303000, 0x600a7800, 0x61fc19ff, 0x601c2000, + 0x4d200000, 0x417a4000, 0x05f9fdc3, 0x5c024000, + 0x5c003000, 0x4d400000, 0x0541f8cb, 0x60aa8000, + 0x05e5ff3d, 0x4c580000, 0x0541fc49, 0x42000800, + 0x001124b6, 0x58040005, 0x82000500, 0x000000ff, + 0x48000805, 0x90040c0d, 0x8058b040, 0x05fe07fa, + 0x5c00b000, 0x5c028000, 0x5c027800, 0x1c01f000, + 0x4807c856, 0x05011000, 0x4a03c840, 0x00112004, + 0x6503c842, 0x40000000, 0x05fd17ff, 0x42007800, + 0x00112004, 0x64447800, 0x803c7800, 0x4a007800, + 0x220000ef, 0x4a007801, 0x000000ef, 0x4a007802, + 0x01380000, 0x64007803, 0x4a007804, 0xffffffff, + 0x64007805, 0x1c01f000, 0x59c400a3, 0x80300500, + 0x80340540, 0x480388a3, 0x1c01f000, 0x4833c857, + 0x59c400a3, 0x80300540, 0x480388a3, 0x80300580, + 0x480388a3, 0x1c01f000, 0x4803c856, 0x05000003, + 0x640750c2, 0x0501f002, 0x497b50c2, 0x1c01f000, + 0x59c80002, 0x80000540, 0x05000009, 0x80000040, + 0x05000007, 0x4a039005, 0x00000140, 0x60300000, + 0x80000040, 0x05fe07ff, 0x05fdf7f6, 0x1c01f000, + 0x4c5c0000, 0x4c600000, 0x59c4b805, 0x485fc856, + 0x8c5c053a, 0x05020004, 0x42000000, 0x0011233b, + 0x0541fae3, 0x4a038805, 0x20000000, 0x05e5fa95, + 0x4000c000, 0x05e5f9dc, 0x4a038805, 0x04000000, + 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x497a6a00, + 0x0501fb37, 0x4a026c00, 0x00000707, 0x497a6801, + 0x497a6808, 0x497a6809, 0x497a6806, 0x497a6807, + 0x497a6c0b, 0x497a680c, 0x59240400, 0x8c00050a, + 0x05000005, 0x5934080f, 0x59340010, 0x80040540, + 0x05da0985, 0x4a026a04, 0x00000100, 0x497a6a03, + 0x59340402, 0x82000500, 0x000000ff, 0x48026c02, + 0x497a6c04, 0x497a6a05, 0x497a6c05, 0x497a6811, + 0x4d2c0000, 0x5934000d, 0x49466c03, 0x80025d40, + 0x05000003, 0x05d9fd31, 0x497a680d, 0x5c025800, + 0x599c0401, 0x48026a0b, 0x599c0208, 0x48026c12, + 0x4a02680a, 0x00008000, 0x0505f2d9, 0x60140000, + 0x80000d80, 0x0501f024, 0x0505f862, 0x05020013, + 0x59a8024c, 0x8c00050a, 0x0502000d, 0x59340212, + 0x82000500, 0x0000ff00, 0x4803c857, 0x05000008, + 0x59340a00, 0x8c04051e, 0x000002c6, 0x60a40000, + 0x60000820, 0x492fc857, 0x0501f013, 0x492fc857, + 0x60a00000, 0x0501f00e, 0x8d0c0502, 0x05020003, + 0x8d0c0500, 0x05000003, 0x60100000, 0x0501f008, + 0x60a40000, 0x59340a00, 0x8c04051e, 0x05000004, + 0x492fc857, 0x60000820, 0x0501f003, 0x492fc857, + 0x80000d80, 0x4803c857, 0x80028540, 0x1c01f000, + 0x490fc857, 0x8d0c0500, 0x05fe07f0, 0x0505f817, + 0x05fe07ea, 0x59340200, 0x8c00050e, 0x05fc07e7, + 0x0001f2c6, 0x4d480000, 0x4d4c0000, 0x592e900c, + 0x592e980d, 0x0501fd12, 0x5c029800, 0x5c029000, + 0x05fc07c7, 0x0001f2c9, 0x492fc857, 0x592e8c0a, + 0x83440d80, 0x000007fc, 0x0500000c, 0x83440480, + 0x000007f0, 0x05001009, 0x83440480, 0x00000800, + 0x0500101d, 0x8d0c0538, 0x0500001b, 0x59a800ad, + 0x81440480, 0x05021018, 0x592e440b, 0x050df9ca, + 0x0504084a, 0x05020014, 0x050df8b1, 0x05020012, + 0x0501fffe, 0x05020012, 0x0521fc1a, 0x05000019, + 0x83200400, 0x0010d8f9, 0x50024800, 0x4926601d, + 0x59340002, 0x4802600b, 0x4936600a, 0x492e6009, + 0x642a6407, 0x61027000, 0x0009f839, 0x80000580, + 0x0501f00b, 0x60a00000, 0x0501f008, 0x0505f801, + 0x05fc07fd, 0x910c0d03, 0x05000003, 0x60100000, + 0x0501f002, 0x60a40000, 0x80000540, 0x1c01f000, + 0x60b00000, 0x05fdf7fd, 0x492fc857, 0x592e440b, + 0x4923c857, 0x050df9a4, 0x592c420b, 0x0500000a, + 0x60380000, 0x59240a00, 0x8c040500, 0x050001a8, + 0x90200d0f, 0x90040d88, 0x050201a5, 0x90200d30, + 0x050001a3, 0x592e8c0a, 0x4947c857, 0x59a800ad, + 0x81440480, 0x60280000, 0x0502119d, 0x4823c857, + 0x9020050f, 0x0c01f001, 0x00105545, 0x001055e1, + 0x00105635, 0x0010563d, 0x00105645, 0x00105542, + 0x00105542, 0x00105542, 0x0010564f, 0x001056ae, + 0x001056ca, 0x00105542, 0x00105542, 0x00105542, + 0x00105542, 0x00105542, 0x4803c857, 0x60300000, + 0x0501f187, 0x592c100c, 0x82081500, 0x00ffffff, + 0x0501fe37, 0x0500002f, 0x4803c857, 0x90004d9d, + 0x05020016, 0x0509fdc9, 0x59340405, 0x4c000000, + 0x0501ff9e, 0x5c000000, 0x05000004, 0x8c20050a, + 0x05000024, 0x80000580, 0x44002800, 0x59340008, + 0x48002802, 0x59340009, 0x48002801, 0x59340006, + 0x48002804, 0x59340007, 0x48002803, 0x6014b000, + 0x0531fb60, 0x0501f191, 0x4803c857, 0x90004d9a, + 0x05020003, 0x40101000, 0x0501f16e, 0x4803c857, + 0x90004d9b, 0x05020003, 0x40181000, 0x0501f169, + 0x4803c857, 0x90004da0, 0x0500016a, 0x90004d9f, + 0x05000168, 0x90004d9c, 0x05000166, 0x90004d99, + 0x60280000, 0x05000156, 0x60280000, 0x0502016b, + 0x59a800d6, 0x8c000502, 0x05000016, 0x0501ff73, + 0x05000014, 0x59340212, 0x82000500, 0x0000ff00, + 0x60401000, 0x0502000b, 0x60201000, 0x59a8024c, + 0x8c000506, 0x05020008, 0x59340002, 0x82000500, + 0x00ff0000, 0x82000580, 0x00ff0000, 0x05000005, + 0x0505f9f8, 0x60700000, 0x40181000, 0x05020141, + 0x0521fb88, 0x0500014d, 0x82200500, 0x00000100, + 0x0501ff02, 0x4926601d, 0x4936600a, 0x0531f890, + 0x492e6009, 0x64066407, 0x8c20050a, 0x05000004, + 0x592c0408, 0x8400055c, 0x48025c08, 0x4c200000, + 0x4d3c0000, 0x60027830, 0x05e5fe21, 0x5c027800, + 0x5c004000, 0x592c100c, 0x82081500, 0x00ffffff, + 0x59240005, 0x80081d80, 0x0502001c, 0x4a026c00, + 0x00000404, 0x497a6a05, 0x497a6c05, 0x8c20050a, + 0x05020006, 0x4a026c00, 0x00000606, 0x4a026a05, + 0x00002000, 0x648a6c05, 0x59240001, 0x59240802, + 0x48026806, 0x48066807, 0x59240003, 0x59240804, + 0x48026808, 0x48066809, 0x59a80004, 0x48026a04, + 0x0505f9e3, 0x0009f810, 0x592c0408, 0x8400051c, + 0x48025c08, 0x0501f12d, 0x8c20050a, 0x05020006, + 0x8c200514, 0x05000004, 0x48226216, 0x592c0a0d, + 0x4806601e, 0x8c200512, 0x0500000b, 0x599c0018, 0x8c000518, 0x05000008, 0x592c000d, 0x82000500, 0x00000380, 0x5934080a, 0x80040d40, 0x84040d54, - 0x4806680a, 0x417a7800, 0x0501f911, 0x600c0800, - 0x0501f919, 0x600a7000, 0x0009f800, 0x80000580, - 0x0501f10a, 0x0501fea0, 0x050200f5, 0x0501fe50, - 0x05000009, 0x0501fe48, 0x050200f5, 0x4c600000, - 0x4178c000, 0x60027830, 0x417a6000, 0x05e5ffc1, + 0x4806680a, 0x417a7800, 0x0501f91c, 0x600c0800, + 0x0501f924, 0x600a7000, 0x0009f839, 0x80000580, + 0x0501f115, 0x0501ff61, 0x05020100, 0x0501ff11, + 0x05000009, 0x0501ff09, 0x05020100, 0x4c600000, + 0x4178c000, 0x60027830, 0x417a6000, 0x05e5fe50, 0x5c00c000, 0x592c100c, 0x82081500, 0x00ffffff, 0x59240005, 0x80084d80, 0x05020007, 0x4a026c00, 0x00000606, 0x4a026a05, 0x00002000, 0x648a6c05, - 0x0501f0ef, 0x59a800d1, 0x8c000502, 0x05000016, - 0x0501fe31, 0x05000014, 0x59340212, 0x82000500, + 0x0501f0fa, 0x59a800d6, 0x8c000502, 0x05000016, + 0x0501fef2, 0x05000014, 0x59340212, 0x82000500, 0x0000ff00, 0x60401000, 0x0502000b, 0x60201000, - 0x59a80249, 0x8c000506, 0x05020008, 0x59340002, + 0x59a8024c, 0x8c000506, 0x05020008, 0x59340002, 0x82000500, 0x00ff0000, 0x82000580, 0x00ff0000, - 0x05000005, 0x0505f8aa, 0x60700000, 0x40181000, - 0x050200b9, 0x051dfffa, 0x050000c1, 0x5934080a, + 0x05000005, 0x0505f977, 0x60700000, 0x40181000, + 0x050200c0, 0x0521fb07, 0x050000cc, 0x5934080a, 0x8c200512, 0x0500000c, 0x599c0018, 0x8c000518, 0x05000009, 0x592c000d, 0x82000500, 0x00000380, 0x82041500, 0xfffffc7f, 0x80080d40, 0x84040d54, 0x0501f002, 0x84040d14, 0x4806680a, 0x4926601d, - 0x4936600a, 0x052dfc72, 0x492e6009, 0x64066407, - 0x417a7800, 0x0501f8c2, 0x60140800, 0x0501f8ca, - 0x600e7000, 0x0009f800, 0x80000580, 0x0501f0bb, - 0x0501fe51, 0x050200a6, 0x0501fe10, 0x050200a8, - 0x052dfe17, 0x0500009e, 0x80000580, 0x0501f0b3, - 0x0501fe49, 0x0502009e, 0x0501fe08, 0x050200a0, - 0x052df937, 0x05000096, 0x80000580, 0x0501f0ab, - 0x0501fe41, 0x05020096, 0x83444d80, 0x000007fe, - 0x60280000, 0x0502007f, 0x052dfe19, 0x0500008c, - 0x80000580, 0x0501f0a1, 0xb0200530, 0x05020004, - 0x8c20050e, 0x60300000, 0x05020076, 0x8c20050a, - 0x0500000f, 0x4d3c0000, 0x600278a0, 0x8c20050e, - 0x05020003, 0x853e7d56, 0x853e7d1c, 0x82200500, - 0x000004a0, 0x42026000, 0x00111a70, 0x492e6009, - 0x0501fda3, 0x5c027800, 0x0501f089, 0x8c200508, - 0x0502001a, 0x592c100c, 0x82081500, 0x00ffffff, - 0x0501fcb1, 0x05000027, 0x4803c857, 0x90004d9a, - 0x05020003, 0x40101000, 0x0501f05f, 0x4803c857, - 0x90004d9b, 0x05020003, 0x40181000, 0x0501f05a, - 0x4803c857, 0x90004d9f, 0x0500005b, 0x90004d9c, - 0x05000059, 0x90004d99, 0x60280000, 0x0500004d, - 0x60280000, 0x0501f05e, 0x0501fe07, 0x0502005c, - 0x4d3c0000, 0x600278a0, 0x8c20050e, 0x05020003, - 0x853e7d56, 0x853e7d1c, 0x82200500, 0x00000090, - 0x42026000, 0x00111a70, 0x492e6009, 0x0501fd60, - 0x5c027800, 0x60280000, 0x0502003a, 0x0501f05c, - 0x592c100c, 0x82081500, 0x00ffffff, 0x59240005, - 0x80084d80, 0x05020003, 0x84204548, 0x05fdf7e9, - 0x916c0583, 0x601c0800, 0x05020005, 0x052dfd6c, - 0x05000009, 0x80000580, 0x0501f050, 0x42026000, - 0x00111a70, 0x492e6009, 0x0501fdc8, 0x05000045, - 0x0501f047, 0x42026000, 0x00111a70, 0x492e6009, - 0x0501fdc2, 0x0500002e, 0x0501f041, 0x0501fdda, - 0x0502002f, 0x916c0583, 0x05020036, 0x8c200508, - 0x05000008, 0x4c600000, 0x4178c000, 0x60027830, - 0x417a6000, 0x05e5fefb, 0x5c00c000, 0x0501f034, - 0x0501fd7f, 0x05000009, 0x0501fd77, 0x05020024, + 0x4936600a, 0x0531f802, 0x8c200514, 0x05000004, + 0x48226216, 0x592c0a0d, 0x4806601e, 0x492e6009, + 0x64066407, 0x417a7800, 0x0501f8c8, 0x60140800, + 0x0501f8d0, 0x600e7000, 0x0009f839, 0x80000580, + 0x0501f0c1, 0x0501ff0d, 0x050200ac, 0x0501fecc, + 0x050200ae, 0x0531f9a9, 0x050000a4, 0x80000580, + 0x0501f0b9, 0x0501ff05, 0x050200a4, 0x0501fec4, + 0x050200a6, 0x052dfcc3, 0x0500009c, 0x80000580, + 0x0501f0b1, 0x0501fefd, 0x0502009c, 0x83444d80, + 0x000007fe, 0x60280000, 0x05020081, 0x0531f9ab, + 0x05000092, 0x80000580, 0x0501f0a7, 0xb0200530, + 0x05020004, 0x8c20050e, 0x60300000, 0x05020078, + 0x8c20050a, 0x0500000f, 0x4d3c0000, 0x600278a0, + 0x8c20050e, 0x05020003, 0x853e7d56, 0x853e7d1c, + 0x82200500, 0x000004a0, 0x42026000, 0x00115a14, + 0x492e6009, 0x0501fe5b, 0x5c027800, 0x0501f08f, + 0x8c200508, 0x0502001c, 0x592c100c, 0x82081500, + 0x00ffffff, 0x0501fd16, 0x05000029, 0x4803c857, + 0x90004d9a, 0x05020003, 0x40101000, 0x0501f061, + 0x4803c857, 0x90004d9b, 0x05020003, 0x40181000, + 0x0501f05c, 0x4803c857, 0x90004da0, 0x05000061, + 0x90004d9f, 0x0500005f, 0x90004d9c, 0x0500005d, + 0x90004d99, 0x60280000, 0x0500004d, 0x60280000, + 0x0501f062, 0x0501fec1, 0x05020060, 0x4d3c0000, + 0x600278a0, 0x8c20050e, 0x05020003, 0x853e7d56, + 0x853e7d1c, 0x82200500, 0x00000090, 0x42026000, + 0x00115a14, 0x492e6009, 0x0501fe16, 0x5c027800, + 0x60280000, 0x0502003a, 0x0501f060, 0x592c100c, + 0x82081500, 0x00ffffff, 0x59240005, 0x80084d80, + 0x05020003, 0x84204548, 0x05fdf7e9, 0x916c0583, + 0x601c0800, 0x05020005, 0x0531f8fc, 0x05000009, + 0x80000580, 0x0501f054, 0x42026000, 0x00115a14, + 0x492e6009, 0x0501fe82, 0x05000049, 0x0501f04b, + 0x42026000, 0x00115a14, 0x492e6009, 0x0501fe7c, + 0x05000032, 0x0501f045, 0x0501fe94, 0x05020033, + 0x916c0583, 0x0502003a, 0x8c200508, 0x05000008, 0x4c600000, 0x4178c000, 0x60027830, 0x417a6000, - 0x05e5fef0, 0x5c00c000, 0x480bc856, 0x052dfbea, - 0x05000013, 0x80000580, 0x0501f028, 0x05fdf7e4, - 0x480bc857, 0x60640800, 0x40001000, 0x6008b000, - 0x0501f008, 0x480bc857, 0x40000800, 0x6008b000, - 0x0501f004, 0x480bc857, 0x40000800, 0x6004b000, - 0x480bc857, 0x60c68000, 0x0501f017, 0x480bc857, - 0x600c0800, 0x6004b000, 0x05fdf7fa, 0x480bc857, - 0x60280800, 0x6004b000, 0x05fdf7f6, 0x480bc857, - 0x60240800, 0x40001000, 0x6008b000, 0x05fdf7f1, - 0x480bc857, 0x601c0800, 0x6004b000, 0x05fdf7ed, - 0x480bc857, 0x6004b000, 0x05fdf7ea, 0x80028580, - 0x4178b000, 0x90000541, 0x1c01f000, 0x4937c857, - 0x5932680a, 0x59341200, 0x813e79c0, 0x05000003, - 0x84081540, 0x0501f002, 0x84081500, 0x480a6a00, - 0x1c01f000, 0x5932680a, 0x5c000000, 0x4c000000, - 0x4803c857, 0x4937c857, 0x83340580, 0x00110210, - 0x0500001f, 0x90040586, 0x05020003, 0x6018000c, - 0x0501f014, 0x90040584, 0x05020003, 0x60100008, - 0x0501f010, 0x90040587, 0x601c000e, 0x0500000d, - 0x90040583, 0x600c000e, 0x0500000a, 0x90040585, - 0x60140008, 0x05000007, 0x90040589, 0x60240008, - 0x05000004, 0x9004058b, 0x602c000e, 0x05da08cf, - 0x4803c857, 0x48026c00, 0x90040d86, 0x05020004, - 0x59341404, 0x800811c0, 0x05d808c8, 0x1c01f000, - 0x5c000000, 0x4c000000, 0x4803c857, 0x4947c857, - 0x481bc857, 0x83440480, 0x00000800, 0x0502105f, - 0x83200400, 0x0010d17b, 0x50024800, 0x59240009, - 0x83441480, 0x000007f0, 0x05001003, 0x80081400, - 0x0501f003, 0x83441400, 0x0010d400, 0x50080000, + 0x05e5fd83, 0x5c00c000, 0x0501f038, 0x0501fe39, + 0x05000009, 0x0501fe31, 0x05020028, 0x4c600000, + 0x4178c000, 0x60027830, 0x417a6000, 0x05e5fd78, + 0x5c00c000, 0x480bc856, 0x052dff73, 0x05000017, + 0x80000580, 0x0501f02c, 0x05fdf7e4, 0x480bc857, + 0x60640800, 0x40001000, 0x6008b000, 0x0501f00c, + 0x480bc857, 0x40000800, 0x6008b000, 0x0501f008, + 0x480fc857, 0x40000800, 0x600cb000, 0x0501f004, + 0x480bc857, 0x40000800, 0x6004b000, 0x480bc857, + 0x60c68000, 0x0501f017, 0x480bc857, 0x600c0800, + 0x6004b000, 0x05fdf7fa, 0x480bc857, 0x60280800, + 0x6004b000, 0x05fdf7f6, 0x480bc857, 0x60240800, + 0x40001000, 0x6008b000, 0x05fdf7f1, 0x480bc857, + 0x601c0800, 0x6004b000, 0x05fdf7ed, 0x480bc857, + 0x6004b000, 0x05fdf7ea, 0x80028580, 0x4178b000, + 0x90000541, 0x1c01f000, 0x4937c857, 0x5932680a, + 0x59341200, 0x813e79c0, 0x05000003, 0x84081540, + 0x0501f002, 0x84081500, 0x480a6a00, 0x1c01f000, + 0x5932680a, 0x5c000000, 0x4c000000, 0x4803c857, + 0x4937c857, 0x83340580, 0x001141b4, 0x0500001f, + 0x90040586, 0x05020003, 0x6018000c, 0x0501f014, + 0x90040584, 0x05020003, 0x60100008, 0x0501f010, + 0x90040587, 0x601c000e, 0x0500000d, 0x90040583, + 0x600c000e, 0x0500000a, 0x90040585, 0x60140008, + 0x05000007, 0x90040589, 0x60240008, 0x05000004, + 0x9004058b, 0x602c000e, 0x05d60ef7, 0x4803c857, + 0x48026c00, 0x90040d86, 0x05020004, 0x59341404, + 0x800811c0, 0x05d40ef0, 0x1c01f000, 0x5c000000, + 0x4c000000, 0x4803c857, 0x4947c857, 0x481bc857, + 0x42001800, 0x80000000, 0x0501f007, 0x5c000000, + 0x4c000000, 0x4803c857, 0x4947c857, 0x481bc857, + 0x41781800, 0x59a800ad, 0x81440480, 0x0502107d, + 0x83200400, 0x0010d8f9, 0x50024800, 0x59240009, + 0x83441480, 0x000007f0, 0x0500100f, 0x83440c80, + 0x00000800, 0x0500100a, 0x83441400, 0x0010db80, + 0x4c080000, 0x4c0c0000, 0x0001fb08, 0x5c001800, + 0x5c001000, 0x0502000d, 0x0501f008, 0x80081400, + 0x0501f003, 0x83441400, 0x0010db80, 0x50080000, 0x80026d40, 0x05000005, 0x59340013, 0x80000130, - 0x81200580, 0x0500001e, 0x4c180000, 0x4d2c0000, - 0x05d9fc41, 0x412e6800, 0x5c025800, 0x5c003000, - 0x05000046, 0x59242005, 0x812000f0, 0x80102540, + 0x81200580, 0x05000030, 0x4c180000, 0x4d2c0000, + 0x800c19c0, 0x05000003, 0x05d9fa5f, 0x0501f002, + 0x05d9fa4c, 0x412e6800, 0x5c025800, 0x5c003000, + 0x05000054, 0x59242005, 0x812000f0, 0x80102540, 0x48126813, 0x5924200b, 0x82100500, 0x00001fff, 0x800000c2, 0x82102500, 0xffffe000, 0x80100540, 0x48026814, 0x59242207, 0x80102000, 0x48124a07, - 0x45341000, 0x497a680d, 0x497a6810, 0x497a680f, - 0x4c180000, 0x05fdfd3f, 0x5c003000, 0x59340a12, - 0x4c040000, 0x0505fb61, 0x5c000800, 0x05000009, - 0x82180500, 0x00ffff00, 0x05000008, 0x59a8103d, - 0x82081500, 0x00ffff00, 0x80080580, 0x05000003, - 0x80000580, 0x0501f004, 0x82180500, 0x000000ff, - 0x800000d0, 0x80040d80, 0x05000003, 0x4803c857, - 0x48026a12, 0x59340813, 0x59242005, 0x801021c0, - 0x05000008, 0x812000f0, 0x80102540, 0x40040000, - 0x80100580, 0x05000003, 0x4813c857, 0x48126813, - 0x83440580, 0x000007fe, 0x05020004, 0x4a026802, - 0x00fffffe, 0x0501f006, 0x59340002, 0x80180580, - 0x05000003, 0x481bc857, 0x481a6802, 0x0501f806, - 0x80000580, 0x1c01f000, 0x4803c856, 0x90000541, - 0x05fdf7fd, 0x59341200, 0x84081508, 0x5934000a, - 0x8c00050c, 0x0502000b, 0x599c0018, 0x8c000510, - 0x05000009, 0x59a80006, 0x8c00050a, 0x05000005, - 0x59340c03, 0x82040480, 0x000007f0, 0x05001002, - 0x84081548, 0x480a6a00, 0x1c01f000, 0x4947c857, - 0x83440480, 0x00000800, 0x05021018, 0x83200400, - 0x0010d17b, 0x50024800, 0x59240009, 0x83441480, - 0x000007f0, 0x05001003, 0x80081400, 0x0501f003, - 0x83441400, 0x0010d400, 0x50080000, 0x80026d40, - 0x05000009, 0x0501fc84, 0x05020008, 0x8d0c0502, - 0x05000004, 0x59340200, 0x8c00050e, 0x05000003, - 0x90000541, 0x1c01f000, 0x80000580, 0x05fdf7fe, - 0x5c000000, 0x4c000000, 0x4803c857, 0x4947c857, - 0x4d2c0000, 0x4d300000, 0x83440580, 0x0000ffff, - 0x0500001c, 0x83440480, 0x00000800, 0x0502101d, - 0x83441400, 0x0010d400, 0x50080000, 0x80026d40, - 0x05000014, 0x45781000, 0x5934000d, 0x80025d40, - 0x05da0bdb, 0x59366011, 0x813261c0, 0x0500000a, - 0x4c640000, 0x5930c800, 0x59325809, 0x0529ff02, - 0x05da0bd3, 0x0005ffdc, 0x90666540, 0x05fe07fa, - 0x5c00c800, 0x0501fee1, 0x41365800, 0x05d9fbc4, - 0x80000580, 0x5c026000, 0x5c025800, 0x1c01f000, - 0x90000541, 0x05fdf7fc, 0x4c580000, 0x59cc0001, - 0x4937c857, 0x82000500, 0x00ffffff, 0x48026802, - 0x497a6c01, 0x497a6a01, 0x59340200, 0x82000500, - 0xffffdffd, 0x48026a00, 0x4004b000, 0x0505facb, - 0x05020012, 0x59340403, 0x82000580, 0x000007fe, - 0x05000005, 0x59a80249, 0x8c00050a, 0x0502000b, - 0x0501f008, 0x59cc0408, 0x8c000518, 0x05000007, - 0x59cc0009, 0x4803505a, 0x59cc000a, 0x4803505b, - 0x8058b1c0, 0x05020001, 0x59cc0a09, 0x90040d10, - 0x59cc0408, 0x90000520, 0x05000005, 0x84040d40, - 0x59a81249, 0x8408155a, 0x480b5249, 0x5934000a, - 0x82000500, 0xffffffee, 0x80040540, 0x4802680a, - 0x91cca40b, 0x9134ac06, 0x6008b000, 0x053dfaa0, - 0x91cca40d, 0x9134ac08, 0x6008b000, 0x053dfa9c, - 0x59a820d0, 0x82100d00, 0x0000f000, 0x82040d80, - 0x00003000, 0x05020017, 0x59cc0013, 0x8c00053e, - 0x05000014, 0x59cc0414, 0x599c0818, 0x8c040512, - 0x0500000e, 0x8c00051e, 0x05000005, 0x59340200, - 0x84000546, 0x84000544, 0x48026a00, 0x59cc0213, - 0x8c000516, 0x05000005, 0x59340200, 0x8400054c, - 0x84000544, 0x48026a00, 0x59cc0a14, 0x0501f005, - 0x59340200, 0x84000508, 0x48026a00, 0x59cc0a18, - 0x59a80006, 0x8c00050c, 0x05020013, 0x82040480, - 0x00000800, 0x0502100a, 0x82040480, 0x00000400, - 0x05001003, 0x60000808, 0x0501f005, 0x82040480, - 0x00000200, 0x05001002, 0x60000804, 0x42001000, - 0x0010e060, 0x58080201, 0x80041480, 0x05001002, - 0x40000800, 0x48066a04, 0x59340403, 0x82000580, - 0x000007fe, 0x05020003, 0x59cc0a08, 0x48066a04, - 0x0501fe86, 0x5c00b000, 0x1c01f000, 0x4937c857, - 0x59cc0207, 0x4803c857, 0x48026a05, 0x59cc020a, - 0x4803c857, 0x48026c05, 0x59cc2006, 0x59341200, - 0x599c0818, 0x5934180a, 0x4807c857, 0x480bc857, - 0x480fc857, 0x82102500, 0xff000000, 0x82102580, - 0x02000000, 0x05000007, 0x8c00050e, 0x05000009, - 0x8c0c0514, 0x05000003, 0x8c0c050e, 0x05000005, - 0x8c040518, 0x05000003, 0x8408154a, 0x0501f002, - 0x8408150a, 0x8c000510, 0x05000009, 0x8c0c0514, - 0x05000003, 0x8c0c0510, 0x05000005, 0x8c040518, - 0x05000003, 0x8408154e, 0x0501f002, 0x8408150e, - 0x8c000512, 0x05000009, 0x8c0c0514, 0x05000003, - 0x8c0c0512, 0x05000005, 0x8c040518, 0x05000003, - 0x8408155c, 0x0501f002, 0x8408151c, 0x480a6a00, - 0x8c000500, 0x05000005, 0x053dfab1, 0x05000003, - 0x840c1d4a, 0x0501f002, 0x840c1d0a, 0x480e680a, - 0x59a80249, 0x8c000508, 0x05000007, 0x84000556, - 0x4803c857, 0x48035249, 0x42001000, 0x0010582b, - 0x0511f825, 0x1c01f000, 0x592c0015, 0x4803c857, - 0x48026805, 0x80000120, 0x42002000, 0x02000000, - 0x05fdf7bb, 0x4803c856, 0x4c5c0000, 0x4d2c0000, - 0x4c580000, 0x5934000d, 0x80025d40, 0x05000023, - 0x592c0006, 0x90000488, 0x0500100a, 0x412cb800, - 0x592c0001, 0x80025d40, 0x05fe07fa, 0x05d9fadb, - 0x0500002e, 0x492fc857, 0x492cb801, 0x0501f01b, - 0x912c0c07, 0x6020b000, 0x50040000, 0x82000580, - 0xffffffff, 0x05020006, 0x80041000, 0x50080000, - 0x82000580, 0xffffffff, 0x05000005, 0x90040c02, - 0x8058b040, 0x05fe07f5, 0x05d5ff20, 0x45480800, - 0x454c1000, 0x592c1806, 0x800c1800, 0x480e5806, - 0x480fc857, 0x0501f010, 0x05d9fac0, 0x05000013, - 0x492fc857, 0x492e680d, 0x497a5805, 0x64065806, - 0x494a5807, 0x494e5808, 0x912c0c09, 0x6038b000, - 0x46000800, 0xffffffff, 0x80040800, 0x8058b040, - 0x05fe07fc, 0x90000541, 0x5c00b000, 0x5c025800, - 0x5c00b800, 0x1c01f000, 0x80000580, 0x05fdf7fb, - 0x4803c856, 0x4d3c0000, 0x4d2c0000, 0x5934000d, - 0x80025d40, 0x0500001c, 0x592c0005, 0x80000540, - 0x0502001c, 0x412e7800, 0x0501f8a7, 0x05020019, - 0x46000800, 0xffffffff, 0x46001000, 0xffffffff, - 0x4813c857, 0x480fc857, 0x580c0006, 0x90000c82, - 0x05021012, 0x480fc857, 0x400c0000, 0x812c0580, - 0x05020004, 0x580c0001, 0x4802680d, 0x0501f003, - 0x580c0001, 0x48002001, 0x400e5800, 0x05d9fa9b, - 0x90000541, 0x5c025800, 0x5c027800, 0x1c01f000, - 0x80000580, 0x05fdf7fc, 0x80000040, 0x48001806, - 0x4803c857, 0x05fdf7f7, 0x64225a0a, 0x0001f382, - 0x64a65a0a, 0x0001f382, 0x64aa5a0a, 0x0001f382, - 0x64a25a0a, 0x0001f382, 0x643a5a0a, 0x0001f382, - 0x4943c857, 0x4d440000, 0x4d340000, 0x4d2c0000, - 0x4c580000, 0x61c0b00f, 0x417a8800, 0x0001fb00, - 0x05020007, 0x8d3c0506, 0x05000004, 0x59340200, - 0x8c00050e, 0x05020002, 0x0501f811, 0x81468800, - 0x8058b040, 0x05fe07f6, 0x83440480, 0x00000800, - 0x05021006, 0x8d3c0502, 0x05000004, 0x61c2880f, - 0x6040b000, 0x05fdf7ee, 0x5c00b000, 0x5c025800, - 0x5c026800, 0x5c028800, 0x1c01f000, 0x4d2c0000, - 0x4c600000, 0x4c5c0000, 0x4178b800, 0x5936580f, - 0x812e59c0, 0x0500002c, 0x592c0208, 0x82000500, - 0x000000ff, 0x90000592, 0x05000024, 0xb00005a0, - 0x05000022, 0x90000588, 0x05000020, 0x8d3c0500, - 0x05000003, 0x0501f846, 0x0502001c, 0x592cc000, - 0x497a5800, 0x805cb9c0, 0x05020009, 0x59340010, - 0x812c0580, 0x05020004, 0x497a680f, 0x497a6810, - 0x0501f008, 0x4862680f, 0x0501f006, 0x4860b800, - 0x59340010, 0x812c0580, 0x05020002, 0x485e6810, - 0x0005f9f3, 0x0509fcb7, 0x4a025a08, 0x00000103, - 0x49425a0a, 0x497a580d, 0x0529fece, 0x0001fb82, - 0x40625800, 0x05fdf7d7, 0x412cb800, 0x592e5800, - 0x05fdf7d4, 0x5c00b800, 0x5c00c000, 0x5c025800, - 0x1c01f000, 0x4803c856, 0x41781800, 0x5934000f, - 0x80025d40, 0x05000018, 0x592c0009, 0x80200580, - 0x592c0000, 0x05000003, 0x412c1800, 0x05fdf7f9, - 0x592c0a08, 0x82040d00, 0x000000ff, 0x90040d92, - 0x05fc07fa, 0xb0040da0, 0x05fc07f8, 0x90040d88, - 0x05fc07f6, 0x497a5800, 0x800c19c0, 0x05000007, - 0x48001800, 0x80000540, 0x05020003, 0x480e6810, - 0x90000541, 0x1c01f000, 0x4802680f, 0x80000540, - 0x05fe07fd, 0x497a6810, 0x05fdf7fa, 0x592c000c, - 0x81480580, 0x05020003, 0x592c000d, 0x814c0580, - 0x1c01f000, 0x4803c856, 0x4c580000, 0x413c1800, - 0x400c2000, 0x593c0005, 0x80000540, 0x05020014, - 0x6020b000, 0x900c0c07, 0x50040000, 0x81480580, - 0x05020005, 0x80041000, 0x50080000, 0x814c0580, - 0x0500000b, 0x90040c02, 0x8058b040, 0x05fe07f7, - 0x400c2000, 0x580c0001, 0x80001d40, 0x05fe07f1, - 0x90000541, 0x5c00b000, 0x1c01f000, 0x80000580, - 0x05fdf7fd, 0x4937c857, 0x4c580000, 0x4d2c0000, - 0x5934000d, 0x80025d40, 0x05020011, 0x05d9f9d7, - 0x0500000c, 0x492e680d, 0x64065805, 0x497a5806, - 0x912c0c07, 0x6040b000, 0x46000800, 0xffffffff, + 0x41340000, 0x83440d00, 0xfffffff0, 0x82040d80, + 0x000007f0, 0x05000009, 0x83440c80, 0x00000800, + 0x05001006, 0x4a026815, 0x00020000, 0x497a6816, + 0x82000540, 0x20000000, 0x44001000, 0x497a680d, + 0x497a6810, 0x497a680f, 0x4c180000, 0x05fdfcfc, + 0x5c003000, 0x59340a12, 0x4c040000, 0x0505fc11, + 0x5c000800, 0x05000009, 0x82180500, 0x00ffff00, + 0x05000008, 0x59a81040, 0x82081500, 0x00ffff00, + 0x80080580, 0x05000003, 0x80000580, 0x0501f004, + 0x82180500, 0x000000ff, 0x800000d0, 0x80040d80, + 0x05000003, 0x4803c857, 0x48026a12, 0x59340813, + 0x59242005, 0x801021c0, 0x05000008, 0x812000f0, + 0x80102540, 0x40040000, 0x80100580, 0x05000003, + 0x4813c857, 0x48126813, 0x83440580, 0x000007fe, + 0x05020004, 0x4a026802, 0x00fffffe, 0x0501f006, + 0x59340002, 0x80180580, 0x05000003, 0x481bc857, + 0x481a6802, 0x0501f806, 0x80000580, 0x1c01f000, + 0x4803c856, 0x90000541, 0x05fdf7fd, 0x59341200, + 0x84081508, 0x5934000a, 0x8c00050c, 0x0502000e, + 0x599c0018, 0x8c000510, 0x0500000c, 0x59a80006, + 0x8c00050a, 0x05000008, 0x59340c03, 0x82040480, + 0x000007f0, 0x05001005, 0x82040480, 0x00000800, + 0x05021002, 0x84081548, 0x480a6a00, 0x1c01f000, + 0x4947c857, 0x59a800ad, 0x81440480, 0x0502101e, + 0x83200400, 0x0010d8f9, 0x50024800, 0x59240009, + 0x83441480, 0x000007f0, 0x05001009, 0x83440c80, + 0x00000800, 0x05001004, 0x0001fb08, 0x05020011, + 0x0501f008, 0x80081400, 0x0501f003, 0x83441400, + 0x0010db80, 0x50080000, 0x80026d40, 0x05000009, + 0x0501fd0a, 0x05020008, 0x8d0c0502, 0x05000004, + 0x59340200, 0x8c00050e, 0x05000003, 0x90000541, + 0x1c01f000, 0x80000580, 0x05fdf7fe, 0x5c000000, + 0x4c000000, 0x4803c857, 0x4947c857, 0x4d2c0000, + 0x4d300000, 0x83440580, 0x0000ffff, 0x0500001e, + 0x59a800ad, 0x81440480, 0x0502101f, 0x83441400, + 0x0010db80, 0x50080000, 0x82000500, 0x00ffffff, + 0x80026d40, 0x05000014, 0x45781000, 0x5934000d, + 0x80025d40, 0x05da09cd, 0x59366011, 0x813261c0, + 0x0500000a, 0x4c640000, 0x5930c800, 0x59325809, + 0x052dfa46, 0x05da09c5, 0x0009f810, 0x90666540, + 0x05fe07fa, 0x5c00c800, 0x0501ff71, 0x41365800, + 0x05d9f9b6, 0x80000580, 0x5c026000, 0x5c025800, + 0x1c01f000, 0x90000541, 0x05fdf7fc, 0x4d2c0000, + 0x4d340000, 0x4947c857, 0x05d9f98a, 0x0500001a, + 0x412e6800, 0x497a6816, 0x0531ff4c, 0x83440400, + 0x0010db80, 0x50000000, 0x82000d00, 0xe0000000, + 0x82040d80, 0x20000000, 0x05000007, 0x8c000538, + 0x0502000a, 0x59e00004, 0x8c00050e, 0x05da0c22, + 0x05fdf7f3, 0x82000500, 0x00ffffff, 0x40006800, + 0x80000580, 0x4803c857, 0x5c026800, 0x5c025800, + 0x1c01f000, 0x4803c857, 0x90000541, 0x05fdf7fb, + 0x4c580000, 0x59cc0001, 0x4937c857, 0x82000500, + 0x00ffffff, 0x48026802, 0x497a6c01, 0x497a6a01, + 0x59340200, 0x82000500, 0xffffdffd, 0x48026a00, + 0x4004b000, 0x0505fb4f, 0x05020012, 0x59340403, + 0x82000580, 0x000007fe, 0x05000005, 0x59a8024c, + 0x8c00050a, 0x0502000b, 0x0501f008, 0x59cc0408, + 0x8c000518, 0x05000007, 0x59cc0009, 0x4803505d, + 0x59cc000a, 0x4803505e, 0x8058b1c0, 0x05020001, + 0x59cc0a09, 0x90040d10, 0x59cc0408, 0x90000520, + 0x05000005, 0x84040d40, 0x59a8124c, 0x8408155a, + 0x480b524c, 0x5934000a, 0x82000500, 0xffffffee, + 0x80040540, 0x4802680a, 0x91cca40b, 0x9134ac06, + 0x6008b000, 0x053dffb5, 0x91cca40d, 0x9134ac08, + 0x6008b000, 0x053dffb1, 0x59a820d5, 0x82100d00, + 0x0000f000, 0x82040d80, 0x00003000, 0x05020017, + 0x59cc0013, 0x8c00053e, 0x05000014, 0x59cc0414, + 0x599c0818, 0x8c040512, 0x0500000e, 0x8c00051e, + 0x05000005, 0x59340200, 0x84000546, 0x84000544, + 0x48026a00, 0x59cc0213, 0x8c000516, 0x05000005, + 0x59340200, 0x8400054c, 0x84000544, 0x48026a00, + 0x59cc0a14, 0x0501f005, 0x59340200, 0x84000508, + 0x48026a00, 0x59cc0a18, 0x59a80006, 0x8c00050c, + 0x05020013, 0x82040480, 0x00000800, 0x0502100a, + 0x82040480, 0x00000400, 0x05001003, 0x60000808, + 0x0501f005, 0x82040480, 0x00000200, 0x05001002, + 0x60000804, 0x42001000, 0x00111ffa, 0x58080201, + 0x80041480, 0x05001002, 0x40000800, 0x48066a04, + 0x59340403, 0x82000580, 0x000007fe, 0x05020003, + 0x59cc0a08, 0x48066a04, 0x0501fef5, 0x5c00b000, + 0x1c01f000, 0x4937c857, 0x59cc0207, 0x4803c857, + 0x48026a05, 0x59cc020a, 0x4803c857, 0x48026c05, + 0x59cc2006, 0x59341200, 0x599c0818, 0x5934180a, + 0x4807c857, 0x480bc857, 0x480fc857, 0x82102500, + 0xff000000, 0x82102580, 0x02000000, 0x05000007, + 0x8c00050e, 0x05000009, 0x8c0c0514, 0x05000003, + 0x8c0c050e, 0x05000005, 0x8c040518, 0x05000003, + 0x8408154a, 0x0501f002, 0x8408150a, 0x8c000510, + 0x05000009, 0x8c0c0514, 0x05000003, 0x8c0c0510, + 0x05000005, 0x8c040518, 0x05000003, 0x8408154e, + 0x0501f002, 0x8408150e, 0x8c000512, 0x05000009, + 0x8c0c0514, 0x05000003, 0x8c0c0512, 0x05000005, + 0x8c040518, 0x05000003, 0x8408155c, 0x0501f002, + 0x8408151c, 0x480a6a00, 0x8c000500, 0x05000005, + 0x053dffc6, 0x05000003, 0x840c1d4a, 0x0501f002, + 0x840c1d0a, 0x480e680a, 0x59a8024c, 0x8c000508, + 0x05000007, 0x84000556, 0x4803c857, 0x4803524c, + 0x42001000, 0x00105a99, 0x0511f9d9, 0x1c01f000, + 0x592c0015, 0x4803c857, 0x48026805, 0x80000120, + 0x42002000, 0x02000000, 0x05fdf7bb, 0x4803c856, + 0x4c5c0000, 0x4d2c0000, 0x4c580000, 0x5934000d, + 0x80025d40, 0x05000023, 0x592c0006, 0x90000488, + 0x0500100a, 0x412cb800, 0x592c0001, 0x80025d40, + 0x05fe07fa, 0x05d9f8ac, 0x0500002e, 0x492fc857, + 0x492cb801, 0x0501f01b, 0x912c0c07, 0x6020b000, + 0x50040000, 0x82000580, 0xffffffff, 0x05020006, + 0x80041000, 0x50080000, 0x82000580, 0xffffffff, + 0x05000005, 0x90040c02, 0x8058b040, 0x05fe07f5, + 0x05d5fcf5, 0x45480800, 0x454c1000, 0x592c1806, + 0x800c1800, 0x480e5806, 0x480fc857, 0x0501f010, + 0x05d9f891, 0x05000013, 0x492fc857, 0x492e680d, + 0x497a5805, 0x64065806, 0x494a5807, 0x494e5808, + 0x912c0c09, 0x6038b000, 0x46000800, 0xffffffff, 0x80040800, 0x8058b040, 0x05fe07fc, 0x90000541, - 0x5c025800, 0x5c00b000, 0x1c01f000, 0x4d2c0000, - 0x592e5801, 0x05d9f9de, 0x5c025800, 0x497a5801, - 0x05fdf7ee, 0x4d2c0000, 0x5936580d, 0x812e59c0, - 0x05000005, 0x4937c857, 0x497a680d, 0x05d9f9d4, - 0x90000541, 0x5c025800, 0x1c01f000, 0x59340405, - 0x4937c857, 0x4803c857, 0x8c000508, 0x1c01f000, - 0x4803c856, 0x0505f8dd, 0x05000043, 0x59a80843, - 0x8c040504, 0x0502001b, 0x59a80a49, 0x8c040506, - 0x05000018, 0x053df91b, 0x42024800, 0x0010e512, - 0x61fa880f, 0x59240809, 0x83440480, 0x000007f0, - 0x80040400, 0x50026800, 0x813669c0, 0x0500000a, - 0x59240200, 0x90000503, 0x90000583, 0x05020006, - 0x0501fa49, 0x05020004, 0x59340200, 0x8400055a, - 0x48026a00, 0x91264c0d, 0x8058b040, 0x05fe07ee, - 0x59a80006, 0x8c00051c, 0x05020003, 0x8d0c0520, - 0x05000013, 0x61c0b00f, 0x417a8800, 0x0001fb00, - 0x0502000c, 0x0501fa38, 0x0502000a, 0x59a8003d, - 0x59340802, 0x80040580, 0x82000500, 0x00ffff00, - 0x05020004, 0x59340200, 0x8400055a, 0x48026a00, - 0x81468800, 0x8058b040, 0x05fe07f1, 0x0501f8d1, - 0x05000003, 0x59a8085b, 0x0501f007, 0x6140080f, - 0x59a80006, 0x8c00051c, 0x05020003, 0x8d0c0520, - 0x05000004, 0x42001000, 0x0010582b, 0x050dffd5, - 0x1c01f000, 0x053df8df, 0x42024800, 0x0010e512, - 0x61fa880f, 0x59240809, 0x83440480, 0x000007f0, - 0x80040400, 0x50026800, 0x813669c0, 0x05000008, - 0x59240200, 0x90000503, 0x90000583, 0x05020004, - 0x59340200, 0x8400051a, 0x48026a00, 0x91264c0d, - 0x8058b040, 0x05fe07f0, 0x05fdf7c6, 0x4d300000, - 0x4d340000, 0x4d440000, 0x4d3c0000, 0x4c580000, - 0x4d200000, 0x4d240000, 0x42001000, 0x0010582b, - 0x050dfe81, 0x59a80a49, 0x4807c857, 0x8c040508, - 0x0502002e, 0x8c04050a, 0x05020003, 0x8c040506, - 0x05000042, 0x053df8b7, 0x42024800, 0x0010e512, - 0x41781000, 0x61fa880f, 0x59240809, 0x83440480, - 0x000007f0, 0x80040400, 0x50026800, 0x813669c0, - 0x0500000b, 0x59240200, 0x90000503, 0x90000583, - 0x05020007, 0x59340200, 0x8c00051a, 0x05000004, - 0x8400051a, 0x48026a00, 0x80081000, 0x91264c0d, - 0x8058b040, 0x05fe07ed, 0x59a80a49, 0x8c04050a, - 0x05020026, 0x800811c0, 0x0500004b, 0x59a80a49, - 0x8c04050a, 0x05020021, 0x8d0c0520, 0x05000005, - 0x6140080f, 0x42001000, 0x0010582b, 0x050dff85, - 0x05e5fc61, 0x0501f040, 0x59a80249, 0x4803c857, - 0x8c000516, 0x0502003c, 0x59aa68c2, 0x813669c0, - 0x05000039, 0x59340400, 0x82000580, 0x00000404, - 0x05020035, 0x051dfb92, 0x05d40d68, 0x4933c857, - 0x64066407, 0x4936600a, 0x4926601d, 0x417a7800, - 0x05fdfc6b, 0x60140800, 0x05fdfc73, 0x600e7000, - 0x0009f800, 0x0501f028, 0x61c0b00f, 0x80028d80, - 0x0001fb00, 0x05020021, 0x59340200, 0x8c00051a, - 0x0500001e, 0x59368c03, 0x417a7800, 0x60a68000, - 0x0501f9e9, 0x59240400, 0x8c00050a, 0x05020003, - 0x41783000, 0x0535ff19, 0x59340200, 0x84000558, - 0x8400051a, 0x48026a00, 0x4937c857, 0x4a026c00, - 0x00000707, 0x05fdff2c, 0x60a68000, 0x0515fc7c, - 0x4df00000, 0x417a6000, 0x0515f9ab, 0x0515fab0, - 0x0515faf9, 0x417a7800, 0x0515f87e, 0x0535fdd2, - 0x5c03e000, 0x05140c63, 0x81468800, 0x8058b040, - 0x05fe07dc, 0x5c024800, 0x5c024000, 0x5c00b000, - 0x5c027800, 0x5c028800, 0x5c026800, 0x5c026000, - 0x1c01f000, 0x4933c857, 0x5930380a, 0x581c0200, - 0x8400051a, 0x48003a00, 0x1c01f000, 0x4933c857, - 0x5930000a, 0x50000000, 0x8c000508, 0x1c01f000, - 0x5930000a, 0x50000000, 0x4933c857, 0x4803c857, - 0x8c00050e, 0x1c01f000, 0x5930000a, 0x50000000, - 0x8c00050a, 0x1c01f000, 0x4933c856, 0x0501f96e, - 0x05000005, 0x59340400, 0x82000d00, 0x000000ff, - 0x90041585, 0x1c01f000, 0x4803c856, 0x59a80a49, - 0x8c040506, 0x0500000a, 0x5930081d, 0x58040200, - 0x8c000500, 0x05000006, 0x58040009, 0x9000040e, - 0x50000800, 0x58040200, 0x8c00051a, 0x1c01f000, - 0x4d340000, 0x4c580000, 0x59a80a49, 0x8c040506, - 0x05000014, 0x053df817, 0x42000800, 0x0010e512, - 0x58041009, 0x9008040e, 0x50026800, 0x813669c0, - 0x05000008, 0x58040200, 0x90000503, 0x90000583, - 0x05020004, 0x59340200, 0x8c00051a, 0x05020005, - 0x90040c0d, 0x8058b040, 0x05fe07f2, 0x80000580, - 0x5c00b000, 0x5c026800, 0x1c01f000, 0x4937c857, - 0x493fc857, 0x59341200, 0x813e79c0, 0x05000003, - 0x8408155e, 0x0501f002, 0x8408151e, 0x480a6a00, - 0x1c01f000, 0x4937c857, 0x05e5fb06, 0x05000005, - 0x59a8085a, 0x42001000, 0x00105905, 0x050dfee5, - 0x1c01f000, 0x4937c857, 0x42001000, 0x00105905, - 0x050dfdad, 0x59a81249, 0x84081512, 0x480b5249, - 0x1c01f000, 0x4c380000, 0x4c340000, 0x4c240000, - 0x4c600000, 0x4008c000, 0x83440480, 0x00000800, - 0x05021065, 0x80002d80, 0x41442000, 0x83447400, - 0x0010d400, 0x61c0b00f, 0x83444c80, 0x000007f0, - 0x05021005, 0x82600480, 0x00fffffc, 0x05001005, - 0x0501f059, 0x6040b000, 0x59240009, 0x80247400, - 0x50380000, 0x80000540, 0x05020030, 0x41440000, - 0x80100580, 0x05020060, 0x40102800, 0x82104c80, - 0x000007f0, 0x05001027, 0x59a80249, 0x8c00050a, + 0x5c00b000, 0x5c025800, 0x5c00b800, 0x1c01f000, + 0x80000580, 0x05fdf7fb, 0x4803c856, 0x4d3c0000, + 0x4d2c0000, 0x5934000d, 0x80025d40, 0x0500001c, + 0x592c0005, 0x80000540, 0x0502001c, 0x412e7800, + 0x0501f8ab, 0x05020019, 0x46000800, 0xffffffff, + 0x46001000, 0xffffffff, 0x4813c857, 0x480fc857, + 0x580c0006, 0x90000c82, 0x05021012, 0x480fc857, + 0x400c0000, 0x812c0580, 0x05020004, 0x580c0001, + 0x4802680d, 0x0501f003, 0x580c0001, 0x48002001, + 0x400e5800, 0x05d9f86c, 0x90000541, 0x5c025800, + 0x5c027800, 0x1c01f000, 0x80000580, 0x05fdf7fc, + 0x80000040, 0x48001806, 0x4803c857, 0x05fdf7f7, + 0x64225a0a, 0x0001f3a8, 0x64a65a0a, 0x0001f3a8, + 0x64aa5a0a, 0x0001f3a8, 0x64a25a0a, 0x0001f3a8, + 0x643a5a0a, 0x0001f3a8, 0x4943c857, 0x4d440000, + 0x4d340000, 0x4d2c0000, 0x4c580000, 0x59a8b0ac, + 0x8d3c0502, 0x05000002, 0x59a8b0ad, 0x417a8800, + 0x0001fb08, 0x05020007, 0x8d3c0506, 0x05000004, + 0x59340200, 0x8c00050e, 0x05020002, 0x0501f812, + 0x81468800, 0x83440580, 0x000007f0, 0x05020004, + 0x8d3c0502, 0x05020002, 0x60028810, 0x8058b040, + 0x05fe07f0, 0x59a800ad, 0x81440480, 0x05021001, + 0x5c00b000, 0x5c025800, 0x5c026800, 0x5c028800, + 0x1c01f000, 0x4d2c0000, 0x4c600000, 0x4c5c0000, + 0x4178b800, 0x5936580f, 0x812e59c0, 0x0500002c, + 0x592c0208, 0x82000500, 0x000000ff, 0x90000592, + 0x05000024, 0xb00005a0, 0x05000022, 0x90000588, + 0x05000020, 0x8d3c0500, 0x05000003, 0x0501f846, + 0x0502001c, 0x592cc000, 0x497a5800, 0x805cb9c0, + 0x05020009, 0x59340010, 0x812c0580, 0x05020004, + 0x497a680f, 0x497a6810, 0x0501f008, 0x4862680f, + 0x0501f006, 0x4860b800, 0x59340010, 0x812c0580, + 0x05020002, 0x485e6810, 0x0005fa1a, 0x0509fdd5, + 0x4a025a08, 0x00000103, 0x49425a0a, 0x497a580d, + 0x052df9fd, 0x0001fba8, 0x40625800, 0x05fdf7d7, + 0x412cb800, 0x592e5800, 0x05fdf7d4, 0x5c00b800, + 0x5c00c000, 0x5c025800, 0x1c01f000, 0x4803c856, + 0x41781800, 0x5934000f, 0x80025d40, 0x05000018, + 0x592c0009, 0x80200580, 0x592c0000, 0x05000003, + 0x412c1800, 0x05fdf7f9, 0x592c0a08, 0x82040d00, + 0x000000ff, 0x90040d92, 0x05fc07fa, 0xb0040da0, + 0x05fc07f8, 0x90040d88, 0x05fc07f6, 0x497a5800, + 0x800c19c0, 0x05000007, 0x48001800, 0x80000540, + 0x05020003, 0x480e6810, 0x90000541, 0x1c01f000, + 0x4802680f, 0x80000540, 0x05fe07fd, 0x497a6810, + 0x05fdf7fa, 0x592c000c, 0x81480580, 0x05020003, + 0x592c000d, 0x814c0580, 0x1c01f000, 0x4803c856, + 0x4c580000, 0x413c1800, 0x400c2000, 0x593c0005, + 0x80000540, 0x05020014, 0x6020b000, 0x900c0c07, + 0x50040000, 0x81480580, 0x05020005, 0x80041000, + 0x50080000, 0x814c0580, 0x0500000b, 0x90040c02, + 0x8058b040, 0x05fe07f7, 0x400c2000, 0x580c0001, + 0x80001d40, 0x05fe07f1, 0x90000541, 0x5c00b000, + 0x1c01f000, 0x80000580, 0x05fdf7fd, 0x4937c857, + 0x4c580000, 0x4d2c0000, 0x5934000d, 0x80025d40, + 0x05020011, 0x05d5ffa4, 0x0500000c, 0x492e680d, + 0x64065805, 0x497a5806, 0x912c0c07, 0x6040b000, + 0x46000800, 0xffffffff, 0x80040800, 0x8058b040, + 0x05fe07fc, 0x90000541, 0x5c025800, 0x5c00b000, + 0x1c01f000, 0x4d2c0000, 0x592e5801, 0x05d5ffab, + 0x5c025800, 0x497a5801, 0x05fdf7ee, 0x4d2c0000, + 0x5936580d, 0x812e59c0, 0x05000005, 0x4937c857, + 0x497a680d, 0x05d5ffa1, 0x90000541, 0x5c025800, + 0x1c01f000, 0x59340405, 0x4937c857, 0x4803c857, + 0x8c000508, 0x1c01f000, 0x4803c856, 0x0505f95d, + 0x05000047, 0x59a80846, 0x8c040504, 0x0502001b, + 0x59a80a4c, 0x8c040506, 0x05000018, 0x053dfe2c, + 0x42024800, 0x001124b6, 0x61fa880f, 0x59240809, + 0x83440480, 0x000007f0, 0x80040400, 0x50026800, + 0x813669c0, 0x0500000a, 0x59240200, 0x90000503, + 0x90000583, 0x05020006, 0x0501faa8, 0x05020004, + 0x59340200, 0x8400055a, 0x48026a00, 0x91264c0d, + 0x8058b040, 0x05fe07ee, 0x59a80006, 0x8c00051c, + 0x05020003, 0x8d0c0520, 0x05000017, 0x59a8b0ac, + 0x417a8800, 0x0001fb08, 0x0502000c, 0x0501fa97, + 0x0502000a, 0x59a80040, 0x59340802, 0x80040580, + 0x82000500, 0x00ffff00, 0x05020004, 0x59340200, + 0x8400055a, 0x48026a00, 0x81468800, 0x83440580, + 0x000007f0, 0x05020002, 0x60028810, 0x8058b040, + 0x05fe07ed, 0x0501f8d5, 0x05000003, 0x59a8085e, + 0x0501f007, 0x6140080f, 0x59a80006, 0x8c00051c, + 0x05020003, 0x8d0c0520, 0x05000004, 0x42001000, + 0x00105a99, 0x0511f9cb, 0x1c01f000, 0x053dfdec, + 0x42024800, 0x001124b6, 0x61fa880f, 0x59240809, + 0x83440480, 0x000007f0, 0x80040400, 0x50026800, + 0x813669c0, 0x05000008, 0x59240200, 0x90000503, + 0x90000583, 0x05020004, 0x59340200, 0x8400051a, + 0x48026a00, 0x91264c0d, 0x8058b040, 0x05fe07f0, + 0x05fdf7c2, 0x4d300000, 0x4d340000, 0x4d440000, + 0x4d3c0000, 0x4c580000, 0x4d200000, 0x4d240000, + 0x42001000, 0x00105a99, 0x0511f82d, 0x59a80a4c, + 0x4807c857, 0x8c040508, 0x0502002e, 0x8c04050a, + 0x05020003, 0x8c040506, 0x05000042, 0x053dfdc4, + 0x42024800, 0x001124b6, 0x41781000, 0x61fa880f, + 0x59240809, 0x83440480, 0x000007f0, 0x80040400, + 0x50026800, 0x813669c0, 0x0500000b, 0x59240200, + 0x90000503, 0x90000583, 0x05020007, 0x59340200, + 0x8c00051a, 0x05000004, 0x8400051a, 0x48026a00, + 0x80081000, 0x91264c0d, 0x8058b040, 0x05fe07ed, + 0x59a80a4c, 0x8c04050a, 0x05020026, 0x800811c0, + 0x0500004f, 0x59a80a4c, 0x8c04050a, 0x05020021, + 0x8d0c0520, 0x05000005, 0x6140080f, 0x42001000, + 0x00105a99, 0x0511f97b, 0x05e5fa8b, 0x0501f044, + 0x59a8024c, 0x4803c857, 0x8c000516, 0x05020040, + 0x59aa68c7, 0x813669c0, 0x0500003d, 0x59340400, + 0x82000580, 0x00000404, 0x05020039, 0x051dfe39, + 0x05d40b35, 0x4933c857, 0x64066407, 0x4936600a, + 0x4926601d, 0x417a7800, 0x05fdfc10, 0x60140800, + 0x05fdfc18, 0x600e7000, 0x0009f839, 0x0501f02c, + 0x59a8b0ac, 0x80028d80, 0x0001fb08, 0x05020021, + 0x59340200, 0x8c00051a, 0x0500001e, 0x59368c03, + 0x417a7800, 0x60a68000, 0x0501fa44, 0x59240400, + 0x8c00050a, 0x05020003, 0x41783000, 0x0539fbf2, + 0x59340200, 0x84000558, 0x8400051a, 0x48026a00, + 0x4937c857, 0x4a026c00, 0x00000707, 0x05fdff28, + 0x60a68000, 0x0515fecc, 0x4df00000, 0x417a6000, + 0x0515fbf6, 0x0515fd01, 0x0515fd4a, 0x417a7800, + 0x0515fac9, 0x0539fa7b, 0x5c03e000, 0x05140eb3, + 0x81468800, 0x83440580, 0x000007f0, 0x05020002, + 0x60028810, 0x8058b040, 0x05fe07d8, 0x5c024800, + 0x5c024000, 0x5c00b000, 0x5c027800, 0x5c028800, + 0x5c026800, 0x5c026000, 0x1c01f000, 0x4933c857, + 0x5930380a, 0x581c0200, 0x8400051a, 0x48003a00, + 0x1c01f000, 0x4933c857, 0x5930000a, 0x50000000, + 0x8c000508, 0x1c01f000, 0x5930000a, 0x50000000, + 0x4933c857, 0x4803c857, 0x8c00050e, 0x1c01f000, + 0x5930000a, 0x50000000, 0x8c00050a, 0x1c01f000, + 0x4933c856, 0x0501f9c5, 0x05000005, 0x59340400, + 0x82000d00, 0x000000ff, 0x90041585, 0x1c01f000, + 0x4803c856, 0x59a80a4c, 0x8c040506, 0x0500000a, + 0x5930081d, 0x58040200, 0x8c000500, 0x05000006, + 0x58040009, 0x9000040e, 0x50000800, 0x58040200, + 0x8c00051a, 0x1c01f000, 0x4d340000, 0x4c580000, + 0x59a80a4c, 0x8c040506, 0x05000014, 0x053dfd20, + 0x42000800, 0x001124b6, 0x58041009, 0x9008040e, + 0x50026800, 0x813669c0, 0x05000008, 0x58040200, + 0x90000503, 0x90000583, 0x05020004, 0x59340200, + 0x8c00051a, 0x05020005, 0x90040c0d, 0x8058b040, + 0x05fe07f2, 0x80000580, 0x5c00b000, 0x5c026800, + 0x1c01f000, 0x4937c857, 0x493fc857, 0x59341200, + 0x813e79c0, 0x05000003, 0x8408155e, 0x0501f002, + 0x8408151e, 0x480a6a00, 0x1c01f000, 0x4937c857, + 0x05e5f92c, 0x05000005, 0x59a8085d, 0x42001000, + 0x00105b77, 0x0511f8d7, 0x1c01f000, 0x4937c857, + 0x42001000, 0x00105b77, 0x050dff55, 0x59a8124c, + 0x84081512, 0x480b524c, 0x1c01f000, 0x4c380000, + 0x4c340000, 0x4c240000, 0x4c600000, 0x4008c000, + 0x59a800ad, 0x81440480, 0x050210a9, 0x80002d80, + 0x41442000, 0x83447400, 0x0010db80, 0x59a8b0ac, + 0x83444c80, 0x000007f0, 0x05001004, 0x83441c80, + 0x00000800, 0x05001005, 0x82600480, 0x00fffffc, + 0x05001005, 0x0501f09a, 0x6040b000, 0x59240009, + 0x80247400, 0x50380000, 0x80000540, 0x05020033, + 0x41440000, 0x80100580, 0x050200a4, 0x40102800, + 0x82104c80, 0x000007f0, 0x0500102a, 0x82104c80, + 0x00000800, 0x05021027, 0x59a8024c, 0x8c00050a, 0x0500000d, 0x82104d80, 0x000007fe, 0x05020005, - 0x82604d80, 0x00fffffe, 0x05020043, 0x0501f01d, + 0x82604d80, 0x00fffffe, 0x05020081, 0x0501f01d, 0x59240200, 0x82000500, 0x00000220, 0x05020005, - 0x0501f04a, 0x59240200, 0x8c00050a, 0x05000047, + 0x0501f08b, 0x59240200, 0x8c00050a, 0x05000088, 0x82104d80, 0x000007fc, 0x05020005, 0x82604d80, - 0x00fffffc, 0x05020034, 0x0501f00e, 0x82104d80, + 0x00fffffc, 0x05020072, 0x0501f00e, 0x82104d80, 0x000007fd, 0x05020005, 0x82604d80, 0x00fffffd, - 0x0502002d, 0x0501f007, 0x82104d80, 0x000007ff, - 0x05020029, 0x82604d80, 0x00ffffff, 0x05020026, - 0x84142d5e, 0x0501f034, 0x40006800, 0x58343002, - 0x82183500, 0x00ffffff, 0x40180000, 0x80600580, - 0x05020022, 0x58340813, 0x80040130, 0x81200580, - 0x0502001e, 0x82040500, 0x00ffffff, 0x59240805, + 0x0502006b, 0x0501f007, 0x82104d80, 0x000007ff, + 0x05020067, 0x82604d80, 0x00ffffff, 0x05020064, + 0x84142d5e, 0x0501f075, 0x82000d00, 0xe0000000, + 0x05000025, 0x8d0c0538, 0x05020003, 0x60800000, + 0x0501f0b2, 0x82000500, 0x00ffffff, 0x8c04053c, + 0x05000013, 0x40003000, 0x80600580, 0x05000021, + 0x40100000, 0x81440580, 0x05020064, 0x4c200000, + 0x4c180000, 0x4c100000, 0x4d440000, 0x40128800, + 0x05fdfc37, 0x5c028800, 0x5c002000, 0x5c003000, + 0x5c004000, 0x05020077, 0x0501f04e, 0x82041d80, + 0x20000000, 0x05000008, 0x82041d80, 0xa0000000, + 0x05000005, 0x82041d80, 0x80000000, 0x05d60a22, + 0x84040d7a, 0x40006800, 0x58343002, 0x82183500, + 0x00ffffff, 0x40180000, 0x80600580, 0x05020039, + 0x800409c0, 0x05000014, 0x82041d80, 0x20000000, + 0x05000011, 0x82041d80, 0xa0000000, 0x05020005, + 0x50380000, 0x82000540, 0xa0000000, 0x44007000, + 0x4c200000, 0x4c100000, 0x4d440000, 0x40128800, + 0x05fdfc0f, 0x5c028800, 0x5c002000, 0x5c004000, + 0x05020050, 0x58340813, 0x80040130, 0x81200580, + 0x05020020, 0x82040500, 0x00ffffff, 0x59240805, 0x80040580, 0x05000004, 0x812000f0, 0x80040d40, 0x48046813, 0x40100000, 0x81440580, 0x05020009, - 0x40366800, 0x8c200508, 0x05000052, 0x05fdff53, - 0x05020050, 0x4947c857, 0x60740000, 0x0501f04e, - 0x4947c857, 0x480bc857, 0x4823c857, 0x60680000, - 0x0501f049, 0x4947c857, 0x4863c857, 0x4813c857, - 0x60640000, 0x0501f044, 0x40100000, 0x81440580, - 0x05020009, 0x58343002, 0x4947c857, 0x481bc857, - 0x606c0000, 0x0501f03c, 0x4947c857, 0x607c0000, - 0x0501f039, 0x80102000, 0x80387000, 0x83444c80, - 0x000007f0, 0x05001007, 0x82104d80, 0x00000800, - 0x0502000a, 0x59247009, 0x61c0200f, 0x0501f007, - 0x82104d80, 0x000007f0, 0x05020004, 0x41782000, - 0x42007000, 0x0010d400, 0x8058b040, 0x05fe0789, - 0x801429c0, 0x05020005, 0x05d5fc3c, 0x4947c857, - 0x60280000, 0x0501f020, 0x4d2c0000, 0x4c180000, - 0x40603000, 0x05fdfb6f, 0x4947c857, 0x4937c857, - 0x5c003000, 0x5c025800, 0x05fe07f5, 0x497a6a12, - 0x59a80249, 0x8c00050a, 0x0502000d, 0x82600500, - 0x00ffff00, 0x05000006, 0x59a8483d, 0x82244d00, - 0x00ffff00, 0x80240580, 0x05020005, 0x82600500, - 0x000000ff, 0x800000d0, 0x48026a12, 0x48626802, - 0x59244805, 0x812000f0, 0x80244d40, 0x48266813, - 0x80000580, 0x80000540, 0x5c00c000, 0x5c004800, - 0x5c006800, 0x5c007000, 0x1c01f000, 0x5934000f, - 0x8d0c0512, 0x05020005, 0x5934140b, 0x80081040, - 0x05001002, 0x480a6c0b, 0x80000540, 0x00020b0d, - 0x1c01f000, 0x59340a00, 0x84040d08, 0x80000540, - 0x05000005, 0x5934000a, 0x8400054c, 0x4802680a, - 0x0501f004, 0x599c0018, 0x8c000510, 0x05000002, - 0x84040d48, 0x48066a00, 0x1c01f000, 0x4803c857, - 0x4947c857, 0x4c300000, 0x90006530, 0x05000005, - 0x4c000000, 0x0529ff89, 0x5c000000, 0x0502000e, - 0x8c00050e, 0x05000009, 0x0501f88f, 0x0502000a, - 0x4937c857, 0x592c020b, 0x8c00051c, 0x05020003, - 0x41240800, 0x0501f89f, 0x80000580, 0x5c006000, - 0x1c01f000, 0x90000541, 0x05fdf7fd, 0x4803c857, - 0x4c580000, 0x4d440000, 0x40001000, 0x80000d80, - 0x61c0b00f, 0x4c040000, 0x40068800, 0x4c080000, - 0x40080000, 0x05fdffe0, 0x5c001000, 0x5c000800, - 0x80040800, 0x8058b040, 0x05fe07f7, 0x8c080514, - 0x05000005, 0x84081514, 0x6004b000, 0x61f0080f, - 0x05fdf7f1, 0x4d300000, 0x4d400000, 0x4d240000, - 0x0501fb9a, 0x61fe89ff, 0x42026000, 0x00111a70, - 0x4a02600a, 0x00110210, 0x417a4800, 0x4926601d, - 0x60a68000, 0x0515fafa, 0x4df00000, 0x0515f930, - 0x0535fc55, 0x5c03e000, 0x05140ae6, 0x5c024800, - 0x5c028000, 0x5c026000, 0x5c028800, 0x5c00b000, - 0x1c01f000, 0x4c5c0000, 0x59340400, 0x8200bd80, + 0x40366800, 0x8c200508, 0x05000063, 0x05fdff11, + 0x05020061, 0x4947c857, 0x60740000, 0x0501f05f, + 0x4947c857, 0x4863c857, 0x4823c857, 0x58341813, + 0x800c1930, 0x60680000, 0x0501f058, 0x4947c857, + 0x4863c857, 0x4813c857, 0x60640000, 0x0501f053, + 0x40100000, 0x81440580, 0x0502000c, 0x58343002, + 0x58341813, 0x800c1930, 0x4947c857, 0x481bc857, + 0x480fc857, 0x606c0000, 0x0501f048, 0x4947c857, + 0x607c0000, 0x0501f045, 0x80102000, 0x80387000, + 0x82104d80, 0x000007f0, 0x0500000a, 0x59a800ad, + 0x80100580, 0x0500000f, 0x82104d80, 0x00000800, + 0x0502000f, 0x59247009, 0x61c0200f, 0x0501f00c, + 0x59a800ad, 0x82000580, 0x00000800, 0x05000005, + 0x60002010, 0x42007000, 0x0010e380, 0x0501f004, + 0x41782000, 0x42007000, 0x0010db80, 0x8058b040, + 0x05fe073d, 0x801429c0, 0x05020005, 0x05d5f9b6, + 0x4947c857, 0x60280000, 0x0501f024, 0x4d2c0000, + 0x4c180000, 0x40603000, 0x8c20053e, 0x05000003, + 0x05fdfabf, 0x0501f002, 0x05fdfac5, 0x4947c857, + 0x4937c857, 0x5c003000, 0x5c025800, 0x05fe07f1, + 0x497a6a12, 0x59a8024c, 0x8c00050a, 0x0502000d, + 0x82600500, 0x00ffff00, 0x05000006, 0x59a84840, + 0x82244d00, 0x00ffff00, 0x80240580, 0x05020005, + 0x82600500, 0x000000ff, 0x800000d0, 0x48026a12, + 0x48626802, 0x59244805, 0x812000f0, 0x80244d40, + 0x48266813, 0x80000580, 0x80000540, 0x5c00c000, + 0x5c004800, 0x5c006800, 0x5c007000, 0x1c01f000, + 0x5934000f, 0x8d0c0512, 0x05020005, 0x5934140b, + 0x80081040, 0x05001002, 0x480a6c0b, 0x80000540, + 0x00020b33, 0x1c01f000, 0x59340a00, 0x84040d08, + 0x80000540, 0x05000005, 0x5934000a, 0x8400054c, + 0x4802680a, 0x0501f004, 0x599c0018, 0x8c000510, + 0x05000002, 0x84040d48, 0x48066a00, 0x1c01f000, + 0x4803c857, 0x4947c857, 0x4c300000, 0x90006530, + 0x05000005, 0x4c000000, 0x052dfa60, 0x5c000000, + 0x0502000e, 0x8c00050e, 0x05000009, 0x0501f893, + 0x0502000a, 0x4937c857, 0x592c020b, 0x8c00051c, + 0x05020003, 0x41240800, 0x0501f8a9, 0x80000580, + 0x5c006000, 0x1c01f000, 0x90000541, 0x05fdf7fd, + 0x4803c857, 0x4c580000, 0x4d440000, 0x40001000, + 0x80000d80, 0x59a8b0ac, 0x4c040000, 0x40068800, + 0x4c080000, 0x40080000, 0x05fdffe0, 0x5c001000, + 0x5c000800, 0x80040800, 0x82040580, 0x000007f0, + 0x05020002, 0x60000810, 0x8058b040, 0x05fe07f3, + 0x8c080514, 0x05000005, 0x84081514, 0x6004b000, + 0x61f0080f, 0x05fdf7ed, 0x4d300000, 0x4d400000, + 0x4d240000, 0x0501fba6, 0x61fe89ff, 0x42026000, + 0x00115a14, 0x4a02600a, 0x001141b4, 0x417a4800, + 0x4926601d, 0x60a68000, 0x0515fcef, 0x4df00000, + 0x0515fb26, 0x0539f8a3, 0x5c03e000, 0x05140cdb, + 0x5c024800, 0x5c028000, 0x5c026000, 0x5c028800, + 0x5c00b000, 0x1c01f000, 0x4c5c0000, 0x59340400, + 0x8200bd80, 0x00000606, 0x5c00b800, 0x1c01f000, + 0x4c5c0000, 0x59340400, 0x8200bd80, 0x00000404, + 0x5c00b800, 0x1c01f000, 0x4c5c0000, 0x59340400, + 0x8200bd80, 0x00000404, 0x05000003, 0x8200bd80, 0x00000606, 0x5c00b800, 0x1c01f000, 0x4c5c0000, - 0x59340400, 0x8200bd80, 0x00000404, 0x5c00b800, - 0x1c01f000, 0x4c5c0000, 0x59340400, 0x8200bd80, - 0x00000404, 0x05000003, 0x8200bd80, 0x00000606, - 0x5c00b800, 0x1c01f000, 0x4c5c0000, 0x4c600000, - 0x59340400, 0x8200bd00, 0x0000ff00, 0x825cc580, - 0x00000400, 0x05000003, 0x825cc580, 0x00000600, - 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x4c5c0000, - 0x59340400, 0x82000500, 0x000000ff, 0x9000bd83, - 0x05000002, 0x9000bd85, 0x5c00b800, 0x1c01f000, - 0x5c000000, 0x4c000000, 0x4803c857, 0x4c5c0000, - 0x59340400, 0x82000500, 0x0000ff00, 0x8400b9c0, - 0x805c0580, 0x4937c857, 0x4803c857, 0x48026c00, - 0x5c00b800, 0x1c01f000, 0x4c040000, 0x4c080000, - 0x592c020b, 0x8c00050c, 0x0500000d, 0x592e8c0a, - 0x82000500, 0x00000080, 0x84000548, 0x4d3c0000, - 0x60027820, 0x05fdff76, 0x5c027800, 0x90000541, - 0x5c001000, 0x5c000800, 0x1c01f000, 0x80000580, - 0x05fdf7fc, 0x59340013, 0x80024130, 0x83224c00, - 0x0010d17b, 0x51264800, 0x812649c0, 0x05d40b63, - 0x1c01f000, 0x83440c80, 0x00000800, 0x05021013, - 0x83200400, 0x0010d17b, 0x50024800, 0x59240009, - 0x83440c80, 0x000007f0, 0x05001003, 0x80040c00, - 0x0501f003, 0x83440c00, 0x0010d400, 0x50040000, - 0x80026d40, 0x05000005, 0x59340013, 0x80000130, - 0x81200580, 0x1c01f000, 0x90000541, 0x05fdf7fe, - 0x4937c857, 0x4c580000, 0x4d440000, 0x59368c03, - 0x83440580, 0x0000ffff, 0x05000010, 0x83441480, - 0x000007f0, 0x05021003, 0x05fdfb12, 0x0501f00b, - 0x58040009, 0x80080c00, 0x50040000, 0x81340580, - 0x05d60b3a, 0x4d2c0000, 0x45780800, 0x41365800, - 0x05d5feee, 0x5c025800, 0x80000580, 0x5c028800, - 0x5c00b000, 0x1c01f000, 0x592c040f, 0x82000500, - 0x0000e000, 0x82000580, 0x00006000, 0x0500001e, - 0x916c0583, 0x05000011, 0x916c0582, 0x05020100, - 0x59a80249, 0x90000d38, 0x05020005, 0x59a80841, - 0x800409c0, 0x05000009, 0x0501f0f9, 0x90000d03, - 0x90040d83, 0x050200f6, 0x90000d28, 0x05020003, - 0x8c00050c, 0x050000f2, 0x592e440b, 0x83224500, - 0x000000ff, 0x0509f894, 0x050200cf, 0x592c100e, - 0x82081500, 0x00ffffff, 0x59240005, 0x80080580, - 0x050000d3, 0x592c0c0f, 0x82040d00, 0x0000e000, - 0x82040480, 0x00008000, 0x050210cf, 0x592e8c0a, - 0x83440480, 0x00000800, 0x05001015, 0x83440580, - 0x0000ffff, 0x050200ba, 0x800409c0, 0x050200f0, - 0x592c240d, 0x82100500, 0xffffff00, 0x050200be, - 0x480bc857, 0x4813c857, 0x592c0011, 0x82000480, - 0x00000841, 0x050210be, 0x614e7000, 0x0501fac3, - 0x42026800, 0x00110210, 0x0501f093, 0x800409c0, - 0x050200df, 0x41784000, 0x05fdfe1f, 0x050200cc, - 0x592c240f, 0x8c100514, 0x0500000d, 0x592c240d, - 0x82100500, 0xffffff00, 0x050200a7, 0x901005a0, - 0x050200a9, 0x05fdff32, 0x050200b4, 0x05fdfb97, - 0x60180800, 0x05fdf9f5, 0x0501f0bb, 0x59342204, - 0x592c0011, 0x80100480, 0x050010a1, 0x614e7000, - 0x592c240d, 0x82100500, 0xffffff00, 0x05020096, - 0x4813c857, 0x592c040b, 0x82000500, 0x0000f000, - 0x82000580, 0x00003000, 0x05020006, 0x59340200, - 0x8c000508, 0x05020003, 0x90100583, 0x05020084, - 0x592c0010, 0x800001c0, 0x05000065, 0x90100584, - 0x05000083, 0xb0100591, 0x05000081, 0x90100583, - 0x0500000f, 0x901005a0, 0x05000039, 0x901005a4, - 0x05000033, 0x901005a1, 0x05000033, 0xb0100590, - 0x0500002b, 0xb0100592, 0x05000027, 0x90100585, - 0x05020055, 0x60067000, 0x0501f018, 0x600a7000, - 0x59a800d1, 0x8c000502, 0x05000014, 0x05fdfef6, - 0x05000012, 0x59340212, 0x82000500, 0x0000ff00, - 0x60401000, 0x0502000b, 0x59a80249, 0x8c000506, - 0x0502005b, 0x60201000, 0x59340002, 0x82000500, - 0x00ff0000, 0x82000580, 0x00ff0000, 0x05000003, - 0x0501f96f, 0x05020052, 0x051df8c1, 0x05000066, - 0x64426407, 0x4926601d, 0x4936600a, 0x600c0800, - 0x91380582, 0x05000002, 0x602c0800, 0x05fdf9a2, - 0x0501f036, 0x60027000, 0x0501f002, 0x60127000, - 0x05fdfeea, 0x0502005d, 0x0501f02b, 0x60ce7000, - 0x0501f004, 0x60167000, 0x0501f002, 0x600e7000, - 0x05fdfed9, 0x05020055, 0x59a800d1, 0x8c000502, - 0x05000014, 0x05fdfec8, 0x05000012, 0x59340212, - 0x82000500, 0x0000ff00, 0x60401000, 0x0502000b, - 0x59a80249, 0x8c000506, 0x0502002d, 0x60201000, - 0x59340002, 0x82000500, 0x00ff0000, 0x82000580, - 0x00ff0000, 0x05000003, 0x0501f941, 0x05020024, - 0x051df893, 0x05000038, 0x64426407, 0x4926601d, - 0x4936600a, 0x60140800, 0x91380583, 0x05000002, - 0x60240800, 0x05fdf974, 0x0501f008, 0x90102591, - 0x05020029, 0x051df886, 0x0500002b, 0x64426407, - 0x4926601d, 0x4936600a, 0x0529ffe8, 0x492e6009, - 0x4932580c, 0x83340580, 0x00110210, 0x05000007, - 0x592c0c0f, 0x8c040518, 0x05000004, 0x59340200, - 0x84000514, 0x48026a00, 0x0009f800, 0x80000580, - 0x1c01f000, 0x90000541, 0x05fdf7fe, 0x60281000, - 0x0501f012, 0x60381000, 0x0501f010, 0x603c1000, - 0x0501f00e, 0x60401000, 0x0501f00c, 0x60581000, - 0x0501f00a, 0x605c1000, 0x0501f008, 0x60601000, - 0x0501f006, 0x60781000, 0x0501f004, 0x60901000, - 0x0501f002, 0x60801000, 0x60640800, 0x60c68000, - 0x05fdf7e9, 0x600c0800, 0x0501f002, 0x60280800, - 0x41781000, 0x05fdf7fa, 0x60240800, 0x59341400, - 0x05fdf7f7, 0x60228000, 0x0501f004, 0x601c0800, - 0x416c1000, 0x05fdf7f2, 0x41780800, 0x41781000, - 0x05fdf7d9, 0x60028000, 0x05fdf7fc, 0x90004d9d, - 0x05d40a1e, 0x90004d9a, 0x05020004, 0x40101000, - 0x40000800, 0x05fdf7e6, 0x90004d9b, 0x05020003, - 0x40181000, 0x05fdf7fb, 0x90004d9c, 0x05fc07f9, - 0x90004d99, 0x05fc07ca, 0x05fdf7e1, 0x592e600c, - 0x0529fd96, 0x05fc07cc, 0x59300c07, 0x90040591, - 0x05fe07e1, 0x592c0c0f, 0x82041500, 0x0000e000, - 0x82080580, 0x00006000, 0x05000021, 0x83440580, - 0x0000ffff, 0x05020007, 0x5932680a, 0x83340580, - 0x00110210, 0x05fe07d4, 0x61000810, 0x0501f00f, - 0x592c100e, 0x82081500, 0x00ffffff, 0x41784000, - 0x05fdfd29, 0x05fe07d6, 0x5930000a, 0x82000d80, - 0x00110210, 0x05000003, 0x81340580, 0x05fe07c6, - 0x4936600a, 0x59340a04, 0x592c0011, 0x80040480, - 0x05fc17b3, 0x59300a03, 0x90040587, 0x05fe07be, - 0x492e6009, 0x61527000, 0x05fdf78f, 0x0539f92f, - 0x05fc07c1, 0x05fdf7b8, 0x492fc857, 0x592e600c, - 0x83300580, 0xffffffff, 0x05020041, 0x592c020b, - 0x8c000500, 0x0502006c, 0x8d0c050e, 0x05020059, - 0x592e8c0a, 0x83440480, 0x00000800, 0x05021036, - 0x592c380e, 0x821c3d00, 0x00ffffff, 0x05e5fa1d, - 0x05020039, 0x49265805, 0x41784000, 0x592c100d, - 0x82081500, 0x00ffffff, 0x05fdfcfb, 0x0502004b, - 0x592e6017, 0x4933c857, 0x83300580, 0xffffffff, - 0x05000018, 0x0529fd49, 0x0500002d, 0x591c1407, - 0x800811c0, 0x05000013, 0x592c0411, 0x591c0a02, - 0x80040580, 0x0502000f, 0x591c000a, 0x800001c0, - 0x05020007, 0x591c082a, 0x59340002, 0x80040580, - 0x82000500, 0x00ffffff, 0x0501f002, 0x81340580, - 0x05020004, 0x90080587, 0x0502002c, 0x64923c03, - 0x59240005, 0x592c080d, 0x82041500, 0x00ffffff, - 0x80081580, 0x0500000c, 0x80040932, 0xb0040582, - 0x0502000b, 0x49365806, 0x0501f8d5, 0x80000580, - 0x1c01f000, 0x60281000, 0x0501f00a, 0x60401000, - 0x0501f008, 0x60501000, 0x0501f006, 0x605c1000, - 0x0501f004, 0x60601000, 0x0501f002, 0x60f01000, - 0x492fc857, 0x480bc857, 0x60640800, 0x60c68000, - 0x90000541, 0x05fdf7ef, 0x492fc857, 0x4803c857, - 0x480bc857, 0x40000800, 0x05fdf7f9, 0x492fc857, - 0x60280800, 0x41781000, 0x05fdf7f5, 0x41780800, - 0x41781000, 0x05fdf7f3, 0x60780800, 0x05fdf7fa, - 0x60040800, 0x05fdf7f8, 0x90004d9d, 0x05d4097b, - 0x90004d9a, 0x05020003, 0x40101000, 0x05fdf7eb, - 0x90004d9b, 0x05020003, 0x40181000, 0x05fdf7e7, - 0x90004d9c, 0x05fc07e5, 0x90004d99, 0x05fc07e3, - 0x05fdf7e7, 0x0539f98e, 0x60028000, 0x05fdf7e8, - 0x5c000000, 0x4c000000, 0x4803c857, 0x5930200a, - 0x801021c0, 0x05000029, 0x58101400, 0x4813c857, - 0x480bc857, 0x82081d00, 0x000000ff, 0x59300c03, - 0x90040588, 0x05000018, 0x9004058a, 0x05000010, - 0x9004058c, 0x0500000b, 0x90040582, 0x05000012, - 0x90040581, 0x0500000d, 0x90040583, 0x05000008, - 0x90040585, 0x05000003, 0x900405b3, 0x05020013, - 0x900c0589, 0x0500000a, 0x0501f010, 0x900c0585, - 0x05000007, 0x0501f00d, 0x900c058b, 0x05000004, - 0x0501f00a, 0x900c0583, 0x05020008, 0x82081d00, - 0xffffff00, 0x840c01c0, 0x800c0540, 0x4807c857, - 0x4803c857, 0x48002400, 0x1c01f000, 0x599c0017, - 0x8c00050a, 0x05000003, 0x80000580, 0x1c01f000, - 0x59a80249, 0x90000528, 0x05000007, 0x61f6880f, - 0x417a4000, 0x05fdfdd0, 0x05020003, 0x5934000a, - 0x8c000504, 0x1c01f000, 0x1c01f000, 0x4d440000, - 0x4d340000, 0x80000580, 0x40001800, 0x40028800, - 0x90080588, 0x05020002, 0x60041800, 0x0001fb00, - 0x0502000a, 0x05fdfd6c, 0x05020008, 0x800c19c0, - 0x05000004, 0x59340405, 0x8c000508, 0x05000003, - 0x80081040, 0x05000009, 0x81468800, 0x83440480, - 0x00000800, 0x05fc17f2, 0x80000580, 0x5c026800, - 0x5c028800, 0x1c01f000, 0x90000541, 0x5c026800, - 0x5c028800, 0x1c01f000, 0x60200800, 0x58d400e4, - 0x8c00051c, 0x0502002f, 0x59a80249, 0x8c000508, - 0x0502002c, 0x5934100a, 0x82081500, 0x0002e000, - 0x41781800, 0x90080580, 0x0500000a, 0x800c1800, - 0x82080580, 0x00002000, 0x05000006, 0x800c1800, - 0x82080580, 0x00006000, 0x05000002, 0x800c1800, - 0x42007000, 0x0010e060, 0x58380401, 0x8c000504, - 0x05000006, 0x900c2c84, 0x05021016, 0x820c0400, - 0x00105d02, 0x0501f012, 0x41782000, 0x59342a04, - 0x82140480, 0x00000800, 0x05021006, 0x80102000, - 0x82140480, 0x00000400, 0x05021002, 0x80102000, - 0x800c00c2, 0x800c0400, 0x80100400, 0x90002c89, - 0x05021004, 0x82000400, 0x00105d06, 0x50000800, - 0x48066c04, 0x1c01f000, 0x00000002, 0x00000004, - 0x00000008, 0x00000008, 0x00002802, 0x00001402, - 0x00000a02, 0x00001402, 0x00000a02, 0x00000502, - 0x00000a02, 0x00000502, 0x00000504, 0x59a8089e, - 0x800409c0, 0x05020004, 0x492f509d, 0x492f509e, - 0x0519f5b4, 0x492c0800, 0x492f509e, 0x1c01f000, - 0x5934000f, 0x41784000, 0x80001540, 0x05000010, - 0x58080208, 0x82000500, 0x000000ff, 0x90000592, - 0x05000005, 0xb00005a0, 0x05000003, 0x90000588, - 0x05020004, 0x58080210, 0x80040580, 0x05000005, - 0x58080000, 0x40084000, 0x05fdf7f0, 0x90000541, - 0x1c01f000, 0x4c5c0000, 0x4c600000, 0x592e8c0a, - 0x592e440b, 0x83224500, 0x000000ff, 0x592cbc0c, - 0x592cc40b, 0x4947c857, 0x4923c857, 0x485fc857, - 0x4863c857, 0x8260c500, 0x0000f000, 0x82600580, - 0x00003000, 0x05020007, 0x59340200, 0x8c000508, - 0x05020004, 0x599c0018, 0x8c000510, 0x0500001a, - 0x8c5c050a, 0x0500002b, 0x485fc856, 0x812241c0, - 0x05020013, 0x83440580, 0x000007fe, 0x0502000e, - 0x42003000, 0x00fffffe, 0x05f9ffc6, 0x05020017, - 0x4937c857, 0x052dfa32, 0x05000012, 0x80000580, - 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x90000541, - 0x05fdf7fc, 0x60281000, 0x0501f007, 0x60381000, - 0x0501f005, 0x603c1000, 0x0501f003, 0x60601000, - 0x0501f001, 0x60640800, 0x60c68000, 0x05fdf7f4, - 0x600c0800, 0x0501f002, 0x60280800, 0x41781000, - 0x05fdf7fa, 0x60228000, 0x0501f001, 0x41780800, - 0x41781000, 0x05fdf7ea, 0x60028000, 0x05fdf7fc, - 0x485fc856, 0x812241c0, 0x05fe07e9, 0x83440580, - 0x000007fe, 0x05fe07e4, 0x42003000, 0x00fffffe, - 0x05f9ff9c, 0x05fe07ed, 0x4937c857, 0x592e600e, - 0x0529fbe6, 0x05fc07e2, 0x59300c07, 0x90040591, - 0x05fe07e9, 0x5930000a, 0x800001c0, 0x05000003, - 0x81340580, 0x05fe07e4, 0x4936600a, 0x59300a03, - 0x90040587, 0x05fe07e0, 0x592c0a0d, 0x4807c857, - 0x4806621b, 0x497a641b, 0x492e6009, 0x64126407, - 0x8c5c050e, 0x05020013, 0x4c5c0000, 0x4c600000, - 0x4c640000, 0x592cba0b, 0x485f54cd, 0x485f52cc, - 0x592cc80f, 0x4200c000, 0x001106f2, 0x0539f916, - 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x616a7000, - 0x64066203, 0x493a6403, 0x0511facf, 0x05fdf7b0, - 0x616e7000, 0x592c0010, 0x4802641c, 0x592c0011, - 0x4802621c, 0x05fdf7f7, 0x42000000, 0x00110210, - 0x4a000400, 0x00000707, 0x4a000204, 0x00000840, - 0x4a000403, 0x0000ffff, 0x49780200, 0x1c01f000, - 0x4d340000, 0x4d440000, 0x4c580000, 0x61c0b00f, - 0x4803c856, 0x417a8800, 0x0001fb00, 0x05020006, - 0x59340200, 0x8c00051a, 0x05000003, 0x8400051a, - 0x48026a00, 0x81468800, 0x8058b040, 0x05fe07f7, - 0x5c00b000, 0x5c028800, 0x5c026800, 0x1c01f000, - 0x592c2a08, 0x82142d00, 0x000000ff, 0x90140592, - 0x05000006, 0xb01405b2, 0x05000004, 0xb01405ba, - 0x05000002, 0x90000541, 0x1c01f000, 0x64033003, + 0x4c600000, 0x59340400, 0x8200bd00, 0x0000ff00, + 0x825cc580, 0x00000400, 0x05000003, 0x825cc580, + 0x00000600, 0x5c00c000, 0x5c00b800, 0x1c01f000, + 0x4c5c0000, 0x59340400, 0x82000500, 0x000000ff, + 0x9000bd83, 0x05000002, 0x9000bd85, 0x5c00b800, + 0x1c01f000, 0x5c000000, 0x4c000000, 0x4803c857, + 0x4c5c0000, 0x59340400, 0x82000500, 0x0000ff00, + 0x8400b9c0, 0x805c0580, 0x4937c857, 0x4803c857, + 0x48026c00, 0x5c00b800, 0x1c01f000, 0x4c040000, + 0x4c080000, 0x592c020b, 0x8c00050c, 0x0500000d, + 0x592e8c0a, 0x82000500, 0x00000080, 0x84000548, + 0x4d3c0000, 0x60027820, 0x05fdff72, 0x5c027800, + 0x90000541, 0x5c001000, 0x5c000800, 0x1c01f000, + 0x80000580, 0x05fdf7fc, 0x59340013, 0x80024130, + 0x83224c00, 0x0010d8f9, 0x51264800, 0x812649c0, + 0x05d408d5, 0x1c01f000, 0x59a800ad, 0x81440480, + 0x05021019, 0x83200400, 0x0010d8f9, 0x50024800, + 0x59240009, 0x83440c80, 0x000007f0, 0x05001009, + 0x83441480, 0x00000800, 0x05001004, 0x0001fb08, + 0x0502000d, 0x0501f008, 0x80040c00, 0x0501f003, + 0x83440c00, 0x0010db80, 0x50040000, 0x80026d40, + 0x05000005, 0x59340013, 0x80000130, 0x81200580, + 0x1c01f000, 0x90000541, 0x05fdf7fe, 0x4937c857, + 0x4c580000, 0x4d440000, 0x59368c03, 0x83440580, + 0x0000ffff, 0x05000013, 0x83441480, 0x000007f0, + 0x05001004, 0x83440480, 0x00000800, 0x05001003, + 0x05fdfa83, 0x0501f00b, 0x58040009, 0x80080c00, + 0x50040000, 0x81340580, 0x05d608a3, 0x4d2c0000, + 0x45780800, 0x41365800, 0x05d5fc53, 0x5c025800, + 0x80000580, 0x5c028800, 0x5c00b000, 0x1c01f000, + 0x592c040f, 0x82000500, 0x0000e000, 0x82000580, + 0x00006000, 0x0500001e, 0x916c0583, 0x05000011, + 0x916c0582, 0x050200ff, 0x59a8024c, 0x90000d38, + 0x05020005, 0x59a80844, 0x800409c0, 0x05000009, + 0x0501f0f8, 0x90000d03, 0x90040d83, 0x050200f5, + 0x90000d28, 0x05020003, 0x8c00050c, 0x050000f1, + 0x592e440b, 0x83224500, 0x000000ff, 0x0509f92a, + 0x050200ce, 0x592c100e, 0x82081500, 0x00ffffff, + 0x59240005, 0x80080580, 0x050000d2, 0x592c0c0f, + 0x82040d00, 0x0000e000, 0x82040480, 0x00008000, + 0x050210ce, 0x592e8c0a, 0x59a800ad, 0x81440480, + 0x05001014, 0x83440580, 0x0000ffff, 0x050200b9, + 0x800409c0, 0x050200f1, 0x592c240d, 0x82100500, + 0xffffff00, 0x050200bd, 0x480bc857, 0x4813c857, + 0x61000810, 0x0501faf8, 0x050200be, 0x614e7000, + 0x0501fac7, 0x42026800, 0x001141b4, 0x0501f093, + 0x800409c0, 0x050200e1, 0x42004000, 0x80000000, + 0x05fdfdbf, 0x050200cb, 0x592c240f, 0x8c100514, + 0x0500000d, 0x592c240d, 0x82100500, 0xffffff00, + 0x050200a6, 0x901005a0, 0x050200a8, 0x05fdff29, + 0x050200b3, 0x05fdfb2b, 0x60180800, 0x05fdf936, + 0x0501f0ba, 0x59340a04, 0x0501fadb, 0x050200a1, + 0x614e7000, 0x592c240d, 0x82100500, 0xffffff00, + 0x05020096, 0x4813c857, 0x592c040b, 0x82000500, + 0x0000f000, 0x82000580, 0x00003000, 0x05020006, + 0x59340200, 0x8c000508, 0x05020003, 0x90100583, + 0x05020084, 0x592c0010, 0x800001c0, 0x05000065, + 0x90100584, 0x05000083, 0xb0100591, 0x05000081, + 0x90100583, 0x0500000f, 0x901005a0, 0x05000039, + 0x901005a4, 0x05000033, 0x901005a1, 0x05000033, + 0xb0100590, 0x0500002b, 0xb0100592, 0x05000027, + 0x90100585, 0x05020055, 0x60067000, 0x0501f018, + 0x600a7000, 0x59a800d6, 0x8c000502, 0x05000014, + 0x05fdfeee, 0x05000012, 0x59340212, 0x82000500, + 0x0000ff00, 0x60401000, 0x0502000b, 0x59a8024c, + 0x8c000506, 0x0502005b, 0x60201000, 0x59340002, + 0x82000500, 0x00ff0000, 0x82000580, 0x00ff0000, + 0x05000003, 0x0501f973, 0x05020052, 0x051dfb05, + 0x05000066, 0x64426407, 0x4926601d, 0x4936600a, + 0x600c0800, 0x91380582, 0x05000002, 0x602c0800, + 0x05fdf8e4, 0x0501f036, 0x60027000, 0x0501f002, + 0x60127000, 0x05fdfee2, 0x0502005d, 0x0501f02b, + 0x60ce7000, 0x0501f004, 0x60167000, 0x0501f002, + 0x600e7000, 0x05fdfed1, 0x05020055, 0x59a800d6, + 0x8c000502, 0x05000014, 0x05fdfec0, 0x05000012, + 0x59340212, 0x82000500, 0x0000ff00, 0x60401000, + 0x0502000b, 0x59a8024c, 0x8c000506, 0x0502002d, + 0x60201000, 0x59340002, 0x82000500, 0x00ff0000, + 0x82000580, 0x00ff0000, 0x05000003, 0x0501f945, + 0x05020024, 0x051dfad7, 0x05000038, 0x64426407, + 0x4926601d, 0x4936600a, 0x60140800, 0x91380583, + 0x05000002, 0x60240800, 0x05fdf8b6, 0x0501f008, + 0x90102591, 0x05020029, 0x051dfaca, 0x0500002b, + 0x64426407, 0x4926601d, 0x4936600a, 0x052dfabd, + 0x492e6009, 0x4932580c, 0x83340580, 0x001141b4, + 0x05000007, 0x592c0c0f, 0x8c040518, 0x05000004, + 0x59340200, 0x84000514, 0x48026a00, 0x0009f839, + 0x80000580, 0x1c01f000, 0x90000541, 0x05fdf7fe, + 0x60281000, 0x0501f012, 0x60381000, 0x0501f010, + 0x603c1000, 0x0501f00e, 0x60401000, 0x0501f00c, + 0x60581000, 0x0501f00a, 0x605c1000, 0x0501f008, + 0x60601000, 0x0501f006, 0x60781000, 0x0501f004, + 0x40001000, 0x0501f002, 0x60801000, 0x60640800, + 0x60c68000, 0x05fdf7e9, 0x600c0800, 0x0501f002, + 0x60280800, 0x41781000, 0x05fdf7fa, 0x60240800, + 0x59341400, 0x05fdf7f7, 0x60228000, 0x0501f004, + 0x601c0800, 0x416c1000, 0x05fdf7f2, 0x41780800, + 0x41781000, 0x05fdf7d9, 0x60028000, 0x05fdf7fc, + 0x90004d9d, 0x05d00f88, 0x90004d9a, 0x05020004, + 0x40101000, 0x40000800, 0x05fdf7e6, 0x90004d9b, + 0x05020003, 0x40181000, 0x05fdf7fb, 0x90004d9c, + 0x05fc07f9, 0x90004d99, 0x05fc07ca, 0x90004da0, + 0x05fc07f5, 0x05fdf7df, 0x592e600c, 0x052df85f, + 0x05fc07ca, 0x59300c07, 0x90040591, 0x05fe07df, + 0x592c0c0f, 0x82041500, 0x0000e000, 0x82080580, + 0x00006000, 0x05000021, 0x83440580, 0x0000ffff, + 0x05020007, 0x5932680a, 0x83340580, 0x001141b4, + 0x05fe07d2, 0x61000810, 0x0501f010, 0x592c100e, + 0x82081500, 0x00ffffff, 0x42004000, 0x80000000, + 0x05fdfcc7, 0x05fe07d3, 0x5930000a, 0x82000d80, + 0x001141b4, 0x05000003, 0x81340580, 0x05fe07c3, + 0x4936600a, 0x59340a04, 0x0501f9eb, 0x05fe07b1, + 0x59300a03, 0x90040587, 0x05fe07bc, 0x492e6009, + 0x61527000, 0x05fdf78d, 0x0539fdbf, 0x05fc07bf, + 0x05fdf7b6, 0x492fc857, 0x592e600c, 0x83300580, + 0xffffffff, 0x05020041, 0x592c020b, 0x8c000500, + 0x0502006e, 0x8d0c050e, 0x05020059, 0x592e8c0a, + 0x59a800ad, 0x81440480, 0x05021036, 0x592c380e, + 0x821c3d00, 0x00ffffff, 0x05e1ffe6, 0x05020039, + 0x49265805, 0x41784000, 0x592c100d, 0x82081500, + 0x00ffffff, 0x05fdfc9a, 0x0502004b, 0x592e6017, + 0x4933c857, 0x83300580, 0xffffffff, 0x05000018, + 0x052df812, 0x0500002d, 0x591c1407, 0x800811c0, + 0x05000013, 0x592c0411, 0x591c0a02, 0x80040580, + 0x0502000f, 0x591c000a, 0x800001c0, 0x05020007, + 0x591c082a, 0x59340002, 0x80040580, 0x82000500, + 0x00ffffff, 0x0501f002, 0x81340580, 0x05020004, + 0x90080587, 0x0502002c, 0x64923c03, 0x59240005, + 0x592c080d, 0x82041500, 0x00ffffff, 0x80081580, + 0x0500000c, 0x80040932, 0xb0040582, 0x0502000b, + 0x49365806, 0x0501f8d7, 0x80000580, 0x1c01f000, + 0x60281000, 0x0501f00a, 0x60401000, 0x0501f008, + 0x60501000, 0x0501f006, 0x605c1000, 0x0501f004, + 0x60601000, 0x0501f002, 0x60f01000, 0x492fc857, + 0x480bc857, 0x60640800, 0x60c68000, 0x90000541, + 0x05fdf7ef, 0x492fc857, 0x4803c857, 0x480bc857, + 0x40000800, 0x05fdf7f9, 0x492fc857, 0x60280800, + 0x41781000, 0x05fdf7f5, 0x41780800, 0x41781000, + 0x05fdf7f3, 0x60780800, 0x05fdf7fa, 0x60040800, + 0x05fdf7f8, 0x90004d9d, 0x05d00ee3, 0x90004d9a, + 0x05020003, 0x40101000, 0x05fdf7eb, 0x90004d9b, + 0x05020003, 0x40181000, 0x05fdf7e7, 0x90004d9c, + 0x05fc07e5, 0x90004d99, 0x05fc07e3, 0x90004da0, + 0x05fc07e1, 0x05fdf7e5, 0x0539fe20, 0x60028000, + 0x05fdf7e6, 0x5c000000, 0x4c000000, 0x4803c857, + 0x5930200a, 0x801021c0, 0x05000029, 0x58101400, + 0x4813c857, 0x480bc857, 0x82081d00, 0x000000ff, + 0x59300c03, 0x90040588, 0x05000018, 0x9004058a, + 0x05000010, 0x9004058c, 0x0500000b, 0x90040582, + 0x05000012, 0x90040581, 0x0500000d, 0x90040583, + 0x05000008, 0x90040585, 0x05000003, 0x900405b3, + 0x05020013, 0x900c0589, 0x0500000a, 0x0501f010, + 0x900c0585, 0x05000007, 0x0501f00d, 0x900c058b, + 0x05000004, 0x0501f00a, 0x900c0583, 0x05020008, + 0x82081d00, 0xffffff00, 0x840c01c0, 0x800c0540, + 0x4807c857, 0x4803c857, 0x48002400, 0x1c01f000, + 0x599c0017, 0x8c00050a, 0x05000003, 0x80000580, + 0x1c01f000, 0x59a8024c, 0x90000528, 0x05000007, + 0x61f6880f, 0x417a4000, 0x05fdfdc4, 0x05020003, + 0x5934000a, 0x8c000504, 0x1c01f000, 0x1c01f000, + 0x4d440000, 0x4d340000, 0x80000580, 0x40001800, + 0x40028800, 0x90080588, 0x05020002, 0x60041800, + 0x0001fb08, 0x0502000a, 0x05fdfd60, 0x05020008, + 0x800c19c0, 0x05000004, 0x59340405, 0x8c000508, + 0x05000003, 0x80081040, 0x05000009, 0x81468800, + 0x59a800ad, 0x81440480, 0x05fc17f2, 0x80000580, + 0x5c026800, 0x5c028800, 0x1c01f000, 0x90000541, + 0x5c026800, 0x5c028800, 0x1c01f000, 0x60200800, + 0x58d400e4, 0x8c00051c, 0x0502002f, 0x59a8024c, + 0x8c000508, 0x0502002c, 0x5934100a, 0x82081500, + 0x0002e000, 0x41781800, 0x90080580, 0x0500000a, + 0x800c1800, 0x82080580, 0x00002000, 0x05000006, + 0x800c1800, 0x82080580, 0x00006000, 0x05000002, + 0x800c1800, 0x42007000, 0x00111ffa, 0x58380401, + 0x8c000504, 0x05000006, 0x900c2c84, 0x05021016, + 0x820c0400, 0x00105fd7, 0x0501f012, 0x41782000, + 0x59342a04, 0x82140480, 0x00000800, 0x05021006, + 0x80102000, 0x82140480, 0x00000400, 0x05021002, + 0x80102000, 0x800c00c2, 0x800c0400, 0x80100400, + 0x90002c89, 0x05021004, 0x82000400, 0x00105fdb, + 0x50000800, 0x48066c04, 0x1c01f000, 0x00000002, + 0x00000004, 0x00000008, 0x00000008, 0x00002802, + 0x00001402, 0x00000a02, 0x00001402, 0x00000a02, + 0x00000502, 0x00000a02, 0x00000502, 0x00000504, + 0x59a808a1, 0x800409c0, 0x05020004, 0x492f50a0, + 0x492f50a1, 0x0519f7d3, 0x492c0800, 0x492f50a1, + 0x1c01f000, 0x5934000f, 0x41784000, 0x80001540, + 0x05000010, 0x58080208, 0x82000500, 0x000000ff, + 0x90000592, 0x05000005, 0xb00005a0, 0x05000003, + 0x90000588, 0x05020004, 0x58080210, 0x80040580, + 0x05000005, 0x58080000, 0x40084000, 0x05fdf7f0, + 0x90000541, 0x1c01f000, 0x4c5c0000, 0x4c600000, + 0x592e8c0a, 0x592e440b, 0x83224500, 0x000000ff, + 0x592cbc0c, 0x592cc40b, 0x4947c857, 0x4923c857, + 0x485fc857, 0x4863c857, 0x8260c500, 0x0000f000, + 0x82600580, 0x00003000, 0x05020007, 0x59340200, + 0x8c000508, 0x05020004, 0x599c0018, 0x8c000510, + 0x0500001a, 0x8c5c050a, 0x0500002b, 0x485fc856, + 0x812241c0, 0x05020013, 0x83440580, 0x000007fe, + 0x0502000e, 0x42003000, 0x00fffffe, 0x05f9ff0c, + 0x05020017, 0x4937c857, 0x052dfd0e, 0x05000012, + 0x80000580, 0x5c00c000, 0x5c00b800, 0x1c01f000, + 0x90000541, 0x05fdf7fc, 0x60281000, 0x0501f007, + 0x60381000, 0x0501f005, 0x603c1000, 0x0501f003, + 0x60601000, 0x0501f001, 0x60640800, 0x60c68000, + 0x05fdf7f4, 0x600c0800, 0x0501f002, 0x60280800, + 0x41781000, 0x05fdf7fa, 0x60228000, 0x0501f001, + 0x41780800, 0x41781000, 0x05fdf7ea, 0x60028000, + 0x05fdf7fc, 0x485fc856, 0x812241c0, 0x05fe07e9, + 0x83440580, 0x000007fe, 0x05fe07e4, 0x42003000, + 0x00fffffe, 0x05f9fee2, 0x05fe07ed, 0x4937c857, + 0x592e600e, 0x0529fead, 0x05fc07e2, 0x59300c07, + 0x90040591, 0x05fe07e9, 0x5930000a, 0x800001c0, + 0x05000003, 0x81340580, 0x05fe07e4, 0x4936600a, + 0x59300a03, 0x90040587, 0x05fe07e0, 0x592c0a0d, + 0x4807c857, 0x4806621b, 0x497a641b, 0x492e6009, + 0x64126407, 0x8c5c050e, 0x05020013, 0x4c5c0000, + 0x4c600000, 0x4c640000, 0x592cba0b, 0x485f54d2, + 0x485f52d1, 0x592cc80f, 0x4200c000, 0x00114696, + 0x0539fda8, 0x5c00c800, 0x5c00c000, 0x5c00b800, + 0x616a7000, 0x64066203, 0x493a6403, 0x0511fcb3, + 0x05fdf7b0, 0x616e7000, 0x592c0010, 0x4802641c, + 0x592c0011, 0x4802621c, 0x05fdf7f7, 0x42000000, + 0x001141b4, 0x4a000400, 0x00000707, 0x4a000204, + 0x00000840, 0x4a000403, 0x0000ffff, 0x49780200, + 0x1c01f000, 0x4d340000, 0x4d440000, 0x4c580000, + 0x59a8b0ac, 0x4803c856, 0x417a8800, 0x0001fb08, + 0x05020006, 0x59340200, 0x8c00051a, 0x05000003, + 0x8400051a, 0x48026a00, 0x8058b040, 0x05000007, + 0x81468800, 0x83440580, 0x000007f0, 0x05fe07f4, + 0x60028810, 0x05fdf7f2, 0x5c00b000, 0x5c028800, + 0x5c026800, 0x1c01f000, 0x592c2a08, 0x82142d00, + 0x000000ff, 0x90140592, 0x05000006, 0xb01405b2, + 0x05000004, 0xb01405ba, 0x05000002, 0x90000541, + 0x1c01f000, 0x592c0011, 0x800001c0, 0x05000005, + 0x80040480, 0x05001003, 0x80000580, 0x1c01f000, + 0x60900000, 0x80000540, 0x1c01f000, 0x64033003, 0x4a03b104, 0x80000000, 0x59d80105, 0x4a03b104, 0x60000001, 0x1c01f000, 0x599c0018, 0x4803c856, 0x497b3006, 0x497b3007, 0x9000050f, 0x48033004, @@ -6057,36 +6242,36 @@ static const uint32_t isp_2500_risc_code[] = { 0x640f3003, 0x05fdf7f8, 0x8d0c0520, 0x05020003, 0x64133003, 0x05fdf7f4, 0x64173003, 0x05fdf7f2, 0x592c0208, 0x492fc857, 0x80000540, 0x05000007, - 0x42034000, 0x0010dceb, 0x59a1d806, 0x80edd9c0, - 0x05d00fba, 0x0501f005, 0x052df885, 0x05d20fb7, + 0x42034000, 0x00111c71, 0x59a1d806, 0x80edd9c0, + 0x05d00d11, 0x0501f005, 0x052dfb47, 0x05d20d0e, 0x5931d82d, 0x58ef400b, 0x58ec0009, 0x800001c0, - 0x05d00fb2, 0x0801f800, 0x1c01f000, 0x5c000000, + 0x05d00d09, 0x0801f800, 0x1c01f000, 0x5c000000, 0x4c000000, 0x4803c857, 0x492fc857, 0x4943c857, - 0x4807c857, 0x4c040000, 0x0005f9f3, 0x5c000800, - 0x4c040000, 0x0505fdd3, 0x5c000800, 0x4a025a08, + 0x4807c857, 0x4c040000, 0x0005fa1a, 0x5c000800, + 0x4c040000, 0x0505fe77, 0x5c000800, 0x4a025a08, 0x00000103, 0x49425a0a, 0x48065a0c, 0x4a025c0a, 0x0000ffff, 0x813261c0, 0x05000003, 0x59300402, 0x48025c0a, 0x592c020c, 0x8c000512, 0x05020006, 0x912c040d, 0x05011000, 0x4803c840, 0x642fc842, - 0x05011000, 0x1c01f000, 0x59765800, 0x0001fdfd, - 0x592c1005, 0x800811c0, 0x000205e2, 0x1c01f000, + 0x05011000, 0x1c01f000, 0x59765800, 0x0001fe23, + 0x592c1005, 0x800811c0, 0x00020608, 0x1c01f000, 0x4c540000, 0x4c580000, 0x4c5c0000, 0x4d2c0000, - 0x4c600000, 0x400cc000, 0x4000b800, 0x0539fa9d, - 0x4178a800, 0x05d5fb18, 0x050000c8, 0x05011000, + 0x4c600000, 0x400cc000, 0x4000b800, 0x0539ff34, + 0x4178a800, 0x05d5f87c, 0x050000c8, 0x05011000, 0x485fc857, 0x912c0408, 0x4803c840, 0x6443c842, 0x40000000, 0x05fd17ff, 0x412c7000, 0x4a025808, - 0x00000132, 0x497a5809, 0x42000000, 0x0010de60, + 0x00000132, 0x497a5809, 0x42000000, 0x00111dfa, 0x50000000, 0x48025802, 0x805cb9c0, 0x05020060, - 0x912e5c0b, 0x417a4000, 0x42024800, 0x0010e512, + 0x912e5c0b, 0x417a4000, 0x42024800, 0x001124b6, 0x41786800, 0x59240a00, 0x9004050f, 0x0c01f001, - 0x00105e8d, 0x00105e8d, 0x00105e8d, 0x00105e8d, - 0x00105e8d, 0x00105e8d, 0x00105e8d, 0x00105e84, - 0x00105e8d, 0x00105e8d, 0x00105e8d, 0x00105e8d, - 0x00105e8d, 0x00105e8d, 0x00105e8d, 0x00105e8d, + 0x00106171, 0x00106171, 0x00106171, 0x00106171, + 0x00106171, 0x00106171, 0x00106171, 0x00106168, + 0x00106171, 0x00106171, 0x00106171, 0x00106171, + 0x00106171, 0x00106171, 0x00106171, 0x00106171, 0x8054a800, 0x812241c0, 0x05020007, 0x59240805, 0x805c00f0, 0x80040d40, 0x48065800, 0x812e5800, - 0x0501f030, 0x90340503, 0x0c01f001, 0x00105e93, - 0x00105e9b, 0x00105ea4, 0x00105ead, 0x91200581, + 0x0501f030, 0x90340503, 0x0c01f001, 0x00106177, + 0x0010617f, 0x00106188, 0x00106191, 0x91200581, 0x05020003, 0x60042000, 0x0501f020, 0x912004a0, 0x0500101d, 0x80346800, 0x0501f01b, 0x912005a1, 0x05020004, 0x812e5800, 0x60042000, 0x0501f017, @@ -6098,371 +6283,374 @@ static const uint32_t isp_2500_risc_code[] = { 0x80346800, 0x801020c2, 0x90040507, 0x90000587, 0x05020004, 0x592c0000, 0x80100540, 0x48025800, 0x91264c0d, 0x81224000, 0x8058b040, 0x05fe07b2, - 0x8054a9c0, 0x403a5800, 0x0500005f, 0x0539fa31, - 0x0539fa51, 0x05020002, 0x8058b040, 0x805800d0, + 0x8054a9c0, 0x403a5800, 0x0500005f, 0x0539fec8, + 0x0539fee8, 0x05020002, 0x8058b040, 0x805800d0, 0x80540540, 0x48025a0a, 0x0501f050, 0x4943c857, 0x4923c857, 0x91400581, 0x05020004, 0x48165a0c, 0x90140583, 0x0500004d, 0x83400d00, 0x000000ff, 0x90040584, 0x05000049, 0x90040586, 0x05000047, 0x83400d00, 0x0000ff00, 0x05000003, 0x81400110, 0x48025810, 0x814000d0, 0x81200540, 0x48025c0a, - 0x0539fa35, 0x05020002, 0x8058b040, 0x805800d0, + 0x0539fecc, 0x05020002, 0x8058b040, 0x805800d0, 0x90000541, 0x48025a0a, 0x59240805, 0x805c00f0, 0x80040d40, 0x4806580b, 0x5924000b, 0x4802580f, 0x592c020c, 0x80600540, 0x48025a0c, 0x91400d81, 0x0500002a, 0x4d340000, 0x4d440000, 0x61fa880f, - 0x05fdfb85, 0x05d20ee5, 0x592c020c, 0x8400055a, + 0x05fdfb6a, 0x05d20c3c, 0x592c020c, 0x8400055a, 0x48025a0c, 0x59340006, 0x9c0001c0, 0x48025812, 0x59340007, 0x9c0001c0, 0x48025813, 0x59340008, 0x9c0001c0, 0x48025814, 0x59340009, 0x9c0001c0, - 0x48025815, 0x0501f9a9, 0x05020006, 0x59a80249, + 0x48025815, 0x0501f9af, 0x05020006, 0x59a8024c, 0x8c000508, 0x05020005, 0x6000080c, 0x0501f007, 0x60000804, 0x0501f005, 0x592c020c, 0x84000558, 0x48025a0c, 0x60000808, 0x592c020c, 0x82000500, 0x0000f1ff, 0x80040540, 0x4803c857, 0x48025a0c, - 0x5c028800, 0x5c026800, 0x0539fa16, 0x0502000d, - 0x0001fb82, 0x0501f005, 0x59cc0007, 0x48025810, - 0x05fdf7bd, 0x05d5fa71, 0x5c00c000, 0x5c025800, + 0x5c028800, 0x5c026800, 0x0539fead, 0x0502000d, + 0x0001fba8, 0x0501f005, 0x59cc0007, 0x48025810, + 0x05fdf7bd, 0x05d1ffc4, 0x5c00c000, 0x5c025800, 0x5c00b800, 0x5c00b000, 0x5c00a800, 0x1c01f000, - 0x0535fdb1, 0x05fdf7f9, 0x59a8003f, 0x90000c8a, - 0x05d21eae, 0x0c01f808, 0x4a038805, 0x000000f0, - 0x59c400a3, 0x82000500, 0x02870000, 0x05d20ea7, - 0x1c01f000, 0x00105fb3, 0x00105f40, 0x00105f58, - 0x00105f82, 0x00105fa6, 0x001005da, 0x001005da, - 0x00105f58, 0x001005da, 0x00105f3f, 0x1c01f000, - 0x600c2000, 0x0501fbad, 0x4a038808, 0x00000204, - 0x0501fba1, 0x59c40805, 0x8c04050e, 0x05020010, + 0x0539fa2a, 0x05fdf7f9, 0x59a80042, 0x90000c8a, + 0x05d21c05, 0x0c01f808, 0x4a038805, 0x000000f0, + 0x59c400a3, 0x82000500, 0x02870000, 0x05d20bfe, + 0x1c01f000, 0x00106297, 0x00106224, 0x0010623c, + 0x00106266, 0x0010628a, 0x00100615, 0x00100615, + 0x0010623c, 0x00100615, 0x00106223, 0x1c01f000, + 0x600c2000, 0x0501fbb9, 0x4a038808, 0x00000204, + 0x0501fbac, 0x59c40805, 0x8c04050e, 0x05020010, 0x8c04050a, 0x05020009, 0x8c04050c, 0x05020005, - 0x8c040508, 0x0500000a, 0x640f503f, 0x0501f007, - 0x6403503f, 0x0501f005, 0x42000000, 0x0010e3a4, - 0x0539f888, 0x640b503f, 0x0501f898, 0x1c01f000, - 0x497b50a8, 0x60002000, 0x0501fb94, 0x4a038808, + 0x8c040508, 0x0500000a, 0x640f5042, 0x0501f007, + 0x64035042, 0x0501f005, 0x42000000, 0x00112345, + 0x0539fd1f, 0x640b5042, 0x0501f898, 0x1c01f000, + 0x497b50ab, 0x60002000, 0x0501fba0, 0x4a038808, 0x00000202, 0x59c40805, 0x8c040508, 0x05020020, 0x8c04050c, 0x0502001c, 0x8c04050e, 0x05020018, - 0x82040500, 0x000000f0, 0x0502001b, 0x0501fb7e, + 0x82040500, 0x000000f0, 0x0502001b, 0x0501fb89, 0x4a038808, 0x00000280, 0x59c40002, 0x8400050c, - 0x48038802, 0x0501f959, 0x4d3c0000, 0x60067800, - 0x0529feb7, 0x5c027800, 0x59c410a3, 0x84081518, - 0x05ddff2b, 0x4a038808, 0x00000280, 0x60082000, - 0x0501fb76, 0x6427503f, 0x0501f007, 0x6407503f, - 0x0501f004, 0x6403503f, 0x0501f002, 0x640f503f, - 0x0501f86e, 0x1c01f000, 0x60042000, 0x0501fb6b, - 0x59c410a3, 0x84081518, 0x05ddff19, 0x4a038808, + 0x48038802, 0x0501f95f, 0x4d3c0000, 0x60067800, + 0x052df97a, 0x5c027800, 0x59c410a3, 0x84081518, + 0x05ddfcc7, 0x4a038808, 0x00000280, 0x60082000, + 0x0501fb82, 0x64275042, 0x0501f007, 0x64075042, + 0x0501f004, 0x64035042, 0x0501f002, 0x640f5042, + 0x0501f86e, 0x1c01f000, 0x60042000, 0x0501fb77, + 0x59c410a3, 0x84081518, 0x05ddfcb5, 0x4a038808, 0x00000280, 0x59c40805, 0x8c04050a, 0x05020018, 0x8c04050c, 0x05020014, 0x8c04050e, 0x05020010, 0x82040500, 0x000000f0, 0x05020013, 0x59c40002, - 0x8400050c, 0x48038802, 0x0501f930, 0x4d3c0000, - 0x60067800, 0x0529fe8e, 0x5c027800, 0x60082000, - 0x0501fb52, 0x6427503f, 0x0501f007, 0x6407503f, - 0x0501f004, 0x6403503f, 0x0501f002, 0x640b503f, - 0x0501f84a, 0x1c01f000, 0x0501fc43, 0x4a038808, + 0x8400050c, 0x48038802, 0x0501f936, 0x4d3c0000, + 0x60067800, 0x052df951, 0x5c027800, 0x60082000, + 0x0501fb5e, 0x64275042, 0x0501f007, 0x64075042, + 0x0501f004, 0x64035042, 0x0501f002, 0x640b5042, + 0x0501f84a, 0x1c01f000, 0x0501fc4f, 0x4a038808, 0x00000208, 0x59c40805, 0x8c04050c, 0x05020005, - 0x8c04050e, 0x05000005, 0x6407503f, 0x0501f002, - 0x6403503f, 0x0501f83d, 0x1c01f000, 0x60102000, - 0x0501fb3a, 0x0501f873, 0x59c40805, 0x8c04050c, + 0x8c04050e, 0x05000005, 0x64075042, 0x0501f002, + 0x64035042, 0x0501f83d, 0x1c01f000, 0x60102000, + 0x0501fb46, 0x0501f873, 0x59c40805, 0x8c04050c, 0x05020009, 0x8c04050a, 0x05020005, 0x8c04050e, - 0x05000005, 0x6407503f, 0x0501f002, 0x640b503f, - 0x0501f82e, 0x1c01f000, 0x0501f8ec, 0x05d20e17, - 0x0501fc6b, 0x601c2000, 0x0501fb28, 0x8d0c050c, - 0x05000010, 0x850e1d0c, 0x64438805, 0x05ddfde0, + 0x05000005, 0x64075042, 0x0501f002, 0x640b5042, + 0x0501f82e, 0x1c01f000, 0x0501f8f2, 0x05d20b6e, + 0x0501fc77, 0x601c2000, 0x0501fb34, 0x8d0c050c, + 0x05000010, 0x850e1d0c, 0x64438805, 0x05ddfb7c, 0x59c40005, 0x8c000508, 0x05000006, 0x4a038808, - 0x00000208, 0x64075042, 0x6006d800, 0x0501f01a, + 0x00000208, 0x64075045, 0x6006d800, 0x0501f01a, 0x59c40006, 0x84000548, 0x48038806, 0x0501f016, - 0x59a8003f, 0x90000581, 0x05020012, 0x42000000, - 0x0010e3a4, 0x0535ffff, 0x4ce80000, 0x61a1d007, - 0x050df825, 0x59c40005, 0x90000530, 0x05000008, - 0x8c00050a, 0x05000004, 0x60002000, 0x0501fb07, - 0x0501f003, 0x60042000, 0x0501fb04, 0x5c01d000, - 0x6413503f, 0x1c01f000, 0x4c040000, 0x4c080000, - 0x61900800, 0x42001000, 0x00105ff7, 0x0509fffc, + 0x59a80042, 0x90000581, 0x05020012, 0x42000000, + 0x00112345, 0x0539fc96, 0x4ce80000, 0x61a1d007, + 0x050df9ac, 0x59c40005, 0x90000530, 0x05000008, + 0x8c00050a, 0x05000004, 0x60002000, 0x0501fb13, + 0x0501f003, 0x60042000, 0x0501fb10, 0x5c01d000, + 0x64135042, 0x1c01f000, 0x4c040000, 0x4c080000, + 0x61900800, 0x42001000, 0x001062db, 0x050df97c, 0x5c001000, 0x5c000800, 0x1c01f000, 0x4803c856, - 0x4c040000, 0x0511fd1a, 0x4df00000, 0x0511ffa7, - 0x5c03e000, 0x05100d07, 0x42000000, 0x0010e3a3, - 0x0535ffdc, 0x05fdffc1, 0x5c000800, 0x1c01f000, - 0x4803c856, 0x4c040000, 0x4c080000, 0x0511fd0c, - 0x4df00000, 0x0511ff99, 0x5c03e000, 0x05100cf9, - 0x59c40006, 0x84000500, 0x48038806, 0x0515f846, - 0x497b8880, 0x42000000, 0x0010e3a2, 0x0535ffc9, - 0x05ddfcf8, 0x641350b4, 0x6012d800, 0x64078805, - 0x42001000, 0x00105ff7, 0x0509ffdc, 0x05d1ffe3, - 0x0501f89e, 0x05000005, 0x42006000, 0xfeffffff, - 0x41786800, 0x05f9fa36, 0x05d1fbd8, 0x60000001, - 0x05ddfa60, 0x5c001000, 0x5c000800, 0x1c01f000, + 0x4c040000, 0x0511fef4, 0x4df00000, 0x0515f981, + 0x5c03e000, 0x05100ee1, 0x42000000, 0x00112344, + 0x0539fc73, 0x05fdffc1, 0x5c000800, 0x1c01f000, + 0x4803c856, 0x4c040000, 0x4c080000, 0x0511fee6, + 0x4df00000, 0x0515f973, 0x5c03e000, 0x05100ed3, + 0x59c40006, 0x84000500, 0x48038806, 0x0515fa20, + 0x497b8880, 0x42000000, 0x00112343, 0x0539fc60, + 0x05ddfa94, 0x641350b9, 0x6012d800, 0x64078805, + 0x42001000, 0x001062db, 0x050df95c, 0x05d1fd2e, + 0x0501f8a4, 0x05000005, 0x42006000, 0xfeffffff, + 0x41786800, 0x05f9f949, 0x05d1f92b, 0x60000001, + 0x05d9fffc, 0x5c001000, 0x5c000800, 0x1c01f000, 0x59c40008, 0x82000580, 0x00000210, 0x05000005, - 0x4a038808, 0x00000210, 0x6021d027, 0x0509ffd6, - 0x1c01f000, 0x4c040000, 0x59a80842, 0x90040580, + 0x4a038808, 0x00000210, 0x6021d027, 0x050df95d, + 0x1c01f000, 0x4c040000, 0x59a80845, 0x90040580, 0x05000008, 0x90040581, 0x05000008, 0x90040582, 0x05000008, 0x90040583, 0x05000008, 0x0501f043, - 0x6403503f, 0x0501f006, 0x6413503f, 0x0501f004, - 0x6407503f, 0x0501f002, 0x641f503f, 0x497b8880, - 0x64078893, 0x41780000, 0x05ddfac9, 0x0515f80e, + 0x64035042, 0x0501f006, 0x64135042, 0x0501f004, + 0x64075042, 0x0501f002, 0x641f5042, 0x497b8880, + 0x64078893, 0x41780000, 0x05ddf865, 0x0515f9e8, 0x916c0d84, 0x05000008, 0x59c40006, 0x82000500, 0xffffff0f, 0x82000540, 0x04000001, 0x48038806, 0x0501f007, 0x59c40006, 0x82000500, 0xffffff0f, - 0x82000540, 0x04000000, 0x48038806, 0x0501f863, + 0x82000540, 0x04000000, 0x48038806, 0x0501f869, 0x05020005, 0x59c40806, 0x82040d00, 0xfbffff0f, 0x48078806, 0x59c40005, 0x8c000534, 0x05020026, 0x42006000, 0xfc18ffff, 0x42006800, 0x01000000, - 0x05f9f9f3, 0x05ddfd46, 0x59c408a4, 0x90040d0f, - 0x90040d8c, 0x05020885, 0x0501f850, 0x05000005, - 0x42006000, 0xfeffffff, 0x41786800, 0x05f9f9e8, - 0x916c0d84, 0x0500000c, 0x05fdff7c, 0x5994102e, - 0x41780800, 0x60280000, 0x050dff18, 0x40080000, - 0x59a80863, 0x80040c00, 0x42001000, 0x00106004, - 0x0509ff6c, 0x64135042, 0x05fdfeac, 0x0501f83b, + 0x05f9f906, 0x05ddfae2, 0x59c408a4, 0x90040d0f, + 0x90040d8c, 0x0502088b, 0x0501f856, 0x05000005, + 0x42006000, 0xfeffffff, 0x41786800, 0x05f9f8fb, + 0x916c0d84, 0x0500000c, 0x05fdff7c, 0x5994102f, + 0x41780800, 0x60280000, 0x0511f8ed, 0x40080000, + 0x59a80866, 0x80040c00, 0x42001000, 0x001062e8, + 0x050df8ec, 0x64135045, 0x05fdfeac, 0x0501f841, 0x05020005, 0x59c408a4, 0x90040d0f, 0x9004058c, - 0x05d20d56, 0x5c000800, 0x1c01f000, 0x4803c856, - 0x4c000000, 0x0509ff84, 0x4a03503d, 0x00ffffff, - 0x497b5041, 0x59a8004d, 0x82000500, 0xffff0000, - 0x4803504d, 0x497b8880, 0x497b8893, 0x41780000, - 0x05ddfa7b, 0x59c40001, 0x82000500, 0xfffffcff, + 0x05d20aad, 0x5c000800, 0x1c01f000, 0x4803c856, + 0x4c000000, 0x050df90b, 0x4a035040, 0x00ffffff, + 0x497b5044, 0x59a80050, 0x82000500, 0xffff0000, + 0x48035050, 0x497b8880, 0x497b8893, 0x41780000, + 0x05ddf817, 0x59c40001, 0x82000500, 0xfffffcff, 0x48038801, 0x42006000, 0xfc18ffff, 0x41786800, - 0x05f9f9bb, 0x59c410a3, 0x84081518, 0x05ddfe00, + 0x05f9f8ce, 0x59c410a3, 0x84081518, 0x05ddfb9c, 0x4a038808, 0x00000200, 0x5c000000, 0x800001c0, - 0x05fa0847, 0x4a038805, 0x040000f0, 0x59c40006, + 0x05f60f5a, 0x4a038805, 0x040000f0, 0x59c40006, 0x82000500, 0xffffffcf, 0x82000540, 0x440000c1, - 0x48038806, 0x1c01f000, 0x4c5c0000, 0x59a8b841, - 0x825cbd80, 0x0000aaaa, 0x5c00b800, 0x1c01f000, - 0x4c5c0000, 0x599cb818, 0x905cbd30, 0x905cbd80, + 0x4c000000, 0x0501f80d, 0x5c000000, 0x05020003, + 0x82000500, 0xffffff0f, 0x48038806, 0x1c01f000, + 0x4c5c0000, 0x59a8b844, 0x825cbd80, 0x0000aaaa, 0x5c00b800, 0x1c01f000, 0x4c5c0000, 0x599cb818, - 0x905cbd30, 0x905cbd90, 0x5c00b800, 0x1c01f000, - 0x4c5c0000, 0x599cb818, 0x905cbd30, 0x905cbda0, - 0x5c00b800, 0x1c01f000, 0x490fc857, 0x910c0d13, - 0x0500001d, 0x599c1017, 0x4d3c0000, 0x910c0511, - 0x05000005, 0x417a7800, 0x8d0c0520, 0x05020007, - 0x0501f00f, 0x60227800, 0x8d0c0520, 0x0500000c, - 0x600c3000, 0x0501f002, 0x60103000, 0x603a8000, - 0x4d200000, 0x61fe4001, 0x0531fecf, 0x5c024000, - 0x599c1017, 0x8c08050a, 0x05020005, 0x60128000, - 0x05e1f9f2, 0x4803c856, 0x850e1d08, 0x5c027800, - 0x0501f009, 0x8d0c0520, 0x05000007, 0x603e8000, - 0x60043000, 0x4d200000, 0x61fe4001, 0x0531febe, - 0x5c024000, 0x1c01f000, 0x4803c856, 0x4c580000, - 0x42000000, 0x0010e4bd, 0x0535feea, 0x42000800, - 0x00110516, 0x59c40003, 0x44000800, 0x59c40004, - 0x48000801, 0x59c4000b, 0x48000802, 0x59c4008e, - 0x48000803, 0x59c4008f, 0x48000804, 0x59c40090, - 0x48000805, 0x59c40091, 0x48000806, 0x59c40092, - 0x48000807, 0x59c40093, 0x48000808, 0x59c40099, - 0x48000809, 0x59c4009e, 0x4800080a, 0x59c400aa, - 0x4800080b, 0x90040c0f, 0x41c41800, 0x60c0b000, - 0x580c0050, 0x44000800, 0x80040800, 0x800c1800, - 0x8058b040, 0x05fe07fb, 0x41c41800, 0x6080b000, - 0x580c0010, 0x44000800, 0x80040800, 0x800c1800, - 0x8058b040, 0x05fe07fb, 0x497b8830, 0x6100b000, - 0x59c40031, 0x44000800, 0x80040800, 0x8058b040, - 0x05fe07fc, 0x497b88ac, 0x6040b000, 0x59c400ad, - 0x44000800, 0x80040800, 0x8058b040, 0x05fe07fc, - 0x59a800a9, 0x59c410b1, 0x80080400, 0x480350a9, - 0x59a800aa, 0x59c410b2, 0x80080400, 0x480350aa, - 0x59c41001, 0x4c080000, 0x8408150c, 0x480b8801, - 0x4a0370e4, 0x00000300, 0x4a0370e5, 0xb0000000, - 0x60000810, 0x80040840, 0x05d00c9c, 0x59b800e5, - 0x8c000538, 0x05fe07fc, 0x4a0370e4, 0x00000200, - 0x42006000, 0xffffffff, 0x42006800, 0x80000000, - 0x05f9f90f, 0x64078807, 0x497b8807, 0x0501faac, - 0x4a038808, 0x00000210, 0x42006000, 0xfcf8ffff, - 0x42006800, 0x01000000, 0x05f9f905, 0x5c001000, - 0x480b8801, 0x42000800, 0x00110516, 0x50040000, - 0x48038803, 0x58040001, 0x48038804, 0x58040002, - 0x4803880b, 0x58040003, 0x4803888e, 0x58040004, - 0x4803888f, 0x58040005, 0x48038890, 0x58040006, - 0x48038891, 0x58040007, 0x48038892, 0x58040008, - 0x48038893, 0x58040009, 0x48038899, 0x5804000a, - 0x4803889e, 0x5804000b, 0x480388aa, 0x90040c0f, - 0x41c41800, 0x60c0b000, 0x50040000, 0x48001850, + 0x905cbd30, 0x905cbd80, 0x5c00b800, 0x1c01f000, + 0x4c5c0000, 0x599cb818, 0x905cbd30, 0x905cbd90, + 0x5c00b800, 0x1c01f000, 0x4c5c0000, 0x599cb818, + 0x905cbd30, 0x905cbda0, 0x5c00b800, 0x1c01f000, + 0x490fc857, 0x910c0d13, 0x0500001d, 0x599c1017, + 0x4d3c0000, 0x910c0511, 0x05000005, 0x417a7800, + 0x8d0c0520, 0x05020007, 0x0501f00f, 0x60227800, + 0x8d0c0520, 0x0500000c, 0x600c3000, 0x0501f002, + 0x60103000, 0x603a8000, 0x4d200000, 0x61fe4001, + 0x0535fb2c, 0x5c024000, 0x599c1017, 0x8c08050a, + 0x05020005, 0x60128000, 0x05ddff9b, 0x4803c856, + 0x850e1d08, 0x5c027800, 0x0501f009, 0x8d0c0520, + 0x05000007, 0x603e8000, 0x60043000, 0x4d200000, + 0x61fe4001, 0x0535fb1b, 0x5c024000, 0x1c01f000, + 0x4803c856, 0x4c580000, 0x42000000, 0x00112461, + 0x0539fb7b, 0x42000800, 0x001144ba, 0x59c40003, + 0x44000800, 0x59c40004, 0x48000801, 0x59c4000b, + 0x48000802, 0x59c4008e, 0x48000803, 0x59c4008f, + 0x48000804, 0x59c40090, 0x48000805, 0x59c40091, + 0x48000806, 0x59c40092, 0x48000807, 0x59c40093, + 0x48000808, 0x59c40099, 0x48000809, 0x59c4009e, + 0x4800080a, 0x59c400aa, 0x4800080b, 0x90040c0f, + 0x41c41800, 0x60c0b000, 0x580c0050, 0x44000800, 0x80040800, 0x800c1800, 0x8058b040, 0x05fe07fb, - 0x41c41800, 0x6080b000, 0x50040000, 0x48001810, + 0x41c41800, 0x6080b000, 0x580c0010, 0x44000800, 0x80040800, 0x800c1800, 0x8058b040, 0x05fe07fb, - 0x497b8830, 0x6100b000, 0x50040000, 0x48038831, + 0x497b8830, 0x6100b000, 0x59c40031, 0x44000800, 0x80040800, 0x8058b040, 0x05fe07fc, 0x497b88ac, - 0x6040b000, 0x50040000, 0x480388ad, 0x80040800, - 0x8058b040, 0x05fe07fc, 0x497b8880, 0x41780000, - 0x05ddf97f, 0x59c408a4, 0x90040d0f, 0x9004058c, - 0x05d20c46, 0x4a038805, 0x04000000, 0x5c00b000, - 0x1c01f000, 0x4803c856, 0x4c580000, 0x4ce80000, - 0x42000000, 0x0010e3a5, 0x0535fe3e, 0x59c41008, - 0x4c080000, 0x82081500, 0xffffff7f, 0x480b8808, - 0x59c40004, 0x82000500, 0x00003e02, 0x05000003, - 0x6051d000, 0x0509fe5c, 0x59c40006, 0x82000500, - 0xffffff0f, 0x48038806, 0x0501fa42, 0x64438805, - 0x4a038808, 0x00000204, 0x6194b000, 0x59c40005, - 0x8c000508, 0x05020013, 0x61a1d007, 0x0509fe4e, - 0x8058b040, 0x05fe07fa, 0x601c2000, 0x0501f933, - 0x0501fa2d, 0x0511fe98, 0x4803c856, 0x59c410a3, - 0x84081518, 0x05ddfcde, 0x4a038808, 0x00000208, - 0x64075042, 0x6006d800, 0x90000541, 0x0501f032, - 0x60042000, 0x0501f925, 0x05d5facd, 0x42000000, - 0x0010e499, 0x0535fe0f, 0x05d5fed7, 0x497b8880, - 0x59a8004d, 0x82000500, 0x0000ffff, 0x4c000000, - 0x05ddf93b, 0x5c000000, 0x48038880, 0x59c410a3, - 0x84081518, 0x05ddfcc6, 0x4a038808, 0x00000200, + 0x6040b000, 0x59c400ad, 0x44000800, 0x80040800, + 0x8058b040, 0x05fe07fc, 0x59a800ae, 0x59c410b1, + 0x80080400, 0x480350ae, 0x59a800af, 0x59c410b2, + 0x80080400, 0x480350af, 0x59c41001, 0x4c080000, + 0x8408150c, 0x480b8801, 0x4a0370e4, 0x00000300, + 0x4a0370e5, 0xb0000000, 0x60000810, 0x80040840, + 0x05d009ed, 0x59b800e5, 0x8c000538, 0x05fe07fc, + 0x4a0370e4, 0x00000200, 0x42006000, 0xffffffff, + 0x42006800, 0x80000000, 0x05f9f81c, 0x64078807, + 0x497b8807, 0x0501fab2, 0x4a038808, 0x00000210, + 0x42006000, 0xfcf8ffff, 0x42006800, 0x01000000, + 0x05f9f812, 0x5c001000, 0x480b8801, 0x42000800, + 0x001144ba, 0x50040000, 0x48038803, 0x58040001, + 0x48038804, 0x58040002, 0x4803880b, 0x58040003, + 0x4803888e, 0x58040004, 0x4803888f, 0x58040005, + 0x48038890, 0x58040006, 0x48038891, 0x58040007, + 0x48038892, 0x58040008, 0x48038893, 0x58040009, + 0x48038899, 0x5804000a, 0x4803889e, 0x5804000b, + 0x480388aa, 0x90040c0f, 0x41c41800, 0x60c0b000, + 0x50040000, 0x48001850, 0x80040800, 0x800c1800, + 0x8058b040, 0x05fe07fb, 0x41c41800, 0x6080b000, + 0x50040000, 0x48001810, 0x80040800, 0x800c1800, + 0x8058b040, 0x05fe07fb, 0x497b8830, 0x6100b000, + 0x50040000, 0x48038831, 0x80040800, 0x8058b040, + 0x05fe07fc, 0x497b88ac, 0x6040b000, 0x50040000, + 0x480388ad, 0x80040800, 0x8058b040, 0x05fe07fc, + 0x497b8880, 0x41780000, 0x05d9ff15, 0x59c408a4, + 0x90040d0f, 0x9004058c, 0x05d20997, 0x4a038805, + 0x04000000, 0x5c00b000, 0x1c01f000, 0x4803c856, + 0x4c580000, 0x4ce80000, 0x42000000, 0x00112346, + 0x0539facf, 0x59c41008, 0x4c080000, 0x82081500, + 0xffffff7f, 0x480b8808, 0x59c40004, 0x82000500, + 0x00003e02, 0x05000003, 0x6051d000, 0x0509ffdd, + 0x59c40006, 0x82000500, 0xffffff0f, 0x48038806, + 0x0501fa48, 0x64438805, 0x4a038808, 0x00000204, + 0x6194b000, 0x59c40005, 0x8c000508, 0x05020013, + 0x61a1d007, 0x0509ffcf, 0x8058b040, 0x05fe07fa, + 0x601c2000, 0x0501f939, 0x0501fa33, 0x0515f86c, + 0x4803c856, 0x59c410a3, 0x84081518, 0x05ddfa74, + 0x4a038808, 0x00000208, 0x64075045, 0x6006d800, + 0x90000541, 0x0501f034, 0x60042000, 0x0501f92b, + 0x05d5f87f, 0x42000000, 0x0011243d, 0x0539faa0, + 0x61f819ff, 0x60082000, 0x05d5fc8b, 0x497b8880, + 0x59a80050, 0x82000500, 0x0000ffff, 0x4c000000, + 0x05d9fecf, 0x5c000000, 0x48038880, 0x59c410a3, + 0x84081518, 0x05ddfa5a, 0x4a038808, 0x00000200, 0x64238805, 0x6194b000, 0x4a038805, 0x000000f0, - 0x05ddfbcb, 0x61c00801, 0x59c40005, 0x80040d00, - 0x05000006, 0x61a1d007, 0x0509fe1f, 0x8058b040, - 0x05fe07f6, 0x05fdf7d1, 0x59c410a3, 0x84081558, - 0x05ddfcb3, 0x60082000, 0x0501f900, 0x59c40006, - 0x82000540, 0x000000f0, 0x48038806, 0x59a80040, + 0x05ddf95f, 0x61c00801, 0x59c40005, 0x80040d00, + 0x05000006, 0x61a1d007, 0x0509ff9e, 0x8058b040, + 0x05fe07f6, 0x05fdf7cf, 0x59c410a3, 0x84081558, + 0x05ddfa47, 0x60082000, 0x0501f904, 0x59c40006, + 0x82000540, 0x000000f0, 0x48038806, 0x59a80043, 0x80000540, 0x05020002, 0x80000000, 0x48038893, - 0x80000580, 0x4df00000, 0x05ddfbd5, 0x5c03e000, + 0x80000580, 0x4df00000, 0x05ddf969, 0x5c03e000, 0x5c001000, 0x480b8808, 0x5c01d000, 0x5c00b000, 0x1c01f000, 0x4803c856, 0x4c580000, 0x4ce80000, 0x59c41008, 0x4c080000, 0x82081500, 0xffffff7f, 0x480b8808, 0x59c40004, 0x82000500, 0x00003e02, - 0x05000003, 0x6051d000, 0x0509fdf7, 0x05d5fa88, - 0x42000000, 0x0010e49a, 0x0535fdca, 0x05d5fe92, - 0x60002000, 0x0501f8d9, 0x4a038808, 0x00000202, - 0x80000580, 0x48038880, 0x48038893, 0x05ddf8f4, - 0x6010b007, 0x4a038805, 0x000000f0, 0x05ddfb8c, - 0x61c00801, 0x59c40005, 0x80040d00, 0x05000016, - 0x82000500, 0x000000d0, 0x05020015, 0x619dd000, - 0x0509fddd, 0x8058b040, 0x05fe07f3, 0x601c2000, - 0x0501f8c2, 0x0511fe28, 0x0501f9bb, 0x4a038808, - 0x00000208, 0x64075042, 0x6006d800, 0x59c40006, - 0x8400050a, 0x48038806, 0x64838805, 0x90000541, - 0x0501f01b, 0x60082000, 0x0501f8b4, 0x497b8880, - 0x59a80040, 0x80000540, 0x05020002, 0x80000000, - 0x48038893, 0x59a8004d, 0x82000500, 0x0000ffff, - 0x4c000000, 0x05ddf8ca, 0x5c000000, 0x48038880, - 0x59c410a3, 0x84081518, 0x05ddfc55, 0x4a038808, - 0x00000200, 0x6095d000, 0x0509fdb7, 0x59c410a3, - 0x84081558, 0x05ddfc4e, 0x80000580, 0x4df00000, - 0x05ddfb7b, 0x5c03e000, 0x5c001000, 0x480b8808, - 0x5c01d000, 0x5c00b000, 0x1c01f000, 0x4803c856, - 0x60042000, 0x0501f891, 0x59c40004, 0x82000500, - 0x00003e02, 0x05000008, 0x0511fdf3, 0x0501f986, - 0x4a038808, 0x00000208, 0x64075042, 0x6006d800, - 0x0501f046, 0x05d5fa2e, 0x42000000, 0x0010e49b, - 0x0535fd70, 0x05d5fe38, 0x59c40006, 0x84000508, - 0x48038806, 0x64438805, 0x850e1d4c, 0x61900800, - 0x42001000, 0x00105ff7, 0x0509fd79, 0x59c410a3, - 0x84081518, 0x05ddfc26, 0x4a038808, 0x00000200, - 0x497b8880, 0x4a038805, 0x000000f0, 0x05ddfb2c, - 0x61c00801, 0x59c40005, 0x80040d00, 0x0500000b, - 0x82000500, 0x000000e0, 0x0502000d, 0x61a1d007, - 0x0509fd7d, 0x0509fbe2, 0x59940004, 0x80000540, - 0x05fe07f1, 0x0501f021, 0x59c410a3, 0x84081558, - 0x05ddfc0f, 0x60082000, 0x0501f85c, 0x4c080000, - 0x42001000, 0x00105ff7, 0x0509fd60, 0x5c001000, - 0x497b8880, 0x59a80040, 0x80000540, 0x05020002, - 0x80000000, 0x48038893, 0x59a8004d, 0x82000500, - 0x0000ffff, 0x4c000000, 0x05ddf86d, 0x5c000000, - 0x48038880, 0x850e1d0c, 0x59c40006, 0x84000548, - 0x48038806, 0x05ddfb26, 0x59c40008, 0x82000540, - 0x00000280, 0x48038808, 0x1c01f000, 0x4803c856, - 0x4d400000, 0x4d3c0000, 0x0511fda3, 0x0535fe39, - 0x0502002b, 0x599c1017, 0x8d0c0500, 0x05020009, - 0x8c08051a, 0x05000026, 0x850e1d42, 0x60128000, - 0x60227800, 0x8d0c0520, 0x05020006, 0x0501f01d, - 0x60128000, 0x417a7800, 0x8d0c0520, 0x05000019, - 0x0535fe30, 0x42024800, 0x0010e512, 0x59240200, - 0x8c000500, 0x05000006, 0x4c580000, 0x60040800, - 0x60001002, 0x050dfc77, 0x5c00b000, 0x91264c0d, - 0x8058b040, 0x05fe07f6, 0x61fe41ff, 0x4d400000, - 0x603a8000, 0x600c3000, 0x61fe89ff, 0x0531fccf, - 0x5c028000, 0x599c0817, 0x8c04050a, 0x05020004, - 0x4943c857, 0x493fc857, 0x05ddfff4, 0x497b8880, - 0x6006d800, 0x05fdfd50, 0x5c027800, 0x5c028000, - 0x1c01f000, 0x05d5f9b2, 0x42000000, 0x0010e49c, - 0x0535fcf4, 0x05d5fdbc, 0x60040000, 0x05ddf824, - 0x64078880, 0x05ddf2e2, 0x42000800, 0x0010dce7, + 0x05000003, 0x6051d000, 0x0509ff76, 0x05d5f838, + 0x42000000, 0x0011243e, 0x0539fa59, 0x61f819ff, + 0x60042000, 0x05d5fc44, 0x60002000, 0x0501f8db, + 0x4a038808, 0x00000202, 0x80000580, 0x48038880, + 0x48038893, 0x05d9fe86, 0x6010b007, 0x4a038805, + 0x000000f0, 0x05ddf91e, 0x61c00801, 0x59c40005, + 0x80040d00, 0x05000016, 0x82000500, 0x000000d0, + 0x05020015, 0x619dd000, 0x0509ff5a, 0x8058b040, + 0x05fe07f3, 0x601c2000, 0x0501f8c4, 0x0511fff8, + 0x0501f9bd, 0x4a038808, 0x00000208, 0x64075045, + 0x6006d800, 0x59c40006, 0x8400050a, 0x48038806, + 0x64838805, 0x90000541, 0x0501f01b, 0x60082000, + 0x0501f8b6, 0x497b8880, 0x59a80043, 0x80000540, + 0x05020002, 0x80000000, 0x48038893, 0x59a80050, + 0x82000500, 0x0000ffff, 0x4c000000, 0x05d9fe5c, + 0x5c000000, 0x48038880, 0x59c410a3, 0x84081518, + 0x05ddf9e7, 0x4a038808, 0x00000200, 0x6095d000, + 0x0509ff34, 0x59c410a3, 0x84081558, 0x05ddf9e0, + 0x80000580, 0x4df00000, 0x05ddf90d, 0x5c03e000, + 0x5c001000, 0x480b8808, 0x5c01d000, 0x5c00b000, + 0x1c01f000, 0x4803c856, 0x60042000, 0x0501f893, + 0x59c40004, 0x82000500, 0x00003e02, 0x05000008, + 0x0511ffc3, 0x0501f988, 0x4a038808, 0x00000208, + 0x64075045, 0x6006d800, 0x0501f047, 0x05d1ffdc, + 0x42000000, 0x0011243f, 0x0539f9fd, 0x61fc19ff, + 0x05d5fbe9, 0x59c40006, 0x84000508, 0x48038806, + 0x64438805, 0x850e1d4c, 0x61900800, 0x42001000, + 0x001062db, 0x0509feee, 0x59c410a3, 0x84081518, + 0x05ddf9b7, 0x4a038808, 0x00000200, 0x497b8880, + 0x4a038805, 0x000000f0, 0x05ddf8bd, 0x61c00801, + 0x59c40005, 0x80040d00, 0x0500000b, 0x82000500, + 0x000000e0, 0x0502000d, 0x61a1d007, 0x0509fef9, + 0x0509fd0d, 0x59940004, 0x80000540, 0x05fe07f1, + 0x0501f021, 0x59c410a3, 0x84081558, 0x05ddf9a0, + 0x60082000, 0x0501f85d, 0x4c080000, 0x42001000, + 0x001062db, 0x0509fed5, 0x5c001000, 0x497b8880, + 0x59a80043, 0x80000540, 0x05020002, 0x80000000, + 0x48038893, 0x59a80050, 0x82000500, 0x0000ffff, + 0x4c000000, 0x05d9fdfe, 0x5c000000, 0x48038880, + 0x850e1d0c, 0x59c40006, 0x84000548, 0x48038806, + 0x05ddf8b7, 0x59c40008, 0x82000540, 0x00000280, + 0x48038808, 0x1c01f000, 0x4803c856, 0x4d400000, + 0x4d3c0000, 0x0511ff72, 0x0539fac5, 0x0502002b, + 0x599c1017, 0x8d0c0500, 0x05020009, 0x8c08051a, + 0x05000026, 0x850e1d42, 0x60128000, 0x60227800, + 0x8d0c0520, 0x05020006, 0x0501f01d, 0x60128000, + 0x417a7800, 0x8d0c0520, 0x05000019, 0x0539fabc, + 0x42024800, 0x001124b6, 0x59240200, 0x8c000500, + 0x05000006, 0x4c580000, 0x60040800, 0x60001002, + 0x050dfe3c, 0x5c00b000, 0x91264c0d, 0x8058b040, + 0x05fe07f6, 0x61fe41ff, 0x4d400000, 0x603a8000, + 0x600c3000, 0x61fe89ff, 0x0535f927, 0x5c028000, + 0x599c0817, 0x8c04050a, 0x05020004, 0x4943c857, + 0x493fc857, 0x05ddfd98, 0x497b8880, 0x6006d800, + 0x05fdfd45, 0x5c027800, 0x5c028000, 0x1c01f000, + 0x05d1ff5f, 0x42000000, 0x00112440, 0x0539f980, + 0x61fc19ff, 0x05d5fb6c, 0x60040000, 0x05d9fdb4, + 0x64078880, 0x05ddf072, 0x42000800, 0x00111c6d, 0x48100802, 0x90101488, 0x05001008, 0x58040001, 0x4803c857, 0x4813c857, 0x58040003, 0x80000000, 0x48000803, 0x60082000, 0x58040001, 0x9000148b, 0x05001007, 0x4803c857, 0x4813c857, 0x58040003, 0x80000000, 0x48000803, 0x60000000, 0x48000800, 0x59c428a4, 0x90142d0f, 0x90142d8c, 0x0c000002, - 0x0501f0fb, 0x00106314, 0x0010632e, 0x00106348, - 0x00106362, 0x0010637c, 0x00106392, 0x001063a1, - 0x001063b4, 0x001063c7, 0x001063da, 0x001063dc, - 0x40100000, 0x0c01f001, 0x0010631e, 0x00106320, - 0x00106322, 0x00106323, 0x00106325, 0x00106327, - 0x0010632a, 0x0010632c, 0x64080801, 0x1c01f000, + 0x0501f0fb, 0x00106604, 0x0010661e, 0x00106638, + 0x00106652, 0x0010666c, 0x00106682, 0x00106691, + 0x001066a4, 0x001066b7, 0x001066ca, 0x001066cc, + 0x40100000, 0x0c01f001, 0x0010660e, 0x00106610, + 0x00106612, 0x00106613, 0x00106615, 0x00106617, + 0x0010661a, 0x0010661c, 0x64080801, 0x1c01f000, 0x640c0801, 0x0501f0bc, 0x1c01f000, 0x641c0801, 0x1c01f000, 0x64100801, 0x0501f0ba, 0x64140801, 0x0501f8be, 0x0501f0ba, 0x64140801, 0x0501f0bb, 0x4813c857, 0x1c01f000, 0x40100000, 0x0c01f001, - 0x00106338, 0x0010633a, 0x0010633c, 0x0010633d, - 0x0010633f, 0x00106341, 0x00106344, 0x00106346, + 0x00106628, 0x0010662a, 0x0010662c, 0x0010662d, + 0x0010662f, 0x00106631, 0x00106634, 0x00106636, 0x64080801, 0x1c01f000, 0x640c0801, 0x1c01f000, 0x1c01f000, 0x641c0801, 0x1c01f000, 0x64100801, 0x0501f0a0, 0x64140801, 0x0501f8a4, 0x0501f0a0, 0x64140801, 0x1c01f000, 0x64140801, 0x0501f099, - 0x40100000, 0x0c01f001, 0x00106352, 0x00106353, - 0x00106355, 0x00106357, 0x00106359, 0x0010635b, - 0x0010635e, 0x00106360, 0x1c01f000, 0x640c0801, + 0x40100000, 0x0c01f001, 0x00106642, 0x00106643, + 0x00106645, 0x00106647, 0x00106649, 0x0010664b, + 0x0010664e, 0x00106650, 0x1c01f000, 0x640c0801, 0x1c01f000, 0x64000801, 0x1c01f000, 0x641c0801, 0x1c01f000, 0x64100801, 0x0501f086, 0x64140801, 0x0501f88a, 0x0501f086, 0x64140801, 0x1c01f000, 0x64140801, 0x0501f07f, 0x40100000, 0x0c01f001, - 0x0010636c, 0x0010636e, 0x0010636f, 0x00106371, - 0x00106373, 0x00106375, 0x00106378, 0x0010637a, + 0x0010665c, 0x0010665e, 0x0010665f, 0x00106661, + 0x00106663, 0x00106665, 0x00106668, 0x0010666a, 0x64080801, 0x1c01f000, 0x1c01f000, 0x64000801, 0x1c01f000, 0x641c0801, 0x1c01f000, 0x64100801, 0x0501f06c, 0x64140801, 0x0501f870, 0x0501f06c, 0x64140801, 0x1c01f000, 0x64140801, 0x0501f065, - 0x40100000, 0x0c01f001, 0x00106386, 0x00106388, - 0x00106388, 0x00106389, 0x00106388, 0x0010638b, - 0x0010638e, 0x00106390, 0x64080801, 0x1c01f000, + 0x40100000, 0x0c01f001, 0x00106676, 0x00106678, + 0x00106678, 0x00106679, 0x00106678, 0x0010667b, + 0x0010667e, 0x00106680, 0x64080801, 0x1c01f000, 0x1c01f000, 0x641c0801, 0x1c01f000, 0x64140801, 0x0501f85a, 0x0501f056, 0x64140801, 0x1c01f000, 0x64140801, 0x0501f04f, 0x40100000, 0x0c01f001, - 0x001063a0, 0x001063a0, 0x001063a0, 0x0010639c, - 0x0010639e, 0x001063a0, 0x001063a0, 0x001063a0, + 0x00106690, 0x00106690, 0x00106690, 0x0010668c, + 0x0010668e, 0x00106690, 0x00106690, 0x00106690, 0x641c0801, 0x1c01f000, 0x64100801, 0x1c01f000, - 0x1c01f000, 0x40100000, 0x0c01f001, 0x001063ab, - 0x001063ad, 0x001063ad, 0x001063ae, 0x001063b0, - 0x001063b2, 0x001063b2, 0x001063b2, 0x64080801, + 0x1c01f000, 0x40100000, 0x0c01f001, 0x0010669b, + 0x0010669d, 0x0010669d, 0x0010669e, 0x001066a0, + 0x001066a2, 0x001066a2, 0x001066a2, 0x64080801, 0x1c01f000, 0x1c01f000, 0x641c0801, 0x1c01f000, 0x64100801, 0x0501f02f, 0x64200801, 0x1c01f000, - 0x40100000, 0x0c01f001, 0x001063be, 0x001063c0, - 0x001063c2, 0x001063c2, 0x001063c3, 0x001063c5, - 0x001063c5, 0x001063c5, 0x64080801, 0x1c01f000, + 0x40100000, 0x0c01f001, 0x001066ae, 0x001066b0, + 0x001066b2, 0x001066b2, 0x001066b3, 0x001066b5, + 0x001066b5, 0x001066b5, 0x64080801, 0x1c01f000, 0x640c0801, 0x1c01f000, 0x1c01f000, 0x64100801, 0x0501f01c, 0x64200801, 0x1c01f000, 0x40100000, - 0x0c01f001, 0x001063d1, 0x001063d1, 0x001063d3, - 0x001063d4, 0x001063d6, 0x001063d3, 0x001063d8, - 0x001063d3, 0x64140801, 0x0501f00b, 0x1c01f000, + 0x0c01f001, 0x001066c1, 0x001066c1, 0x001066c3, + 0x001066c4, 0x001066c6, 0x001066c3, 0x001066c8, + 0x001066c3, 0x64140801, 0x0501f00b, 0x1c01f000, 0x641c0801, 0x1c01f000, 0x64100801, 0x1c01f000, 0x64200801, 0x1c01f000, 0x64240801, 0x1c01f000, - 0x1c01f000, 0x42000000, 0x0010e38f, 0x0535f3fd, - 0x42000000, 0x0010e38c, 0x0535f3fa, 0x42000000, - 0x0010e38e, 0x0535f3f7, 0x42000000, 0x0010e38d, - 0x0535f3f4, 0x42000800, 0x0010dce7, 0x58040001, + 0x1c01f000, 0x42000000, 0x00112330, 0x0539f088, + 0x42000000, 0x0011232d, 0x0539f085, 0x42000000, + 0x0011232f, 0x0539f082, 0x42000000, 0x0011232e, + 0x0539f07f, 0x42000800, 0x00111c6d, 0x58040001, 0x48000800, 0x64140801, 0x64200802, 0x1c01f000, - 0x42000800, 0x0010dce7, 0x58040001, 0x48000800, + 0x42000800, 0x00111c6d, 0x58040001, 0x48000800, 0x64040801, 0x64280802, 0x1c01f000, 0x42000800, - 0x0010dce7, 0x58040001, 0x48000800, 0x64180801, - 0x64240802, 0x1c01f000, 0x42000800, 0x0010dce7, + 0x00111c6d, 0x58040001, 0x48000800, 0x64180801, + 0x64240802, 0x1c01f000, 0x42000800, 0x00111c6d, 0x64280801, 0x64280800, 0x1c01f000, 0x496fc857, - 0x4813c857, 0x40100000, 0x0c01f001, 0x0010641d, - 0x0010641d, 0x0010641d, 0x0010641d, 0x0010640f, - 0x00106417, 0x0010641b, 0x0010641d, 0x59a80249, + 0x4813c857, 0x40100000, 0x0c01f001, 0x0010670d, + 0x0010670d, 0x0010670d, 0x0010670d, 0x001066ff, + 0x00106707, 0x0010670b, 0x0010670d, 0x59a8024c, 0x8c000506, 0x05000003, 0x8c000502, 0x0500000a, 0x0501f80a, 0x05fe07cb, 0x0501f007, 0x0501f807, 0x05000005, 0x05fdffca, 0x05fdf7cc, 0x0501f803, 0x05fe07ca, 0x1c01f000, 0x496fc857, 0x416c0000, - 0x90000c88, 0x05d219b9, 0x0c01f001, 0x0010642b, - 0x0010642d, 0x0010642d, 0x0010642d, 0x0010642b, - 0x0010642b, 0x0010642b, 0x0010642d, 0x80000580, + 0x90000c88, 0x05ce1f04, 0x0c01f001, 0x0010671b, + 0x0010671d, 0x0010671d, 0x0010671d, 0x0010671b, + 0x0010671b, 0x0010671b, 0x0010671d, 0x80000580, 0x1c01f000, 0x90000541, 0x1c01f000, 0x59a80005, 0x8c000506, 0x05020002, 0x1c01f000, 0x41781800, - 0x42000800, 0x0010dce7, 0x58040001, 0x40002000, - 0x0c01f001, 0x0010644d, 0x00106446, 0x00106445, - 0x00106444, 0x0010644e, 0x00106448, 0x00106447, - 0x00106452, 0x00106448, 0x00106445, 0x0010644d, + 0x42000800, 0x00111c6d, 0x58040001, 0x40002000, + 0x0c01f001, 0x0010673d, 0x00106736, 0x00106735, + 0x00106734, 0x0010673e, 0x00106738, 0x00106737, + 0x00106742, 0x00106738, 0x00106735, 0x0010673d, 0x800c1800, 0x800c1800, 0x800c1800, 0x800c1800, - 0x800c1800, 0x60dc1100, 0x05f1fb92, 0x481350a8, - 0x1c01f000, 0x1c01f000, 0x59a800a8, 0x90000584, - 0x05fe07f7, 0x05fdf7fc, 0x59a800a8, 0x90000587, - 0x05fe07f2, 0x05fdf7f8, 0x64075042, 0x4a035041, - 0x0000aaaa, 0x05fdf3d8, 0x6002e000, 0x850e1d56, + 0x800c1800, 0x60dc1100, 0x05f1fa3f, 0x481350ab, + 0x1c01f000, 0x1c01f000, 0x59a800ab, 0x90000584, + 0x05fe07f7, 0x05fdf7fc, 0x59a800ab, 0x90000587, + 0x05fe07f2, 0x05fdf7f8, 0x64075045, 0x4a035044, + 0x0000aaaa, 0x05fdf3cc, 0x6002e000, 0x850e1d56, 0x497b3000, 0x4a03b004, 0x60000001, 0x59d80005, 0x4a03b004, 0x90000001, 0x59d80005, 0x4a03a804, 0x60000001, 0x59d40005, 0x4a03a804, 0x90000001, - 0x0501ff88, 0x0501f774, 0x58f25801, 0x4a03b004, + 0x0505f820, 0x0505f00c, 0x58f25801, 0x4a03b004, 0x10000000, 0x592c4200, 0x58201000, 0x592c220c, - 0x592cba0a, 0x0001f7ca, 0x6413c825, 0x6413c827, + 0x592cba0a, 0x0001f7f1, 0x6413c825, 0x6413c827, 0x599c0409, 0x80000d40, 0x0500001f, 0x599c0407, 0x80000540, 0x05000007, 0x800000cc, 0x599c100b, 0x80080400, 0x4803b000, 0x497bb002, 0x59d80001, @@ -6480,332 +6668,351 @@ static const uint32_t isp_2500_risc_code[] = { 0x4803a803, 0x6423a809, 0x4a03a804, 0x10000001, 0x59e00803, 0x82040d00, 0xfffffbff, 0x82040d40, 0x00008000, 0x4807c003, 0x800409c0, 0x05000004, - 0x6006e000, 0x0004bb27, 0x0004f33b, 0x1c01f000, - 0x05d1f91e, 0x1c01f000, 0x0501f866, 0x5c03e000, - 0x0005f0d6, 0x592c1c08, 0x820c1500, 0x000000ff, - 0x800c1910, 0x820c0c00, 0x0010de60, 0x50040800, - 0x480a5c08, 0x800409c0, 0x000600ca, 0x492fc857, - 0x480fc857, 0x800c19c0, 0x05d0090c, 0x42000800, - 0x0010de60, 0x50040800, 0x48065802, 0x0501f866, - 0x0005f0d3, 0x59980000, 0x80000540, 0x000400bb, - 0x0505f00a, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106532, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00020a36, - 0x00106524, 0x00106524, 0x00106532, 0x00106532, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00020a36, - 0x492fc857, 0x497a5805, 0x42000000, 0x0010e44f, - 0x0535fab4, 0x60000008, 0x0501f015, 0x492fc857, - 0x497a5805, 0x42000000, 0x0010e44e, 0x0535faad, + 0x6006e000, 0x0004bb5d, 0x0004f371, 0x1c01f000, + 0x05cdfe69, 0x1c01f000, 0x0501f866, 0x5c03e000, + 0x0005f0fd, 0x592c1c08, 0x820c1500, 0x000000ff, + 0x800c1910, 0x820c0c00, 0x00111dfa, 0x50040800, + 0x480a5c08, 0x800409c0, 0x000600f1, 0x492fc857, + 0x480fc857, 0x800c19c0, 0x05cc0e57, 0x42000800, + 0x00111dfa, 0x50040800, 0x48065802, 0x0501f866, + 0x0005f0fa, 0x59980000, 0x80000540, 0x000400e2, + 0x0505f0a2, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106822, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00020a6c, + 0x00106814, 0x00106814, 0x00106822, 0x00106822, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00020a6c, + 0x492fc857, 0x497a5805, 0x42000000, 0x001123f3, + 0x0535ff3f, 0x60000008, 0x0501f015, 0x492fc857, + 0x497a5805, 0x42000000, 0x001123f2, 0x0535ff38, 0x60000020, 0x0501f00e, 0x492fc857, 0x497a5805, - 0x42000000, 0x0010e44d, 0x0535faa6, 0x60000040, - 0x0501f007, 0x492fc857, 0x42000000, 0x0010e450, - 0x0535faa0, 0x60000010, 0x0501f001, 0x4803c857, + 0x42000000, 0x001123f1, 0x0535ff31, 0x60000040, + 0x0501f007, 0x492fc857, 0x42000000, 0x001123f4, + 0x0535ff2b, 0x60000010, 0x0501f001, 0x4803c857, 0x592c0c08, 0x82040d00, 0xffff80ff, 0x80040540, 0x59980801, 0x800409c0, 0x05000002, 0x8400051e, - 0x48025c08, 0x0005f9f3, 0x0501febe, 0x0001fb82, + 0x48025c08, 0x0005fa1a, 0x0501ff56, 0x0001fba8, 0x91700583, 0x6006e000, 0x05000002, 0x1c01f000, - 0x58f25802, 0x812e59c0, 0x05fe07e0, 0x05d1f887, + 0x58f25802, 0x812e59c0, 0x05fe07e0, 0x05cdfdd2, 0x60081000, 0x60000801, 0x60401800, 0x0501f004, 0x600c1000, 0x41780800, 0x60181800, 0x492fc857, 0x480bc857, 0x592c0208, 0x82000500, 0x000000ff, - 0xb00005aa, 0x05000004, 0x480e5a0a, 0x0001fb82, + 0xb00005aa, 0x05000004, 0x480e5a0a, 0x0001fba8, 0x0501f00a, 0x4d400000, 0x4c300000, 0x497a5c0c, - 0x497a5c0d, 0x400a8000, 0x05fdf8c1, 0x0001fb82, + 0x497a5c0d, 0x400a8000, 0x05fdf8b5, 0x0001fba8, 0x5c006000, 0x5c028000, 0x6006e000, 0x4a006002, - 0x00000100, 0x5832580a, 0x4978600a, 0x05d1fc1f, + 0x00000100, 0x5832580a, 0x4978600a, 0x05d1f966, 0x5c025800, 0x1c01f000, 0x492fc857, 0x80140110, - 0x05fc07b3, 0x80000040, 0x05000026, 0x4a01e007, - 0x001065a0, 0x0005f0df, 0x492fc857, 0x0535fb6d, - 0x00060220, 0x492fc856, 0x83440400, 0x0010d400, - 0x50000000, 0x80026d40, 0x0500000b, 0x592e4414, - 0x81224110, 0x59340013, 0x80000130, 0x81200580, - 0x05020005, 0x4937c857, 0x59340200, 0x8c00050e, - 0x00060220, 0x60a28000, 0x41780800, 0x417a6000, - 0x05fdf897, 0x0525f88f, 0x0001f382, 0x82000500, - 0x0f000000, 0x8000012a, 0x592c0c0e, 0x82040d00, - 0x0000ff87, 0x80040540, 0x48025c0e, 0x0005f233, - 0x492fc857, 0x592c040c, 0x80000540, 0x05fe0796, - 0x8d0c050e, 0x05020008, 0x592c020b, 0x80000540, - 0x05fc0791, 0x497a5a0a, 0x05f5fd45, 0x05020003, - 0x1c01f000, 0x60a00000, 0x48025a0a, 0x0001f382, - 0x592e8a0a, 0x592c040a, 0x4947c857, 0x4803c857, - 0x82000500, 0x000000ff, 0x6004b800, 0x90000d81, - 0x0500000e, 0x417a8800, 0x61c0b80f, 0x90000d82, - 0x0500000a, 0x80000540, 0x00020382, 0x592e8a0a, - 0x0001fb00, 0x00020382, 0x592e900c, 0x592e980d, - 0x05f9f914, 0x0001f382, 0x850e1d00, 0x0001fb00, - 0x05f809f9, 0x81468800, 0x805cb840, 0x05fe07fc, - 0x0001f382, 0x592c0a0c, 0x4807c857, 0x592e4414, - 0x81224110, 0x9004058e, 0x0500006e, 0x900405aa, - 0x05000022, 0x9004058f, 0x05000624, 0x900405ae, - 0x05000622, 0xb0040589, 0x05000620, 0x4c040000, - 0x0501fd7d, 0x5c000800, 0x05020620, 0xb0040586, - 0x0500007f, 0xb0040585, 0x0500002c, 0x900405a9, - 0x0502061a, 0x592e8a0a, 0x42026800, 0x00110210, - 0x83440580, 0x0000ffff, 0x05000006, 0x05f9fc8e, - 0x0502060e, 0x59340200, 0x84000518, 0x48026a00, - 0x592e600d, 0x4933c857, 0x83300580, 0xffffffff, - 0x05020070, 0x0501f605, 0x83200580, 0x000000ff, - 0x05000008, 0x83200400, 0x0010d17b, 0x50024800, - 0x59240a00, 0x84040d16, 0x48064a00, 0x0501f5fb, - 0x42024800, 0x0010e512, 0x0535faf2, 0x59240200, - 0x8c000500, 0x05000004, 0x59240200, 0x84000516, - 0x48024a00, 0x91264c0d, 0x8058b040, 0x05fe07f8, - 0x850e1d04, 0x0501f5ed, 0x592c140b, 0x480bc857, - 0x0525fb49, 0x411e6000, 0x05020003, 0x4803c856, - 0x0501f5ea, 0x59300c07, 0x90040584, 0x05000003, - 0x4803c856, 0x0501f5e5, 0x592c020b, 0x8c000506, - 0x05000009, 0x050dfef6, 0x4df00000, 0x050dfdf7, - 0x050dfbc0, 0x5c03e000, 0x050c0ee2, 0x0515fdad, - 0x0501f5d6, 0x592e380d, 0x591c1416, 0x8c080516, - 0x050005d6, 0x59300009, 0x800001c0, 0x05ce0faf, - 0x84081554, 0x480a3c16, 0x64ea6403, 0x592c040f, - 0x80000540, 0x05000006, 0x64ee6403, 0x592c0415, - 0x4802641c, 0x592c0215, 0x4802621c, 0x64066203, - 0x42000800, 0x80000040, 0x0501fdcb, 0x05000003, - 0x492e6009, 0x0005f6ab, 0x0005feab, 0x0501f5bb, - 0x83200d80, 0x000000ff, 0x05000010, 0x42000000, - 0x0010e511, 0x50000000, 0x81200480, 0x050211c1, - 0x83200400, 0x0010d17b, 0x50024800, 0x59240200, - 0x8c000500, 0x050001bb, 0x59240206, 0x84000510, - 0x48024a06, 0x0501f5a9, 0x42024800, 0x0010e512, - 0x0535faa0, 0x59240200, 0x8c000500, 0x05000004, - 0x59240206, 0x84000510, 0x48024a06, 0x91264c0d, - 0x8058b040, 0x05fe07f8, 0x0501f59c, 0x592c120b, - 0x8c080500, 0x05020599, 0x592e8a0a, 0x592e600d, - 0x0525fafe, 0x05020003, 0x4803c856, 0x0501f597, + 0x05fc07b3, 0x80000040, 0x05000023, 0x4a01e007, + 0x0010688d, 0x0005f106, 0x492fc857, 0x0535fff8, + 0x00060249, 0x492fc856, 0x0001fb08, 0x0502000b, + 0x592e4414, 0x81224110, 0x59340013, 0x80000130, + 0x81200580, 0x05020005, 0x4937c857, 0x59340200, + 0x8c00050e, 0x00060249, 0x60a28000, 0x41780800, + 0x417a6000, 0x05fdf88e, 0x0525fb3b, 0x0001f3a8, + 0x82000500, 0x0f000000, 0x8000012a, 0x592c0c0e, + 0x82040d00, 0x0000ff87, 0x80040540, 0x48025c0e, + 0x0005f25f, 0x492fc857, 0x592c040c, 0x80000540, + 0x05fe0799, 0x8d0c050e, 0x05020008, 0x592c020b, + 0x80000540, 0x05fc0794, 0x497a5a0a, 0x05f5fc4f, + 0x05020003, 0x1c01f000, 0x60a00000, 0x48025a0a, + 0x0001f3a8, 0x592e8a0a, 0x592c040a, 0x4947c857, + 0x4803c857, 0x82000500, 0x000000ff, 0x6004b800, + 0x90000d81, 0x0500000e, 0x417a8800, 0x59a8b8ac, + 0x90000d82, 0x0500000a, 0x80000540, 0x000203a8, + 0x592e8a0a, 0x0001fb08, 0x000203a8, 0x592e900c, + 0x592e980d, 0x05f9f88d, 0x0001f3a8, 0x850e1d00, + 0x0001fb08, 0x05f80976, 0x81468800, 0x83440580, + 0x000007f0, 0x05020002, 0x60028810, 0x805cb840, + 0x05fe07f8, 0x0001f3a8, 0x592c0a0c, 0x4807c857, + 0x592e4414, 0x81224110, 0x9004058e, 0x05000074, + 0x900405aa, 0x05000028, 0x9004058f, 0x050006bb, + 0x900405ae, 0x050006b9, 0xb0040589, 0x050006b7, + 0x4c040000, 0x0501fdf4, 0x5c000800, 0x05000007, + 0x812649c0, 0x050006b5, 0x592c020a, 0x82000580, + 0x000007fe, 0x050206b1, 0xb0040586, 0x0500007f, + 0xb0040585, 0x0500002c, 0x900405a9, 0x050206ab, + 0x592e8a0a, 0x42026800, 0x001141b4, 0x83440580, + 0x0000ffff, 0x05000006, 0x05f9fc60, 0x0502069f, + 0x59340200, 0x84000518, 0x48026a00, 0x592e600d, + 0x4933c857, 0x83300580, 0xffffffff, 0x05020070, + 0x0501f696, 0x83200580, 0x000000ff, 0x05000008, + 0x83200400, 0x0010d8f9, 0x50024800, 0x59240a00, + 0x84040d16, 0x48064a00, 0x0501f68c, 0x42024800, + 0x001124b6, 0x0535ff76, 0x59240200, 0x8c000500, + 0x05000004, 0x59240200, 0x84000516, 0x48024a00, + 0x91264c0d, 0x8058b040, 0x05fe07f8, 0x850e1d04, + 0x0501f67e, 0x592c140b, 0x480bc857, 0x0525fdee, + 0x411e6000, 0x05020003, 0x4803c856, 0x0501f67b, 0x59300c07, 0x90040584, 0x05000003, 0x4803c856, - 0x0501f592, 0x59300a03, 0x90040587, 0x05000003, - 0x4803c856, 0x0501f58d, 0x59300c03, 0x90040581, - 0x0500001b, 0x90040582, 0x0500000e, 0x90040588, - 0x05000010, 0x9004058a, 0x05000005, 0x9004058c, - 0x05020021, 0x60240800, 0x0501f01e, 0x5932680a, - 0x05f9fbba, 0x0502001c, 0x60140800, 0x0501f019, - 0x417a7800, 0x05ddfca7, 0x64066407, 0x0501f006, - 0x592c120b, 0x8c08050e, 0x05000003, 0x0535facb, - 0x05020018, 0x600c0800, 0x0501f00e, 0x83340580, - 0x00110210, 0x05020007, 0x5930000a, 0x82000580, - 0x00110210, 0x05020569, 0x64066407, 0x0501f006, - 0x417a7800, 0x05ddfc93, 0x64066407, 0x602c0800, - 0x05f5fe51, 0x64066203, 0x0501fd67, 0x05000003, - 0x492e6009, 0x050df1d0, 0x050df9cf, 0x0501f557, - 0x64266403, 0x592c0215, 0x4802621c, 0x592c0415, - 0x4802641c, 0x05fdf7f4, 0x59300416, 0x8c000518, - 0x053203ff, 0x0501f097, 0x40000800, 0x58040000, - 0x80000540, 0x05fe07fd, 0x492c0800, 0x1c01f000, - 0x492fc857, 0x59300c07, 0x90040586, 0x0502008a, - 0x59340400, 0x82000580, 0x00000606, 0x05020004, - 0x59340200, 0x8c00051a, 0x000402b8, 0x59340200, - 0x8c00050e, 0x05000080, 0x59300203, 0x60067800, - 0x90000587, 0x000602b8, 0x640a6203, 0x0005f2b8, - 0x600a8000, 0x64526006, 0x4d2c0000, 0x052dfe56, + 0x0501f676, 0x592c020b, 0x8c000506, 0x05000009, + 0x0511f8bd, 0x4df00000, 0x050dffbd, 0x050dfd82, + 0x5c03e000, 0x051008a9, 0x0515ffcb, 0x0501f667, + 0x592e380d, 0x591c1416, 0x8c080516, 0x05000667, + 0x59300009, 0x800001c0, 0x05ce0cf3, 0x84081554, + 0x480a3c16, 0x64ea6403, 0x592c040f, 0x80000540, + 0x05000006, 0x64ee6403, 0x592c0415, 0x4802641c, + 0x592c0215, 0x4802621c, 0x64066203, 0x42000800, + 0x80000040, 0x0501fe5c, 0x05000003, 0x492e6009, + 0x0005f6e2, 0x0005fee2, 0x0501f64c, 0x83200d80, + 0x000000ff, 0x05000010, 0x42000000, 0x001124b5, + 0x50000000, 0x81200480, 0x050211dd, 0x83200400, + 0x0010d8f9, 0x50024800, 0x59240200, 0x8c000500, + 0x050001d7, 0x59240206, 0x84000510, 0x48024a06, + 0x0501f63a, 0x42024800, 0x001124b6, 0x0535ff24, + 0x59240200, 0x8c000500, 0x05000004, 0x59240206, + 0x84000510, 0x48024a06, 0x91264c0d, 0x8058b040, + 0x05fe07f8, 0x0501f62d, 0x592c120b, 0x8c080500, + 0x0502062a, 0x592e8a0a, 0x592e600d, 0x0525fda3, + 0x05020003, 0x4803c856, 0x0501f628, 0x59300c07, + 0x90040584, 0x05000003, 0x4803c856, 0x0501f623, + 0x59300a03, 0x90040587, 0x05000003, 0x4803c856, + 0x0501f61e, 0x83440580, 0x000007fe, 0x05020007, + 0x59240200, 0x82000500, 0x00000180, 0x05000003, + 0x0009f810, 0x0501f611, 0x59300c03, 0x90040581, + 0x05000021, 0x90040582, 0x05000014, 0x90040588, + 0x05000016, 0x9004058a, 0x05000005, 0x9004058c, + 0x05020027, 0x60240800, 0x0501f024, 0x592c0a0b, + 0x8c040510, 0x05000004, 0x48066216, 0x592c0816, + 0x4806601e, 0x5932680a, 0x05f9fb7d, 0x0502001c, + 0x60140800, 0x0501f019, 0x417a7800, 0x05ddfa38, + 0x64066407, 0x0501f006, 0x592c120b, 0x8c08050e, + 0x05000003, 0x0535ff40, 0x05020018, 0x600c0800, + 0x0501f00e, 0x83340580, 0x001141b4, 0x05020007, + 0x5930000a, 0x82000580, 0x001141b4, 0x050205eb, + 0x64066407, 0x0501f006, 0x417a7800, 0x05ddfa24, + 0x64066407, 0x602c0800, 0x05f5fd5e, 0x64066203, + 0x0501fde9, 0x05000003, 0x492e6009, 0x050df383, + 0x050dfb82, 0x0501f5d9, 0x64266403, 0x592c0215, + 0x4802621c, 0x592c0415, 0x4802641c, 0x05fdf7f4, + 0x59300416, 0x8c000518, 0x05360043, 0x0501f09c, + 0x40000800, 0x58040000, 0x80000540, 0x05fe07fd, + 0x492c0800, 0x1c01f000, 0x492fc857, 0x59300c07, + 0x90040586, 0x0502008f, 0x59340400, 0x82000580, + 0x00000606, 0x05020004, 0x59340200, 0x8c00051a, + 0x000402ed, 0x59340200, 0x8c00050e, 0x05000085, + 0x59300203, 0x60067800, 0x90000587, 0x000602ed, + 0x640a6203, 0x0005f2ed, 0x0501feda, 0x05020068, + 0x600a8000, 0x64526006, 0x4d2c0000, 0x0531fa4b, 0x5c025800, 0x59300c07, 0x4807c857, 0x90040587, - 0x0502005f, 0x492fc857, 0x64065a0a, 0x0001f382, - 0x83300580, 0xffffffff, 0x05020059, 0x592c240e, + 0x05020062, 0x492fc857, 0x64065a0a, 0x0001f3a8, + 0x83300580, 0xffffffff, 0x0502005c, 0x592c240e, 0x492fc857, 0x4813c857, 0x8c10051c, 0x05020017, - 0x8c10051a, 0x05000003, 0x8c10050a, 0x05000065, + 0x8c10051a, 0x05000003, 0x8c10050a, 0x05000068, 0x59340a00, 0x8c04050e, 0x05000003, 0x8c10051e, - 0x05000060, 0x0005ffbf, 0x05000068, 0x592c240e, + 0x05000063, 0x0005fff6, 0x05000098, 0x592c240e, 0x59243a00, 0x592c0210, 0x48026202, 0x4936600a, 0x4926601d, 0x4932580d, 0x4a026007, 0x00068000, - 0x641e6203, 0x0005f2b3, 0x592c0a10, 0x4c040000, - 0x05f9fe24, 0x5c000800, 0x05020073, 0x58080000, + 0x641e6203, 0x0005f2e8, 0x592c0a10, 0x4c040000, + 0x05f9fdf1, 0x5c000800, 0x05020076, 0x58080000, 0x49781000, 0x802041c0, 0x05000006, 0x48004000, 0x80000540, 0x05020007, 0x48226810, 0x0501f005, 0x4802680f, 0x80000540, 0x05020002, 0x497a6810, - 0x4d2c0000, 0x400a5800, 0x640a5a0a, 0x0001fb82, - 0x5c025800, 0x05fdf7c8, 0x8c10051c, 0x000602a4, - 0x0501f020, 0x4c100000, 0x05f9fb6b, 0x5c002000, - 0x0004027a, 0x42000000, 0x0010e511, 0x50000000, - 0x81200480, 0x0502102c, 0x8c10051c, 0x05000015, + 0x4d2c0000, 0x400a5800, 0x640a5a0a, 0x0001fba8, + 0x5c025800, 0x05fdf7c8, 0x8c10051c, 0x000602da, + 0x0501f020, 0x4c100000, 0x05f9fb2c, 0x5c002000, + 0x000402b0, 0x42000000, 0x001124b5, 0x50000000, + 0x81200480, 0x0502102f, 0x8c10051c, 0x05000015, 0x592c020a, 0x82000580, 0x0000ffff, 0x05020011, 0x592e600d, 0x83300580, 0xffffffff, 0x05fc07b2, - 0x0525ff87, 0x0502000e, 0x592c2210, 0x59300202, - 0x80100580, 0x0502000a, 0x59300009, 0x800001c0, - 0x05020004, 0x59300203, 0x90000587, 0x05fc079d, - 0x492fc857, 0x64a65a0a, 0x0001f382, 0x492fc857, - 0x64225a0a, 0x0001f382, 0x4803c857, 0x8c000514, - 0x05000007, 0x42000000, 0x0010e439, 0x0535f8a5, - 0x492fc857, 0x492e6009, 0x1c01f000, 0x492fc857, - 0x65165a0a, 0x0001f382, 0x492fc857, 0x64aa5a0a, - 0x0001f382, 0x492fc857, 0x64a25a0a, 0x0001f382, - 0x492fc857, 0x641a5a0a, 0x0001f382, 0x492fc857, - 0x643a5a0a, 0x0001f382, 0x90040587, 0x05fe07e4, - 0x640a5a0a, 0x0001f382, 0x05f9fe7a, 0x05020006, - 0x42000000, 0x0010e445, 0x0535f88a, 0x0529fb00, - 0x05fe0793, 0x592c040a, 0x800000c2, 0x800008c4, - 0x80040400, 0x48025807, 0x59340010, 0x492e6810, - 0x492fc857, 0x80000d40, 0x05000003, 0x492c0800, - 0x1c01f000, 0x59340203, 0x492e680f, 0x492fc857, - 0x4803c857, 0x80000540, 0x05020002, 0x64066a03, - 0x1c01f000, 0x59a8003b, 0x81640480, 0x05fe1766, - 0x42026000, 0x00111b00, 0x59300407, 0x90000586, - 0x05020007, 0x5930000a, 0x81340580, 0x05020004, - 0x59300202, 0x80040580, 0x05fc0752, 0x91326430, - 0x41580000, 0x81300480, 0x05fc17f4, 0x05fdf756, - 0x492fc857, 0x592e4414, 0x81224110, 0x0501fbda, - 0x05020052, 0x0501fac2, 0x05020050, 0x592c0208, - 0x80000112, 0x05fe05a6, 0x592e8a0a, 0x05f9faf2, - 0x0502004a, 0x05f9fa9c, 0x0502004a, 0x592e780e, - 0x493fc857, 0x8d3c053e, 0x05020005, 0x8d0c050e, - 0x05020042, 0x05f9f83a, 0x05fc05a7, 0x913c1d1f, - 0x05fc05a5, 0x592c020b, 0x82000c80, 0x00001000, - 0x05fe15a1, 0x800000c2, 0x800008c4, 0x8005d400, - 0x592e900c, 0x592e980d, 0x5934080d, 0x800409c0, - 0x05000004, 0x58041805, 0x800c19c0, 0x0502002b, - 0x913c1d1f, 0x81780040, 0x80000000, 0x800c1902, - 0x05fe17fe, 0x05fe0590, 0x0c01f001, 0x001067b0, - 0x001067b2, 0x001067bb, 0x001067bd, 0x001067bf, - 0x0521fd28, 0x0501f019, 0x05f5fff3, 0x0500001d, - 0x80e9d1c0, 0x05060f18, 0x60168000, 0x417a9000, - 0x417a9800, 0x0521fd2b, 0x0501f010, 0x61367000, - 0x0501f004, 0x613a7000, 0x0501f002, 0x614a7000, - 0x5934080d, 0x800409c0, 0x05000006, 0x4d3c0000, - 0x40067800, 0x05f5ffc4, 0x5c027800, 0x05000007, - 0x05f5fed1, 0x05220d49, 0x05000006, 0x8d3c053e, - 0x0502000a, 0x1c01f000, 0x64c25a0a, 0x0501f009, - 0x64b25a0a, 0x0501f007, 0x64a25a0a, 0x0501f005, - 0x64a65a0a, 0x0501f003, 0x497a580d, 0x64025a0a, - 0x4a025a08, 0x00000103, 0x0001f382, 0x492fc857, - 0x80140110, 0x80000040, 0x05000002, 0x05fdf54c, - 0x0501fa6a, 0x0502001e, 0x592c020b, 0x82000500, - 0x00003fff, 0x48025a0b, 0x8c000506, 0x05000003, - 0xb0000530, 0x05020003, 0x8d0c050e, 0x05020014, - 0x4a025a0a, 0x0000dead, 0x592c040c, 0x82000500, - 0x0000f0ff, 0x48025c0c, 0x05f5fb29, 0x05020002, - 0x1c01f000, 0x49425a0a, 0x8058b1c0, 0x05000007, - 0x0525fb22, 0x0501f80a, 0x44042800, 0x90580582, - 0x05020002, 0x48082801, 0x0001f382, 0x60c68000, - 0x60040800, 0x6004b000, 0x05fdf7f3, 0x592c040c, - 0x80000118, 0x912c2c0d, 0x80142c00, 0x1c01f000, - 0x492fc857, 0x641a5a0c, 0x0001f382, 0x492fc857, - 0x64065a0c, 0x0001f382, 0x492fc857, 0x592e7c0a, - 0x833c0500, 0xfffffffe, 0x05020044, 0x592c400b, - 0x42026000, 0x00111b00, 0x41581800, 0x400c0000, - 0x81300480, 0x05021028, 0x59300203, 0x90000580, - 0x0500000c, 0x59300009, 0x80000d40, 0x05000009, - 0x58043003, 0x58183211, 0x592c020c, 0x80180580, - 0x05020004, 0x58040009, 0x80200580, 0x05000003, - 0x91326430, 0x05fdf7ee, 0x58040208, 0x82000500, - 0x000000ff, 0xb0000d93, 0x0500000d, 0xb0000d88, - 0x0500000b, 0x90000d98, 0x05000009, 0x90000da9, - 0x05000007, 0x90000d94, 0x05000005, 0xb00005a8, - 0x05000003, 0x90000582, 0x05fe07ee, 0x4d2c0000, - 0x051dffd9, 0x5c025800, 0x05000018, 0x64025a0a, - 0x0001f382, 0x592e8a0a, 0x83440480, 0x000007f0, - 0x05021012, 0x83440400, 0x0010d400, 0x50000000, - 0x80026d40, 0x0500000d, 0x4d2c0000, 0x05f5ff16, - 0x05000009, 0x60168000, 0x592c0a0c, 0x417a6000, - 0x05f9fddb, 0x0521fdd8, 0x0001fb82, 0x5c025800, - 0x05fdf7eb, 0x5c025800, 0x64c65a0a, 0x0001f382, - 0x492fc857, 0x592c020a, 0x90000586, 0x05000003, - 0x0501f9ee, 0x05020019, 0x4d2c0000, 0x05d1f923, - 0x05000011, 0x492fc857, 0x412f4000, 0x05d1f91f, - 0x0500000b, 0x492fc857, 0x412dd800, 0x05f1f84e, - 0x05f1f85d, 0x49a1d80b, 0x5c025800, 0x492dd80a, - 0x48ef4006, 0x05e1f8ea, 0x05e1f101, 0x41a25800, - 0x05d1f922, 0x5c025800, 0x4a025a0a, 0x00004005, - 0x640a5c0a, 0x0001f382, 0x4a025a0a, 0x00004001, - 0x0001f382, 0x4807c857, 0x485fc857, 0x6004b800, - 0x5c000800, 0x4c5c0000, 0x0501f005, 0x4807c857, - 0x485fc857, 0x5c000800, 0x4d780000, 0x4803c857, - 0x492fc857, 0x8c00050e, 0x05ce0d4d, 0x4203e000, - 0x50000000, 0x600cb900, 0x05cdf554, 0x492fc857, - 0x4c5c0000, 0x4c600000, 0x4c640000, 0x4d040000, - 0x4d2c0000, 0x4d200000, 0x4d240000, 0x4c540000, - 0x4c500000, 0x4c580000, 0x417a4000, 0x59a800d1, - 0x90000506, 0x05020141, 0x0501f9a2, 0x05020143, - 0x916c0580, 0x0500013d, 0x592cca0b, 0x592cc40b, - 0x8060c1c0, 0x0500013d, 0x42000000, 0x0010e511, - 0x50000000, 0x4c000000, 0x0535f86f, 0x5c000000, - 0x05000002, 0x80000000, 0x80600480, 0x05021133, + 0x0529fa25, 0x05020011, 0x592c2210, 0x59300202, + 0x80100580, 0x0502000d, 0x59300009, 0x800001c0, + 0x05020004, 0x59300203, 0x90000587, 0x05fc079b, + 0x492fc857, 0x64a65a0a, 0x0001f3a8, 0x42000000, + 0x001123eb, 0x0535fd1e, 0x492fc857, 0x64225a0a, + 0x0001f3a8, 0x4803c857, 0x8c000514, 0x05000007, + 0x42000000, 0x001123da, 0x0535fd15, 0x492fc857, + 0x492e6009, 0x1c01f000, 0x492fc857, 0x65165a0a, + 0x0001f3a8, 0x492fc857, 0x64aa5a0a, 0x0001f3a8, + 0x492fc857, 0x64a25a0a, 0x0001f3a8, 0x492fc857, + 0x641a5a0a, 0x0001f3a8, 0x492fc857, 0x643a5a0a, + 0x0001f3a8, 0x90040587, 0x05fe07e4, 0x640a5a0a, + 0x0001f3a8, 0x05f9fe49, 0x05020006, 0x42000000, + 0x001123e7, 0x0535fcfa, 0x0529fea8, 0x05fe0790, + 0x592c040a, 0x800000c2, 0x800008c4, 0x80040400, + 0x48025807, 0x59340010, 0x492e6810, 0x492fc857, + 0x80000d40, 0x05000003, 0x492c0800, 0x1c01f000, + 0x59340203, 0x492e680f, 0x492fc857, 0x4803c857, + 0x80000540, 0x05020002, 0x64066a03, 0x1c01f000, + 0x59a8003d, 0x81640480, 0x05fe1763, 0x40be6000, + 0x59300407, 0x90000586, 0x05020007, 0x5930000a, + 0x81340580, 0x05020004, 0x59300202, 0x80040580, + 0x05fc074e, 0x91326430, 0x41580000, 0x81300480, + 0x05fc17f4, 0x05fdf754, 0x05f1fb10, 0x05fe07d2, + 0x59a8029f, 0x80000104, 0x81640480, 0x05fc17ce, + 0x0515fe8c, 0x05fdf762, 0x492fc857, 0x592e4414, + 0x81224110, 0x0501fc30, 0x05020052, 0x0501fb18, + 0x05020050, 0x592c0208, 0x80000112, 0x05fe0584, + 0x592e8a0a, 0x05f9faa9, 0x0502004a, 0x05f9fa53, + 0x0502004a, 0x592e780e, 0x493fc857, 0x8d3c053e, + 0x05020005, 0x8d0c050e, 0x05020042, 0x05f5ff92, + 0x05fc0585, 0x913c1d1f, 0x05fc0583, 0x592c020b, + 0x82000c80, 0x00001000, 0x05fe157f, 0x800000c2, + 0x800008c4, 0x8005d400, 0x592e900c, 0x592e980d, + 0x5934080d, 0x800409c0, 0x05000004, 0x58041805, + 0x800c19c0, 0x0502002b, 0x913c1d1f, 0x81780040, + 0x80000000, 0x800c1902, 0x05fe17fe, 0x05fe056e, + 0x0c01f001, 0x00106ac2, 0x00106ac4, 0x00106acd, + 0x00106acf, 0x00106ad1, 0x0521ffaf, 0x0501f019, + 0x05f5ff4b, 0x0500001d, 0x80e9d1c0, 0x050a0820, + 0x60168000, 0x417a9000, 0x417a9800, 0x0521ffb2, + 0x0501f010, 0x61367000, 0x0501f004, 0x613a7000, + 0x0501f002, 0x614a7000, 0x5934080d, 0x800409c0, + 0x05000006, 0x4d3c0000, 0x40067800, 0x05f5ff1c, + 0x5c027800, 0x05000007, 0x05f5fe25, 0x05220fd0, + 0x05000006, 0x8d3c053e, 0x0502000a, 0x1c01f000, + 0x64c25a0a, 0x0501f009, 0x64b25a0a, 0x0501f007, + 0x64a25a0a, 0x0501f005, 0x64a65a0a, 0x0501f003, + 0x497a580d, 0x64025a0a, 0x4a025a08, 0x00000103, + 0x0001f3a8, 0x492fc857, 0x80140110, 0x80000040, + 0x05000002, 0x05fdf52a, 0x0501fac0, 0x0502001f, + 0x592c020b, 0x82000500, 0x00003fff, 0x48025a0b, + 0x8c000506, 0x05000003, 0xb0000530, 0x05020003, + 0x8d0c050e, 0x05020015, 0x4a025a0a, 0x0000dead, + 0x592c040c, 0x82000500, 0x0000f0ff, 0x48025c0c, + 0x05f5fa16, 0x05020002, 0x1c01f000, 0x49425a0a, + 0x8058b1c0, 0x05000008, 0x0525fdb6, 0x0501f80b, + 0x44042800, 0x8058b040, 0x05000003, 0x48082801, + 0x480c2802, 0x0001f3a8, 0x60c68000, 0x60040800, + 0x6004b000, 0x05fdf7f2, 0x592c040c, 0x80000118, + 0x912c2c0d, 0x80142c00, 0x1c01f000, 0x492fc857, + 0x641a5a0c, 0x0001f3a8, 0x492fc857, 0x64065a0c, + 0x0001f3a8, 0x492fc857, 0x592e7c0a, 0x833c0500, + 0xfffffffe, 0x05020046, 0x592c400b, 0x40be6000, + 0x41581800, 0x400c0000, 0x81300480, 0x0502102a, + 0x59300203, 0x90000580, 0x0500000c, 0x59300009, + 0x80000d40, 0x05000009, 0x58043003, 0x58183211, + 0x592c020c, 0x80180580, 0x05020004, 0x58040009, + 0x80200580, 0x05000003, 0x91326430, 0x05fdf7ee, + 0x58040208, 0x82000500, 0x000000ff, 0xb0000d93, + 0x0500000d, 0xb0000d88, 0x0500000b, 0x90000d98, + 0x05000009, 0x90000da9, 0x05000007, 0x90000d94, + 0x05000005, 0xb00005a8, 0x05000003, 0x90000582, + 0x05fe07ee, 0x050dfe84, 0x4d2c0000, 0x0521fa38, + 0x5c025800, 0x0500001a, 0x050dfe70, 0x64025a0a, + 0x0001f3a8, 0x592e8a0a, 0x83440c80, 0x000007f0, + 0x05001004, 0x83440c80, 0x00000800, 0x05001010, + 0x0001fb08, 0x0502000e, 0x4d2c0000, 0x592c400b, + 0x05f5fe6b, 0x05000009, 0x60168000, 0x592c0a0c, + 0x417a6000, 0x05f9fdaa, 0x0525f85c, 0x0001fba8, + 0x5c025800, 0x05fdf7ea, 0x5c025800, 0x050dfe57, + 0x64c65a0a, 0x0001f3a8, 0x492fc857, 0x592c020a, + 0x90000586, 0x05000003, 0x0501fa40, 0x05020019, + 0x4d2c0000, 0x05cdfe44, 0x05000011, 0x492fc857, + 0x412f4000, 0x05cdfe40, 0x0500000b, 0x492fc857, + 0x412dd800, 0x05edfedb, 0x05edfeea, 0x49a1d80b, + 0x5c025800, 0x492dd80a, 0x48ef4006, 0x05ddfe7c, + 0x05ddf693, 0x41a25800, 0x05cdfe43, 0x5c025800, + 0x4a025a0a, 0x00004005, 0x640a5c0a, 0x0001f3a8, + 0x4a025a0a, 0x00004001, 0x0001f3a8, 0x4807c857, + 0x485fc857, 0x6004b800, 0x5c000800, 0x4c5c0000, + 0x0501f005, 0x4807c857, 0x485fc857, 0x5c000800, + 0x4d780000, 0x4803c857, 0x492fc857, 0x8c00050e, + 0x05ce0a72, 0x4203e000, 0x50000000, 0x600cb900, + 0x05cdf279, 0x492fc857, 0x4c5c0000, 0x4c600000, + 0x4c640000, 0x4d040000, 0x4d2c0000, 0x4d200000, + 0x4d240000, 0x4c540000, 0x4c500000, 0x4c580000, + 0x80ddb9c0, 0x0500000d, 0x48dfc857, 0x58dc7802, + 0x58dcb803, 0x58dcc004, 0x58dcc805, 0x4867c857, + 0x58de0806, 0x4907c857, 0x58de4007, 0x58de4808, + 0x4c3c0000, 0x0501f121, 0x417a4000, 0x59a800d6, + 0x90000506, 0x05020159, 0x0501f9e6, 0x0502015b, + 0x916c0580, 0x05000155, 0x592cca0b, 0x592cc40b, + 0x8060c1c0, 0x05000155, 0x42000000, 0x001124b5, + 0x50000000, 0x4c000000, 0x0535fcc6, 0x5c000000, + 0x05000002, 0x80000000, 0x80600480, 0x0502114b, 0x912c7c0c, 0x592c040a, 0x4803c857, 0x8c000500, - 0x05000004, 0x0535f864, 0x0500012c, 0x0501f002, + 0x05000004, 0x0535fcbb, 0x05000144, 0x0501f002, 0x60064000, 0x60060800, 0x4200b800, 0xffffffff, 0x83200580, 0x000000e1, 0x05020003, 0x4200b800, 0x3fffffff, 0x503c0000, 0x805cbd00, 0x05020003, - 0x91224420, 0x0501f00f, 0x805cb902, 0x05021009, - 0x83200400, 0x0010d17b, 0x50024800, 0x90640580, - 0x05000010, 0x8c640506, 0x05020095, 0x0501f113, - 0x81060800, 0x81224000, 0x910404a1, 0x05fc17f3, - 0x803c7800, 0x83200480, 0x00000100, 0x05fc17e2, - 0x61fa4001, 0x8060c1c0, 0x05020108, 0x0501f0df, - 0x59240a00, 0x0535f84d, 0x05000004, 0x8c040500, - 0x05020102, 0x0501f004, 0x90040d03, 0x90040d83, - 0x050000fe, 0x59240c00, 0x8c04050a, 0x05020004, - 0x8d0c0520, 0x050000f9, 0x0501f003, 0x8c040508, - 0x050000f6, 0x4c3c0000, 0x4d3c0000, 0x4d300000, - 0x600a78a0, 0x417a6000, 0x05ddfd77, 0x5c026000, - 0x5c027800, 0x59240206, 0x82000500, 0xfffffcff, - 0x48024a06, 0x60040800, 0x05ddff3f, 0x05020004, - 0x4a024a00, 0x00008005, 0x0501f002, 0x64164a00, - 0x5c007800, 0x05f9ffb1, 0x0502005a, 0x59a80249, - 0x82000500, 0x00000082, 0x82000d80, 0x00000082, - 0x05000050, 0x8c00050e, 0x05020052, 0x916c0583, - 0x05020050, 0x05ddff08, 0x050000cb, 0x0501f04d, - 0x05f1fa07, 0x05000047, 0x592c1214, 0x480bc857, - 0x8c080500, 0x05000043, 0x41780800, 0x8c080504, - 0x05000004, 0x592c0815, 0x82040d00, 0xff000000, - 0x592c0414, 0x4803c857, 0x8c080502, 0x05020003, - 0x82000500, 0x00001fff, 0x80040540, 0x4803c857, - 0x4802480b, 0x82001500, 0x00001fff, 0x05ddfe0a, - 0x60203000, 0x050000b0, 0x592c0414, 0x82000d00, - 0x00001fff, 0x0501fba1, 0x0500002a, 0x8c00050a, - 0x60243000, 0x050200a8, 0x412cb800, 0x05d1f853, - 0x601c3000, 0x050000a4, 0x905ca408, 0x912cac08, - 0x6040b000, 0x0531ff72, 0x592c0408, 0x84000554, - 0x48025c08, 0x81040040, 0x82000c00, 0x0010d15b, - 0x50040800, 0x405c0000, 0x803c0480, 0x05001096, - 0x812c7c00, 0x503c0000, 0x80040580, 0x44007800, - 0x80600040, 0x48025c0b, 0x4d2c0000, 0x05d1f83b, - 0x412c0800, 0x5c025800, 0x601c3000, 0x0500008a, - 0x4806480c, 0x5924000b, 0x48000802, 0x412c0800, - 0x05ddfe41, 0x601c3000, 0x05000083, 0x0501f06f, - 0x4c3c0000, 0x05ddfcb9, 0x5c007800, 0x05000085, - 0x81060800, 0x81224000, 0x8060c040, 0x05fe0767, - 0x05f9ff52, 0x05020059, 0x0501f064, 0x59240a00, - 0x8c040500, 0x0500007d, 0x05f1f9b1, 0x05000014, - 0x592c1214, 0x8c080500, 0x05000011, 0x592c1414, - 0x82081500, 0x00001fff, 0x5924000b, 0x82000500, - 0x00001fff, 0x80080580, 0x60203000, 0x05020066, - 0x8c04051e, 0x05000006, 0x4c040000, 0x05ddfe67, - 0x5c000800, 0x82040d00, 0xffff7f1f, 0x4c3c0000, - 0x4c040000, 0x82040d00, 0xffffdffc, 0x84040d44, - 0x48064a00, 0x0531ff98, 0x05000012, 0x59240200, - 0x8c00051e, 0x0500000f, 0x8400051e, 0x48024a00, - 0x600c0800, 0x05ddfeb0, 0x05000007, 0x4813c857, - 0x4817c857, 0x58100200, 0x8400055e, 0x48002200, - 0x0501f004, 0x59a80249, 0x8400050e, 0x48035249, - 0x5c000800, 0x5c007800, 0x8c640502, 0x05020016, - 0x4c3c0000, 0x59240c08, 0x05d9f96b, 0x4c5c0000, - 0x4d3c0000, 0x600a78a0, 0x4d300000, 0x417a6000, - 0x05ddfcc9, 0x5c026000, 0x5c027800, 0x497a480b, - 0x5c00b800, 0x5c007800, 0x81060800, 0x81224000, - 0x8060c040, 0x05fe071d, 0x90640589, 0x0500000f, - 0x0501f01a, 0x916c0584, 0x05fc07ea, 0x90040d03, - 0x90040d83, 0x05fe07e7, 0x4c3c0000, 0x0501f839, + 0x91224420, 0x0501f010, 0x805cb902, 0x05021009, + 0x83200400, 0x0010d8f9, 0x50024800, 0x90640580, + 0x05000011, 0x8c640506, 0x05020096, 0x0501f12b, + 0x910404a1, 0x05021004, 0x81060800, 0x81224000, + 0x05fdf7f2, 0x803c7800, 0x83200480, 0x00000100, + 0x05fc17e1, 0x61fa4001, 0x8060c1c0, 0x0502011f, + 0x0501f0f6, 0x59240a00, 0x0535fca3, 0x05000004, + 0x8c040500, 0x05020119, 0x0501f004, 0x90040d03, + 0x90040d83, 0x05000115, 0x59240c00, 0x8c04050a, + 0x05020004, 0x8d0c0520, 0x05000110, 0x0501f003, + 0x8c040508, 0x0500010d, 0x4c3c0000, 0x4d3c0000, + 0x4d300000, 0x600a78a0, 0x417a6000, 0x05ddfaf8, + 0x5c026000, 0x5c027800, 0x59240206, 0x82000500, + 0xfffffcff, 0x48024a06, 0x60040800, 0x05ddfcc2, + 0x05020004, 0x4a024a00, 0x00008005, 0x0501f002, + 0x64164a00, 0x5c007800, 0x05f9ff76, 0x0502005a, + 0x59a8024c, 0x82000500, 0x00000082, 0x82000d80, + 0x00000082, 0x05000050, 0x8c00050e, 0x05020052, + 0x916c0583, 0x05020050, 0x05ddfc8b, 0x050000e2, + 0x0501f04d, 0x05f1f888, 0x05000047, 0x592c1214, + 0x480bc857, 0x8c080500, 0x05000043, 0x41780800, + 0x8c080504, 0x05000004, 0x592c0815, 0x82040d00, + 0xff000000, 0x592c0414, 0x4803c857, 0x8c080502, + 0x05020003, 0x82000500, 0x00001fff, 0x80040540, + 0x4803c857, 0x4802480b, 0x82001500, 0x00001fff, + 0x05ddfb8c, 0x60203000, 0x050000c7, 0x592c0414, + 0x82000d00, 0x00001fff, 0x0501fc04, 0x0500002a, + 0x8c00050a, 0x60243000, 0x050200bf, 0x412cb800, + 0x05cdfd65, 0x601c3000, 0x050000bb, 0x905ca408, + 0x912cac08, 0x6040b000, 0x0535fbc8, 0x592c0408, + 0x84000554, 0x48025c08, 0x81040040, 0x82000c00, + 0x0010d8d9, 0x50040800, 0x405c0000, 0x803c0480, + 0x050010ad, 0x812c7c00, 0x503c0000, 0x80040580, + 0x44007800, 0x80600040, 0x48025c0b, 0x4d2c0000, + 0x05cdfd4d, 0x412c0800, 0x5c025800, 0x601c3000, + 0x050000a1, 0x4806480c, 0x5924000b, 0x48000802, + 0x412c0800, 0x05ddfbc3, 0x601c3000, 0x0500009a, + 0x0501f086, 0x4c3c0000, 0x05ddfa30, 0x5c007800, + 0x0500009c, 0x81060800, 0x81224000, 0x8060c040, + 0x05fe0766, 0x05f9ff17, 0x05020070, 0x0501f07b, + 0x59240a00, 0x8c040500, 0x05000094, 0x05f1f832, + 0x05000014, 0x592c1214, 0x8c080500, 0x05000011, + 0x592c1414, 0x82081500, 0x00001fff, 0x5924000b, + 0x82000500, 0x00001fff, 0x80080580, 0x60203000, + 0x0502007d, 0x8c04051e, 0x05000006, 0x4c040000, + 0x05ddfbe9, 0x5c000800, 0x82040d00, 0xffff7f1f, + 0x4c3c0000, 0x4c040000, 0x82040d00, 0xffffdffc, + 0x84040d44, 0x48064a00, 0x0535fbee, 0x05000018, + 0x59240200, 0x8c00051e, 0x05000015, 0x8400051e, + 0x48024a00, 0x600c0800, 0x05ddfc33, 0x05000007, + 0x4813c857, 0x4817c857, 0x58100200, 0x8400055e, + 0x48002200, 0x0501f00a, 0x59a8024c, 0x8400050e, + 0x4803524c, 0x60040800, 0x05ddfc27, 0x05000004, + 0x58100200, 0x8400055e, 0x48002200, 0x5c000800, + 0x5c007800, 0x8c640502, 0x05020016, 0x4c3c0000, + 0x59240c08, 0x05d5fec0, 0x4c5c0000, 0x4d3c0000, + 0x600a78a0, 0x4d300000, 0x417a6000, 0x05ddfa44, + 0x5c026000, 0x5c027800, 0x497a480b, 0x5c00b800, 0x5c007800, 0x81060800, 0x81224000, 0x8060c040, - 0x05fe070e, 0x0501f00d, 0x916c0584, 0x0500000b, - 0x05f9fef6, 0x05020007, 0x4a035041, 0x0000aaaa, - 0x64075042, 0x6006d800, 0x05f9fe73, 0x0501f003, - 0x6006d800, 0x05f1ff2a, 0x5c00b000, 0x5c00a000, + 0x05fe0716, 0x90640589, 0x05000020, 0x0501f02b, + 0x916c0584, 0x05fc07ea, 0x90040d03, 0x90040d83, + 0x05fe07e7, 0x4c3c0000, 0x0501f84a, 0x05020011, + 0x5c007800, 0x492db801, 0x483db802, 0x485db803, + 0x4861b804, 0x4865b805, 0x4905b806, 0x4921b807, + 0x4925b808, 0x5c00b000, 0x5c00a000, 0x5c00a800, + 0x5c024800, 0x5c024000, 0x5c025800, 0x0501f021, + 0x5c007800, 0x81060800, 0x81224000, 0x8060c040, + 0x05fe06f6, 0x0501f00d, 0x916c0584, 0x0500000b, + 0x05f9fea4, 0x05020007, 0x4a035044, 0x0000aaaa, + 0x64075045, 0x6006d800, 0x05f9fe1b, 0x0501f003, + 0x6006d800, 0x05f1fde5, 0x5c00b000, 0x5c00a000, 0x5c00a800, 0x5c024800, 0x5c024000, 0x5c025800, 0x497a5a0a, 0x64025c0a, 0x592c0408, 0x8c000514, - 0x05000003, 0x05cdffc5, 0x0501f002, 0x0001fb82, + 0x05000003, 0x05cdfcc0, 0x0501f002, 0x0001fba8, 0x5c020800, 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x59240200, 0x82000500, 0xfffffffc, 0x48024a00, 0x0501f006, 0x60143000, 0x0501f004, @@ -6814,43 +7021,54 @@ static const uint32_t isp_2500_risc_code[] = { 0x5c024000, 0x5c025800, 0x481a5c0a, 0x05fdf7e3, 0x4923c857, 0x4d440000, 0x4d300000, 0x4d340000, 0x4c580000, 0x4d400000, 0x4d3c0000, 0x4c5c0000, - 0x60a68000, 0x600a7820, 0x61c0b00f, 0x417a8800, - 0x83440400, 0x0010d400, 0x50000000, 0x80026d40, - 0x05000005, 0x59340013, 0x80000130, 0x81200580, - 0x0500081c, 0x81468800, 0x8058b040, 0x05fe07f5, - 0x61fe89ff, 0x42026800, 0x00110210, 0x0501f815, - 0x9064058b, 0x0502000b, 0x61c2880f, 0x6040b000, - 0x5924b809, 0x505c0000, 0x80026d40, 0x0502080d, - 0x805cb800, 0x81468800, 0x8058b040, 0x05fe07fa, - 0x5c00b800, 0x5c027800, 0x5c028000, 0x5c00b000, - 0x5c026800, 0x5c026000, 0x5c028800, 0x1c01f000, - 0x4937c857, 0x4947c857, 0x050dfaf9, 0x4df00000, - 0x417a6000, 0x050df828, 0x050df92d, 0x050df976, - 0x0509fefc, 0x052dfc50, 0x83440580, 0x0000ffff, - 0x05000015, 0x59340c00, 0x82040580, 0x00000707, - 0x05000011, 0x82000580, 0x0000070b, 0x0500000e, - 0x4d300000, 0x4d380000, 0x0515f9dd, 0x05cc0bab, - 0x64066407, 0x4936600a, 0x4926601d, 0x602c0800, - 0x05f5fab9, 0x60067000, 0x0009f800, 0x5c027000, - 0x5c026000, 0x5c03e000, 0x050c0aca, 0x1c01f000, + 0x60a68000, 0x600a7820, 0x80ddb9c0, 0x0500000e, + 0x58de8809, 0x58dcb00a, 0x58dcb80b, 0x485fc857, + 0x4d2c0000, 0x40de5800, 0x05cdfc93, 0x4179b800, + 0x5c025800, 0x83440480, 0x000007fc, 0x05001004, + 0x0501f01b, 0x59a8b0ac, 0x417a8800, 0x0001fb08, + 0x05020006, 0x59340013, 0x80000130, 0x81200580, + 0x05000831, 0x05000024, 0x81468800, 0x83440580, + 0x000007f0, 0x05020002, 0x60028810, 0x8058b040, + 0x05fe07f3, 0x61fe89ff, 0x42026800, 0x001141b4, + 0x0501f825, 0x05000018, 0x9064058b, 0x0502000d, + 0x61c2880f, 0x6040b000, 0x5924b809, 0x505c0000, + 0x80026d40, 0x05000003, 0x0501f81b, 0x0500000e, + 0x805cb800, 0x81468800, 0x8058b040, 0x05fe07f8, + 0x90000541, 0x5c00b800, 0x5c027800, 0x5c028000, + 0x5c00b000, 0x5c026800, 0x5c026000, 0x5c028800, + 0x1c01f000, 0x4d2c0000, 0x05cdfc4f, 0x05cc08aa, + 0x412db800, 0x5c025800, 0x4a01b800, 0xaaaabbbb, + 0x4945b809, 0x4859b80a, 0x485db80b, 0x80000580, + 0x05fdf7ed, 0x4937c857, 0x4947c857, 0x050dfc5a, + 0x4df00000, 0x417a6000, 0x050df984, 0x050dfa8f, + 0x050dfad8, 0x050df858, 0x0531f80a, 0x83440580, + 0x0000ffff, 0x05000019, 0x59340c00, 0x82040580, + 0x00000707, 0x05000015, 0x82000580, 0x0000070b, + 0x05000012, 0x4d300000, 0x4d380000, 0x0515fb95, + 0x05cc0889, 0x64066407, 0x4936600a, 0x4926601d, + 0x602c0800, 0x05f5f96f, 0x60067000, 0x83440580, + 0x000007fe, 0x05020002, 0x497a6806, 0x0009f839, + 0x5c027000, 0x5c026000, 0x5c03e000, 0x050c0c27, + 0x90000541, 0x1c01f000, 0x5c027000, 0x5c026000, + 0x5c03e000, 0x050c0c21, 0x80000580, 0x1c01f000, 0x599c0018, 0x8c00052a, 0x05000004, 0x592c0003, 0x58000211, 0x80000540, 0x1c01f000, 0x599c0018, 0x8c00052a, 0x05000004, 0x592c0003, 0x5800040c, 0x81200580, 0x1c01f000, 0x599c0018, 0x8c000530, 0x05000004, 0x592c0003, 0x58000211, 0x80000540, - 0x1c01f000, 0x4c640000, 0x4c600000, 0x59a800d1, + 0x1c01f000, 0x4c640000, 0x4c600000, 0x59a800d6, 0x90000506, 0x050200f4, 0x05fdffe6, 0x050200f2, 0x916c0580, 0x050000f0, 0x497a5c0a, 0x592c220b, 0x8210c500, 0x000000ff, 0x80100110, 0x8200cd00, 0x000000ff, 0x050000e2, 0x90640483, 0x050210e0, 0x4d200000, 0x4d240000, 0x4d2c0000, 0x4d040000, 0x417a0800, 0x592c140b, 0x820a4500, 0x000000ff, - 0x4923c857, 0x0531fe87, 0x40580000, 0x81200480, - 0x050210d7, 0x83200400, 0x0010d17b, 0x50024800, - 0x90600583, 0x05020012, 0x59a80249, 0x8c000514, + 0x4923c857, 0x0535fa9a, 0x40580000, 0x81200480, + 0x050210d7, 0x83200400, 0x0010d8f9, 0x50024800, + 0x90600583, 0x05020012, 0x59a8024c, 0x8c000514, 0x0500000c, 0x59240200, 0x82001d00, 0x00002001, 0x820c1d80, 0x00002001, 0x05020006, 0x8c000510, - 0x05020004, 0x41781800, 0x05ddfb8c, 0x0501f0a4, + 0x05020004, 0x41781800, 0x05ddf8c0, 0x0501f0a4, 0x4803c857, 0x60183000, 0x0501f0ca, 0x90600582, 0x05000004, 0x59240200, 0x8c000500, 0x050200b6, 0x592c020c, 0x8c00050a, 0x05020004, 0x8d0c0520, @@ -6862,22 +7080,22 @@ static const uint32_t isp_2500_risc_code[] = { 0x592c0010, 0x9c0001c0, 0x48024804, 0x810609c0, 0x05000002, 0x912e5c85, 0x592c0a0b, 0x8c040500, 0x0500007b, 0x4d3c0000, 0x4d300000, 0x600a78a0, - 0x417a6000, 0x05ddfbb4, 0x5c026000, 0x5c027800, + 0x417a6000, 0x05ddf8f2, 0x5c026000, 0x5c027800, 0x59240206, 0x82000500, 0xfffffcff, 0x48024a06, - 0x60040800, 0x05ddfd7c, 0x05020004, 0x4a024a00, - 0x00008005, 0x0501f002, 0x64164a00, 0x05f9fdef, - 0x05020067, 0x05f1f852, 0x05000057, 0x592c120a, + 0x60040800, 0x05ddfabc, 0x05020004, 0x4a024a00, + 0x00008005, 0x0501f002, 0x64164a00, 0x05f9fd71, + 0x05020067, 0x05edfe90, 0x05000057, 0x592c120a, 0x8c080500, 0x05000054, 0x41780000, 0x8c080504, 0x05000005, 0x592c0017, 0x82000500, 0x0000ff00, 0x800000e0, 0x592c0a16, 0x8c080502, 0x05020003, 0x82040d00, 0x00001fff, 0x80040540, 0x4802480b, - 0x82001500, 0x00001fff, 0x05ddfc57, 0x60203000, + 0x82001500, 0x00001fff, 0x05ddf996, 0x60203000, 0x05000074, 0x592c0a16, 0x82040d00, 0x00001fff, - 0x0501f9ee, 0x0500003c, 0x8c00050a, 0x60243000, - 0x0502006c, 0x412cb800, 0x05cdfea0, 0x601c3000, + 0x0501fa0e, 0x0500003c, 0x8c00050a, 0x60243000, + 0x0502006c, 0x412cb800, 0x05cdfb6f, 0x601c3000, 0x05000068, 0x492fc857, 0x4c540000, 0x4c500000, 0x4c580000, 0x905ca408, 0x912cac08, 0x6040b000, - 0x0531fdbb, 0x5c00b000, 0x5c00a000, 0x5c00a800, + 0x0535f9ce, 0x5c00b000, 0x5c00a000, 0x5c00a800, 0x4a025c08, 0x00000400, 0x592c0a0b, 0x82040d00, 0x000000ff, 0x80640040, 0x800000d0, 0x80040540, 0x48025a0b, 0x4803c857, 0x592c140b, 0x80081110, @@ -6885,119 +7103,127 @@ static const uint32_t isp_2500_risc_code[] = { 0x8d0c0520, 0x05000044, 0x0501f003, 0x8c000508, 0x05000041, 0x48025a0c, 0x592c0012, 0x4802580d, 0x592c0013, 0x4802580e, 0x592c0014, 0x4802580f, - 0x592c0015, 0x48025810, 0x412e0800, 0x05cdfe73, + 0x592c0015, 0x48025810, 0x412e0800, 0x05cdfb42, 0x601c3000, 0x0500003b, 0x492e480c, 0x5924000b, - 0x48025802, 0x41040800, 0x05ddfc7b, 0x05000034, - 0x0501f016, 0x600c0800, 0x05ddfd1b, 0x0502000a, - 0x59a80249, 0x4803c857, 0x8c00050e, 0x05020008, - 0x916c0583, 0x05020006, 0x05ddfcef, 0x05000028, - 0x0501f003, 0x05ddfae9, 0x05000025, 0x8064c840, + 0x48025802, 0x41040800, 0x05ddf9ba, 0x05000034, + 0x0501f016, 0x600c0800, 0x05ddfa5b, 0x0502000a, + 0x59a8024c, 0x4803c857, 0x8c00050e, 0x05020008, + 0x916c0583, 0x05020006, 0x05ddfa2f, 0x05000028, + 0x0501f003, 0x05ddf81d, 0x05000025, 0x8064c840, 0x05000006, 0x592c140b, 0x80081110, 0x81060800, 0x912e5c05, 0x05fdf73d, 0x5c020800, 0x5c025800, 0x5c024800, 0x5c024000, 0x592c0408, 0x8c000514, - 0x05000003, 0x05cdfe5d, 0x0501f020, 0x05f9fd77, + 0x05000003, 0x05cdfb2c, 0x0501f020, 0x05f9fcf9, 0x0500001d, 0x592c0a0b, 0x8c040500, 0x0500001a, - 0x916c0584, 0x05000018, 0x6006d800, 0x05f1fdac, + 0x916c0584, 0x05000018, 0x6006d800, 0x05f1fc3b, 0x0501f015, 0x60043000, 0x0501f00e, 0x60083000, 0x0501f010, 0x600c3000, 0x0501f00a, 0x60103000, 0x0501f008, 0x60143000, 0x0501f00a, 0x60183000, 0x59240200, 0x82000500, 0xfffffffc, 0x48024a00, 0x5c020800, 0x5c025800, 0x5c024800, 0x5c024000, - 0x481a5c0a, 0x0001fb82, 0x5c00c000, 0x5c00c800, - 0x1c01f000, 0x4c580000, 0x0531fd9a, 0x40580000, - 0x81200480, 0x05021009, 0x83200400, 0x0010d17b, + 0x481a5c0a, 0x0001fba8, 0x5c00c000, 0x5c00c800, + 0x1c01f000, 0x4c580000, 0x0535f9ad, 0x40580000, + 0x81200480, 0x05021009, 0x83200400, 0x0010d8f9, 0x50024800, 0x59240200, 0x90000503, 0x90000583, - 0x5c00b000, 0x1c01f000, 0x4923c857, 0x4927c857, - 0x90000541, 0x05fdf7fb, 0x80140110, 0x80000040, - 0x05fe01bf, 0x599c0019, 0x8c000510, 0x0502000b, - 0x05f5ff3a, 0x05020002, 0x1c01f000, 0x49425a0a, - 0x48065811, 0x480a5812, 0x4943c857, 0x4807c857, - 0x480bc857, 0x0001f382, 0x592c040f, 0x82000500, - 0x0000e000, 0x82000580, 0x00006000, 0x05fc07f1, - 0x59a80249, 0x8c000508, 0x05fc07ee, 0x592c040d, - 0x82000500, 0x000000ff, 0x90000583, 0x05fe07e9, - 0x592c120f, 0x592c080e, 0x82040500, 0xff000000, - 0x80040d80, 0x80000110, 0x80081540, 0x05000004, - 0x4806580e, 0x0501f889, 0x05fdf7de, 0x60701000, - 0x60640800, 0x60c68000, 0x05fdf7dd, 0x80140110, - 0x80000040, 0x05fe0192, 0x05f9f860, 0x05020002, - 0x1c01f000, 0x49425a0a, 0x48065815, 0x480a5816, - 0x0001f382, 0x80140110, 0x05fc0189, 0x80000040, + 0x5c00b000, 0x1c01f000, 0x4923c857, 0x417a4800, + 0x90000541, 0x05fdf7fb, 0x492fc857, 0x80140110, + 0x80000040, 0x05fe0146, 0x599c0019, 0x8c000510, + 0x0502000d, 0x05f5fea3, 0x05020002, 0x1c01f000, + 0x49425a0a, 0x48065811, 0x480a5812, 0x480e5813, + 0x4943c857, 0x4807c857, 0x480bc857, 0x480fc857, + 0x0001f3a8, 0x592c040f, 0x82000500, 0x0000e000, + 0x82000580, 0x00006000, 0x05fc07ef, 0x59a8024c, + 0x8c000508, 0x05fc07ec, 0x592c040d, 0x82000500, + 0x000000ff, 0x90000583, 0x05fe07e7, 0x592c120f, + 0x592c080e, 0x82040500, 0xff000000, 0x80040d80, + 0x80000110, 0x80081540, 0x05000004, 0x4806580e, + 0x0501f8a6, 0x05fdf7dc, 0x60701000, 0x60640800, + 0x60c68000, 0x05fdf7db, 0x80140110, 0x80000040, + 0x05fe0117, 0x05f5ffc8, 0x05020002, 0x1c01f000, + 0x49425a0a, 0x48065815, 0x480a5816, 0x480e5813, + 0x0001f3a8, 0x80140110, 0x05fc010d, 0x80000040, 0x0502000a, 0x6006e000, 0x592c020e, 0x8c000504, - 0x00040218, 0x592c020b, 0x82000c80, 0x00001001, - 0x05fe118d, 0x0501f004, 0x4a01e007, 0x00020a18, - 0x0005f0df, 0x592c1017, 0x82080500, 0xffff0003, - 0x05fe0185, 0x600ae000, 0x42000000, 0x001102f1, + 0x00040241, 0x592c020b, 0x82000c80, 0x00001001, + 0x05fe1111, 0x0501f004, 0x4a01e007, 0x00020a41, + 0x0005f106, 0x592c1017, 0x82080500, 0xffff0003, + 0x05fe0109, 0x600ae000, 0x42000000, 0x00114295, 0x50007000, 0x592c0015, 0x592c0816, 0x592c1804, 0x480c7006, 0x48007007, 0x48047008, 0x492c700b, 0x4978700e, 0x4978700c, 0x0501f001, 0x4978700d, 0x82080480, 0x00000180, 0x05001006, 0x4800700f, 0x4a007005, 0x00000180, 0x65807004, 0x0501f005, 0x4978700f, 0x48087005, 0x80081104, 0x48087004, - 0x5838000a, 0x48007003, 0x40381000, 0x0001f021, - 0x4df00000, 0x4203e000, 0x50000000, 0x0001f817, - 0x05000003, 0x58f00004, 0x0801f800, 0x5c03e000, - 0x1c01f000, 0x05cdfd94, 0x05cc09fc, 0x4a02580a, - 0x00110290, 0x42000800, 0x001102f1, 0x452c0800, + 0x5838000a, 0x48007003, 0x40381000, 0x0001f029, + 0x4df00000, 0x4203e000, 0x50000000, 0x0001f81f, + 0x05000005, 0x58f00004, 0x0801f800, 0x5c03e000, + 0x1c01f000, 0x59980000, 0x80006d40, 0x05fc07fc, + 0x58347a08, 0x823c7d00, 0x000000ff, 0x903c6db3, + 0x05000007, 0x903c6d94, 0x05000005, 0xb03c6d92, + 0x05000003, 0x903c6da9, 0x05fe07f1, 0x58f06805, + 0x4c340000, 0x58f06806, 0x4c340000, 0x58f06804, + 0x4c340000, 0x0501f90d, 0x5c006800, 0x4835e004, + 0x5c006800, 0x4835e006, 0x5c006800, 0x4835e005, + 0x05fdf7e3, 0x05cdfa43, 0x05c80eaf, 0x4a02580a, + 0x00114234, 0x42000800, 0x00114295, 0x452c0800, 0x497a580b, 0x497a580c, 0x497a580d, 0x497a580e, - 0x497a580f, 0x4a025809, 0x00020b4f, 0x497a5810, + 0x497a580f, 0x4a025809, 0x00020b85, 0x497a5810, 0x4a025802, 0x00000100, 0x64065801, 0x1c01f000, - 0x42000800, 0x001102f2, 0x64040801, 0x4a000802, + 0x42000800, 0x00114296, 0x64040801, 0x4a000802, 0x00000100, 0x64400804, 0x65000805, 0x4a000809, - 0x00020914, 0x1c01f000, 0x0501f808, 0x05fc0410, - 0x64065a0c, 0x0531f0dc, 0x0501f804, 0x05fc0409, - 0x641a5a0c, 0x0531f0d8, 0x59a80005, 0x8c00051a, + 0x0002093b, 0x1c01f000, 0x0501f808, 0x05fc039b, + 0x64065a0c, 0x0531f4b1, 0x0501f804, 0x05fc0394, + 0x641a5a0c, 0x0531f4ad, 0x59a80005, 0x8c00051a, 0x1c01f000, 0x59a80005, 0x8c00051c, 0x1c01f000, 0x592c0208, 0x82000500, 0x000000ff, 0xb00005b5, 0x592c040c, 0x0502000a, 0x84000542, 0x48025c0c, - 0x592c0005, 0x4d2c0000, 0x80025d40, 0x05ce0d7f, + 0x592c0005, 0x4d2c0000, 0x80025d40, 0x05ce0a2e, 0x5c025800, 0x497a5805, 0x1c01f000, 0x84000502, - 0x48025c0c, 0x1c01f000, 0x59a8003d, 0x80080580, + 0x48025c0c, 0x1c01f000, 0x59a80040, 0x80080580, 0x05020002, 0x1c01f000, 0x480bc857, 0x42024800, - 0x0010e512, 0x480a4805, 0x480b503d, 0x497b8830, + 0x001124b6, 0x480a4805, 0x480b5040, 0x497b8830, 0x82080d40, 0x01000000, 0x48078832, 0x59c40002, - 0x8400054c, 0x48038802, 0x600c0800, 0x050df116, - 0x492fc857, 0x80140110, 0x90000581, 0x05fe00fc, + 0x8400054c, 0x48038802, 0x600c0800, 0x050df24c, + 0x492fc857, 0x80140110, 0x90000581, 0x05fe0064, 0x592c040c, 0x4803c857, 0x82000500, 0x000000f0, - 0x80000108, 0x0c01f001, 0x00106cc1, 0x00106c46, - 0x00106c72, 0x00106cc1, 0x00106c72, 0x00106cc1, - 0x00106cc1, 0x00106cc1, 0x00106cae, 0x00106cc1, - 0x00106cc1, 0x00106cc1, 0x00106cc1, 0x00106cc1, - 0x00106cc1, 0x00106cc1, 0x05edfed2, 0x0500006f, + 0x80000108, 0x0c01f001, 0x00107049, 0x00106fce, + 0x00106ffa, 0x00107049, 0x00106ffa, 0x00107049, + 0x00107049, 0x00107049, 0x00107036, 0x00107049, + 0x00107049, 0x00107049, 0x00107049, 0x00107049, + 0x00107049, 0x00107049, 0x05edfcf0, 0x0500006f, 0x592c0817, 0x4807c857, 0x82040580, 0x00000200, - 0x0502007b, 0x4d2c0000, 0x05cdfd23, 0x412c1000, + 0x0502007b, 0x4d2c0000, 0x05cdf9d2, 0x412c1000, 0x5c025800, 0x05000063, 0x480a5801, 0x492c100a, - 0x64001001, 0x4a001009, 0x00106c5f, 0x4a001003, - 0x00110672, 0x48041005, 0x592c0015, 0x48001007, - 0x592c0016, 0x48001008, 0x0001f021, 0x5832580a, - 0x812e59c0, 0x05cc0979, 0x49786001, 0x58300002, - 0x82000580, 0x00000100, 0x05020007, 0x59a80ccd, - 0x48065811, 0x59a808cf, 0x48065810, 0x64025a0a, - 0x0001f382, 0x4803c857, 0x4a006002, 0x00000100, - 0x600a8000, 0x0501f04c, 0x05edfea6, 0x05000043, - 0x05edfea9, 0x05020043, 0x592c020b, 0x4803c857, + 0x64001001, 0x4a001009, 0x00106fe7, 0x4a001003, + 0x00114616, 0x48041005, 0x592c0015, 0x48001007, + 0x592c0016, 0x48001008, 0x0001f029, 0x5832580a, + 0x812e59c0, 0x05c80e2c, 0x49786001, 0x58300002, + 0x82000580, 0x00000100, 0x05020007, 0x59a80cd2, + 0x48065811, 0x59a808d4, 0x48065810, 0x64025a0a, + 0x0001f3a8, 0x4803c857, 0x4a006002, 0x00000100, + 0x600a8000, 0x0501f04c, 0x05edfcc4, 0x05000043, + 0x05edfcc7, 0x05020043, 0x592c020b, 0x4803c857, 0x82000480, 0x00001000, 0x05021045, 0x592c000f, 0x4803c857, 0x800001c0, 0x05000045, 0x90000484, 0x05021043, 0x592c0814, 0x4807c857, 0x82040580, 0x00000200, 0x05020040, 0x592c040c, 0x8c00050a, 0x05000006, 0x592c0017, 0x4803c857, 0x82000580, - 0x00000200, 0x0502003a, 0x4d2c0000, 0x05cdfce2, + 0x00000200, 0x0502003a, 0x4d2c0000, 0x05cdf991, 0x412c1000, 0x5c025800, 0x05000022, 0x480a5801, 0x4978100b, 0x492c100a, 0x64041001, 0x4a001009, - 0x00106ca6, 0x4a001003, 0x001105f2, 0x592c040c, - 0x8c00050a, 0x05020003, 0x4a001003, 0x001106f2, + 0x0010702e, 0x4a001003, 0x00114596, 0x592c040c, + 0x8c00050a, 0x05020003, 0x4a001003, 0x00114696, 0x48041005, 0x592c0012, 0x48001007, 0x592c0013, - 0x48001008, 0x0001f021, 0x5832580a, 0x812e59c0, - 0x05cc0932, 0x49786001, 0x58300002, 0x82000580, - 0x00000100, 0x05fe07c0, 0x05edfe6a, 0x05000007, - 0x497a5a0a, 0x05f9f87c, 0x05020009, 0x1c01f000, + 0x48001008, 0x0001f029, 0x5832580a, 0x812e59c0, + 0x05c80de5, 0x49786001, 0x58300002, 0x82000580, + 0x00000100, 0x05fe07c0, 0x05edfc88, 0x05000007, + 0x497a5a0a, 0x05f5ffc9, 0x05020009, 0x1c01f000, 0x640a5810, 0x0501f004, 0x64c65810, 0x0501f002, 0x64ca5810, 0x60c68000, 0x0501f003, 0x48065810, - 0x480a5811, 0x49425a0a, 0x0001f382, 0x64325811, + 0x480a5811, 0x49425a0a, 0x0001f3a8, 0x64325811, 0x0501f008, 0x644a5811, 0x0501f006, 0x64725811, 0x0501f004, 0x64c25811, 0x0501f002, 0x64f25811, 0x64665810, 0x05fdf7f0, 0x4807c857, 0x4c580000, - 0x0531fc28, 0x42006000, 0x0010e512, 0x58301200, + 0x0535f81b, 0x42006000, 0x001124b6, 0x58301200, 0x8c08051e, 0x0500000b, 0x5830000b, 0x82000500, 0x00001fff, 0x80040580, 0x05020006, 0x82080500, 0x000000e0, 0x82000580, 0x000000e0, 0x0501f005, @@ -7007,432 +7233,458 @@ static const uint32_t isp_2500_risc_code[] = { 0x82140500, 0x000000ff, 0xb0006cbb, 0x05021033, 0x4c5c0000, 0x4c600000, 0x4c640000, 0x4d040000, 0x4971e410, 0x4cf00000, 0x4d700000, 0x42007800, - 0x0010dd60, 0x503de000, 0x58f0700b, 0x58f06c10, - 0x483a5804, 0x90347583, 0x05020005, 0x58f0b802, + 0x00111cfa, 0x503de000, 0x58f0700b, 0x58f06c10, + 0x483a5804, 0x90347581, 0x05000005, 0x58f0b802, 0x58f0c003, 0x58f0cc00, 0x58f20807, 0x58f07012, 0x483a5802, 0x48f25803, 0x59980801, 0x4c040000, - 0x497b3001, 0x6006e000, 0x1201f800, 0x0002083d, - 0x91700583, 0x00040a3f, 0x5c000800, 0x48073001, - 0x5c02e000, 0x5c01e000, 0x42000800, 0x0010dd60, - 0x50040800, 0x58046c10, 0x90340583, 0x05020005, + 0x497b3001, 0x6006e000, 0x1201f800, 0x00020864, + 0x91700583, 0x00040a75, 0x5c000800, 0x48073001, + 0x5c02e000, 0x5c01e000, 0x42000800, 0x00111cfa, + 0x50040800, 0x58046c10, 0x90340581, 0x05000005, 0x49040807, 0x48640c00, 0x48600803, 0x485c0802, 0x5c020800, 0x5c00c800, 0x5c00c000, 0x5c00b800, - 0x5c03e000, 0x1c01f000, 0x05fdf806, 0x05fdf7fd, - 0x59c80007, 0x8c000502, 0x05000055, 0x8d0c051c, - 0x050600b2, 0x835c2c80, 0x000000ff, 0x050410af, - 0x59c82817, 0x481750d0, 0x497b9005, 0x82140500, - 0x00e00000, 0x05020046, 0x82140500, 0x000003ff, - 0x8c140516, 0x05000005, 0x90001c08, 0x42002000, - 0x001102fe, 0x0501f003, 0x90001c06, 0x41cc2000, - 0x600030c1, 0xb00c0480, 0x05001004, 0x61001000, - 0xb00c1c80, 0x0501f003, 0x400c1000, 0x41781800, - 0x54182000, 0x80102000, 0x80183000, 0x80081040, - 0x05fe07fc, 0x800c19c0, 0x05000005, 0x59c80005, - 0x80000000, 0x48039005, 0x05fdf7ee, 0x8c140516, - 0x05000003, 0x42039800, 0x00110300, 0x82140500, - 0x000003ff, 0x800018c4, 0x8c140514, 0x05000004, - 0x59cc0002, 0x90000503, 0x800c1c80, 0x480f50b6, - 0x59c40002, 0x8c00050c, 0x05020003, 0x0531fbdb, - 0x05020011, 0x82140500, 0x01f60000, 0x0502000e, - 0x0505f88e, 0x05020007, 0x4a039005, 0x00000140, - 0x82140500, 0x0e000000, 0x80000132, 0x0c01f012, - 0x800001c0, 0x0502000a, 0x4a039005, 0x00000140, - 0x0501f00b, 0x4817c857, 0x82140500, 0x00f60000, - 0x05020003, 0x0501ff76, 0x05fe07ee, 0x0505f89d, - 0x4a039005, 0x00000140, 0x0501f056, 0x4803c856, - 0x1c01f000, 0x00106d86, 0x00107139, 0x00106d81, - 0x00106d81, 0x00106d81, 0x00106d81, 0x00106d81, - 0x00106d81, 0x4803c857, 0x42000000, 0x0010e44b, - 0x0531fa58, 0x1c01f000, 0x8d0c052a, 0x05000004, - 0x4c140000, 0x05cdf954, 0x5c002800, 0x59cc0003, - 0x82000500, 0x00ff0000, 0x0502003a, 0x59cc0400, - 0x82000d00, 0x0000ff00, 0x82041500, 0x0000f000, - 0x840409c0, 0x82080580, 0x0000c000, 0x05020003, - 0x0501fd11, 0x0501f032, 0x82080580, 0x00002000, - 0x05020024, 0x916c0581, 0x05020020, 0x05f9fb0f, - 0x05020014, 0x4c040000, 0x59a8083f, 0x4807c857, - 0x90040589, 0x05000007, 0x90040583, 0x0502000b, - 0x05f9f9da, 0x59a8083f, 0x90040589, 0x05020007, - 0x81780000, 0x05c9fbee, 0x916c0582, 0x05020003, - 0x5c000800, 0x0501f00d, 0x5c000800, 0x0501f018, - 0x59cc0006, 0x82000500, 0xff000000, 0x82000580, - 0x11000000, 0x05ce08e8, 0x05020011, 0x05edfde9, - 0x0505f8af, 0x0501f00e, 0x0501f81d, 0x0501f00c, - 0x82080580, 0x00003000, 0x05020003, 0x0501fa88, - 0x0501f007, 0x82080580, 0x00008000, 0x050003e6, - 0x42000000, 0x0010e44a, 0x0531f212, 0x1c01f000, - 0x4817c857, 0x42000000, 0x0010e44a, 0x0531fa0d, - 0x916c0583, 0x05020009, 0x4c080000, 0x4c0c0000, - 0x61201100, 0x40141800, 0x80142120, 0x05edfa05, - 0x5c001800, 0x5c001000, 0x1c01f000, 0x59cc0002, - 0x82000500, 0xff000000, 0x82001580, 0x01000000, - 0x05000008, 0x82001580, 0x23000000, 0x05000005, - 0x05cdf8bd, 0x0505f85a, 0x050006c0, 0x0501f209, - 0x59a800b6, 0x90000484, 0x05001206, 0x900405a3, - 0x05020046, 0x59cc0004, 0x4803c857, 0x59cc0006, - 0x82000500, 0xff000000, 0x59cc0801, 0x82040d00, - 0x00ffffff, 0x80040540, 0x4803c857, 0x0501fca4, - 0x05cc08a9, 0x050001f7, 0x59300c07, 0x90040590, - 0x0500000a, 0x90040591, 0x05000008, 0x90040581, - 0x05000006, 0x90040584, 0x05000004, 0x90040588, - 0x05ce089d, 0x050201eb, 0x59300004, 0x82000500, - 0x80010000, 0x05000004, 0x050dfaaf, 0x05ce0896, - 0x050201e4, 0x59cc0a04, 0x48066202, 0x59cc0006, - 0x82000500, 0xffff0000, 0x82000d80, 0x02000000, - 0x05020007, 0x60567000, 0x0501fceb, 0x0501fd1d, - 0x05cc0889, 0x050001d7, 0x0009f000, 0x82000d80, - 0x02140000, 0x05fc07f8, 0x82000d80, 0x02100000, - 0x05fc07f5, 0x82000d80, 0x02100000, 0x05fc07f2, - 0x82000d80, 0x01000000, 0x05ce087b, 0x050201c9, - 0x59cc0006, 0x82000500, 0x0000ffff, 0x05ce0876, - 0x050201c4, 0x59a800b6, 0x90000488, 0x050011c1, - 0x605a7000, 0x05fdf7e5, 0x900405a2, 0x05ce086e, - 0x050201bc, 0x59cc0004, 0x4803c857, 0x59cc0006, - 0x4803c857, 0x59cc0001, 0x4803c857, 0x59a800b6, - 0x800001c0, 0x05cc0864, 0x050001b2, 0x59a80249, - 0x8c000508, 0x05000003, 0x8c000502, 0x050001ad, - 0x59a80805, 0x8c040514, 0x05000043, 0x0501f9d0, - 0x05020041, 0x59a80249, 0x8c000518, 0x0500000e, + 0x5c03e000, 0x1c01f000, 0x05f9ff6e, 0x05fdf7fd, + 0x59a80006, 0x8c000508, 0x05000006, 0x592c6c0e, + 0x5930002f, 0x80340580, 0x82000500, 0x00000800, + 0x1c01f000, 0x59c80007, 0x8c000502, 0x0500005f, + 0x8d0c051c, 0x0506013b, 0x835c2c80, 0x000000ff, + 0x05041138, 0x59c82817, 0x481750d5, 0x497b9005, + 0x82140500, 0x00e00000, 0x0502004f, 0x82140500, + 0x000003ff, 0x8c140516, 0x05000005, 0x90001c08, + 0x42002000, 0x001142a2, 0x0501f003, 0x90001c06, + 0x41cc2000, 0x600030c1, 0xb00c0480, 0x05001004, + 0x61001000, 0xb00c1c80, 0x0501f003, 0x400c1000, + 0x41781800, 0x54182000, 0x80102000, 0x80183000, + 0x80081040, 0x05fe07fc, 0x800c19c0, 0x05000005, + 0x59c80005, 0x80000000, 0x48039005, 0x05fdf7ee, + 0x8c140516, 0x05000003, 0x42039800, 0x001142a4, + 0x82140500, 0x000003ff, 0x800018c4, 0x8c140514, + 0x05000004, 0x59cc0002, 0x90000503, 0x800c1c80, + 0x480f50bb, 0x59c40002, 0x8c00050c, 0x05020003, + 0x0531ffc5, 0x0502001a, 0x82140500, 0x01f60000, + 0x05020017, 0x0505f917, 0x05020007, 0x4a039005, + 0x00000140, 0x82140500, 0x0e000000, 0x80000132, + 0x0c01f01c, 0x800001c0, 0x05000005, 0x0505f92f, + 0x4a039005, 0x00000140, 0x1c01f000, 0x42000000, + 0x00112452, 0x0531fe56, 0x60040000, 0x0501f864, + 0x4a039005, 0x00000140, 0x0501f00c, 0x4817c857, + 0x82140500, 0x00f60000, 0x05020003, 0x0501ffcc, + 0x05fe07e5, 0x0505f91d, 0x4a039005, 0x00000140, + 0x41780000, 0x0501f056, 0x4803c856, 0x1c01f000, + 0x00107121, 0x00107518, 0x0010711c, 0x0010711c, + 0x0010711c, 0x0010711c, 0x0010711c, 0x0010711c, + 0x4803c857, 0x42000000, 0x001123ef, 0x0531fe38, + 0x1c01f000, 0x8d0c052a, 0x05000004, 0x4c140000, + 0x05c9fde8, 0x5c002800, 0x59cc0003, 0x82000500, + 0x00ff0000, 0x0502003a, 0x59cc0400, 0x82000d00, + 0x0000ff00, 0x82041500, 0x0000f000, 0x840409c0, + 0x82080580, 0x0000c000, 0x05020003, 0x0501fd67, + 0x0501f032, 0x82080580, 0x00002000, 0x05020024, + 0x916c0581, 0x05020020, 0x05f9fa5e, 0x05020014, + 0x4c040000, 0x59a80842, 0x4807c857, 0x90040589, + 0x05000007, 0x90040583, 0x0502000b, 0x05f9f923, + 0x59a80842, 0x90040589, 0x05020007, 0x81780000, + 0x05c9f886, 0x916c0582, 0x05020003, 0x5c000800, + 0x0501f00d, 0x5c000800, 0x0501f018, 0x59cc0006, + 0x82000500, 0xff000000, 0x82000580, 0x11000000, + 0x05ca0d7c, 0x05020011, 0x05edfc43, 0x0505f92e, + 0x0501f00e, 0x0501f81f, 0x0501f00c, 0x82080580, + 0x00003000, 0x05020003, 0x0501fa96, 0x0501f007, + 0x82080580, 0x00008000, 0x0500042a, 0x42000000, + 0x001123ee, 0x0531f5f2, 0x1c01f000, 0x4817c857, + 0x800001c0, 0x05020004, 0x42000000, 0x001123ee, + 0x0531fdeb, 0x916c0583, 0x05020009, 0x4c080000, + 0x4c0c0000, 0x61201100, 0x40141800, 0x80142120, + 0x05edf805, 0x5c001800, 0x5c001000, 0x1c01f000, + 0x59cc0002, 0x82000500, 0xff000000, 0x82001580, + 0x01000000, 0x05000008, 0x82001580, 0x23000000, + 0x05000005, 0x05c9fd4f, 0x0505f8d7, 0x05000713, + 0x0501f210, 0x59a800bb, 0x90000484, 0x0500120d, + 0x900405a3, 0x05020046, 0x59cc0004, 0x4803c857, + 0x59cc0006, 0x82000500, 0xff000000, 0x59cc0801, + 0x82040d00, 0x00ffffff, 0x80040540, 0x4803c857, + 0x0501fcf5, 0x05c80d3b, 0x050001fe, 0x59300c07, + 0x90040590, 0x0500000a, 0x90040591, 0x05000008, + 0x90040581, 0x05000006, 0x90040584, 0x05000004, + 0x90040588, 0x05ca0d2f, 0x050201f2, 0x59300004, + 0x82000500, 0x80010000, 0x05000004, 0x050dfbd0, + 0x05ca0d28, 0x050201eb, 0x59cc0a04, 0x48066202, 0x59cc0006, 0x82000500, 0xffff0000, 0x82000d80, - 0x7f000000, 0x05020008, 0x05edfccb, 0x05020036, - 0x59cc0c07, 0x82040d00, 0x000000ff, 0x90040581, - 0x05020031, 0x0501f9d8, 0x0500002f, 0x61327000, - 0x59cc3800, 0x821c3d00, 0x00ffffff, 0x4c1c0000, - 0x05d9ffc8, 0x5c003800, 0x05000003, 0x05cdf83e, - 0x0501f18c, 0x59cc0001, 0x82000500, 0x00ffffff, - 0x0501ff20, 0x05000006, 0x61fe89ff, 0x42026800, - 0x00110210, 0x05f5ff3d, 0x481a6802, 0x599c0019, - 0x8c000510, 0x05000168, 0x59a80249, 0x8c000508, - 0x05000165, 0x59cc1006, 0x82081500, 0xffff0000, - 0x82081580, 0x03000000, 0x0502015f, 0x91641490, - 0x05001181, 0x8400054c, 0x48035249, 0x59cc1000, - 0x82081500, 0x00ffffff, 0x05fdfd98, 0x59cc0007, - 0x82000500, 0x0000ffff, 0x48038893, 0x48035040, - 0x0501f151, 0x59cc0006, 0x82000500, 0xffff0000, - 0x82000d80, 0x03000000, 0x05020032, 0x59a80249, - 0x8c000508, 0x05000020, 0x8400054c, 0x48035249, - 0x59cc0800, 0x82040d00, 0x00ffffff, 0x42024800, - 0x0010e512, 0x4807c857, 0x48064805, 0x4807503d, - 0x497b8830, 0x84040d70, 0x48078832, 0x59c40802, - 0x84040d4c, 0x48078802, 0x59cc0007, 0x82000500, - 0x0000ffff, 0x48038893, 0x48035040, 0x600c0800, - 0x59a8103d, 0x0509fe98, 0x59cc0006, 0x82000500, - 0x0000ffff, 0x05ca0ff4, 0x05020142, 0x605e7000, - 0x0501f0f3, 0x4c000000, 0x82140500, 0x0000f000, - 0x82000580, 0x00003000, 0x5c000000, 0x05fe07f3, - 0x05f9f9f6, 0x05fe07f1, 0x8c000502, 0x05fe07ef, - 0x60583002, 0x0501fdec, 0x4803c857, 0x0501f131, - 0x82000d80, 0x04000000, 0x05020013, 0x59cc0006, - 0x82000500, 0x0000ffff, 0x05ca0fdb, 0x05020129, - 0x05f9f9e6, 0x05000002, 0x0501f0d8, 0x497b50c2, - 0x42001000, 0x0010582b, 0x0501ffe7, 0x05f5fee5, - 0x59a80249, 0x84000548, 0x48035249, 0x60c27000, - 0x0501f0cf, 0x82000d80, 0x05000000, 0x05020008, - 0x59cc0006, 0x82000500, 0x0000ffff, 0x05ca0fc6, - 0x05020114, 0x60627000, 0x0501f0c5, 0x82000d80, - 0x20100000, 0x05020003, 0x60667000, 0x0501f0c0, - 0x82000d80, 0x21100000, 0x05020003, 0x606a7000, - 0x0501f0bb, 0x82000d80, 0x52000000, 0x05020008, - 0x59cc0006, 0x82000500, 0x0000ffff, 0x05ca0fb2, - 0x05020100, 0x606e7000, 0x0501f0b1, 0x82000d80, - 0x50000000, 0x05020008, 0x59cc0006, 0x82000500, - 0x0000ffff, 0x05ca0fa8, 0x050200f6, 0x60727000, - 0x0501f0a7, 0x82000d80, 0x13000000, 0x05020003, - 0x60d27000, 0x0501f0a2, 0x82000d80, 0x12000000, + 0x02000000, 0x05020007, 0x60567000, 0x0501fd3f, + 0x0501fd70, 0x05c80d1b, 0x050001de, 0x0009f039, + 0x82000d80, 0x02140000, 0x05fc07f8, 0x82000d80, + 0x02100000, 0x05fc07f5, 0x82000d80, 0x02100000, + 0x05fc07f2, 0x82000d80, 0x01000000, 0x05ca0d0d, + 0x050201d0, 0x59cc0006, 0x82000500, 0x0000ffff, + 0x05ca0d08, 0x050201cb, 0x59a800bb, 0x90000488, + 0x050011c8, 0x605a7000, 0x05fdf7e5, 0x900405a2, + 0x05ca0d00, 0x050201c3, 0x59cc0004, 0x4803c857, + 0x59cc0006, 0x4803c857, 0x59cc0001, 0x4803c857, + 0x59a800bb, 0x800001c0, 0x05c80cf6, 0x050001b9, + 0x0531feb4, 0x05000003, 0x0531feb7, 0x050001b5, + 0x59a8024c, 0x8c000508, 0x05000003, 0x8c000502, + 0x050001b0, 0x59a80805, 0x8c040514, 0x05000043, + 0x0501f9d8, 0x05020041, 0x59a8024c, 0x8c000518, + 0x0500000e, 0x59cc0006, 0x82000500, 0xffff0000, + 0x82000d80, 0x7f000000, 0x05020008, 0x05edfad0, + 0x05020036, 0x59cc0c07, 0x82040d00, 0x000000ff, + 0x90040581, 0x05020031, 0x0501f9e0, 0x0500002f, + 0x61327000, 0x59cc3800, 0x821c3d00, 0x00ffffff, + 0x4c1c0000, 0x05d9fcc3, 0x5c003800, 0x05000003, + 0x05c9fccc, 0x0501f18f, 0x59cc0001, 0x82000500, + 0x00ffffff, 0x0501ff6f, 0x05000006, 0x61fe89ff, + 0x42026800, 0x001141b4, 0x05f5fe71, 0x481a6802, + 0x599c0019, 0x8c000510, 0x0500016b, 0x59a8024c, + 0x8c000508, 0x05000168, 0x59cc1006, 0x82081500, + 0xffff0000, 0x82081580, 0x03000000, 0x05020162, + 0x91641490, 0x05001184, 0x8400054c, 0x4803524c, + 0x59cc1000, 0x82081500, 0x00ffffff, 0x05fdfd7f, + 0x59cc0007, 0x82000500, 0x0000ffff, 0x48038893, + 0x48035043, 0x0501f154, 0x59cc0006, 0x82000500, + 0xffff0000, 0x82000d80, 0x03000000, 0x05020032, + 0x59a8024c, 0x8c000508, 0x05000020, 0x8400054c, + 0x4803524c, 0x59cc0800, 0x82040d00, 0x00ffffff, + 0x42024800, 0x001124b6, 0x4807c857, 0x48064805, + 0x48075040, 0x497b8830, 0x84040d70, 0x48078832, + 0x59c40802, 0x84040d4c, 0x48078802, 0x59cc0007, + 0x82000500, 0x0000ffff, 0x48038893, 0x48035043, + 0x600c0800, 0x59a81040, 0x0509ffb5, 0x59cc0006, + 0x82000500, 0x0000ffff, 0x05ca0c82, 0x05020145, + 0x605e7000, 0x0501f0f3, 0x4c000000, 0x82140500, + 0x0000f000, 0x82000580, 0x00003000, 0x5c000000, + 0x05fe07f3, 0x05f9f93f, 0x05fe07f1, 0x8c000502, + 0x05fe07ef, 0x60583002, 0x0501fe3b, 0x4803c857, + 0x0501f134, 0x82000d80, 0x04000000, 0x05020013, + 0x59cc0006, 0x82000500, 0x0000ffff, 0x05ca0c69, + 0x0502012c, 0x05f9f92f, 0x05000002, 0x0501f0d8, + 0x497b50c7, 0x42001000, 0x00105a99, 0x0505f860, + 0x05f5fe19, 0x59a8024c, 0x84000548, 0x4803524c, + 0x60c27000, 0x0501f0cf, 0x82000d80, 0x05000000, 0x05020008, 0x59cc0006, 0x82000500, 0x0000ffff, - 0x05ca0f99, 0x050200e7, 0x60927000, 0x0501f098, - 0x82000d00, 0xff000000, 0x82040d80, 0x24000000, - 0x05020003, 0x60b67000, 0x0501f091, 0x82000d00, - 0xff000000, 0x82040d80, 0x53000000, 0x05020003, - 0x60aa7000, 0x0501f08a, 0x82000d80, 0x0f000000, - 0x05020003, 0x60827000, 0x0501f085, 0x82000d80, - 0x61040000, 0x0502004a, 0x4c5c0000, 0x4c600000, - 0x4c640000, 0x4c580000, 0x91ccc406, 0x8060b800, - 0x50600000, 0x82000500, 0x0000ffff, 0x82001480, - 0x00000401, 0x05021037, 0x90001503, 0x05020035, - 0x59a810b6, 0x80081480, 0x05001032, 0x90000484, - 0x8000b104, 0x8058b1c0, 0x0500002e, 0x59cc3800, - 0x821c3d00, 0x00ffffff, 0x4d200000, 0x05d9feed, - 0x05000003, 0x5c024000, 0x0501f026, 0x505cc800, - 0x8264c500, 0x03000000, 0x8060c130, 0x42000000, - 0x0010e410, 0x90602580, 0x05020004, 0x42000000, - 0x0010e40d, 0x0501f00a, 0x90602581, 0x05020004, - 0x42000000, 0x0010e40e, 0x0501f005, 0x90602582, - 0x05020003, 0x42000000, 0x0010e40f, 0x0531f889, - 0x60541100, 0x82642500, 0x0000ffff, 0x80641920, - 0x41202800, 0x05edf884, 0x805cb800, 0x8058b040, - 0x05fe07e3, 0x5c024000, 0x5c00b000, 0x5c00c800, - 0x5c00c000, 0x5c00b800, 0x608e7000, 0x0501f040, - 0x5c00b000, 0x5c00c800, 0x5c00c000, 0x5c00b800, - 0x42000000, 0x0010e448, 0x0531f072, 0x82000d80, - 0x60000000, 0x05020003, 0x60fe7000, 0x0501f034, - 0x82000d80, 0x78000000, 0x05020003, 0x61167000, - 0x0501f02f, 0x82000d80, 0x10000000, 0x05020003, - 0x613a7000, 0x0501f02a, 0x82000d80, 0x63000000, - 0x05020003, 0x612a7000, 0x0501f025, 0x82000d00, - 0xff000000, 0x82040d80, 0x56000000, 0x05020003, - 0x613e7000, 0x0501f01e, 0x82000d00, 0xff000000, - 0x82040d80, 0x57000000, 0x05020003, 0x61427000, - 0x0501f017, 0x82000d80, 0x7d000000, 0x05020003, - 0x615a7000, 0x0501f012, 0x59a80a49, 0x8c040518, - 0x0500000e, 0x82000d80, 0x7f000000, 0x0502000b, - 0x4803c857, 0x61667000, 0x59cc0c07, 0x82040d00, - 0x000000ff, 0x90040581, 0x05000005, 0x4803c857, - 0x61767000, 0x0501f002, 0x60767000, 0x59cc3800, - 0x821c3d00, 0x00ffffff, 0x821c0580, 0x00fffffe, - 0x59cc0001, 0x05020004, 0x40003000, 0x61fa880f, - 0x0501f009, 0x59cc3800, 0x821c3d00, 0x00ffffff, - 0x4c1c0000, 0x0501f91e, 0x5c003800, 0x05ca0eee, - 0x05020041, 0x05d9fe73, 0x0502003a, 0x83440480, - 0x000007f0, 0x05001001, 0x05edfb8f, 0x0500000f, - 0x4c180000, 0x05f5fabc, 0x5c003000, 0x0500000e, - 0x4c180000, 0x0501f856, 0x5c003000, 0x05020007, - 0x05f5fde6, 0x42026800, 0x00110210, 0x481a6802, - 0x61fe89ff, 0x0501f004, 0x05f1fd4f, 0x05ca0ed6, + 0x05ca0c54, 0x05020117, 0x60627000, 0x0501f0c5, + 0x82000d80, 0x20100000, 0x05020003, 0x60667000, + 0x0501f0c0, 0x82000d80, 0x21100000, 0x05020003, + 0x606a7000, 0x0501f0bb, 0x82000d80, 0x52000000, + 0x05020008, 0x59cc0006, 0x82000500, 0x0000ffff, + 0x05ca0c40, 0x05020103, 0x606e7000, 0x0501f0b1, + 0x82000d80, 0x50000000, 0x05020008, 0x59cc0006, + 0x82000500, 0x0000ffff, 0x05ca0c36, 0x050200f9, + 0x60727000, 0x0501f0a7, 0x82000d80, 0x13000000, + 0x05020003, 0x60d27000, 0x0501f0a2, 0x82000d80, + 0x12000000, 0x05020008, 0x59cc0006, 0x82000500, + 0x0000ffff, 0x05ca0c27, 0x050200ea, 0x60927000, + 0x0501f098, 0x82000d00, 0xff000000, 0x82040d80, + 0x24000000, 0x05020003, 0x60b67000, 0x0501f091, + 0x82000d00, 0xff000000, 0x82040d80, 0x53000000, + 0x05020003, 0x60aa7000, 0x0501f08a, 0x82000d80, + 0x0f000000, 0x05020003, 0x60827000, 0x0501f085, + 0x82000d80, 0x61040000, 0x0502004a, 0x4c5c0000, + 0x4c600000, 0x4c640000, 0x4c580000, 0x91ccc406, + 0x8060b800, 0x50600000, 0x82000500, 0x0000ffff, + 0x82001480, 0x00000401, 0x05021037, 0x90001503, + 0x05020035, 0x59a810bb, 0x80081480, 0x05001032, + 0x90000484, 0x8000b104, 0x8058b1c0, 0x0500002e, + 0x59cc3800, 0x821c3d00, 0x00ffffff, 0x4d200000, + 0x05d9fbe8, 0x05000003, 0x5c024000, 0x0501f026, + 0x505cc800, 0x8264c500, 0x03000000, 0x8060c130, + 0x42000000, 0x001123b1, 0x90602580, 0x05020004, + 0x42000000, 0x001123ae, 0x0501f00a, 0x90602581, + 0x05020004, 0x42000000, 0x001123af, 0x0501f005, + 0x90602582, 0x05020003, 0x42000000, 0x001123b0, + 0x0531fc63, 0x60541100, 0x82642500, 0x0000ffff, + 0x80641920, 0x41202800, 0x05e9fe80, 0x805cb800, + 0x8058b040, 0x05fe07e3, 0x5c024000, 0x5c00b000, + 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x608e7000, + 0x0501f040, 0x5c00b000, 0x5c00c800, 0x5c00c000, + 0x5c00b800, 0x42000000, 0x001123ec, 0x0531f44c, + 0x82000d80, 0x60000000, 0x05020003, 0x60fe7000, + 0x0501f034, 0x82000d80, 0x78000000, 0x05020003, + 0x61167000, 0x0501f02f, 0x82000d80, 0x10000000, + 0x05020003, 0x613a7000, 0x0501f02a, 0x82000d80, + 0x63000000, 0x05020003, 0x612a7000, 0x0501f025, + 0x82000d00, 0xff000000, 0x82040d80, 0x56000000, + 0x05020003, 0x613e7000, 0x0501f01e, 0x82000d00, + 0xff000000, 0x82040d80, 0x57000000, 0x05020003, + 0x61427000, 0x0501f017, 0x82000d80, 0x7d000000, + 0x05020003, 0x615a7000, 0x0501f012, 0x59a80a4c, + 0x8c040518, 0x0500000e, 0x82000d80, 0x7f000000, + 0x0502000b, 0x4803c857, 0x61667000, 0x59cc0c07, + 0x82040d00, 0x000000ff, 0x90040581, 0x05000005, + 0x4803c857, 0x61767000, 0x0501f002, 0x60767000, + 0x59cc3800, 0x821c3d00, 0x00ffffff, 0x821c0580, + 0x00fffffe, 0x59cc0001, 0x05020004, 0x40003000, + 0x61fa880f, 0x0501f009, 0x59cc3800, 0x821c3d00, + 0x00ffffff, 0x4c1c0000, 0x0501f929, 0x5c003800, + 0x05ca0b7c, 0x05020044, 0x05d9fb6e, 0x0502003d, + 0x83440480, 0x000007f0, 0x05001004, 0x83440480, + 0x00000800, 0x05001011, 0x05edf9df, 0x0500000f, + 0x4c180000, 0x05f5f9e1, 0x5c003000, 0x0500000e, + 0x4c180000, 0x0501f85b, 0x5c003000, 0x05020007, + 0x05f5fd17, 0x42026800, 0x001141b4, 0x481a6802, + 0x61fe89ff, 0x0501f004, 0x05f1fbc6, 0x05ca0b61, 0x05020024, 0x59340200, 0x8c000514, 0x0500000a, 0x913805b0, 0x05000008, 0x913805bf, 0x05000006, 0x913805b4, 0x05000004, 0x913805a4, 0x05000002, - 0x61327000, 0x0511fc2a, 0x05000023, 0x4926601d, - 0x4936600a, 0x64126407, 0x83340580, 0x00110210, + 0x61327000, 0x0511fdc0, 0x05000023, 0x4926601d, + 0x4936600a, 0x64126407, 0x83340580, 0x001141b4, 0x05020005, 0x59cc0001, 0x82000500, 0x00ffffff, 0x4802602a, 0x59cc0c04, 0x48066202, 0xb138058c, - 0x05020002, 0x64466407, 0x0501fb17, 0x0501fb7a, - 0x05020003, 0x0005ffdc, 0x0501f002, 0x0009f000, - 0x598800bc, 0x4803c857, 0x80000000, 0x480310bc, - 0x1c01f000, 0x05d9fe33, 0x05fe07fa, 0x42000000, - 0x0010e3bd, 0x052dffe3, 0x42026800, 0x00110210, - 0x0501f002, 0x0501fe3d, 0x61241100, 0x59cc1806, - 0x800c1930, 0x05e9ffdb, 0x0511fc09, 0x05c80e9e, - 0x05fc07ec, 0x4926601d, 0x4936600a, 0x83340580, - 0x00110210, 0x05020005, 0x59cc0001, 0x82000500, - 0x00ffffff, 0x4802602a, 0x64126407, 0x59cc0c04, - 0x48066202, 0x64266403, 0x6426641c, 0x4a02621c, - 0x00002900, 0x64066203, 0x0509f05b, 0x59a80249, - 0x4803c857, 0x8c000508, 0x05000013, 0x599c0019, - 0x8c000510, 0x05020010, 0x59cc0006, 0x82000500, - 0xff000000, 0x82000d80, 0x03000000, 0x0500000c, - 0x82000d80, 0x20000000, 0x05000009, 0x82000d80, - 0x05000000, 0x05000006, 0x82000d80, 0x21000000, - 0x05000003, 0x80000580, 0x1c01f000, 0x90000541, - 0x05fdf7fe, 0x59cc2006, 0x82102500, 0xff000000, - 0x9c1021c0, 0x0501f807, 0x820c1c00, 0x0010dd3e, - 0x500c1800, 0x800c0500, 0x4803c857, 0x1c01f000, - 0x40100800, 0x41781800, 0x900404a0, 0x05001004, - 0x800c1800, 0x40000800, 0x05fdf7fc, 0x9004050f, - 0x82000400, 0x0010d15b, 0x50000000, 0x8c040508, - 0x05000002, 0x900001c0, 0x1c01f000, 0x4803c856, - 0x0501fd66, 0x0502000c, 0x05d9fbb6, 0x0502000a, - 0x59cc0002, 0x82000500, 0xff000000, 0x82000d80, - 0x08000000, 0x05000007, 0x42000000, 0x0010e44b, - 0x052df784, 0x42000000, 0x0010e448, 0x052df781, - 0x4803c856, 0x59cc0400, 0x82000d00, 0x0000ff00, - 0x840409c0, 0x900405b3, 0x05020029, 0x0501fa38, - 0x05000067, 0x59cc0a04, 0x48066202, 0x59a800b6, - 0x90000484, 0x05001062, 0x59cc0006, 0x4803c857, - 0x82000500, 0xffff0000, 0x82000d80, 0x02000000, - 0x0502000b, 0x59cc0006, 0x82000500, 0x0000ffff, - 0x05020057, 0x0501fabf, 0x05020003, 0x0005ffdc, - 0x0501f053, 0x60567000, 0x0009f000, 0x82000d80, - 0x01000000, 0x0502004e, 0x59cc0006, 0x82000500, - 0x0000ffff, 0x0502004a, 0x59a800b6, 0x90000488, - 0x05001047, 0x0501faaf, 0x05020003, 0x0005ffdc, - 0x0501f043, 0x605a7000, 0x0009f000, 0x900405b2, - 0x0502003f, 0x59cc0006, 0x82000500, 0xffff0000, - 0x82000d80, 0x14000000, 0x05020039, 0x59a800b6, - 0x90000490, 0x05001036, 0x60e27000, 0x59cc0001, - 0x59cc3800, 0x821c3d00, 0x00ffffff, 0x4c1c0000, - 0x0501f832, 0x5c003800, 0x0502002d, 0x05d9fd89, - 0x0502002b, 0x83440480, 0x000007f0, 0x05001001, - 0x05edfaa5, 0x0500000f, 0x4c180000, 0x05f5f9d2, - 0x5c003000, 0x0500000d, 0x4c180000, 0x05fdff6c, - 0x5c003000, 0x05020007, 0x05f5fcfc, 0x42026800, - 0x00110210, 0x481a6802, 0x61fe89ff, 0x0501f003, - 0x05f1fc60, 0x05020016, 0x0511fb4d, 0x05000d83, + 0x05020002, 0x64466407, 0x0501fb64, 0x0501fbc6, + 0x05020003, 0x0009f810, 0x0501f002, 0x0009f039, + 0x598800bf, 0x4803c857, 0x80000000, 0x480310bf, + 0x1c01f000, 0x05d9fb2b, 0x05fe07fa, 0x42000000, + 0x0011235e, 0x0531fbba, 0x42026800, 0x001141b4, + 0x0501f002, 0x0501feb3, 0x61241100, 0x59cc1806, + 0x800c1930, 0x60082800, 0x83340580, 0x001141b4, + 0x05000002, 0x60042800, 0x05e9fdd0, 0x0511fd75, + 0x05c80b24, 0x05fc07e7, 0x4926601d, 0x4936600a, + 0x83340580, 0x001141b4, 0x05020005, 0x59cc0001, + 0x82000500, 0x00ffffff, 0x4802602a, 0x64126407, + 0x59cc0c04, 0x48066202, 0x64266403, 0x6426641c, + 0x4a02621c, 0x00002900, 0x64066203, 0x0509f16b, + 0x59a8024c, 0x4803c857, 0x8c000508, 0x05000013, + 0x599c0019, 0x8c000510, 0x05020010, 0x59cc0006, + 0x82000500, 0xff000000, 0x82000d80, 0x03000000, + 0x0500000c, 0x82000d80, 0x20000000, 0x05000009, + 0x82000d80, 0x05000000, 0x05000006, 0x82000d80, + 0x21000000, 0x05000003, 0x80000580, 0x1c01f000, + 0x90000541, 0x05fdf7fe, 0x59cc2006, 0x82102500, + 0xff000000, 0x9c1021c0, 0x0501f807, 0x820c1c00, + 0x00111cc4, 0x500c1800, 0x800c0500, 0x4803c857, + 0x1c01f000, 0x40100800, 0x41781800, 0x900404a0, + 0x05001004, 0x800c1800, 0x40000800, 0x05fdf7fc, + 0x9004050f, 0x82000400, 0x0010d8d9, 0x50000000, + 0x8c040508, 0x05000002, 0x900001c0, 0x1c01f000, + 0x4803c856, 0x0501fdd7, 0x0502000c, 0x05d9f8a5, + 0x0502000a, 0x59cc0002, 0x82000500, 0xff000000, + 0x82000d80, 0x08000000, 0x05000007, 0x42000000, + 0x001123ef, 0x0531f356, 0x42000000, 0x001123ec, + 0x0531f353, 0x4803c856, 0x59cc0400, 0x82000d00, + 0x0000ff00, 0x840409c0, 0x900405b3, 0x05020029, + 0x0501fa7d, 0x0500006a, 0x59cc0a04, 0x48066202, + 0x59a800bb, 0x90000484, 0x05001065, 0x59cc0006, + 0x4803c857, 0x82000500, 0xffff0000, 0x82000d80, + 0x02000000, 0x0502000b, 0x59cc0006, 0x82000500, + 0x0000ffff, 0x0502005a, 0x0501fb06, 0x05020003, + 0x0009f810, 0x0501f056, 0x60567000, 0x0009f039, + 0x82000d80, 0x01000000, 0x05020051, 0x59cc0006, + 0x82000500, 0x0000ffff, 0x0502004d, 0x59a800bb, + 0x90000488, 0x0500104a, 0x0501faf6, 0x05020003, + 0x0009f810, 0x0501f046, 0x605a7000, 0x0009f039, + 0x900405b2, 0x05020042, 0x59cc0006, 0x82000500, + 0xffff0000, 0x82000d80, 0x14000000, 0x0502003c, + 0x59a800bb, 0x90000490, 0x05001039, 0x60e27000, + 0x59cc0001, 0x59cc3800, 0x821c3d00, 0x00ffffff, + 0x4c1c0000, 0x0501f835, 0x5c003800, 0x05020030, + 0x05d9fa7c, 0x0502002e, 0x83440480, 0x000007f0, + 0x05001004, 0x83440480, 0x00000800, 0x05001011, + 0x05edf8ed, 0x0500000f, 0x4c180000, 0x05f5f8ef, + 0x5c003000, 0x0500000d, 0x4c180000, 0x05fdff69, + 0x5c003000, 0x05020007, 0x05f5fc25, 0x42026800, + 0x001141b4, 0x481a6802, 0x61fe89ff, 0x0501f003, + 0x05f1facf, 0x05020016, 0x0511fcb6, 0x05000df1, 0x05000013, 0x4926601d, 0x4936600a, 0x83340580, - 0x00110210, 0x05020005, 0x59cc0001, 0x82000500, - 0x00ffffff, 0x4802602a, 0x051dffcd, 0x64126407, - 0x59cc0c04, 0x48066202, 0x0501fa9f, 0x05020003, - 0x0005ffdc, 0x0501f002, 0x0009f000, 0x42000000, - 0x0010e448, 0x052df70f, 0x4803c857, 0x4c580000, + 0x001141b4, 0x05020005, 0x59cc0001, 0x82000500, + 0x00ffffff, 0x4802602a, 0x0521f9b9, 0x64126407, + 0x59cc0c04, 0x48066202, 0x0501fae3, 0x05020003, + 0x0009f810, 0x0501f002, 0x0009f039, 0x42000000, + 0x001123ec, 0x0531f2de, 0x4803c857, 0x4c580000, 0x4c5c0000, 0x4c600000, 0x4c640000, 0x82003500, 0x00ffffff, 0x821c3d00, 0x00ffffff, 0x82181500, 0x00ff0000, 0x82081580, 0x00ff0000, 0x05020013, 0x82181480, 0x00fffffc, 0x05001010, 0x82181580, - 0x00fffffd, 0x05020003, 0x61f6880f, 0x0501f050, + 0x00fffffd, 0x05020003, 0x61f6880f, 0x0501f083, 0x82181580, 0x00fffffe, 0x05020003, 0x61fa880f, - 0x0501f04b, 0x82181580, 0x00fffffc, 0x05020003, - 0x61f2880f, 0x0501f046, 0x41781000, 0x6000b800, - 0x61c0b00f, 0x41acc000, 0x50600000, 0x8000cd40, - 0x05020005, 0x800811c0, 0x05020032, 0x845c155e, - 0x0501f030, 0x58640212, 0x82000500, 0x0000ff00, - 0x05000011, 0x59a8403d, 0x82204500, 0x00ffff00, + 0x0501f07e, 0x82181580, 0x00fffffc, 0x05020003, + 0x61f2880f, 0x0501f079, 0x41781000, 0x6000b800, + 0x4200c000, 0x0010db80, 0x59a8b0ac, 0x50600000, + 0x8000cd40, 0x05020005, 0x800811c0, 0x0502005a, + 0x845c155e, 0x0501f058, 0x82000d00, 0xe0000000, + 0x0500001d, 0x8d0c0538, 0x05000065, 0x8200cd00, + 0x00ffffff, 0x82044580, 0xa0000000, 0x05000016, + 0x82044580, 0x80000000, 0x05020002, 0x0501f012, + 0x8c04053c, 0x0500000d, 0x40640000, 0x80180580, + 0x05020045, 0x4c080000, 0x4c180000, 0x405e8800, + 0x05f1fb5f, 0x4034c800, 0x5c003000, 0x5c001000, + 0x05000005, 0x0501f04e, 0x82040580, 0x20000000, + 0x05ca0951, 0x58640212, 0x82000500, 0x0000ff00, + 0x05000011, 0x59a84040, 0x82204500, 0x00ffff00, 0x82180500, 0x00ffff00, 0x05000002, 0x80200580, - 0x58640002, 0x05020023, 0x82000500, 0x000000ff, - 0x82184500, 0x000000ff, 0x80204580, 0x0502001d, + 0x58640002, 0x0502002c, 0x82000500, 0x000000ff, + 0x82184500, 0x000000ff, 0x80204580, 0x05020026, 0x0501f006, 0x58640002, 0x82000500, 0x00ffffff, - 0x80184580, 0x05020017, 0x4d200000, 0x4c080000, - 0x4c180000, 0x05d9fd13, 0x5c003000, 0x5c001000, - 0x58640813, 0x80040130, 0x81200580, 0x0502000c, - 0x82040500, 0x00ffffff, 0x59240805, 0x80040580, - 0x05000004, 0x812000f0, 0x80040d40, 0x4804c813, - 0x5c024000, 0x405e8800, 0x0501f00d, 0x5c024000, - 0x805cb800, 0x8060c000, 0x8058b040, 0x05fe07c7, - 0x800811c0, 0x05020005, 0x481bc857, 0x481fc857, - 0x90000541, 0x0501f003, 0x840a8d1e, 0x80000580, - 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x5c00b000, - 0x1c01f000, 0x59a80249, 0x8c00050e, 0x05000003, - 0x8c000502, 0x05000009, 0x59cc0003, 0x82000500, - 0x00ff0000, 0x05020005, 0x59cc0c00, 0x80040910, - 0x9004050f, 0x0c01f004, 0x42000000, 0x0010e44a, - 0x052df694, 0x00107159, 0x00107159, 0x00107159, - 0x0010747f, 0x00107159, 0x0010715d, 0x00107184, - 0x0010718a, 0x00107159, 0x00107159, 0x00107159, - 0x00107159, 0x00107159, 0x00107159, 0x00107159, - 0x00107159, 0x4803c856, 0x42000000, 0x0010e44a, - 0x052df680, 0x0501f93e, 0x05000021, 0x59a800b6, - 0x9000048c, 0x0500101e, 0x59300407, 0x90000583, - 0x0502001b, 0x59cc0001, 0x5932680a, 0x813669c0, - 0x05000017, 0x59340802, 0x80040580, 0x82000500, - 0x00ffffff, 0x05020012, 0x0501fc6d, 0x05020010, - 0x59cc0a04, 0x59300202, 0x82001580, 0x0000ffff, - 0x05000003, 0x80040580, 0x05020009, 0x48066202, - 0x59300416, 0x8c00051a, 0x05020005, 0x611a7000, - 0x0501f975, 0x05000002, 0x0009f000, 0x59cc0004, - 0x4803c857, 0x42000000, 0x0010e449, 0x052df659, - 0x59cc0004, 0x4803c857, 0x42000000, 0x0010e449, - 0x052dfe54, 0x1c01f000, 0x0501f911, 0x0500001d, - 0x59a800b6, 0x9000048c, 0x0500101a, 0x59300407, - 0x90000583, 0x05020017, 0x59cc0001, 0x82000500, - 0x00ffffff, 0x5932680a, 0x813669c0, 0x05000011, - 0x59340802, 0x82040d00, 0x00ffffff, 0x80040580, - 0x0502000c, 0x0501fc3e, 0x0502000a, 0x59cc0a04, - 0x48066202, 0x59300416, 0x8c00051a, 0x05020005, - 0x61167000, 0x0501f94c, 0x05000002, 0x0009f000, - 0x59cc0004, 0x4803c857, 0x42000000, 0x0010e449, - 0x052df630, 0x59cc0004, 0x4803c857, 0x59cc0000, - 0x82000500, 0xff000000, 0x59cc1001, 0x82081500, - 0x00ffffff, 0x80080540, 0x4803c857, 0x4817c857, - 0x0501fbfa, 0x05ca0ce8, 0x05020011, 0x05d9fa49, - 0x05ca0ce5, 0x0502000e, 0x59cc0002, 0x82000500, - 0xff000000, 0x90000580, 0x05000004, 0x0501fc7c, - 0x050002e2, 0x0501f006, 0x9004050f, 0x90000c86, - 0x05ca1cd9, 0x05021002, 0x0c01f005, 0x4803c856, - 0x42000000, 0x0010e44a, 0x052df60e, 0x001071d5, - 0x001071d9, 0x001071d5, 0x001071d5, 0x00107248, - 0x0010725e, 0x4803c856, 0x42000000, 0x0010e44a, - 0x052df604, 0x59a800b6, 0x800001c0, 0x05ca0cc6, - 0x05fe07f9, 0x59cc0802, 0x4807c857, 0x8c04052e, - 0x05020024, 0x42026000, 0x00111a70, 0x497a6416, - 0x59cc0001, 0x59cc3800, 0x05fdfee8, 0x05020015, - 0x0001fb00, 0x05020013, 0x59cc3800, 0x821c3d00, - 0x00ffffff, 0x05d9fc3b, 0x05fe07e7, 0x4926601d, - 0x051dfe9f, 0x64166407, 0x64226203, 0x4936600a, - 0x60227001, 0x0501f8fc, 0x05c80cab, 0x05fc07de, - 0x42000000, 0x0010e3b9, 0x052dfde2, 0x0009f000, - 0x4803c857, 0x61fe89ff, 0x417a6800, 0x59cc0001, - 0x82000500, 0x00ffffff, 0x4802602a, 0x05fdf7e7, - 0x59cc0001, 0x4803c857, 0x59cc3800, 0x821c3d00, - 0x00ffffff, 0x4c1c0000, 0x05fdfec4, 0x5c003800, - 0x05ca0c95, 0x05fe07c8, 0x05d9fc1a, 0x05ca0c92, - 0x05fe07c5, 0x05f1fb03, 0x05ca0c8f, 0x05fe07c2, - 0x59cc0005, 0x8c000500, 0x05020010, 0x59340200, - 0x8c00050e, 0x05ca0c88, 0x05fe07bb, 0x59a828d0, - 0x82140d00, 0x0000f000, 0x82040580, 0x00003000, - 0x05c80c81, 0x05fc07b4, 0x82040580, 0x00002000, - 0x05c80c7d, 0x05fc07b0, 0x05f5f80b, 0x05020014, - 0x0501f873, 0x05c80c78, 0x05fc07ab, 0x42026000, - 0x00111a70, 0x4926601d, 0x4936600a, 0x497a6416, - 0x051dfe5f, 0x640a6407, 0x64226203, 0x60227001, - 0x0501f8bd, 0x05c80c6c, 0x05fc079f, 0x42000000, - 0x0010e3b9, 0x052dfda3, 0x0009f000, 0x0511f9c8, - 0x05000bfe, 0x05fc0798, 0x4926601d, 0x4936600a, - 0x051dfe4f, 0x64126407, 0x59cc0c04, 0x48066202, - 0x60067000, 0x0501f8ac, 0x000407dc, 0x0009f000, - 0x59cc0802, 0x8c04052e, 0x05020004, 0x0501f84e, - 0x0500000c, 0x0501f007, 0x0501f84d, 0x0500000b, - 0x0501fb6b, 0x05020009, 0x59cc0a04, 0x48066202, - 0x60267001, 0x0501f89c, 0x05000004, 0x0009f000, - 0x0501f81f, 0x05fc07fb, 0x4933c857, 0x42000000, - 0x0010e448, 0x052df57f, 0x59cc0004, 0x4803c857, - 0x59a800b6, 0x90000484, 0x05001011, 0x59cc0802, - 0x8c04052e, 0x05020004, 0x0501f833, 0x0500000c, - 0x0501f007, 0x0501f832, 0x05000009, 0x0501fb50, - 0x05020007, 0x59cc0a04, 0x48066202, 0x602a7001, - 0x0501f881, 0x05000002, 0x0009f000, 0x4933c857, - 0x42000000, 0x0010e448, 0x052df566, 0x4933c857, - 0x59300407, 0x90000585, 0x05020005, 0x59300216, - 0x59cc0a07, 0x80040580, 0x05000019, 0x59cc1407, - 0x41526000, 0x59a80898, 0x59a80099, 0x80040480, - 0x05000013, 0x81300800, 0x41540000, 0x80040480, - 0x0502100f, 0x59300202, 0x80080580, 0x05020007, - 0x5930002a, 0x59cc1001, 0x82081500, 0x00ffffff, - 0x80080580, 0x05000006, 0x91326430, 0x41540000, - 0x81300480, 0x05fc17f4, 0x05c9fb44, 0x4933c857, - 0x1c01f000, 0x59cc0a04, 0x0501f002, 0x59cc0c04, - 0x59a804dd, 0x59a8109a, 0x80080400, 0x80040480, - 0x05021007, 0x800400ca, 0x800408c8, 0x80040c00, - 0x82066400, 0x00111b00, 0x1c01f000, 0x80000580, - 0x05fdf7fe, 0x4803c856, 0x90040507, 0x0c01f001, - 0x001072b4, 0x001072c9, 0x001072de, 0x001072ed, - 0x001072ed, 0x001072ed, 0x001072ed, 0x001072ed, - 0x59cc0802, 0x8c04052e, 0x05000010, 0x05fdffe4, - 0x05000007, 0x59cc0802, 0x90040d30, 0x90040d90, - 0x05000006, 0x61827000, 0x0009f000, 0x42000000, - 0x0010e448, 0x052df51b, 0x59300416, 0x8400055c, - 0x48026416, 0x051df50f, 0x05fdffd3, 0x05fc07f8, - 0x05fdf7f1, 0x59cc0802, 0x8c04052e, 0x05000010, - 0x05fdffcf, 0x05000007, 0x59cc0802, 0x90040d30, - 0x90040d90, 0x05000006, 0x61867000, 0x0009f000, - 0x42000000, 0x0010e448, 0x052df506, 0x59300416, - 0x8400055c, 0x48026416, 0x051df4fa, 0x05fdffbe, - 0x05fc07f8, 0x05fdf7f1, 0x82140500, 0x0000f000, - 0x82000580, 0x00002000, 0x0502000b, 0x59cc0802, - 0x8c04052e, 0x05000008, 0x05fdffb5, 0x05000006, - 0x59300416, 0x8c000510, 0x05000003, 0x618a7000, - 0x0009f000, 0x42000000, 0x0010e448, 0x052dfced, - 0x1c01f000, 0x59a828d0, 0x8c14051a, 0x0500000c, - 0x4803c856, 0x4d300000, 0x5930100a, 0x4c080000, - 0x0511f90b, 0x5c001000, 0x05000003, 0x59cc2a04, - 0x0501f910, 0x5c026000, 0x1c01f000, 0x90000541, - 0x1c01f000, 0x4803c856, 0x4c0c0000, 0x4d340000, - 0x59cc0006, 0x82000500, 0xffff0000, 0x82000580, - 0x01000000, 0x05000028, 0x5932680a, 0x59a81a49, - 0x05f5fda2, 0x05020024, 0x813669c0, 0x0500001b, - 0x83340580, 0x00110210, 0x05000018, 0x59340403, - 0x82000580, 0x000007fe, 0x05020014, 0x59cc0408, - 0x8c000518, 0x05000018, 0x5930001d, 0x82000580, - 0x0010e512, 0x05020014, 0x59a804cc, 0x8c00050a, + 0x80184580, 0x05020020, 0x50600000, 0x82004500, + 0xe0000000, 0x82204580, 0x80000000, 0x05020004, + 0x82000540, 0xa0000000, 0x4400c000, 0x4d200000, + 0x4c080000, 0x4c180000, 0x05d9f9da, 0x5c003000, + 0x5c001000, 0x58640813, 0x80040130, 0x81200580, + 0x0502000c, 0x82040500, 0x00ffffff, 0x59240805, + 0x80040580, 0x05000004, 0x812000f0, 0x80040d40, + 0x4804c813, 0x5c024000, 0x405e8800, 0x0501f017, + 0x5c024000, 0x805cb800, 0x8060c000, 0x825c4580, + 0x000007f0, 0x05020008, 0x59a800ad, 0x82000580, + 0x00000800, 0x05000006, 0x6000b810, 0x4200c000, + 0x0010e380, 0x8058b040, 0x05fe0795, 0x800811c0, + 0x05020005, 0x481bc857, 0x481fc857, 0x90000541, + 0x0501f003, 0x840a8d1e, 0x80000580, 0x5c00c800, + 0x5c00c000, 0x5c00b800, 0x5c00b000, 0x1c01f000, + 0x59a8024c, 0x8c00050e, 0x05000003, 0x8c000502, + 0x05000009, 0x59cc0003, 0x82000500, 0x00ff0000, + 0x05020005, 0x59cc0c00, 0x80040910, 0x9004050f, + 0x0c01f004, 0x42000000, 0x001123ee, 0x0531f230, + 0x00107538, 0x00107538, 0x00107538, 0x0010786f, + 0x00107538, 0x0010753c, 0x00107563, 0x00107569, + 0x00107538, 0x00107538, 0x00107538, 0x00107538, + 0x00107538, 0x00107538, 0x00107538, 0x00107538, + 0x4803c856, 0x42000000, 0x001123ee, 0x0531f21c, + 0x0501f94d, 0x05000021, 0x59a800bb, 0x9000048c, + 0x0500101e, 0x59300407, 0x90000583, 0x0502001b, + 0x59cc0001, 0x5932680a, 0x813669c0, 0x05000017, + 0x59340802, 0x80040580, 0x82000500, 0x00ffffff, + 0x05020012, 0x0501fca8, 0x05020010, 0x59cc0a04, + 0x59300202, 0x82001580, 0x0000ffff, 0x05000003, + 0x80040580, 0x05020009, 0x48066202, 0x59300416, + 0x8c00051a, 0x05020005, 0x611a7000, 0x0501f987, + 0x05000002, 0x0009f039, 0x59cc0004, 0x4803c857, + 0x42000000, 0x001123ed, 0x0531f1f5, 0x59cc0004, + 0x4803c857, 0x42000000, 0x001123ed, 0x0531f9f0, + 0x1c01f000, 0x0501f920, 0x0500001d, 0x59a800bb, + 0x9000048c, 0x0500101a, 0x59300407, 0x90000583, + 0x05020017, 0x59cc0001, 0x82000500, 0x00ffffff, + 0x5932680a, 0x813669c0, 0x05000011, 0x59340802, + 0x82040d00, 0x00ffffff, 0x80040580, 0x0502000c, + 0x0501fc79, 0x0502000a, 0x59cc0a04, 0x48066202, + 0x59300416, 0x8c00051a, 0x05020005, 0x61167000, + 0x0501f95e, 0x05000002, 0x0009f039, 0x59cc0004, + 0x4803c857, 0x42000000, 0x001123ed, 0x0531f1cc, + 0x59cc0004, 0x4803c857, 0x59cc0000, 0x82000500, + 0xff000000, 0x59cc1001, 0x82081500, 0x00ffffff, + 0x80080540, 0x4803c857, 0x4817c857, 0x0501fc35, + 0x05ca0938, 0x05020011, 0x05d5ff02, 0x05ca0935, + 0x0502000e, 0x59cc0002, 0x82000500, 0xff000000, + 0x90000580, 0x05000004, 0x0501fcb7, 0x050002f3, + 0x0501f006, 0x9004050f, 0x90000c86, 0x05ca1929, + 0x05021002, 0x0c01f005, 0x4803c856, 0x42000000, + 0x001123ee, 0x0531f1aa, 0x001075b4, 0x001075b8, + 0x001075b4, 0x001075b4, 0x00107636, 0x0010764c, + 0x4803c856, 0x42000000, 0x001123ee, 0x0531f1a0, + 0x59a800bb, 0x800001c0, 0x05ca0916, 0x05fe07f9, + 0x59cc0802, 0x4807c857, 0x8c04052e, 0x05020024, + 0x42026000, 0x00115a14, 0x497a6416, 0x59cc0001, + 0x59cc3800, 0x05fdfeb5, 0x05020015, 0x0001fb08, + 0x05020013, 0x59cc3800, 0x821c3d00, 0x00ffffff, + 0x05d9f8f8, 0x05fe07e7, 0x4926601d, 0x0521f858, + 0x64166407, 0x64226203, 0x4936600a, 0x60227001, + 0x0501f90e, 0x05c808fb, 0x05fc07de, 0x42000000, + 0x0011235a, 0x0531f97e, 0x0009f039, 0x4803c857, + 0x61fe89ff, 0x417a6800, 0x59cc0001, 0x82000500, + 0x00ffffff, 0x4802602a, 0x05fdf7e7, 0x59cc0001, + 0x4803c857, 0x59cc3800, 0x821c3d00, 0x00ffffff, + 0x4c1c0000, 0x05fdfe91, 0x5c003800, 0x05ca08e5, + 0x05fe07c8, 0x05d9f8d7, 0x05ca08e2, 0x05fe07c5, + 0x05e9ff4d, 0x05000007, 0x0001fb08, 0x05000008, + 0x05f5fa8b, 0x42026800, 0x001141b4, 0x0501f004, + 0x05f1f937, 0x05ca08d7, 0x05fe07ba, 0x59cc0005, + 0x8c000500, 0x05020010, 0x59340200, 0x8c00050e, + 0x05ca08d0, 0x05fe07b3, 0x59a828d5, 0x82140d00, + 0x0000f000, 0x82040580, 0x00003000, 0x05c808c9, + 0x05fc07ac, 0x82040580, 0x00002000, 0x05c808c5, + 0x05fc07a8, 0x05f1feed, 0x05020014, 0x0501f87a, + 0x05c808c0, 0x05fc07a3, 0x42026000, 0x00115a14, + 0x4926601d, 0x4936600a, 0x497a6416, 0x0521f810, + 0x640a6407, 0x64226203, 0x60227001, 0x0501f8c7, + 0x05c808b4, 0x05fc0797, 0x42000000, 0x0011235a, + 0x0531f937, 0x0009f039, 0x0511faf6, 0x05000c31, + 0x05fc0790, 0x4926601d, 0x4936600a, 0x0521f800, + 0x64126407, 0x59cc0c04, 0x48066202, 0x60067000, + 0x0501f8b6, 0x00080010, 0x83340580, 0x001141b4, + 0x000a0039, 0x59cc0001, 0x82000500, 0x00ffffff, + 0x4802602a, 0x0009f039, 0x59cc0802, 0x8c04052e, + 0x05020004, 0x0501f84e, 0x0500000c, 0x0501f007, + 0x0501f84d, 0x0500000b, 0x0501fb97, 0x05020009, + 0x59cc0a04, 0x48066202, 0x60267001, 0x0501f89f, + 0x05000004, 0x0009f039, 0x0501f81f, 0x05fc07fb, + 0x4933c857, 0x42000000, 0x001123ec, 0x0531f10c, + 0x59cc0004, 0x4803c857, 0x59a800bb, 0x90000484, + 0x05001011, 0x59cc0802, 0x8c04052e, 0x05020004, + 0x0501f833, 0x0500000c, 0x0501f007, 0x0501f832, + 0x05000009, 0x0501fb7c, 0x05020007, 0x59cc0a04, + 0x48066202, 0x602a7001, 0x0501f884, 0x05000002, + 0x0009f039, 0x4933c857, 0x42000000, 0x001123ec, + 0x0531f0f3, 0x4933c857, 0x59300407, 0x90000585, + 0x05020005, 0x59300216, 0x59cc0a07, 0x80040580, + 0x05000019, 0x59cc1407, 0x41526000, 0x59a8089b, + 0x59a8009c, 0x80040480, 0x05000013, 0x81300800, + 0x41540000, 0x80040480, 0x0502100f, 0x59300202, + 0x80080580, 0x05020007, 0x5930002a, 0x59cc1001, + 0x82081500, 0x00ffffff, 0x80080580, 0x05000006, + 0x91326430, 0x41540000, 0x81300480, 0x05fc17f4, + 0x05c5ff91, 0x4933c857, 0x1c01f000, 0x59cc0a04, + 0x0501f002, 0x59cc0c04, 0x0531fa24, 0x59a8003d, + 0x05000002, 0x59a804e2, 0x59a8109d, 0x80080400, + 0x80040480, 0x05021007, 0x800400ca, 0x800408c8, + 0x80040c00, 0x82066400, 0x00115aa4, 0x1c01f000, + 0x80000580, 0x05fdf7fe, 0x4803c856, 0x90040507, + 0x0c01f001, 0x001076a5, 0x001076ba, 0x001076cf, + 0x001076de, 0x001076de, 0x001076de, 0x001076de, + 0x001076de, 0x59cc0802, 0x8c04052e, 0x05000010, + 0x05fdffe1, 0x05000007, 0x59cc0802, 0x90040d30, + 0x90040d90, 0x05000006, 0x61827000, 0x0009f039, + 0x42000000, 0x001123ec, 0x0531f0a5, 0x59300416, + 0x8400055c, 0x48026416, 0x051df6b6, 0x05fdffd0, + 0x05fc07f8, 0x05fdf7f1, 0x59cc0802, 0x8c04052e, + 0x05000010, 0x05fdffcc, 0x05000007, 0x59cc0802, + 0x90040d30, 0x90040d90, 0x05000006, 0x61867000, + 0x0009f039, 0x42000000, 0x001123ec, 0x0531f090, + 0x59300416, 0x8400055c, 0x48026416, 0x051df6a1, + 0x05fdffbb, 0x05fc07f8, 0x05fdf7f1, 0x82140500, + 0x0000f000, 0x82000580, 0x00002000, 0x0502000b, + 0x59cc0802, 0x8c04052e, 0x05000008, 0x05fdffb2, + 0x05000006, 0x59300416, 0x8c000510, 0x05000003, + 0x618a7000, 0x0009f039, 0x42000000, 0x001123ec, + 0x0531f877, 0x1c01f000, 0x59a828d5, 0x8c14051a, + 0x0500000c, 0x4803c856, 0x4d300000, 0x5930100a, + 0x4c080000, 0x0511fa2f, 0x5c001000, 0x05000003, + 0x59cc2a04, 0x0501f90f, 0x5c026000, 0x1c01f000, + 0x90000541, 0x1c01f000, 0x4803c856, 0x4c0c0000, + 0x4d340000, 0x59cc0006, 0x82000500, 0xffff0000, + 0x82000580, 0x01000000, 0x05000027, 0x5932680a, + 0x59a81a4c, 0x05f5fc9b, 0x05020023, 0x813669c0, + 0x0500001a, 0x83340580, 0x001141b4, 0x05000017, + 0x59340403, 0x82000580, 0x000007fe, 0x05020013, + 0x59cc0408, 0x8c000518, 0x05000017, 0x59300403, + 0x90000582, 0x05020014, 0x59a804d1, 0x8c00050a, 0x05020011, 0x59cc0207, 0x80000540, 0x05020002, - 0x60040000, 0x48038893, 0x48035040, 0x84000560, + 0x60040000, 0x48038893, 0x48035043, 0x84000560, 0x480388b3, 0x0501f008, 0x59300403, 0x90000582, 0x05000003, 0x91380597, 0x05020003, 0x8c0c0508, 0x05fe07f1, 0x5c026800, 0x5c001800, 0x1c01f000, - 0x59a828d0, 0x8c14051a, 0x05000018, 0x4803c856, - 0x4d300000, 0x4c5c0000, 0x4130b800, 0x0511f8c8, + 0x59a828d5, 0x8c14051a, 0x05000018, 0x4803c856, + 0x4d300000, 0x4c5c0000, 0x4130b800, 0x0511f9ed, 0x0500000f, 0x485e602a, 0x585c0407, 0x90000581, - 0x05020008, 0x4d300000, 0x405e6000, 0x051dfc86, + 0x05020008, 0x4d300000, 0x405e6000, 0x051dfe2e, 0x5c026000, 0x05000003, 0x4a026416, 0x00000080, 0x585c100a, 0x59cc2a04, 0x0501f8c2, 0x5c00b800, 0x5c026000, 0x1c01f000, 0x90000541, 0x1c01f000, - 0x59a828d0, 0x8c14051a, 0x05000011, 0x4803c856, + 0x59a828d5, 0x8c14051a, 0x05000011, 0x4803c856, 0x4d300000, 0x4c5c0000, 0x4130b800, 0x4a026416, - 0x00000100, 0x0511f8aa, 0x05000006, 0x485e602a, + 0x00000100, 0x0511f9cf, 0x05000006, 0x485e602a, 0x585c2c02, 0x585c100a, 0x405c2000, 0x0501f8b1, 0x5c00b800, 0x5c026000, 0x1c01f000, 0x90000541, - 0x1c01f000, 0x59a828d0, 0x8c14051a, 0x05000017, + 0x1c01f000, 0x59a828d5, 0x8c14051a, 0x05000017, 0x4803c856, 0x4d300000, 0x4c5c0000, 0x4130b800, - 0x4a026416, 0x00000100, 0x0511f895, 0x05000acb, - 0x0500000b, 0x493a6403, 0x485e602a, 0x051dfc56, + 0x4a026416, 0x00000100, 0x0511f9ba, 0x05000af5, + 0x0500000b, 0x493a6403, 0x485e602a, 0x051dfdfe, 0x05000003, 0x4a026416, 0x00000080, 0x585c2c02, 0x585c100a, 0x405c2000, 0x0501f896, 0x5c00b800, 0x5c026000, 0x1c01f000, 0x90000541, 0x1c01f000, 0x4803c856, 0x4c600000, 0x4c640000, 0x4c5c0000, - 0x4d200000, 0x4d240000, 0x4200c000, 0x00110202, + 0x4d200000, 0x4d240000, 0x4200c000, 0x001141a6, 0x5930c80a, 0x8064c9c0, 0x05020015, 0x58603800, - 0x821c3d00, 0x00ffffff, 0x4c1c0000, 0x05d9fa99, + 0x821c3d00, 0x00ffffff, 0x4c1c0000, 0x05d5ff45, 0x5c003800, 0x05020064, 0x4d340000, 0x58600001, - 0x82000500, 0x00ffffff, 0x0501f9f2, 0x05ca0a43, - 0x4936600a, 0x59341200, 0x5c026800, 0x0501fa25, + 0x82000500, 0x00ffffff, 0x0501f9f2, 0x05c60e8e, + 0x4936600a, 0x59341200, 0x5c026800, 0x0501fa4f, 0x4a026416, 0x00000100, 0x65126403, 0x58601006, 0x82081500, 0x0000f000, 0x82080480, 0x00002000, 0x05001058, 0x42002000, 0xc0000000, 0x5930100a, @@ -7442,7 +7694,7 @@ static const uint32_t isp_2500_risc_code[] = { 0x0500000d, 0x82140580, 0x00002000, 0x05000047, 0x8064c9c0, 0x05000004, 0x58600402, 0x8c000526, 0x05000040, 0x42002000, 0xc1000000, 0x41783000, - 0x0501f002, 0x60043000, 0x4130b800, 0x0511f840, + 0x0501f002, 0x60043000, 0x4130b800, 0x0511f965, 0x05000031, 0x58601804, 0x8064c9c0, 0x05020006, 0x65126403, 0x585c0402, 0x820c1d00, 0xffff0000, 0x800c1d40, 0x58600000, 0x58600801, 0x58601003, @@ -7453,7 +7705,7 @@ static const uint32_t isp_2500_risc_code[] = { 0x80040540, 0x90000561, 0x48026018, 0x585c0416, 0x58600802, 0x585c1407, 0x8c00051c, 0x05020023, 0x48026416, 0x4806601b, 0x480a6407, 0x643e6203, - 0x640e6006, 0x4c100000, 0x050dfd7d, 0x0505fc73, + 0x640e6006, 0x4c100000, 0x050dfe77, 0x0505fd3c, 0x5c002000, 0x82100580, 0xc2000000, 0x05000015, 0x90000541, 0x405e6000, 0x5c024800, 0x5c024000, 0x5c00b800, 0x5c00c800, 0x5c00c000, 0x1c01f000, @@ -7464,7 +7716,7 @@ static const uint32_t isp_2500_risc_code[] = { 0x4803c856, 0x41782000, 0x0501f805, 0x1c01f000, 0x4803c856, 0x0501f802, 0x1c01f000, 0x4813c857, 0x59300416, 0x84000550, 0x48026416, 0x4816621d, - 0x480a600a, 0x82080580, 0x00110210, 0x05020002, + 0x480a600a, 0x82080580, 0x001141b4, 0x05020002, 0x41781000, 0x493a6403, 0x643e6203, 0x59cc0000, 0x82000500, 0x00ffffff, 0x48026019, 0x82000500, 0x000000ff, 0x800000e0, 0x59cc0801, 0x82040d00, @@ -7472,8 +7724,8 @@ static const uint32_t isp_2500_risc_code[] = { 0x800811c0, 0x0500000a, 0x58080a12, 0x0501f002, 0x800408d0, 0x80040540, 0x90000561, 0x4803c857, 0x4807c857, 0x48026018, 0x0501f00e, 0x4c000000, - 0x4c040000, 0x05f5fc75, 0x5c000800, 0x5c000000, - 0x05000007, 0x59a81a49, 0x8c0c0506, 0x05fc07f1, + 0x4c040000, 0x05f5fb6f, 0x5c000800, 0x5c000000, + 0x05000007, 0x59a81a4c, 0x8c0c0506, 0x05fc07f1, 0x90000561, 0x48026018, 0x0501f002, 0x64866018, 0x59cc0404, 0x4802641d, 0x59cc0002, 0x4802601b, 0x59cc0403, 0x4802641c, 0x59cc0203, 0x4802621c, @@ -7483,39 +7735,39 @@ static const uint32_t isp_2500_risc_code[] = { 0x8c000504, 0x0502001c, 0x42002800, 0xc1000000, 0x801021c0, 0x05000002, 0x64082008, 0x40142000, 0x41783000, 0x0501f003, 0x40142000, 0x60043000, - 0x050dfd07, 0x0505fbfd, 0x90000541, 0x1c01f000, + 0x050dfe01, 0x0505fcc6, 0x90000541, 0x1c01f000, 0x42002000, 0xc2000000, 0x42003000, 0x02120000, 0x0501f005, 0x42002000, 0xc2000000, 0x42003000, - 0x01050000, 0x050dfcfa, 0x0505fbf0, 0x80000580, + 0x01050000, 0x050dfdf4, 0x0505fcb9, 0x80000580, 0x05fdf7f3, 0x59cc1002, 0x82081500, 0x00003000, 0x82080580, 0x00001000, 0x05fc07e8, 0x82080580, 0x00002000, 0x05fc07eb, 0x05fdf7dc, 0x59cc0802, - 0x8c04052e, 0x0502001d, 0x05fdfe17, 0x0500001b, + 0x8c04052e, 0x0502001d, 0x05fdfe15, 0x0500001b, 0x59300407, 0x90000586, 0x05020018, 0x59cc0001, 0x82000500, 0x00ffffff, 0x5932680a, 0x813669c0, 0x05000012, 0x59340802, 0x82040d00, 0x00ffffff, - 0x80040580, 0x0502000d, 0x0501f949, 0x0502000b, - 0x59a800b6, 0x800001c0, 0x05020008, 0x61467000, + 0x80040580, 0x0502000d, 0x0501f973, 0x0502000b, + 0x59a800bb, 0x800001c0, 0x05020008, 0x61467000, 0x59300416, 0x8c00051a, 0x05020004, 0x05fdfeb5, - 0x05000002, 0x0009f000, 0x59cc0004, 0x4803c857, - 0x42000000, 0x0010e449, 0x052df33a, 0x4803c856, + 0x05000002, 0x0009f039, 0x59cc0004, 0x4803c857, + 0x42000000, 0x001123ed, 0x052df6c5, 0x4803c856, 0x60143002, 0x0501f004, 0x601c3004, 0x0501f802, 0x1c01f000, 0x481bc857, 0x4c5c0000, 0x4c600000, 0x4c640000, 0x41ccc800, 0x4014b800, 0x4018c000, 0x0501f805, 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x4803c856, 0x4c580000, 0x58640400, 0x82000500, 0x0000f000, 0x82000580, 0x0000c000, - 0x05000024, 0x050dff46, 0x05000025, 0x58640001, + 0x05000024, 0x0511f86b, 0x05000025, 0x58640001, 0x58643800, 0x821c3d00, 0x00ffffff, 0x4c1c0000, - 0x05fdfc0a, 0x5c003800, 0x0502001c, 0x05d9f961, - 0x0502001a, 0x05f1f84b, 0x05020018, 0x4936600a, - 0x051dfbc3, 0x05c9fcb5, 0x05000014, 0x4926601d, + 0x05fdfbc6, 0x5c003800, 0x0502001c, 0x05d5fe0d, + 0x0502001a, 0x05edfe76, 0x05020018, 0x4936600a, + 0x051dfd6b, 0x05c9f8fc, 0x05000014, 0x4926601d, 0x492e6019, 0x497a5800, 0x497a5a08, 0x485e5c08, - 0x912cac09, 0x601cb000, 0x4064a000, 0x052dfbd0, - 0x42000000, 0x0010e3b7, 0x052dfb02, 0x4862641c, - 0x64fa6403, 0x64066407, 0x64066203, 0x0505fb92, - 0x5c00b000, 0x1c01f000, 0x0005ffdc, 0x42000000, - 0x0010e448, 0x052dfaf7, 0x05fdf7fa, 0x4803c856, + 0x912cac09, 0x601cb000, 0x4064a000, 0x052dff5b, + 0x42000000, 0x00112358, 0x052dfe8d, 0x4862641c, + 0x64fa6403, 0x64066407, 0x64066203, 0x0505fc5b, + 0x5c00b000, 0x1c01f000, 0x0009f810, 0x42000000, + 0x001123ec, 0x052dfe82, 0x05fdf7fa, 0x4803c856, 0x59cc0000, 0x82000d00, 0x00ffffff, 0x82040580, 0x00fffff0, 0x05000075, 0x59cc0400, 0x82000d00, 0x0000ff00, 0x82040500, 0x0000f000, 0x840409c0, @@ -7525,35 +7777,35 @@ static const uint32_t isp_2500_risc_code[] = { 0x82000500, 0xffff0000, 0x82000d80, 0x04000000, 0x0500005e, 0x82000d80, 0x60000000, 0x0500005b, 0x82000d80, 0x54000000, 0x05000058, 0x82000d80, - 0x03000000, 0x0502001e, 0x59a80a49, 0x8c040508, + 0x03000000, 0x0502001e, 0x59a80a4c, 0x8c040508, 0x05020052, 0x8c040502, 0x05020060, 0x82000d80, 0x03000000, 0x05020008, 0x82140d00, 0x0000f000, - 0x82040d80, 0x00003000, 0x05020003, 0x05f5fb93, - 0x05000046, 0x05f1fbbb, 0x05000046, 0x59a80046, - 0x800000d0, 0x59a8083d, 0x82040d00, 0x000000ff, + 0x82040d80, 0x00003000, 0x05020003, 0x05f5fa8d, + 0x05000046, 0x05f1fa3d, 0x05000046, 0x59a80049, + 0x800000d0, 0x59a80840, 0x82040d00, 0x000000ff, 0x80040540, 0x59cc0800, 0x82040d00, 0x00ffffff, 0x80040580, 0x05020037, 0x0501f038, 0x59c40802, 0x8c04050c, 0x0502001e, 0x82000d80, 0x52000000, 0x05fc07ed, 0x82000d80, 0x05000000, 0x05fc07ea, 0x82000d80, 0x50000000, 0x05fc07e7, 0x0501f029, - 0x900405a3, 0x05020027, 0x05fdfd61, 0x05000025, + 0x900405a3, 0x05020027, 0x05fdfd5f, 0x05000025, 0x59300c03, 0x90040582, 0x05000024, 0xb0040591, - 0x05000022, 0x0501f00a, 0x05fdfd59, 0x0500001d, + 0x05000022, 0x0501f00a, 0x05fdfd57, 0x0500001d, 0x59300403, 0x90000582, 0x0502001a, 0x59300203, - 0x9000058e, 0x05020017, 0x0501f018, 0x59a80249, - 0x8c000514, 0x05fc07f5, 0x4c580000, 0x052dfba5, + 0x9000058e, 0x05020017, 0x0501f018, 0x59a8024c, + 0x8c000514, 0x05fc07f5, 0x4c580000, 0x052dff30, 0xb0582481, 0x5c00b000, 0x0500100e, 0x59cc0800, - 0x82040d00, 0x00ffffff, 0x42001000, 0x0010e852, + 0x82040d00, 0x00ffffff, 0x42001000, 0x001127f6, 0x58080005, 0x80040580, 0x05000008, 0x801021c0, 0x05000004, 0x80102040, 0x9008140d, 0x05fdf7f9, 0x80000580, 0x0501f002, 0x90000541, 0x1c01f000, 0x59cc0006, 0x82000500, 0xffff0000, 0x82000d80, 0x03000000, 0x05000004, 0x82000d80, 0x52000000, - 0x05fe07f4, 0x59a80249, 0x90000509, 0x90000588, - 0x05fc07f2, 0x05fdf7ef, 0x59a828d0, 0x82140500, + 0x05fe07f4, 0x59a8024c, 0x90000509, 0x90000588, + 0x05fc07f2, 0x05fdf7ef, 0x59a828d5, 0x82140500, 0x0000f000, 0x82000580, 0x00003000, 0x05fe07eb, - 0x05f5fb36, 0x05fe07e9, 0x59a80046, 0x800000d0, - 0x59a8083d, 0x82040d00, 0x000000ff, 0x80040540, + 0x05f5fa30, 0x05fe07e9, 0x59a80049, 0x800000d0, + 0x59a80840, 0x82040d00, 0x000000ff, 0x80040540, 0x59cc0800, 0x82040d00, 0x00ffffff, 0x80040580, 0x05fc07de, 0x60043002, 0x05fdff23, 0x05fdf7d9, 0x4803c857, 0x4c580000, 0x40003000, 0x61c0200f, @@ -7561,253 +7813,305 @@ static const uint32_t isp_2500_risc_code[] = { 0x05000013, 0x59340002, 0x82000500, 0x00ffffff, 0x80180580, 0x0502000e, 0x59341013, 0x80080130, 0x81200580, 0x0502000a, 0x82080500, 0x00ffffff, - 0x59240805, 0x80040580, 0x05000011, 0x812000f0, - 0x80040d40, 0x48066813, 0x0501f00d, 0x80102000, + 0x59240805, 0x80040580, 0x0500003b, 0x812000f0, + 0x80040d40, 0x48066813, 0x0501f037, 0x80102000, 0x80387000, 0x8058b040, 0x05fe07e8, 0x82100480, - 0x00000800, 0x60002000, 0x61c0b00f, 0x41ac7000, - 0x05fe17e2, 0x90000541, 0x0501f002, 0x40128800, - 0x5c00b000, 0x1c01f000, 0x59a80249, 0x8c00050e, - 0x05000004, 0x8c000502, 0x05000003, 0x80000580, - 0x1c01f000, 0x90000541, 0x05fdf7fe, 0x59300c07, - 0x90040582, 0x05000002, 0x90040585, 0x1c01f000, - 0x60080800, 0x8c080508, 0x05000007, 0x8c08050c, - 0x05000004, 0x8c080504, 0x05020004, 0x90040d44, - 0x48066008, 0x1c01f000, 0x42001800, 0x00110202, - 0x580c1202, 0x82081500, 0x00003000, 0x82080580, - 0x00001000, 0x05fc07f7, 0x82080580, 0x00002000, - 0x05fc07f5, 0x05fdf7f2, 0x59c80000, 0x84000558, - 0x84000512, 0x48039000, 0x1c01f000, 0x59cc0800, - 0x59340013, 0x82000500, 0x00ffffff, 0x80040580, - 0x82000500, 0x00ffffff, 0x0502000b, 0x59a808d0, - 0x8c040516, 0x05000008, 0x42000800, 0x001102fe, - 0x50040800, 0x59340014, 0x80040580, 0x82000500, - 0x00001fff, 0x1c01f000, 0x82140500, 0x0000f000, - 0x05000006, 0x82000c80, 0x00004000, 0x0502100a, - 0x80000580, 0x1c01f000, 0x59cc0400, 0x82000500, - 0x0000ff00, 0x82000580, 0x00008100, 0x05fc07fa, - 0x0501f012, 0x4817c857, 0x82140500, 0x000003ff, - 0x05020007, 0x59cc0400, 0x82000500, 0x0000ff00, - 0x82000580, 0x00008100, 0x05020008, 0x42000000, - 0x0010e4ae, 0x052df9d3, 0x05fdfe99, 0x4803c856, - 0x90000541, 0x05fdf7e8, 0x41780000, 0x05fdf7e6, - 0x05f5fa9e, 0x0500000e, 0x59c400a4, 0x4803c857, - 0x9000050f, 0x9000058a, 0x05020009, 0x497b50b6, - 0x59c400a3, 0x82000540, 0x00080000, 0x480388a3, - 0x82000500, 0xfff7ffff, 0x480388a3, 0x4c140000, - 0x05e9faf6, 0x05020016, 0x916c0583, 0x05000014, - 0x42000000, 0x0010e4c0, 0x052df9b9, 0x59c40006, - 0x84000500, 0x48038806, 0x0509fa2b, 0x497b8880, - 0x59c400a3, 0x82000500, 0xfcf8ffff, 0x480388a3, - 0x6012d800, 0x64078805, 0x05c9f9cc, 0x05d1fed9, - 0x497b5068, 0x64075075, 0x05d5fb17, 0x5c002800, - 0x4817c856, 0x052df0e9, 0x42000000, 0x0010e3b8, - 0x052df9a0, 0x80000580, 0x1c01f000, 0x82140500, - 0x0000f000, 0x82006d80, 0x00003000, 0x05000003, - 0x82006d80, 0x00005000, 0x1c01f000, 0x4a032824, - 0x000003e8, 0x4a032802, 0x00111b00, 0x64032800, - 0x4a032808, 0x001089a9, 0x60140000, 0x91947c09, - 0x49787801, 0x4a007804, 0x00108954, 0x903c7c05, - 0x80000040, 0x05fe07fb, 0x4a032823, 0xffff0000, - 0x497b2832, 0x4a032833, 0x00103e7f, 0x0501fb54, - 0x6191d000, 0x0501f9c2, 0x4201d000, 0x000186a0, - 0x0501f1cf, 0x00000000, 0x00000005, 0x0000000a, - 0x0000000f, 0x00000014, 0x00000002, 0x00000008, - 0x00000020, 0x00000080, 0x00000200, 0x4d300000, - 0x4d2c0000, 0x4d340000, 0x4d400000, 0x4cfc0000, - 0x4d380000, 0x4d3c0000, 0x4d440000, 0x4d4c0000, - 0x4d480000, 0x4c5c0000, 0x4c600000, 0x4c640000, - 0x4d040000, 0x0005fc98, 0x5c020800, 0x5c00c800, - 0x5c00c000, 0x5c00b800, 0x5c029000, 0x5c029800, - 0x5c028800, 0x5c027800, 0x5c027000, 0x5c01f800, - 0x5c028000, 0x5c026800, 0x5c025800, 0x5c026000, - 0x1c01f000, 0x59940004, 0x80000540, 0x05020006, - 0x480b2805, 0x0501f81c, 0x48032804, 0x642b2803, - 0x80000580, 0x1c01f000, 0x59940029, 0x80000540, - 0x0502000b, 0x5994002f, 0x80040400, 0x05c41f43, - 0x5994082e, 0x80040400, 0x05c41f40, 0x48032829, - 0x480b282a, 0x64072828, 0x80000580, 0x1c01f000, - 0x5994002c, 0x80000540, 0x05020006, 0x480b282d, - 0x0501f805, 0x4803282c, 0x642b282b, 0x80000580, - 0x1c01f000, 0x4c0c0000, 0x5994182f, 0x5994002e, - 0x800c0400, 0x05c41f2d, 0x05000004, 0x4c040000, - 0x05c9f967, 0x5c000800, 0x80040400, 0x5c001800, - 0x1c01f000, 0x4c000000, 0x59940005, 0x80080580, - 0x05020003, 0x497b2804, 0x497b2805, 0x5c000000, - 0x1c01f000, 0x4c000000, 0x5994002a, 0x80080580, - 0x05020003, 0x497b2829, 0x497b282a, 0x5c000000, - 0x1c01f000, 0x4c000000, 0x5994002d, 0x80080580, - 0x05020003, 0x497b282c, 0x497b282d, 0x5c000000, - 0x1c01f000, 0x4937c857, 0x48ebc857, 0x59340203, - 0x80e80480, 0x05001002, 0x48ea6a03, 0x1c01f000, - 0x4d440000, 0x60407800, 0x59968801, 0x0001fb00, - 0x0502005e, 0x59341a03, 0x800c1840, 0x05001015, - 0x59940031, 0x800c0480, 0x05000003, 0x48026a03, - 0x05021010, 0x5934000f, 0x497a6a03, 0x80000540, - 0x05000052, 0x5934000b, 0x80001120, 0x82000500, - 0x0000ffff, 0x80080480, 0x05001003, 0x64066a03, - 0x0501f004, 0x4c3c0000, 0x0001fb0d, 0x5c007800, - 0x4d2c0000, 0x41781800, 0x5934000f, 0x80025d40, - 0x05000041, 0x592c0007, 0x80000d40, 0x05000006, - 0x59940031, 0x80040480, 0x48025807, 0x05001007, - 0x05000006, 0x412c1800, 0x592c0000, 0x80025d40, - 0x05000035, 0x05fdf7f4, 0x592c2000, 0x497a5800, - 0x800c19c0, 0x05020009, 0x59340010, 0x812c0580, - 0x05020004, 0x497a680f, 0x497a6810, 0x0501f008, - 0x4812680f, 0x0501f006, 0x48101800, 0x59340010, - 0x812c0580, 0x05020002, 0x480e6810, 0x592c0208, - 0x82000500, 0x000000ff, 0x90000592, 0x05000005, - 0xb00005a0, 0x05000003, 0x90000588, 0x05020003, - 0x642e5a0a, 0x0501f011, 0x4c0c0000, 0x4c100000, - 0x0005f9f3, 0x5c002000, 0x5c001800, 0x4c0c0000, - 0x4c100000, 0x05f9fce3, 0x5c002000, 0x5c001800, - 0x4a025a08, 0x00000103, 0x641a5a0a, 0x497a580d, - 0x4a025c0a, 0x0000ffff, 0x4c0c0000, 0x4c100000, - 0x0001fb82, 0x5c002000, 0x5c001800, 0x40100000, - 0x05fdf7cb, 0x5c025800, 0x81468800, 0x83440480, - 0x00000800, 0x05021007, 0x803c7840, 0x05fe079c, - 0x49472801, 0x5c028800, 0x5c03e000, 0x1c01f000, - 0x640b2800, 0x497b2801, 0x05fdf7fb, 0x60407800, + 0x00000800, 0x60002000, 0x61c0b00f, 0x42007000, + 0x0010db80, 0x05fe17e1, 0x8d0c0538, 0x05000028, + 0x60002010, 0x5900b400, 0x82100400, 0x0010db80, + 0x50000000, 0x80000540, 0x0500001e, 0x82000d00, + 0xe0000000, 0x82026d00, 0x00ffffff, 0x82041d80, + 0x20000000, 0x05000012, 0x82041d80, 0x80000000, + 0x0500000f, 0x82041d80, 0xa0000000, 0x0500000c, + 0x8c04053c, 0x05c40c60, 0x41340000, 0x80180580, + 0x0502000c, 0x4c100000, 0x40128800, 0x05edfe60, + 0x5c002000, 0x0502000a, 0x40366800, 0x59340002, + 0x82000500, 0x00ffffff, 0x80180580, 0x05000006, + 0x80102000, 0x8058b040, 0x05fe07dc, 0x90000541, + 0x0501f002, 0x40128800, 0x5c00b000, 0x1c01f000, + 0x59a8024c, 0x8c00050e, 0x05000004, 0x8c000502, + 0x05000003, 0x80000580, 0x1c01f000, 0x90000541, + 0x05fdf7fe, 0x59300c07, 0x90040582, 0x05000002, + 0x90040585, 0x1c01f000, 0x60080800, 0x8c080508, + 0x05000007, 0x8c08050c, 0x05000004, 0x8c080504, + 0x05020004, 0x90040d44, 0x48066008, 0x1c01f000, + 0x42001800, 0x001141a6, 0x580c1202, 0x82081500, + 0x00003000, 0x82080580, 0x00001000, 0x05fc07f7, + 0x82080580, 0x00002000, 0x05fc07f5, 0x05fdf7f2, + 0x59c80000, 0x84000558, 0x84000512, 0x48039000, + 0x1c01f000, 0x59cc0800, 0x59340013, 0x82000500, + 0x00ffffff, 0x80040580, 0x82000500, 0x00ffffff, + 0x0502000b, 0x59a808d5, 0x8c040516, 0x05000008, + 0x42000800, 0x001142a2, 0x50040800, 0x59340014, + 0x80040580, 0x82000500, 0x00001fff, 0x1c01f000, + 0x82140500, 0x0000f000, 0x05000006, 0x82000c80, + 0x00004000, 0x0502100a, 0x80000580, 0x1c01f000, + 0x59cc0400, 0x82000500, 0x0000ff00, 0x82000580, + 0x00008100, 0x05fc07fa, 0x0501f012, 0x4817c857, + 0x82140500, 0x000003ff, 0x05020007, 0x59cc0400, + 0x82000500, 0x0000ff00, 0x82000580, 0x00008100, + 0x05020008, 0x42000000, 0x00112452, 0x052dfd34, + 0x05fdfe6f, 0x4803c856, 0x90000541, 0x05fdf7e8, + 0x41780000, 0x05fdf7e6, 0x05f5f96e, 0x0500000e, + 0x59c400a4, 0x4803c857, 0x9000050f, 0x9000058a, + 0x05020009, 0x497b50bb, 0x59c400a3, 0x82000540, + 0x00080000, 0x480388a3, 0x82000500, 0xfff7ffff, + 0x480388a3, 0x4c140000, 0x05e9f882, 0x05020016, + 0x916c0583, 0x05000014, 0x42000000, 0x00112464, + 0x052dfd1a, 0x59c40006, 0x84000500, 0x48038806, + 0x0509facf, 0x497b8880, 0x59c400a3, 0x82000500, + 0xfcf8ffff, 0x480388a3, 0x6012d800, 0x64078805, + 0x05c5fde1, 0x05d1fb3f, 0x497b506b, 0x64075078, + 0x05d1ff7d, 0x5c002800, 0x4817c856, 0x052df444, + 0x42000000, 0x00112359, 0x052dfd01, 0x80000580, + 0x1c01f000, 0x82140500, 0x0000f000, 0x82006d80, + 0x00003000, 0x05000003, 0x82006d80, 0x00005000, + 0x1c01f000, 0x4a032824, 0x000003e8, 0x4a032802, + 0x00115aa4, 0x64032800, 0x4a032808, 0x00108e67, + 0x60140000, 0x91947c09, 0x49787801, 0x4a007804, + 0x00108e12, 0x903c7c05, 0x80000040, 0x05fe07fb, + 0x4a032823, 0xffff0000, 0x497b2833, 0x4a032834, + 0x00103ff5, 0x0501fbfa, 0x6191d000, 0x0501fa13, + 0x4201d000, 0x000186a0, 0x0501f220, 0x00000000, + 0x00000005, 0x0000000a, 0x0000000f, 0x00000014, + 0x00000002, 0x00000008, 0x00000020, 0x00000080, + 0x00000200, 0x4d300000, 0x4d2c0000, 0x4d340000, + 0x4d400000, 0x4cfc0000, 0x4d380000, 0x4d3c0000, + 0x4d440000, 0x4d4c0000, 0x4d480000, 0x4c5c0000, + 0x4c600000, 0x4c640000, 0x4d040000, 0x0005fcce, + 0x5c020800, 0x5c00c800, 0x5c00c000, 0x5c00b800, + 0x5c029000, 0x5c029800, 0x5c028800, 0x5c027800, + 0x5c027000, 0x5c01f800, 0x5c028000, 0x5c026800, + 0x5c025800, 0x5c026000, 0x1c01f000, 0x59940004, + 0x80000540, 0x05020006, 0x480b2805, 0x0501f81c, + 0x48032804, 0x642b2803, 0x80000580, 0x1c01f000, + 0x5994002a, 0x80000540, 0x0502000b, 0x59940030, + 0x80040400, 0x05c41b64, 0x5994082f, 0x80040400, + 0x05c41b61, 0x4803282a, 0x480b282b, 0x64072829, + 0x80000580, 0x1c01f000, 0x5994002d, 0x80000540, + 0x05020006, 0x480b282e, 0x0501f805, 0x4803282d, + 0x642b282c, 0x80000580, 0x1c01f000, 0x4c0c0000, + 0x59941830, 0x5994002f, 0x800c0400, 0x05c41b4e, + 0x05000004, 0x4c040000, 0x05c5fd7c, 0x5c000800, + 0x80040400, 0x5c001800, 0x1c01f000, 0x4c000000, + 0x59940005, 0x80080580, 0x05020003, 0x497b2804, + 0x497b2805, 0x5c000000, 0x1c01f000, 0x4c000000, + 0x5994002b, 0x80080580, 0x05020003, 0x497b282a, + 0x497b282b, 0x5c000000, 0x1c01f000, 0x4c000000, + 0x5994002e, 0x80080580, 0x05020003, 0x497b282d, + 0x497b282e, 0x5c000000, 0x1c01f000, 0x4937c857, + 0x48ebc857, 0x59340203, 0x80e80480, 0x05001002, + 0x48ea6a03, 0x1c01f000, 0x4c600000, 0x4c5c0000, + 0x4178b800, 0x4178c000, 0x4d440000, 0x60407800, + 0x59968801, 0x8d0c0538, 0x05000014, 0x83440480, + 0x00000800, 0x05001011, 0x82600400, 0x00111ccc, + 0x45780000, 0x83441c00, 0x0010db80, 0x500e6800, + 0x83340500, 0xe0000000, 0x82000580, 0x20000000, + 0x05020092, 0x400cb800, 0x83366d00, 0x00ffffff, + 0x05020004, 0x05c5fb0c, 0x0001fb08, 0x0502008b, + 0x59341a03, 0x800c1840, 0x05001015, 0x59940032, + 0x800c0480, 0x05000003, 0x48026a03, 0x05021010, + 0x5934000f, 0x497a6a03, 0x80000540, 0x0500007f, + 0x5934000b, 0x80001120, 0x82000500, 0x0000ffff, + 0x80080480, 0x05001003, 0x64066a03, 0x0501f004, + 0x4c3c0000, 0x0001fb33, 0x5c007800, 0x4d2c0000, + 0x41781800, 0x5934000f, 0x80025d40, 0x05000041, + 0x592c0007, 0x80000d40, 0x05000006, 0x59940032, + 0x80040480, 0x48025807, 0x05001007, 0x05000006, + 0x412c1800, 0x592c0000, 0x80025d40, 0x05000035, + 0x05fdf7f4, 0x592c2000, 0x497a5800, 0x800c19c0, + 0x05020009, 0x59340010, 0x812c0580, 0x05020004, + 0x497a680f, 0x497a6810, 0x0501f008, 0x4812680f, + 0x0501f006, 0x48101800, 0x59340010, 0x812c0580, + 0x05020002, 0x480e6810, 0x592c0208, 0x82000500, + 0x000000ff, 0x90000592, 0x05000005, 0xb00005a0, + 0x05000003, 0x90000588, 0x05020003, 0x642e5a0a, + 0x0501f011, 0x4c0c0000, 0x4c100000, 0x0005fa1a, + 0x5c002000, 0x5c001800, 0x4c0c0000, 0x4c100000, + 0x05f9fc38, 0x5c002000, 0x5c001800, 0x4a025a08, + 0x00000103, 0x641a5a0a, 0x497a580d, 0x4a025c0a, + 0x0000ffff, 0x4c0c0000, 0x4c100000, 0x0001fba8, + 0x5c002000, 0x5c001800, 0x40100000, 0x05fdf7cb, + 0x5c025800, 0x805cb9c0, 0x0500002c, 0x59341c15, + 0x800c1840, 0x05001029, 0x59940032, 0x800c0480, + 0x05000003, 0x48026c15, 0x05021024, 0x495fc857, + 0x835c0480, 0x000003e8, 0x0502101f, 0x5934040b, + 0x4803c857, 0x80000540, 0x0502001b, 0x5934000f, + 0x4803c857, 0x80000540, 0x05020017, 0x5934000c, + 0x4803c857, 0x80000540, 0x05020013, 0x59340215, + 0x4803c857, 0x80000540, 0x0502000f, 0x59341c00, + 0x480fc857, 0x820c0580, 0x00000707, 0x05000003, + 0x05f1f962, 0x05020008, 0x4937c857, 0x497a6c15, + 0x82600400, 0x00111ccc, 0x45340000, 0x8060c000, + 0x0501f002, 0x640a6c15, 0x81468800, 0x59a800ad, + 0x81440480, 0x0502100b, 0x803c7840, 0x05fe075a, + 0x49472801, 0x8060c1c0, 0x0502090c, 0x5c00b800, + 0x5c00c000, 0x5c028800, 0x5c03e000, 0x1c01f000, + 0x640b2800, 0x497b2801, 0x05fdf7f7, 0x60407800, 0x59966002, 0x59300205, 0x80000d40, 0x05000014, - 0x59940031, 0x80040480, 0x48026205, 0x4df00000, - 0x4c040000, 0x051df951, 0x5c000800, 0x05000009, + 0x59940032, 0x80040480, 0x48026205, 0x4df00000, + 0x4c040000, 0x051dfa85, 0x5c000800, 0x05000009, 0x59300205, 0x9000048b, 0x05021006, 0x9004048b, - 0x05001004, 0x4c3c0000, 0x051df87e, 0x5c007800, + 0x05001004, 0x4c3c0000, 0x051df9b2, 0x5c007800, 0x5c03e000, 0x05001027, 0x05000026, 0x59300006, 0x80000d40, 0x05000010, 0x4203e000, 0xb0800000, 0x4203f800, 0x0c000000, 0x40000000, 0x40000000, - 0x40000000, 0x0503b008, 0x59940031, 0x80040480, + 0x40000000, 0x0503b008, 0x59940032, 0x80040480, 0x48026006, 0x4203f800, 0x08000000, 0x05001019, 0x05000018, 0x91326430, 0x49332802, 0x41540000, 0x81300480, 0x05021005, 0x803c7840, 0x05fe07d2, - 0x5c03e000, 0x1c01f000, 0x59940030, 0x48032831, - 0x4a032802, 0x00111b00, 0x497b2830, 0x80000540, + 0x5c03e000, 0x1c01f000, 0x59940031, 0x48032832, + 0x4a032802, 0x00115aa4, 0x497b2831, 0x80000540, 0x0500000c, 0x64072800, 0x5c03e000, 0x1c01f000, - 0x4c3c0000, 0x0519ff4d, 0x5c007800, 0x05fdf7d8, - 0x4c3c0000, 0x0519fa13, 0x5c007800, 0x05fdf7e6, - 0x64032800, 0x5c03e000, 0x1c01f000, 0x59a808b5, + 0x4c3c0000, 0x051df882, 0x5c007800, 0x05fdf7d8, + 0x4c3c0000, 0x0519fb29, 0x5c007800, 0x05fdf7e6, + 0x64032800, 0x5c03e000, 0x1c01f000, 0x59a808ba, 0x8c040530, 0x05020025, 0x8c040532, 0x0500000f, - 0x59a8009b, 0x81640480, 0x05001016, 0x59a8000b, - 0x81500580, 0x05000005, 0x59a80099, 0x59a81098, + 0x59a8009e, 0x81640480, 0x05001016, 0x59a8000b, + 0x81500580, 0x05000005, 0x59a8009c, 0x59a8109b, 0x80080580, 0x0502000f, 0x900411c0, 0x82081500, 0x00007000, 0x0501f00f, 0x9004051f, 0x05000013, - 0x80040840, 0x9004051f, 0x05000003, 0x480750b5, + 0x80040840, 0x9004051f, 0x05000003, 0x480750ba, 0x0501f00e, 0x900401c0, 0x9000051f, 0x80040d40, 0x900401c0, 0x80040580, 0x82001500, 0x00007000, - 0x82040500, 0xffff8fff, 0x80080540, 0x480350b5, - 0x80081114, 0x05c9f855, 0x1c01f000, 0x4a032807, + 0x82040500, 0xffff8fff, 0x80080540, 0x480350ba, + 0x80081114, 0x05c5fc20, 0x1c01f000, 0x4a032807, 0x000007d0, 0x642b2806, 0x4a01a8e5, 0x00000c00, - 0x1c01f000, 0x60100800, 0x91180485, 0x05c61e1f, - 0x91947c09, 0x83180400, 0x00107661, 0x50000000, + 0x1c01f000, 0x60100800, 0x91180485, 0x05c619f6, + 0x91947c09, 0x83180400, 0x00107a7b, 0x50000000, 0x803c7c00, 0x4a007801, 0x000001f4, 0x48047802, - 0x64287800, 0x83180400, 0x00107666, 0x50000000, + 0x64287800, 0x83180400, 0x00107a80, 0x50000000, 0x82000540, 0x00000155, 0x4801a8e5, 0x1c01f000, - 0x91180485, 0x05c61e0d, 0x91947c09, 0x83180400, - 0x00107661, 0x50000000, 0x803c7c00, 0x583c0002, + 0x91180485, 0x05c619e4, 0x91947c09, 0x83180400, + 0x00107a7b, 0x50000000, 0x803c7c00, 0x583c0002, 0x80000040, 0x48007802, 0x05000004, 0x4a007801, 0x000001f4, 0x64287800, 0x1c01f000, 0x91180485, - 0x05c61dfe, 0x91947c09, 0x83180400, 0x00107661, + 0x05c619d5, 0x91947c09, 0x83180400, 0x00107a7b, 0x50000000, 0x803c7c00, 0x49787801, 0x83180400, - 0x00107666, 0x50000000, 0x4801a8e5, 0x1c01f000, - 0x4807c857, 0x480bc857, 0x480b2805, 0x05fdfebe, + 0x00107a80, 0x50000000, 0x4801a8e5, 0x1c01f000, + 0x4807c857, 0x480bc857, 0x480b2805, 0x05fdfe74, 0x48032804, 0x642b2803, 0x1c01f000, 0x4807c857, - 0x480bc857, 0x480b2827, 0x05fdfeb7, 0x48032826, + 0x480bc857, 0x480b2827, 0x05fdfe6d, 0x48032826, 0x642b2825, 0x1c01f000, 0x4c000000, 0x59940027, 0x80080580, 0x05020003, 0x48032826, 0x48032827, 0x5c000000, 0x1c01f000, 0x4807c857, 0x480bc857, - 0x480b282d, 0x05fdfea8, 0x4803282c, 0x642b282b, - 0x1c01f000, 0x80e9d1c0, 0x05000006, 0x0501f828, - 0x00044e27, 0x05fe57ff, 0x4203e000, 0x80000000, - 0x1c01f000, 0x42001000, 0x00106004, 0x05fdfea6, - 0x42001000, 0x00105ff7, 0x05fdffe4, 0x42001000, - 0x0010510c, 0x05fdfea0, 0x42001000, 0x00105184, - 0x05fdfe9d, 0x42001000, 0x001050eb, 0x05fdfe9a, - 0x42001000, 0x001051ae, 0x05fdf6a7, 0x4203e000, - 0x70000000, 0x4203e000, 0xb0300000, 0x40ebf800, - 0x60f00000, 0x05004004, 0x80000040, 0x05fe07fe, - 0x0501f006, 0x4203e000, 0x70000000, 0x42000000, - 0x0010e46f, 0x0529ffaf, 0x1c01f000, 0x4203e000, - 0x80000000, 0x4203e000, 0xb0400000, 0x40ebf800, - 0x60f00000, 0x05005004, 0x80000040, 0x05fe07fe, - 0x0501f006, 0x4203e000, 0x80000000, 0x42000000, - 0x0010e470, 0x0529ff9f, 0x1c01f000, 0x4c5c0000, - 0x4c640000, 0x59a8b81a, 0x585c0002, 0x82000580, - 0x00000100, 0x60100000, 0x05020067, 0x642f5427, - 0x642f542f, 0x642f5437, 0x60080800, 0x4200c800, - 0x0010dc28, 0x60041800, 0x60002080, 0x60602801, - 0x05e9fa21, 0x0500005c, 0x59a80028, 0xb000053f, + 0x480b282b, 0x05fdfe5e, 0x4803282a, 0x642b2828, + 0x1c01f000, 0x4807c857, 0x480bc857, 0x480b282e, + 0x05fdfe57, 0x4803282d, 0x642b282c, 0x1c01f000, + 0x80e9d1c0, 0x05000006, 0x0501f828, 0x00044e5d, + 0x05fe57ff, 0x4203e000, 0x80000000, 0x1c01f000, + 0x42001000, 0x001062e8, 0x05fdfe55, 0x42001000, + 0x001062db, 0x05fdffdd, 0x42001000, 0x00105303, + 0x05fdfe4f, 0x42001000, 0x0010537b, 0x05fdfe4c, + 0x42001000, 0x001052e2, 0x05fdfe49, 0x42001000, + 0x001053a5, 0x05fdf656, 0x4203e000, 0x70000000, + 0x4203e000, 0xb0300000, 0x40ebf800, 0x60f00000, + 0x05004004, 0x80000040, 0x05fe07fe, 0x0501f006, + 0x4203e000, 0x70000000, 0x42000000, 0x00112413, + 0x052dfabf, 0x1c01f000, 0x4203e000, 0x80000000, + 0x4203e000, 0xb0400000, 0x40ebf800, 0x60f00000, + 0x05005004, 0x80000040, 0x05fe07fe, 0x0501f006, + 0x4203e000, 0x80000000, 0x42000000, 0x00112414, + 0x052dfaaf, 0x1c01f000, 0x4c580000, 0x4d440000, + 0x4d340000, 0x4d300000, 0x4863c856, 0x42026000, + 0x00115aa4, 0x0521fcc5, 0x0502101b, 0x5932680a, + 0x813669c0, 0x05000013, 0x59368c03, 0x83440480, + 0x00000800, 0x0500100f, 0x6000b000, 0x82580c00, + 0x00111ccc, 0x50040000, 0x80000540, 0x05000005, + 0x81340580, 0x05020003, 0x45780800, 0x640a6c15, + 0x8058b000, 0x40600000, 0x80580580, 0x05fe07f4, + 0x91326430, 0x41580000, 0x81300480, 0x05fc17e8, + 0x0501f002, 0x41526000, 0x59a8089b, 0x59a8009c, + 0x80040480, 0x0500001b, 0x81300800, 0x41540000, + 0x80040480, 0x05021017, 0x5932680a, 0x813669c0, + 0x05fc07f6, 0x59368c03, 0x83440480, 0x00000800, + 0x05fc17f2, 0x6000b000, 0x82580c00, 0x00111ccc, + 0x50040000, 0x80000540, 0x05000005, 0x81340580, + 0x05020003, 0x45780800, 0x640a6c15, 0x8058b000, + 0x40600000, 0x80580580, 0x05fe07f4, 0x05fdf7e3, + 0x6000b000, 0x82580c00, 0x00111ccc, 0x50040000, + 0x80026d40, 0x05000005, 0x59368c03, 0x4937c857, + 0x4947c857, 0x0521fa69, 0x8058b000, 0x40600000, + 0x80580580, 0x05fe07f4, 0x5c026000, 0x5c026800, + 0x5c028800, 0x5c00b000, 0x1c01f000, 0x4c5c0000, + 0x4c640000, 0x59a8b81c, 0x585c0002, 0x82000580, + 0x00000100, 0x60100000, 0x05020067, 0x642f5429, + 0x642f5431, 0x642f5439, 0x60080800, 0x4200c800, + 0x00111baa, 0x60041800, 0x60002080, 0x60602801, + 0x05e5ff07, 0x0500005c, 0x59a8002a, 0xb000053f, 0x800001c0, 0x0500000b, 0x90002d1e, 0x05000004, - 0x59a80827, 0x84040d64, 0x48075027, 0xb0002d21, - 0x05000004, 0x59a8002f, 0x84000564, 0x4803502f, - 0x60040800, 0x4200c800, 0x0010dc28, 0x60041800, - 0x60002080, 0x60602801, 0x05e9fa0b, 0x05000046, - 0x59a80029, 0x80000000, 0x48035029, 0x60000800, - 0x4200c800, 0x0010dc30, 0x60041800, 0x60002080, - 0x60602801, 0x05e9fa00, 0x0500003b, 0x59a80031, - 0x80000000, 0x48035031, 0x60080800, 0x4200c800, - 0x0010dc38, 0x60041800, 0x60002080, 0x61602801, - 0x05e9f9f5, 0x05000030, 0x59a80038, 0xb0000521, - 0x800001c0, 0x05000004, 0x59a80037, 0x84000564, - 0x48035037, 0x60000800, 0x4200c800, 0x0010dc38, - 0x60041800, 0x60002080, 0x61602801, 0x05e9f9e6, - 0x05000021, 0x59a80039, 0x80000000, 0x48035039, - 0x600cc800, 0x42000800, 0x0010dc23, 0x42001000, - 0xffffffff, 0x601c2000, 0x05c5ff8c, 0x59a8201f, + 0x59a80829, 0x84040d64, 0x48075029, 0xb0002d21, + 0x05000004, 0x59a80031, 0x84000564, 0x48035031, + 0x60040800, 0x4200c800, 0x00111baa, 0x60041800, + 0x60002080, 0x60602801, 0x05e5fef1, 0x05000046, + 0x59a8002b, 0x80000000, 0x4803502b, 0x60000800, + 0x4200c800, 0x00111bb2, 0x60041800, 0x60002080, + 0x60602801, 0x05e5fee6, 0x0500003b, 0x59a80033, + 0x80000000, 0x48035033, 0x60080800, 0x4200c800, + 0x00111bba, 0x60041800, 0x60002080, 0x61602801, + 0x05e5fedb, 0x05000030, 0x59a8003a, 0xb0000521, + 0x800001c0, 0x05000004, 0x59a80039, 0x84000564, + 0x48035039, 0x60000800, 0x4200c800, 0x00111bba, + 0x60041800, 0x60002080, 0x61602801, 0x05e5fecc, + 0x05000021, 0x59a8003b, 0x80000000, 0x4803503b, + 0x600cc800, 0x42000800, 0x00111ba5, 0x42001000, + 0xffffffff, 0x601c2000, 0x05c5fafb, 0x59a82021, 0x80100400, 0x81780480, 0x44000800, 0x80040800, 0x8064c840, 0x05fe07f6, 0x6400b801, 0x6460b804, - 0x6580b805, 0x4a00b803, 0x0010dc23, 0x59a8001d, - 0x4800b807, 0x59a8001e, 0x4800b808, 0x405c1000, - 0x0001f821, 0x90000541, 0x5c00c800, 0x5c00b800, + 0x6580b805, 0x4a00b803, 0x00111ba5, 0x59a8001f, + 0x4800b807, 0x59a80020, 0x4800b808, 0x405c1000, + 0x0001f829, 0x90000541, 0x5c00c800, 0x5c00b800, 0x1c01f000, 0x4803c857, 0x05fdf7fc, 0x4803c857, - 0x61c01100, 0x40001800, 0x05e5ff2b, 0x1c01f000, + 0x61c01100, 0x40001800, 0x05e5fc08, 0x1c01f000, 0x4833c857, 0x58300002, 0x82000580, 0x00000100, 0x05020002, 0x1c01f000, 0x4a006002, 0x00000100, 0x60140000, 0x05fdfff2, 0x05fdf7fb, 0x4833c857, 0x4c580000, 0x58300002, 0x82000580, 0x00000100, 0x05020007, 0x0501fb33, 0x5830020b, 0x4803c857, - 0x9000349c, 0x05c61d11, 0x0c01f005, 0x4a006002, - 0x00000100, 0x60140000, 0x0501f0d9, 0x001078eb, - 0x001078f6, 0x001078fb, 0x001078fd, 0x001078fe, - 0x0010790b, 0x0010790c, 0x00107924, 0x00107925, - 0x00107929, 0x00107934, 0x00107945, 0x00107963, - 0x00107964, 0x00107965, 0x00107966, 0x0010796b, - 0x0010796f, 0x0010797d, 0x0010797e, 0x0010797f, - 0x00107993, 0x00107998, 0x0010799c, 0x001079a3, - 0x00107952, 0x0010795e, 0x001079a3, 0x6404620b, + 0x9000349c, 0x05c6188c, 0x0c01f005, 0x4a006002, + 0x00000100, 0x60140000, 0x0501f0d9, 0x00107dab, + 0x00107db6, 0x00107dbb, 0x00107dbd, 0x00107dbe, + 0x00107dcb, 0x00107dcc, 0x00107de4, 0x00107de5, + 0x00107de9, 0x00107df4, 0x00107e05, 0x00107e23, + 0x00107e24, 0x00107e25, 0x00107e26, 0x00107e2b, + 0x00107e2f, 0x00107e3d, 0x00107e3e, 0x00107e3f, + 0x00107e53, 0x00107e58, 0x00107e5c, 0x00107e63, + 0x00107e12, 0x00107e1e, 0x00107e63, 0x6404620b, 0x64006001, 0x64c46004, 0x4a006005, 0x000000c4, - 0x4a006003, 0x00107ddd, 0x59a80011, 0xb0000430, + 0x4a006003, 0x00108294, 0x59a80013, 0xb0000430, 0x0501f8b5, 0x0501f0ae, 0x6458620b, 0x40301000, 0x60040000, 0x0501fae2, 0x0501f0a9, 0x0501f996, 0x0501f0a7, 0x0501f0a8, 0x643c620b, 0x64006001, 0x4a006004, 0x000000a8, 0x4a006005, 0x000002a0, - 0x4a006003, 0x00107e0e, 0x59a80011, 0x82000400, + 0x4a006003, 0x001082c5, 0x59a80013, 0x82000400, 0x00000134, 0x0501f8a0, 0x0501f099, 0x0501f09a, 0x0501fb41, 0x05020096, 0x5830040b, 0x8c000512, 0x05020008, 0x8c000510, 0x0502000b, 0x84000552, 0x4800640b, 0x6044b000, 0x0501fafa, 0x0501f08c, - 0x84000512, 0x84000550, 0x4800640b, 0x6088b000, + 0x84000512, 0x84000550, 0x4800640b, 0x606cb000, 0x05fdf7fa, 0x84000510, 0x4800640b, 0x6454620b, 0x40301000, 0x60180000, 0x0501fab9, 0x0501f080, - 0x0501f081, 0x59a8600e, 0x6424620b, 0x0501f9d4, + 0x0501f081, 0x59a86010, 0x6424620b, 0x0501f9d4, 0x0501f07b, 0x6428620b, 0x64006001, 0x64506004, - 0x65406005, 0x4a006003, 0x00107eb8, 0x59a80011, + 0x65406005, 0x4a006003, 0x0010836f, 0x59a80013, 0x82000400, 0x0000042c, 0x0501f877, 0x0501f070, 0x642c620b, 0x64006001, 0x64086004, 0x64206005, 0x42001000, 0x7ff38009, 0x50081000, 0x4808600c, - 0x9030140c, 0x48086003, 0x4a00600d, 0x000090d5, - 0x59a80011, 0x82000400, 0x0000047c, 0x0501f866, + 0x9030140c, 0x48086003, 0x4a00600d, 0x001090d5, + 0x59a80013, 0x82000400, 0x0000047c, 0x0501f866, 0x0501f05f, 0x6464620b, 0x64006001, 0x64046004, - 0x64106005, 0x59a81092, 0x4808600c, 0x9030140c, - 0x48086003, 0x59a80011, 0x82000400, 0x00000430, + 0x64106005, 0x59a81095, 0x4808600c, 0x9030140c, + 0x48086003, 0x59a80013, 0x82000400, 0x00000430, 0x0501f859, 0x0501f052, 0x6468620b, 0x64006001, 0x64046004, 0x64106005, 0x4808600c, 0x9030140c, - 0x48086003, 0x59a80011, 0x82000400, 0x00000470, + 0x48086003, 0x59a80013, 0x82000400, 0x00000470, 0x0501f84d, 0x0501f046, 0x6410620b, 0x40301000, 0x60080000, 0x0501fa7a, 0x0501f041, 0x0501f042, 0x0501f041, 0x0501f040, 0x6440620b, 0x40301000, 0x60100000, 0x0501fa72, 0x0501f039, 0x40301000, 0x60440000, 0x0501fa25, 0x0501f035, 0x5830040b, 0x8c000518, 0x05000005, 0x40301000, 0x60000000, - 0x0501fa3e, 0x0501f02e, 0x6403500f, 0x4a035010, + 0x0501fa3e, 0x0501f02e, 0x64035011, 0x4a035012, 0x000927c0, 0x40301000, 0x606c0000, 0x0501fa37, 0x0501f027, 0x0501f028, 0x0501f027, 0x5830040b, 0x8c00051e, 0x05000008, 0x8c000514, 0x05020003, @@ -7820,64 +8124,64 @@ static const uint32_t isp_2500_risc_code[] = { 0x5830040b, 0x8c000518, 0x05fc075d, 0x40301000, 0x60000000, 0x0501fa11, 0x0501f001, 0x5c00b000, 0x1c01f000, 0x82000400, 0x00000100, 0x05fdff08, - 0x05fdf7fb, 0x48006007, 0x59a80012, 0x90000440, - 0x48006008, 0x40301000, 0x0001f021, 0x4803c856, - 0x05e9f819, 0x050200bd, 0x42001000, 0x7ff38000, + 0x05fdf7fb, 0x48006007, 0x59a80014, 0x90000440, + 0x48006008, 0x40301000, 0x0001f029, 0x4803c856, + 0x05e5fcff, 0x050200bd, 0x42001000, 0x7ff38000, 0x50081000, 0x82081580, 0x4f434453, 0x601c0000, 0x050200b7, 0x42000800, 0x7ff38000, 0x42001000, - 0xffffffff, 0x60402000, 0x05c5fe64, 0x60200000, + 0xffffffff, 0x60402000, 0x05c5f9d3, 0x60200000, 0x050200af, 0x42001000, 0x7ff38006, 0x50081000, 0x480bc857, 0x8c080500, 0x050000a0, 0x59e00802, 0x8c04051e, 0x0502009d, 0x42001000, 0x7ff38002, - 0x50081000, 0x480b501d, 0x42001000, 0x7ff38003, - 0x50081000, 0x480b501e, 0x42001000, 0x7ff38007, - 0x50081000, 0x6040084e, 0x0501fd9c, 0x4807501c, - 0x4807501b, 0x42001000, 0x7ff3800a, 0x50081000, + 0x50081000, 0x480b501f, 0x42001000, 0x7ff38003, + 0x50081000, 0x480b5020, 0x42001000, 0x7ff38007, + 0x50081000, 0x6040084e, 0x0501fd95, 0x4807501e, + 0x4807501d, 0x42001000, 0x7ff3800a, 0x50081000, 0x800800e0, 0x42001000, 0x7ff38009, 0x50081000, - 0x82081500, 0x0000ffff, 0x80080540, 0x4803501f, + 0x82081500, 0x0000ffff, 0x80080540, 0x48035021, 0x42001000, 0x7ff38012, 0x50081000, 0x800811c0, 0x05000004, 0x82080580, 0xffffffff, 0x05020002, - 0x61b81000, 0x480b5025, 0x42001000, 0x7ff3801a, + 0x61b81000, 0x480b5027, 0x42001000, 0x7ff3801a, 0x50081000, 0x800811c0, 0x05000004, 0x82080580, - 0xffffffff, 0x05020002, 0x612c1000, 0x480b502d, + 0xffffffff, 0x05020002, 0x612c1000, 0x480b502f, 0x42001000, 0x7ff38022, 0x50081000, 0x800811c0, 0x05000004, 0x82080580, 0xffffffff, 0x05020002, - 0x612c1000, 0x480b5035, 0x42001000, 0x7ff38013, + 0x612c1000, 0x480b5037, 0x42001000, 0x7ff38013, 0x50081000, 0x800811c0, 0x05000004, 0x82080580, - 0xffffffff, 0x05020002, 0x61a41000, 0x480b5026, + 0xffffffff, 0x05020002, 0x61a41000, 0x480b5028, 0x42001000, 0x7ff3801b, 0x50081000, 0x800811c0, 0x05000004, 0x82080580, 0xffffffff, 0x05020002, - 0x61181000, 0x480b502e, 0x42001000, 0x7ff38023, + 0x61181000, 0x480b5030, 0x42001000, 0x7ff38023, 0x50081000, 0x800811c0, 0x05000004, 0x82080580, - 0xffffffff, 0x05020002, 0x61181000, 0x480b5036, - 0x05e5ff98, 0x60240800, 0x42001000, 0x0010dc28, + 0xffffffff, 0x05020002, 0x61181000, 0x480b5038, + 0x05e5fc7e, 0x60240800, 0x42001000, 0x00111baa, 0x64801000, 0x60041800, 0x60002080, 0x60602801, - 0x05e5ffda, 0x05000046, 0x64075023, 0x64075024, - 0x64175227, 0x640f5427, 0x60340800, 0x42001000, - 0x0010dc25, 0x60041800, 0x60002080, 0x60602801, - 0x05e5ffce, 0x0500003a, 0x60640800, 0x42001000, - 0x0010dc25, 0x60041800, 0x60002080, 0x60602801, - 0x05e5ffc6, 0x05000032, 0x6407502b, 0x641f502c, - 0x6417522f, 0x640f542f, 0x602c0800, 0x42001000, - 0x0010dc2d, 0x60041800, 0x60002080, 0x60602801, - 0x05e5ffba, 0x05000026, 0x60800800, 0x42001000, - 0x0010dc2d, 0x60041800, 0x60002080, 0x60602801, - 0x05e5ffb2, 0x0500001e, 0x64075033, 0x641f5034, - 0x64175237, 0x640f5437, 0x60140800, 0x42001000, - 0x0010dc35, 0x60041800, 0x60002080, 0x61602801, - 0x05e5ffa6, 0x05000012, 0x60800800, 0x42001000, - 0x0010dc35, 0x60041800, 0x60002080, 0x61602801, - 0x05e5ff9e, 0x0500000a, 0x42001000, 0x7ff38006, + 0x05e5fcc0, 0x05000046, 0x64075025, 0x64075026, + 0x64175229, 0x640f5429, 0x60340800, 0x42001000, + 0x00111ba7, 0x60041800, 0x60002080, 0x60602801, + 0x05e5fcb4, 0x0500003a, 0x60640800, 0x42001000, + 0x00111ba7, 0x60041800, 0x60002080, 0x60602801, + 0x05e5fcac, 0x05000032, 0x6407502d, 0x641f502e, + 0x64175231, 0x640f5431, 0x602c0800, 0x42001000, + 0x00111baf, 0x60041800, 0x60002080, 0x60602801, + 0x05e5fca0, 0x05000026, 0x60800800, 0x42001000, + 0x00111baf, 0x60041800, 0x60002080, 0x60602801, + 0x05e5fc98, 0x0500001e, 0x64075035, 0x641f5036, + 0x64175239, 0x640f5439, 0x60140800, 0x42001000, + 0x00111bb7, 0x60041800, 0x60002080, 0x61602801, + 0x05e5fc8c, 0x05000012, 0x60800800, 0x42001000, + 0x00111bb7, 0x60041800, 0x60002080, 0x61602801, + 0x05e5fc84, 0x0500000a, 0x42001000, 0x7ff38006, 0x50081000, 0x90081503, 0x60240000, 0x05000004, 0x8c080502, 0x05020806, 0x1c01f000, 0x4803c857, - 0x05fdfe3f, 0x497b501c, 0x05fdf7fc, 0x4803c856, - 0x4c5c0000, 0x59a8b80e, 0x497b500f, 0x497b5010, + 0x05fdfe3f, 0x497b501e, 0x05fdf7fc, 0x4803c856, + 0x4c5c0000, 0x59a8b810, 0x497b5011, 0x497b5012, 0x6400ba0b, 0x4978b80b, 0x42001000, 0x7ff38004, - 0x50081000, 0x480b5011, 0x42001000, 0x7ff38005, - 0x50081000, 0x480b5012, 0x6400b801, 0x6430b804, - 0x64c0b805, 0x4a00b803, 0x00107dd1, 0x59a80011, - 0xb0000400, 0x4800b807, 0x59a80012, 0x90000440, - 0x4800b808, 0x405c1000, 0x0001f821, 0x5c00b800, + 0x50081000, 0x480b5013, 0x42001000, 0x7ff38005, + 0x50081000, 0x480b5014, 0x6400b801, 0x6430b804, + 0x64c0b805, 0x4a00b803, 0x00108288, 0x59a80013, + 0xb0000400, 0x4800b807, 0x59a80014, 0x90000440, + 0x4800b808, 0x405c1000, 0x0001f829, 0x5c00b800, 0x1c01f000, 0x4803c856, 0x4c5c0000, 0x4c600000, 0x4c640000, 0x4c580000, 0x4200b800, 0x7ff48000, 0x4178c000, 0x0501f8b7, 0x8258b580, 0x00000082, @@ -7886,23 +8190,23 @@ static const uint32_t isp_2500_risc_code[] = { 0x905804a8, 0x05000004, 0x05001003, 0x60a0b000, 0x0501f003, 0x80000580, 0x6420ca0b, 0x4c000000, 0x8060c000, 0x4c640000, 0x9064cc0e, 0x0501f8c1, - 0x5c00c800, 0x42000000, 0x00107eb6, 0x50000000, - 0x4800c80c, 0x42000000, 0x00107eb7, 0x50000000, + 0x5c00c800, 0x42000000, 0x0010836d, 0x50000000, + 0x4800c80c, 0x42000000, 0x0010836e, 0x50000000, 0x4800c80d, 0x9058b40b, 0x8258b500, 0xfffffffc, 0x6400c801, 0x4858c805, 0x80580104, 0x4800c804, - 0x9064040c, 0x4800c803, 0x59a80011, 0x82000400, - 0x000003d4, 0x4800c807, 0x59a80012, 0x90000440, + 0x9064040c, 0x4800c803, 0x59a80013, 0x82000400, + 0x000003d4, 0x4800c807, 0x59a80014, 0x90000440, 0x4800c808, 0x40641000, 0x4c5c0000, 0x4c600000, - 0x0001f821, 0x5c00c000, 0x5c00b800, 0x5c000000, + 0x0001f829, 0x5c00c000, 0x5c00b800, 0x5c000000, 0x800001c0, 0x05000020, 0x9000ccb4, 0x05001002, - 0x60c00000, 0x4000b000, 0x59a8c80d, 0x4c640000, + 0x60c00000, 0x4000b000, 0x59a8c80f, 0x4c640000, 0x9064cc0c, 0x0501f897, 0x5c00c800, 0x6420ca0b, 0x4858c805, 0x80580104, 0x4800c804, 0x9058b403, 0x8258b500, 0xfffffffc, 0x6400c801, 0x4858c805, 0x80580104, 0x4800c804, 0x9064040c, 0x4800c803, - 0x59a80011, 0x82000400, 0x00000404, 0x4800c807, - 0x59a80012, 0x90000440, 0x4800c808, 0x40641000, - 0x0001f821, 0x90000541, 0x5c00b000, 0x5c00c800, + 0x59a80013, 0x82000400, 0x00000404, 0x4800c807, + 0x59a80014, 0x90000440, 0x4800c808, 0x40641000, + 0x0001f829, 0x90000541, 0x5c00b000, 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x4803c857, 0x05fdfdb7, 0x80000580, 0x05fdf7f8, 0x4803c856, 0x4c5c0000, 0x4c600000, 0x4c640000, 0x4c580000, @@ -7921,9 +8225,9 @@ static const uint32_t isp_2500_risc_code[] = { 0x4c640000, 0x9064cc0c, 0x0501f83e, 0x5c00c800, 0x9058b403, 0x8258b500, 0xfffffffc, 0x6400c801, 0x4858c805, 0x80580104, 0x4800c804, 0x9064040c, - 0x4800c803, 0x59a80011, 0x82000400, 0x0000041c, - 0x4800c807, 0x59a80012, 0x90000440, 0x4800c808, - 0x40641000, 0x0001f821, 0x90000541, 0x5c00b000, + 0x4800c803, 0x59a80013, 0x82000400, 0x0000041c, + 0x4800c807, 0x59a80014, 0x90000440, 0x4800c808, + 0x40641000, 0x0001f829, 0x90000541, 0x5c00b000, 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x4803c857, 0x05fdfd62, 0x80000580, 0x05fdf7f8, 0x485fc857, 0x4863c857, 0x505cb000, 0x40600000, @@ -7946,1180 +8250,1184 @@ static const uint32_t isp_2500_risc_code[] = { 0x4c600000, 0x5808b802, 0x825cc580, 0x00000100, 0x05020015, 0x4800120b, 0x5808040b, 0x8400055c, 0x4800140b, 0x64041001, 0x64081004, 0x64201005, - 0x9008040c, 0x48001003, 0x59a80011, 0x90000410, - 0x48001007, 0x59a80012, 0x90000440, 0x48001008, - 0x0001f821, 0x90000541, 0x5c00c000, 0x5c00b800, + 0x9008040c, 0x48001003, 0x59a80013, 0x90000410, + 0x48001007, 0x59a80014, 0x90000440, 0x48001008, + 0x0001f829, 0x90000541, 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x60280000, 0x4803c857, 0x05fdfd00, 0x80000580, 0x05fdf7f9, 0x4803c857, 0x4c5c0000, 0x4c600000, 0x5808b802, 0x825cc580, 0x00000100, 0x0502001e, 0x4800120b, 0x800001c0, 0x05000003, 0x42000000, 0xffffffff, 0x4800100c, 0x800001c0, 0x05000004, 0x5808040b, 0x8400055a, 0x4800140b, - 0x64001001, 0x64081004, 0x64201005, 0x59a80013, - 0x4800100d, 0x9008040c, 0x48001003, 0x59a80011, - 0x90000410, 0x48001007, 0x59a80012, 0x90000440, - 0x48001008, 0x0001f821, 0x90000541, 0x5c00c000, + 0x64001001, 0x64081004, 0x64201005, 0x59a80015, + 0x4800100d, 0x9008040c, 0x48001003, 0x59a80013, + 0x90000410, 0x48001007, 0x59a80014, 0x90000440, + 0x48001008, 0x0001f829, 0x90000541, 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x60280000, 0x4803c857, 0x05fdfcd7, 0x80000580, 0x05fdf7f9, 0x4803c857, 0x4c5c0000, 0x4c600000, 0x5808b802, 0x825cc580, 0x00000100, 0x05020012, 0x64001001, 0x64041004, 0x64101005, 0x4800100c, 0x9008040c, 0x48001003, - 0x59a80011, 0xb000042c, 0x48001007, 0x59a80012, - 0x90000440, 0x48001008, 0x0001f821, 0x90000541, + 0x59a80013, 0xb000042c, 0x48001007, 0x59a80014, + 0x90000440, 0x48001008, 0x0001f829, 0x90000541, 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x60280000, 0x4803c857, 0x05fdfcba, 0x80000580, 0x05fdf7f9, 0x4833c857, 0x5830040b, 0x84000518, 0x8c00051c, 0x0500000e, 0x82000500, 0xffff3fff, 0x5830080c, 0x82040d80, 0xffffffff, 0x05020002, 0x8400055e, 0x5830080d, 0x8c040520, 0x05000004, 0x84000558, - 0x84040d20, 0x48075013, 0x8c00051a, 0x05000003, + 0x84040d20, 0x48075015, 0x8c00051a, 0x05000003, 0x8400051a, 0x8400055e, 0x4800640b, 0x1c01f000, 0x4833c857, 0x4c5c0000, 0x4c580000, 0x4d2c0000, - 0x05c5fd6e, 0x05000032, 0x492c600a, 0x645a5800, + 0x05c5f8e5, 0x05000032, 0x492c600a, 0x645a5800, 0x4178b800, 0x912cac02, 0x0501f84c, 0x4404a800, 0x8054a800, 0x8058b000, 0x805cb800, 0x80580580, 0x0500000a, 0x912c0418, 0x80540580, 0x05fe07f7, - 0x4d2c0000, 0x05c5fd5d, 0x05000025, 0x5c000000, + 0x4d2c0000, 0x05c5f8d4, 0x05000025, 0x5c000000, 0x492c0001, 0x05fdf7ee, 0x485e5800, 0x5830000a, 0x58000000, 0x64006001, 0x48006004, 0x800000c4, 0x48006005, 0x5830000a, 0x90000402, 0x48006003, - 0x59a80011, 0x82000400, 0x00000484, 0x90580d91, - 0x0500000e, 0xb0000404, 0x90580da2, 0x05000003, - 0x82000400, 0x00000088, 0x59e00802, 0x8c04051e, - 0x05000006, 0x90580da2, 0x05020003, 0xb0000404, - 0x0501f002, 0xb000041c, 0x05fdfd63, 0x5c025800, + 0x59a80013, 0x82000400, 0x00000484, 0x90580d91, + 0x0500000e, 0xb0000404, 0x90580d9b, 0x05000002, + 0xb0000410, 0x59e00802, 0x8c04051e, 0x05000007, + 0x90580d9b, 0x05020003, 0x90000428, 0x0501f003, + 0x82000400, 0x00000080, 0x05fdfd63, 0x5c025800, 0x5c00b000, 0x5c00b800, 0x1c01f000, 0x5c025800, 0x05fdf7de, 0x4833c857, 0x4d2c0000, 0x4c3c0000, - 0x4c300000, 0x5832580a, 0x812e59c0, 0x05c40987, - 0x592c7801, 0x483c600a, 0x05c5fd3c, 0x803c79c0, + 0x4c300000, 0x5832580a, 0x812e59c0, 0x05c00d02, + 0x592c7801, 0x483c600a, 0x05c5f8b3, 0x803c79c0, 0x0500000a, 0x903c0402, 0x48006003, 0x583c0000, 0x48006004, 0x800000c4, 0x48006005, 0x40301000, - 0x0001f821, 0x90000541, 0x5c006000, 0x5c007800, + 0x0001f829, 0x90000541, 0x5c006000, 0x5c007800, 0x5c025800, 0x1c01f000, 0x485bc857, 0x4c5c0000, - 0x40580000, 0x0c01f001, 0x00107ca3, 0x00107cb7, - 0x00107cbb, 0x00107cbd, 0x00107cbf, 0x00107cc1, - 0x00107cc3, 0x00107cc5, 0x00107cc9, 0x00107ccc, - 0x00107ccf, 0x00107cd7, 0x00107ce6, 0x00107cf1, - 0x00107cfc, 0x00107d01, 0x00107d0c, 0x00107ca3, - 0x00107ca6, 0x00107d0f, 0x00107d5c, 0x00107d66, - 0x00107d68, 0x00107d6e, 0x00107d72, 0x00107d76, - 0x00107d7b, 0x00107d7d, 0x00107d7f, 0x00107d81, - 0x00107d83, 0x00107d85, 0x00107d87, 0x00107d8f, - 0x00107cad, 0x00107cb0, 0x00107d3b, 0x00107d50, - 0x00107d52, 0x00107d54, 0x00107d56, 0x00107d58, - 0x00107d5a, 0x00107d60, 0x00107d5e, 0x00107d64, - 0x00107d62, 0x00107d42, 0x00107d6c, 0x00107d6e, - 0x00107d72, 0x00107da4, 0x00107da7, 0x00107da9, - 0x00107dab, 0x00107dad, 0x00107daf, 0x42000800, - 0x44504f4c, 0x0501f10f, 0x60100800, 0x59e00002, - 0x8c00051e, 0x0500010b, 0x82040d40, 0x00000100, - 0x0501f108, 0x42000800, 0x44504f4c, 0x0501f103, - 0x60180800, 0x59e00002, 0x8c00051e, 0x050000ff, - 0x82040d40, 0x00000100, 0x0501f0fc, 0x600c0802, - 0x0501f055, 0x50040800, 0x0501f053, 0x59a80814, - 0x0501f051, 0x59a80815, 0x0501f04f, 0x59a80816, - 0x0501f04d, 0x59a80817, 0x0501f04b, 0x59a80818, - 0x0501f049, 0x59a80819, 0x0501f047, 0x302e3730, - 0x30302e33, 0x42000800, 0x00107cc7, 0x05fdf7ee, - 0x42000800, 0x00107cc8, 0x05fdf7eb, 0x42000000, - 0x7ff0000d, 0x50000000, 0x80000130, 0x0501f8e4, - 0x9c0001c0, 0x40000800, 0x0501f037, 0x42000000, - 0x7ff0000d, 0x50000000, 0x80000120, 0x0501f8dc, - 0x82000500, 0x00ffffff, 0x82000540, 0x2e000000, - 0x9c0001c0, 0x05fdf7f4, 0x32333532, 0x31303030, - 0x32333532, 0x32303030, 0x60000020, 0x50000000, - 0x82000480, 0x25320001, 0x05020004, 0x42000800, - 0x00107ce2, 0x05fdf7cc, 0x42000800, 0x00107ce4, - 0x05fdf7c9, 0x60000020, 0x50000000, 0x82000480, - 0x25320001, 0x05020004, 0x42000800, 0x00107ce3, - 0x05fdf7c1, 0x42000800, 0x00107ce5, 0x05fdf7be, - 0x60c80800, 0x61900000, 0x800000e0, 0x80040d40, - 0x0501f00d, 0x59a8005a, 0x800001c0, 0x05020002, - 0x6140000f, 0x59a8085b, 0x800409c0, 0x05020002, - 0x6140080f, 0x800408e0, 0x80040d40, 0x0501f002, - 0x41780800, 0x60440000, 0x0501f0a7, 0x60080800, - 0x916c0583, 0x0502000e, 0x59a80249, 0x8c000502, - 0x05000004, 0x82040d40, 0x00000300, 0x0501f008, - 0x8c000508, 0x05000004, 0x82040d40, 0x00000200, - 0x0501f003, 0x82040d40, 0x00000100, 0x82040d40, - 0x00080000, 0x59c40001, 0x82000500, 0x00018000, - 0x9000bd80, 0x05020004, 0x82040d40, 0x01000000, - 0x0501f08c, 0x8200bd80, 0x00008000, 0x05020004, - 0x82040d40, 0x02000000, 0x0501f086, 0x8200bd80, - 0x00010000, 0x05020004, 0x82040d40, 0x04000000, - 0x0501f080, 0x8200bd80, 0x00018000, 0x0502007d, - 0x82040d40, 0x08000000, 0x0501f07a, 0x60100800, - 0x59e00002, 0x8c00051e, 0x05000003, 0x82040d40, - 0x00010000, 0x0501f071, 0x41780800, 0x916c0583, - 0x0502006e, 0x59a80249, 0x8c000502, 0x05000003, - 0x90040d43, 0x0501f069, 0x8c000508, 0x05000003, - 0x90040d42, 0x0501f065, 0x90040d41, 0x0501f063, - 0x59a80814, 0x0501f061, 0x59a80815, 0x0501f05f, - 0x59a80816, 0x0501f05d, 0x59a80817, 0x0501f05b, - 0x59a80818, 0x0501f059, 0x59a80819, 0x0501f057, - 0x59a8083d, 0x0501f057, 0x59a80800, 0x0501f053, - 0x59a80801, 0x0501f051, 0x59a80802, 0x0501f04f, - 0x59a80803, 0x0501f04d, 0x59880823, 0x0501f04d, - 0x59880129, 0x5988092a, 0x80040c00, 0x0501f049, - 0x599c0a09, 0x0501f045, 0x59c408b1, 0x59a800a9, - 0x80040c00, 0x0501f043, 0x59c408b2, 0x59a800aa, - 0x80040c00, 0x0501f03f, 0x60040800, 0x916c0583, - 0x0502003c, 0x84040d42, 0x0501f03a, 0x59880800, - 0x0501f038, 0x59880805, 0x0501f036, 0x59880801, - 0x0501f034, 0x59880802, 0x0501f032, 0x59880803, - 0x0501f030, 0x598808c5, 0x0501f02e, 0x59880081, - 0x59880882, 0x80040c00, 0x59880083, 0x80040c00, - 0x59880084, 0x80040c00, 0x0501f026, 0x59880826, - 0x82040d00, 0x000000ff, 0x59880027, 0x82000500, - 0x000000ff, 0x800000d0, 0x80040d40, 0x4c040000, - 0x59880019, 0x5988081a, 0x80040400, 0x82000500, - 0x000000ff, 0x800000e0, 0x5c000800, 0x80040d40, - 0x59880025, 0x800000f0, 0x80040d40, 0x0501f011, - 0x0529fb5b, 0x610008f4, 0x0501f00b, 0x610408f4, - 0x0501f009, 0x610808f4, 0x0501f007, 0x611008f4, - 0x0501f005, 0x611408f4, 0x0501f003, 0x611808f4, - 0x64030000, 0x50040800, 0x60e40000, 0x0501f002, - 0x60880000, 0x5c00b800, 0x1c01f000, 0x4803c857, - 0x4c5c0000, 0x4c600000, 0x82000500, 0x000000ff, - 0x4000b800, 0x4178c000, 0x905c048a, 0x0500100c, - 0x4000b800, 0x8260c400, 0x00000100, 0x82600500, - 0x0000ff00, 0x82000580, 0x00000a00, 0x05020003, - 0x8260c400, 0x0000f600, 0x05fdf7f4, 0x805c0418, - 0x82000400, 0x30303030, 0x5c00c000, 0x5c00b800, - 0x1c01f000, 0x00000030, 0x00000000, 0x00000000, - 0x000000f4, 0x00000394, 0x00000000, 0x00000000, - 0x00000444, 0x3c000000, 0x00000505, 0x00000707, - 0x00000000, 0x44435442, 0x000d0101, 0x00006283, - 0x52504010, 0x414e444f, 0x6283454d, 0x10100100, - 0x4c524553, 0x004d554e, 0x02006283, 0x43500220, - 0x00444949, 0x62830000, 0x02200300, 0x44494350, - 0x00004449, 0x04006283, 0x43500220, 0x56535349, - 0x62834449, 0x02200500, 0x53494350, 0x44494453, - 0x06006283, 0x57463c10, 0x4e4e4142, 0x62835245, - 0x04200700, 0x4f504346, 0x00535452, 0x08006283, - 0x554e0420, 0x4e55464d, 0x62830043, 0x02200b00, - 0x50514d56, 0x54524f50, 0x0c006283, 0x4d560220, - 0x46505051, 0x62832020, 0x04201300, 0x45494350, - 0x52424e42, 0xe0006283, 0x57460420, 0x52545441, - 0x00004249, 0x00000000, 0x44504f4c, 0x00090103, - 0x12004683, 0x45441810, 0x56524456, 0x46835256, - 0x08101300, 0x46564544, 0x00525657, 0x14004683, - 0x45440810, 0x4f494256, 0x46835256, 0x08101500, - 0x48564544, 0x00525657, 0x16004684, 0x43530220, - 0x4f544953, 0x46840056, 0x02201700, 0x4f545452, - 0x00000056, 0x18004684, 0x41520220, 0x00564f54, - 0x46840000, 0x02201900, 0x4f544445, 0x00000056, - 0x1a004684, 0x52430420, 0x00564f54, 0x00000000, - 0x00000000, 0x44504f4c, 0x00150204, 0x00004883, - 0x4f500120, 0x59545452, 0x48834550, 0x01200100, - 0x54524f50, 0x54415453, 0x03004883, 0x55530120, - 0x54525050, 0x48835053, 0x01200400, 0x5250474e, - 0x44505354, 0x05004883, 0x504e0420, 0x4954524f, - 0x48830044, 0x04200d00, 0x52445852, 0x0053504f, - 0x11004883, 0x58540420, 0x4f525245, 0x48845352, - 0x04201300, 0x52465852, 0x53454d41, 0x15004884, - 0x58540420, 0x4d415246, 0x48835345, 0x04201700, - 0x4b4e494c, 0x54415453, 0x21004884, 0x494c0420, - 0x52454b4e, 0x48840052, 0x04202200, 0x45435243, - 0x00005252, 0x2d004884, 0x4f4c0420, 0x454e5953, - 0x48845252, 0x04202e00, 0x49534f4c, 0x52524547, - 0x2f004884, 0x52500420, 0x52454d49, 0x48840052, - 0x04206f00, 0x4f474f4c, 0x00564352, 0x80004884, - 0x53520420, 0x43524e43, 0x48840056, 0x01208900, - 0x52534f4e, 0x54435643, 0x8a004884, 0x4c4f0120, - 0x554f4353, 0x4884544e, 0x01208b00, 0x4f43524c, - 0x00544e55, 0x8e004884, 0x494c0120, 0x56435250, - 0x00005443, 0x00000000, 0x44504f4c, 0x000f0206, - 0x00004c83, 0x55460220, 0x5954434e, 0x4c834550, - 0x02200100, 0x434e5546, 0x00004449, 0x02004c83, - 0x55461810, 0x4556434e, 0x4c835352, 0x08200800, - 0x4e4e5757, 0x00454d41, 0x09004c83, 0x57570820, - 0x4d414e50, 0x4c830045, 0x04200b00, 0x54524f50, - 0x54415453, 0x0d004c84, 0x43460420, 0x51585245, - 0x4c845a53, 0x04201000, 0x52454346, 0x4d524658, - 0x12004c84, 0x43460420, 0x46585445, 0x4c834d52, - 0x04201600, 0x52524550, 0x00504143, 0x17004c83, - 0x45500420, 0x4e555252, 0x4c834543, 0x04201800, - 0x524f4350, 0x4b414d55, 0x19004c83, 0x45500420, - 0x45435252, 0x4c835252, 0x04201a00, 0x524f4350, - 0x4b53414d, 0x1b004c83, 0x45500420, 0x52415252, - 0x00005243, 0x00000000, 0x44435442, 0x00000001, - 0x25321077, 0x338e103c, 0x474f4c51, 0x43204349, - 0x4f50524f, 0x49544152, 0x20204e4f, 0x50534920, - 0x78783532, 0x72694620, 0x7261776d, 0x20202065, - 0x73726556, 0x206e6f69, 0x2e372020, 0x302e3330, - 0x00202030, 0x00000002, 0x00000001, 0x01000100, - 0x05e5fa53, 0x05020005, 0x4803c856, 0x05d1fa9f, - 0x05d1fadd, 0x05d1fabe, 0x1c01f000, 0x59a8083b, - 0x59a8029c, 0x80040480, 0x599c0a02, 0x800409c0, - 0x05020002, 0x80040800, 0x80041480, 0x05001002, - 0x40000800, 0x4807509a, 0x59a8103b, 0x40040000, - 0x800acc80, 0x4967503b, 0x4967509b, 0x59aaa80b, - 0x41640800, 0x60c01000, 0x0501f88c, 0x8206a400, - 0x00111b00, 0x49535097, 0x4152b000, 0x0529fa48, - 0x0500001f, 0x496752dd, 0x599c041e, 0x4803c857, - 0x59a8089a, 0x4807c857, 0x80041480, 0x05021009, - 0x497b509a, 0x49575097, 0x4152a800, 0x81640c00, - 0x4807c857, 0x480754dd, 0x80040800, 0x0501f00d, - 0x480bc857, 0x480b509a, 0x81640c00, 0x4807c857, - 0x480754dd, 0x80040800, 0x60c01000, 0x0501f86f, - 0x4807c857, 0x8206a400, 0x00111b00, 0x49535097, - 0x4953c857, 0x4a0370e4, 0x30000000, 0x42006000, - 0x00110278, 0x4a006008, 0x0000012c, 0x4a006009, - 0xda10da10, 0x6454600c, 0x4a00600d, 0x00110278, - 0x4a00600e, 0x001012a7, 0x599c0014, 0x48006015, - 0x599c0015, 0x48006016, 0x42006000, 0x00111a10, - 0x64206203, 0x64186407, 0x4a006002, 0xffff0000, - 0x4a006009, 0x00110278, 0x4a006016, 0x00110278, - 0x599c0014, 0x48006017, 0x599c0015, 0x48006018, - 0x599c0413, 0x48006019, 0x4950601a, 0x4954601b, - 0x59a8009a, 0x4800601c, 0x4a00601d, 0x0010dc97, - 0x59a802dd, 0x48006020, 0x59a804dd, 0x48006021, - 0x42000000, 0x00111ad0, 0x48006022, 0x42000000, - 0x00110228, 0x48006023, 0x4a00601e, 0x0010dc98, - 0x4a00601f, 0x0010dc99, 0x42000000, 0xb0000000, - 0x42000800, 0x00111a10, 0x0001f93a, 0x1c01f000, + 0x40580000, 0x0c01f001, 0x00108165, 0x00108179, + 0x0010817d, 0x0010817f, 0x00108181, 0x00108183, + 0x00108185, 0x00108187, 0x0010818b, 0x0010818e, + 0x00108191, 0x00108199, 0x001081a8, 0x001081b3, + 0x001081be, 0x001081c3, 0x001081ce, 0x00108165, + 0x00108168, 0x001081d1, 0x00108219, 0x0010821b, + 0x00108221, 0x00108225, 0x00108229, 0x001081ec, + 0x0010820f, 0x0010816f, 0x00108172, 0x001081ee, + 0x00108203, 0x00108205, 0x00108207, 0x00108209, + 0x0010820b, 0x0010820d, 0x00108213, 0x00108211, + 0x00108217, 0x00108215, 0x001081f5, 0x0010821f, + 0x00108221, 0x00108225, 0x00108259, 0x0010825c, + 0x0010825e, 0x00108260, 0x00108262, 0x00108264, + 0x0010822e, 0x00108230, 0x00108232, 0x00108234, + 0x00108236, 0x00108238, 0x0010823a, 0x0010823c, + 0x00108244, 0x42000800, 0x44504f4c, 0x0501f104, + 0x60100800, 0x59e00002, 0x8c00051e, 0x05000100, + 0x82040d40, 0x00000100, 0x0501f0fd, 0x42000800, + 0x44504f4c, 0x0501f0f8, 0x60180800, 0x59e00002, + 0x8c00051e, 0x050000f4, 0x82040d40, 0x00000100, + 0x0501f0f1, 0x600c0802, 0x0501f055, 0x50040800, + 0x0501f053, 0x59a80816, 0x0501f051, 0x59a80817, + 0x0501f04f, 0x59a80818, 0x0501f04d, 0x59a80819, + 0x0501f04b, 0x59a8081a, 0x0501f049, 0x59a8081b, + 0x0501f047, 0x302e3830, 0x30302e33, 0x42000800, + 0x00108189, 0x05fdf7ee, 0x42000800, 0x0010818a, + 0x05fdf7eb, 0x42000000, 0x7ff0000d, 0x50000000, + 0x80000130, 0x0501f8d9, 0x9c0001c0, 0x40000800, + 0x0501f037, 0x42000000, 0x7ff0000d, 0x50000000, + 0x80000120, 0x0501f8d1, 0x82000500, 0x00ffffff, + 0x82000540, 0x2e000000, 0x9c0001c0, 0x05fdf7f4, + 0x32333532, 0x31303030, 0x32333532, 0x32303030, + 0x60000020, 0x50000000, 0x82000480, 0x25320001, + 0x05020004, 0x42000800, 0x001081a4, 0x05fdf7cc, + 0x42000800, 0x001081a6, 0x05fdf7c9, 0x60000020, + 0x50000000, 0x82000480, 0x25320001, 0x05020004, + 0x42000800, 0x001081a5, 0x05fdf7c1, 0x42000800, + 0x001081a7, 0x05fdf7be, 0x60c80800, 0x61900000, + 0x800000e0, 0x80040d40, 0x0501f00d, 0x59a8005d, + 0x800001c0, 0x05020002, 0x6140000f, 0x59a8085e, + 0x800409c0, 0x05020002, 0x6140080f, 0x800408e0, + 0x80040d40, 0x0501f002, 0x41780800, 0x60440000, + 0x0501f09c, 0x60080800, 0x59c40001, 0x82000500, + 0x00018000, 0x9000bd80, 0x05020004, 0x82040d40, + 0x000a0000, 0x0501f092, 0x8200bd80, 0x00008000, + 0x05020004, 0x82040d40, 0x00140000, 0x0501f08c, + 0x8200bd80, 0x00010000, 0x05020004, 0x82040d40, + 0x00280000, 0x0501f086, 0x8200bd80, 0x00018000, + 0x05020083, 0x82040d40, 0x00500000, 0x0501f080, + 0x61400800, 0x0501f07e, 0x60100800, 0x59e00002, + 0x8c00051e, 0x05000003, 0x82040d40, 0x00010000, + 0x0501f075, 0x41780800, 0x916c0583, 0x05020072, + 0x59a8024c, 0x8c000502, 0x05000003, 0x90040d43, + 0x0501f06d, 0x8c000508, 0x05000003, 0x90040d42, + 0x0501f069, 0x90040d41, 0x0501f067, 0x59a80816, + 0x0501f065, 0x59a80817, 0x0501f063, 0x59a80818, + 0x0501f061, 0x59a80819, 0x0501f05f, 0x59a8081a, + 0x0501f05d, 0x59a8081b, 0x0501f05b, 0x59a80840, + 0x0501f05b, 0x59a80800, 0x0501f057, 0x59a80801, + 0x0501f055, 0x59a80802, 0x0501f053, 0x59a80803, + 0x0501f051, 0x59880823, 0x0501f051, 0x5988012c, + 0x5988092d, 0x80040c00, 0x0501f04d, 0x599c0a09, + 0x0501f049, 0x59c408b1, 0x59a800ae, 0x80040c00, + 0x0501f047, 0x59c408b2, 0x59a800af, 0x80040c00, + 0x0501f043, 0x60040800, 0x916c0583, 0x05020040, + 0x84040d42, 0x0501f03e, 0x59880800, 0x0501f03a, + 0x59880805, 0x0501f038, 0x59880801, 0x0501f036, + 0x59880802, 0x0501f034, 0x59880803, 0x0501f032, + 0x59880927, 0x0501f030, 0x598808c8, 0x0501f02e, + 0x59880081, 0x59880882, 0x80040c00, 0x59880083, + 0x80040c00, 0x59880084, 0x80040c00, 0x0501f026, + 0x59880826, 0x82040d00, 0x000000ff, 0x59880027, + 0x82000500, 0x000000ff, 0x800000d0, 0x80040d40, + 0x4c040000, 0x59880019, 0x5988081a, 0x80040400, + 0x82000500, 0x000000ff, 0x800000e0, 0x5c000800, + 0x80040d40, 0x59880025, 0x800000f0, 0x80040d40, + 0x0501f011, 0x0529fe21, 0x610008f4, 0x0501f00d, + 0x610408f4, 0x0501f00b, 0x610808f4, 0x0501f009, + 0x611008f4, 0x0501f007, 0x611408f4, 0x0501f005, + 0x611808f4, 0x50040800, 0x64030000, 0x0501f002, + 0x50040800, 0x60ec0000, 0x0501f002, 0x606c0000, + 0x5c00b800, 0x1c01f000, 0x4803c857, 0x4c5c0000, + 0x4c600000, 0x82000500, 0x000000ff, 0x4000b800, + 0x4178c000, 0x905c048a, 0x0500100c, 0x4000b800, + 0x8260c400, 0x00000100, 0x82600500, 0x0000ff00, + 0x82000580, 0x00000a00, 0x05020003, 0x8260c400, + 0x0000f600, 0x05fdf7f4, 0x805c0418, 0x82000400, + 0x30303030, 0x5c00c000, 0x5c00b800, 0x1c01f000, + 0x00000030, 0x00000000, 0x00000000, 0x000000f4, + 0x00000394, 0x00000000, 0x00000000, 0x00000444, + 0x3c000000, 0x00000505, 0x00000707, 0x00000000, + 0x44435442, 0x000d0101, 0x00006283, 0x52504010, + 0x414e444f, 0x6283454d, 0x10100100, 0x4c524553, + 0x004d554e, 0x02006283, 0x43500220, 0x00444949, + 0x62830000, 0x02200300, 0x44494350, 0x00004449, + 0x04006283, 0x43500220, 0x56535349, 0x62834449, + 0x02200500, 0x53494350, 0x44494453, 0x06006283, + 0x57463c10, 0x4e4e4142, 0x62835245, 0x04200700, + 0x454d554e, 0x54524f50, 0x08006283, 0x554e0420, + 0x4e55464d, 0x62830043, 0x02200b00, 0x50514d56, + 0x54524f50, 0x0c006283, 0x4d560220, 0x46505051, + 0x62832020, 0x04201300, 0x45494350, 0x52424e42, + 0xe0006283, 0x57460420, 0x52545441, 0x00004249, + 0x00000000, 0x44504f4c, 0x00090103, 0x12004683, + 0x45441810, 0x56524456, 0x46835256, 0x08101300, + 0x46564544, 0x00525657, 0x14004683, 0x45440810, + 0x4f494256, 0x46835256, 0x08101500, 0x48564544, + 0x00525657, 0x16004684, 0x43530220, 0x4f544953, + 0x46840056, 0x02201700, 0x4f545452, 0x00000056, + 0x18004684, 0x41520220, 0x00564f54, 0x46840000, + 0x02201900, 0x4f544445, 0x00000056, 0x1a004684, + 0x52430420, 0x00564f54, 0x00000000, 0x00000000, + 0x44504f4c, 0x00090204, 0x00004883, 0x4f500220, + 0x59545452, 0x48834550, 0x02200200, 0x54524f50, + 0x44455053, 0x06004883, 0x58520420, 0x504f5244, + 0x48830053, 0x04200e00, 0x52455854, 0x53524f52, + 0x10004884, 0x58520420, 0x4d415246, 0x48845345, + 0x04201200, 0x52465854, 0x53454d41, 0x16004883, + 0x494c0420, 0x54534b4e, 0x48835441, 0x04201a00, + 0x50505553, 0x50535452, 0x1b004883, 0x504e0420, + 0x4954524f, 0x00000044, 0x00000000, 0x44504f4c, + 0x001b0206, 0x00004c83, 0x55460220, 0x5954434e, + 0x4c834550, 0x02200100, 0x434e5546, 0x00004449, + 0x02004c83, 0x55461810, 0x4556434e, 0x4c835352, + 0x08200800, 0x4e4e5757, 0x00454d41, 0x09004c83, + 0x57570820, 0x4d414e50, 0x4c830045, 0x04200b00, + 0x54524f50, 0x54415453, 0x0d004c84, 0x43460420, + 0x51585245, 0x4c845a53, 0x04201000, 0x52454346, + 0x4d524658, 0x12004c84, 0x43460420, 0x46585445, + 0x4c834d52, 0x04201600, 0x52524550, 0x00504143, + 0x17004c83, 0x45500420, 0x4e555252, 0x4c834543, + 0x04201800, 0x524f4350, 0x4b414d55, 0x19004c83, + 0x45500420, 0x45435252, 0x4c835252, 0x04201a00, + 0x524f4350, 0x4b53414d, 0x1b004c83, 0x45500420, + 0x52415252, 0x4c845243, 0x04202500, 0x4b4e494c, + 0x00525245, 0x26004c84, 0x52430420, 0x52524543, + 0x4c840000, 0x04203100, 0x59534f4c, 0x5252454e, + 0x32004c84, 0x4f4c0420, 0x45474953, 0x4c845252, + 0x04203300, 0x4d495250, 0x00525245, 0x34004c84, + 0x49440420, 0x52455053, 0x48840052, 0x04206f00, + 0x4f474f4c, 0x00564352, 0x80004c84, 0x53520420, + 0x43524e43, 0x4c840056, 0x01208900, 0x52534f4e, + 0x54435643, 0x8a004c84, 0x4c4f0120, 0x554f4353, + 0x4c84544e, 0x01208b00, 0x4f43524c, 0x00544e55, + 0x8e004c84, 0x494c0120, 0x56435250, 0x00005443, + 0x00000000, 0x44435442, 0x00000001, 0x25321077, + 0x338e103c, 0x474f4c51, 0x43204349, 0x4f50524f, + 0x49544152, 0x20204e4f, 0x50534920, 0x78783532, + 0x72694620, 0x7261776d, 0x20202065, 0x73726556, + 0x206e6f69, 0x2e382020, 0x302e3330, 0x00202030, + 0x00000002, 0x00000001, 0x01000100, 0x05e1ff42, + 0x05020005, 0x4803c856, 0x05cdfe68, 0x05cdfea6, + 0x05cdfe87, 0x1c01f000, 0x59a8043e, 0x599c0a02, + 0x800409c0, 0x05020002, 0x80040800, 0x80041480, + 0x05001002, 0x40000800, 0x4807509d, 0x59a8103d, + 0x40040000, 0x800acc80, 0x4967503d, 0x4967509e, + 0x59a8143e, 0x80081480, 0x480b543e, 0x59aaa80b, + 0x41640800, 0x60c01000, 0x0501f88d, 0x8006a42f, + 0x4953509a, 0x4152b000, 0x0529fd0c, 0x0500001e, + 0x496752e2, 0x599c041e, 0x4803c857, 0x59a8089d, + 0x4807c857, 0x80041480, 0x05021009, 0x497b509d, + 0x4957509a, 0x4152a800, 0x81640c00, 0x4807c857, + 0x480754e2, 0x80040800, 0x0501f00c, 0x480bc857, + 0x480b509d, 0x81640c00, 0x4807c857, 0x480754e2, + 0x80040800, 0x60c01000, 0x0501f871, 0x4807c857, + 0x8006a42f, 0x4953509a, 0x4953c857, 0x4a0370e4, + 0x30000000, 0x42006000, 0x0011421c, 0x4a006008, + 0x0000012c, 0x4a006009, 0xda10da10, 0x6454600c, + 0x4a00600d, 0x0011421c, 0x4a00600e, 0x00100046, + 0x599c0014, 0x48006015, 0x599c0015, 0x48006016, + 0x42006000, 0x001159b4, 0x64206203, 0x64186407, + 0x4a006002, 0xffff0000, 0x4a006009, 0x0011421c, + 0x4a006016, 0x0011421c, 0x599c0014, 0x48006017, + 0x599c0015, 0x48006018, 0x599c0413, 0x48006019, + 0x4950601a, 0x4954601b, 0x59a8009d, 0x4800601c, + 0x59a802e2, 0x48006020, 0x59a804e2, 0x48006021, + 0x42000000, 0x00115a74, 0x48006022, 0x42000000, + 0x001141cc, 0x48006023, 0x4a00601e, 0x00111c1b, + 0x4a00601f, 0x00111c1c, 0x42000000, 0xb0000000, + 0x42000800, 0x001159b4, 0x0001f942, 0x1c01f000, 0x4807c856, 0x59240206, 0x800409c0, 0x05000003, 0x80080540, 0x0501f002, 0x80080500, 0x48024a06, - 0x1c01f000, 0x492e6017, 0x4d2c0000, 0x05c5fa33, + 0x1c01f000, 0x492e6017, 0x4d2c0000, 0x05c1fdb6, 0x0500000c, 0x4c500000, 0x4c540000, 0x4c580000, - 0x412ca800, 0x5930a017, 0x6060b000, 0x0529f950, + 0x412ca800, 0x5930a017, 0x6060b000, 0x0529fc17, 0x492e6017, 0x5c00b000, 0x5c00a800, 0x5c00a000, 0x5c025800, 0x59300202, 0x48025a10, 0x4932580d, - 0x1c01f000, 0x4803c856, 0x4c000000, 0x05f9f96b, - 0x0502000b, 0x05e9fdaf, 0x05c20e74, 0x5c000000, - 0x48026802, 0x0509fc9a, 0x05000006, 0x4936600a, - 0x64066407, 0x60067000, 0x0009f000, 0x5c000000, - 0x1c01f000, 0x05c1fe69, 0x4c0c0000, 0x4c100000, - 0x4c140000, 0x4c180000, 0x80001d80, 0x80002580, - 0x60803000, 0x90040501, 0x05000003, 0x40080000, - 0x800c1c00, 0x400c2800, 0x800c1902, 0x80102102, - 0x90140501, 0x05000003, 0x82102540, 0x80000000, - 0x80040902, 0x80183040, 0x05fe07f3, 0x40100800, - 0x400c0000, 0x5c003000, 0x5c002800, 0x5c002000, - 0x5c001800, 0x1c01f000, 0x4c0c0000, 0x4c580000, - 0x6080b000, 0x80000540, 0x05000019, 0x80041c80, - 0x05021017, 0x800810c2, 0x80040982, 0x05001006, - 0x80041c80, 0x05021005, 0x8058b040, 0x05fe07fa, - 0x0501f006, 0x80041c80, 0x400c0800, 0x80081000, - 0x8058b040, 0x05fe07f4, 0x4c000000, 0x41f00000, - 0x82000500, 0xf7ffffff, 0x4003e000, 0x5c000000, - 0x5c00b000, 0x5c001800, 0x1c01f000, 0x4c000000, - 0x41f00000, 0x82000540, 0x08000000, 0x05fdf7f7, - 0x42007000, 0x0010e060, 0x64147000, 0x64007401, - 0x4a007201, 0x00000840, 0x64147202, 0x6401a8e8, - 0x6443c82b, 0x0501f84e, 0x4a01a8e9, 0x00003a0d, - 0x4a01a8ee, 0x00080202, 0x6405a8e8, 0x640378e8, - 0x6443c821, 0x6413c823, 0x0501f879, 0x4a0378e9, - 0x00003a0d, 0x4a0378ee, 0x00080302, 0x640778e8, - 0x41780800, 0x6003a0ec, 0x42001000, 0x0010e32d, - 0x42001800, 0x0011178d, 0x600c2000, 0x6120297f, - 0x4a03a005, 0xd0000001, 0x59d00006, 0x4a03a005, - 0x90000001, 0x59d00006, 0x4a03a005, 0x60000001, - 0x59d00006, 0x4a03a005, 0x60000003, 0x59d00006, - 0x4a03a005, 0x60000005, 0x59d00006, 0x4a03a005, - 0x60000007, 0x59d00006, 0x4a03a005, 0x60000009, - 0x59d00006, 0x4a03a005, 0x6000000b, 0x64041001, - 0x4a001002, 0x00000100, 0x4a001009, 0x00020f77, - 0x480c100b, 0x4810100d, 0x4814100e, 0x4978120f, - 0x4804140f, 0x49781010, 0x820c1c00, 0x00000080, - 0x480c100c, 0x90081412, 0x801020c4, 0x80142800, - 0x91d3a420, 0x80040800, 0x90040485, 0x05fc17d7, - 0x59e00003, 0x82000500, 0xffffffe0, 0x82000540, - 0x00008000, 0x4803c003, 0x59c40006, 0x82000500, - 0xfffcffff, 0x48038806, 0x1c01f000, 0x4d900000, - 0x4d180000, 0x4c500000, 0x4c580000, 0x4c540000, - 0x4a01a8e7, 0xaaaaaaaa, 0x4a01a8e6, 0xaaaaaaaa, - 0x4a01a8e5, 0xaaaaaaaa, 0x4a01a8e4, 0xaaaaaaaa, - 0x4a01a8ee, 0x00200000, 0x4979a8ee, 0x4a01a8ce, - 0x0010d17b, 0x6000b001, 0x90d4ac00, 0x4178a000, - 0x0529f893, 0x4a01a81d, 0x001012a3, 0x4a01a81b, - 0x001012ac, 0x4a01a81c, 0x001012bc, 0x4a01a81e, - 0x0010e2ff, 0x64031800, 0x600c0800, 0x42001800, - 0x0010e302, 0x417a3000, 0x811b20c8, 0x83932400, - 0x0000b037, 0x48072000, 0x480f2001, 0x64032002, - 0x800408c4, 0x900c1c05, 0x811a3000, 0x91180485, - 0x05fc17f6, 0x5c00a800, 0x5c00b000, 0x5c00a000, - 0x5c023000, 0x5c032000, 0x1c01f000, 0x4cd80000, - 0x4d180000, 0x4a0378e7, 0xaaaaaaaa, 0x4a0378e6, - 0xaaaaaaaa, 0x4a0378e5, 0xaaaaaaaa, 0x4a03781b, - 0x001012ac, 0x4a03781c, 0x001012bc, 0x4a03781d, - 0x0010e063, 0x4a03781e, 0x0010e06a, 0x42000800, - 0x0010e302, 0x417a3000, 0x42001000, 0x0011178d, - 0x8119b0c8, 0x82d9b400, 0x0000bf32, 0x83180400, - 0x00108a67, 0x50000000, 0x4801b002, 0x4809b000, - 0x4809b001, 0x82081400, 0x00000080, 0x90040c05, - 0x811a3000, 0x91180485, 0x05fc17f2, 0x5c023000, - 0x5c01b000, 0x1c01f000, 0x4933c857, 0x42000800, - 0x8000004e, 0x59300416, 0x8c000510, 0x05000002, - 0x84040d52, 0x48066004, 0x58d400ea, 0x8c000516, - 0x05fe07fe, 0x83300400, 0x80000000, 0x4801a8e1, - 0x1c01f000, 0x4933c857, 0x59300804, 0x82040d00, - 0x00000100, 0x82040d40, 0x80000040, 0x59300416, - 0x8c000510, 0x05000002, 0x84040d52, 0x48066004, - 0x497a6000, 0x58d400ea, 0x8c000516, 0x05fe07fe, - 0x83300400, 0x60000000, 0x4801a8e1, 0x1c01f000, - 0x0501fc8f, 0x4df00000, 0x4d300000, 0x4d340000, - 0x4d2c0000, 0x4d180000, 0x4c5c0000, 0x4c600000, - 0x4d900000, 0x4dd00000, 0x4da40000, 0x4d140000, - 0x4cd80000, 0x58d6602f, 0x813261c0, 0x05000024, - 0x41302800, 0x4178c000, 0x59300000, 0x4c000000, - 0x5932680a, 0x5930b801, 0x4c0c0000, 0x4c140000, - 0x0509f96a, 0x5c002800, 0x5c001800, 0x05000008, - 0x0501f8d1, 0x4c0c0000, 0x4c140000, 0x0501fafd, - 0x5c002800, 0x5c001800, 0x0501f005, 0x41301800, - 0x8060c1c0, 0x05020002, 0x400cc000, 0x805cb9c0, - 0x05000003, 0x405e6000, 0x05fdf7eb, 0x5c026000, - 0x813261c0, 0x05000006, 0x8060c1c0, 0x05000002, - 0x40602800, 0x4178c000, 0x05fdf7e0, 0x417a3000, - 0x0505f99c, 0x59926005, 0x813261c0, 0x0500000a, - 0x5932680a, 0x4c140000, 0x0509f948, 0x5c002800, - 0x05000005, 0x0501fe88, 0x0501fc21, 0x0501fc26, - 0x0501fadc, 0x811a3000, 0x91180485, 0x05fc17f1, - 0x5c01b000, 0x5c022800, 0x5c034800, 0x5c03a000, - 0x5c032000, 0x5c00c000, 0x5c00b800, 0x5c023000, - 0x5c025800, 0x5c026800, 0x5c026000, 0x5c03e000, - 0x05000c30, 0x1c01f000, 0x4933c857, 0x0501fc3c, - 0x4df00000, 0x4d340000, 0x4d180000, 0x4d900000, - 0x4dd00000, 0x4da40000, 0x4d140000, 0x4cd80000, - 0x5932680a, 0x58d4202f, 0x40102800, 0x801021c0, - 0x05000016, 0x41300000, 0x80100580, 0x05000011, - 0x5810000a, 0x81340580, 0x0502000b, 0x40101800, - 0x58102001, 0x41300000, 0x801021c0, 0x0500000b, - 0x80100d80, 0x05000007, 0x40101800, 0x58102001, - 0x05fdf7fa, 0x40102800, 0x58102000, 0x05fdf7ec, - 0x0501f879, 0x0501f00d, 0x417a3000, 0x0505f959, - 0x59900005, 0x81300580, 0x05000005, 0x811a3000, - 0x91180485, 0x05021010, 0x05fdf7f9, 0x0501fe46, - 0x0501fbdf, 0x0501fbe4, 0x5c01b000, 0x5c022800, - 0x5c034800, 0x5c03a000, 0x5c032000, 0x5c023000, - 0x5c026800, 0x5c03e000, 0x05000bf6, 0x80000580, - 0x1c01f000, 0x5c01b000, 0x5c022800, 0x5c034800, - 0x5c03a000, 0x5c032000, 0x5c023000, 0x5c026800, - 0x5c03e000, 0x05000beb, 0x90000541, 0x1c01f000, - 0x0501fbf7, 0x4df00000, 0x4d300000, 0x4d340000, - 0x4d180000, 0x4d2c0000, 0x4c5c0000, 0x4d900000, - 0x4dd00000, 0x4da40000, 0x4d140000, 0x4cd80000, - 0x58d6602f, 0x813261c0, 0x05000021, 0x41302800, - 0x5930b800, 0x5932680a, 0x59340403, 0x81440580, - 0x05000006, 0x805cb9c0, 0x05000019, 0x41302800, - 0x405e6000, 0x05fdf7f7, 0x5930001d, 0x81240580, - 0x05fe07f9, 0x5930b801, 0x4c0c0000, 0x4c140000, - 0x0509f8ca, 0x5c002800, 0x5c001800, 0x05000008, - 0x0501f831, 0x4c0c0000, 0x4c140000, 0x0501fa5d, - 0x5c002800, 0x5c001800, 0x0501f002, 0x41301800, - 0x405e6000, 0x813261c0, 0x05fe07ec, 0x417a3000, - 0x0505f908, 0x59926005, 0x813261c0, 0x05000005, - 0x5932680a, 0x59340403, 0x81440580, 0x05000005, - 0x811a3000, 0x91180485, 0x05fc17f6, 0x0501f00d, - 0x5930001d, 0x81240580, 0x05fe07fa, 0x4c140000, - 0x0509f8aa, 0x5c002800, 0x05fc07f6, 0x0501fdea, - 0x0501fb83, 0x0501fb88, 0x0501fa3e, 0x05fdf7f1, - 0x5c01b000, 0x5c022800, 0x5c034800, 0x5c03a000, - 0x5c032000, 0x5c00b800, 0x5c025800, 0x5c023000, - 0x5c026800, 0x5c026000, 0x5c03e000, 0x05000b95, - 0x1c01f000, 0x0501fb78, 0x58d4002f, 0x81300580, - 0x0502001c, 0x59300801, 0x800409c0, 0x0500000e, - 0x59300000, 0x800001c0, 0x05020005, 0x4805a82f, - 0x4805a82e, 0x497a6001, 0x1c01f000, 0x59300000, - 0x48000800, 0x4805a82f, 0x497a6000, 0x497a6001, - 0x1c01f000, 0x59300800, 0x800409c0, 0x05020005, - 0x4979a82f, 0x4979a82e, 0x497a680c, 0x1c01f000, - 0x4805a82f, 0x497a6000, 0x497a680c, 0x1c01f000, - 0x58d4002e, 0x81300580, 0x0502000c, 0x59300001, - 0x800001c0, 0x05020005, 0x4815a82e, 0x49782800, - 0x497a680c, 0x1c01f000, 0x4801a82e, 0x48002800, - 0x497a6001, 0x1c01f000, 0x59300000, 0x800001c0, - 0x05020008, 0x59300001, 0x48001801, 0x800001c0, - 0x05020002, 0x480e680c, 0x497a6001, 0x1c01f000, - 0x59300801, 0x800409c0, 0x05020006, 0x59300800, - 0x48042800, 0x497a6000, 0x497a680c, 0x1c01f000, - 0x59300000, 0x48000800, 0x48042800, 0x497a6000, - 0x497a6001, 0x1c01f000, 0x0501fb5d, 0x4df00000, - 0x0501f828, 0x050208ec, 0x05020960, 0x05020005, - 0x5c03e000, 0x05000b47, 0x80000580, 0x1c01f000, - 0x5c03e000, 0x05000b43, 0x90000541, 0x1c01f000, - 0x4d2c0000, 0x4d340000, 0x4d300000, 0x4c5c0000, - 0x4178b800, 0x598e6007, 0x813261c0, 0x0500000e, - 0x0509f83a, 0x05000009, 0x59300000, 0x4c000000, - 0x0501fa46, 0x405c3000, 0x0501f851, 0x0501f9cd, - 0x5c026000, 0x05fdf7f5, 0x4130b800, 0x59326000, - 0x05fdf7f2, 0x0509f8d3, 0x0509f8ee, 0x5c00b800, - 0x5c026000, 0x5c026800, 0x5c025800, 0x1c01f000, - 0x4933c857, 0x4c5c0000, 0x813261c0, 0x05c00bf7, - 0x41300000, 0x598cb807, 0x41783000, 0x805cb9c0, - 0x05000011, 0x805c0d80, 0x05000004, 0x405c3000, - 0x5818b800, 0x05fdf7fa, 0x0501f835, 0x598c000b, - 0x81300580, 0x0504084b, 0x59300403, 0xb0000582, - 0x05020002, 0x497a6008, 0x80000580, 0x5c00b800, - 0x1c01f000, 0x90000541, 0x5c00b800, 0x1c01f000, - 0x0501fb17, 0x4df00000, 0x4d2c0000, 0x4d340000, - 0x4d300000, 0x4c5c0000, 0x4178b800, 0x598e6007, - 0x813261c0, 0x05000015, 0x5932680a, 0x59340403, - 0x81440580, 0x0502000e, 0x5930001d, 0x81240580, - 0x0502000b, 0x0505fff9, 0x05000009, 0x59300000, - 0x4c000000, 0x0501fa05, 0x405c3000, 0x0501f810, - 0x0501f98c, 0x5c026000, 0x05fdf7ee, 0x4130b800, - 0x59326000, 0x05fdf7eb, 0x0509f846, 0x0509f8ad, - 0x5c00b800, 0x5c026000, 0x5c026800, 0x5c025800, - 0x5c03e000, 0x05000ae3, 0x1c01f000, 0x59300800, - 0x497a6000, 0x0501fac4, 0x801831c0, 0x05020009, - 0x598c0006, 0x81300580, 0x05020004, 0x48031806, - 0x48031807, 0x0501f008, 0x48071807, 0x0501f006, - 0x48043000, 0x598c0006, 0x81300580, 0x05020002, - 0x481b1806, 0x0501f2c8, 0x4d300000, 0x598e6005, - 0x813261c0, 0x05000008, 0x59300000, 0x4c000000, - 0x0501f9da, 0x0005ffdc, 0x0501fabf, 0x5c026000, - 0x05fdf7f8, 0x497b1805, 0x497b1804, 0x5c026000, - 0x1c01f000, 0x0501face, 0x4df00000, 0x4d300000, - 0x4c5c0000, 0x4c600000, 0x4130c000, 0x4178b800, - 0x598e6005, 0x813261c0, 0x05000036, 0x5930080a, - 0x800409c0, 0x0502000d, 0x4d340000, 0x0001fb00, - 0x41340800, 0x5c026800, 0x0502002b, 0x58040802, - 0x59300019, 0x80040580, 0x82000500, 0x00ffffff, - 0x05000005, 0x0501f024, 0x58040403, 0x81440580, - 0x05020021, 0x5930501a, 0x59340013, 0x82000500, - 0x00ffffff, 0x80280580, 0x0502001b, 0x5930002a, - 0x80600580, 0x05000018, 0x0501f9ac, 0x59302000, - 0x497a6000, 0x805cb9c0, 0x05020009, 0x598c0004, - 0x81300580, 0x05020004, 0x497b1805, 0x497b1804, - 0x0501f008, 0x48131805, 0x0501f006, 0x4810b800, - 0x598c0004, 0x81300580, 0x05020002, 0x485f1804, - 0x4c100000, 0x0005ffdc, 0x0501fa7f, 0x5c026000, - 0x05fdf7cd, 0x4130b800, 0x59326000, 0x05fdf7ca, - 0x5c00c000, 0x5c00b800, 0x5c026000, 0x5c03e000, - 0x05000a7c, 0x1c01f000, 0x4d2c0000, 0x4d300000, - 0x4d340000, 0x4c5c0000, 0x4178b800, 0x598e6009, - 0x813261c0, 0x0500000e, 0x0505ff74, 0x05000009, - 0x0501f982, 0x59300000, 0x4c000000, 0x405c3000, - 0x0501f855, 0x0501f907, 0x5c026000, 0x05fdf7f5, - 0x4130b800, 0x59326000, 0x05fdf7f2, 0x05e9fc6d, - 0x5c00b800, 0x5c026800, 0x5c026000, 0x5c025800, - 0x1c01f000, 0x4933c857, 0x4c5c0000, 0x813261c0, - 0x05c00b32, 0x41300000, 0x598cb809, 0x41783000, - 0x805cb9c0, 0x0500000e, 0x805c0d80, 0x05000004, - 0x405c3000, 0x5818b800, 0x05fdf7fa, 0x0501f83a, - 0x598c000b, 0x81300580, 0x05000f86, 0x497a6008, - 0x80000580, 0x5c00b800, 0x1c01f000, 0x90000541, - 0x5c00b800, 0x1c01f000, 0x0501fa55, 0x4df00000, - 0x4d340000, 0x4d300000, 0x4d2c0000, 0x4c5c0000, - 0x83440480, 0x000007f0, 0x05021020, 0x0001fb00, - 0x05c20b12, 0x4178b800, 0x598e6009, 0x813261c0, - 0x05000014, 0x5930000a, 0x81340580, 0x0502000e, - 0x5930001d, 0x81240580, 0x0502000b, 0x0505ff33, - 0x05000009, 0x0501f941, 0x59300000, 0x4c000000, - 0x405c3000, 0x0501f814, 0x0501f8c6, 0x5c026000, - 0x05fdf7ef, 0x4130b800, 0x59326000, 0x05fdf7ec, - 0x8d3c0506, 0x05000004, 0x59340200, 0x8c00050e, - 0x05020002, 0x05e9fc46, 0x5c00b800, 0x5c025800, - 0x5c026000, 0x5c026800, 0x5c03e000, 0x05000a19, - 0x1c01f000, 0x59300800, 0x497a6000, 0x0501f9fa, - 0x801831c0, 0x05020009, 0x598c0008, 0x81300580, - 0x05020004, 0x48031808, 0x48031809, 0x0501f008, - 0x48071809, 0x0501f006, 0x48043000, 0x598c0008, - 0x81300580, 0x05020002, 0x481b1808, 0x0501f1fe, - 0x0501fa13, 0x4df00000, 0x4d300000, 0x4c5c0000, - 0x4178b800, 0x598e6003, 0x813261c0, 0x0500000e, - 0x0505fefe, 0x05000009, 0x0501f90c, 0x59300000, - 0x4c000000, 0x405c3000, 0x0501f86c, 0x0501f891, - 0x5c026000, 0x05fdf7f5, 0x4130b800, 0x59326000, - 0x05fdf7f2, 0x5c00b800, 0x5c026000, 0x5c03e000, - 0x050009ec, 0x1c01f000, 0x4933c857, 0x4c5c0000, - 0x4c600000, 0x813261c0, 0x05c00abc, 0x41300000, - 0x598cb803, 0x405cc000, 0x805cb9c0, 0x05000024, - 0x805c0d80, 0x05000004, 0x405cc000, 0x5860b800, - 0x05fdf7fa, 0x598c000b, 0x81300580, 0x05000f11, - 0x0501f9bd, 0x598c0003, 0x805c0580, 0x05020009, - 0x585c0000, 0x48031803, 0x4978b800, 0x598c0002, - 0x805c0580, 0x0502000d, 0x497b1802, 0x0501f00b, - 0x598c0002, 0x805c0580, 0x05020005, 0x48631802, - 0x4978b800, 0x4978c000, 0x0501f004, 0x585c0000, - 0x4800c000, 0x4978b800, 0x0501f9bb, 0x80000580, - 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x90000541, - 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x4933c857, - 0x0501f9c7, 0x4df00000, 0x4d2c0000, 0x4d340000, - 0x4d300000, 0x4c5c0000, 0x4178b800, 0x598e6003, - 0x813261c0, 0x0500001e, 0x5932680a, 0x59340403, - 0x81440580, 0x05020017, 0x812649c0, 0x05000004, - 0x5930001d, 0x81240580, 0x05020012, 0x0505fea7, - 0x05000010, 0x0515f968, 0x05000006, 0x0515ffea, - 0x05020004, 0x59300403, 0xb0000583, 0x05140feb, - 0x0501f8ae, 0x59300000, 0x4c000000, 0x405c3000, - 0x0501f80e, 0x0501f833, 0x5c026000, 0x05fdf7e5, - 0x4130b800, 0x59326000, 0x05fdf7e2, 0x5c00b800, - 0x5c026000, 0x5c026800, 0x5c025800, 0x5c03e000, - 0x0500098c, 0x1c01f000, 0x59300800, 0x497a6000, - 0x0501f96d, 0x801831c0, 0x05020009, 0x598c0002, - 0x81300580, 0x05020004, 0x48031802, 0x48031803, - 0x0501f008, 0x48071803, 0x0501f006, 0x48043000, - 0x598c0002, 0x81300580, 0x05020002, 0x481b1802, - 0x0501f171, 0x4943c857, 0x0501f985, 0x4df00000, - 0x05fdfe34, 0x05fdfef9, 0x5c03e000, 0x05000971, - 0x1c01f000, 0x4947c857, 0x0501f97d, 0x4df00000, - 0x4d3c0000, 0x853e7d00, 0x05fdfe62, 0x05fdff23, - 0x5c027800, 0x5c03e000, 0x05000966, 0x1c01f000, - 0x5c000000, 0x4c000000, 0x4803c857, 0x4d340000, - 0x4d2c0000, 0x5932680a, 0x59325809, 0x59300407, - 0x90000c92, 0x05c21a31, 0x4933c857, 0x4943c857, - 0x493fc857, 0x4803c857, 0x0c01f804, 0x5c025800, - 0x5c026800, 0x1c01f000, 0x001083c4, 0x001083c5, - 0x001083cb, 0x001083ed, 0x001083c5, 0x001083d3, - 0x00108401, 0x001083c4, 0x001083c4, 0x001083c4, - 0x00108408, 0x001083c4, 0x001083c4, 0x001083c4, - 0x001083c4, 0x001083c4, 0x0010840e, 0x0010840e, - 0x05c1fa16, 0x0525fa91, 0x0515f9f5, 0x05cc0fac, - 0x0515fcbd, 0x0509fefa, 0x0509f006, 0x0515f8fe, - 0x05000006, 0x49425a0a, 0x0001fb82, 0x59300229, - 0x90000583, 0x051409d7, 0x0505f7fe, 0x83300580, - 0x00111a40, 0x05020015, 0x0515f8f3, 0x05000010, - 0x59a8009d, 0x812c0580, 0x05c20a00, 0x592c0000, - 0x4803509d, 0x800001c0, 0x05020002, 0x4803509e, - 0x592c1208, 0xb0080595, 0x05020003, 0x05c1fdaf, - 0x0501f003, 0x49425a0a, 0x0001fb82, 0x64026203, - 0x497a6009, 0x1c01f000, 0x0515f8df, 0x050407e5, - 0x05c1f9ee, 0x59300008, 0x8c000500, 0x05c60c5a, - 0x0515f8d9, 0x0500000f, 0x592c0208, 0x82000500, - 0x000000ff, 0x90000594, 0x051609b2, 0x0519faba, - 0x05f5f810, 0x4a025a08, 0x00000103, 0x49425a0a, - 0x497a580d, 0x0515fa27, 0x0521ff33, 0x0001fb82, - 0x0505f7d0, 0x59300008, 0x8c000500, 0x05c60c46, - 0x0515f8c5, 0x05220b81, 0x0519faab, 0x0505f7c9, - 0x0515f8c1, 0x05000004, 0x49425a0a, 0x497a5c0d, - 0x0001fb82, 0x0505f7c3, 0x05c9fafb, 0x0515f8ba, - 0x05000003, 0x49425a0a, 0x0001fb82, 0x59325819, - 0x05c1fd87, 0x0505f7bb, 0x598c000b, 0x81300580, - 0x05000003, 0x497a6008, 0x1c01f000, 0x59c40004, - 0x9000050c, 0x05000005, 0x64338804, 0x4a01a8e5, - 0x00000800, 0x0501f008, 0x0501fb80, 0x59300403, - 0xb0000d80, 0x05000003, 0xb0000582, 0x05020002, - 0x497a6008, 0x0501fe13, 0x80000580, 0x1c01f000, - 0x59300804, 0x8c040520, 0x05020003, 0x90000541, - 0x1c01f000, 0x4933c857, 0x59300804, 0x84040d20, - 0x48066004, 0x640a6203, 0x80000580, 0x1c01f000, - 0x4933c857, 0x4d380000, 0x59300804, 0x84040d20, - 0x48066004, 0x61267000, 0x59300203, 0x90000583, - 0x05000002, 0x604e7000, 0x0009f800, 0x80000580, - 0x5c027000, 0x1c01f000, 0x59300019, 0x81480580, - 0x05020003, 0x5930001a, 0x814c0580, 0x1c01f000, - 0x4d2c0000, 0x4d300000, 0x0501f8c5, 0x4df00000, - 0x05f9fb8b, 0x59900002, 0x90000503, 0x0c01f001, - 0x00108464, 0x00108459, 0x00108458, 0x00108458, - 0x05c1f982, 0x59926005, 0x0501f889, 0x813261c0, - 0x05000008, 0x59300004, 0x8c000516, 0x05000004, - 0x59325809, 0x497a580c, 0x497a580d, 0x0501f886, - 0x5c03e000, 0x0500089f, 0x5c026000, 0x5c025800, - 0x1c01f000, 0x5c000000, 0x4c000000, 0x4803c857, - 0x4d300000, 0x4a01a8e5, 0x00000800, 0x0501f8a4, - 0x4df00000, 0x598c0000, 0x90000507, 0x4803c857, - 0x0c01f001, 0x0010849b, 0x0010847e, 0x00108485, - 0x00108488, 0x00108494, 0x0010849b, 0x00108498, - 0x0010847d, 0x05c1f95d, 0x598c000b, 0x80026540, - 0x05000003, 0x0501f81e, 0x05c20958, 0x0501fdb9, - 0x0501f017, 0x0501f829, 0x0501fdb6, 0x0501f014, - 0x598c000b, 0x80026540, 0x05000011, 0x0501f83a, - 0x05000006, 0x0501f847, 0x05000004, 0x0501f810, - 0x05000002, 0x0501f81d, 0x0501fdaa, 0x0501f008, - 0x0501f840, 0x05c20945, 0x0501fda6, 0x0501f004, - 0x0501f82d, 0x05c20941, 0x0501fda2, 0x5c03e000, - 0x05000868, 0x5c026000, 0x1c01f000, 0x598c0007, - 0x81300580, 0x0502000c, 0x0501f85b, 0x0501f846, - 0x59300000, 0x800001c0, 0x05000004, 0x48031807, - 0x497a6000, 0x0501f003, 0x497b1807, 0x497b1806, - 0x80000580, 0x1c01f000, 0x4d2c0000, 0x59300407, - 0x90000583, 0x05020012, 0x598c0009, 0x81300580, - 0x0502000f, 0x0501f848, 0x59325809, 0x497a580c, - 0x497a580d, 0x0501f830, 0x59300000, 0x800001c0, - 0x05000004, 0x48031809, 0x497a6000, 0x0501f003, - 0x497b1808, 0x497b1809, 0x80000580, 0x5c025800, - 0x1c01f000, 0x598c0005, 0x81300580, 0x0502000c, - 0x0501f835, 0x0501f820, 0x59300000, 0x800001c0, - 0x05000004, 0x48031805, 0x497a6000, 0x0501f003, - 0x497b1805, 0x497b1804, 0x80000580, 0x1c01f000, - 0x598c0003, 0x81300580, 0x0502000c, 0x0501f826, - 0x0501f811, 0x59300000, 0x800001c0, 0x05000004, - 0x48031803, 0x497a6000, 0x0501f003, 0x497b1803, - 0x497b1802, 0x80000580, 0x1c01f000, 0x64032002, - 0x497b2005, 0x497b2006, 0x497b2007, 0x4979b003, - 0x1c01f000, 0x4c040000, 0x59300004, 0x8c000516, - 0x05020003, 0x82000500, 0xffd7ffff, 0x82000500, - 0x7ffef7ff, 0x48026004, 0x58d400e4, 0x8c000514, - 0x05000007, 0x58d40011, 0x81300580, 0x05020004, - 0x4979a811, 0x4a01a8e4, 0x00000800, 0x5c000800, - 0x1c01f000, 0x4803c856, 0x598c000a, 0x80000540, - 0x05000003, 0x80000040, 0x4803180a, 0x1c01f000, - 0x58d400ea, 0x90000507, 0x90000583, 0x05020003, - 0x4803c856, 0x6405a8e8, 0x59bc00ea, 0x90000507, - 0x90000583, 0x05020005, 0x4803c856, 0x640778e8, - 0x4a0370e4, 0x00000800, 0x1c01f000, 0x60042800, - 0x58d400ea, 0x90000507, 0x90000581, 0x0502000d, - 0x4803c856, 0x60000800, 0x0501f830, 0x60000820, - 0x58d400ea, 0x90000507, 0x90000583, 0x05000004, - 0x80040840, 0x05fe07fb, 0x05c1f8b8, 0x41782800, - 0x59bc00ea, 0x90000507, 0x90000581, 0x0502000f, - 0x4803c856, 0x60000800, 0x0501f80e, 0x4a0370e4, - 0x00000c00, 0x42000800, 0x00010000, 0x59bc00ea, - 0x90000507, 0x90000583, 0x05000005, 0x80040840, - 0x05fe07fb, 0x05c1f8a5, 0x801429c0, 0x1c01f000, - 0x59bc00ea, 0x90000507, 0x90000581, 0x05c2089f, - 0x59bc00ea, 0x8c000516, 0x05fe07fe, 0x480778e1, - 0x1c01f000, 0x59bc00ea, 0x8c000516, 0x05fe07fe, - 0x480778e1, 0x59bc00ea, 0x8c000516, 0x05fe07fe, - 0x480b78e1, 0x1c01f000, 0x58d400ea, 0x8c000516, - 0x05fe07fe, 0x4805a8e1, 0x1c01f000, 0x58d400ea, - 0x8c000516, 0x05fe07fe, 0x4805a8e1, 0x58d400ea, - 0x8c000516, 0x05fe07fe, 0x4809a8e1, 0x1c01f000, - 0x4a0378e4, 0x00002000, 0x42007000, 0x0010e060, - 0x58380401, 0x8c000506, 0x05020003, 0x4a01a8e4, - 0x00008000, 0x1c01f000, 0x82000d00, 0x02000018, - 0x05c2086f, 0x05c1f875, 0x001086c7, 0x001086dc, - 0x0010856d, 0x001086c6, 0x0010856c, 0x00108660, - 0x05c1f86e, 0x4d2c0000, 0x4d300000, 0x58d400ea, - 0x8c000510, 0x05fc07fe, 0x58d660e0, 0x813261c0, - 0x05c00866, 0x59300004, 0x8c000520, 0x05000010, - 0x82000500, 0xfffefeff, 0x48026004, 0x59325809, - 0x59301407, 0x90080583, 0x05000006, 0x90080586, - 0x05c2085a, 0x592c0a0a, 0x0005fe45, 0x0501f006, - 0x0001fb82, 0x0005ffdc, 0x0501f003, 0x84000510, - 0x48026004, 0x5c026000, 0x5c025800, 0x1c01f000, - 0x82000d00, 0x82000018, 0x05c20845, 0x05c1f84b, - 0x001085a0, 0x001085a0, 0x001085a0, 0x001085a1, - 0x001085c1, 0x00108642, 0x001085a0, 0x00108695, - 0x001085a0, 0x001086c6, 0x001085e0, 0x00020eff, - 0x00108623, 0x001085a0, 0x001085a0, 0x001085a0, - 0x05c1f83a, 0x4d300000, 0x4d900000, 0x4dd00000, - 0x4da40000, 0x4d140000, 0x4cd80000, 0x0501fcad, - 0x59bc00ea, 0x8c000510, 0x05fc07fe, 0x59be60e0, - 0x59300004, 0x8c000520, 0x05000010, 0x82000500, - 0xfffefeff, 0x48026004, 0x05fdff61, 0x05c5fc2f, - 0x05c5fc8e, 0x05c5fc4d, 0x5c01b000, 0x5c022800, - 0x5c034800, 0x5c03a000, 0x5c032000, 0x5c026000, - 0x642378e4, 0x05fdf747, 0x84000510, 0x48026004, - 0x05fdf7f6, 0x4d300000, 0x4d900000, 0x4dd00000, - 0x4da40000, 0x4d140000, 0x4cd80000, 0x0501fc8d, - 0x59bc00ea, 0x8c000510, 0x05fc07fe, 0x59be60e0, - 0x59300004, 0x8c000520, 0x0500000f, 0x82000500, - 0xfffefeff, 0x48026004, 0x640e6203, 0x05fdff40, - 0x05c5fbbf, 0x5c01b000, 0x5c022800, 0x5c034800, - 0x5c03a000, 0x5c032000, 0x5c026000, 0x642378e4, - 0x05fdf728, 0x84000510, 0x48026004, 0x05fdf7f6, - 0x4d300000, 0x4d2c0000, 0x4d900000, 0x4dd00000, - 0x4da40000, 0x4d140000, 0x4cd80000, 0x0501fc6d, - 0x59bc00ea, 0x8c000510, 0x05fc07fe, 0x59be60e0, - 0x59300004, 0x8c000520, 0x0500001a, 0x82000500, - 0xfffefeff, 0x48026004, 0x640e6203, 0x59325809, - 0x812e59c0, 0x05bc0fe5, 0x42000000, 0x0010e477, - 0x0525f9e4, 0x592c020c, 0x84000552, 0x48025a0c, - 0x05c5ff35, 0x05fdff16, 0x05c5fb95, 0x5c01b000, - 0x5c022800, 0x5c034800, 0x5c03a000, 0x5c032000, - 0x5c025800, 0x5c026000, 0x642378e4, 0x05fdf6fd, - 0x84000510, 0x48026004, 0x05fdf7f5, 0x42007000, - 0x000211a7, 0x58380000, 0x90000580, 0x0500000d, - 0x58d80805, 0x8c040500, 0x0500000a, 0x83180400, - 0x00020f72, 0x50006000, 0x58380001, 0x80300580, - 0x05000005, 0x4803c856, 0x05c1fcbf, 0x4979b005, - 0x1c01f000, 0x58300010, 0x4803c857, 0x6404620f, - 0x49786010, 0x49787002, 0x1c01f000, 0x4d2c0000, - 0x4d300000, 0x59bc00ea, 0x8c000510, 0x05fc07fe, - 0x59be60e0, 0x813261c0, 0x05bc0fb0, 0x59300004, - 0x8c000520, 0x05000012, 0x82000500, 0xfffefeff, - 0x48026004, 0x59301407, 0x90080583, 0x05be0fa7, - 0x05fdfb82, 0x05be0fa5, 0x59325809, 0x60040800, - 0x600a8000, 0x05e9fff2, 0x0001fb82, 0x0005ffdc, - 0x5c026000, 0x5c025800, 0x1c01f000, 0x84000510, - 0x48026004, 0x05fdf7fb, 0x4d300000, 0x4d900000, - 0x4dd00000, 0x4da40000, 0x4d140000, 0x4cd80000, - 0x0501fc0c, 0x59bc00ea, 0x8c000510, 0x05fc07fe, - 0x59be60e0, 0x59300004, 0x8c000520, 0x0500000e, - 0x82000500, 0xfffefeff, 0x48026004, 0x05fdfec0, - 0x05c5fb82, 0x5c01b000, 0x5c022800, 0x5c034800, - 0x5c03a000, 0x5c032000, 0x5c026000, 0x642378e4, - 0x05fdf6a8, 0x84000510, 0x48026004, 0x05fdf7f6, - 0x4d300000, 0x4d2c0000, 0x4d340000, 0x4da40000, - 0x4cd00000, 0x4d240000, 0x58d400ea, 0x8c000510, - 0x05fc07fe, 0x58d660e0, 0x813261c0, 0x05bc0f6f, - 0x59300004, 0x8c000520, 0x0500001e, 0x82000500, - 0xfffefeff, 0x48026004, 0x5932680a, 0x42034800, - 0x0010e063, 0x5932481d, 0x05011000, 0x4a03c840, - 0x0010e06a, 0x644bc842, 0x05011000, 0x4a03c840, - 0x0010e07c, 0x4a03c842, 0x000000ff, 0x05011000, - 0x4a03c840, 0x0010e17b, 0x4a03c842, 0x000000ff, - 0x0501fbe8, 0x5c024800, 0x5c01a000, 0x5c034800, - 0x5c026800, 0x5c025800, 0x5c026000, 0x1c01f000, - 0x84000510, 0x48026004, 0x5c024800, 0x5c01a000, - 0x5c034800, 0x5c026800, 0x5c025800, 0x5c026000, - 0x1c01f000, 0x4d300000, 0x4d2c0000, 0x4d340000, - 0x4cd00000, 0x4d240000, 0x4d900000, 0x4dd00000, - 0x4da40000, 0x4d140000, 0x4cd80000, 0x0501fbb5, - 0x59bc00ea, 0x8c000510, 0x05fc07fe, 0x59be60e0, - 0x813261c0, 0x05bc0f35, 0x59300004, 0x8c000520, - 0x05000011, 0x82000500, 0xfffefeff, 0x48026004, - 0x5932481d, 0x0505fa76, 0x5c01b000, 0x5c022800, - 0x5c034800, 0x5c03a000, 0x5c032000, 0x5c024800, - 0x5c01a000, 0x5c026800, 0x5c025800, 0x5c026000, - 0x1c01f000, 0x84000510, 0x48026004, 0x5c01b000, - 0x5c022800, 0x5c034800, 0x5c03a000, 0x5c032000, - 0x5c024800, 0x5c01a000, 0x5c026800, 0x5c025800, - 0x5c026000, 0x1c01f000, 0x05bdff14, 0x4d300000, - 0x4d380000, 0x42000000, 0x0010e4b5, 0x0525f911, - 0x05fdfe47, 0x598e600b, 0x59c40004, 0x8c000506, - 0x05000003, 0x0501f8d1, 0x64238804, 0x813261c0, - 0x05000004, 0x0501fb7a, 0x60527000, 0x0009f800, - 0x6409a8e4, 0x5c027000, 0x5c026000, 0x05fdf629, - 0x4d180000, 0x4d300000, 0x4d380000, 0x4d900000, - 0x4dd00000, 0x4da40000, 0x4d140000, 0x4cd80000, - 0x05fdfe2f, 0x417a3000, 0x59c40804, 0x83180400, - 0x00108a14, 0x50000000, 0x80040500, 0x05000017, - 0x42000000, 0x0010e4b6, 0x0525f8ee, 0x0501fb65, - 0x59926005, 0x0501f858, 0x83180400, 0x00108a14, - 0x50000000, 0x48038804, 0x813261c0, 0x05000007, - 0x59300004, 0x8c00050c, 0x05020002, 0x640e6203, - 0x612a7000, 0x0009f800, 0x59c40004, 0x82000500, - 0x00f80000, 0x05000004, 0x811a3000, 0x91180485, - 0x05fc17e2, 0x6421a8e4, 0x5c01b000, 0x5c022800, - 0x5c034800, 0x5c03a000, 0x5c032000, 0x5c027000, - 0x5c026000, 0x5c023000, 0x05fdf5f6, 0x4d2c0000, - 0x4d340000, 0x5932680a, 0x598c0800, 0x90040586, - 0x05020004, 0x918c1405, 0x918c1c04, 0x0501f00f, - 0x90040584, 0x05020004, 0x918c1403, 0x918c1c02, - 0x0501f00a, 0x90040581, 0x05020004, 0x918c1407, - 0x918c1c06, 0x0501f005, 0x90040582, 0x05020024, - 0x918c1409, 0x918c1c08, 0x41306800, 0x58340000, - 0x80007d40, 0x0500001e, 0x583c000a, 0x81340580, - 0x05020006, 0x403c6800, 0x583c0000, 0x80007d40, - 0x05fe07fa, 0x0501f016, 0x4933c857, 0x483fc857, - 0x583c0000, 0x48006800, 0x49307800, 0x443c1000, - 0x500c0000, 0x803c0580, 0x05020002, 0x44341800, - 0x80000580, 0x4803180b, 0x4803180d, 0x598c0000, - 0x90000583, 0x05000002, 0x64031800, 0x80000580, - 0x5c026800, 0x5c025800, 0x1c01f000, 0x90000541, - 0x05fdf7fc, 0x491bc857, 0x59b400f6, 0x90000538, - 0x05fe07fe, 0x59c80840, 0x90040550, 0x48039040, - 0x59c41008, 0x4c040000, 0x4c080000, 0x82081500, - 0xffffff7f, 0x480b8808, 0x0501fa9a, 0x05020006, - 0x0501fa9e, 0x05000020, 0x48038804, 0x05c5fab6, - 0x0501f03d, 0x64238803, 0x59c40003, 0x90000503, - 0x05fc07fe, 0x8c000502, 0x05020006, 0x0501fa93, - 0x05000015, 0x48038804, 0x05c5faab, 0x0501f032, - 0x0501fa9a, 0x05020007, 0x59c80040, 0x8400056a, - 0x48039040, 0x59c80040, 0x8c00052a, 0x05fe07fe, - 0x59c40005, 0x82000500, 0xc0000000, 0x05000006, - 0x59c400a3, 0x84000540, 0x480388a3, 0x4a038805, - 0xc0000000, 0x05c5fa69, 0x4a03a005, 0x30000000, - 0x59d00006, 0x4a03a005, 0x30000000, 0x6401b006, - 0x59d00005, 0x8c000504, 0x05fe07fe, 0x05fdfe88, - 0x6403a014, 0x600008ec, 0x83180540, 0x60000000, - 0x480008a1, 0x811800dc, 0x59c80840, 0x80040540, - 0x48039040, 0x82000540, 0x00003000, 0x48039040, - 0x59c80040, 0x82000500, 0x00003000, 0x05fe07fd, - 0x05c5fa6e, 0x83180400, 0x00108a14, 0x50000000, - 0x48038804, 0x80000580, 0x4df00000, 0x05f9f840, - 0x5c03e000, 0x5c001000, 0x5c000800, 0x480b8808, - 0x48079040, 0x1c01f000, 0x4803c856, 0x59b400f6, - 0x90000538, 0x05fe07fe, 0x59c80840, 0x90040550, - 0x48039040, 0x59c41008, 0x4c040000, 0x4c080000, - 0x82081500, 0xffffff7f, 0x480b8808, 0x59c40004, - 0x90000503, 0x0502000e, 0x59c40004, 0x9000050c, - 0x05000004, 0x64338804, 0x8c000504, 0x0501f022, - 0x59c80040, 0x8400056e, 0x48039040, 0x59c80040, - 0x8c00052e, 0x05fe07fe, 0x0501f01b, 0x64238803, - 0x59c40003, 0x90000503, 0x05fc07fe, 0x8c000502, - 0x05020005, 0x59c40004, 0x64338804, 0x8c000504, - 0x0501f011, 0x59c80040, 0x8400056a, 0x48039040, - 0x59c80040, 0x8c00052a, 0x05fe07fe, 0x59c40005, - 0x82000500, 0xc0000000, 0x05000007, 0x59c400a3, - 0x84000540, 0x480388a3, 0x4a038805, 0xc0000000, - 0x80000580, 0x4a01a8e5, 0x00000800, 0x5c001000, - 0x5c000800, 0x480b8808, 0x48079040, 0x1c01f000, - 0x5c000000, 0x4c000000, 0x4803c857, 0x491bc857, - 0x4933c857, 0x4d900000, 0x4dd00000, 0x4da40000, - 0x4d140000, 0x4cd80000, 0x05fdfd29, 0x4df00000, - 0x0501fa68, 0x59900005, 0x800001c0, 0x05000012, - 0x81300580, 0x05020010, 0x59300004, 0x84000520, - 0x48026004, 0x05fdff54, 0x0502000a, 0x5c03e000, - 0x05fc0d0c, 0x80000580, 0x5c01b000, 0x5c022800, - 0x5c034800, 0x5c03a000, 0x5c032000, 0x1c01f000, - 0x05fdfc4c, 0x61267000, 0x59300004, 0x84000520, - 0x48026004, 0x8c00050c, 0x000a0800, 0x5c03e000, - 0x05fc0cfc, 0x90000541, 0x5c01b000, 0x5c022800, - 0x5c034800, 0x5c03a000, 0x5c032000, 0x1c01f000, - 0x4933c857, 0x05fdfd02, 0x4df00000, 0x598c000b, - 0x80026540, 0x0500000f, 0x59300004, 0x84000520, - 0x48026004, 0x05fdff89, 0x05000011, 0x05fdfc4e, - 0x604e7000, 0x59300004, 0x8c00050c, 0x000a0800, - 0x5c03e000, 0x05fc0ce3, 0x90000541, 0x1c01f000, - 0x916c1581, 0x05fc07fb, 0x916c1584, 0x05fc07f9, - 0x42001000, 0x0010510c, 0x05f5fe8b, 0x5c03e000, - 0x05fc0cd8, 0x80000580, 0x1c01f000, 0x4d300000, - 0x4d180000, 0x4d3c0000, 0x05fdfce1, 0x4df00000, - 0x643da8e4, 0x643f78e4, 0x0501fa06, 0x417a3000, - 0x811808c8, 0x82040c00, 0x0000b037, 0x58066005, - 0x813261c0, 0x0500000b, 0x417a7800, 0x05e9f879, - 0x05000007, 0x59300c07, 0x90040583, 0x05000003, - 0x90040586, 0x05020002, 0x600a7800, 0x050dffce, - 0x811a3000, 0x91180485, 0x05fc17ee, 0x61000800, - 0x05c5ffaa, 0x642b78e4, 0x6429a8e4, 0x5c03e000, - 0x05fc0cb4, 0x5c027800, 0x5c023000, 0x5c026000, - 0x1c01f000, 0x4803c856, 0x4d300000, 0x05fdfcbc, - 0x4df00000, 0x59c80840, 0x84040d74, 0x90040550, - 0x48039040, 0x59c41008, 0x4c040000, 0x4c080000, - 0x82081500, 0xffffff7f, 0x480b8808, 0x600c1000, - 0x0501f9d1, 0x598e600b, 0x813261c0, 0x05fe0fa9, - 0x050009d4, 0x4a01a8e5, 0x00000800, 0x0501f809, - 0x5c001000, 0x5c000800, 0x480b8808, 0x48079040, - 0x5c03e000, 0x05fc0c93, 0x5c026000, 0x1c01f000, - 0x4d380000, 0x4d180000, 0x4d300000, 0x4d900000, - 0x4dd00000, 0x4da40000, 0x4d140000, 0x4cd80000, - 0x417a3000, 0x05f5ff5e, 0x811a3000, 0x91180585, - 0x05fe07fd, 0x0501f9ab, 0x0502000a, 0x5c01b000, - 0x5c022800, 0x5c034800, 0x5c03a000, 0x5c032000, - 0x5c026000, 0x5c023000, 0x5c027000, 0x1c01f000, - 0x0501f9c8, 0x59926005, 0x4933c857, 0x05fdfeba, - 0x813261c0, 0x05fc07f2, 0x612a7000, 0x640e6203, - 0x0009f800, 0x05fdf7ee, 0x4d300000, 0x4d180000, - 0x4d900000, 0x05fdfc7a, 0x60001000, 0x598c0800, - 0x90040585, 0x05000998, 0x417a3000, 0x811b20c8, - 0x83932400, 0x0000b037, 0x59900002, 0x90000581, - 0x0502000a, 0x60100800, 0x59926005, 0x59300013, - 0x82000500, 0xfff00000, 0x80000540, 0x05000002, - 0x60380800, 0x05f5ff0d, 0x811a3000, 0x91180485, - 0x05fc17ef, 0x59c81040, 0x84081534, 0x480b9040, - 0x05fdfc50, 0x5c032000, 0x5c023000, 0x5c026000, - 0x1c01f000, 0x4933c857, 0x4d900000, 0x4dd00000, - 0x4da40000, 0x4d140000, 0x4cd80000, 0x4d380000, - 0x05fdfc53, 0x4df00000, 0x59300004, 0x8c00053e, - 0x05020005, 0x8c000520, 0x0500001d, 0x05fdfb71, - 0x0501f01b, 0x598c000b, 0x81300580, 0x0500000e, - 0x0511f864, 0x05020020, 0x0501f928, 0x0500001e, - 0x48038804, 0x0501f983, 0x05c5f93f, 0x05fdfb79, - 0x61267000, 0x59300004, 0x8c00050c, 0x0502000b, - 0x0501f00b, 0x59c40004, 0x8c000504, 0x05000012, - 0x64138804, 0x05fdfb8c, 0x604e7000, 0x59300004, - 0x8c00050c, 0x05000002, 0x0009f800, 0x5c03e000, - 0x05fc0c20, 0x5c027000, 0x5c01b000, 0x5c022800, - 0x5c034800, 0x5c03a000, 0x5c032000, 0x80000580, - 0x1c01f000, 0x5c03e000, 0x05fc0c16, 0x5c027000, - 0x5c01b000, 0x5c022800, 0x5c034800, 0x5c03a000, - 0x5c032000, 0x90000541, 0x1c01f000, 0x59300407, - 0x90000583, 0x05020007, 0x0511fbcf, 0x05000005, - 0x59301009, 0x5808040c, 0x84000550, 0x4800140c, - 0x1c01f000, 0x4a01a8e5, 0x00000800, 0x05fdfc10, - 0x59c400af, 0x800001c0, 0x05020003, 0x05fdfbfd, - 0x05c9f10a, 0x598c000d, 0x90001482, 0x05021006, - 0x80000000, 0x4803180d, 0x80000580, 0x05f5fea4, - 0x0500000e, 0x05fdfeff, 0x0502000c, 0x05fdffe4, - 0x42000000, 0x0010e46d, 0x0521fec6, 0x05fdfdf8, - 0x05000006, 0x0501f936, 0x4d380000, 0x60527000, - 0x0009f800, 0x5c027000, 0x05fdfbe6, 0x05c9f0f3, - 0x4d900000, 0x4dd00000, 0x4da40000, 0x4d140000, - 0x4cd80000, 0x4d300000, 0x05f5feb5, 0x05fdfbec, - 0x59c400af, 0x800001c0, 0x05000022, 0x0501f929, - 0x59926005, 0x4933c857, 0x59300004, 0x8c000516, - 0x05000009, 0x05fdfeaf, 0x0502001a, 0x05fdfb19, - 0x05fdfbd0, 0x42000800, 0x80000804, 0x0005fe9d, - 0x0501f014, 0x60c018ea, 0x0501f8e9, 0x05020003, - 0x05f5fe7d, 0x0501f00f, 0x05fdfea2, 0x0502000d, - 0x05fdffb7, 0x42000000, 0x0010e46e, 0x0521fe99, - 0x59300004, 0x8c00050c, 0x05020002, 0x640e6203, - 0x4d380000, 0x612a7000, 0x0009f800, 0x5c027000, - 0x05fdfbb8, 0x5c026000, 0x5c01b000, 0x5c022800, - 0x5c034800, 0x5c03a000, 0x5c032000, 0x05c9f0bf, + 0x1c01f000, 0x4803c856, 0x4c000000, 0x05f9f863, + 0x05020010, 0x05e9fb16, 0x05c209fb, 0x5c000000, + 0x48026802, 0x0509fcfb, 0x0500000b, 0x42000000, + 0x0011247c, 0x0529fb36, 0x4936600a, 0x64066407, + 0x602c0800, 0x05e9fadb, 0x60067000, 0x0009f039, + 0x5c000000, 0x1c01f000, 0x05c1f9eb, 0x4c0c0000, + 0x4c100000, 0x4c140000, 0x4c180000, 0x80001d80, + 0x80002580, 0x60803000, 0x90040501, 0x05000003, + 0x40080000, 0x800c1c00, 0x400c2800, 0x800c1902, + 0x80102102, 0x90140501, 0x05000003, 0x82102540, + 0x80000000, 0x80040902, 0x80183040, 0x05fe07f3, + 0x40100800, 0x400c0000, 0x5c003000, 0x5c002800, + 0x5c002000, 0x5c001800, 0x1c01f000, 0x4c0c0000, + 0x4c580000, 0x6080b000, 0x80000540, 0x05000019, + 0x80041c80, 0x05021017, 0x800810c2, 0x80040982, + 0x05001006, 0x80041c80, 0x05021005, 0x8058b040, + 0x05fe07fa, 0x0501f006, 0x80041c80, 0x400c0800, + 0x80081000, 0x8058b040, 0x05fe07f4, 0x4c000000, + 0x41f00000, 0x82000500, 0xf7ffffff, 0x4003e000, + 0x5c000000, 0x5c00b000, 0x5c001800, 0x1c01f000, + 0x4c000000, 0x41f00000, 0x82000540, 0x08000000, + 0x05fdf7f7, 0x42007000, 0x00111ffa, 0x64147000, + 0x64007401, 0x4a007201, 0x00000840, 0x64147202, + 0x6401a8e8, 0x6443c82b, 0x0501f84e, 0x4a01a8e9, + 0x00003a0d, 0x4a01a8ee, 0x00080202, 0x6405a8e8, + 0x640378e8, 0x6443c821, 0x6413c823, 0x0501f879, + 0x4a0378e9, 0x00003a0d, 0x4a0378ee, 0x00080302, + 0x640778e8, 0x41780800, 0x6003a0ec, 0x42001000, + 0x001122c8, 0x42001800, 0x00115731, 0x600c2000, + 0x6120297f, 0x4a03a005, 0xd0000001, 0x59d00006, + 0x4a03a005, 0x90000001, 0x59d00006, 0x4a03a005, + 0x60000001, 0x59d00006, 0x4a03a005, 0x60000003, + 0x59d00006, 0x4a03a005, 0x60000005, 0x59d00006, + 0x4a03a005, 0x60000007, 0x59d00006, 0x4a03a005, + 0x60000009, 0x59d00006, 0x4a03a005, 0x6000000b, + 0x64041001, 0x4a001002, 0x00000100, 0x4a001009, + 0x00020fae, 0x480c100b, 0x4810100d, 0x4814100e, + 0x4978120f, 0x4804140f, 0x49781010, 0x820c1c00, + 0x00000080, 0x480c100c, 0x90081412, 0x801020c4, + 0x80142800, 0x91d3a420, 0x80040800, 0x90040485, + 0x05fc17d7, 0x59e00003, 0x82000500, 0xffffffe0, + 0x82000540, 0x00008000, 0x4803c003, 0x59c40006, + 0x82000500, 0xfffcffff, 0x48038806, 0x1c01f000, + 0x4d900000, 0x4d180000, 0x4c500000, 0x4c580000, + 0x4c540000, 0x4a01a8e7, 0xaaaaaaaa, 0x4a01a8e6, + 0xaaaaaaaa, 0x4a01a8e5, 0xaaaaaaaa, 0x4a01a8e4, + 0xaaaaaaaa, 0x4a01a8ee, 0x00200000, 0x4979a8ee, + 0x4a01a8ce, 0x0010d8f9, 0x6000b001, 0x90d4ac00, + 0x4178a000, 0x0529fb55, 0x4a01a81d, 0x00100042, + 0x4a01a81b, 0x0010004b, 0x4a01a81c, 0x0010005b, + 0x4a01a81e, 0x00112299, 0x64031800, 0x600c0800, + 0x42001800, 0x0011229c, 0x417a3000, 0x811b20c8, + 0x83932400, 0x0000b037, 0x48072000, 0x480f2001, + 0x64032002, 0x800408c4, 0x900c1c05, 0x811a3000, + 0x91180485, 0x05fc17f6, 0x5c00a800, 0x5c00b000, + 0x5c00a000, 0x5c023000, 0x5c032000, 0x1c01f000, + 0x4cd80000, 0x4d180000, 0x4a0378e7, 0xaaaaaaaa, + 0x4a0378e6, 0xaaaaaaaa, 0x4a0378e5, 0xaaaaaaaa, + 0x4a03781b, 0x0010004b, 0x4a03781c, 0x0010005b, + 0x4a03781d, 0x00111ffd, 0x4a03781e, 0x00112004, + 0x42000800, 0x0011229c, 0x417a3000, 0x42001000, + 0x00115731, 0x8119b0c8, 0x82d9b400, 0x0000bf32, + 0x83180400, 0x00108f25, 0x50000000, 0x4801b002, + 0x4809b000, 0x4809b001, 0x82081400, 0x00000080, + 0x90040c05, 0x811a3000, 0x91180485, 0x05fc17f2, + 0x5c023000, 0x5c01b000, 0x1c01f000, 0x4933c857, + 0x42000800, 0x8000004e, 0x59300416, 0x8c000510, + 0x05000002, 0x84040d52, 0x48066004, 0x58d400ea, + 0x8c000516, 0x05fe07fe, 0x83300400, 0x80000000, + 0x4801a8e1, 0x1c01f000, 0x4933c857, 0x59300804, + 0x82040d00, 0x00000100, 0x82040d40, 0x80000040, + 0x59300416, 0x8c000510, 0x05000002, 0x84040d52, + 0x48066004, 0x497a6000, 0x58d400ea, 0x8c000516, + 0x05fe07fe, 0x83300400, 0x60000000, 0x4801a8e1, + 0x1c01f000, 0x0501fc94, 0x4df00000, 0x4d300000, + 0x4d340000, 0x4d2c0000, 0x4d180000, 0x4c5c0000, 0x4c600000, 0x4d900000, 0x4dd00000, 0x4da40000, - 0x4d140000, 0x4cd80000, 0x4d300000, 0x4d2c0000, - 0x05fdfbb7, 0x0501f8f7, 0x59926005, 0x813261c0, - 0x05000040, 0x05e9ff4d, 0x05020005, 0x4178c000, - 0x0505fa10, 0x05000002, 0x6004c000, 0x05e9ff47, - 0x05020005, 0x8060c1c0, 0x05000003, 0x0505fa30, - 0x0501f034, 0x05f5fe5f, 0x05020032, 0x4933c857, - 0x0501f892, 0x05020015, 0x05f5fe69, 0x813261c0, - 0x0500002c, 0x59325809, 0x812e59c0, 0x05bc0c63, - 0x05e9ff36, 0x0502001c, 0x59c40093, 0x4803c857, - 0x800001c0, 0x05020009, 0x592c020c, 0x84000550, - 0x48025a0c, 0x05edf818, 0x0502001e, 0x592c020c, - 0x84000510, 0x48025a0c, 0x05f5fe33, 0x0501f019, - 0x42000000, 0x0010e46e, 0x0521fe52, 0x05fdfdbe, - 0x592c020c, 0x84000550, 0x48025a0c, 0x4d380000, - 0x612a7000, 0x640e6203, 0x0009f800, 0x5c027000, - 0x0501f00c, 0x59901007, 0x800811c0, 0x05fe07f1, - 0x59c408af, 0x82040480, 0x000003e8, 0x05fe17ed, - 0x80081000, 0x480b2007, 0x05f5fe1b, 0x05e1ff4c, - 0x5c025800, 0x5c026000, 0x5c01b000, 0x5c022800, - 0x5c034800, 0x5c03a000, 0x5c032000, 0x5c00c000, - 0x05fdf35c, 0x4d300000, 0x4d2c0000, 0x05fdfb68, - 0x598e600b, 0x4933c857, 0x813261c0, 0x0500003e, - 0x59c41004, 0x480bc857, 0x8c080500, 0x05000007, - 0x05e9fefa, 0x05020012, 0x05e9ffe3, 0x05020036, - 0x05f5fdfb, 0x0501f034, 0x82080500, 0x000001fe, - 0x05fe07fc, 0x59c8010b, 0x4803c857, 0x8c000500, - 0x05fc07f8, 0x42000000, 0x0010e4b7, 0x0521fe19, - 0x05fdfe4c, 0x05000877, 0x0501f027, 0x598c000d, - 0x80000540, 0x0502000e, 0x59c408af, 0x82040480, - 0x000003e8, 0x0502100a, 0x598c080d, 0x80040800, - 0x4807180d, 0x05f5fde2, 0x42000000, 0x0010e3a7, - 0x0521fe08, 0x05e1ff16, 0x0501f017, 0x42000000, - 0x0010e46d, 0x0521fe03, 0x05fdfdc8, 0x813261c0, - 0x05020003, 0x0501f85f, 0x0501f00f, 0x59300407, - 0x90000583, 0x05020007, 0x59325809, 0x812e59c0, - 0x05000004, 0x592c020c, 0x84000550, 0x48025a0c, - 0x0501f867, 0x4d380000, 0x60527000, 0x0009f800, - 0x5c027000, 0x5c025800, 0x5c026000, 0x05fdf315, - 0x59c40804, 0x83180400, 0x00108a0a, 0x50000000, + 0x4d140000, 0x4cd80000, 0x58d6602f, 0x813261c0, + 0x05000024, 0x41302800, 0x4178c000, 0x59300000, + 0x4c000000, 0x5932680a, 0x5930b801, 0x4c0c0000, + 0x4c140000, 0x0509f9a1, 0x5c002800, 0x5c001800, + 0x05000008, 0x0501f8d1, 0x4c0c0000, 0x4c140000, + 0x0501fb03, 0x5c002800, 0x5c001800, 0x0501f005, + 0x41301800, 0x8060c1c0, 0x05020002, 0x400cc000, + 0x805cb9c0, 0x05000003, 0x405e6000, 0x05fdf7eb, + 0x5c026000, 0x813261c0, 0x05000006, 0x8060c1c0, + 0x05000002, 0x40602800, 0x4178c000, 0x05fdf7e0, + 0x417a3000, 0x0505f9a1, 0x59926005, 0x813261c0, + 0x0500000a, 0x5932680a, 0x4c140000, 0x0509f97f, + 0x5c002800, 0x05000005, 0x0501fe8d, 0x0501fc26, + 0x0501fc2b, 0x0501fae2, 0x811a3000, 0x91180485, + 0x05fc17f1, 0x5c01b000, 0x5c022800, 0x5c034800, + 0x5c03a000, 0x5c032000, 0x5c00c000, 0x5c00b800, + 0x5c023000, 0x5c025800, 0x5c026800, 0x5c026000, + 0x5c03e000, 0x05000c35, 0x1c01f000, 0x4933c857, + 0x0501fc41, 0x4df00000, 0x4d340000, 0x4d180000, + 0x4d900000, 0x4dd00000, 0x4da40000, 0x4d140000, + 0x4cd80000, 0x5932680a, 0x58d4202f, 0x40102800, + 0x801021c0, 0x05000016, 0x41300000, 0x80100580, + 0x05000011, 0x5810000a, 0x81340580, 0x0502000b, + 0x40101800, 0x58102001, 0x41300000, 0x801021c0, + 0x0500000b, 0x80100d80, 0x05000007, 0x40101800, + 0x58102001, 0x05fdf7fa, 0x40102800, 0x58102000, + 0x05fdf7ec, 0x0501f879, 0x0501f00d, 0x417a3000, + 0x0505f95e, 0x59900005, 0x81300580, 0x05000005, + 0x811a3000, 0x91180485, 0x05021010, 0x05fdf7f9, + 0x0501fe4b, 0x0501fbe4, 0x0501fbe9, 0x5c01b000, + 0x5c022800, 0x5c034800, 0x5c03a000, 0x5c032000, + 0x5c023000, 0x5c026800, 0x5c03e000, 0x05000bfb, + 0x80000580, 0x1c01f000, 0x5c01b000, 0x5c022800, + 0x5c034800, 0x5c03a000, 0x5c032000, 0x5c023000, + 0x5c026800, 0x5c03e000, 0x05000bf0, 0x90000541, + 0x1c01f000, 0x0501fbfc, 0x4df00000, 0x4d300000, + 0x4d340000, 0x4d180000, 0x4d2c0000, 0x4c5c0000, + 0x4d900000, 0x4dd00000, 0x4da40000, 0x4d140000, + 0x4cd80000, 0x58d6602f, 0x813261c0, 0x05000021, + 0x41302800, 0x5930b800, 0x5932680a, 0x59340403, + 0x81440580, 0x05000006, 0x805cb9c0, 0x05000019, + 0x41302800, 0x405e6000, 0x05fdf7f7, 0x5930001d, + 0x81240580, 0x05fe07f9, 0x5930b801, 0x4c0c0000, + 0x4c140000, 0x0509f901, 0x5c002800, 0x5c001800, + 0x05000008, 0x0501f831, 0x4c0c0000, 0x4c140000, + 0x0501fa63, 0x5c002800, 0x5c001800, 0x0501f002, + 0x41301800, 0x405e6000, 0x813261c0, 0x05fe07ec, + 0x417a3000, 0x0505f90d, 0x59926005, 0x813261c0, + 0x05000005, 0x5932680a, 0x59340403, 0x81440580, + 0x05000005, 0x811a3000, 0x91180485, 0x05fc17f6, + 0x0501f00d, 0x5930001d, 0x81240580, 0x05fe07fa, + 0x4c140000, 0x0509f8e1, 0x5c002800, 0x05fc07f6, + 0x0501fdef, 0x0501fb88, 0x0501fb8d, 0x0501fa44, + 0x05fdf7f1, 0x5c01b000, 0x5c022800, 0x5c034800, + 0x5c03a000, 0x5c032000, 0x5c00b800, 0x5c025800, + 0x5c023000, 0x5c026800, 0x5c026000, 0x5c03e000, + 0x05000b9a, 0x1c01f000, 0x0501fb7d, 0x58d4002f, + 0x81300580, 0x0502001c, 0x59300801, 0x800409c0, + 0x0500000e, 0x59300000, 0x800001c0, 0x05020005, + 0x4805a82f, 0x4805a82e, 0x497a6001, 0x1c01f000, + 0x59300000, 0x48000800, 0x4805a82f, 0x497a6000, + 0x497a6001, 0x1c01f000, 0x59300800, 0x800409c0, + 0x05020005, 0x4979a82f, 0x4979a82e, 0x497a680c, + 0x1c01f000, 0x4805a82f, 0x497a6000, 0x497a680c, + 0x1c01f000, 0x58d4002e, 0x81300580, 0x0502000c, + 0x59300001, 0x800001c0, 0x05020005, 0x4815a82e, + 0x49782800, 0x497a680c, 0x1c01f000, 0x4801a82e, + 0x48002800, 0x497a6001, 0x1c01f000, 0x59300000, + 0x800001c0, 0x05020008, 0x59300001, 0x48001801, + 0x800001c0, 0x05020002, 0x480e680c, 0x497a6001, + 0x1c01f000, 0x59300801, 0x800409c0, 0x05020006, + 0x59300800, 0x48042800, 0x497a6000, 0x497a680c, + 0x1c01f000, 0x59300000, 0x48000800, 0x48042800, + 0x497a6000, 0x497a6001, 0x1c01f000, 0x0501fb62, + 0x4df00000, 0x0501f828, 0x050208ec, 0x05020966, + 0x05020005, 0x5c03e000, 0x05000b4c, 0x80000580, + 0x1c01f000, 0x5c03e000, 0x05000b48, 0x90000541, + 0x1c01f000, 0x4d2c0000, 0x4d340000, 0x4d300000, + 0x4c5c0000, 0x4178b800, 0x598e6007, 0x813261c0, + 0x0500000e, 0x0509f871, 0x05000009, 0x59300000, + 0x4c000000, 0x0501fa4a, 0x405c3000, 0x0501f851, + 0x0501f9d3, 0x5c026000, 0x05fdf7f5, 0x4130b800, + 0x59326000, 0x05fdf7f2, 0x0509f90a, 0x0509f929, + 0x5c00b800, 0x5c026000, 0x5c026800, 0x5c025800, + 0x1c01f000, 0x4933c857, 0x4c5c0000, 0x813261c0, + 0x05bc0f79, 0x41300000, 0x598cb807, 0x41783000, + 0x805cb9c0, 0x05000011, 0x805c0d80, 0x05000004, + 0x405c3000, 0x5818b800, 0x05fdf7fa, 0x0501f835, + 0x598c000b, 0x81300580, 0x05040850, 0x59300403, + 0xb0000582, 0x05020002, 0x497a6008, 0x80000580, + 0x5c00b800, 0x1c01f000, 0x90000541, 0x5c00b800, + 0x1c01f000, 0x0501fb1c, 0x4df00000, 0x4d2c0000, + 0x4d340000, 0x4d300000, 0x4c5c0000, 0x4178b800, + 0x598e6007, 0x813261c0, 0x05000015, 0x5932680a, + 0x59340403, 0x81440580, 0x0502000e, 0x5930001d, + 0x81240580, 0x0502000b, 0x0509f830, 0x05000009, + 0x59300000, 0x4c000000, 0x0501fa09, 0x405c3000, + 0x0501f810, 0x0501f992, 0x5c026000, 0x05fdf7ee, + 0x4130b800, 0x59326000, 0x05fdf7eb, 0x0509f87d, + 0x0509f8e8, 0x5c00b800, 0x5c026000, 0x5c026800, + 0x5c025800, 0x5c03e000, 0x05000ae8, 0x1c01f000, + 0x59300800, 0x497a6000, 0x0501fac9, 0x801831c0, + 0x05020009, 0x598c0006, 0x81300580, 0x05020004, + 0x48031806, 0x48031807, 0x0501f008, 0x48071807, + 0x0501f006, 0x48043000, 0x598c0006, 0x81300580, + 0x05020002, 0x481b1806, 0x0501f2cd, 0x4d300000, + 0x598e6005, 0x813261c0, 0x05000008, 0x59300000, + 0x4c000000, 0x0501f9de, 0x0009f810, 0x0501fac4, + 0x5c026000, 0x05fdf7f8, 0x497b1805, 0x497b1804, + 0x5c026000, 0x1c01f000, 0x0501fad3, 0x4df00000, + 0x4d300000, 0x4c5c0000, 0x4c600000, 0x4130c000, + 0x4178b800, 0x598e6005, 0x813261c0, 0x05000036, + 0x5930080a, 0x800409c0, 0x0502000d, 0x4d340000, + 0x0001fb08, 0x41340800, 0x5c026800, 0x0502002b, + 0x58040802, 0x59300019, 0x80040580, 0x82000500, + 0x00ffffff, 0x05000005, 0x0501f024, 0x58040403, + 0x81440580, 0x05020021, 0x5930501a, 0x59340013, + 0x82000500, 0x00ffffff, 0x80280580, 0x0502001b, + 0x5930002a, 0x80600580, 0x05000018, 0x0501f9b0, + 0x59302000, 0x497a6000, 0x805cb9c0, 0x05020009, + 0x598c0004, 0x81300580, 0x05020004, 0x497b1805, + 0x497b1804, 0x0501f008, 0x48131805, 0x0501f006, + 0x4810b800, 0x598c0004, 0x81300580, 0x05020002, + 0x485f1804, 0x4c100000, 0x0009f810, 0x0501fa84, + 0x5c026000, 0x05fdf7cd, 0x4130b800, 0x59326000, + 0x05fdf7ca, 0x5c00c000, 0x5c00b800, 0x5c026000, + 0x5c03e000, 0x05000a81, 0x1c01f000, 0x4d2c0000, + 0x4d300000, 0x4d340000, 0x4c5c0000, 0x4178b800, + 0x598e6009, 0x813261c0, 0x0500000e, 0x0505ffab, + 0x05000009, 0x0501f986, 0x59300000, 0x4c000000, + 0x405c3000, 0x0501f85b, 0x0501f90d, 0x5c026000, + 0x05fdf7f5, 0x4130b800, 0x59326000, 0x05fdf7f2, + 0x05e9fa1a, 0x5c00b800, 0x5c026800, 0x5c026000, + 0x5c025800, 0x1c01f000, 0x4933c857, 0x4c5c0000, + 0x813261c0, 0x05bc0eb4, 0x41300000, 0x598cb809, + 0x41783000, 0x805cb9c0, 0x0500000e, 0x805c0d80, + 0x05000004, 0x405c3000, 0x5818b800, 0x05fdf7fa, + 0x0501f840, 0x598c000b, 0x81300580, 0x05000f8b, + 0x497a6008, 0x80000580, 0x5c00b800, 0x1c01f000, + 0x90000541, 0x5c00b800, 0x1c01f000, 0x0501fa5a, + 0x4df00000, 0x4d340000, 0x4d300000, 0x4d2c0000, + 0x4c5c0000, 0x83440480, 0x000007f0, 0x05001004, + 0x83440480, 0x00000800, 0x05001023, 0x83440580, + 0x0000ffff, 0x05000020, 0x0001fb08, 0x05be0e8e, + 0x4178b800, 0x598e6009, 0x813261c0, 0x05000014, + 0x5930000a, 0x81340580, 0x0502000e, 0x5930001d, + 0x81240580, 0x0502000b, 0x0505ff64, 0x05000009, + 0x0501f93f, 0x59300000, 0x4c000000, 0x405c3000, + 0x0501f814, 0x0501f8c6, 0x5c026000, 0x05fdf7ef, + 0x4130b800, 0x59326000, 0x05fdf7ec, 0x8d3c0506, + 0x05000004, 0x59340200, 0x8c00050e, 0x05020002, + 0x05e9f9f1, 0x5c00b800, 0x5c025800, 0x5c026000, + 0x5c026800, 0x5c03e000, 0x05000a18, 0x1c01f000, + 0x59300800, 0x497a6000, 0x0501f9f9, 0x801831c0, + 0x05020009, 0x598c0008, 0x81300580, 0x05020004, + 0x48031808, 0x48031809, 0x0501f008, 0x48071809, + 0x0501f006, 0x48043000, 0x598c0008, 0x81300580, + 0x05020002, 0x481b1808, 0x0501f1fd, 0x0501fa12, + 0x4df00000, 0x4d300000, 0x4c5c0000, 0x4178b800, + 0x598e6003, 0x813261c0, 0x0500000e, 0x0505ff2f, + 0x05000009, 0x0501f90a, 0x59300000, 0x4c000000, + 0x405c3000, 0x0501f86c, 0x0501f891, 0x5c026000, + 0x05fdf7f5, 0x4130b800, 0x59326000, 0x05fdf7f2, + 0x5c00b800, 0x5c026000, 0x5c03e000, 0x050009eb, + 0x1c01f000, 0x4933c857, 0x4c5c0000, 0x4c600000, + 0x813261c0, 0x05bc0e38, 0x41300000, 0x598cb803, + 0x405cc000, 0x805cb9c0, 0x05000024, 0x805c0d80, + 0x05000004, 0x405cc000, 0x5860b800, 0x05fdf7fa, + 0x598c000b, 0x81300580, 0x05000f10, 0x0501f9bc, + 0x598c0003, 0x805c0580, 0x05020009, 0x585c0000, + 0x48031803, 0x4978b800, 0x598c0002, 0x805c0580, + 0x0502000d, 0x497b1802, 0x0501f00b, 0x598c0002, + 0x805c0580, 0x05020005, 0x48631802, 0x4978b800, + 0x4978c000, 0x0501f004, 0x585c0000, 0x4800c000, + 0x4978b800, 0x0501f9ba, 0x80000580, 0x5c00c000, + 0x5c00b800, 0x1c01f000, 0x90000541, 0x5c00c000, + 0x5c00b800, 0x1c01f000, 0x4933c857, 0x0501f9c6, + 0x4df00000, 0x4d2c0000, 0x4d340000, 0x4d300000, + 0x4c5c0000, 0x4178b800, 0x598e6003, 0x813261c0, + 0x0500001e, 0x5932680a, 0x59340403, 0x81440580, + 0x05020017, 0x812649c0, 0x05000004, 0x5930001d, + 0x81240580, 0x05020012, 0x0505fed8, 0x05000010, + 0x0515fa32, 0x05000006, 0x0519f8d1, 0x05020004, + 0x59300403, 0xb0000583, 0x051808d2, 0x0501f8ac, + 0x59300000, 0x4c000000, 0x405c3000, 0x0501f80e, + 0x0501f833, 0x5c026000, 0x05fdf7e5, 0x4130b800, + 0x59326000, 0x05fdf7e2, 0x5c00b800, 0x5c026000, + 0x5c026800, 0x5c025800, 0x5c03e000, 0x0500098b, + 0x1c01f000, 0x59300800, 0x497a6000, 0x0501f96c, + 0x801831c0, 0x05020009, 0x598c0002, 0x81300580, + 0x05020004, 0x48031802, 0x48031803, 0x0501f008, + 0x48071803, 0x0501f006, 0x48043000, 0x598c0002, + 0x81300580, 0x05020002, 0x481b1802, 0x0501f170, + 0x4943c857, 0x0501f984, 0x4df00000, 0x05fdfe2e, + 0x05fdfef3, 0x5c03e000, 0x05000970, 0x1c01f000, + 0x4947c857, 0x0501f97c, 0x4df00000, 0x4d3c0000, + 0x853e7d00, 0x05fdfe5c, 0x05fdff1d, 0x5c027800, + 0x5c03e000, 0x05000965, 0x1c01f000, 0x5c000000, + 0x4c000000, 0x4803c857, 0x4d340000, 0x4d2c0000, + 0x5932680a, 0x59325809, 0x59300407, 0x90000c92, + 0x05be1dad, 0x4933c857, 0x4943c857, 0x493fc857, + 0x4803c857, 0x0c01f804, 0x5c025800, 0x5c026800, + 0x1c01f000, 0x00108883, 0x00108884, 0x0010888a, + 0x001088ac, 0x00108884, 0x00108892, 0x001088c0, + 0x00108883, 0x00108883, 0x00108883, 0x001088c7, + 0x00108883, 0x00108883, 0x00108883, 0x00108883, + 0x00108883, 0x001088cd, 0x001088cd, 0x05bdfd92, + 0x0525fd39, 0x0515facf, 0x05cc0b84, 0x0515fd96, + 0x0509ff75, 0x0509f05c, 0x0515f9c8, 0x05000006, + 0x49425a0a, 0x0001fba8, 0x59300229, 0x90000583, + 0x05140ab1, 0x0509f054, 0x83300580, 0x001159e4, + 0x05020015, 0x0515f9bd, 0x05000010, 0x59a800a0, + 0x812c0580, 0x05be0d7c, 0x592c0000, 0x480350a0, + 0x800001c0, 0x05020002, 0x480350a1, 0x592c1208, + 0xb0080595, 0x05020003, 0x05c1f927, 0x0501f003, + 0x49425a0a, 0x0001fba8, 0x64026203, 0x497a6009, + 0x1c01f000, 0x0515f9a9, 0x0508003b, 0x05bdfd6a, + 0x59300008, 0x8c000500, 0x05c60839, 0x0515f9a3, + 0x0500000f, 0x592c0208, 0x82000500, 0x000000ff, + 0x90000594, 0x05160a8c, 0x0519fba1, 0x05f1fed9, + 0x4a025a08, 0x00000103, 0x49425a0a, 0x497a580d, + 0x0515fb01, 0x0525f9be, 0x0001fba8, 0x0509f026, + 0x59300008, 0x8c000500, 0x05c60825, 0x0515f98f, + 0x05220e07, 0x0519fb92, 0x0509f01f, 0x0515f98b, + 0x05000004, 0x49425a0a, 0x497a5c0d, 0x0001fba8, + 0x0509f019, 0x05c5fead, 0x0515f984, 0x05080016, + 0x49425a0a, 0x0001fba8, 0x0509f013, 0x598c000b, + 0x81300580, 0x05000003, 0x497a6008, 0x1c01f000, + 0x59c40004, 0x9000050c, 0x05000005, 0x64338804, + 0x4a01a8e5, 0x00000800, 0x0501f008, 0x0501fb81, + 0x59300403, 0xb0000d80, 0x05000003, 0xb0000582, + 0x05020002, 0x497a6008, 0x0501fe14, 0x80000580, + 0x1c01f000, 0x59300804, 0x4807c857, 0x8c040520, + 0x05020003, 0x90000541, 0x1c01f000, 0x4933c857, + 0x59300804, 0x84040d20, 0x48066004, 0x640a6203, + 0x80000580, 0x1c01f000, 0x4933c857, 0x4d380000, + 0x59300804, 0x84040d20, 0x48066004, 0x61267000, + 0x59300203, 0x90000583, 0x05000002, 0x604e7000, + 0x0009f839, 0x80000580, 0x5c027000, 0x1c01f000, + 0x59300019, 0x81480580, 0x05020003, 0x5930001a, + 0x814c0580, 0x1c01f000, 0x4d2c0000, 0x4d300000, + 0x0501f8c5, 0x4df00000, 0x05f9fb31, 0x59900002, + 0x90000503, 0x0c01f001, 0x00108922, 0x00108917, + 0x00108916, 0x00108916, 0x05bdfcff, 0x59926005, + 0x0501f889, 0x813261c0, 0x05000008, 0x59300004, + 0x8c000516, 0x05000004, 0x59325809, 0x497a580c, + 0x497a580d, 0x0501f886, 0x5c03e000, 0x0500089f, + 0x5c026000, 0x5c025800, 0x1c01f000, 0x5c000000, + 0x4c000000, 0x4803c857, 0x4d300000, 0x4a01a8e5, + 0x00000800, 0x0501f8a4, 0x4df00000, 0x598c0000, + 0x90000507, 0x4803c857, 0x0c01f001, 0x00108959, + 0x0010893c, 0x00108943, 0x00108946, 0x00108952, + 0x00108959, 0x00108956, 0x0010893b, 0x05bdfcda, + 0x598c000b, 0x80026540, 0x05000003, 0x0501f81e, + 0x05be0cd5, 0x0501fdb9, 0x0501f017, 0x0501f829, + 0x0501fdb6, 0x0501f014, 0x598c000b, 0x80026540, + 0x05000011, 0x0501f83a, 0x05000006, 0x0501f847, + 0x05000004, 0x0501f810, 0x05000002, 0x0501f81d, + 0x0501fdaa, 0x0501f008, 0x0501f840, 0x05be0cc2, + 0x0501fda6, 0x0501f004, 0x0501f82d, 0x05be0cbe, + 0x0501fda2, 0x5c03e000, 0x05000868, 0x5c026000, + 0x1c01f000, 0x598c0007, 0x81300580, 0x0502000c, + 0x0501f85b, 0x0501f846, 0x59300000, 0x800001c0, + 0x05000004, 0x48031807, 0x497a6000, 0x0501f003, + 0x497b1807, 0x497b1806, 0x80000580, 0x1c01f000, + 0x4d2c0000, 0x59300407, 0x90000583, 0x05020012, + 0x598c0009, 0x81300580, 0x0502000f, 0x0501f848, + 0x59325809, 0x497a580c, 0x497a580d, 0x0501f830, + 0x59300000, 0x800001c0, 0x05000004, 0x48031809, + 0x497a6000, 0x0501f003, 0x497b1808, 0x497b1809, + 0x80000580, 0x5c025800, 0x1c01f000, 0x598c0005, + 0x81300580, 0x0502000c, 0x0501f835, 0x0501f820, + 0x59300000, 0x800001c0, 0x05000004, 0x48031805, + 0x497a6000, 0x0501f003, 0x497b1805, 0x497b1804, + 0x80000580, 0x1c01f000, 0x598c0003, 0x81300580, + 0x0502000c, 0x0501f826, 0x0501f811, 0x59300000, + 0x800001c0, 0x05000004, 0x48031803, 0x497a6000, + 0x0501f003, 0x497b1803, 0x497b1802, 0x80000580, + 0x1c01f000, 0x64032002, 0x497b2005, 0x497b2006, + 0x497b2007, 0x4979b003, 0x1c01f000, 0x4c040000, + 0x59300004, 0x8c000516, 0x05020003, 0x82000500, + 0xffd7ffff, 0x82000500, 0x7ffef7ff, 0x48026004, + 0x58d400e4, 0x8c000514, 0x05000007, 0x58d40011, + 0x81300580, 0x05020004, 0x4979a811, 0x4a01a8e4, + 0x00000800, 0x5c000800, 0x1c01f000, 0x4803c856, + 0x598c000a, 0x80000540, 0x05000003, 0x80000040, + 0x4803180a, 0x1c01f000, 0x59bc00ea, 0x90000507, + 0x90000583, 0x05020003, 0x4803c856, 0x640778e8, + 0x58d400ea, 0x90000507, 0x90000583, 0x05020005, + 0x4803c856, 0x6405a8e8, 0x4a0370e4, 0x00000800, + 0x1c01f000, 0x60042800, 0x58d400ea, 0x90000507, + 0x90000581, 0x0502000f, 0x4803c856, 0x60000800, + 0x0501f830, 0x4a0370e4, 0x00000c00, 0x60000820, + 0x58d400ea, 0x90000507, 0x90000583, 0x05000004, + 0x80040840, 0x05fe07fb, 0x05bdfc33, 0x41782800, + 0x59bc00ea, 0x90000507, 0x90000581, 0x0502000d, + 0x4803c856, 0x60000800, 0x0501f80c, 0x42000800, + 0x00010000, 0x59bc00ea, 0x90000507, 0x90000583, + 0x05000005, 0x80040840, 0x05fe07fb, 0x05bdfc22, + 0x801429c0, 0x1c01f000, 0x59bc00ea, 0x90000507, + 0x90000581, 0x05be0c1c, 0x59bc00ea, 0x8c000516, + 0x05fe07fe, 0x480778e1, 0x1c01f000, 0x59bc00ea, + 0x8c000516, 0x05fe07fe, 0x480778e1, 0x59bc00ea, + 0x8c000516, 0x05fe07fe, 0x480b78e1, 0x1c01f000, + 0x58d400ea, 0x8c000516, 0x05fe07fe, 0x4805a8e1, + 0x1c01f000, 0x58d400ea, 0x8c000516, 0x05fe07fe, + 0x4805a8e1, 0x58d400ea, 0x8c000516, 0x05fe07fe, + 0x4809a8e1, 0x1c01f000, 0x4a0378e4, 0x00002000, + 0x42007000, 0x00111ffa, 0x58380401, 0x8c000506, + 0x05020003, 0x4a01a8e4, 0x00008000, 0x1c01f000, + 0x82000d00, 0x02000018, 0x05be0bec, 0x05bdfbf2, + 0x00108b85, 0x00108b9a, 0x00108a2b, 0x00108b84, + 0x00108a2a, 0x00108b1e, 0x05bdfbeb, 0x4d2c0000, + 0x4d300000, 0x58d400ea, 0x8c000510, 0x05fc07fe, + 0x58d660e0, 0x813261c0, 0x05bc0be3, 0x59300004, + 0x8c000520, 0x05000010, 0x82000500, 0xfffefeff, + 0x48026004, 0x59325809, 0x59301407, 0x90080583, + 0x05000006, 0x90080586, 0x05be0bd7, 0x592c0a0a, + 0x0005fe7b, 0x0501f006, 0x0001fba8, 0x0009f810, + 0x0501f003, 0x84000510, 0x48026004, 0x5c026000, + 0x5c025800, 0x1c01f000, 0x82000d00, 0x82000018, + 0x05be0bc2, 0x05bdfbc8, 0x00108a5e, 0x00108a5e, + 0x00108a5e, 0x00108a5f, 0x00108a7f, 0x00108b00, + 0x00108a5e, 0x00108b53, 0x00108a5e, 0x00108b84, + 0x00108a9e, 0x00020f36, 0x00108ae1, 0x00108a5e, + 0x00108a5e, 0x00108a5e, 0x05bdfbb7, 0x4d300000, + 0x4d900000, 0x4dd00000, 0x4da40000, 0x4d140000, + 0x4cd80000, 0x0501fcad, 0x59bc00ea, 0x8c000510, + 0x05fc07fe, 0x59be60e0, 0x59300004, 0x8c000520, + 0x05000010, 0x82000500, 0xfffefeff, 0x48026004, + 0x05fdff61, 0x05c5f80d, 0x05c5f86c, 0x05c5f82b, + 0x5c01b000, 0x5c022800, 0x5c034800, 0x5c03a000, + 0x5c032000, 0x5c026000, 0x642378e4, 0x05fdf747, + 0x84000510, 0x48026004, 0x05fdf7f6, 0x4d300000, + 0x4d900000, 0x4dd00000, 0x4da40000, 0x4d140000, + 0x4cd80000, 0x0501fc8d, 0x59bc00ea, 0x8c000510, + 0x05fc07fe, 0x59be60e0, 0x59300004, 0x8c000520, + 0x0500000f, 0x82000500, 0xfffefeff, 0x48026004, + 0x640e6203, 0x05fdff40, 0x05c1ffa0, 0x5c01b000, + 0x5c022800, 0x5c034800, 0x5c03a000, 0x5c032000, + 0x5c026000, 0x642378e4, 0x05fdf728, 0x84000510, + 0x48026004, 0x05fdf7f6, 0x4d300000, 0x4d2c0000, + 0x4d900000, 0x4dd00000, 0x4da40000, 0x4d140000, + 0x4cd80000, 0x0501fc6d, 0x59bc00ea, 0x8c000510, + 0x05fc07fe, 0x59be60e0, 0x59300004, 0x8c000520, + 0x0500001a, 0x82000500, 0xfffefeff, 0x48026004, + 0x640e6203, 0x59325809, 0x812e59c0, 0x05bc0b62, + 0x42000000, 0x0011241b, 0x0525fca1, 0x592c020c, + 0x84000552, 0x48025a0c, 0x05c5fae9, 0x05fdff16, + 0x05c1ff76, 0x5c01b000, 0x5c022800, 0x5c034800, + 0x5c03a000, 0x5c032000, 0x5c025800, 0x5c026000, + 0x642378e4, 0x05fdf6fd, 0x84000510, 0x48026004, + 0x05fdf7f5, 0x42007000, 0x000211e8, 0x58380000, + 0x90000580, 0x0500000d, 0x58d80805, 0x8c040500, + 0x0500000a, 0x83180400, 0x00020fa9, 0x50006000, + 0x58380001, 0x80300580, 0x05000005, 0x4803c856, + 0x05c1f863, 0x4979b005, 0x1c01f000, 0x58300010, + 0x4803c857, 0x6404620f, 0x49786010, 0x49787002, + 0x1c01f000, 0x4d2c0000, 0x4d300000, 0x59bc00ea, + 0x8c000510, 0x05fc07fe, 0x59be60e0, 0x813261c0, + 0x05bc0b2d, 0x59300004, 0x8c000520, 0x05000012, + 0x82000500, 0xfffefeff, 0x48026004, 0x59301407, + 0x90080583, 0x05be0b24, 0x05fdfb7d, 0x05be0b22, + 0x59325809, 0x60040800, 0x600a8000, 0x05e9fe18, + 0x0001fba8, 0x0009f810, 0x5c026000, 0x5c025800, + 0x1c01f000, 0x84000510, 0x48026004, 0x05fdf7fb, + 0x4d300000, 0x4d900000, 0x4dd00000, 0x4da40000, + 0x4d140000, 0x4cd80000, 0x0501fc0c, 0x59bc00ea, + 0x8c000510, 0x05fc07fe, 0x59be60e0, 0x59300004, + 0x8c000520, 0x0500000e, 0x82000500, 0xfffefeff, + 0x48026004, 0x05fdfec0, 0x05c1ff63, 0x5c01b000, + 0x5c022800, 0x5c034800, 0x5c03a000, 0x5c032000, + 0x5c026000, 0x642378e4, 0x05fdf6a8, 0x84000510, + 0x48026004, 0x05fdf7f6, 0x4d300000, 0x4d2c0000, + 0x4d340000, 0x4da40000, 0x4cd00000, 0x4d240000, + 0x58d400ea, 0x8c000510, 0x05fc07fe, 0x58d660e0, + 0x813261c0, 0x05bc0aec, 0x59300004, 0x8c000520, + 0x0500001e, 0x82000500, 0xfffefeff, 0x48026004, + 0x5932680a, 0x42034800, 0x00111ffd, 0x5932481d, + 0x05011000, 0x4a03c840, 0x00112004, 0x644bc842, + 0x05011000, 0x4a03c840, 0x00112016, 0x4a03c842, + 0x000000ff, 0x05011000, 0x4a03c840, 0x00112115, + 0x4a03c842, 0x000000ff, 0x0501fbe8, 0x5c024800, + 0x5c01a000, 0x5c034800, 0x5c026800, 0x5c025800, + 0x5c026000, 0x1c01f000, 0x84000510, 0x48026004, + 0x5c024800, 0x5c01a000, 0x5c034800, 0x5c026800, + 0x5c025800, 0x5c026000, 0x1c01f000, 0x4d300000, + 0x4d2c0000, 0x4d340000, 0x4cd00000, 0x4d240000, + 0x4d900000, 0x4dd00000, 0x4da40000, 0x4d140000, + 0x4cd80000, 0x0501fbb5, 0x59bc00ea, 0x8c000510, + 0x05fc07fe, 0x59be60e0, 0x813261c0, 0x05bc0ab2, + 0x59300004, 0x8c000520, 0x05000011, 0x82000500, + 0xfffefeff, 0x48026004, 0x5932481d, 0x0505faa2, + 0x5c01b000, 0x5c022800, 0x5c034800, 0x5c03a000, + 0x5c032000, 0x5c024800, 0x5c01a000, 0x5c026800, + 0x5c025800, 0x5c026000, 0x1c01f000, 0x84000510, + 0x48026004, 0x5c01b000, 0x5c022800, 0x5c034800, + 0x5c03a000, 0x5c032000, 0x5c024800, 0x5c01a000, + 0x5c026800, 0x5c025800, 0x5c026000, 0x1c01f000, + 0x05bdfa91, 0x4d300000, 0x4d380000, 0x42000000, + 0x00112459, 0x0525fbce, 0x05fdfe47, 0x598e600b, + 0x59c40004, 0x8c000506, 0x05000003, 0x0501f8d1, + 0x64238804, 0x813261c0, 0x05000004, 0x0501fb7a, + 0x60527000, 0x0009f839, 0x6409a8e4, 0x5c027000, + 0x5c026000, 0x05fdf629, 0x4d180000, 0x4d300000, + 0x4d380000, 0x4d900000, 0x4dd00000, 0x4da40000, + 0x4d140000, 0x4cd80000, 0x05fdfe2f, 0x417a3000, + 0x59c40804, 0x83180400, 0x00108ed2, 0x50000000, + 0x80040500, 0x05000017, 0x42000000, 0x0011245a, + 0x0525fbab, 0x0501fb65, 0x59926005, 0x0501f858, + 0x83180400, 0x00108ed2, 0x50000000, 0x48038804, + 0x813261c0, 0x05000007, 0x59300004, 0x8c00050c, + 0x05020002, 0x640e6203, 0x612a7000, 0x0009f839, + 0x59c40004, 0x82000500, 0x00f80000, 0x05000004, + 0x811a3000, 0x91180485, 0x05fc17e2, 0x6421a8e4, + 0x5c01b000, 0x5c022800, 0x5c034800, 0x5c03a000, + 0x5c032000, 0x5c027000, 0x5c026000, 0x5c023000, + 0x05fdf5f6, 0x4d2c0000, 0x4d340000, 0x5932680a, + 0x598c0800, 0x90040586, 0x05020004, 0x918c1405, + 0x918c1c04, 0x0501f00f, 0x90040584, 0x05020004, + 0x918c1403, 0x918c1c02, 0x0501f00a, 0x90040581, + 0x05020004, 0x918c1407, 0x918c1c06, 0x0501f005, + 0x90040582, 0x05020024, 0x918c1409, 0x918c1c08, + 0x41306800, 0x58340000, 0x80007d40, 0x0500001e, + 0x583c000a, 0x81340580, 0x05020006, 0x403c6800, + 0x583c0000, 0x80007d40, 0x05fe07fa, 0x0501f016, + 0x4933c857, 0x483fc857, 0x583c0000, 0x48006800, + 0x49307800, 0x443c1000, 0x500c0000, 0x803c0580, + 0x05020002, 0x44341800, 0x80000580, 0x4803180b, + 0x4803180d, 0x598c0000, 0x90000583, 0x05000002, + 0x64031800, 0x80000580, 0x5c026800, 0x5c025800, + 0x1c01f000, 0x90000541, 0x05fdf7fc, 0x491bc857, + 0x59b400f6, 0x90000538, 0x05fe07fe, 0x59c80840, + 0x90040550, 0x48039040, 0x59c41008, 0x4c040000, + 0x4c080000, 0x82081500, 0xffffff7f, 0x480b8808, + 0x0501fa9a, 0x05020006, 0x0501fa9e, 0x05000020, + 0x48038804, 0x05c1fe94, 0x0501f03d, 0x64238803, + 0x59c40003, 0x90000503, 0x05fc07fe, 0x8c000502, + 0x05020006, 0x0501fa93, 0x05000015, 0x48038804, + 0x05c1fe89, 0x0501f032, 0x0501fa9a, 0x05020007, + 0x59c80040, 0x8400056a, 0x48039040, 0x59c80040, + 0x8c00052a, 0x05fe07fe, 0x59c40005, 0x82000500, + 0xc0000000, 0x05000006, 0x59c400a3, 0x84000540, + 0x480388a3, 0x4a038805, 0xc0000000, 0x05c1fe47, + 0x4a03a005, 0x30000000, 0x59d00006, 0x4a03a005, + 0x30000000, 0x6401b006, 0x59d00005, 0x8c000504, + 0x05fe07fe, 0x05fdfe88, 0x6403a014, 0x600008ec, + 0x83180540, 0x60000000, 0x480008a1, 0x811800dc, + 0x59c80840, 0x80040540, 0x48039040, 0x82000540, + 0x00003000, 0x48039040, 0x59c80040, 0x82000500, + 0x00003000, 0x05fe07fd, 0x05c1fe4c, 0x83180400, + 0x00108ed2, 0x50000000, 0x48038804, 0x80000580, + 0x4df00000, 0x05f5ffe6, 0x5c03e000, 0x5c001000, + 0x5c000800, 0x480b8808, 0x48079040, 0x1c01f000, + 0x4803c856, 0x59b400f6, 0x90000538, 0x05fe07fe, + 0x59c80840, 0x90040550, 0x48039040, 0x59c41008, + 0x4c040000, 0x4c080000, 0x82081500, 0xffffff7f, + 0x480b8808, 0x59c40004, 0x90000503, 0x0502000e, + 0x59c40004, 0x9000050c, 0x05000004, 0x64338804, + 0x8c000504, 0x0501f022, 0x59c80040, 0x8400056e, + 0x48039040, 0x59c80040, 0x8c00052e, 0x05fe07fe, + 0x0501f01b, 0x64238803, 0x59c40003, 0x90000503, + 0x05fc07fe, 0x8c000502, 0x05020005, 0x59c40004, + 0x64338804, 0x8c000504, 0x0501f011, 0x59c80040, + 0x8400056a, 0x48039040, 0x59c80040, 0x8c00052a, + 0x05fe07fe, 0x59c40005, 0x82000500, 0xc0000000, + 0x05000007, 0x59c400a3, 0x84000540, 0x480388a3, + 0x4a038805, 0xc0000000, 0x80000580, 0x4a01a8e5, + 0x00000800, 0x5c001000, 0x5c000800, 0x480b8808, + 0x48079040, 0x1c01f000, 0x5c000000, 0x4c000000, + 0x4803c857, 0x491bc857, 0x4933c857, 0x4d900000, + 0x4dd00000, 0x4da40000, 0x4d140000, 0x4cd80000, + 0x05fdfd29, 0x4df00000, 0x0501fa68, 0x59900005, + 0x800001c0, 0x05000012, 0x81300580, 0x05020010, + 0x59300004, 0x84000520, 0x48026004, 0x05fdff54, + 0x0502000a, 0x5c03e000, 0x05fc0d0c, 0x80000580, + 0x5c01b000, 0x5c022800, 0x5c034800, 0x5c03a000, + 0x5c032000, 0x1c01f000, 0x05fdfc4c, 0x61267000, + 0x59300004, 0x84000520, 0x48026004, 0x8c00050c, + 0x000a0839, 0x5c03e000, 0x05fc0cfc, 0x90000541, + 0x5c01b000, 0x5c022800, 0x5c034800, 0x5c03a000, + 0x5c032000, 0x1c01f000, 0x4933c857, 0x05fdfd02, + 0x4df00000, 0x598c000b, 0x80026540, 0x0500000f, + 0x59300004, 0x84000520, 0x48026004, 0x05fdff89, + 0x05000011, 0x05fdfc4e, 0x604e7000, 0x59300004, + 0x8c00050c, 0x000a0839, 0x5c03e000, 0x05fc0ce3, + 0x90000541, 0x1c01f000, 0x916c1581, 0x05fc07fb, + 0x916c1584, 0x05fc07f9, 0x42001000, 0x00105303, + 0x05f5fde7, 0x5c03e000, 0x05fc0cd8, 0x80000580, + 0x1c01f000, 0x4d300000, 0x4d180000, 0x4d3c0000, + 0x05fdfce1, 0x4df00000, 0x643da8e4, 0x643f78e4, + 0x0501fa06, 0x417a3000, 0x811808c8, 0x82040c00, + 0x0000b037, 0x58066005, 0x813261c0, 0x0500000b, + 0x417a7800, 0x05e5fe2d, 0x05000007, 0x59300c07, + 0x90040583, 0x05000003, 0x90040586, 0x05020002, + 0x600a7800, 0x0511f882, 0x811a3000, 0x91180485, + 0x05fc17ee, 0x61000800, 0x05c5fb5d, 0x642b78e4, + 0x6429a8e4, 0x5c03e000, 0x05fc0cb4, 0x5c027800, + 0x5c023000, 0x5c026000, 0x1c01f000, 0x4803c856, + 0x4d300000, 0x05fdfcbc, 0x4df00000, 0x59c80840, + 0x84040d74, 0x90040550, 0x48039040, 0x59c41008, + 0x4c040000, 0x4c080000, 0x82081500, 0xffffff7f, + 0x480b8808, 0x600c1000, 0x0501f9d1, 0x598e600b, + 0x813261c0, 0x05fe0fa9, 0x050009d4, 0x4a01a8e5, + 0x00000800, 0x0501f809, 0x5c001000, 0x5c000800, + 0x480b8808, 0x48079040, 0x5c03e000, 0x05fc0c93, + 0x5c026000, 0x1c01f000, 0x4d380000, 0x4d180000, + 0x4d300000, 0x4d900000, 0x4dd00000, 0x4da40000, + 0x4d140000, 0x4cd80000, 0x417a3000, 0x05f5ff04, + 0x811a3000, 0x91180585, 0x05fe07fd, 0x0501f9ab, + 0x0502000a, 0x5c01b000, 0x5c022800, 0x5c034800, + 0x5c03a000, 0x5c032000, 0x5c026000, 0x5c023000, + 0x5c027000, 0x1c01f000, 0x0501f9c8, 0x59926005, + 0x4933c857, 0x05fdfeba, 0x813261c0, 0x05fc07f2, + 0x612a7000, 0x640e6203, 0x0009f839, 0x05fdf7ee, + 0x4d300000, 0x4d180000, 0x4d900000, 0x05fdfc7a, + 0x60001000, 0x598c0800, 0x90040585, 0x05000998, + 0x417a3000, 0x811b20c8, 0x83932400, 0x0000b037, + 0x59900002, 0x90000581, 0x0502000a, 0x60100800, + 0x59926005, 0x59300013, 0x82000500, 0xfff00000, + 0x80000540, 0x05000002, 0x60380800, 0x05f5feb3, + 0x811a3000, 0x91180485, 0x05fc17ef, 0x59c81040, + 0x84081534, 0x480b9040, 0x05fdfc50, 0x5c032000, + 0x5c023000, 0x5c026000, 0x1c01f000, 0x4933c857, + 0x4d900000, 0x4dd00000, 0x4da40000, 0x4d140000, + 0x4cd80000, 0x4d380000, 0x05fdfc53, 0x4df00000, + 0x59300004, 0x8c00053e, 0x05020005, 0x8c000520, + 0x0500001d, 0x05fdfb71, 0x0501f01b, 0x598c000b, + 0x81300580, 0x0500000e, 0x0511f920, 0x05020020, + 0x0501f928, 0x0500001e, 0x48038804, 0x0501f983, + 0x05c1fd1d, 0x05fdfb79, 0x61267000, 0x59300004, + 0x8c00050c, 0x0502000b, 0x0501f00b, 0x59c40004, + 0x8c000504, 0x05000012, 0x64138804, 0x05fdfb8c, + 0x604e7000, 0x59300004, 0x8c00050c, 0x05000002, + 0x0009f839, 0x5c03e000, 0x05fc0c20, 0x5c027000, + 0x5c01b000, 0x5c022800, 0x5c034800, 0x5c03a000, + 0x5c032000, 0x80000580, 0x1c01f000, 0x5c03e000, + 0x05fc0c16, 0x5c027000, 0x5c01b000, 0x5c022800, + 0x5c034800, 0x5c03a000, 0x5c032000, 0x90000541, + 0x1c01f000, 0x59300407, 0x90000583, 0x05020007, + 0x0511fc9a, 0x05000005, 0x59301009, 0x5808040c, + 0x84000550, 0x4800140c, 0x1c01f000, 0x4a01a8e5, + 0x00000800, 0x05fdfc10, 0x59c400af, 0x800001c0, + 0x05020003, 0x05fdfbfd, 0x05c5f4cc, 0x598c000d, + 0x90001482, 0x05021006, 0x80000000, 0x4803180d, + 0x80000580, 0x05f5fe4a, 0x0500000e, 0x05fdfeff, + 0x0502000c, 0x05fdffe4, 0x42000000, 0x00112411, + 0x0525f983, 0x05fdfdf8, 0x05000006, 0x0501f936, + 0x4d380000, 0x60527000, 0x0009f839, 0x5c027000, + 0x05fdfbe6, 0x05c5f4b5, 0x4d900000, 0x4dd00000, + 0x4da40000, 0x4d140000, 0x4cd80000, 0x4d300000, + 0x05f5fe5b, 0x05fdfbec, 0x59c400af, 0x800001c0, + 0x05000022, 0x0501f929, 0x59926005, 0x4933c857, + 0x59300004, 0x8c000516, 0x05000009, 0x05fdfeaf, + 0x0502001a, 0x05fdfb19, 0x05fdfbd0, 0x42000800, + 0x80000804, 0x0005fed4, 0x0501f014, 0x60c018ea, + 0x0501f8e9, 0x05020003, 0x05f5fe23, 0x0501f00f, + 0x05fdfea2, 0x0502000d, 0x05fdffb7, 0x42000000, + 0x00112412, 0x0525f956, 0x59300004, 0x8c00050c, + 0x05020002, 0x640e6203, 0x4d380000, 0x612a7000, + 0x0009f839, 0x5c027000, 0x05fdfbb8, 0x5c026000, + 0x5c01b000, 0x5c022800, 0x5c034800, 0x5c03a000, + 0x5c032000, 0x05c5f481, 0x4c600000, 0x4d900000, + 0x4dd00000, 0x4da40000, 0x4d140000, 0x4cd80000, + 0x4d300000, 0x4d2c0000, 0x05fdfbb7, 0x0501f8f7, + 0x59926005, 0x813261c0, 0x05000040, 0x05e9fd79, + 0x05020005, 0x4178c000, 0x0505fa46, 0x05000002, + 0x6004c000, 0x05e9fd73, 0x05020005, 0x8060c1c0, + 0x05000003, 0x0505fa66, 0x0501f034, 0x05f5fe05, + 0x05020032, 0x4933c857, 0x0501f892, 0x05020015, + 0x05f5fe0f, 0x813261c0, 0x0500002c, 0x59325809, + 0x812e59c0, 0x05b80fe0, 0x05e9fd62, 0x0502001c, + 0x59c40093, 0x4803c857, 0x800001c0, 0x05020009, + 0x592c020c, 0x84000550, 0x48025a0c, 0x05e9fe44, + 0x0502001e, 0x592c020c, 0x84000510, 0x48025a0c, + 0x05f5fdd9, 0x0501f019, 0x42000000, 0x00112412, + 0x0525f90f, 0x05fdfdbe, 0x592c020c, 0x84000550, + 0x48025a0c, 0x4d380000, 0x612a7000, 0x640e6203, + 0x0009f839, 0x5c027000, 0x0501f00c, 0x59901007, + 0x800811c0, 0x05fe07f1, 0x59c408af, 0x82040480, + 0x000003e8, 0x05fe17ed, 0x80081000, 0x480b2007, + 0x05f5fdc1, 0x05e1fc85, 0x5c025800, 0x5c026000, + 0x5c01b000, 0x5c022800, 0x5c034800, 0x5c03a000, + 0x5c032000, 0x5c00c000, 0x05fdf35c, 0x4d300000, + 0x4d2c0000, 0x05fdfb68, 0x598e600b, 0x4933c857, + 0x813261c0, 0x0500003e, 0x59c41004, 0x480bc857, + 0x8c080500, 0x05000007, 0x05e9fd26, 0x05020012, + 0x05e9fe0f, 0x05020036, 0x05f5fda1, 0x0501f034, + 0x82080500, 0x000001fe, 0x05fe07fc, 0x59c8010b, + 0x4803c857, 0x8c000500, 0x05fc07f8, 0x42000000, + 0x0011245b, 0x0525f8d6, 0x05fdfe4c, 0x05000877, + 0x0501f027, 0x598c000d, 0x80000540, 0x0502000e, + 0x59c408af, 0x82040480, 0x000003e8, 0x0502100a, + 0x598c080d, 0x80040800, 0x4807180d, 0x05f5fd88, + 0x42000000, 0x00112348, 0x0525f8c5, 0x05e1fc4f, + 0x0501f017, 0x42000000, 0x00112411, 0x0525f8c0, + 0x05fdfdc8, 0x813261c0, 0x05020003, 0x0501f85f, + 0x0501f00f, 0x59300407, 0x90000583, 0x05020007, + 0x59325809, 0x812e59c0, 0x05000004, 0x592c020c, + 0x84000550, 0x48025a0c, 0x0501f867, 0x4d380000, + 0x60527000, 0x0009f839, 0x5c027000, 0x5c025800, + 0x5c026000, 0x05fdf315, 0x59c40804, 0x83180400, + 0x00108ec8, 0x50000000, 0x80040500, 0x1c01f000, + 0x59c40804, 0x83180400, 0x00108ecd, 0x50000000, 0x80040500, 0x1c01f000, 0x59c40804, 0x83180400, - 0x00108a0f, 0x50000000, 0x80040500, 0x1c01f000, - 0x59c40804, 0x83180400, 0x00108a19, 0x50000000, - 0x80040500, 0x1c01f000, 0x59c80840, 0x82040d00, - 0x000e0000, 0x83180400, 0x00108a1e, 0x50000000, - 0x80040580, 0x1c01f000, 0x00000210, 0x00000420, - 0x00000840, 0x00001080, 0x00002100, 0x00004000, - 0x00008000, 0x00010000, 0x00020000, 0x00040000, - 0x00080000, 0x00100000, 0x00200000, 0x00400000, - 0x00800000, 0x00084000, 0x00108000, 0x00210000, - 0x00420000, 0x00840000, 0x00000000, 0x00020000, - 0x00040000, 0x00060000, 0x00080000, 0x59900007, - 0x800c0c80, 0x05021003, 0x90000541, 0x0501f004, - 0x80000000, 0x48032007, 0x80000580, 0x1c01f000, - 0x417a3000, 0x05fdffd5, 0x05000005, 0x811a3000, - 0x91180585, 0x05fe07fc, 0x1c01f000, 0x81780080, - 0x1c01f000, 0x480bc857, 0x05fdfadd, 0x4df00000, - 0x480b1800, 0x5c03e000, 0x05fc0aca, 0x1c01f000, - 0x4803c856, 0x05fdfad6, 0x4df00000, 0x497b180b, - 0x497b1801, 0x497b180c, 0x497b180d, 0x497b180e, - 0x598c0000, 0x90000583, 0x05000006, 0x916c0582, - 0x05020003, 0x64171800, 0x0501f002, 0x64031800, - 0x5c03e000, 0x05fc0ab7, 0x1c01f000, 0x59300004, - 0x8c00050c, 0x05020002, 0x64066203, 0x1c01f000, - 0x91180485, 0x05be1b85, 0x491bc857, 0x811b20c8, - 0x83932400, 0x0000b037, 0x8119b0c8, 0x82d9b400, - 0x0000bf32, 0x811ba0ca, 0x83d3a400, 0x00007600, - 0x83180400, 0x00108a67, 0x50034800, 0x811a28c2, - 0x83162c00, 0x00006100, 0x1c01f000, 0x0010e27c, - 0x0010e295, 0x0010e2ae, 0x0010e2c7, 0x0010e2e0, - 0x4933c857, 0x59300407, 0x90000c92, 0x05021015, - 0x05011000, 0x0c01f001, 0x00108a84, 0x00108b2a, - 0x00108e69, 0x00108ecb, 0x00108b2a, 0x00108e69, - 0x00108ecb, 0x00108a84, 0x00108b2a, 0x00108a84, - 0x00108a84, 0x00108a84, 0x00108a84, 0x00108a84, - 0x00108a84, 0x00108a84, 0x00108a88, 0x00108a88, - 0x4803c857, 0x05fdfa8e, 0x05fdf9e3, 0x05fdf27d, - 0x42001000, 0x0010e387, 0x50081000, 0x4930100c, - 0x58080002, 0x82000580, 0x00000100, 0x0502003d, - 0x59325809, 0x812e59c0, 0x05bc0b48, 0x492fc856, - 0x5932680a, 0x83340580, 0x00110210, 0x05000025, - 0x592c040f, 0x82000500, 0x0000e000, 0x05000003, - 0x0501fbc6, 0x0501f002, 0x0501fbb6, 0x592c040d, - 0x82000500, 0x000000ff, 0x90000583, 0x0500082a, - 0x592c0011, 0x90000503, 0x05000006, 0x90000583, - 0x80000000, 0x58d00802, 0x80040540, 0x4801a002, - 0x42001000, 0x0010e387, 0x50081000, 0x4930100b, - 0x492c100a, 0x90d00406, 0x48001003, 0x592c0004, - 0x48001006, 0x592c0011, 0x48001005, 0x592c0012, - 0x48001007, 0x592c0013, 0x48001008, 0x0001f021, - 0x592c080e, 0x48066802, 0x82040500, 0x00ffff00, - 0x05000007, 0x497a6a12, 0x59a8103d, 0x82081500, - 0x00ffff00, 0x80080580, 0x05fe07d2, 0x82040d00, - 0x000000ff, 0x800408d0, 0x48066a12, 0x05fdf7cd, - 0x1c01f000, 0x59a80249, 0x8c000508, 0x0500000c, - 0x59a8004d, 0x82000500, 0x0000ffff, 0x59c40880, - 0x80040d80, 0x05000006, 0x497b8880, 0x4c000000, - 0x05c9f837, 0x5c000000, 0x48038880, 0x1c01f000, - 0x4d2c0000, 0x4d300000, 0x4c580000, 0x4c540000, - 0x4c500000, 0x5832580a, 0x812e59c0, 0x05bc0af7, - 0x58300002, 0x82000580, 0x00000100, 0x05020021, - 0x5830000b, 0x5832600c, 0x81300d80, 0x05020011, - 0x0501f82d, 0x05020015, 0x592c0811, 0x90040c03, - 0x80040904, 0x4004b000, 0x4200a000, 0x0010e06a, - 0x0501fefa, 0x05000002, 0x9050a402, 0x4050a800, - 0x0521fdea, 0x600011b8, 0x0501fe7f, 0x0501f007, - 0x4803c857, 0x4933c857, 0x813261c0, 0x05000003, - 0x0501f819, 0x05fc0f87, 0x5c00a000, 0x5c00a800, - 0x5c00b000, 0x5c026000, 0x5c025800, 0x1c01f000, - 0x5830000b, 0x5832600c, 0x4a006002, 0x00000100, - 0x4803c857, 0x4933c857, 0x81300d80, 0x05fe07ed, - 0x0501f809, 0x05fe07f1, 0x4803c857, 0x05f9fea3, - 0x05be0ac6, 0x640a5a0a, 0x0001fb82, 0x0505f8b9, - 0x05fdf7ea, 0x05fdf9fa, 0x4df00000, 0x598c000b, - 0x81300580, 0x05020008, 0x598c0003, 0x81300580, - 0x05020005, 0x5c03e000, 0x05fc09e2, 0x80000580, - 0x1c01f000, 0x4803c857, 0x5c03e000, 0x05fc09dd, - 0x90000541, 0x1c01f000, 0x59300403, 0xb0000ca0, - 0x05be1aae, 0x83340d80, 0x00110210, 0x0502000a, - 0x5930082a, 0x48066802, 0x82041500, 0x00ffff00, - 0x05020004, 0x800408d0, 0x48066a12, 0x0501f002, - 0x497a6a12, 0x4803c857, 0x0c01f001, 0x00108c83, - 0x00108c9c, 0x00108cab, 0x00108dd2, 0x00108d99, - 0x00108d9d, 0x00108da9, 0x00108dbf, 0x00108daf, - 0x00108dbf, 0x00108df7, 0x00108dbf, 0x00108e36, - 0x00108dbf, 0x00108e41, 0x00108dbf, 0x00108daf, - 0x00108dbf, 0x00108e45, 0x00108b9b, 0x00108b9b, - 0x00108b9b, 0x00108b9b, 0x00108b9b, 0x00108b9b, - 0x00108b9b, 0x00108b9b, 0x00108b9b, 0x00108b9b, - 0x00108b9b, 0x00108ee4, 0x00108ef9, 0x00108f01, - 0x00108b9b, 0x00108f18, 0x00108da9, 0x00108b9b, - 0x00108da9, 0x00108dbf, 0x00108b9b, 0x00108cab, - 0x00108dd2, 0x00108b9b, 0x00108f60, 0x00108dbf, - 0x00108b9b, 0x00108f6e, 0x00108dbf, 0x00108b9b, - 0x00108daf, 0x00108c76, 0x00108b9c, 0x00108b9b, - 0x00108f8a, 0x00108fc0, 0x00109046, 0x00108b9b, - 0x00109054, 0x00108da7, 0x00109049, 0x00108b9b, - 0x00108f22, 0x00109089, 0x00108b9b, 0x00108b9b, - 0x00108b9b, 0x00108b9b, 0x00108baf, 0x00108c10, - 0x00108c1a, 0x00108b9b, 0x00108b9b, 0x00108b9b, - 0x00108c4c, 0x00108c54, 0x00108b9b, 0x00108b9b, - 0x00108bc0, 0x00108bea, 0x001090be, 0x001090f3, - 0x00109114, 0x00108b9b, 0x00108b9b, 0x00108b9b, - 0x001090e9, 0x0010906b, 0x00108f8a, 0x001092f9, - 0x00108b9b, 0x0010933a, 0x001092ef, 0x00109347, - 0x00108b9b, 0x00109362, 0x001092f5, 0x05bdfa3f, - 0x0501fab8, 0x59325809, 0x592c000d, 0x4801a006, - 0x592c000e, 0x4801a007, 0x592c000f, 0x4801a008, - 0x592c0010, 0x4801a009, 0x592c0011, 0x4801a00a, - 0x4979a00b, 0x592c080d, 0x82040d00, 0x00000fff, - 0x80040904, 0x600011b8, 0x0501f5cb, 0x4a026202, - 0x0000ffff, 0x0501faa3, 0x4d2c0000, 0x4a01a006, - 0x05000000, 0x59325809, 0x592c000d, 0x4801a007, - 0x592c000e, 0x4801a008, 0x592c000f, 0x4801a009, - 0x5c025800, 0x60100800, 0x600011b8, 0x0501f5ba, - 0x4c580000, 0x4c500000, 0x4c540000, 0x4d2c0000, - 0x0501fa90, 0x5930040d, 0x90000503, 0x05000006, - 0x90000583, 0x80000000, 0x58d00802, 0x80040540, - 0x4801a002, 0x59325809, 0x4200a800, 0x0010e06a, - 0x592cb209, 0x9058b403, 0x8058b104, 0x912ca40a, - 0x0521fcd3, 0x40580000, 0x8054ac00, 0x592c0001, - 0x80000540, 0x05000003, 0x40025800, 0x05fdf7f5, - 0x4200a000, 0x0010e06a, 0x4050a800, 0x5930b40d, - 0x9058b403, 0x8058b104, 0x40580800, 0x0521fcff, - 0x600011b8, 0x5c025800, 0x5c00a800, 0x5c00a000, - 0x5c00b000, 0x0501f590, 0x4c580000, 0x4c500000, - 0x4c540000, 0x4d2c0000, 0x42034800, 0x0010e063, - 0x0501fa72, 0x59325809, 0x592c0805, 0x4807c857, - 0x40041000, 0x80040904, 0x90081503, 0x05000007, - 0x80040800, 0x90081583, 0x80081000, 0x58d00002, - 0x80080540, 0x4801a002, 0x4a025809, 0x02000000, - 0x90d0ac06, 0x592cb011, 0x912ca409, 0x0521fca4, - 0x40580000, 0x8054ac00, 0x592e5801, 0x41780000, - 0x812e5d40, 0x05fe07f8, 0x600011b8, 0x5c025800, - 0x5c00a800, 0x5c00a000, 0x5c00b000, 0x0501f56a, - 0x0501fa44, 0x4a01a006, 0x78000000, 0x5930001e, - 0x840001c0, 0x4801a407, 0x4979a207, 0x60080800, - 0x600011b8, 0x0501f560, 0x4c580000, 0x4c540000, - 0x4c500000, 0x0501fa45, 0x4a01a006, 0x02000000, - 0x5932481d, 0x59240001, 0x4801a008, 0x59240002, - 0x4801a009, 0x59240003, 0x4801a00a, 0x59240004, - 0x4801a00b, 0x5930001e, 0x82000d80, 0x0000e000, - 0x0500000e, 0x82000d80, 0x0000df00, 0x05000004, - 0x6441a407, 0x60180800, 0x0501f015, 0x42001800, - 0x0010dd46, 0x05bdfceb, 0x600001be, 0x4200a000, - 0x0010dd46, 0x0501f007, 0x42001800, 0x0010dd53, - 0x05bdfce4, 0x600001c0, 0x4200a000, 0x0010dd53, - 0x90000550, 0x4801a407, 0x64d1a207, 0x6034b000, - 0x90d0ac0c, 0x0521fc62, 0x604c0800, 0x600011b8, - 0x5c00a000, 0x5c00a800, 0x5c00b000, 0x0501f52e, - 0x0501fa08, 0x4a01a006, 0x63000028, 0x5930001e, - 0x4801a007, 0x60080800, 0x600011b8, 0x0501f526, - 0x0501fa0e, 0x41780000, 0x41780800, 0x42002000, - 0x00080000, 0x0c01f80e, 0x80000000, 0x80040800, - 0x60301000, 0x82080540, 0x02000000, 0x4801a006, - 0x800408e0, 0x5930001e, 0x80040540, 0x4801a007, - 0x80080904, 0x600011b8, 0x0501f513, 0x00108c6c, - 0x00108c6e, 0x00108c70, 0x00108c72, 0x00108c74, - 0x4811a008, 0x1c01f000, 0x4811a009, 0x1c01f000, - 0x4811a00a, 0x1c01f000, 0x4811a00b, 0x1c01f000, - 0x4811a00c, 0x1c01f000, 0x4a02600a, 0x00110210, - 0x59a8003d, 0x82000500, 0x000000ff, 0x800000d0, - 0x42026800, 0x00110210, 0x48026a12, 0x0501fa3c, - 0x41780800, 0x600010b8, 0x0501f4f7, 0x0501f9d1, - 0x4a01a006, 0x52000000, 0x4979a007, 0x5932481d, - 0x59240400, 0x90000503, 0x05000005, 0x59240400, - 0x80000110, 0x05c5fe55, 0x4805a007, 0x59240001, - 0x4801a008, 0x59240002, 0x4801a009, 0x59240003, - 0x4801a00a, 0x59240004, 0x4801a00b, 0x59240005, - 0x4801a00c, 0x601c0800, 0x600011b8, 0x0501f4de, - 0x4a026202, 0x0000ffff, 0x0501f9b6, 0x4a01a006, - 0x05000000, 0x5932481d, 0x59240005, 0x4801a007, - 0x59240001, 0x59240802, 0x4801a008, 0x4805a009, - 0x60100800, 0x600011b8, 0x0501f4cf, 0x4a026202, - 0x0000ffff, 0x0501f9a7, 0x4d3c0000, 0x417a7800, - 0x05e5fc43, 0x5c027800, 0x4a01a006, 0x03000000, - 0x59340403, 0x82000580, 0x000007fe, 0x0502008e, - 0x4a01a006, 0x04000000, 0x59a80249, 0x8c000506, - 0x05000004, 0x5930081d, 0x58040408, 0x4801a001, - 0x5934000a, 0x84000500, 0x4802680a, 0x59a80249, - 0x8c000508, 0x05000010, 0x59a8004d, 0x4801a007, - 0x59a8004e, 0x82000500, 0x07deffff, 0x599c0818, - 0x8c040516, 0x05000002, 0x8400056a, 0x4801a008, - 0x4a01a009, 0x00002710, 0x59a80050, 0x4801a00a, - 0x0501f046, 0x59a8004d, 0x59a81249, 0x8c080506, - 0x05000003, 0x82000500, 0xffff0000, 0x4801a007, - 0x05e9fbd2, 0x0502000e, 0x59300c03, 0xb0041591, - 0x0500000b, 0x59a80ccc, 0x8c04050a, 0x05020008, - 0x497b8880, 0x82000500, 0x0000ffff, 0x4c000000, - 0x05c5fe27, 0x5c000000, 0x48038880, 0x59a8004e, - 0x05e9fbc2, 0x05020006, 0x82000500, 0xb7ffffff, - 0x82000540, 0x80000000, 0x0501f003, 0x82000500, - 0x3fffffff, 0x599c0818, 0x8c040516, 0x05000002, - 0x8400056a, 0x05ddfe1a, 0x05000008, 0x59a80ccc, - 0x8c040506, 0x05020005, 0x59a80a49, 0x8c080506, - 0x05020002, 0x8400057c, 0x8d0c0510, 0x05000014, - 0x59300c03, 0xb0041591, 0x05000011, 0x900415b1, - 0x0500000f, 0x4c580000, 0x4c500000, 0x4c540000, - 0x6010b000, 0x4200a000, 0x0010e50c, 0x90d0ac1f, - 0x4c000000, 0x0521fb96, 0x5c000000, 0x5c00a800, - 0x5c00a000, 0x5c00b000, 0x8400057a, 0x4801a008, - 0x4979a009, 0x4979a00a, 0x59240001, 0x59240802, - 0x4801a00b, 0x4805a00c, 0x59240003, 0x59240804, - 0x4801a00d, 0x4805a00e, 0x4979a00f, 0x4979a010, - 0x4979a011, 0x4979a012, 0x599c0018, 0x8c000510, - 0x05000011, 0x59a80006, 0x8c00050a, 0x05000004, - 0x59a80249, 0x8c000508, 0x0502000b, 0x59a80051, - 0x84000576, 0x4801a013, 0x59a80052, 0x4801a014, - 0x59a80053, 0x4801a015, 0x59a80054, 0x4801a016, - 0x0501f005, 0x4979a013, 0x4979a014, 0x4979a015, - 0x4979a016, 0x59a80055, 0x84000576, 0x4801a017, - 0x59a80056, 0x4801a018, 0x4979a019, 0x4979a01a, - 0x0501f052, 0x05fdfd88, 0x59a8004d, 0x4801a007, - 0x4c640000, 0x4d2c0000, 0x59a8c84e, 0x050dff7e, - 0x0500000d, 0x0511fe00, 0x0502000b, 0x592c020b, - 0x8c00050e, 0x05000008, 0x8264cd00, 0x0000ffff, - 0x592c000d, 0x82000500, 0xffff0000, 0x8064cd40, - 0x0501f005, 0x59a80a49, 0x90040d30, 0x05000002, - 0x8464cd36, 0x4865a008, 0x5c025800, 0x5c00c800, - 0x59a8004f, 0x4801a009, 0x59a80050, 0x4801a00a, - 0x59240001, 0x59240802, 0x4801a00b, 0x4805a00c, - 0x59240003, 0x59240804, 0x4801a00d, 0x4805a00e, - 0x4979a00f, 0x4979a010, 0x4979a011, 0x4979a012, - 0x59340200, 0x8c000508, 0x05000005, 0x59a80051, - 0x8400057e, 0x48035051, 0x0501f00b, 0x599c0018, + 0x00108ed7, 0x50000000, 0x80040500, 0x1c01f000, + 0x59c80840, 0x82040d00, 0x000e0000, 0x83180400, + 0x00108edc, 0x50000000, 0x80040580, 0x1c01f000, + 0x00000210, 0x00000420, 0x00000840, 0x00001080, + 0x00002100, 0x00004000, 0x00008000, 0x00010000, + 0x00020000, 0x00040000, 0x00080000, 0x00100000, + 0x00200000, 0x00400000, 0x00800000, 0x00084000, + 0x00108000, 0x00210000, 0x00420000, 0x00840000, + 0x00000000, 0x00020000, 0x00040000, 0x00060000, + 0x00080000, 0x59900007, 0x800c0c80, 0x05021003, + 0x90000541, 0x0501f004, 0x80000000, 0x48032007, + 0x80000580, 0x1c01f000, 0x417a3000, 0x05fdffd5, + 0x05000005, 0x811a3000, 0x91180585, 0x05fe07fc, + 0x1c01f000, 0x81780080, 0x1c01f000, 0x480bc857, + 0x05fdfadd, 0x4df00000, 0x480b1800, 0x5c03e000, + 0x05fc0aca, 0x1c01f000, 0x4803c856, 0x05fdfad6, + 0x4df00000, 0x497b180b, 0x497b1801, 0x497b180c, + 0x497b180d, 0x497b180e, 0x598c0000, 0x90000583, + 0x05000006, 0x916c0582, 0x05020003, 0x64171800, + 0x0501f002, 0x64031800, 0x5c03e000, 0x05fc0ab7, + 0x1c01f000, 0x59300004, 0x8c00050c, 0x05020002, + 0x64066203, 0x1c01f000, 0x91180485, 0x05ba1f02, + 0x491bc857, 0x811b20c8, 0x83932400, 0x0000b037, + 0x8119b0c8, 0x82d9b400, 0x0000bf32, 0x811ba0ca, + 0x83d3a400, 0x00007600, 0x83180400, 0x00108f25, + 0x50034800, 0x811a28c2, 0x83162c00, 0x00006100, + 0x1c01f000, 0x00112216, 0x0011222f, 0x00112248, + 0x00112261, 0x0011227a, 0x4933c857, 0x59300407, + 0x90000c92, 0x05021015, 0x05011000, 0x0c01f001, + 0x00108f42, 0x00108fe8, 0x00109341, 0x001093af, + 0x00108fe8, 0x00109341, 0x001093af, 0x00108f42, + 0x00108fe8, 0x00108f42, 0x00108f42, 0x00108f42, + 0x00108f42, 0x00108f42, 0x00108f42, 0x00108f42, + 0x00108f46, 0x00108f46, 0x4803c857, 0x05fdfa8e, + 0x05fdf9e3, 0x05fdf27d, 0x42001000, 0x00112322, + 0x50081000, 0x4930100c, 0x58080002, 0x82000580, + 0x00000100, 0x0502003d, 0x59325809, 0x812e59c0, + 0x05b80ec5, 0x492fc856, 0x5932680a, 0x83340580, + 0x001141b4, 0x05000025, 0x592c040f, 0x82000500, + 0x0000e000, 0x05000003, 0x0501fbe0, 0x0501f002, + 0x0501fbd0, 0x592c040d, 0x82000500, 0x000000ff, + 0x90000583, 0x0500082a, 0x592c0011, 0x90000503, + 0x05000006, 0x90000583, 0x80000000, 0x58d00802, + 0x80040540, 0x4801a002, 0x42001000, 0x00112322, + 0x50081000, 0x4930100b, 0x492c100a, 0x90d00406, + 0x48001003, 0x592c0004, 0x48001006, 0x592c0011, + 0x48001005, 0x592c0012, 0x48001007, 0x592c0013, + 0x48001008, 0x0001f029, 0x592c080e, 0x48066802, + 0x82040500, 0x00ffff00, 0x05000007, 0x497a6a12, + 0x59a81040, 0x82081500, 0x00ffff00, 0x80080580, + 0x05fe07d2, 0x82040d00, 0x000000ff, 0x800408d0, + 0x48066a12, 0x05fdf7cd, 0x1c01f000, 0x59a8024c, + 0x8c000508, 0x0500000c, 0x59a80050, 0x82000500, + 0x0000ffff, 0x59c40880, 0x80040d80, 0x05000006, + 0x497b8880, 0x4c000000, 0x05c5fbf9, 0x5c000000, + 0x48038880, 0x1c01f000, 0x4d2c0000, 0x4d300000, + 0x4c580000, 0x4c540000, 0x4c500000, 0x5832580a, + 0x812e59c0, 0x05b80e74, 0x58300002, 0x82000580, + 0x00000100, 0x05020021, 0x5830000b, 0x5832600c, + 0x81300d80, 0x05020011, 0x0501f82d, 0x05020015, + 0x592c0811, 0x90040c03, 0x80040904, 0x4004b000, + 0x4200a000, 0x00112004, 0x0501ff2c, 0x05000002, + 0x9050a402, 0x4050a800, 0x0525f8a7, 0x600011b8, + 0x0501feb1, 0x0501f007, 0x4803c857, 0x4933c857, + 0x813261c0, 0x05000003, 0x0501f819, 0x05fc0f87, + 0x5c00a000, 0x5c00a800, 0x5c00b000, 0x5c026000, + 0x5c025800, 0x1c01f000, 0x5830000b, 0x5832600c, + 0x4a006002, 0x00000100, 0x4803c857, 0x4933c857, + 0x81300d80, 0x05fe07ed, 0x0501f809, 0x05fe07f1, + 0x4803c857, 0x05f9fe9e, 0x05ba0e43, 0x640a5a0a, + 0x0001fba8, 0x0505f910, 0x05fdf7ea, 0x05fdf9fa, + 0x4df00000, 0x598c000b, 0x81300580, 0x05020008, + 0x598c0003, 0x81300580, 0x05020005, 0x5c03e000, + 0x05fc09e2, 0x80000580, 0x1c01f000, 0x4803c857, + 0x5c03e000, 0x05fc09dd, 0x90000541, 0x1c01f000, + 0x59300403, 0xb0000ca0, 0x05ba1e2b, 0x83340d80, + 0x001141b4, 0x0502000a, 0x5930082a, 0x48066802, + 0x82041500, 0x00ffff00, 0x05020004, 0x800408d0, + 0x48066a12, 0x0501f002, 0x497a6a12, 0x4803c857, + 0x0c01f001, 0x00109148, 0x00109161, 0x00109170, + 0x0010929a, 0x00109261, 0x00109265, 0x00109271, + 0x00109287, 0x00109277, 0x00109287, 0x001092c7, + 0x00109287, 0x0010930e, 0x00109287, 0x00109319, + 0x00109287, 0x00109277, 0x00109287, 0x0010931d, + 0x00109060, 0x00109060, 0x00109060, 0x00109060, + 0x00109060, 0x00109060, 0x00109060, 0x00109060, + 0x00109060, 0x00109060, 0x00109060, 0x001093c8, + 0x001093dd, 0x001093e5, 0x00109060, 0x001093fc, + 0x00109271, 0x00109060, 0x00109271, 0x00109287, + 0x00109060, 0x00109170, 0x0010929a, 0x00109060, + 0x00109444, 0x00109287, 0x00109060, 0x00109452, + 0x00109287, 0x00109060, 0x00109277, 0x0010913b, + 0x00109061, 0x00109060, 0x0010946e, 0x001094a4, + 0x00109530, 0x00109060, 0x0010953e, 0x0010926f, + 0x00109533, 0x00109060, 0x00109406, 0x00109573, + 0x00109060, 0x00109060, 0x00109060, 0x00109060, + 0x00109074, 0x001090d5, 0x001090df, 0x00109060, + 0x00109060, 0x00109060, 0x00109111, 0x00109119, + 0x00109060, 0x00109060, 0x00109085, 0x001090af, + 0x001095a8, 0x001095dd, 0x001095fe, 0x00109060, + 0x00109060, 0x00109060, 0x001095d3, 0x00109555, + 0x0010946e, 0x001097ed, 0x00109060, 0x0010982e, + 0x001097e3, 0x0010983b, 0x00109060, 0x00109856, + 0x001097e9, 0x00109060, 0x00109060, 0x00109060, + 0x00109060, 0x00109060, 0x00109060, 0x00109060, + 0x05b9fdb5, 0x0501facb, 0x59325809, 0x592c000d, + 0x4801a006, 0x592c000e, 0x4801a007, 0x592c000f, + 0x4801a008, 0x592c0010, 0x4801a009, 0x592c0011, + 0x4801a00a, 0x4979a00b, 0x592c080d, 0x82040d00, + 0x00000fff, 0x80040904, 0x600011b8, 0x0501f5f6, + 0x4a026202, 0x0000ffff, 0x0501fab6, 0x4d2c0000, + 0x4a01a006, 0x05000000, 0x59325809, 0x592c000d, + 0x4801a007, 0x592c000e, 0x4801a008, 0x592c000f, + 0x4801a009, 0x5c025800, 0x60100800, 0x600011b8, + 0x0501f5e5, 0x4c580000, 0x4c500000, 0x4c540000, + 0x4d2c0000, 0x0501faa3, 0x5930040d, 0x90000503, + 0x05000006, 0x90000583, 0x80000000, 0x58d00802, + 0x80040540, 0x4801a002, 0x59325809, 0x4200a800, + 0x00112004, 0x592cb209, 0x9058b403, 0x8058b104, + 0x912ca40a, 0x0521ff89, 0x40580000, 0x8054ac00, + 0x592c0001, 0x80000540, 0x05000003, 0x40025800, + 0x05fdf7f5, 0x4200a000, 0x00112004, 0x4050a800, + 0x5930b40d, 0x9058b403, 0x8058b104, 0x40580800, + 0x0521ffb5, 0x600011b8, 0x5c025800, 0x5c00a800, + 0x5c00a000, 0x5c00b000, 0x0501f5bb, 0x4c580000, + 0x4c500000, 0x4c540000, 0x4d2c0000, 0x42034800, + 0x00111ffd, 0x0501fa85, 0x59325809, 0x592c0805, + 0x4807c857, 0x40041000, 0x80040904, 0x90081503, + 0x05000007, 0x80040800, 0x90081583, 0x80081000, + 0x58d00002, 0x80080540, 0x4801a002, 0x4a025809, + 0x02000000, 0x90d0ac06, 0x592cb011, 0x912ca409, + 0x0521ff5a, 0x40580000, 0x8054ac00, 0x592e5801, + 0x41780000, 0x812e5d40, 0x05fe07f8, 0x600011b8, + 0x5c025800, 0x5c00a800, 0x5c00a000, 0x5c00b000, + 0x0501f595, 0x0501fa57, 0x4a01a006, 0x78000000, + 0x5930001e, 0x840001c0, 0x4801a407, 0x4979a207, + 0x60080800, 0x600011b8, 0x0501f58b, 0x4c580000, + 0x4c540000, 0x4c500000, 0x0501fa58, 0x4a01a006, + 0x02000000, 0x5932481d, 0x59240001, 0x4801a008, + 0x59240002, 0x4801a009, 0x59240003, 0x4801a00a, + 0x59240004, 0x4801a00b, 0x5930001e, 0x82000d80, + 0x0000e000, 0x0500000e, 0x82000d80, 0x0000df00, + 0x05000004, 0x6441a407, 0x60180800, 0x0501f015, + 0x42001800, 0x00111ce0, 0x05bdf85d, 0x600001be, + 0x4200a000, 0x00111ce0, 0x0501f007, 0x42001800, + 0x00111ced, 0x05bdf856, 0x600001c0, 0x4200a000, + 0x00111ced, 0x90000550, 0x4801a407, 0x64d1a207, + 0x6034b000, 0x90d0ac0c, 0x0521ff18, 0x604c0800, + 0x600011b8, 0x5c00a000, 0x5c00a800, 0x5c00b000, + 0x0501f559, 0x0501fa1b, 0x4a01a006, 0x63000028, + 0x5930001e, 0x4801a007, 0x60080800, 0x600011b8, + 0x0501f551, 0x0501fa21, 0x41780000, 0x41780800, + 0x42002000, 0x00080000, 0x0c01f80e, 0x80000000, + 0x80040800, 0x60301000, 0x82080540, 0x02000000, + 0x4801a006, 0x800408e0, 0x5930001e, 0x80040540, + 0x4801a007, 0x80080904, 0x600011b8, 0x0501f53e, + 0x00109131, 0x00109133, 0x00109135, 0x00109137, + 0x00109139, 0x4811a008, 0x1c01f000, 0x4811a009, + 0x1c01f000, 0x4811a00a, 0x1c01f000, 0x4811a00b, + 0x1c01f000, 0x4811a00c, 0x1c01f000, 0x4a02600a, + 0x001141b4, 0x59a80040, 0x82000500, 0x000000ff, + 0x800000d0, 0x42026800, 0x001141b4, 0x48026a12, + 0x0501fa5b, 0x41780800, 0x600010b8, 0x0501f522, + 0x0501f9e4, 0x4a01a006, 0x52000000, 0x4979a007, + 0x5932481d, 0x59240400, 0x90000503, 0x05000005, + 0x59240400, 0x80000110, 0x05c5fa10, 0x4805a007, + 0x59240001, 0x4801a008, 0x59240002, 0x4801a009, + 0x59240003, 0x4801a00a, 0x59240004, 0x4801a00b, + 0x59240005, 0x4801a00c, 0x601c0800, 0x600011b8, + 0x0501f509, 0x4a026202, 0x0000ffff, 0x0501f9c9, + 0x4a01a006, 0x05000000, 0x5932481d, 0x59240005, + 0x4801a007, 0x59240001, 0x59240802, 0x4801a008, + 0x4805a009, 0x60100800, 0x600011b8, 0x0501f4fa, + 0x4a026202, 0x0000ffff, 0x0501f9ba, 0x4d3c0000, + 0x417a7800, 0x05e5f9f0, 0x5c027800, 0x4a01a006, + 0x03000000, 0x59340403, 0x82000580, 0x000007fe, + 0x0502008e, 0x4a01a006, 0x04000000, 0x59a8024c, + 0x8c000506, 0x05000004, 0x5930081d, 0x58040408, + 0x4801a001, 0x5934000a, 0x84000500, 0x4802680a, + 0x59a8024c, 0x8c000508, 0x05000010, 0x59a80050, + 0x4801a007, 0x59a80051, 0x82000500, 0x07deffff, + 0x599c0818, 0x8c040516, 0x05000002, 0x8400056a, + 0x4801a008, 0x4a01a009, 0x00002710, 0x59a80053, + 0x4801a00a, 0x0501f046, 0x59a80050, 0x59a8124c, + 0x8c080506, 0x05000003, 0x82000500, 0xffff0000, + 0x4801a007, 0x05e9f9f7, 0x0502000e, 0x59300c03, + 0xb0041591, 0x0500000b, 0x59a80cd1, 0x8c04050a, + 0x05020008, 0x497b8880, 0x82000500, 0x0000ffff, + 0x4c000000, 0x05c5f9e2, 0x5c000000, 0x48038880, + 0x59a80051, 0x05e9f9e7, 0x05020006, 0x82000500, + 0xb7ffffff, 0x82000540, 0x80000000, 0x0501f003, + 0x82000500, 0x3fffffff, 0x599c0818, 0x8c040516, + 0x05000002, 0x8400056a, 0x05ddfafb, 0x05000008, + 0x59a80cd1, 0x8c040506, 0x05020005, 0x59a80a4c, + 0x8c080506, 0x05020002, 0x8400057c, 0x8d0c0510, + 0x05000014, 0x59300c03, 0xb0041591, 0x05000011, + 0x900415b1, 0x0500000f, 0x4c580000, 0x4c500000, + 0x4c540000, 0x6010b000, 0x4200a000, 0x001124b0, + 0x90d0ac1f, 0x4c000000, 0x0521fe4c, 0x5c000000, + 0x5c00a800, 0x5c00a000, 0x5c00b000, 0x8400057a, + 0x4801a008, 0x4979a009, 0x4979a00a, 0x59240001, + 0x59240802, 0x4801a00b, 0x4805a00c, 0x59240003, + 0x59240804, 0x4801a00d, 0x4805a00e, 0x4979a00f, + 0x4979a010, 0x4979a011, 0x4979a012, 0x599c0018, 0x8c000510, 0x05000011, 0x59a80006, 0x8c00050a, - 0x05000005, 0x59340c03, 0x82040480, 0x000007f0, - 0x0500100a, 0x59a80051, 0x4801a013, 0x59a80052, - 0x4801a014, 0x59a80053, 0x4801a015, 0x59a80054, + 0x05000004, 0x59a8024c, 0x8c000508, 0x0502000b, + 0x59a80054, 0x84000576, 0x4801a013, 0x59a80055, + 0x4801a014, 0x59a80056, 0x4801a015, 0x59a80057, 0x4801a016, 0x0501f005, 0x4979a013, 0x4979a014, - 0x4979a015, 0x4979a016, 0x59a80055, 0x4801a017, - 0x59a80056, 0x4801a018, 0x59a80057, 0x4801a019, - 0x59a80058, 0x4801a01a, 0x60740800, 0x600011b8, - 0x0501f3e1, 0x0501f8bb, 0x4a01a006, 0x50000000, - 0x05fdf7a9, 0x0501f8b7, 0x4a01a006, 0x21100014, + 0x4979a015, 0x4979a016, 0x59a80058, 0x84000576, + 0x4801a017, 0x59a80059, 0x4801a018, 0x4979a019, + 0x4979a01a, 0x0501f055, 0x05fdfd81, 0x59a80050, + 0x4801a007, 0x4c640000, 0x4d2c0000, 0x59a8c851, + 0x0511f842, 0x0500000d, 0x0511fee1, 0x0502000b, + 0x592c020b, 0x8c00050e, 0x05000008, 0x8264cd00, + 0x0000ffff, 0x592c000d, 0x82000500, 0xffff0000, + 0x8064cd40, 0x0501f005, 0x59a80a4c, 0x90040d30, + 0x05000002, 0x8464cd36, 0x4865a008, 0x5c025800, + 0x5c00c800, 0x59a80052, 0x4801a009, 0x59a80053, + 0x4801a00a, 0x59240001, 0x59240802, 0x4801a00b, + 0x4805a00c, 0x59240003, 0x59240804, 0x4801a00d, + 0x4805a00e, 0x4979a00f, 0x4979a010, 0x4979a011, + 0x4979a012, 0x59340200, 0x8c000508, 0x05000005, + 0x59a80054, 0x8400057e, 0x48035054, 0x0501f00e, + 0x599c0018, 0x8c000510, 0x05000014, 0x59a80006, + 0x8c00050a, 0x05000008, 0x59340c03, 0x82040480, + 0x000007f0, 0x0500100d, 0x82040480, 0x00000800, + 0x0502100a, 0x59a80054, 0x4801a013, 0x59a80055, + 0x4801a014, 0x59a80056, 0x4801a015, 0x59a80057, + 0x4801a016, 0x0501f005, 0x4979a013, 0x4979a014, + 0x4979a015, 0x4979a016, 0x59a80058, 0x4801a017, + 0x59a80059, 0x4801a018, 0x59a8005a, 0x4801a019, + 0x59a8005b, 0x4801a01a, 0x60740800, 0x600011b8, + 0x0501f409, 0x0501f8cb, 0x4a01a006, 0x50000000, + 0x05fdf7a6, 0x0501f8c7, 0x4a01a006, 0x21100014, 0x4979a007, 0x4979a008, 0x4979a009, 0x4979a00a, - 0x60140800, 0x600011b8, 0x0501f3d3, 0x0501f8b4, - 0x0501f002, 0x0501f8b9, 0x4a01a006, 0x02000000, - 0x60040800, 0x600011b8, 0x0501f3cb, 0x0501f8b3, + 0x60140800, 0x600011b8, 0x0501f3fb, 0x0501f8c4, + 0x0501f002, 0x0501f8c9, 0x4a01a006, 0x02000000, + 0x60040800, 0x600011b8, 0x0501f3f3, 0x0501f8c3, 0x4a01a006, 0x02000000, 0x59300403, 0x900005b1, - 0x05000002, 0x05fdf790, 0x0501fc38, 0x05000004, - 0x4a01a001, 0x00fffffe, 0x05fdf709, 0x81a40800, - 0x4a000801, 0x00fffffe, 0x05fdf705, 0x0501f8a3, + 0x05000002, 0x05fdf78d, 0x0501fc60, 0x05000004, + 0x4a01a001, 0x00fffffe, 0x05fdf706, 0x81a40800, + 0x4a000801, 0x00fffffe, 0x05fdf702, 0x0501f8b3, 0x4a01a006, 0x01000000, 0x5930041c, 0x80000540, 0x05000003, 0x4801a407, 0x0501f002, 0x640da407, 0x5930021c, 0x80000540, 0x05000003, 0x4801a207, 0x0501f003, 0x4a01a207, 0x00002a00, 0x60080800, - 0x600011b8, 0x0501f3a8, 0x4a026202, 0x0000ffff, - 0x0501f880, 0x4a01a406, 0x00002010, 0x6451a206, + 0x600011b8, 0x0501f3d0, 0x4a026202, 0x0000ffff, + 0x0501f890, 0x4a01a406, 0x00002010, 0x6451a206, 0x4a01a407, 0x00000800, 0x4a01a207, 0x00002000, 0x60000008, 0x59a80807, 0x8c04050c, 0x05000002, - 0x80000580, 0x5932481d, 0x59240c00, 0x8c040508, + 0x80000580, 0x59300a16, 0x8c040514, 0x05000006, + 0x5930081e, 0x90040d30, 0x05000003, 0x80040540, + 0x0501f009, 0x5932481d, 0x59240c00, 0x8c040508, 0x05000004, 0x90000560, 0x8c04050a, 0x05020002, 0x90000550, 0x90000542, 0x5934080a, 0x8c040514, 0x05000005, 0x82040d00, 0x00000380, 0x80040540, 0x0501f006, 0x599c0818, 0x8c040518, 0x05000003, - 0x82000540, 0x00000380, 0x0501f03c, 0x0501f86b, + 0x82000540, 0x00000380, 0x0501f044, 0x0501f873, 0x4a01a406, 0x00000210, 0x6451a206, 0x4a01a407, 0x00000800, 0x5934000a, 0x8c000516, 0x05000013, 0x59340c05, 0x90040530, 0x05000013, 0x59340a05, @@ -9129,76 +9437,81 @@ static const uint32_t isp_2500_risc_code[] = { 0x00000400, 0x0501f006, 0x4a01a207, 0x00000700, 0x0501f003, 0x4a01a207, 0x00000800, 0x60000008, 0x59a80807, 0x8c04050c, 0x05000002, 0x80000580, + 0x59300a16, 0x8c040510, 0x05000006, 0x5930081e, + 0x90040d30, 0x05000003, 0x80040540, 0x0501f009, 0x5932481d, 0x59240c00, 0x8c040508, 0x05000004, 0x90000560, 0x8c04050a, 0x05020002, 0x90000550, 0x90000542, 0x59340a00, 0x8c04050e, 0x0500000b, 0x84000550, 0x599c1017, 0x8c08050a, 0x05020004, 0x8c04050a, 0x05000002, 0x8400054e, 0x8c04051c, 0x05000002, 0x84000552, 0x4801a20a, 0x60140800, - 0x600011b8, 0x0501f344, 0x0501f82c, 0x4a01a006, + 0x600011b8, 0x0501f35c, 0x0501f82c, 0x4a01a006, 0x02100014, 0x4a01a007, 0x00000100, 0x4979a008, 0x4979a009, 0x4979a00a, 0x60140800, 0x600011b8, - 0x0501f339, 0x0501f821, 0x4a01a006, 0x02000000, - 0x05fdf642, 0x4933c857, 0x0501f81c, 0x4a01a006, + 0x0501f351, 0x0501f821, 0x4a01a006, 0x02000000, + 0x05fdf62f, 0x4933c857, 0x0501f81c, 0x4a01a006, 0x01000000, 0x642da407, 0x60080800, 0x600011b8, - 0x0501f32d, 0x42005000, 0x32000000, 0x42006000, - 0x08290000, 0x41786800, 0x41787800, 0x0501f2e9, + 0x0501f345, 0x42005000, 0x32000000, 0x42006000, + 0x08290000, 0x41786800, 0x41787800, 0x0501f2fb, 0x42005000, 0x22000000, 0x42006000, 0x01290000, - 0x41786800, 0x41787800, 0x0501f2e2, 0x42005000, + 0x41786800, 0x41787800, 0x0501f2f4, 0x42005000, 0x33000000, 0x42006000, 0x08980000, 0x41786800, - 0x41787800, 0x0501f2db, 0x42005000, 0x23000000, + 0x41787800, 0x0501f2ed, 0x42005000, 0x23000000, 0x42006000, 0x01980000, 0x41786800, 0x41787800, - 0x0501f2d4, 0x59300403, 0x82000c80, 0x00000085, - 0x05b81f6e, 0x82000c80, 0x00000093, 0x05ba1f6b, - 0x82000480, 0x00000085, 0x0c01f001, 0x00108e82, - 0x00108e81, 0x00108e81, 0x00108e81, 0x00108e81, - 0x00108e81, 0x00108e82, 0x00108e81, 0x00108e81, - 0x00108e81, 0x00108e81, 0x00108e81, 0x00108e81, - 0x00108e89, 0x05b9ff59, 0x4933c857, 0x42034800, - 0x0010e063, 0x0501f836, 0x41780800, 0x600010b8, - 0x0501f2f1, 0x4d2c0000, 0x59325809, 0x4933c857, - 0x492fc857, 0x812e59c0, 0x05b80f4c, 0x59340a12, - 0x82040d00, 0x0000ff00, 0x592c000e, 0x82000500, + 0x0501f2e6, 0x59300403, 0x82000c80, 0x00000085, + 0x05b81ad1, 0x82000c80, 0x00000093, 0x05ba1ace, + 0x82000480, 0x00000085, 0x0c01f001, 0x0010935a, + 0x00109359, 0x00109359, 0x00109359, 0x00109359, + 0x00109359, 0x0010935a, 0x00109359, 0x00109359, + 0x00109359, 0x00109359, 0x00109359, 0x00109359, + 0x00109361, 0x05b9fabc, 0x4933c857, 0x42034800, + 0x00111ffd, 0x0501f842, 0x41780800, 0x600010b8, + 0x0501f309, 0x4d2c0000, 0x59325809, 0x4933c857, + 0x492fc857, 0x812e59c0, 0x05b80aaf, 0x41780800, + 0x05e9f830, 0x0500000d, 0x592c180d, 0x820c0500, + 0x00ffff00, 0x05000006, 0x59a81040, 0x82081500, + 0x00ffff00, 0x80080580, 0x05020004, 0x820c0d00, + 0x000000ff, 0x800408d0, 0x592c000e, 0x82000500, 0x000000ff, 0x900001c0, 0x80040540, 0x592c0c0b, 0x82040d00, 0x0000f000, 0x82040d80, 0x00003000, 0x05020003, 0x90000570, 0x0501f002, 0x90000551, - 0x44034800, 0x81a5a000, 0x0501fb4c, 0x05020b51, + 0x44034800, 0x81a5a000, 0x0501fb58, 0x05020b5d, 0x60241000, 0x600c0800, 0x592c000d, 0x82000500, 0xff000000, 0x82001d80, 0x84000000, 0x05000006, - 0x82001d80, 0x85000000, 0x05ba0f2c, 0x601c1000, + 0x82001d80, 0x85000000, 0x05ba0a83, 0x601c1000, 0x60040800, 0x912c1c0d, 0x500c0000, 0x4401a000, 0x800c1800, 0x80d1a000, 0x80081040, 0x05fe07fb, - 0x600011b8, 0x5c025800, 0x0501f2bf, 0x42005000, + 0x600011b8, 0x5c025800, 0x0501f2cb, 0x42005000, 0x81000000, 0x42006000, 0x00090000, 0x41786800, 0x41787800, 0x59301407, 0x90081585, 0x05020003, 0x42006000, 0x00890000, 0x59301416, 0x8c08051a, - 0x05000002, 0x60047800, 0x0501f272, 0x59300403, - 0xb0000c93, 0x05ba1f0d, 0xb000048b, 0x05b81f0b, + 0x05000002, 0x60047800, 0x0501f278, 0x59300403, + 0xb0000c93, 0x05ba1a64, 0xb000048b, 0x05b81a62, 0x5932680a, 0x59368c03, 0x4803c857, 0x0c01f001, - 0x00108f39, 0x00108f41, 0x00108f49, 0x00108f51, - 0x00108edc, 0x00108edc, 0x00108edc, 0x00108f31, - 0x05b9fefe, 0x42005000, 0x06000000, 0x42006000, - 0x08290000, 0x41786800, 0x41787800, 0x0501f259, - 0x4933c857, 0x05fdff6f, 0x4a01a006, 0x12000000, + 0x0010941d, 0x00109425, 0x0010942d, 0x00109435, + 0x001093c0, 0x001093c0, 0x001093c0, 0x00109415, + 0x05b9fa55, 0x42005000, 0x06000000, 0x42006000, + 0x08290000, 0x41786800, 0x41787800, 0x0501f25f, + 0x4933c857, 0x05fdff63, 0x4a01a006, 0x12000000, 0x59300407, 0x90000584, 0x05020003, 0x59340002, 0x0501f003, 0x5932481d, 0x59240005, 0x82000500, 0x00ffffff, 0x4801a007, 0x5930041b, 0x4801a408, 0x5930021b, 0x4801a208, 0x600c0800, 0x600011b8, - 0x0501f281, 0x05fdff5b, 0x4a01a006, 0x0f000000, + 0x0501f28d, 0x05fdff4f, 0x4a01a006, 0x0f000000, 0x5930001e, 0x4801a007, 0x60080800, 0x600011b8, - 0x0501f279, 0x05fdff61, 0x4a01a006, 0x02000000, + 0x0501f285, 0x05fdff55, 0x4a01a006, 0x02000000, 0x59c40085, 0x59880804, 0x80040c00, 0x48071004, 0x497b8885, 0x59880000, 0x4801a007, 0x59880001, 0x4801a008, 0x59880002, 0x4801a009, 0x59880003, 0x4801a00a, 0x59880004, 0x4801a00b, 0x59880005, - 0x4801a00c, 0x601c0800, 0x600011b8, 0x0501f262, - 0x4a026202, 0x0000ffff, 0x05fdff3a, 0x4a01a006, + 0x4801a00c, 0x601c0800, 0x600011b8, 0x0501f26e, + 0x4a026202, 0x0000ffff, 0x05fdff2e, 0x4a01a006, 0x62000000, 0x5930001e, 0x4801a007, 0x60080800, - 0x600011b8, 0x0501f258, 0x05fdff32, 0x59300809, + 0x600011b8, 0x0501f264, 0x05fdff26, 0x59300809, 0x4c500000, 0x4c540000, 0x4c580000, 0x9004a40e, - 0x5930b01e, 0x90d0ac06, 0x0521f97d, 0x5930081e, + 0x5930b01e, 0x90d0ac06, 0x0521fc14, 0x5930081e, 0x600011b8, 0x5c00b000, 0x5c00a800, 0x5c00a000, - 0x0501f249, 0x05fdffac, 0x59300019, 0x4801a006, + 0x0501f255, 0x05fdffac, 0x59300019, 0x4801a006, 0x5930001a, 0x4801a007, 0x4a01a008, 0x00001000, 0x0501f020, 0x05fdffa4, 0x59300019, 0x4801a006, 0x5930001a, 0x4801a007, 0x4a01a008, 0x00004000, @@ -9209,157 +9522,160 @@ static const uint32_t isp_2500_risc_code[] = { 0x0501f008, 0x05fdff8c, 0x59300019, 0x4801a006, 0x5930001a, 0x4801a007, 0x4a01a008, 0x00000200, 0x4979a009, 0x4979a00a, 0x4979a00b, 0x4979a00c, - 0x4979a00d, 0x60200800, 0x600011b8, 0x0501f21a, - 0x05fdff02, 0x4a01a006, 0x02000014, 0x4979a407, - 0x4979a207, 0x59a8005f, 0x4801a008, 0x59a80060, + 0x4979a00d, 0x60200800, 0x600011b8, 0x0501f226, + 0x05fdfef6, 0x4a01a006, 0x02000014, 0x4979a407, + 0x4979a207, 0x59a80062, 0x4801a008, 0x59a80063, 0x4801a009, 0x4a01a00a, 0x00047878, 0x60140800, - 0x600011b8, 0x0501f20c, 0x05fdfef4, 0x4a01a006, + 0x600011b8, 0x0501f218, 0x05fdfee8, 0x4a01a006, 0x02140018, 0x4a01a407, 0x00000800, 0x5930001e, 0x82000d00, 0xff000000, 0x900409c0, 0x4805a207, 0x82000500, 0x00ffffff, 0x4801a00a, 0x4979a408, 0x4979a208, 0x4979a409, 0x4979a209, 0x59a80006, 0x8c000500, 0x05000005, 0x4a01a006, 0x02100014, 0x60140800, 0x0501f003, 0x4979a00b, 0x60180800, - 0x600011b8, 0x0501f1f0, 0x4933c857, 0x4937c857, - 0x4d1c0000, 0x60d40800, 0x0511f988, 0x05020025, + 0x600011b8, 0x0501f1fc, 0x4933c857, 0x4937c857, + 0x4d1c0000, 0x60d40800, 0x0511fa3c, 0x05020025, 0x59300017, 0x591c0817, 0x80040580, 0x05020021, - 0x05fdfec0, 0x4a01a006, 0x13000000, 0x5932382a, + 0x05fdfeb4, 0x4a01a006, 0x13000000, 0x5932382a, 0x59300403, 0xb0000597, 0x05000004, 0x591c0416, - 0x8c000502, 0x05b80e3d, 0x591c001b, 0x4801a005, + 0x8c000502, 0x05b80994, 0x591c001b, 0x4801a005, 0x591c0407, 0x90000583, 0x05000007, 0x5930080a, 0x58040002, 0x82000500, 0x00ffffff, 0x4801a007, 0x0501f004, 0x5932481d, 0x59240005, 0x4801a007, 0x5930041b, 0x4801a408, 0x5930021b, 0x4801a208, - 0x600c0800, 0x600011b8, 0x5c023800, 0x0501f1c6, - 0x4803c856, 0x05f9fd5e, 0x598c000b, 0x81300580, - 0x05ba0e22, 0x05f9fcb0, 0x59300403, 0xb0000597, - 0x05040b07, 0x0005ffdc, 0x5c023800, 0x05f9f545, + 0x600c0800, 0x600011b8, 0x5c023800, 0x0501f1d2, + 0x4803c856, 0x05f9fd38, 0x598c000b, 0x81300580, + 0x05ba0979, 0x05f9fc8a, 0x59300403, 0xb0000597, + 0x05040b5d, 0x0009f810, 0x5c023800, 0x05f9f51f, 0x4803c856, 0x4d2c0000, 0x4d1c0000, 0x5932382a, - 0x811e39c0, 0x05b80e15, 0x831c0580, 0xffffffff, - 0x05000044, 0x591c0c07, 0x90040586, 0x0500000a, - 0x90040583, 0x05000044, 0x64de6403, 0x640e641c, + 0x811e39c0, 0x05b8096c, 0x831c0580, 0xffffffff, + 0x0500004a, 0x591c0c07, 0x90040586, 0x0500000a, + 0x90040583, 0x0500004a, 0x64de6403, 0x640e641c, 0x4a02621c, 0x00001700, 0x5c023800, 0x5c025800, - 0x0501f072, 0x0501f856, 0x42001000, 0x40000000, - 0x591c0203, 0x591c0804, 0x8c04053e, 0x05020024, - 0x90000c91, 0x0c001002, 0x05b9fdfc, 0x00108ff0, - 0x00108fff, 0x00108ff1, 0x00108fff, 0x00108ff9, - 0x00108ff0, 0x00108fff, 0x00108fff, 0x00108fff, - 0x00108ff0, 0x00108ff0, 0x00108ff0, 0x00108ff0, - 0x00108ff0, 0x00108fff, 0x00108ff0, 0x00108fff, - 0x05b9fdea, 0x591c0416, 0x4803c857, 0x8c000518, - 0x05000003, 0x8c000512, 0x05000007, 0x80001580, - 0x0501f007, 0x80001580, 0x591c0014, 0x4803c857, - 0x0501f00e, 0x42001000, 0x20000000, 0x591c0013, - 0x4803c857, 0x8c00053c, 0x05000003, 0x80000580, - 0x0501f006, 0x591c0014, 0x4803c857, 0x800001c0, - 0x05020002, 0x591c0017, 0x4801a00a, 0x0501f01a, - 0x0501f81f, 0x42001000, 0x40000000, 0x41780000, - 0x05fdf7fa, 0x0501f81a, 0x591e5809, 0x812e59c0, - 0x05b80dc6, 0x592c1013, 0x591c0013, 0x80080480, - 0x4801a00a, 0x591c0203, 0x591c0804, 0x8c04053e, - 0x05020005, 0x90000d82, 0x05000006, 0x90000d84, - 0x05000004, 0x42001000, 0x40000000, 0x0501f002, - 0x80001580, 0x4809a00b, 0x60180800, 0x600011b8, - 0x5c023800, 0x5c025800, 0x0501f14f, 0x4803c856, - 0x05fdfe36, 0x4a01a006, 0x02000000, 0x59300c1b, - 0x4805a407, 0x59300a1b, 0x4805a207, 0x5932481d, - 0x59241005, 0x5930080a, 0x58041802, 0x820c1d00, - 0x00ffffff, 0x5930082a, 0x82040580, 0xffffffff, - 0x05000007, 0x58040407, 0x90000583, 0x05020004, - 0x4809a008, 0x480da009, 0x0501f003, 0x480da008, - 0x4809a009, 0x1c01f000, 0x4803c856, 0x05fdfe1b, - 0x0501f003, 0x4803c856, 0x05fdfe11, 0x4a01a006, - 0x01000000, 0x5930041c, 0x4801a407, 0x5930021c, - 0x4801a207, 0x60080800, 0x600011b8, 0x0501f126, - 0x4803c856, 0x4d1c0000, 0x05fdfdf7, 0x4a01a006, - 0x14000000, 0x5932382a, 0x591c001b, 0x4801a005, - 0x5930041b, 0x4801a407, 0x5930021b, 0x4801a207, - 0x59300017, 0x4801a008, 0x59300218, 0x82000500, - 0x000000ff, 0x840001c0, 0x4801a409, 0x60100800, - 0x600011b8, 0x5c023800, 0x0501f10f, 0x4803c856, - 0x05fdfdf6, 0x4a01a006, 0x02000001, 0x42001000, - 0xe8000000, 0x59c40801, 0x82040d00, 0x00018000, - 0x90040580, 0x60000100, 0x0500000e, 0x82040580, - 0x00008000, 0x60000080, 0x0500000a, 0x82040580, - 0x00010000, 0x60000040, 0x05000006, 0x82040580, - 0x00018000, 0x60000010, 0x05000002, 0x60080000, - 0x80080540, 0x4801a007, 0x60080800, 0x600011b8, - 0x0501f0f1, 0x4803c856, 0x0501f809, 0x5930041c, - 0x900001c0, 0x4801a005, 0x0501f950, 0x41780800, - 0x600010b8, 0x0501f8e8, 0x05f1f721, 0x4803c856, - 0x59300819, 0x90041c09, 0x64874800, 0x58040408, - 0x82000500, 0x0000f000, 0x82000580, 0x00003000, - 0x05000002, 0x65074800, 0x81a5a000, 0x0501f94f, - 0x05000004, 0x4c0c0000, 0x0501f952, 0x5c001800, - 0x580c0001, 0x82000d00, 0x00ffffff, 0x82040d40, - 0xc2000000, 0x4805a000, 0x580c0800, 0x82041500, - 0x00ffffff, 0x82000500, 0xff000000, 0x80080540, - 0x4801a001, 0x580c0002, 0x82000580, 0x00c00000, - 0x82000500, 0x00fd0300, 0x4801a002, 0x580c0003, - 0x4801a003, 0x580c0404, 0x4801a404, 0x580c0204, - 0x4801a204, 0x1c01f000, 0x05fdfda4, 0x5930001e, - 0x800001c0, 0x05000006, 0x4a01a006, 0x01000000, - 0x640da407, 0x60080800, 0x0501f021, 0x4a01a006, - 0x02000000, 0x41780800, 0x916c0584, 0x05020003, - 0x84040d42, 0x0501f00c, 0x05e5ffe0, 0x05020003, - 0x84040d4a, 0x0501f002, 0x84040d48, 0x59a80249, - 0x8c000506, 0x05020003, 0x8c00050a, 0x05000002, - 0x84040d46, 0x4805a207, 0x59c40085, 0x48031004, - 0x4c580000, 0x4c500000, 0x4c540000, 0x6018b000, - 0x9188a400, 0x90d0ac08, 0x051dffc5, 0x5c00a800, - 0x5c00a000, 0x5c00b000, 0x60200800, 0x600011b8, - 0x0501f091, 0x05fdfd6b, 0x4a01a006, 0x56000000, - 0x59340006, 0x4801a007, 0x59340007, 0x4801a008, - 0x600c0800, 0x600011b8, 0x0501f087, 0x4803c856, - 0x05fdfd6e, 0x5930081e, 0x800409c0, 0x0500000b, - 0x82040580, 0x0000ffff, 0x05000003, 0x90040487, - 0x05021006, 0x4a01a006, 0x01000000, 0x640da407, - 0x60080800, 0x0501f011, 0x4a01a006, 0x0200001c, - 0x6405a007, 0x42001000, 0x0010dd4b, 0x50080000, - 0x9c0001c0, 0x4801a009, 0x5932481d, 0x59240005, - 0x4801a00a, 0x59240001, 0x59240802, 0x4801a00b, - 0x4805a00c, 0x601c0800, 0x600011b8, 0x0501f066, - 0x4d2c0000, 0x05fdfd3f, 0x59325809, 0x812e59c0, - 0x05020003, 0x4979a001, 0x0501f005, 0x592c000c, - 0x82000500, 0x00ffffff, 0x4801a001, 0x4a01a006, - 0x51000000, 0x5c025800, 0x05fdf3a1, 0x4803c856, - 0x59325809, 0x5932680a, 0x59300407, 0x4803c857, - 0x90000d8a, 0x05000002, 0x05b9fcb0, 0x42005000, - 0x02000000, 0x42006000, 0x20290000, 0x41786800, - 0x41787800, 0x0501f805, 0x91180d78, 0x60801193, - 0x0501f882, 0x1c01f000, 0x6081a000, 0x59300416, - 0x8c000510, 0x05020008, 0x6001a000, 0x0501f006, - 0x60c1a000, 0x59300416, 0x8c000510, 0x05020002, - 0x6045a000, 0x59340a12, 0x82040d00, 0x0000ff00, - 0x5932481d, 0x59240408, 0x900001c0, 0x80040540, - 0x80d00540, 0x44034800, 0x81a5a000, 0x0501f8a3, - 0x050208a8, 0x59340002, 0x82000500, 0x00ffffff, - 0x59300c03, 0x90040db1, 0x05020002, 0x41780000, - 0x80280540, 0x4801a000, 0x59240005, 0x4801a001, - 0x4831a002, 0x90340540, 0x4801a003, 0x59300402, - 0x4801a404, 0x59300a02, 0x4805a204, 0x8c30052e, - 0x05000009, 0x4805a404, 0x59301416, 0x480bc857, - 0x8c08051c, 0x05000003, 0x59300216, 0x4803c857, - 0x4801a204, 0x483da005, 0x1c01f000, 0x643e6407, + 0x0501f078, 0x0501f85c, 0x42001000, 0x40000000, + 0x591c0203, 0x591c0804, 0x8c04053e, 0x05020027, + 0x90000c91, 0x0c001002, 0x05b9f953, 0x001094d4, + 0x001094e6, 0x001094d5, 0x001094e6, 0x001094dd, + 0x001094d4, 0x001094e6, 0x001094e6, 0x001094e6, + 0x001094d4, 0x001094d4, 0x001094d4, 0x001094d4, + 0x001094d4, 0x001094e6, 0x001094d4, 0x001094e6, + 0x05b9f941, 0x591c0416, 0x4803c857, 0x8c000518, + 0x05000003, 0x8c000512, 0x0500000a, 0x80001580, + 0x0501f00a, 0x80001580, 0x0521fbf8, 0x41780000, + 0x05020014, 0x591c0014, 0x4803c857, 0x0501f011, + 0x42001000, 0x20000000, 0x0521fbf0, 0x41780000, + 0x0502000c, 0x591c0013, 0x4803c857, 0x8c00053c, + 0x05000003, 0x80000580, 0x0501f006, 0x591c0014, + 0x4803c857, 0x800001c0, 0x05020002, 0x591c0017, + 0x4801a00a, 0x0501f01a, 0x0501f81f, 0x42001000, + 0x40000000, 0x41780000, 0x05fdf7fa, 0x0501f81a, + 0x591e5809, 0x812e59c0, 0x05b80917, 0x592c1013, + 0x591c0013, 0x80080480, 0x4801a00a, 0x591c0203, + 0x591c0804, 0x8c04053e, 0x05020005, 0x90000d82, + 0x05000006, 0x90000d84, 0x05000004, 0x42001000, + 0x40000000, 0x0501f002, 0x80001580, 0x4809a00b, + 0x60180800, 0x600011b8, 0x5c023800, 0x5c025800, + 0x0501f155, 0x4803c856, 0x05fdfe24, 0x4a01a006, + 0x02000000, 0x59300c1b, 0x4805a407, 0x59300a1b, + 0x4805a207, 0x5932481d, 0x59241005, 0x5930080a, + 0x58041802, 0x820c1d00, 0x00ffffff, 0x5930082a, + 0x82040580, 0xffffffff, 0x05000007, 0x58040407, + 0x90000583, 0x05020004, 0x4809a008, 0x480da009, + 0x0501f003, 0x480da008, 0x4809a009, 0x1c01f000, + 0x4803c856, 0x05fdfe09, 0x0501f003, 0x4803c856, + 0x05fdfdff, 0x4a01a006, 0x01000000, 0x5930041c, + 0x4801a407, 0x5930021c, 0x4801a207, 0x60080800, + 0x600011b8, 0x0501f12c, 0x4803c856, 0x4d1c0000, + 0x05fdfde5, 0x4a01a006, 0x14000000, 0x5932382a, + 0x591c001b, 0x4801a005, 0x5930041b, 0x4801a407, + 0x5930021b, 0x4801a207, 0x59300017, 0x4801a008, + 0x59300218, 0x82000500, 0x000000ff, 0x840001c0, + 0x4801a409, 0x60100800, 0x600011b8, 0x5c023800, + 0x0501f115, 0x4803c856, 0x05fdfde4, 0x4a01a006, + 0x02000001, 0x42001000, 0xe8000000, 0x59c40801, + 0x82040d00, 0x00018000, 0x90040580, 0x60000100, + 0x0500000e, 0x82040580, 0x00008000, 0x60000080, + 0x0500000a, 0x82040580, 0x00010000, 0x60000040, + 0x05000006, 0x82040580, 0x00018000, 0x60000010, + 0x05000002, 0x60080000, 0x80080540, 0x4801a007, + 0x60080800, 0x600011b8, 0x0501f0f7, 0x4803c856, + 0x0501f809, 0x5930041c, 0x900001c0, 0x4801a005, + 0x0501f956, 0x41780800, 0x600010b8, 0x0501f8ee, + 0x05f1f69b, 0x4803c856, 0x59300819, 0x90041c09, + 0x64874800, 0x58040408, 0x82000500, 0x0000f000, + 0x82000580, 0x00003000, 0x05000002, 0x65074800, + 0x81a5a000, 0x0501f955, 0x05000004, 0x4c0c0000, + 0x0501f958, 0x5c001800, 0x580c0001, 0x82000d00, + 0x00ffffff, 0x82040d40, 0xc2000000, 0x4805a000, + 0x580c0800, 0x82041500, 0x00ffffff, 0x82000500, + 0xff000000, 0x80080540, 0x4801a001, 0x580c0002, + 0x82000580, 0x00c00000, 0x82000500, 0x00fd0300, + 0x4801a002, 0x580c0003, 0x4801a003, 0x580c0404, + 0x4801a404, 0x580c0204, 0x4801a204, 0x1c01f000, + 0x05fdfd92, 0x5930001e, 0x800001c0, 0x05000006, + 0x4a01a006, 0x01000000, 0x640da407, 0x60080800, + 0x0501f021, 0x4a01a006, 0x02000000, 0x41780800, + 0x916c0584, 0x05020003, 0x84040d42, 0x0501f00c, + 0x05e5fde0, 0x05020003, 0x84040d4a, 0x0501f002, + 0x84040d48, 0x59a8024c, 0x8c000506, 0x05020003, + 0x8c00050a, 0x05000002, 0x84040d46, 0x4805a207, + 0x59c40085, 0x48031004, 0x4c580000, 0x4c500000, + 0x4c540000, 0x6018b000, 0x9188a400, 0x90d0ac08, + 0x0521fa56, 0x5c00a800, 0x5c00a000, 0x5c00b000, + 0x60200800, 0x600011b8, 0x0501f097, 0x05fdfd59, + 0x4a01a006, 0x56000000, 0x59340006, 0x4801a007, + 0x59340007, 0x4801a008, 0x600c0800, 0x600011b8, + 0x0501f08d, 0x4803c856, 0x05fdfd5c, 0x5930081e, + 0x800409c0, 0x0500000b, 0x82040580, 0x0000ffff, + 0x05000003, 0x90040487, 0x05021006, 0x4a01a006, + 0x01000000, 0x640da407, 0x60080800, 0x0501f011, + 0x4a01a006, 0x0200001c, 0x6405a007, 0x42001000, + 0x00111ce5, 0x50080000, 0x9c0001c0, 0x4801a009, + 0x5932481d, 0x59240005, 0x4801a00a, 0x59240001, + 0x59240802, 0x4801a00b, 0x4805a00c, 0x601c0800, + 0x600011b8, 0x0501f06c, 0x4d2c0000, 0x05fdfd2d, + 0x59325809, 0x812e59c0, 0x05020003, 0x4979a001, + 0x0501f005, 0x592c000c, 0x82000500, 0x00ffffff, + 0x4801a001, 0x4a01a006, 0x51000000, 0x5c025800, + 0x05fdf37c, 0x4803c856, 0x59325809, 0x5932680a, + 0x59300407, 0x4803c857, 0x90000d8a, 0x05000002, + 0x05b9f801, 0x42005000, 0x02000000, 0x42006000, + 0x20290000, 0x41786800, 0x41787800, 0x0501f805, + 0x91180d78, 0x60801193, 0x0501f888, 0x1c01f000, + 0x6081a000, 0x59300416, 0x8c000510, 0x05020008, + 0x6001a000, 0x0501f006, 0x60c1a000, 0x59300416, + 0x8c000510, 0x05020002, 0x6045a000, 0x59340a12, + 0x82040d00, 0x0000ff00, 0x5932481d, 0x59240408, + 0x900001c0, 0x80040540, 0x80d00540, 0x44034800, + 0x81a5a000, 0x0501f8a9, 0x050208ae, 0x59340002, + 0x82000500, 0x00ffffff, 0x59300c03, 0x90040db1, + 0x05020002, 0x41780000, 0x80280540, 0x4801a000, + 0x59240005, 0x4801a001, 0x4831a002, 0x90340540, + 0x4801a003, 0x59300402, 0x4801a404, 0x59300a02, + 0x4805a204, 0x8c30052e, 0x05000009, 0x4805a404, + 0x59301416, 0x480bc857, 0x8c08051c, 0x05000003, + 0x59300216, 0x4803c857, 0x4801a204, 0x483da005, + 0x1c01f000, 0x82100580, 0xc2000000, 0x05020004, + 0x42000000, 0x00112358, 0x0521f8fd, 0x643e6407, 0x59300819, 0x5930001a, 0x80102540, 0x48126019, 0x4806601a, 0x5930081b, 0x82040d00, 0x00fffff0, 0x82040d80, 0x00c00000, 0x4806601b, 0x481a601e, 0x1c01f000, 0x4807c857, 0x4c040000, 0x0501f857, 0x5c000800, 0x40040000, 0x80081540, 0x800000c4, - 0x82000540, 0x00002000, 0x42000800, 0x0010e06a, - 0x59a824cc, 0x8c100502, 0x05000008, 0x90040c02, + 0x82000540, 0x00002000, 0x42000800, 0x00112004, + 0x59a824d1, 0x8c100502, 0x05000008, 0x90040c02, 0x82000540, 0x00004000, 0x82081500, 0xffffc3ff, 0x82081540, 0x00002400, 0x4803910a, 0x59b400f6, - 0x90000518, 0x05fe07fe, 0x42001800, 0x0010e064, - 0x8c100502, 0x05000003, 0x42001800, 0x0010e066, + 0x90000518, 0x05fe07fe, 0x42001800, 0x00111ffe, + 0x8c100502, 0x05000003, 0x42001800, 0x00112000, 0x580c0004, 0x4803c857, 0x580c0006, 0x4803c857, 0x580c1800, 0x480fc857, 0x8d0c052a, 0x0500000c, 0x820c1d00, 0xf8000000, 0x05000009, 0x4c040000, - 0x4c080000, 0x40083800, 0x42000000, 0x0010e064, - 0x05b9fd4b, 0x5c001000, 0x5c000800, 0x4a0368f0, - 0x0010e063, 0x480768f1, 0x480b68f3, 0x59b400f6, + 0x4c080000, 0x40083800, 0x42000000, 0x00111ffe, + 0x05b9f88a, 0x5c001000, 0x5c000800, 0x4a0368f0, + 0x00111ffd, 0x480768f1, 0x480b68f3, 0x59b400f6, 0x90000538, 0x05fe07fe, 0x4203e000, 0xb0800000, - 0x600bf800, 0x05f1f5fe, 0x4807c857, 0x0501f837, + 0x600bf800, 0x05f1f572, 0x4807c857, 0x0501f837, 0x05000006, 0x82040d00, 0xffffff07, 0xb0040d48, 0x82081540, 0x00001000, 0x59300004, 0x8c000512, 0x05000002, 0x8408154c, 0x480a2800, 0x4c040000, @@ -9368,30 +9684,30 @@ static const uint32_t isp_2500_risc_code[] = { 0x90000538, 0x05fe07fe, 0x4203e000, 0xb0800000, 0x600bf800, 0x1c01f000, 0x61a07007, 0x4203e000, 0xb0800000, 0x600ff800, 0x40000000, 0x40000000, - 0x40000000, 0x0501b004, 0x80387040, 0x05b80bff, + 0x40000000, 0x0501b004, 0x80387040, 0x05b40f4a, 0x05fdf7f9, 0x1c01f000, 0x82000500, 0xffff0000, 0x82000580, 0x01050000, 0x0502000b, 0x599c0818, 0x8c040510, 0x05000008, 0x59a80806, 0x8c04050a, 0x05000005, 0x613c1100, 0x41781800, 0x41782000, - 0x05d9fdf0, 0x1c01f000, 0x05ddf92a, 0x05000004, - 0x59a804cc, 0x4803c857, 0x8c000502, 0x1c01f000, + 0x05d9fa9d, 0x1c01f000, 0x05d9fde0, 0x05000004, + 0x59a804d1, 0x4803c857, 0x8c000502, 0x1c01f000, 0x48d3c857, 0x5924100b, 0x82080500, 0x00001fff, 0x800000c2, 0x82080d00, 0x0000e000, 0x80040540, 0x82000540, 0x50000000, 0x4801a000, 0x82080500, 0xff000000, 0x4801a001, 0x90d1a402, 0x48d3c857, 0x1c01f000, 0x1c01f000, 0x4d340000, 0x59300407, 0x90006c92, 0x05021015, 0x5932680a, 0x0c01f001, - 0x0010925b, 0x00109227, 0x0010921f, 0x00109232, - 0x0010923e, 0x00109240, 0x0010924a, 0x0010925b, - 0x0010925b, 0x0010925b, 0x0010925b, 0x0010925b, - 0x0010925b, 0x0010925b, 0x0010925b, 0x00109256, - 0x0010925b, 0x0010924e, 0x05b9fbbc, 0x8d3c0500, + 0x0010974b, 0x00109717, 0x0010970f, 0x00109722, + 0x0010972e, 0x00109730, 0x0010973a, 0x0010974b, + 0x0010974b, 0x0010974b, 0x0010974b, 0x0010974b, + 0x0010974b, 0x0010974b, 0x0010974b, 0x00109746, + 0x0010974b, 0x0010973e, 0x05b5ff07, 0x8d3c0500, 0x0500003d, 0x59300229, 0x90000583, 0x05020031, - 0x05f9fa22, 0x0502002f, 0x0501f037, 0x8d3c051a, + 0x05f9f9f0, 0x0502002f, 0x0501f037, 0x8d3c051a, 0x0502002c, 0x8d3c0500, 0x0502002a, 0x8d3c0518, - 0x05020032, 0x8d3c0506, 0x0500002f, 0x050dfd9a, + 0x05020032, 0x8d3c0506, 0x0500002f, 0x050dfe42, 0x05000024, 0x0501f02c, 0x8d3c0500, 0x05000003, - 0x05f9fa12, 0x0502001f, 0x8d3c0518, 0x05020027, + 0x05f9f9e0, 0x0502001f, 0x8d3c0518, 0x05020027, 0x8d3c0506, 0x05000024, 0x59340200, 0x8c00050e, 0x05020018, 0x0501f020, 0x8d3c051a, 0x05020015, 0x8d3c0500, 0x05020013, 0x8d3c0518, 0x05000003, @@ -9402,34 +9718,35 @@ static const uint32_t isp_2500_risc_code[] = { 0x80000580, 0x0501f009, 0x833c0500, 0x00001800, 0x05fc07fc, 0x8d3c0516, 0x05fe07fa, 0x8d3c0500, 0x05fe07f8, 0x90000541, 0x5c026800, 0x1c01f000, - 0x59a8009d, 0x800001c0, 0x05000049, 0x4d2c0000, + 0x59a800a0, 0x800001c0, 0x05000049, 0x4d2c0000, 0x4d300000, 0x4c5c0000, 0x4c600000, 0x4c640000, 0x40025800, 0x4000c000, 0x4000c800, 0x42026000, - 0x00111a40, 0x592c040a, 0x81440580, 0x05020031, + 0x001159e4, 0x592c040a, 0x81440580, 0x05020031, 0x83240580, 0xffffffff, 0x05000004, 0x592c0005, 0x81240580, 0x0502002b, 0x592c0208, 0xb0000595, 0x05000005, 0x8d3c0518, 0x05000026, 0x8d3c0516, 0x05020024, 0x40640000, 0x812c0580, 0x05020014, 0x59300203, 0x90000580, 0x0500000d, 0x59300009, - 0x800001c0, 0x0500000a, 0x05f9fa8d, 0x4df00000, - 0x05f9f98e, 0x05f5ff57, 0x05020002, 0x64026203, - 0x5c03e000, 0x05f80a77, 0x497a6009, 0x592cc800, + 0x800001c0, 0x0500000a, 0x05f9fa5b, 0x4df00000, + 0x05f9f95b, 0x05f5ff20, 0x05020002, 0x64026203, + 0x5c03e000, 0x05f80a45, 0x497a6009, 0x592cc800, 0x4064c000, 0x4064b800, 0x0501f003, 0x592cb800, 0x485cc000, 0x497a5800, 0x592c0208, 0x82000580, - 0x00000155, 0x05000003, 0x05b9fef8, 0x0501f003, - 0x49425a0a, 0x0001fb82, 0x405e5800, 0x0501f003, + 0x00000155, 0x05000003, 0x05b9fa3f, 0x0501f003, + 0x49425a0a, 0x0001fba8, 0x405e5800, 0x0501f003, 0x412cc000, 0x592e5800, 0x812e59c0, 0x05fe07ca, - 0x4867509d, 0x4863509e, 0x5c00c800, 0x5c00c000, + 0x486750a0, 0x486350a1, 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x5c026000, 0x5c025800, 0x1c01f000, 0x4943c857, 0x4d440000, 0x4d340000, 0x4c580000, - 0x4d240000, 0x42024800, 0xffffffff, 0x61c0b00f, - 0x417a8800, 0x0001fb00, 0x05020002, 0x05fdffa9, - 0x81468800, 0x8058b040, 0x05fe07fb, 0x83440480, - 0x00000800, 0x05021006, 0x8d3c0502, 0x05000004, - 0x61c2880f, 0x6040b000, 0x05fdf7f3, 0x5c024800, + 0x4d240000, 0x42024800, 0xffffffff, 0x59a8b0ac, + 0x417a8800, 0x0001fb08, 0x05020002, 0x05fdffa9, + 0x81468800, 0x83440580, 0x000007f0, 0x05020002, + 0x60028810, 0x8058b040, 0x05fe07f7, 0x59a800ad, + 0x81440480, 0x05021006, 0x8d3c0502, 0x05000004, + 0x61c2880f, 0x6040b000, 0x05fdf7ef, 0x5c024800, 0x5c00b000, 0x5c026800, 0x5c028800, 0x1c01f000, - 0x4d300000, 0x59a8109d, 0x800811c0, 0x05000022, - 0x42026000, 0x00111a40, 0x59300203, 0x90000580, + 0x4d300000, 0x59a810a0, 0x800811c0, 0x05000022, + 0x42026000, 0x001159e4, 0x59300203, 0x90000580, 0x0502001d, 0x58080806, 0x58080005, 0x4802601d, 0x4806600a, 0x480a6009, 0x64166407, 0x64066203, 0x4a026403, 0x00000092, 0x41780800, 0x58080208, @@ -9437,927 +9754,947 @@ static const uint32_t isp_2500_risc_code[] = { 0x42000800, 0x80000040, 0x497a6416, 0x5808040b, 0x82000500, 0x0000f000, 0x82000580, 0x00003000, 0x05020004, 0x4a026416, 0x00000100, 0x84040d52, - 0x0005feaf, 0x5c026000, 0x1c01f000, 0x4803c856, - 0x05fdfb72, 0x0501f87a, 0x90d00482, 0x4a000000, - 0x50001ffc, 0x4803c856, 0x05fdfb6c, 0x0501f874, - 0x05fdf553, 0x4803c856, 0x4c580000, 0x4c500000, - 0x4c540000, 0x4d2c0000, 0x05fdfb56, 0x59325809, + 0x0005fee6, 0x5c026000, 0x1c01f000, 0x4803c856, + 0x05fdfb56, 0x0501f87a, 0x90d00482, 0x4a000000, + 0x50001ffc, 0x4803c856, 0x05fdfb50, 0x0501f874, + 0x05fdf549, 0x4803c856, 0x4c580000, 0x4c500000, + 0x4c540000, 0x4d2c0000, 0x05fdfb3a, 0x59325809, 0x4a01a006, 0x7f000000, 0x0501f869, 0x4a01a407, 0x00000101, 0x5930021b, 0x4801a207, 0x59a80002, 0x4801a008, 0x59a80003, 0x4801a009, 0x4a01a20a, 0x00000228, 0x4cd00000, 0x90d1a40b, 0x4a01a400, 0x00000101, 0x6411a200, 0x812e59c0, 0x05020003, - 0x59a800ce, 0x0501f002, 0x592c000f, 0x4801a001, + 0x59a800d3, 0x0501f002, 0x592c000f, 0x4801a001, 0x90d1a402, 0x4a01a400, 0x00000102, 0x6411a200, - 0x4979a401, 0x812e59c0, 0x05020003, 0x59a802cc, + 0x4979a401, 0x812e59c0, 0x05020003, 0x59a802d1, 0x0501f002, 0x592c020b, 0x4801a201, 0x90d1a402, 0x4a01a400, 0x00000103, 0x4a01a200, 0x00000200, - 0x6000b001, 0x4200a000, 0x001105f2, 0x90d0ac01, + 0x6000b001, 0x4200a000, 0x00114596, 0x90d0ac01, 0x50500000, 0x4400a800, 0x8050a000, 0x8054a800, 0x8058b040, 0x05fe07fb, 0x5c01a000, 0x60280801, 0x600011b8, 0x5c025800, 0x5c00a800, 0x5c00a000, - 0x5c00b000, 0x05fdf640, 0x4803c856, 0x4c580000, - 0x4c500000, 0x4c540000, 0x4d2c0000, 0x05fdfb23, + 0x5c00b000, 0x05fdf63c, 0x4803c856, 0x4c580000, + 0x4c500000, 0x4c540000, 0x4d2c0000, 0x05fdfb07, 0x90d00482, 0x4a000000, 0x50001ffc, 0x59325809, 0x4a01a006, 0x02000000, 0x05fdf7bc, 0x4803c856, - 0x4c580000, 0x4c500000, 0x4d2c0000, 0x05fdfb09, + 0x4c580000, 0x4c500000, 0x4d2c0000, 0x05fdfaed, 0x90d00482, 0x4a000000, 0x50001ffc, 0x59325809, 0x4a01a006, 0x7f000000, 0x0501f819, 0x4a01a407, 0x00000102, 0x5930021b, 0x4801a207, 0x59a80002, 0x4801a008, 0x59a80003, 0x4801a009, 0x6451a20a, 0x60140800, 0x600011b8, 0x5c025800, 0x5c00a000, - 0x5c00b000, 0x05fdf618, 0x4803c856, 0x4c580000, - 0x4c500000, 0x4d2c0000, 0x05fdfafc, 0x59325809, + 0x5c00b000, 0x05fdf614, 0x4803c856, 0x4c580000, + 0x4c500000, 0x4d2c0000, 0x05fdfae0, 0x59325809, 0x4a01a006, 0x02000000, 0x05fdf7e8, 0x58d00001, 0x82000500, 0xff000000, 0x800001c0, 0x05020004, 0x82000540, 0x00fffff0, 0x4801a001, 0x1c01f000, 0x4d900000, 0x4dd00000, 0x4da40000, 0x4d140000, 0x4cd80000, 0x4d180000, 0x4803c856, 0x417a3000, - 0x05f9fed8, 0x59900805, 0x800409c0, 0x05000012, - 0x91947c09, 0x83180400, 0x00107661, 0x50000000, + 0x05f9fea2, 0x59900805, 0x800409c0, 0x05000012, + 0x91947c09, 0x83180400, 0x00107a7b, 0x50000000, 0x803c7c00, 0x583c0003, 0x811808ca, 0x82040c00, 0x00006139, 0x50040800, 0x80040580, 0x05000006, - 0x42000000, 0x0010e4b8, 0x051dfc4e, 0x90000541, + 0x42000000, 0x0011245c, 0x051dfed5, 0x90000541, 0x0501f004, 0x811a3000, 0x91180585, 0x05fe07e9, 0x5c023000, 0x5c01b000, 0x5c022800, 0x5c034800, 0x5c03a000, 0x5c032000, 0x1c01f000, 0x4d900000, 0x4dd00000, 0x4da40000, 0x4d140000, 0x4cd80000, 0x4d180000, 0x4803c856, 0x598c080b, 0x800409c0, - 0x05000002, 0x05f1fc0e, 0x417a3000, 0x05f9fead, + 0x05000002, 0x05f1fb7e, 0x417a3000, 0x05f9fe77, 0x59900805, 0x800409c0, 0x0500000f, 0x91947c09, - 0x83180400, 0x00107661, 0x50000000, 0x803c7c00, + 0x83180400, 0x00107a7b, 0x50000000, 0x803c7c00, 0x811808ca, 0x82040c00, 0x00006139, 0x50040800, 0x48047803, 0x4a007801, 0x000001f4, 0x64287800, 0x64107802, 0x811a3000, 0x91180585, 0x05fe07ec, 0x5c023000, 0x5c01b000, 0x5c022800, 0x5c034800, 0x5c03a000, 0x5c032000, 0x1c01f000, 0x41781000, - 0x42026000, 0x00111b00, 0x59a8183b, 0x480a6402, + 0x42026000, 0x00115aa4, 0x59a8183d, 0x480a6402, 0x4a026202, 0x0000ffff, 0x80081000, 0x800c1840, 0x05000003, 0x91326430, 0x05fdf7f9, 0x1c01f000, - 0x5c036000, 0x4db00000, 0x49b3c857, 0x4933c857, - 0x813261c0, 0x0500002d, 0x59300203, 0x90000580, - 0x0500002a, 0x59300407, 0x4803c857, 0x90000d84, - 0x0500000c, 0x90000d81, 0x0500000a, 0x90000d83, - 0x05000004, 0x90000d86, 0x05020016, 0x0519ff00, - 0x5930001e, 0x800001c0, 0x05120a1c, 0x0501f011, - 0x5930000a, 0x82000580, 0x00110210, 0x0500000d, - 0x5930082a, 0x4807c857, 0x4d300000, 0x40066000, - 0x0511fab7, 0x5c026000, 0x05020006, 0x5804001e, - 0x4803c857, 0x81300580, 0x05020002, 0x4978081e, - 0x641e6407, 0x497a6009, 0x4a026004, 0x00004000, - 0x59a8005c, 0xb0000c91, 0x05001002, 0x80000102, - 0x48026006, 0x497a6205, 0x1c01f000, 0x91640490, - 0x05021007, 0x42000000, 0x0010e442, 0x051dfbd5, - 0x4967c857, 0x80026580, 0x1c01f000, 0x8166c9c0, - 0x05000018, 0x41626000, 0x41580000, 0x59300a03, - 0x90040d80, 0x05000007, 0x91326430, 0x81300c80, - 0x05fc17fb, 0x42026000, 0x00111b00, 0x05fdf7f8, + 0x83300480, 0x00115aa4, 0x0500100e, 0x05d9fccf, + 0x05b40d4d, 0x457a6000, 0x4a026202, 0x0000ffff, + 0x05011000, 0x91300403, 0x4803c840, 0x64b3c842, + 0x59a8023e, 0x80000000, 0x4803523e, 0x1c01f000, + 0x4933c857, 0x83300580, 0x001159b4, 0x0500000b, + 0x83300580, 0x001159e4, 0x05000008, 0x83300580, + 0x00115a14, 0x05000005, 0x83300580, 0x00115a74, + 0x05000002, 0x05b5fd34, 0x42000000, 0x001123ea, + 0x051df676, 0x5c036000, 0x4db00000, 0x49b3c857, + 0x4933c857, 0x813261c0, 0x0500002d, 0x59300203, + 0x90000580, 0x0500002a, 0x59300407, 0x4803c857, + 0x90000d84, 0x0500000c, 0x90000d81, 0x0500000a, + 0x90000d83, 0x05000004, 0x90000d86, 0x05020016, + 0x051df935, 0x5930001e, 0x800001c0, 0x05120aae, + 0x0501f011, 0x5930000a, 0x82000580, 0x001141b4, + 0x0500000d, 0x5930082a, 0x4807c857, 0x4d300000, + 0x40066000, 0x0511fb48, 0x5c026000, 0x05020006, + 0x5804001e, 0x4803c857, 0x81300580, 0x05020002, + 0x4978081e, 0x641e6407, 0x497a6009, 0x4a026004, + 0x00004000, 0x59a8005f, 0xb0000c91, 0x05001002, + 0x80000102, 0x48026006, 0x497a6205, 0x1c01f000, + 0x91640490, 0x05021007, 0x42000000, 0x001123e4, + 0x051dfe3b, 0x4967c857, 0x80026580, 0x1c01f000, + 0x8166c9c0, 0x05000016, 0x41626000, 0x41580000, + 0x59300a03, 0x90040d80, 0x05000006, 0x91326430, + 0x81300c80, 0x05fc17fb, 0x40be6000, 0x05fdf7f9, 0x4933c857, 0x8166c840, 0x91300c30, 0x80040480, 0x05021005, 0x4006c000, 0x64226203, 0x813261c0, - 0x1c01f000, 0x4202c000, 0x00111b00, 0x05fdf7fb, - 0x42000000, 0x0010e442, 0x051dfbb6, 0x4933c856, - 0x417a6000, 0x05fdf7f6, 0x4933c857, 0x91380593, - 0x05020008, 0x59300004, 0x8c00053e, 0x05000004, - 0x05f9f8e3, 0x05f9f838, 0x05f9f8d2, 0x1c01f000, - 0x4933c857, 0x598800bc, 0x80000000, 0x480310bc, - 0x1c01f000, 0x4933c857, 0x59300203, 0x90003491, - 0x05ba199e, 0x4d2c0000, 0x0c01f803, 0x5c025800, - 0x1c01f000, 0x00109452, 0x00109966, 0x00109af1, - 0x00109452, 0x00109b40, 0x001095ab, 0x00109452, - 0x00109452, 0x001098f9, 0x00109452, 0x00109452, - 0x00109452, 0x00109452, 0x00109452, 0x0010ae4b, - 0x00109452, 0x00109452, 0x05b9f988, 0x4933c857, - 0x59300203, 0x90003491, 0x05ba1984, 0x0c01f001, - 0x00109469, 0x0010a653, 0x00109469, 0x00109469, - 0x00109469, 0x00109469, 0x00109469, 0x00109469, - 0x0010a5f3, 0x0010a672, 0x0010a6f3, 0x0010a672, - 0x0010a6f3, 0x00109469, 0x0010ae71, 0x00109469, - 0x00109469, 0x05b9f971, 0x05b9f970, 0x4933c857, - 0x4d300000, 0x4d1c0000, 0x59300203, 0x9000058f, - 0x05ba096a, 0x91380593, 0x05020025, 0x59300c03, - 0xb0040586, 0x05000015, 0xb0040584, 0x0502000a, - 0x4d300000, 0x5932602a, 0x050dfce8, 0x5c026000, - 0x0500001c, 0x591c0416, 0x8400054a, 0x48023c16, - 0x0501f010, 0x59300019, 0x82000500, 0xff000000, - 0x82000580, 0xc2000000, 0x05020012, 0x5930001e, - 0x05fdfd56, 0x0501f00f, 0x59300416, 0x84000504, - 0x48026416, 0x5930141d, 0x050dfccb, 0x05000009, - 0x411e6000, 0x5930001c, 0x80000540, 0x05000005, - 0x497a601c, 0x0801f800, 0x0501f002, 0x05f5ffd2, - 0x5c023800, 0x5c026000, 0x0005f7dc, 0x4933c857, - 0x4d2c0000, 0x59325809, 0x59300203, 0x90003491, - 0x05ba193a, 0x0c01f803, 0x5c025800, 0x1c01f000, - 0x001094b5, 0x001094b5, 0x001094b5, 0x001094ca, - 0x00109518, 0x001094b5, 0x001094b5, 0x001094b5, - 0x001094b6, 0x001094b5, 0x001094b5, 0x001094b5, - 0x001094b5, 0x001094b5, 0x001094b5, 0x001094b5, - 0x00109502, 0x05b9f925, 0x4933c857, 0xb1380580, - 0x05ba0922, 0x4a026008, 0x00082000, 0x640e6203, - 0x493a6403, 0x64065c0c, 0x592c0011, 0x48026013, - 0x497a6015, 0x592c020c, 0x800000c2, 0x800010c4, - 0x80081400, 0x480a6006, 0x0001f98d, 0x42000800, - 0x80000060, 0x0005f69d, 0x4933c857, 0xb1380490, - 0x05ba190e, 0xb1380489, 0x05b8190c, 0x0c01f001, - 0x001094d8, 0x001094e5, 0x001094d7, 0x001094d7, - 0x001094d7, 0x001094d7, 0x001094eb, 0x05b9f903, - 0x050dfbc6, 0x05000003, 0x64426203, 0x0501f002, - 0x64126203, 0x640a5c0c, 0x592c020b, 0x48025c0d, - 0x592c020d, 0x48025a0b, 0x592c0010, 0x48025811, - 0x1c01f000, 0x05f5ff67, 0x0509ffe3, 0x05000003, - 0x641a5a0a, 0x0001fb82, 0x0005f7dc, 0x05f5ff61, - 0x4d3c0000, 0x417a7800, 0x05c5fe3e, 0x5c027800, - 0x60503000, 0x41782800, 0x60082000, 0x4d400000, - 0x4d440000, 0x59368c03, 0x60a68000, 0x0511f91c, - 0x5c028800, 0x5c028000, 0x42000000, 0x0010e454, - 0x051dfae0, 0x0509ffcc, 0x000407dc, 0x64a65a0a, - 0x0001fb82, 0x0005f7dc, 0x4933c857, 0xb13805a1, - 0x05000006, 0xb13805a0, 0x05020007, 0x59cc0002, - 0x8c000526, 0x05000005, 0xb1380589, 0x05000004, - 0x05b9f8ce, 0x05fdff27, 0x1c01f000, 0x59a8005e, - 0x48026205, 0x64126203, 0x5930001c, 0x80000540, - 0x05000003, 0x497a601c, 0x0801f800, 0x1c01f000, - 0x4933c857, 0xb1380588, 0x05000003, 0xb1380593, - 0x05ba08be, 0x592c020a, 0x90000587, 0x05000008, - 0x59300013, 0x80000540, 0x05000005, 0x592c0810, - 0x80040480, 0x48025810, 0x64565a0a, 0x592c020a, - 0x80000540, 0x05020002, 0x64025a0a, 0x0001fb82, - 0x0005f7dc, 0x4933c857, 0x4d2c0000, 0x4c500000, - 0x4c540000, 0x4c580000, 0x4c5c0000, 0x4c600000, - 0x4c640000, 0x4c100000, 0x05b9fc4c, 0x05b808a3, - 0x497a5a0a, 0x59a800d0, 0x82000500, 0x0000f000, - 0x48025c0b, 0x59a808b6, 0x90040c18, 0x48065a0b, - 0x412cb800, 0x4d2c0000, 0x41cca000, 0x6004c000, - 0x60b0c800, 0x900404ad, 0x05021004, 0x912cac0d, - 0x0509fa72, 0x0501f023, 0x40043000, 0x60b00800, - 0x912cac0d, 0x0509fa6d, 0x901834ac, 0x4c180000, - 0x05b9fc32, 0x5c003000, 0x05000012, 0x8060c000, - 0x4a025808, 0x00000110, 0x492cb801, 0x90180cbd, - 0x05021005, 0x40180800, 0x912cac09, 0x0509fa5f, - 0x0501f010, 0x9064cc3c, 0x901834bc, 0x60f00800, - 0x412cb800, 0x912cac09, 0x0509fa58, 0x05fdf7ec, - 0x5c025800, 0x592c020a, 0x8400055e, 0x48025a0a, - 0x592c040b, 0x80640540, 0x48025c0b, 0x0501f002, - 0x5c025800, 0x5c002000, 0x813669c0, 0x05000003, - 0x59343403, 0x0501f002, 0x61fc31ff, 0x4932580c, - 0x481a5c0a, 0xb0100594, 0x0502001a, 0x4a02580c, - 0xffffffff, 0x491e5817, 0x41781000, 0x831c0580, - 0xffffffff, 0x0500000e, 0x591c0009, 0x80000d40, - 0x0500000b, 0x58040208, 0x82000500, 0x000000ff, - 0x90000592, 0x05000005, 0xb00005a0, 0x05000003, - 0x90000588, 0x05020002, 0x58041009, 0x480a5809, - 0x592c040b, 0x81200540, 0x48025c0b, 0x0501f002, - 0x49225c09, 0x846001c0, 0x80100540, 0x48025808, - 0x051dfb9c, 0x05020014, 0x592c0001, 0x497a5801, - 0x4c000000, 0x42000000, 0x0010de60, 0x50000000, - 0x48025802, 0x0001fb82, 0x5c025800, 0x812e59c0, - 0x05fe07f4, 0x5c00c800, 0x5c00c000, 0x5c00b800, - 0x5c00b000, 0x5c00a800, 0x5c00a000, 0x5c025800, - 0x1c01f000, 0x0519ff30, 0x05fdf7f7, 0x4933c857, - 0x91380d95, 0x05020008, 0x050dfaf0, 0x05000005, - 0x5930082a, 0x58040416, 0x8400051a, 0x48000c16, - 0x0005f7dc, 0x91380d96, 0x05ba0824, 0x0005f7dc, - 0x4933c857, 0x4d2c0000, 0x4c500000, 0x4c540000, - 0x4c580000, 0x59325809, 0x91cca406, 0x59cc1806, - 0x820c0580, 0x01000000, 0x05020003, 0x6008b000, - 0x0501f00a, 0x6020b000, 0x912cac09, 0x051dfae0, - 0x8c0c0500, 0x05000007, 0x6020b000, 0x592e5801, - 0x812e59c0, 0x05b8080d, 0x912cac09, 0x051dfad8, - 0x0501f812, 0x5c00b000, 0x5c00a800, 0x5c00a000, - 0x5c025800, 0x1c01f000, 0x4933c857, 0x4c500000, - 0x4c540000, 0x4c580000, 0x91cca406, 0x5930a809, - 0x9054ac09, 0x601cb000, 0x051dfac9, 0x5c00b000, - 0x5c00a800, 0x5c00a000, 0x4933c857, 0x0509fee6, - 0x000407dc, 0x4d2c0000, 0x050dfd67, 0x05020008, - 0x41780800, 0x4d400000, 0x60028000, 0x050dfb94, - 0x5c028000, 0x5c025800, 0x0005f7dc, 0x5931d82d, - 0x58ef400b, 0x58ee580d, 0x4a025a08, 0x00000103, - 0x58ec0009, 0x0801f800, 0x5c025800, 0x0005f7dc, - 0x4933c857, 0x59cc1806, 0x820c0580, 0x02000000, - 0x0502001f, 0x4a026802, 0x00fffffd, 0x5934000a, - 0x84000504, 0x4802680a, 0x60000000, 0x4c0c0000, - 0x0501f824, 0x5c001800, 0x000407dc, 0x59300c29, - 0x900405a1, 0x05020006, 0x05c9f80d, 0x61fc19ff, - 0x60102000, 0x60483000, 0x05d9fa3a, 0x59300809, - 0x800409c0, 0x000407dc, 0x4a000a08, 0x00000103, - 0x480c0809, 0x5931d82d, 0x58ef400b, 0x58ee580d, - 0x58ec0009, 0x0801f800, 0x0005f7dc, 0x42000000, - 0x0010e45d, 0x051df9bf, 0x60180000, 0x4c0c0000, - 0x0501f808, 0x5c001800, 0x05fc07ed, 0x4c0c0000, - 0x0501f823, 0x5c001800, 0x05fe07e9, 0x1c01f000, - 0x4933c857, 0x4d400000, 0x4d240000, 0x4d200000, - 0x5932481d, 0x40028000, 0x59300429, 0xb0000d91, - 0x05000003, 0x90000da1, 0x05020010, 0x05c5ffe4, - 0x60001802, 0x051dfae0, 0x05020004, 0x59300429, - 0x900005a1, 0x05c40d3a, 0x59300429, 0xb0000591, - 0x05020002, 0x41781800, 0x60040000, 0x05e5f811, - 0x80000580, 0x0501f002, 0x90000541, 0x5c024000, - 0x5c024800, 0x5c028000, 0x1c01f000, 0x4933c857, - 0x4d2c0000, 0x59325809, 0x812e59c0, 0x0502000b, - 0x497a6006, 0x497a6205, 0x050dfa50, 0x05000002, - 0x497a6417, 0x4d380000, 0x608a7000, 0x0501fb0f, - 0x5c027000, 0x80000580, 0x5c025800, 0x1c01f000, - 0x4933c857, 0x4d2c0000, 0x4c500000, 0x4c540000, - 0x4c580000, 0x59325809, 0x592e5801, 0x912cac09, - 0x91cca406, 0x59a808d0, 0x82040d00, 0x000003ff, - 0x9004148f, 0x05001011, 0x603cb000, 0x051dfa40, - 0x592e5801, 0x912cac09, 0x90080c8f, 0x05001008, - 0x603cb000, 0x051dfa3a, 0x592e5801, 0x912cac09, - 0x9004148f, 0x05001005, 0x603c1000, 0x4008b000, - 0x051dfa33, 0x0501f003, 0x4004b000, 0x051dfa30, - 0x5931d82d, 0x58ef400b, 0x58ee580d, 0x4a025a08, - 0x00000103, 0x592e5801, 0x58ec0009, 0x0801f800, - 0x0005ffdc, 0x5c00b000, 0x5c00a800, 0x5c00a000, - 0x5c025800, 0x1c01f000, 0x4933c857, 0x4d2c0000, - 0x4c500000, 0x4c540000, 0x4c580000, 0x59cc0006, - 0x82000d80, 0x01000000, 0x05000021, 0x59cc0007, - 0x9000b1c0, 0x8258b500, 0x000000ff, 0x8058b104, - 0x9058b402, 0x90580c87, 0x05001002, 0x6018b000, - 0x91cca406, 0x59301009, 0x800811c0, 0x05b40f3f, - 0x9008ac09, 0x051dfa0a, 0x82000d00, 0xff000000, - 0x800409c0, 0x05000014, 0x8200b500, 0x000000ff, - 0x05000011, 0x8058b104, 0x90580c8e, 0x05001002, - 0x6034b000, 0x58081001, 0x800811c0, 0x05b40f2f, - 0x9008ac09, 0x051df9fa, 0x0501f007, 0x59301009, - 0x800811c0, 0x05b40f29, 0x48001009, 0x59cc0007, - 0x4800100a, 0x05fdff2d, 0x5c00b000, 0x5c00a800, - 0x5c00a000, 0x5c025800, 0x1c01f000, 0x4933c857, + 0x1c01f000, 0x40bec000, 0x05fdf7fc, 0x42000000, + 0x001123e4, 0x051dfe1e, 0x4933c856, 0x417a6000, + 0x05fdf7f7, 0x59a80006, 0x8c000510, 0x05fc07d9, + 0x59a86a3e, 0x803469c0, 0x05000015, 0x59aa603f, + 0x59300a03, 0x90040d80, 0x0502000b, 0x64226203, + 0x80346840, 0x4837523e, 0x91300c30, 0x800404af, + 0x05001003, 0x83780d40, 0x00115aa4, 0x4807503f, + 0x1c01f000, 0x91326430, 0x81300caf, 0x05fc17f1, + 0x42026000, 0x00115aa4, 0x05fdf7ee, 0x42000000, + 0x001123e3, 0x051dfe01, 0x80026580, 0x1c01f000, + 0x4933c857, 0x91380593, 0x05020008, 0x59300004, + 0x8c00053e, 0x05000004, 0x05f9f86f, 0x05f5ffc4, + 0x05f9f85e, 0x1c01f000, 0x4933c857, 0x598800bf, + 0x80000000, 0x480310bf, 0x1c01f000, 0x4933c857, + 0x59300203, 0x90003491, 0x05b61ca7, 0x4d2c0000, + 0x0c01f803, 0x5c025800, 0x1c01f000, 0x00109984, + 0x00109ea0, 0x0010a02b, 0x00109984, 0x0010a07a, + 0x00109ae1, 0x00109984, 0x00109984, 0x00109e33, + 0x00109984, 0x00109984, 0x00109984, 0x00109984, + 0x00109984, 0x0010b3e4, 0x00109984, 0x00109984, + 0x05b5fc91, 0x4933c857, 0x59300203, 0x90003491, + 0x05b61c8d, 0x0c01f001, 0x0010999b, 0x0010abc5, + 0x0010999b, 0x0010999b, 0x0010999b, 0x0010999b, + 0x0010999b, 0x0010999b, 0x0010ab65, 0x0010abe4, + 0x0010ac65, 0x0010abe4, 0x0010ac65, 0x0010999b, + 0x0010b40a, 0x0010999b, 0x0010999b, 0x05b5fc7a, + 0x05b5fc79, 0x4933c857, 0x4d300000, 0x4d1c0000, + 0x59300203, 0x9000058f, 0x05b60c73, 0x91380593, + 0x05020025, 0x59300c03, 0xb0040586, 0x05000015, + 0xb0040584, 0x0502000a, 0x4d300000, 0x5932602a, + 0x050dfd52, 0x5c026000, 0x0500001c, 0x591c0416, + 0x8400054a, 0x48023c16, 0x0501f010, 0x59300019, + 0x82000500, 0xff000000, 0x82000580, 0xc2000000, + 0x05020012, 0x5930001e, 0x05fdfd14, 0x0501f00f, + 0x59300416, 0x84000504, 0x48026416, 0x5930141d, + 0x050dfd35, 0x05000009, 0x411e6000, 0x5930001c, + 0x80000540, 0x05000005, 0x497a601c, 0x0801f800, + 0x0501f002, 0x05f5ff5e, 0x5c023800, 0x5c026000, + 0x0009f010, 0x4933c857, 0x4d2c0000, 0x59325809, + 0x59300203, 0x90003491, 0x05b61c43, 0x0c01f803, + 0x5c025800, 0x1c01f000, 0x001099e7, 0x001099e7, + 0x001099e7, 0x001099fc, 0x00109a4a, 0x001099e7, + 0x001099e7, 0x001099e7, 0x001099e8, 0x001099e7, + 0x001099e7, 0x001099e7, 0x001099e7, 0x001099e7, + 0x001099e7, 0x001099e7, 0x00109a34, 0x05b5fc2e, + 0x4933c857, 0xb1380580, 0x05b60c2b, 0x4a026008, + 0x00082000, 0x640e6203, 0x493a6403, 0x64065c0c, + 0x592c0011, 0x48026013, 0x497a6015, 0x592c020c, + 0x800000c2, 0x800010c4, 0x80081400, 0x480a6006, + 0x0001f995, 0x42000800, 0x80000060, 0x0005f6d4, + 0x4933c857, 0xb1380490, 0x05b61c17, 0xb1380489, + 0x05b41c15, 0x0c01f001, 0x00109a0a, 0x00109a17, + 0x00109a09, 0x00109a09, 0x00109a09, 0x00109a09, + 0x00109a1d, 0x05b5fc0c, 0x050dfc2c, 0x05000003, + 0x64426203, 0x0501f002, 0x64126203, 0x640a5c0c, + 0x592c020b, 0x48025c0d, 0x592c020d, 0x48025a0b, + 0x592c0010, 0x48025811, 0x1c01f000, 0x05f5fef3, + 0x050df83a, 0x05000003, 0x641a5a0a, 0x0001fba8, + 0x0009f010, 0x05f5feed, 0x4d3c0000, 0x417a7800, + 0x05c5f9a3, 0x5c027800, 0x60503000, 0x41782800, + 0x60082000, 0x4d400000, 0x4d440000, 0x59368c03, + 0x60a68000, 0x0511f991, 0x5c028800, 0x5c028000, + 0x42000000, 0x001123f8, 0x051dfd29, 0x050df823, + 0x00080010, 0x64a65a0a, 0x0001fba8, 0x0009f010, + 0x4933c857, 0xb13805a1, 0x05000006, 0xb13805a0, + 0x05020007, 0x59cc0002, 0x8c000526, 0x05000005, + 0xb1380589, 0x05000004, 0x05b5fbd7, 0x05fdff27, + 0x1c01f000, 0x59a80061, 0x48026205, 0x64126203, + 0x5930001c, 0x80000540, 0x05000003, 0x497a601c, + 0x0801f800, 0x1c01f000, 0x4933c857, 0xb1380588, + 0x05000003, 0xb1380593, 0x05b60bc7, 0x592c020a, + 0x90000587, 0x05000008, 0x59300013, 0x80000540, + 0x05000005, 0x592c0810, 0x80040480, 0x48025810, + 0x64565a0a, 0x592c020a, 0x80000540, 0x05020002, + 0x64025a0a, 0x0001fba8, 0x0009f010, 0x4933c857, 0x4d2c0000, 0x4c500000, 0x4c540000, 0x4c580000, - 0x6008b000, 0x59cc0806, 0x82040580, 0x01000000, - 0x05000004, 0x8204b500, 0x0000ffff, 0x8058b104, - 0x91cca406, 0x59300009, 0x9000ac09, 0x051df9dc, - 0x05fdff16, 0x5c00b000, 0x5c00a800, 0x5c00a000, - 0x5c025800, 0x1c01f000, 0x4933c857, 0x4937c857, - 0x4d1c0000, 0x05edfedd, 0x05020020, 0x59cc0001, - 0x82000500, 0x00ffffff, 0x59341002, 0x82081500, - 0x00ffffff, 0x80080580, 0x05020018, 0x497a6205, - 0x60d40800, 0x050dfa35, 0x0502000f, 0x591c001e, - 0x800001c0, 0x0500000c, 0x497a381e, 0x591c0416, - 0x8c000502, 0x05b40ef1, 0x84000502, 0x48023c16, - 0x591c1407, 0x90080583, 0x05000005, 0x90080586, - 0x05000005, 0x05fdfcdf, 0x0501f004, 0x0501f805, - 0x0501f002, 0x0501f8c4, 0x5c023800, 0x1c01f000, - 0x4d2c0000, 0x591e5809, 0x4933c857, 0x491fc857, - 0x493bc857, 0x492fc857, 0x91380595, 0x050000b8, - 0x91380596, 0x050200b4, 0x4d300000, 0x411e6000, - 0x59cc0207, 0x4803c857, 0x82000d00, 0x0000ff00, - 0x82040580, 0x00001700, 0x05000004, 0x82040580, - 0x00000300, 0x05020064, 0x050df990, 0x05000006, - 0x591c0403, 0xb0000590, 0x05020003, 0x05fdfcbd, - 0x0501f09d, 0x591c0203, 0x4803c857, 0x9000058d, - 0x05000040, 0x812e59c0, 0x0500009a, 0x591c0202, - 0x4803c857, 0x82000580, 0x0000ffff, 0x05020081, - 0x050df97e, 0x05000004, 0x591c0203, 0x90000d8e, - 0x0502007c, 0x592c020e, 0x4803c857, 0x90000503, - 0x90000582, 0x05020007, 0x592c0813, 0x591c0013, - 0x4803c857, 0x4807c857, 0x80040580, 0x05020071, - 0x591c0416, 0x4803c857, 0x8c000500, 0x0502006d, - 0x42000000, 0x0010e435, 0x051df8a6, 0x41780800, - 0x591c1006, 0x60280000, 0x05f5f854, 0x592c040a, - 0x4803c857, 0x800001c0, 0x0500000a, 0x80080c80, - 0x05001003, 0x05b60e99, 0x80001040, 0x480a5c0a, - 0x800811c0, 0x05020003, 0x0509fa7b, 0x0501f06a, - 0x0509fe60, 0x591c0819, 0x591c001a, 0x4806580c, - 0x4802580d, 0x592e4414, 0x81224110, 0x59300008, - 0x8c000500, 0x05be08f8, 0x497a3809, 0x0001fab8, - 0x0502004c, 0x411e6000, 0x05fdfc7a, 0x0501f05a, - 0x05fdfcab, 0x05000015, 0x591c0006, 0x48026006, - 0x4926601d, 0x4936600a, 0x050df931, 0x640e6407, - 0x492e6009, 0x591c0819, 0x591c101a, 0x48066019, - 0x480a601a, 0x4d380000, 0x591e7403, 0x4d300000, - 0x411e6000, 0x05fdfc67, 0x5c026000, 0x0009f800, - 0x5c027000, 0x0501f044, 0x59a8005e, 0x48023a05, - 0x0501f041, 0x59cc0407, 0x9000058b, 0x05020026, - 0x59340a00, 0x84040d0e, 0x48066a00, 0x592c0a08, - 0x82040d00, 0x000000ff, 0x90040d94, 0x05000002, - 0x640e6229, 0x59300008, 0x8c000500, 0x05be08ca, - 0x4d400000, 0x497a5c0d, 0x600e8000, 0x592c0a0c, - 0x05e1fea7, 0x051df96c, 0x05020006, 0x0001fb82, - 0x59300a29, 0x90040d83, 0x05080e1e, 0x497a6009, - 0x5c028000, 0x4a026403, 0x00000085, 0x64266203, - 0x640a6407, 0x42000800, 0x80004040, 0x050dff08, - 0x0005feab, 0x4203e000, 0xb0800000, 0x6023f800, - 0x0501f019, 0x59cc0207, 0x82000580, 0x00002a00, - 0x05020004, 0x59a8005e, 0x48023a05, 0x0501f012, - 0x812e59c0, 0x05b40e39, 0x0005f9f3, 0x497a6027, - 0x05e9fc64, 0x4a025a08, 0x00000103, 0x591c0008, - 0x8c000500, 0x05be08a0, 0x591c0402, 0x48025c0a, - 0x640e5a0a, 0x497a5c0d, 0x0001fb82, 0x05fdfc21, - 0x05e1fa17, 0x5c026000, 0x0005ffdc, 0x0501f002, - 0x5c026000, 0x5c025800, 0x1c01f000, 0x0501f813, - 0x05fdf7fd, 0x4933c857, 0x91380595, 0x05020004, - 0x59a8005e, 0x48023a05, 0x0501f009, 0x91380596, - 0x05020009, 0x4d300000, 0x411e6000, 0x0519fb04, - 0x0005fe4e, 0x0005ffdc, 0x5c026000, 0x497a381e, - 0x0005ffdc, 0x1c01f000, 0x4c5c0000, 0x591c0416, - 0x84000540, 0x48023c16, 0x59ccb80b, 0x4933c857, - 0x491fc857, 0x492fc857, 0x4803c857, 0x485fc857, - 0x050df8ca, 0x05020007, 0x8c5c053c, 0x05000005, - 0x59a8005e, 0x48023a05, 0x497a381e, 0x0501f068, - 0x4d300000, 0x411e6000, 0x0509f82e, 0x5c026000, - 0x591c0407, 0x90000580, 0x05000061, 0x591c0403, - 0xb0000590, 0x0502000a, 0x4d300000, 0x411e6000, - 0x64066203, 0x42000800, 0x80000043, 0x0005feab, - 0x5c026000, 0x497a381e, 0x0501f055, 0x591c0203, - 0x9000058d, 0x0500001c, 0x812e59c0, 0x05b40de7, - 0x592c020e, 0x4803c857, 0x8c000500, 0x0502001b, - 0x8c000502, 0x05000014, 0x591c0416, 0x8c00051c, - 0x05020007, 0x591c0013, 0x4803c857, 0x800001c0, - 0x0500000d, 0x591c0014, 0x48023818, 0x4a023814, - 0x0fffffff, 0x592c020c, 0x8400051e, 0x48025a0c, - 0x42000000, 0x0010e437, 0x0519ffd2, 0x64063a16, - 0x0501f01a, 0x42000000, 0x0010e438, 0x0519ffcd, - 0x641e3a16, 0x0501f015, 0x59300017, 0x591c0817, - 0x80040580, 0x0502002e, 0x8c5c053a, 0x05fe07f6, - 0x59cc000a, 0x592c1813, 0x4803c857, 0x480fc857, - 0x800c0580, 0x05fc07f0, 0x59cc000a, 0x4803c857, - 0x48023818, 0x48023817, 0x42000000, 0x0010e436, - 0x0519ffb8, 0x64163a16, 0x050df878, 0x0500001a, - 0x591c0416, 0x8c00051a, 0x05000017, 0x4803c857, - 0x8c00051e, 0x05000016, 0x4130b800, 0x05fdfbd4, - 0x0500000f, 0x4926601d, 0x64066203, 0x647a6403, - 0x585c041b, 0x4802641b, 0x585c021b, 0x4802621b, - 0x591e680a, 0x4936600a, 0x050df855, 0x64066407, - 0x42000800, 0x80000040, 0x0005feab, 0x405e6000, - 0x0501f003, 0x5c00b800, 0x0509f70e, 0x5c00b800, - 0x0005f7dc, 0x4933c857, 0x4d1c0000, 0x05edfd6b, - 0x0502003f, 0x59cc0001, 0x59341002, 0x80080580, - 0x82000500, 0x00ffffff, 0x05020037, 0x5930141b, - 0x050df909, 0x05b40d89, 0x591c1407, 0x90080587, - 0x05000031, 0x90080582, 0x0500002f, 0x90080580, - 0x0500002d, 0x591c0202, 0x82000d80, 0x0000ffff, - 0x05000004, 0x59301a1b, 0x800c0580, 0x05020026, - 0x91380595, 0x05000022, 0x4d300000, 0x4d2c0000, - 0x411e6000, 0x59325809, 0x0509fc63, 0x05b40d73, - 0x592c0208, 0x82000500, 0x000000ff, 0x90000594, - 0x05000002, 0x640e6229, 0x497a5c0d, 0x600e8000, - 0x592c0a0c, 0x05e1fdba, 0x051df87f, 0x05020006, - 0x0001fb82, 0x59300a29, 0x90040d83, 0x05080d31, - 0x497a6009, 0x5c025800, 0x4a026403, 0x00000085, - 0x64266203, 0x640a6407, 0x42000800, 0x80004040, - 0x0005feab, 0x5c026000, 0x0501f003, 0x59a8005e, - 0x48023a05, 0x497a381e, 0x0005ffdc, 0x5c023800, - 0x1c01f000, 0x4933c857, 0x4c580000, 0x4d2c0000, - 0x59325809, 0x59342200, 0x82102500, 0xffffdffd, - 0x48126a00, 0x91383595, 0x05000009, 0x0509fc36, - 0x05000047, 0x050dfab8, 0x05020003, 0x6008b000, - 0x050dfa9f, 0x0501fa2a, 0x0501f059, 0x91cc1408, - 0x6008b000, 0x91341c06, 0x0501ffa9, 0x0502000f, - 0x91cc140a, 0x6008b000, 0x91341c08, 0x0501ffa4, - 0x0502000a, 0x05c5face, 0x59342200, 0x59cc1007, - 0x800811c0, 0x05000003, 0x480a6801, 0x84102542, - 0x48126a00, 0x0501f048, 0x4d3c0000, 0x417a7800, - 0x05c5fa7c, 0x5c027800, 0x42000000, 0x0010e454, - 0x0519ff28, 0x59340200, 0x84000558, 0x48026a00, - 0x4d300000, 0x05fdfb4a, 0x05b40d20, 0x4926601d, - 0x4936600a, 0x497a6009, 0x64066407, 0x64066403, - 0x600c3000, 0x0519fcc2, 0x05c5fd55, 0x59240400, - 0x8c00050a, 0x0502000b, 0x41782800, 0x60043000, - 0x4d400000, 0x60a68000, 0x0515fed5, 0x5c028000, - 0x64126407, 0x641e6203, 0x6406642c, 0x0501f005, - 0x64066203, 0x602c0800, 0x05ddfc1b, 0x05f1ff9e, - 0x5c026000, 0x0509fbf4, 0x0500001d, 0x050dfa76, - 0x0502001d, 0x0501f9ea, 0x0501f019, 0x42000000, - 0x0010e457, 0x0519feff, 0x4d3c0000, 0x417a7800, - 0x05c5fa4c, 0x42000000, 0x0010e454, 0x0519fef9, + 0x4c5c0000, 0x4c600000, 0x4c640000, 0x4c100000, + 0x05b5ff51, 0x05b40bac, 0x497a5a0a, 0x59a800d5, + 0x82000500, 0x0000f000, 0x48025c0b, 0x59a808bb, + 0x90040c18, 0x48065a0b, 0x412cb800, 0x4d2c0000, + 0x41cca000, 0x6004c000, 0x60b0c800, 0x900404ad, + 0x05021004, 0x912cac0d, 0x0509fab2, 0x0501f023, + 0x40043000, 0x60b00800, 0x912cac0d, 0x0509faad, + 0x901834ac, 0x4c180000, 0x05b5ff37, 0x5c003000, + 0x05000012, 0x8060c000, 0x4a025808, 0x00000110, + 0x492cb801, 0x90180cbd, 0x05021005, 0x40180800, + 0x912cac09, 0x0509fa9f, 0x0501f010, 0x9064cc3c, + 0x901834bc, 0x60f00800, 0x412cb800, 0x912cac09, + 0x0509fa98, 0x05fdf7ec, 0x5c025800, 0x592c020a, + 0x8400055e, 0x48025a0a, 0x592c040b, 0x80640540, + 0x48025c0b, 0x0501f002, 0x5c025800, 0x5c002000, + 0x813669c0, 0x05000003, 0x59343403, 0x0501f002, + 0x61fc31ff, 0x4932580c, 0x481a5c0a, 0xb0100594, + 0x0502001a, 0x4a02580c, 0xffffffff, 0x491e5817, + 0x41781000, 0x831c0580, 0xffffffff, 0x0500000e, + 0x591c0009, 0x80000d40, 0x0500000b, 0x58040208, + 0x82000500, 0x000000ff, 0x90000592, 0x05000005, + 0xb00005a0, 0x05000003, 0x90000588, 0x05020002, + 0x58041009, 0x480a5809, 0x592c040b, 0x81200540, + 0x48025c0b, 0x0501f002, 0x49225c09, 0x846001c0, + 0x80100540, 0x48025808, 0x051dfde5, 0x05020015, + 0x592c0001, 0x497a5801, 0x4c000000, 0x42000000, + 0x00111dfa, 0x50000000, 0x48025802, 0x0001fba8, + 0x5c025800, 0x812e59c0, 0x05fe07f4, 0x80000580, + 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x5c00b000, + 0x5c00a800, 0x5c00a000, 0x5c025800, 0x1c01f000, + 0x051df95a, 0x05fc07f7, 0x05b5fef4, 0x81780000, + 0x05fdf7f4, 0x4933c857, 0x91380d95, 0x05020008, + 0x050dfb52, 0x05000005, 0x5930082a, 0x58040416, + 0x8400051a, 0x48000c16, 0x0009f010, 0x91380d96, + 0x05b60b29, 0x0009f010, 0x4933c857, 0x4d2c0000, + 0x4c500000, 0x4c540000, 0x4c580000, 0x59325809, + 0x91cca406, 0x59cc1806, 0x820c0580, 0x01000000, + 0x05020003, 0x6008b000, 0x0501f00a, 0x6020b000, + 0x912cac09, 0x051dfd25, 0x8c0c0500, 0x05000007, + 0x6020b000, 0x592e5801, 0x812e59c0, 0x05b40b12, + 0x912cac09, 0x051dfd1d, 0x0501f812, 0x5c00b000, + 0x5c00a800, 0x5c00a000, 0x5c025800, 0x1c01f000, + 0x4933c857, 0x4c500000, 0x4c540000, 0x4c580000, + 0x91cca406, 0x5930a809, 0x9054ac09, 0x601cb000, + 0x051dfd0e, 0x5c00b000, 0x5c00a800, 0x5c00a000, + 0x4933c857, 0x0509ff39, 0x00080010, 0x4d2c0000, + 0x050dfdd7, 0x05020008, 0x41780800, 0x4d400000, + 0x60028000, 0x050dfbfd, 0x5c028000, 0x5c025800, + 0x0009f010, 0x5931d82d, 0x58ef400b, 0x58ee580d, + 0x4a025a08, 0x00000103, 0x58ec0009, 0x0801f800, + 0x5c025800, 0x0009f010, 0x4933c857, 0x59cc1806, + 0x820c0580, 0x02000000, 0x0502001f, 0x4a026802, + 0x00fffffd, 0x5934000a, 0x84000504, 0x4802680a, + 0x60000000, 0x4c0c0000, 0x0501f824, 0x5c001800, + 0x00080010, 0x59300c29, 0x900405a1, 0x05020006, + 0x05c5fb73, 0x61fc19ff, 0x60102000, 0x60483000, + 0x05d5fea1, 0x59300809, 0x800409c0, 0x00080010, + 0x4a000a08, 0x00000103, 0x480c0809, 0x5931d82d, + 0x58ef400b, 0x58ee580d, 0x58ec0009, 0x0801f800, + 0x0009f010, 0x42000000, 0x00112401, 0x051dfc04, + 0x60180000, 0x4c0c0000, 0x0501f808, 0x5c001800, + 0x05fc07ed, 0x4c0c0000, 0x0501f823, 0x5c001800, + 0x05fe07e9, 0x1c01f000, 0x4933c857, 0x4d400000, + 0x4d240000, 0x4d200000, 0x5932481d, 0x40028000, + 0x59300429, 0xb0000d91, 0x05000003, 0x90000da1, + 0x05020010, 0x05c5fb4a, 0x60001802, 0x051dfd25, + 0x05020004, 0x59300429, 0x900005a1, 0x05c4089b, + 0x59300429, 0xb0000591, 0x05020002, 0x41781800, + 0x60040000, 0x05e1fdbf, 0x80000580, 0x0501f002, + 0x90000541, 0x5c024000, 0x5c024800, 0x5c028000, + 0x1c01f000, 0x4933c857, 0x4d2c0000, 0x59325809, + 0x812e59c0, 0x0502000b, 0x497a6006, 0x497a6205, + 0x050dfab2, 0x05000002, 0x497a6417, 0x4d380000, + 0x608a7000, 0x0501fb13, 0x5c027000, 0x80000580, + 0x5c025800, 0x1c01f000, 0x4933c857, 0x4d2c0000, + 0x4c500000, 0x4c540000, 0x4c580000, 0x59325809, + 0x592e5801, 0x912cac09, 0x91cca406, 0x59a808d5, + 0x82040d00, 0x000003ff, 0x9004148f, 0x05001011, + 0x603cb000, 0x051dfc85, 0x592e5801, 0x912cac09, + 0x90080c8f, 0x05001008, 0x603cb000, 0x051dfc7f, + 0x592e5801, 0x912cac09, 0x9004148f, 0x05001005, + 0x603c1000, 0x4008b000, 0x051dfc78, 0x0501f003, + 0x4004b000, 0x051dfc75, 0x5931d82d, 0x58ef400b, + 0x58ee580d, 0x4a025a08, 0x00000103, 0x592e5801, + 0x58ec0009, 0x0801f800, 0x0009f810, 0x5c00b000, + 0x5c00a800, 0x5c00a000, 0x5c025800, 0x1c01f000, + 0x4933c857, 0x4d2c0000, 0x4c500000, 0x4c540000, + 0x4c580000, 0x59cc0006, 0x82000d80, 0x01000000, + 0x05000021, 0x59cc0007, 0x9000b1c0, 0x8258b500, + 0x000000ff, 0x8058b104, 0x9058b402, 0x90580c87, + 0x05001002, 0x6018b000, 0x91cca406, 0x59301009, + 0x800811c0, 0x05b40a44, 0x9008ac09, 0x051dfc4f, + 0x82000d00, 0xff000000, 0x800409c0, 0x05000014, + 0x8200b500, 0x000000ff, 0x05000011, 0x8058b104, + 0x90580c8e, 0x05001002, 0x6034b000, 0x58081001, + 0x800811c0, 0x05b40a34, 0x9008ac09, 0x051dfc3f, + 0x0501f007, 0x59301009, 0x800811c0, 0x05b40a2e, + 0x48001009, 0x59cc0007, 0x4800100a, 0x05fdff2d, + 0x5c00b000, 0x5c00a800, 0x5c00a000, 0x5c025800, + 0x1c01f000, 0x4933c857, 0x4d2c0000, 0x4c500000, + 0x4c540000, 0x4c580000, 0x6008b000, 0x59cc0806, + 0x82040580, 0x01000000, 0x05000004, 0x8204b500, + 0x0000ffff, 0x8058b104, 0x91cca406, 0x59300009, + 0x9000ac09, 0x051dfc21, 0x05fdff16, 0x5c00b000, + 0x5c00a800, 0x5c00a000, 0x5c025800, 0x1c01f000, + 0x4933c857, 0x4937c857, 0x4d1c0000, 0x05edfdc1, + 0x05020020, 0x59cc0001, 0x82000500, 0x00ffffff, + 0x59341002, 0x82081500, 0x00ffffff, 0x80080580, + 0x05020018, 0x497a6205, 0x60d40800, 0x050dfa97, + 0x0502000f, 0x591c001e, 0x800001c0, 0x0500000c, + 0x497a381e, 0x591c0416, 0x8c000502, 0x05b409f6, + 0x84000502, 0x48023c16, 0x591c1407, 0x90080583, + 0x05000005, 0x90080586, 0x05000005, 0x05fdfcbe, + 0x0501f004, 0x0501f805, 0x0501f002, 0x0501f8c8, + 0x5c023800, 0x1c01f000, 0x4d2c0000, 0x591e5809, + 0x4933c857, 0x491fc857, 0x493bc857, 0x492fc857, + 0x91380595, 0x050000bc, 0x91380596, 0x050200b8, + 0x4d300000, 0x411e6000, 0x59cc0207, 0x4803c857, + 0x82000d00, 0x0000ff00, 0x82040580, 0x00001700, + 0x05000004, 0x82040580, 0x00000300, 0x05020068, + 0x050df9f2, 0x05000006, 0x591c0403, 0xb0000590, + 0x05020003, 0x05fdfc9c, 0x0501f0a1, 0x591c0203, + 0x4803c857, 0x9000058d, 0x05000044, 0x812e59c0, + 0x0500009e, 0x591c0202, 0x4803c857, 0x82000580, + 0x0000ffff, 0x05020085, 0x050df9e0, 0x05000004, + 0x591c0203, 0x90000d8e, 0x05020080, 0x592c020e, + 0x4803c857, 0x90000503, 0x90000582, 0x0502000b, + 0x592c0813, 0x591c0013, 0x4d300000, 0x411e6000, + 0x050dfffc, 0x5c026000, 0x4803c857, 0x4807c857, + 0x80040580, 0x05020071, 0x591c0416, 0x4803c857, + 0x8c000500, 0x0502006d, 0x42000000, 0x001123d6, + 0x051dfae7, 0x41780800, 0x591c1006, 0x60280000, + 0x05f1ffd3, 0x592c040a, 0x4803c857, 0x800001c0, + 0x0500000a, 0x80080c80, 0x05001003, 0x05b6099a, + 0x80001040, 0x480a5c0a, 0x800811c0, 0x05020003, + 0x0509fabb, 0x0501f06a, 0x0509febf, 0x591c0819, + 0x591c001a, 0x4806580c, 0x4802580d, 0x592e4414, + 0x81224110, 0x59300008, 0x8c000500, 0x05ba0c5c, + 0x497a3809, 0x0001fac0, 0x0502004c, 0x411e6000, + 0x05fdfc55, 0x0501f05a, 0x05fdfc86, 0x05000015, + 0x591c0006, 0x48026006, 0x4926601d, 0x4936600a, + 0x050df98f, 0x640e6407, 0x492e6009, 0x591c0819, + 0x591c101a, 0x48066019, 0x480a601a, 0x4d380000, + 0x591e7403, 0x4d300000, 0x411e6000, 0x05fdfc42, + 0x5c026000, 0x0009f839, 0x5c027000, 0x0501f044, + 0x59a80061, 0x48023a05, 0x0501f041, 0x59cc0407, + 0x9000058b, 0x05020026, 0x59340a00, 0x84040d0e, + 0x48066a00, 0x592c0a08, 0x82040d00, 0x000000ff, + 0x90040d94, 0x05000002, 0x640e6229, 0x59300008, + 0x8c000500, 0x05ba0c2e, 0x4d400000, 0x497a5c0d, + 0x600e8000, 0x592c0a0c, 0x05e1fc51, 0x051dfbad, + 0x05020006, 0x0001fba8, 0x59300a29, 0x90040d83, + 0x05080e7d, 0x497a6009, 0x5c028000, 0x4a026403, + 0x00000085, 0x64266203, 0x640a6407, 0x42000800, + 0x80004040, 0x050dff74, 0x0005fee2, 0x4203e000, + 0xb0800000, 0x6023f800, 0x0501f019, 0x59cc0207, + 0x82000580, 0x00002a00, 0x05020004, 0x59a80061, + 0x48023a05, 0x0501f012, 0x812e59c0, 0x05b4093a, + 0x0005fa1a, 0x497a6027, 0x05e9fab2, 0x4a025a08, + 0x00000103, 0x591c0008, 0x8c000500, 0x05ba0c04, + 0x591c0402, 0x48025c0a, 0x640e5a0a, 0x497a5c0d, + 0x0001fba8, 0x05fdfbfc, 0x05ddffa2, 0x5c026000, + 0x0009f810, 0x0501f002, 0x5c026000, 0x5c025800, + 0x1c01f000, 0x0501f813, 0x05fdf7fd, 0x4933c857, + 0x91380595, 0x05020004, 0x59a80061, 0x48023a05, + 0x0501f009, 0x91380596, 0x05020009, 0x4d300000, + 0x411e6000, 0x0519fd14, 0x0005fe84, 0x0009f810, + 0x5c026000, 0x497a381e, 0x0009f810, 0x1c01f000, + 0x4c5c0000, 0x591c0416, 0x84000540, 0x48023c16, + 0x59ccb80b, 0x4933c857, 0x491fc857, 0x492fc857, + 0x4803c857, 0x485fc857, 0x050df928, 0x05020007, + 0x8c5c053c, 0x05000005, 0x59a80061, 0x48023a05, + 0x497a381e, 0x0501f068, 0x4d300000, 0x411e6000, + 0x0509f866, 0x5c026000, 0x591c0407, 0x90000580, + 0x05000061, 0x591c0403, 0xb0000590, 0x0502000a, + 0x4d300000, 0x411e6000, 0x64066203, 0x42000800, + 0x80000043, 0x0005fee2, 0x5c026000, 0x497a381e, + 0x0501f055, 0x591c0203, 0x9000058d, 0x0500001c, + 0x812e59c0, 0x05b408e8, 0x592c020e, 0x4803c857, + 0x8c000500, 0x0502001b, 0x8c000502, 0x05000014, + 0x591c0416, 0x8c00051c, 0x05020007, 0x591c0013, + 0x4803c857, 0x800001c0, 0x0500000d, 0x591c0014, + 0x48023818, 0x4a023814, 0x0fffffff, 0x592c020c, + 0x8400051e, 0x48025a0c, 0x42000000, 0x001123d8, + 0x051dfa13, 0x64063a16, 0x0501f01a, 0x42000000, + 0x001123d9, 0x051dfa0e, 0x641e3a16, 0x0501f015, + 0x59300017, 0x591c0817, 0x80040580, 0x0502002e, + 0x8c5c053a, 0x05fe07f6, 0x59cc000a, 0x592c1813, + 0x4803c857, 0x480fc857, 0x800c0580, 0x05fc07f0, + 0x59cc000a, 0x4803c857, 0x48023818, 0x48023817, + 0x42000000, 0x001123d7, 0x051df9f9, 0x64163a16, + 0x050df8d6, 0x0500001a, 0x591c0416, 0x8c00051a, + 0x05000017, 0x4803c857, 0x8c00051e, 0x05000016, + 0x4130b800, 0x05fdfbaf, 0x0500000f, 0x4926601d, + 0x64066203, 0x647a6403, 0x585c041b, 0x4802641b, + 0x585c021b, 0x4802621b, 0x591e680a, 0x4936600a, + 0x050df8b3, 0x64066407, 0x42000800, 0x80000040, + 0x0005fee2, 0x405e6000, 0x0501f003, 0x5c00b800, + 0x0509f76d, 0x5c00b800, 0x0009f010, 0x4933c857, + 0x4d1c0000, 0x05edfc4b, 0x0502003f, 0x59cc0001, + 0x59341002, 0x80080580, 0x82000500, 0x00ffffff, + 0x05020037, 0x5930141b, 0x050df96b, 0x05b4088a, + 0x591c1407, 0x90080587, 0x05000031, 0x90080582, + 0x0500002f, 0x90080580, 0x0500002d, 0x591c0202, + 0x82000d80, 0x0000ffff, 0x05000004, 0x59301a1b, + 0x800c0580, 0x05020026, 0x91380595, 0x05000022, + 0x4d300000, 0x4d2c0000, 0x411e6000, 0x59325809, + 0x0509fcb2, 0x05b40874, 0x592c0208, 0x82000500, + 0x000000ff, 0x90000594, 0x05000002, 0x640e6229, + 0x497a5c0d, 0x600e8000, 0x592c0a0c, 0x05e1fb64, + 0x051dfac0, 0x05020006, 0x0001fba8, 0x59300a29, + 0x90040d83, 0x05080d90, 0x497a6009, 0x5c025800, + 0x4a026403, 0x00000085, 0x64266203, 0x640a6407, + 0x42000800, 0x80004040, 0x0005fee2, 0x5c026000, + 0x0501f003, 0x59a80061, 0x48023a05, 0x497a381e, + 0x0009f810, 0x5c023800, 0x1c01f000, 0x4933c857, + 0x4c580000, 0x4d2c0000, 0x59325809, 0x59342200, + 0x82102500, 0xffffdffd, 0x48126a00, 0x91383595, + 0x05000009, 0x0509fc85, 0x05000047, 0x050dfb24, + 0x05020003, 0x6008b000, 0x050dfb0b, 0x0501fa2a, + 0x0501f059, 0x91cc1408, 0x6008b000, 0x91341c06, + 0x0501ffb4, 0x0502000f, 0x91cc140a, 0x6008b000, + 0x91341c08, 0x0501ffaf, 0x0502000a, 0x05c1fe2b, + 0x59342200, 0x59cc1007, 0x800811c0, 0x05000003, + 0x480a6801, 0x84102542, 0x48126a00, 0x0501f048, + 0x4d3c0000, 0x417a7800, 0x05c1fdd9, 0x5c027800, + 0x42000000, 0x001123f8, 0x051df969, 0x59340200, + 0x84000558, 0x48026a00, 0x4d300000, 0x05fdfb25, + 0x05b40821, 0x4926601d, 0x4936600a, 0x497a6009, + 0x64066407, 0x64066403, 0x600c3000, 0x0519fee5, + 0x05c5f8b7, 0x59240400, 0x8c00050a, 0x0502000b, + 0x41782800, 0x60043000, 0x4d400000, 0x60a68000, + 0x0519f8e2, 0x5c028000, 0x64126407, 0x641e6203, + 0x6406642c, 0x0501f005, 0x64066203, 0x602c0800, + 0x05ddf8f4, 0x05f1ff1d, 0x5c026000, 0x0509fc43, + 0x0500001d, 0x050dfae2, 0x0502001d, 0x0501f9ea, + 0x0501f019, 0x42000000, 0x001123fb, 0x051df940, + 0x4d3c0000, 0x417a7800, 0x05c1fda9, 0x42000000, + 0x001123f8, 0x051df93a, 0x59340200, 0x84000558, + 0x48026a00, 0x600c3000, 0x41782800, 0x60142000, + 0x4d400000, 0x4d440000, 0x59368c03, 0x60a68000, + 0x050dfd92, 0x5c028800, 0x5c028000, 0x5c027800, + 0x05c1fdde, 0x0009f810, 0x0501f002, 0x05fdfce9, + 0x5c025800, 0x5c00b000, 0x1c01f000, 0x4933c857, + 0x41380000, 0xb13834a0, 0x05b21fdf, 0x0c01f001, + 0x00109e9c, 0x00109e99, 0x00109e9c, 0x00109e9c, + 0x00109e9c, 0x00109e9c, 0x00109e98, 0x00109e98, + 0x00109e98, 0x00109e98, 0x00109e98, 0x00109e98, + 0x00109e98, 0x00109e98, 0x00109e98, 0x00109e98, + 0x00109e98, 0x00109e98, 0x00109e98, 0x00109e98, + 0x00109e98, 0x00109e98, 0x00109e98, 0x00109e98, + 0x00109e98, 0x00109e98, 0x00109e98, 0x00109e98, + 0x00109e98, 0x00109e98, 0x00109e98, 0x00109e9c, + 0x00109e98, 0x00109e9c, 0x00109e9c, 0x00109e98, + 0x00109e98, 0x00109e98, 0x00109e98, 0x00109e98, + 0x00109e9c, 0x00109e98, 0x00109e98, 0x00109e98, + 0x00109e98, 0x00109e98, 0x00109e98, 0x00109e98, + 0x00109e98, 0x00109e98, 0x00109e9c, 0x00109e9c, + 0x00109e98, 0x00109e98, 0x00109e98, 0x00109e98, + 0x00109e98, 0x00109e98, 0x00109e98, 0x00109e98, + 0x00109e98, 0x00109e9c, 0x00109e98, 0x00109e98, + 0x00109e98, 0x00109e98, 0x00109e98, 0x00109e9c, + 0x00109e9c, 0x00109e98, 0x00109e98, 0x00109e98, + 0x00109e98, 0x00109e9c, 0x00109e98, 0x00109e98, + 0x00109e98, 0x00109e9c, 0x00109e98, 0x00109e98, + 0x00109e98, 0x00109e9c, 0x00109e98, 0x00109e98, + 0x00109e98, 0x00109e9c, 0x00109e98, 0x00109e9c, + 0x00109e9c, 0x00109e98, 0x00109e98, 0x00109e98, + 0x00109e98, 0x00109e98, 0x00109e98, 0x00109e98, + 0x05b1ff7d, 0x64066203, 0x493a6403, 0x05f1f68f, + 0x4933c857, 0x64066203, 0x493a6403, 0x05f1f68b, + 0x59300403, 0xb00034a0, 0x05b21f73, 0x91383593, + 0x05000087, 0x913835a7, 0x05020042, 0x4933c857, + 0x05f5fa7f, 0x0519ff14, 0x0509fcaa, 0x0500000c, + 0x0509fcb7, 0x05000039, 0x59300403, 0x90000da2, + 0x05020033, 0x60140004, 0x05fdfcac, 0x05000030, + 0x05fdfcc9, 0x05000030, 0x0501f030, 0x600c0004, + 0x05fdfca6, 0x0500002a, 0x05c1fd50, 0x601c0800, + 0x05ddf844, 0x0501f940, 0x4d440000, 0x59368c03, + 0x83440580, 0x000007fe, 0x05020007, 0x59a8124c, + 0x84081540, 0x05e1fcd3, 0x05020002, 0x8408154a, + 0x480b524c, 0x60a68000, 0x05f5f834, 0x4d3c0000, + 0x417a7800, 0x05c1fcf6, 0x5c027800, 0x916c0583, + 0x0500000b, 0x5932680a, 0x59340008, 0x800001c0, + 0x05020007, 0x59368c03, 0x4933c857, 0x4937c857, + 0x4947c857, 0x05ddf916, 0x0501f008, 0x42000000, + 0x001123f8, 0x051df87a, 0x60543000, 0x41782800, + 0x600c2000, 0x050dfcd9, 0x5c028800, 0x0509ff3a, + 0x0009f010, 0x1c01f000, 0x0501f917, 0x05fdf7fc, + 0x91380594, 0x0500000c, 0x4933c857, 0xb13805a1, + 0x05000003, 0xb13805a0, 0x05fe07f7, 0x05f5fe88, + 0x05fe0276, 0x59300203, 0x9000058e, 0x050804f1, + 0x05b1ff21, 0x4933c857, 0x05f5fa31, 0x050dff59, + 0x05020005, 0x59300009, 0x800001c0, 0x05020026, + 0x05f1f62e, 0x0519fec0, 0x60082800, 0x59300403, + 0xb0000591, 0x050c07e9, 0x4d3c0000, 0x417a7800, + 0x05c1fcbf, 0x5c027800, 0x60583000, 0x41782800, + 0x4d400000, 0x4d440000, 0x59368c03, 0x60242000, + 0x60a68000, 0x050dfcad, 0x5c028800, 0x5c028000, + 0x42000000, 0x001123f8, 0x051df845, 0x0509fc41, + 0x0502000b, 0x05c1fcf5, 0x0501f8e7, 0x59340c03, + 0x82040580, 0x000007fe, 0x05fe07c9, 0x59a80a4c, + 0x84040d40, 0x4807524c, 0x05fdf7c5, 0x0509fc44, + 0x05020003, 0x0501f8dc, 0x05fdf7c1, 0x59300403, + 0x90000db2, 0x05020003, 0x05c5fbbd, 0x05fdf7bc, + 0x90000da2, 0x050008d4, 0x05fdf7b9, 0x4933c857, + 0x4803c857, 0x0c01f001, 0x00109f8f, 0x00109f8f, + 0x00109f8f, 0x00109f8f, 0x00109f8f, 0x00109f8f, + 0x00109f8e, 0x00109f8e, 0x00109f8e, 0x00109f8e, + 0x00109f8e, 0x00109f8e, 0x00109f8e, 0x00109f8e, + 0x00109f8e, 0x00109f8e, 0x00109f8e, 0x00109f8e, + 0x00109f8e, 0x00109f8e, 0x00109f8e, 0x00109f8e, + 0x00109f8e, 0x00109f8e, 0x00109f8e, 0x00109f8e, + 0x00109f8e, 0x00109f8e, 0x00109f8e, 0x00109f8e, + 0x00109f94, 0x00109ff5, 0x00109f8e, 0x00109ff5, + 0x00109ff5, 0x00109f8e, 0x00109f8e, 0x00109f8e, + 0x00109f8e, 0x00109f8e, 0x00109ff5, 0x00109ff5, + 0x00109f8e, 0x00109f8e, 0x00109f8e, 0x00109f8e, + 0x00109f8e, 0x00109f8e, 0x00109f8e, 0x00109f8e, + 0x00109fa2, 0x00109ff5, 0x00109f8e, 0x00109f9d, + 0x00109f8e, 0x00109f8e, 0x00109f8e, 0x00109f9d, + 0x00109f8e, 0x00109f8e, 0x00109f8e, 0x00109ff5, + 0x00109fa0, 0x00109f8e, 0x00109f8e, 0x00109f8e, + 0x00109f8e, 0x00109ff5, 0x00109ff5, 0x00109f8e, + 0x00109f8e, 0x00109f8e, 0x00109f8e, 0x00109ff5, + 0x00109f8e, 0x00109f8e, 0x00109f8e, 0x00109ff5, + 0x00109f8e, 0x00109f8e, 0x00109f8e, 0x00109ff5, + 0x00109f8e, 0x00109f8e, 0x00109f8e, 0x00109ff5, + 0x00109f8e, 0x00109ff5, 0x00109faa, 0x00109f8e, + 0x00109f8e, 0x00109f8e, 0x00109f8e, 0x00109f8e, + 0x00109fb0, 0x00109f8e, 0x05b1fe87, 0x640a6203, + 0x0509fea6, 0x05000002, 0x643a6203, 0x0509f434, + 0x64166203, 0x59a80061, 0x48026205, 0x0509fe9f, + 0x05000002, 0x643a6203, 0x59a8005f, 0x48026006, + 0x1c01f000, 0x5930082a, 0x49780a05, 0x0501f056, + 0x0509fe7d, 0x0009f010, 0x05c5fb41, 0x05f5fa2e, + 0x05000003, 0x05f5f982, 0x0009f010, 0x05f5f980, + 0x0009f810, 0x05f5f219, 0x4933c857, 0x640a6203, + 0x0509fe8a, 0x05000002, 0x643a6203, 0x1c01f000, + 0x4933c857, 0x4d300000, 0x4d2c0000, 0x59325809, + 0x812e59c0, 0x0500002e, 0x0509fa9c, 0x05b00e5e, + 0x59a80cd2, 0x48065811, 0x59a808d4, 0x48065810, + 0x64025a0a, 0x592c1001, 0x800811c0, 0x05b00e56, + 0x4930100b, 0x492c100a, 0x64001001, 0x4a001009, + 0x00109fd0, 0x4a001003, 0x00114616, 0x4a001005, + 0x00000200, 0x592c0015, 0x48001007, 0x592c0016, + 0x48001008, 0x5c025800, 0x5c026000, 0x0001f029, + 0x4d300000, 0x4d2c0000, 0x5832600b, 0x813261c0, + 0x05b00e41, 0x5832580a, 0x812e59c0, 0x05b00e3e, + 0x49786001, 0x58300002, 0x82000580, 0x00000100, + 0x05020014, 0x59a80cd2, 0x48065811, 0x59a808d4, + 0x48065810, 0x64025a0a, 0x0001fba8, 0x59a81cd1, + 0x840c1d46, 0x480f54d1, 0x0509fe50, 0x05000005, + 0x05fdf8fd, 0x59a8005f, 0x48026006, 0x0501f002, + 0x0009f810, 0x5c025800, 0x5c026000, 0x1c01f000, + 0x4803c857, 0x4a006002, 0x00000100, 0x600a8000, + 0x05fdf7ee, 0x4933c857, 0x640a6203, 0x0509fe3f, + 0x05000002, 0x643a6203, 0x59a8005f, 0x48026006, + 0x1c01f000, 0x4933c857, 0x0509fa54, 0x0500002b, + 0x4d2c0000, 0x050df8f2, 0x05020007, 0x4d400000, + 0x60c68000, 0x60100800, 0x0509ff18, 0x5c028000, + 0x0501f021, 0x050df8f4, 0x05020005, 0x64c65a0a, + 0x64125810, 0x0001fba8, 0x0501f01b, 0x59300c07, + 0x90040590, 0x05000003, 0x90040591, 0x05020007, + 0x64c65a0a, 0x64125811, 0x4a025812, 0x000000ff, + 0x0001fba8, 0x0501f010, 0x592c0408, 0x8c00051e, + 0x0500000d, 0x4a025a08, 0x00000103, 0x4a025809, + 0x01000000, 0x4da00000, 0x4cec0000, 0x5931d82d, + 0x58ef400b, 0x58ec0009, 0x0801f800, 0x5c01d800, + 0x5c034000, 0x5c025800, 0x1c01f000, 0x4933c857, + 0x83340580, 0x001141b4, 0x05020007, 0x91380d95, + 0x05000003, 0x91380d96, 0x05fe0134, 0x0519fd8c, + 0x0009f010, 0x59340400, 0x82000500, 0x000000ff, + 0x9000348c, 0x05b21ddc, 0x59303403, 0xb0180d8d, + 0x05080647, 0x90180db3, 0x0508060d, 0x90180da8, + 0x0508035a, 0x90180da9, 0x05080365, 0xb0180d97, + 0x050c0487, 0x90180d9f, 0x05fc02c6, 0xb0180d95, + 0x05fc02a6, 0x90180d80, 0x05fc0579, 0x90180da2, + 0x05fc02e2, 0x90180db5, 0x05fc03ba, 0x90180db9, + 0x05fc052f, 0x90180dbd, 0x05fc033c, 0xb0180d84, + 0x05fc0368, 0xb0180d89, 0x05fc039b, 0xb0180d98, + 0x050c050d, 0xb0180d83, 0x05080752, 0xb0180d91, + 0x050807ac, 0x90180d84, 0x05020002, 0x60040000, + 0x91380d95, 0x05000004, 0x91380d96, 0x05fe0103, + 0x0501f1ec, 0x4c000000, 0x0519fd59, 0x5c000000, + 0x4d2c0000, 0x4d3c0000, 0x0c01f804, 0x5c027800, + 0x5c025800, 0x1c01f000, 0x0010a081, 0x0010a085, + 0x0010a081, 0x0010a0d6, 0x0010a081, 0x0010a1d9, + 0x0010a263, 0x0010a081, 0x0010a081, 0x0010a227, + 0x0010a081, 0x0010a232, 0x4933c857, 0x497a6008, + 0x59300809, 0x58040000, 0x4a000a08, 0x00000103, + 0x0009f010, 0x4933c857, 0x40000000, 0x40000000, + 0x1c01f000, 0x4933c857, 0x05ddfa99, 0x59a800bb, + 0xb00005b4, 0x0502003d, 0x0515fcdd, 0x0502000e, + 0x0501f83d, 0x0509f9c5, 0x05000009, 0x050df864, + 0x05020007, 0x41780800, 0x4d400000, 0x60028000, + 0x0509fe8a, 0x5c028000, 0x0501f002, 0x05c1fb73, + 0x0009f010, 0x0509f9b9, 0x05000005, 0x050df858, + 0x05020003, 0x05fdff60, 0x0009f010, 0x417a7800, + 0x05c1fb23, 0x42000000, 0x001123f8, 0x0519feb4, 0x59340200, 0x84000558, 0x48026a00, 0x600c3000, - 0x41782800, 0x60142000, 0x4d400000, 0x4d440000, - 0x59368c03, 0x60a68000, 0x050dfd25, 0x5c028800, - 0x5c028000, 0x5c027800, 0x05c5fa81, 0x0005ffdc, - 0x0501f002, 0x05fdfced, 0x5c025800, 0x5c00b000, - 0x1c01f000, 0x4933c857, 0x41380000, 0xb13834a0, - 0x05b61cde, 0x0c01f001, 0x00109962, 0x0010995f, - 0x00109962, 0x00109962, 0x00109962, 0x00109962, - 0x0010995e, 0x0010995e, 0x0010995e, 0x0010995e, - 0x0010995e, 0x0010995e, 0x0010995e, 0x0010995e, - 0x0010995e, 0x0010995e, 0x0010995e, 0x0010995e, - 0x0010995e, 0x0010995e, 0x0010995e, 0x0010995e, - 0x0010995e, 0x0010995e, 0x0010995e, 0x0010995e, - 0x0010995e, 0x0010995e, 0x0010995e, 0x0010995e, - 0x0010995e, 0x00109962, 0x0010995e, 0x00109962, - 0x00109962, 0x0010995e, 0x0010995e, 0x0010995e, - 0x0010995e, 0x0010995e, 0x00109962, 0x0010995e, - 0x0010995e, 0x0010995e, 0x0010995e, 0x0010995e, - 0x0010995e, 0x0010995e, 0x0010995e, 0x0010995e, - 0x00109962, 0x00109962, 0x0010995e, 0x0010995e, - 0x0010995e, 0x0010995e, 0x0010995e, 0x0010995e, - 0x0010995e, 0x0010995e, 0x0010995e, 0x00109962, - 0x0010995e, 0x0010995e, 0x0010995e, 0x0010995e, - 0x0010995e, 0x00109962, 0x00109962, 0x0010995e, - 0x0010995e, 0x0010995e, 0x0010995e, 0x00109962, - 0x0010995e, 0x0010995e, 0x0010995e, 0x00109962, - 0x0010995e, 0x0010995e, 0x0010995e, 0x00109962, - 0x0010995e, 0x0010995e, 0x0010995e, 0x00109962, - 0x0010995e, 0x00109962, 0x00109962, 0x0010995e, - 0x0010995e, 0x0010995e, 0x0010995e, 0x0010995e, - 0x0010995e, 0x0010995e, 0x05b5fc7c, 0x64066203, - 0x493a6403, 0x05f1f710, 0x4933c857, 0x64066203, - 0x493a6403, 0x05f1f70c, 0x59300403, 0xb00034a0, - 0x05b61c72, 0x91383593, 0x05000087, 0x913835a7, - 0x05020042, 0x4933c857, 0x05f5fafb, 0x0519fce7, - 0x0509fc4b, 0x0500000c, 0x0509fc58, 0x05000039, - 0x59300403, 0x90000da2, 0x05020033, 0x60140004, - 0x05fdfcb0, 0x05000030, 0x05fdfccd, 0x05000030, - 0x0501f030, 0x600c0004, 0x05fdfcaa, 0x0500002a, - 0x05c5f9f3, 0x601c0800, 0x05ddfb6b, 0x0501f940, - 0x4d440000, 0x59368c03, 0x83440580, 0x000007fe, - 0x05020007, 0x59a81249, 0x84081540, 0x05e1ff23, - 0x05020002, 0x8408154a, 0x480b5249, 0x60a68000, - 0x05f5f8b5, 0x4d3c0000, 0x417a7800, 0x05c5f999, - 0x5c027800, 0x916c0583, 0x0500000b, 0x5932680a, - 0x59340008, 0x800001c0, 0x05020007, 0x59368c03, - 0x4933c857, 0x4937c857, 0x4947c857, 0x05ddfc0d, - 0x0501f008, 0x42000000, 0x0010e454, 0x0519fe39, - 0x60543000, 0x41782800, 0x600c2000, 0x050dfc6c, - 0x5c028800, 0x0509fedc, 0x0005f7dc, 0x1c01f000, - 0x0501f917, 0x05fdf7fc, 0x91380594, 0x0500000c, - 0x4933c857, 0xb13805a1, 0x05000003, 0xb13805a0, - 0x05fe07f7, 0x05f5ff04, 0x05fe027e, 0x59300203, - 0x9000058e, 0x05080492, 0x05b5fc20, 0x4933c857, - 0x05f5faad, 0x050dfee2, 0x05020005, 0x59300009, - 0x800001c0, 0x05020026, 0x05f1f6af, 0x0519fc93, - 0x60082800, 0x59300403, 0xb0000591, 0x050c0772, - 0x4d3c0000, 0x417a7800, 0x05c5f962, 0x5c027800, - 0x60583000, 0x41782800, 0x4d400000, 0x4d440000, - 0x59368c03, 0x60242000, 0x60a68000, 0x050dfc40, - 0x5c028800, 0x5c028000, 0x42000000, 0x0010e454, - 0x0519fe04, 0x0509fbe2, 0x0502000b, 0x05c5f998, - 0x0501f8e7, 0x59340c03, 0x82040580, 0x000007fe, - 0x05fe07c9, 0x59a80a49, 0x84040d40, 0x48075249, - 0x05fdf7c5, 0x0509fbe5, 0x05020003, 0x0501f8dc, - 0x05fdf7c1, 0x59300403, 0x90000db2, 0x05020003, - 0x05c9f84f, 0x05fdf7bc, 0x90000da2, 0x050008d4, - 0x05fdf7b9, 0x4933c857, 0x4803c857, 0x0c01f001, - 0x00109a55, 0x00109a55, 0x00109a55, 0x00109a55, - 0x00109a55, 0x00109a55, 0x00109a54, 0x00109a54, - 0x00109a54, 0x00109a54, 0x00109a54, 0x00109a54, - 0x00109a54, 0x00109a54, 0x00109a54, 0x00109a54, - 0x00109a54, 0x00109a54, 0x00109a54, 0x00109a54, - 0x00109a54, 0x00109a54, 0x00109a54, 0x00109a54, - 0x00109a54, 0x00109a54, 0x00109a54, 0x00109a54, - 0x00109a54, 0x00109a54, 0x00109a5a, 0x00109abb, - 0x00109a54, 0x00109abb, 0x00109abb, 0x00109a54, - 0x00109a54, 0x00109a54, 0x00109a54, 0x00109a54, - 0x00109abb, 0x00109abb, 0x00109a54, 0x00109a54, - 0x00109a54, 0x00109a54, 0x00109a54, 0x00109a54, - 0x00109a54, 0x00109a54, 0x00109a68, 0x00109abb, - 0x00109a54, 0x00109a63, 0x00109a54, 0x00109a54, - 0x00109a54, 0x00109a63, 0x00109a54, 0x00109a54, - 0x00109a54, 0x00109abb, 0x00109a66, 0x00109a54, - 0x00109a54, 0x00109a54, 0x00109a54, 0x00109abb, - 0x00109abb, 0x00109a54, 0x00109a54, 0x00109a54, - 0x00109a54, 0x00109abb, 0x00109a54, 0x00109a54, - 0x00109a54, 0x00109abb, 0x00109a54, 0x00109a54, - 0x00109a54, 0x00109abb, 0x00109a54, 0x00109a54, - 0x00109a54, 0x00109abb, 0x00109a54, 0x00109abb, - 0x00109a70, 0x00109a54, 0x00109a54, 0x00109a54, - 0x00109a54, 0x00109a54, 0x00109a76, 0x00109a54, - 0x05b5fb86, 0x640a6203, 0x0509fe48, 0x05000002, - 0x643a6203, 0x0509f3d5, 0x64166203, 0x59a8005e, - 0x48026205, 0x0509fe41, 0x05000002, 0x643a6203, - 0x59a8005c, 0x48026006, 0x1c01f000, 0x5930082a, - 0x49780a05, 0x0501f056, 0x0509fe1f, 0x0005f7dc, - 0x05c5ffd3, 0x05f5faaa, 0x05000003, 0x05f5f9fe, - 0x0005f7dc, 0x05f5f9fc, 0x0005ffdc, 0x05f5f295, - 0x4933c857, 0x640a6203, 0x0509fe2c, 0x05000002, - 0x643a6203, 0x1c01f000, 0x4933c857, 0x4d300000, - 0x4d2c0000, 0x59325809, 0x812e59c0, 0x0500002e, - 0x0509fa4d, 0x05b40b5d, 0x59a80ccd, 0x48065811, - 0x59a808cf, 0x48065810, 0x64025a0a, 0x592c1001, - 0x800811c0, 0x05b40b55, 0x4930100b, 0x492c100a, - 0x64001001, 0x4a001009, 0x00109a96, 0x4a001003, - 0x00110672, 0x4a001005, 0x00000200, 0x592c0015, - 0x48001007, 0x592c0016, 0x48001008, 0x5c025800, - 0x5c026000, 0x0001f021, 0x4d300000, 0x4d2c0000, - 0x5832600b, 0x813261c0, 0x05b40b40, 0x5832580a, - 0x812e59c0, 0x05b40b3d, 0x49786001, 0x58300002, - 0x82000580, 0x00000100, 0x05020014, 0x59a80ccd, - 0x48065811, 0x59a808cf, 0x48065810, 0x64025a0a, - 0x0001fb82, 0x59a81ccc, 0x840c1d46, 0x480f54cc, - 0x0509fdf2, 0x05000005, 0x05fdf922, 0x59a8005c, - 0x48026006, 0x0501f002, 0x0005ffdc, 0x5c025800, - 0x5c026000, 0x1c01f000, 0x4803c857, 0x4a006002, - 0x00000100, 0x600a8000, 0x05fdf7ee, 0x4933c857, - 0x640a6203, 0x0509fde1, 0x05000002, 0x643a6203, - 0x59a8005c, 0x48026006, 0x1c01f000, 0x4933c857, - 0x0509fa05, 0x0500002b, 0x4d2c0000, 0x050df886, - 0x05020007, 0x4d400000, 0x60c68000, 0x60100800, - 0x0509feb3, 0x5c028000, 0x0501f021, 0x050df888, - 0x05020005, 0x64c65a0a, 0x64125810, 0x0001fb82, - 0x0501f01b, 0x59300c07, 0x90040590, 0x05000003, - 0x90040591, 0x05020007, 0x64c65a0a, 0x64125811, - 0x4a025812, 0x000000ff, 0x0001fb82, 0x0501f010, - 0x592c0408, 0x8c00051e, 0x0500000d, 0x4a025a08, - 0x00000103, 0x4a025809, 0x01000000, 0x4da00000, - 0x4cec0000, 0x5931d82d, 0x58ef400b, 0x58ec0009, - 0x0801f800, 0x5c01d800, 0x5c034000, 0x5c025800, - 0x1c01f000, 0x4933c857, 0x83340580, 0x00110210, - 0x05020007, 0x91380d95, 0x05000003, 0x91380d96, - 0x05fe013c, 0x0519fb5f, 0x0005f7dc, 0x59340400, - 0x82000500, 0x000000ff, 0x9000348c, 0x05b61adb, - 0x59303403, 0xb0180d8d, 0x050805e9, 0x90180db3, - 0x050805af, 0x90180da8, 0x050802fb, 0x90180da9, - 0x05080306, 0xb0180d97, 0x050c0410, 0x90180d9f, - 0x05fc02ca, 0xb0180d95, 0x05fc02aa, 0x90180d80, - 0x05fc0579, 0x90180da2, 0x05fc02e6, 0x90180db5, - 0x05fc03be, 0x90180db9, 0x05fc052f, 0x90180dbd, - 0x05fc0340, 0xb0180d84, 0x05fc036c, 0xb0180d89, - 0x05fc039f, 0xb0180d98, 0x050c0496, 0xb0180d83, - 0x050806ed, 0xb0180d91, 0x05080747, 0x90180d84, - 0x05020002, 0x60040000, 0x91380d95, 0x05000004, - 0x91380d96, 0x05fe010b, 0x0501f1ec, 0x4c000000, - 0x0519fb2c, 0x5c000000, 0x4d2c0000, 0x4d3c0000, - 0x0c01f804, 0x5c027800, 0x5c025800, 0x1c01f000, - 0x00109b47, 0x00109b4b, 0x00109b47, 0x00109b9c, - 0x00109b47, 0x00109c9f, 0x00109d29, 0x00109b47, - 0x00109b47, 0x00109ced, 0x00109b47, 0x00109cf8, - 0x4933c857, 0x497a6008, 0x59300809, 0x58040000, - 0x4a000a08, 0x00000103, 0x0005f7dc, 0x4933c857, - 0x40000000, 0x40000000, 0x1c01f000, 0x4933c857, - 0x05ddfd61, 0x59a800b6, 0xb00005b4, 0x0502003d, - 0x0515fb00, 0x0502000e, 0x0501f83d, 0x0509f976, - 0x05000009, 0x0509fff8, 0x05020007, 0x41780800, - 0x4d400000, 0x60028000, 0x0509fe25, 0x5c028000, - 0x0501f002, 0x05c5f816, 0x0005f7dc, 0x0509f96a, - 0x05000005, 0x0509ffec, 0x05020003, 0x05fdff60, - 0x0005f7dc, 0x417a7800, 0x05c1ffc6, 0x42000000, - 0x0010e454, 0x0519fc73, 0x59340200, 0x84000558, - 0x48026a00, 0x600c3000, 0x0519fa15, 0x4d300000, - 0x05fdf893, 0x05b40a69, 0x4926601d, 0x4936600a, - 0x497a6009, 0x64066407, 0x64066403, 0x59240400, - 0x8c00050a, 0x0502000b, 0x64126407, 0x641e6203, - 0x6406642c, 0x60043000, 0x4d400000, 0x60a68000, - 0x41782800, 0x0515fc1e, 0x5c028000, 0x0501f005, - 0x602c0800, 0x05ddf968, 0x64066203, 0x05f1fcea, - 0x5c026000, 0x05fdff3a, 0x05c1ffe9, 0x0005f7dc, - 0x05fdff37, 0x60040000, 0x0501f0d5, 0x4933c857, - 0x59340200, 0x8c000500, 0x05000009, 0x4d3c0000, - 0x417a7800, 0x05ddf94e, 0x5c027800, 0x8d0c0520, - 0x05000003, 0x60180800, 0x05ddf953, 0x1c01f000, - 0x4933c857, 0x59a808b6, 0xb00405b4, 0x0500000e, - 0x4807c857, 0x82040580, 0x00000100, 0x050200ac, - 0x59cc0408, 0x4803c857, 0x8c000500, 0x050000a8, - 0x59341403, 0x82080580, 0x000007fe, 0x05000006, - 0x0501f0a3, 0x59341403, 0x82080580, 0x000007fe, - 0x0502001b, 0x59a80249, 0x8c000506, 0x0500000e, - 0x59cc0000, 0x82000500, 0x000000ff, 0x59240c08, - 0x80040580, 0x05000008, 0x05c1ffb9, 0x0005ffdc, - 0x42000000, 0x0010e440, 0x0519fc1e, 0x6006d800, - 0x05d9f52b, 0x0519fd54, 0x050e05eb, 0x59a80249, - 0x8c000506, 0x05020004, 0x83240580, 0x0010e512, - 0x050e04ea, 0x0501fa74, 0x0501f03b, 0x41780800, - 0x05ddfa0a, 0x59341403, 0x82080580, 0x000007fc, - 0x05020019, 0x4a026802, 0x00fffffc, 0x0509f8f6, - 0x0500000c, 0x0509ff78, 0x0502000a, 0x0501f8a3, - 0x41780800, 0x4d400000, 0x60028000, 0x0509fda4, - 0x5c028000, 0x60100800, 0x05ddf90f, 0x0005f7dc, - 0x60100800, 0x05ddf90c, 0x05c1ff91, 0x59300c29, - 0x900405a1, 0x050c069d, 0xb0040591, 0x000607dc, - 0x050df69a, 0x59a800d1, 0x8c000502, 0x0500000d, - 0x05e1fcc2, 0x60401000, 0x05020008, 0x59340002, - 0x82000500, 0x00ff0000, 0x82000580, 0x00ff0000, - 0x05000004, 0x60201000, 0x05e1f8b9, 0x05020058, - 0x0509f8d1, 0x05000059, 0x0509ff53, 0x05020005, - 0x592c0408, 0x8c00051c, 0x05fe07d5, 0x0501f87b, - 0x60140800, 0x05ddf8ec, 0x64066203, 0x640e6403, - 0x05f1f46d, 0x59cc0408, 0x8c000518, 0x05000017, - 0x0509fc51, 0x05e1fca5, 0x05000008, 0x59cc0408, - 0x8c000516, 0x05000005, 0x59300429, 0x900005a1, - 0x05fe07c3, 0x1c01f000, 0x59a80249, 0x8400054a, - 0x48035249, 0x48035449, 0x59a8003d, 0x497b8830, - 0x84000570, 0x48038832, 0x59300429, 0x900005a1, - 0x05fe07b7, 0x1c01f000, 0x59a80249, 0xb0000510, - 0xb0000590, 0x05000009, 0x61bc1001, 0x42024800, - 0x0010e512, 0x480a4805, 0x480b503d, 0x497b8830, - 0x84081570, 0x480b8832, 0x0509fc4c, 0x59a80249, - 0x84000548, 0x48035249, 0x48035449, 0x0515fb47, - 0x05fe07a3, 0x599c0019, 0x8c000510, 0x0502002f, - 0x59a80249, 0x8400054c, 0x48035249, 0x601c0800, - 0x05ddf8b5, 0x417a7800, 0x05ddf8a9, 0x61bc3801, - 0x61a00001, 0x05e9fc91, 0x05dc08d6, 0x05b6099b, - 0x4936600a, 0x05ddfc72, 0x05020002, 0x497a6416, - 0x599c0208, 0x48026c12, 0x59340200, 0x8400051a, - 0x48026a00, 0x600c0800, 0x05ddf8a3, 0x64066407, - 0x64066203, 0x640a6403, 0x05f1f423, 0x05fdfe74, - 0x60040000, 0x0501f012, 0x599c0017, 0x8c00050a, - 0x05fc07ac, 0x60100800, 0x05ddf897, 0x493750c2, - 0x59a80249, 0x8c000508, 0x05000008, 0x599c0018, - 0x8c00051c, 0x05000005, 0x61a00807, 0x42001000, - 0x0010582b, 0x05edfb87, 0x0005f7dc, 0x4933c857, - 0x80003540, 0x05000003, 0x601c0800, 0x05ddf886, - 0x801831c0, 0x0502000f, 0x59302009, 0x801021c0, - 0x05000004, 0x58100408, 0x8c00051e, 0x05020009, - 0x59341c03, 0x60102000, 0x60483000, 0x4d200000, - 0x59364013, 0x81224130, 0x05d5fbd2, 0x5c024000, - 0x05c1fefb, 0x0005f7dc, 0x4c5c0000, 0x4d2c0000, - 0x59325809, 0x05e5fb86, 0x5c025800, 0x59cc0008, - 0x48002805, 0x59cc0009, 0x48002806, 0x49782807, - 0x49782808, 0x49782809, 0x4978280a, 0x59cc0013, - 0x8c00053e, 0x05000009, 0x59cc0414, 0x900001c0, - 0x59ccbc15, 0x805c0540, 0x48002807, 0x59cc0416, - 0x900001c0, 0x48002808, 0x59cc0017, 0x8c00053e, - 0x05000009, 0x59cc0418, 0x900001c0, 0x59ccbc19, - 0x805c0540, 0x48002809, 0x59cc041a, 0x900001c0, - 0x4800280a, 0x5c00b800, 0x1c01f000, 0x4933c857, - 0x59a800b6, 0x90000594, 0x0502003a, 0x59a800d1, - 0x8c000502, 0x05000011, 0x05e1fc08, 0x60401000, + 0x0519fc38, 0x4d300000, 0x05fdf86e, 0x05b00d6a, + 0x4926601d, 0x4936600a, 0x497a6009, 0x64066407, + 0x64066403, 0x59240400, 0x8c00050a, 0x0502000b, + 0x64126407, 0x641e6203, 0x6406642c, 0x60043000, + 0x4d400000, 0x60a68000, 0x41782800, 0x0515fe2b, + 0x5c028000, 0x0501f005, 0x602c0800, 0x05d9fe41, + 0x64066203, 0x05f1fc69, 0x5c026000, 0x05fdff3a, + 0x05c1fb46, 0x0009f010, 0x05fdff37, 0x60040000, + 0x0501f0d5, 0x4933c857, 0x59340200, 0x8c000500, + 0x05000009, 0x4d3c0000, 0x417a7800, 0x05d9fe27, + 0x5c027800, 0x8d0c0520, 0x05000003, 0x60180800, + 0x05d9fe2c, 0x1c01f000, 0x4933c857, 0x59a808bb, + 0xb00405b4, 0x0500000e, 0x4807c857, 0x82040580, + 0x00000100, 0x050200ac, 0x59cc0408, 0x4803c857, + 0x8c000500, 0x050000a8, 0x59341403, 0x82080580, + 0x000007fe, 0x05000006, 0x0501f0a3, 0x59341403, + 0x82080580, 0x000007fe, 0x0502001b, 0x59a8024c, + 0x8c000506, 0x0500000e, 0x59cc0000, 0x82000500, + 0x000000ff, 0x59240c08, 0x80040580, 0x05000008, + 0x05c1fb16, 0x0009f810, 0x42000000, 0x001123e1, + 0x0519fe5f, 0x6006d800, 0x05d9f1e8, 0x0519ff95, + 0x050e075f, 0x59a8024c, 0x8c000506, 0x05020004, + 0x83240580, 0x001124b6, 0x050e0561, 0x0501fa7d, + 0x0501f03b, 0x41780800, 0x05d9ff36, 0x59341403, + 0x82080580, 0x000007fc, 0x05020019, 0x4a026802, + 0x00fffffc, 0x0509f945, 0x0500000c, 0x0509ffe4, + 0x0502000a, 0x0501f8a3, 0x41780800, 0x4d400000, + 0x60028000, 0x0509fe09, 0x5c028000, 0x60100800, + 0x05d9fde8, 0x0009f010, 0x60100800, 0x05d9fde5, + 0x05c1faee, 0x59300c29, 0x900405a1, 0x05100019, + 0xb0040591, 0x000a0010, 0x0511f016, 0x59a800d6, + 0x8c000502, 0x0500000d, 0x05e1fa72, 0x60401000, 0x05020008, 0x59340002, 0x82000500, 0x00ff0000, - 0x82000580, 0x00ff0000, 0x05000008, 0x60201000, - 0x05ddffff, 0x05000005, 0x59a800d1, 0x8400054c, - 0x480350d1, 0x0501f027, 0x916c0583, 0x0502000c, - 0x59300009, 0x80000540, 0x05020009, 0x59341c03, - 0x60182000, 0x604c3000, 0x4d200000, 0x59364013, - 0x81224130, 0x05d5fb87, 0x5c024000, 0x05ddf988, - 0x05fdfecb, 0x0501fab8, 0x05020016, 0x59340404, - 0x80000540, 0x05000013, 0x60180800, 0x05ddf822, - 0x0505fffd, 0x0500000d, 0x0509fe7f, 0x05020007, - 0x41780800, 0x4d400000, 0x60028000, 0x0509fcac, - 0x5c028000, 0x0005f7dc, 0x4a025a08, 0x00000103, - 0x4a025809, 0x02000000, 0x05c1fe99, 0x0005f7dc, - 0x05ddff94, 0x0505ffec, 0x05000005, 0x0509fe6e, - 0x05020003, 0x05fdfde2, 0x0005f7dc, 0x05fdfde0, - 0x0519f974, 0x80000580, 0x59a800d1, 0x8c00050c, - 0x05000004, 0x8400050c, 0x480350d1, 0x90000541, - 0x05fdf777, 0x4933c857, 0x59a800b6, 0x90000594, - 0x05020006, 0x602c0800, 0x05d9fffb, 0x64066203, - 0x64066403, 0x05f1f37c, 0x60040000, 0x05fdf76c, - 0x4933c857, 0x40003000, 0x59a800b6, 0x90000584, - 0x05020018, 0x9018358b, 0x05020015, 0x5930081d, - 0x58040200, 0x8c000500, 0x050c0432, 0x58040200, - 0x8c000508, 0x0500000c, 0x84000508, 0x48000a00, - 0x600c0800, 0x05d9ffe4, 0x5930080a, 0x49780806, - 0x4a026202, 0x0000ffff, 0x64066203, 0x65466403, - 0x05f1f361, 0x601c0800, 0x05d9ffdb, 0x0005f7dc, - 0x60040000, 0x05fdf74e, 0x4803c857, 0x4d2c0000, - 0x4d3c0000, 0x0c01f804, 0x5c027800, 0x5c025800, - 0x1c01f000, 0x00109b47, 0x00109d4c, 0x00109b47, - 0x00109d8f, 0x00109b47, 0x00109df5, 0x00109d29, - 0x00109b47, 0x00109b47, 0x00109e0b, 0x00109b47, - 0x00109e16, 0x4933c857, 0x4d1c0000, 0x59301403, - 0x90080583, 0x0500001d, 0x9008159e, 0x05020019, - 0x91381595, 0x05020016, 0x4d300000, 0x5930141b, - 0x0509fc25, 0x05b408a5, 0x591c1416, 0x8c08051e, - 0x0500000b, 0x05f9feca, 0x05000009, 0x05ddfd36, - 0x4926601d, 0x59340200, 0x8c000508, 0x05000003, - 0x4a026416, 0x00000100, 0x0509fa0e, 0x82081500, - 0xffff1fff, 0x480a3c16, 0x5c026000, 0x0005ffdc, - 0x5c023800, 0x1c01f000, 0x05fdff55, 0x05fdf7fd, - 0x4933c857, 0x42000000, 0x0010e458, 0x0519fa8d, - 0x0519f908, 0x05ddfb5c, 0x0505ff77, 0x05000007, - 0x0509fdf9, 0x05020005, 0x6008b000, 0x0509fde0, - 0x05fdfd6b, 0x0005f7dc, 0x0501f8d3, 0x05020020, - 0x417a7800, 0x05d9ff86, 0x417a7800, 0x05c1fdcd, - 0x42000000, 0x0010e454, 0x0519fa7a, 0x59340200, - 0x84000558, 0x48026a00, 0x640a6403, 0x600c3000, - 0x0519f81b, 0x59240400, 0x8c00050a, 0x0502000b, - 0x4d400000, 0x41782800, 0x60143000, 0x60a68000, - 0x0515fa2f, 0x5c028000, 0x641e6203, 0x64126407, - 0x6406642c, 0x1c01f000, 0x600c0800, 0x05d9ff76, - 0x64066203, 0x05f1faf8, 0x05fdf7fb, 0x59cc0407, - 0x90000589, 0x05020009, 0x59340412, 0x82000500, - 0x000000ff, 0x0500000b, 0x80000040, 0x48026c12, - 0x642a6006, 0x05fdf7f0, 0x59cc0207, 0x82000500, - 0x0000ff00, 0x82000580, 0x00001900, 0x05fc07d3, - 0x05fdfd37, 0x80000580, 0x05fdf6d5, 0x4933c857, - 0x0505ff39, 0x0500000b, 0x0509fdbb, 0x05020009, - 0x4c580000, 0x6008b000, 0x0509fda1, 0x5c00b000, - 0x05fdfd2b, 0x601c0800, 0x05d9ff53, 0x0005f7dc, - 0x59340403, 0x82000580, 0x000007fc, 0x05020007, - 0x60100000, 0x05fdf887, 0x05020031, 0x601c0800, - 0x05d9ff49, 0x0005f7dc, 0x05fdfd1d, 0x59cc3407, - 0x82183500, 0x000000ff, 0x90180585, 0x0500001e, - 0x9018058b, 0x05000015, 0x59cc0207, 0x82000500, - 0x0000ff00, 0x05020003, 0x90180589, 0x05000016, - 0x82000580, 0x00001900, 0x0502000c, 0x90180589, - 0x05000011, 0x59340403, 0x82000580, 0x000007fe, - 0x05000023, 0x60100800, 0x05d9ff2f, 0x05c1fdb4, - 0x0519f898, 0x0005f7dc, 0x59340403, 0x82000580, - 0x000007fe, 0x0500001a, 0x0519f892, 0x60040000, - 0x05fdf69b, 0x0505ff00, 0x59325809, 0x05000008, - 0x592c0208, 0x82000580, 0x00000139, 0x05fc07f7, - 0x592c0408, 0x8c00051e, 0x05fe07f4, 0x59340412, - 0x800001c0, 0x05000006, 0x80000040, 0x48026c12, - 0x642a6006, 0x645a6403, 0x1c01f000, 0x59340403, - 0x82000580, 0x000007fe, 0x0502000b, 0x59a80249, - 0x84000540, 0x48035249, 0x8c000506, 0x05000004, - 0x4a035045, 0x0000ffff, 0x050dfcbb, 0x05d9fc0b, - 0x05fdf7de, 0x0519f86f, 0x417a7800, 0x05c1fd41, - 0x60143000, 0x0515ff96, 0x42000000, 0x0010e454, - 0x0519f9ec, 0x59300429, 0x900005a1, 0x050c048f, - 0x05fdf7d3, 0x4933c857, 0x0501f844, 0x05020006, - 0x60140800, 0x05d9fef4, 0x64066203, 0x640e6403, - 0x05f1f275, 0x60100800, 0x05d9feef, 0x0509fd4e, - 0x05020007, 0x4c580000, 0x6008b000, 0x0509fd34, - 0x5c00b000, 0x05fdfcbe, 0x0005f7dc, 0x05fdfcbc, - 0x0519f850, 0x80000580, 0x05fdf659, 0x4933c857, - 0x0501f82e, 0x05020006, 0x60240800, 0x05d9fede, - 0x64066203, 0x64166403, 0x05f1f25f, 0x0519f845, - 0x60040000, 0x05fdf64e, 0x4933c857, 0x5930081d, - 0x58040200, 0x8c000500, 0x050c031a, 0x0501f81f, - 0x05020006, 0x602c0800, 0x05d9fecf, 0x64066203, - 0x64066403, 0x05f1f250, 0x5930080a, 0x58040403, - 0x82000580, 0x000007fe, 0x05020004, 0x600c2800, - 0x050dfb11, 0x0005f7dc, 0x0519f82e, 0x60040000, - 0x05fdf637, 0x4933c857, 0x59cc0407, 0x90000583, - 0x05020009, 0x59cc0207, 0x82000500, 0x0000ff00, - 0x82000d80, 0x00002a00, 0x05000003, 0x82000d80, - 0x00001e00, 0x1c01f000, 0x4933c857, 0x90000541, - 0x1c01f000, 0x4933c857, 0x4d400000, 0x4c580000, - 0x60028000, 0x05c1ffd6, 0x59a80249, 0x90000543, - 0x48035249, 0x05d5fcce, 0x0500000c, 0x59a81ccc, - 0x8c0c0506, 0x0502000f, 0x840c1d44, 0x480f54cc, - 0x59cc0408, 0x8c00051c, 0x05000004, 0x59a81249, - 0x84081558, 0x480b5249, 0x0501f8c5, 0x05000005, - 0x4d300000, 0x4d340000, 0x4d440000, 0x0501f037, - 0x59cc0408, 0x8c00051c, 0x05000006, 0x59cc0800, - 0x82040d00, 0x00ffffff, 0x800409c0, 0x05000037, - 0x0501f8ec, 0x05000035, 0x4d300000, 0x4d340000, - 0x4d440000, 0x83240580, 0x0010e512, 0x0502002a, - 0x59cc0408, 0x8c00051e, 0x0502000c, 0x42000800, - 0x0010e512, 0x58040406, 0x8c000500, 0x05020007, - 0x59cc0408, 0x8c000518, 0x05000004, 0x59a80249, - 0x84000552, 0x48035249, 0x59240400, 0x8c00050a, - 0x05020005, 0x60aa8000, 0x61fe89ff, 0x60083000, - 0x0515ff18, 0x60aa8000, 0x4d3c0000, 0x05d5fc99, - 0x05000008, 0x600a7800, 0x5924100b, 0x82081500, - 0x00001fff, 0x41780800, 0x05c5f8bc, 0x0501f003, - 0x60027804, 0x05c1fc49, 0x5c027800, 0x42000000, - 0x0010e454, 0x0519f94f, 0x05d5fc8a, 0x05020002, - 0x05c1fe35, 0x05c5f846, 0x600a8000, 0x5c028800, - 0x5c026800, 0x5c026000, 0x050dfbb3, 0x41780800, - 0x59a804cc, 0x8c00050a, 0x05000002, 0x60040800, - 0x05d9ff3a, 0x59cc0800, 0x82040d00, 0x00ffffff, - 0x59240200, 0xb0000566, 0x48024a00, 0x59cc0408, - 0x8c00051c, 0x05000003, 0x800409c0, 0x05000019, - 0x48064805, 0x812000f0, 0x80040540, 0x48026813, - 0x812241c0, 0x0502000f, 0x59cc0408, 0x8c000518, - 0x05020007, 0x599c0019, 0x8c000510, 0x05000009, - 0x59a80249, 0x84000548, 0x48035249, 0x4c040000, - 0x60001802, 0x60040000, 0x05ddff96, 0x5c000800, - 0x4927c857, 0x83240580, 0x0010e512, 0x05020026, - 0x59a81249, 0x59cc0408, 0x8c00051a, 0x05020005, - 0x84081514, 0x4a0370e5, 0x00000800, 0x0501f004, - 0x84081554, 0x4a0370e5, 0x00000c00, 0x480b5249, - 0x4807503d, 0x80040110, 0x48035046, 0x48038881, - 0x59a80a49, 0x84040d50, 0x59cc0013, 0x8c00053e, - 0x05000003, 0x8c000536, 0x05000004, 0x59cc0017, - 0x8c000536, 0x05020002, 0x84040d10, 0x48075249, - 0x48075449, 0x5924100b, 0x82081500, 0x00001fff, - 0x8c040518, 0x05000004, 0x59a804cc, 0x8c00050a, - 0x05000026, 0x59cc0408, 0x8c000518, 0x05000023, - 0x59a80249, 0x8c000506, 0x05000012, 0x916c0583, - 0x05000004, 0x83240580, 0x0010e512, 0x0500001b, - 0x59240400, 0x8c00050c, 0x05020007, 0x4c040000, - 0x60001802, 0x60040000, 0x05ddff5a, 0x5c000800, - 0x0501f012, 0x64866429, 0x0509fc0b, 0x0501f00f, - 0x0519fa2a, 0x0502000d, 0x4c080000, 0x4c040000, - 0x050dfa18, 0x5c000800, 0x5c001000, 0x05020007, - 0x59a80249, 0x8c000514, 0x05000004, 0x4c040000, - 0x05c5f8aa, 0x5c000800, 0xb0040510, 0xb0000590, - 0x05000008, 0x05e1f9a1, 0x05000006, 0x59cc0009, - 0x4803505a, 0x59cc000a, 0x4803505b, 0x0509f946, - 0x5c00b000, 0x5c028000, 0x1c01f000, 0x4933c857, - 0x59a81449, 0x82080580, 0x0000ffff, 0x0500000f, - 0x4c080000, 0x05e1f991, 0x5c001000, 0x05020012, - 0x59cc0408, 0x8c000518, 0x05000009, 0x8c08050a, - 0x05000011, 0x8c00051c, 0x05020008, 0x8c080518, - 0x0502000d, 0x80000580, 0x1c01f000, 0x8c080508, - 0x05fe07fd, 0x0501f008, 0x8c080518, 0x05fe07fa, - 0x0501f005, 0x90080530, 0x05020003, 0x8c080506, - 0x05fe07f5, 0x4a035449, 0x0000ffff, 0x42000000, - 0x0010e39c, 0x0519f8a3, 0x60303000, 0x61fc19ff, - 0x601c2000, 0x4d200000, 0x417a4000, 0x05d5f909, - 0x5c024000, 0x4d400000, 0x4d3c0000, 0x60043000, - 0x0515fe50, 0x60aa8000, 0x60027804, 0x05c1fb8b, - 0x5c028000, 0x5c027800, 0x90000541, 0x1c01f000, - 0x4933c857, 0x4c580000, 0x59cc0408, 0x8c000518, - 0x05020006, 0x59a80449, 0x82000580, 0x0000ffff, - 0x05000027, 0x0501f011, 0x59a80046, 0x4803c857, - 0x800001c0, 0x05000022, 0x59cc1000, 0x59340013, - 0x82000500, 0x00ffffff, 0x0500001d, 0x82081500, - 0x00ffffff, 0x80080580, 0x05000004, 0x42000000, - 0x0010e432, 0x0501f014, 0x59341806, 0x480fc857, - 0x800c19c0, 0x05000012, 0x91cc140b, 0x6008b000, - 0x91341c06, 0x0501f8da, 0x05000004, 0x42000000, - 0x0010e433, 0x0501f008, 0x91cc140d, 0x6008b000, - 0x91341c08, 0x0501f8d2, 0x05000005, 0x42000000, - 0x0010e434, 0x0519f863, 0x90000541, 0x5c00b000, - 0x1c01f000, 0x4933c857, 0x59cc0206, 0x90000594, - 0x05020015, 0x59cc0407, 0x82000580, 0x00000800, - 0x05020011, 0x59cc0207, 0x8c00051a, 0x0500000d, - 0x82000500, 0x00000f00, 0x82000580, 0x00000100, - 0x05020008, 0x59cc020a, 0x8c000508, 0x05020003, - 0x8c00050a, 0x05000003, 0x80000580, 0x1c01f000, - 0x90000541, 0x1c01f000, 0x4933c857, 0x4943c857, - 0x493fc857, 0x4c5c0000, 0x4d300000, 0x4d340000, - 0x4d2c0000, 0x4d380000, 0x4130b800, 0x42026000, - 0x00111b00, 0x59a8003b, 0x81640480, 0x0502108b, - 0x8d3c0512, 0x05000004, 0x405c0000, 0x81300580, - 0x05000081, 0x05f9fa5d, 0x0500007f, 0x59300407, - 0x90000c92, 0x05021015, 0x5932680a, 0x0c01f001, - 0x0010a029, 0x00109fc3, 0x00109fcc, 0x00109fd6, - 0x00109fc3, 0x00109fcc, 0x00109ffc, 0x0010a00a, - 0x00109fc2, 0x00109fc2, 0x0010a010, 0x00109fc2, - 0x00109fc2, 0x00109fc2, 0x00109fc2, 0x0010a019, - 0x0010a01c, 0x0010a01a, 0x05b1fe18, 0x59300403, - 0xb0000583, 0x05080b8d, 0x0515fe90, 0x0505fdf4, - 0x05c00bab, 0x0505fe01, 0x05fc0af9, 0x0501f05a, - 0x59325809, 0x0505fcfc, 0x05000057, 0x49425a0a, - 0x497a5c0d, 0x0001fb82, 0x59300a29, 0x90040d83, - 0x05040dd4, 0x0501f050, 0x813669c0, 0x05b00e03, - 0x050df985, 0x59300008, 0x8c000500, 0x05000003, - 0x05b9f86d, 0x0501f004, 0x59300203, 0x90000584, - 0x05b80869, 0x59325809, 0x0505fce7, 0x05000042, - 0x592c0208, 0x82000500, 0x000000ff, 0x90000594, - 0x05060dc0, 0x0509fec8, 0x0005f9f3, 0x05e5fc1d, - 0x4a025a08, 0x00000103, 0x59300402, 0x48025c0a, - 0x592c040c, 0x8c000512, 0x05000005, 0x4d2c0000, - 0x592e580d, 0x05b5f9a6, 0x5c025800, 0x49425a0a, - 0x497a580d, 0x0509fb64, 0x0001fb82, 0x0501f02a, - 0x59300203, 0x90000584, 0x05b8084b, 0x59325809, - 0x0505fcc9, 0x05000024, 0x49425a0a, 0x813669c0, - 0x05160b2d, 0x0509feac, 0x0005f9f3, 0x0509fb56, - 0x0001fb82, 0x0501f01c, 0x59300203, 0x90000591, - 0x0502001d, 0x59300429, 0x48026203, 0x0501f01a, - 0x59300203, 0x90000584, 0x05b80837, 0x59325809, - 0x0505fcb5, 0x05000010, 0x49425a0a, 0x0001fb82, - 0x0501f00d, 0x0501f00c, 0x59325819, 0x05b5f980, - 0x59300203, 0x90000584, 0x05b8082b, 0x05b9feea, - 0x59325809, 0x0505fca8, 0x05000003, 0x49425a0a, - 0x0001fb82, 0x05f9fbab, 0x8d3c051c, 0x05000002, + 0x82000580, 0x00ff0000, 0x05000004, 0x60201000, + 0x05ddfe54, 0x05020058, 0x0509f920, 0x05000059, + 0x0509ffbf, 0x05020005, 0x592c0408, 0x8c00051c, + 0x05fe07d5, 0x0501f87b, 0x60140800, 0x05d9fdc5, + 0x64066203, 0x640e6403, 0x05f1f3ec, 0x59cc0408, + 0x8c000518, 0x05000017, 0x0509fcaf, 0x05e1fa55, + 0x05000008, 0x59cc0408, 0x8c000516, 0x05000005, + 0x59300429, 0x900005a1, 0x05fe07c3, 0x1c01f000, + 0x59a8024c, 0x8400054a, 0x4803524c, 0x4803544c, + 0x59a80040, 0x497b8830, 0x84000570, 0x48038832, + 0x59300429, 0x900005a1, 0x05fe07b7, 0x1c01f000, + 0x59a8024c, 0xb0000510, 0xb0000590, 0x05000009, + 0x61bc1001, 0x42024800, 0x001124b6, 0x480a4805, + 0x480b5040, 0x497b8830, 0x84081570, 0x480b8832, + 0x0509fcaa, 0x59a8024c, 0x84000548, 0x4803524c, + 0x4803544c, 0x0515fd52, 0x05fe07a3, 0x599c0019, + 0x8c000510, 0x0502002f, 0x59a8024c, 0x8400054c, + 0x4803524c, 0x601c0800, 0x05d9fd8e, 0x417a7800, + 0x05d9fd82, 0x61bc3801, 0x61a00001, 0x05e9fb03, + 0x05d80db7, 0x05b20c9c, 0x4936600a, 0x05ddf9aa, + 0x05020002, 0x497a6416, 0x599c0208, 0x48026c12, + 0x59340200, 0x8400051a, 0x48026a00, 0x600c0800, + 0x05d9fd7c, 0x64066407, 0x64066203, 0x640a6403, + 0x05f1f3a2, 0x05fdfe74, 0x60040000, 0x0501f012, + 0x599c0017, 0x8c00050a, 0x05fc07ac, 0x60100800, + 0x05d9fd70, 0x493750c7, 0x59a8024c, 0x8c000508, + 0x05000008, 0x599c0018, 0x8c00051c, 0x05000005, + 0x61a00807, 0x42001000, 0x00105a99, 0x05edfab1, + 0x0009f010, 0x4933c857, 0x80003540, 0x05000003, + 0x601c0800, 0x05d9fd5f, 0x801831c0, 0x0502000f, + 0x59302009, 0x801021c0, 0x05000004, 0x58100408, + 0x8c00051e, 0x05020009, 0x59341c03, 0x60102000, + 0x60483000, 0x4d200000, 0x59364013, 0x81224130, + 0x05d5f835, 0x5c024000, 0x05c1fa58, 0x0009f010, + 0x4c5c0000, 0x4d2c0000, 0x59325809, 0x05e5f95f, + 0x5c025800, 0x59cc0008, 0x48002805, 0x59cc0009, + 0x48002806, 0x49782807, 0x49782808, 0x49782809, + 0x4978280a, 0x59cc0013, 0x8c00053e, 0x05000009, + 0x59cc0414, 0x900001c0, 0x59ccbc15, 0x805c0540, + 0x48002807, 0x59cc0416, 0x900001c0, 0x48002808, + 0x59cc0017, 0x8c00053e, 0x05000009, 0x59cc0418, + 0x900001c0, 0x59ccbc19, 0x805c0540, 0x48002809, + 0x59cc041a, 0x900001c0, 0x4800280a, 0x5c00b800, + 0x1c01f000, 0x4933c857, 0x59a800bb, 0x90000594, + 0x0502003a, 0x59a800d6, 0x8c000502, 0x05000011, + 0x05e1f9b8, 0x60401000, 0x05020008, 0x59340002, + 0x82000500, 0x00ff0000, 0x82000580, 0x00ff0000, + 0x05000008, 0x60201000, 0x05ddfd9a, 0x05000005, + 0x59a800d6, 0x8400054c, 0x480350d6, 0x0501f027, + 0x916c0583, 0x0502000c, 0x59300009, 0x80000540, + 0x05020009, 0x59341c03, 0x60182000, 0x604c3000, + 0x4d200000, 0x59364013, 0x81224130, 0x05d1ffea, + 0x5c024000, 0x05d9feb4, 0x05fdfecb, 0x0501fac5, + 0x05020016, 0x59340404, 0x80000540, 0x05000013, + 0x60180800, 0x05d9fcfb, 0x0509f84c, 0x0500000d, + 0x0509feeb, 0x05020007, 0x41780800, 0x4d400000, + 0x60028000, 0x0509fd11, 0x5c028000, 0x0009f010, + 0x4a025a08, 0x00000103, 0x4a025809, 0x02000000, + 0x05c1f9f6, 0x0009f010, 0x05ddfd2f, 0x0509f83b, + 0x05000005, 0x0509feda, 0x05020003, 0x05fdfde2, + 0x0009f010, 0x05fdfde0, 0x0519fba1, 0x80000580, + 0x59a800d6, 0x8c00050c, 0x05000004, 0x8400050c, + 0x480350d6, 0x90000541, 0x05fdf777, 0x4933c857, + 0x59a800bb, 0x90000594, 0x05020006, 0x602c0800, + 0x05d9fcd4, 0x64066203, 0x64066403, 0x05f1f2fb, + 0x60040000, 0x05fdf76c, 0x4933c857, 0x40003000, + 0x59a800bb, 0x90000584, 0x05020018, 0x9018358b, + 0x05020015, 0x5930081d, 0x58040200, 0x8c000500, + 0x050c04a9, 0x58040200, 0x8c000508, 0x0500000c, + 0x84000508, 0x48000a00, 0x600c0800, 0x05d9fcbd, + 0x5930080a, 0x49780806, 0x4a026202, 0x0000ffff, + 0x64066203, 0x65466403, 0x05f1f2e0, 0x601c0800, + 0x05d9fcb4, 0x0009f010, 0x60040000, 0x05fdf74e, + 0x4803c857, 0x4d2c0000, 0x4d3c0000, 0x0c01f804, + 0x5c027800, 0x5c025800, 0x1c01f000, 0x0010a081, + 0x0010a286, 0x0010a081, 0x0010a2c9, 0x0010a081, + 0x0010a338, 0x0010a263, 0x0010a081, 0x0010a081, + 0x0010a34e, 0x0010a081, 0x0010a359, 0x4933c857, + 0x4d1c0000, 0x59301403, 0x90080583, 0x0500001d, + 0x9008159e, 0x05020019, 0x91381595, 0x05020016, + 0x4d300000, 0x5930141b, 0x0509fc87, 0x05b00ba6, + 0x591c1416, 0x8c08051e, 0x0500000b, 0x05f9fea5, + 0x05000009, 0x05ddfac5, 0x4926601d, 0x59340200, + 0x8c000508, 0x05000003, 0x4a026416, 0x00000100, + 0x0509fa6d, 0x82081500, 0xffff1fff, 0x480a3c16, + 0x5c026000, 0x0009f810, 0x5c023800, 0x1c01f000, + 0x05fdff55, 0x05fdf7fd, 0x4933c857, 0x42000000, + 0x001123fc, 0x0519fcce, 0x0519fb35, 0x05ddf894, + 0x0505ffc6, 0x05000007, 0x0509fe65, 0x05020005, + 0x6008b000, 0x0509fe4c, 0x05fdfd6b, 0x0009f010, + 0x0501f8dc, 0x05020020, 0x417a7800, 0x05d9fc5f, + 0x417a7800, 0x05c1f92a, 0x42000000, 0x001123f8, + 0x0519fcbb, 0x59340200, 0x84000558, 0x48026a00, + 0x640a6403, 0x600c3000, 0x0519fa3e, 0x59240400, + 0x8c00050a, 0x0502000b, 0x4d400000, 0x41782800, + 0x60143000, 0x60a68000, 0x0515fc3c, 0x5c028000, + 0x641e6203, 0x64126407, 0x6406642c, 0x1c01f000, + 0x600c0800, 0x05d9fc4f, 0x64066203, 0x05f1fa77, + 0x05fdf7fb, 0x59cc0407, 0x90000589, 0x05020009, + 0x59340412, 0x82000500, 0x000000ff, 0x0500000b, + 0x80000040, 0x48026c12, 0x642a6006, 0x05fdf7f0, + 0x59cc0207, 0x82000500, 0x0000ff00, 0x82000580, + 0x00001900, 0x05fc07d3, 0x05fdfd37, 0x80000580, + 0x05fdf6d5, 0x4933c857, 0x0505ff88, 0x0500000b, + 0x0509fe27, 0x05020009, 0x4c580000, 0x6008b000, + 0x0509fe0d, 0x5c00b000, 0x05fdfd2b, 0x601c0800, + 0x05d9fc2c, 0x0009f010, 0x59340403, 0x82000580, + 0x000007fc, 0x05020007, 0x60100000, 0x05fdf883, + 0x0502003a, 0x601c0800, 0x05d9fc22, 0x0009f010, + 0x05fdfd1d, 0x59340403, 0x82000580, 0x000007fe, + 0x0500001b, 0x59cc3407, 0x82183500, 0x000000ff, + 0x90180585, 0x05000023, 0x9018058b, 0x05000011, + 0x59cc0207, 0x82000500, 0x0000ff00, 0x05020003, + 0x90180d89, 0x0500001b, 0x82000580, 0x00001900, + 0x05020008, 0x90180589, 0x05000016, 0x60100800, + 0x05d9fc08, 0x05c1f911, 0x0519fac5, 0x0009f010, + 0x0519fac3, 0x60040000, 0x05fdf69f, 0x59cc3407, + 0x82183500, 0x000000ff, 0x9018058b, 0x0500001f, + 0x9018058e, 0x0500001d, 0x59cc0207, 0x82000500, + 0x0000ff00, 0x82000580, 0x00001900, 0x05000017, + 0x0505ff46, 0x59325809, 0x05000008, 0x592c0208, + 0x82000580, 0x00000139, 0x05fc07ea, 0x592c0408, + 0x8c00051e, 0x05fe07e7, 0x59340412, 0x800001c0, + 0x05000006, 0x80000040, 0x48026c12, 0x642a6006, + 0x645a6403, 0x1c01f000, 0x59340403, 0x82000580, + 0x000007fe, 0x0502000b, 0x59a8024c, 0x84000540, + 0x4803524c, 0x8c000506, 0x05000004, 0x4a035048, + 0x0000ffff, 0x050dfe2e, 0x05d9f8bf, 0x05fdf7d1, + 0x0519fa93, 0x417a7800, 0x05c1f895, 0x60143000, + 0x0519f9b0, 0x42000000, 0x001123f8, 0x0519fc24, + 0x59300429, 0x900005a1, 0x050c0602, 0x05fdf7c6, + 0x4933c857, 0x0501f844, 0x05020006, 0x60140800, + 0x05d9fbc4, 0x64066203, 0x640e6403, 0x05f1f1eb, + 0x60100800, 0x05d9fbbf, 0x0509fdb1, 0x05020007, + 0x4c580000, 0x6008b000, 0x0509fd97, 0x5c00b000, + 0x05fdfcb5, 0x0009f010, 0x05fdfcb3, 0x0519fa74, + 0x80000580, 0x05fdf650, 0x4933c857, 0x0501f82e, + 0x05020006, 0x60240800, 0x05d9fbae, 0x64066203, + 0x64166403, 0x05f1f1d5, 0x0519fa69, 0x60040000, + 0x05fdf645, 0x4933c857, 0x5930081d, 0x58040200, + 0x8c000500, 0x050c0388, 0x0501f81f, 0x05020006, + 0x602c0800, 0x05d9fb9f, 0x64066203, 0x64066403, + 0x05f1f1c6, 0x5930080a, 0x58040403, 0x82000580, + 0x000007fe, 0x05020004, 0x600c2800, 0x050dfb7f, + 0x0009f010, 0x0519fa52, 0x60040000, 0x05fdf62e, + 0x4933c857, 0x59cc0407, 0x90000583, 0x05020009, + 0x59cc0207, 0x82000500, 0x0000ff00, 0x82000d80, + 0x00002a00, 0x05000003, 0x82000d80, 0x00001e00, + 0x1c01f000, 0x4933c857, 0x90000541, 0x1c01f000, + 0x4933c857, 0x4d400000, 0x4c580000, 0x60028000, + 0x05c1fb2f, 0x59a8024c, 0x90000543, 0x4803524c, + 0x05d5f931, 0x0500000c, 0x59a81cd1, 0x8c0c0506, + 0x0502000f, 0x840c1d44, 0x480f54d1, 0x59cc0408, + 0x8c00051c, 0x05000004, 0x59a8124c, 0x84081558, + 0x480b524c, 0x0501f8c5, 0x05000005, 0x4d300000, + 0x4d340000, 0x4d440000, 0x0501f037, 0x59cc0408, + 0x8c00051c, 0x05000006, 0x59cc0800, 0x82040d00, + 0x00ffffff, 0x800409c0, 0x05000037, 0x0501f8ec, + 0x05000035, 0x4d300000, 0x4d340000, 0x4d440000, + 0x83240580, 0x001124b6, 0x0502002a, 0x59cc0408, + 0x8c00051e, 0x0502000c, 0x42000800, 0x001124b6, + 0x58040406, 0x8c000500, 0x05020007, 0x59cc0408, + 0x8c000518, 0x05000004, 0x59a8024c, 0x84000552, + 0x4803524c, 0x59240400, 0x8c00050a, 0x05020005, + 0x60aa8000, 0x61fe89ff, 0x60083000, 0x0519f932, + 0x60aa8000, 0x4d3c0000, 0x05d5f8fc, 0x05000008, + 0x600a7800, 0x5924100b, 0x82081500, 0x00001fff, + 0x41780800, 0x05c1fc20, 0x0501f003, 0x60027804, + 0x05bdff99, 0x5c027800, 0x42000000, 0x001123f8, + 0x0519fb87, 0x05d5f8ed, 0x05020002, 0x05c1f98a, + 0x05c1fbaa, 0x600a8000, 0x5c028800, 0x5c026800, + 0x5c026000, 0x050dfd23, 0x41780800, 0x59a804d1, + 0x8c00050a, 0x05000002, 0x60040800, 0x05d9fc5d, + 0x59cc0800, 0x82040d00, 0x00ffffff, 0x59240200, + 0xb0000566, 0x48024a00, 0x59cc0408, 0x8c00051c, + 0x05000003, 0x800409c0, 0x05000019, 0x48064805, + 0x812000f0, 0x80040540, 0x48026813, 0x812241c0, + 0x0502000f, 0x59cc0408, 0x8c000518, 0x05020007, + 0x599c0019, 0x8c000510, 0x05000009, 0x59a8024c, + 0x84000548, 0x4803524c, 0x4c040000, 0x60001802, + 0x60040000, 0x05ddfd37, 0x5c000800, 0x4927c857, + 0x83240580, 0x001124b6, 0x05020026, 0x59a8124c, + 0x59cc0408, 0x8c00051a, 0x05020005, 0x84081514, + 0x4a0370e5, 0x00000800, 0x0501f004, 0x84081554, + 0x4a0370e5, 0x00000c00, 0x480b524c, 0x48075040, + 0x80040110, 0x48035049, 0x48038881, 0x59a80a4c, + 0x84040d50, 0x59cc0013, 0x8c00053e, 0x05000003, + 0x8c000536, 0x05000004, 0x59cc0017, 0x8c000536, + 0x05020002, 0x84040d10, 0x4807524c, 0x4807544c, + 0x5924100b, 0x82081500, 0x00001fff, 0x8c040518, + 0x05000004, 0x59a804d1, 0x8c00050a, 0x05000026, + 0x59cc0408, 0x8c000518, 0x05000023, 0x59a8024c, + 0x8c000506, 0x05000012, 0x916c0583, 0x05000004, + 0x83240580, 0x001124b6, 0x0500001b, 0x59240400, + 0x8c00050c, 0x05020007, 0x4c040000, 0x60001802, + 0x60040000, 0x05ddfcfb, 0x5c000800, 0x0501f012, + 0x64866429, 0x0509fc6e, 0x0501f00f, 0x0519fc62, + 0x0502000d, 0x4c080000, 0x4c040000, 0x050dfa86, + 0x5c000800, 0x5c001000, 0x05020007, 0x59a8024c, + 0x8c000514, 0x05000004, 0x4c040000, 0x05c1fc0e, + 0x5c000800, 0xb0040510, 0xb0000590, 0x05000008, + 0x05ddff48, 0x05000006, 0x59cc0009, 0x4803505d, + 0x59cc000a, 0x4803505e, 0x0509f99b, 0x5c00b000, + 0x5c028000, 0x1c01f000, 0x4933c857, 0x59a8144c, + 0x82080580, 0x0000ffff, 0x0500000f, 0x4c080000, + 0x05ddff38, 0x5c001000, 0x05020012, 0x59cc0408, + 0x8c000518, 0x05000009, 0x8c08050a, 0x05000011, + 0x8c00051c, 0x05020008, 0x8c080518, 0x0502000d, + 0x80000580, 0x1c01f000, 0x8c080508, 0x05fe07fd, + 0x0501f008, 0x8c080518, 0x05fe07fa, 0x0501f005, + 0x90080530, 0x05020003, 0x8c080506, 0x05fe07f5, + 0x4a03544c, 0x0000ffff, 0x42000000, 0x0011233d, + 0x0519fadb, 0x60303000, 0x61fc19ff, 0x601c2000, + 0x4d200000, 0x417a4000, 0x05d1fd63, 0x5c024000, + 0x4d400000, 0x4d3c0000, 0x60043000, 0x0519f86a, + 0x60aa8000, 0x60027804, 0x05bdfedb, 0x5c028000, + 0x5c027800, 0x90000541, 0x1c01f000, 0x4933c857, + 0x4c580000, 0x59cc0408, 0x8c000518, 0x05020006, + 0x59a8044c, 0x82000580, 0x0000ffff, 0x0500002b, + 0x0501f015, 0x59a80049, 0x4803c857, 0x800001c0, + 0x05000026, 0x59341806, 0x480fc857, 0x800c19c0, + 0x05000022, 0x59cc1000, 0x59340013, 0x82000500, + 0x00ffffff, 0x0500001d, 0x82081500, 0x00ffffff, + 0x80080580, 0x05000004, 0x42000000, 0x001123d3, + 0x0501f014, 0x59341806, 0x480fc857, 0x800c19c0, + 0x05000012, 0x91cc140b, 0x6008b000, 0x91341c06, + 0x0501f8d8, 0x05000004, 0x42000000, 0x001123d4, + 0x0501f008, 0x91cc140d, 0x6008b000, 0x91341c08, + 0x0501f8d0, 0x05000005, 0x42000000, 0x001123d5, + 0x0519fa97, 0x90000541, 0x5c00b000, 0x1c01f000, + 0x4933c857, 0x59cc0206, 0x90000594, 0x05020015, + 0x59cc0407, 0x82000580, 0x00000800, 0x05020011, + 0x59cc0207, 0x8c00051a, 0x0500000d, 0x82000500, + 0x00000f00, 0x82000580, 0x00000100, 0x05020008, + 0x59cc020a, 0x8c000508, 0x05020003, 0x8c00050a, + 0x05000003, 0x80000580, 0x1c01f000, 0x90000541, + 0x1c01f000, 0x4933c857, 0x4943c857, 0x493fc857, + 0x4c5c0000, 0x4d300000, 0x4d340000, 0x4d2c0000, + 0x4d380000, 0x4130b800, 0x42026000, 0x00115aa4, + 0x050dfc8e, 0x05021089, 0x8d3c0512, 0x05000004, + 0x405c0000, 0x81300580, 0x0500007f, 0x05f9fa07, + 0x0500007d, 0x59300407, 0x90000c92, 0x05021015, + 0x5932680a, 0x0c01f001, 0x0010a56d, 0x0010a509, + 0x0010a512, 0x0010a51c, 0x0010a509, 0x0010a512, + 0x0010a542, 0x0010a550, 0x0010a508, 0x0010a508, + 0x0010a556, 0x0010a508, 0x0010a508, 0x0010a508, + 0x0010a508, 0x0010a55f, 0x0010a560, 0x0010a560, + 0x05b1f90d, 0x59300403, 0xb0000583, 0x05080bed, + 0x0519f8b1, 0x0505fe47, 0x05bc0efc, 0x0505fe54, + 0x05fc0aed, 0x0501f058, 0x59325809, 0x0505fd3f, + 0x05000055, 0x49425a0a, 0x497a5c0d, 0x0001fba8, + 0x59300a29, 0x90040d83, 0x05040e27, 0x0501f04e, + 0x813669c0, 0x05b008f8, 0x050df9f0, 0x59300008, + 0x8c000500, 0x05000003, 0x05b5fbc5, 0x0501f004, + 0x59300203, 0x90000584, 0x05b40bc1, 0x59325809, + 0x0505fd2a, 0x05000040, 0x592c0208, 0x82000500, + 0x000000ff, 0x90000594, 0x05060e13, 0x0509ff28, + 0x0005fa1a, 0x05e5fa5f, 0x4a025a08, 0x00000103, + 0x59300402, 0x48025c0a, 0x592c040c, 0x8c000512, + 0x05000005, 0x4d2c0000, 0x592e580d, 0x05b1fc97, + 0x5c025800, 0x49425a0a, 0x497a580d, 0x0509fbc4, + 0x0001fba8, 0x0501f028, 0x59300203, 0x90000584, + 0x05b40ba3, 0x59325809, 0x0505fd0c, 0x05000022, + 0x49425a0a, 0x813669c0, 0x05160d31, 0x0509ff0c, + 0x0005fa1a, 0x0509fbb6, 0x0001fba8, 0x0501f01a, + 0x59300203, 0x90000591, 0x0502001b, 0x59300429, + 0x48026203, 0x0501f018, 0x59300203, 0x90000584, + 0x05b40b8f, 0x59325809, 0x0505fcf8, 0x0500000e, + 0x49425a0a, 0x0001fba8, 0x0501f00b, 0x0501f00a, + 0x59300203, 0x90000584, 0x05b40b85, 0x05b9fa17, + 0x59325809, 0x0505fced, 0x05000003, 0x49425a0a, + 0x0001fba8, 0x05f9fb7c, 0x8d3c051c, 0x05000002, 0x497a600a, 0x91326430, 0x41580000, 0x81300480, - 0x05fc1778, 0x0501f002, 0x41526000, 0x8d3c0518, - 0x05000011, 0x59a80898, 0x59a80099, 0x80040480, - 0x0500000d, 0x81300800, 0x41540000, 0x80040480, - 0x05021009, 0x5930000a, 0x800001c0, 0x05fe076e, - 0x59300203, 0x90000588, 0x05fe076b, 0x0515fd6d, - 0x05fdf769, 0x5c027000, 0x5c025800, 0x5c026800, - 0x5c026000, 0x5c00b800, 0x1c01f000, 0x5c000000, - 0x4c000000, 0x4803c857, 0x480bc857, 0x480fc857, - 0x485bc857, 0x50080800, 0x500c0000, 0x80042580, - 0x05020007, 0x80081000, 0x800c1800, 0x8058b040, - 0x05fe07f9, 0x80000580, 0x1c01f000, 0x4803c857, - 0x4807c857, 0x480bc857, 0x480fc857, 0x80040480, - 0x05001004, 0x60040000, 0x90040d41, 0x1c01f000, - 0x41780000, 0x05fdf7fd, 0xb1380493, 0x05b21d77, - 0xb138048b, 0x05b01d75, 0x0c01f001, 0x0010a070, - 0x0010a070, 0x0010a070, 0x0010a070, 0x0010a06f, - 0x0010a06f, 0x0010a06f, 0x0010a070, 0x05b1fd6b, - 0x493bc857, 0x64366203, 0x493a6403, 0x42000800, - 0x80000000, 0x0005f6ab, 0x91380593, 0x0502000b, - 0x59300403, 0xb0000590, 0x05b20d60, 0x0509f823, - 0x05000005, 0x643a6203, 0x59a8005e, 0x48026205, - 0x1c01f000, 0x0005f7dc, 0x4933c857, 0x913805a7, - 0x05020027, 0x4933c857, 0x05f1fbe3, 0x4d3c0000, - 0x417a7800, 0x05c1faa3, 0x5c027800, 0x42000000, - 0x0010e454, 0x0515ff4f, 0x4d2c0000, 0x59325809, - 0x0505fc39, 0x492fc857, 0x0500000d, 0x0509fe1e, - 0x05e5fb74, 0x4a025a08, 0x00000103, 0x59300c02, - 0x48065c0a, 0x64a65a0a, 0x497a580d, 0x592c0c0c, - 0x84040d50, 0x48065c0c, 0x0001fb82, 0x5c025800, - 0x60543000, 0x41782800, 0x600c2000, 0x4d400000, - 0x4d440000, 0x59368c03, 0x60a68000, 0x0509fd6c, - 0x5c028800, 0x5c028000, 0x0005f7dc, 0x91380594, - 0x05020009, 0x59300403, 0xb0000c93, 0x05b21d2b, - 0xb0000480, 0x05b01d29, 0x4933c857, 0x4803c857, - 0x0c01f013, 0xb13805a1, 0x05000003, 0xb13805a0, - 0x05020007, 0x05f5f800, 0x05fa037a, 0x59300203, - 0x9000058e, 0x050405c3, 0x1c01f000, 0xb1380593, - 0x05000006, 0xb1380588, 0x05b20d18, 0x59300403, - 0xb0000590, 0x05b20d15, 0x1c01f000, 0x0010a0db, - 0x0010a0da, 0x0010a0da, 0x0010a0da, 0x0010a0da, - 0x0010a0da, 0x0010a0da, 0x0010a0da, 0x0010a0da, - 0x0010a0da, 0x0010a0da, 0x0010a0ed, 0x0010a0ed, - 0x0010a0ed, 0x0010a0ed, 0x0010a0da, 0x0010a0ed, - 0x0010a0da, 0x0010a0ed, 0x05b1fd00, 0x4933c857, - 0x05f1fb8d, 0x0505fbec, 0x000407dc, 0x4d2c0000, - 0x59325809, 0x0509fdd0, 0x05e5fb26, 0x4a025a08, + 0x05fc177a, 0x0501f002, 0x41526000, 0x8d3c0518, + 0x05000012, 0x59a8089b, 0x59a8009c, 0x80040480, + 0x0500000e, 0x81300800, 0x41540000, 0x80040480, + 0x0502100a, 0x5930000a, 0x800001c0, 0x05fe0770, + 0x59300203, 0x90000588, 0x05fe076d, 0x0515ff86, + 0x497a6009, 0x05fdf76a, 0x5c027000, 0x5c025800, + 0x5c026800, 0x5c026000, 0x5c00b800, 0x1c01f000, + 0x5c000000, 0x4c000000, 0x4803c857, 0x480bc857, + 0x480fc857, 0x485bc857, 0x50080800, 0x500c0000, + 0x80042580, 0x05020007, 0x80081000, 0x800c1800, + 0x8058b040, 0x05fe07f9, 0x80000580, 0x1c01f000, + 0x4803c857, 0x4807c857, 0x480bc857, 0x480fc857, + 0x80040480, 0x05001004, 0x60040000, 0x90040d41, + 0x1c01f000, 0x41780000, 0x05fdf7fd, 0xb1380493, + 0x05b2186d, 0xb138048b, 0x05b0186b, 0x0c01f001, + 0x0010a5b5, 0x0010a5b5, 0x0010a5b5, 0x0010a5b5, + 0x0010a5b4, 0x0010a5b4, 0x0010a5b4, 0x0010a5b5, + 0x05b1f861, 0x493bc857, 0x64366203, 0x493a6403, + 0x42000800, 0x80000000, 0x0005f6e2, 0x91380593, + 0x0502000b, 0x59300403, 0xb0000590, 0x05b20856, + 0x0509f876, 0x05000005, 0x643a6203, 0x59a80061, + 0x48026205, 0x1c01f000, 0x0009f010, 0x4933c857, + 0x913805a7, 0x05020027, 0x4933c857, 0x05f1fb5c, + 0x4d3c0000, 0x417a7800, 0x05bdfdf5, 0x5c027800, + 0x42000000, 0x001123f8, 0x0519f985, 0x4d2c0000, + 0x59325809, 0x0505fc7d, 0x492fc857, 0x0500000d, + 0x0509fe7f, 0x05e5f9b7, 0x4a025a08, 0x00000103, + 0x59300c02, 0x48065c0a, 0x64a65a0a, 0x497a580d, + 0x592c0c0c, 0x84040d50, 0x48065c0c, 0x0001fba8, + 0x5c025800, 0x60543000, 0x41782800, 0x600c2000, + 0x4d400000, 0x4d440000, 0x59368c03, 0x60a68000, + 0x0509fdce, 0x5c028800, 0x5c028000, 0x0009f010, + 0x91380594, 0x05020009, 0x59300403, 0xb0000c93, + 0x05b21821, 0xb0000480, 0x05b0181f, 0x4933c857, + 0x4803c857, 0x0c01f012, 0xb13805a1, 0x05000003, + 0xb13805a0, 0x05020007, 0x05f1ff79, 0x05fa0367, + 0x59300203, 0x9000058e, 0x05040617, 0x1c01f000, + 0xb1380586, 0x05000004, 0xb1380585, 0x05000002, + 0x1c01f000, 0x493bc857, 0x05f9f35c, 0x0010a61f, + 0x0010a61e, 0x0010a61e, 0x0010a61e, 0x0010a61e, + 0x0010a61e, 0x0010a61e, 0x0010a61e, 0x0010a61e, + 0x0010a61e, 0x0010a61e, 0x0010a631, 0x0010a631, + 0x0010a631, 0x0010a631, 0x0010a61e, 0x0010a631, + 0x0010a61e, 0x0010a631, 0x05adfff7, 0x4933c857, + 0x05f1fb07, 0x0505fc31, 0x00080010, 0x4d2c0000, + 0x59325809, 0x0509fe32, 0x05e5f96a, 0x4a025a08, 0x00000103, 0x59300402, 0x48025c0a, 0x641a5a0a, - 0x497a580d, 0x0001fb82, 0x5c025800, 0x0505fcbd, - 0x0005f7dc, 0x4933c857, 0x05f1fb7b, 0x0005f7dc, - 0x05b1fcea, 0x59300008, 0x8c000536, 0x05020004, - 0x5930001e, 0x800001c0, 0x050a0d0c, 0x497a6205, - 0x59300004, 0x8c00053e, 0x0502003b, 0x0509fdca, + 0x497a580d, 0x0001fba8, 0x5c025800, 0x0505fd12, + 0x0009f010, 0x4933c857, 0x05f1faf5, 0x0009f010, + 0x05adffe1, 0x59300008, 0x8c000536, 0x05020004, + 0x5930001e, 0x800001c0, 0x050a0d6f, 0x497a6205, + 0x59300004, 0x8c00053e, 0x0502003b, 0x0509fe37, 0x050200f0, 0x59325809, 0x592c0c0c, 0x59cc2808, 0x82141d00, 0x00000c00, 0x05000002, 0x59cc1809, 0x84040d58, 0x48065c0c, 0x82143500, 0x00008fff, 0x05020034, 0x59300008, 0x8c000536, 0x0500000f, 0x60303000, 0x60443800, 0x901409c0, 0x4806580d, - 0x4c5c0000, 0x592cb805, 0x0009f8b5, 0x4d2c0000, - 0x405e5800, 0x05b5f87d, 0x5c025800, 0x497a5805, + 0x4c5c0000, 0x592cb805, 0x0009f8ee, 0x4d2c0000, + 0x405e5800, 0x05b1fb70, 0x5c025800, 0x497a5805, 0x5c00b800, 0x0501f013, 0x59340200, 0x8c00050e, - 0x050200c6, 0x0009f8a5, 0x05020006, 0x64025a0a, - 0x59300013, 0x0509fd99, 0x80000d40, 0x05020a55, + 0x050200c6, 0x0009f8de, 0x05020006, 0x64025a0a, + 0x59300013, 0x0509fdfb, 0x80000d40, 0x05020a55, 0x4a025a08, 0x00000103, 0x4806580b, 0x480e580e, 0x901409c0, 0x4806580d, 0x59300c02, 0x48065c0a, - 0x0509fa31, 0x0509fa34, 0x0001fb82, 0x0509fd82, - 0x05ddf897, 0x59cc0008, 0x8c000518, 0x05060594, - 0x0005f7dc, 0x05f1ff84, 0x05fc07c5, 0x4d3c0000, - 0x600a7800, 0x0501fedc, 0x5c027800, 0x05fdf7c0, + 0x0509fa93, 0x0509fa96, 0x0001fba8, 0x0509fde4, + 0x05d9fe18, 0x59cc0008, 0x8c000518, 0x050605e9, + 0x0009f010, 0x05f1fefe, 0x05fc07c5, 0x4d3c0000, + 0x600a7800, 0x0501ff0a, 0x5c027800, 0x05fdf7c0, 0x4817c857, 0x480fc857, 0x82180500, 0x000000ff, 0x0500000d, 0x592c0208, 0x82000500, 0x000000ff, 0xb0000588, 0x05000003, 0x900005a2, 0x05020006, - 0x592c040b, 0x800001c0, 0x05000003, 0x0509fbc6, - 0x0509f3fd, 0x82180d00, 0x00000c00, 0x05000007, + 0x592c040b, 0x800001c0, 0x05000003, 0x0509fc29, + 0x0509f460, 0x82180d00, 0x00000c00, 0x05000007, 0x59300008, 0x8c000536, 0x05020004, 0x59340200, 0x8c00050e, 0x0502007c, 0x64025a0a, 0x41782000, 0x8c180510, 0x05000009, 0x59cc200b, 0x801021c0, @@ -10370,58 +10707,58 @@ static const uint32_t isp_2500_risc_code[] = { 0x05000028, 0x90183403, 0x80183104, 0x901c3c03, 0x801c3904, 0x9018340c, 0x901c3c11, 0x4c5c0000, 0x901401c0, 0x4802580d, 0x480e580e, 0x592cb805, - 0x4c040000, 0x0009f8b5, 0x5c000800, 0x4c500000, - 0x4c540000, 0x91cca40c, 0x912cac11, 0x0501fe3a, + 0x4c040000, 0x0009f8ee, 0x5c000800, 0x4c500000, + 0x4c540000, 0x91cca40c, 0x912cac11, 0x0501fe68, 0x5c00a800, 0x5c00a000, 0x4d2c0000, 0x405e5800, - 0x05b5f806, 0x5c025800, 0x497a5805, 0x5c00b800, + 0x05b1faf9, 0x5c025800, 0x497a5805, 0x5c00b800, 0x05fdf79c, 0x59300008, 0x8c000536, 0x05fc078a, 0x480e580e, 0x60303000, 0x60443800, 0x05fdf777, 0x59300008, 0x8c000536, 0x05000020, 0x05fdf7d7, - 0x4c040000, 0x4c0c0000, 0x4c140000, 0x0009f8a5, - 0x05020006, 0x64025a0a, 0x59300013, 0x0509fd17, + 0x4c040000, 0x4c0c0000, 0x4c140000, 0x0009f8de, + 0x05020006, 0x64025a0a, 0x59300013, 0x0509fd79, 0x80000d40, 0x050209d3, 0x5c002800, 0x5c001800, 0x4a025a08, 0x00000103, 0x4806580b, 0x480e580e, 0x901409c0, 0x4806580d, 0x5c000800, 0x4c500000, - 0x4c540000, 0x91cca40c, 0x912cac11, 0x0501fe0e, + 0x4c540000, 0x91cca40c, 0x912cac11, 0x0501fe3c, 0x5c00a800, 0x5c00a000, 0x59300008, 0x84000534, 0x48026008, 0x05fdf771, 0x4c040000, 0x4c0c0000, - 0x4c140000, 0x0009f8a5, 0x05020006, 0x64025a0a, - 0x59300013, 0x0509fcf9, 0x80000d40, 0x050209b5, + 0x4c140000, 0x0009f8de, 0x05020006, 0x64025a0a, + 0x59300013, 0x0509fd5b, 0x80000d40, 0x050209b5, 0x4806580b, 0x5c002800, 0x5c001800, 0x59301402, 0x480a5c0a, 0x480e580e, 0x901401c0, 0x4802580d, - 0x0509f991, 0x5c000800, 0x0501fda5, 0x0501fdd6, + 0x0509f9f3, 0x5c000800, 0x0501fdd3, 0x0501fe04, 0x05fdf75f, 0x592c020e, 0x8c000502, 0x05fc0783, 0x592c020c, 0x8c00050e, 0x05fe0780, 0x59300013, 0x800c0d80, 0x05fc077d, 0x4803c857, 0x480fc857, - 0x8c180514, 0x05040526, 0x80000540, 0x05fc0777, - 0x4807c856, 0x0505f522, 0x592c020e, 0x8c000502, + 0x8c180514, 0x0504057b, 0x80000540, 0x05fc0777, + 0x4807c856, 0x0505f577, 0x592c020e, 0x8c000502, 0x05fc0739, 0x59300013, 0x800001c0, 0x05fc0738, - 0x592c020c, 0x8c00050e, 0x05fe0735, 0x0505f518, + 0x592c020c, 0x8c00050e, 0x05fe0735, 0x0505f56d, 0x1c01f000, 0x59cc2006, 0x59cc2807, 0x0501f054, 0x0501f053, 0x1c01f000, 0x4933c857, 0x59300004, 0x8c00053e, 0x05020045, 0x59300008, 0x8c000536, - 0x05020004, 0x5930001e, 0x800001c0, 0x050a0c07, + 0x05020004, 0x5930001e, 0x800001c0, 0x050a0c6a, 0x497a6205, 0x59325809, 0x592c0c0c, 0x41782800, 0x41781800, 0x84040d58, 0x48065c0c, 0x41783000, 0x59300008, 0x8c000536, 0x0500000f, 0x901401c0, 0x4802580d, 0x60303000, 0x60443800, 0x4c5c0000, - 0x592cb805, 0x0009f8b5, 0x4d2c0000, 0x405e5800, - 0x05b1ff82, 0x5c025800, 0x497a5805, 0x5c00b800, + 0x592cb805, 0x0009f8ee, 0x4d2c0000, 0x405e5800, + 0x05b1fa75, 0x5c025800, 0x497a5805, 0x5c00b800, 0x0501f015, 0x59340200, 0x8c00050e, 0x05020018, - 0x0009f8a5, 0x05020007, 0x64025a0a, 0x59300013, - 0x0509fc9e, 0x80000d40, 0x4807c857, 0x05020959, + 0x0009f8de, 0x05020007, 0x64025a0a, 0x59300013, + 0x0509fd00, 0x80000d40, 0x4807c857, 0x05020959, 0x4a025a08, 0x00000103, 0x4806580b, 0x480e580e, 0x901409c0, 0x4806580d, 0x4933c857, 0x59300c02, - 0x48065c0a, 0x0509f934, 0x0509f937, 0x0001fb82, - 0x0509fc85, 0x05d9ff9a, 0x0005f7dc, 0x592c020e, + 0x48065c0a, 0x0509f996, 0x0509f999, 0x0001fba8, + 0x0509fce7, 0x05d9fd1b, 0x0009f010, 0x592c020e, 0x8c000502, 0x05fc07e7, 0x59300013, 0x4803c857, 0x800001c0, 0x05fc07e5, 0x592c020c, 0x8c00050e, - 0x05fe07e2, 0x0505f4ca, 0x05f1fe7f, 0x05fc07bb, + 0x05fe07e2, 0x0505f51f, 0x05f1fdf9, 0x05fc07bb, 0x4933c857, 0x1c01f000, 0x4933c857, 0x59300008, - 0x8c000536, 0x05b00b99, 0x0501f209, 0x4c5c0000, + 0x8c000536, 0x05ac0e90, 0x0501f209, 0x4c5c0000, 0x4c600000, 0x4010b800, 0x4014c000, 0x59325809, 0x59300008, 0x8c000536, 0x0502000b, 0x5930001e, - 0x800001c0, 0x4c140000, 0x050a0bb4, 0x5c002800, + 0x800001c0, 0x4c140000, 0x050a0c17, 0x5c002800, 0x592c020e, 0x8c000502, 0x05020033, 0x8c000500, 0x05000038, 0x640a6203, 0x650e6403, 0x405c0000, 0x592c0813, 0x80040c80, 0x40600000, 0x80040480, @@ -10430,99 +10767,99 @@ static const uint32_t isp_2500_risc_code[] = { 0x05000007, 0x59300a23, 0x90040503, 0x4c140000, 0x0c01f826, 0x5c002800, 0x05000018, 0x485e6015, 0x48626013, 0x497a6205, 0x5c00c000, 0x5c00b800, - 0x4c140000, 0x0505fe2d, 0x5c002800, 0x05000007, - 0x4816602a, 0x4a02601c, 0x0010a278, 0x1c01f000, - 0x5930282a, 0x497a602a, 0x05b5feaf, 0x0502000c, - 0x59300804, 0x0005f69d, 0x4c140000, 0x05f1fe3a, + 0x4c140000, 0x0505fe81, 0x5c002800, 0x05000007, + 0x4816602a, 0x4a02601c, 0x0010a7bc, 0x1c01f000, + 0x5930282a, 0x497a602a, 0x05b5fa0a, 0x0502000c, + 0x59300804, 0x0005f6d4, 0x4c140000, 0x05f1fdb4, 0x5c002800, 0x05fc07e1, 0x5c00c000, 0x5c00b800, - 0x05f9f1b0, 0x5c00c000, 0x5c00b800, 0x4933c857, + 0x05f9f19e, 0x5c00c000, 0x5c00b800, 0x4933c857, 0x1c01f000, 0x4807c857, 0x4004c000, 0x05fdf7d2, - 0x4803c857, 0x05fdf7f5, 0x0010a292, 0x0010a297, - 0x0010a29c, 0x0010a29c, 0x59300224, 0x480350d7, - 0x90000408, 0x480350d6, 0x0501f00a, 0x59300224, - 0x480350d6, 0x90000408, 0x480350d7, 0x0501f005, - 0x59300224, 0x90000408, 0x480350d6, 0x480350d7, - 0x405c1000, 0x41780800, 0x59a800d6, 0x05edfceb, + 0x4803c857, 0x05fdf7f5, 0x0010a7d6, 0x0010a7db, + 0x0010a7e0, 0x0010a7e0, 0x59300224, 0x480350dc, + 0x90000408, 0x480350db, 0x0501f00a, 0x59300224, + 0x480350db, 0x90000408, 0x480350dc, 0x0501f005, + 0x59300224, 0x90000408, 0x480350db, 0x480350dc, + 0x405c1000, 0x41780800, 0x59a800db, 0x05edfc60, 0x800409c0, 0x05020052, 0x40085000, 0x592c1001, 0x800811c0, 0x0500004e, 0x58080208, 0x82000500, 0x000000ff, 0xb000058a, 0x05020049, 0x48281005, - 0x59a800d6, 0x40601000, 0x41780800, 0x4c280000, - 0x05edfcda, 0x5c005000, 0x800409c0, 0x05020038, - 0x40041800, 0x59a800d7, 0x59300804, 0x8c040530, + 0x59a800db, 0x40601000, 0x41780800, 0x4c280000, + 0x05edfc4f, 0x5c005000, 0x800409c0, 0x05020038, + 0x40041800, 0x59a800dc, 0x59300804, 0x8c040530, 0x05000005, 0x59300827, 0x800800c6, 0x48000806, 0x59300224, 0x800c1c00, 0x80081040, 0x05fe07fe, - 0x480e602c, 0x592c4801, 0x802449c0, 0x05b00b13, + 0x480e602c, 0x592c4801, 0x802449c0, 0x05ac0e0a, 0x58240a09, 0x592c1815, 0x59303023, 0x8c180506, 0x05000003, 0x40280000, 0x80040c00, 0x800400e0, 0x80040540, 0x48026021, 0x8c18050a, 0x05020003, 0x40280000, 0x800c1c00, 0x480e601f, 0x59300804, 0x8c040530, 0x0500000e, 0x4c280000, 0x592c1001, - 0x59306827, 0x592c5a0e, 0x0005f9a1, 0x5c005000, - 0x802851c0, 0x05ba0b9e, 0x05020015, 0x59300827, + 0x59306827, 0x592c5a0e, 0x0005f9c8, 0x5c005000, + 0x802851c0, 0x05b60ecb, 0x05020015, 0x59300827, 0x58040006, 0x49780806, 0x48000810, 0x59300224, 0x59303023, 0x8c18050e, 0x05000002, 0x80000580, 0x48026424, 0x90000541, 0x1c01f000, 0x592c1813, 0x805c0418, 0x800c0580, 0x05fc07c6, 0x4933c857, 0x485fc857, 0x4863c857, 0x480fc857, 0x80000580, 0x1c01f000, 0xb1380498, 0x05021063, 0xb1380480, - 0x05001002, 0x0c01f002, 0x1c01f000, 0x0010a317, - 0x0010a317, 0x0010a317, 0x0010a317, 0x0010a317, - 0x0010a317, 0x0010a317, 0x0010a317, 0x0010a317, - 0x0010a317, 0x0010a318, 0x0010a317, 0x0010a317, - 0x0010a317, 0x0010a317, 0x0010a322, 0x0010a317, - 0x0010a317, 0x0010a317, 0x0010a317, 0x0010a34d, - 0x0010a317, 0x0010a317, 0x0010a317, 0x05b1fac3, - 0x4933c857, 0x05f1fc30, 0x640a6203, 0x59a8005e, + 0x05001002, 0x0c01f002, 0x1c01f000, 0x0010a85b, + 0x0010a85b, 0x0010a85b, 0x0010a85b, 0x0010a85b, + 0x0010a85b, 0x0010a85b, 0x0010a85b, 0x0010a85b, + 0x0010a85b, 0x0010a85c, 0x0010a85b, 0x0010a85b, + 0x0010a85b, 0x0010a85b, 0x0010a866, 0x0010a85b, + 0x0010a85b, 0x0010a85b, 0x0010a85b, 0x0010a891, + 0x0010a85b, 0x0010a85b, 0x0010a85b, 0x05adfdba, + 0x4933c857, 0x05f1fbaa, 0x640a6203, 0x59a80061, 0x48026205, 0x59300013, 0x59300817, 0x80040c80, - 0x48066017, 0x05f1f12b, 0x4933c857, 0x05f1f929, - 0x4d3c0000, 0x417a7800, 0x05c1f806, 0x5c027800, - 0x42000000, 0x0010e454, 0x0515fcb2, 0x0505f99e, - 0x05000010, 0x4d2c0000, 0x59325809, 0x0509fb82, - 0x05e5f8d8, 0x4a025a08, 0x00000103, 0x59300402, + 0x48066017, 0x05f1f0a5, 0x4933c857, 0x05f1f8a3, + 0x4d3c0000, 0x417a7800, 0x05bdfb59, 0x5c027800, + 0x42000000, 0x001123f8, 0x0515fee9, 0x0505f9e3, + 0x05000010, 0x4d2c0000, 0x59325809, 0x0509fbe4, + 0x05e1ff1c, 0x4a025a08, 0x00000103, 0x59300402, 0x48025c0a, 0x64a65a0a, 0x497a580d, 0x592c0c0c, - 0x84040d50, 0x48065c0c, 0x0001fb82, 0x5c025800, + 0x84040d50, 0x48065c0c, 0x0001fba8, 0x5c025800, 0x60503000, 0x41782800, 0x4d400000, 0x4d440000, - 0x59368c03, 0x60082000, 0x60a68000, 0x0509fad0, + 0x59368c03, 0x60082000, 0x60a68000, 0x0509fb33, 0x5c028800, 0x5c028000, 0x59300008, 0x8c000536, - 0x05000004, 0x59300004, 0x8c000516, 0x05f80085, - 0x0005f7dc, 0x4933c857, 0x59cc0a04, 0x48066202, + 0x05000004, 0x59300004, 0x8c000516, 0x05f80056, + 0x0009f010, 0x4933c857, 0x59cc0a04, 0x48066202, 0x59300809, 0x4978080d, 0x4978080e, 0x5804140c, 0x84081558, 0x48080c0c, 0x59300008, 0x8c000536, 0x05000004, 0x5804040c, 0x84000542, 0x48000c0c, - 0x1c01f000, 0xb13805a1, 0x05020014, 0x05f1f9b4, - 0x0501fdd0, 0x0502000c, 0x05f1fe9a, 0x05fc07ff, + 0x1c01f000, 0xb13805a1, 0x05020014, 0x05f1f92e, + 0x0501fe06, 0x0502000c, 0x05f1fe14, 0x05fc07ff, 0x811800ca, 0x81c80c00, 0x58040138, 0x59cc0a03, - 0x80000040, 0x80040580, 0x05020007, 0x05f1fe8b, + 0x80000040, 0x80040580, 0x05020007, 0x05f1fe05, 0x05000005, 0x59300c16, 0x84040d44, 0x48066416, - 0x497a6205, 0x05f1f193, 0xb13805a0, 0x05fe07fe, + 0x497a6205, 0x05f1f10d, 0xb13805a0, 0x05fe07fe, 0x59cc0002, 0x8c000526, 0x05fe07e9, 0x05fdf7fa, 0x4807c857, 0x8c04053e, 0x05020024, 0x497a5a0a, - 0x5930002b, 0x80000540, 0x05000019, 0x0509ff19, + 0x5930002b, 0x80000540, 0x05000019, 0x050df88b, 0x05000021, 0x497a5a0a, 0x4c040000, 0x4c080000, 0x4c0c0000, 0x4c100000, 0x4c140000, 0x40002800, 0x58141003, 0x40040000, 0x80081480, 0x48082803, - 0x40140000, 0x05b5fb83, 0x5c002800, 0x5c002000, + 0x40140000, 0x05b1fedd, 0x5c002800, 0x5c002000, 0x5c001800, 0x5c001000, 0x5c000800, 0x592c020a, 0x80000540, 0x05020008, 0x0501f005, 0x592c040c, 0x8c00051c, 0x05000002, 0x592c0806, 0x4807c857, 0x64565a0a, 0x1c01f000, 0x5930002b, 0x80000540, 0x05000007, 0x64465a0a, 0x5930002b, 0x4c040000, - 0x05b5fb6c, 0x5c000800, 0x05fdf7f7, 0x4807c856, + 0x05b1fec6, 0x5c000800, 0x05fdf7f7, 0x4807c856, 0x641e5a0a, 0x1c01f000, 0xb1380498, 0x05001006, - 0xb13805a1, 0x05000003, 0xb13805a0, 0x05b20a2b, + 0xb13805a1, 0x05000003, 0xb13805a0, 0x05ae0d22, 0x1c01f000, 0xb1380480, 0x05001004, 0x4d2c0000, - 0x0c01f803, 0x5c025800, 0x1c01f000, 0x0010a3cf, - 0x0010a3cf, 0x0010a3cf, 0x0010a3cf, 0x0010a3cf, - 0x0010a3d1, 0x0010a3d0, 0x0010a3cf, 0x0010a44b, - 0x0010a3cf, 0x0010a3cf, 0x0010a3cf, 0x0010a3cf, - 0x0010a3cf, 0x0010a3cf, 0x0010a3cf, 0x0010a3cf, - 0x0010a3cf, 0x0010a3cf, 0x0010a52b, 0x0010a55c, - 0x0010a53b, 0x0010a3d0, 0x0010a565, 0x05b1fa0b, - 0x1c01f000, 0x5930001e, 0x800001c0, 0x050a0a2f, + 0x0c01f803, 0x5c025800, 0x1c01f000, 0x0010a913, + 0x0010a913, 0x0010a913, 0x0010a913, 0x0010a913, + 0x0010a915, 0x0010a914, 0x0010a913, 0x0010a98f, + 0x0010a913, 0x0010a913, 0x0010a913, 0x0010a913, + 0x0010a913, 0x0010a913, 0x0010a913, 0x0010a913, + 0x0010a913, 0x0010a913, 0x0010aa80, 0x0010aab1, + 0x0010aa90, 0x0010a914, 0x0010aaba, 0x05adfd02, + 0x1c01f000, 0x5930001e, 0x800001c0, 0x050a0a92, 0x59300008, 0x8c00050e, 0x05000074, 0x8c000500, 0x05000066, 0x8c00051c, 0x05000008, 0x84000500, 0x48026008, 0x59325809, 0x592c3c0c, 0x841c3d58, - 0x481e5c0c, 0x0009f03f, 0x59325809, 0x592c3c0c, + 0x481e5c0c, 0x0009f078, 0x59325809, 0x592c3c0c, 0x841c3d58, 0x59300008, 0x8c00051c, 0x05fe07f4, 0x481e5c0c, 0x60140000, 0x40000000, 0x80000040, 0x05fe07fe, 0x59300008, 0x8c00051c, 0x05fe07ec, @@ -10530,751 +10867,772 @@ static const uint32_t isp_2500_risc_code[] = { 0x82000500, 0x000000ff, 0xb0000588, 0x05000003, 0x900005a2, 0x0502000a, 0x497a580f, 0x82040500, 0x000000ff, 0x05000006, 0x592c040b, 0x800001c0, - 0x05000003, 0x0509f910, 0x05b5f402, 0x900421c0, + 0x05000003, 0x0509f973, 0x05b1f75c, 0x900421c0, 0x4812580d, 0x41782000, 0x82040500, 0x00000c00, 0x05000002, 0x59cc2009, 0x82043500, 0x00000fff, 0x0502001e, 0x481e5c0c, 0x64025a0a, 0x801831c0, - 0x05b403f4, 0x41782000, 0x8c180510, 0x05000002, + 0x05b0074e, 0x41782000, 0x8c180510, 0x05000002, 0x59cc200b, 0x48125810, 0x41780000, 0x8c180512, 0x05000002, 0x59cc000a, 0x4802580f, 0x80100c00, - 0x05b019be, 0x05b403e7, 0x9004149d, 0x05021009, + 0x05ac1cb5, 0x05b00741, 0x9004149d, 0x05021009, 0x4c500000, 0x4c540000, 0x91cca40c, 0x912cac11, - 0x0501fb9d, 0x5c00a800, 0x5c00a000, 0x05b5f3dd, - 0x0501fb4b, 0x05b5f3db, 0x412c7800, 0x05b1fd57, - 0x05b009ae, 0x492c780d, 0x841c3d52, 0x481c7c0c, + 0x0501fbcb, 0x5c00a800, 0x5c00a000, 0x05b1f737, + 0x0501fb79, 0x05b1f735, 0x412c7800, 0x05b1f84a, + 0x05ac0ca5, 0x492c780d, 0x841c3d52, 0x481c7c0c, 0x4a025a08, 0x00000103, 0x4812580e, 0x900401c0, 0x4802580d, 0x583c0408, 0x583c1009, 0x583c220c, 0x48025c08, 0x480a5809, 0x48125a0c, 0x583c0002, 0x48025802, 0x05fdf7d0, 0x8c000524, 0x05fc079c, 0x59325809, 0x4c000000, 0x592c040c, 0x8c00051c, 0x5c000000, 0x05020003, 0x4a026013, 0xffffffff, - 0x84000524, 0x05fdf792, 0x1c01f000, 0x59a8005e, + 0x84000524, 0x05fdf792, 0x1c01f000, 0x59a80061, 0x48026205, 0x59325809, 0x640a6203, 0x592c240c, 0x59300808, 0x4933c857, 0x4807c857, 0x592c0208, 0x82000500, 0x000000ff, 0xb0001db5, 0x05020006, 0x592c1a0e, 0x8c0c0506, 0x05000003, 0x64025a0a, 0x0501f00a, 0xb0000588, 0x05000003, 0x900005a2, - 0x05020003, 0x8c100500, 0x050a00e7, 0x64025a0a, - 0x8c04051e, 0x05000044, 0x41780800, 0x497a580d, + 0x05020003, 0x8c100500, 0x050a014a, 0x64025a0a, + 0x8c04051e, 0x05000055, 0x41780800, 0x497a580d, 0x592c1c0d, 0x59300008, 0x8c00052c, 0x05000003, 0x4a026013, 0x7fffffff, 0x8c000536, 0x05000012, 0x41782800, 0x60303000, 0x60443800, 0x4c0c0000, - 0x4c100000, 0x4c5c0000, 0x592cb805, 0x0009f8b5, - 0x4d2c0000, 0x405e5800, 0x05b1fd18, 0x5c025800, + 0x4c100000, 0x4c5c0000, 0x592cb805, 0x0009f8ee, + 0x4d2c0000, 0x405e5800, 0x05b1f80b, 0x5c025800, 0x497a5805, 0x5c00b800, 0x5c002000, 0x5c001800, - 0x0501f017, 0x59300013, 0x59341200, 0x497a6205, - 0x8c08050e, 0x0502006e, 0x4807c857, 0x40041000, - 0x0509fa32, 0x480a580e, 0x80000d40, 0x05fe0eed, - 0x59300402, 0x48025c0a, 0x4806580b, 0x4a025a08, - 0x00000103, 0x4c040000, 0x592c0a0c, 0x8c040512, - 0x05000002, 0x64325a0a, 0x5c000800, 0x4c040000, - 0x4c0c0000, 0x4c100000, 0x0505fec3, 0x0509fa16, - 0x5c002000, 0x5c001800, 0x5c000800, 0x8c100512, - 0x05020017, 0x4c0c0000, 0x0505febf, 0x0001fb82, - 0x05d9fd23, 0x5c001800, 0x8c0c0518, 0x000407dc, - 0x0505f21f, 0x4813c857, 0x8c100518, 0x05000046, - 0x41780800, 0x592c1c0d, 0x820c0580, 0x00001000, - 0x05fc07b9, 0x8c100512, 0x05fc07b7, 0x592c780d, - 0x583c080e, 0x583c1c0d, 0x05fdf7b3, 0x4807c857, - 0x592c780d, 0x59300402, 0x592c1408, 0x8c08051e, - 0x0502000e, 0x592c120a, 0x48007c0a, 0x4804780b, - 0x48087a0a, 0x84102512, 0x48107c0c, 0x4c0c0000, - 0x4c3c0000, 0x05b1fcd6, 0x5c007800, 0x403e5800, - 0x0501fadd, 0x05fdf7db, 0x48025c0a, 0x4806580b, - 0x583c0810, 0x583c000f, 0x80040c00, 0x9004149d, - 0x05001005, 0x583c1001, 0x480a5801, 0x49787801, - 0x60700800, 0x90040c14, 0x4c0c0000, 0x4c500000, - 0x4c540000, 0x903ca40c, 0x912cac0c, 0x4c100000, - 0x4c3c0000, 0x0501fae4, 0x5c007800, 0x5c002000, - 0x5c00a800, 0x5c00a000, 0x84102512, 0x48125c0c, - 0x403e5800, 0x05b1fcb6, 0x0505fe77, 0x42034000, - 0x0010dceb, 0x59a1d806, 0x80edd9c0, 0x05b008ef, - 0x48efc857, 0x58ec0009, 0x4803c857, 0x0801f800, - 0x05fdf7b4, 0x4933c857, 0x1c01f000, 0x59301416, - 0x480bc857, 0x8c08051c, 0x0502000e, 0x80000540, - 0x4803c857, 0x05fc078d, 0x80042c80, 0x05fe178b, - 0x8c080514, 0x05020005, 0x592c0813, 0x4807c857, - 0x80040480, 0x48026018, 0x8408155c, 0x480a6416, - 0x59301008, 0x8408151e, 0x480a6008, 0x4c100000, - 0x4c3c0000, 0x4d400000, 0x592e820a, 0x64065a0a, - 0x0505fe51, 0x49425a0a, 0x5c028000, 0x5c007800, - 0x5c002000, 0x497a580d, 0x8c100512, 0x05000005, - 0x4d2c0000, 0x403e5800, 0x05b1fc85, 0x5c025800, - 0x82102500, 0xffffedff, 0x48125c0c, 0x59301006, - 0x800811c0, 0x050401e6, 0x59a8005e, 0x80080480, - 0x050611e3, 0x0509f990, 0x05e1fee6, 0x4a025a08, - 0x00000103, 0x641a5a0a, 0x497a5c0d, 0x492fc857, - 0x0001fb82, 0x05d9fc9e, 0x0005f7dc, 0x59325809, - 0x592c040c, 0x8c000518, 0x05000003, 0x412df800, - 0x05b5f2ec, 0x592c0208, 0x82000500, 0x000000ff, - 0xb0001db5, 0x05020005, 0x592c1a0e, 0x8c0c0506, - 0x05000002, 0x05fdf712, 0x1c01f000, 0x4933c857, - 0x59325809, 0x497a580d, 0x64025a0a, 0x4a025a08, - 0x00000103, 0x59300813, 0x4807c857, 0x800409c0, - 0x0502000a, 0x4806580b, 0x59300c02, 0x48065c0a, - 0x0505fe15, 0x0509f968, 0x0505fe17, 0x0001fb82, - 0x05d9fc7b, 0x0005f7dc, 0x59340200, 0x8c00050e, - 0x05020007, 0x59300013, 0x0509f968, 0x80000d40, - 0x05fdfe24, 0x4806580b, 0x05fdf7f0, 0x592c020c, - 0x8c00050e, 0x05fe07f8, 0x4933c857, 0x0505f1a8, - 0x4933c857, 0x59325809, 0x812e59c0, 0x05b0087b, - 0x592c020e, 0x8c000502, 0x05b00878, 0x640a6006, - 0x1c01f000, 0x5930001e, 0x800001c0, 0x050a089b, - 0x59300008, 0x4933c857, 0x4803c857, 0x8c00050e, - 0x05000034, 0x8c000500, 0x05000026, 0x8c00051c, - 0x05000009, 0x84000500, 0x48026008, 0x59325809, - 0x592c3c0c, 0x481fc857, 0x841c3d58, 0x481e5c0c, - 0x0009f03f, 0x59325809, 0x592c3c0c, 0x841c3d58, - 0x59300008, 0x8c00051c, 0x05fe07f3, 0x481e5c0c, - 0x60140000, 0x40000000, 0x80000040, 0x05fe07fe, - 0x59300008, 0x8c00051c, 0x05fe07eb, 0x592c0208, - 0x82000500, 0x000000ff, 0xb0000588, 0x05000003, - 0x900005a2, 0x05020003, 0x497a580f, 0x0501f002, - 0x497a580d, 0x481e5c0c, 0x64025a0a, 0x05b5f271, - 0x8c000524, 0x05fc07dc, 0x59325809, 0x4c000000, - 0x592c040c, 0x8c00051c, 0x5c000000, 0x05020003, - 0x4a026013, 0xffffffff, 0x84000524, 0x05fdf7d2, - 0x1c01f000, 0x4933c857, 0x41780800, 0xb1380498, - 0x05021009, 0xb1380480, 0x05001007, 0x4d2c0000, - 0x59325809, 0x812e59c0, 0x0c020805, 0x5c025800, - 0x0005f7dc, 0x493bc857, 0x1c01f000, 0x0010a5c7, - 0x0010a5c7, 0x0010a5c7, 0x0010a5c7, 0x0010a5c7, - 0x0010a5c8, 0x0010a5c7, 0x0010a5c7, 0x0010a5c7, - 0x0010a5c7, 0x0010a5c7, 0x0010a5c7, 0x0010a5c7, - 0x0010a5c7, 0x0010a5c7, 0x0010a5c7, 0x0010a5c7, - 0x0010a5c7, 0x0010a5c7, 0x0010a5c7, 0x0010a5cb, - 0x0010a5c7, 0x0010a5c7, 0x0010a5c7, 0x05b1f813, - 0x59cc0808, 0x497a580b, 0x4807c857, 0x59300402, - 0x48025c0a, 0x4a025a08, 0x00000103, 0x900401c0, - 0x4802580d, 0x64025a0a, 0x800409c0, 0x00000382, - 0x59cc0009, 0x4802580e, 0x82042500, 0x00000100, - 0x05000002, 0x59cc200b, 0x48125810, 0x82040500, - 0x00000200, 0x05000002, 0x59cc000a, 0x4802580f, - 0x80100c00, 0x05ac1ff9, 0x00000382, 0x9004149d, - 0x05001005, 0x592c0408, 0x8c00051e, 0x0500000a, - 0x60700800, 0x4c500000, 0x4c540000, 0x91cca40c, - 0x912cac11, 0x0501f9d4, 0x5c00a800, 0x5c00a000, - 0x0001f382, 0x0501f982, 0x0501f1b3, 0x83380480, - 0x00000093, 0x05ae1fe5, 0x83380480, 0x00000085, - 0x05ac1fe2, 0x0c01f001, 0x0010a608, 0x0010a607, - 0x0010a607, 0x0010a60d, 0x0010a607, 0x0010a607, - 0x0010a607, 0x0010a607, 0x0010a607, 0x0010a607, - 0x0010a607, 0x0010a607, 0x0010a607, 0x05adffd3, - 0x64066203, 0x493a6403, 0x42000800, 0x80000040, - 0x0005f6ab, 0x83300580, 0x00111a70, 0x05ae0fcb, - 0x4933c857, 0x59cc1404, 0x0505fb47, 0x0500002c, - 0x591c0203, 0x90000580, 0x05000029, 0x591c000a, - 0x81340580, 0x05020026, 0x59cc1204, 0x82080580, - 0x0000ffff, 0x05000007, 0x591c0202, 0x82000d80, - 0x0000ffff, 0x05000003, 0x80080580, 0x0502001c, - 0x4d300000, 0x4d1c0000, 0x411e6000, 0x0501f9e5, - 0x5c023800, 0x5c026000, 0x05000013, 0x59cc0005, - 0x8c000500, 0x05020003, 0x0501f99a, 0x0501f002, - 0x640a3a03, 0x4a026403, 0x00000086, 0x59cc0005, - 0x8c000500, 0x0500000c, 0x591c0416, 0x8400055a, - 0x48023c16, 0x59300416, 0x8400055a, 0x48026416, - 0x0501f005, 0x0501f9c2, 0x05fc07ed, 0x4a026403, - 0x00000087, 0x4d2c0000, 0x0511ff81, 0x05d9fecc, - 0x5c025800, 0x59340200, 0x8c00050e, 0x0500000b, - 0x59cc1404, 0x0505fb10, 0x05000008, 0x591c0416, - 0x8c00051a, 0x05000005, 0x4d300000, 0x411e6000, - 0x0505f8c5, 0x5c026000, 0x1c01f000, 0x91380593, - 0x0502000a, 0x59300403, 0x4803c857, 0x82000d80, - 0x00000086, 0x05000015, 0x82000d80, 0x00000087, - 0x05ae0f7e, 0x0501f011, 0x913805a7, 0x05000003, - 0x91380594, 0x05ae0f79, 0x493bc857, 0x05edfe06, - 0x0501fe65, 0x05f4056b, 0x4d2c0000, 0x59325809, - 0x0001fb82, 0x59300a29, 0x90040d83, 0x05000f3d, - 0x5c025800, 0x05f5f563, 0x4933c857, 0x0505fa2f, - 0x05f60560, 0x0005f7dc, 0x91380593, 0x05020006, - 0x59300403, 0x4803c857, 0x82000480, 0x00000085, - 0x0c01f04c, 0x913805a7, 0x05020040, 0x4933c857, - 0x05edfded, 0x59300416, 0x8c00051a, 0x05020002, - 0x0005f7dc, 0x4d3c0000, 0x417a7800, 0x05bdfca9, - 0x5c027800, 0x60543000, 0x41782800, 0x600c2000, - 0x60a68000, 0x4d400000, 0x4d440000, 0x59368c03, - 0x0505ff87, 0x5c028800, 0x5c028000, 0x42000000, - 0x0010e454, 0x0515f94b, 0x0501fe37, 0x000407dc, - 0x4d2c0000, 0x59325809, 0x592c0208, 0x82000500, - 0x000000ff, 0x90000594, 0x05020f0e, 0x0509f816, - 0x05e1fd6c, 0x4a025a08, 0x00000103, 0x59300402, - 0x48025c0a, 0x497a580d, 0x49425a0a, 0x0001fb82, - 0x5c025800, 0x0005f7dc, 0xb13805a1, 0x05000009, - 0xb13805a0, 0x05000007, 0x83380580, 0x00000089, - 0x05000004, 0x83380580, 0x0000008a, 0x05f60585, - 0x05f1fa09, 0x05f60583, 0x59300a03, 0x9004058e, - 0x050007bd, 0x9004058a, 0x0500003c, 0x9004058c, - 0x0500003a, 0x05adff21, 0x91380594, 0x05fe07eb, - 0x4933c857, 0x05edfdac, 0x59300416, 0x8c00051a, - 0x05020002, 0x0005f7dc, 0x601a8000, 0x05fdf7cf, - 0x0010a6d2, 0x0010a6d1, 0x0010a6d1, 0x0010a6d1, - 0x0010a6d1, 0x0010a6d1, 0x0010a6e2, 0x0010a6d1, - 0x0010a6d1, 0x0010a6d1, 0x0010a6d1, 0x0010a6d1, - 0x0010a6d1, 0x05adff09, 0x4933c857, 0x0505f9cb, - 0x0500000a, 0x643a6203, 0x59a8005e, 0x48026205, - 0x59300416, 0x8c00051a, 0x05020003, 0x59a8005c, - 0x48026006, 0x1c01f000, 0x59a8005c, 0x48026006, - 0x642a6203, 0x1c01f000, 0x4933c857, 0x0505f9bb, - 0x0500000a, 0x643a6203, 0x59a8005e, 0x48026205, - 0x59300416, 0x8c00051a, 0x05020003, 0x59a8005c, - 0x48026006, 0x1c01f000, 0x59a8005c, 0x48026006, - 0x64326203, 0x1c01f000, 0x5932680a, 0x83380580, - 0x00000089, 0x05000007, 0x83380580, 0x0000008a, - 0x0500002c, 0x4933c857, 0x493bc857, 0x05f5f539, - 0x4933c857, 0x59325809, 0x59300416, 0x8c00051a, - 0x0500000b, 0x59300229, 0x90000583, 0x05ae0ed7, - 0x640e6407, 0x59300429, 0x48026203, 0x59340200, - 0x8c00050e, 0x0506000c, 0x1c01f000, 0x59300a29, - 0x90040583, 0x05020007, 0x0501fdbb, 0x0500000d, - 0x0001fb82, 0x05d9fab6, 0x497a6009, 0x0501f009, - 0x59300229, 0x90000581, 0x05020006, 0x59300c18, - 0x900405b9, 0x05000019, 0x900405b5, 0x05000017, - 0x59cc0c07, 0x4806641b, 0x59cc0a07, 0x4806621b, - 0x59300203, 0x48026429, 0x64466203, 0x05f5f4ad, - 0x4933c857, 0x59300416, 0x8c00051a, 0x000607dc, - 0x59300229, 0x90000581, 0x0502003f, 0x59300c18, - 0x900405b5, 0x05000005, 0x9004059e, 0x05000003, - 0x900405b9, 0x05020038, 0x4933c857, 0x4c5c0000, - 0x4c600000, 0x4d1c0000, 0x4130b800, 0x4004c000, - 0x0505f9de, 0x0502002b, 0x906005b5, 0x05020004, - 0x591c0c16, 0x8c040502, 0x05000026, 0x05f5fcc4, - 0x05000024, 0x491fc857, 0x4933c857, 0x906005b5, - 0x05000003, 0x906005b9, 0x05020002, 0x4932381e, - 0x585c081d, 0x4806601d, 0x48626403, 0x64066203, - 0x64066407, 0x585c080a, 0x4807c857, 0x4806600a, - 0x585c0c17, 0x4807c857, 0x48066417, 0x585c0a17, - 0x4807c857, 0x48066217, 0x585c0a18, 0x4807c857, - 0x48066218, 0x585c0c1b, 0x4807c857, 0x4806641b, - 0x585c0a1b, 0x4807c857, 0x4806621b, 0x491e602a, - 0x0505f92f, 0x42000800, 0x80000040, 0x0005feab, - 0x405e6000, 0x5c023800, 0x5c00c000, 0x5c00b800, - 0x0005f7dc, 0x0501fd60, 0x05000008, 0x4d2c0000, - 0x59325809, 0x0001fb82, 0x59300229, 0x90000583, - 0x05d80a57, 0x5c025800, 0x0005f7dc, 0x4803c856, - 0x4c5c0000, 0x4c600000, 0x4c640000, 0x4c500000, - 0x4c540000, 0x412cb800, 0x4d2c0000, 0x6004c000, - 0x82040480, 0x00000101, 0x05001002, 0x60000802, - 0x4004c800, 0x60700800, 0x91cca40c, 0x912cac11, - 0x0501f83d, 0x9064cc9c, 0x592e5801, 0x812e59c0, - 0x05b20a13, 0x05b1f9f9, 0x05000011, 0x8060c000, - 0x4a025808, 0x00000110, 0x492cb801, 0x90640cbd, - 0x05021005, 0x40640800, 0x912cac09, 0x0501f82e, - 0x0501f007, 0x9064ccbc, 0x60f00800, 0x412cb800, - 0x912cac09, 0x0501f828, 0x05fdf7ef, 0x5c025800, - 0x8460c1c0, 0x9060c543, 0x48625a08, 0x5c00a800, - 0x5c00a000, 0x5c00c800, 0x5c00c000, 0x5c00b800, - 0x1c01f000, 0x492fc857, 0x812e59c0, 0x05000012, - 0x592c2802, 0x4d2c0000, 0x4c3c0000, 0x592c7801, - 0x803c79c0, 0x05000009, 0x497a5801, 0x4c140000, - 0x4c3c0000, 0x0001fb82, 0x5c025800, 0x5c002800, - 0x48165802, 0x05fdf7f6, 0x5c007800, 0x0001fb82, - 0x5c025800, 0x1c01f000, 0x4803c856, 0x4c580000, - 0x90040403, 0x8000b104, 0x0515f8e9, 0x5c00b000, - 0x1c01f000, 0x4803c856, 0x4c580000, 0x90040c03, - 0x8004b104, 0x0515f8e2, 0x5c00b000, 0x1c01f000, - 0x591c0c07, 0x90040583, 0x05000005, 0x90040582, - 0x05000003, 0x9004058a, 0x05020022, 0x4d300000, - 0x4d2c0000, 0x411e6000, 0x59325809, 0x0501fcf6, - 0x05000019, 0x59300c07, 0x9004058a, 0x0500001a, - 0x90040583, 0x05020007, 0x592c0a08, 0x82040d00, - 0x000000ff, 0x90040d94, 0x05000002, 0x640e6229, - 0x0501f814, 0x4d400000, 0x604e8000, 0x592c0a0c, - 0x84040d54, 0x05d9fe46, 0x5c028000, 0x0505fb76, - 0x0505fec9, 0x0001fb82, 0x59300229, 0x90000583, - 0x05000dbc, 0x05f5fbe3, 0x5c025800, 0x5c026000, - 0x1c01f000, 0x644e5a0a, 0x642a6229, 0x05fdf7f4, - 0x592c040c, 0x8c000512, 0x05000008, 0x84000512, - 0x48025c0c, 0x4d2c0000, 0x592e580d, 0x05b1f9a0, - 0x5c025800, 0x497a580d, 0x1c01f000, 0x59cc0005, - 0x8c000500, 0x0502000a, 0x591c0407, 0x90000582, - 0x05020007, 0x591c0c03, 0x82040580, 0x00000085, - 0x05000003, 0x82040580, 0x0000008b, 0x1c01f000, - 0x4933c857, 0x4d3c0000, 0x600a7800, 0x59300407, - 0x90000c92, 0x05ae1dc9, 0x0c01f808, 0x5c027800, - 0x1c01f000, 0x4933c857, 0x59300407, 0x90000c92, - 0x05ae1dc2, 0x0c01f001, 0x0010a830, 0x0010a82d, - 0x0010a82d, 0x0010a863, 0x0010a82c, 0x0010a82d, - 0x0010a842, 0x0010a82d, 0x0010a82c, 0x0010a82c, - 0x0010b73f, 0x0010a82d, 0x0010a82d, 0x0010a82c, - 0x0010a82c, 0x0010a82c, 0x0010a94b, 0x0010a82d, - 0x05adfdae, 0x4803c856, 0x80000580, 0x1c01f000, - 0x4803c856, 0x8d3c0502, 0x0502000f, 0x0501fc96, - 0x0500000b, 0x59325809, 0x0505fe7b, 0x41780800, - 0x4d400000, 0x60168000, 0x05d9fdf1, 0x5c028000, - 0x0505fb21, 0x0501fdec, 0x0001fb82, 0x05f5fb91, - 0x90000541, 0x1c01f000, 0x4933c857, 0x0501fc86, - 0x05000008, 0x59300809, 0x5804020c, 0x8c000512, - 0x05000004, 0x4d400000, 0x60328000, 0x0501f00f, - 0x05d9f86c, 0x0500000b, 0x59300416, 0x84000556, - 0x48026416, 0x0501f812, 0x4df00000, 0x59300416, - 0x84000516, 0x48026416, 0x5c03e000, 0x1c01f000, - 0x4d400000, 0x60428000, 0x050dfcc7, 0x641a6407, - 0x641e6203, 0x9140058c, 0x05020003, 0x641a6203, - 0x497a6006, 0x5c028000, 0x1c01f000, 0x4933c857, - 0x05edfcaf, 0x4df00000, 0x0501f8d5, 0x90000c91, - 0x05ae1d72, 0x0c01f001, 0x0010a87c, 0x0010a906, - 0x0010a891, 0x0010a914, 0x0010a903, 0x0010a87b, - 0x0010a87c, 0x0010a87c, 0x0010a87f, 0x0010a87c, - 0x0010a87c, 0x0010a87c, 0x0010a87c, 0x0010a891, - 0x0010a87f, 0x0010a87c, 0x0010a87f, 0x05adfd5f, - 0x5c03e000, 0x05ec0c87, 0x05fdf7af, 0x5c03e000, - 0x05ec0c84, 0x59300407, 0x90000583, 0x05fe07ad, - 0x59300203, 0x9000058d, 0x05fc07aa, 0x59300008, - 0x8c000500, 0x05b20fc0, 0x8d3c0502, 0x05fe07a5, - 0x4d340000, 0x5932680a, 0x05d9f939, 0x5c026800, - 0x05fdf7a0, 0x0509f8cc, 0x59300008, 0x8c000500, - 0x05b20fb5, 0x0505fe06, 0x59300004, 0x8400055c, - 0x48026004, 0x4203e000, 0xb0800000, 0x6023f800, - 0x05edfc68, 0x59300407, 0x90000586, 0x0500005e, - 0x8d3c0502, 0x05020060, 0x497a6229, 0x59300203, - 0x9000058d, 0x05000002, 0x640e6229, 0x0501fc22, - 0x05020004, 0x8d3c0500, 0x05000049, 0x0501f041, - 0x4d2c0000, 0x4d400000, 0x59325809, 0x0501fd7a, - 0x592c040c, 0x8c000512, 0x05000008, 0x4d2c0000, - 0x84000512, 0x48025c0c, 0x592c080d, 0x40065800, - 0x05b1f8e3, 0x5c025800, 0x4d400000, 0x60168000, - 0x592c0a0c, 0x82040500, 0x00000084, 0x0500000c, - 0x600a8000, 0x592c0208, 0x82000500, 0x000000ff, - 0xb80004b5, 0x05020009, 0x8c040504, 0x05000007, - 0x83428540, 0x00000200, 0x0501f004, 0x8c040512, - 0x05000002, 0x60328000, 0x592c0208, 0x82000500, - 0x000000ff, 0xb00005b5, 0x05020005, 0x592c020e, - 0x8c000506, 0x05000002, 0x853e7d40, 0x05d9fd54, - 0x0505fdd9, 0x5c028000, 0x0505fa83, 0x8d3c0500, - 0x05020003, 0x0515f814, 0x05020003, 0x0001fb82, - 0x497a6009, 0x5c028000, 0x5c025800, 0x8d3c0500, - 0x0500000a, 0x59300a29, 0x90040d83, 0x05020005, - 0x4d340000, 0x5932680a, 0x05d9f8dd, 0x5c026800, - 0x05f5fae4, 0x0501f010, 0x0515f803, 0x05020004, - 0x59300a29, 0x90040d83, 0x05000cb6, 0x640a6407, - 0x42000800, 0x80004040, 0x0505fda5, 0x4a026003, - 0x00850009, 0x0005feab, 0x4203e000, 0xb0800000, - 0x6023f800, 0x5c03e000, 0x05ee0c15, 0x90000541, - 0x1c01f000, 0x0505fdb0, 0x05fdf7fb, 0x05edfc01, - 0x05b1ff45, 0x05fdf78c, 0x598c000b, 0x81300580, - 0x05020003, 0x05edff07, 0x05020022, 0x05edf8ab, - 0x05020005, 0x59300c03, 0xb0040580, 0x05fc0770, - 0x05fdf781, 0x05edfb1b, 0x0500001a, 0x05adfcc7, - 0x0501f81c, 0x05020003, 0x05edfeca, 0x05020015, - 0x05e9ffbe, 0x0500000f, 0x05edfb12, 0x05000011, - 0x59300407, 0x90000583, 0x05ae0cbc, 0x59300004, - 0x9000051f, 0x90000585, 0x05ae0cb8, 0x58d400ec, - 0x82000500, 0x00000f00, 0x05fe076b, 0x05adfcb3, - 0x59300c03, 0xb0040580, 0x05fc0755, 0x05fdf766, - 0x59300203, 0x90000c91, 0x05ae1cac, 0x0c01f73b, - 0x417a3000, 0x60df2160, 0x59900005, 0x81300580, - 0x05000006, 0x91932410, 0x811a3000, 0x91180485, - 0x05fc17fa, 0x90000541, 0x1c01f000, 0x59300004, - 0x8c00053e, 0x0500000c, 0x8c00050c, 0x0502000a, - 0x8c000516, 0x05020004, 0x90000d1f, 0x90040585, - 0x05020003, 0x600c0000, 0x0501f004, 0x60040000, - 0x0501f002, 0x59300203, 0x1c01f000, 0x4933c857, - 0x05edfbc7, 0x4df00000, 0x59300203, 0x90000c91, - 0x05ae1c8a, 0x0c01f001, 0x0010a964, 0x0010a975, - 0x0010a967, 0x0010a963, 0x0010a963, 0x0010a963, - 0x0010a963, 0x0010a963, 0x0010a963, 0x0010a963, - 0x0010a963, 0x0010a963, 0x0010a963, 0x0010a963, - 0x0010a967, 0x0010a963, 0x0010a963, 0x05adfc77, - 0x5c03e000, 0x05ec0b9f, 0x05fdf6c7, 0x5c03e000, - 0x05ec0b9c, 0x4d2c0000, 0x05b5fd9f, 0x59325809, - 0x0501fb5d, 0x05ac0c6d, 0x64165a0a, 0x0001fb82, - 0x05d9fb00, 0x05f5fa5f, 0x5c025800, 0x90000541, - 0x1c01f000, 0x598c000b, 0x81300580, 0x05020014, - 0x59300004, 0x8c000520, 0x05000004, 0x84000520, - 0x48026004, 0x0501f014, 0x42001000, 0x0010e387, - 0x50081000, 0x58080002, 0x82000580, 0x00000100, - 0x05000005, 0x05b5fd84, 0x05edf830, 0x05ae0c53, - 0x05fdf7df, 0x05edfe87, 0x0502000a, 0x59300004, - 0x8c000520, 0x05000004, 0x84000520, 0x48026004, - 0x05fdf7d7, 0x05edf825, 0x05fc07d5, 0x05adfc47, - 0x59300203, 0x90000c91, 0x05ae1c44, 0x0c01f7bb, - 0x4d340000, 0x4d240000, 0x5932481d, 0x5932680a, - 0x59300407, 0x4933c857, 0x4803c857, 0x90000c92, - 0x05ae1c3a, 0x0c01f804, 0x5c024800, 0x5c026800, - 0x1c01f000, 0x0010a9ba, 0x0010aab5, 0x0010ac24, - 0x0010a9c1, 0x0010ac09, 0x0010ac20, 0x0010c515, - 0x0010aa99, 0x0010ac05, 0x0010a9b7, 0x0010ac80, - 0x0010a9b7, 0x0010a9b7, 0x0010a9b7, 0x0010a9b7, - 0x00020fdc, 0x0010b4cc, 0x0010b4cc, 0x05adfc23, - 0x0501fc12, 0x05f8010a, 0x1c01f000, 0x05edfb58, - 0x05edfaad, 0x05edfb47, 0x0005f7dc, 0x64066006, - 0x1c01f000, 0x42000000, 0x0010e463, 0x0511fe19, - 0x4d2c0000, 0x4d400000, 0x417a5800, 0x0501fb02, - 0x05000007, 0x0505ff94, 0x59325809, 0x592c020c, - 0x8400054c, 0x48025a0c, 0x601a8000, 0x05edfb44, - 0x05fdff6b, 0x4803c857, 0x90000c91, 0x05ae1c07, - 0x0c01f805, 0x05edfb2f, 0x5c028000, 0x5c025800, - 0x1c01f000, 0x0010aa98, 0x0010a9eb, 0x0010a9f7, - 0x0010aa3a, 0x0010aa68, 0x0010a9ea, 0x0010a9ba, - 0x0010a9ba, 0x0010a9ba, 0x0010a9ea, 0x0010a9ea, - 0x0010a9ea, 0x0010a9ea, 0x0010a9f7, 0x0010a9eb, - 0x0010a9ea, 0x0010aa3a, 0x05adfbf0, 0x598c000b, - 0x4803c857, 0x81300580, 0x05020003, 0x05edfe21, - 0x0502005a, 0x05e9ffc5, 0x0500005d, 0x4803c856, - 0x05edfa38, 0x05000055, 0x05adfbe4, 0x497a6229, - 0x812e59c0, 0x05ac0be1, 0x592c0a08, 0x4807c857, - 0x82040d00, 0x000000ff, 0x90040594, 0x05000018, - 0xb00405b5, 0x05020014, 0x59300008, 0x8c000500, - 0x05020064, 0x592c0a0e, 0x8c040506, 0x0500000e, - 0x592c0c0c, 0x4c040000, 0x592c0a0c, 0x05d9fc20, + 0x0501f019, 0x59300013, 0x0509fa9a, 0x59341200, + 0x497a6205, 0x8c08050e, 0x0502007e, 0x4807c857, + 0x4806580e, 0x80000d40, 0x05fe0eee, 0x592c020a, + 0x90000595, 0x0500001e, 0x59300402, 0x48025c0a, + 0x4806580b, 0x4a025a08, 0x00000103, 0x4c040000, + 0x592c0a0c, 0x8c040512, 0x05000002, 0x64325a0a, + 0x5c000800, 0x4c040000, 0x4c0c0000, 0x4c100000, + 0x0505ff23, 0x0509fa76, 0x5c002000, 0x5c001800, + 0x5c000800, 0x8c100512, 0x05020026, 0x4c0c0000, + 0x0505ff1f, 0x0001fba8, 0x05d9faa2, 0x5c001800, + 0x8c0c0518, 0x00080010, 0x0505f272, 0x0501f907, + 0x05fe07e2, 0x8c100512, 0x05020006, 0x59300221, + 0x48025a0d, 0x84102556, 0x48125c0c, 0x05fdf7db, + 0x592c000d, 0x80006d40, 0x05fc07d8, 0x59300221, + 0x48006a0d, 0x05fdf7f8, 0x4813c857, 0x8c100518, + 0x05000046, 0x41780800, 0x592c1c0d, 0x820c0580, + 0x00001000, 0x05fc07a8, 0x8c100512, 0x05fc07a6, + 0x592c780d, 0x583c080e, 0x583c1c0d, 0x05fdf7a2, + 0x4807c857, 0x592c780d, 0x59300402, 0x592c1408, + 0x8c08051e, 0x0502000e, 0x592c120a, 0x48007c0a, + 0x4804780b, 0x48087a0a, 0x84102512, 0x48107c0c, + 0x4c0c0000, 0x4c3c0000, 0x05adffb8, 0x5c007800, + 0x403e5800, 0x0501fafa, 0x05fdf7cc, 0x48025c0a, + 0x4806580b, 0x583c0810, 0x583c000f, 0x80040c00, + 0x9004149d, 0x05001005, 0x583c1001, 0x480a5801, + 0x49787801, 0x60700800, 0x90040c14, 0x4c0c0000, + 0x4c500000, 0x4c540000, 0x903ca40c, 0x912cac0c, + 0x4c100000, 0x4c3c0000, 0x0501fb01, 0x5c007800, + 0x5c002000, 0x5c00a800, 0x5c00a000, 0x84102512, + 0x48125c0c, 0x403e5800, 0x05adff98, 0x0505fec8, + 0x42034000, 0x00111c71, 0x59a1d806, 0x80edd9c0, + 0x05ac0bd5, 0x48efc857, 0x58ec0009, 0x4803c857, + 0x0801f800, 0x05fdf7a5, 0x4933c857, 0x1c01f000, + 0x59301416, 0x480bc857, 0x8c08051c, 0x0502000e, + 0x80000540, 0x4803c857, 0x05fc077d, 0x80042c80, + 0x05fe177b, 0x8c080514, 0x05020005, 0x592c0813, + 0x4807c857, 0x80040480, 0x48026018, 0x8408155c, + 0x480a6416, 0x59301008, 0x8408151e, 0x480a6008, + 0x4c100000, 0x4c3c0000, 0x4d400000, 0x592e820a, + 0x64065a0a, 0x0505fea2, 0x49425a0a, 0x5c028000, + 0x5c007800, 0x5c002000, 0x497a580d, 0x8c100512, + 0x05000005, 0x4d2c0000, 0x403e5800, 0x05adff67, + 0x5c025800, 0x82102500, 0xffffedff, 0x48125c0c, + 0x59301006, 0x800811c0, 0x0504022a, 0x59a80061, + 0x80080480, 0x05061227, 0x0509f9e1, 0x05e1fd19, + 0x4a025a08, 0x00000103, 0x641a5a0a, 0x497a5c0d, + 0x492fc857, 0x0001fba8, 0x05d9fa0e, 0x0009f010, + 0x59325809, 0x592c040c, 0x8c000518, 0x05000003, + 0x412df800, 0x05b1f635, 0x592c0208, 0x82000500, + 0x000000ff, 0xb0001db5, 0x05020005, 0x592c1a0e, + 0x8c0c0506, 0x05000002, 0x05fdf701, 0x1c01f000, + 0x4933c857, 0x59325809, 0x497a580d, 0x64025a0a, + 0x4a025a08, 0x00000103, 0x59300813, 0x4807c857, + 0x800409c0, 0x0502000a, 0x4806580b, 0x59300c02, + 0x48065c0a, 0x0505fe66, 0x0509f9b9, 0x0505fe68, + 0x0001fba8, 0x05d9f9eb, 0x0009f010, 0x59340200, + 0x8c00050e, 0x05020007, 0x59300013, 0x0509f9b9, + 0x80000d40, 0x05fdfe13, 0x4806580b, 0x05fdf7f0, + 0x592c020c, 0x8c00050e, 0x05fe07f8, 0x4933c857, + 0x0505f1ec, 0x4933c857, 0x59325809, 0x812e59c0, + 0x05ac0b61, 0x592c020e, 0x8c000502, 0x05ac0b5e, + 0x640a6006, 0x1c01f000, 0x5930001e, 0x800001c0, + 0x050a08ed, 0x59300008, 0x4933c857, 0x4803c857, + 0x8c00050e, 0x05000034, 0x8c000500, 0x05000026, + 0x8c00051c, 0x05000009, 0x84000500, 0x48026008, + 0x59325809, 0x592c3c0c, 0x481fc857, 0x841c3d58, + 0x481e5c0c, 0x0009f078, 0x59325809, 0x592c3c0c, + 0x841c3d58, 0x59300008, 0x8c00051c, 0x05fe07f3, + 0x481e5c0c, 0x60140000, 0x40000000, 0x80000040, + 0x05fe07fe, 0x59300008, 0x8c00051c, 0x05fe07eb, + 0x592c0208, 0x82000500, 0x000000ff, 0xb0000588, + 0x05000003, 0x900005a2, 0x05020003, 0x497a580f, + 0x0501f002, 0x497a580d, 0x481e5c0c, 0x64025a0a, + 0x05b1f5ba, 0x8c000524, 0x05fc07dc, 0x59325809, + 0x4c000000, 0x592c040c, 0x8c00051c, 0x5c000000, + 0x05020003, 0x4a026013, 0xffffffff, 0x84000524, + 0x05fdf7d2, 0x1c01f000, 0x59a80007, 0x8c00050a, + 0x05000019, 0x59300008, 0x82000500, 0x04800800, + 0x82000580, 0x00000800, 0x05020013, 0x59300014, + 0x80000540, 0x05000010, 0x59300009, 0x80006d40, + 0x0500000d, 0x58340001, 0x80006d40, 0x0500000a, + 0x58340208, 0x82000500, 0x000000ff, 0xb000058a, + 0x05020005, 0x58340409, 0x90000503, 0x90000580, + 0x1c01f000, 0x90000541, 0x05fdf7fe, 0x4933c857, + 0x41780800, 0xb1380498, 0x05021009, 0xb1380480, + 0x05001007, 0x4d2c0000, 0x59325809, 0x812e59c0, + 0x0c020805, 0x5c025800, 0x0009f010, 0x493bc857, + 0x1c01f000, 0x0010ab39, 0x0010ab39, 0x0010ab39, + 0x0010ab39, 0x0010ab39, 0x0010ab3a, 0x0010ab39, + 0x0010ab39, 0x0010ab39, 0x0010ab39, 0x0010ab39, + 0x0010ab39, 0x0010ab39, 0x0010ab39, 0x0010ab39, + 0x0010ab39, 0x0010ab39, 0x0010ab39, 0x0010ab39, + 0x0010ab39, 0x0010ab3d, 0x0010ab39, 0x0010ab39, + 0x0010ab39, 0x05adfadc, 0x59cc0808, 0x497a580b, + 0x4807c857, 0x59300402, 0x48025c0a, 0x4a025a08, + 0x00000103, 0x900401c0, 0x4802580d, 0x64025a0a, + 0x800409c0, 0x000003a8, 0x59cc0009, 0x4802580e, + 0x82042500, 0x00000100, 0x05000002, 0x59cc200b, + 0x48125810, 0x82040500, 0x00000200, 0x05000002, + 0x59cc000a, 0x4802580f, 0x80100c00, 0x05ac1ac2, + 0x000003a8, 0x9004149d, 0x05001005, 0x592c0408, + 0x8c00051e, 0x0500000a, 0x60700800, 0x4c500000, + 0x4c540000, 0x91cca40c, 0x912cac11, 0x0501f9d4, + 0x5c00a800, 0x5c00a000, 0x0001f3a8, 0x0501f982, + 0x0501f1b3, 0x83380480, 0x00000093, 0x05ae1aae, + 0x83380480, 0x00000085, 0x05ac1aab, 0x0c01f001, + 0x0010ab7a, 0x0010ab79, 0x0010ab79, 0x0010ab7f, + 0x0010ab79, 0x0010ab79, 0x0010ab79, 0x0010ab79, + 0x0010ab79, 0x0010ab79, 0x0010ab79, 0x0010ab79, + 0x0010ab79, 0x05adfa9c, 0x64066203, 0x493a6403, + 0x42000800, 0x80000040, 0x0005f6e2, 0x83300580, + 0x00115a14, 0x05ae0a94, 0x4933c857, 0x59cc1404, + 0x0505fb71, 0x0500002c, 0x591c0203, 0x90000580, + 0x05000029, 0x591c000a, 0x81340580, 0x05020026, + 0x59cc1204, 0x82080580, 0x0000ffff, 0x05000007, + 0x591c0202, 0x82000d80, 0x0000ffff, 0x05000003, + 0x80080580, 0x0502001c, 0x4d300000, 0x4d1c0000, + 0x411e6000, 0x0501f9e5, 0x5c023800, 0x5c026000, + 0x05000013, 0x59cc0005, 0x8c000500, 0x05020003, + 0x0501f99a, 0x0501f002, 0x640a3a03, 0x4a026403, + 0x00000086, 0x59cc0005, 0x8c000500, 0x0500000c, + 0x591c0416, 0x8400055a, 0x48023c16, 0x59300416, + 0x8400055a, 0x48026416, 0x0501f005, 0x0501f9c2, + 0x05fc07ed, 0x4a026403, 0x00000087, 0x4d2c0000, + 0x0515f96e, 0x05d9fc2f, 0x5c025800, 0x59340200, + 0x8c00050e, 0x0500000b, 0x59cc1404, 0x0505fb3a, + 0x05000008, 0x591c0416, 0x8c00051a, 0x05000005, + 0x4d300000, 0x411e6000, 0x0505f8ec, 0x5c026000, + 0x1c01f000, 0x91380593, 0x0502000a, 0x59300403, + 0x4803c857, 0x82000d80, 0x00000086, 0x05000015, + 0x82000d80, 0x00000087, 0x05ae0a47, 0x0501f011, + 0x913805a7, 0x05000003, 0x91380594, 0x05ae0a42, + 0x493bc857, 0x05edfd52, 0x0501fe7c, 0x05f4050e, + 0x4d2c0000, 0x59325809, 0x0001fba8, 0x59300a29, + 0x90040d83, 0x05000f64, 0x5c025800, 0x05f5f506, + 0x4933c857, 0x0505fa55, 0x05f60503, 0x0009f010, + 0x91380593, 0x05020006, 0x59300403, 0x4803c857, + 0x82000480, 0x00000085, 0x0c01f04c, 0x913805a7, + 0x05020040, 0x4933c857, 0x05edfd39, 0x59300416, + 0x8c00051a, 0x05020002, 0x0009f010, 0x4d3c0000, + 0x417a7800, 0x05b9ffce, 0x5c027800, 0x60543000, + 0x41782800, 0x600c2000, 0x60a68000, 0x4d400000, + 0x4d440000, 0x59368c03, 0x0505ffbc, 0x5c028800, + 0x5c028000, 0x42000000, 0x001123f8, 0x0515fb54, + 0x0501fe4e, 0x00080010, 0x4d2c0000, 0x59325809, + 0x592c0208, 0x82000500, 0x000000ff, 0x90000594, + 0x05020f35, 0x0509f84a, 0x05e1fb82, 0x4a025a08, + 0x00000103, 0x59300402, 0x48025c0a, 0x497a580d, + 0x49425a0a, 0x0001fba8, 0x5c025800, 0x0009f010, + 0xb13805a1, 0x05000009, 0xb13805a0, 0x05000007, + 0x83380580, 0x00000089, 0x05000004, 0x83380580, + 0x0000008a, 0x05f60545, 0x05f1f955, 0x05f60543, + 0x59300a03, 0x9004058e, 0x050007e4, 0x9004058a, + 0x0500003c, 0x9004058c, 0x0500003a, 0x05adf9ea, + 0x91380594, 0x05fe07eb, 0x4933c857, 0x05edfcf8, + 0x59300416, 0x8c00051a, 0x05020002, 0x0009f010, + 0x601a8000, 0x05fdf7cf, 0x0010ac44, 0x0010ac43, + 0x0010ac43, 0x0010ac43, 0x0010ac43, 0x0010ac43, + 0x0010ac54, 0x0010ac43, 0x0010ac43, 0x0010ac43, + 0x0010ac43, 0x0010ac43, 0x0010ac43, 0x05adf9d2, + 0x4933c857, 0x0505f9f1, 0x0500000a, 0x643a6203, + 0x59a80061, 0x48026205, 0x59300416, 0x8c00051a, + 0x05020003, 0x59a8005f, 0x48026006, 0x1c01f000, + 0x59a8005f, 0x48026006, 0x642a6203, 0x1c01f000, + 0x4933c857, 0x0505f9e1, 0x0500000a, 0x643a6203, + 0x59a80061, 0x48026205, 0x59300416, 0x8c00051a, + 0x05020003, 0x59a8005f, 0x48026006, 0x1c01f000, + 0x59a8005f, 0x48026006, 0x64326203, 0x1c01f000, + 0x5932680a, 0x83380580, 0x00000089, 0x05000007, + 0x83380580, 0x0000008a, 0x0500002c, 0x4933c857, + 0x493bc857, 0x05f5f4f9, 0x4933c857, 0x59325809, + 0x59300416, 0x8c00051a, 0x0500000b, 0x59300229, + 0x90000583, 0x05ae09a0, 0x640e6407, 0x59300429, + 0x48026203, 0x59340200, 0x8c00050e, 0x05060033, + 0x1c01f000, 0x59300a29, 0x90040583, 0x05020007, + 0x0501fdd2, 0x0500000d, 0x0001fba8, 0x05d9f809, + 0x497a6009, 0x0501f009, 0x59300229, 0x90000581, + 0x05020006, 0x59300c18, 0x900405b9, 0x05000019, + 0x900405b5, 0x05000017, 0x59cc0c07, 0x4806641b, + 0x59cc0a07, 0x4806621b, 0x59300203, 0x48026429, + 0x64466203, 0x05f5f450, 0x4933c857, 0x59300416, + 0x8c00051a, 0x000a0010, 0x59300229, 0x90000581, + 0x0502003f, 0x59300c18, 0x900405b5, 0x05000005, + 0x9004059e, 0x05000003, 0x900405b9, 0x05020038, + 0x4933c857, 0x4c5c0000, 0x4c600000, 0x4d1c0000, + 0x4130b800, 0x4004c000, 0x0505fa04, 0x0502002b, + 0x906005b5, 0x05020004, 0x591c0c16, 0x8c040502, + 0x05000026, 0x05f5fc67, 0x05000024, 0x491fc857, + 0x4933c857, 0x906005b5, 0x05000003, 0x906005b9, + 0x05020002, 0x4932381e, 0x585c081d, 0x4806601d, + 0x48626403, 0x64066203, 0x64066407, 0x585c080a, + 0x4807c857, 0x4806600a, 0x585c0c17, 0x4807c857, + 0x48066417, 0x585c0a17, 0x4807c857, 0x48066217, + 0x585c0a18, 0x4807c857, 0x48066218, 0x585c0c1b, + 0x4807c857, 0x4806641b, 0x585c0a1b, 0x4807c857, + 0x4806621b, 0x491e602a, 0x0505f955, 0x42000800, + 0x80000040, 0x0005fee2, 0x405e6000, 0x5c023800, + 0x5c00c000, 0x5c00b800, 0x0009f010, 0x0501fd77, + 0x05000008, 0x4d2c0000, 0x59325809, 0x0001fba8, + 0x59300229, 0x90000583, 0x05d40faa, 0x5c025800, + 0x0009f010, 0x4803c856, 0x4c5c0000, 0x4c600000, + 0x4c640000, 0x4c500000, 0x4c540000, 0x412cb800, + 0x4d2c0000, 0x6004c000, 0x82040480, 0x00000101, + 0x05001002, 0x60000802, 0x4004c800, 0x60700800, + 0x91cca40c, 0x912cac11, 0x0501f83d, 0x9064cc9c, + 0x592e5801, 0x812e59c0, 0x05ae0cd8, 0x05adfcbe, + 0x05000011, 0x8060c000, 0x4a025808, 0x00000110, + 0x492cb801, 0x90640cbd, 0x05021005, 0x40640800, + 0x912cac09, 0x0501f82e, 0x0501f007, 0x9064ccbc, + 0x60f00800, 0x412cb800, 0x912cac09, 0x0501f828, + 0x05fdf7ef, 0x5c025800, 0x8460c1c0, 0x9060c543, + 0x48625a08, 0x5c00a800, 0x5c00a000, 0x5c00c800, + 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x492fc857, + 0x812e59c0, 0x05000012, 0x592c2802, 0x4d2c0000, + 0x4c3c0000, 0x592c7801, 0x803c79c0, 0x05000009, + 0x497a5801, 0x4c140000, 0x4c3c0000, 0x0001fba8, + 0x5c025800, 0x5c002800, 0x48165802, 0x05fdf7f6, + 0x5c007800, 0x0001fba8, 0x5c025800, 0x1c01f000, + 0x4803c856, 0x4c580000, 0x90040403, 0x8000b104, + 0x0515faf2, 0x5c00b000, 0x1c01f000, 0x4803c856, + 0x4c580000, 0x90040c03, 0x8004b104, 0x0009f9cf, + 0x5c00b000, 0x1c01f000, 0x591c0c07, 0x90040583, + 0x05000005, 0x90040582, 0x05000003, 0x9004058a, + 0x05020022, 0x4d300000, 0x4d2c0000, 0x411e6000, + 0x59325809, 0x0501fd0d, 0x05000019, 0x59300c07, + 0x9004058a, 0x0500001a, 0x90040583, 0x05020007, + 0x592c0a08, 0x82040d00, 0x000000ff, 0x90040d94, + 0x05000002, 0x640e6229, 0x0501f814, 0x4d400000, + 0x604e8000, 0x592c0a0c, 0x84040d54, 0x05d9fbb8, + 0x5c028000, 0x0505fbaa, 0x0505fefd, 0x0001fba8, + 0x59300229, 0x90000583, 0x05000de3, 0x05f5fb86, + 0x5c025800, 0x5c026000, 0x1c01f000, 0x644e5a0a, + 0x642a6229, 0x05fdf7f4, 0x592c040c, 0x8c000512, + 0x05000008, 0x84000512, 0x48025c0c, 0x4d2c0000, + 0x592e580d, 0x05adfc65, 0x5c025800, 0x497a580d, + 0x1c01f000, 0x59cc0005, 0x8c000500, 0x0502000a, + 0x591c0407, 0x90000582, 0x05020007, 0x591c0c03, + 0x82040580, 0x00000085, 0x05000003, 0x82040580, + 0x0000008b, 0x1c01f000, 0x4933c857, 0x4d3c0000, + 0x600a7800, 0x59300407, 0x90000c92, 0x05ae1892, + 0x0c01f808, 0x5c027800, 0x1c01f000, 0x4933c857, + 0x59300407, 0x90000c92, 0x05ae188b, 0x0c01f001, + 0x0010ada2, 0x0010ad9f, 0x0010ad9f, 0x0010add5, + 0x0010ad9f, 0x0010ad9f, 0x0010adb4, 0x0010ad9f, + 0x0010ad9e, 0x0010ad9e, 0x0010bcf0, 0x0010ad9f, + 0x0010ad9f, 0x0010ad9e, 0x0010ad9e, 0x0010ad9e, + 0x0010aec5, 0x0010ad9f, 0x05adf877, 0x4803c856, + 0x80000580, 0x1c01f000, 0x4803c856, 0x8d3c0502, + 0x0502000f, 0x0501fcad, 0x0500000b, 0x59325809, + 0x0505feaf, 0x41780800, 0x4d400000, 0x60168000, + 0x05d9fb63, 0x5c028000, 0x0505fb55, 0x0501fe13, + 0x0001fba8, 0x05f5fb34, 0x90000541, 0x1c01f000, + 0x4933c857, 0x0501fc9d, 0x05000008, 0x59300809, + 0x5804020c, 0x8c000512, 0x05000004, 0x4d400000, + 0x60328000, 0x0501f00f, 0x05d5fd6c, 0x0500000b, + 0x59300416, 0x84000556, 0x48026416, 0x0501f812, + 0x4df00000, 0x59300416, 0x84000516, 0x48026416, + 0x5c03e000, 0x1c01f000, 0x4d400000, 0x60428000, + 0x050dfe52, 0x641a6407, 0x641e6203, 0x9140058c, + 0x05020003, 0x641a6203, 0x497a6006, 0x5c028000, + 0x1c01f000, 0x4933c857, 0x05edfbfb, 0x4df00000, + 0x0501f8dd, 0x90000c91, 0x05ae183b, 0x0c01f001, + 0x0010adee, 0x0010ae78, 0x0010ae03, 0x0010ae86, + 0x0010ae75, 0x0010aded, 0x0010adee, 0x0010adee, + 0x0010adf1, 0x0010adee, 0x0010adee, 0x0010adee, + 0x0010adee, 0x0010ae03, 0x0010adf1, 0x0010adee, + 0x0010adf1, 0x05adf828, 0x5c03e000, 0x05ec0bd3, + 0x05fdf7af, 0x5c03e000, 0x05ec0bd0, 0x59300407, + 0x90000583, 0x05fe07ad, 0x59300203, 0x9000058d, + 0x05fc07aa, 0x59300008, 0x8c000500, 0x05b20aec, + 0x8d3c0502, 0x05fe07a5, 0x4d340000, 0x5932680a, + 0x05d5fe8c, 0x5c026800, 0x05fdf7a0, 0x0509f90b, + 0x59300008, 0x8c000500, 0x05b20ae1, 0x0505fe3a, + 0x59300004, 0x8400055c, 0x48026004, 0x4203e000, + 0xb0800000, 0x6023f800, 0x05edfbb4, 0x8d3c0502, + 0x05020063, 0x59300407, 0x90000586, 0x0500005c, + 0x497a6229, 0x59300203, 0x9000058d, 0x05000002, + 0x640e6229, 0x0501fc39, 0x05020004, 0x8d3c0500, + 0x05000049, 0x0501f041, 0x4d2c0000, 0x4d400000, + 0x59325809, 0x0501fda1, 0x592c040c, 0x8c000512, + 0x05000008, 0x4d2c0000, 0x84000512, 0x48025c0c, + 0x592c080d, 0x40065800, 0x05adfba8, 0x5c025800, + 0x4d400000, 0x60168000, 0x592c0a0c, 0x82040500, + 0x00000084, 0x0500000c, 0x600a8000, 0x592c0208, + 0x82000500, 0x000000ff, 0xb80004b5, 0x05020009, + 0x8c040504, 0x05000007, 0x83428540, 0x00000200, + 0x0501f004, 0x8c040512, 0x05000002, 0x60328000, + 0x592c0208, 0x82000500, 0x000000ff, 0xb00005b5, + 0x05020005, 0x592c020e, 0x8c000506, 0x05000002, + 0x853e7d40, 0x05d9fac6, 0x0505fe0d, 0x5c028000, + 0x0505fab7, 0x8d3c0500, 0x05020003, 0x0515fa1d, + 0x05020003, 0x0001fba8, 0x497a6009, 0x5c028000, + 0x5c025800, 0x8d3c0500, 0x0500000a, 0x59300a29, + 0x90040d83, 0x05020005, 0x4d340000, 0x5932680a, + 0x05d5fe30, 0x5c026800, 0x05f5fa87, 0x0501f010, + 0x0515fa0c, 0x05020004, 0x59300a29, 0x90040d83, + 0x05000cdd, 0x640a6407, 0x42000800, 0x80004040, + 0x0505fdd9, 0x4a026003, 0x00850009, 0x0005fee2, + 0x4203e000, 0xb0800000, 0x6023f800, 0x5c03e000, + 0x05ee0b61, 0x90000541, 0x1c01f000, 0x640a6203, + 0x05fdf7fb, 0x05edfb4d, 0x05b1fa71, 0x05fdf78c, + 0x598c000b, 0x81300580, 0x05020003, 0x05edfe53, + 0x0502002a, 0x05e9fff2, 0x05020005, 0x59300c03, + 0xb0040580, 0x05fc0770, 0x05fdf781, 0x05edfa66, + 0x05000022, 0x05a9ff90, 0x0501f824, 0x05020003, + 0x05edfe16, 0x0502001d, 0x05e9ff05, 0x05000017, + 0x05edfa5d, 0x05000019, 0x59300407, 0x90000583, + 0x05aa0f85, 0x59300004, 0x9000051f, 0x90000585, + 0x05aa0f81, 0x58d400ec, 0x82000500, 0x00000f00, + 0x05fe076b, 0x58d400ec, 0x4803c857, 0x59300000, + 0x4803c857, 0x59300003, 0x4803c857, 0x59300004, + 0x4803c857, 0x05fdf762, 0x59300c03, 0xb0040580, + 0x05fc074d, 0x05fdf75e, 0x59300203, 0x90000c91, + 0x05aa1f6d, 0x0c01f733, 0x417a3000, 0x60df2160, + 0x59900005, 0x81300580, 0x05000006, 0x91932410, + 0x811a3000, 0x91180485, 0x05fc17fa, 0x90000541, + 0x1c01f000, 0x59300004, 0x8c00053e, 0x0500000c, + 0x8c00050c, 0x0502000a, 0x8c000516, 0x05020004, + 0x90000d1f, 0x90040585, 0x05020003, 0x600c0000, + 0x0501f004, 0x60040000, 0x0501f002, 0x59300203, + 0x1c01f000, 0x4933c857, 0x05edfb0b, 0x4df00000, + 0x59300203, 0x90000c91, 0x05aa1f4b, 0x0c01f001, + 0x0010aede, 0x0010aeef, 0x0010aee1, 0x0010aedd, + 0x0010aedd, 0x0010aedd, 0x0010aedd, 0x0010aedd, + 0x0010aedd, 0x0010aedd, 0x0010aedd, 0x0010aedd, + 0x0010aedd, 0x0010aedd, 0x0010aee1, 0x0010aedd, + 0x0010aedd, 0x05a9ff38, 0x5c03e000, 0x05ec0ae3, + 0x05fdf6bf, 0x5c03e000, 0x05ec0ae0, 0x4d2c0000, + 0x05b5f896, 0x59325809, 0x0501fb6c, 0x05a80f2e, + 0x64165a0a, 0x0001fba8, 0x05d9f85b, 0x05f5f9fa, + 0x5c025800, 0x90000541, 0x1c01f000, 0x598c000b, + 0x81300580, 0x05020014, 0x59300004, 0x8c000520, + 0x05000004, 0x84000520, 0x48026004, 0x0501f014, + 0x42001000, 0x00112322, 0x50081000, 0x58080002, + 0x82000580, 0x00000100, 0x05000005, 0x05b5f87b, + 0x05e9ff6f, 0x05aa0f14, 0x05fdf7df, 0x05edfdcb, + 0x0502000a, 0x59300004, 0x8c000520, 0x05000004, + 0x84000520, 0x48026004, 0x05fdf7d7, 0x05e9ff64, + 0x05fc07d5, 0x05a9ff08, 0x59300203, 0x90000c91, + 0x05aa1f05, 0x0c01f7bb, 0x4d340000, 0x4d240000, + 0x5932481d, 0x5932680a, 0x59300407, 0x4933c857, + 0x4803c857, 0x90000c92, 0x05aa1efb, 0x0c01f804, + 0x5c024800, 0x5c026800, 0x1c01f000, 0x0010af34, + 0x0010b032, 0x0010b1ad, 0x0010af3b, 0x0010b192, + 0x0010b1a9, 0x0010cc12, 0x0010b016, 0x0010b18e, + 0x0010af31, 0x0010b209, 0x0010af31, 0x0010af31, + 0x0010af31, 0x0010af31, 0x00021010, 0x0010ba73, + 0x0010ba73, 0x05a9fee4, 0x0501fc31, 0x05f800ca, + 0x1c01f000, 0x05edfa9c, 0x05edf9f1, 0x05edfa8b, + 0x0009f010, 0x64066006, 0x1c01f000, 0x42000000, + 0x00112407, 0x0515f81a, 0x5930001e, 0x800001c0, + 0x05060c69, 0x4d2c0000, 0x4d400000, 0x417a5800, + 0x0501fb0e, 0x05000007, 0x0505ffc8, 0x59325809, + 0x592c020c, 0x8400054c, 0x48025a0c, 0x601a8000, + 0x05edfa85, 0x05fdff68, 0x4803c857, 0x90000c91, + 0x05aa1ec5, 0x0c01f805, 0x05edfa70, 0x5c028000, + 0x5c025800, 0x1c01f000, 0x0010b015, 0x0010af68, + 0x0010af74, 0x0010afb7, 0x0010afe5, 0x0010af67, + 0x0010af34, 0x0010af34, 0x0010af34, 0x0010af67, + 0x0010af67, 0x0010af67, 0x0010af67, 0x0010af74, + 0x0010af68, 0x0010af67, 0x0010afb7, 0x05a9feae, + 0x598c000b, 0x4803c857, 0x81300580, 0x05020003, + 0x05edfd62, 0x0502005a, 0x05e9ff01, 0x0500005d, + 0x4803c856, 0x05edf978, 0x05000055, 0x05a9fea2, + 0x497a6229, 0x812e59c0, 0x05a80e9f, 0x592c0a08, + 0x4807c857, 0x82040d00, 0x000000ff, 0x90040594, + 0x05000018, 0xb00405b5, 0x05020014, 0x59300008, + 0x8c000500, 0x05020064, 0x592c0a0e, 0x8c040506, + 0x0500000e, 0x592c0c0c, 0x4c040000, 0x592c0a0c, + 0x05d9f987, 0x5c000800, 0x8c040510, 0x05000003, + 0x4a025c0c, 0x00000100, 0x0001fba8, 0x0501fbb2, + 0x497a6009, 0x05f5f154, 0x640e6229, 0x0505fcc4, + 0x592c0c0c, 0x4c040000, 0x592c0a0c, 0x05d9f978, 0x5c000800, 0x8c040510, 0x05000003, 0x4a025c0c, - 0x00000100, 0x0001fb82, 0x0501fb96, 0x497a6009, - 0x05f5f1bc, 0x640e6229, 0x0505fc9b, 0x592c0c0c, - 0x4c040000, 0x592c0a0c, 0x05d9fc11, 0x5c000800, - 0x8c040510, 0x05000003, 0x4a025c0c, 0x00000100, - 0x0505f93d, 0x0511fed0, 0x05020006, 0x0001fb82, - 0x59300a29, 0x90040d83, 0x05000b82, 0x497a6009, - 0x4a026403, 0x00000085, 0x64266203, 0x640a6407, - 0x59300804, 0x82040d00, 0x00000100, 0x0505fc6c, - 0x82040d40, 0x80004040, 0x48066004, 0x4203e000, - 0xb0800000, 0x6023f800, 0x05edface, 0x42000800, - 0x80004040, 0x0005f6ab, 0x05fdfef6, 0x05020003, - 0x05edfda4, 0x0502000d, 0x05e9fe98, 0x05000006, - 0x05edf9ec, 0x05000009, 0x59300004, 0x4803c857, - 0x05fdf7b3, 0x59300c03, 0x4807c857, 0xb0040580, - 0x05000007, 0x05fdf7ae, 0x59300203, 0x4803c857, - 0x90000c91, 0x05ae1b8d, 0x0c01f78b, 0x05edfab5, - 0x812e59c0, 0x05000015, 0x0505fc5f, 0x592c0c0c, - 0x4c040000, 0x592c0a0c, 0x05d9fbd5, 0x5c000800, - 0x8c040510, 0x05000003, 0x4a025c0c, 0x00000100, - 0x0505f901, 0x0001fb82, 0x59300203, 0x9000058d, - 0x05000006, 0x05edfaa3, 0x4d340000, 0x5932680a, - 0x05d5ff63, 0x5c026800, 0x05f5f96a, 0x0501f031, - 0x812e59c0, 0x05ac0b71, 0x0501fee9, 0x05020003, - 0x05b1fddd, 0x05fdf78a, 0x05edfa96, 0x592c020c, - 0x8400050c, 0x48025a0c, 0x592c040a, 0x800000c2, - 0x800008c4, 0x80040c00, 0x48066006, 0x42000000, - 0x10000000, 0x41300800, 0x05b1fab8, 0x05000013, - 0x592c020c, 0x8c00051c, 0x05020005, 0x8400055c, - 0x48025a0c, 0x640a6006, 0x0501f016, 0x59c80001, - 0x80000540, 0x05020006, 0x42000000, 0x40000000, - 0x41300800, 0x05b1faa9, 0x0501f004, 0x4d300000, - 0x05b5fd38, 0x5c026000, 0x59300008, 0x8c000536, - 0x05020004, 0x59300203, 0x90000584, 0x05020005, - 0x4d380000, 0x61227000, 0x0009f800, 0x5c027000, - 0x1c01f000, 0x4d340000, 0x4c5c0000, 0x59300203, - 0x90000591, 0x05020014, 0x5932680a, 0x4130b800, - 0x0005ffbf, 0x0500000f, 0x64066203, 0x647a6403, - 0x585c041b, 0x4802641b, 0x585c021b, 0x4802621b, - 0x4936600a, 0x585c001d, 0x4802601d, 0x0501fde4, - 0x64066407, 0x42000800, 0x80000040, 0x0005feab, - 0x405e6000, 0x0005ffdc, 0x5c00b800, 0x5c026800, - 0x1c01f000, 0x42000000, 0x0010e45f, 0x0511fd25, - 0x0511fb9c, 0x59300203, 0x90000c91, 0x05ae1b1f, - 0x4803c857, 0x0c01f001, 0x0010aacf, 0x0010a9bf, - 0x0010aad0, 0x0010aacf, 0x0010aad0, 0x0010aad0, - 0x0010a9bb, 0x0010aacf, 0x0010a9b8, 0x0010aacf, - 0x0010aacf, 0x0010aacf, 0x0010aacf, 0x0010aacf, - 0x0010aad0, 0x0010aacf, 0x0010aacf, 0x05adfb0b, - 0x83340580, 0x00110210, 0x05f400fe, 0x4d2c0000, - 0x59340400, 0x82000500, 0x000000ff, 0x90000c8c, - 0x05ae1b02, 0x4c000000, 0x0505fdc5, 0x5c000000, - 0x0502000a, 0x59300009, 0x800001c0, 0x05020004, - 0x05f5f8f0, 0x0505fdc5, 0x0501f010, 0x05f5ffe0, - 0x05f5f8ec, 0x0501f00d, 0x59303403, 0xb0180d91, - 0x0500000c, 0x90180d84, 0x05020003, 0x60040000, - 0x0501f004, 0x90180d80, 0x05020002, 0x60040000, - 0x4803c857, 0x0c01f823, 0x5c025800, 0x1c01f000, - 0x42000000, 0x0010e45b, 0x0511fce6, 0x05bdfb20, - 0x59340412, 0x82000500, 0x000000ff, 0x05000016, - 0x80000040, 0x48026c12, 0x4d300000, 0x05f5f904, - 0x5c000000, 0x0500000f, 0x641c0407, 0x4a000006, - 0x00000398, 0x49238830, 0x4a038832, 0xffffffff, - 0x4926601d, 0x497a6009, 0x4936600a, 0x64066407, - 0x64066203, 0x65466403, 0x5c025800, 0x05e9f562, - 0x40026000, 0x5c025800, 0x60042800, 0x0505f626, - 0x0010ab20, 0x0010abba, 0x0010ab21, 0x0010ab57, - 0x0010ab21, 0x0010abcf, 0x0010ab21, 0x0010ab28, - 0x0010ab20, 0x0010abcf, 0x0010ab20, 0x0010ab33, - 0x05adfaba, 0x59300403, 0x90000d96, 0x05000032, - 0x90000d84, 0x05000030, 0x90000d82, 0x0500002e, - 0x0501faa2, 0x0500002c, 0x59300403, 0x90000da2, - 0x050000a5, 0x90000db9, 0x050000ac, 0x90000db5, - 0x050000aa, 0x90000d9e, 0x05000024, 0x0501f996, - 0x05000005, 0x0505f818, 0x05020003, 0x05d5ff19, - 0x0501f01d, 0x59300403, 0x90000d81, 0x0502000f, - 0x5930081d, 0x58040200, 0x8c000500, 0x050405f5, - 0x5930080a, 0x58040403, 0x82000580, 0x000007fe, - 0x05020004, 0x60042800, 0x0505fdf3, 0x0005f7dc, - 0x05d5fedd, 0x0500000c, 0x59340403, 0x82000480, - 0x000007f0, 0x05021009, 0x4d3c0000, 0x417a7800, - 0x05b9ffdc, 0x5c027800, 0x42000000, 0x0010e454, - 0x0511fc88, 0x05f5ff6e, 0x05f5f07a, 0x0501f972, - 0x05000003, 0x0501fff4, 0x05000091, 0x59300c03, - 0x90040596, 0x05000058, 0x90040582, 0x05020034, - 0x59a80249, 0x8c000502, 0x0502000f, 0x05d9fd4b, - 0x0502000d, 0x59a80006, 0x8c000506, 0x0502000a, - 0x05d9fd58, 0x05020004, 0x60040000, 0x05d9fd1c, - 0x0501f07f, 0x64075042, 0x6006d800, 0x05d9fcc2, - 0x0501f07b, 0x59340200, 0x8c000508, 0x05000007, - 0x84000508, 0x48026a00, 0x59300416, 0x84000510, - 0x48026416, 0x0501f014, 0x59340412, 0x82000500, + 0x00000100, 0x0505f966, 0x0515f8ce, 0x05020006, + 0x0001fba8, 0x59300a29, 0x90040d83, 0x05000b9e, + 0x497a6009, 0x4a026403, 0x00000085, 0x64266203, + 0x640a6407, 0x59300804, 0x82040d00, 0x00000100, + 0x0505fc95, 0x82040d40, 0x80004040, 0x48066004, + 0x4203e000, 0xb0800000, 0x6023f800, 0x05edfa0f, + 0x42000800, 0x80004040, 0x0005f6e2, 0x05fdfef3, + 0x05020003, 0x05edfce5, 0x0502000d, 0x05e9fdd4, + 0x05000006, 0x05edf92c, 0x05000009, 0x59300004, + 0x4803c857, 0x05fdf7b3, 0x59300c03, 0x4807c857, + 0xb0040580, 0x05000007, 0x05fdf7ae, 0x59300203, + 0x4803c857, 0x90000c91, 0x05aa1e4b, 0x0c01f78b, + 0x05edf9f6, 0x812e59c0, 0x05000015, 0x0505fc88, + 0x592c0c0c, 0x4c040000, 0x592c0a0c, 0x05d9f93c, + 0x5c000800, 0x8c040510, 0x05000003, 0x4a025c0c, + 0x00000100, 0x0505f92a, 0x0001fba8, 0x59300203, + 0x9000058d, 0x05000006, 0x05edf9e4, 0x4d340000, + 0x5932680a, 0x05d5fcab, 0x5c026800, 0x05f5f902, + 0x0501f031, 0x812e59c0, 0x05a80e2f, 0x0501ff08, + 0x05020003, 0x05b1f8fe, 0x05fdf78a, 0x05edf9d7, + 0x592c020c, 0x8400050c, 0x48025a0c, 0x592c040a, + 0x800000c2, 0x800008c4, 0x80040c00, 0x48066006, + 0x42000000, 0x10000000, 0x41300800, 0x05adfdd7, + 0x05000013, 0x592c020c, 0x8c00051c, 0x05020005, + 0x8400055c, 0x48025a0c, 0x640a6006, 0x0501f016, + 0x59c80001, 0x80000540, 0x05020006, 0x42000000, + 0x40000000, 0x41300800, 0x05adfdc8, 0x0501f004, + 0x4d300000, 0x05b5f82c, 0x5c026000, 0x59300008, + 0x8c000536, 0x05020004, 0x59300203, 0x90000584, + 0x05020005, 0x4d380000, 0x61227000, 0x0009f839, + 0x5c027000, 0x1c01f000, 0x4d340000, 0x4c5c0000, + 0x59300203, 0x90000591, 0x05020014, 0x5932680a, + 0x4130b800, 0x0005fff6, 0x0500000f, 0x64066203, + 0x647a6403, 0x585c041b, 0x4802641b, 0x585c021b, + 0x4802621b, 0x4936600a, 0x585c001d, 0x4802601d, + 0x0501fdff, 0x64066407, 0x42000800, 0x80000040, + 0x0005fee2, 0x405e6000, 0x0009f810, 0x5c00b800, + 0x5c026800, 0x1c01f000, 0x42000000, 0x00112403, + 0x0511ff23, 0x0511fd86, 0x59300203, 0x90000c91, + 0x05aa1ddd, 0x4803c857, 0x0c01f001, 0x0010b04c, + 0x0010af39, 0x0010b04d, 0x0010b04c, 0x0010b04d, + 0x0010b04d, 0x0010af35, 0x0010b04c, 0x0010af32, + 0x0010b04c, 0x0010b04c, 0x0010b04c, 0x0010b04c, + 0x0010b04c, 0x0010b04d, 0x0010b04c, 0x0010b04c, + 0x05a9fdc9, 0x83340580, 0x001141b4, 0x05f40096, + 0x4d2c0000, 0x59340400, 0x82000500, 0x000000ff, + 0x90000c8c, 0x05aa1dc0, 0x4c000000, 0x0505fdf9, + 0x5c000000, 0x0502000a, 0x59300009, 0x800001c0, + 0x05020004, 0x05f5f888, 0x0505fdf9, 0x0501f010, + 0x05f5ff9d, 0x05f5f884, 0x0501f00d, 0x59303403, + 0xb0180d91, 0x0500000c, 0x90180d84, 0x05020003, + 0x60040000, 0x0501f004, 0x90180d80, 0x05020002, + 0x60040000, 0x4803c857, 0x0c01f828, 0x5c025800, + 0x1c01f000, 0x42000000, 0x001123ff, 0x0511fee4, + 0x05b9fe3f, 0x600c0800, 0x05bdf867, 0x05020003, + 0x0509f8e4, 0x0501f017, 0x59340412, 0x82000500, 0x000000ff, 0x05000016, 0x80000040, 0x48026c12, - 0x5932481d, 0x59300c29, 0x4c040000, 0x497a6205, - 0x4d300000, 0x05f5f87e, 0x5c000000, 0x5c000800, - 0x0500000a, 0x49780009, 0x641c0407, 0x4a000006, - 0x00000398, 0x4926601d, 0x48066429, 0x4936600a, - 0x64066407, 0x0501f024, 0x40026000, 0x59300403, - 0x90000d82, 0x05020013, 0x59340403, 0x82000580, - 0x000007fe, 0x0502000c, 0x59a80249, 0x84000540, - 0x48035249, 0x05d9fd11, 0x05fc07ca, 0x4a035045, - 0x0000ffff, 0x0505ff00, 0x05d1fe66, 0x05f5ff20, - 0x0501f00f, 0x600c0002, 0x05f5fa82, 0x05f40029, - 0x05f5ff1b, 0x4d3c0000, 0x417a7800, 0x05b9ff81, - 0x5c027800, 0x42000000, 0x0010e454, 0x0511fc2d, - 0x59300429, 0x900005a1, 0x050406d0, 0x05b9ffc0, - 0x05f5f01c, 0x600c0800, 0x05d5f937, 0x64066203, - 0x640a6403, 0x05e9f4b8, 0x0501f90f, 0x05fe079a, - 0x05b9ffb7, 0x4d3c0000, 0x417a7800, 0x05b9ff6d, - 0x5c027800, 0x42000000, 0x0010e454, 0x0511fc19, - 0x60603000, 0x41782800, 0x60002000, 0x4d400000, - 0x4d440000, 0x59368c03, 0x60a68000, 0x0505fa48, - 0x5c028800, 0x5c028000, 0x05f5f002, 0x05d5fe81, - 0x05fdf7d8, 0x42000000, 0x0010e45e, 0x0511fc09, - 0x60140002, 0x05f5fa53, 0x05fc07d2, 0x05f5fa70, - 0x05fe07d0, 0x1c01f000, 0x59300c03, 0x0501fd3b, - 0x000607dc, 0x916c0583, 0x05000003, 0x640a6006, - 0x1c01f000, 0x59300403, 0x48026418, 0x64066229, - 0x4a026403, 0x00000085, 0x64266203, 0x640a6407, - 0x42000800, 0x80000040, 0x0005f6ab, 0x0511fd40, - 0x0500000b, 0x4d400000, 0x4d200000, 0x05bdfa28, - 0x60068000, 0x60001802, 0x60042800, 0x60040000, - 0x05d9fa5c, 0x5c024000, 0x5c028000, 0x05f5fecc, - 0x4d3c0000, 0x417a7800, 0x05b9ff32, 0x5c027800, - 0x42000000, 0x0010e454, 0x0511fbde, 0x497a6009, - 0x641e6407, 0x4a026006, 0x00000398, 0x497a6205, - 0x1c01f000, 0x42000000, 0x0010e465, 0x0511fbd5, - 0x05fdf6ad, 0x59300403, 0x900005b6, 0x05020005, - 0x64066203, 0x42000800, 0x80000040, 0x0005f6ab, - 0x42000000, 0x0010e460, 0x0511fbca, 0x0511fa97, - 0x0502000a, 0x59300009, 0x800001c0, 0x05020004, - 0x05f1ffb8, 0x0505fc8d, 0x0501f003, 0x05f5fea8, - 0x05f1ffb4, 0x1c01f000, 0x0511fa36, 0x05f1f7b1, - 0x42000000, 0x0010e462, 0x0511fbba, 0x1c01f000, - 0x42000000, 0x0010e461, 0x0511fbb6, 0x59300203, - 0x90000c91, 0x05ae19b1, 0x4803c857, 0x0c01f001, - 0x0010ac3d, 0x0010a9bf, 0x0010ac3d, 0x0010ac3d, - 0x0010ac3d, 0x0010ac3d, 0x0010ac3d, 0x0010ac3d, - 0x0010ac3d, 0x0010a9bf, 0x0010ac3e, 0x0010a9bf, - 0x0010ac48, 0x0010ac3d, 0x0010ac3e, 0x0010ac3d, - 0x0010ac3d, 0x05adf99d, 0x59300403, 0x82000580, - 0x0000008b, 0x05000007, 0x4a026403, 0x0000008b, - 0x642e6203, 0x42000800, 0x80004040, 0x0005f6ab, - 0x59300a29, 0x0501f880, 0x0500000b, 0x4d2c0000, - 0x59325809, 0x641a5a0a, 0x497a5c0d, 0x0001fb82, - 0x59300a29, 0x90040d83, 0x05d40d75, 0x5c025800, - 0x497a6009, 0x4d3c0000, 0x417a7800, 0x05b9fed5, - 0x5c027800, 0x60443000, 0x0511f929, 0x42000000, - 0x0010e454, 0x0511fb7f, 0x4c5c0000, 0x4130b800, - 0x05f1ffa3, 0x05000009, 0x4936600a, 0x4926601d, - 0x0501fc2b, 0x4d300000, 0x405e6000, 0x05f1ff69, - 0x5c026000, 0x0501f002, 0x405e6000, 0x5c00b800, - 0x497a6009, 0x64066407, 0x64066403, 0x59240400, - 0x8c00050a, 0x0502000b, 0x64126407, 0x641e6203, - 0x6406642c, 0x60103000, 0x4d400000, 0x60a68000, - 0x41782800, 0x050dfb26, 0x5c028000, 0x1c01f000, - 0x602c0800, 0x05d5f870, 0x64066203, 0x05e9f3f2, - 0x42000000, 0x0010e467, 0x0511fb5a, 0x59300203, - 0x90000c91, 0x05ae1955, 0x4803c857, 0x0c01f001, - 0x0010aca9, 0x0010ac99, 0x0010ac9b, 0x0010acaa, - 0x0010ac9a, 0x0010ac99, 0x0010ac99, 0x0010ac99, - 0x0010ac99, 0x0010ac99, 0x0010ac99, 0x0010ac99, - 0x0010ac99, 0x0010ac99, 0x0010ac99, 0x0010ac99, - 0x0010ac99, 0x05adf941, 0x05b1fbaf, 0x4d2c0000, - 0x59325809, 0x641a5a0a, 0x0001fb82, 0x5c025800, - 0x497a6009, 0x642a6229, 0x4a026403, 0x00000085, - 0x64266203, 0x640a6407, 0x42000800, 0x80004040, - 0x0005f6ab, 0x1c01f000, 0x05edf869, 0x4df00000, - 0x05fdfc84, 0x05020003, 0x05edfb32, 0x05020008, - 0x05e9fc26, 0x05020004, 0x5c03e000, 0x05edf851, - 0x05fdf7e7, 0x05e9ff77, 0x05ae0924, 0x5c03e000, - 0x05edf84c, 0x59300203, 0x90000d83, 0x05ac091f, - 0x90000c91, 0x05ae191d, 0x0c01f7ca, 0x59a8003b, - 0x59a8089a, 0x80040400, 0x80080480, 0x05021003, - 0x90000541, 0x1c01f000, 0x480bc857, 0x80000580, - 0x1c01f000, 0x4c040000, 0x59300809, 0x59a8000c, - 0x80040480, 0x05001007, 0x59a8000a, 0x80040480, - 0x05021004, 0x800409c0, 0x5c000800, 0x1c01f000, - 0x800409c0, 0x05ae0905, 0x4803c856, 0x05fdf7fb, - 0x4803c856, 0x4d300000, 0x0005ffbf, 0x05000007, - 0x0501f825, 0x4d380000, 0x612e7000, 0x0009f800, + 0x4d300000, 0x05f5f897, 0x5c000000, 0x0500000f, + 0x641c0407, 0x4a000006, 0x00000398, 0x49238830, + 0x4a038832, 0xffffffff, 0x4926601d, 0x497a6009, + 0x4936600a, 0x64066407, 0x64066203, 0x65466403, + 0x5c025800, 0x05e9f499, 0x40026000, 0x5c025800, + 0x60042800, 0x0505f655, 0x0010b0a2, 0x0010b143, + 0x0010b0a3, 0x0010b0dc, 0x0010b0a3, 0x0010b158, + 0x0010b0a3, 0x0010b0aa, 0x0010b0a2, 0x0010b158, + 0x0010b0a2, 0x0010b0b5, 0x05a9fd73, 0x59300403, + 0x90000d96, 0x05000035, 0x90000d84, 0x05000033, + 0x90000d82, 0x05000031, 0x0501fab9, 0x0500002f, + 0x59300403, 0x90000da2, 0x050000ac, 0x90000db9, + 0x050000b3, 0x90000db5, 0x050000b1, 0x90000d9e, + 0x05000027, 0x0501f99d, 0x05000005, 0x0505f83c, + 0x05020003, 0x05d5fc60, 0x0501f020, 0x59300403, + 0x90000d81, 0x0502000f, 0x5930081d, 0x58040200, + 0x8c000500, 0x05040624, 0x5930080a, 0x58040403, + 0x82000580, 0x000007fe, 0x05020004, 0x60042800, + 0x0505fe22, 0x0009f010, 0x05d5fc24, 0x0500000f, + 0x59340403, 0x82000c80, 0x000007f0, 0x05001004, + 0x82000c80, 0x00000800, 0x05001009, 0x4d3c0000, + 0x417a7800, 0x05b9faee, 0x5c027800, 0x42000000, + 0x001123f8, 0x0511fe7e, 0x05f5ff23, 0x05f5f00a, + 0x0501f976, 0x05000003, 0x0505f815, 0x05000095, + 0x59300c03, 0x90040596, 0x05000058, 0x90040582, + 0x05020034, 0x59a8024c, 0x8c000502, 0x0502000f, + 0x05d9fab0, 0x0502000d, 0x59a80006, 0x8c000506, + 0x0502000a, 0x05d9fabd, 0x05020004, 0x60040000, + 0x05d9fa7b, 0x0501f083, 0x64075045, 0x6006d800, + 0x05d9fa21, 0x0501f07f, 0x59340200, 0x8c000508, + 0x05000007, 0x84000508, 0x48026a00, 0x59300416, + 0x84000510, 0x48026416, 0x0501f014, 0x59340412, + 0x82000500, 0x000000ff, 0x05000016, 0x80000040, + 0x48026c12, 0x5932481d, 0x59300c29, 0x4c040000, + 0x497a6205, 0x4d300000, 0x05f5f80e, 0x5c000000, + 0x5c000800, 0x0500000a, 0x49780009, 0x641c0407, + 0x4a000006, 0x00000398, 0x4926601d, 0x48066429, + 0x4936600a, 0x64066407, 0x0501f024, 0x40026000, + 0x59300403, 0x90000d82, 0x05020013, 0x59340403, + 0x82000580, 0x000007fe, 0x0502000c, 0x59a8024c, + 0x84000540, 0x4803524c, 0x05d9fa76, 0x05fc07ca, + 0x4a035048, 0x0000ffff, 0x0509f831, 0x05d1fad8, + 0x05f5fed5, 0x0501f00f, 0x600c0002, 0x05f5fa33, + 0x05f007b9, 0x05f5fed0, 0x4d3c0000, 0x417a7800, + 0x05b9fa93, 0x5c027800, 0x42000000, 0x001123f8, + 0x0511fe23, 0x59300429, 0x900005a1, 0x05080001, + 0x05b9fad2, 0x05f1f7ac, 0x600c0800, 0x05d1fdc5, + 0x64066203, 0x640a6403, 0x59300418, 0xb0000591, + 0x05020002, 0x65466403, 0x05e9f3e8, 0x0501f90f, + 0x05fe0796, 0x05b9fac5, 0x4d3c0000, 0x417a7800, + 0x05b9fa7b, 0x5c027800, 0x42000000, 0x001123f8, + 0x0511fe0b, 0x60603000, 0x41782800, 0x60002000, + 0x4d400000, 0x4d440000, 0x59368c03, 0x60a68000, + 0x0505fa66, 0x5c028800, 0x5c028000, 0x05f1f78e, + 0x05d5fbc1, 0x05fdf7d4, 0x42000000, 0x00112402, + 0x0511fdfb, 0x60140002, 0x05f5fa00, 0x05fc07ce, + 0x05f5fa1d, 0x05fe07cc, 0x1c01f000, 0x59300c03, + 0x0501fd4a, 0x000a0010, 0x916c0583, 0x05000003, + 0x640a6006, 0x1c01f000, 0x59300403, 0x48026418, + 0x64066229, 0x4a026403, 0x00000085, 0x64266203, + 0x640a6407, 0x42000800, 0x80000040, 0x0005f6e2, + 0x0511ff32, 0x0500000b, 0x4d400000, 0x4d200000, + 0x05b9fd3b, 0x60068000, 0x60001802, 0x60042800, + 0x60040000, 0x05d5ffb7, 0x5c024000, 0x5c028000, + 0x05f5fe7d, 0x4d3c0000, 0x417a7800, 0x05b9fa40, + 0x5c027800, 0x42000000, 0x001123f8, 0x0511fdd0, + 0x497a6009, 0x641e6407, 0x4a026006, 0x00000398, + 0x497a6205, 0x1c01f000, 0x42000000, 0x00112409, + 0x0511fdc7, 0x05fdf6a1, 0x59300403, 0x900005b6, + 0x05020005, 0x64066203, 0x42000800, 0x80000040, + 0x0005f6e2, 0x42000000, 0x00112404, 0x0511fdbc, + 0x0511fc75, 0x0502000a, 0x59300009, 0x800001c0, + 0x05020004, 0x05f1ff44, 0x0505fcb5, 0x0501f003, + 0x05f5fe59, 0x05f1ff40, 0x1c01f000, 0x0511fc14, + 0x05f1f73d, 0x42000000, 0x00112406, 0x0511fdac, + 0x1c01f000, 0x42000000, 0x00112405, 0x0511fda8, + 0x59300203, 0x90000c91, 0x05aa1c63, 0x4803c857, + 0x0c01f001, 0x0010b1c6, 0x0010af39, 0x0010b1c6, + 0x0010b1c6, 0x0010b1c6, 0x0010b1c6, 0x0010b1c6, + 0x0010b1c6, 0x0010b1c6, 0x0010af39, 0x0010b1c7, + 0x0010af39, 0x0010b1d1, 0x0010b1c6, 0x0010b1c7, + 0x0010b1c6, 0x0010b1c6, 0x05a9fc4f, 0x59300403, + 0x82000580, 0x0000008b, 0x05000007, 0x4a026403, + 0x0000008b, 0x642e6203, 0x42000800, 0x80004040, + 0x0005f6e2, 0x59300a29, 0x0501f880, 0x0500000b, + 0x4d2c0000, 0x59325809, 0x641a5a0a, 0x497a5c0d, + 0x0001fba8, 0x59300a29, 0x90040d83, 0x05d40ab1, + 0x5c025800, 0x497a6009, 0x4d3c0000, 0x417a7800, + 0x05b9f9e3, 0x5c027800, 0x60443000, 0x0511fafd, + 0x42000000, 0x001123f8, 0x0511fd71, 0x4c5c0000, + 0x4130b800, 0x05f1ff2f, 0x05000009, 0x4936600a, + 0x4926601d, 0x0501fc3a, 0x4d300000, 0x405e6000, + 0x05f1fef5, 0x5c026000, 0x0501f002, 0x405e6000, + 0x5c00b800, 0x497a6009, 0x64066407, 0x64066403, + 0x59240400, 0x8c00050a, 0x0502000b, 0x64126407, + 0x641e6203, 0x6406642c, 0x60103000, 0x4d400000, + 0x60a68000, 0x41782800, 0x050dfce4, 0x5c028000, + 0x1c01f000, 0x602c0800, 0x05d1fcfa, 0x64066203, + 0x05e9f322, 0x42000000, 0x0011240b, 0x0511fd4c, + 0x59300203, 0x90000c91, 0x05aa1c07, 0x4803c857, + 0x0c01f001, 0x0010b232, 0x0010b222, 0x0010b224, + 0x0010b233, 0x0010b223, 0x0010b222, 0x0010b222, + 0x0010b222, 0x0010b222, 0x0010b222, 0x0010b222, + 0x0010b222, 0x0010b222, 0x0010b222, 0x0010b222, + 0x0010b222, 0x0010b222, 0x05a9fbf3, 0x05adfec4, + 0x4d2c0000, 0x59325809, 0x641a5a0a, 0x0001fba8, + 0x5c025800, 0x497a6009, 0x642a6229, 0x4a026403, + 0x00000085, 0x64266203, 0x640a6407, 0x42000800, + 0x80004040, 0x0005f6e2, 0x1c01f000, 0x05e9ff9e, + 0x4df00000, 0x05fdfc75, 0x05020003, 0x05edfa67, + 0x05020008, 0x05e9fb56, 0x05020004, 0x5c03e000, + 0x05e9ff86, 0x05fdf7e7, 0x05e9feab, 0x05aa0bd6, + 0x5c03e000, 0x05e9ff81, 0x59300203, 0x90000d83, + 0x05a80bd1, 0x90000c91, 0x05aa1bcf, 0x0c01f7ca, + 0x59a8003d, 0x59a8089d, 0x80040400, 0x80080480, + 0x05021003, 0x90000541, 0x1c01f000, 0x480bc857, + 0x80000580, 0x1c01f000, 0x4c040000, 0x59300809, + 0x59a8000c, 0x80040480, 0x05021006, 0x4d2c0000, + 0x40065800, 0x0501f80d, 0x5c025800, 0x05000007, + 0x59a8000a, 0x80040480, 0x05021004, 0x800409c0, + 0x5c000800, 0x1c01f000, 0x800409c0, 0x05aa0bb2, + 0x4803c856, 0x05fdf7fb, 0x59a8000d, 0x812c0480, + 0x05001004, 0x832c0480, 0x00111b80, 0x05001004, + 0x492fc857, 0x80000580, 0x1c01f000, 0x812e59c0, + 0x1c01f000, 0x4803c856, 0x4d300000, 0x0005fff6, + 0x05000007, 0x0501f825, 0x4d380000, 0x612e7000, + 0x0009f839, 0x5c027000, 0x90000541, 0x5c026000, + 0x1c01f000, 0x4803c856, 0x4d300000, 0x05f1fe99, + 0x05000016, 0x0501f819, 0x4d300000, 0x05e9ff4e, + 0x4df00000, 0x05e9fc79, 0x4d3c0000, 0x60027840, + 0x05e9fdcc, 0x05e9fb4c, 0x050dfafe, 0x5c027800, + 0x5c03e000, 0x05e80f35, 0x5c026000, 0x8d3c053e, + 0x05020008, 0x4d380000, 0x61327000, 0x0009f839, 0x5c027000, 0x90000541, 0x5c026000, 0x1c01f000, - 0x4803c856, 0x4d300000, 0x05f1ff1d, 0x05000016, - 0x0501f819, 0x4d300000, 0x05edf829, 0x4df00000, - 0x05e9fd59, 0x4d3c0000, 0x60027840, 0x05e9fea6, - 0x05e9fc2c, 0x050df980, 0x5c027800, 0x5c03e000, - 0x05ec0810, 0x5c026000, 0x8d3c053e, 0x05020008, - 0x4d380000, 0x61327000, 0x0009f800, 0x5c027000, - 0x90000541, 0x5c026000, 0x1c01f000, 0x0005ffdc, - 0x05fdf7fc, 0x592c040b, 0x497a580c, 0x497a580d, - 0x494a6019, 0x494e601a, 0x4936600a, 0x492e6009, - 0x640e6407, 0x59340802, 0x4806600b, 0x800000c2, - 0x800008c4, 0x80040400, 0x48026006, 0x05d5fd62, - 0x4926601d, 0x0501f37e, 0x493bc857, 0x4d300000, - 0x0005ffbf, 0x0500000a, 0x05fdffeb, 0x4d400000, - 0x60168000, 0x0501f80a, 0x5c028000, 0x8d3c053e, - 0x05020005, 0x0009f800, 0x90000541, 0x5c026000, - 0x1c01f000, 0x0005ffdc, 0x05fdf7fc, 0x4803c856, - 0x05e9ffef, 0x4df00000, 0x4d3c0000, 0x4d440000, - 0x59368c03, 0x60067840, 0x05e9fd94, 0x05e9fcd1, - 0x05e9fbf0, 0x050df944, 0x5c028800, 0x5c027800, - 0x5c03e000, 0x05e807d3, 0x1c01f000, 0x4803c856, - 0x4d300000, 0x05f1fece, 0x0500000e, 0x481a601e, - 0x48ee602d, 0x4936600a, 0x05d5fd37, 0x4926601d, - 0x0501fb53, 0x64066407, 0x492e6009, 0x4d380000, - 0x607e7000, 0x0009f800, 0x5c027000, 0x90000541, - 0x5c026000, 0x1c01f000, 0x4803c856, 0x4d300000, - 0x05f1febb, 0x0500000d, 0x48ee602d, 0x4936600a, - 0x05d5fd25, 0x4926601d, 0x0501fb41, 0x64066407, - 0x492e6009, 0x4d380000, 0x61567000, 0x0009f800, - 0x5c027000, 0x90000541, 0x5c026000, 0x1c01f000, - 0x4803c856, 0x4d300000, 0x05f1fea9, 0x0500000e, - 0x481a601e, 0x48ee602d, 0x4936600a, 0x05d5fd12, - 0x4926601d, 0x0501fb2e, 0x64066407, 0x492e6009, - 0x4d380000, 0x60f67000, 0x0009f800, 0x5c027000, + 0x0009f810, 0x05fdf7fc, 0x592c040b, 0x497a580c, + 0x497a580d, 0x494a6019, 0x494e601a, 0x4936600a, + 0x492e6009, 0x640e6407, 0x59340802, 0x4806600b, + 0x800000c2, 0x800008c4, 0x80040400, 0x48026006, + 0x05d5fa92, 0x4926601d, 0x0501f37d, 0x493bc857, + 0x4d300000, 0x0005fff6, 0x0500000a, 0x05fdffeb, + 0x4d400000, 0x60168000, 0x0501f80a, 0x5c028000, + 0x8d3c053e, 0x05020005, 0x0009f839, 0x90000541, + 0x5c026000, 0x1c01f000, 0x0009f810, 0x05fdf7fc, + 0x4803c856, 0x05e9ff14, 0x4df00000, 0x4d3c0000, + 0x4d440000, 0x59368c03, 0x60067840, 0x05e9fcb4, + 0x05e9fbf1, 0x05e9fb10, 0x050dfac2, 0x5c028800, + 0x5c027800, 0x5c03e000, 0x05e806f8, 0x1c01f000, + 0x4803c856, 0x4d300000, 0x05f1fe4a, 0x0500000e, + 0x481a601e, 0x48ee602d, 0x4936600a, 0x05d5fa67, + 0x4926601d, 0x0501fb52, 0x64066407, 0x492e6009, + 0x4d380000, 0x607e7000, 0x0009f839, 0x5c027000, 0x90000541, 0x5c026000, 0x1c01f000, 0x4803c856, - 0x4d300000, 0x05f1fe96, 0x05000012, 0x4926601d, - 0x4936600a, 0x0501fb1e, 0x492fc857, 0x4933c857, - 0x592c0408, 0x8c00051e, 0x05000003, 0x48efc857, - 0x48ee602d, 0x64066407, 0x492e6009, 0x4d380000, - 0x60027000, 0x0009f800, 0x5c027000, 0x90000541, - 0x5c026000, 0x1c01f000, 0x4803c856, 0x4d300000, - 0x05f1fe7f, 0x0500000e, 0x48ee602d, 0x481a601e, - 0x4936600a, 0x05d5fce8, 0x4926601d, 0x0501fb04, - 0x64066407, 0x492e6009, 0x4d380000, 0x61127000, - 0x0009f800, 0x5c027000, 0x90000541, 0x5c026000, - 0x1c01f000, 0x4803c856, 0x4d300000, 0x05f1fe6c, + 0x4d300000, 0x05f1fe37, 0x0500000d, 0x48ee602d, + 0x4936600a, 0x05d5fa55, 0x4926601d, 0x0501fb40, + 0x64066407, 0x492e6009, 0x4d380000, 0x61567000, + 0x0009f839, 0x5c027000, 0x90000541, 0x5c026000, + 0x1c01f000, 0x4803c856, 0x4d300000, 0x05f1fe25, 0x0500000e, 0x481a601e, 0x48ee602d, 0x4936600a, - 0x05d5fcd5, 0x4926601d, 0x0501faf1, 0x64066407, - 0x492e6009, 0x4d380000, 0x61267000, 0x0009f800, + 0x05d5fa42, 0x4926601d, 0x0501fb2d, 0x64066407, + 0x492e6009, 0x4d380000, 0x60f67000, 0x0009f839, 0x5c027000, 0x90000541, 0x5c026000, 0x1c01f000, - 0x5930000a, 0x80001540, 0x05ac0830, 0x8d0c0512, - 0x05020007, 0x5808040b, 0x4803c856, 0x80000040, - 0x05001003, 0x4800140b, 0x05020008, 0x58080010, - 0x80000540, 0x05000005, 0x58080203, 0x80000540, - 0x05020002, 0x64041203, 0x1c01f000, 0x4803c856, - 0x59300403, 0x90000d82, 0x0500000b, 0x90000d83, - 0x05000009, 0x90000d84, 0x05000007, 0x599c0819, - 0x8c04050e, 0x05000003, 0x90000d80, 0x05000002, - 0x90000541, 0x1c01f000, 0x4803c856, 0x4c000000, - 0x4d2c0000, 0x59300407, 0x90000584, 0x05000019, - 0x59300009, 0x80025d40, 0x800001c0, 0x05000015, - 0x0501fd79, 0x05000011, 0x0501fd81, 0x0500000f, - 0x59300407, 0x90004590, 0x0500000c, 0x90004591, - 0x0500000a, 0x90004583, 0x0500000a, 0x90004582, - 0x05000008, 0x9000458a, 0x05000006, 0x592c0408, - 0x8c00051e, 0x05000003, 0x80000580, 0x0501f002, - 0x90000541, 0x5c025800, 0x5c000000, 0x1c01f000, - 0x4803c856, 0x4d300000, 0x05f1fe15, 0x05000010, - 0x4926601d, 0x4936600a, 0x0501fa9d, 0x48ee602d, - 0x64066407, 0x492e6009, 0x4d3c0000, 0x417a7800, - 0x05b9fd34, 0x5c027800, 0x4d380000, 0x60a27000, - 0x0009f800, 0x5c027000, 0x90000541, 0x5c026000, - 0x1c01f000, 0x4803c856, 0x91380595, 0x05020009, - 0x59a800b6, 0xb00005b4, 0x05020006, 0x41780800, - 0x05d1ffce, 0x64066203, 0x64a66403, 0x05e9f266, - 0x05f5fcb7, 0x0005f7dc, 0x4803c856, 0x91380596, - 0x05020004, 0x60100800, 0x05d1fedb, 0x05f1f7cf, - 0x91380595, 0x0502000d, 0x59a800b6, 0x90000594, - 0x0502000a, 0x05d5f832, 0x05f9f963, 0x05020007, - 0x59340404, 0x80000540, 0x05000004, 0x60180800, - 0x05d1fecd, 0x05f1f7c1, 0x05f5fca1, 0x0005f7dc, - 0x4803c856, 0x592c020a, 0x90000585, 0x05000002, - 0x1c01f000, 0x4803c856, 0x592c020c, 0x8400054a, - 0x48025a0c, 0x1c01f000, 0x59300809, 0x800409c0, - 0x05000008, 0x58040208, 0x82000580, 0x00000152, - 0x05020004, 0x59a8085c, 0x48066006, 0x1c01f000, - 0x599c0416, 0x800001c0, 0x05000007, 0x90000c84, - 0x05001005, 0x800000c2, 0x800008c4, 0x80040c00, - 0x05fdf7f6, 0x59300403, 0x90000582, 0x05fe07f2, - 0x5930080a, 0x58040403, 0x82000580, 0x000007fe, - 0x05fe07ed, 0x60a00800, 0x05fdf7ec, 0x4803c856, - 0x59300c03, 0xb13805a1, 0x05000019, 0xb13805a0, - 0x05000017, 0xb13805a2, 0x0502001e, 0x497a6205, - 0x90040582, 0x05000006, 0x9004059e, 0x0500000e, - 0x90040584, 0x05020017, 0x0501f003, 0x600c0800, - 0x05d1fe91, 0x59340200, 0x84000508, 0x48026a00, - 0x59300416, 0x84000510, 0x48026416, 0x64066203, - 0x05e9f20d, 0x64166203, 0x0501f00a, 0x59340200, - 0x8c00050e, 0x05020002, 0x497a6205, 0x640a6203, - 0x90040486, 0x05fc17c1, 0x59a8005c, 0x48026006, + 0x4803c856, 0x4d300000, 0x05f1fe12, 0x05000012, + 0x4926601d, 0x4936600a, 0x0501fb1d, 0x492fc857, + 0x4933c857, 0x592c0408, 0x8c00051e, 0x05000003, + 0x48efc857, 0x48ee602d, 0x64066407, 0x492e6009, + 0x4d380000, 0x60027000, 0x0009f839, 0x5c027000, + 0x90000541, 0x5c026000, 0x1c01f000, 0x4803c856, + 0x4d300000, 0x05f1fdfb, 0x0500000e, 0x48ee602d, + 0x481a601e, 0x4936600a, 0x05d5fa18, 0x4926601d, + 0x0501fb03, 0x64066407, 0x492e6009, 0x4d380000, + 0x61127000, 0x0009f839, 0x5c027000, 0x90000541, + 0x5c026000, 0x1c01f000, 0x4803c856, 0x4d300000, + 0x05f1fde8, 0x0500000e, 0x481a601e, 0x48ee602d, + 0x4936600a, 0x05d5fa05, 0x4926601d, 0x0501faf0, + 0x64066407, 0x492e6009, 0x4d380000, 0x61267000, + 0x0009f839, 0x5c027000, 0x90000541, 0x5c026000, + 0x1c01f000, 0x5930000a, 0x80001540, 0x05a80ad2, + 0x8d0c0512, 0x05020007, 0x5808040b, 0x4803c856, + 0x80000040, 0x05001003, 0x4800140b, 0x05020008, + 0x58080010, 0x80000540, 0x05000005, 0x58080203, + 0x80000540, 0x05020002, 0x64041203, 0x1c01f000, + 0x4803c856, 0x59300403, 0x90000d82, 0x0500000b, + 0x90000d83, 0x05000009, 0x90000d84, 0x05000007, + 0x599c0819, 0x8c04050e, 0x05000003, 0x90000d80, + 0x05000002, 0x90000541, 0x1c01f000, 0x4803c856, + 0x4c000000, 0x4d2c0000, 0x59300407, 0x90000584, + 0x05000019, 0x59300009, 0x80025d40, 0x800001c0, + 0x05000015, 0x0501fd86, 0x05000011, 0x0501fd8e, + 0x0500000f, 0x59300407, 0x90004590, 0x0500000c, + 0x90004591, 0x0500000a, 0x90004583, 0x0500000a, + 0x90004582, 0x05000008, 0x9000458a, 0x05000006, + 0x592c0408, 0x8c00051e, 0x05000003, 0x80000580, + 0x0501f002, 0x90000541, 0x5c025800, 0x5c000000, + 0x1c01f000, 0x4803c856, 0x4d300000, 0x05f1fd91, + 0x05000010, 0x4926601d, 0x4936600a, 0x0501fa9c, + 0x48ee602d, 0x64066407, 0x492e6009, 0x4d3c0000, + 0x417a7800, 0x05b9f832, 0x5c027800, 0x4d380000, + 0x60a27000, 0x0009f839, 0x5c027000, 0x90000541, + 0x5c026000, 0x1c01f000, 0x4803c856, 0x91380595, + 0x05020009, 0x59a800bb, 0xb00005b4, 0x05020006, + 0x41780800, 0x05d1fc9b, 0x64066203, 0x64a66403, + 0x05e9f186, 0x05f5fc58, 0x0009f010, 0x4803c856, + 0x91380596, 0x05020004, 0x60100800, 0x05d1fb55, + 0x05f1f76c, 0x91380595, 0x0502000d, 0x59a800bb, + 0x90000594, 0x0502000a, 0x05d1fcff, 0x05f9f911, + 0x05020007, 0x59340404, 0x80000540, 0x05000004, + 0x60180800, 0x05d1fb47, 0x05f1f75e, 0x05f5fc42, + 0x0009f010, 0x4803c856, 0x592c020a, 0x90000585, + 0x05000002, 0x1c01f000, 0x4803c856, 0x592c020c, + 0x8400054a, 0x48025a0c, 0x1c01f000, 0x59300809, + 0x800409c0, 0x05000008, 0x58040208, 0x82000580, + 0x00000152, 0x05020004, 0x59a8085f, 0x48066006, + 0x1c01f000, 0x599c0416, 0x800001c0, 0x05000007, + 0x90000c84, 0x05001005, 0x800000c2, 0x800008c4, + 0x80040c00, 0x05fdf7f6, 0x59300403, 0x90000582, + 0x05fe07f2, 0x5930080a, 0x58040403, 0x82000580, + 0x000007fe, 0x05fe07ed, 0x60a00800, 0x05fdf7ec, + 0x4803c856, 0x59300c03, 0xb13805a1, 0x05000019, + 0xb13805a0, 0x05000017, 0xb13805a2, 0x0502001e, + 0x497a6205, 0x90040582, 0x05000006, 0x9004059e, + 0x0500000e, 0x90040584, 0x05020017, 0x0501f003, + 0x600c0800, 0x05d1fb0b, 0x59340200, 0x84000508, + 0x48026a00, 0x59300416, 0x84000510, 0x48026416, + 0x64066203, 0x05e9f12d, 0x64166203, 0x0501f00a, + 0x59340200, 0x8c00050e, 0x05020002, 0x497a6205, + 0x640a6203, 0x90040486, 0x05fc17c1, 0x59a8005f, + 0x48026006, 0x1c01f000, 0x4803c856, 0xb13805a1, + 0x05000003, 0xb13805a0, 0x0502000a, 0x59303403, + 0x82180580, 0x00000086, 0x05f004d3, 0x82180580, + 0x00000087, 0x05f004d0, 0x497a6205, 0x642a6203, 0x1c01f000, 0x4803c856, 0xb13805a1, 0x05000003, - 0xb13805a0, 0x0502000a, 0x59303403, 0x82180580, - 0x00000086, 0x05f00557, 0x82180580, 0x00000087, - 0x05f00554, 0x497a6205, 0x642a6203, 0x1c01f000, - 0x4803c856, 0xb13805a1, 0x05000003, 0xb13805a0, - 0x05020007, 0x59300403, 0xb0000c91, 0x05aa1f53, - 0xb0000480, 0x05a81f51, 0x0c01f002, 0x1c01f000, - 0x0010ae9e, 0x0010ae9d, 0x0010ae9d, 0x0010aeaa, - 0x0010ae9d, 0x0010ae9d, 0x0010ae9d, 0x0010ae9d, - 0x0010ae9d, 0x0010aeaa, 0x0010ae9d, 0x0010aeab, - 0x0010aeab, 0x0010aeab, 0x0010aeab, 0x0010ae9d, - 0x0010aeae, 0x05a9ff3d, 0x59340200, 0x8c00050e, - 0x05020002, 0x497a6205, 0x59300809, 0x5804020e, - 0x8c000502, 0x05000003, 0x64126203, 0x1c01f000, - 0x640a6203, 0x1c01f000, 0x1c01f000, 0x497a6205, - 0x64366203, 0x1c01f000, 0x0005f7dc, 0x4803c856, - 0xb13805a1, 0x05000006, 0xb13805a0, 0x05020009, - 0x59cc0002, 0x8c000526, 0x05000007, 0x59300403, - 0xb0000d83, 0x05000005, 0xb0000d89, 0x05000003, - 0x05f1fd78, 0x1c01f000, 0x59a8005e, 0x48026205, - 0x640a6203, 0x5930001c, 0x80000540, 0x05000003, - 0x497a601c, 0x0801f800, 0x1c01f000, 0x497a6205, - 0x497a6009, 0x64066203, 0x65426403, 0x42000800, - 0x80000043, 0x0005f6ab, 0x4933c857, 0x4d340000, - 0x5932680a, 0x59340200, 0x8c00050e, 0x05000005, - 0x59300407, 0x90000c92, 0x05021004, 0x0c01f805, - 0x5c026800, 0x1c01f000, 0x05fdfae0, 0x05fdf7fd, - 0x0010a9ba, 0x0010aeee, 0x0010aef2, 0x0010aef5, - 0x0010c96b, 0x0010c983, 0x0010c987, 0x0010a9ba, - 0x0010a9ba, 0x0010a9ba, 0x0010a9ba, 0x0010a9ba, - 0x0010a9ba, 0x0010a9ba, 0x0010a9ba, 0x0010a9ba, - 0x0010a9ba, 0x0010a9ba, 0x4803c856, 0x40000000, - 0x40000000, 0x1c01f000, 0x40000000, 0x40000000, - 0x1c01f000, 0x59300008, 0x8c000536, 0x0502000b, - 0x5930001e, 0x4803c857, 0x59300416, 0x4933c857, - 0x4803c857, 0x8c000502, 0x05000005, 0x4803c857, - 0x84000540, 0x48026416, 0x1c01f000, 0x42000000, - 0xd0000000, 0x41300800, 0x05adfe2c, 0x0501f80e, - 0x0502000c, 0x59300c16, 0x59300403, 0xb0000580, - 0x05000003, 0x84040d40, 0x0501f004, 0x59a8005c, - 0x9000040a, 0x48026205, 0x84040d42, 0x48066416, - 0x1c01f000, 0x4933c857, 0x4d340000, 0x5932680a, - 0x59340a00, 0x8c04050e, 0x05a80ec0, 0x5930001e, - 0x80000540, 0x05020031, 0x59300403, 0x4803c857, - 0xb0000580, 0x05000003, 0x8d0c050e, 0x05020029, - 0x4d1c0000, 0x41323800, 0x05f1fcdd, 0x05000023, - 0x4932381e, 0x591c0416, 0x84000542, 0x48023c16, - 0x4936600a, 0x05d5fb44, 0x4926601d, 0x0501f960, - 0x591c0407, 0x90000583, 0x05000006, 0x591c0202, - 0x4802641b, 0x591c0402, 0x4802621b, 0x0501f005, - 0x591c0202, 0x4802621b, 0x591c0402, 0x4802641b, - 0x591c0017, 0x48026017, 0x491e602a, 0x64066407, - 0x64d66403, 0x64066203, 0x42000800, 0x80000040, - 0x0005feab, 0x411e6000, 0x5c023800, 0x80000580, - 0x5c026800, 0x1c01f000, 0x411e6000, 0x5c023800, - 0x59a8005e, 0x48026205, 0x90000541, 0x05fdf7f9, - 0x4933c857, 0x4d2c0000, 0x4932381e, 0x4a026202, - 0x0000ffff, 0x591e5809, 0x591c0008, 0x8c00051e, - 0x05000005, 0x8400051e, 0x48023808, 0x497a580d, - 0x0501f016, 0x592c040c, 0x8c000518, 0x05000013, - 0x84000518, 0x48025c0c, 0x4d400000, 0x592e820a, - 0x64065a0a, 0x0501fbf8, 0x49425a0a, 0x5c028000, - 0x497a580d, 0x592c040c, 0x8c000512, 0x05000007, - 0x4d2c0000, 0x84000512, 0x48025c0c, 0x592e580d, - 0x05adfa2b, 0x5c025800, 0x59a8005e, 0x48026205, - 0x591c0216, 0x48026218, 0x90000d81, 0x05000006, - 0x640a3a03, 0x90000585, 0x05000007, 0x497a6017, - 0x0501f01c, 0x591c0008, 0x84000540, 0x48023808, - 0x64123a03, 0x591c0416, 0x4803c857, 0x8400051c, - 0x84000554, 0x48023c16, 0x592c0013, 0x40001000, - 0x591c0818, 0x80040480, 0x05fe17f1, 0x591c0018, - 0x82000500, 0xfffffffc, 0x48026017, 0x48023818, + 0xb13805a0, 0x05020007, 0x59300403, 0xb0000c91, + 0x05aa19f5, 0xb0000480, 0x05a819f3, 0x0c01f002, + 0x1c01f000, 0x0010b437, 0x0010b436, 0x0010b436, + 0x0010b443, 0x0010b436, 0x0010b436, 0x0010b436, + 0x0010b436, 0x0010b436, 0x0010b443, 0x0010b436, + 0x0010b444, 0x0010b444, 0x0010b444, 0x0010b444, + 0x0010b436, 0x0010b447, 0x05a9f9df, 0x59340200, + 0x8c00050e, 0x05020002, 0x497a6205, 0x59300809, + 0x5804020e, 0x8c000502, 0x05000003, 0x64126203, + 0x1c01f000, 0x640a6203, 0x1c01f000, 0x1c01f000, + 0x497a6205, 0x64366203, 0x1c01f000, 0x0009f010, + 0x4803c856, 0xb13805a1, 0x05000006, 0xb13805a0, + 0x05020009, 0x59cc0002, 0x8c000526, 0x05000007, + 0x59300403, 0xb0000d83, 0x05000005, 0xb0000d89, + 0x05000003, 0x05f1fd11, 0x1c01f000, 0x59a80061, + 0x48026205, 0x640a6203, 0x5930001c, 0x80000540, + 0x05000003, 0x497a601c, 0x0801f800, 0x1c01f000, + 0x497a6205, 0x497a6009, 0x4a026003, 0x00500001, + 0x42000800, 0x80000043, 0x0005f6e2, 0x4933c857, + 0x4d340000, 0x5932680a, 0x59340200, 0x8c00050e, + 0x05000005, 0x59300407, 0x90000c92, 0x05021004, + 0x0c01f805, 0x5c026800, 0x1c01f000, 0x05fdfac1, + 0x05fdf7fd, 0x0010af34, 0x0010b487, 0x0010b48b, + 0x0010b48e, 0x0010d0b5, 0x0010d0cd, 0x0010d0d1, + 0x0010af34, 0x0010af34, 0x0010af34, 0x0010af34, + 0x0010af34, 0x0010af34, 0x0010af34, 0x0010af34, + 0x0010af34, 0x0010af34, 0x0010af34, 0x4803c856, + 0x40000000, 0x40000000, 0x1c01f000, 0x40000000, + 0x40000000, 0x1c01f000, 0x59300008, 0x8c000536, + 0x0502000b, 0x5930001e, 0x4803c857, 0x59300416, + 0x4933c857, 0x4803c857, 0x8c000502, 0x05000005, + 0x4803c857, 0x84000540, 0x48026416, 0x1c01f000, + 0x42000000, 0xd0000000, 0x41300800, 0x05adf92f, + 0x0501f80e, 0x0502000c, 0x59300c16, 0x59300403, + 0xb0000580, 0x05000003, 0x84040d40, 0x0501f004, + 0x59a8005f, 0x9000040a, 0x48026205, 0x84040d42, + 0x48066416, 0x1c01f000, 0x4933c857, 0x4d340000, + 0x5932680a, 0x59340a00, 0x8c04050e, 0x05a80962, + 0x5930001e, 0x80000540, 0x05020031, 0x59300403, + 0x4803c857, 0xb0000580, 0x05000003, 0x8d0c050e, + 0x05020029, 0x4d1c0000, 0x41323800, 0x05f1fc59, + 0x05000023, 0x4932381e, 0x591c0416, 0x84000542, + 0x48023c16, 0x4936600a, 0x05d5f874, 0x4926601d, + 0x0501f95f, 0x591c0407, 0x90000583, 0x05000006, + 0x591c0202, 0x4802641b, 0x591c0402, 0x4802621b, + 0x0501f005, 0x591c0202, 0x4802621b, 0x591c0402, + 0x4802641b, 0x591c0017, 0x48026017, 0x491e602a, + 0x64066407, 0x64d66403, 0x64066203, 0x42000800, + 0x80000040, 0x0005fee2, 0x411e6000, 0x5c023800, + 0x80000580, 0x5c026800, 0x1c01f000, 0x411e6000, + 0x5c023800, 0x59a80061, 0x48026205, 0x90000541, + 0x05fdf7f9, 0x4933c857, 0x4d2c0000, 0x4932381e, + 0x4a026202, 0x0000ffff, 0x591e5809, 0x591c0008, + 0x8c00051e, 0x05000005, 0x8400051e, 0x48023808, + 0x497a580d, 0x0501f016, 0x592c040c, 0x8c000518, + 0x05000013, 0x84000518, 0x48025c0c, 0x4d400000, + 0x592e820a, 0x64065a0a, 0x0501fc05, 0x49425a0a, + 0x5c028000, 0x497a580d, 0x592c040c, 0x8c000512, + 0x05000007, 0x4d2c0000, 0x84000512, 0x48025c0c, + 0x592e580d, 0x05a9fcc9, 0x5c025800, 0x59a80061, + 0x48026205, 0x591c0216, 0x48026218, 0x90000d81, + 0x05000006, 0x640a3a03, 0x90000585, 0x05000007, + 0x497a6017, 0x0501f01b, 0x591c0008, 0x84000540, + 0x48023808, 0x64123a03, 0x591c0416, 0x4803c857, + 0x8400051c, 0x84000554, 0x48023c16, 0x592c0013, + 0x40001000, 0x591c0818, 0x80040480, 0x05fe17f1, + 0x82040500, 0xfffffffc, 0x48026017, 0x48023818, 0x591c0a16, 0x4807c857, 0x90040d85, 0x05020005, 0x480bc857, 0x4803c857, 0x4a023814, 0xffffffff, 0x591c0402, 0x4802641b, 0x591c0202, 0x4802621b, 0x591e680a, 0x4936600a, 0x64066407, 0x64e66403, - 0x64066203, 0x42000800, 0x80000040, 0x0005feab, + 0x64066203, 0x42000800, 0x80000040, 0x0005fee2, 0x5c025800, 0x1c01f000, 0x4933c857, 0x59300416, 0x8c000514, 0x05000015, 0x8c00051c, 0x05020012, 0x59300018, 0x80100480, 0x05001006, 0x05000005, @@ -11287,89 +11645,89 @@ static const uint32_t isp_2500_risc_code[] = { 0x1c01f000, 0x59300c03, 0x4933c857, 0x4807c857, 0x900404b4, 0x05001005, 0x900404bc, 0x05021003, 0x80000580, 0x1c01f000, 0x90000541, 0x05fdf7fe, - 0x42000000, 0x0010e3b6, 0x0511f806, 0x4d340000, + 0x42000000, 0x00112357, 0x0511f9e9, 0x4d340000, 0x4d240000, 0x5932481d, 0x5932680a, 0x59300407, 0x90000c92, 0x05021003, 0x4803c857, 0x0c01f804, - 0x5c024800, 0x5c026800, 0x1c01f000, 0x0010aff5, - 0x0010aff7, 0x0010affa, 0x0010b035, 0x0010c948, - 0x0010c915, 0x0010c94c, 0x0010aff6, 0x0010aff5, - 0x0010aff6, 0x0010aff6, 0x0010aff6, 0x0010aff6, - 0x0010aff6, 0x0010aff6, 0x0010aff6, 0x0010aff6, - 0x0010aff6, 0x05a9fde5, 0x1c01f000, 0x40000000, + 0x5c024800, 0x5c026800, 0x1c01f000, 0x0010b58d, + 0x0010b58f, 0x0010b592, 0x0010b5cd, 0x0010d092, + 0x0010d05f, 0x0010d096, 0x0010b58e, 0x0010b58d, + 0x0010b58e, 0x0010b58e, 0x0010b58e, 0x0010b58e, + 0x0010b58e, 0x0010b58e, 0x0010b58e, 0x0010b58e, + 0x0010b58e, 0x05a9f888, 0x1c01f000, 0x40000000, 0x40000000, 0x1c01f000, 0x59300403, 0x82000d80, 0x00000085, 0x05020007, 0x4a026403, 0x0000008b, - 0x642e6203, 0x42000800, 0x80004040, 0x0005f6ab, + 0x642e6203, 0x42000800, 0x80004040, 0x0005f6e2, 0x82000d80, 0x0000008b, 0x0502002e, 0x4d3c0000, - 0x417a7800, 0x05b9fb23, 0x5c027800, 0x42000000, - 0x0010e454, 0x050dffcf, 0x05fdfcbb, 0x0500000e, + 0x417a7800, 0x05b5fe22, 0x5c027800, 0x42000000, + 0x001123f8, 0x0511f9b2, 0x05fdfcac, 0x0500000e, 0x4d2c0000, 0x59325809, 0x4a025a08, 0x00000103, 0x59300402, 0x48025c0a, 0x641a5a0a, 0x497a580d, - 0x0001fb82, 0x59300a29, 0x90040d83, 0x05fc0d8d, - 0x5c025800, 0x60443000, 0x050dfd65, 0x64066403, - 0x497a6009, 0x05b9fdf6, 0x59240400, 0x8c00050a, + 0x0001fba8, 0x59300a29, 0x90040d83, 0x05fc0d8e, + 0x5c025800, 0x60443000, 0x050dff2a, 0x64066403, + 0x497a6009, 0x05b9f8fa, 0x59240400, 0x8c00050a, 0x0502000b, 0x41782800, 0x60103000, 0x4d400000, - 0x60a68000, 0x0509ff76, 0x5c028000, 0x64126407, + 0x60a68000, 0x050df925, 0x5c028000, 0x64126407, 0x641e6203, 0x6406642c, 0x1c01f000, 0x602c0800, - 0x05d1fcbd, 0x64066407, 0x64066203, 0x05e9f03e, + 0x05d1f938, 0x64066407, 0x64066203, 0x05e5f75f, 0x1c01f000, 0x59300416, 0x8c00051a, 0x05020021, 0x5930080a, 0x58040200, 0x8c00050e, 0x05000006, 0x59300a03, 0x90040590, 0x05000003, 0x90040583, - 0x05020018, 0x05f9ffcb, 0x59300203, 0x90000d89, + 0x05020018, 0x05f9ffa5, 0x59300203, 0x90000d89, 0x0500000b, 0x48026429, 0x4a026403, 0x00000085, 0x59300416, 0x8400055a, 0x8400055e, 0x48026416, - 0x64266203, 0x640a6407, 0x640e6229, 0x59a8005d, - 0x48026205, 0x42000800, 0x80004040, 0x0501fe48, - 0x0005feab, 0x4203e000, 0xb0800000, 0x6023f800, - 0x1c01f000, 0x41780800, 0x59a8105a, 0x60c80000, - 0x05e5ff32, 0x800811c0, 0x05020002, 0x60501000, - 0x480b505c, 0x59a8105b, 0x480b5050, 0x41780800, - 0x61900000, 0x05e5ff29, 0x800811c0, 0x05020002, - 0x60501000, 0x480b505d, 0x9008140a, 0x480b505e, - 0x60040800, 0x05e9fce2, 0x42000000, 0x30000000, - 0x40080800, 0x0001f93a, 0x600c0800, 0x59a8103d, - 0x05e9fccd, 0x05d5f088, 0x64a3505c, 0x6453505d, - 0x4a035050, 0x000007d0, 0x60781000, 0x480b505e, - 0x60040800, 0x05e9fcd2, 0x42000000, 0x30000000, - 0x40080800, 0x0001f93a, 0x600c0800, 0x59a8103d, - 0x05e9f4bd, 0x4933c857, 0x4d2c0000, 0x59300403, + 0x64266203, 0x640a6407, 0x640e6229, 0x59a80060, + 0x48026205, 0x42000800, 0x80004040, 0x0501fe56, + 0x0005fee2, 0x4203e000, 0xb0800000, 0x6023f800, + 0x1c01f000, 0x41780800, 0x59a8105d, 0x60c80000, + 0x05e5fe53, 0x800811c0, 0x05020002, 0x60501000, + 0x480b505f, 0x59a8105e, 0x480b5053, 0x41780800, + 0x61900000, 0x05e5fe4a, 0x800811c0, 0x05020002, + 0x60501000, 0x480b5060, 0x9008140a, 0x480b5061, + 0x60040800, 0x05e9fc08, 0x42000000, 0x30000000, + 0x40080800, 0x0001f942, 0x600c0800, 0x59a81040, + 0x05e9fbf3, 0x05d1f562, 0x64a3505f, 0x64535060, + 0x4a035053, 0x000007d0, 0x60781000, 0x480b5061, + 0x60040800, 0x05e9fbf8, 0x42000000, 0x30000000, + 0x40080800, 0x0001f942, 0x600c0800, 0x59a81040, + 0x05e9f3e3, 0x4933c857, 0x4d2c0000, 0x59300403, 0x900005be, 0x05020004, 0x59325819, 0x812e59c0, - 0x05ae0906, 0x5c025800, 0x1c01f000, 0x4933c857, + 0x05aa0ba5, 0x5c025800, 0x1c01f000, 0x4933c857, 0x813669c0, 0x0500000c, 0x59340200, 0x8c000508, 0x05000009, 0x4a026416, 0x00000100, 0x8c00050c, 0x59300008, 0x05000002, 0x84000544, 0x84000542, 0x48026008, 0x1c01f000, 0x59300416, 0x8c000510, - 0x1c01f000, 0x4937c857, 0x4d300000, 0x05f1fb60, + 0x1c01f000, 0x4937c857, 0x4d300000, 0x05f1fadd, 0x0500000d, 0x4926601d, 0x4936600a, 0x05fdffe8, - 0x64066407, 0x492e6009, 0x60240800, 0x05d1fc42, - 0x4d380000, 0x60ce7000, 0x0009f800, 0x5c027000, + 0x64066407, 0x492e6009, 0x60240800, 0x05d1f8bd, + 0x4d380000, 0x60ce7000, 0x0009f839, 0x5c027000, 0x90000541, 0x5c026000, 0x1c01f000, 0x4933c857, 0x4d2c0000, 0x4c580000, 0x4d3c0000, 0x59325809, - 0x91380595, 0x0502001d, 0x59a8b0b6, 0x90580c99, - 0x05001002, 0x6060b000, 0x8058b104, 0x0501fa5b, - 0x80000580, 0x0501fa6a, 0x912cac0d, 0x91cca406, - 0x050dffe3, 0x4c600000, 0x6004c000, 0x592c100e, + 0x91380595, 0x0502001d, 0x59a8b0bb, 0x90580c99, + 0x05001002, 0x6060b000, 0x8058b104, 0x0501fa69, + 0x80000580, 0x0501fa78, 0x912cac0d, 0x91cca406, + 0x0511f9c6, 0x4c600000, 0x6004c000, 0x592c100e, 0x8c080518, 0x05020006, 0x59240005, 0x592c1011, 0x80080580, 0x05020006, 0x4178c000, 0x5930100a, - 0x58081403, 0x417a7800, 0x05b9fad2, 0x5c00c000, - 0x05f1fd0e, 0x0501f005, 0x6008b000, 0x0501fa60, - 0x05f5f9eb, 0x0005ffdc, 0x5c027800, 0x5c00b000, + 0x58081403, 0x417a7800, 0x05b5fdd1, 0x5c00c000, + 0x05f1fcac, 0x0501f005, 0x6008b000, 0x0501fa6e, + 0x05f5f98d, 0x0009f810, 0x5c027800, 0x5c00b000, 0x5c025800, 0x1c01f000, 0x4933c856, 0x4a02601d, - 0x0010e512, 0x4936600a, 0x05fdffad, 0x64066407, - 0x492e6009, 0x4d380000, 0x61367000, 0x0009f800, + 0x001124b6, 0x4936600a, 0x05fdffad, 0x64066407, + 0x492e6009, 0x4d380000, 0x61367000, 0x0009f839, 0x5c027000, 0x90000541, 0x1c01f000, 0x4803c856, - 0x4d2c0000, 0x91380595, 0x05020025, 0x59a808b6, + 0x4d2c0000, 0x91380595, 0x05020025, 0x59a808bb, 0x59325809, 0x5930040d, 0x80040580, 0x05020020, 0x4c500000, 0x4c540000, 0x4c580000, 0x91cca406, 0x4050a800, 0x5930b40d, 0x9058b403, 0x8058b104, - 0x050dffe6, 0x91cca406, 0x592cb209, 0x9058b403, - 0x8058b104, 0x912cac0a, 0x050dffa5, 0x592e5801, + 0x0511f9c9, 0x91cca406, 0x592cb209, 0x9058b403, + 0x8058b104, 0x912cac0a, 0x0511f988, 0x592e5801, 0x812e59c0, 0x05fe07f9, 0x5931d82d, 0x58ef400b, 0x58ee580d, 0x4a025a08, 0x00000103, 0x58ec0009, 0x0801f800, 0x59300402, 0x5c00b000, 0x5c00a800, - 0x5c00a000, 0x5c025800, 0x1c01f000, 0x05f5f9b0, + 0x5c00a000, 0x5c025800, 0x1c01f000, 0x05f5f952, 0x5c025800, 0x1c01f000, 0x4933c857, 0x90040db5, - 0x05000005, 0x5930141b, 0x0501f83f, 0x05000025, - 0x0501f006, 0x4d300000, 0x5932602a, 0x0501f843, + 0x05000005, 0x5930141b, 0x0501f843, 0x05000025, + 0x0501f006, 0x4d300000, 0x5932602a, 0x0501f847, 0x5c026000, 0x0500001e, 0x591c0c07, 0x90040583, 0x05000003, 0x90040586, 0x0502001b, 0x591c0c02, 0x5930041b, 0x80040580, 0x05000009, 0x5930021b, @@ -11378,3242 +11736,3378 @@ static const uint32_t isp_2500_risc_code[] = { 0x82040580, 0x0000ffff, 0x05000005, 0x591c0202, 0x59300a1b, 0x80040580, 0x05020007, 0x591c000a, 0x5930080a, 0x80040580, 0x1c01f000, 0x417a3800, - 0x90000541, 0x1c01f000, 0x4803c856, 0x4203e000, - 0xb0800000, 0x600009fe, 0x4203f800, 0x30000000, - 0x40000000, 0x80040840, 0x05a80c90, 0x05ffb7fb, + 0x90000541, 0x1c01f000, 0x59a80c9f, 0x8c040502, + 0x0502000c, 0x4803c856, 0x4203e000, 0xb0800000, + 0x600009fe, 0x4203f800, 0x30000000, 0x40000000, + 0x80040840, 0x05a40f30, 0x05ffb7fb, 0x80040d81, 0x1c01f000, 0x4803c856, 0x4203e000, 0xb0800000, 0x4203f800, 0x20000000, 0x1c01f000, 0x59300808, 0x8c04051e, 0x592c0c0c, 0x05020002, 0x8c040518, - 0x1c01f000, 0x05fdfb66, 0x05000007, 0x800800ca, - 0x800808c8, 0x80040c00, 0x82063c00, 0x00111b00, - 0x491fc857, 0x1c01f000, 0x0501fd45, 0x05020007, + 0x1c01f000, 0x05fdfb53, 0x05000007, 0x800800ca, + 0x800808c8, 0x80040c00, 0x82063c00, 0x00115aa4, + 0x491fc857, 0x1c01f000, 0x0501fd4f, 0x05020007, 0x59301402, 0x05fdfff4, 0x05000007, 0x411c0000, 0x81300580, 0x05000003, 0x81780500, 0x0501f002, 0x81300540, 0x1c01f000, 0x4d300000, 0x83440480, - 0x000007f0, 0x05001003, 0x05d5f907, 0x0501f002, - 0x0001fb00, 0x05020008, 0x4936600a, 0x05d5f8fa, - 0x4926601d, 0x05b9f9b3, 0x80000580, 0x5c026000, - 0x1c01f000, 0x90000541, 0x05fdf7fd, 0x4933c857, - 0x05fdfb49, 0x05a80c59, 0x4d2c0000, 0x4d340000, - 0x4d440000, 0x4c580000, 0x59325809, 0x5932680a, - 0x49425a0a, 0x05d9fe7a, 0x592e8c0a, 0x592c420b, - 0x9020050f, 0x0c01f806, 0x5c00b000, 0x5c028800, - 0x5c026800, 0x5c025800, 0x1c01f000, 0x0010b1a5, - 0x0010b1c6, 0x0010b1cc, 0x0010b1cf, 0x0010b1d7, - 0x0010b1a3, 0x0010b1a3, 0x0010b1a3, 0x0010b1da, - 0x0010b1e6, 0x0010b1e6, 0x0010b1a3, 0x0010b1a3, - 0x0010b1a3, 0x0010b1a3, 0x0010b1a3, 0x4803c857, - 0x05a9fc36, 0x814281c0, 0x05020011, 0x41785800, - 0x592c0408, 0x8c00051c, 0x05020002, 0x59345c05, - 0x442c2800, 0x59340008, 0x48002802, 0x59340009, - 0x48002801, 0x59340006, 0x48002804, 0x59340007, - 0x48002803, 0x602cb000, 0x0501f032, 0x592c020b, - 0x8c00051e, 0x6008b000, 0x0502002e, 0x9004b540, - 0x0500002c, 0x44042800, 0x5932680a, 0x59340400, - 0x48002801, 0x59340200, 0x90000501, 0x48002802, - 0x600cb000, 0x0501f023, 0x814281c0, 0x05fe07f0, - 0x59345c05, 0x442c2800, 0x6004b000, 0x0501f01d, - 0x9140b540, 0x0500001b, 0x0501f024, 0x814281c0, - 0x05020022, 0x59340200, 0x44002800, 0x59340001, - 0x48002801, 0x6008b000, 0x0501f012, 0x9140b540, - 0x0502001a, 0x0501f00f, 0x9140b540, 0x0500000d, - 0x8c20051c, 0x05020015, 0x05d5f880, 0x05000013, - 0x8c20050e, 0x05000002, 0x497a600a, 0x4178b000, - 0x497a5a0a, 0x0501f003, 0x9140b540, 0x0502000b, - 0x592c0408, 0x8400051c, 0x48025c08, 0x592c020b, - 0x82000500, 0x00003fff, 0x48025a0b, 0x0501f92b, - 0x497a6009, 0x0001f382, 0x592c020b, 0x8c00051e, - 0x6008b000, 0x05fe07f3, 0x9004b540, 0x05fc07f1, - 0x44042800, 0x6004b000, 0x05fdf7ee, 0x4937c857, - 0x4d300000, 0x05f1fa06, 0x0500000d, 0x4926601d, - 0x4936600a, 0x05fdfe8e, 0x64066407, 0x492e6009, - 0x602c0800, 0x05d1fae8, 0x4d380000, 0x610e7000, - 0x0009f800, 0x5c027000, 0x90000541, 0x5c026000, - 0x1c01f000, 0x4937c857, 0x4d2c0000, 0x4d200000, - 0x59340013, 0x80024130, 0x59325809, 0x91380595, - 0x05020022, 0x59a800b6, 0x90000584, 0x0502001f, - 0x59240005, 0x592c100d, 0x80080580, 0x05020011, - 0x4d440000, 0x592e8c0a, 0x592c020b, 0x4803c856, - 0x82000500, 0x00000080, 0x84000548, 0x4d3c0000, - 0x60027820, 0x8c00050e, 0x05000002, 0x853e7d5c, - 0x05d1ffb7, 0x5c027800, 0x5c028800, 0x0501f003, - 0x4803c856, 0x05d5f831, 0x05fdfa9b, 0x05000011, - 0x4d400000, 0x60028000, 0x41780800, 0x05fdff4c, - 0x5c028000, 0x0501f00a, 0x05d5f828, 0x05fe07f7, - 0x05fdfa91, 0x05000007, 0x4c580000, 0x6008b000, - 0x0501f8fb, 0x5c00b000, 0x05f5f885, 0x0005ffdc, - 0x5c024000, 0x5c025800, 0x1c01f000, 0x4937c857, - 0x4d300000, 0x05f1f9be, 0x0500000f, 0x4926601d, - 0x4936600a, 0x05fdfe46, 0x64066407, 0x4d3c0000, - 0x4d380000, 0x417a7800, 0x05d1fa95, 0x492e6009, - 0x60127000, 0x0009f800, 0x5c027000, 0x5c027800, - 0x90000541, 0x5c026000, 0x1c01f000, 0x4937c857, - 0x4d300000, 0x05f1f9aa, 0x0500000d, 0x4926601d, - 0x4936600a, 0x05fdfe32, 0x600c0800, 0x05d1fa8e, - 0x64066407, 0x492e6009, 0x4d380000, 0x61467000, - 0x0009f800, 0x5c027000, 0x90000541, 0x5c026000, - 0x1c01f000, 0x4933c857, 0x4c580000, 0x4d240000, - 0x4d200000, 0x4d400000, 0x4d440000, 0x4d3c0000, - 0x5932481d, 0x59240a00, 0x8c040500, 0x0500008b, - 0x05b9fba3, 0x59325809, 0x91383595, 0x05020056, - 0x60100800, 0x05d1fa74, 0x60040800, 0x05d1fb5b, - 0x812e59c0, 0x05020043, 0x59a800bb, 0x80000040, - 0x480350bb, 0x050dfea5, 0x05000004, 0x59240200, - 0x8400051a, 0x48024a00, 0x417a8000, 0x59cc0000, - 0x82000500, 0x00ffffff, 0x59240805, 0x4803c857, - 0x4807c857, 0x800409c0, 0x05000016, 0x80041580, - 0x05000014, 0x4c000000, 0x60aa8000, 0x59240400, + 0x000007f0, 0x05001006, 0x83440480, 0x00000800, + 0x05021003, 0x05d1fe31, 0x0501f002, 0x0001fb08, + 0x05020008, 0x4936600a, 0x05d1fe24, 0x4926601d, + 0x05b5fcab, 0x80000580, 0x5c026000, 0x1c01f000, + 0x90000541, 0x05fdf7fd, 0x4933c857, 0x05fdfb33, + 0x05a40ef5, 0x4d2c0000, 0x4d340000, 0x4d440000, + 0x4c580000, 0x59325809, 0x5932680a, 0x49425a0a, + 0x05d9fbee, 0x592e8c0a, 0x592c420b, 0x9020050f, + 0x0c01f806, 0x5c00b000, 0x5c028800, 0x5c026800, + 0x5c025800, 0x1c01f000, 0x0010b744, 0x0010b765, + 0x0010b76b, 0x0010b76e, 0x0010b776, 0x0010b742, + 0x0010b742, 0x0010b742, 0x0010b779, 0x0010b785, + 0x0010b785, 0x0010b742, 0x0010b742, 0x0010b742, + 0x0010b742, 0x0010b742, 0x4803c857, 0x05a5fed2, + 0x814281c0, 0x05020011, 0x41785800, 0x592c0408, + 0x8c00051c, 0x05020002, 0x59345c05, 0x442c2800, + 0x59340008, 0x48002802, 0x59340009, 0x48002801, + 0x59340006, 0x48002804, 0x59340007, 0x48002803, + 0x602cb000, 0x0501f032, 0x592c020b, 0x8c00051e, + 0x6008b000, 0x0502002e, 0x9004b540, 0x0500002c, + 0x44042800, 0x5932680a, 0x59340400, 0x48002801, + 0x59340200, 0x90000501, 0x48002802, 0x600cb000, + 0x0501f023, 0x814281c0, 0x05fe07f0, 0x59345c05, + 0x442c2800, 0x6004b000, 0x0501f01d, 0x9140b540, + 0x0500001b, 0x0501f024, 0x814281c0, 0x05020022, + 0x59340200, 0x44002800, 0x59340001, 0x48002801, + 0x6008b000, 0x0501f012, 0x9140b540, 0x0502001a, + 0x0501f00f, 0x9140b540, 0x0500000d, 0x8c20051c, + 0x05020015, 0x05d1fdaa, 0x05000013, 0x8c20050e, + 0x05000002, 0x497a600a, 0x4178b000, 0x497a5a0a, + 0x0501f003, 0x9140b540, 0x0502000b, 0x592c0408, + 0x8400051c, 0x48025c08, 0x592c020b, 0x82000500, + 0x00003fff, 0x48025a0b, 0x0501f932, 0x497a6009, + 0x0001f3a8, 0x592c020b, 0x8c00051e, 0x6008b000, + 0x05fe07f3, 0x9004b540, 0x05fc07f1, 0x44042800, + 0x6004b000, 0x05fdf7ee, 0x4937c857, 0x4d300000, + 0x05f1f97c, 0x0500000d, 0x4926601d, 0x4936600a, + 0x05fdfe87, 0x64066407, 0x492e6009, 0x602c0800, + 0x05cdff5c, 0x4d380000, 0x610e7000, 0x0009f839, + 0x5c027000, 0x90000541, 0x5c026000, 0x1c01f000, + 0x4937c857, 0x4d2c0000, 0x4d200000, 0x59340013, + 0x80024130, 0x59325809, 0x91380595, 0x05020022, + 0x59a800bb, 0x90000584, 0x0502001f, 0x59240005, + 0x592c100d, 0x80080580, 0x05020011, 0x4d440000, + 0x592e8c0a, 0x592c020b, 0x4803c856, 0x82000500, + 0x00000080, 0x84000548, 0x4d3c0000, 0x60027820, + 0x8c00050e, 0x05000002, 0x853e7d5c, 0x05d1fcdd, + 0x5c027800, 0x5c028800, 0x0501f003, 0x4803c856, + 0x05d1fd5b, 0x05fdfa85, 0x05000011, 0x4d400000, + 0x60028000, 0x41780800, 0x05fdff4c, 0x5c028000, + 0x0501f00a, 0x05d1fd52, 0x05fe07f7, 0x05fdfa7b, + 0x05000007, 0x4c580000, 0x6008b000, 0x0501f902, + 0x5c00b000, 0x05f5f820, 0x0009f810, 0x5c024000, + 0x5c025800, 0x1c01f000, 0x4937c857, 0x4d300000, + 0x05f1f934, 0x0500000f, 0x4926601d, 0x4936600a, + 0x05fdfe3f, 0x64066407, 0x4d3c0000, 0x4d380000, + 0x417a7800, 0x05cdff09, 0x492e6009, 0x60127000, + 0x0009f839, 0x5c027000, 0x5c027800, 0x90000541, + 0x5c026000, 0x1c01f000, 0x4937c857, 0x4d300000, + 0x05f1f920, 0x0500000d, 0x4926601d, 0x4936600a, + 0x05fdfe2b, 0x600c0800, 0x05cdff02, 0x64066407, + 0x492e6009, 0x4d380000, 0x61467000, 0x0009f839, + 0x5c027000, 0x90000541, 0x5c026000, 0x1c01f000, + 0x4933c857, 0x4c580000, 0x4d240000, 0x4d200000, + 0x4d400000, 0x4d440000, 0x4d3c0000, 0x5932481d, + 0x59240a00, 0x8c040500, 0x05000092, 0x05b5fea0, + 0x59325809, 0x91383595, 0x05020051, 0x60100800, + 0x05cdfee8, 0x812e59c0, 0x0502003e, 0x59a800c0, + 0x80000040, 0x480350c0, 0x0511f883, 0x05000004, + 0x59240200, 0x8400051a, 0x48024a00, 0x417a8000, + 0x05f5fc6b, 0x05000012, 0x60aa8000, 0x59240400, 0x8c00050a, 0x05020004, 0x60083000, 0x61fe89ff, - 0x0509fd0e, 0x417a7800, 0x05b9fbcb, 0x05b9fc3c, + 0x0509fec1, 0x417a7800, 0x05b5fedd, 0x05b5ff4f, 0x600a8000, 0x59cc0c08, 0x8c04051e, 0x05020004, - 0x59240a00, 0x84040d56, 0x48064a00, 0x5c000000, + 0x59240a00, 0x84040d56, 0x48064a00, 0x60040800, + 0x05d1f804, 0x59cc0000, 0x82000500, 0x00ffffff, 0x48024805, 0x40000800, 0x812000f0, 0x80040540, 0x48026813, 0x40040000, 0xb1200c80, 0x05021004, 0x49238830, 0x84000570, 0x48038832, 0x59240200, 0x8400051e, 0x82000540, 0x00000206, 0x48024a00, 0x59240400, 0x8c00050c, 0x05000004, 0x65466429, - 0x0501f84d, 0x0501f045, 0x60040000, 0x41781800, - 0x05d5fb94, 0x0501ff8c, 0x0005ffdc, 0x0501f03f, - 0x592c000c, 0x82000500, 0x00ffffff, 0x05020008, - 0x05d9fd3f, 0x59cc0000, 0x82000500, 0x00ffffff, - 0x44002800, 0x6004b000, 0x0501f850, 0x05f1fb17, - 0x0501f032, 0x812e59c0, 0x0502002d, 0x59340412, - 0x800001c0, 0x05000027, 0x80000040, 0x48026c12, - 0x59cc0c07, 0x82043500, 0x000000ff, 0x481bc857, - 0x90180583, 0x05020017, 0x59cc0207, 0x4803c857, + 0x0501f85b, 0x0501f053, 0x60040000, 0x41781800, + 0x05d5f8e0, 0x0505f8a7, 0x0009f810, 0x0501f04d, + 0x60040800, 0x05cdffe3, 0x592c000c, 0x82000500, + 0x00ffffff, 0x05020008, 0x05d9fab8, 0x59cc0000, + 0x82000500, 0x00ffffff, 0x44002800, 0x6004b000, + 0x0501f85c, 0x05f1fab3, 0x0501f03e, 0x812e59c0, + 0x05020039, 0x600c0800, 0x05b9f873, 0x05020003, + 0x0505f8f0, 0x0501f037, 0x59340412, 0x800001c0, + 0x0500002e, 0x80000040, 0x48026c12, 0x59cc0c07, + 0x82043500, 0x000000ff, 0x481bc857, 0x90180585, + 0x05000020, 0x90180583, 0x05020016, 0x59cc0207, 0x82000d00, 0x0000ff00, 0x4807c857, 0x82040580, 0x00000d00, 0x0502000f, 0x59240805, 0x82040d00, 0x00ffffff, 0x0500000b, 0x59240a00, 0x84040d48, - 0x48064a00, 0x602c0800, 0x05d1fa03, 0x64066407, - 0x64066203, 0x64066403, 0x05e5fd83, 0x0501f00f, - 0x600c0800, 0x05d1f9fc, 0x4a026202, 0x0000ffff, - 0x64066203, 0x65466403, 0x05e5fd7b, 0x0501f007, - 0x600c2800, 0x0501fe40, 0x0501f004, 0x6008b000, - 0x0501f83b, 0x05f1ffc6, 0x5c027800, 0x5c028800, - 0x5c028000, 0x5c024000, 0x5c024800, 0x5c00b000, - 0x1c01f000, 0x4933c857, 0x61f2880f, 0x42003000, - 0x00fffffc, 0x05d1fa0b, 0x05aa0ad0, 0x4936600a, - 0x05fdfd83, 0x417a7800, 0x05d1f9d5, 0x600c0800, - 0x05d1f9dd, 0x497a6c12, 0x59300429, 0x900005a1, - 0x05020003, 0x599c0208, 0x48026c12, 0x64066203, - 0x640a6403, 0x05e5f558, 0x492fc857, 0x4c580000, - 0x4c000000, 0x8058b1c0, 0x0500000a, 0x82580500, - 0xfffffff0, 0x05aa0ab9, 0x8058b0d0, 0x592c040c, - 0x82000500, 0xfffff0ff, 0x80580540, 0x48025c0c, - 0x5c000000, 0x5c00b000, 0x1c01f000, 0x492fc857, - 0x4c000000, 0x4c040000, 0x800000d8, 0x592c0c0c, - 0x82040d00, 0xffff0fff, 0x80040540, 0x48025c0c, - 0x5c000800, 0x5c000000, 0x1c01f000, 0x4933c857, - 0x4d2c0000, 0x59325809, 0x592c020b, 0x8400055e, - 0x48025a0b, 0x4c500000, 0x4c540000, 0x4c580000, - 0x05fdffda, 0x05d9fcc2, 0x64602800, 0x80142800, - 0x8058b040, 0x91cca407, 0x4014a800, 0x050dfd60, - 0x5c00b000, 0x5c00a800, 0x5c00a000, 0x5c025800, - 0x1c01f000, 0x59325809, 0x592c0208, 0x82000580, - 0x00000152, 0x1c01f000, 0x59325809, 0x592c020b, - 0x8400055c, 0x48025a0b, 0x1c01f000, 0x59300809, - 0x58040208, 0x82000500, 0x000000ff, 0xb00005b9, - 0x1c01f000, 0x5930002b, 0x80000540, 0x05ae0bb1, - 0x1c01f000, 0x59300008, 0x82000500, 0x04000800, - 0x82000580, 0x04000800, 0x05020003, 0x59300221, - 0x48025c13, 0x1c01f000, 0x592c040b, 0x82000500, - 0x0000f000, 0x82000580, 0x00003000, 0x05020003, - 0x4a026416, 0x00000100, 0x1c01f000, 0x4d2c0000, - 0x59325809, 0x59300203, 0x4933c857, 0x492fc857, - 0x493bc857, 0x4803c857, 0x90003491, 0x05aa1a5f, - 0x0c01f803, 0x5c025800, 0x1c01f000, 0x0010b390, - 0x0010b396, 0x0010b3ce, 0x0010b390, 0x0010b390, - 0x0010b390, 0x0010b390, 0x0010b390, 0x0010b391, - 0x0010b390, 0x0010b390, 0x0010b390, 0x0010b390, - 0x0010b390, 0x0010b4a6, 0x0010b390, 0x0010b390, - 0x05a9fa4a, 0xb13834a0, 0x05aa1a48, 0x493a6403, - 0x64066203, 0x05e5f4dc, 0x91380593, 0x05020010, - 0x492fc857, 0x05fdfd05, 0x05000003, 0x643a6203, - 0x0501f005, 0x592c0010, 0x800001c0, 0x05000005, - 0x640a6203, 0x59a8005c, 0x48026006, 0x1c01f000, - 0x64025a0a, 0x0001fb82, 0x0005f7dc, 0x913805a7, - 0x0500001e, 0x91380594, 0x05000018, 0x05fdfcf3, - 0x0500000c, 0xb13805a1, 0x05000004, 0xb13805a0, - 0x05fe07f3, 0x4937c857, 0x05e9fd07, 0x05f20081, - 0x59300203, 0x9000058e, 0x050000f0, 0x05a9fa23, - 0x91380595, 0x05000003, 0x91380596, 0x05aa0a1f, - 0x05e9fcfd, 0x05f20077, 0x59300203, 0x90000582, - 0x05aa0a1a, 0x0501f00d, 0x4937c857, 0x05e9f8a6, - 0x64465812, 0x0501f004, 0x4937c857, 0x05e9f8a2, - 0x64425812, 0x64c65a0a, 0x64125811, 0x0001fb82, - 0x05d5f8a4, 0x05f1f003, 0x59341400, 0x82081d00, - 0x000000ff, 0x59300c03, 0x480bc857, 0x4807c857, - 0xb0040593, 0x05000020, 0x90040582, 0x0500000f, - 0x90040581, 0x05000010, 0x90040583, 0x05000013, - 0x90040585, 0x05000014, 0x900405b3, 0x05000012, - 0x90040580, 0x05000013, 0x90040584, 0x05aa09f7, - 0x0501f8a6, 0x0501f010, 0x900c0583, 0x05000868, - 0x0501f00d, 0x900c058b, 0x0502000b, 0x601c0800, - 0x05d1f901, 0x0501f008, 0x900c0585, 0x0500087b, - 0x0501f005, 0x900c0589, 0x05000896, 0x0501f002, - 0x0501f89b, 0x654a6403, 0x59a810b6, 0x592c040f, - 0x8c000500, 0x05000002, 0x60201000, 0x592c040f, - 0x8c000516, 0x05000002, 0x90081418, 0x592c0010, - 0x497a5811, 0x497a5812, 0x80080c80, 0x05000007, - 0x05001004, 0x641e5a0a, 0x40001000, 0x0501f004, - 0x64565a0a, 0x0501f002, 0x64025a0a, 0x480a5810, - 0x4d2c0000, 0x05a9fd64, 0x0500003c, 0x5c001000, - 0x41cc0800, 0x5808040f, 0x8c000516, 0x05020002, - 0x91cc0c06, 0x58081810, 0x58082015, 0x58082816, - 0x58080004, 0x48025806, 0x48065803, 0x480a580a, - 0x480e5805, 0x48125807, 0x48165808, 0x64025801, - 0x4a025809, 0x0010150e, 0x900c1c03, 0x800c1904, - 0x50040000, 0x9c0001c0, 0x44000800, 0x80040800, - 0x800c1840, 0x05fe07fb, 0x5808040f, 0x8c000500, - 0x0500000b, 0x41cc0800, 0x8c000516, 0x05000002, - 0x91cc0c06, 0x64040800, 0x80040800, 0x46000800, - 0x00000900, 0x84000500, 0x4800140f, 0x42007000, - 0x000211a7, 0x58380000, 0x90000580, 0x0502000b, - 0x58380807, 0x58380005, 0x80040540, 0x05020007, - 0x412c1000, 0x0001f821, 0x59dc0806, 0x8c04053e, - 0x05fc07fe, 0x0001f066, 0x412c1000, 0x0001f821, - 0x850e1d5c, 0x05e1f18d, 0x5c025800, 0x64b25a0a, - 0x497a5810, 0x0001fb82, 0x0005f7dc, 0x91380595, - 0x05020008, 0x59a800d1, 0x8c000502, 0x05020007, - 0x41780800, 0x05d1f981, 0x60100800, 0x05d1f096, - 0x601c0800, 0x05d1f094, 0x05d5fc54, 0x60401000, - 0x05020008, 0x59340002, 0x82000500, 0x00ff0000, - 0x82000580, 0x00ff0000, 0x05fc07f2, 0x60201000, - 0x05d5f84b, 0x05fc07ef, 0x592c040f, 0x84000540, - 0x48025c0f, 0x05fdf7ef, 0x91380595, 0x0502000b, - 0x59a800d1, 0x8c000502, 0x0502000a, 0x05d1f9dc, - 0x4d3c0000, 0x417a7800, 0x05d1f871, 0x5c027800, - 0x60180800, 0x05d1f078, 0x60100800, 0x05d1f076, - 0x05d5fc36, 0x60401000, 0x05020008, 0x59340002, - 0x82000500, 0x00ff0000, 0x82000580, 0x00ff0000, - 0x05fc07ef, 0x60201000, 0x05d5f82d, 0x05fc07ec, - 0x592c040f, 0x84000540, 0x48025c0f, 0x05fdf7ef, - 0x60100800, 0x05d1f064, 0x91380595, 0x05020003, - 0x0509f9c4, 0x05d00c20, 0x1c01f000, 0x91380595, - 0x05020015, 0x4c580000, 0x91cc1408, 0x6008b000, - 0x91341c06, 0x05f5fbb2, 0x0502000e, 0x91cc140a, - 0x6008b000, 0x91341c08, 0x05f5fbad, 0x05020009, - 0x59342200, 0x59cc1007, 0x800811c0, 0x05000003, - 0x480a6801, 0x84102542, 0x8410251a, 0x48126a00, - 0x5c00b000, 0x1c01f000, 0x4803c856, 0xb13805a1, - 0x05000019, 0xb13805a0, 0x05000017, 0xb13805a2, - 0x05020003, 0x644a5812, 0x0501f004, 0xb13805a3, - 0x0502001b, 0x644e5812, 0x64c65a0a, 0x64125811, - 0x59cc0001, 0x48025813, 0x59cc0002, 0x48025814, - 0x59cc0003, 0x48025815, 0x59cc0004, 0x48025816, - 0x59cc0005, 0x48025817, 0x0001fb82, 0x05d1ffb1, - 0x0005f7dc, 0x592c0010, 0x800001c0, 0x05000005, - 0x59a8005c, 0x48026006, 0x640a6203, 0x1c01f000, - 0x64025a0a, 0x0001fb82, 0x0005ffdc, 0x1c01f000, - 0x42000000, 0x0010e46c, 0x050dfb0e, 0x05e9f844, - 0x59300203, 0x4933c857, 0x4803c857, 0x90000c91, - 0x05aa1906, 0x0c01f802, 0x05e9f02e, 0x0010b4e9, - 0x0010b4f2, 0x0010b4ea, 0x0010b4e8, 0x0010b4e8, - 0x0010b4e8, 0x0010b4e8, 0x0010b4e8, 0x0010b4e8, - 0x0010b4e8, 0x0010b4e8, 0x0010b4e8, 0x0010b4e8, - 0x0010b4e8, 0x0010b4ea, 0x0010b4e8, 0x0010b4e8, - 0x05a9f8f2, 0x1c01f000, 0x59300403, 0xb0000592, - 0x05f804d3, 0x05d1ff83, 0x59325809, 0x641a5a0a, - 0x0001fb82, 0x05edf6df, 0x59301804, 0x840c0520, - 0x48026004, 0x598c000b, 0x81300580, 0x0502000f, - 0x8c0c0520, 0x0502000f, 0x42001000, 0x0010e387, - 0x50081000, 0x58080002, 0x82000580, 0x00000100, - 0x0500000b, 0x5808000c, 0x81300580, 0x05aa08d7, - 0x4978100c, 0x0501f003, 0x8c0c0520, 0x05fe07e3, - 0x05e5fcae, 0x05fc07e1, 0x05a9f8d0, 0x05e9fb05, - 0x05fc07fc, 0x59300203, 0x90000c91, 0x05aa18cb, - 0x0c01f7c7, 0x4933c857, 0x4c500000, 0x4c540000, - 0x4c580000, 0x592c0c0b, 0x48065817, 0x59cc0809, - 0x4806580b, 0x59cc0808, 0x4806580f, 0x59a808d0, - 0x82040500, 0x000003ff, 0x800010c4, 0x8c040514, - 0x05000004, 0x59cc0002, 0x90000503, 0x80081480, - 0x480a621c, 0x412c0800, 0x05a9fc4b, 0x05a808b3, - 0x492c080d, 0x5804040c, 0x84000552, 0x84000540, - 0x48000c0c, 0x90081403, 0x80081104, 0x91cca406, - 0x912cac08, 0x60400800, 0x90080490, 0x05021003, - 0x40080800, 0x80000580, 0x4004b000, 0x4c000000, - 0x050dfbaa, 0x5c000000, 0x800001c0, 0x0500000a, - 0x412c1000, 0x4c000000, 0x05a9fc33, 0x05a8089b, - 0x492c1001, 0x912cac08, 0x5c000000, 0x40001000, - 0x05fdf7ee, 0x5c00b000, 0x5c00a800, 0x5c00a000, - 0x1c01f000, 0x4933c857, 0x4d2c0000, 0x4c380000, - 0x59325809, 0x5930021c, 0x48025a0c, 0x59301013, - 0x640a6203, 0x592c020e, 0x8c000500, 0x05000004, - 0x59300017, 0x592c1013, 0x80081480, 0x40080000, - 0x0501f962, 0x80001540, 0x05020007, 0x64025a0a, - 0x592c000f, 0x82000500, 0x00000c00, 0x05000009, - 0x0501f009, 0x8c08053e, 0x05000005, 0x641e5a0a, - 0x80081080, 0x80081000, 0x0501f002, 0x64565a0a, - 0x480a580b, 0x42000000, 0x001102f0, 0x50007000, - 0x5838000b, 0x80000540, 0x05020007, 0x4930700c, - 0x4930700b, 0x58380002, 0x90000580, 0x05020808, - 0x0501f004, 0x90001400, 0x45301000, 0x4930700b, - 0x5c007000, 0x5c025800, 0x1c01f000, 0x4933c857, - 0x592c000d, 0x40001000, 0x4800700a, 0x90080408, - 0x48007003, 0x592c0011, 0x592c1012, 0x592c1804, - 0x480c7006, 0x48007007, 0x48087008, 0x592c0017, - 0x592c120c, 0x80080c80, 0x05001002, 0x40001000, - 0x90081403, 0x80081104, 0x90080490, 0x05021003, - 0x80000580, 0x0501f002, 0x60401000, 0x4800700d, - 0x48087004, 0x800810c4, 0x48087005, 0x40381000, - 0x0001f021, 0x4d2c0000, 0x05a9fbd7, 0x05a8083f, - 0x42000800, 0x001102f0, 0x452c0800, 0x497a580b, - 0x497a580c, 0x497a580d, 0x4a025809, 0x0010b5a9, - 0x4a025802, 0x00000100, 0x64025801, 0x5c025800, - 0x1c01f000, 0x4833c857, 0x4d300000, 0x4d2c0000, - 0x4c5c0000, 0x4030b800, 0x585c000a, 0x80025d40, - 0x05020004, 0x585c000c, 0x4c000000, 0x0501f03b, - 0x585c0002, 0x82000580, 0x00000100, 0x0502001c, - 0x592c0801, 0x4c040000, 0x05a9fbd8, 0x5c000800, - 0x800409c0, 0x05000017, 0x4804b80a, 0x585c100d, - 0x800811c0, 0x05020004, 0x40065800, 0x05a9fbd8, - 0x0501f010, 0x90080490, 0x05021003, 0x80000580, - 0x0501f002, 0x60401000, 0x4800b80d, 0x4808b804, - 0x800810c4, 0x4808b805, 0x90040408, 0x4800b803, - 0x405c1000, 0x0001f821, 0x0501f022, 0x0501f825, - 0x585c000c, 0x80026540, 0x59300000, 0x80000d40, - 0x05020002, 0x4800b80b, 0x4800b80c, 0x497a6000, - 0x4c000000, 0x4978b80a, 0x59325809, 0x4a025a08, - 0x00000103, 0x59300402, 0x48025c0a, 0x592c100f, - 0x4c080000, 0x0001fb82, 0x0501f8cb, 0x05f9ffc1, - 0x5c001000, 0x8c080518, 0x05000003, 0x05fdf8dc, - 0x0501f002, 0x0005ffdc, 0x405c7000, 0x5c000000, - 0x80026540, 0x05000003, 0x59325809, 0x05fdff88, - 0x5c00b800, 0x5c025800, 0x5c026000, 0x1c01f000, - 0x483bc857, 0x5838000a, 0x40025800, 0x05a9fba0, - 0x5838000c, 0x80026540, 0x59300009, 0x80025d40, - 0x640a5a0a, 0x1c01f000, 0x4803c857, 0x4933c857, - 0x4d1c0000, 0x497a601e, 0x41323800, 0x40026000, - 0x4d3c0000, 0x60167800, 0x0501f838, 0x5c027800, - 0x411e6000, 0x4933c857, 0x59300416, 0x84000502, - 0x48026416, 0x5c023800, 0x1c01f000, 0x481bc857, - 0x4933c857, 0x4c5c0000, 0x4c600000, 0x4010b800, - 0x4014c000, 0x0509ff6a, 0x05b5fffd, 0x59240400, - 0x8c00050a, 0x05020006, 0x40602800, 0x405c3000, - 0x0509f986, 0x90000541, 0x0501f002, 0x80000580, - 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x4803c856, - 0x4d300000, 0x42026000, 0x00111b00, 0x59a8003b, - 0x81640580, 0x05000013, 0x59300c07, 0x90040581, - 0x05000009, 0x90040584, 0x05000004, 0x90040590, - 0x05f80b17, 0x0501f007, 0x59300203, 0x90000d87, - 0x05000004, 0x4807c857, 0x05fdf98f, 0x05020807, - 0x91326430, 0x41580000, 0x81300480, 0x05fc17ec, - 0x5c026000, 0x1c01f000, 0x4933c857, 0x59300403, - 0x4803c857, 0x05e5fece, 0x4df00000, 0x59301407, - 0x59300203, 0x4803c857, 0x90080d82, 0x05000016, - 0x90080d81, 0x0500000b, 0x90080d84, 0x05000005, - 0x4933c856, 0x5c03e000, 0x05e40eb2, 0x0501f03e, - 0x90000d88, 0x0500002e, 0x90000d87, 0x0500002c, - 0x90000d81, 0x05000013, 0x90000d82, 0x05000028, - 0x90000d85, 0x05000026, 0x90000d8e, 0x05000024, - 0x05a5ff7a, 0x90000d89, 0x0500000a, 0x90000d8b, - 0x05000008, 0x90000d8a, 0x0500001d, 0x90000d8c, - 0x0500001b, 0x90000d8e, 0x05000019, 0x05a5ff6f, - 0x598c000b, 0x81300580, 0x05020003, 0x05e9f9a1, - 0x05020013, 0x59300004, 0x4803c857, 0x8c000520, - 0x05000004, 0x84000520, 0x48026004, 0x0501f00c, - 0x05e5fb3e, 0x05a60f61, 0x5c03e000, 0x05e40e89, - 0x59300407, 0x90000d82, 0x05000013, 0x05d1fdf1, - 0x05f9ff4a, 0x05f00c42, 0x0501f00f, 0x5c03e000, - 0x05e40e80, 0x59300407, 0x90000d82, 0x0500000a, - 0x5930081d, 0x58040200, 0x8c000500, 0x050002a9, - 0x05d1fde4, 0x05f9ff3d, 0x05f00c35, 0x8d3c0500, - 0x05000003, 0x0509ffc5, 0x05edf53e, 0x64066229, - 0x4a026403, 0x00000085, 0x64266203, 0x640a6407, - 0x42000800, 0x80000040, 0x0005f6ab, 0x60007040, - 0x4203e000, 0xb0800000, 0x6033f800, 0x40000000, - 0x40000000, 0x40000000, 0x0501b004, 0x80387040, - 0x05a40f36, 0x05fdf7f9, 0x1c01f000, 0x83300480, - 0x00111a40, 0x05001006, 0x41540000, 0x81300480, - 0x05021003, 0x80000580, 0x1c01f000, 0x81780080, - 0x1c01f000, 0x59300027, 0x80000540, 0x05000006, - 0x4d2c0000, 0x40025800, 0x05a9fadc, 0x497a6027, - 0x5c025800, 0x1c01f000, 0x592c720e, 0x8c380500, - 0x05020008, 0x59307008, 0x8c380516, 0x05000005, - 0x59307009, 0x58387013, 0x59300014, 0x80380480, - 0x1c01f000, 0x59a808b6, 0x59cc2808, 0x4c5c0000, - 0x4178b800, 0x8c14051e, 0x05000002, 0x805cb800, - 0x82140500, 0x00000c00, 0x05000004, 0x905c0410, - 0x80040480, 0x05001018, 0x80001580, 0x8c140512, - 0x05000005, 0x905c0414, 0x80040480, 0x05001012, - 0x59cc100a, 0x80000580, 0x8c140510, 0x05000005, - 0x905c0418, 0x80040480, 0x0500100b, 0x59cc000b, - 0x80080400, 0x05001008, 0x05000005, 0x905c0418, - 0x80040480, 0x05001004, 0x80000580, 0x5c00b800, - 0x1c01f000, 0x42000000, 0x0010e449, 0x050df8f1, - 0x90000541, 0x05fdf7fa, 0x4933c857, 0x4937c857, - 0x4923c857, 0x4927c857, 0x492fc857, 0x48efc857, - 0x4d1c0000, 0x4d300000, 0x41323800, 0x05edfd0c, - 0x0500001f, 0x48ee602d, 0x4926601d, 0x4936600a, - 0x05fdf993, 0x591c0407, 0x90000583, 0x05000008, - 0x591c0202, 0x4803c857, 0x4802641b, 0x591c0402, - 0x4802621b, 0x4803c857, 0x0501f009, 0x591c0017, - 0x48026017, 0x591c0202, 0x4803c857, 0x4802621b, - 0x591c0402, 0x4802641b, 0x4803c857, 0x491e602a, - 0x64066407, 0x492e6009, 0x4d380000, 0x615e7000, - 0x0009f800, 0x5c027000, 0x90000541, 0x5c026000, - 0x5c023800, 0x1c01f000, 0x4933c857, 0x493bc857, - 0x4937c857, 0x4d2c0000, 0x4c500000, 0x4c540000, - 0x4c580000, 0x59325809, 0x05f9fda7, 0x05000017, - 0x91cca406, 0x912cac0a, 0x91380596, 0x05020007, - 0x59a800b6, 0x90000588, 0x0502000e, 0x492fc857, - 0x6008b000, 0x0501f008, 0x91380595, 0x05020009, - 0x492fc857, 0x59a800b6, 0x90000598, 0x05020005, - 0x6018b000, 0x050df972, 0x05edfeac, 0x0501f003, - 0x05f1fb8b, 0x0005ffdc, 0x5c00b000, 0x5c00a800, - 0x5c00a000, 0x5c025800, 0x1c01f000, 0x4933c857, - 0x05e5fdd3, 0x4df00000, 0x59300203, 0x90000c91, - 0x05a61e96, 0x0c01f001, 0x0010b758, 0x0010b757, - 0x0010b75d, 0x0010b775, 0x0010b75c, 0x0010b757, - 0x0010b757, 0x0010b757, 0x0010b757, 0x0010b757, - 0x0010b757, 0x0010b757, 0x0010b757, 0x0010b757, - 0x0010b757, 0x0010b757, 0x0010b75d, 0x05a5fe83, - 0x5c03e000, 0x05e40dab, 0x80000580, 0x1c01f000, - 0x05adf8ed, 0x5c03e000, 0x05e40da6, 0x8d3c0502, - 0x05020011, 0x4d2c0000, 0x59325809, 0x64165a0a, - 0x0001fb82, 0x5c025800, 0x497a6009, 0x8d3c0500, - 0x0502000b, 0x642a6229, 0x4a026403, 0x00000085, - 0x64266203, 0x640a6407, 0x42000800, 0x80004040, - 0x0005feab, 0x81780080, 0x1c01f000, 0x05edfc5d, - 0x05fdf7fd, 0x05f9f9bb, 0x05020003, 0x05e9f869, - 0x05020005, 0x05e5f95d, 0x05fc07e3, 0x05e5fcb1, - 0x05a60e5e, 0x59300203, 0x90000d83, 0x05a40e5b, - 0x90000c91, 0x05a61e59, 0x0c01f7c4, 0x4803c856, - 0x05edfc7f, 0x0500002e, 0x59300402, 0x4802621b, - 0x59a804cc, 0x84000540, 0x84000502, 0x480354cc, - 0x812e59c0, 0x05000011, 0x82600580, 0x00003000, - 0x05020003, 0x4a026416, 0x00000100, 0x592c020b, - 0x480352cd, 0x480352cc, 0x592c000f, 0x480350ce, - 0x592c020c, 0x800000c2, 0x800008c4, 0x80040400, - 0x48026006, 0x0501f00a, 0x640b50ce, 0x59a8005c, - 0x800000c4, 0x48026006, 0x417a4000, 0x61fa880f, - 0x42003000, 0x00fffffe, 0x05cdfd6e, 0x4926601d, - 0x599c0208, 0x48026c12, 0x59340002, 0x4802600b, - 0x497a641b, 0x4936600a, 0x492e6009, 0x64066407, - 0x61627000, 0x0009f800, 0x90000541, 0x1c01f000, - 0x4d2c0000, 0x4c5c0000, 0x4c600000, 0x4c640000, - 0x4803c856, 0x59325809, 0x91380595, 0x050200b8, - 0x812e59c0, 0x05000003, 0x05f9fd0b, 0x05a40e1b, - 0x59a800b6, 0x82000580, 0x00000228, 0x050200ab, - 0x59cc0c07, 0x82040580, 0x00000101, 0x050200b7, - 0x59cc0a07, 0x59300402, 0x80040580, 0x050200b5, - 0x59cc0a0a, 0x82040580, 0x00000228, 0x050200b3, - 0x91ccbc0b, 0x585c0c00, 0x82040580, 0x00000101, - 0x050200b0, 0x585c0a00, 0x90040584, 0x050200af, - 0x91ccc40d, 0x58600c00, 0x82040580, 0x00000102, - 0x050200ac, 0x58600a00, 0x90040584, 0x050200ab, - 0x91cccc0f, 0x58640c00, 0x82040580, 0x00000103, - 0x05000004, 0x82040580, 0x00000203, 0x050200a5, - 0x58640a00, 0x82040580, 0x00000200, 0x050200a3, - 0x585c0801, 0x800409c0, 0x050000a2, 0x90040484, - 0x050210a0, 0x480750cf, 0x58600201, 0x800001c0, - 0x0500009f, 0x82001480, 0x00000fff, 0x0502109c, - 0x480354cd, 0x480352cc, 0x4c500000, 0x4c540000, - 0x4c580000, 0x6000b001, 0x4200a800, 0x00110672, - 0x91cca410, 0x5450a800, 0x8050a000, 0x8054a800, - 0x8058b040, 0x05fe07fc, 0x5c00b000, 0x5c00a800, - 0x5c00a000, 0x40001000, 0x4c040000, 0x05b5ff22, - 0x5c000800, 0x05020005, 0x59a804cc, 0x8400054c, - 0x480354cc, 0x4803c857, 0x90040582, 0x05000055, - 0x90040583, 0x05000002, 0x0501f004, 0x59a800ce, - 0x90000582, 0x05000052, 0x812e59c0, 0x0500002b, - 0x592c1001, 0x800811c0, 0x05a40dbc, 0x4930100b, - 0x492c100a, 0x64001001, 0x4a001009, 0x0010b831, - 0x4a001003, 0x00110672, 0x4a001005, 0x00000200, - 0x592c0015, 0x48001007, 0x592c0016, 0x48001008, - 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x5c025800, - 0x0001f021, 0x4d2c0000, 0x4c5c0000, 0x4c600000, - 0x4c640000, 0x5832600b, 0x813261c0, 0x05a40da3, - 0x5832580a, 0x812e59c0, 0x05a40da0, 0x49786001, - 0x58300002, 0x82000580, 0x00000100, 0x0502005a, - 0x59a80ccd, 0x48065811, 0x59a808cf, 0x48065810, - 0x64ca5a0a, 0x0001fb82, 0x0005ffdc, 0x58600a01, - 0x59a802cd, 0x80040580, 0x0502004c, 0x59a81ccc, - 0x820c1d00, 0xffffffbc, 0x840c1d46, 0x480f54cc, - 0x0501f01e, 0x59cc3407, 0x82183500, 0x000000ff, - 0x90180585, 0x0502000c, 0x59340412, 0x800001c0, - 0x05000009, 0x80000040, 0x48026c12, 0x4d2c0000, - 0x59325809, 0x0005ffdc, 0x05fdff25, 0x5c025800, - 0x0501f00e, 0x05f1fed4, 0x59a80249, 0x84000518, - 0x48035249, 0x48035449, 0x0005ffdc, 0x05fdf7e4, - 0x59a800ce, 0x90000581, 0x05fc07b0, 0x5930041b, - 0x84000548, 0x4802641b, 0x5c00c800, 0x5c00c000, - 0x5c00b800, 0x5c025800, 0x1c01f000, 0x4803c856, - 0x812e59c0, 0x05fc07dc, 0x05f9fc53, 0x05a40d63, - 0x64c65a0a, 0x64625810, 0x59cc0007, 0x48025811, - 0x0001fb82, 0x05fdf7e4, 0x4807c857, 0x05fdf7ef, - 0x4807c857, 0x05fdf7ed, 0x4807c857, 0x05fdf7eb, - 0x4807c857, 0x05fdf7e9, 0x4807c857, 0x05fdf7e7, - 0x4807c857, 0x05fdf7e5, 0x4807c857, 0x05fdf7e3, - 0x4807c857, 0x05fdf7e1, 0x4807c857, 0x05fdf7df, - 0x4807c857, 0x05a5fd49, 0x05fdf7dc, 0x4803c857, - 0x05a5fd46, 0x05fdf7d9, 0x4807c857, 0x0501f80f, - 0x05fdf7d6, 0x4803c857, 0x4a006002, 0x00000100, - 0x640a5a0a, 0x0001fb82, 0x05fdf7a8, 0x59300403, - 0xb0000d98, 0x05000004, 0xb0000d9e, 0x05000002, - 0xb0000d9f, 0x1c01f000, 0x59a804cc, 0x82000500, - 0xfffffffc, 0x480354cc, 0x05d5f804, 0x05020006, - 0x05d5f814, 0x05000004, 0x64075042, 0x6006d800, - 0x05d1ff81, 0x1c01f000, 0x4933c857, 0x4d400000, - 0x60028000, 0x05b5fd62, 0x05f1fe96, 0x0500001f, - 0x59cc0408, 0x8c00051e, 0x05020009, 0x42000800, - 0x0010e512, 0x58040406, 0x8c000500, 0x05020004, - 0x59240200, 0x84000556, 0x48024a00, 0x60aa8000, - 0x59240400, 0x8c00050a, 0x05020004, 0x61fe89ff, - 0x60083000, 0x0505fedd, 0x4d3c0000, 0x600a7800, - 0x5924100b, 0x82081500, 0x00001fff, 0x41780800, - 0x05b5fe72, 0x5c027800, 0x42000000, 0x0010e454, - 0x0509ff08, 0x600a8000, 0x60100800, 0x05cdfc16, - 0x60040800, 0x05cdfcfd, 0x59cc0800, 0x82040d00, - 0x00ffffff, 0x5924100c, 0x48041001, 0x59cc0009, - 0x48024a0a, 0x48001200, 0x59cc000a, 0x48024c0a, - 0x48001400, 0x59240200, 0xb0000566, 0x48024a00, - 0x48064805, 0x49238830, 0x84040570, 0x48038832, - 0x812000f0, 0x80040540, 0x48026813, 0x60040000, - 0x05d1fd60, 0x5c028000, 0x59301009, 0x800811c0, - 0x05020009, 0x0501f823, 0x5924100b, 0x82081500, - 0x00001fff, 0x05b5feb9, 0x0501f81e, 0x0502001c, - 0x0501f018, 0x4d2c0000, 0x400a5800, 0x592c1208, - 0x82080500, 0x000000ff, 0x900005b0, 0x05020009, - 0x592c040b, 0x82000500, 0x000000ff, 0x05020003, - 0x05a9f88a, 0x0501f00a, 0x05d5ff81, 0x0501f008, - 0x592c020b, 0x80000110, 0x800001c0, 0x05020003, - 0x05a9f882, 0x0501f002, 0x05d9f93f, 0x5c025800, - 0x59300429, 0x900005a1, 0x000607dc, 0x1c01f000, - 0x4933c857, 0x4d340000, 0x4d240000, 0x4d200000, - 0x916c0583, 0x05020015, 0x599c0018, 0x8c000516, - 0x05000003, 0x05c5ff7f, 0x0501f010, 0x60100800, - 0x05cdfbc9, 0x59300429, 0x900005a1, 0x05000005, + 0x48064a00, 0x602c0800, 0x05cdfe76, 0x64066407, + 0x64066203, 0x64066403, 0x05e5fc9c, 0x0501f015, + 0x600c0800, 0x05cdfe6f, 0x4a026202, 0x0000ffff, + 0x64066203, 0x65466403, 0x05e5fc94, 0x0501f00d, + 0x64126006, 0x645a6403, 0x65466418, 0x4a026202, + 0x0000ffff, 0x0501f007, 0x600c2800, 0x0501fe4b, + 0x0501f004, 0x6008b000, 0x0501f83b, 0x05f1ff5a, + 0x5c027800, 0x5c028800, 0x5c028000, 0x5c024000, + 0x5c024800, 0x5c00b000, 0x1c01f000, 0x4933c857, + 0x61f2880f, 0x42003000, 0x00fffffc, 0x05cdfe80, + 0x05a60d65, 0x4936600a, 0x05fdfd75, 0x417a7800, + 0x05cdfe42, 0x600c0800, 0x05cdfe4a, 0x497a6c12, + 0x59300429, 0x900005a1, 0x05020003, 0x599c0208, + 0x48026c12, 0x64066203, 0x640a6403, 0x05e5f46b, + 0x492fc857, 0x4c580000, 0x4c000000, 0x8058b1c0, + 0x0500000a, 0x82580500, 0xfffffff0, 0x05a60d4e, + 0x8058b0d0, 0x592c040c, 0x82000500, 0xfffff0ff, + 0x80580540, 0x48025c0c, 0x5c000000, 0x5c00b000, + 0x1c01f000, 0x492fc857, 0x4c000000, 0x4c040000, + 0x800000d8, 0x592c0c0c, 0x82040d00, 0xffff0fff, + 0x80040540, 0x48025c0c, 0x5c000800, 0x5c000000, + 0x1c01f000, 0x4933c857, 0x4d2c0000, 0x59325809, + 0x592c020b, 0x8400055e, 0x48025a0b, 0x4c500000, + 0x4c540000, 0x4c580000, 0x05fdffda, 0x05d9fa2f, + 0x64602800, 0x80142800, 0x8058b040, 0x91cca407, + 0x4014a800, 0x050dff35, 0x5c00b000, 0x5c00a800, + 0x5c00a000, 0x5c025800, 0x1c01f000, 0x59325809, + 0x592c0208, 0x82000580, 0x00000152, 0x1c01f000, + 0x59325809, 0x592c020b, 0x8400055c, 0x48025a0b, + 0x1c01f000, 0x59300809, 0x58040208, 0x82000500, + 0x000000ff, 0xb00005b9, 0x1c01f000, 0x5930002b, + 0x80000540, 0x05aa0ea9, 0x1c01f000, 0x59300008, + 0x82000500, 0x04000800, 0x82000580, 0x04000800, + 0x05020003, 0x59300221, 0x48025c13, 0x1c01f000, + 0x592c040b, 0x82000500, 0x0000f000, 0x82000580, + 0x00003000, 0x05020003, 0x4a026416, 0x00000100, + 0x1c01f000, 0x4d2c0000, 0x59325809, 0x59300203, + 0x4933c857, 0x492fc857, 0x493bc857, 0x4803c857, + 0x90003491, 0x05a61cf4, 0x0c01f803, 0x5c025800, + 0x1c01f000, 0x0010b936, 0x0010b93c, 0x0010b974, + 0x0010b936, 0x0010b936, 0x0010b936, 0x0010b936, + 0x0010b936, 0x0010b937, 0x0010b936, 0x0010b936, + 0x0010b936, 0x0010b936, 0x0010b936, 0x0010ba4d, + 0x0010b936, 0x0010b936, 0x05a5fcdf, 0xb13834a0, + 0x05a61cdd, 0x493a6403, 0x64066203, 0x05e5f3ef, + 0x91380593, 0x05020010, 0x492fc857, 0x05fdfcf7, + 0x05000003, 0x643a6203, 0x0501f005, 0x592c0010, + 0x800001c0, 0x05000005, 0x640a6203, 0x59a8005f, + 0x48026006, 0x1c01f000, 0x64025a0a, 0x0001fba8, + 0x0009f010, 0x913805a7, 0x0500001e, 0x91380594, + 0x05000018, 0x05fdfce5, 0x0500000c, 0xb13805a1, + 0x05000004, 0xb13805a0, 0x05fe07f3, 0x4937c857, + 0x05e9fc1f, 0x05f2000d, 0x59300203, 0x9000058e, + 0x050000f1, 0x05a5fcb8, 0x91380595, 0x05000003, + 0x91380596, 0x05a60cb4, 0x05e9fc15, 0x05f20003, + 0x59300203, 0x90000582, 0x05a60caf, 0x0501f00d, + 0x4937c857, 0x05e5ffbe, 0x64465812, 0x0501f004, + 0x4937c857, 0x05e5ffba, 0x64425812, 0x64c65a0a, + 0x64125811, 0x0001fba8, 0x05d1fdd3, 0x05edf772, + 0x59341400, 0x82081d00, 0x000000ff, 0x59300c03, + 0x480bc857, 0x4807c857, 0xb0040593, 0x05000020, + 0x90040582, 0x0500000f, 0x90040581, 0x05000010, + 0x90040583, 0x05000013, 0x90040585, 0x05000014, + 0x900405b3, 0x05000012, 0x90040580, 0x05000013, + 0x90040584, 0x05a60c8c, 0x0501f8a7, 0x0501f010, + 0x900c0583, 0x05000869, 0x0501f00d, 0x900c058b, + 0x0502000b, 0x601c0800, 0x05cdfd6e, 0x0501f008, + 0x900c0585, 0x0500087c, 0x0501f005, 0x900c0589, + 0x05000897, 0x0501f002, 0x0501f89c, 0x654a6403, + 0x59a810bb, 0x592c040f, 0x8c000500, 0x05000002, + 0x60201000, 0x592c040f, 0x8c000516, 0x05000002, + 0x90081418, 0x592c0010, 0x497a5811, 0x497a5812, + 0x80080c80, 0x05000008, 0x05001005, 0x641e5a0a, + 0x48065811, 0x40001000, 0x0501f004, 0x64565a0a, + 0x0501f002, 0x64025a0a, 0x480a5810, 0x4d2c0000, + 0x05a9f805, 0x0500003c, 0x5c001000, 0x41cc0800, + 0x5808040f, 0x8c000516, 0x05020002, 0x91cc0c06, + 0x58081810, 0x58082015, 0x58082816, 0x58080004, + 0x48025806, 0x48065803, 0x480a580a, 0x480e5805, + 0x48125807, 0x48165808, 0x64025801, 0x4a025809, + 0x00101580, 0x900c1c03, 0x800c1904, 0x50040000, + 0x9c0001c0, 0x44000800, 0x80040800, 0x800c1840, + 0x05fe07fb, 0x5808040f, 0x8c000500, 0x0500000b, + 0x41cc0800, 0x8c000516, 0x05000002, 0x91cc0c06, + 0x64040800, 0x80040800, 0x46000800, 0x00000900, + 0x84000500, 0x4800140f, 0x42007000, 0x000211e8, + 0x58380000, 0x90000580, 0x0502000b, 0x58380807, + 0x58380005, 0x80040540, 0x05020007, 0x412c1000, + 0x0001f829, 0x59dc0806, 0x8c04053e, 0x05fc07fe, + 0x0001f06e, 0x412c1000, 0x0001f829, 0x850e1d5c, + 0x05e1f000, 0x5c025800, 0x64b25a0a, 0x497a5810, + 0x0001fba8, 0x0009f010, 0x91380595, 0x05020008, + 0x59a800d6, 0x8c000502, 0x05020007, 0x41780800, + 0x05cdfe40, 0x60100800, 0x05cdf502, 0x601c0800, + 0x05cdf500, 0x05d5f997, 0x60401000, 0x05020008, + 0x59340002, 0x82000500, 0x00ff0000, 0x82000580, + 0x00ff0000, 0x05fc07f2, 0x60201000, 0x05d1fd79, + 0x05fc07ef, 0x592c040f, 0x84000540, 0x48025c0f, + 0x05fdf7ef, 0x91380595, 0x0502000b, 0x59a800d6, + 0x8c000502, 0x0502000a, 0x05cdfe9b, 0x4d3c0000, + 0x417a7800, 0x05cdfcdd, 0x5c027800, 0x60180800, + 0x05cdf4e4, 0x60100800, 0x05cdf4e2, 0x05d5f979, + 0x60401000, 0x05020008, 0x59340002, 0x82000500, + 0x00ff0000, 0x82000580, 0x00ff0000, 0x05fc07ef, + 0x60201000, 0x05d1fd5b, 0x05fc07ec, 0x592c040f, + 0x84000540, 0x48025c0f, 0x05fdf7ef, 0x60100800, + 0x05cdf4d0, 0x91380595, 0x05020003, 0x0509fb34, + 0x05d008eb, 0x1c01f000, 0x91380595, 0x05020015, + 0x4c580000, 0x91cc1408, 0x6008b000, 0x91341c06, + 0x05f5fb50, 0x0502000e, 0x91cc140a, 0x6008b000, + 0x91341c08, 0x05f5fb4b, 0x05020009, 0x59342200, + 0x59cc1007, 0x800811c0, 0x05000003, 0x480a6801, + 0x84102542, 0x8410251a, 0x48126a00, 0x5c00b000, + 0x1c01f000, 0x4803c856, 0xb13805a1, 0x05000019, + 0xb13805a0, 0x05000017, 0xb13805a2, 0x05020003, + 0x644a5812, 0x0501f004, 0xb13805a3, 0x0502001b, + 0x644e5812, 0x64c65a0a, 0x64125811, 0x59cc0001, + 0x48025813, 0x59cc0002, 0x48025814, 0x59cc0003, + 0x48025815, 0x59cc0004, 0x48025816, 0x59cc0005, + 0x48025817, 0x0001fba8, 0x05d1fcdf, 0x0009f010, + 0x592c0010, 0x800001c0, 0x05000005, 0x59a8005f, + 0x48026006, 0x640a6203, 0x1c01f000, 0x64025a0a, + 0x0001fba8, 0x0009f810, 0x1c01f000, 0x42000000, + 0x00112410, 0x050dfce2, 0x05e5ff5b, 0x59300203, + 0x4933c857, 0x4803c857, 0x90000c91, 0x05a61b9a, + 0x0c01f802, 0x05e5f745, 0x0010ba90, 0x0010ba99, + 0x0010ba91, 0x0010ba8f, 0x0010ba8f, 0x0010ba8f, + 0x0010ba8f, 0x0010ba8f, 0x0010ba8f, 0x0010ba8f, + 0x0010ba8f, 0x0010ba8f, 0x0010ba8f, 0x0010ba8f, + 0x0010ba91, 0x0010ba8f, 0x0010ba8f, 0x05a5fb86, + 0x1c01f000, 0x59300403, 0xb0000592, 0x05f804a6, + 0x05d1fcb1, 0x59325809, 0x641a5a0a, 0x0001fba8, + 0x05edf64d, 0x59301804, 0x840c0520, 0x48026004, + 0x598c000b, 0x81300580, 0x0502000f, 0x8c0c0520, + 0x0502000f, 0x42001000, 0x00112322, 0x50081000, + 0x58080002, 0x82000580, 0x00000100, 0x0500000b, + 0x5808000c, 0x81300580, 0x05a60b6b, 0x4978100c, + 0x0501f003, 0x8c0c0520, 0x05fe07e3, 0x05e5fbc0, + 0x05fc07e1, 0x05a5fb64, 0x05e9fa1c, 0x05fc07fc, + 0x59300203, 0x90000c91, 0x05a61b5f, 0x0c01f7c7, + 0x4933c857, 0x4c500000, 0x4c540000, 0x4c580000, + 0x592c0c0b, 0x48065817, 0x59cc0809, 0x4806580b, + 0x59cc0808, 0x4806580f, 0x59a808d5, 0x82040500, + 0x000003ff, 0x800010c4, 0x8c040514, 0x05000004, + 0x59cc0002, 0x90000503, 0x80081480, 0x480a621c, + 0x412c0800, 0x05a5feec, 0x05a40b47, 0x492c080d, + 0x5804040c, 0x84000552, 0x84000540, 0x48000c0c, + 0x90081403, 0x80081104, 0x91cca406, 0x912cac08, + 0x60400800, 0x90080490, 0x05021003, 0x40080800, + 0x80000580, 0x4004b000, 0x4c000000, 0x050dfd7e, + 0x5c000000, 0x800001c0, 0x0500000a, 0x412c1000, + 0x4c000000, 0x05a5fed4, 0x05a40b2f, 0x492c1001, + 0x912cac08, 0x5c000000, 0x40001000, 0x05fdf7ee, + 0x5c00b000, 0x5c00a800, 0x5c00a000, 0x1c01f000, + 0x4933c857, 0x4d2c0000, 0x4c380000, 0x59325809, + 0x5930021c, 0x48025a0c, 0x59301013, 0x640a6203, + 0x592c020e, 0x8c000500, 0x05000004, 0x59300017, + 0x592c1013, 0x80081480, 0x40080000, 0x0501f961, + 0x80001540, 0x05020007, 0x64025a0a, 0x592c000f, + 0x82000500, 0x00000c00, 0x05000009, 0x0501f009, + 0x8c08053e, 0x05000005, 0x641e5a0a, 0x80081080, + 0x80081000, 0x0501f002, 0x64565a0a, 0x480a580b, + 0x42000000, 0x00114294, 0x50007000, 0x5838000b, + 0x80000540, 0x05020007, 0x4930700c, 0x4930700b, + 0x58380002, 0x90000580, 0x05020808, 0x0501f004, + 0x90001400, 0x45301000, 0x4930700b, 0x5c007000, + 0x5c025800, 0x1c01f000, 0x4933c857, 0x592c000d, + 0x40001000, 0x4800700a, 0x90080408, 0x48007003, + 0x592c0011, 0x592c1012, 0x592c1804, 0x480c7006, + 0x48007007, 0x48087008, 0x592c0017, 0x592c120c, + 0x80080c80, 0x05001002, 0x40001000, 0x90081403, + 0x80081104, 0x90080490, 0x05021003, 0x80000580, + 0x0501f002, 0x60401000, 0x4800700d, 0x48087004, + 0x800810c4, 0x48087005, 0x40381000, 0x0001f029, + 0x4d2c0000, 0x05a5fe67, 0x05a40ad3, 0x42000800, + 0x00114294, 0x452c0800, 0x497a580b, 0x497a580c, + 0x497a580d, 0x4a025809, 0x0010bb50, 0x4a025802, + 0x00000100, 0x64025801, 0x5c025800, 0x1c01f000, + 0x4833c857, 0x4d300000, 0x4d2c0000, 0x4c5c0000, + 0x4030b800, 0x585c000a, 0x80025d40, 0x05020004, + 0x585c000c, 0x4c000000, 0x0501f03b, 0x585c0002, + 0x82000580, 0x00000100, 0x0502001c, 0x592c0801, + 0x4c040000, 0x05a5fe68, 0x5c000800, 0x800409c0, + 0x05000017, 0x4804b80a, 0x585c100d, 0x800811c0, + 0x05020004, 0x40065800, 0x05a5fe68, 0x0501f010, + 0x90080490, 0x05021003, 0x80000580, 0x0501f002, + 0x60401000, 0x4800b80d, 0x4808b804, 0x800810c4, + 0x4808b805, 0x90040408, 0x4800b803, 0x405c1000, + 0x0001f829, 0x0501f022, 0x0501f825, 0x585c000c, + 0x80026540, 0x59300000, 0x80000d40, 0x05020002, + 0x4800b80b, 0x4800b80c, 0x497a6000, 0x4c000000, + 0x4978b80a, 0x59325809, 0x4a025a08, 0x00000103, + 0x59300402, 0x48025c0a, 0x592c100f, 0x4c080000, + 0x0001fba8, 0x0501f8ca, 0x05f9ffb3, 0x5c001000, + 0x8c080518, 0x05000003, 0x05fdf8ce, 0x0501f002, + 0x0009f810, 0x405c7000, 0x5c000000, 0x80026540, + 0x05000003, 0x59325809, 0x05fdff88, 0x5c00b800, + 0x5c025800, 0x5c026000, 0x1c01f000, 0x483bc857, + 0x5838000a, 0x40025800, 0x05a5fe30, 0x5838000c, + 0x80026540, 0x59300009, 0x80025d40, 0x640a5a0a, + 0x1c01f000, 0x4803c857, 0x4933c857, 0x4d1c0000, + 0x497a601e, 0x41323800, 0x40026000, 0x4d3c0000, + 0x60167800, 0x0501f837, 0x5c027800, 0x411e6000, + 0x4933c857, 0x59300416, 0x84000502, 0x48026416, + 0x5c023800, 0x1c01f000, 0x481bc857, 0x4933c857, + 0x4c5c0000, 0x4c600000, 0x4010b800, 0x4014c000, + 0x050df920, 0x05b5faf2, 0x59240400, 0x8c00050a, + 0x05020006, 0x40602800, 0x405c3000, 0x0509fb26, + 0x90000541, 0x0501f002, 0x80000580, 0x5c00c000, + 0x5c00b800, 0x1c01f000, 0x4803c856, 0x4d300000, + 0x42026000, 0x00115aa4, 0x0501fda4, 0x05021013, + 0x59300c07, 0x90040581, 0x05000009, 0x90040584, + 0x05000004, 0x90040590, 0x05f80aeb, 0x0501f007, + 0x59300203, 0x90000d87, 0x05000004, 0x4807c857, + 0x05fdf981, 0x05020807, 0x91326430, 0x41580000, + 0x81300480, 0x05fc17ef, 0x5c026000, 0x1c01f000, + 0x4933c857, 0x59300403, 0x4803c857, 0x05e5fde6, + 0x4df00000, 0x59301407, 0x59300203, 0x4803c857, + 0x90080d82, 0x05000016, 0x90080d81, 0x0500000b, + 0x90080d84, 0x05000005, 0x4933c856, 0x5c03e000, + 0x05e40dca, 0x0501f03e, 0x90000d88, 0x0500002e, + 0x90000d87, 0x0500002c, 0x90000d81, 0x05000013, + 0x90000d82, 0x05000028, 0x90000d85, 0x05000026, + 0x90000d8e, 0x05000024, 0x05a5fa0f, 0x90000d89, + 0x0500000a, 0x90000d8b, 0x05000008, 0x90000d8a, + 0x0500001d, 0x90000d8c, 0x0500001b, 0x90000d8e, + 0x05000019, 0x05a5fa04, 0x598c000b, 0x81300580, + 0x05020003, 0x05e9f8b9, 0x05020013, 0x59300004, + 0x4803c857, 0x8c000520, 0x05000004, 0x84000520, + 0x48026004, 0x0501f00c, 0x05e5fa51, 0x05a609f6, + 0x5c03e000, 0x05e40da1, 0x59300407, 0x90000d82, + 0x05000013, 0x05d1fb20, 0x05f9ff3d, 0x05f00bd6, + 0x0501f00f, 0x5c03e000, 0x05e40d98, 0x59300407, + 0x90000d82, 0x0500000a, 0x5930081d, 0x58040200, + 0x8c000500, 0x050002b4, 0x05d1fb13, 0x05f9ff30, + 0x05f00bc9, 0x8d3c0500, 0x05000003, 0x050df986, + 0x05edf4ad, 0x64066229, 0x4a026403, 0x00000085, + 0x64266203, 0x640a6407, 0x42000800, 0x80000040, + 0x0005f6e2, 0x60007040, 0x4203e000, 0xb0800000, + 0x6033f800, 0x40000000, 0x40000000, 0x40000000, + 0x0501b004, 0x80387040, 0x05a409cb, 0x05fdf7f9, + 0x1c01f000, 0x83300480, 0x001159e4, 0x05001006, + 0x41540000, 0x81300480, 0x05021003, 0x80000580, + 0x1c01f000, 0x81780080, 0x1c01f000, 0x59300027, + 0x80000540, 0x05000006, 0x4d2c0000, 0x40025800, + 0x05a5fd6d, 0x497a6027, 0x5c025800, 0x1c01f000, + 0x592c720e, 0x8c380500, 0x05020009, 0x59307008, + 0x8c380516, 0x05000006, 0x59307009, 0x58387013, + 0x59300014, 0x80380480, 0x05001002, 0x1c01f000, + 0x59300416, 0x8c000514, 0x05000005, 0x59300018, + 0x4803c857, 0x80380480, 0x05fe17f9, 0x59300013, + 0x4803c857, 0x05fdf7f6, 0x59a808bb, 0x59cc2808, + 0x4c5c0000, 0x4178b800, 0x8c14051e, 0x05000002, + 0x805cb800, 0x82140500, 0x00000c00, 0x05000004, + 0x905c0410, 0x80040480, 0x05001018, 0x80001580, + 0x8c140512, 0x05000005, 0x905c0414, 0x80040480, + 0x05001012, 0x59cc100a, 0x80000580, 0x8c140510, + 0x05000005, 0x905c0418, 0x80040480, 0x0500100b, + 0x59cc000b, 0x80080400, 0x05001008, 0x05000005, + 0x905c0418, 0x80040480, 0x05001004, 0x80000580, + 0x5c00b800, 0x1c01f000, 0x42000000, 0x001123ed, + 0x050dfabb, 0x90000541, 0x05fdf7fa, 0x4933c857, + 0x4937c857, 0x4923c857, 0x4927c857, 0x492fc857, + 0x48efc857, 0x4d1c0000, 0x4d300000, 0x41323800, + 0x05edfc70, 0x0500001f, 0x48ee602d, 0x4926601d, + 0x4936600a, 0x05fdf97a, 0x591c0407, 0x90000583, + 0x05000008, 0x591c0202, 0x4803c857, 0x4802641b, + 0x591c0402, 0x4802621b, 0x4803c857, 0x0501f009, + 0x591c0017, 0x48026017, 0x591c0202, 0x4803c857, + 0x4802621b, 0x591c0402, 0x4802641b, 0x4803c857, + 0x491e602a, 0x64066407, 0x492e6009, 0x4d380000, + 0x615e7000, 0x0009f839, 0x5c027000, 0x90000541, + 0x5c026000, 0x5c023800, 0x1c01f000, 0x4933c857, + 0x493bc857, 0x4937c857, 0x4d2c0000, 0x4c500000, + 0x4c540000, 0x4c580000, 0x59325809, 0x05f9fd7f, + 0x05000017, 0x91cca406, 0x912cac0a, 0x91380596, + 0x05020007, 0x59a800bb, 0x90000588, 0x0502000e, + 0x492fc857, 0x6008b000, 0x0501f008, 0x91380595, + 0x05020009, 0x492fc857, 0x59a800bb, 0x90000598, + 0x05020005, 0x6018b000, 0x050dfb3c, 0x05edfe31, + 0x0501f003, 0x05f1fb14, 0x0009f810, 0x5c00b000, + 0x5c00a800, 0x5c00a000, 0x5c025800, 0x1c01f000, + 0x4933c857, 0x05e5fce0, 0x4df00000, 0x59300203, + 0x90000c91, 0x05a61920, 0x0c01f001, 0x0010bd09, + 0x0010bd08, 0x0010bd0e, 0x0010bd26, 0x0010bd0d, + 0x0010bd08, 0x0010bd08, 0x0010bd08, 0x0010bd08, + 0x0010bd08, 0x0010bd08, 0x0010bd08, 0x0010bd08, + 0x0010bd08, 0x0010bd08, 0x0010bd08, 0x0010bd0e, + 0x05a5f90d, 0x5c03e000, 0x05e40cb8, 0x80000580, + 0x1c01f000, 0x05a9fbda, 0x5c03e000, 0x05e40cb3, + 0x8d3c0502, 0x05020011, 0x4d2c0000, 0x59325809, + 0x64165a0a, 0x0001fba8, 0x5c025800, 0x497a6009, + 0x8d3c0500, 0x0502000b, 0x642a6229, 0x4a026403, + 0x00000085, 0x64266203, 0x640a6407, 0x42000800, + 0x80004040, 0x0005fee2, 0x81780080, 0x1c01f000, + 0x05edfbc1, 0x05fdf7fd, 0x05f9f984, 0x05020003, + 0x05e5ff76, 0x05020005, 0x05e5f865, 0x05fc07e3, + 0x05e5fbbd, 0x05a608e8, 0x59300203, 0x90000d83, + 0x05a408e5, 0x90000c91, 0x05a618e3, 0x0c01f7c4, + 0x4803c856, 0x05edfbe3, 0x0500002e, 0x59300402, + 0x4802621b, 0x59a804d1, 0x84000540, 0x84000502, + 0x480354d1, 0x812e59c0, 0x05000011, 0x82600580, + 0x00003000, 0x05020003, 0x4a026416, 0x00000100, + 0x592c020b, 0x480352d2, 0x480352d1, 0x592c000f, + 0x480350d3, 0x592c020c, 0x800000c2, 0x800008c4, + 0x80040400, 0x48026006, 0x0501f00a, 0x640b50d3, + 0x59a8005f, 0x800000c4, 0x48026006, 0x417a4000, + 0x61fa880f, 0x42003000, 0x00fffffe, 0x05cdf9d8, + 0x4926601d, 0x599c0208, 0x48026c12, 0x59340002, + 0x4802600b, 0x497a641b, 0x4936600a, 0x492e6009, + 0x64066407, 0x61627000, 0x0009f839, 0x90000541, + 0x1c01f000, 0x4d2c0000, 0x4c5c0000, 0x4c600000, + 0x4c640000, 0x4803c856, 0x59325809, 0x91380595, + 0x050200b8, 0x812e59c0, 0x05000003, 0x05f9fce3, + 0x05a408a5, 0x59a800bb, 0x82000580, 0x00000228, + 0x050200ab, 0x59cc0c07, 0x82040580, 0x00000101, + 0x050200b7, 0x59cc0a07, 0x59300402, 0x80040580, + 0x050200b5, 0x59cc0a0a, 0x82040580, 0x00000228, + 0x050200b3, 0x91ccbc0b, 0x585c0c00, 0x82040580, + 0x00000101, 0x050200b0, 0x585c0a00, 0x90040584, + 0x050200af, 0x91ccc40d, 0x58600c00, 0x82040580, + 0x00000102, 0x050200ac, 0x58600a00, 0x90040584, + 0x050200ab, 0x91cccc0f, 0x58640c00, 0x82040580, + 0x00000103, 0x05000004, 0x82040580, 0x00000203, + 0x050200a5, 0x58640a00, 0x82040580, 0x00000200, + 0x050200a3, 0x585c0801, 0x800409c0, 0x050000a2, + 0x90040484, 0x050210a0, 0x480750d4, 0x58600201, + 0x800001c0, 0x0500009f, 0x82001480, 0x00000fff, + 0x0502109c, 0x480354d2, 0x480352d1, 0x4c500000, + 0x4c540000, 0x4c580000, 0x6000b001, 0x4200a800, + 0x00114616, 0x91cca410, 0x5450a800, 0x8050a000, + 0x8054a800, 0x8058b040, 0x05fe07fc, 0x5c00b000, + 0x5c00a800, 0x5c00a000, 0x40001000, 0x4c040000, + 0x05b5fa18, 0x5c000800, 0x05020005, 0x59a804d1, + 0x8400054c, 0x480354d1, 0x4803c857, 0x90040582, + 0x05000055, 0x90040583, 0x05000002, 0x0501f004, + 0x59a800d3, 0x90000582, 0x05000052, 0x812e59c0, + 0x0500002b, 0x592c1001, 0x800811c0, 0x05a40846, + 0x4930100b, 0x492c100a, 0x64001001, 0x4a001009, + 0x0010bde2, 0x4a001003, 0x00114616, 0x4a001005, + 0x00000200, 0x592c0015, 0x48001007, 0x592c0016, + 0x48001008, 0x5c00c800, 0x5c00c000, 0x5c00b800, + 0x5c025800, 0x0001f029, 0x4d2c0000, 0x4c5c0000, + 0x4c600000, 0x4c640000, 0x5832600b, 0x813261c0, + 0x05a4082d, 0x5832580a, 0x812e59c0, 0x05a4082a, + 0x49786001, 0x58300002, 0x82000580, 0x00000100, + 0x0502005a, 0x59a80cd2, 0x48065811, 0x59a808d4, + 0x48065810, 0x64ca5a0a, 0x0001fba8, 0x0009f810, + 0x58600a01, 0x59a802d2, 0x80040580, 0x0502004c, + 0x59a81cd1, 0x820c1d00, 0xffffffbc, 0x840c1d46, + 0x480f54d1, 0x0501f01e, 0x59cc3407, 0x82183500, + 0x000000ff, 0x90180585, 0x0502000c, 0x59340412, + 0x800001c0, 0x05000009, 0x80000040, 0x48026c12, + 0x4d2c0000, 0x59325809, 0x0009f810, 0x05fdff25, + 0x5c025800, 0x0501f00e, 0x05f1fe66, 0x59a8024c, + 0x84000518, 0x4803524c, 0x4803544c, 0x0009f810, + 0x05fdf7e4, 0x59a800d3, 0x90000581, 0x05fc07b0, + 0x5930041b, 0x84000548, 0x4802641b, 0x5c00c800, + 0x5c00c000, 0x5c00b800, 0x5c025800, 0x1c01f000, + 0x4803c856, 0x812e59c0, 0x05fc07dc, 0x05f9fc2b, + 0x05a00fed, 0x64c65a0a, 0x64625810, 0x59cc0007, + 0x48025811, 0x0001fba8, 0x05fdf7e4, 0x4807c857, + 0x05fdf7ef, 0x4807c857, 0x05fdf7ed, 0x4807c857, + 0x05fdf7eb, 0x4807c857, 0x05fdf7e9, 0x4807c857, + 0x05fdf7e7, 0x4807c857, 0x05fdf7e5, 0x4807c857, + 0x05fdf7e3, 0x4807c857, 0x05fdf7e1, 0x4807c857, + 0x05fdf7df, 0x4807c857, 0x05a1ffd3, 0x05fdf7dc, + 0x4803c857, 0x05a1ffd0, 0x05fdf7d9, 0x4807c857, + 0x0501f80f, 0x05fdf7d6, 0x4803c857, 0x4a006002, + 0x00000100, 0x640a5a0a, 0x0001fba8, 0x05fdf7a8, + 0x59300403, 0xb0000d98, 0x05000004, 0xb0000d9e, + 0x05000002, 0xb0000d9f, 0x1c01f000, 0x59a804d1, + 0x82000500, 0xfffffffc, 0x480354d1, 0x05d1fd3d, + 0x05020006, 0x05d1fd4d, 0x05000004, 0x64075045, + 0x6006d800, 0x05d1fcb4, 0x1c01f000, 0x4933c857, + 0x4d400000, 0x60028000, 0x05b5f84d, 0x05f1fe28, + 0x0500001f, 0x59cc0408, 0x8c00051e, 0x05020009, + 0x42000800, 0x001124b6, 0x58040406, 0x8c000500, + 0x05020004, 0x59240200, 0x84000556, 0x48024a00, + 0x60aa8000, 0x59240400, 0x8c00050a, 0x05020004, + 0x61fe89ff, 0x60083000, 0x0509f873, 0x4d3c0000, + 0x600a7800, 0x5924100b, 0x82081500, 0x00001fff, + 0x41780800, 0x05b5f968, 0x5c027800, 0x42000000, + 0x001123f8, 0x050df8d2, 0x600a8000, 0x60100800, + 0x05cdf878, 0x60040800, 0x05cdf9b2, 0x59cc0800, + 0x82040d00, 0x00ffffff, 0x5924100c, 0x48041001, + 0x59cc0009, 0x48024a0a, 0x48001200, 0x59cc000a, + 0x48024c0a, 0x48001400, 0x59240200, 0xb0000566, + 0x48024a00, 0x48064805, 0x49238830, 0x84040570, + 0x48038832, 0x812000f0, 0x80040540, 0x48026813, + 0x60040000, 0x05d1fa93, 0x5c028000, 0x59301009, + 0x800811c0, 0x05020009, 0x0501f823, 0x5924100b, + 0x82081500, 0x00001fff, 0x05b5f9af, 0x0501f81e, + 0x0502001c, 0x0501f018, 0x4d2c0000, 0x400a5800, + 0x592c1208, 0x82080500, 0x000000ff, 0x900005b0, + 0x05020009, 0x592c040b, 0x82000500, 0x000000ff, + 0x05020003, 0x05a5fb10, 0x0501f00a, 0x05d5fce6, + 0x0501f008, 0x592c020b, 0x80000110, 0x800001c0, + 0x05020003, 0x05a5fb08, 0x0501f002, 0x05d5fef6, + 0x5c025800, 0x59300429, 0x900005a1, 0x000a0010, + 0x1c01f000, 0x4933c857, 0x4d340000, 0x4d240000, + 0x4d200000, 0x916c0583, 0x05020015, 0x599c0018, + 0x8c000516, 0x05000003, 0x05c5fb71, 0x0501f010, + 0x60100800, 0x05cdf82b, 0x59300429, 0x900005a1, + 0x05000005, 0x59240400, 0x8c00050c, 0x05000004, + 0x64866429, 0x05fdf9ce, 0x90000541, 0x5c024000, + 0x5c024800, 0x5c026800, 0x1c01f000, 0x80000580, + 0x05fdf7fb, 0x4d340000, 0x5932680a, 0x05cdfe78, + 0x5c026800, 0x0009f010, 0x4803c856, 0x4c5c0000, + 0x4d200000, 0x4014b800, 0x05b1ffc5, 0x59a800c0, + 0x80000040, 0x480350c0, 0x916c0582, 0x05020004, + 0x59240200, 0x8400051a, 0x48024a00, 0x59240200, + 0x82000500, 0xfffffeef, 0x84000546, 0x48024a00, + 0x497a4805, 0x4d400000, 0x60068000, 0x41781800, + 0x405c2800, 0x60040000, 0x05d1fa32, 0x60aa8000, + 0x4d3c0000, 0x600a7800, 0x05b5f805, 0x5c027800, + 0x5c028000, 0x5c024000, 0x5c00b800, 0x813261c0, + 0x05ee01d9, 0x1c01f000, 0x59303009, 0x58181a08, + 0x820c1d00, 0x000000ff, 0xb00c0588, 0x05000003, + 0xb00c05aa, 0x05020048, 0x59300004, 0x8c000516, + 0x05020045, 0x5818040c, 0x8c000500, 0x05000042, + 0x42000000, 0x00114294, 0x50006000, 0x41781800, + 0x5830200c, 0x41300000, 0x80100580, 0x05000006, + 0x40101800, 0x580c2000, 0x801021c0, 0x05fe07fa, + 0x0501f035, 0x4933c857, 0x59302000, 0x497a6000, + 0x800c19c0, 0x0502001e, 0x4933c856, 0x42007000, + 0x000211e8, 0x5830000a, 0x800001c0, 0x05000018, + 0x4978600a, 0x58380001, 0x80300580, 0x05020008, + 0x4933c856, 0x49787002, 0x4810600c, 0x801021c0, + 0x0502001d, 0x4978600b, 0x0501f01b, 0x4933c856, + 0x4810600c, 0x801021c0, 0x05020002, 0x4978600b, + 0x4c180000, 0x4c300000, 0x05a5fbf5, 0x5c006000, + 0x05fdfc08, 0x5c003000, 0x0501f00f, 0x4933c856, + 0x800c19c0, 0x05020008, 0x801021c0, 0x05000003, + 0x4810600c, 0x0501f008, 0x4978600c, 0x4978600b, + 0x0501f005, 0x48101800, 0x801021c0, 0x05020002, + 0x480c600b, 0x5818040c, 0x84000500, 0x4800340c, + 0x4978320c, 0x1c01f000, 0x42001000, 0x00112325, + 0x58080000, 0x4937c857, 0x4803c857, 0x90000580, + 0x0500001b, 0x58080005, 0x49341005, 0x80000540, + 0x05020003, 0x49341004, 0x1c01f000, 0x4803c857, + 0x49340016, 0x1c01f000, 0x42001000, 0x00112325, + 0x58080000, 0x4937c857, 0x4947c857, 0x4803c857, + 0x90000580, 0x0500001a, 0x58080003, 0x49341003, + 0x80000540, 0x05020003, 0x49341002, 0x1c01f000, + 0x4803c857, 0x49340016, 0x1c01f000, 0x4937c857, + 0x0501f83c, 0x05a00e94, 0x42001000, 0x00112325, + 0x64081000, 0x4c080000, 0x0501f8c1, 0x5c001000, + 0x05a20e8d, 0x58081001, 0x64001001, 0x4a001009, + 0x0010bffb, 0x49341003, 0x0501f010, 0x4937c857, + 0x0501f816, 0x05a00e84, 0x42001000, 0x00112325, + 0x64041000, 0x58081001, 0x64041001, 0x4a001009, + 0x0010bfd3, 0x49341003, 0x4c080000, 0x0501f8ac, + 0x5c001000, 0x05a20e78, 0x40100000, 0x800c0540, + 0x05a00e75, 0x4934100b, 0x65701005, 0x480c1007, + 0x48101008, 0x0001f029, 0x4c5c0000, 0x4c600000, + 0x4937c857, 0x8344bc00, 0x0010db80, 0x505c0000, + 0x8200c580, 0x40000000, 0x82600500, 0xe0000000, + 0x05020007, 0x82600540, 0x60000000, 0x4400b800, + 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x8260c580, + 0x40000000, 0x4863c857, 0x80000580, 0x05fdf7f9, + 0x4c5c0000, 0x4c600000, 0x4937c857, 0x59368c03, + 0x8344bc00, 0x0010db80, 0x505c0000, 0x8200c580, + 0x20000000, 0x82600500, 0xe0000000, 0x05020007, + 0x82600540, 0x80000000, 0x4400b800, 0x5c00c000, + 0x5c00b800, 0x1c01f000, 0x8260c580, 0x20000000, + 0x4863c857, 0x80000580, 0x05fdf7f9, 0x4d340000, + 0x4d440000, 0x4c5c0000, 0x49786009, 0x58300002, + 0x82000580, 0x00000100, 0x05020012, 0x5830000b, + 0x80026d40, 0x4937c857, 0x0500000a, 0x59368c03, + 0x8344bc00, 0x0010db80, 0x83340540, 0x20000000, + 0x4400b800, 0x4a026815, 0x00020000, 0x497a6816, + 0x5c00b800, 0x5c028800, 0x5c026800, 0x0501f041, + 0x5830000b, 0x80026d40, 0x4803c857, 0x05fc07f9, + 0x59368c03, 0x8344bc00, 0x0010db80, 0x505c0000, + 0x82000500, 0x00ffffff, 0x82000540, 0x40000000, + 0x84000578, 0x4400b800, 0x05fdf7ee, 0x4d340000, + 0x4d2c0000, 0x4d440000, 0x4c5c0000, 0x49786009, + 0x58300002, 0x82000580, 0x00000100, 0x05020025, + 0x5830000b, 0x80026d40, 0x4937c857, 0x0500001c, + 0x59368c03, 0x8344bc00, 0x0010db80, 0x505c0000, + 0x4947c857, 0x4803c857, 0x82000d00, 0xe0000000, + 0x82000500, 0x00ffffff, 0x82041580, 0xa0000000, + 0x05020008, 0x4a026815, 0x00020000, 0x497a6816, + 0x82000540, 0x20000000, 0x4400b800, 0x0501f008, + 0x42000800, 0x40000000, 0x59340002, 0x80040540, + 0x4400b800, 0x41365800, 0x05a5f9a7, 0x5c00b800, + 0x5c028800, 0x5c025800, 0x5c026800, 0x0501f005, + 0x5830000b, 0x80026d40, 0x4937c857, 0x05fdf7f8, + 0x4d340000, 0x42001000, 0x00112325, 0x58080002, + 0x80026d40, 0x05000009, 0x4937c857, 0x59340016, + 0x48001002, 0x80000540, 0x05020002, 0x48001003, + 0x05fdff57, 0x0501f00c, 0x58080004, 0x80026d40, + 0x05000008, 0x59340016, 0x48001004, 0x80000540, + 0x05020002, 0x48001005, 0x05fdff3d, 0x0501f002, + 0x64001000, 0x5c026800, 0x1c01f000, 0x4937c857, + 0x83440c80, 0x00000800, 0x0500100c, 0x61701000, + 0x05e1fbdf, 0x59001801, 0x4c000000, 0x40040000, + 0x800c1c00, 0x5c000000, 0x59002002, 0x80102440, + 0x80000580, 0x1c01f000, 0x4947c857, 0x41781800, + 0x41782000, 0x90000541, 0x05fdf7fb, 0x4933c857, + 0x4927c857, 0x59a8024c, 0x90000543, 0x4803524c, + 0x4c5c0000, 0x4d400000, 0x59ccb800, 0x825cbd00, + 0x00ffffff, 0x60028000, 0x05b1fe4d, 0x05f1fc28, + 0x485f5040, 0x0500001d, 0x4d3c0000, 0x60aa8000, + 0x59240400, 0x8c00050a, 0x05020006, 0x59240200, + 0x84000556, 0x48024a00, 0x60083000, 0x0505fe73, + 0x600a7800, 0x05b1fe96, 0x42000000, 0x001123f8, + 0x0509fedf, 0x59cc0408, 0x8c00051e, 0x05020009, + 0x42000800, 0x001124b6, 0x58040406, 0x8c000500, + 0x05020004, 0x59a8024c, 0x84000552, 0x4803524c, + 0x600a8000, 0x5c027800, 0x41780800, 0x05c9ffb5, + 0x59240200, 0x4803c857, 0x4927c857, 0xb0000566, + 0x48024a00, 0x485e4805, 0x812000f0, 0x805c0540, + 0x48026813, 0x49238830, 0x84000570, 0x48038832, + 0x59a8124c, 0x59cc0408, 0x8c00051a, 0x05020005, + 0x84081514, 0x4a0370e5, 0x00000800, 0x0501f004, + 0x84081554, 0x4a0370e5, 0x00000c00, 0x84081548, + 0x480b524c, 0x480b524c, 0x05f9fd4f, 0x59cc0408, + 0x8c000518, 0x0500000a, 0x59a8024c, 0x84000508, + 0x8400054a, 0x4803524c, 0x49238830, 0x845c0570, + 0x48038832, 0x60100800, 0x05c9fe52, 0x59a80a4c, + 0x84040d50, 0x59cc0013, 0x8c00053e, 0x05000003, + 0x8c000536, 0x05000004, 0x59cc0017, 0x8c000536, + 0x05020002, 0x84040d10, 0x4807524c, 0x4807544c, + 0x42001800, 0x001142a2, 0x8c040508, 0x05020007, 0x59240400, 0x8c00050c, 0x05000004, 0x64866429, - 0x05fdf9d9, 0x90000541, 0x5c024000, 0x5c024800, - 0x5c026800, 0x1c01f000, 0x80000580, 0x05fdf7fb, - 0x4d340000, 0x5932680a, 0x05d1f95a, 0x5c026800, - 0x0005f7dc, 0x4803c856, 0x4c5c0000, 0x4d200000, - 0x4014b800, 0x05b5fcda, 0x59a800bb, 0x80000040, - 0x480350bb, 0x916c0582, 0x05020004, 0x59240200, - 0x8400051a, 0x48024a00, 0x59240200, 0x82000500, - 0xfffffeef, 0x84000546, 0x48024a00, 0x497a4805, - 0x4d400000, 0x60068000, 0x41781800, 0x405c2800, - 0x60040000, 0x05d1fcff, 0x60aa8000, 0x4d3c0000, - 0x600a7800, 0x05b5fd10, 0x5c027800, 0x5c028000, - 0x5c024000, 0x5c00b800, 0x813261c0, 0x05ee0275, - 0x1c01f000, 0x59303009, 0x58181a08, 0x820c1d00, - 0x000000ff, 0xb00c0588, 0x05000003, 0xb00c05aa, - 0x05020048, 0x59300004, 0x8c000516, 0x05020045, - 0x5818040c, 0x8c000500, 0x05000042, 0x42000000, - 0x001102f0, 0x50006000, 0x41781800, 0x5830200c, - 0x41300000, 0x80100580, 0x05000006, 0x40101800, - 0x580c2000, 0x801021c0, 0x05fe07fa, 0x0501f035, - 0x4933c857, 0x59302000, 0x497a6000, 0x800c19c0, - 0x0502001e, 0x4933c856, 0x42007000, 0x000211a7, - 0x5830000a, 0x800001c0, 0x05000018, 0x4978600a, - 0x58380001, 0x80300580, 0x05020008, 0x4933c856, - 0x49787002, 0x4810600c, 0x801021c0, 0x0502001d, - 0x4978600b, 0x0501f01b, 0x4933c856, 0x4810600c, - 0x801021c0, 0x05020002, 0x4978600b, 0x4c180000, - 0x4c300000, 0x05a9f944, 0x5c006000, 0x05fdfc12, - 0x5c003000, 0x0501f00f, 0x4933c856, 0x800c19c0, - 0x05020008, 0x801021c0, 0x05000003, 0x4810600c, - 0x0501f008, 0x4978600c, 0x4978600b, 0x0501f005, - 0x48101800, 0x801021c0, 0x05020002, 0x480c600b, - 0x5818040c, 0x84000500, 0x4800340c, 0x4978320c, - 0x1c01f000, 0x4933c857, 0x4927c857, 0x59a80249, - 0x90000543, 0x48035249, 0x4c5c0000, 0x4d400000, - 0x59ccb800, 0x825cbd00, 0x00ffffff, 0x60028000, - 0x05b5fc5f, 0x05f1fd93, 0x485f503d, 0x0500001d, - 0x4d3c0000, 0x60aa8000, 0x59240400, 0x8c00050a, - 0x05020006, 0x59240200, 0x84000556, 0x48024a00, - 0x60083000, 0x0505fdda, 0x600a7800, 0x05b5fc9e, - 0x42000000, 0x0010e454, 0x0509fe12, 0x59cc0408, - 0x8c00051e, 0x05020009, 0x42000800, 0x0010e512, - 0x58040406, 0x8c000500, 0x05020004, 0x59a80249, - 0x84000552, 0x48035249, 0x600a8000, 0x5c027800, - 0x41780800, 0x05cdfbfd, 0x59240200, 0x4803c857, - 0x4927c857, 0xb0000566, 0x48024a00, 0x485e4805, - 0x812000f0, 0x805c0540, 0x48026813, 0x49238830, - 0x84000570, 0x48038832, 0x59a81249, 0x59cc0408, - 0x8c00051a, 0x05020005, 0x84081514, 0x4a0370e5, - 0x00000800, 0x0501f004, 0x84081554, 0x4a0370e5, - 0x00000c00, 0x480b5249, 0x05f9fe67, 0x59cc0408, - 0x8c000518, 0x05000009, 0x59a80249, 0x8400054a, - 0x48035249, 0x49238830, 0x845c0570, 0x48038832, - 0x60100800, 0x05cdfaf0, 0x59a80a49, 0x84040d50, - 0x59cc0013, 0x8c00053e, 0x05000003, 0x8c000536, - 0x05000004, 0x59cc0017, 0x8c000536, 0x05020002, - 0x84040d10, 0x48075249, 0x48075449, 0x42001800, - 0x001102fe, 0x59240400, 0x8c00050c, 0x05000004, - 0x64866429, 0x05fdf8f4, 0x0501f009, 0x405c0800, - 0x41781000, 0x60001802, 0x60040000, 0x60028000, - 0x05d1fc38, 0x0501f830, 0x0005ffdc, 0x59a80249, - 0x4803c857, 0x8c000506, 0x05020006, 0x41781800, - 0x0509ff06, 0x05000002, 0x60401800, 0x05b5fb93, - 0x805c0110, 0x48035046, 0x48038881, 0x59a80044, - 0x80000040, 0x4803c857, 0x05001003, 0x48035044, - 0x0502001a, 0x59a80249, 0x8c000506, 0x05000004, - 0x8400050a, 0x48035249, 0x48035449, 0x42001800, - 0x0010dd46, 0x05a5feeb, 0x42001800, 0x0010dd53, - 0x05a5fee8, 0x4a035045, 0x0000ffff, 0x05e5fe5b, - 0x4a01a8e4, 0x00000080, 0x0509ff09, 0x05000004, - 0x4a038802, 0x0000ffbf, 0x0501f003, 0x4a038802, - 0x0000ffff, 0x850e1d02, 0x5c028000, 0x5c00b800, - 0x1c01f000, 0x4d440000, 0x4d340000, 0x61f2880f, - 0x05d1f82d, 0x05020003, 0x4a026c00, 0x00000707, - 0x5c026800, 0x5c028800, 0x1c01f000, 0x05f9feef, - 0x59a80098, 0x40002800, 0x59a81899, 0x800c0480, - 0x05000006, 0x59a8089a, 0x05001023, 0x80040480, - 0x0500001a, 0x05001019, 0x59aa6097, 0x41302000, - 0x59300a03, 0x90040d80, 0x0502000b, 0x64226203, - 0x800c1800, 0x480f5099, 0x91301430, 0xa0080495, - 0x0502100c, 0x480b5097, 0x05f9fee3, 0x81300540, - 0x1c01f000, 0x91326430, 0xa1300c95, 0x05001002, - 0x41526000, 0x81300584, 0x05000004, 0x05fdf7ed, - 0x49535097, 0x05fdf7f5, 0x42000000, 0x0010e443, - 0x0509fd64, 0x480fc857, 0x05f9fed3, 0x80026580, - 0x05fdf7f0, 0x8c14053e, 0x05fe07dd, 0x80000080, - 0x80000000, 0x05fdf7da, 0x4933c857, 0x4d340000, - 0x4d200000, 0x05b5fb92, 0x61f6880f, 0x42003000, - 0x00fffffd, 0x05cdfa8b, 0x05a60b50, 0x4936600a, - 0x497a6c12, 0x59300429, 0x900005a1, 0x05020003, - 0x599c0208, 0x48026c12, 0x5c024000, 0x5c026800, - 0x640e601e, 0x64066203, 0x648a6403, 0x05e1f5da, - 0x5930002b, 0x80000540, 0x05000006, 0x82000580, - 0xffffffff, 0x05000003, 0x82000580, 0xffffffff, - 0x1c01f000, 0x4927c857, 0x59240200, 0xb0000542, - 0x48024a00, 0x1c01f000, 0x4933c857, 0x59368c03, - 0x4c180000, 0x59300203, 0x90003491, 0x05a61b2f, - 0x0c01f803, 0x5c003000, 0x1c01f000, 0x0010bac0, - 0x0010c01b, 0x0010c1e5, 0x0010bac0, 0x0010bac0, - 0x0010bac0, 0x0010bac0, 0x0010bac0, 0x0010bae0, - 0x0010bac0, 0x0010bac0, 0x0010bac0, 0x0010bac0, - 0x0010bac0, 0x0010c8ad, 0x0010bac0, 0x0010bac0, - 0x05a5fb1a, 0x4933c857, 0x61fe89ff, 0x813669c0, - 0x05000002, 0x59368c03, 0x4c180000, 0x59300203, - 0x90003491, 0x05a61b11, 0x0c01f803, 0x5c003000, - 0x1c01f000, 0x0010bade, 0x0010c49f, 0x0010bade, - 0x0010bade, 0x0010bade, 0x0010bade, 0x0010bade, - 0x0010bade, 0x0010c3dd, 0x0010c9fc, 0x0010ca31, - 0x0010c9fc, 0x0010ca31, 0x0010bade, 0x0010c8be, - 0x0010bade, 0x0010bade, 0x05a5fafc, 0x05a5fafb, - 0xb13834a0, 0x05a61af9, 0x41380000, 0x493bc857, - 0x4d1c0000, 0x4d400000, 0x0c01f804, 0x5c028000, - 0x5c023800, 0x1c01f000, 0x0010bb4a, 0x0010bdc5, - 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, 0x0010bdcb, - 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, - 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, - 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, - 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, - 0x0010bb4a, 0x0010bc52, 0x0010bc91, 0x0010bca3, - 0x0010bd04, 0x0010bd48, 0x0010bd7c, 0x0010bd9e, - 0x0010bb4a, 0x0010bb4a, 0x0010bdd0, 0x0010bb4a, - 0x0010bb4a, 0x0010bdd9, 0x0010bdde, 0x0010bb4a, - 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, - 0x0010be6d, 0x0010bb4a, 0x0010bb4a, 0x0010bd31, - 0x0010bb4a, 0x0010bb4a, 0x0010be43, 0x0010bb4a, - 0x0010bb4a, 0x0010bb4a, 0x0010be78, 0x0010bb4a, - 0x0010bb4a, 0x0010bb4a, 0x0010bec0, 0x0010bb4a, - 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, - 0x0010bb4a, 0x0010bf15, 0x0010bb4a, 0x0010bb4a, - 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, 0x0010bc32, - 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, - 0x0010bc3c, 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, - 0x0010bf3e, 0x0010bf43, 0x0010bf5b, 0x0010bb4a, - 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, - 0x0010bc48, 0x0010bb4a, 0x0010bb4a, 0x0010bb4b, - 0x0010bb4a, 0x0010bb4a, 0x0010bb4a, 0x0010bbc5, - 0x0010bb4a, 0x0010bb4a, 0x05a5fa90, 0x4933c857, - 0x59cc0801, 0x82040580, 0x00fffffe, 0x05020416, - 0x0505ff3b, 0x05020414, 0x05b5f8b2, 0x05020412, - 0x59a804cc, 0x8c000504, 0x05000254, 0x4c5c0000, - 0x59a808b6, 0x82040580, 0x00000228, 0x050200b5, - 0x59cc0800, 0x82040d00, 0x00ffffff, 0x82040580, - 0x00fffff0, 0x050200b1, 0x59cc0801, 0x82040d00, - 0x00ffffff, 0x82040580, 0x00fffffe, 0x050200ad, - 0x59cc0c07, 0x80040910, 0x90040581, 0x050200ab, - 0x59cc0a0a, 0x82040580, 0x00000228, 0x050200af, - 0x4c600000, 0x4c640000, 0x91ccbc0b, 0x585c0c00, - 0x82040580, 0x00000101, 0x0502003f, 0x585c0a00, - 0x90040584, 0x0502003e, 0x91ccc40d, 0x58600c00, - 0x82040580, 0x00000102, 0x0502003b, 0x58600a00, - 0x90040584, 0x0502003a, 0x91cccc0f, 0x58640c00, - 0x82040580, 0x00000103, 0x05000004, 0x82040580, - 0x00000203, 0x05020036, 0x58640a00, 0x82040580, - 0x00000200, 0x05020034, 0x585c0801, 0x90040484, - 0x05021033, 0x59cc0a07, 0x4807c857, 0x4806621b, - 0x58600201, 0x4803c857, 0x800001c0, 0x05000026, - 0x82000c80, 0x00000fff, 0x05021023, 0x480354cd, - 0x480352cc, 0x60643000, 0x61fc19ff, 0x60182000, - 0x4d200000, 0x417a4000, 0x05c5fca6, 0x5c024000, - 0x585cc801, 0x5860ba01, 0x91ccc410, 0x497a641b, - 0x0509fb09, 0x59cc0c04, 0x48066202, 0x656a6403, - 0x64066203, 0x05e1fcc4, 0x59a804cc, 0x84000542, - 0x480354cc, 0x5c00c800, 0x5c00c000, 0x5c00b800, - 0x1c01f000, 0x4807c857, 0x05fdf7fb, 0x4807c857, - 0x05fdf7f9, 0x4807c857, 0x05fdf7f7, 0x4807c857, - 0x05fdf7f5, 0x4803c857, 0x05fdf7f3, 0x4807c857, - 0x05fdf7f1, 0x4807c857, 0x05fdf7ef, 0x4807c857, - 0x05fdf7ed, 0x4933c857, 0x59cc0801, 0x82040580, - 0x00fffffe, 0x0502039c, 0x0505fec1, 0x0502039a, - 0x05b5f838, 0x05020398, 0x0501fbcd, 0x050201db, - 0x4c5c0000, 0x59a808b6, 0x90040594, 0x0502003d, - 0x59cc0800, 0x82040d00, 0x00ffffff, 0x82040580, - 0x00fffff0, 0x05020039, 0x59cc0801, 0x82040d00, - 0x00ffffff, 0x82040580, 0x00fffffe, 0x05020035, - 0x59cc0c07, 0x80040910, 0x90040581, 0x05020033, - 0x59cc0a0a, 0x90040594, 0x05020038, 0x59cc0c07, - 0x82040d00, 0x000000ff, 0x90040582, 0x0502002d, - 0x59cc0a07, 0x4807c857, 0x4d300000, 0x05d9fead, - 0x4130b800, 0x5c026000, 0x0500002e, 0x485fc857, - 0x585c0c07, 0x90040581, 0x0502002d, 0x585c0a03, - 0x90040582, 0x0502002d, 0x585c0c03, 0xb0040598, - 0x0502002d, 0x5930000a, 0x585c080a, 0x80040580, - 0x0502002c, 0x585c041b, 0x8c000508, 0x0500002c, - 0x59a804cc, 0x84000542, 0x480354cc, 0x59cc0c04, - 0x4804ba02, 0x6578bc03, 0x6404ba03, 0x0005ffdc, - 0x405e6000, 0x05e1fc64, 0x5c00b800, 0x1c01f000, - 0x4807c857, 0x05fdf7fd, 0x4807c857, 0x05fdf7fb, - 0x4807c857, 0x05fdf7f9, 0x4807c857, 0x0501f002, - 0x4807c857, 0x641e641c, 0x657e6403, 0x6402621c, - 0x5c00b800, 0x0501f1ac, 0x4807c857, 0x05fdf7fa, - 0x4807c857, 0x640e641c, 0x05fdf7f8, 0x4807c857, - 0x640e641c, 0x05fdf7f5, 0x4807c857, 0x640e641c, - 0x05fdf7f2, 0x4807c857, 0x640e641c, 0x05fdf7ef, - 0x4807c857, 0x640e641c, 0x05fdf7ec, 0x4807c857, - 0x640e641c, 0x05fdf7e9, 0x4933c857, 0x0505fe58, - 0x05020331, 0x05b1ffcf, 0x0502032f, 0x59cc0407, - 0x4802601e, 0x65166403, 0x64066203, 0x05e1f436, - 0x4933c857, 0x0505fe4e, 0x05020327, 0x05b1ffc5, - 0x05020325, 0x0501fb5a, 0x05020168, 0x59cc0007, - 0x4802601e, 0x652a6403, 0x64066203, 0x05e1f42a, - 0x4933c857, 0x0505fe42, 0x0502031b, 0x05b1ffb9, - 0x05020319, 0x0501fb4e, 0x0502015c, 0x655a6403, - 0x64066203, 0x05e1f420, 0x4933c857, 0x05b1ffb1, - 0x05020009, 0x05cdfc75, 0x05020007, 0x5932481d, - 0x59240200, 0x90000503, 0x90000583, 0x05000006, - 0x0501f309, 0x64266403, 0x6426641c, 0x6402621c, - 0x0501f169, 0x05cdfde6, 0x05000025, 0x59340200, - 0x8c00051a, 0x05000004, 0x5934000a, 0x84000560, - 0x4802680a, 0x0505f982, 0x05020024, 0x0509fceb, - 0x05020006, 0x60a68000, 0x4d3c0000, 0x417a7800, - 0x05b1febc, 0x5c027800, 0x42000000, 0x0010e456, - 0x0509fb68, 0x41780800, 0x05cdf960, 0x64226403, - 0x600c3000, 0x59240400, 0x8c00050a, 0x0502014e, - 0x59cc400b, 0x59cc380c, 0x59cc180d, 0x59cc080e, - 0x9c2041c0, 0x9c1c39c0, 0x9c0c19c0, 0x9c0409c0, - 0x641e6203, 0x41782800, 0x0501f13c, 0x0505faef, - 0x05fe07e1, 0x64266403, 0x643a641c, 0x4a02621c, - 0x00001900, 0x0501f13c, 0x64266403, 0x640e641c, - 0x0501f139, 0x4933c857, 0x05b1ff72, 0x050202d2, - 0x05cdfc36, 0x050202d0, 0x493a6403, 0x0505f8e7, - 0x05020007, 0x641a6403, 0x59240400, 0x8c00050a, - 0x0502012d, 0x641e6203, 0x0509f10a, 0x641e6403, - 0x6426641c, 0x6402621c, 0x0501f127, 0x4933c857, - 0x05cdfc26, 0x050202c0, 0x5934000a, 0x82000500, - 0x00010000, 0x82000580, 0x00010000, 0x05060de0, - 0x05b00f58, 0x050202b8, 0x59cc0001, 0x82000500, - 0x00ffff00, 0x82000580, 0x00fffc00, 0x05020007, - 0x59a80006, 0x8c00050e, 0x05000004, 0x59240400, - 0x8c00050a, 0x05020036, 0x05cdfd8d, 0x05020003, - 0x60067800, 0x05cdf826, 0x05cdfd7c, 0x05000004, - 0x82000580, 0x00000703, 0x05020032, 0x59cc0206, - 0x90003503, 0x05020034, 0x90003494, 0x05001032, - 0x59a830b6, 0x80183480, 0x0500102f, 0x5934300a, - 0x84183516, 0x90000594, 0x05020002, 0x84183556, - 0x481a680a, 0x59cc0406, 0x90000503, 0x05020026, - 0x0505f962, 0x0502002b, 0x05cdfd4f, 0x05020006, - 0x4c600000, 0x4178c000, 0x417a7800, 0x05b1fec9, - 0x5c00c000, 0x916c0583, 0x05020006, 0x60183000, - 0x0509f89c, 0x42000000, 0x0010e455, 0x0509faf9, - 0x05cdf967, 0x642a6403, 0x60803000, 0x59cc1a0a, - 0x41780800, 0x41784000, 0x41783800, 0x59240400, - 0x8c00050a, 0x050200dc, 0x05fdf796, 0x642e6403, - 0x642e641c, 0x4a02621c, 0x00002c00, 0x0501f0d6, - 0x642e6403, 0x6426641c, 0x4a02621c, 0x00001e00, - 0x0501f0d1, 0x42000000, 0x0010e3ab, 0x0509fae1, - 0x642e6403, 0x641e641c, 0x6402621c, 0x0501f0ca, - 0x642e6403, 0x640e641c, 0x6402621c, 0x0501f0c6, - 0x4933c857, 0x05cdfbc5, 0x0502025f, 0x0505fd84, - 0x0502025d, 0x05b1fefb, 0x0502025b, 0x59cc0206, - 0x90003503, 0x0502001b, 0x90003494, 0x05001019, - 0x59a830b6, 0x80180480, 0x05001016, 0x59cc0406, - 0x90000503, 0x05020013, 0x59340400, 0x82000580, - 0x00000707, 0x05000013, 0x417a7800, 0x4c600000, - 0x4178c000, 0x05b1fe87, 0x5c00c000, 0x60283000, - 0x0509f85c, 0x42000000, 0x0010e452, 0x0509fab9, - 0x64326403, 0x41782800, 0x60843000, 0x05fdf7c4, - 0x64366403, 0x641e641c, 0x6402621c, 0x0501f09e, + 0x05f9ffe7, 0x0501f009, 0x405c0800, 0x41781000, + 0x60001802, 0x60040000, 0x60028000, 0x05d1f869, + 0x0501f830, 0x0009f810, 0x59a8024c, 0x4803c857, + 0x8c000506, 0x05020006, 0x41781800, 0x0509ffce, + 0x05000002, 0x60401800, 0x05b1fd7c, 0x805c0110, + 0x48035049, 0x48038881, 0x59a80047, 0x80000040, + 0x4803c857, 0x05001003, 0x48035047, 0x0502001a, + 0x59a8024c, 0x8c000506, 0x05000004, 0x8400050a, + 0x4803524c, 0x4803544c, 0x42001800, 0x00111ce0, + 0x05a5f86f, 0x42001800, 0x00111ced, 0x05a5f86c, + 0x4a035048, 0x0000ffff, 0x05e5fc66, 0x4a01a8e4, + 0x00000080, 0x0509ffd1, 0x05000004, 0x4a038802, + 0x0000ffbf, 0x0501f003, 0x4a038802, 0x0000ffff, + 0x850e1d02, 0x5c028000, 0x5c00b800, 0x1c01f000, + 0x4d440000, 0x4d340000, 0x61f2880f, 0x05cdfc43, + 0x05020003, 0x4a026c00, 0x00000707, 0x5c026800, + 0x5c028800, 0x1c01f000, 0x05f9fdd4, 0x59a8009b, + 0x40002800, 0x59a8189c, 0x800c0480, 0x05000006, + 0x59a8089d, 0x05001026, 0x80040480, 0x0500001d, + 0x0500101c, 0x59aa609a, 0x41302000, 0x59300a03, + 0x90040d80, 0x0502000e, 0x5930002f, 0x84000516, + 0x4802602f, 0x64226203, 0x800c1800, 0x480f509c, + 0x91301430, 0xa0080495, 0x0502100c, 0x480b509a, + 0x05f9fdc9, 0x81300540, 0x1c01f000, 0x91326430, + 0xa1300c95, 0x05001002, 0x41526000, 0x81300584, + 0x05000004, 0x05fdf7ea, 0x4953509a, 0x05fdf7f5, + 0x42000000, 0x001123e5, 0x0509fe29, 0x480fc857, + 0x05f9fdb9, 0x80026580, 0x05fdf7f0, 0x8c14053e, + 0x05fe07da, 0x80000080, 0x80000000, 0x05fdf7d7, + 0x4933c857, 0x4d340000, 0x4d200000, 0x05b1fd78, + 0x61f6880f, 0x42003000, 0x00fffffd, 0x05c9fdf0, + 0x05a20cd5, 0x4936600a, 0x497a6c12, 0x59300429, + 0x900005a1, 0x05020003, 0x599c0208, 0x48026c12, + 0x5c024000, 0x5c026800, 0x640e601e, 0x64066203, + 0x648a6403, 0x05e1f3dd, 0x5930002b, 0x80000540, + 0x05000006, 0x82000580, 0xffffffff, 0x05000003, + 0x82000580, 0xffffffff, 0x1c01f000, 0x4927c857, + 0x59240200, 0xb0000542, 0x48024a00, 0x1c01f000, + 0x4927c857, 0x4a024a00, 0x00008085, 0x599c0208, + 0x48026c12, 0x4d300000, 0x05e9ffb6, 0x5c000000, + 0x05000005, 0x641c0407, 0x4a000006, 0x00000398, + 0x0501f002, 0x40026000, 0x4936600a, 0x600c0800, + 0x05c9fd94, 0x49238830, 0x4a038832, 0xffffffff, + 0x4926601d, 0x497a6009, 0x64066407, 0x64066203, + 0x640a6403, 0x05e1f3b5, 0x82bc0580, 0x00115aa4, + 0x05000008, 0x59a8003d, 0x59a8729f, 0x80380400, + 0x59a8723e, 0x8164740e, 0x80380480, 0x0501f003, + 0x59a8003d, 0x81640480, 0x1c01f000, 0x4933c857, + 0x59368c03, 0x4c180000, 0x59300203, 0x90003491, + 0x05a21c8d, 0x0c01f803, 0x5c003000, 0x1c01f000, + 0x0010c19d, 0x0010c70d, 0x0010c8e8, 0x0010c19d, + 0x0010c19d, 0x0010c19d, 0x0010c19d, 0x0010c19d, + 0x0010c1bd, 0x0010c19d, 0x0010c19d, 0x0010c19d, + 0x0010c19d, 0x0010c19d, 0x0010cff7, 0x0010c19d, + 0x0010c19d, 0x05a1fc78, 0x4933c857, 0x61fe89ff, + 0x813669c0, 0x05000002, 0x59368c03, 0x4c180000, + 0x59300203, 0x90003491, 0x05a21c6f, 0x0c01f803, + 0x5c003000, 0x1c01f000, 0x0010c1bb, 0x0010cb9c, + 0x0010c1bb, 0x0010c1bb, 0x0010c1bb, 0x0010c1bb, + 0x0010c1bb, 0x0010c1bb, 0x0010cae0, 0x0010d146, + 0x0010d17b, 0x0010d146, 0x0010d17b, 0x0010c1bb, + 0x0010d008, 0x0010c1bb, 0x0010c1bb, 0x05a1fc5a, + 0x05a1fc59, 0xb13834a0, 0x05a21c57, 0x41380000, + 0x493bc857, 0x4d1c0000, 0x4d400000, 0x0c01f804, + 0x5c028000, 0x5c023800, 0x1c01f000, 0x0010c22b, + 0x0010c4b4, 0x0010c22b, 0x0010c22b, 0x0010c22b, + 0x0010c4ba, 0x0010c22b, 0x0010c22b, 0x0010c22b, + 0x0010c22b, 0x0010c22b, 0x0010c22b, 0x0010c22b, + 0x0010c22b, 0x0010c22b, 0x0010c22b, 0x0010c22b, + 0x0010c22b, 0x0010c22b, 0x0010c22b, 0x0010c22b, + 0x0010c22b, 0x0010c22b, 0x0010c333, 0x0010c372, + 0x0010c384, 0x0010c3e5, 0x0010c429, 0x0010c45d, + 0x0010c47f, 0x0010c22b, 0x0010c22b, 0x0010c4bf, + 0x0010c22b, 0x0010c22b, 0x0010c4c8, 0x0010c4cd, + 0x0010c22b, 0x0010c22b, 0x0010c22b, 0x0010c22b, + 0x0010c22b, 0x0010c55f, 0x0010c22b, 0x0010c22b, + 0x0010c412, 0x0010c22b, 0x0010c22b, 0x0010c52f, + 0x0010c22b, 0x0010c22b, 0x0010c22b, 0x0010c56a, + 0x0010c22b, 0x0010c22b, 0x0010c22b, 0x0010c5b2, + 0x0010c22b, 0x0010c22b, 0x0010c22b, 0x0010c22b, + 0x0010c22b, 0x0010c22b, 0x0010c607, 0x0010c22b, + 0x0010c22b, 0x0010c22b, 0x0010c22b, 0x0010c22b, + 0x0010c313, 0x0010c22b, 0x0010c22b, 0x0010c22b, + 0x0010c22b, 0x0010c31d, 0x0010c22b, 0x0010c22b, + 0x0010c22b, 0x0010c630, 0x0010c635, 0x0010c64d, + 0x0010c22b, 0x0010c22b, 0x0010c22b, 0x0010c22b, + 0x0010c22b, 0x0010c329, 0x0010c22b, 0x0010c22b, + 0x0010c22c, 0x0010c22b, 0x0010c22b, 0x0010c22b, + 0x0010c2a6, 0x0010c22b, 0x0010c22b, 0x0010c22b, + 0x0010c22b, 0x0010c22b, 0x0010c22b, 0x05a1fbea, + 0x4933c857, 0x59cc0801, 0x82040580, 0x00fffffe, + 0x05020427, 0x0505ffa4, 0x05020425, 0x05b1fa69, + 0x05020423, 0x59a804d1, 0x8c000504, 0x05000262, + 0x4c5c0000, 0x59a808bb, 0x82040580, 0x00000228, + 0x050200b5, 0x59cc0800, 0x82040d00, 0x00ffffff, + 0x82040580, 0x00fffff0, 0x050200b1, 0x59cc0801, + 0x82040d00, 0x00ffffff, 0x82040580, 0x00fffffe, + 0x050200ad, 0x59cc0c07, 0x80040910, 0x90040581, + 0x050200ab, 0x59cc0a0a, 0x82040580, 0x00000228, + 0x050200af, 0x4c600000, 0x4c640000, 0x91ccbc0b, + 0x585c0c00, 0x82040580, 0x00000101, 0x0502003f, + 0x585c0a00, 0x90040584, 0x0502003e, 0x91ccc40d, + 0x58600c00, 0x82040580, 0x00000102, 0x0502003b, + 0x58600a00, 0x90040584, 0x0502003a, 0x91cccc0f, + 0x58640c00, 0x82040580, 0x00000103, 0x05000004, + 0x82040580, 0x00000203, 0x05020036, 0x58640a00, + 0x82040580, 0x00000200, 0x05020034, 0x585c0801, + 0x90040484, 0x05021033, 0x59cc0a07, 0x4807c857, + 0x4806621b, 0x58600201, 0x4803c857, 0x800001c0, + 0x05000026, 0x82000c80, 0x00000fff, 0x05021023, + 0x480354d2, 0x480352d1, 0x60643000, 0x61fc19ff, + 0x60182000, 0x4d200000, 0x417a4000, 0x05c1ff62, + 0x5c024000, 0x585cc801, 0x5860ba01, 0x91ccc410, + 0x497a641b, 0x0509fb8f, 0x59cc0c04, 0x48066202, + 0x656a6403, 0x64066203, 0x05e1fa9c, 0x59a804d1, + 0x84000542, 0x480354d1, 0x5c00c800, 0x5c00c000, + 0x5c00b800, 0x1c01f000, 0x4807c857, 0x05fdf7fb, + 0x4807c857, 0x05fdf7f9, 0x4807c857, 0x05fdf7f7, + 0x4807c857, 0x05fdf7f5, 0x4803c857, 0x05fdf7f3, + 0x4807c857, 0x05fdf7f1, 0x4807c857, 0x05fdf7ef, + 0x4807c857, 0x05fdf7ed, 0x4933c857, 0x59cc0801, + 0x82040580, 0x00fffffe, 0x050203ad, 0x0505ff2a, + 0x050203ab, 0x05b1f9ef, 0x050203a9, 0x0501fbde, + 0x050201e9, 0x4c5c0000, 0x59a808bb, 0x90040594, + 0x0502003d, 0x59cc0800, 0x82040d00, 0x00ffffff, + 0x82040580, 0x00fffff0, 0x05020039, 0x59cc0801, + 0x82040d00, 0x00ffffff, 0x82040580, 0x00fffffe, + 0x05020035, 0x59cc0c07, 0x80040910, 0x90040581, + 0x05020033, 0x59cc0a0a, 0x90040594, 0x05020038, + 0x59cc0c07, 0x82040d00, 0x000000ff, 0x90040582, + 0x0502002d, 0x59cc0a07, 0x4807c857, 0x4d300000, + 0x05d9fbba, 0x4130b800, 0x5c026000, 0x0500002e, + 0x485fc857, 0x585c0c07, 0x90040581, 0x0502002d, + 0x585c0a03, 0x90040582, 0x0502002d, 0x585c0c03, + 0xb0040598, 0x0502002d, 0x5930000a, 0x585c080a, + 0x80040580, 0x0502002c, 0x585c041b, 0x8c000508, + 0x0500002c, 0x59a804d1, 0x84000542, 0x480354d1, + 0x59cc0c04, 0x4804ba02, 0x6578bc03, 0x6404ba03, + 0x0009f810, 0x405e6000, 0x05e1fa3c, 0x5c00b800, + 0x1c01f000, 0x4807c857, 0x05fdf7fd, 0x4807c857, + 0x05fdf7fb, 0x4807c857, 0x05fdf7f9, 0x4807c857, + 0x0501f002, 0x4807c857, 0x641e641c, 0x657e6403, + 0x6402621c, 0x5c00b800, 0x0501f1ba, 0x4807c857, + 0x05fdf7fa, 0x4807c857, 0x640e641c, 0x05fdf7f8, + 0x4807c857, 0x640e641c, 0x05fdf7f5, 0x4807c857, + 0x640e641c, 0x05fdf7f2, 0x4807c857, 0x640e641c, + 0x05fdf7ef, 0x4807c857, 0x640e641c, 0x05fdf7ec, + 0x4807c857, 0x640e641c, 0x05fdf7e9, 0x4933c857, + 0x0505fec1, 0x05020342, 0x05b1f986, 0x05020340, + 0x59cc0407, 0x4802601e, 0x65166403, 0x64066203, + 0x05e1f20e, 0x4933c857, 0x0505feb7, 0x05020338, + 0x05b1f97c, 0x05020336, 0x0501fb6b, 0x05020176, + 0x59cc0007, 0x4802601e, 0x652a6403, 0x64066203, + 0x05e1f202, 0x4933c857, 0x0505feab, 0x0502032c, + 0x05b1f970, 0x0502032a, 0x0501fb5f, 0x0502016a, + 0x655a6403, 0x64066203, 0x05e1f1f8, 0x4933c857, + 0x05b1f968, 0x05020009, 0x05cdf806, 0x05020007, + 0x5932481d, 0x59240200, 0x90000503, 0x90000583, + 0x05000006, 0x0501f31a, 0x64266403, 0x6426641c, + 0x6402621c, 0x0501f177, 0x05cdf9ce, 0x05000025, + 0x59340200, 0x8c00051a, 0x05000004, 0x5934000a, + 0x84000560, 0x4802680a, 0x0505f9b5, 0x05020024, + 0x0509fd85, 0x05020006, 0x60a68000, 0x4d3c0000, + 0x417a7800, 0x05b1f872, 0x5c027800, 0x42000000, + 0x001123fa, 0x0509fc02, 0x41780800, 0x05c9fce5, + 0x64226403, 0x600c3000, 0x59240400, 0x8c00050a, + 0x0502015c, 0x59cc400b, 0x59cc380c, 0x59cc180d, + 0x59cc080e, 0x9c2041c0, 0x9c1c39c0, 0x9c0c19c0, + 0x9c0409c0, 0x641e6203, 0x41782800, 0x0501f14a, + 0x0505fb53, 0x05fe07e1, 0x64266403, 0x643a641c, + 0x4a02621c, 0x00001900, 0x0501f14a, 0x64266403, + 0x640e641c, 0x0501f147, 0x4933c857, 0x05b1f929, + 0x050202e3, 0x05c9ffc7, 0x050202e1, 0x493a6403, + 0x0505f90d, 0x05020007, 0x641a6403, 0x59240400, + 0x8c00050a, 0x0502013b, 0x641e6203, 0x0509f186, + 0x641e6403, 0x6426641c, 0x6402621c, 0x0501f135, + 0x4933c857, 0x05c9ffb7, 0x050202d1, 0x5934000a, + 0x82000500, 0x00010000, 0x82000580, 0x00010000, + 0x05060e49, 0x05b0090f, 0x050202c9, 0x59cc0001, + 0x82000500, 0x00ffff00, 0x82000580, 0x00fffc00, + 0x05020007, 0x59a80006, 0x8c00050e, 0x05000004, + 0x59240400, 0x8c00050a, 0x05020036, 0x05cdf975, + 0x05020003, 0x60067800, 0x05c9fb58, 0x05cdf964, + 0x05000004, 0x82000580, 0x00000703, 0x05020032, + 0x59cc0206, 0x90003503, 0x05020034, 0x90003494, + 0x05001032, 0x59a830bb, 0x80183480, 0x0500102f, + 0x5934300a, 0x84183516, 0x90000594, 0x05020002, + 0x84183556, 0x481a680a, 0x59cc0406, 0x90000503, + 0x05020026, 0x0505f998, 0x0502002b, 0x05cdf937, + 0x05020006, 0x4c600000, 0x4178c000, 0x417a7800, + 0x05b1f87f, 0x5c00c000, 0x916c0583, 0x05020006, + 0x60183000, 0x0509f918, 0x42000000, 0x001123f9, + 0x0509fb93, 0x05c9fcec, 0x642a6403, 0x60803000, + 0x59cc1a0a, 0x41780800, 0x41784000, 0x41783800, + 0x59240400, 0x8c00050a, 0x050200ea, 0x05fdf796, + 0x642e6403, 0x642e641c, 0x4a02621c, 0x00002c00, + 0x0501f0e4, 0x642e6403, 0x6426641c, 0x4a02621c, + 0x00001e00, 0x0501f0df, 0x42000000, 0x0011234c, + 0x0509fb7b, 0x642e6403, 0x641e641c, 0x6402621c, + 0x0501f0d8, 0x642e6403, 0x640e641c, 0x6402621c, + 0x0501f0d4, 0x4933c857, 0x05c9ff56, 0x05020270, + 0x0505fded, 0x0502026e, 0x05b1f8b2, 0x0502026c, + 0x59cc0206, 0x90003503, 0x0502001b, 0x90003494, + 0x05001019, 0x59a830bb, 0x80180480, 0x05001016, + 0x59cc0406, 0x90000503, 0x05020013, 0x59340400, + 0x82000580, 0x00000707, 0x05000013, 0x417a7800, + 0x4c600000, 0x4178c000, 0x05b1f83d, 0x5c00c000, + 0x60283000, 0x0509f8d8, 0x42000000, 0x001123f6, + 0x0509fb53, 0x64326403, 0x41782800, 0x60843000, + 0x05fdf7c4, 0x64366403, 0x641e641c, 0x6402621c, + 0x0501f0ac, 0x64366403, 0x6426641c, 0x4a02621c, + 0x00001e00, 0x0501f0a7, 0x4933c857, 0x05c9ff29, + 0x05020243, 0x0505fdc0, 0x05020241, 0x05b1f885, + 0x0502023f, 0x0501fa74, 0x0502000a, 0x493a6403, + 0x0501fa7a, 0x05020003, 0x64ba6403, 0x05fdf75c, + 0x64366403, 0x641e641c, 0x6402621c, 0x0501f095, 0x64366403, 0x6426641c, 0x4a02621c, 0x00001e00, - 0x0501f099, 0x4933c857, 0x05cdfb98, 0x05020232, - 0x0505fd57, 0x05020230, 0x05b1fece, 0x0502022e, - 0x0501fa63, 0x0502000a, 0x493a6403, 0x0501fa69, - 0x05020003, 0x64ba6403, 0x05fdf75c, 0x64366403, - 0x641e641c, 0x6402621c, 0x0501f087, 0x64366403, - 0x6426641c, 0x4a02621c, 0x00001e00, 0x0501f082, - 0x4933c857, 0x05cdfb81, 0x05fe0713, 0x59240200, - 0x90000503, 0x90000583, 0x05020217, 0x05cdfceb, - 0x05020027, 0x0505f8ec, 0x0502000b, 0x643a6403, - 0x59240400, 0x8c00050a, 0x05020073, 0x61483000, - 0x59cc4008, 0x59cc3809, 0x59cc180a, 0x59cc080b, - 0x05fdf724, 0x4933c857, 0x600c3000, 0x0509f824, - 0x4d3c0000, 0x417a7800, 0x05b1fdca, 0x5c027800, - 0x42000000, 0x0010e454, 0x0509fa76, 0x59340200, - 0x84000558, 0x48026a00, 0x602c0800, 0x05c9ff82, - 0x59240400, 0x8c00050a, 0x05020057, 0x601c3000, - 0x0501f04c, 0x4933c857, 0x643e6403, 0x640e641c, - 0x4a02621c, 0x00001e00, 0x0501f053, 0x59340400, - 0x82000580, 0x00000703, 0x05fc07f7, 0x0501f02f, - 0x4933c857, 0x05cdfb4d, 0x050201e7, 0x5932481d, - 0x59240200, 0x90000503, 0x90000583, 0x050201e2, - 0x05cdfcad, 0x05020021, 0x0505f8ca, 0x05040864, - 0x05020004, 0x64426403, 0x61403000, 0x05fdf6ee, - 0x4d3c0000, 0x417a7800, 0x05b1fd9e, 0x5c027800, - 0x600c3000, 0x0505fff2, 0x42000000, 0x0010e454, - 0x0509fa48, 0x59340200, 0x84000558, 0x48026a00, - 0x05fdf7d4, 0x64466403, 0x640e641c, 0x4a02621c, - 0x00001e00, 0x0501f02c, 0x4933c857, 0x05b1fe65, - 0x05040ceb, 0x050201c4, 0x0501f9f9, 0x05020007, - 0x644a6403, 0x0501f024, 0x59340400, 0x82000580, - 0x00000703, 0x05fc07f0, 0x83340580, 0x00110210, - 0x05000008, 0x4d3c0000, 0x417a7800, 0x60a68000, - 0x05b1fd7c, 0x5c027800, 0x605c3000, 0x0505ffd0, - 0x42000000, 0x0010e454, 0x0509fa26, 0x05b5f860, - 0x59240400, 0x8c00050a, 0x0502000b, 0x60183000, - 0x60a68000, 0x4933c857, 0x64066403, 0x641e6203, - 0x41782800, 0x0501f002, 0x611a8000, 0x0505f9dc, - 0x0505f7e4, 0x4933c857, 0x64066403, 0x602c0800, - 0x05c9ff25, 0x64066203, 0x05e1f2a7, 0x4933c857, - 0x60240800, 0x05c9ff20, 0x64166403, 0x05fdf7fa, - 0x0505fcbb, 0x05020194, 0x05b1fe32, 0x05020192, - 0x0501f9c7, 0x05fe07d5, 0x64826403, 0x64066203, - 0x05e1f299, 0x05b1fe2b, 0x0502018b, 0x648e6403, - 0x64066203, 0x05e1f294, 0x0505fcad, 0x05b00e25, - 0x05020185, 0x0501f9ba, 0x05fe07c8, 0x59cc0807, - 0x82040500, 0x00ffff00, 0x0502000a, 0x59340212, - 0x82000500, 0x0000ff00, 0x05000006, 0x5932481d, - 0x59240005, 0x82000500, 0x000000ff, 0x0501f003, - 0x5932481d, 0x59240005, 0x82040d00, 0x00ffffff, - 0x80040580, 0x05020015, 0x59cc1408, 0x05f9fb62, - 0x0500002f, 0x591c0202, 0x82001580, 0x0000ffff, - 0x05000004, 0x59cc1208, 0x80080580, 0x05020028, - 0x591c000a, 0x81340580, 0x05020025, 0x591c0416, - 0x8c00051a, 0x05020018, 0x591c0407, 0x90000587, - 0x0502001f, 0x0501f02f, 0x59cc1208, 0x82080580, - 0x0000ffff, 0x05000015, 0x05f9fb4b, 0x05000018, - 0x59cc1408, 0x591c0202, 0x80080580, 0x0502002b, - 0x831c0580, 0xffffffff, 0x05000026, 0x591c000a, + 0x0501f090, 0x4933c857, 0x05c9ff12, 0x05fe0713, + 0x59240200, 0x90000503, 0x90000583, 0x05020228, + 0x05cdf8d3, 0x05020027, 0x0505f922, 0x0502000b, + 0x643a6403, 0x59240400, 0x8c00050a, 0x05020081, + 0x61483000, 0x59cc4008, 0x59cc3809, 0x59cc180a, + 0x59cc080b, 0x05fdf724, 0x4933c857, 0x600c3000, + 0x0509f8a0, 0x4d3c0000, 0x417a7800, 0x05adff80, + 0x5c027800, 0x42000000, 0x001123f8, 0x0509fb10, + 0x59340200, 0x84000558, 0x48026a00, 0x602c0800, + 0x05c9fab4, 0x59240400, 0x8c00050a, 0x05020065, + 0x601c3000, 0x0501f05a, 0x4933c857, 0x643e6403, + 0x640e641c, 0x4a02621c, 0x00001e00, 0x0501f061, + 0x59340400, 0x82000580, 0x00000703, 0x05fc07f7, + 0x0501f03d, 0x4933c857, 0x05c9fede, 0x050201f8, + 0x5932481d, 0x59240200, 0x90000503, 0x90000583, + 0x050201f3, 0x05cdf895, 0x0502002f, 0x0505f900, + 0x05040897, 0x05020004, 0x64426403, 0x61403000, + 0x05fdf6ee, 0x4d3c0000, 0x417a7800, 0x05adff54, + 0x5c027800, 0x600c3000, 0x0509f86e, 0x42000000, + 0x001123f8, 0x0509fae2, 0x59340200, 0x84000558, + 0x48026a00, 0x05fdf7d4, 0x64466403, 0x640e641c, + 0x4a02621c, 0x00001e00, 0x0501f03a, 0x4933c857, + 0x05b1f81c, 0x05040d54, 0x050201d5, 0x59cc0006, + 0x82000500, 0xff000000, 0x82000d80, 0x18000000, + 0x05020006, 0x6426641c, 0x4a02621c, 0x00002c00, + 0x64266403, 0x0501f02b, 0x82000d80, 0x81000000, + 0x05000003, 0x0501f9fc, 0x05020007, 0x644a6403, + 0x0501f024, 0x59340400, 0x82000580, 0x00000703, + 0x05fc07e2, 0x83340580, 0x001141b4, 0x05000008, + 0x4d3c0000, 0x417a7800, 0x60a68000, 0x05adff24, + 0x5c027800, 0x605c3000, 0x0509f83e, 0x42000000, + 0x001123f8, 0x0509fab2, 0x05b1fa0d, 0x59240400, + 0x8c00050a, 0x0502000b, 0x60183000, 0x60a68000, + 0x4933c857, 0x64066403, 0x641e6203, 0x41782800, + 0x0501f002, 0x611a8000, 0x0505fa34, 0x0509f052, + 0x4933c857, 0x64066403, 0x602c0800, 0x05c9fa49, + 0x64066203, 0x05e1f071, 0x4933c857, 0x60240800, + 0x05c9fa44, 0x64166403, 0x05fdf7fa, 0x0505fd16, + 0x05020197, 0x05adffdb, 0x05020195, 0x0501f9ca, + 0x05fe07d5, 0x64826403, 0x64066203, 0x05e1f063, + 0x05adffd4, 0x0502018e, 0x648e6403, 0x64066203, + 0x05e1f05e, 0x0505fd08, 0x05ac0fce, 0x05020188, + 0x0501f9bd, 0x05fe07c8, 0x59cc0807, 0x82040500, + 0x00ffff00, 0x0502000a, 0x59340212, 0x82000500, + 0x0000ff00, 0x05000006, 0x5932481d, 0x59240005, + 0x82000500, 0x000000ff, 0x0501f003, 0x5932481d, + 0x59240005, 0x82040d00, 0x00ffffff, 0x80040580, + 0x05020015, 0x59cc1408, 0x05f9fa0f, 0x0500002f, + 0x591c0202, 0x82001580, 0x0000ffff, 0x05000004, + 0x59cc1208, 0x80080580, 0x05020028, 0x591c000a, 0x81340580, 0x05020025, 0x591c0416, 0x8c00051a, - 0x05000013, 0x82000500, 0xffff1fff, 0x48023c16, - 0x491e602a, 0x0501f01b, 0x59cc1408, 0x41780000, - 0x0501fe2a, 0x05fe07ef, 0x0501f016, 0x649a6403, - 0x4a02621c, 0x00001700, 0x59cc1208, 0x82081580, - 0x0000ffff, 0x05fe079c, 0x0501f00e, 0xa11c0494, - 0x05000002, 0x0500100b, 0x591c0407, 0x90000587, - 0x05fe07f3, 0x591c0403, 0x900005a4, 0x05020005, - 0x4d300000, 0x411e6000, 0x0005ffdc, 0x5c026000, - 0x64966403, 0x05fdf78c, 0x59cc1408, 0x41780000, - 0x0501fe0e, 0x05fe07e6, 0x05fdf7fa, 0x4933c857, - 0x4d3c0000, 0x60067800, 0x05c9fe9d, 0x5c027800, - 0x4c580000, 0x6008b000, 0x91a81c02, 0x91cc140b, - 0x05f1f9fb, 0x5c00b000, 0x05000003, 0x64c66403, - 0x05fdf779, 0x0005ffdc, 0x6008b000, 0x91a81c00, - 0x91cc140d, 0x05f1f9f2, 0x0502000c, 0x05d9fc44, + 0x05020018, 0x591c0407, 0x90000587, 0x0502001f, + 0x0501f02c, 0x59cc1208, 0x82080580, 0x0000ffff, + 0x05000015, 0x05f9f9f8, 0x05000018, 0x59cc1408, + 0x591c0202, 0x80080580, 0x05020028, 0x831c0580, + 0xffffffff, 0x05000023, 0x591c000a, 0x81340580, + 0x05020022, 0x591c0416, 0x8c00051a, 0x05000013, + 0x82000500, 0xffff1fff, 0x48023c16, 0x491e602a, + 0x0501f018, 0x59cc1408, 0x41780000, 0x0501fe38, + 0x05fe07ef, 0x0501f013, 0x649a6403, 0x4a02621c, + 0x00001700, 0x59cc1208, 0x82081580, 0x0000ffff, + 0x05fe079c, 0x0501f00b, 0x591c0407, 0x90000587, + 0x05fe07f6, 0x591c0403, 0x900005a4, 0x05020005, + 0x4d300000, 0x411e6000, 0x0009f810, 0x5c026000, + 0x64966403, 0x05fdf78f, 0x59cc1408, 0x41780000, + 0x0501fe1f, 0x05fe07e9, 0x05fdf7fa, 0x4933c857, + 0x4d3c0000, 0x60067800, 0x05c9f9c4, 0x5c027800, + 0x4c580000, 0x6008b000, 0x91241c01, 0x91cc140b, + 0x05f1f854, 0x5c00b000, 0x05000003, 0x64c66403, + 0x05fdf77c, 0x0009f810, 0x6008b000, 0x91241c03, + 0x91cc140d, 0x05f1f84b, 0x0502000c, 0x05d9f946, 0x0500000a, 0x59300407, 0x90000581, 0x05020007, 0x59300403, 0x90000582, 0x05020004, 0x5930000a, - 0x81340580, 0x00040fdc, 0x05d1fa4c, 0x05020009, - 0x05d1fa56, 0x05020005, 0x64075042, 0x6006d800, - 0x05d1f9c9, 0x0501f003, 0x60040000, 0x05d1fa1c, - 0x1c01f000, 0x05b1fd97, 0x050200f7, 0x0501f92c, - 0x05fe073a, 0x493a6403, 0x0501f986, 0x05020003, - 0x64ae6403, 0x05fdf754, 0x64b26403, 0x05fdf752, - 0x4933c857, 0x05d9ff39, 0x050200eb, 0x05b1fd89, - 0x050200e9, 0x05cdfba8, 0x05fe072c, 0x59cc0408, - 0x4802641b, 0x59cc0208, 0x4802621b, 0x59cc0807, - 0x59340002, 0x82000500, 0x00ffffff, 0x80040580, - 0x0500001d, 0x5932481d, 0x59240005, 0x80040580, - 0x05020029, 0x59cc1408, 0x05f9facb, 0x0500002b, - 0x831c0580, 0xffffffff, 0x05000005, 0x0505fb01, - 0x05000026, 0x0505fed1, 0x05000024, 0x491e602a, - 0x64da6403, 0x59340200, 0x8c00050e, 0x05000009, - 0x831c0580, 0xffffffff, 0x050000c3, 0x591c0203, - 0x90001584, 0x05020003, 0x64066006, 0x1c01f000, - 0x0501f0bd, 0x59cc1208, 0x82080580, 0x0000ffff, - 0x05000008, 0x05f9fab0, 0x05000010, 0x591c0202, - 0x59cc0c08, 0x80040580, 0x0502000c, 0x05fdf7e1, - 0x59cc1408, 0x60040000, 0x0501fd9c, 0x05000007, - 0x05fdf7dc, 0x4803c856, 0x6426641c, 0x4a02621c, - 0x00001500, 0x0501f005, 0x4803c856, 0x640e641c, - 0x4a02621c, 0x00001700, 0x64de6403, 0x0501f0a2, - 0x4933c857, 0x05d9fef1, 0x050200a3, 0x05b1fd41, - 0x050200a1, 0x05cdfb60, 0x05fe06e4, 0x05cdf9f1, - 0x05000045, 0x59cc0407, 0x4802641b, 0x59cc1207, - 0x480a621b, 0x82080580, 0x0000ffff, 0x05000004, - 0x05f9fa89, 0x05000036, 0x0501f008, 0x59cc1407, - 0x60040000, 0x0501fd79, 0x05000031, 0x831c0580, - 0xffffffff, 0x0500002e, 0x59cc0c07, 0x591c0202, - 0x80040580, 0x0502002a, 0x0505fe88, 0x05000028, - 0x591c0416, 0x8c000516, 0x0502002f, 0x4d300000, - 0x411e6000, 0x05f5f927, 0x5c026000, 0x641e3a03, - 0x59cc0c09, 0x82040d00, 0x0000ff00, 0x840409c0, - 0x90040581, 0x05000009, 0x90040585, 0x0500000b, - 0x90040587, 0x05020011, 0x42000000, 0x0010e43c, - 0x0509f8e8, 0x0501f008, 0x42000000, 0x0010e43b, - 0x0509f8e4, 0x0501f007, 0x42000000, 0x0010e43a, - 0x0509f8e0, 0x591c0009, 0x80000540, 0x05000003, - 0x59cc2808, 0x0505f2a5, 0x4803c856, 0x6426641c, - 0x4a02621c, 0x00002a00, 0x0501f005, 0x4803c856, - 0x640e641c, 0x4a02621c, 0x00000300, 0x64ee6403, - 0x0501f055, 0x4803c856, 0x642e641c, 0x6402621c, - 0x05fdf7fb, 0x4803c856, 0x641e641c, 0x6402621c, - 0x05fdf7f7, 0x59cc0001, 0x82000580, 0x00fffffe, - 0x0502004d, 0x4c080000, 0x05cdf9b0, 0x05000021, - 0x05cdf991, 0x0505fbf6, 0x0502001c, 0x5932481d, - 0x59240200, 0x82000540, 0x000000e0, 0x48024a00, - 0x59a80249, 0x90000543, 0x48035249, 0x59a80046, - 0x800000d0, 0x59a8083d, 0x82040d00, 0x000000ff, - 0x80041540, 0x480b503d, 0x600c0800, 0x05e1fe12, - 0x497b504b, 0x8d0c0520, 0x05000004, 0x4a032804, - 0x000007d0, 0x0501f001, 0x0005ffdc, 0x05b1fd8e, - 0x5c001000, 0x1c01f000, 0x0505fbf3, 0x05fdf7fd, - 0x5c001000, 0x0005f7dc, 0x0501f82c, 0x05000026, - 0x653a6403, 0x64066203, 0x05e1f12f, 0x05cdfaee, - 0x05fe0666, 0x653e6403, 0x497a601e, 0x59cc0a06, - 0x82040d00, 0x000000ff, 0x800409c0, 0x05fc067e, - 0x90040581, 0x05020005, 0x59cc0808, 0x59a80005, - 0x80040580, 0x05fc0678, 0x90040582, 0x05020006, - 0x91cc140b, 0x6008b000, 0x91341c06, 0x05f1f8f0, - 0x05fc0671, 0x6406601e, 0x05fdf66f, 0x05cdfad6, - 0x05fe064e, 0x65426403, 0x59cc0207, 0x4802601e, - 0x05fdf669, 0x64066203, 0x42000800, 0x80000040, - 0x0005f6ab, 0x4803c857, 0x42000000, 0x0010e448, - 0x0509f874, 0x0005f7dc, 0x4d2c0000, 0x4c500000, - 0x4c580000, 0x4c540000, 0x59a800b6, 0x82000c80, - 0x00000841, 0x05021021, 0x05a5f9ff, 0x0500001f, - 0x492e6009, 0x59a800b6, 0x48025805, 0x90000403, - 0x80000104, 0x91cca406, 0x90000c87, 0x05001010, - 0x641e5811, 0x601cb000, 0x912c0409, 0x4000a800, - 0x0509f927, 0x412c7000, 0x800409c0, 0x05020003, - 0x49787001, 0x0501f00b, 0x05a5f9eb, 0x0500000b, - 0x492c7001, 0x40040000, 0x05fdf7f0, 0x48025811, - 0x4000b000, 0x912c0409, 0x4000a800, 0x0509f918, - 0x90000541, 0x0501f005, 0x497b50b6, 0x59325809, - 0x05a5fa07, 0x80000580, 0x5c00a800, 0x5c00b000, - 0x5c00a000, 0x5c025800, 0x1c01f000, 0x4d340000, - 0x5932680a, 0x59343400, 0x4933c857, 0x4937c857, - 0x481bc857, 0x05cdfa90, 0x5c026800, 0x1c01f000, - 0x4933c857, 0x4c600000, 0x4d3c0000, 0x4d440000, - 0x4d340000, 0x0501f858, 0x05020046, 0x59cc0207, - 0x82000d00, 0x0000ff00, 0x900411c0, 0x59cc000a, - 0x82000500, 0x00ffffff, 0x80081540, 0x480a601e, - 0x8c040518, 0x05000011, 0x60203000, 0x0505fdbf, - 0x42000000, 0x0010e453, 0x0509f822, 0x59240400, - 0x8c00050a, 0x05020005, 0x60082800, 0x60903000, - 0x611a8000, 0x0501ffde, 0x6004c000, 0x417a7800, - 0x05b1fbe0, 0x0501f02d, 0x8c04051a, 0x05000029, - 0x59cc000a, 0x59cc3800, 0x821c3d00, 0x00ffffff, - 0x05d9f902, 0x05cc0aac, 0x05020022, 0x5930001d, - 0x4c000000, 0x05cdfaa0, 0x4926601d, 0x5930000a, - 0x4c000000, 0x59240c00, 0x8c04050a, 0x0502000b, - 0x59340c03, 0x59341802, 0x820c1d00, 0x00ffffff, - 0x58002403, 0x60102800, 0x60903000, 0x611a8000, - 0x41301000, 0x0501ffca, 0x4936600a, 0x60243000, - 0x0505fd98, 0x42000000, 0x0010e453, 0x0505fff5, - 0x417a7800, 0x4178c000, 0x05b1fbba, 0x5c000000, - 0x4802600a, 0x5c000000, 0x4802601d, 0x0501f003, - 0x90000541, 0x0501f002, 0x80000580, 0x5c026800, - 0x5c028800, 0x5c027800, 0x5c00c000, 0x1c01f000, - 0x4933c857, 0x59cc0206, 0x90000490, 0x05021004, - 0x6402621c, 0x90000541, 0x0501f002, 0x80000580, - 0x1c01f000, 0x4933c857, 0x6402621c, 0x59cc0407, - 0x82000500, 0x0000ff00, 0x82000580, 0x00000800, - 0x0502000d, 0x59cc0206, 0x59a808b6, 0x80040480, - 0x0500100a, 0x59cc0006, 0x82000500, 0x00ff0000, - 0x82000d80, 0x00140000, 0x05000003, 0x82000d80, - 0x00100000, 0x1c01f000, 0x42000000, 0x0010e448, - 0x0505ffc4, 0x90000541, 0x05fdf7fb, 0x59300403, - 0xb00034a0, 0x05a21dbd, 0x91383593, 0x05020006, - 0x4803c857, 0x4c000000, 0x0505fe36, 0x5c000000, - 0x0c01f029, 0x4933c857, 0x493bc857, 0x913835a7, - 0x0500000d, 0x91383594, 0x0500000b, 0xb13805a1, - 0x05000003, 0xb13805a0, 0x05a20dac, 0x05e5f88a, - 0x05ea0404, 0x59300203, 0x9000058e, 0x05f40618, - 0x05a1fda6, 0x493bc857, 0x4937c857, 0x0505fe1f, - 0x05cdf875, 0x601c0800, 0x05c9fcb3, 0x05e1fc2e, - 0x4d2c0000, 0x0505fe6d, 0x0502000d, 0x59325809, - 0x812e59c0, 0x05020003, 0x5c025800, 0x05e1f02e, - 0x05f5fc85, 0x05a00d95, 0x05f9fb11, 0x05a20d93, - 0x64c65a0a, 0x64125810, 0x0001fb82, 0x5c025800, - 0x05e9f384, 0x0010c0ad, 0x0010c0ee, 0x0010c0ad, - 0x0010c0ad, 0x0010c0ad, 0x0010c0ee, 0x0010c0ff, - 0x0010c1d1, 0x0010c152, 0x0010c1d1, 0x0010c16b, - 0x0010c1d1, 0x0010c170, 0x0010c1d1, 0x0010c173, - 0x0010c1d1, 0x0010c173, 0x0010c1d1, 0x0010c1d1, - 0x0010c0ad, 0x0010c0ad, 0x0010c0ad, 0x0010c0ad, - 0x0010c0ad, 0x0010c0ad, 0x0010c0ad, 0x0010c0ad, - 0x0010c0ad, 0x0010c0ad, 0x0010c0ad, 0x0010c0ee, - 0x0010c0ad, 0x0010c1d1, 0x0010c0ad, 0x0010c0ad, - 0x0010c1d1, 0x0010c0ad, 0x0010c1b7, 0x0010c1d1, - 0x0010c0ad, 0x0010c0ad, 0x0010c0ad, 0x0010c0ad, - 0x0010c1d1, 0x0010c1d1, 0x0010c0ad, 0x0010c1d1, - 0x0010c1d1, 0x0010c0ad, 0x0010c0fa, 0x0010c0ad, - 0x0010c0ad, 0x0010c0ad, 0x0010c0ad, 0x0010c175, - 0x0010c1d1, 0x0010c0ad, 0x0010c0ad, 0x0010c19d, - 0x0010c1d1, 0x0010c0ad, 0x0010c0ad, 0x0010c0ad, - 0x0010c0ad, 0x0010c0ad, 0x0010c0ad, 0x0010c0ad, - 0x0010c0ad, 0x0010c0ad, 0x0010c0e1, 0x0010c0ad, - 0x0010c0ad, 0x0010c0ad, 0x0010c0ad, 0x0010c0e1, - 0x0010c0ad, 0x0010c0ad, 0x0010c0ad, 0x0010c0e1, - 0x0010c0e1, 0x0010c0e1, 0x0010c0ad, 0x0010c0ad, - 0x0010c0ad, 0x0010c0ad, 0x0010c0ad, 0x0010c0e1, - 0x0010c0ad, 0x0010c0ad, 0x0010c0ad, 0x0010c0bc, - 0x0010c0d7, 0x0010c0ae, 0x0010c0ad, 0x0010c0ad, - 0x0010c1d1, 0x05a1fd2d, 0x4933c857, 0x05f5ffef, - 0x05000007, 0x4a02601c, 0x0010c0b7, 0x59a8005e, - 0x48026205, 0x643a6203, 0x1c01f000, 0x640a6203, - 0x59a8005c, 0x800000c4, 0x48026006, 0x1c01f000, - 0x4933c857, 0x05f5ffe1, 0x05000007, 0x4a02601c, - 0x0010c0c5, 0x59a8005e, 0x48026205, 0x643a6203, - 0x1c01f000, 0x916c0583, 0x0502000a, 0x5930041b, - 0x4803c857, 0x9000050f, 0x0500000a, 0x9000050c, - 0x05000004, 0x4803c857, 0x05f9ffd8, 0x0501f005, - 0x4803c857, 0x65726403, 0x64066203, 0x05ddf79e, - 0x4933c857, 0x0005ffdc, 0x1c01f000, 0x4933c857, - 0x05f5fbf1, 0x050000f8, 0x4d2c0000, 0x59325809, - 0x64025a0a, 0x0001fb82, 0x5c025800, 0x497a6009, - 0x0501f0f1, 0x05f5ffbd, 0x05000007, 0x59a8005e, - 0x48026205, 0x643a6203, 0x59a8005c, 0x48026006, - 0x1c01f000, 0x4d2c0000, 0x59325809, 0x05a5f8b0, - 0x5c025800, 0x0005f7dc, 0x59a8005c, 0x48026006, - 0x05f5ffae, 0x05000007, 0x4a02601c, 0x0010c0f8, - 0x59a8005e, 0x48026205, 0x643a6203, 0x1c01f000, - 0x640a6203, 0x1c01f000, 0x4d3c0000, 0x417a7800, - 0x05c9fbe7, 0x5c027800, 0x0501f0d3, 0x05cdf93b, - 0x050000d1, 0x59a80249, 0x8c000508, 0x0500000e, - 0x5932680a, 0x4c580000, 0x6008b000, 0x91a81c02, - 0x91341406, 0x05edff3e, 0x80000540, 0x5c00b000, - 0x050200c5, 0x59340200, 0x8400051a, 0x48026a00, - 0x0501f037, 0x599c0017, 0x8c00050a, 0x05020007, - 0x4d3c0000, 0x417a7800, 0x05c9fbcd, 0x5c027800, - 0x601c0800, 0x05c9fbd4, 0x59340212, 0x82000500, - 0x0000ff00, 0x0502001e, 0x83440d80, 0x000007fe, - 0x050200b1, 0x05b1fcf6, 0x05c5f9f6, 0x05000009, - 0x59240200, 0x8c00051e, 0x05000010, 0x59300809, - 0x4d300000, 0x05b1fe68, 0x5c026000, 0x0501f0a6, - 0x59a80249, 0x8c000514, 0x050000a3, 0x83240580, - 0x0010e512, 0x05020005, 0x4d300000, 0x05b1fb6d, - 0x5c026000, 0x0501f09c, 0x59a82249, 0x8c100514, - 0x05000099, 0x05b1fcd5, 0x0501f097, 0x599c0017, - 0x8c00050a, 0x05020094, 0x599c0019, 0x8c00050e, - 0x05020091, 0x416c0000, 0x90000582, 0x05020004, - 0x59a80044, 0x80000000, 0x48035044, 0x600c0800, - 0x05c9fba5, 0x64066407, 0x64066203, 0x640a6403, - 0x05ddff25, 0x4ce80000, 0x6005d000, 0x05d9fd7e, - 0x5c01d000, 0x1c01f000, 0x59340200, 0x8400051a, - 0x48026a00, 0x05cdf8dc, 0x0500007b, 0x60100800, - 0x05c9fb95, 0x0505fc46, 0x05020077, 0x05f5ff43, - 0x05000009, 0x59a8005e, 0x48026205, 0x643a6203, - 0x59a8005c, 0x48026006, 0x4a02601c, 0x0010c165, - 0x1c01f000, 0x60140800, 0x05c9fb87, 0x64066407, - 0x64066203, 0x640e6403, 0x05ddf707, 0x05cdf8cf, - 0x05020065, 0x60180800, 0x0501f86c, 0x0501f062, - 0x60100800, 0x05c9fb7c, 0x05fdf78f, 0x05c9ff3a, - 0x0501f05d, 0x4d300000, 0x05f5ff28, 0x0500000c, - 0x5930082a, 0x40066000, 0x59300416, 0x8c00051e, - 0x05020003, 0x5c026000, 0x0501f055, 0x5c026000, - 0x4a02601c, 0x0010c185, 0x0501f051, 0x5c026000, - 0x0005f7dc, 0x4c340000, 0x41306800, 0x05e9fa7c, - 0x05000012, 0x64066203, 0x647a6403, 0x58340c1b, - 0x4806641b, 0x58340a1b, 0x4806621b, 0x5834002a, - 0x4802602a, 0x5834080a, 0x4806600a, 0x5834081d, - 0x4806601d, 0x05f5fefa, 0x64126407, 0x42000800, - 0x80000040, 0x0005feab, 0x40366000, 0x5c006800, - 0x0005f7dc, 0x5930082a, 0x4807c857, 0x800409c0, - 0x05000031, 0x5804001e, 0x81300580, 0x0502002e, - 0x4978081e, 0x58041416, 0x8c080516, 0x0500002a, - 0x8c080514, 0x05000028, 0x84081516, 0x48080c16, - 0x58065809, 0x812e59c0, 0x05000023, 0x492fc857, - 0x4d300000, 0x40066000, 0x641e6203, 0x417a7800, - 0x0005fe2d, 0x5c026000, 0x0501f01b, 0x05f5fee7, - 0x000407dc, 0x5930002a, 0x80000540, 0x05000018, - 0x4c340000, 0x40006800, 0x58340407, 0x5c006800, - 0x90000583, 0x000607dc, 0x4a02601c, 0x0010c1c5, - 0x0501f00f, 0x4d300000, 0x4d1c0000, 0x5932382a, - 0x05e9fa3b, 0x05000004, 0x4a026416, 0x00000100, - 0x05f5fd84, 0x5c023800, 0x5c026000, 0x0005f7dc, - 0x05c9fb1d, 0x05f5fecd, 0x000407dc, 0x497a601c, - 0x59a8005e, 0x48026205, 0x643a6203, 0x59a8005c, - 0x48026006, 0x1c01f000, 0x4933c857, 0x4807c857, - 0x05c9fb11, 0x4d3c0000, 0x417a7800, 0x05c9fb04, - 0x5c027800, 0x5934000a, 0x84000520, 0x4802680a, - 0x05c9f6c9, 0x59340400, 0x4803c857, 0x80000110, - 0x9000348c, 0x05a21bf1, 0x91383595, 0x05020002, - 0x0c01f004, 0x91383596, 0x05a20bec, 0x0c01f00d, - 0x00109b47, 0x00109b47, 0x00109b47, 0x00109b47, - 0x0010ce6d, 0x00109b47, 0x0010c22a, 0x0010c208, - 0x00109b47, 0x00109b47, 0x00109b47, 0x00109b47, - 0x00109b47, 0x00109b47, 0x00109b47, 0x00109b47, - 0x0010ce6d, 0x00109b47, 0x0010c22a, 0x0010c23b, - 0x00109b47, 0x00109b47, 0x00109b47, 0x00109b47, - 0x4933c857, 0x5932481d, 0x59240400, 0x8c000508, - 0x05000014, 0x813669c0, 0x05000012, 0x59340212, - 0x82000500, 0x0000ff00, 0x0500000e, 0x599c0019, - 0x8c00050e, 0x0502000b, 0x4d3c0000, 0x417a7800, - 0x05c9facb, 0x5c027800, 0x600c0800, 0x05c9fad2, - 0x64066407, 0x64066203, 0x640a6403, 0x05ddf652, - 0x59cc0001, 0x59340802, 0x80040580, 0x82000500, - 0x00ffffff, 0x000607dc, 0x59345002, 0x05c9f861, - 0x482a6802, 0x0005f7dc, 0x4933c857, 0x59303403, - 0x9018359e, 0x0502000d, 0x91383595, 0x000607dc, - 0x4c340000, 0x5930682a, 0x803469c0, 0x05000005, - 0x58343416, 0x82183500, 0xffff1fff, 0x48186c16, - 0x5c006800, 0x0005f7dc, 0x1c01f000, 0x4933c857, - 0x05edfbfe, 0x000607dc, 0x64066203, 0x64066403, - 0x05ddf631, 0x493bc857, 0xb1380591, 0x05020007, - 0x05e1fe75, 0x05ea01ef, 0x59300203, 0x90000582, - 0x05000062, 0x05a1fb91, 0x913805a7, 0x05000015, - 0xb1380588, 0x0500000d, 0x91380594, 0x05000011, - 0xb13805a1, 0x05000003, 0xb13805a0, 0x05a20b87, - 0x05e1fe65, 0x05ea01df, 0x59300203, 0x9000058e, - 0x05000675, 0x05a1fb81, 0x05e1fe5f, 0x05ea01d9, - 0x59300203, 0x90000584, 0x0008014a, 0x05a1fb7b, - 0x4933c857, 0x59300403, 0xb0000c84, 0x05a21b77, - 0xb0000480, 0x05a01b75, 0x40027000, 0x4803c857, - 0x0c01f001, 0x0010c26d, 0x0010c26e, 0x0010c26e, - 0x0010c284, 0x05a1fb6d, 0x05e1f9fb, 0x59325809, - 0x812e59c0, 0x05000012, 0x832c0500, 0x00ff0000, - 0x0500000f, 0x640a6203, 0x5932680a, 0x59340200, - 0x8c00050e, 0x0502000a, 0x60128000, 0x0501fd0b, - 0x497a6009, 0x59300006, 0x80000540, 0x05020003, - 0x59a8005d, 0x48026006, 0x641e6203, 0x1c01f000, - 0x05e1f9e5, 0x05f5fa44, 0x05e8014a, 0x59325809, - 0x05a1ff0a, 0x05e9f147, 0x05a1fb50, 0x05f5fe13, - 0x05000005, 0x59a8005e, 0x48026205, 0x643a6203, - 0x0501f009, 0x59325809, 0x592c040e, 0x8c000502, - 0x05000004, 0x641e6203, 0x610e7000, 0x0009f000, - 0x64126203, 0x1c01f000, 0x0501fff6, 0x00080148, - 0x1c01f000, 0x05f5fe01, 0x05000007, 0x4a02601c, - 0x0010c2a5, 0x59a8005e, 0x48026205, 0x643a6203, - 0x1c01f000, 0x64066203, 0x65066403, 0x42027800, - 0x80002042, 0x0005f6ab, 0xb1380498, 0x05001008, - 0xb13805a1, 0x05000004, 0xb13805a0, 0x05000002, - 0x05a1fb2a, 0x4933c857, 0x1c01f000, 0xb1380591, - 0x05000004, 0xb1380581, 0x05a20b24, 0x1c01f000, - 0x0005fe4e, 0x0505f80e, 0x0005f7dc, 0xb1380498, - 0x05f210a1, 0xb1380492, 0x05a21b1c, 0xb1380489, - 0x05a01b1a, 0x0c01f001, 0x0010c2cc, 0x0010c2fa, - 0x0010c2cb, 0x0010c2cb, 0x0010c2cb, 0x0010c2cb, - 0x0010c2fa, 0x0010c2cb, 0x0010c318, 0x05a1fb0f, - 0x05f5fdd2, 0x0500000b, 0x59300416, 0x8c000504, - 0x05020008, 0x4a02601c, 0x0010c2d8, 0x59a8005e, - 0x48026205, 0x64426203, 0x65266403, 0x1c01f000, - 0x59325809, 0x592c040e, 0x8c00051e, 0x05000010, - 0x82000d00, 0x000000c0, 0x82040d80, 0x00000080, - 0x05000011, 0x59300804, 0x8c040518, 0x0502000e, - 0x59300416, 0x8c000516, 0x05000003, 0x641e6203, - 0x0501f011, 0x61067000, 0x0009f178, 0x641e6203, - 0x497a6006, 0x59300416, 0x8c000516, 0x0502000a, - 0x0005f64e, 0x59325809, 0x592c0c0e, 0x8c04051a, - 0x05020003, 0x0005fe4e, 0x0005f7dc, 0x0501ff99, - 0x05fc07fd, 0x1c01f000, 0x05e1f952, 0x59325809, - 0x5932680a, 0x59340200, 0x8c00050e, 0x0500000d, - 0x592c040e, 0x82000500, 0x000000c0, 0x82000580, - 0x00000080, 0x05000005, 0x592c0013, 0x59301817, - 0x800c1c80, 0x480e6017, 0x640a6203, 0x0501f00c, - 0x60128000, 0x0501fc79, 0x05f9fba3, 0x59300006, - 0x80000540, 0x05020004, 0x59a8005d, 0x800000c2, - 0x48026006, 0x497a6009, 0x641e6203, 0x1c01f000, - 0x4933c857, 0x05e1fda0, 0x05a20ac0, 0x59300203, - 0x90000582, 0x05fc078d, 0x05a1fabc, 0x641e6203, - 0x497a6006, 0x0005f64e, 0x641e6203, 0x497a6006, - 0x0005f645, 0x59300416, 0x8c00051c, 0x000a0167, - 0x59325809, 0x592c2013, 0x40080000, 0x80102480, - 0x59300017, 0x80102400, 0x48126017, 0x0009f167, - 0x8c04050e, 0x05020007, 0x641a6203, 0x0501f822, - 0x5930002b, 0x80000540, 0x05a60c01, 0x0005f645, - 0x640a6203, 0x1c01f000, 0x60040800, 0x05a5fbfc, - 0x90040581, 0x0008016c, 0x05fdf7e4, 0x83300580, - 0x00111ad0, 0x05000004, 0x59300416, 0x8c00051c, - 0x05000006, 0x59300008, 0x8c000522, 0x05a609ce, - 0x00080157, 0x1c01f000, 0x59300013, 0x80000540, - 0x00080157, 0x59325809, 0x592c040b, 0x8c000510, - 0x05000004, 0x497a6013, 0x05a5f9c3, 0x00080157, - 0x1c01f000, 0x492fc857, 0x480bc857, 0x8c08053e, - 0x05000005, 0x80081080, 0x80081000, 0x60240800, - 0x0501f002, 0x60540800, 0x480a580f, 0x1c01f000, - 0x1c01f000, 0x91380593, 0x05000003, 0x91380594, - 0x05a20a76, 0x59300416, 0x8c000516, 0x05a00a73, - 0x1c01f000, 0x05a1fa71, 0x59300009, 0x80000540, - 0x05a20a6e, 0x1c01f000, 0x59300416, 0x8c000516, - 0x05a00a6a, 0x1c01f000, 0x64126203, 0x493a6403, - 0x42000800, 0x80002001, 0x0005f6ab, 0x640e6203, - 0x493a6403, 0x05f5fd25, 0x05000007, 0x59300416, - 0x8c00050a, 0x05020004, 0x4a02601c, 0x0010c381, - 0x1c01f000, 0x0001f996, 0x59325809, 0x592c040e, - 0x8c00051e, 0x05000011, 0x82000500, 0x000000c0, - 0x82000580, 0x00000080, 0x0500000f, 0x59300416, - 0x8c000512, 0x05020009, 0x8c000510, 0x05020007, - 0x592c0410, 0x80000540, 0x05020004, 0x82080d40, - 0x80003065, 0x0005f69d, 0x82080d40, 0x80002065, - 0x0005f69d, 0x82080d40, 0x80002042, 0x0005f69d, - 0x4933c857, 0x493bc857, 0xb1380484, 0x05a21a3b, - 0xb1380481, 0x05a01a39, 0x0c01f001, 0x0010c3a6, - 0x0010c3b4, 0x0010c3c6, 0x59325809, 0x592c040e, - 0x8c00051e, 0x05000019, 0x82001d00, 0x000000c0, - 0x820c1d80, 0x000000c0, 0x05000014, 0x64066203, - 0x493a6403, 0x42000800, 0x80002042, 0x0005f6ab, - 0x59325809, 0x592c040e, 0x8c00051e, 0x0500000b, - 0x82001d00, 0x000000c0, 0x820c1d80, 0x000000c0, - 0x05000006, 0x64066203, 0x493a6403, 0x42000800, - 0x80002001, 0x0005f6ab, 0x497a6009, 0x497a6006, - 0x60128000, 0x0501f3c1, 0x59325809, 0x592c040e, - 0x8c00051e, 0x05fc07f9, 0x82001d00, 0x000000c0, - 0x820c1d80, 0x000000c0, 0x05fc07f4, 0x640e6203, - 0x493a6403, 0x05f5fccd, 0x05000007, 0x59300416, - 0x8c00050a, 0x05020004, 0x4a02601c, 0x0010c3d9, - 0x1c01f000, 0x0001f996, 0x82080d40, 0x80002065, - 0x0005f69d, 0x4933c857, 0x493bc857, 0x83380580, - 0x00000085, 0x05000005, 0x83380580, 0x00000088, - 0x05000007, 0x05a1f9f5, 0x64266203, 0x493a6403, - 0x42000800, 0x80000040, 0x0005f6ab, 0x83300580, - 0x00111a70, 0x05a209ed, 0x4d1c0000, 0x813669c0, - 0x05000003, 0x0501fe9a, 0x0502005a, 0x59cc1404, - 0x41780000, 0x0501f859, 0x05000028, 0x831c0580, - 0xffffffff, 0x05000025, 0x59cc0204, 0x82001580, - 0x0000ffff, 0x05000004, 0x591c1402, 0x80080580, - 0x0502001e, 0x05f5fc9d, 0x05000010, 0x59cc0005, - 0x8c000500, 0x0500000d, 0x4d300000, 0x411e6000, - 0x05f1fc04, 0x5c026000, 0x0500002a, 0x591c0416, - 0x8400055a, 0x48023c16, 0x59300416, 0x8400055a, - 0x48026416, 0x0501f029, 0x591c0407, 0x9000051f, - 0x90002586, 0x05000005, 0x90002584, 0x0500002a, - 0x90002591, 0x05020005, 0x497a3a05, 0x61502000, - 0x05e9f911, 0x0501f02f, 0x59240400, 0x8c00050a, - 0x05020004, 0x42023800, 0xffffffff, 0x05fdf7f8, - 0x813669c0, 0x0502000f, 0x59cc0001, 0x59cc3800, - 0x821c3d00, 0x00ffffff, 0x4c1c0000, 0x05d5fca3, - 0x5c003800, 0x0502001f, 0x05b1f9fa, 0x0502001d, - 0x05c9f8e4, 0x0502001b, 0x4926601d, 0x4936600a, - 0x4a026403, 0x00000087, 0x59cc1204, 0x82081580, - 0x0000ffff, 0x05020003, 0x4a026403, 0x00000086, - 0x4d2c0000, 0x0505f986, 0x05cdf8d1, 0x5c025800, - 0x0501f00c, 0x591c0403, 0x900005b8, 0x05fc07d8, - 0x591c0203, 0x90000587, 0x05fe07d8, 0x4d300000, - 0x411e6000, 0x05e5ff87, 0x5c026000, 0x05fdf7d3, - 0x5c023800, 0x1c01f000, 0x4933c857, 0x480bc857, - 0x4c5c0000, 0x4000b800, 0x42002800, 0x00111b00, - 0x41300000, 0x80140580, 0x0500001c, 0x58140203, - 0x90000580, 0x05000019, 0x58140202, 0x80080580, - 0x05020016, 0x58140203, 0x9000058f, 0x05000013, - 0x58141c07, 0x900c0585, 0x05000010, 0x8c5c0500, - 0x05000003, 0x900c0587, 0x0500000c, 0x5930200a, - 0x5814000a, 0x800001c0, 0x0500000d, 0x82001d80, - 0x00110210, 0x0500000a, 0x801021c0, 0x05000003, - 0x80100580, 0x05000011, 0x90142c30, 0x41540000, - 0x80140480, 0x05021020, 0x05fdf7de, 0x5814002a, - 0x801021c0, 0x05000005, 0x58102002, 0x82102500, - 0x00ffffff, 0x05fdf7f3, 0x8c5c0500, 0x05fe07f3, - 0x5930202a, 0x05fdf7ef, 0x40163800, 0x8c5c0500, - 0x05000007, 0x4c080000, 0x4c140000, 0x0505f8df, - 0x5c002800, 0x5c001000, 0x05fc07e8, 0x831c0580, - 0xffffffff, 0x05000006, 0x591c000a, 0x800001c0, - 0x05020003, 0x5930000a, 0x4802380a, 0x81300540, - 0x0501f009, 0x8c5c0500, 0x05000007, 0x40080800, - 0x42023800, 0xffffffff, 0x05cdf87e, 0x05fc07f0, - 0x80000580, 0x5c00b800, 0x1c01f000, 0x4933c857, - 0x83300580, 0x00111a40, 0x05020037, 0x64026203, - 0x91380593, 0x0502002c, 0x59300403, 0x82000580, - 0x00000092, 0x05a20931, 0x59a8009d, 0x59325809, - 0x812e59c0, 0x05000005, 0x812c0580, 0x05a2092b, - 0x592c0000, 0x497a5800, 0x800001c0, 0x05000004, - 0x4803509d, 0x05e5fe13, 0x0501f003, 0x497b509d, - 0x497b509e, 0x812e59c0, 0x0500001e, 0x592c0208, - 0xb0000595, 0x05a004d5, 0x91380593, 0x0502000d, - 0x592c0817, 0x82040580, 0xffffffff, 0x05000007, - 0xa0040494, 0x05021005, 0x05000004, 0x64180c07, - 0x64000c07, 0x49780806, 0x64025a0a, 0x0001f382, - 0x64c65a0a, 0x64125815, 0x4a025816, 0x000000ff, - 0x0001f382, 0x913805a7, 0x05000003, 0x91380594, - 0x05a20906, 0x493bc857, 0x05ddff93, 0x05fdf7cf, - 0x1c01f000, 0x4933c857, 0x91380593, 0x0502000c, - 0x59300403, 0x4803c857, 0x82000c80, 0x00000085, - 0x05a018fa, 0x82000c80, 0x00000093, 0x05a218f7, - 0x82000480, 0x00000085, 0x0c01f01c, 0x913805a7, - 0x0500000f, 0x91380594, 0x0500000d, 0x493bc857, - 0xb13805a1, 0x05000003, 0xb13805a0, 0x05020007, - 0x05e1fbc9, 0x05e60743, 0x59300203, 0x9000058e, - 0x050003ca, 0x05a1f8e5, 0x05e5f73e, 0x493bc857, - 0x05ddff71, 0x59325809, 0x812e59c0, 0x05e406d5, - 0x64c65a0a, 0x64125815, 0x4a025816, 0x000000ff, - 0x0001fb82, 0x05e5f6cf, 0x0010c510, 0x0010c514, - 0x0010c514, 0x0010c510, 0x0010c510, 0x0010c510, - 0x0010c510, 0x0010c510, 0x0010c510, 0x0010c510, - 0x0010c510, 0x0010c510, 0x0010c510, 0x0010c511, - 0x05a1f8ca, 0x59325809, 0x64025a0a, 0x0001fb82, - 0x0005f7dc, 0x4933c857, 0x42000000, 0x0010e464, - 0x0505fac4, 0x0501fdae, 0x497a6205, 0x602e8000, - 0x0501f805, 0x641a6407, 0x641e6203, 0x497a6006, - 0x1c01f000, 0x4933c857, 0x4943c857, 0x59300407, - 0x90000587, 0x05020002, 0x1c01f000, 0x05ddffec, - 0x4df00000, 0x05f1ffa0, 0x0500000c, 0x9140058c, + 0x81340580, 0x00080810, 0x05cdfe4a, 0x0502000f, + 0x59a80807, 0x8c04050e, 0x05000004, 0x41202000, + 0x60401101, 0x05c1fc24, 0x05cdfe4e, 0x05020005, + 0x64075045, 0x6006d800, 0x05cdfdbb, 0x0501f003, + 0x60040000, 0x05cdfe0e, 0x1c01f000, 0x05adff3d, + 0x050200f7, 0x0501f92c, 0x05fe0737, 0x493a6403, + 0x0501f986, 0x05020003, 0x64ae6403, 0x05fdf751, + 0x64b26403, 0x05fdf74f, 0x4933c857, 0x05d9fc61, + 0x050200eb, 0x05adff2f, 0x050200e9, 0x05c9ff7f, + 0x05fe0729, 0x59cc0408, 0x4802641b, 0x59cc0208, + 0x4802621b, 0x59cc0807, 0x59340002, 0x82000500, + 0x00ffffff, 0x80040580, 0x0500001d, 0x5932481d, + 0x59240005, 0x80040580, 0x05020029, 0x59cc1408, + 0x05f9f975, 0x0500002b, 0x831c0580, 0xffffffff, + 0x05000005, 0x0505fb59, 0x05000026, 0x0505ff3c, + 0x05000024, 0x491e602a, 0x64da6403, 0x59340200, + 0x8c00050e, 0x05000009, 0x831c0580, 0xffffffff, + 0x050000c3, 0x591c0203, 0x90001584, 0x05020003, + 0x64066006, 0x1c01f000, 0x0501f0bd, 0x59cc1208, + 0x82080580, 0x0000ffff, 0x05000008, 0x05f9f95a, + 0x05000010, 0x591c0202, 0x59cc0c08, 0x80040580, + 0x0502000c, 0x05fdf7e1, 0x59cc1408, 0x60040000, + 0x0501fda7, 0x05000007, 0x05fdf7dc, 0x4803c856, + 0x6426641c, 0x4a02621c, 0x00001500, 0x0501f005, + 0x4803c856, 0x640e641c, 0x4a02621c, 0x00001700, + 0x64de6403, 0x0501f0a2, 0x4933c857, 0x05d9fc19, + 0x050200a3, 0x05adfee7, 0x050200a1, 0x05c9ff37, + 0x05fe06e1, 0x05c9fd71, 0x05000045, 0x59cc0407, + 0x4802641b, 0x59cc1207, 0x480a621b, 0x82080580, + 0x0000ffff, 0x05000004, 0x05f9f933, 0x05000036, + 0x0501f008, 0x59cc1407, 0x60040000, 0x0501fd84, + 0x05000031, 0x831c0580, 0xffffffff, 0x0500002e, + 0x59cc0c07, 0x591c0202, 0x80040580, 0x0502002a, + 0x0505fef3, 0x05000028, 0x591c0416, 0x8c000516, + 0x0502002f, 0x4d300000, 0x411e6000, 0x05f1ffa7, + 0x5c026000, 0x641e3a03, 0x59cc0c09, 0x82040d00, + 0x0000ff00, 0x840409c0, 0x90040581, 0x05000009, + 0x90040585, 0x0500000b, 0x90040587, 0x05020011, + 0x42000000, 0x001123dd, 0x0509f971, 0x0501f008, + 0x42000000, 0x001123dc, 0x0509f96d, 0x0501f007, + 0x42000000, 0x001123db, 0x0509f969, 0x591c0009, + 0x80000540, 0x05000003, 0x59cc2808, 0x0505f2fd, + 0x4803c856, 0x6426641c, 0x4a02621c, 0x00002a00, + 0x0501f005, 0x4803c856, 0x640e641c, 0x4a02621c, + 0x00000300, 0x64ee6403, 0x0501f055, 0x4803c856, + 0x642e641c, 0x6402621c, 0x05fdf7fb, 0x4803c856, + 0x641e641c, 0x6402621c, 0x05fdf7f7, 0x59cc0001, + 0x82000580, 0x00fffffe, 0x0502004d, 0x4c080000, + 0x05c9fd30, 0x05000021, 0x05c9fd11, 0x0505fc4e, + 0x0502001c, 0x5932481d, 0x59240200, 0x82000540, + 0x000000e2, 0x48024a00, 0x59a8024c, 0x90000543, + 0x4803524c, 0x59a80049, 0x800000d0, 0x59a80840, + 0x82040d00, 0x000000ff, 0x80041540, 0x480b5040, + 0x600c0800, 0x05e1fbde, 0x497b504e, 0x8d0c0520, + 0x05000004, 0x4a032804, 0x000007d0, 0x0501f001, + 0x0009f810, 0x05adff34, 0x5c001000, 0x1c01f000, + 0x0505fc4b, 0x05fdf7fd, 0x5c001000, 0x0009f010, + 0x0501f82c, 0x05000026, 0x653a6403, 0x64066203, + 0x05ddf6f6, 0x05c9fec5, 0x05fe0663, 0x653e6403, + 0x497a601e, 0x59cc0a06, 0x82040d00, 0x000000ff, + 0x800409c0, 0x05fc067b, 0x90040581, 0x05020005, + 0x59cc0808, 0x59a80005, 0x80040580, 0x05fc0675, + 0x90040582, 0x05020006, 0x91cc140b, 0x6008b000, + 0x91341c06, 0x05edff43, 0x05fc066e, 0x6406601e, + 0x05fdf66c, 0x05c9fead, 0x05fe064b, 0x65426403, + 0x59cc0207, 0x4802601e, 0x05fdf666, 0x64066203, + 0x42000800, 0x80000040, 0x0005f6e2, 0x4803c857, + 0x42000000, 0x001123ec, 0x0509f8fd, 0x0009f010, + 0x4d2c0000, 0x4c500000, 0x4c580000, 0x4c540000, + 0x59a800bb, 0x82000c80, 0x00000841, 0x05021021, + 0x05a1fb44, 0x0500001f, 0x492e6009, 0x59a800bb, + 0x48025805, 0x90000403, 0x80000104, 0x91cca406, + 0x90000c87, 0x05001010, 0x641e5811, 0x601cb000, + 0x912c0409, 0x4000a800, 0x0509f9b0, 0x412c7000, + 0x800409c0, 0x05020003, 0x49787001, 0x0501f00b, + 0x05a1fb30, 0x0500000b, 0x492c7001, 0x40040000, + 0x05fdf7f0, 0x48025811, 0x4000b000, 0x912c0409, + 0x4000a800, 0x0509f9a1, 0x90000541, 0x0501f005, + 0x497b50bb, 0x59325809, 0x05a1fb4c, 0x80000580, + 0x5c00a800, 0x5c00b000, 0x5c00a000, 0x5c025800, + 0x1c01f000, 0x4d340000, 0x5932680a, 0x59343400, + 0x4933c857, 0x4937c857, 0x481bc857, 0x05c9fe67, + 0x5c026800, 0x1c01f000, 0x4933c857, 0x4c600000, + 0x4d3c0000, 0x4d440000, 0x4d340000, 0x0501f858, + 0x05020046, 0x59cc0207, 0x82000d00, 0x0000ff00, + 0x900411c0, 0x59cc000a, 0x82000500, 0x00ffffff, + 0x80081540, 0x480a601e, 0x8c040518, 0x05000011, + 0x60203000, 0x0505fe2a, 0x42000000, 0x001123f7, + 0x0509f8ab, 0x59240400, 0x8c00050a, 0x05020005, + 0x60082800, 0x60903000, 0x611a8000, 0x0505f833, + 0x6004c000, 0x417a7800, 0x05adfd85, 0x0501f02d, + 0x8c04051a, 0x05000029, 0x59cc000a, 0x59cc3800, + 0x821c3d00, 0x00ffffff, 0x05d5fdbc, 0x05c80e83, + 0x05020022, 0x5930001d, 0x4c000000, 0x05c9fe77, + 0x4926601d, 0x5930000a, 0x4c000000, 0x59240c00, + 0x8c04050a, 0x0502000b, 0x59340c03, 0x59341802, + 0x820c1d00, 0x00ffffff, 0x58002403, 0x60102800, + 0x60903000, 0x611a8000, 0x41301000, 0x0505f81f, + 0x4936600a, 0x60243000, 0x0505fe03, 0x42000000, + 0x001123f7, 0x0509f87e, 0x417a7800, 0x4178c000, + 0x05adfd5f, 0x5c000000, 0x4802600a, 0x5c000000, + 0x4802601d, 0x0501f003, 0x90000541, 0x0501f002, + 0x80000580, 0x5c026800, 0x5c028800, 0x5c027800, + 0x5c00c000, 0x1c01f000, 0x4933c857, 0x59cc0206, + 0x90000490, 0x05021004, 0x6402621c, 0x90000541, + 0x0501f002, 0x80000580, 0x1c01f000, 0x4933c857, + 0x6402621c, 0x59cc0407, 0x82000500, 0x0000ff00, + 0x82000580, 0x00000800, 0x0502000d, 0x59cc0206, + 0x59a808bb, 0x80040480, 0x0500100a, 0x59cc0006, + 0x82000500, 0x00ff0000, 0x82000d80, 0x00140000, + 0x05000003, 0x82000d80, 0x00100000, 0x1c01f000, + 0x42000000, 0x001123ec, 0x0509f84d, 0x90000541, + 0x05fdf7fb, 0x59300403, 0xb00034a0, 0x059e1f06, + 0x91383593, 0x05020006, 0x4803c857, 0x4c000000, + 0x0505feab, 0x5c000000, 0x0c01f029, 0x4933c857, + 0x493bc857, 0x913835a7, 0x0500000d, 0x91383594, + 0x0500000b, 0xb13805a1, 0x05000003, 0xb13805a0, + 0x059e0ef5, 0x05e1fe56, 0x05ea0244, 0x59300203, + 0x9000058e, 0x05f404bf, 0x059dfeef, 0x493bc857, + 0x4937c857, 0x0505fe94, 0x05c9fbf5, 0x601c0800, + 0x05c5ffd4, 0x05e1f9fa, 0x4d2c0000, 0x0505fee2, + 0x0502000d, 0x59325809, 0x812e59c0, 0x05020003, + 0x5c025800, 0x05ddf5f5, 0x05f5fb1c, 0x059c0ede, + 0x05f9f9c5, 0x059e0edc, 0x64c65a0a, 0x64125810, + 0x0001fba8, 0x5c025800, 0x05e9f1a7, 0x0010c79f, + 0x0010c7e0, 0x0010c79f, 0x0010c79f, 0x0010c79f, + 0x0010c7e0, 0x0010c7f1, 0x0010c8d4, 0x0010c855, + 0x0010c8d4, 0x0010c86e, 0x0010c8d4, 0x0010c873, + 0x0010c8d4, 0x0010c876, 0x0010c8d4, 0x0010c876, + 0x0010c8d4, 0x0010c8d4, 0x0010c79f, 0x0010c79f, + 0x0010c79f, 0x0010c79f, 0x0010c79f, 0x0010c79f, + 0x0010c79f, 0x0010c79f, 0x0010c79f, 0x0010c79f, + 0x0010c79f, 0x0010c7e0, 0x0010c79f, 0x0010c8d4, + 0x0010c79f, 0x0010c79f, 0x0010c8d4, 0x0010c79f, + 0x0010c8ba, 0x0010c8d4, 0x0010c79f, 0x0010c79f, + 0x0010c79f, 0x0010c79f, 0x0010c8d4, 0x0010c8d4, + 0x0010c79f, 0x0010c8d4, 0x0010c8d4, 0x0010c79f, + 0x0010c7ec, 0x0010c79f, 0x0010c79f, 0x0010c79f, + 0x0010c79f, 0x0010c878, 0x0010c8d4, 0x0010c79f, + 0x0010c79f, 0x0010c8a0, 0x0010c8d4, 0x0010c79f, + 0x0010c79f, 0x0010c79f, 0x0010c79f, 0x0010c79f, + 0x0010c79f, 0x0010c79f, 0x0010c79f, 0x0010c79f, + 0x0010c7d3, 0x0010c79f, 0x0010c79f, 0x0010c79f, + 0x0010c79f, 0x0010c7d3, 0x0010c79f, 0x0010c79f, + 0x0010c79f, 0x0010c7d3, 0x0010c7d3, 0x0010c7d3, + 0x0010c79f, 0x0010c79f, 0x0010c79f, 0x0010c79f, + 0x0010c79f, 0x0010c7d3, 0x0010c79f, 0x0010c79f, + 0x0010c79f, 0x0010c7ae, 0x0010c7c9, 0x0010c7a0, + 0x0010c79f, 0x0010c79f, 0x0010c8d4, 0x059dfe76, + 0x4933c857, 0x05f5fe95, 0x05000007, 0x4a02601c, + 0x0010c7a9, 0x59a80061, 0x48026205, 0x643a6203, + 0x1c01f000, 0x640a6203, 0x59a8005f, 0x800000c4, + 0x48026006, 0x1c01f000, 0x4933c857, 0x05f5fe87, + 0x05000007, 0x4a02601c, 0x0010c7b7, 0x59a80061, + 0x48026205, 0x643a6203, 0x1c01f000, 0x916c0583, + 0x0502000a, 0x5930041b, 0x4803c857, 0x9000050f, + 0x0500000a, 0x9000050c, 0x05000004, 0x4803c857, + 0x05f9fe97, 0x0501f005, 0x4803c857, 0x65726403, + 0x64066203, 0x05ddf565, 0x4933c857, 0x0009f810, + 0x1c01f000, 0x4933c857, 0x05f5fa88, 0x05000109, + 0x4d2c0000, 0x59325809, 0x64025a0a, 0x0001fba8, + 0x5c025800, 0x497a6009, 0x0501f102, 0x05f5fe63, + 0x05000007, 0x59a80061, 0x48026205, 0x643a6203, + 0x59a8005f, 0x48026006, 0x1c01f000, 0x4d2c0000, + 0x59325809, 0x05a1f9f5, 0x5c025800, 0x0009f010, + 0x59a8005f, 0x48026006, 0x05f5fe54, 0x05000007, + 0x4a02601c, 0x0010c7ea, 0x59a80061, 0x48026205, + 0x643a6203, 0x1c01f000, 0x640a6203, 0x1c01f000, + 0x4d3c0000, 0x417a7800, 0x05c5ff08, 0x5c027800, + 0x0501f0e4, 0x05c9fd12, 0x050000e2, 0x59a8024c, + 0x8c000508, 0x0500000e, 0x5932680a, 0x4c580000, + 0x6008b000, 0x91241c01, 0x91341406, 0x05edfd91, + 0x80000540, 0x5c00b000, 0x050200d6, 0x59340200, + 0x8400051a, 0x48026a00, 0x0501f048, 0x599c0017, + 0x8c00050a, 0x0502000b, 0x4d3c0000, 0x417a7800, + 0x05c5feee, 0x5c027800, 0x59340212, 0x82000500, + 0x0000ff00, 0x0502001c, 0x601c0800, 0x05c5fef1, + 0x83440d80, 0x000007fe, 0x050200c2, 0x05adfea0, + 0x05c1fcaa, 0x05000009, 0x59240200, 0x8c00051e, + 0x0500000c, 0x59300809, 0x4d300000, 0x05b1f81d, + 0x5c026000, 0x0501f0b7, 0x05b1f8bf, 0x05020005, + 0x4d300000, 0x05adfd17, 0x5c026000, 0x0501f0b1, + 0x59a8224c, 0x8c100514, 0x050000ae, 0x05adfe83, + 0x0501f0ac, 0x599c0019, 0x8c00050e, 0x05000004, + 0x601c0800, 0x05c5fed3, 0x0501f0a6, 0x050200a5, + 0x59340c00, 0x82040d00, 0x000000ff, 0x4937c857, + 0x4807c857, 0x90040486, 0x0502100f, 0x4d3c0000, + 0x4d400000, 0x60a68000, 0x417a7800, 0x916c0583, + 0x05020006, 0x602c3000, 0x0505fca2, 0x42000000, + 0x001123f5, 0x0505ff16, 0x05adfb81, 0x5c028000, + 0x5c027800, 0x916c0582, 0x05020004, 0x59a80047, + 0x80000000, 0x48035047, 0x600c0800, 0x05c5feb5, + 0x64066407, 0x64066203, 0x640a6403, 0x05ddfcdb, + 0x4ce80000, 0x6005d000, 0x05d9fa95, 0x5c01d000, + 0x1c01f000, 0x59340200, 0x8400051a, 0x48026a00, + 0x05c9fca2, 0x0500007b, 0x60100800, 0x05c5fea5, + 0x0505fca0, 0x05020077, 0x05f5fdd8, 0x05000009, + 0x59a80061, 0x48026205, 0x643a6203, 0x59a8005f, + 0x48026006, 0x4a02601c, 0x0010c868, 0x1c01f000, + 0x60140800, 0x05c5fe97, 0x64066407, 0x64066203, + 0x640e6403, 0x05ddf4bd, 0x05c9fc95, 0x05020065, + 0x60180800, 0x0501f86c, 0x0501f062, 0x60100800, + 0x05c5fe8c, 0x05fdf77e, 0x05c9faa9, 0x0501f05d, + 0x4d300000, 0x05f5fdbd, 0x0500000c, 0x5930082a, + 0x40066000, 0x59300416, 0x8c00051e, 0x05020003, + 0x5c026000, 0x0501f055, 0x5c026000, 0x4a02601c, + 0x0010c888, 0x0501f051, 0x5c026000, 0x0009f010, + 0x4c340000, 0x41306800, 0x05e9f88e, 0x05000012, + 0x64066203, 0x647a6403, 0x58340c1b, 0x4806641b, + 0x58340a1b, 0x4806621b, 0x5834002a, 0x4802602a, + 0x5834080a, 0x4806600a, 0x5834081d, 0x4806601d, + 0x05f5fd8f, 0x64126407, 0x42000800, 0x80000040, + 0x0005fee2, 0x40366000, 0x5c006800, 0x0009f010, + 0x5930082a, 0x4807c857, 0x800409c0, 0x05000031, + 0x5804001e, 0x81300580, 0x0502002e, 0x4978081e, + 0x58041416, 0x8c080516, 0x0500002a, 0x8c080514, + 0x05000028, 0x84081516, 0x48080c16, 0x58065809, + 0x812e59c0, 0x05000023, 0x492fc857, 0x4d300000, + 0x40066000, 0x641e6203, 0x417a7800, 0x0005fe63, + 0x5c026000, 0x0501f01b, 0x05f5fd7c, 0x00080010, + 0x5930002a, 0x80000540, 0x05000018, 0x4c340000, + 0x40006800, 0x58340407, 0x5c006800, 0x90000583, + 0x000a0010, 0x4a02601c, 0x0010c8c8, 0x0501f00f, + 0x4d300000, 0x4d1c0000, 0x5932382a, 0x05e9f84d, + 0x05000004, 0x4a026416, 0x00000100, 0x05f5fc1a, + 0x5c023800, 0x5c026000, 0x0009f010, 0x05c5fe2d, + 0x05f5fd62, 0x00080010, 0x497a601c, 0x59a80061, + 0x48026205, 0x643a6203, 0x59a8005f, 0x48026006, + 0x1c01f000, 0x4933c857, 0x4807c857, 0x05c5fe21, + 0x4d3c0000, 0x417a7800, 0x05c5fe14, 0x5c027800, + 0x5934000a, 0x84000520, 0x4802680a, 0x05c9f238, + 0x59340400, 0x4803c857, 0x80000110, 0x9000348c, + 0x059e1d29, 0x91383595, 0x05020002, 0x0c01f004, + 0x91383596, 0x059e0d24, 0x0c01f00d, 0x0010a081, + 0x0010a081, 0x0010a081, 0x0010a081, 0x0010d5d4, + 0x0010a081, 0x0010c92d, 0x0010c90b, 0x0010a081, + 0x0010a081, 0x0010a081, 0x0010a081, 0x0010a081, + 0x0010a081, 0x0010a081, 0x0010a081, 0x0010d5d4, + 0x0010a081, 0x0010c92d, 0x0010c93e, 0x0010a081, + 0x0010a081, 0x0010a081, 0x0010a081, 0x4933c857, + 0x5932481d, 0x59240400, 0x8c000508, 0x05000014, + 0x813669c0, 0x05000012, 0x59340212, 0x82000500, + 0x0000ff00, 0x0500000e, 0x599c0019, 0x8c00050e, + 0x0502000b, 0x4d3c0000, 0x417a7800, 0x05c5fddb, + 0x5c027800, 0x600c0800, 0x05c5fde2, 0x64066407, + 0x64066203, 0x640a6403, 0x05ddf408, 0x59cc0001, + 0x59340802, 0x80040580, 0x82000500, 0x00ffffff, + 0x000a0010, 0x59345002, 0x05c5fb55, 0x482a6802, + 0x0009f010, 0x4933c857, 0x59303403, 0x9018359e, + 0x0502000d, 0x91383595, 0x000a0010, 0x4c340000, + 0x5930682a, 0x803469c0, 0x05000005, 0x58343416, + 0x82183500, 0xffff1fff, 0x48186c16, 0x5c006800, + 0x0009f010, 0x1c01f000, 0x4933c857, 0x05edfa3e, + 0x000a0010, 0x64066203, 0x64066403, 0x05ddf3e7, + 0x493bc857, 0xb1380591, 0x05020007, 0x05e1fc30, + 0x05ea001e, 0x59300203, 0x90000582, 0x05000062, + 0x059dfcc9, 0x913805a7, 0x05000015, 0xb1380588, + 0x0500000d, 0x91380594, 0x05000011, 0xb13805a1, + 0x05000003, 0xb13805a0, 0x059e0cbf, 0x05e1fc20, + 0x05ea000e, 0x59300203, 0x9000058e, 0x050006bc, + 0x059dfcb9, 0x05e1fc1a, 0x05ea0008, 0x59300203, + 0x90000584, 0x00080183, 0x059dfcb3, 0x4933c857, + 0x59300403, 0xb0000c84, 0x059e1caf, 0xb0000480, + 0x059c1cad, 0x40027000, 0x4803c857, 0x0c01f001, + 0x0010c970, 0x0010c971, 0x0010c971, 0x0010c987, + 0x059dfca5, 0x05ddffb6, 0x59325809, 0x812e59c0, + 0x05000012, 0x832c0500, 0x00ff0000, 0x0500000f, + 0x640a6203, 0x5932680a, 0x59340200, 0x8c00050e, + 0x0502000a, 0x60128000, 0x0501fd4d, 0x497a6009, + 0x59300006, 0x80000540, 0x05020003, 0x59a80060, + 0x48026006, 0x641e6203, 0x1c01f000, 0x05ddffa0, + 0x05f5f8ca, 0x05e4075c, 0x59325809, 0x05a1f83e, + 0x05e5f759, 0x059dfc88, 0x05f5fca8, 0x05000005, + 0x59a80061, 0x48026205, 0x643a6203, 0x0501f009, + 0x59325809, 0x592c040e, 0x8c000502, 0x05000004, + 0x641e6203, 0x610e7000, 0x0009f039, 0x64126203, + 0x1c01f000, 0x0505f83d, 0x00080181, 0x1c01f000, + 0x05f5fc96, 0x05000007, 0x4a02601c, 0x0010c9a8, + 0x59a80061, 0x48026205, 0x643a6203, 0x1c01f000, + 0x64066203, 0x65066403, 0x42027800, 0x80002042, + 0x0005f6e2, 0xb1380498, 0x05001008, 0xb13805a1, + 0x05000004, 0xb13805a0, 0x05000002, 0x059dfc62, + 0x4933c857, 0x1c01f000, 0xb1380591, 0x05000004, + 0xb1380581, 0x059e0c5c, 0x1c01f000, 0x0005fe84, + 0x0505f855, 0x0009f010, 0xb1380498, 0x05ee16e2, + 0xb1380492, 0x059e1c54, 0xb1380489, 0x059c1c52, + 0x0c01f001, 0x0010c9cf, 0x0010c9fd, 0x0010c9ce, + 0x0010c9ce, 0x0010c9ce, 0x0010c9ce, 0x0010c9fd, + 0x0010c9ce, 0x0010ca1b, 0x059dfc47, 0x05f5fc67, + 0x0500000b, 0x59300416, 0x8c000504, 0x05020008, + 0x4a02601c, 0x0010c9db, 0x59a80061, 0x48026205, + 0x64426203, 0x65266403, 0x1c01f000, 0x59325809, + 0x592c040e, 0x8c00051e, 0x05000010, 0x82000d00, + 0x000000c0, 0x82040d80, 0x00000080, 0x05000011, + 0x59300804, 0x8c040518, 0x0502000e, 0x59300416, + 0x8c000516, 0x05000003, 0x641e6203, 0x0501f011, + 0x61067000, 0x0009f1b1, 0x641e6203, 0x497a6006, + 0x59300416, 0x8c000516, 0x0502000a, 0x0005f684, + 0x59325809, 0x592c0c0e, 0x8c04051a, 0x05020003, + 0x0005fe84, 0x0009f010, 0x0501ffe0, 0x05fc07fd, + 0x1c01f000, 0x05ddff0d, 0x59325809, 0x5932680a, + 0x59340200, 0x8c00050e, 0x0500000d, 0x592c040e, + 0x82000500, 0x000000c0, 0x82000580, 0x00000080, + 0x05000005, 0x592c0013, 0x59301817, 0x800c1c80, + 0x480e6017, 0x640a6203, 0x0501f00c, 0x60128000, + 0x0501fcbb, 0x05f9fa46, 0x59300006, 0x80000540, + 0x05020004, 0x59a80060, 0x800000c2, 0x48026006, + 0x497a6009, 0x641e6203, 0x1c01f000, 0x4933c857, + 0x05e1fb5b, 0x059e0bf8, 0x59300203, 0x90000582, + 0x05fc078d, 0x059dfbf4, 0x641e6203, 0x497a6006, + 0x0005f684, 0x641e6203, 0x497a6006, 0x0005f67b, + 0x59300416, 0x8c00051c, 0x000a01a0, 0x59325809, + 0x592c2013, 0x40080000, 0x80102480, 0x59300017, + 0x80102400, 0x48126017, 0x0009f1a0, 0x8c04050e, + 0x05020007, 0x641a6203, 0x0501f822, 0x5930002b, + 0x80000540, 0x05a20d9c, 0x0005f67b, 0x640a6203, + 0x1c01f000, 0x60040800, 0x05a1fd97, 0x90040581, + 0x000801a5, 0x05fdf7e4, 0x83300580, 0x00115a74, + 0x05000004, 0x59300416, 0x8c00051c, 0x05000006, + 0x59300008, 0x8c000522, 0x05a20b67, 0x00080190, + 0x1c01f000, 0x59300013, 0x80000540, 0x00080190, + 0x59325809, 0x592c040b, 0x8c000510, 0x05000004, + 0x497a6013, 0x05a1fb5c, 0x00080190, 0x1c01f000, + 0x492fc857, 0x480bc857, 0x8c08053e, 0x05000005, + 0x80081080, 0x80081000, 0x60240800, 0x0501f002, + 0x60540800, 0x480a580f, 0x1c01f000, 0x1c01f000, + 0x91380593, 0x05000003, 0x91380594, 0x059e0bae, + 0x59300416, 0x8c000516, 0x059c0bab, 0x1c01f000, + 0x059dfba9, 0x59300009, 0x80000540, 0x059e0ba6, + 0x1c01f000, 0x59300416, 0x8c000516, 0x059c0ba2, + 0x1c01f000, 0x64126203, 0x493a6403, 0x42000800, + 0x80002001, 0x0005f6e2, 0x640e6203, 0x493a6403, + 0x05f5fbba, 0x05000007, 0x59300416, 0x8c00050a, + 0x05020004, 0x4a02601c, 0x0010ca84, 0x1c01f000, + 0x0001f99e, 0x59325809, 0x592c040e, 0x8c00051e, + 0x05000011, 0x82000500, 0x000000c0, 0x82000580, + 0x00000080, 0x0500000f, 0x59300416, 0x8c000512, + 0x05020009, 0x8c000510, 0x05020007, 0x592c0410, + 0x80000540, 0x05020004, 0x82080d40, 0x80003065, + 0x0005f6d4, 0x82080d40, 0x80002065, 0x0005f6d4, + 0x82080d40, 0x80002042, 0x0005f6d4, 0x4933c857, + 0x493bc857, 0xb1380484, 0x059e1b73, 0xb1380481, + 0x059c1b71, 0x0c01f001, 0x0010caa9, 0x0010cab7, + 0x0010cac9, 0x59325809, 0x592c040e, 0x8c00051e, + 0x05000019, 0x82001d00, 0x000000c0, 0x820c1d80, + 0x000000c0, 0x05000014, 0x64066203, 0x493a6403, + 0x42000800, 0x80002042, 0x0005f6e2, 0x59325809, + 0x592c040e, 0x8c00051e, 0x0500000b, 0x82001d00, + 0x000000c0, 0x820c1d80, 0x000000c0, 0x05000006, + 0x64066203, 0x493a6403, 0x42000800, 0x80002001, + 0x0005f6e2, 0x497a6009, 0x497a6006, 0x60128000, + 0x0501f403, 0x59325809, 0x592c040e, 0x8c00051e, + 0x05fc07f9, 0x82001d00, 0x000000c0, 0x820c1d80, + 0x000000c0, 0x05fc07f4, 0x640e6203, 0x493a6403, + 0x05f5fb62, 0x05000007, 0x59300416, 0x8c00050a, + 0x05020004, 0x4a02601c, 0x0010cadc, 0x1c01f000, + 0x0001f99e, 0x82080d40, 0x80002065, 0x0005f6d4, + 0x4933c857, 0x493bc857, 0x83380580, 0x00000085, + 0x05000005, 0x83380580, 0x00000088, 0x05000007, + 0x059dfb2d, 0x64266203, 0x493a6403, 0x42000800, + 0x80000040, 0x0005f6e2, 0x83300580, 0x00115a14, + 0x059e0b25, 0x4d1c0000, 0x813669c0, 0x05000003, + 0x0501fee1, 0x05020054, 0x59cc1404, 0x41780000, + 0x0501f853, 0x0500002c, 0x831c0580, 0xffffffff, + 0x05000029, 0x59cc0204, 0x82001580, 0x0000ffff, + 0x05000004, 0x591c1402, 0x80080580, 0x05020022, + 0x05f5fb32, 0x05000010, 0x59cc0005, 0x8c000500, + 0x0500000d, 0x4d300000, 0x411e6000, 0x05f1fa73, + 0x5c026000, 0x05000024, 0x591c0416, 0x8400055a, + 0x48023c16, 0x59300416, 0x8400055a, 0x48026416, + 0x0501f023, 0x591c0407, 0x9000051f, 0x90002586, + 0x05000005, 0x90002584, 0x05000024, 0x90002591, + 0x05020009, 0x497a3a05, 0x61502000, 0x05e5ff40, + 0x05000029, 0x42000000, 0x001123ec, 0x0505fc34, + 0x0501f025, 0x59240400, 0x8c00050a, 0x05020004, + 0x42023800, 0xffffffff, 0x05fdf7f4, 0x813669c0, + 0x05020005, 0x4926601d, 0x42026800, 0x001141b4, + 0x4936600a, 0x4a026403, 0x00000087, 0x59cc1204, + 0x82081580, 0x0000ffff, 0x05020003, 0x4a026403, + 0x00000086, 0x4d2c0000, 0x0505f9e8, 0x05c9fca9, + 0x5c025800, 0x0501f00c, 0x591c0403, 0x900005b8, + 0x05fc07de, 0x591c0203, 0x90000587, 0x05fe07e2, + 0x4d300000, 0x411e6000, 0x05e5fd9f, 0x5c026000, + 0x05fdf7dd, 0x5c023800, 0x1c01f000, 0x4933c857, + 0x480bc857, 0x4c5c0000, 0x4000b800, 0x42002800, + 0x00115aa4, 0x41300000, 0x80140580, 0x0500001c, + 0x58140203, 0x90000580, 0x05000019, 0x58140202, + 0x80080580, 0x05020016, 0x58140203, 0x9000058f, + 0x05000013, 0x58141c07, 0x900c0585, 0x05000010, + 0x8c5c0500, 0x05000003, 0x900c0587, 0x0500000c, + 0x5930200a, 0x5814000a, 0x800001c0, 0x0500000d, + 0x82001d80, 0x001141b4, 0x0500000a, 0x801021c0, + 0x05000003, 0x80100580, 0x05000011, 0x90142c30, + 0x41540000, 0x80140480, 0x05021020, 0x05fdf7de, + 0x5814002a, 0x801021c0, 0x05000005, 0x58102002, + 0x82102500, 0x00ffffff, 0x05fdf7f3, 0x8c5c0500, + 0x05fe07f3, 0x5930202a, 0x05fdf7ef, 0x40163800, + 0x8c5c0500, 0x05000007, 0x4c080000, 0x4c140000, + 0x0505f93f, 0x5c002800, 0x5c001000, 0x05fc07e8, + 0x831c0580, 0xffffffff, 0x05000006, 0x591c000a, + 0x800001c0, 0x05020003, 0x5930000a, 0x4802380a, + 0x81300540, 0x0501f009, 0x8c5c0500, 0x05000007, + 0x40080800, 0x42023800, 0xffffffff, 0x05c9fc56, + 0x05fc07f0, 0x80000580, 0x5c00b800, 0x1c01f000, + 0x4933c857, 0x83300580, 0x001159e4, 0x05020037, + 0x64026203, 0x91380593, 0x0502002c, 0x59300403, + 0x82000580, 0x00000092, 0x059e0a6f, 0x59a800a0, + 0x59325809, 0x812e59c0, 0x05000005, 0x812c0580, + 0x059e0a69, 0x592c0000, 0x497a5800, 0x800001c0, + 0x05000004, 0x480350a0, 0x05e5fc0a, 0x0501f003, + 0x497b50a0, 0x497b50a1, 0x812e59c0, 0x0500001e, + 0x592c0208, 0xb0000595, 0x059c060f, 0x91380593, + 0x0502000d, 0x592c0817, 0x82040580, 0xffffffff, + 0x05000007, 0xa0040494, 0x05021005, 0x05000004, + 0x64180c07, 0x64000c07, 0x49780806, 0x64025a0a, + 0x0001f3a8, 0x64c65a0a, 0x64125815, 0x4a025816, + 0x000000ff, 0x0001f3a8, 0x913805a7, 0x05000003, + 0x91380594, 0x059e0a44, 0x493bc857, 0x05ddfd54, + 0x05fdf7cf, 0x1c01f000, 0x4933c857, 0x91380593, + 0x0502000c, 0x59300403, 0x4803c857, 0x82000c80, + 0x00000085, 0x059c1a38, 0x82000c80, 0x00000093, + 0x059e1a35, 0x82000480, 0x00000085, 0x0c01f01c, + 0x913805a7, 0x0500000f, 0x91380594, 0x0500000d, + 0x493bc857, 0xb13805a1, 0x05000003, 0xb13805a0, + 0x05020007, 0x05e1f98a, 0x05e60578, 0x59300203, + 0x9000058e, 0x05000417, 0x059dfa23, 0x05e5f573, + 0x493bc857, 0x05ddfd32, 0x59325809, 0x812e59c0, + 0x05e404ed, 0x64c65a0a, 0x64125815, 0x4a025816, + 0x000000ff, 0x0001fba8, 0x05e5f4e7, 0x0010cc0d, + 0x0010cc11, 0x0010cc11, 0x0010cc0d, 0x0010cc0d, + 0x0010cc0d, 0x0010cc0d, 0x0010cc0d, 0x0010cc0d, + 0x0010cc0d, 0x0010cc0d, 0x0010cc0d, 0x0010cc0d, + 0x0010cc0e, 0x059dfa08, 0x59325809, 0x64025a0a, + 0x0001fba8, 0x0009f010, 0x4933c857, 0x42000000, + 0x00112408, 0x0505fb42, 0x0501fdfb, 0x497a6205, + 0x602e8000, 0x0501f805, 0x641a6407, 0x641e6203, + 0x497a6006, 0x1c01f000, 0x4933c857, 0x4943c857, + 0x59300407, 0x90000587, 0x05020002, 0x1c01f000, + 0x05ddfdad, 0x4df00000, 0x59300407, 0x90000586, + 0x05020005, 0x59300203, 0x90000588, 0x05020002, + 0x497a6009, 0x05f1fe25, 0x0500000c, 0x9140058c, 0x0500000a, 0x59300809, 0x58040000, 0x80001540, 0x05000006, 0x49780800, 0x4d2c0000, 0x400a5800, - 0x0501fa52, 0x5c025800, 0x05f1fc05, 0x90000c91, - 0x05a218a2, 0x0c01f001, 0x0010c563, 0x0010c566, - 0x0010c54b, 0x0010c570, 0x0010c57c, 0x0010c54b, - 0x0010c54b, 0x0010c54b, 0x0010c54b, 0x0010c54b, - 0x0010c54b, 0x0010c54b, 0x0010c54b, 0x0010c54b, - 0x0010c54b, 0x0010c54b, 0x0010c54b, 0x05f9f966, - 0x4d400000, 0x5930002b, 0x80000540, 0x05000004, - 0x41400800, 0x05a5f9e6, 0x40068000, 0x4d2c0000, - 0x59325809, 0x05f1ff74, 0x05000006, 0x592c040b, - 0x8c000510, 0x05000002, 0x05ddf9f3, 0x0501fa2b, - 0x4c5c0000, 0x5930b80a, 0x05e5fe72, 0x485e600a, - 0x5c00b800, 0x5c025800, 0x5c028000, 0x5c03e000, - 0x05dc07a0, 0x1c01f000, 0x598c000b, 0x81300580, - 0x05020003, 0x05e1faa7, 0x0502000e, 0x05ddfc4b, - 0x05fc07df, 0x05ddfebf, 0x0500000a, 0x05a1f86b, - 0x05f1fbc0, 0x05020003, 0x05e1fa6e, 0x05020005, - 0x05ddfb62, 0x05fc07d6, 0x05ddfeb6, 0x05a20863, - 0x59300203, 0x90000c91, 0x05a21860, 0x0c01f7bf, - 0x05a5facd, 0x05fdf7ce, 0x4933c857, 0x4d240000, - 0x4c5c0000, 0x4d440000, 0x4d340000, 0x4c580000, - 0x59cc3800, 0x821c3d00, 0x00ffffff, 0x59cc0007, - 0x4c000000, 0x59cc0001, 0x82000500, 0x00ffffff, - 0x82000d80, 0x00fffffe, 0x5c000000, 0x05020005, - 0x801c0d80, 0x05020054, 0x42000000, 0x00fffffe, - 0x05d5fb3a, 0x05c80ce4, 0x0502004f, 0x4178b800, - 0x91cc1408, 0x6008b000, 0x91341c06, 0x05edfaac, - 0x05000002, 0x6004b800, 0x5930001d, 0x4c000000, - 0x05c9fcd1, 0x4926601d, 0x5930000a, 0x4c000000, - 0x59242c00, 0x8c14050a, 0x05020011, 0x81342d80, - 0x05000002, 0x60102800, 0x58002403, 0x59340c03, - 0x59341802, 0x820c1d00, 0x00ffffff, 0x60143000, - 0x59cc4008, 0x59cc3809, 0x9c2041c0, 0x9c1c39c0, - 0x611a8000, 0x41301000, 0x0501f9f5, 0x8c5c0500, - 0x0502001f, 0x4936600a, 0x83440d80, 0x000007fe, - 0x0502000f, 0x60683000, 0x0501ffc5, 0x42000000, - 0x0010e451, 0x0505fa1b, 0x4d3c0000, 0x4d400000, - 0x60a68000, 0x05b1f852, 0x602a7800, 0x05b1f89e, + 0x0501fa93, 0x5c025800, 0x5930001e, 0x800001c0, + 0x05f60f6d, 0x05f1fa78, 0x90000c91, 0x059e19d6, + 0x0c01f001, 0x0010cc6a, 0x0010cc6d, 0x0010cc52, + 0x0010cc77, 0x0010cc83, 0x0010cc52, 0x0010cc52, + 0x0010cc52, 0x0010cc52, 0x0010cc52, 0x0010cc52, + 0x0010cc52, 0x0010cc52, 0x0010cc52, 0x0010cc52, + 0x0010cc52, 0x0010cc52, 0x05f9f805, 0x4d400000, + 0x5930002b, 0x80000540, 0x05000004, 0x41400800, + 0x05a1fb7d, 0x40068000, 0x4d2c0000, 0x59325809, + 0x05f1fdf6, 0x05000006, 0x592c040b, 0x8c000510, + 0x05000002, 0x05d9ffa0, 0x0501fa69, 0x4c5c0000, + 0x5930b80a, 0x05e5fc80, 0x485e600a, 0x5c00b800, + 0x5c025800, 0x5c028000, 0x5c03e000, 0x05dc0557, + 0x1c01f000, 0x598c000b, 0x81300580, 0x05020003, + 0x05e1f85e, 0x0502000e, 0x05ddf9fd, 0x05fc07df, + 0x05ddfc75, 0x0500000a, 0x059df99f, 0x05f1fa33, + 0x05020003, 0x05e1f825, 0x05020005, 0x05ddf914, + 0x05fc07d6, 0x05ddfc6c, 0x059e0997, 0x59300203, + 0x90000c91, 0x059e1994, 0x0c01f7bf, 0x05a1fc64, + 0x05fdf7ce, 0x4933c857, 0x4d240000, 0x4c5c0000, + 0x4d440000, 0x4d340000, 0x4c580000, 0x59cc3800, + 0x821c3d00, 0x00ffffff, 0x59cc0007, 0x4c000000, + 0x59cc0001, 0x82000500, 0x00ffffff, 0x82000d80, + 0x00fffffe, 0x5c000000, 0x05020005, 0x801c0d80, + 0x05020061, 0x42000000, 0x00fffffe, 0x05d1ffdf, + 0x05c808a6, 0x0502005c, 0x4178b800, 0x83440580, + 0x000007fe, 0x05000007, 0x91cc1408, 0x6008b000, + 0x91341c06, 0x05edf8e7, 0x05000002, 0x6004b800, + 0x5930001d, 0x4c000000, 0x05c9f890, 0x4926601d, + 0x5930000a, 0x4c000000, 0x59242c00, 0x8c14050a, + 0x05020018, 0x81342d80, 0x05000002, 0x60102800, + 0x58002403, 0x59340c03, 0x59341802, 0x820c1d00, + 0x00ffffff, 0x60143000, 0x59cc4008, 0x59cc3809, + 0x9c2041c0, 0x9c1c39c0, 0x611a8000, 0x82100580, + 0x000007fe, 0x05020005, 0x59240200, 0x82000500, + 0xfffffe7f, 0x48024a00, 0x41301000, 0x0501fa2b, + 0x8c5c0500, 0x05020022, 0x4936600a, 0x83440d80, + 0x000007fe, 0x05020012, 0x60683000, 0x0505f811, + 0x42000000, 0x001123f5, 0x0505fa85, 0x4d3c0000, + 0x4d400000, 0x60a68000, 0x59240a00, 0x84040d02, + 0x48064a00, 0x05adf9da, 0x602a7800, 0x05adfa30, 0x5c028000, 0x5c027800, 0x0501f00d, 0x602c3000, - 0x0501ffb7, 0x42000000, 0x0010e451, 0x0505fa0d, + 0x0505f800, 0x42000000, 0x001123f5, 0x0505fa74, 0x4d3c0000, 0x4d400000, 0x60a68000, 0x417a7800, - 0x05adfd58, 0x5c028000, 0x5c027800, 0x5c000000, + 0x05a9fedb, 0x5c028000, 0x5c027800, 0x5c000000, 0x4802600a, 0x5c000000, 0x4802601d, 0x59cc0007, 0x83440d80, 0x000007fe, 0x05020005, 0x42000000, 0x00fffffe, 0x4a026c00, 0x00000707, 0x48026802, 0x80000580, 0x5c00b000, 0x5c026800, 0x5c028800, 0x5c00b800, 0x5c024800, 0x1c01f000, 0x4933c857, - 0x4c040000, 0x59a800b6, 0xb00005b4, 0x05020040, - 0x59cc0a08, 0x82040480, 0x00000100, 0x05001033, - 0x59cc0c08, 0x82040500, 0x00008000, 0x05000035, - 0x59a80041, 0x80000540, 0x05020009, 0x5930100a, + 0x4c040000, 0x59a800bb, 0xb00005b4, 0x05020043, + 0x59cc0a08, 0x82040480, 0x00000100, 0x05001036, + 0x59cc0c08, 0x82040500, 0x00008000, 0x05000038, + 0x59a80044, 0x80000540, 0x05020009, 0x5930100a, 0x58080212, 0x82000500, 0x0000ff00, 0x05000004, - 0x82040500, 0x00000800, 0x0500002a, 0x59cc0c09, - 0x80040840, 0x05001024, 0x59a80a49, 0x8c040506, - 0x05000004, 0x59cc0c0f, 0x8c04051e, 0x05020012, - 0x59cc0a17, 0x800409c0, 0x05020012, 0x59cc0a18, - 0x82040480, 0x00000100, 0x05001014, 0x59cc0c18, - 0x800409c0, 0x0502000e, 0x59cc0c19, 0x80040840, - 0x05001011, 0x59cc0c1a, 0x80040840, 0x05001011, - 0x0501f017, 0x4a02621c, 0x00000100, 0x0501f012, - 0x4a02621c, 0x00000300, 0x0501f00f, 0x4a02621c, - 0x00000500, 0x0501f00c, 0x4a02621c, 0x00000700, - 0x0501f009, 0x4a02621c, 0x00000900, 0x0501f006, - 0x4a02621c, 0x00000f00, 0x0501f003, 0x4a02621c, - 0x00002d00, 0x90000541, 0x0501f002, 0x80000580, - 0x5c000800, 0x1c01f000, 0x59cc0407, 0x4803c857, - 0x82000580, 0x00000800, 0x05000002, 0x6402621c, - 0x1c01f000, 0x4933c857, 0x4c580000, 0x59cc000c, - 0x59340802, 0x82040d00, 0x00ffffff, 0x80040580, - 0x0502000a, 0x91cc1408, 0x6008b000, 0x91341c06, - 0x05edf9ff, 0x05020005, 0x91cc140a, 0x6008b000, - 0x91341c08, 0x05edf9fa, 0x5c00b000, 0x1c01f000, - 0x4933c857, 0x4c580000, 0x91cc140b, 0x6008b000, - 0x91341c06, 0x05edf9f2, 0x05020008, 0x91cc140d, - 0x6008b000, 0x91341c08, 0x05edf9ed, 0x05000014, - 0x4933c856, 0x4933c856, 0x4933c857, 0x59340009, - 0x4803c857, 0x5934000e, 0x4803c857, 0x59340008, - 0x4803c857, 0x5934000d, 0x4803c857, 0x59340007, - 0x4803c857, 0x5934000c, 0x4803c857, 0x59340006, - 0x4803c857, 0x5934000b, 0x4803c857, 0x5c00b000, - 0x1c01f000, 0x4933c857, 0x4947c857, 0x4943c857, - 0x4c600000, 0x05ddfe9e, 0x4df00000, 0x4d2c0000, - 0x4d300000, 0x4d340000, 0x4c580000, 0x0501f8d3, - 0x4130c000, 0x42026000, 0x00111b00, 0x59a8003b, - 0x8060c1c0, 0x05000005, 0x82601580, 0x00111a70, - 0x05000002, 0x80000040, 0x81640480, 0x05021092, - 0x40600000, 0x81300580, 0x0500008a, 0x0501fa1a, - 0x05020088, 0x812649c0, 0x05000004, 0x5930001d, - 0x81240580, 0x05020083, 0x5932680a, 0x05e5fb73, - 0x05000080, 0x59300407, 0x90000c92, 0x059e1f43, - 0x0c01f001, 0x0010c714, 0x0010c6ac, 0x0010c6ba, - 0x0010c6c4, 0x0010c6ac, 0x0010c6ba, 0x0010c6ec, - 0x0010c6f9, 0x0010c6ab, 0x0010c6ab, 0x0010c6ff, - 0x0010c6ab, 0x0010c6ab, 0x0010c6ab, 0x0010c6ab, - 0x0010c710, 0x0010c70a, 0x0010c708, 0x059dff2f, - 0x59300403, 0xb0000583, 0x05f40ca4, 0x0501ffa7, - 0x05f1ff0b, 0x05000005, 0x05f1ff18, 0x0502005d, - 0x05e9fc0f, 0x0501f05b, 0x05adfcbd, 0x05f1ff13, - 0x05e80c0b, 0x0501f057, 0x59325809, 0x05f1fe0e, - 0x05000054, 0x49425a0a, 0x497a5c0d, 0x0001fb82, - 0x59300229, 0x90000583, 0x05f00ee6, 0x0501f04d, - 0x05f9fa99, 0x59300008, 0x8c000500, 0x05000003, - 0x05a5f981, 0x0501f007, 0x59300203, 0x90000584, - 0x05a4097d, 0x59300203, 0x90000584, 0x05a4097a, - 0x59325809, 0x05f1fdf8, 0x0500003e, 0x592c0208, - 0x82000500, 0x000000ff, 0x90000594, 0x05f20ed1, - 0x05f5ffd9, 0x0005f9f3, 0x05d1fd2e, 0x4a025a08, - 0x00000103, 0x592c040c, 0x8c000512, 0x05000006, - 0x4d2c0000, 0x592c000d, 0x40025800, 0x05a1fab8, - 0x5c025800, 0x49425a0a, 0x497a580d, 0x0501fc4a, - 0x05f5fc75, 0x05f1ff3b, 0x0001fb82, 0x0501f025, - 0x59300203, 0x90000584, 0x05a4095b, 0x59325809, - 0x05f1fdd9, 0x0500001f, 0x49425a0a, 0x0501fc3e, - 0x05f5ffbd, 0x0005f9f3, 0x05f5fc67, 0x0001fb82, - 0x0501f018, 0x59300203, 0x90000591, 0x05020019, - 0x59300429, 0x48026203, 0x0501f016, 0x59300203, - 0x90000584, 0x05a40948, 0x59325809, 0x05f1fdc6, - 0x0500000c, 0x49425a0a, 0x0001fb82, 0x0501f009, - 0x59325819, 0x05a1fa92, 0x05a5ffff, 0x59325809, - 0x05f1fdbd, 0x05000003, 0x49425a0a, 0x0001fb82, - 0x05e5fcc0, 0x8d3c051c, 0x05000002, 0x497a600a, - 0x91326430, 0x41580000, 0x81300480, 0x05fc1771, - 0x0501f002, 0x41526000, 0x8d3c0518, 0x0500002b, - 0x59a80898, 0x59a80099, 0x80040480, 0x05000027, - 0x81300800, 0x41540000, 0x80040480, 0x05021023, - 0x5930000a, 0x800001c0, 0x05fe0765, 0x0001fb00, - 0x05fe07ec, 0x59340802, 0x82040d00, 0x00ffffff, - 0x5930002a, 0x80040580, 0x05fe07e6, 0x59340813, - 0x59301029, 0x80040582, 0x82000500, 0x00ffffff, - 0x0500000c, 0x0505f9bf, 0x42000800, 0x0010e512, - 0x58040005, 0x80080580, 0x82000500, 0x00ffffff, - 0x05fc07d8, 0x90040c0d, 0x8058b040, 0x05fe07f9, - 0x59300203, 0x90000588, 0x05020002, 0x0501fe69, - 0x4936600a, 0x05fdf74e, 0x5c00b000, 0x5c026800, - 0x5c026000, 0x5c025800, 0x5c03e000, 0x05dc0db9, - 0x5c00c000, 0x1c01f000, 0x4933c857, 0x813261c0, - 0x05000025, 0x83300d80, 0x00111a70, 0x05000022, - 0x8d3c0506, 0x05020020, 0x59300c07, 0x90040581, - 0x05000008, 0x90040582, 0x0502001b, 0x59300229, - 0x90000581, 0x05020018, 0x59300c18, 0x0501f002, - 0x59300c03, 0x900405b9, 0x05000003, 0x900405b5, - 0x05020011, 0x4d300000, 0x4d1c0000, 0x5932602a, - 0x4933c857, 0x05f5f9f9, 0x059c0e70, 0x591c001e, - 0x497a381e, 0x591c0c16, 0x84040d02, 0x48063c16, - 0x5c023800, 0x5c026000, 0x81300580, 0x059e0e67, - 0x497a602a, 0x1c01f000, 0x5c000000, 0x4c000000, - 0x4803c857, 0x4d3c0000, 0x60067800, 0x05c5fd68, - 0x5c027800, 0x4c580000, 0x6008b000, 0x5930181d, - 0x900c1c01, 0x91cc140b, 0x05edf8c5, 0x5c00b000, - 0x80000540, 0x1c01f000, 0x492fc857, 0x4943c857, - 0x59a8000c, 0x812c0480, 0x05001014, 0x59a8000a, - 0x812c0480, 0x05021011, 0x4d400000, 0x592c0000, - 0x80005d40, 0x0500000a, 0x497a5800, 0x49425a0a, - 0x4c2c0000, 0x0001fb82, 0x5c025800, 0x9140058c, - 0x05fe07f7, 0x60128000, 0x05fdf7f5, 0x49425a0a, - 0x5c028000, 0x0001f382, 0x1c01f000, 0x61fc21ff, - 0x5930100a, 0x800811c0, 0x05000002, 0x58082403, - 0x41301000, 0x0501f006, 0x41781000, 0x41442000, - 0x0501f003, 0x41781000, 0x61fc21ff, 0x5c000000, - 0x4c000000, 0x4803c857, 0x480bc857, 0x4813c857, - 0x492fc857, 0x4943c857, 0x4d2c0000, 0x4c040000, - 0x4c080000, 0x4c0c0000, 0x4c100000, 0x4c140000, - 0x4c180000, 0x4c1c0000, 0x4c200000, 0x05a1f9c7, - 0x059c0e1e, 0x5c004000, 0x5c003800, 0x5c003000, - 0x5c002800, 0x5c002000, 0x5c001800, 0x5c001000, - 0x5c000800, 0x05011000, 0x912c0408, 0x4803c840, + 0x82040500, 0x00000800, 0x0500002d, 0x59cc0c09, + 0x80040840, 0x05001027, 0x59a80a4c, 0x8c040506, + 0x05000004, 0x59cc0c0f, 0x8c04051e, 0x05020015, + 0x59cc0a17, 0x800409c0, 0x05020015, 0x59cc0a18, + 0x82040480, 0x00000100, 0x05001017, 0x59a80807, + 0x8c040508, 0x05020004, 0x59cc0c18, 0x800409c0, + 0x0502000e, 0x59cc0c19, 0x80040840, 0x05001011, + 0x59cc0c1a, 0x80040840, 0x05001011, 0x0501f017, + 0x4a02621c, 0x00000100, 0x0501f012, 0x4a02621c, + 0x00000300, 0x0501f00f, 0x4a02621c, 0x00000500, + 0x0501f00c, 0x4a02621c, 0x00000700, 0x0501f009, + 0x4a02621c, 0x00000900, 0x0501f006, 0x4a02621c, + 0x00000f00, 0x0501f003, 0x4a02621c, 0x00002d00, + 0x90000541, 0x0501f002, 0x80000580, 0x5c000800, + 0x1c01f000, 0x59cc0407, 0x4803c857, 0x82000580, + 0x00000800, 0x05000002, 0x6402621c, 0x1c01f000, + 0x4933c857, 0x4c580000, 0x59cc000c, 0x59340802, + 0x82040d00, 0x00ffffff, 0x80040580, 0x0502000a, + 0x91cc1408, 0x6008b000, 0x91341c06, 0x05edf82d, + 0x05020005, 0x91cc140a, 0x6008b000, 0x91341c08, + 0x05edf828, 0x5c00b000, 0x1c01f000, 0x4933c857, + 0x4c580000, 0x91cc140b, 0x6008b000, 0x91341c06, + 0x05edf820, 0x05020008, 0x91cc140d, 0x6008b000, + 0x91341c08, 0x05edf81b, 0x05000014, 0x4933c856, + 0x4933c856, 0x4933c857, 0x59340009, 0x4803c857, + 0x5934000e, 0x4803c857, 0x59340008, 0x4803c857, + 0x5934000d, 0x4803c857, 0x59340007, 0x4803c857, + 0x5934000c, 0x4803c857, 0x59340006, 0x4803c857, + 0x5934000b, 0x4803c857, 0x5c00b000, 0x1c01f000, + 0x4933c857, 0x4947c857, 0x4943c857, 0x4c600000, + 0x05ddfc45, 0x4df00000, 0x4d2c0000, 0x4d300000, + 0x4d340000, 0x4c580000, 0x0501f901, 0x4130c000, + 0x40be6000, 0x59a8003d, 0x8060c1c0, 0x05000004, + 0x80bc1498, 0x05001002, 0x80000040, 0x81640480, + 0x05021090, 0x40600000, 0x81300580, 0x05000088, + 0x0501fa4f, 0x05020086, 0x812649c0, 0x05000004, + 0x5930001d, 0x81240580, 0x05020081, 0x5932680a, + 0x05e5f94e, 0x0500007e, 0x59300407, 0x90000c92, + 0x059e1869, 0x0c01f001, 0x0010ce27, 0x0010cdc1, + 0x0010cdcf, 0x0010cdd9, 0x0010cdc1, 0x0010cdcf, + 0x0010ce01, 0x0010ce0e, 0x0010cdc0, 0x0010cdc0, + 0x0010ce14, 0x0010cdc0, 0x0010cdc0, 0x0010cdc0, + 0x0010cdc0, 0x0010ce23, 0x0010ce1d, 0x0010ce1d, + 0x059df855, 0x59300403, 0xb0000583, 0x05f40b35, + 0x0501fff9, 0x05f1fd8f, 0x05000005, 0x05f1fd9c, + 0x0502005b, 0x05e9fa34, 0x0501f059, 0x05a9fe3f, + 0x05f1fd97, 0x05e80a30, 0x0501f055, 0x59325809, + 0x05f1fc82, 0x05000052, 0x49425a0a, 0x497a5c0d, + 0x0001fba8, 0x59300229, 0x90000583, 0x05f00d6a, + 0x0501f04b, 0x05f9f935, 0x59300008, 0x8c000500, + 0x05000003, 0x05a1fb0a, 0x0501f007, 0x59300203, + 0x90000584, 0x05a00b06, 0x59300203, 0x90000584, + 0x05a00b03, 0x59325809, 0x05f1fc6c, 0x0500003c, + 0x592c0208, 0x82000500, 0x000000ff, 0x90000594, + 0x05f20d55, 0x05f5fe6a, 0x0005fa1a, 0x05d1f9a1, + 0x4a025a08, 0x00000103, 0x592c040c, 0x8c000512, + 0x05000006, 0x4d2c0000, 0x592c000d, 0x40025800, + 0x059dfbda, 0x5c025800, 0x49425a0a, 0x497a580d, + 0x0501fc7f, 0x05f5fb06, 0x05f1fdbf, 0x0001fba8, + 0x0501f023, 0x59300203, 0x90000584, 0x05a00ae4, + 0x59325809, 0x05f1fc4d, 0x0500001d, 0x49425a0a, + 0x0501fc73, 0x05f5fe4e, 0x0005fa1a, 0x05f5faf8, + 0x0001fba8, 0x0501f016, 0x59300203, 0x90000591, + 0x05020017, 0x59300429, 0x48026203, 0x0501f014, + 0x59300203, 0x90000584, 0x05a00ad1, 0x59325809, + 0x05f1fc3a, 0x0500000a, 0x49425a0a, 0x0001fba8, + 0x0501f007, 0x05a5f95d, 0x59325809, 0x05f1fc33, + 0x05000003, 0x49425a0a, 0x0001fba8, 0x05e5fac2, + 0x8d3c051c, 0x05000002, 0x497a600a, 0x91326430, + 0x41580000, 0x81300480, 0x05fc1773, 0x0501f002, + 0x41526000, 0x8d3c0518, 0x0500002c, 0x59a8089b, + 0x59a8009c, 0x80040480, 0x05000028, 0x81300800, + 0x41540000, 0x80040480, 0x05021024, 0x5930000a, + 0x800001c0, 0x05fe0767, 0x0001fb08, 0x05fe07ec, + 0x59340802, 0x82040d00, 0x00ffffff, 0x5930002a, + 0x80040580, 0x05fe07e6, 0x59340013, 0x59301029, + 0x80080580, 0x82000500, 0x00ffffff, 0x0500000c, + 0x0505fa27, 0x42000800, 0x001124b6, 0x58040005, + 0x80080580, 0x82000500, 0x00ffffff, 0x05fc07d8, + 0x90040c0d, 0x8058b040, 0x05fe07f9, 0x59300203, + 0x90000588, 0x05020003, 0x0501feb3, 0x497a6009, + 0x4936600a, 0x05fdf74f, 0x82bc0580, 0x00115aa4, + 0x0500002f, 0x42026000, 0x00115aa4, 0x59a8029f, + 0x8060c1c0, 0x05000007, 0x806014af, 0x05021005, + 0x82601580, 0x00115a14, 0x05000002, 0x80000040, + 0x59a8123e, 0x80080480, 0x05021021, 0x81300598, + 0x0500001c, 0x0501f982, 0x0502001a, 0x812649c0, + 0x05000004, 0x5930001d, 0x81240580, 0x05020015, + 0x5932680a, 0x05e5f881, 0x05000012, 0x59300407, + 0x90000d84, 0x05020003, 0x0501ff43, 0x0501f009, + 0x90000d91, 0x0502000b, 0x05a5f8fc, 0x59325809, + 0x05f1fbd2, 0x05000003, 0x49425a0a, 0x0001fba8, + 0x05e5fa61, 0x8d3c051c, 0x05000002, 0x497a600a, + 0x91326430, 0x813004af, 0x05fc17e1, 0x5c00b000, + 0x5c026800, 0x5c026000, 0x5c025800, 0x5c03e000, + 0x05dc0b32, 0x5c00c000, 0x1c01f000, 0x4933c857, + 0x813261c0, 0x05000025, 0x83300d80, 0x00115a14, + 0x05000022, 0x8d3c0506, 0x05020020, 0x59300c07, + 0x90040581, 0x05000008, 0x90040582, 0x0502001b, + 0x59300229, 0x90000581, 0x05020018, 0x59300c18, + 0x0501f002, 0x59300c03, 0x900405b9, 0x05000003, + 0x900405b5, 0x05020011, 0x4d300000, 0x4d1c0000, + 0x5932602a, 0x4933c857, 0x05f5f850, 0x05980f66, + 0x591c001e, 0x497a381e, 0x591c0c16, 0x84040d02, + 0x48063c16, 0x5c023800, 0x5c026000, 0x81300580, + 0x059a0f5d, 0x497a602a, 0x1c01f000, 0x5c000000, + 0x4c000000, 0x4803c857, 0x4d3c0000, 0x60067800, + 0x05c5f836, 0x5c027800, 0x4c580000, 0x6008b000, + 0x5930181d, 0x900c1c01, 0x91cc140b, 0x05e9fec5, + 0x5c00b000, 0x80000540, 0x1c01f000, 0x492fc857, + 0x4943c857, 0x59a8000c, 0x812c0480, 0x05021003, + 0x05f1fb96, 0x05000014, 0x59a8000a, 0x812c0480, + 0x05021011, 0x4d400000, 0x592c0000, 0x80005d40, + 0x0500000a, 0x497a5800, 0x49425a0a, 0x4c2c0000, + 0x0001fba8, 0x5c025800, 0x9140058c, 0x05fe07f7, + 0x60128000, 0x05fdf7f5, 0x49425a0a, 0x5c028000, + 0x0001f3a8, 0x1c01f000, 0x61fc21ff, 0x5930100a, + 0x800811c0, 0x05000002, 0x58082403, 0x41301000, + 0x0501f006, 0x41781000, 0x41442000, 0x0501f003, + 0x41781000, 0x61fc21ff, 0x5c000000, 0x4c000000, + 0x4803c857, 0x480bc857, 0x4813c857, 0x492fc857, + 0x4943c857, 0x4d2c0000, 0x4c040000, 0x4c080000, + 0x4c0c0000, 0x4c100000, 0x4c140000, 0x4c180000, + 0x4c1c0000, 0x4c200000, 0x059dfab7, 0x05980f12, + 0x5c004000, 0x5c003800, 0x5c003000, 0x5c002800, + 0x5c002000, 0x5c001800, 0x5c001000, 0x5c000800, + 0x05011000, 0x912c0408, 0x4803c840, 0x6443c842, + 0x40000000, 0x05fd17ff, 0x4a025808, 0x0000010d, + 0x800811c0, 0x05000019, 0x914005a9, 0x05020013, + 0x90180582, 0x05000009, 0x90180583, 0x05000007, + 0x90180588, 0x05000005, 0x90180586, 0x05000006, + 0x90180589, 0x05020009, 0x4a02580d, 0xffffffff, + 0x0501f007, 0x5808280a, 0x58140002, 0x82000500, + 0x00ffffff, 0x48025816, 0x480a580d, 0x58080202, + 0x48025c17, 0x0501f005, 0x4a02580d, 0xffffffff, + 0x4a025c17, 0x0000ffff, 0xb1400586, 0x05000002, + 0x41782800, 0x480e5810, 0x48065811, 0x48225812, + 0x481e5813, 0x481a5c0c, 0xb1400586, 0x05020007, + 0x901805a0, 0x05020005, 0x59a8024c, 0x8c000508, + 0x05000002, 0x84142d46, 0x49425a0c, 0x48125a0a, + 0x82100580, 0x0000ffff, 0x05000029, 0x4d440000, + 0x4d340000, 0x4c140000, 0x4c180000, 0x40128800, + 0x83440480, 0x000007f0, 0x05001006, 0x83440480, + 0x00000800, 0x05021003, 0x05c5fdf0, 0x0501f002, + 0x0001fb08, 0x059a0ec0, 0x59340002, 0x82000500, + 0x00ffffff, 0x48025816, 0x5c003000, 0x5c002800, + 0xb1400586, 0x05020010, 0x901805a0, 0x0502000e, + 0x84142d48, 0x59344006, 0x59343807, 0x59341808, + 0x59340809, 0x9c2041c0, 0x9c1c39c0, 0x9c0c19c0, + 0x9c0409c0, 0x480e580e, 0x4806580f, 0x48225812, + 0x481e5813, 0x5c026800, 0x5c028800, 0x48165a0b, + 0x497a5800, 0x497a5c08, 0x812000d0, 0x48025c14, + 0x0501fcc2, 0x5c025800, 0x1c01f000, 0x5c000000, + 0x4c000000, 0x4803c857, 0x480bc857, 0x480fc857, + 0x4813c857, 0x4817c857, 0x4d2c0000, 0x4c080000, + 0x4c0c0000, 0x4c100000, 0x4c140000, 0x059dfa36, + 0x05980e91, 0x5c002800, 0x5c002000, 0x5c001800, + 0x5c001000, 0x05011000, 0x912c0408, 0x4803c840, 0x6443c842, 0x40000000, 0x05fd17ff, 0x4a025808, - 0x0000010d, 0x800811c0, 0x05000019, 0x914005a9, - 0x05020013, 0x90180582, 0x05000009, 0x90180583, - 0x05000007, 0x90180588, 0x05000005, 0x90180586, - 0x05000006, 0x90180589, 0x05020009, 0x4a02580d, - 0xffffffff, 0x0501f007, 0x5808280a, 0x58140002, - 0x82000500, 0x00ffffff, 0x48025816, 0x480a580d, - 0x58080202, 0x48025c17, 0x0501f005, 0x4a02580d, - 0xffffffff, 0x4a025c17, 0x0000ffff, 0xb1400586, - 0x05000002, 0x41782800, 0x480e5810, 0x48065811, - 0x48225812, 0x481e5813, 0x481a5c0c, 0xb1400586, - 0x05020007, 0x901805a0, 0x05020005, 0x59a80249, - 0x8c000508, 0x05000002, 0x84142d46, 0x49425a0c, - 0x48125a0a, 0x82100580, 0x0000ffff, 0x05000026, - 0x4d440000, 0x4d340000, 0x4c140000, 0x4c180000, - 0x40128800, 0x83440480, 0x000007f0, 0x05001003, - 0x05c9fa71, 0x0501f002, 0x0001fb00, 0x059e0dcf, - 0x59340002, 0x82000500, 0x00ffffff, 0x48025816, - 0x5c003000, 0x5c002800, 0xb1400586, 0x05020010, - 0x901805a0, 0x0502000e, 0x84142d48, 0x59344006, - 0x59343807, 0x59341808, 0x59340809, 0x9c2041c0, - 0x9c1c39c0, 0x9c0c19c0, 0x9c0409c0, 0x480e580e, - 0x4806580f, 0x48225812, 0x481e5813, 0x5c026800, - 0x5c028800, 0x48165a0b, 0x497a5800, 0x497a5c08, - 0x812000d0, 0x48025c14, 0x0501fcaf, 0x5c025800, - 0x1c01f000, 0x5c000000, 0x4c000000, 0x4803c857, - 0x480bc857, 0x480fc857, 0x4813c857, 0x4817c857, - 0x4d2c0000, 0x4c080000, 0x4c0c0000, 0x4c100000, - 0x4c140000, 0x05a1f949, 0x059c0da0, 0x5c002800, - 0x5c002000, 0x5c001800, 0x5c001000, 0x05011000, - 0x912c0408, 0x4803c840, 0x6443c842, 0x40000000, - 0x05fd17ff, 0x4a025808, 0x0000010d, 0x65265a0c, - 0x480a5a0e, 0x480e5c0e, 0x48125a0f, 0x48165c0f, - 0x82080580, 0x00008014, 0x05020054, 0x820c0580, - 0x0000ffff, 0x05020051, 0x90100586, 0x0502004f, - 0x4d240000, 0x42024800, 0x0010e512, 0x59240005, - 0x5c024800, 0x05cdf855, 0x05000009, 0x82000d00, - 0x00ffff00, 0x05020006, 0x82000c00, 0x00102853, - 0x50040800, 0x80040910, 0x48065a10, 0x82000d00, - 0x0000ffff, 0x48065c10, 0x80000120, 0x48025a11, - 0x59a80249, 0x82001500, 0x00003500, 0x480a5a12, - 0x8c000502, 0x05000016, 0x8c000506, 0x05000006, - 0x90000d0a, 0x90040d8a, 0x05020003, 0x64065c11, - 0x0501f018, 0x8c00050a, 0x05000006, 0x90000d22, - 0x90040da2, 0x05020003, 0x640e5c11, 0x0501f011, - 0x8c000508, 0x05000006, 0x90000d12, 0x90040d92, - 0x05020003, 0x640a5c11, 0x0501f00a, 0x05cdf82b, - 0x05020003, 0x64125c11, 0x0501f006, 0x8c000506, - 0x05000003, 0x64165c11, 0x0501f002, 0x64025c11, - 0x59a8005c, 0x48025c12, 0x59a8005d, 0x48025a13, - 0x59c40801, 0x82040d00, 0x00018000, 0x90040580, - 0x05020003, 0x64025c13, 0x0501f00c, 0x82040580, - 0x00008000, 0x05020003, 0x64065c13, 0x0501f007, - 0x82040580, 0x00010000, 0x05020003, 0x640e5c13, - 0x0501f002, 0x64125c13, 0x0501fc37, 0x5c025800, - 0x1c01f000, 0x5930080a, 0x800409c0, 0x05000004, - 0x58040403, 0x81440580, 0x1c01f000, 0x90000541, - 0x05fdf7fe, 0x4933c857, 0xb13805a1, 0x05000003, - 0xb13805a0, 0x0502000c, 0x5932680a, 0x59340200, - 0x8c00050e, 0x05020002, 0x497a6205, 0x5930001c, - 0x80000540, 0x000407dc, 0x497a601c, 0x0801f800, - 0x1c01f000, 0x1c01f000, 0x4933c857, 0xb13805a1, - 0x05000003, 0xb13805a0, 0x05e60372, 0x59303403, - 0x82180580, 0x00000086, 0x05e4030a, 0x82180580, - 0x00000087, 0x05e40307, 0x497a6205, 0x642a6203, - 0x1c01f000, 0x4933c857, 0xb13805a1, 0x05000003, - 0xb13805a0, 0x05020008, 0x59300c03, 0x4807c857, - 0xb004048a, 0x059e1d05, 0xb0040481, 0x059c1d03, - 0x0c01f002, 0x1c01f000, 0x0010c8e7, 0x0010c8e4, - 0x0010c8f4, 0x0010c8e3, 0x0010c8e3, 0x0010c8e3, - 0x0010c8e3, 0x0010c8e3, 0x0010c8f4, 0x059dfcf7, - 0x497a6205, 0x64126203, 0x1c01f000, 0x497a6205, - 0x59325809, 0x832c0500, 0x00ff0000, 0x05000004, - 0x592c0c0e, 0x8c04051a, 0x05020003, 0x0005fe4e, - 0x0005f7dc, 0x0501f99f, 0x05fc07fd, 0x1c01f000, - 0x497a6205, 0x59cc0002, 0x90000530, 0x90000590, - 0x05f006dc, 0x5930001c, 0x80000540, 0x05000004, + 0x0000010d, 0x65265a0c, 0x480a5a0e, 0x480e5c0e, + 0x48125a0f, 0x48165c0f, 0x82080580, 0x00008014, + 0x05020054, 0x820c0580, 0x0000ffff, 0x05020051, + 0x90100586, 0x0502004f, 0x4d240000, 0x42024800, + 0x001124b6, 0x59240005, 0x5c024800, 0x05c9fbf5, + 0x05000009, 0x82000d00, 0x00ffff00, 0x05020006, + 0x82000c00, 0x001028fb, 0x50040800, 0x80040910, + 0x48065a10, 0x82000d00, 0x0000ffff, 0x48065c10, + 0x80000120, 0x48025a11, 0x59a8024c, 0x82001500, + 0x00003500, 0x480a5a12, 0x8c000502, 0x05000016, + 0x8c000506, 0x05000006, 0x90000d0a, 0x90040d8a, + 0x05020003, 0x64065c11, 0x0501f018, 0x8c00050a, + 0x05000006, 0x90000d22, 0x90040da2, 0x05020003, + 0x640e5c11, 0x0501f011, 0x8c000508, 0x05000006, + 0x90000d12, 0x90040d92, 0x05020003, 0x640a5c11, + 0x0501f00a, 0x05c9fbcb, 0x05020003, 0x64125c11, + 0x0501f006, 0x8c000506, 0x05000003, 0x64165c11, + 0x0501f002, 0x64025c11, 0x59a8005f, 0x48025c12, + 0x59a80060, 0x48025a13, 0x59c40801, 0x82040d00, + 0x00018000, 0x90040580, 0x05020003, 0x64025c13, + 0x0501f00c, 0x82040580, 0x00008000, 0x05020003, + 0x64065c13, 0x0501f007, 0x82040580, 0x00010000, + 0x05020003, 0x640e5c13, 0x0501f002, 0x64125c13, + 0x0501fc4a, 0x5c025800, 0x1c01f000, 0x5930080a, + 0x800409c0, 0x05000004, 0x58040403, 0x81440580, + 0x1c01f000, 0x90000541, 0x05fdf7fe, 0x4933c857, + 0xb13805a1, 0x05000003, 0xb13805a0, 0x0502000c, + 0x5932680a, 0x59340200, 0x8c00050e, 0x05020002, + 0x497a6205, 0x5930001c, 0x80000540, 0x00080010, 0x497a601c, 0x0801f800, 0x1c01f000, 0x1c01f000, - 0x4933c857, 0x493bc857, 0xb13805a1, 0x05000006, - 0xb13805a0, 0x05e6032f, 0x59cc0002, 0x8c000526, - 0x0500000c, 0x59300403, 0x4803c857, 0xb0000589, - 0x059e0cce, 0x497a6205, 0x5930001c, 0x80000540, - 0x05000004, 0x497a601c, 0x0801f800, 0x1c01f000, - 0x1c01f000, 0x4933c857, 0x59300403, 0x82000d80, - 0x00000085, 0x05020007, 0x4a026403, 0x0000008b, - 0x642e6203, 0x42000800, 0x80000040, 0x0005f6ab, - 0x82000d80, 0x0000008b, 0x05020025, 0x4d3c0000, - 0x417a7800, 0x05adfa07, 0x5c027800, 0x42000000, - 0x0010e454, 0x0501feb3, 0x59325809, 0x812e59c0, - 0x05000006, 0x832c0500, 0x00ff0000, 0x05000003, - 0x60128000, 0x05fdfe55, 0x60443000, 0x0501fc50, - 0x05adfce3, 0x59240400, 0x8c00050a, 0x0502000a, - 0x41782800, 0x60103000, 0x60a68000, 0x05fdfe64, - 0x6406642c, 0x64126407, 0x64066403, 0x641e6203, - 0x1c01f000, 0x602c0800, 0x05c5fbab, 0x64066407, - 0x64066403, 0x64066203, 0x05d9f72b, 0x1c01f000, - 0x4933c857, 0x40000000, 0x40000000, 0x1c01f000, - 0x4933c857, 0x59300a03, 0x9004058e, 0x05000003, - 0x90040590, 0x05020019, 0x0501f975, 0x05edfeb9, - 0x59300203, 0x90000d89, 0x0500000b, 0x48026429, - 0x4a026403, 0x00000085, 0x59300416, 0x8400055a, - 0x8400055e, 0x48026416, 0x64266203, 0x64166407, - 0x641a6229, 0x5932680a, 0x59340200, 0x8c00050e, - 0x05020003, 0x59a8005d, 0x48026006, 0x42000800, - 0x80000040, 0x0005feab, 0x1c01f000, 0x4933c857, - 0x4c040000, 0x59300403, 0x90000d9e, 0x05020012, - 0x800000d0, 0x59300a18, 0x82040d00, 0x000000ff, - 0x80040540, 0x4803c857, 0x48026418, 0x4a026403, - 0x00000085, 0x64266203, 0x64166407, 0x64126229, - 0x59a8005d, 0x48026006, 0x42000800, 0x80000040, - 0x0005feab, 0x5c000800, 0x1c01f000, 0x4933c857, - 0x40000000, 0x40000000, 0x1c01f000, 0x59300416, - 0x8c00050c, 0x0502000a, 0x4933c857, 0x4803c857, - 0x8c000518, 0x05000006, 0x8c000512, 0x05f20586, - 0x0501f937, 0x0005fe4e, 0x0005ffdc, 0x1c01f000, - 0x591c0407, 0x4803c857, 0x90000c89, 0x0502100b, - 0x0c01f001, 0x0010c9a2, 0x0010c9a2, 0x0010c9a2, - 0x0010c9a4, 0x0010c9a2, 0x0010c9a4, 0x0010c9a4, - 0x0010c9a2, 0x0010c9a4, 0x80000580, 0x1c01f000, - 0x90000541, 0x1c01f000, 0x591c0407, 0x9000051f, - 0x90000586, 0x0500000a, 0x4803c857, 0x64ee6403, - 0x6426641c, 0x4a02621c, 0x00002a00, 0x64066203, - 0x42000800, 0x80000040, 0x0005f6ab, 0x4803c856, - 0x4c040000, 0x4c140000, 0x4d300000, 0x411e6000, - 0x0501f90f, 0x497a6205, 0x59300416, 0x4803c857, - 0x82000500, 0xffffadff, 0x48026416, 0x497a6405, - 0x5c026000, 0x059dffc1, 0x059c0c18, 0x5c002800, - 0x5c000800, 0x05011000, 0x912c0408, 0x4803c840, - 0x6443c842, 0x40000000, 0x05fd17ff, 0x4a025808, - 0x0000010d, 0x497a5800, 0x65165a0c, 0x491e580d, - 0x59300402, 0x48025c0b, 0x5930041b, 0x48025c0f, - 0x591c0416, 0x84000556, 0x48023c16, 0x591c180a, - 0x580c0403, 0x48025a0a, 0x580c0002, 0x82000500, - 0x00ffffff, 0x48025816, 0x59cc0404, 0x48025c17, - 0x497a5a0b, 0x4816580e, 0x48065a0f, 0x580c0013, - 0x82000500, 0xff000000, 0x80000120, 0x48025c14, - 0x0501faf1, 0x493a6403, 0x4d400000, 0x61168000, - 0x591c0202, 0x4c000000, 0x4d300000, 0x411e6000, - 0x05fdfb31, 0x5c026000, 0x5c000000, 0x48023a02, - 0x5c028000, 0x491e602a, 0x4932381e, 0x641a3c07, - 0x641e3a03, 0x497a3806, 0x497a3a05, 0x1c01f000, - 0x4933c857, 0x91380593, 0x0502000a, 0x59300403, - 0x4803c857, 0x82000d80, 0x00000085, 0x05000026, - 0x82000d80, 0x0000008b, 0x05000023, 0x059dfbd3, - 0x913805a7, 0x0502000a, 0x05ddfa5f, 0x4d2c0000, - 0x4d400000, 0x59325809, 0x60128000, 0x05fdfd77, - 0x5c028000, 0x5c025800, 0x1c01f000, 0x91380594, - 0x05fc07f6, 0xb13805a1, 0x05000009, 0xb13805a0, - 0x05000007, 0x83380580, 0x00000089, 0x05000004, - 0x83380580, 0x0000008a, 0x05e60216, 0x05ddfe9a, - 0x05e60214, 0x59300a03, 0x9004058e, 0x05fc069b, - 0x9004058a, 0x0500000c, 0x9004058c, 0x0500000a, - 0x059dfbb2, 0x05f1fe75, 0x05000005, 0x643a6203, - 0x59a8005e, 0x48026205, 0x1c01f000, 0x642a6203, - 0x1c01f000, 0x83380480, 0x00000093, 0x0502100b, - 0x83380480, 0x00000085, 0x05001008, 0x83380580, - 0x00000089, 0x05000008, 0x83380580, 0x0000008a, - 0x05000031, 0x059dfb9d, 0x493bc857, 0x4933c857, - 0x05e5f1f4, 0x4933c857, 0x4c340000, 0x05f1fe5b, - 0x0500000b, 0x59300416, 0x8c00051a, 0x05000008, - 0x641a6407, 0x59300429, 0x90000d8e, 0x05020002, - 0x60080000, 0x48026203, 0x0501f01d, 0x59300c16, - 0x4c040000, 0x41306800, 0x05e5f9b1, 0x5c000800, - 0x05000015, 0x48066416, 0x64066203, 0x647a6403, - 0x59cc0c07, 0x4806641b, 0x59cc0a07, 0x4806621b, + 0x4933c857, 0xb13805a1, 0x05000003, 0xb13805a0, + 0x05e6015a, 0x59303403, 0x82180580, 0x00000086, + 0x05e400d5, 0x82180580, 0x00000087, 0x05e400d2, + 0x497a6205, 0x642a6203, 0x1c01f000, 0x4933c857, + 0xb13805a1, 0x05000003, 0xb13805a0, 0x05020008, + 0x59300c03, 0x4807c857, 0xb004048a, 0x059a1df6, + 0xb0040481, 0x05981df4, 0x0c01f002, 0x1c01f000, + 0x0010d031, 0x0010d02e, 0x0010d03e, 0x0010d02d, + 0x0010d02d, 0x0010d02d, 0x0010d02d, 0x0010d02d, + 0x0010d03e, 0x0599fde8, 0x497a6205, 0x64126203, + 0x1c01f000, 0x497a6205, 0x59325809, 0x832c0500, + 0x00ff0000, 0x05000004, 0x592c0c0e, 0x8c04051a, + 0x05020003, 0x0005fe84, 0x0009f010, 0x0501f99f, + 0x05fc07fd, 0x1c01f000, 0x497a6205, 0x59cc0002, + 0x90000530, 0x90000590, 0x05f0052a, 0x5930001c, + 0x80000540, 0x05000004, 0x497a601c, 0x0801f800, + 0x1c01f000, 0x1c01f000, 0x4933c857, 0x493bc857, + 0xb13805a1, 0x05000006, 0xb13805a0, 0x05e60117, + 0x59cc0002, 0x8c000526, 0x0500000c, 0x59300403, + 0x4803c857, 0xb0000589, 0x059a0dbf, 0x497a6205, + 0x5930001c, 0x80000540, 0x05000004, 0x497a601c, + 0x0801f800, 0x1c01f000, 0x1c01f000, 0x4933c857, + 0x59300403, 0x82000d80, 0x00000085, 0x05020007, + 0x4a026403, 0x0000008b, 0x642e6203, 0x42000800, + 0x80000040, 0x0005f6e2, 0x82000d80, 0x0000008b, + 0x05020025, 0x4d3c0000, 0x417a7800, 0x05a9fb54, + 0x5c027800, 0x42000000, 0x001123f8, 0x0501fee4, + 0x59325809, 0x812e59c0, 0x05000006, 0x832c0500, + 0x00ff0000, 0x05000003, 0x60128000, 0x05fdfe50, + 0x60443000, 0x0501fc63, 0x05a9fe35, 0x59240400, + 0x8c00050a, 0x0502000a, 0x41782800, 0x60103000, + 0x60a68000, 0x05fdfe61, 0x6406642c, 0x64126407, + 0x64066403, 0x641e6203, 0x1c01f000, 0x602c0800, + 0x05c1fe74, 0x64066407, 0x64066403, 0x64066203, + 0x05d9f49a, 0x1c01f000, 0x4933c857, 0x40000000, + 0x40000000, 0x1c01f000, 0x4933c857, 0x59300a03, + 0x9004058e, 0x05000003, 0x90040590, 0x05020019, + 0x0501f975, 0x05edfce1, 0x59300203, 0x90000d89, + 0x0500000b, 0x48026429, 0x4a026403, 0x00000085, + 0x59300416, 0x8400055a, 0x8400055e, 0x48026416, + 0x64266203, 0x64166407, 0x641a6229, 0x5932680a, + 0x59340200, 0x8c00050e, 0x05020003, 0x59a80060, + 0x48026006, 0x42000800, 0x80000040, 0x0005fee2, + 0x1c01f000, 0x4933c857, 0x4c040000, 0x59300403, + 0x90000d9e, 0x05020012, 0x800000d0, 0x59300a18, + 0x82040d00, 0x000000ff, 0x80040540, 0x4803c857, + 0x48026418, 0x4a026403, 0x00000085, 0x64266203, + 0x64166407, 0x64126229, 0x59a80060, 0x48026006, + 0x42000800, 0x80000040, 0x0005fee2, 0x5c000800, + 0x1c01f000, 0x4933c857, 0x40000000, 0x40000000, + 0x1c01f000, 0x59300416, 0x8c00050c, 0x0502000a, + 0x4933c857, 0x4803c857, 0x8c000518, 0x05000006, + 0x8c000512, 0x05f203d5, 0x0501f937, 0x0005fe84, + 0x0009f810, 0x1c01f000, 0x591c0407, 0x4803c857, + 0x90000c89, 0x0502100b, 0x0c01f001, 0x0010d0ec, + 0x0010d0ec, 0x0010d0ec, 0x0010d0ee, 0x0010d0ec, + 0x0010d0ee, 0x0010d0ee, 0x0010d0ec, 0x0010d0ee, + 0x80000580, 0x1c01f000, 0x90000541, 0x1c01f000, + 0x591c0407, 0x9000051f, 0x90000586, 0x0500000a, + 0x4803c857, 0x64ee6403, 0x6426641c, 0x4a02621c, + 0x00002a00, 0x64066203, 0x42000800, 0x80000040, + 0x0005f6e2, 0x4803c856, 0x4c040000, 0x4c140000, + 0x4d300000, 0x411e6000, 0x0501f90f, 0x497a6205, + 0x59300416, 0x4803c857, 0x82000500, 0xffffadff, + 0x48026416, 0x497a6405, 0x5c026000, 0x059df8ae, + 0x05980d09, 0x5c002800, 0x5c000800, 0x05011000, + 0x912c0408, 0x4803c840, 0x6443c842, 0x40000000, + 0x05fd17ff, 0x4a025808, 0x0000010d, 0x497a5800, + 0x65165a0c, 0x491e580d, 0x59300402, 0x48025c0b, + 0x5930041b, 0x48025c0f, 0x591c0416, 0x84000556, + 0x48023c16, 0x591c180a, 0x580c0403, 0x48025a0a, + 0x580c0002, 0x82000500, 0x00ffffff, 0x48025816, + 0x59cc0404, 0x48025c17, 0x497a5a0b, 0x4816580e, + 0x48065a0f, 0x580c0013, 0x82000500, 0xff000000, + 0x80000120, 0x48025c14, 0x0501fb04, 0x493a6403, + 0x4d400000, 0x61168000, 0x591c0202, 0x4c000000, + 0x4d300000, 0x411e6000, 0x05fdfae4, 0x5c026000, + 0x5c000000, 0x48023a02, 0x5c028000, 0x491e602a, + 0x4932381e, 0x641a3c07, 0x641e3a03, 0x497a3806, + 0x497a3a05, 0x1c01f000, 0x4933c857, 0x91380593, + 0x0502000a, 0x59300403, 0x4803c857, 0x82000d80, + 0x00000085, 0x05000026, 0x82000d80, 0x0000008b, + 0x05000023, 0x0599fcc4, 0x913805a7, 0x0502000a, + 0x05d9ffd3, 0x4d2c0000, 0x4d400000, 0x59325809, + 0x60128000, 0x05fdfd72, 0x5c028000, 0x5c025800, + 0x1c01f000, 0x91380594, 0x05fc07f6, 0xb13805a1, + 0x05000009, 0xb13805a0, 0x05000007, 0x83380580, + 0x00000089, 0x05000004, 0x83380580, 0x0000008a, + 0x05e207fe, 0x05ddfc0e, 0x05e207fc, 0x59300a03, + 0x9004058e, 0x05fc069b, 0x9004058a, 0x0500000c, + 0x9004058c, 0x0500000a, 0x0599fca3, 0x05f1fcc3, + 0x05000005, 0x643a6203, 0x59a80061, 0x48026205, + 0x1c01f000, 0x642a6203, 0x1c01f000, 0x83380480, + 0x00000093, 0x0502100b, 0x83380480, 0x00000085, + 0x05001008, 0x83380580, 0x00000089, 0x05000008, + 0x83380580, 0x0000008a, 0x05000031, 0x0599fc8e, + 0x493bc857, 0x4933c857, 0x05e1f7dc, 0x4933c857, + 0x4c340000, 0x05f1fca9, 0x0500000b, 0x59300416, + 0x8c00051a, 0x05000008, 0x641a6407, 0x59300429, + 0x90000d8e, 0x05020002, 0x60080000, 0x48026203, + 0x0501f01d, 0x59300c16, 0x4c040000, 0x41306800, + 0x05e1ff7c, 0x5c000800, 0x05000015, 0x48066416, + 0x64066203, 0x647a6403, 0x59cc0c07, 0x4806641b, + 0x59cc0a07, 0x4806621b, 0x5834080a, 0x4806600a, + 0x5834081d, 0x4806601d, 0x05f1fc8c, 0x05000004, + 0x59300416, 0x84000550, 0x48026416, 0x64126407, + 0x42000800, 0x80000040, 0x0005fee2, 0x40366000, + 0x0009f810, 0x5c006800, 0x1c01f000, 0x4933c857, + 0x59300416, 0x8c00051a, 0x0502001a, 0x59300418, + 0x82000d00, 0x0000ff00, 0x900409c0, 0x9004059e, + 0x05020014, 0x4c340000, 0x41306800, 0x05e1ff55, + 0x0500000e, 0x493a6403, 0x64066203, 0x64126407, + 0x5834041b, 0x4802641b, 0x5834021b, 0x4802621b, 0x5834080a, 0x4806600a, 0x5834081d, 0x4806601d, - 0x05f1fe3e, 0x05000004, 0x59300416, 0x84000550, - 0x48026416, 0x64126407, 0x42000800, 0x80000040, - 0x0005feab, 0x40366000, 0x0005ffdc, 0x5c006800, - 0x1c01f000, 0x4933c857, 0x59300416, 0x8c00051a, - 0x0502001a, 0x59300418, 0x82000d00, 0x0000ff00, - 0x900409c0, 0x9004059e, 0x05020014, 0x4c340000, - 0x41306800, 0x05e5f98a, 0x0500000e, 0x493a6403, - 0x64066203, 0x64126407, 0x5834041b, 0x4802641b, - 0x5834021b, 0x4802621b, 0x5834080a, 0x4806600a, - 0x5834081d, 0x4806601d, 0x05f1fe09, 0x05d9fdea, - 0x40366000, 0x5c006800, 0x0005f7dc, 0x5930080a, - 0x58040200, 0x8c00051a, 0x059e0c13, 0x1c01f000, - 0x05c5fe2e, 0x05000019, 0x640a6203, 0x59300416, - 0x84000558, 0x48026416, 0x8c000512, 0x05000004, - 0x59a8005e, 0x48026205, 0x0501f006, 0x59a8085e, - 0x59a8005c, 0x80040400, 0x9000041e, 0x48026205, - 0x5930000a, 0x90000c11, 0x50040000, 0x80000540, - 0x05000003, 0x90000c00, 0x05fdf7fc, 0x45300800, - 0x497a6000, 0x90000541, 0x1c01f000, 0x82100500, - 0xfffffeef, 0x05020017, 0x4d2c0000, 0x4937c857, - 0x59340811, 0x91341411, 0x800409c0, 0x0500000c, - 0x40040000, 0x81300580, 0x05000004, 0x90041400, - 0x58040800, 0x05fdf7f9, 0x59300800, 0x497a6000, - 0x44041000, 0x0005fe4e, 0x0501f002, 0x4933c857, - 0x5c025800, 0x492e6009, 0x0005fe4e, 0x0005f7dc, - 0x492fc857, 0x641a5a0a, 0x0001f382, 0x4c340000, - 0x5930000a, 0x800001c0, 0x0500000f, 0x90006c11, - 0x50340000, 0x80000540, 0x05000009, 0x81300580, - 0x05000004, 0x50340000, 0x90006c00, 0x05fdf7f9, - 0x59300000, 0x44006800, 0x497a6000, 0x5c006800, - 0x1c01f000, 0x59300c07, 0x90040585, 0x05fc07fc, - 0x90040591, 0x05fc07fa, 0x90040586, 0x05fc07f8, - 0x90040581, 0x05fc07f6, 0x059dfaf8, 0x4c340000, - 0x0501f81a, 0x0502000f, 0x90006c11, 0x50340000, - 0x80000540, 0x05000009, 0x81300580, 0x05000004, - 0x50340000, 0x90006c00, 0x05fdf7f9, 0x59300000, - 0x44006800, 0x497a6000, 0x5c006800, 0x1c01f000, - 0x59300c07, 0x90040585, 0x05fc07fc, 0x90040591, - 0x05fc07fa, 0x90040586, 0x05fc07f8, 0x90040581, - 0x05fc07f6, 0x059dfadd, 0x4c5c0000, 0x4c600000, - 0x5930000a, 0x800001c0, 0x0500000c, 0x5800bc03, - 0x825cbc00, 0x0010d400, 0x505cb800, 0x805cb9c0, - 0x05000006, 0x805cc580, 0x05020004, 0x5c00c000, - 0x5c00b800, 0x1c01f000, 0x4933c857, 0x4803c857, - 0x485fc857, 0x905cbd41, 0x05fdf7f9, 0x4933c857, - 0x4c080000, 0x4c0c0000, 0x4c580000, 0x59a81046, - 0x59cc1807, 0x820c1d00, 0x00ffffff, 0x800c0110, - 0x80083580, 0x0502000c, 0x91cc1408, 0x6008b000, - 0x5930000a, 0x90001c06, 0x05e9fd25, 0x05020006, - 0x91cc140a, 0x6008b000, 0x5930000a, 0x90001c08, - 0x05e9fd1f, 0x5c00b000, 0x5c001800, 0x5c001000, - 0x1c01f000, 0x4933c856, 0x493a6403, 0x05c1feaa, - 0x05adf195, 0x4933c857, 0x492fc857, 0x5930080a, - 0x58040200, 0x8c00051e, 0x05000004, 0x592c020c, - 0x84000558, 0x48025a0c, 0x1c01f000, 0x59e0180f, - 0x599c0413, 0x800c1000, 0x80080580, 0x05020002, - 0x41781000, 0x59e00010, 0x59e00810, 0x80040d80, - 0x05fe07fd, 0x80080580, 0x05000018, 0x4c080000, - 0x80102040, 0x0500000e, 0x599c0413, 0x80081000, + 0x05f1fc57, 0x05d9fb59, 0x40366000, 0x5c006800, + 0x0009f010, 0x5930080a, 0x58040200, 0x8c00051a, + 0x059a0cf8, 0x1c01f000, 0x05c5f956, 0x05000019, + 0x640a6203, 0x59300416, 0x84000558, 0x48026416, + 0x8c000512, 0x05000004, 0x59a80061, 0x48026205, + 0x0501f006, 0x59a80861, 0x59a8005f, 0x80040400, + 0x9000041e, 0x48026205, 0x5930000a, 0x90000c11, + 0x50040000, 0x80000540, 0x05000003, 0x90000c00, + 0x05fdf7fc, 0x45300800, 0x497a6000, 0x90000541, + 0x1c01f000, 0x82100500, 0xfffffeef, 0x05020017, + 0x4d2c0000, 0x4937c857, 0x59340811, 0x91341411, + 0x800409c0, 0x0500000c, 0x40040000, 0x81300580, + 0x05000004, 0x90041400, 0x58040800, 0x05fdf7f9, + 0x59300800, 0x497a6000, 0x44041000, 0x0005fe84, + 0x0501f002, 0x4933c857, 0x5c025800, 0x492e6009, + 0x0005fe84, 0x0009f010, 0x492fc857, 0x641a5a0a, + 0x0001f3a8, 0x4c340000, 0x5930000a, 0x800001c0, + 0x0500000f, 0x90006c11, 0x50340000, 0x80000540, + 0x05000009, 0x81300580, 0x05000004, 0x50340000, + 0x90006c00, 0x05fdf7f9, 0x59300000, 0x44006800, + 0x497a6000, 0x5c006800, 0x1c01f000, 0x59300c07, + 0x90040585, 0x05fc07fc, 0x90040591, 0x05fc07fa, + 0x90040586, 0x05fc07f8, 0x90040581, 0x05fc07f6, + 0x0599fbe9, 0x4c340000, 0x0501f81a, 0x0502000f, + 0x90006c11, 0x50340000, 0x80000540, 0x05000009, + 0x81300580, 0x05000004, 0x50340000, 0x90006c00, + 0x05fdf7f9, 0x59300000, 0x44006800, 0x497a6000, + 0x5c006800, 0x1c01f000, 0x59300c07, 0x90040585, + 0x05fc07fc, 0x90040591, 0x05fc07fa, 0x90040586, + 0x05fc07f8, 0x90040581, 0x05fc07f6, 0x0599fbce, + 0x4c5c0000, 0x4c600000, 0x5930000a, 0x800001c0, + 0x0500000c, 0x5800bc03, 0x825cbc00, 0x0010db80, + 0x505cb800, 0x805cb9c0, 0x05000006, 0x805cc580, + 0x05020004, 0x5c00c000, 0x5c00b800, 0x1c01f000, + 0x4933c857, 0x4803c857, 0x485fc857, 0x905cbd41, + 0x05fdf7f9, 0x4933c857, 0x4c080000, 0x4c0c0000, + 0x4c580000, 0x59a81049, 0x59cc1807, 0x820c1d00, + 0x00ffffff, 0x800c0110, 0x80083580, 0x0502000c, + 0x91cc1408, 0x6008b000, 0x5930000a, 0x90001c06, + 0x05e9fb20, 0x05020006, 0x91cc140a, 0x6008b000, + 0x5930000a, 0x90001c08, 0x05e9fb1a, 0x5c00b000, + 0x5c001800, 0x5c001000, 0x1c01f000, 0x4933c856, + 0x493a6403, 0x05c1f957, 0x05a9f2e3, 0x4933c857, + 0x492fc857, 0x5930080a, 0x58040200, 0x8c00051e, + 0x05000004, 0x592c020c, 0x84000558, 0x48025a0c, + 0x1c01f000, 0x59e0180f, 0x599c0413, 0x800c1000, 0x80080580, 0x05020002, 0x41781000, 0x59e00010, 0x59e00810, 0x80040d80, 0x05fe07fd, 0x80080580, - 0x05fe07f4, 0x5c001000, 0x0501f008, 0x599c0814, - 0x599c1015, 0x800c00cc, 0x80040c00, 0x90081440, - 0x5c001800, 0x90000541, 0x4803c857, 0x1c01f000, - 0x59300203, 0x4933c857, 0x4937c857, 0x493bc857, - 0x4803c857, 0x90003491, 0x059e1a74, 0x0c01f001, - 0x0010cb79, 0x0010cc6e, 0x0010cb79, 0x0010cb79, - 0x0010cb79, 0x0010cb79, 0x0010cb79, 0x0010cbe2, - 0x0010cb7a, 0x0010cb79, 0x0010cb79, 0x0010cb79, - 0x0010cb79, 0x0010cb79, 0x0010cccb, 0x0010cb79, - 0x0010cb79, 0x059dfa61, 0xb138058c, 0x059e0a5f, - 0x05c5fd4e, 0x05020020, 0x59a80a49, 0x5932481d, - 0x59240200, 0x82000500, 0x000000e0, 0x82000580, - 0x00000080, 0x05000018, 0x8c040512, 0x05000028, - 0x59cc0806, 0x82040d00, 0xff000000, 0x82040580, - 0x03000000, 0x0500001c, 0x82040580, 0x50000000, - 0x05000004, 0x82040580, 0x52000000, 0x000607dc, - 0x83340580, 0x00110210, 0x05000005, 0x4d3c0000, - 0x417a7800, 0x05a9ff93, 0x5c027800, 0x64066403, - 0x0501f010, 0x59cc0806, 0x82040d00, 0xff000000, - 0x82040580, 0x03000000, 0x05000007, 0x82040580, - 0x50000000, 0x05000004, 0x82040580, 0x52000000, - 0x000607dc, 0x64266403, 0x6426641c, 0x6402621c, - 0x64126407, 0x64066203, 0x05d9f4c3, 0x59240400, - 0x8c00050a, 0x05020020, 0x0501fd7e, 0x0502001e, - 0x59cc0806, 0x4807c857, 0x82040d00, 0xff000000, - 0x82040580, 0x03000000, 0x05000013, 0x82040580, - 0x20000000, 0x05000010, 0x82040580, 0x21000000, - 0x0500000d, 0x82040580, 0x24000000, 0x0500000a, - 0x82040580, 0x50000000, 0x05000007, 0x82040580, - 0x52000000, 0x05000004, 0x82040580, 0x05000000, - 0x05020007, 0x9c0431c0, 0x611a8000, 0x60042800, - 0x05fdfbcf, 0x0501f913, 0x059c0a08, 0x61442000, - 0x05e5f959, 0x59cc0000, 0x82000500, 0x00ffffff, - 0x82000580, 0x00ffffff, 0x05000004, 0x641e6203, - 0x493a6403, 0x1c01f000, 0x59325819, 0x812e59c0, - 0x059e0dbb, 0x0005f7dc, 0x4d2c0000, 0x4c580000, - 0x4c500000, 0x4c540000, 0x4dcc0000, 0x41385000, - 0xb13805a0, 0x0500007f, 0xb13805a1, 0x0500007d, - 0xb1380594, 0x059e09ed, 0x59325809, 0x592c0c0f, - 0x82040d00, 0x0000e000, 0x82040580, 0x00002000, - 0x05020066, 0x59300819, 0x800409c0, 0x05000015, - 0x58041408, 0x42039800, 0x00111772, 0x9008049c, - 0x05001002, 0x606c1000, 0x41cca800, 0x9004a409, - 0x90080490, 0x05021004, 0x4008b000, 0x0501fca4, - 0x0501f008, 0x80001000, 0x603cb000, 0x0501fca0, - 0x58040801, 0x800409c0, 0x05fe07f5, 0x059df9cf, - 0x83340580, 0x00110210, 0x0500004c, 0x59344c00, + 0x05000018, 0x4c080000, 0x80102040, 0x0500000e, + 0x599c0413, 0x80081000, 0x80080580, 0x05020002, + 0x41781000, 0x59e00010, 0x59e00810, 0x80040d80, + 0x05fe07fd, 0x80080580, 0x05fe07f4, 0x5c001000, + 0x0501f008, 0x599c0814, 0x599c1015, 0x800c00cc, + 0x80040c00, 0x90081440, 0x5c001800, 0x90000541, + 0x4803c857, 0x1c01f000, 0x59300203, 0x4933c857, + 0x4937c857, 0x493bc857, 0x4803c857, 0x90003491, + 0x059a1b65, 0x0c01f001, 0x0010d2c3, 0x0010d3cb, + 0x0010d2c3, 0x0010d2c3, 0x0010d2c3, 0x0010d2c3, + 0x0010d2c3, 0x0010d32d, 0x0010d2c4, 0x0010d2c3, + 0x0010d2c3, 0x0010d2c3, 0x0010d2c3, 0x0010d2c3, + 0x0010d428, 0x0010d2c3, 0x0010d2c3, 0x0599fb52, + 0xb138058c, 0x059a0b50, 0x05c5f876, 0x05020020, + 0x59a80a4c, 0x5932481d, 0x59240200, 0x82000500, + 0x000000e0, 0x82000580, 0x00000080, 0x05000018, + 0x8c040512, 0x05000028, 0x59cc0806, 0x82040d00, + 0xff000000, 0x82040580, 0x03000000, 0x0500001c, + 0x82040580, 0x50000000, 0x05000004, 0x82040580, + 0x52000000, 0x000a0010, 0x83340580, 0x001141b4, + 0x05000005, 0x4d3c0000, 0x417a7800, 0x05a9f8e0, + 0x5c027800, 0x64066403, 0x0501f010, 0x59cc0806, + 0x82040d00, 0xff000000, 0x82040580, 0x03000000, + 0x05000007, 0x82040580, 0x50000000, 0x05000004, + 0x82040580, 0x52000000, 0x000a0010, 0x64266403, + 0x6426641c, 0x6402621c, 0x64126407, 0x64066203, + 0x05d9f232, 0x59240400, 0x8c00050a, 0x05020020, + 0x0501fdaf, 0x0502001e, 0x59cc0806, 0x4807c857, + 0x82040d00, 0xff000000, 0x82040580, 0x03000000, + 0x05000013, 0x82040580, 0x20000000, 0x05000010, + 0x82040580, 0x21000000, 0x0500000d, 0x82040580, + 0x24000000, 0x0500000a, 0x82040580, 0x50000000, + 0x05000007, 0x82040580, 0x52000000, 0x05000004, + 0x82040580, 0x05000000, 0x05020007, 0x9c0431c0, + 0x611a8000, 0x60042800, 0x05fdfbcc, 0x0501f92a, + 0x05980af9, 0x61442000, 0x05e1ff41, 0x0502000a, + 0x59cc0000, 0x82000500, 0x00ffffff, 0x82000580, + 0x00ffffff, 0x00080010, 0x641e6203, 0x493a6403, + 0x1c01f000, 0x42000000, 0x001123ec, 0x0501fc2c, + 0x0009f010, 0x4d2c0000, 0x4c580000, 0x4c500000, + 0x4c540000, 0x4dcc0000, 0x41385000, 0xb13805a0, + 0x05000091, 0xb13805a1, 0x0500008f, 0xb1380594, + 0x059a0add, 0x59325809, 0x592c0c0f, 0x82040d00, + 0x0000e000, 0x82040580, 0x00002000, 0x0502007d, + 0x83340580, 0x001141b4, 0x0500007a, 0x59344c00, 0x592c0c0d, 0x4807c857, 0x4827c857, 0x82040d00, 0x000000ff, 0x90040583, 0x0500001d, 0x90040585, - 0x05000021, 0x900405a0, 0x0500002c, 0xb0040592, - 0x05000036, 0xb0040590, 0x05000036, 0x900405a1, - 0x05000003, 0x900405a4, 0x05020038, 0x82240500, + 0x05000042, 0x900405a0, 0x0500004b, 0xb0040592, + 0x05000064, 0xb0040590, 0x05000064, 0x900405a1, + 0x05000003, 0x900405a4, 0x05020066, 0x82240500, 0x0000ff00, 0x82000580, 0x00000700, 0x05000005, - 0x60240800, 0x05c5f8c4, 0x60305000, 0x0501f02f, + 0x60240800, 0x05c1fba3, 0x60305000, 0x0501f05d, 0x64c65a0a, 0x64265811, 0x59340400, 0x48025812, - 0x0001fb82, 0x05e1ff9f, 0x0501f036, 0x41780800, - 0x05c5f9a2, 0x600c0800, 0x05c5f8b7, 0x60205000, - 0x0501f022, 0x59cc3800, 0x821c3d00, 0x00ffffff, - 0x4c1c0000, 0x05adf9eb, 0x5c003800, 0x0502001b, - 0x59cc0007, 0x05d5f947, 0x05020018, 0x4a026c00, - 0x00000707, 0x0501f015, 0x82240500, 0x0000ff00, - 0x82000580, 0x00000700, 0x05fc07e2, 0x82240500, - 0x000000ff, 0x90000589, 0x05fc07de, 0x05c5f9fc, - 0x60285000, 0x0501f009, 0x60385000, 0x0501f002, - 0x60405000, 0x82240500, 0x0000ff00, 0x82000580, - 0x00000700, 0x05fc07d3, 0x482a6403, 0x64066203, - 0x592c0011, 0x48026013, 0x497a6015, 0x59a8005d, - 0x48026006, 0x417a7800, 0x05d9fc0f, 0x59325819, - 0x812e59c0, 0x05000003, 0x059dfd35, 0x497a6019, - 0x5c039800, 0x5c00a800, 0x5c00a000, 0x5c00b000, - 0x5c025800, 0x1c01f000, 0x4d2c0000, 0x59325809, - 0x91380593, 0x05020038, 0x492fc857, 0x59300c03, - 0xb0040594, 0x0500002a, 0x90040590, 0x05000025, - 0x9004058e, 0x05000023, 0x59341400, 0x82081d00, - 0x0000ff00, 0x82081500, 0x000000ff, 0x90040588, - 0x0500000d, 0x9004058c, 0x05000014, 0x9004058a, - 0x059e0956, 0x820c0580, 0x00000700, 0x05000018, - 0x90080589, 0x05000016, 0x60180800, 0x05c5f862, - 0x0501f013, 0x592c0c0f, 0x8c040514, 0x05000005, - 0x90080583, 0x0502000e, 0x05c5fa00, 0x05fdf7f7, - 0x600c0000, 0x0501f002, 0x60240000, 0x80080580, - 0x05020007, 0x60100800, 0x05c5f853, 0x0501f004, - 0x59340200, 0x8400051a, 0x48026a00, 0x05f1fbff, - 0x05000005, 0x59a8005e, 0x48026006, 0x643a6203, - 0x0501f025, 0x64025a0a, 0x0001fb82, 0x0005ffdc, - 0x0501f021, 0xb13805a1, 0x05000003, 0xb13805a0, - 0x05020008, 0x5c025800, 0x05ddfc0b, 0x05e20785, - 0x59300203, 0x9000058e, 0x05000019, 0x059df927, - 0x913805a7, 0x05000009, 0x91380594, 0x059e0923, - 0x492fc857, 0x05d9ffb0, 0x60c68000, 0x60100800, - 0x61fc1001, 0x0501f006, 0x492fc857, 0x05d9ffaa, - 0x60c68000, 0x60100800, 0x60401000, 0x49425a0a, - 0x48065811, 0x480a5812, 0x0001fb82, 0x05c5ffa9, - 0x05e1ff08, 0x5c025800, 0x1c01f000, 0x4933c857, - 0xb13805a1, 0x05000003, 0xb13805a0, 0x05020009, - 0x4d2c0000, 0x59325809, 0x812e59c0, 0x05000003, - 0x64025a0a, 0x0001fb82, 0x0005ffdc, 0x5c025800, - 0x1c01f000, 0x492fc857, 0x42007000, 0x000211a7, - 0x58380806, 0x492c7006, 0x800409c0, 0x05020003, - 0x492c7007, 0x0001f030, 0x492c0800, 0x1c01f000, - 0x4d2c0000, 0x4c580000, 0x4c500000, 0x4c540000, - 0x4933c857, 0x4937c857, 0x59cc0806, 0x4807c857, - 0x82040d00, 0xff000000, 0x82040580, 0x03000000, - 0x0500000d, 0x82040580, 0x05000000, 0x0500000a, - 0x82040580, 0x21000000, 0x05000027, 0x82040580, - 0x24000000, 0x05000024, 0x82040580, 0x20000000, - 0x05020025, 0x059dfc85, 0x05000023, 0x492fc857, - 0x492e6019, 0x59a8b0b6, 0x9058b41b, 0x8258b500, - 0xfffffffc, 0x8058b104, 0x485a5c08, 0x412c7800, - 0x41cca000, 0x90580490, 0x05021004, 0x912cac09, - 0x0501fb9b, 0x0501f010, 0x40580800, 0x603cb000, - 0x912cac09, 0x0501fb96, 0x9004b48f, 0x059dfc6f, - 0x05000004, 0x492c7801, 0x412c7800, 0x05fdf7f2, - 0x59325819, 0x059dfc82, 0x497a6019, 0x80000580, - 0x0501f005, 0x59340200, 0x84000554, 0x48026a00, - 0x90000541, 0x5c00a800, 0x5c00a000, 0x5c00b000, - 0x5c025800, 0x1c01f000, 0x4933c857, 0x492fc857, - 0x4d2c0000, 0x59300a03, 0x90040587, 0x05020006, - 0x59325819, 0x812e59c0, 0x059e0c6d, 0x0005ffdc, - 0x0501f02d, 0x9004058e, 0x05000023, 0x90040581, - 0x059e08a6, 0x05d9ffde, 0x4df00000, 0x598c000b, + 0x0001fba8, 0x05e1fd80, 0x0501f05f, 0x05011000, + 0x4a03c840, 0x00115716, 0x646fc842, 0x42039800, + 0x00115716, 0x05011000, 0x5930081a, 0x5930120c, + 0x59301c0c, 0x5930200d, 0x48079801, 0x480b9a07, + 0x480f9a09, 0x48139808, 0x5930000e, 0x5930080f, + 0x59301010, 0x59301811, 0x59302012, 0x4803980a, + 0x4807980b, 0x480b980c, 0x480f980d, 0x4813980e, + 0x59300013, 0x59300814, 0x59301015, 0x59301a16, + 0x48039813, 0x48079814, 0x480b9817, 0x480f9a18, + 0x41780800, 0x05c1fcb3, 0x600c0800, 0x05c1fb75, + 0x60205000, 0x0501f02f, 0x59303819, 0x4c1c0000, + 0x05a9fb34, 0x5c003800, 0x0502002a, 0x5930000c, + 0x05d1fde4, 0x05020027, 0x4a026c00, 0x00000707, + 0x0501f024, 0x82240500, 0x0000ff00, 0x82000580, + 0x00000700, 0x05fc07c3, 0x82240500, 0x000000ff, + 0x90000589, 0x05fc07bf, 0x05011000, 0x4a03c840, + 0x00115716, 0x642fc842, 0x42039800, 0x00115716, + 0x05011000, 0x5930081a, 0x5930100c, 0x59301a0d, + 0x5930240d, 0x48079801, 0x480b9806, 0x480f9a07, + 0x48139a0a, 0x05c1fd00, 0x60285000, 0x0501f009, + 0x60385000, 0x0501f002, 0x60405000, 0x82240500, + 0x0000ff00, 0x82000580, 0x00000700, 0x05fc07a5, + 0x482a6403, 0x64066203, 0x592c0011, 0x48026013, + 0x497a6015, 0x59a80060, 0x48026006, 0x417a7800, + 0x05d9f966, 0x5c039800, 0x5c00a800, 0x5c00a000, + 0x5c00b000, 0x5c025800, 0x1c01f000, 0x4d2c0000, + 0x59325809, 0x91380593, 0x05020038, 0x492fc857, + 0x59300c03, 0xb0040594, 0x0500002a, 0x90040590, + 0x05000025, 0x9004058e, 0x05000023, 0x59341400, + 0x82081d00, 0x0000ff00, 0x82081500, 0x000000ff, + 0x90040588, 0x0500000d, 0x9004058c, 0x05000014, + 0x9004058a, 0x059a0a34, 0x820c0580, 0x00000700, + 0x05000018, 0x90080589, 0x05000016, 0x60180800, + 0x05c1fb18, 0x0501f013, 0x592c0c0f, 0x8c040514, + 0x05000005, 0x90080583, 0x0502000e, 0x05c1fd09, + 0x05fdf7f7, 0x600c0000, 0x0501f002, 0x60240000, + 0x80080580, 0x05020007, 0x60100800, 0x05c1fb09, + 0x0501f004, 0x59340200, 0x8400051a, 0x48026a00, + 0x05f1fa3a, 0x05000005, 0x59a80061, 0x48026006, + 0x643a6203, 0x0501f025, 0x64025a0a, 0x0001fba8, + 0x0009f810, 0x0501f021, 0xb13805a1, 0x05000003, + 0xb13805a0, 0x05020008, 0x5c025800, 0x05ddf96c, + 0x05e2055a, 0x59300203, 0x9000058e, 0x05000019, + 0x0599fa05, 0x913805a7, 0x05000009, 0x91380594, + 0x059a0a01, 0x492fc857, 0x05d9fd11, 0x60c68000, + 0x60100800, 0x61fc1001, 0x0501f006, 0x492fc857, + 0x05d9fd0b, 0x60c68000, 0x60100800, 0x60401000, + 0x49425a0a, 0x48065811, 0x480a5812, 0x0001fba8, + 0x05c5fb21, 0x05e1fcc0, 0x5c025800, 0x1c01f000, + 0x4933c857, 0xb13805a1, 0x05000003, 0xb13805a0, + 0x05020009, 0x4d2c0000, 0x59325809, 0x812e59c0, + 0x05000003, 0x64025a0a, 0x0001fba8, 0x0009f810, + 0x5c025800, 0x1c01f000, 0x492fc857, 0x0501fa52, + 0x0502000c, 0x42007000, 0x000211e8, 0x58380806, + 0x492c7006, 0x800409c0, 0x05020004, 0x492c7007, + 0x0001f838, 0x0501f002, 0x492c0800, 0x80000580, + 0x1c01f000, 0x4933c857, 0x4937c857, 0x59cc0000, + 0x82000500, 0x00ffffff, 0x48026019, 0x59cc0001, + 0x82000500, 0x00ffffff, 0x4802601a, 0x59cc0806, + 0x4807c857, 0x82040d00, 0xff000000, 0x82040580, + 0x03000000, 0x05000014, 0x82040580, 0x05000000, + 0x0500002a, 0x82040580, 0x21000000, 0x05000029, + 0x82040580, 0x24000000, 0x05000026, 0x82040580, + 0x20000000, 0x05020027, 0x59cc0006, 0x59cc0a07, + 0x59cc120a, 0x4802600c, 0x4806620d, 0x480a640d, + 0x0501f01c, 0x59cc0207, 0x59cc0a09, 0x59cc1008, + 0x4802620c, 0x4806640c, 0x480a600d, 0x59cc000a, + 0x59cc080b, 0x59cc100c, 0x4802600e, 0x4806600f, + 0x480a6010, 0x59cc000d, 0x59cc080e, 0x59cc1013, + 0x48026011, 0x48066012, 0x480a6013, 0x59cc0014, + 0x59cc0817, 0x59cc1218, 0x48026014, 0x48066015, + 0x480a6216, 0x0501f003, 0x59cc0007, 0x4802600c, + 0x59340200, 0x84000554, 0x48026a00, 0x90000541, + 0x1c01f000, 0x4933c857, 0x492fc857, 0x4d2c0000, + 0x59300a03, 0x90040587, 0x05020003, 0x0009f810, + 0x0501f02a, 0x9004058e, 0x05000023, 0x90040581, + 0x059a0981, 0x05d9fd3c, 0x4df00000, 0x598c000b, 0x81300580, 0x05020010, 0x59300004, 0x8c000520, 0x05000004, 0x84000520, 0x48026004, 0x0501f011, - 0x42001000, 0x0010e387, 0x50081000, 0x58080002, - 0x82000580, 0x00000100, 0x05020009, 0x05ddfac9, - 0x05020018, 0x59300004, 0x8c000520, 0x05000005, - 0x84000520, 0x48026004, 0x0501f003, 0x05a5f9ba, - 0x05d9fc66, 0x5c03e000, 0x05d80fb2, 0x05edff76, - 0x059c0886, 0x59325809, 0x64165a0a, 0x0001fb82, - 0x05c5ff18, 0x59325819, 0x812e59c0, 0x059e0c40, - 0x05e1fe74, 0x80000580, 0x5c025800, 0x1c01f000, - 0x5c03e000, 0x05d80fa3, 0x59300c07, 0x90040591, - 0x05fc07c5, 0x05fdf7f9, 0x4c040000, 0x59340200, - 0x4803c857, 0x8c00051c, 0x05000009, 0x59cc0805, - 0x591c001b, 0x4803c857, 0x80040580, 0x05000004, - 0x80000580, 0x4803c856, 0x0501f002, 0x90000541, - 0x5c000800, 0x1c01f000, 0x4c000000, 0x4c0c0000, - 0x4c100000, 0x61fc19ff, 0x60102000, 0x0501f010, + 0x42001000, 0x00112322, 0x50081000, 0x58080002, + 0x82000580, 0x00000100, 0x05020009, 0x05ddf827, + 0x05020015, 0x59300004, 0x8c000520, 0x05000005, + 0x84000520, 0x48026004, 0x0501f003, 0x05a1facb, + 0x05d9f9bf, 0x5c03e000, 0x05d80d10, 0x05edfd9f, + 0x05980961, 0x59325809, 0x64165a0a, 0x0001fba8, + 0x05c5fa8d, 0x05e1fc2c, 0x80000580, 0x5c025800, + 0x1c01f000, 0x5c03e000, 0x05d80d04, 0x59300c07, + 0x90040591, 0x05fc07cb, 0x05fdf7f9, 0x4c040000, + 0x59340200, 0x4803c857, 0x8c00051c, 0x05000009, + 0x59cc0805, 0x591c001b, 0x4803c857, 0x80040580, + 0x05000004, 0x80000580, 0x4803c856, 0x0501f002, + 0x90000541, 0x5c000800, 0x1c01f000, 0x4c000000, + 0x4c0c0000, 0x4c100000, 0x61fc19ff, 0x60102000, + 0x0501f010, 0x4c000000, 0x4c0c0000, 0x4c100000, + 0x5930200a, 0x58101c03, 0x60102000, 0x0501f009, 0x4c000000, 0x4c0c0000, 0x4c100000, 0x5930200a, - 0x58101c03, 0x60102000, 0x0501f009, 0x4c000000, - 0x4c0c0000, 0x4c100000, 0x5930200a, 0x801021c0, - 0x059c0852, 0x58101c03, 0x601c2000, 0x480fc857, - 0x4813c857, 0x481bc857, 0x05adf889, 0x05bdfab9, - 0x5c002000, 0x5c001800, 0x5c000000, 0x1c01f000, - 0x8d0c0520, 0x05000009, 0x4d400000, 0x4d200000, - 0x61fe4001, 0x850e1d44, 0x60aa8000, 0x05fdfa0e, - 0x5c024000, 0x5c028000, 0x1c01f000, 0x59a80249, - 0x8c000508, 0x05000005, 0x599c0017, 0x8c00050a, - 0x05020002, 0x1c01f000, 0x90000541, 0x1c01f000, - 0x5930042c, 0x84000540, 0x4802642c, 0x1c01f000, - 0x4c640000, 0x05f1fb95, 0x59300203, 0x90000588, - 0x05020010, 0x60c8c800, 0x42000000, 0x20000000, - 0x41300800, 0x059dff7d, 0x0500000a, 0x59300203, - 0x90000588, 0x05020007, 0x60780000, 0x80000040, - 0x05fe07ff, 0x8064c840, 0x05fe07f4, 0x059df81b, - 0x05f1fb8d, 0x5c00c800, 0x1c01f000, 0x059dfbbf, - 0x059c0816, 0x59340403, 0x49265805, 0x49365806, - 0x65565a08, 0x48025c0a, 0x4a025c0b, 0x00001000, - 0x05f1fad2, 0x05000003, 0x4a025c0b, 0x00003000, - 0x59340802, 0x82040d00, 0x00ffffff, 0x59300403, - 0x82000580, 0x00000086, 0x42000000, 0x85000000, - 0x05020003, 0x42000000, 0x84000000, 0x80040540, - 0x4802580d, 0x59240005, 0x4802580e, 0x42000000, - 0x00990000, 0x59300c07, 0x90040d85, 0x05000002, - 0x8400052e, 0x59300c16, 0x8c04051a, 0x05000002, - 0x84000528, 0x4802580f, 0x497a5810, 0x59cc0004, - 0x48025811, 0x497a5812, 0x42000800, 0x00030300, - 0x59300403, 0x82000580, 0x00000086, 0x05020006, - 0x59cc0004, 0x48025814, 0x4a025815, 0x0000ffff, - 0x41780800, 0x48065813, 0x1c01f000, 0x492fc857, - 0x59a8289d, 0x801429c0, 0x05000055, 0x4c5c0000, - 0x4c600000, 0x4c640000, 0x4d2c0000, 0x4d300000, - 0x42026000, 0x00111a40, 0x592c0c0a, 0x592c100d, - 0x82081500, 0x00ffffff, 0x592c180e, 0x592c2011, - 0x40165800, 0x4014c000, 0x4014c800, 0x592c0208, - 0x82000580, 0x00000155, 0x05020035, 0x592c040a, - 0x80040580, 0x05020032, 0x592c000d, 0x82000500, - 0x00ffffff, 0x80080580, 0x0502002d, 0x592c000e, - 0x82000500, 0x00ffffff, 0x800c0580, 0x05020028, - 0x592c0011, 0x80100580, 0x05020025, 0x4c040000, - 0x4c080000, 0x4c0c0000, 0x4c100000, 0x40640000, - 0x812c0580, 0x05020014, 0x59300203, 0x90000580, - 0x0500000d, 0x59300009, 0x800001c0, 0x0500000a, - 0x05d9fee3, 0x4df00000, 0x05d9fde4, 0x05d9fbad, - 0x05020002, 0x64026203, 0x5c03e000, 0x05d80ecd, - 0x497a6009, 0x592cc800, 0x4064c000, 0x4064b800, - 0x0501f003, 0x592cb800, 0x485cc000, 0x64165a0a, - 0x0001fb82, 0x405e5800, 0x5c002000, 0x5c001800, - 0x5c001000, 0x5c000800, 0x0501f003, 0x412cc000, - 0x592e5800, 0x812e59c0, 0x05fe07c5, 0x4867509d, - 0x4863509e, 0x05e1fc7b, 0x5c026000, 0x5c025800, - 0x5c00c800, 0x5c00c000, 0x5c00b800, 0x1c01f000, - 0x602c0800, 0x0501f004, 0x60100800, 0x0501f002, - 0x60040800, 0x4d2c0000, 0x59325809, 0x812e59c0, - 0x0500000f, 0x592c0208, 0x82000500, 0x000000ff, - 0x9000058e, 0x0502000a, 0x592c0000, 0x48026009, - 0x497a5800, 0x48065a0c, 0x05cdfd9c, 0x05000003, - 0x05fdfe71, 0x0501f002, 0x0001fb82, 0x5c025800, - 0x1c01f000, 0x4d2c0000, 0x4803c856, 0x0501f83b, - 0x05020038, 0x91380595, 0x05020027, 0x59a800b6, - 0x90000594, 0x05020022, 0x59cc0c07, 0x82040580, - 0x00000102, 0x05020029, 0x59cc0a07, 0x5930021b, - 0x80040580, 0x05020027, 0x59cc0a0a, 0x90040594, - 0x05020026, 0x916c0583, 0x05020002, 0x05adf86c, - 0x05edfe45, 0x0500000d, 0x59325809, 0x59a80ccd, - 0x48065a0b, 0x59a808cf, 0x4806580f, 0x64025a0a, - 0x59a804cc, 0x90000503, 0x90000583, 0x05000002, - 0x64ca5a0a, 0x0001fb82, 0x59a804cc, 0x8400050c, - 0x480354cc, 0x4803c857, 0x0005ffdc, 0x5c025800, - 0x1c01f000, 0x4803c856, 0x05edfe2f, 0x05fc07f7, - 0x59325809, 0x64c65a0a, 0x64625810, 0x59cc0007, - 0x48025811, 0x05fdf7f0, 0x4807c857, 0x05fdf7f4, - 0x4807c857, 0x05fdf7f2, 0x4807c857, 0x05fdf7f0, - 0x4803c857, 0x05fdf7ee, 0x59300403, 0xb0000d9a, - 0x05000004, 0xb0000d9b, 0x05000002, 0xb0000d9c, - 0x1c01f000, 0x4933c857, 0x4867c857, 0x485fc857, - 0x4863c857, 0x4c500000, 0x4c540000, 0x4c580000, - 0x4d3c0000, 0x59327c1b, 0x5924100b, 0x82081500, - 0x00001fff, 0x405c0000, 0x80080580, 0x0500002b, - 0x480bc857, 0x4d400000, 0x4d3c0000, 0x4c080000, - 0x60aa8000, 0x600a7800, 0x41780800, 0x05adf87b, - 0x5c001000, 0x5c027800, 0x5c028000, 0x59a802cc, - 0x40000800, 0x82000540, 0x0f000000, 0x4802480b, - 0x853e7d40, 0x4c580000, 0x0501fa22, 0x42001800, - 0x0010e51f, 0x8058b040, 0x05000013, 0x580c200b, - 0x82100500, 0x00001fff, 0x80080580, 0x0502000c, - 0x580c0200, 0x82000500, 0x00008001, 0x82000580, - 0x00008001, 0x05000006, 0x82102500, 0xffffe000, - 0x80100541, 0x4800180b, 0x4803c857, 0x900c1c0d, - 0x05fdf7ed, 0x5c00b000, 0x6000b001, 0x4060a000, - 0x4200a800, 0x00110672, 0x50500000, 0x50540800, - 0x80040580, 0x05000002, 0x853e7d42, 0x5450a800, - 0x8050a000, 0x8054a800, 0x8058b040, 0x05fe07f7, - 0x59a800cf, 0x80640580, 0x0500001f, 0x59a814cc, - 0x480bc857, 0x90081503, 0x90081583, 0x05020009, - 0x90640582, 0x05000018, 0x90640583, 0x05020011, - 0x59a800ce, 0x90000582, 0x05000013, 0x0501f00d, - 0x90640581, 0x05000010, 0x90640582, 0x05020005, - 0x59a800ce, 0x90000582, 0x0502000b, 0x0501f008, - 0x59a800ce, 0x90000581, 0x05000007, 0x0501f004, - 0x4803c856, 0x853e7d46, 0x0501f003, 0x4803c856, - 0x853e7d44, 0x4867c857, 0x493fc857, 0x486750cf, - 0x493e641b, 0x5c027800, 0x5c00b000, 0x5c00a800, - 0x5c00a000, 0x1c01f000, 0x4817c857, 0x4c000000, - 0x4c040000, 0x8c14052a, 0x05000004, 0x59880123, - 0x80000000, 0x48031123, 0x8c14052e, 0x05000004, - 0x59880124, 0x80000000, 0x48031124, 0x8c14052c, - 0x05000013, 0x40140000, 0x82000500, 0x00070000, - 0x82000d80, 0x00030000, 0x0500000d, 0x82000d80, - 0x00040000, 0x0500000a, 0x82000d80, 0x00050000, - 0x05000007, 0x59880005, 0x80000000, 0x48031005, - 0x59880125, 0x80000000, 0x48031125, 0x5c000800, - 0x5c000000, 0x1c01f000, 0x4817c857, 0x4c000000, - 0x4c040000, 0x8c14052a, 0x05000004, 0x59880126, - 0x80000000, 0x48031126, 0x8c14052e, 0x05000004, - 0x59880127, 0x80000000, 0x48031127, 0x8c14052c, - 0x05000013, 0x40140000, 0x82000500, 0x00070000, - 0x82000d80, 0x00030000, 0x0500000d, 0x82000d80, - 0x00040000, 0x0500000a, 0x82000d80, 0x00050000, + 0x801021c0, 0x05980930, 0x58101c03, 0x601c2000, + 0x480fc857, 0x4813c857, 0x481bc857, 0x05a9f9c8, + 0x05b9fcf9, 0x5c002000, 0x5c001800, 0x5c000000, + 0x1c01f000, 0x8d0c0520, 0x05000009, 0x4d400000, + 0x4d200000, 0x61fe4001, 0x850e1d44, 0x60aa8000, + 0x05fdf9f8, 0x5c024000, 0x5c028000, 0x1c01f000, + 0x59a8024c, 0x8c000508, 0x05000005, 0x599c0017, + 0x8c00050a, 0x05020002, 0x1c01f000, 0x90000541, + 0x1c01f000, 0x5930042c, 0x84000540, 0x4802642c, + 0x1c01f000, 0x4c640000, 0x05f1f9d0, 0x4df00000, + 0x59300203, 0x90000588, 0x05020010, 0x60c8c800, + 0x42000000, 0x20000000, 0x41300800, 0x059df8bb, + 0x0500000a, 0x59300203, 0x90000588, 0x05020007, + 0x60780000, 0x80000040, 0x05fe07ff, 0x8064c840, + 0x05fe07f4, 0x0599f8f8, 0x5c03e000, 0x05f009ca, + 0x5c00c800, 0x1c01f000, 0x0599fc97, 0x059808f2, + 0x61fc01ff, 0x83340d80, 0x001141b4, 0x05000002, + 0x59340403, 0x49265805, 0x49365806, 0x65565a08, + 0x48025c0a, 0x4a025c0b, 0x00001000, 0x59a808d5, + 0x82040d00, 0x0000f000, 0x82040480, 0x00002000, + 0x05001003, 0x4a025c0b, 0x00003000, 0x59cc0801, + 0x82040d00, 0x00ffffff, 0x59300403, 0x82000580, + 0x00000086, 0x42000000, 0x85000000, 0x05020003, + 0x42000000, 0x84000000, 0x80040540, 0x4802580d, + 0x59240005, 0x4802580e, 0x42000000, 0x00990000, + 0x59300c07, 0x90040d85, 0x05000002, 0x8400052e, + 0x59300c16, 0x8c04051a, 0x05000002, 0x84000528, + 0x4802580f, 0x497a5810, 0x59cc0004, 0x48025811, + 0x497a5812, 0x42000800, 0x00030300, 0x59300403, + 0x82000580, 0x00000086, 0x05020006, 0x59cc0004, + 0x48025814, 0x4a025815, 0x0000ffff, 0x41780800, + 0x48065813, 0x1c01f000, 0x492fc857, 0x59a828a0, + 0x801429c0, 0x05000055, 0x4c5c0000, 0x4c600000, + 0x4c640000, 0x4d2c0000, 0x4d300000, 0x42026000, + 0x001159e4, 0x592c0c0a, 0x592c100d, 0x82081500, + 0x00ffffff, 0x592c180e, 0x592c2011, 0x40165800, + 0x4014c000, 0x4014c800, 0x592c0208, 0x82000580, + 0x00000155, 0x05020035, 0x592c040a, 0x80040580, + 0x05020032, 0x592c000d, 0x82000500, 0x00ffffff, + 0x80080580, 0x0502002d, 0x592c000e, 0x82000500, + 0x00ffffff, 0x800c0580, 0x05020028, 0x592c0011, + 0x80100580, 0x05020025, 0x4c040000, 0x4c080000, + 0x4c0c0000, 0x4c100000, 0x40640000, 0x812c0580, + 0x05020014, 0x59300203, 0x90000580, 0x0500000d, + 0x59300009, 0x800001c0, 0x0500000a, 0x05d9fc3a, + 0x4df00000, 0x05d9fb3a, 0x05d9f8ff, 0x05020002, + 0x64026203, 0x5c03e000, 0x05d80c24, 0x497a6009, + 0x592cc800, 0x4064c000, 0x4064b800, 0x0501f003, + 0x592cb800, 0x485cc000, 0x64165a0a, 0x0001fba8, + 0x405e5800, 0x5c002000, 0x5c001800, 0x5c001000, + 0x5c000800, 0x0501f003, 0x412cc000, 0x592e5800, + 0x812e59c0, 0x05fe07c5, 0x486750a0, 0x486350a1, + 0x05e1fa08, 0x5c026000, 0x5c025800, 0x5c00c800, + 0x5c00c000, 0x5c00b800, 0x1c01f000, 0x602c0800, + 0x0501f004, 0x60100800, 0x0501f002, 0x60040800, + 0x4d2c0000, 0x59325809, 0x812e59c0, 0x0500000f, + 0x592c0208, 0x82000500, 0x000000ff, 0x9000058e, + 0x0502000a, 0x592c0000, 0x48026009, 0x497a5800, + 0x48065a0c, 0x05cdf9bd, 0x05000003, 0x05fdfe67, + 0x0501f002, 0x0001fba8, 0x5c025800, 0x1c01f000, + 0x4d2c0000, 0x4803c856, 0x0501f83b, 0x05020038, + 0x91380595, 0x05020027, 0x59a800bb, 0x90000594, + 0x05020022, 0x59cc0c07, 0x82040580, 0x00000102, + 0x05020029, 0x59cc0a07, 0x5930021b, 0x80040580, + 0x05020027, 0x59cc0a0a, 0x90040594, 0x05020026, + 0x916c0583, 0x05020002, 0x05a9f9ac, 0x05edfc67, + 0x0500000d, 0x59325809, 0x59a80cd2, 0x48065a0b, + 0x59a808d4, 0x4806580f, 0x64025a0a, 0x59a804d1, + 0x90000503, 0x90000583, 0x05000002, 0x64ca5a0a, + 0x0001fba8, 0x59a804d1, 0x8400050c, 0x480354d1, + 0x4803c857, 0x0009f810, 0x5c025800, 0x1c01f000, + 0x4803c856, 0x05edfc51, 0x05fc07f7, 0x59325809, + 0x64c65a0a, 0x64625810, 0x59cc0007, 0x48025811, + 0x05fdf7f0, 0x4807c857, 0x05fdf7f4, 0x4807c857, + 0x05fdf7f2, 0x4807c857, 0x05fdf7f0, 0x4803c857, + 0x05fdf7ee, 0x59300403, 0xb0000d9a, 0x05000004, + 0xb0000d9b, 0x05000002, 0xb0000d9c, 0x1c01f000, + 0x4933c857, 0x4867c857, 0x485fc857, 0x4863c857, + 0x4c500000, 0x4c540000, 0x4c580000, 0x4d3c0000, + 0x59327c1b, 0x5924100b, 0x82081500, 0x00001fff, + 0x405c0000, 0x80080580, 0x0500002b, 0x480bc857, + 0x4d400000, 0x4d3c0000, 0x4c080000, 0x60aa8000, + 0x600a7800, 0x41780800, 0x05a9f9bb, 0x5c001000, + 0x5c027800, 0x5c028000, 0x59a802d1, 0x40000800, + 0x82000540, 0x0f000000, 0x4802480b, 0x853e7d40, + 0x4c580000, 0x0501fa36, 0x42001800, 0x001124c3, + 0x8058b040, 0x05000013, 0x580c200b, 0x82100500, + 0x00001fff, 0x80080580, 0x0502000c, 0x580c0200, + 0x82000500, 0x00008001, 0x82000580, 0x00008001, + 0x05000006, 0x82102500, 0xffffe000, 0x80100541, + 0x4800180b, 0x4803c857, 0x900c1c0d, 0x05fdf7ed, + 0x5c00b000, 0x6000b001, 0x4060a000, 0x4200a800, + 0x00114616, 0x50500000, 0x50540800, 0x80040580, + 0x05000002, 0x853e7d42, 0x5450a800, 0x8050a000, + 0x8054a800, 0x8058b040, 0x05fe07f7, 0x59a800d4, + 0x80640580, 0x0500001f, 0x59a814d1, 0x480bc857, + 0x90081503, 0x90081583, 0x05020009, 0x90640582, + 0x05000018, 0x90640583, 0x05020011, 0x59a800d3, + 0x90000582, 0x05000013, 0x0501f00d, 0x90640581, + 0x05000010, 0x90640582, 0x05020005, 0x59a800d3, + 0x90000582, 0x0502000b, 0x0501f008, 0x59a800d3, + 0x90000581, 0x05000007, 0x0501f004, 0x4803c856, + 0x853e7d46, 0x0501f003, 0x4803c856, 0x853e7d44, + 0x4867c857, 0x493fc857, 0x486750d4, 0x493e641b, + 0x5c027800, 0x5c00b000, 0x5c00a800, 0x5c00a000, + 0x1c01f000, 0x412c7800, 0x60047000, 0x583c7801, + 0x803c79c0, 0x05000003, 0x80387000, 0x05fdf7fc, + 0x599c0413, 0x80380480, 0x05021003, 0x80000580, + 0x1c01f000, 0x81780000, 0x1c01f000, 0x4817c857, + 0x4c000000, 0x4c040000, 0x8c14052a, 0x05000004, + 0x59880126, 0x80000000, 0x48031126, 0x8c14052e, + 0x05000004, 0x59880127, 0x80000000, 0x48031127, + 0x82140500, 0x00070000, 0x82000d80, 0x00050000, + 0x05020005, 0x42000000, 0x0011235f, 0x0501f8ac, + 0x0501f00f, 0x8c14052c, 0x0500000d, 0x82000d80, + 0x00030000, 0x0500000a, 0x82000d80, 0x00040000, 0x05000007, 0x59880005, 0x80000000, 0x48031005, 0x59880128, 0x80000000, 0x48031128, 0x5c000800, - 0x5c000000, 0x1c01f000, 0x4807c857, 0x4c000000, - 0x8c04052c, 0x05000004, 0x59880111, 0x80000000, - 0x48031111, 0x8c04052a, 0x05000004, 0x59880112, - 0x80000000, 0x48031112, 0x8c040528, 0x05000004, - 0x59880113, 0x80000000, 0x48031113, 0x8c040526, + 0x5c000000, 0x1c01f000, 0x4817c857, 0x4c000000, + 0x4c040000, 0x8c14052a, 0x05000004, 0x59880129, + 0x80000000, 0x48031129, 0x8c14052e, 0x05000004, + 0x5988012a, 0x80000000, 0x4803112a, 0x82140500, + 0x00070000, 0x82000d80, 0x00050000, 0x05020005, + 0x42000000, 0x0011235f, 0x0501f885, 0x0501f00f, + 0x8c14052c, 0x0500000d, 0x82000d80, 0x00030000, + 0x0500000a, 0x82000d80, 0x00040000, 0x05000007, + 0x59880005, 0x80000000, 0x48031005, 0x5988012b, + 0x80000000, 0x4803112b, 0x5c000800, 0x5c000000, + 0x1c01f000, 0x4807c857, 0x4c000000, 0x8c04052c, 0x05000004, 0x59880114, 0x80000000, 0x48031114, - 0x8c040524, 0x05000004, 0x59880115, 0x80000000, - 0x48031115, 0x8c040522, 0x05000004, 0x59880116, - 0x80000000, 0x48031116, 0x8c040520, 0x05000004, - 0x59880117, 0x80000000, 0x48031117, 0x5c000000, - 0x1c01f000, 0x4807c857, 0x4c000000, 0x59880118, - 0x80000000, 0x48031118, 0x5c000000, 0x1c01f000, - 0x4807c857, 0x4c000000, 0x8c04051c, 0x05000004, - 0x59880119, 0x80000000, 0x48031119, 0x8c04051a, - 0x05000004, 0x5988011a, 0x80000000, 0x4803111a, - 0x5c000000, 0x1c01f000, 0x4807c857, 0x4c000000, - 0x8c040518, 0x05000004, 0x5988011b, 0x80000000, - 0x4803111b, 0x8c040516, 0x05000004, 0x5988011c, - 0x80000000, 0x4803111c, 0x8c040514, 0x05000004, + 0x8c04052a, 0x05000004, 0x59880115, 0x80000000, + 0x48031115, 0x8c040528, 0x05000004, 0x59880116, + 0x80000000, 0x48031116, 0x8c040526, 0x05000004, + 0x59880117, 0x80000000, 0x48031117, 0x8c040524, + 0x05000004, 0x59880118, 0x80000000, 0x48031118, + 0x8c040522, 0x05000004, 0x59880119, 0x80000000, + 0x48031119, 0x8c040520, 0x05000004, 0x5988011a, + 0x80000000, 0x4803111a, 0x5c000000, 0x1c01f000, + 0x4807c857, 0x4c000000, 0x5988011b, 0x80000000, + 0x4803111b, 0x5c000000, 0x1c01f000, 0x4807c857, + 0x4c000000, 0x8c04051c, 0x05000004, 0x5988011c, + 0x80000000, 0x4803111c, 0x8c04051a, 0x05000004, 0x5988011d, 0x80000000, 0x4803111d, 0x5c000000, - 0x1c01f000, 0x4807c857, 0x4c000000, 0x8c040510, + 0x1c01f000, 0x4807c857, 0x4c000000, 0x8c040518, 0x05000004, 0x5988011e, 0x80000000, 0x4803111e, - 0x8c04050c, 0x05000004, 0x5988011f, 0x80000000, - 0x4803111f, 0x5c000000, 0x1c01f000, 0x4807c857, - 0x4c000000, 0x8c040508, 0x05000004, 0x59880120, - 0x80000000, 0x48031120, 0x8c040504, 0x05000004, - 0x59880121, 0x80000000, 0x48031121, 0x5c000000, - 0x1c01f000, 0x4807c856, 0x4c000000, 0x598800ea, - 0x80000000, 0x480310ea, 0x5c000000, 0x1c01f000, - 0x5c036000, 0x4db00000, 0x49b3c857, 0x4c040000, - 0x50000800, 0x80040800, 0x05001002, 0x44040000, - 0x5c000800, 0x1c01f000, 0x480fc857, 0x4c000000, - 0x900c0580, 0x05020004, 0x42000000, 0x0010e411, - 0x0501f012, 0x820c0580, 0x00001001, 0x05020004, - 0x42000000, 0x0010e412, 0x0501f00c, 0x820c0580, - 0x00001002, 0x05020004, 0x42000000, 0x0010e413, - 0x0501f006, 0x820c0c80, 0x0000201c, 0x059a1ddf, - 0x900c051f, 0x0c01f804, 0x05fdffde, 0x5c000000, - 0x1c01f000, 0x0010d01d, 0x0010d020, 0x0010d023, - 0x0010d026, 0x0010d029, 0x0010d02c, 0x0010d02f, - 0x0010d032, 0x0010d035, 0x0010d038, 0x0010d03b, - 0x0010d03e, 0x0010d041, 0x0010d044, 0x0010d047, - 0x0010d04a, 0x0010d04d, 0x0010d050, 0x0010d053, - 0x0010d056, 0x0010d059, 0x0010d05c, 0x0010d05f, - 0x0010d062, 0x0010d065, 0x0010d068, 0x0010d06b, - 0x0010d06e, 0x42000000, 0x0010e414, 0x1c01f000, - 0x42000000, 0x0010e415, 0x1c01f000, 0x42000000, - 0x0010e416, 0x1c01f000, 0x42000000, 0x0010e417, - 0x1c01f000, 0x42000000, 0x0010e418, 0x1c01f000, - 0x42000000, 0x0010e419, 0x1c01f000, 0x42000000, - 0x0010e41a, 0x1c01f000, 0x42000000, 0x0010e41b, - 0x1c01f000, 0x42000000, 0x0010e41c, 0x1c01f000, - 0x42000000, 0x0010e41d, 0x1c01f000, 0x42000000, - 0x0010e41e, 0x1c01f000, 0x42000000, 0x0010e41f, - 0x1c01f000, 0x42000000, 0x0010e420, 0x1c01f000, - 0x42000000, 0x0010e421, 0x1c01f000, 0x42000000, - 0x0010e422, 0x1c01f000, 0x42000000, 0x0010e423, - 0x1c01f000, 0x42000000, 0x0010e424, 0x1c01f000, - 0x42000000, 0x0010e425, 0x1c01f000, 0x42000000, - 0x0010e426, 0x1c01f000, 0x42000000, 0x0010e427, - 0x1c01f000, 0x42000000, 0x0010e428, 0x1c01f000, - 0x42000000, 0x0010e429, 0x1c01f000, 0x42000000, - 0x0010e42a, 0x1c01f000, 0x42000000, 0x0010e42b, - 0x1c01f000, 0x42000000, 0x0010e42c, 0x1c01f000, - 0x42000000, 0x0010e42d, 0x1c01f000, 0x42000000, - 0x0010e42e, 0x1c01f000, 0x42000000, 0x0010e42f, - 0x1c01f000, 0x480fc857, 0x4c000000, 0x900c0581, - 0x05020004, 0x42000000, 0x0010e394, 0x0501f00f, - 0x900c0582, 0x05020004, 0x42000000, 0x0010e395, - 0x0501f00a, 0x900c0583, 0x05020004, 0x42000000, - 0x0010e396, 0x0501f005, 0x900c0584, 0x05020004, - 0x42000000, 0x0010e397, 0x05fdff56, 0x5c000000, - 0x1c01f000, 0x4c000000, 0x59a80249, 0x4803c857, - 0x59240a00, 0x8c04050a, 0x05000010, 0x8c000506, - 0x05000004, 0x42000000, 0x0010e39f, 0x0501f011, - 0x8c00050a, 0x05000004, 0x42000000, 0x0010e39e, - 0x0501f00c, 0x8c000508, 0x05000004, 0x42000000, - 0x0010e3a1, 0x0501f007, 0x05c9f810, 0x05000006, - 0x8c000506, 0x05020004, 0x42000000, 0x0010e3a0, - 0x05fdff38, 0x5c000000, 0x1c01f000, 0x8058b1c0, - 0x05980d32, 0x5450a800, 0x8050a000, 0x8054a800, - 0x8058b040, 0x05fe07fc, 0x1c01f000, 0x8058b1c0, - 0x05980d2a, 0x4450a800, 0x8054a800, 0x8058b040, - 0x05fe07fd, 0x1c01f000, 0x4813c857, 0x4817c857, - 0x40140000, 0x80100480, 0x059a1d20, 0x497bc841, - 0x41787000, 0x42006800, 0x00140000, 0x59a800ca, - 0x8c000500, 0x05000003, 0x42006800, 0x0013a000, - 0x4837c857, 0x8010048d, 0x05021005, 0x8014048d, - 0x05001003, 0x40147000, 0x80342840, 0x61fc7801, - 0x40100000, 0x80140480, 0x82006d00, 0xffffff00, - 0x05020002, 0x40007800, 0x4813c840, 0x483fc842, - 0x05011000, 0x40100000, 0x803c2400, 0x40100000, - 0x80140580, 0x05fe07f3, 0x45782800, 0x803871c0, - 0x05000005, 0x40382800, 0x41787000, 0x80102000, - 0x05fdf7eb, 0x1c01f000, 0x8058b1c0, 0x05980cf7, - 0x50500000, 0x9c0001c0, 0x4400a800, 0x8050a000, - 0x8054a800, 0x8058b040, 0x05fe07fa, 0x1c01f000, - 0x4c000000, 0x59a80007, 0x8c00051c, 0x5c000000, - 0x1c01f000, 0x59a80007, 0x8c000518, 0x1c01f000, - 0x4200b000, 0x0010e511, 0x5058b000, 0x1c01f000, - 0x42006800, 0x0010e512, 0x58340406, 0x8c000502, - 0x05fc07f8, 0x6004b000, 0x1c01f000, 0x61906800, - 0x80346840, 0x05000006, 0x64070000, 0x40000000, - 0x59807000, 0x8c380500, 0x05fc07fa, 0x1c01f000, - 0x4c040000, 0x05fdfff6, 0x05020003, 0x80040840, - 0x05fe07fd, 0x5c000800, 0x1c01f000, 0x640f0000, - 0x40000000, 0x59800000, 0x8c000500, 0x05fc07fc, - 0x1c01f000, 0x42006800, 0x0010e512, 0x58340406, - 0x8c000504, 0x1c01f000, 0x42006800, 0x0010e511, - 0x50346800, 0x42007000, 0x0010e512, 0x58380200, - 0x8c000500, 0x05020004, 0x9038740d, 0x80346840, - 0x05fe07fb, 0x1c01f000, 0x42006800, 0x0010e512, - 0x58340406, 0x8c000508, 0x1c01f000, 0x42006800, - 0x0010e512, 0x58340406, 0x8c00050a, 0x1c01f000, - 0x59a80006, 0x8c000516, 0x1c01f000, 0x599c0017, - 0x8c00051e, 0x1c01f000, 0x42006800, 0x0010e511, - 0x50346800, 0x59cc7000, 0x42007800, 0x0010e512, - 0x583c0005, 0x80380580, 0x82000500, 0x00ffffff, - 0x05000006, 0x80346840, 0x05000003, 0x903c7c0d, - 0x05fdf7f8, 0x90000541, 0x1c01f000, 0x59a86a49, - 0x8c34050a, 0x0500000a, 0x8c340514, 0x05000008, - 0x42006800, 0x0010e511, 0x50346800, 0xb0340481, - 0x05001004, 0x599c0017, 0x8c00050a, 0x1c01f000, - 0x80000580, 0x05fdf7fe, 0x59a80006, 0x8c000518, - 0x05000002, 0x8d0c0520, 0x1c01f000, 0x00000001, - 0x00000002, 0x00000004, 0x00000008, 0x00000010, - 0x00000020, 0x00000040, 0x00000080, 0x00000100, - 0x00000200, 0x00000400, 0x00000800, 0x00001000, - 0x00002000, 0x00004000, 0x00008000, 0x00010000, - 0x00020000, 0x00040000, 0x00080000, 0x00100000, - 0x00200000, 0x00400000, 0x00800000, 0x01000000, - 0x02000000, 0x04000000, 0x08000000, 0x10000000, - 0x20000000, 0x40000000, 0x80000000, 0x0010e512, - 0x0010e51f, 0x0010e52c, 0x0010e539, 0x0010e546, - 0x0010e553, 0x0010e560, 0x0010e56d, 0x0010e57a, - 0x0010e587, 0x0010e594, 0x0010e5a1, 0x0010e5ae, - 0x0010e5bb, 0x0010e5c8, 0x0010e5d5, 0x0010e5e2, - 0x0010e5ef, 0x0010e5fc, 0x0010e609, 0x0010e616, - 0x0010e623, 0x0010e630, 0x0010e63d, 0x0010e64a, - 0x0010e657, 0x0010e664, 0x0010e671, 0x0010e67e, - 0x0010e68b, 0x0010e698, 0x0010e6a5, 0x0010e6b2, - 0x0010e6bf, 0x0010e6cc, 0x0010e6d9, 0x0010e6e6, - 0x0010e6f3, 0x0010e700, 0x0010e70d, 0x0010e71a, - 0x0010e727, 0x0010e734, 0x0010e741, 0x0010e74e, - 0x0010e75b, 0x0010e768, 0x0010e775, 0x0010e782, - 0x0010e78f, 0x0010e79c, 0x0010e7a9, 0x0010e7b6, - 0x0010e7c3, 0x0010e7d0, 0x0010e7dd, 0x0010e7ea, - 0x0010e7f7, 0x0010e804, 0x0010e811, 0x0010e81e, - 0x0010e82b, 0x0010e838, 0x0010e845, 0x0010e852, - 0x0010e85f, 0x0010e86c, 0x0010e879, 0x0010e886, - 0x0010e893, 0x0010e8a0, 0x0010e8ad, 0x0010e8ba, - 0x0010e8c7, 0x0010e8d4, 0x0010e8e1, 0x0010e8ee, - 0x0010e8fb, 0x0010e908, 0x0010e915, 0x0010e922, - 0x0010e92f, 0x0010e93c, 0x0010e949, 0x0010e956, - 0x0010e963, 0x0010e970, 0x0010e97d, 0x0010e98a, - 0x0010e997, 0x0010e9a4, 0x0010e9b1, 0x0010e9be, - 0x0010e9cb, 0x0010e9d8, 0x0010e9e5, 0x0010e9f2, - 0x0010e9ff, 0x0010ea0c, 0x0010ea19, 0x0010ea26, - 0x0010ea33, 0x0010ea40, 0x0010ea4d, 0x0010ea5a, - 0x0010ea67, 0x0010ea74, 0x0010ea81, 0x0010ea8e, - 0x0010ea9b, 0x0010eaa8, 0x0010eab5, 0x0010eac2, - 0x0010eacf, 0x0010eadc, 0x0010eae9, 0x0010eaf6, - 0x0010eb03, 0x0010eb10, 0x0010eb1d, 0x0010eb2a, - 0x0010eb37, 0x0010eb44, 0x0010eb51, 0x0010eb5e, - 0x0010eb6b, 0x0010eb78, 0x0010eb85, 0x0010eb92, - 0x0010eb9f, 0x0010ebac, 0x0010ebb9, 0x0010ebc6, - 0x0010ebd3, 0x0010ebe0, 0x0010ebed, 0x0010ebfa, - 0x0010ec07, 0x0010ec14, 0x0010ec21, 0x0010ec2e, - 0x0010ec3b, 0x0010ec48, 0x0010ec55, 0x0010ec62, - 0x0010ec6f, 0x0010ec7c, 0x0010ec89, 0x0010ec96, - 0x0010eca3, 0x0010ecb0, 0x0010ecbd, 0x0010ecca, - 0x0010ecd7, 0x0010ece4, 0x0010ecf1, 0x0010ecfe, - 0x0010ed0b, 0x0010ed18, 0x0010ed25, 0x0010ed32, - 0x0010ed3f, 0x0010ed4c, 0x0010ed59, 0x0010ed66, - 0x0010ed73, 0x0010ed80, 0x0010ed8d, 0x0010ed9a, - 0x0010eda7, 0x0010edb4, 0x0010edc1, 0x0010edce, - 0x0010eddb, 0x0010ede8, 0x0010edf5, 0x0010ee02, - 0x0010ee0f, 0x0010ee1c, 0x0010ee29, 0x0010ee36, - 0x0010ee43, 0x0010ee50, 0x0010ee5d, 0x0010ee6a, - 0x0010ee77, 0x0010ee84, 0x0010ee91, 0x0010ee9e, - 0x0010eeab, 0x0010eeb8, 0x0010eec5, 0x0010eed2, - 0x0010eedf, 0x0010eeec, 0x0010eef9, 0x0010ef06, - 0x0010ef13, 0x0010ef20, 0x0010ef2d, 0x0010ef3a, - 0x0010ef47, 0x0010ef54, 0x0010ef61, 0x0010ef6e, - 0x0010ef7b, 0x0010ef88, 0x0010ef95, 0x0010efa2, - 0x0010efaf, 0x0010efbc, 0x0010efc9, 0x0010efd6, - 0x0010efe3, 0x0010eff0, 0x0010effd, 0x0010f00a, - 0x0010f017, 0x0010f024, 0x0010f031, 0x0010f03e, - 0x0010f04b, 0x0010f058, 0x0010f065, 0x0010f072, - 0x0010f07f, 0x0010f08c, 0x0010f099, 0x0010f0a6, - 0x0010f0b3, 0x0010f0c0, 0x0010f0cd, 0x0010f0da, - 0x0010f0e7, 0x0010f0f4, 0x0010f101, 0x0010f10e, - 0x0010f11b, 0x0010f128, 0x0010f135, 0x0010f142, - 0x0010f14f, 0x0010f15c, 0x0010f169, 0x0010f176, - 0x0010f183, 0x0010f190, 0x0010f19d, 0x0010f1aa, - 0x0010f1b7, 0x0010f1c4, 0x0010f1d1, 0x0010f1de, - 0x0010f1eb, 0x0010f1f8, 0x0010f205, 0x40000000, - 0x600070e0, 0x60007820, 0x4a007016, 0x00010001, - 0x58380016, 0x8c000500, 0x05fc07fc, 0x600c4000, - 0x60003002, 0x64807808, 0x583c2808, 0x8c14053e, - 0x05000004, 0x80183040, 0x05fe07fc, 0x0501f00d, - 0x583c2808, 0x82140500, 0x20000400, 0x82000580, - 0x00000400, 0x05020005, 0x82140500, 0x00000300, - 0x90000580, 0x05000007, 0x80204040, 0x05fe07ee, - 0x4a007016, 0x00010000, 0x90000541, 0x0501f040, - 0x650c7808, 0x583c0009, 0x8c000500, 0x05000005, - 0x60002000, 0x4a007016, 0x00010000, 0x0501f037, - 0x65007808, 0x583c5809, 0x65047808, 0x583c6009, - 0x65087808, 0x583c6809, 0x4a007016, 0x00010000, - 0x82102d00, 0xf0000000, 0x90140580, 0x05000002, - 0x0501f020, 0x60202800, 0x60003000, 0x803000c8, - 0x40003800, 0x8030010a, 0x801c3d80, 0x40300000, - 0x80180580, 0x80100400, 0x801c0400, 0x802c5c00, - 0x803400c8, 0x40003800, 0x8034010a, 0x801c3d80, - 0x40340000, 0x80180580, 0x801c0400, 0x80306400, - 0x802c00c8, 0x40003800, 0x802c010a, 0x801c3d80, - 0x402c0000, 0x80180580, 0x801c0400, 0x80346c00, - 0x82183400, 0x9e3779b9, 0x80142840, 0x05fe07e4, - 0x0502000b, 0x402c0000, 0x80040580, 0x05fe07c7, - 0x40300000, 0x80080580, 0x05fe07c4, 0x40340000, - 0x800c0580, 0x05fe07c1, 0x80000580, 0x1c01f000, - 0x1c01f000, 0x42005000, 0x7ff4c000, 0x58280800, - 0x58281001, 0x58281802, 0x58282003, 0x05fdff98, - 0x05020807, 0x82101d00, 0x0fffffff, 0x480fc021, - 0x900c01c0, 0x4803c022, 0x1c01f000, 0x497bc021, - 0x497bc022, 0x4a03c020, 0x00004020, 0x4a03c011, - 0x40200011, 0x6016d800, 0x05027011, 0x59e00020, - 0x90000582, 0x0502000e, 0x05006000, 0x4203e000, - 0x40000000, 0x59e00017, 0x60000800, 0x8c00050a, - 0x05a20bd4, 0x8d0c0530, 0x05a20bc7, 0x05a20bc9, - 0x6403c017, 0x4203e000, 0x30000001, 0x0599fcb5, - 0x05fdf7ff, 0x59a808d1, 0x8c100502, 0x05000003, - 0x84040d42, 0x0501f007, 0x8c100504, 0x05000003, - 0x84040d44, 0x0501f003, 0x8c100500, 0x84040d40, - 0x480750d1, 0x1c01f000, 0x59a800d1, 0x8c000502, - 0x05000009, 0x4a0350d2, 0x0000008b, 0x4a0350d3, - 0x0000008b, 0x4a0350d4, 0x0000008b, 0x641350d5, - 0x0501f00c, 0x8c000504, 0x05000006, 0x65bf50d2, - 0x65bf50d3, 0x65df50d4, 0x640350d5, 0x0501f005, - 0x64cf50d2, 0x64cf50d3, 0x649750d4, 0x640350d5, - 0x1c01f000, 0x9d56cdac, 0x00000000, 0x00000000, - 0x00112000, 0x0000317e, 0x00000000, 0x00000000, - 0x00020000, 0x000011a6, 0x916c0583, 0x01020177, - 0x42000000, 0x0010dd03, 0x50000000, 0x800001c0, - 0x05020a3e, 0x0501f9fb, 0x0501ffd5, 0x0501fb93, - 0x8d0c0516, 0x05000f50, 0x8d0c0516, 0x05000e06, - 0x59a800a2, 0x80000540, 0x01060ac5, 0x0505fc83, - 0x05fdf7ee, 0x835c0480, 0x00000104, 0x010411a5, - 0x416a5800, 0x592ed000, 0x497a5800, 0x497a5801, - 0x815eb840, 0x812e59c0, 0x1c01f000, 0x42007000, - 0x000211a7, 0x58380004, 0x49781000, 0x64001002, - 0x48087004, 0x80000d40, 0x05020006, 0x48087005, - 0x58380000, 0x80000540, 0x0500000a, 0x1c01f000, - 0x48080800, 0x05fdf7fb, 0x42007000, 0x000211a7, - 0x58380000, 0x80000540, 0x05000002, 0x1c01f000, - 0x58380807, 0x800409c0, 0x01060234, 0x58380005, - 0x80006d40, 0x05020002, 0x1c01f000, 0x58340000, - 0x48347001, 0x80000540, 0x05020002, 0x48007004, - 0x48007005, 0x4a03b805, 0x30000002, 0x58340007, - 0x59dc0806, 0x4803b800, 0x58340008, 0x4803b801, - 0x58340806, 0x4807b81f, 0x58340805, 0x58341003, - 0x58340001, 0x48047002, 0x48087003, 0x480bb803, - 0x8c000500, 0x05020004, 0x64087000, 0x6407c824, - 0x0501f004, 0x64047000, 0x6503c824, 0x0105f25b, - 0x58380802, 0x600011fe, 0x82040480, 0x0000ff00, - 0x05021003, 0x40041000, 0x80000580, 0x48007002, - 0x480bb802, 0x4a03b805, 0x10000002, 0x1c01f000, - 0x59dc0806, 0x4a03b805, 0x20000000, 0x8c04053e, - 0x05000009, 0x8c040508, 0x01020dda, 0x42007000, - 0x000211a7, 0x58380000, 0x90001484, 0x0c001003, - 0x0101fdda, 0x1c01f000, 0x00020036, 0x00020078, - 0x0002007f, 0x001014e8, 0x82040d00, 0x43200f80, - 0x01060268, 0x58380002, 0x80000540, 0x05000008, - 0x0105f25b, 0x82040d00, 0x43200f80, 0x01060268, - 0x58380002, 0x80000540, 0x05fe07d6, 0x58386001, - 0x58300009, 0x4a006002, 0x00000100, 0x64007000, - 0x80001540, 0x05fc07ab, 0x59dc0000, 0x48006007, - 0x59dc0001, 0x48006008, 0x0809f800, 0x05fdf79f, - 0x84040d1e, 0x59e00017, 0x8c00050c, 0x05020007, - 0x59a818a0, 0x800400c4, 0x800c1c00, 0x580c0003, - 0x8c000500, 0x05000008, 0x59a800a2, 0x4c000000, - 0x0105fab6, 0x5c000000, 0x80000540, 0x01060280, - 0x1c01f000, 0x4d2c0000, 0x4c040000, 0x4c0c0000, - 0x05fdff71, 0x5c001800, 0x5c000800, 0x05000014, - 0x82040400, 0x0010df60, 0x50000000, 0x48025806, - 0x64025801, 0x64125805, 0x64065804, 0x900c0402, - 0x48025803, 0x580c0000, 0x48025807, 0x580c0001, - 0x48025808, 0x4a025809, 0x000200bf, 0x4806580a, - 0x412c1000, 0x5c025800, 0x05fdf765, 0x5c025800, - 0x0105f2b6, 0x58300802, 0x82040580, 0x00000100, - 0x01060275, 0x4d2c0000, 0x40325800, 0x0105f993, - 0x5c025800, 0x0105f280, 0x59b800ea, 0x82000d00, - 0xf2000038, 0x010603f7, 0x8c000510, 0x010403f6, - 0x59ba60e0, 0x81300182, 0x0502104c, 0x05002030, - 0x8532653e, 0x59300407, 0x90000583, 0x0502002a, - 0x59300203, 0x90000584, 0x05020027, 0x59325809, - 0x59300004, 0x4a025a08, 0x00000103, 0x497a580d, - 0x8c00053e, 0x0502001a, 0x59300008, 0x82000500, - 0x04000800, 0x82000580, 0x04000800, 0x05000017, - 0x0501fa9c, 0x59325827, 0x812e59c0, 0x01060993, - 0x5932680a, 0x0505fef1, 0x5934000f, 0x8d0c0512, - 0x05020005, 0x5934140b, 0x80081040, 0x05001002, - 0x480a6c0b, 0x80000540, 0x05020a19, 0x59b800ea, - 0x8c000510, 0x05fe07d7, 0x1c01f000, 0x0145f8b9, - 0x05fc07e6, 0x0105f3ef, 0x59300221, 0x48025c13, - 0x05fdf7e8, 0x61567000, 0x0501f024, 0x83326500, - 0x3fffffff, 0x59300407, 0x90000583, 0x05020015, - 0x59325809, 0x5932680a, 0x4a025a08, 0x00000103, - 0x497a580d, 0x0501fa77, 0x59325827, 0x812e59c0, - 0x01060992, 0x0505fecd, 0x5934000f, 0x8d0c0512, - 0x05020005, 0x5934140b, 0x80081040, 0x05001002, - 0x480a6c0b, 0x80000540, 0x050209f5, 0x05fdf7dc, - 0x61527000, 0x0501f009, 0x83300500, 0x60000000, - 0x05000013, 0x81326580, 0x8000013a, 0x82000400, - 0x00100bfb, 0x50027000, 0x59300c07, 0x90040580, - 0x010403ef, 0x90040582, 0x010403ef, 0x59300004, - 0x8c00053e, 0x05020003, 0x0505fed4, 0x05fdf7c8, - 0x0145f8b9, 0x05fc07fd, 0x0105f3ef, 0x83300500, - 0x1f000000, 0x010403f1, 0x81326580, 0x80000130, - 0x90000c97, 0x01021dda, 0x1201f000, 0x00100bff, - 0x82000500, 0xf0000000, 0x82040d00, 0x0fffffff, - 0x80040d40, 0x4807c857, 0x59b800ea, 0x8c000516, - 0x0106051a, 0x480770e1, 0x1c01f000, 0x59325809, - 0x412c7000, 0x58380a08, 0x82040d00, 0x000000ff, - 0xb00405a8, 0x01040786, 0xb00405aa, 0x01040786, - 0xb00405ba, 0x0104079f, 0xb00405b2, 0x0104079f, - 0x58380a08, 0x9004050f, 0x82000c00, 0x001012ac, - 0x50044000, 0x0c01f001, 0x00100f85, 0x00100f85, - 0x00020168, 0x00100f85, 0x00100f85, 0x00100f85, - 0x00100f85, 0x00100f85, 0x00020176, 0x00100fa5, - 0x00100f85, 0x00100f85, 0x00100f85, 0x00100f85, - 0x00100f85, 0x00100f85, 0x5838040e, 0x8c000500, - 0x01000dda, 0x50200000, 0x80387c00, 0x583c1002, - 0x583c2800, 0x583c2001, 0x58380a0b, 0x58383013, - 0x59303808, 0x58380011, 0x48026014, 0x0501f00e, - 0x5838020e, 0x8c000502, 0x01040785, 0x50200000, - 0x80387c00, 0x583c2800, 0x583c2001, 0x583c1002, - 0x592c0a0b, 0x592c3013, 0x59303808, 0x497a6014, - 0x497a6015, 0x48166010, 0x48126011, 0x480a6012, - 0x481a6013, 0x80040840, 0x4806600f, 0x010607cc, - 0x841c3d40, 0x481e6008, 0x1c01f000, 0x4d2c0000, - 0x59325809, 0x592c0a08, 0x4807c857, 0x82040d00, - 0x000000ff, 0x9004050f, 0x1201f000, 0x001010f0, - 0x41787800, 0x59325809, 0x592c0c0e, 0x8c040502, - 0x01080120, 0x592c0011, 0x592c1013, 0x592c0a08, - 0x480a6013, 0x48026014, 0x48026015, 0x82040d00, - 0x000000ff, 0xb00405b2, 0x01080126, 0xb00405ba, - 0x01080126, 0x412c3000, 0x9004050f, 0x82000400, - 0x001012ac, 0x50003800, 0x8c3c050e, 0x05000002, - 0x801c3800, 0x501c0000, 0x592c1a0b, 0x4802600c, - 0x481a600d, 0x481e600e, 0x480e600f, 0x843c7d4a, - 0x403c1000, 0x1c01f000, 0x59e00004, 0x8c00050e, - 0x05fe06ac, 0x1c01f000, 0x42001000, 0x001105e7, - 0x5808000a, 0x80000540, 0x010a06ac, 0x4a001003, - 0x001105f1, 0x4c080000, 0x0501f812, 0x5c001000, - 0x4814100a, 0x480c1007, 0x48101008, 0x64001001, - 0x64101005, 0x64041004, 0x05fdf655, 0x58300802, - 0x82040580, 0x00000100, 0x010a06bb, 0x82300580, - 0x001105e7, 0x010a06b6, 0x4978600a, 0x1c01f000, - 0x61901800, 0x800c1840, 0x05000006, 0x64070000, - 0x40000000, 0x59800000, 0x8c000500, 0x05fc07fa, - 0x01080706, 0x600028f4, 0x58142024, 0x58141823, - 0x58142825, 0x64030000, 0x1c01f000, 0x4c000000, - 0x4df00000, 0x4203e000, 0xb0100000, 0x41f00000, - 0x81fe1500, 0x8d080512, 0x010e092d, 0x8d08051c, - 0x05060ccd, 0x8d080518, 0x05060d00, 0x8d08051a, - 0x05fe0ed6, 0x83080500, 0x00000d00, 0x05020804, - 0x5c03e000, 0x5c000000, 0x1801f000, 0x8d080516, - 0x010a0f6d, 0x8d080514, 0x05fe0fbc, 0x8d080508, - 0x010a0b68, 0x8d080500, 0x05060c27, 0x8d08050c, - 0x010e0830, 0x8d08050a, 0x010a049f, 0x1c01f000, - 0x42000000, 0x0010dd09, 0x50000000, 0x8c000504, - 0x05000013, 0x8c000508, 0x05020004, 0x8c000502, - 0x05020002, 0x1c01f000, 0x4df00000, 0x4203e000, - 0x50000000, 0x42034000, 0x0010dceb, 0x59a0001e, - 0x59a1d806, 0x84000502, 0x4803401e, 0x58ec0009, - 0x0801f800, 0x5c03e000, 0x1c01f000, 0x05027002, - 0x05026002, 0x1c01f000, 0x4df00000, 0x4203e000, - 0x50000000, 0x59e00020, 0xb0000d85, 0x05000003, - 0xb0000d84, 0x05020007, 0x4803c857, 0x42000800, - 0x000211a7, 0x58040800, 0x90040d80, 0x05020019, - 0x0105f982, 0x05000017, 0x412dd800, 0x48efc857, - 0x0125f8b5, 0x42034000, 0x0010dceb, 0x49a1d80b, - 0x48ef4006, 0x59a0001e, 0x84000544, 0x4803401e, - 0x59e00020, 0x4803c857, 0x59e00021, 0x4803c857, - 0x59e00022, 0x4803c857, 0x59e00023, 0x4803c857, - 0x59e00024, 0x4803c857, 0x0115f957, 0x0115f96f, - 0x5c03e000, 0x1c01f000, 0x4c5c0000, 0x4da00000, - 0x4df00000, 0x4203e000, 0x50000000, 0x05006062, - 0x42034000, 0x0010dceb, 0x59a01018, 0x59a01819, - 0x800c19c0, 0x05020009, 0x59a0381c, 0x801c39c0, - 0x01000dda, 0x49a3c857, 0x481fc857, 0x59a0041d, - 0x801c3c00, 0x0501f00a, 0x59a0041a, 0x90000402, - 0x4803441a, 0x90000c97, 0x05001003, 0x497b441a, - 0x41780000, 0x59a03817, 0x801c3c00, 0x401cb800, - 0x80081040, 0x480b4018, 0x581c0200, 0x4803c021, - 0x581c0401, 0x4803c022, 0x581c0201, 0x4803c023, - 0x581c0400, 0x4803c020, 0x900001c0, 0x90000552, - 0x4803c011, 0x8d0c0530, 0x0500000f, 0x4c080000, - 0x4c0c0000, 0x4c1c0000, 0x59e00017, 0x8c00050a, - 0x05000004, 0x60000800, 0x05fdfe16, 0x0501f003, - 0x8c000500, 0x05fe0f3d, 0x5c003800, 0x5c001800, - 0x5c001000, 0x6403c017, 0x4203e000, 0x30000001, - 0x800c19c0, 0x05000007, 0x800c1840, 0x480f4019, - 0x0502001b, 0x497b441a, 0x497b421a, 0x0501f018, - 0x800811c0, 0x0502000a, 0x4d2c0000, 0x59a2581c, - 0x0105f992, 0x5c025800, 0x497b401c, 0x497b401b, - 0x497b441d, 0x497b421d, 0x0501f00d, 0x59a0041d, - 0x90000402, 0x90000c96, 0x4803441d, 0x05001008, - 0x4d2c0000, 0x59a2581c, 0x592c3817, 0x481f401c, - 0x497b441d, 0x0105f992, 0x5c025800, 0x8d0c052a, - 0x05000009, 0x60083800, 0x42000800, 0x25000000, - 0x585c1800, 0x585c3001, 0x900c19c0, 0x901831c0, - 0x0101fea6, 0x5c03e000, 0x5c034000, 0x5c00b800, - 0x1c01f000, 0x8d0c0520, 0x05000003, 0x59a80005, - 0x8c000516, 0x1c01f000, 0x910c0503, 0x012a02dd, - 0x59340400, 0x82000580, 0x00000606, 0x012a02b7, - 0x5934000d, 0x80027d40, 0x012a02e6, 0x592c1003, - 0x5808020a, 0x8c000500, 0x05000005, 0x592c1813, - 0x5808000d, 0x800c0400, 0x4800100d, 0x5934000f, - 0x59341203, 0x80080540, 0x05020021, 0x8d0c0512, - 0x05000010, 0x0505fcf0, 0x05000017, 0x59a800d2, - 0x80000040, 0x05fe07ff, 0x492e6009, 0x4936600a, - 0x58d400ea, 0x8c000516, 0x05fe07fe, 0x83300400, - 0x20000000, 0x4801a8e1, 0x80000580, 0x1c01f000, - 0x5934000b, 0x80001920, 0x82000500, 0x0000ffff, - 0x800c0480, 0x0502100a, 0x800c1800, 0x480e6c0b, - 0x05fdf7e9, 0x8d0c0512, 0x05020005, 0x59341c0b, - 0x800c1840, 0x480e6c0b, 0x59341203, 0x0501f803, - 0x80000580, 0x1c01f000, 0x800811c0, 0x05020002, - 0x64066a03, 0x59340010, 0x492e6810, 0x80000d40, - 0x05020008, 0x492e680f, 0x592c040a, 0x800000c2, - 0x800018c4, 0x800c0400, 0x48025807, 0x1c01f000, - 0x492c0800, 0x05fdf7f9, 0x83440c80, 0x00000800, - 0x05021009, 0x83440400, 0x0010d400, 0x50000000, - 0x80000540, 0x05000004, 0x40026800, 0x80000580, - 0x1c01f000, 0x90000541, 0x1c01f000, 0x59340203, - 0x80000540, 0x05020036, 0x4d300000, 0x4d2c0000, - 0x5934000f, 0x80025d40, 0x0500002f, 0x0505fcaa, - 0x05000021, 0x592c0000, 0x4802680f, 0x80000540, - 0x05020002, 0x48026810, 0x592c2a08, 0x4936600a, - 0x4c080000, 0x012dfdc8, 0x5c001000, 0x05000025, - 0x492e6009, 0x8d0c0512, 0x05000010, 0x58d400ea, + 0x8c040516, 0x05000004, 0x5988011f, 0x80000000, + 0x4803111f, 0x8c040514, 0x05000004, 0x59880120, + 0x80000000, 0x48031120, 0x5c000000, 0x1c01f000, + 0x4807c857, 0x4c000000, 0x8c040510, 0x05000004, + 0x59880121, 0x80000000, 0x48031121, 0x8c04050c, + 0x05000004, 0x59880122, 0x80000000, 0x48031122, + 0x5c000000, 0x1c01f000, 0x4807c857, 0x4c000000, + 0x8c040508, 0x05000004, 0x59880123, 0x80000000, + 0x48031123, 0x8c040504, 0x05000004, 0x59880124, + 0x80000000, 0x48031124, 0x5c000000, 0x1c01f000, + 0x4807c856, 0x4c000000, 0x598800ed, 0x80000000, + 0x480310ed, 0x5c000000, 0x1c01f000, 0x5c036000, + 0x4db00000, 0x49b3c857, 0x4c040000, 0x50000800, + 0x80040800, 0x05001002, 0x44040000, 0x5c000800, + 0x1c01f000, 0x480fc857, 0x4c000000, 0x900c0580, + 0x05020004, 0x42000000, 0x001123b2, 0x0501f012, + 0x820c0580, 0x00001001, 0x05020004, 0x42000000, + 0x001123b3, 0x0501f00c, 0x820c0580, 0x00001002, + 0x05020004, 0x42000000, 0x001123b4, 0x0501f006, + 0x820c0c80, 0x0000201c, 0x05961e9f, 0x900c051f, + 0x0c01f804, 0x05fdffde, 0x5c000000, 0x1c01f000, + 0x0010d798, 0x0010d79b, 0x0010d79e, 0x0010d7a1, + 0x0010d7a4, 0x0010d7a7, 0x0010d7aa, 0x0010d7ad, + 0x0010d7b0, 0x0010d7b3, 0x0010d7b6, 0x0010d7b9, + 0x0010d7bc, 0x0010d7bf, 0x0010d7c2, 0x0010d7c5, + 0x0010d7c8, 0x0010d7cb, 0x0010d7ce, 0x0010d7d1, + 0x0010d7d4, 0x0010d7d7, 0x0010d7da, 0x0010d7dd, + 0x0010d7e0, 0x0010d7e3, 0x0010d7e6, 0x0010d7e9, + 0x42000000, 0x001123b5, 0x1c01f000, 0x42000000, + 0x001123b6, 0x1c01f000, 0x42000000, 0x001123b7, + 0x1c01f000, 0x42000000, 0x001123b8, 0x1c01f000, + 0x42000000, 0x001123b9, 0x1c01f000, 0x42000000, + 0x001123ba, 0x1c01f000, 0x42000000, 0x001123bb, + 0x1c01f000, 0x42000000, 0x001123bc, 0x1c01f000, + 0x42000000, 0x001123bd, 0x1c01f000, 0x42000000, + 0x001123be, 0x1c01f000, 0x42000000, 0x001123bf, + 0x1c01f000, 0x42000000, 0x001123c0, 0x1c01f000, + 0x42000000, 0x001123c1, 0x1c01f000, 0x42000000, + 0x001123c2, 0x1c01f000, 0x42000000, 0x001123c3, + 0x1c01f000, 0x42000000, 0x001123c4, 0x1c01f000, + 0x42000000, 0x001123c5, 0x1c01f000, 0x42000000, + 0x001123c6, 0x1c01f000, 0x42000000, 0x001123c7, + 0x1c01f000, 0x42000000, 0x001123c8, 0x1c01f000, + 0x42000000, 0x001123c9, 0x1c01f000, 0x42000000, + 0x001123ca, 0x1c01f000, 0x42000000, 0x001123cb, + 0x1c01f000, 0x42000000, 0x001123cc, 0x1c01f000, + 0x42000000, 0x001123cd, 0x1c01f000, 0x42000000, + 0x001123ce, 0x1c01f000, 0x42000000, 0x001123cf, + 0x1c01f000, 0x42000000, 0x001123d0, 0x1c01f000, + 0x480fc857, 0x4c000000, 0x900c0585, 0x05020004, + 0x42000000, 0x00112335, 0x0501f00f, 0x900c0582, + 0x05020004, 0x42000000, 0x00112336, 0x0501f00a, + 0x900c0583, 0x05020004, 0x42000000, 0x00112337, + 0x0501f005, 0x900c0584, 0x05020004, 0x42000000, + 0x00112338, 0x05fdff56, 0x5c000000, 0x1c01f000, + 0x4c000000, 0x59a8024c, 0x4803c857, 0x59240a00, + 0x8c04050a, 0x05000010, 0x8c000506, 0x05000004, + 0x42000000, 0x00112340, 0x0501f011, 0x8c00050a, + 0x05000004, 0x42000000, 0x0011233f, 0x0501f00c, + 0x8c000508, 0x05000004, 0x42000000, 0x00112342, + 0x0501f007, 0x05c5fb7f, 0x05000006, 0x8c000506, + 0x05020004, 0x42000000, 0x00112341, 0x05fdff38, + 0x5c000000, 0x1c01f000, 0x8058b1c0, 0x05940df2, + 0x5450a800, 0x8050a000, 0x8054a800, 0x8058b040, + 0x05fe07fc, 0x1c01f000, 0x8058b1c0, 0x05940dea, + 0x4450a800, 0x8054a800, 0x8058b040, 0x05fe07fd, + 0x1c01f000, 0x4813c857, 0x4817c857, 0x40140000, + 0x80100480, 0x05961de0, 0x497bc841, 0x41787000, + 0x42006800, 0x00140000, 0x59a800cf, 0x8c000500, + 0x05000003, 0x42006800, 0x0013a000, 0x4837c857, + 0x8010048d, 0x05021005, 0x8014048d, 0x05001003, + 0x40147000, 0x80342840, 0x61fc7801, 0x40100000, + 0x80140480, 0x82006d00, 0xffffff00, 0x05020002, + 0x40007800, 0x4813c840, 0x483fc842, 0x05011000, + 0x40100000, 0x803c2400, 0x40100000, 0x80140580, + 0x05fe07f3, 0x45782800, 0x803871c0, 0x05000005, + 0x40382800, 0x41787000, 0x80102000, 0x05fdf7eb, + 0x1c01f000, 0x8058b1c0, 0x05940db7, 0x50500000, + 0x9c0001c0, 0x4400a800, 0x8050a000, 0x8054a800, + 0x8058b040, 0x05fe07fa, 0x1c01f000, 0x4c000000, + 0x59a80007, 0x8c00051c, 0x5c000000, 0x1c01f000, + 0x59a80007, 0x8c000518, 0x1c01f000, 0x4200b000, + 0x001124b5, 0x5058b000, 0x1c01f000, 0x42006800, + 0x001124b6, 0x58340406, 0x8c000502, 0x05fc07f8, + 0x6004b000, 0x1c01f000, 0x61906800, 0x80346840, + 0x05000006, 0x64070000, 0x40000000, 0x59807000, + 0x8c380500, 0x05fc07fa, 0x1c01f000, 0x4c040000, + 0x05fdfff6, 0x05020003, 0x80040840, 0x05fe07fd, + 0x5c000800, 0x1c01f000, 0x640f0000, 0x40000000, + 0x59800000, 0x8c000500, 0x05fc07fc, 0x1c01f000, + 0x42006800, 0x001124b6, 0x58340406, 0x8c000504, + 0x1c01f000, 0x42006800, 0x001124b5, 0x50346800, + 0x42007000, 0x001124b6, 0x58380200, 0x8c000500, + 0x05020004, 0x9038740d, 0x80346840, 0x05fe07fb, + 0x1c01f000, 0x42006800, 0x001124b6, 0x58340406, + 0x8c000508, 0x1c01f000, 0x42006800, 0x001124b6, + 0x58340406, 0x8c00050a, 0x1c01f000, 0x59a80006, + 0x8c000516, 0x1c01f000, 0x599c0017, 0x8c00051e, + 0x1c01f000, 0x42006800, 0x001124b5, 0x50346800, + 0x59cc7000, 0x42007800, 0x001124b6, 0x583c0005, + 0x80380580, 0x82000500, 0x00ffffff, 0x05000006, + 0x80346840, 0x05000003, 0x903c7c0d, 0x05fdf7f8, + 0x90000541, 0x1c01f000, 0x59a86a4c, 0x8c34050a, + 0x0500000a, 0x8c340514, 0x05000008, 0x42006800, + 0x001124b5, 0x50346800, 0xb0340481, 0x05001004, + 0x599c0017, 0x8c00050a, 0x1c01f000, 0x80000580, + 0x05fdf7fe, 0x59a80006, 0x8c000518, 0x05000002, + 0x8d0c0520, 0x1c01f000, 0x599c0019, 0x8c00050c, + 0x1c01f000, 0x00000001, 0x00000002, 0x00000004, + 0x00000008, 0x00000010, 0x00000020, 0x00000040, + 0x00000080, 0x00000100, 0x00000200, 0x00000400, + 0x00000800, 0x00001000, 0x00002000, 0x00004000, + 0x00008000, 0x00010000, 0x00020000, 0x00040000, + 0x00080000, 0x00100000, 0x00200000, 0x00400000, + 0x00800000, 0x01000000, 0x02000000, 0x04000000, + 0x08000000, 0x10000000, 0x20000000, 0x40000000, + 0x80000000, 0x001124b6, 0x001124c3, 0x001124d0, + 0x001124dd, 0x001124ea, 0x001124f7, 0x00112504, + 0x00112511, 0x0011251e, 0x0011252b, 0x00112538, + 0x00112545, 0x00112552, 0x0011255f, 0x0011256c, + 0x00112579, 0x00112586, 0x00112593, 0x001125a0, + 0x001125ad, 0x001125ba, 0x001125c7, 0x001125d4, + 0x001125e1, 0x001125ee, 0x001125fb, 0x00112608, + 0x00112615, 0x00112622, 0x0011262f, 0x0011263c, + 0x00112649, 0x00112656, 0x00112663, 0x00112670, + 0x0011267d, 0x0011268a, 0x00112697, 0x001126a4, + 0x001126b1, 0x001126be, 0x001126cb, 0x001126d8, + 0x001126e5, 0x001126f2, 0x001126ff, 0x0011270c, + 0x00112719, 0x00112726, 0x00112733, 0x00112740, + 0x0011274d, 0x0011275a, 0x00112767, 0x00112774, + 0x00112781, 0x0011278e, 0x0011279b, 0x001127a8, + 0x001127b5, 0x001127c2, 0x001127cf, 0x001127dc, + 0x001127e9, 0x001127f6, 0x00112803, 0x00112810, + 0x0011281d, 0x0011282a, 0x00112837, 0x00112844, + 0x00112851, 0x0011285e, 0x0011286b, 0x00112878, + 0x00112885, 0x00112892, 0x0011289f, 0x001128ac, + 0x001128b9, 0x001128c6, 0x001128d3, 0x001128e0, + 0x001128ed, 0x001128fa, 0x00112907, 0x00112914, + 0x00112921, 0x0011292e, 0x0011293b, 0x00112948, + 0x00112955, 0x00112962, 0x0011296f, 0x0011297c, + 0x00112989, 0x00112996, 0x001129a3, 0x001129b0, + 0x001129bd, 0x001129ca, 0x001129d7, 0x001129e4, + 0x001129f1, 0x001129fe, 0x00112a0b, 0x00112a18, + 0x00112a25, 0x00112a32, 0x00112a3f, 0x00112a4c, + 0x00112a59, 0x00112a66, 0x00112a73, 0x00112a80, + 0x00112a8d, 0x00112a9a, 0x00112aa7, 0x00112ab4, + 0x00112ac1, 0x00112ace, 0x00112adb, 0x00112ae8, + 0x00112af5, 0x00112b02, 0x00112b0f, 0x00112b1c, + 0x00112b29, 0x00112b36, 0x00112b43, 0x00112b50, + 0x00112b5d, 0x00112b6a, 0x00112b77, 0x00112b84, + 0x00112b91, 0x00112b9e, 0x00112bab, 0x00112bb8, + 0x00112bc5, 0x00112bd2, 0x00112bdf, 0x00112bec, + 0x00112bf9, 0x00112c06, 0x00112c13, 0x00112c20, + 0x00112c2d, 0x00112c3a, 0x00112c47, 0x00112c54, + 0x00112c61, 0x00112c6e, 0x00112c7b, 0x00112c88, + 0x00112c95, 0x00112ca2, 0x00112caf, 0x00112cbc, + 0x00112cc9, 0x00112cd6, 0x00112ce3, 0x00112cf0, + 0x00112cfd, 0x00112d0a, 0x00112d17, 0x00112d24, + 0x00112d31, 0x00112d3e, 0x00112d4b, 0x00112d58, + 0x00112d65, 0x00112d72, 0x00112d7f, 0x00112d8c, + 0x00112d99, 0x00112da6, 0x00112db3, 0x00112dc0, + 0x00112dcd, 0x00112dda, 0x00112de7, 0x00112df4, + 0x00112e01, 0x00112e0e, 0x00112e1b, 0x00112e28, + 0x00112e35, 0x00112e42, 0x00112e4f, 0x00112e5c, + 0x00112e69, 0x00112e76, 0x00112e83, 0x00112e90, + 0x00112e9d, 0x00112eaa, 0x00112eb7, 0x00112ec4, + 0x00112ed1, 0x00112ede, 0x00112eeb, 0x00112ef8, + 0x00112f05, 0x00112f12, 0x00112f1f, 0x00112f2c, + 0x00112f39, 0x00112f46, 0x00112f53, 0x00112f60, + 0x00112f6d, 0x00112f7a, 0x00112f87, 0x00112f94, + 0x00112fa1, 0x00112fae, 0x00112fbb, 0x00112fc8, + 0x00112fd5, 0x00112fe2, 0x00112fef, 0x00112ffc, + 0x00113009, 0x00113016, 0x00113023, 0x00113030, + 0x0011303d, 0x0011304a, 0x00113057, 0x00113064, + 0x00113071, 0x0011307e, 0x0011308b, 0x00113098, + 0x001130a5, 0x001130b2, 0x001130bf, 0x001130cc, + 0x001130d9, 0x001130e6, 0x001130f3, 0x00113100, + 0x0011310d, 0x0011311a, 0x00113127, 0x00113134, + 0x00113141, 0x0011314e, 0x0011315b, 0x00113168, + 0x00113175, 0x00113182, 0x0011318f, 0x0011319c, + 0x001131a9, 0x40000000, 0x600070e0, 0x60007820, + 0x4a007016, 0x00010001, 0x58380016, 0x8c000500, + 0x05fc07fc, 0x600c4000, 0x60003002, 0x64807808, + 0x583c2808, 0x8c14053e, 0x05000004, 0x80183040, + 0x05fe07fc, 0x0501f00d, 0x583c2808, 0x82140500, + 0x20000400, 0x82000580, 0x00000400, 0x05020005, + 0x82140500, 0x00000300, 0x90000580, 0x05000007, + 0x80204040, 0x05fe07ee, 0x4a007016, 0x00010000, + 0x90000541, 0x0501f040, 0x650c7808, 0x583c0009, + 0x8c000500, 0x05000005, 0x60002000, 0x4a007016, + 0x00010000, 0x0501f037, 0x65007808, 0x583c5809, + 0x65047808, 0x583c6009, 0x65087808, 0x583c6809, + 0x4a007016, 0x00010000, 0x82102d00, 0xf0000000, + 0x90140580, 0x05000002, 0x0501f020, 0x60202800, + 0x60003000, 0x803000c8, 0x40003800, 0x8030010a, + 0x801c3d80, 0x40300000, 0x80180580, 0x80100400, + 0x801c0400, 0x802c5c00, 0x803400c8, 0x40003800, + 0x8034010a, 0x801c3d80, 0x40340000, 0x80180580, + 0x801c0400, 0x80306400, 0x802c00c8, 0x40003800, + 0x802c010a, 0x801c3d80, 0x402c0000, 0x80180580, + 0x801c0400, 0x80346c00, 0x82183400, 0x9e3779b9, + 0x80142840, 0x05fe07e4, 0x0502000b, 0x402c0000, + 0x80040580, 0x05fe07c7, 0x40300000, 0x80080580, + 0x05fe07c4, 0x40340000, 0x800c0580, 0x05fe07c1, + 0x80000580, 0x1c01f000, 0x1c01f000, 0x42005000, + 0x7ff4c000, 0x58280800, 0x58281001, 0x58281802, + 0x58282003, 0x481350ec, 0x05fdff97, 0x05020807, + 0x82101d00, 0x0fffffff, 0x480fc021, 0x900c01c0, + 0x4803c022, 0x1c01f000, 0x497bc021, 0x497bc022, + 0x4a03c020, 0x00004020, 0x4a03c011, 0x40200011, + 0x6016d800, 0x05027011, 0x59e00020, 0x90000582, + 0x0502000e, 0x05006000, 0x4203e000, 0x40000000, + 0x59e00017, 0x60000800, 0x8c00050a, 0x059e0cc6, + 0x8d0c0530, 0x059e0cb9, 0x059e0cbb, 0x6403c017, + 0x4203e000, 0x30000001, 0x0595fd65, 0x05fdf7ff, + 0x59a808d6, 0x8c100502, 0x05000003, 0x84040d42, + 0x0501f007, 0x8c100504, 0x05000003, 0x84040d44, + 0x0501f003, 0x8c100500, 0x84040d40, 0x480750d6, + 0x1c01f000, 0x59a800d6, 0x8c000502, 0x05000009, + 0x4a0350d7, 0x0000008b, 0x4a0350d8, 0x0000008b, + 0x4a0350d9, 0x0000008b, 0x641350da, 0x0501f00c, + 0x8c000504, 0x05000006, 0x65bf50d7, 0x65bf50d8, + 0x65df50d9, 0x640350da, 0x0501f005, 0x64cf50d7, + 0x64cf50d8, 0x649750d9, 0x640350da, 0x1c01f000, + 0x909963d2, 0x00000000, 0x00000000, 0x00116000, + 0x0000320d, 0x00000000, 0x00000000, 0x00020000, + 0x000011e7, 0x916c0583, 0x010201aa, 0x42000000, + 0x00111c89, 0x50000000, 0x800001c0, 0x05020a46, + 0x0501fa03, 0x0501fffc, 0x0501fbb9, 0x8d0c0516, + 0x05000f77, 0x8d0c0516, 0x05000e2c, 0x59a800a5, + 0x80000540, 0x01060b27, 0x0505fcb9, 0x80ddb9c0, + 0x05000007, 0x4df00000, 0x4203e000, 0x50000000, + 0x58de5801, 0x0135fba1, 0x5c03e000, 0x05fdf7e6, + 0x835c0480, 0x00000104, 0x010411dc, 0x416a5800, + 0x592ed000, 0x497a5800, 0x497a5801, 0x815eb840, + 0x812e59c0, 0x1c01f000, 0x42007000, 0x000211e8, + 0x58380004, 0x49781000, 0x64001002, 0x48087004, + 0x80000d40, 0x05020006, 0x48087005, 0x58380000, + 0x80000540, 0x0500000a, 0x1c01f000, 0x48080800, + 0x05fdf7fb, 0x42007000, 0x000211e8, 0x58380000, + 0x80000540, 0x05000002, 0x1c01f000, 0x58380807, + 0x800409c0, 0x01060291, 0x58380005, 0x80006d40, + 0x05020002, 0x1c01f000, 0x58340000, 0x48347001, + 0x80000540, 0x05020002, 0x48007004, 0x48007005, + 0x4a03b805, 0x30000002, 0x58340007, 0x59dc0806, + 0x4803b800, 0x58340008, 0x4803b801, 0x58340806, + 0x4807b81f, 0x58340805, 0x58341003, 0x58340001, + 0x48047002, 0x48087003, 0x480bb803, 0x8c000500, + 0x05020004, 0x64087000, 0x6407c824, 0x0501f004, + 0x64047000, 0x6503c824, 0x0105f2bd, 0x58380802, + 0x600011fe, 0x82040480, 0x0000ff00, 0x05021003, + 0x40041000, 0x80000580, 0x48007002, 0x480bb802, + 0x4a03b805, 0x10000002, 0x1c01f000, 0x59dc0806, + 0x4a03b805, 0x20000000, 0x8c04053e, 0x05000009, + 0x8c040508, 0x01020e15, 0x42007000, 0x000211e8, + 0x58380000, 0x90001484, 0x0c001003, 0x0101fe15, + 0x1c01f000, 0x0002003e, 0x00020080, 0x00020087, + 0x00101557, 0x82040d00, 0x43200f80, 0x010602ca, + 0x58380002, 0x80000540, 0x05000008, 0x0105f2bd, + 0x82040d00, 0x43200f80, 0x010602ca, 0x58380002, + 0x80000540, 0x05fe07d6, 0x58386001, 0x58300009, + 0x4a006002, 0x00000100, 0x64007000, 0x80001540, + 0x05fc07ab, 0x59dc0000, 0x48006007, 0x59dc0001, + 0x48006008, 0x0809f800, 0x05fdf79f, 0x84040d1e, + 0x59e00017, 0x8c00050c, 0x05020007, 0x59a818a3, + 0x800400c4, 0x800c1c00, 0x580c0003, 0x8c000500, + 0x05000008, 0x59a800a5, 0x4c000000, 0x0105fb18, + 0x5c000000, 0x80000540, 0x010602e2, 0x1c01f000, + 0x4d2c0000, 0x4c040000, 0x4c0c0000, 0x05fdff71, + 0x5c001800, 0x5c000800, 0x05000014, 0x82040400, + 0x00111efa, 0x50000000, 0x48025806, 0x64025801, + 0x64125805, 0x64065804, 0x900c0402, 0x48025803, + 0x580c0000, 0x48025807, 0x580c0001, 0x48025808, + 0x4a025809, 0x000200c7, 0x4806580a, 0x412c1000, + 0x5c025800, 0x05fdf765, 0x5c025800, 0x0105f318, + 0x58300802, 0x82040580, 0x00000100, 0x010602d7, + 0x4d2c0000, 0x40325800, 0x0105f9ca, 0x5c025800, + 0x0105f2e2, 0x59b800ea, 0x82000d00, 0xf2000038, + 0x0106048a, 0x8c000510, 0x01040489, 0x59ba60e0, + 0x81300182, 0x0502104c, 0x05002030, 0x8532653e, + 0x59300407, 0x90000583, 0x0502002a, 0x59300203, + 0x90000584, 0x05020027, 0x59325809, 0x59300004, + 0x4a025a08, 0x00000103, 0x497a580d, 0x8c00053e, + 0x0502001a, 0x59300008, 0x82000500, 0x04000800, + 0x82000580, 0x04000800, 0x05000017, 0x0501faba, + 0x59325827, 0x812e59c0, 0x010609ca, 0x5932680a, + 0x0505ff1d, 0x5934000f, 0x8d0c0512, 0x05020005, + 0x5934140b, 0x80081040, 0x05001002, 0x480a6c0b, + 0x80000540, 0x05020a37, 0x59b800ea, 0x8c000510, + 0x05fe07d7, 0x1c01f000, 0x0145fd77, 0x05fc07e6, + 0x0105f482, 0x59300221, 0x48025c13, 0x05fdf7e8, + 0x61567000, 0x0501f024, 0x83326500, 0x3fffffff, + 0x59300407, 0x90000583, 0x05020015, 0x59325809, + 0x5932680a, 0x4a025a08, 0x00000103, 0x497a580d, + 0x0501fa95, 0x59325827, 0x812e59c0, 0x010609c9, + 0x0505fef9, 0x5934000f, 0x8d0c0512, 0x05020005, + 0x5934140b, 0x80081040, 0x05001002, 0x480a6c0b, + 0x80000540, 0x05020a13, 0x05fdf7dc, 0x61527000, + 0x0501f009, 0x83300500, 0x60000000, 0x05000013, + 0x81326580, 0x8000013a, 0x82000400, 0x00100c8e, + 0x50027000, 0x59300c07, 0x90040580, 0x01040482, + 0x90040582, 0x01040482, 0x59300004, 0x8c00053e, + 0x05020003, 0x0505ff05, 0x05fdf7c8, 0x0145fd77, + 0x05fc07fd, 0x0105f482, 0x83300500, 0x1f000000, + 0x01040484, 0x81326580, 0x80000130, 0x90000c9b, + 0x01021e15, 0x1201f000, 0x00100c92, 0x82000500, + 0xf0000000, 0x82040d00, 0x0fffffff, 0x80040d40, + 0x4807c857, 0x59b800ea, 0x8c000516, 0x010605b6, + 0x480770e1, 0x1c01f000, 0x59325809, 0x412c7000, + 0x58380a08, 0x82040d00, 0x000000ff, 0xb00405a8, + 0x01080024, 0xb00405aa, 0x01080024, 0xb00405ba, + 0x0108003d, 0xb00405b2, 0x0108003d, 0x58380a08, + 0x9004050f, 0x82000c00, 0x0010004b, 0x50044000, + 0x0c01f001, 0x00101023, 0x00101023, 0x00020170, + 0x00101023, 0x00101023, 0x00101023, 0x00101023, + 0x00101023, 0x0002017e, 0x00101043, 0x00101023, + 0x00101023, 0x00101023, 0x00101023, 0x00101023, + 0x00101023, 0x5838040e, 0x8c000500, 0x01000e15, + 0x50200000, 0x80387c00, 0x583c1002, 0x583c2800, + 0x583c2001, 0x58380a0b, 0x58383013, 0x59303808, + 0x58380011, 0x48026014, 0x0501f00e, 0x5838020e, + 0x8c000502, 0x01080023, 0x50200000, 0x80387c00, + 0x583c2800, 0x583c2001, 0x583c1002, 0x592c0a0b, + 0x592c3013, 0x59303808, 0x497a6014, 0x497a6015, + 0x48166010, 0x48126011, 0x480a6012, 0x481a6013, + 0x80040840, 0x4806600f, 0x010a006a, 0x841c3d40, + 0x481e6008, 0x1c01f000, 0x4d2c0000, 0x59325809, + 0x592c0a08, 0x4807c857, 0x82040d00, 0x000000ff, + 0x9004050f, 0x1201f000, 0x0010118f, 0x41787800, + 0x59325809, 0x592c0c0e, 0x8c040502, 0x010801bf, + 0x592c0011, 0x592c1013, 0x592c0a08, 0x480a6013, + 0x48026014, 0x48026015, 0x82040d00, 0x000000ff, + 0xb00405b2, 0x010801c5, 0xb00405ba, 0x010801c5, + 0x412c3000, 0x9004050f, 0x82000400, 0x0010004b, + 0x50003800, 0x8c3c050e, 0x05000002, 0x801c3800, + 0x501c0000, 0x592c1a0b, 0x4802600c, 0x481a600d, + 0x481e600e, 0x480e600f, 0x843c7d4a, 0x403c1000, + 0x1c01f000, 0x59e00004, 0x8c00050e, 0x05fe06ac, + 0x1c01f000, 0x42001000, 0x0011458b, 0x5808000a, + 0x80000540, 0x010a071d, 0x4a001003, 0x00114595, + 0x4c080000, 0x0501f812, 0x5c001000, 0x4814100a, + 0x480c1007, 0x48101008, 0x64001001, 0x64101005, + 0x64041004, 0x05fdf655, 0x58300802, 0x82040580, + 0x00000100, 0x010a072c, 0x82300580, 0x0011458b, + 0x010a0727, 0x4978600a, 0x1c01f000, 0x61901800, + 0x800c1840, 0x05000006, 0x64070000, 0x40000000, + 0x59800000, 0x8c000500, 0x05fc07fa, 0x01080777, + 0x600028f4, 0x58142024, 0x58141823, 0x58142825, + 0x64030000, 0x1c01f000, 0x4c000000, 0x4df00000, + 0x4203e000, 0xb0100000, 0x41f00000, 0x81fe1500, + 0x8d080512, 0x010e09a4, 0x8d08051c, 0x05060cfc, + 0x8d080518, 0x05060d2f, 0x8d08051a, 0x05fe0ed6, + 0x83080500, 0x00000d00, 0x05020804, 0x5c03e000, + 0x5c000000, 0x1801f000, 0x8d080516, 0x010a0fde, + 0x8d080514, 0x05fe0fbc, 0x8d080508, 0x010a0bdb, + 0x8d080500, 0x05060c55, 0x8d08050c, 0x010e08a1, + 0x8d08050a, 0x010a050e, 0x1c01f000, 0x42000000, + 0x00111c8f, 0x50000000, 0x8c000504, 0x05000013, + 0x8c000508, 0x05020004, 0x8c000502, 0x05020002, + 0x1c01f000, 0x4df00000, 0x4203e000, 0x50000000, + 0x42034000, 0x00111c71, 0x59a0001e, 0x59a1d806, + 0x84000502, 0x4803401e, 0x58ec0009, 0x0801f800, + 0x5c03e000, 0x1c01f000, 0x05027002, 0x05026002, + 0x1c01f000, 0x4df00000, 0x4203e000, 0x50000000, + 0x59e00020, 0xb0000d85, 0x05000003, 0xb0000d84, + 0x05020007, 0x4803c857, 0x42000800, 0x000211e8, + 0x58040800, 0x90040d80, 0x05020019, 0x0105f9b9, + 0x05000017, 0x412dd800, 0x48efc857, 0x0125fa58, + 0x42034000, 0x00111c71, 0x49a1d80b, 0x48ef4006, + 0x59a0001e, 0x84000544, 0x4803401e, 0x59e00020, + 0x4803c857, 0x59e00021, 0x4803c857, 0x59e00022, + 0x4803c857, 0x59e00023, 0x4803c857, 0x59e00024, + 0x4803c857, 0x0115f9ff, 0x0115fa17, 0x5c03e000, + 0x1c01f000, 0x4c5c0000, 0x4da00000, 0x4df00000, + 0x4203e000, 0x50000000, 0x05006062, 0x42034000, + 0x00111c71, 0x59a01018, 0x59a01819, 0x800c19c0, + 0x05020009, 0x59a0381c, 0x801c39c0, 0x01000e15, + 0x49a3c857, 0x481fc857, 0x59a0041d, 0x801c3c00, + 0x0501f00a, 0x59a0041a, 0x90000402, 0x4803441a, + 0x90000c97, 0x05001003, 0x497b441a, 0x41780000, + 0x59a03817, 0x801c3c00, 0x401cb800, 0x80081040, + 0x480b4018, 0x581c0200, 0x4803c021, 0x581c0401, + 0x4803c022, 0x581c0201, 0x4803c023, 0x581c0400, + 0x4803c020, 0x900001c0, 0x90000552, 0x4803c011, + 0x8d0c0530, 0x0500000f, 0x4c080000, 0x4c0c0000, + 0x4c1c0000, 0x59e00017, 0x8c00050a, 0x05000004, + 0x60000800, 0x05fdfe16, 0x0501f003, 0x8c000500, + 0x05fe0f3d, 0x5c003800, 0x5c001800, 0x5c001000, + 0x6403c017, 0x4203e000, 0x30000001, 0x800c19c0, + 0x05000007, 0x800c1840, 0x480f4019, 0x0502001b, + 0x497b441a, 0x497b421a, 0x0501f018, 0x800811c0, + 0x0502000a, 0x4d2c0000, 0x59a2581c, 0x0105f9c9, + 0x5c025800, 0x497b401c, 0x497b401b, 0x497b441d, + 0x497b421d, 0x0501f00d, 0x59a0041d, 0x90000402, + 0x90000c96, 0x4803441d, 0x05001008, 0x4d2c0000, + 0x59a2581c, 0x592c3817, 0x481f401c, 0x497b441d, + 0x0105f9c9, 0x5c025800, 0x8d0c052a, 0x05000009, + 0x60083800, 0x42000800, 0x25000000, 0x585c1800, + 0x585c3001, 0x900c19c0, 0x901831c0, 0x0101fed5, + 0x5c03e000, 0x5c034000, 0x5c00b800, 0x1c01f000, + 0x8d0c0520, 0x05000003, 0x59a80005, 0x8c000516, + 0x1c01f000, 0x910c0503, 0x012a04d4, 0x59340400, + 0x82000580, 0x00000606, 0x012a04ae, 0x5934000d, + 0x80027d40, 0x012a04dd, 0x592c1003, 0x5808720a, + 0x8c380500, 0x05000005, 0x592c1813, 0x5808000d, + 0x800c0400, 0x4800100d, 0x5934000f, 0x59341203, + 0x80080540, 0x05020021, 0x8d0c0512, 0x05000010, + 0x0505fd1f, 0x05000017, 0x59a800d7, 0x80000040, + 0x05fe07ff, 0x492e6009, 0x4936600a, 0x58d400ea, 0x8c000516, 0x05fe07fe, 0x83300400, 0x20000000, - 0x4801a8e1, 0x8d0c0512, 0x05fe07e6, 0x5934000b, - 0x80001120, 0x82000500, 0x0000ffff, 0x80080480, - 0x05fc17e0, 0x0501f010, 0x80081000, 0x480a6c0b, - 0x05fdf7ef, 0x4c080000, 0x012dfdc8, 0x05020008, - 0x42000000, 0x0010e444, 0x0165ffdc, 0x015dfa53, - 0x05000003, 0x5c001000, 0x05fdf7d7, 0x5c001000, - 0x64066a03, 0x5c025800, 0x5c026000, 0x1c01f000, - 0x497a5800, 0x4932580d, 0x4a026007, 0x00068000, - 0x641e6203, 0x0501f802, 0x05fdf7df, 0x592e440b, - 0x83224500, 0x000000ff, 0x83200400, 0x0010d17b, - 0x50024800, 0x4926601d, 0x592c0210, 0x48026202, - 0x59240206, 0x8c000510, 0x012a070a, 0x8d0c050e, - 0x012a0708, 0x59240200, 0x8c000516, 0x012a0706, - 0x59340200, 0x8c000518, 0x012a0704, 0x64025a0a, - 0x8c000508, 0x012a0702, 0x492e6009, 0x4d3c0000, - 0x417a7800, 0x0505fac6, 0x5c027800, 0x1c01f000, - 0x58040001, 0x49680800, 0x49780801, 0x815eb800, - 0x4006d000, 0x80000d40, 0x05fe07fa, 0x497a5801, - 0x59c80000, 0x82000540, 0x00001200, 0x48039000, - 0x1c01f000, 0x59980005, 0x48032823, 0x59d8010b, - 0x48033006, 0x1c01f000, 0x59980005, 0x59747408, - 0x58387100, 0x483aec02, 0x4802e803, 0x1c01f000, - 0x592c0408, 0x8c00051e, 0x012e0618, 0x497a5800, - 0x8d0c0516, 0x05020003, 0x0501fa49, 0x0501f011, - 0x8d0c0526, 0x0502000d, 0x0502d007, 0x592c0001, - 0x492fb107, 0x80000d40, 0x05fe0fda, 0x0500e1c4, - 0x1c01f000, 0x0500e9c2, 0x05fcd7f9, 0x42000000, - 0x0010e3a8, 0x0165ffdf, 0x0501fa39, 0x0500da49, - 0x0500e1bb, 0x59d80105, 0x82000d00, 0x01238780, - 0x05020257, 0x1c01f000, 0x59980003, 0x0c01f001, - 0x000203a8, 0x000203a9, 0x00020421, 0x00020461, - 0x000203b7, 0x000204de, 0x1c01f000, 0x4df00000, - 0x4203e000, 0x50000000, 0x05026a8e, 0x05006003, - 0x8d0c0520, 0x05020b35, 0x830c0580, 0x00080800, - 0x82000500, 0x00080800, 0x05000a2e, 0x5c03e000, - 0x1c01f000, 0x4df00000, 0x4203e000, 0x50000000, - 0x59d8110a, 0x59d8010a, 0x80080580, 0x05fe07fd, - 0x59742c08, 0x59740003, 0x480aec09, 0x48082800, - 0x80000540, 0x05002011, 0x05000007, 0x59980004, - 0x90000585, 0x0500000d, 0x59a8009b, 0x81640580, - 0x0502000a, 0x58140100, 0x80080d80, 0x0500001f, - 0x59740c02, 0x80040d80, 0x0500000e, 0x59980805, - 0x4802ec02, 0x4806e803, 0x0500ead1, 0x8d0c0524, - 0x05020003, 0x5c03e000, 0x1c01f000, 0x59d8010b, - 0x59d8110a, 0x80080580, 0x05000010, 0x05fc67fa, - 0x05006013, 0x59740a09, 0x59e00017, 0x8c00050a, - 0x05020012, 0x8c04051e, 0x05020005, 0x59741202, - 0x800810e0, 0x90081554, 0x480bc011, 0x4807c017, - 0x4203e000, 0x30000001, 0x4a02e803, 0xffff0000, - 0x850e1d24, 0x0500eab6, 0x05fdf7e7, 0x850e1d64, - 0x0500eab3, 0x05fdf7e4, 0x4c040000, 0x05fdfc9d, - 0x5c000800, 0x8c04051e, 0x05fc07ed, 0x5c03e000, - 0x1c01f000, 0x592c0c08, 0x58040000, 0x58040900, - 0x80040580, 0x05000019, 0x592c0402, 0x80040580, - 0x05000005, 0x59980005, 0x48025803, 0x48065c02, - 0x1c01f000, 0x05006013, 0x592c0a09, 0x4a025803, - 0xffff0000, 0x59e00017, 0x8c00050a, 0x0502000e, - 0x8c04051e, 0x05020005, 0x592c0202, 0x800000e0, - 0x90000554, 0x4803c011, 0x4807c017, 0x4203e000, - 0x30000001, 0x1c01f000, 0x4a025803, 0xffff0000, - 0x1c01f000, 0x4c040000, 0x05fdfc76, 0x5c000800, - 0x8c04051e, 0x05fc07f1, 0x1c01f000, 0x4df00000, - 0x4203e000, 0x50000000, 0x59940023, 0x80000540, - 0x05002012, 0x05000007, 0x59980004, 0x90000585, - 0x0500000e, 0x59a8009b, 0x81640580, 0x0502000b, - 0x59d8010b, 0x59d8110a, 0x80080d80, 0x05000023, - 0x59980806, 0x80040d80, 0x05000013, 0x59980805, - 0x48072823, 0x48033006, 0x0500ea55, 0x8d0c0524, - 0x05020005, 0x8d0c0526, 0x050209a6, 0x5c03e000, - 0x1c01f000, 0x59d8110a, 0x59d8010a, 0x80080580, - 0x05fe07fd, 0x59d8010b, 0x80080580, 0x0500000f, - 0x05fc67f5, 0x05006012, 0x800810e0, 0x90081553, - 0x480bc011, 0x60040800, 0x59e00017, 0x8c00050a, - 0x0502000e, 0x8d0c0530, 0x0502000e, 0x6407c017, - 0x4203e000, 0x30000001, 0x4a032823, 0xffff0000, - 0x850e1d24, 0x0500ea36, 0x05fdf7e3, 0x850e1d64, - 0x0500ea33, 0x05fdf7e0, 0x05fdfc36, 0x05fdf7f4, - 0x8c000500, 0x05fe0d5d, 0x05fdf7f1, 0x4df00000, - 0x4203e000, 0x50000000, 0x59b800e4, 0x8c000518, - 0x0502001b, 0x830c0500, 0x00140000, 0x0502001b, - 0x59940023, 0x80000540, 0x0500200c, 0x05000017, - 0x59980004, 0x90000585, 0x05000008, 0x59a8009b, - 0x81640580, 0x05020005, 0x59a80099, 0x59a80898, - 0x80040580, 0x0500000c, 0x0500ea15, 0x05006004, - 0x8d0c0524, 0x0502000a, 0x0501fa4a, 0x8d0c0526, - 0x05020964, 0x5c03e000, 0x1c01f000, 0x4a0370e4, - 0x00002000, 0x850e1d68, 0x0500604c, 0x59d8090a, - 0x59d8010a, 0x80041580, 0x05fe07fd, 0x59d8190b, - 0x800c1580, 0x59981006, 0x480f3006, 0x05000037, - 0x0501f844, 0x59980007, 0x483b3007, 0x0500000d, - 0x8d0c0528, 0x05020021, 0x80380580, 0x05020004, - 0x40080000, 0x800c0580, 0x0500001c, 0x59980005, - 0x48032823, 0x830e1d00, 0xffebffff, 0x05fdf7e0, - 0x8d0c0528, 0x05020004, 0x40080000, 0x800c0580, - 0x05fe07f7, 0x800408e0, 0x90040d53, 0x60041000, - 0x4807c011, 0x59e00017, 0x8c00050a, 0x0502000f, - 0x8d0c0530, 0x05020012, 0x480bc017, 0x4203e000, - 0x30000001, 0x4a032823, 0xffff0000, 0x830e1d00, - 0xffebffff, 0x05fdf7ca, 0x800408e0, 0x90040d5d, - 0x60001000, 0x05fdf7ef, 0x4c080000, 0x40080800, - 0x05fdfbd8, 0x5c001000, 0x05fdf7f0, 0x8c000500, - 0x05fc07ee, 0x4c080000, 0x40080800, 0x05fdfcfb, - 0x5c001000, 0x05fdf7e9, 0x0501f80e, 0x59980007, - 0x483b3007, 0x05fc07e8, 0x80380580, 0x05000003, - 0x8d0c0528, 0x05fc07ce, 0x912801c0, 0x90000d5c, - 0x60001000, 0x05fdf7d7, 0x850e1d64, 0x05fdf7a7, - 0x59e0000f, 0x59e0680f, 0x80346d80, 0x05fe07fd, - 0x40025000, 0x59e00010, 0x59e07010, 0x80387580, - 0x05fe07fd, 0x40007000, 0x81280580, 0x1c01f000, + 0x4801a8e1, 0x80000580, 0x1c01f000, 0x5934000b, + 0x80001920, 0x82000500, 0x0000ffff, 0x800c0480, + 0x0502100a, 0x800c1800, 0x480e6c0b, 0x05fdf7e9, + 0x8d0c0512, 0x05020005, 0x59341c0b, 0x800c1840, + 0x480e6c0b, 0x59341203, 0x0501f803, 0x80000580, + 0x1c01f000, 0x800811c0, 0x05020002, 0x64066a03, + 0x59340010, 0x492e6810, 0x80000d40, 0x05020008, + 0x492e680f, 0x592c040a, 0x800000c2, 0x800018c4, + 0x800c0400, 0x48025807, 0x1c01f000, 0x492c0800, + 0x05fdf7f9, 0x59a800ad, 0x81440480, 0x05021024, + 0x83442400, 0x0010db80, 0x50100000, 0x80000d40, + 0x0500001f, 0x82000d00, 0xe0000000, 0x0500001e, + 0x8d0c0538, 0x0500001a, 0x82000500, 0x00ffffff, + 0x82041d80, 0x20000000, 0x05000017, 0x82041d80, + 0x80000000, 0x05020007, 0x84040d7a, 0x4c000000, + 0x80040540, 0x44002000, 0x5c000000, 0x0501f00e, + 0x82041d80, 0xa0000000, 0x0500000b, 0x82041d80, + 0x40000000, 0x05020006, 0x4c040000, 0x012df81b, + 0x5c000800, 0x40340000, 0x05000003, 0x90000541, + 0x1c01f000, 0x40026800, 0x80000580, 0x05fdf7fd, + 0x59340203, 0x80000540, 0x05020036, 0x4d300000, + 0x4d2c0000, 0x5934000f, 0x80025d40, 0x0500002f, + 0x0505fcbb, 0x05000021, 0x592c0000, 0x4802680f, + 0x80000540, 0x05020002, 0x48026810, 0x592c2a08, + 0x4936600a, 0x4c080000, 0x0131f8a2, 0x5c001000, + 0x05000025, 0x492e6009, 0x8d0c0512, 0x05000010, + 0x58d400ea, 0x8c000516, 0x05fe07fe, 0x83300400, + 0x20000000, 0x4801a8e1, 0x8d0c0512, 0x05fe07e6, + 0x5934000b, 0x80001120, 0x82000500, 0x0000ffff, + 0x80080480, 0x05fc17e0, 0x0501f010, 0x80081000, + 0x480a6c0b, 0x05fdf7ef, 0x4c080000, 0x0131f8a2, + 0x05020008, 0x42000000, 0x001123e6, 0x0169ff57, + 0x0161f906, 0x05000003, 0x5c001000, 0x05fdf7d7, + 0x5c001000, 0x64066a03, 0x5c025800, 0x5c026000, + 0x1c01f000, 0x497a5800, 0x4932580d, 0x4a026007, + 0x00068000, 0x641e6203, 0x0501f802, 0x05fdf7df, + 0x592e440b, 0x83224500, 0x000000ff, 0x83200400, + 0x0010d8f9, 0x50024800, 0x4926601d, 0x592c0210, + 0x48026202, 0x59240206, 0x8c000510, 0x012e0170, + 0x8d0c050e, 0x012e016e, 0x59240200, 0x8c000516, + 0x012e016c, 0x59340200, 0x8c000518, 0x012e016a, + 0x64025a0a, 0x8c000508, 0x012e0168, 0x492e6009, + 0x4d3c0000, 0x417a7800, 0x0505fad6, 0x5c027800, + 0x1c01f000, 0x58040001, 0x49680800, 0x49780801, + 0x815eb800, 0x4006d000, 0x80000d40, 0x05fe07fa, + 0x497a5801, 0x59c80000, 0x82000540, 0x00001200, + 0x48039000, 0x1c01f000, 0x59980005, 0x48032823, + 0x59d8010b, 0x48033006, 0x1c01f000, 0x59980005, + 0x59747408, 0x58387100, 0x483aec02, 0x4802e803, + 0x1c01f000, 0x592c0408, 0x8c00051e, 0x013200fc, + 0x497a5800, 0x8d0c0516, 0x05020003, 0x0501fa49, + 0x0501f011, 0x8d0c0526, 0x0502000d, 0x0502d007, + 0x592c0001, 0x492fb107, 0x80000d40, 0x05fe0fda, + 0x0500e1c4, 0x1c01f000, 0x0500e9c2, 0x05fcd7f9, + 0x42000000, 0x00112349, 0x0169ff5a, 0x0501fa39, + 0x0500da49, 0x0500e1bb, 0x59d80105, 0x82000d00, + 0x01238780, 0x05020257, 0x1c01f000, 0x59980003, + 0x0c01f001, 0x000203ce, 0x000203cf, 0x00020447, + 0x00020487, 0x000203dd, 0x00020504, 0x1c01f000, + 0x4df00000, 0x4203e000, 0x50000000, 0x05026a8e, + 0x05006003, 0x8d0c0520, 0x05020b35, 0x830c0580, + 0x00080800, 0x82000500, 0x00080800, 0x05000a2e, + 0x5c03e000, 0x1c01f000, 0x4df00000, 0x4203e000, + 0x50000000, 0x59d8110a, 0x59d8010a, 0x80080580, + 0x05fe07fd, 0x59742c08, 0x59740003, 0x480aec09, + 0x48082800, 0x80000540, 0x05002011, 0x05000007, + 0x59980004, 0x90000585, 0x0500000d, 0x59a8009e, + 0x81640580, 0x0502000a, 0x58140100, 0x80080d80, + 0x0500001f, 0x59740c02, 0x80040d80, 0x0500000e, + 0x59980805, 0x4802ec02, 0x4806e803, 0x0500ead1, + 0x8d0c0524, 0x05020003, 0x5c03e000, 0x1c01f000, + 0x59d8010b, 0x59d8110a, 0x80080580, 0x05000010, + 0x05fc67fa, 0x05006013, 0x59740a09, 0x59e00017, + 0x8c00050a, 0x05020012, 0x8c04051e, 0x05020005, + 0x59741202, 0x800810e0, 0x90081554, 0x480bc011, + 0x4807c017, 0x4203e000, 0x30000001, 0x4a02e803, + 0xffff0000, 0x850e1d24, 0x0500eab6, 0x05fdf7e7, + 0x850e1d64, 0x0500eab3, 0x05fdf7e4, 0x4c040000, + 0x05fdfc7f, 0x5c000800, 0x8c04051e, 0x05fc07ed, + 0x5c03e000, 0x1c01f000, 0x592c0c08, 0x592c0409, + 0x58040900, 0x80040580, 0x05000019, 0x592c0402, + 0x80040580, 0x05000005, 0x59980005, 0x48025803, + 0x48065c02, 0x1c01f000, 0x05006013, 0x592c0a09, + 0x4a025803, 0xffff0000, 0x59e00017, 0x8c00050a, + 0x0502000e, 0x8c04051e, 0x05020005, 0x592c0202, + 0x800000e0, 0x90000554, 0x4803c011, 0x4807c017, + 0x4203e000, 0x30000001, 0x1c01f000, 0x4a025803, + 0xffff0000, 0x1c01f000, 0x4c040000, 0x05fdfc58, + 0x5c000800, 0x8c04051e, 0x05fc07f1, 0x1c01f000, + 0x4df00000, 0x4203e000, 0x50000000, 0x59940023, + 0x80000540, 0x05002012, 0x05000007, 0x59980004, + 0x90000585, 0x0500000e, 0x59a8009e, 0x81640580, + 0x0502000b, 0x59d8010b, 0x59d8110a, 0x80080d80, + 0x05000023, 0x59980806, 0x80040d80, 0x05000013, + 0x59980805, 0x48072823, 0x48033006, 0x0500ea55, + 0x8d0c0524, 0x05020005, 0x8d0c0526, 0x050209a6, + 0x5c03e000, 0x1c01f000, 0x59d8110a, 0x59d8010a, + 0x80080580, 0x05fe07fd, 0x59d8010b, 0x80080580, + 0x0500000f, 0x05fc67f5, 0x05006012, 0x800810e0, + 0x90081553, 0x480bc011, 0x60040800, 0x59e00017, + 0x8c00050a, 0x0502000e, 0x8d0c0530, 0x0502000e, + 0x6407c017, 0x4203e000, 0x30000001, 0x4a032823, + 0xffff0000, 0x850e1d24, 0x0500ea36, 0x05fdf7e3, + 0x850e1d64, 0x0500ea33, 0x05fdf7e0, 0x05fdfc18, + 0x05fdf7f4, 0x8c000500, 0x05fe0d3f, 0x05fdf7f1, 0x4df00000, 0x4203e000, 0x50000000, 0x59b800e4, - 0x8c000518, 0x05020067, 0x59d8110a, 0x59d8010a, - 0x80080580, 0x05fe07fd, 0x59742c08, 0x59740003, - 0x480aec09, 0x48082800, 0x80000540, 0x05002015, - 0x0500000b, 0x59980004, 0x90000585, 0x05000011, - 0x59a8009b, 0x81640580, 0x0502000e, 0x59a80099, - 0x59a80898, 0x80040580, 0x0500002a, 0x58140100, - 0x80080d80, 0x05000013, 0x59740c02, 0x80040d80, - 0x05000024, 0x59980805, 0x4802ec02, 0x4806e803, - 0x0500e9a3, 0x8d0c0524, 0x05020019, 0x05006007, - 0x8d0c0528, 0x0502000b, 0x59940023, 0x80000540, - 0x05000008, 0x0501f9bb, 0x5c03e000, 0x1c01f000, - 0x4a02e803, 0xffff0000, 0x850e1d24, 0x0500e994, - 0x05fdffc0, 0x59980007, 0x483b3007, 0x05000031, - 0x80380580, 0x05000024, 0x8d0c0528, 0x05020022, - 0x59980005, 0x48032823, 0x05fdf7f0, 0x59d8010b, - 0x59d8110a, 0x80080580, 0x05fc07ee, 0x05fc67eb, - 0x05006016, 0x59740a09, 0x59e00017, 0x8c00050a, - 0x05020028, 0x8c04051e, 0x05020005, 0x59741202, - 0x800810e0, 0x90081554, 0x480bc011, 0x4807c017, - 0x4203e000, 0x30000001, 0x4a02e803, 0xffff0000, - 0x4a032823, 0xffff0000, 0x830e1d00, 0xffebffff, - 0x0500e96f, 0x05fdf7d5, 0x850e1d64, 0x0500e96c, - 0x05fdf7d2, 0x05fc67d1, 0x912801c0, 0x90000d5c, - 0x4807c011, 0x59e00017, 0x8c00050a, 0x60000800, - 0x05fe0b50, 0x6403c017, 0x4203e000, 0x30000001, - 0x4a032823, 0xffff0000, 0x850e1d28, 0x05fdf7c3, - 0x4a0370e4, 0x00002000, 0x850e1d68, 0x05fdf797, - 0x4c040000, 0x05fdfb43, 0x5c000800, 0x8c04051e, - 0x05fc07d7, 0x5c03e000, 0x1c01f000, 0x59d81108, - 0x835c0480, 0x00000104, 0x0500101c, 0x0502b01a, - 0x480bb007, 0x05fce7fa, 0x59d80105, 0x82000500, - 0x01238780, 0x05020096, 0x8d0c0522, 0x0500001f, - 0x8d0c0516, 0x0502000c, 0x59d8090a, 0x59d8010a, - 0x80040580, 0x05fe07fd, 0x59741003, 0x59740408, - 0x48040000, 0x4806ec09, 0x800811c0, 0x05fc260f, - 0x1c01f000, 0x59940023, 0x80000540, 0x05fc2606, - 0x1c01f000, 0x0500f00a, 0x49681000, 0x400ad000, - 0x815eb800, 0x59c80000, 0x82000540, 0x00001200, - 0x48039000, 0x05fee7e1, 0x05fdf7d9, 0x480ba807, - 0x05fee7de, 0x05fdf7d6, 0x05006024, 0x850e1d24, - 0x59d8010a, 0x59d8090a, 0x80040580, 0x05fe07fd, - 0x8d0c0516, 0x05000016, 0x59d8010b, 0x59d8110b, - 0x80081580, 0x05fe07fd, 0x80040580, 0x0500000f, - 0x800408e0, 0x8d0c0520, 0x05020016, 0x90040d53, - 0x4807c011, 0x59740a09, 0x59e00017, 0x8c00050a, - 0x05020031, 0x8d0c0530, 0x05020033, 0x4807c017, - 0x4203e000, 0x30000001, 0x1c01f000, 0x59740408, - 0x4806ec09, 0x48040000, 0x59740a02, 0x800408e0, - 0x90040d54, 0x05fdf7ef, 0x850e1d64, 0x1c01f000, - 0x59e0000f, 0x59b818e4, 0x59e0100f, 0x80081580, - 0x05fe07fc, 0x8c0c050c, 0x05fe07fa, 0x81281580, - 0x05000012, 0x40025000, 0x820c0500, 0x04000000, - 0x850e1d34, 0x810e1d40, 0x90040d5d, 0x4807c011, - 0x59e00017, 0x60000800, 0x8c00050a, 0x0502000e, - 0x8d0c0530, 0x05020010, 0x6403c017, 0x4203e000, - 0x30000001, 0x1c01f000, 0x40001000, 0x400c0000, - 0x810c0580, 0x8c000534, 0x40080000, 0x05fe07ea, - 0x05fdf7cb, 0x4c040000, 0x05fdfaca, 0x5c000800, - 0x05fdf7cf, 0x8c000500, 0x05fc07cd, 0x4c040000, - 0x05fdfbee, 0x5c000800, 0x05fdf7c9, 0x592c2802, - 0x801429c0, 0x0500000d, 0x58140804, 0x592c0001, - 0x492c2804, 0x800409c0, 0x05000005, 0x492c0800, - 0x80000d40, 0x05fe058f, 0x1c01f000, 0x492c2805, - 0x850e1d66, 0x05fdf7fb, 0x492fc857, 0x0105f19b, - 0x0502d00c, 0x59740805, 0x58040000, 0x4807b107, - 0x80000d40, 0x05020005, 0x4802e804, 0x850e1d26, - 0x4802e805, 0x1c01f000, 0x05fcd7f8, 0x05fdf7fd, - 0x59d80105, 0x82000500, 0x01238780, 0x05020004, - 0x42000000, 0x0010e3a8, 0x0165f7df, 0x4803c857, - 0x485fc857, 0x8c00050e, 0x01020dd3, 0x4203e000, - 0x50000000, 0x6010b900, 0x0101f5de, 0x4a03b104, - 0x10000000, 0x592c4408, 0x592c1409, 0x800800cc, - 0x592c2006, 0x80100400, 0x4803b100, 0x497bb102, - 0x59d80101, 0x4813b100, 0x592c0007, 0x4803b101, - 0x592c0208, 0x82000540, 0x00400000, 0x4803b103, - 0x58200900, 0x480bb10a, 0x4807b10b, 0x592c0001, - 0x4803b11f, 0x4a03b104, 0x10000001, 0x412ee800, + 0x8c000518, 0x0502001b, 0x830c0500, 0x00140000, + 0x0502001b, 0x59940023, 0x80000540, 0x0500200c, + 0x05000017, 0x59980004, 0x90000585, 0x05000008, + 0x59a8009e, 0x81640580, 0x05020005, 0x59a8009c, + 0x59a8089b, 0x80040580, 0x0500000c, 0x0500ea15, + 0x05006004, 0x8d0c0524, 0x0502000a, 0x0501fa4a, + 0x8d0c0526, 0x05020964, 0x5c03e000, 0x1c01f000, + 0x4a0370e4, 0x00002000, 0x850e1d68, 0x0500604c, + 0x59d8090a, 0x59d8010a, 0x80041580, 0x05fe07fd, + 0x59d8190b, 0x800c1580, 0x59981006, 0x480f3006, + 0x05000037, 0x0501f844, 0x59980007, 0x483b3007, + 0x0500000d, 0x8d0c0528, 0x05020021, 0x80380580, + 0x05020004, 0x40080000, 0x800c0580, 0x0500001c, + 0x59980005, 0x48032823, 0x830e1d00, 0xffebffff, + 0x05fdf7e0, 0x8d0c0528, 0x05020004, 0x40080000, + 0x800c0580, 0x05fe07f7, 0x800408e0, 0x90040d53, + 0x60041000, 0x4807c011, 0x59e00017, 0x8c00050a, + 0x0502000f, 0x8d0c0530, 0x05020012, 0x480bc017, + 0x4203e000, 0x30000001, 0x4a032823, 0xffff0000, + 0x830e1d00, 0xffebffff, 0x05fdf7ca, 0x800408e0, + 0x90040d5d, 0x60001000, 0x05fdf7ef, 0x4c080000, + 0x40080800, 0x05fdfbba, 0x5c001000, 0x05fdf7f0, + 0x8c000500, 0x05fc07ee, 0x4c080000, 0x40080800, + 0x05fdfcdd, 0x5c001000, 0x05fdf7e9, 0x0501f80e, + 0x59980007, 0x483b3007, 0x05fc07e8, 0x80380580, + 0x05000003, 0x8d0c0528, 0x05fc07ce, 0x912801c0, + 0x90000d5c, 0x60001000, 0x05fdf7d7, 0x850e1d64, + 0x05fdf7a7, 0x59e0000f, 0x59e0680f, 0x80346d80, + 0x05fe07fd, 0x40025000, 0x59e00010, 0x59e07010, + 0x80387580, 0x05fe07fd, 0x40007000, 0x81280580, 0x1c01f000, 0x4df00000, 0x4203e000, 0x50000000, - 0x59741408, 0x58080900, 0x4807b10b, 0x8d0c0524, - 0x0502001a, 0x59d80106, 0x80000540, 0x05020017, - 0x59d80105, 0x82000500, 0x00006000, 0x05020013, - 0x599af808, 0x817ef9c0, 0x05000010, 0x41765800, - 0x592e5800, 0x592c1005, 0x800811c0, 0x05000006, - 0x412c0000, 0x81740580, 0x05fe0fcd, 0x05fdffb1, - 0x0501f006, 0x592c0003, 0x80000540, 0x05fc0dc6, - 0x817ef840, 0x05fe07f3, 0x5c03e000, 0x1c01f000, - 0x05fce71b, 0x59d80105, 0x82000500, 0x01238780, - 0x05fe07b7, 0x8d0c0524, 0x05020002, 0x1c01f000, - 0x59d8010a, 0x59d8090a, 0x80040580, 0x05fe07fd, - 0x850e1d24, 0x8d0c0516, 0x05000013, 0x59d8010b, - 0x80040580, 0x0500000f, 0x800408e0, 0x8d0c0520, - 0x05020014, 0x90040d53, 0x4807c011, 0x59740a09, - 0x59e00017, 0x8c00050a, 0x05020028, 0x8d0c0530, - 0x0502002a, 0x4807c017, 0x4203e000, 0x30000001, - 0x1c01f000, 0x59740408, 0x4806ec09, 0x48040000, - 0x59740a02, 0x800408e0, 0x90040d54, 0x05fdf7ef, - 0x59e0000f, 0x59b818e4, 0x59e0100f, 0x80081580, - 0x05fe07fc, 0x8c0c050c, 0x05fe07fa, 0x81281580, - 0x0500001c, 0x40025000, 0x820c0500, 0x04000000, - 0x850e1d34, 0x810e1d40, 0x90040d5d, 0x4807c011, - 0x59e00017, 0x60000800, 0x8c00050a, 0x05020007, - 0x8d0c0530, 0x05020009, 0x6403c017, 0x4203e000, - 0x30000001, 0x1c01f000, 0x4c040000, 0x05fdfa15, - 0x5c000800, 0x05fdf7d8, 0x8c000500, 0x05fc07d6, - 0x4c040000, 0x05fdfb39, 0x5c000800, 0x05fdf7d2, - 0x40001000, 0x400c0000, 0x810c0580, 0x8c000534, - 0x40080000, 0x05fe07e0, 0x05fdf7c3, 0x59da5908, - 0x496a5800, 0x412ed000, 0x815eb800, 0x05fce7fc, - 0x59c80000, 0x82000540, 0x00001200, 0x48039000, - 0x59d8090b, 0x59980006, 0x48073006, 0x80040480, - 0x05020004, 0x59940023, 0x80000540, 0x05022003, - 0x59980805, 0x48072823, 0x59d80105, 0x82000500, - 0x01238780, 0x05fe0752, 0x1c01f000, 0x59da5908, - 0x496a5800, 0x412ed000, 0x815eb800, 0x05fce7fc, - 0x59c80000, 0x82000540, 0x00001200, 0x48039000, - 0x59740c08, 0x58040900, 0x4807b10b, 0x59740402, - 0x4806ec02, 0x80040480, 0x05020004, 0x59740003, - 0x80000540, 0x05022003, 0x59980805, 0x4806e803, - 0x59d8090a, 0x59d8010a, 0x80040580, 0x05fe07fd, - 0x59740408, 0x48040000, 0x4806ec09, 0x59d80105, - 0x82000500, 0x01238780, 0x05fe0731, 0x1c01f000, - 0x59981007, 0x59e00010, 0x59e00810, 0x80041d80, - 0x05fe07fd, 0x80080580, 0x0500000d, 0x48073007, + 0x59b800e4, 0x8c000518, 0x05020067, 0x59d8110a, + 0x59d8010a, 0x80080580, 0x05fe07fd, 0x59742c08, + 0x59740003, 0x480aec09, 0x48082800, 0x80000540, + 0x05002015, 0x0500000b, 0x59980004, 0x90000585, + 0x05000011, 0x59a8009e, 0x81640580, 0x0502000e, + 0x59a8009c, 0x59a8089b, 0x80040580, 0x0500002a, + 0x58140100, 0x80080d80, 0x05000013, 0x59740c02, + 0x80040d80, 0x05000024, 0x59980805, 0x4802ec02, + 0x4806e803, 0x0500e9a3, 0x8d0c0524, 0x05020019, + 0x05006007, 0x8d0c0528, 0x0502000b, 0x59940023, + 0x80000540, 0x05000008, 0x0501f9bb, 0x5c03e000, + 0x1c01f000, 0x4a02e803, 0xffff0000, 0x850e1d24, + 0x0500e994, 0x05fdffc0, 0x59980007, 0x483b3007, + 0x05000031, 0x80380580, 0x05000024, 0x8d0c0528, + 0x05020022, 0x59980005, 0x48032823, 0x05fdf7f0, + 0x59d8010b, 0x59d8110a, 0x80080580, 0x05fc07ee, + 0x05fc67eb, 0x05006016, 0x59740a09, 0x59e00017, + 0x8c00050a, 0x05020028, 0x8c04051e, 0x05020005, + 0x59741202, 0x800810e0, 0x90081554, 0x480bc011, + 0x4807c017, 0x4203e000, 0x30000001, 0x4a02e803, + 0xffff0000, 0x4a032823, 0xffff0000, 0x830e1d00, + 0xffebffff, 0x0500e96f, 0x05fdf7d5, 0x850e1d64, + 0x0500e96c, 0x05fdf7d2, 0x05fc67d1, 0x912801c0, + 0x90000d5c, 0x4807c011, 0x59e00017, 0x8c00050a, + 0x60000800, 0x05fe0b32, 0x6403c017, 0x4203e000, + 0x30000001, 0x4a032823, 0xffff0000, 0x850e1d28, + 0x05fdf7c3, 0x4a0370e4, 0x00002000, 0x850e1d68, + 0x05fdf797, 0x4c040000, 0x05fdfb25, 0x5c000800, + 0x8c04051e, 0x05fc07d7, 0x5c03e000, 0x1c01f000, + 0x59d81108, 0x835c0480, 0x00000104, 0x0500101c, + 0x0502b01a, 0x480bb007, 0x05fce7fa, 0x59d80105, + 0x82000500, 0x01238780, 0x05020096, 0x8d0c0522, + 0x0500001f, 0x8d0c0516, 0x0502000c, 0x59d8090a, + 0x59d8010a, 0x80040580, 0x05fe07fd, 0x59741003, + 0x59740408, 0x48040000, 0x4806ec09, 0x800811c0, + 0x05fc260f, 0x1c01f000, 0x59940023, 0x80000540, + 0x05fc2606, 0x1c01f000, 0x0500f00a, 0x49681000, + 0x400ad000, 0x815eb800, 0x59c80000, 0x82000540, + 0x00001200, 0x48039000, 0x05fee7e1, 0x05fdf7d9, + 0x480ba807, 0x05fee7de, 0x05fdf7d6, 0x05006024, + 0x850e1d24, 0x59d8010a, 0x59d8090a, 0x80040580, + 0x05fe07fd, 0x8d0c0516, 0x05000016, 0x59d8010b, + 0x59d8110b, 0x80081580, 0x05fe07fd, 0x80040580, + 0x0500000f, 0x800408e0, 0x8d0c0520, 0x05020016, + 0x90040d53, 0x4807c011, 0x59740a09, 0x59e00017, + 0x8c00050a, 0x05020031, 0x8d0c0530, 0x05020033, + 0x4807c017, 0x4203e000, 0x30000001, 0x1c01f000, + 0x59740408, 0x4806ec09, 0x48040000, 0x59740a02, + 0x800408e0, 0x90040d54, 0x05fdf7ef, 0x850e1d64, + 0x1c01f000, 0x59e0000f, 0x59b818e4, 0x59e0100f, + 0x80081580, 0x05fe07fc, 0x8c0c050c, 0x05fe07fa, + 0x81281580, 0x05000012, 0x40025000, 0x820c0500, + 0x04000000, 0x850e1d34, 0x810e1d40, 0x90040d5d, + 0x4807c011, 0x59e00017, 0x60000800, 0x8c00050a, + 0x0502000e, 0x8d0c0530, 0x05020010, 0x6403c017, + 0x4203e000, 0x30000001, 0x1c01f000, 0x40001000, + 0x400c0000, 0x810c0580, 0x8c000534, 0x40080000, + 0x05fe07ea, 0x05fdf7cb, 0x4c040000, 0x05fdfaac, + 0x5c000800, 0x05fdf7cf, 0x8c000500, 0x05fc07cd, + 0x4c040000, 0x05fdfbd0, 0x5c000800, 0x05fdf7c9, + 0x592c2802, 0x801429c0, 0x0500000d, 0x58140804, + 0x592c0001, 0x492c2804, 0x800409c0, 0x05000005, + 0x492c0800, 0x80000d40, 0x05fe058f, 0x1c01f000, + 0x492c2805, 0x850e1d66, 0x05fdf7fb, 0x492fc857, + 0x0105f1d2, 0x0502d00c, 0x59740805, 0x58040000, + 0x4807b107, 0x80000d40, 0x05020005, 0x4802e804, + 0x850e1d26, 0x4802e805, 0x1c01f000, 0x05fcd7f8, + 0x05fdf7fd, 0x59d80105, 0x82000500, 0x01238780, + 0x05020004, 0x42000000, 0x00112349, 0x0169f75a, + 0x4803c857, 0x485fc857, 0x8c00050e, 0x01020e0e, + 0x4203e000, 0x50000000, 0x6010b900, 0x0101f619, + 0x4a03b104, 0x10000000, 0x592c4408, 0x592c1409, + 0x800800cc, 0x592c2006, 0x80100400, 0x4803b100, + 0x497bb102, 0x59d80101, 0x4813b100, 0x592c0007, + 0x4803b101, 0x592c0208, 0x82000540, 0x00400000, + 0x4803b103, 0x58200900, 0x480bb10a, 0x4807b10b, + 0x592c0001, 0x4803b11f, 0x4a03b104, 0x10000001, + 0x412ee800, 0x1c01f000, 0x4df00000, 0x4203e000, + 0x50000000, 0x59741408, 0x58080900, 0x4807b10b, + 0x8d0c0524, 0x0502001a, 0x59d80106, 0x80000540, + 0x05020017, 0x59d80105, 0x82000500, 0x00006000, + 0x05020013, 0x599af808, 0x817ef9c0, 0x05000010, + 0x41765800, 0x592e5800, 0x592c1005, 0x800811c0, + 0x05000006, 0x412c0000, 0x81740580, 0x05fe0fcd, + 0x05fdffb1, 0x0501f006, 0x592c0003, 0x80000540, + 0x05fc0dc6, 0x817ef840, 0x05fe07f3, 0x5c03e000, + 0x1c01f000, 0x05fce71b, 0x59d80105, 0x82000500, + 0x01238780, 0x05fe07b7, 0x8d0c0524, 0x05020002, + 0x1c01f000, 0x59d8010a, 0x59d8090a, 0x80040580, + 0x05fe07fd, 0x850e1d24, 0x8d0c0516, 0x05000013, + 0x59d8010b, 0x80040580, 0x0500000f, 0x800408e0, + 0x8d0c0520, 0x05020014, 0x90040d53, 0x4807c011, + 0x59740a09, 0x59e00017, 0x8c00050a, 0x05020028, + 0x8d0c0530, 0x0502002a, 0x4807c017, 0x4203e000, + 0x30000001, 0x1c01f000, 0x59740408, 0x4806ec09, + 0x48040000, 0x59740a02, 0x800408e0, 0x90040d54, + 0x05fdf7ef, 0x59e0000f, 0x59b818e4, 0x59e0100f, + 0x80081580, 0x05fe07fc, 0x8c0c050c, 0x05fe07fa, + 0x81281580, 0x0500001c, 0x40025000, 0x820c0500, + 0x04000000, 0x850e1d34, 0x810e1d40, 0x90040d5d, + 0x4807c011, 0x59e00017, 0x60000800, 0x8c00050a, + 0x05020007, 0x8d0c0530, 0x05020009, 0x6403c017, + 0x4203e000, 0x30000001, 0x1c01f000, 0x4c040000, + 0x05fdf9f7, 0x5c000800, 0x05fdf7d8, 0x8c000500, + 0x05fc07d6, 0x4c040000, 0x05fdfb1b, 0x5c000800, + 0x05fdf7d2, 0x40001000, 0x400c0000, 0x810c0580, + 0x8c000534, 0x40080000, 0x05fe07e0, 0x05fdf7c3, + 0x59da5908, 0x496a5800, 0x412ed000, 0x815eb800, + 0x05fce7fc, 0x59c80000, 0x82000540, 0x00001200, + 0x48039000, 0x59d8090b, 0x59980006, 0x48073006, + 0x80040480, 0x05020004, 0x59940023, 0x80000540, + 0x05022003, 0x59980805, 0x48072823, 0x59d80105, + 0x82000500, 0x01238780, 0x05fe0752, 0x1c01f000, + 0x59da5908, 0x496a5800, 0x412ed000, 0x815eb800, + 0x05fce7fc, 0x59c80000, 0x82000540, 0x00001200, + 0x48039000, 0x59740c08, 0x58040900, 0x4807b10b, + 0x59740402, 0x4806ec02, 0x80040480, 0x05020004, + 0x59740003, 0x80000540, 0x05022003, 0x59980805, + 0x4806e803, 0x59d8090a, 0x59d8010a, 0x80040580, + 0x05fe07fd, 0x59740408, 0x48040000, 0x4806ec09, + 0x59d80105, 0x82000500, 0x01238780, 0x05fe0731, + 0x1c01f000, 0x59981007, 0x59e00010, 0x59e00810, + 0x80041d80, 0x05fe07fd, 0x80080580, 0x0500000d, + 0x48073007, 0x59e0000f, 0x59e0100f, 0x80081d80, + 0x05fe07fd, 0x81280580, 0x0500000d, 0x400a5000, + 0x40080000, 0x80040580, 0x05fe04a0, 0x1c01f000, 0x59e0000f, 0x59e0100f, 0x80081d80, 0x05fe07fd, - 0x81280580, 0x0500000d, 0x400a5000, 0x40080000, - 0x80040580, 0x05fe04a0, 0x1c01f000, 0x59e0000f, - 0x59e0100f, 0x80081d80, 0x05fe07fd, 0x81280580, - 0x05fc07fa, 0x400a5000, 0x59940023, 0x80000540, - 0x05fc27f3, 0x1c01f000, 0x59e0000f, 0x59b818e4, - 0x59e0100f, 0x80080d80, 0x05fe07fc, 0x8c0c050c, - 0x05fe07fa, 0x81280580, 0x05020006, 0x400c0000, - 0x810c0580, 0x8c000534, 0x05020002, 0x1c01f000, - 0x820c0500, 0x04000000, 0x850e1d34, 0x810e1d40, - 0x400a5000, 0x900811c0, 0x9008155c, 0x480bc011, - 0x59e00017, 0x60000800, 0x8c00050a, 0x05020007, - 0x8d0c0530, 0x05020007, 0x6403c017, 0x4203e000, - 0x30000001, 0x1c01f000, 0x05fdf98e, 0x05fdf7fb, - 0x8c000500, 0x05fe0ab5, 0x05fdf7f8, 0x4d2c0000, - 0x599af802, 0x817ef9c0, 0x05000008, 0x40f25800, - 0x592c020a, 0x8c000500, 0x05020806, 0x592e5801, - 0x817ef840, 0x05fe07fb, 0x5c025800, 0x1c01f000, - 0x59c40001, 0x82000500, 0x00018000, 0x82000d80, - 0x00018000, 0x05020004, 0x42000800, 0x64000000, - 0x0501f00f, 0x82000d80, 0x00010000, 0x05020004, - 0x42000800, 0x32000000, 0x0501f009, 0x82000d80, - 0x00008000, 0x05020004, 0x42000800, 0x19000000, - 0x0501f003, 0x42000800, 0x0c800000, 0x592c1411, - 0x013dff72, 0x40041000, 0x40000800, 0x61a00007, - 0x013dff8e, 0x480a580f, 0x1c01f000, 0x592c020a, - 0x84000502, 0x592c080d, 0x48025a0a, 0x4806580e, - 0x800409c0, 0x05000020, 0x592c000f, 0x80041480, - 0x0500100f, 0x0500001b, 0x82080480, 0x000003e8, - 0x05001018, 0x480a580d, 0x592c0210, 0x80000040, - 0x05000015, 0x80000040, 0x05000003, 0x48025a10, - 0x1c01f000, 0x64065a10, 0x1c01f000, 0x80081080, - 0x80081000, 0x82080480, 0x000003e8, 0x05001009, - 0x497a580d, 0x592c0210, 0x90000402, 0x82001500, - 0x00000f00, 0x05020005, 0x48025a10, 0x1c01f000, - 0x497a580d, 0x1c01f000, 0x4a025a10, 0x000000ff, - 0x1c01f000, 0x4df00000, 0x4203e000, 0x50000000, - 0x599af802, 0x817ef9c0, 0x0500003e, 0x4178c000, - 0x59d8080b, 0x59d8000b, 0x80040580, 0x05fe07fd, - 0x58f00200, 0x48040100, 0x4805e20c, 0x59d8000a, - 0x80040580, 0x05020033, 0x59d80005, 0x82000500, - 0x00006000, 0x0502002f, 0x0500c02e, 0x91700582, - 0x0500002c, 0x91700588, 0x0500002a, 0x40f25800, - 0x592e5801, 0x592cba0a, 0x592c000d, 0x80000540, - 0x05000005, 0x8c5c0502, 0x05020003, 0x4200c000, - 0xffffffff, 0x592c4200, 0x592c020c, 0x58201000, - 0x40002000, 0x80080580, 0x05000014, 0x412c0000, - 0x80f00580, 0x05020009, 0x8c5c0502, 0x05000003, - 0x80600000, 0x05000013, 0x0501f81d, 0x480bb00a, - 0x5c03e000, 0x1c01f000, 0x8c5c0502, 0x05020014, - 0x4a03b004, 0x10000000, 0x4971e410, 0x0501f831, - 0x5c03e000, 0x1c01f000, 0x817ef840, 0x05fe07dd, - 0x80600000, 0x05000003, 0x80625d58, 0x05020003, - 0x5c03e000, 0x1c01f000, 0x592c4200, 0x592c220c, - 0x58201000, 0x592cba0a, 0x05fdf7ee, 0x8060c1c0, - 0x05fe07f2, 0x412cc000, 0x05fdf7f0, 0x916c0583, - 0x05020017, 0x8c5c0500, 0x05000007, 0x8c5c0502, - 0x05020005, 0x592c000d, 0x592c080f, 0x80040480, - 0x05001010, 0x40100000, 0x80080c80, 0x05021003, - 0x592c040a, 0x80040c00, 0x592c0210, 0x80041c80, - 0x05021002, 0x1c01f000, 0x80101400, 0x592c040a, - 0x80080480, 0x05001002, 0x40001000, 0x1c01f000, - 0x845cbd42, 0x485e5a0a, 0x40101000, 0x1c01f000, - 0x801000cc, 0x592c2808, 0x80140400, 0x4803b000, - 0x497bb002, 0x59d80001, 0x4817b000, 0x592c0009, - 0x4803b001, 0x4813b00b, 0x592ee410, 0x592c040a, - 0x82000540, 0x00400000, 0x4803b003, 0x05fdffd4, - 0x480bb00a, 0x592c000b, 0x4803b01f, 0x4a03b004, - 0x10000001, 0x412de000, 0x1c01f000, 0x41700000, - 0x0c01f001, 0x001064bd, 0x000207ec, 0x001064bd, - 0x000208b8, 0x001064bc, 0x001064bc, 0x001064bc, - 0x001064bc, 0x00106bd4, 0x05010035, 0x59980000, - 0x80000540, 0x013604e2, 0x0502c01f, 0x6062f800, - 0x4df00000, 0x4203e000, 0x50000000, 0x49db3001, - 0x59da5808, 0x592c2a08, 0x58f00812, 0x800409c0, - 0x05000031, 0x58f0000b, 0x48025804, 0x48065802, - 0x48f25803, 0x497a5800, 0x497a5801, 0x82140500, - 0x000000ff, 0xb0000cbb, 0x05021024, 0x0c01f838, - 0x5c03e000, 0x817ef840, 0x05000007, 0x916c0583, - 0x05020005, 0x91700581, 0x0502000e, 0x05010015, - 0x05fcc7e4, 0x0500fb2c, 0x0500b317, 0x59d40005, - 0x82000500, 0x43238780, 0x01360079, 0x59d80005, - 0x82000500, 0x43238780, 0x0136007f, 0x1c01f000, - 0x91700583, 0x0500089d, 0x91700581, 0x05fe07f2, - 0x05010004, 0x05fcc7d3, 0x05fdf7ef, 0x6062f800, - 0x4df00000, 0x4203e000, 0x50000000, 0x49d73001, - 0x59d65808, 0x05fdf7d0, 0x0131fd24, 0x5c03e000, - 0x05fdf7e5, 0x592c0408, 0x82001500, 0x000000ff, - 0x80000110, 0x82000c00, 0x0010de60, 0x50040800, - 0x480a5c08, 0x800409c0, 0x05fe07c7, 0x80000540, - 0x01000dda, 0x42000800, 0x0010de60, 0x50040800, - 0x48065802, 0x0131fd39, 0x05fdf7ca, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x001065b0, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106532, 0x00106524, 0x00106524, - 0x00106524, 0x001065cd, 0x00106524, 0x00106524, - 0x00106524, 0x00020a44, 0x00106524, 0x0010677c, - 0x00106524, 0x00106524, 0x00106524, 0x000208d9, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106576, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x0010688b, - 0x00106a51, 0x00106524, 0x0010680e, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106858, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106ba1, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x001067db, 0x00106b6a, 0x00106524, - 0x00106b97, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x000208e4, - 0x00106524, 0x000208ec, 0x00106524, 0x00106524, - 0x00106524, 0x00106524, 0x00106524, 0x00106524, - 0x00106524, 0x00020ad5, 0x00106524, 0x00106524, - 0x00020c45, 0x00106524, 0x00106524, 0x00106524, - 0x00106c2c, 0x000208ec, 0x835c0480, 0x00000104, - 0x013014d5, 0x4df00000, 0x4203e000, 0x50000000, - 0x59981001, 0x58080005, 0x82000d00, 0x43238780, - 0x0136007f, 0x8c000508, 0x013004bf, 0x580a5808, - 0x592c0208, 0x58f00812, 0x800409c0, 0x013004c1, - 0x48065802, 0x497a5800, 0x497a5801, 0x82000500, - 0x000000ff, 0xb0000c8b, 0x013214be, 0x1201f800, - 0x001064d9, 0x5c03e000, 0x91700583, 0x05fc07e3, - 0x0500fa65, 0x0500b250, 0x1c01f000, 0x80140110, - 0x80000040, 0x0500013d, 0x0130152b, 0x4a01e007, - 0x00020a18, 0x4801e400, 0x492de002, 0x492de003, - 0x600ee000, 0x1c01f000, 0x497a5805, 0x80140110, - 0x80000040, 0x0130052b, 0x0130152b, 0x4a01e007, - 0x0002097f, 0x05fdf7f4, 0x497a5805, 0x80140110, - 0x80000040, 0x0132052b, 0x592c020b, 0x82000480, - 0x00001001, 0x01321539, 0x592c0017, 0xb0000580, - 0x01320539, 0x4d2c0000, 0x05f9ff1f, 0x05000011, - 0x412c6800, 0x5c025800, 0x600ae000, 0x42001000, - 0x001102f2, 0x592c0804, 0x592c2015, 0x592c2816, - 0x90340405, 0x48001003, 0x48041006, 0x48101007, - 0x48141008, 0x4834100a, 0x492c100b, 0x05f9f718, - 0x5c025800, 0x492de005, 0x6022e000, 0x4a01e004, - 0x00020910, 0x1c01f000, 0x6006e000, 0x412c6800, - 0x58f25805, 0x05fdf7e9, 0x4d2c0000, 0x5832580b, - 0x592c5a08, 0x4978600b, 0x812e59c0, 0x0130056e, - 0x58300002, 0x82000580, 0x00000100, 0x01320554, - 0x42000000, 0x001102f1, 0x50007000, 0x5830680a, - 0x58340005, 0x592c0809, 0x80040580, 0x01320558, - 0x58340806, 0x58341007, 0x58341808, 0x48065815, - 0x480a5816, 0x480e5817, 0x822c0d80, 0x0000016a, - 0x0502000e, 0x592c0a0e, 0x58342c09, 0x5834180f, - 0x58342010, 0x58341011, 0x8c040504, 0x0502000e, - 0x8c140510, 0x05020011, 0x480c680c, 0x4810680d, - 0x4808680e, 0x0501f037, 0x592c0c0e, 0x90040d04, - 0x592c040b, 0x80000110, 0x90000508, 0x80040d40, - 0x05fdf7ee, 0x82080500, 0xffff0003, 0x01320558, - 0x8c140510, 0x05000016, 0x58343812, 0x58344013, - 0x58343014, 0x8c040506, 0x05000004, 0x82180500, - 0xffff0003, 0x01320558, 0x8c040504, 0x05020009, - 0x8c040506, 0x0500001f, 0x481c7007, 0x48207008, - 0x40181000, 0x60483000, 0x607c3800, 0x0501f00f, - 0x481c7011, 0x48207012, 0x48187013, 0x60303000, - 0x60203800, 0x8c140510, 0x05000006, 0x603c3000, - 0x60683800, 0x8c040506, 0x05020002, 0x60603800, - 0x480c7007, 0x48107008, 0x481c7010, 0x592c0804, - 0x48047006, 0x492c700b, 0x4818700e, 0x4834700c, - 0x48365801, 0x65286808, 0x5c025800, 0x0135f3c3, - 0x48365801, 0x65286808, 0x6006e000, 0x40341000, - 0x822c0580, 0x0000016a, 0x05020004, 0x0501f80e, - 0x5c025800, 0x1c01f000, 0x0501f96d, 0x5c025800, - 0x1c01f000, 0x592c0001, 0x80001540, 0x0130052b, - 0x58080a08, 0x82040d00, 0x000000ff, 0xb004058a, - 0x01320532, 0x58080409, 0x8c000510, 0x0500008f, - 0x4d2c0000, 0x4c080000, 0x05f9fe8b, 0x5c001000, - 0x05000008, 0x412c6800, 0x5c025800, 0x48365805, - 0x592c5a0e, 0x0501f80e, 0x05000084, 0x0131f539, - 0x5c025800, 0x492de005, 0x6022e000, 0x4a01e004, - 0x0002099c, 0x1c01f000, 0x6006e000, 0x412c6800, - 0x58f25805, 0x592c1001, 0x05fdf7f1, 0x592c220b, - 0x5808480c, 0x5808040d, 0x80004540, 0x0500004c, - 0x80102480, 0x0500004a, 0x05001049, 0x90200483, - 0x05001007, 0x0500000b, 0x0500100c, 0x40004000, - 0x58081001, 0x90200485, 0x05fdf7fb, 0x40200000, - 0x0c01f001, 0x000209f1, 0x000209cb, 0x000209cf, - 0x58081001, 0x0501f008, 0x40200000, 0x0c01f001, - 0x000209bf, 0x000209c3, 0x000209c7, 0x000209cb, - 0x000209cf, 0x60240800, 0x42001800, 0x001012a3, - 0x0501f010, 0x60300800, 0x42001800, 0x001012a4, - 0x0501f00c, 0x603c0800, 0x42001800, 0x001012a5, - 0x0501f008, 0x60480800, 0x42001800, 0x001012a6, - 0x0501f004, 0x60540800, 0x42001800, 0x001012a7, - 0x40080000, 0x80043c00, 0x581c2800, 0x581c3001, - 0x581c3802, 0x8c2c0502, 0x0500000e, 0x80102040, - 0x0500000c, 0x90040595, 0x05000004, 0x90040c03, - 0x800c1800, 0x0501f007, 0x58081001, 0x800811c0, - 0x01000dda, 0x60240800, 0x42001800, 0x001012a3, - 0x48046809, 0x4808680a, 0x480c680b, 0x4810680c, - 0x4814680d, 0x4818680e, 0x481c680f, 0x48246810, - 0x64046811, 0x80000580, 0x1c01f000, 0x90000541, - 0x1c01f000, 0x592c0208, 0x82000500, 0x000000ff, - 0xb00005a8, 0x05000007, 0x90000582, 0x05000005, - 0x90000598, 0x05000003, 0x90000588, 0x05020018, - 0x592c0001, 0x80001540, 0x05000015, 0x58080208, - 0x82000500, 0x000000ff, 0xb000058a, 0x05020010, - 0x58080409, 0x8c000510, 0x0500000d, 0x592c0005, - 0x4d2c0000, 0x80025d40, 0x59a8000c, 0x812c0480, - 0x05001008, 0x59a8000a, 0x812c0480, 0x05021005, - 0x0105f992, 0x5c025800, 0x497a5805, 0x1c01f000, + 0x81280580, 0x05fc07fa, 0x400a5000, 0x59940023, + 0x80000540, 0x05fc27f3, 0x1c01f000, 0x59e0000f, + 0x59b818e4, 0x59e0100f, 0x80080d80, 0x05fe07fc, + 0x8c0c050c, 0x05fe07fa, 0x81280580, 0x05020006, + 0x400c0000, 0x810c0580, 0x8c000534, 0x05020002, + 0x1c01f000, 0x820c0500, 0x04000000, 0x850e1d34, + 0x810e1d40, 0x400a5000, 0x900811c0, 0x9008155c, + 0x480bc011, 0x59e00017, 0x60000800, 0x8c00050a, + 0x05020007, 0x8d0c0530, 0x05020007, 0x6403c017, + 0x4203e000, 0x30000001, 0x1c01f000, 0x05fdf970, + 0x05fdf7fb, 0x8c000500, 0x05fe0a97, 0x05fdf7f8, + 0x4d2c0000, 0x599af802, 0x817ef9c0, 0x05000008, + 0x40f25800, 0x592c020a, 0x8c000500, 0x05020806, + 0x592e5801, 0x817ef840, 0x05fe07fb, 0x5c025800, + 0x1c01f000, 0x59c40001, 0x82000500, 0x00018000, + 0x82000d80, 0x00018000, 0x05020004, 0x42000800, + 0x00100000, 0x0501f00f, 0x82000d80, 0x00010000, + 0x05020004, 0x42000800, 0x00080000, 0x0501f009, + 0x82000d80, 0x00008000, 0x05020004, 0x42000800, + 0x00040000, 0x0501f003, 0x42000800, 0x00020000, + 0x592c1411, 0x0141fc2b, 0x40041000, 0x40000800, + 0x60280000, 0x0141fc47, 0x800810c8, 0x480a580f, + 0x1c01f000, 0x592c020a, 0x84000502, 0x592c080d, + 0x48025a0a, 0x4806580e, 0x800409c0, 0x05000020, + 0x592c000f, 0x80041480, 0x0500100f, 0x0500001b, + 0x82080480, 0x000003e8, 0x05001018, 0x480a580d, + 0x592c0210, 0x80000040, 0x05000015, 0x80000040, + 0x05000003, 0x48025a10, 0x1c01f000, 0x64065a10, + 0x1c01f000, 0x80081080, 0x80081000, 0x82080480, + 0x000003e8, 0x05001009, 0x497a580d, 0x592c0210, + 0x90000402, 0x82001500, 0x00000f00, 0x05020005, + 0x48025a10, 0x1c01f000, 0x497a580d, 0x1c01f000, + 0x4a025a10, 0x000000ff, 0x1c01f000, 0x4df00000, + 0x4203e000, 0x50000000, 0x599af802, 0x817ef9c0, + 0x0500003e, 0x4178c000, 0x59d8080b, 0x59d8000b, + 0x80040580, 0x05fe07fd, 0x58f00200, 0x48040100, + 0x4805e20c, 0x59d8000a, 0x80040580, 0x05020033, + 0x59d80005, 0x82000500, 0x00006000, 0x0502002f, + 0x0500c02e, 0x91700582, 0x0500002c, 0x91700588, + 0x0500002a, 0x40f25800, 0x592e5801, 0x592cba0a, + 0x592c000d, 0x80000540, 0x05000005, 0x8c5c0502, + 0x05020003, 0x4200c000, 0xffffffff, 0x592c4200, + 0x592c020c, 0x58201000, 0x40002000, 0x80080580, + 0x05000014, 0x412c0000, 0x80f00580, 0x05020009, + 0x8c5c0502, 0x05000003, 0x80600000, 0x05000013, + 0x0501f81d, 0x480bb00a, 0x5c03e000, 0x1c01f000, + 0x8c5c0502, 0x05020014, 0x4a03b004, 0x10000000, + 0x4971e410, 0x0501f831, 0x5c03e000, 0x1c01f000, + 0x817ef840, 0x05fe07dd, 0x80600000, 0x05000003, + 0x80625d58, 0x05020003, 0x5c03e000, 0x1c01f000, + 0x592c4200, 0x592c220c, 0x58201000, 0x592cba0a, + 0x05fdf7ee, 0x8060c1c0, 0x05fe07f2, 0x412cc000, + 0x05fdf7f0, 0x916c0583, 0x05020017, 0x8c5c0500, + 0x05000007, 0x8c5c0502, 0x05020005, 0x592c000d, + 0x592c080f, 0x80040480, 0x05001010, 0x40100000, + 0x80080c80, 0x05021003, 0x592c040a, 0x80040c00, + 0x592c0210, 0x80041c80, 0x05021002, 0x1c01f000, + 0x80101400, 0x592c040a, 0x80080480, 0x05001002, + 0x40001000, 0x1c01f000, 0x845cbd42, 0x485e5a0a, + 0x40101000, 0x1c01f000, 0x801000cc, 0x592c2808, + 0x80140400, 0x4803b000, 0x497bb002, 0x59d80001, + 0x4817b000, 0x592c0009, 0x4803b001, 0x4813b00b, + 0x592ee410, 0x592c040a, 0x82000540, 0x00400000, + 0x4803b003, 0x05fdffd4, 0x480bb00a, 0x592c000b, + 0x4803b01f, 0x4a03b004, 0x10000001, 0x412de000, + 0x1c01f000, 0x41700000, 0x0c01f001, 0x001067ad, + 0x00020813, 0x001067ad, 0x000208df, 0x001067ac, + 0x001067ac, 0x001067ac, 0x001067ac, 0x00106f40, + 0x05010035, 0x59980000, 0x80000540, 0x013a006a, + 0x0502c01f, 0x6062f800, 0x4df00000, 0x4203e000, + 0x50000000, 0x49db3001, 0x59da5808, 0x592c2a08, + 0x58f00812, 0x800409c0, 0x05000031, 0x58f0000b, + 0x48025804, 0x48065802, 0x48f25803, 0x497a5800, + 0x497a5801, 0x82140500, 0x000000ff, 0xb0000cbb, + 0x05021024, 0x0c01f838, 0x5c03e000, 0x817ef840, + 0x05000007, 0x916c0583, 0x05020005, 0x91700581, + 0x0502000e, 0x05010015, 0x05fcc7e4, 0x0500fb3b, + 0x0500b326, 0x59d40005, 0x82000500, 0x43238780, + 0x0136038f, 0x59d80005, 0x82000500, 0x43238780, + 0x01360395, 0x1c01f000, 0x91700583, 0x0500089d, + 0x91700581, 0x05fe07f2, 0x05010004, 0x05fcc7d3, + 0x05fdf7ef, 0x6062f800, 0x4df00000, 0x4203e000, + 0x50000000, 0x49d73001, 0x59d65808, 0x05fdf7d0, + 0x0135f814, 0x5c03e000, 0x05fdf7e5, 0x592c0408, + 0x82001500, 0x000000ff, 0x80000110, 0x82000c00, + 0x00111dfa, 0x50040800, 0x480a5c08, 0x800409c0, + 0x05fe07c7, 0x80000540, 0x01000e15, 0x42000800, + 0x00111dfa, 0x50040800, 0x48065802, 0x0135f829, + 0x05fdf7ca, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x0010689d, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106822, + 0x00106814, 0x00106814, 0x00106814, 0x001068be, + 0x00106814, 0x00106814, 0x00106814, 0x00020a7a, + 0x00106814, 0x00106a8e, 0x00106814, 0x00106814, + 0x00106814, 0x00020900, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106866, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106ba1, 0x00106db9, 0x00106814, + 0x00106b21, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106b6e, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106f0d, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106aed, + 0x00106ed2, 0x00106814, 0x00106f02, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x0002090b, 0x00106814, 0x00020913, + 0x00106814, 0x00106814, 0x00106814, 0x00106814, + 0x00106814, 0x00106814, 0x00106814, 0x00020b0b, + 0x00106814, 0x00106814, 0x00020c7b, 0x00106814, + 0x00106814, 0x00106814, 0x00106fb4, 0x00020913, + 0x835c0480, 0x00000104, 0x013017c5, 0x4df00000, + 0x4203e000, 0x50000000, 0x59981001, 0x58080005, + 0x82000d00, 0x43238780, 0x01360395, 0x8c000508, + 0x013007af, 0x580a5808, 0x592c0208, 0x58f00812, + 0x800409c0, 0x013007b1, 0x48065802, 0x497a5800, + 0x497a5801, 0x82000500, 0x000000ff, 0xb0000c8b, + 0x013217ae, 0x1201f800, 0x001067c9, 0x5c03e000, + 0x91700583, 0x05fc07e3, 0x0500fa74, 0x0500b25f, + 0x1c01f000, 0x80140110, 0x80000040, 0x0500013f, + 0x0134101b, 0x4a01e007, 0x00020a41, 0x4801e400, + 0x492de002, 0x492de003, 0x600ee000, 0x1c01f000, + 0x497a5805, 0x80140110, 0x80000040, 0x0134001b, + 0x0134101b, 0x4a01e007, 0x000209a6, 0x05fdf7f4, + 0x497a5805, 0x80140110, 0x80000040, 0x0136001b, + 0x592c020b, 0x82000480, 0x00001001, 0x01361029, + 0x592c0017, 0xb0000580, 0x01360029, 0x4d2c0000, + 0x05f9ff00, 0x05000011, 0x412c6800, 0x5c025800, + 0x600ae000, 0x42001000, 0x00114296, 0x592c0804, + 0x592c2015, 0x592c2816, 0x90340405, 0x48001003, + 0x48041006, 0x48101007, 0x48141008, 0x4834100a, + 0x492c100b, 0x05f9f6f9, 0x5c025800, 0x492de005, + 0x6022e000, 0x4a01e004, 0x00020937, 0x1c01f000, + 0x6006e000, 0x412c6800, 0x58f25805, 0x05fdf7e9, + 0x4d2c0000, 0x5832580b, 0x592c5a08, 0x4978600b, + 0x812e59c0, 0x0134005e, 0x58300002, 0x82000580, + 0x00000100, 0x01360044, 0x42000000, 0x00114295, + 0x50007000, 0x5830680a, 0x58340005, 0x592c0809, + 0x80040580, 0x01360048, 0x58340806, 0x58341007, + 0x58341808, 0x48065815, 0x480a5816, 0x480e5817, + 0x822c0d80, 0x0000016a, 0x0502000e, 0x592c0a0e, + 0x58342c09, 0x5834180f, 0x58342010, 0x58341011, + 0x8c040504, 0x0502000e, 0x8c140510, 0x05020011, + 0x480c680c, 0x4810680d, 0x4808680e, 0x0501f037, + 0x592c0c0e, 0x90040d04, 0x592c040b, 0x80000110, + 0x90000508, 0x80040d40, 0x05fdf7ee, 0x82080500, + 0xffff0003, 0x01360048, 0x8c140510, 0x05000016, + 0x58343812, 0x58344013, 0x58343014, 0x8c040506, + 0x05000004, 0x82180500, 0xffff0003, 0x01360048, + 0x8c040504, 0x05020009, 0x8c040506, 0x0500001f, + 0x481c7007, 0x48207008, 0x40181000, 0x60483000, + 0x607c3800, 0x0501f00f, 0x481c7011, 0x48207012, + 0x48187013, 0x60303000, 0x60203800, 0x8c140510, + 0x05000006, 0x603c3000, 0x60683800, 0x8c040506, + 0x05020002, 0x60603800, 0x480c7007, 0x48107008, + 0x481c7010, 0x592c0804, 0x48047006, 0x492c700b, + 0x4818700e, 0x4834700c, 0x48365801, 0x65286808, + 0x5c025800, 0x0135f72f, 0x48365801, 0x65286808, + 0x6006e000, 0x40341000, 0x822c0580, 0x0000016a, + 0x05020004, 0x0501f80e, 0x5c025800, 0x1c01f000, + 0x0501f97c, 0x5c025800, 0x1c01f000, 0x592c0001, + 0x80001540, 0x0134001b, 0x58080a08, 0x82040d00, + 0x000000ff, 0xb004058a, 0x01360022, 0x58080409, + 0x8c000510, 0x05000091, 0x4d2c0000, 0x4c080000, + 0x05f9fe6c, 0x5c001000, 0x05000008, 0x412c6800, + 0x5c025800, 0x48365805, 0x592c5a0e, 0x0501f80e, + 0x05000086, 0x0135f029, 0x5c025800, 0x492de005, + 0x6022e000, 0x4a01e004, 0x000209c3, 0x1c01f000, + 0x6006e000, 0x412c6800, 0x58f25805, 0x592c1001, + 0x05fdf7f1, 0x592c220b, 0x5808480c, 0x5808040d, + 0x80004540, 0x0500004c, 0x80102480, 0x0500004a, + 0x05001049, 0x90200483, 0x05001007, 0x0500000b, + 0x0500100c, 0x40004000, 0x58081001, 0x90200485, + 0x05fdf7fb, 0x40200000, 0x0c01f001, 0x00020a18, + 0x000209f2, 0x000209f6, 0x58081001, 0x0501f008, + 0x40200000, 0x0c01f001, 0x000209e6, 0x000209ea, + 0x000209ee, 0x000209f2, 0x000209f6, 0x60240800, + 0x42001800, 0x00100042, 0x0501f010, 0x60300800, + 0x42001800, 0x00100043, 0x0501f00c, 0x603c0800, + 0x42001800, 0x00100044, 0x0501f008, 0x60480800, + 0x42001800, 0x00100045, 0x0501f004, 0x60540800, + 0x42001800, 0x00100046, 0x40080000, 0x80043c00, + 0x581c2800, 0x581c3001, 0x581c3802, 0x8c2c0502, + 0x0500000e, 0x80102040, 0x0500000c, 0x90040595, + 0x05000004, 0x90040c03, 0x800c1800, 0x0501f007, + 0x58081001, 0x800811c0, 0x01000e15, 0x60240800, + 0x42001800, 0x00100042, 0x48046809, 0x4808680a, + 0x480c680b, 0x4810680c, 0x4814680d, 0x4818680e, + 0x481c680f, 0x48246810, 0x64046811, 0x80000580, + 0x1c01f000, 0x90000541, 0x1c01f000, 0x592c0208, + 0x82000500, 0x000000ff, 0xb00005a8, 0x05000007, + 0x90000582, 0x05000005, 0x90000598, 0x05000003, + 0x90000588, 0x0502001a, 0x592c0001, 0x80001540, + 0x05000017, 0x58080208, 0x82000500, 0x000000ff, + 0xb000058a, 0x05020012, 0x58080409, 0x8c000510, + 0x0500000f, 0x592c0005, 0x4d2c0000, 0x80025d40, + 0x59a8000c, 0x812c0480, 0x05021003, 0x0159fa66, + 0x05000008, 0x59a8000a, 0x812c0480, 0x05021005, + 0x0105f9c9, 0x5c025800, 0x497a5805, 0x1c01f000, 0x5c025800, 0x05fdf7fe, 0x592e8a0a, 0x83440c80, - 0x000007f0, 0x01321539, 0x8d0c050e, 0x0132057e, - 0x592e4414, 0x81224110, 0x83440400, 0x0010d400, - 0x50000000, 0x80026d40, 0x01300591, 0x59340013, - 0x80000130, 0x81200580, 0x01320591, 0x599c0018, - 0x8c00052a, 0x05000005, 0x592c0003, 0x5800040c, - 0x81200580, 0x01320591, 0x5934000a, 0x8c00052e, - 0x01320597, 0x05fdf885, 0x01320593, 0x1c01f000, - 0x58f00803, 0x58f00400, 0x48065800, 0x492c0801, - 0x492de003, 0x80000040, 0x4801e400, 0x05000002, - 0x1c01f000, 0x58f25802, 0x58f00007, 0x6006e000, - 0x0801f800, 0x1c01f000, 0x80140110, 0x0130052b, - 0x80000040, 0x05020009, 0x592c240e, 0x8c100504, - 0x0500000a, 0x592c020b, 0x82000c80, 0x00001001, - 0x01321539, 0x0135f3b1, 0x4a01e007, 0x00020a53, - 0x05fdf68d, 0x592c240e, 0x592c040b, 0x8c000510, - 0x0500000d, 0x0169f933, 0x0502000b, 0x59a800df, - 0x492f50df, 0x492fc857, 0x4803c857, 0x80000d40, - 0x05000003, 0x492c0800, 0x1c01f000, 0x492f50de, - 0x1c01f000, 0x592e8a0a, 0x417a7800, 0x592e440b, - 0x83224500, 0x000000ff, 0x83200580, 0x000000ff, - 0x01300716, 0x83200400, 0x0010d17b, 0x50024800, - 0x83440c80, 0x000007f0, 0x0132170d, 0x83440c00, - 0x0010d400, 0x50040000, 0x80026d40, 0x01300711, - 0x59340013, 0x80000130, 0x81200580, 0x01320711, - 0x59340002, 0x592c080c, 0x80040580, 0x82000500, - 0x00ffffff, 0x01320539, 0x59243a00, 0x901c0503, - 0x90000583, 0x05000004, 0x59340200, 0x8c00050e, - 0x0130070a, 0x592c040b, 0x8c000510, 0x0500001b, - 0x592c080d, 0x59a802dd, 0x80041480, 0x0130172f, - 0x59a804dd, 0x80000000, 0x80041480, 0x0132172f, - 0x0139fa9c, 0x01300539, 0x59300407, 0x800001c0, - 0x01320539, 0x497a580c, 0x4936600a, 0x59340002, - 0x82000500, 0x00ffffff, 0x4802600b, 0x641a6407, - 0x4926601d, 0x492e6017, 0x592c040e, 0x8c00051e, - 0x01320539, 0x1c01f000, 0x592e600d, 0x497a580c, - 0x83300480, 0x00111b00, 0x0130172f, 0xa1300495, - 0x013216d4, 0x592c0a10, 0x59300202, 0x80040580, - 0x0132072f, 0x4936600a, 0x4926601d, 0x8c10051c, - 0x013206c8, 0x59240206, 0x8c000510, 0x01320747, - 0x8d0c050e, 0x013206b4, 0x8c1c0516, 0x0132073e, - 0x59340200, 0x8c000518, 0x0132072c, 0x59300c07, - 0x90040586, 0x0132074a, 0xa1300494, 0x05021008, - 0x05000007, 0x592c040e, 0x8c00051e, 0x05000004, - 0x59300203, 0x90000587, 0x01320744, 0x8c100508, - 0x013206aa, 0x59300809, 0x497a5807, 0x64025a0a, - 0x800409c0, 0x013206af, 0x59300416, 0x8c000516, - 0x01320732, 0x492e6009, 0x0501f359, 0x497a5805, - 0x80140110, 0x0130052b, 0x80000040, 0x0130052b, - 0x592c0a0b, 0x82040c80, 0x00001001, 0x01321539, - 0x4a01e007, 0x00020ae1, 0x05fdf5ff, 0x592c0001, - 0x80001540, 0x0130052b, 0x58080a08, 0x82040d00, - 0x000000ff, 0xb004058a, 0x01320532, 0x58080409, - 0x8c000510, 0x05020021, 0x6006e000, 0x592c240e, - 0x8c100504, 0x05fc0765, 0x592c0208, 0x82000580, - 0x0000017a, 0x05fc0761, 0x40087800, 0x592c020b, - 0x82000480, 0x00001001, 0x01321539, 0x583c180c, - 0x583c200d, 0x583c100e, 0x82080500, 0xffff0003, - 0x01320539, 0x600ae000, 0x42000000, 0x001102f1, - 0x50007000, 0x64207010, 0x592c0804, 0x48047006, - 0x480c7007, 0x48107008, 0x492c700b, 0x6430700e, - 0x483c700c, 0x0135f3c3, 0x592c240e, 0x8c100504, - 0x01320539, 0x4d2c0000, 0x4c080000, 0x05f9fd06, - 0x5c001000, 0x0500000e, 0x412c6800, 0x5c025800, - 0x592c5c0e, 0x802c5942, 0x48365805, 0x05fdfe88, - 0x05fc0739, 0x0131f539, 0x6006e000, 0x412c6800, - 0x58f25805, 0x592c1001, 0x05fdf7f6, 0x5c025800, - 0x492de005, 0x6022e000, 0x4a01e004, 0x00020b1c, - 0x1c01f000, 0x4df00000, 0x4203e000, 0x50000000, - 0x0502b00b, 0x835c0480, 0x00000104, 0x0500100c, - 0x815eb840, 0x416a5800, 0x592ed000, 0x492fb007, - 0x497a5800, 0x497a5801, 0x05fcb7f7, 0x59d80005, - 0x82000500, 0x43238780, 0x0136007f, 0x5c03e000, - 0x1c01f000, 0x4df00000, 0x4203e000, 0x50000000, - 0x0502f00b, 0x835c0480, 0x00000104, 0x0500100c, - 0x815eb840, 0x416a5800, 0x592ed000, 0x492fa807, - 0x497a5800, 0x497a5801, 0x05fcf7f7, 0x59d40005, - 0x82000500, 0x43238780, 0x01360079, 0x5c03e000, - 0x1c01f000, 0x40307000, 0x5838000b, 0x80025d40, - 0x0500001c, 0x58380002, 0x82000580, 0x00000100, - 0x0500001d, 0x4c380000, 0x592c0208, 0x82000500, - 0x000000ff, 0x90000592, 0x0500000f, 0xb00005a0, - 0x0500000d, 0x90000588, 0x0500000b, 0x592c020c, - 0x8400054e, 0x48025a0c, 0x497a5c0c, 0x497a5c0d, - 0x640a5a0a, 0x4a025a08, 0x00000103, 0x05fdf819, - 0x0501f003, 0x64425a0a, 0x05fdf816, 0x5c007000, - 0x6006e000, 0x4a007002, 0x00000100, 0x49787010, - 0x1c01f000, 0x58380004, 0x90000483, 0x05000081, - 0x58381010, 0x8c080500, 0x05020014, 0x8c080506, - 0x05020037, 0x600cb000, 0x912cac15, 0x5838000a, - 0x5838100d, 0x8008a400, 0x4c380000, 0x0169f8a7, - 0x5c007000, 0x5838000d, 0x90000403, 0x4800700d, - 0x64047010, 0x58380004, 0x90000483, 0x48007004, - 0x90000583, 0x0500006b, 0x5838000e, 0x80001d40, - 0x05020026, 0x4c380000, 0x05f9fc87, 0x5c007000, - 0x05000012, 0x4a025a08, 0x0000010a, 0x60241800, - 0x480c700e, 0x5838000c, 0x80000540, 0x05020002, - 0x5838000b, 0x40000800, 0x492c0801, 0x492c700c, - 0x603c0800, 0x0501f019, 0x6022e000, 0x4a01e004, - 0x00020ba8, 0x1c01f000, 0x6022e000, 0x4a01e004, - 0x00020bac, 0x1c01f000, 0x600ae000, 0x6e007000, - 0x001102f1, 0x0501f06b, 0x600ae000, 0x42000000, - 0x001102f1, 0x50007000, 0x05fdf7e3, 0x84081540, - 0x48087010, 0x5838180e, 0x583a580c, 0x400c0000, - 0x60600800, 0x80040c80, 0x58381004, 0x5838000f, - 0x41783000, 0x80000540, 0x05020004, 0x84183540, - 0x90081483, 0x05000037, 0x40080000, 0x80040480, - 0x05001002, 0x40080800, 0x4004b000, 0x412c0000, - 0x800c0400, 0x4000a800, 0x5838000a, 0x5838100d, - 0x8008a400, 0x4c080000, 0x4c040000, 0x4c0c0000, - 0x4c380000, 0x0169f8a7, 0x5c007000, 0x5c001800, - 0x5c000800, 0x40040000, 0x58381004, 0x80080480, - 0x48007004, 0x90000583, 0x05000002, 0x84183500, - 0x5c000000, 0x80041400, 0xb00804a0, 0x05020003, - 0x84183542, 0x41781000, 0x400c0000, 0x80041c00, - 0x900c0498, 0x05020003, 0x84183544, 0x40001800, - 0x40080800, 0x4804700d, 0x480c700e, 0x40180000, - 0x0c01f001, 0x00020bf3, 0x00020bf6, 0x00020bf4, - 0x00020bf3, 0x00020b8f, 0x00020bf6, 0x00020bf4, - 0x00020bf3, 0x0101fdda, 0x5838100f, 0x0135f3c3, - 0x5838080d, 0x90040402, 0x5838100a, 0x80080400, - 0x50001000, 0x800811c0, 0x05020041, 0x58381810, - 0x8c0c0506, 0x0502000b, 0x6006e000, 0x583a580b, - 0x4978700b, 0x49787010, 0x592c0208, 0x82000500, - 0x000000ff, 0x90000592, 0x05fc064b, 0x05fdf60f, - 0x8c0c0502, 0x05020028, 0x8c0c0508, 0x05000016, - 0x5838080c, 0x5838000e, 0x80002d40, 0x0502000b, - 0x4c380000, 0x0105f971, 0x5c007000, 0x05fc078b, - 0x412c0800, 0x583a580c, 0x48065801, 0x4a000a08, - 0x0000010a, 0x60242800, 0x58381811, 0x58382012, - 0x58381013, 0x80040c05, 0x480c0800, 0x48100801, - 0x48080802, 0x6006e000, 0x583a580b, 0x4978700b, - 0x49787010, 0x592c0208, 0x82000d00, 0x000000ff, - 0xb00405b2, 0x05fc0628, 0x592c1001, 0xb00405ba, - 0x05fe0559, 0x58080409, 0x8c000510, 0x05fc0622, - 0x05fdf6dd, 0x8c0c0504, 0x05fe07ef, 0x840c1d44, - 0x480c7010, 0x58381811, 0x58382012, 0x58381013, - 0x480c7007, 0x48107008, 0x0135f3c3, 0x5838000a, - 0x80040c00, 0x90381c07, 0x54041800, 0x80040800, - 0x800c1800, 0x54041800, 0x0135f3c3, 0x80140110, - 0x0130052b, 0x80000040, 0x0130052b, 0x4a01e007, - 0x00020c4c, 0x05fdf494, 0x4d2c0000, 0x0105f971, - 0x412c6800, 0x5c025800, 0x05000006, 0x48365805, - 0x90346c01, 0x0501f80c, 0x05fc05c4, 0x0131f539, - 0x492de006, 0x6022e000, 0x4a01e004, 0x00020c5b, - 0x1c01f000, 0x6006e000, 0x412c6800, 0x58f25806, - 0x05fdf7f3, 0x592c4812, 0x592c020b, 0x80004540, - 0x05000023, 0x592c040b, 0x80002540, 0x05000020, - 0x592c7001, 0x80204040, 0x05000008, 0x90200485, - 0x05001006, 0x58387001, 0x803871c0, 0x05000018, - 0x80004540, 0x05fe07fa, 0x82204400, 0x001012a3, - 0x50200000, 0x80380c00, 0x58042800, 0x58043001, - 0x58043802, 0x4838680d, 0x4800680c, 0x49786814, - 0x49786815, 0x48146810, 0x48186811, 0x481c6812, - 0x4820680e, 0x48246813, 0x80102040, 0x4810680f, - 0x05020005, 0x80000580, 0x1c01f000, 0x90000541, - 0x1c01f000, 0x80204000, 0x50201800, 0x800c19c0, - 0x0502000a, 0x58380001, 0x80007540, 0x05fc07f8, - 0x58380208, 0x9000050f, 0x82000400, 0x001012ac, - 0x50004000, 0x50201800, 0x4820680e, 0x480c680c, - 0x4838680d, 0x05fdf7ec, 0x4df00000, 0x4203e000, - 0x50000000, 0x5994002e, 0x80000540, 0x05000183, - 0x4c000000, 0x5c000000, 0x59947824, 0x4803282f, - 0x803c0480, 0x05001004, 0x05000003, 0x48032824, - 0x0501f05f, 0x417a0800, 0x81060800, 0x82000400, - 0x000003e8, 0x05fc27fd, 0x48032824, 0x59940032, - 0x80000d40, 0x05000006, 0x80040840, 0x48072832, - 0x05020003, 0x59940033, 0x0801f800, 0x59a8001c, - 0x8400057e, 0x4803501c, 0x59a80022, 0x8400057e, - 0x48035022, 0x59a8000f, 0x8400057e, 0x4803500f, - 0x59a80010, 0x8400057e, 0x48035010, 0x0125f91f, - 0x0502000a, 0x59a80878, 0x800409c0, 0x05000007, - 0xa0040c81, 0x48075078, 0x05000002, 0x05021003, - 0x497b5078, 0x013dfecc, 0x59a800a7, 0x8c000500, - 0x0500000e, 0x59a80878, 0x800409c0, 0x0500000b, - 0xa0040c81, 0x48075078, 0x05000002, 0x05021007, - 0x497b5078, 0x42000000, 0x0010dd09, 0x50000800, - 0x84040d48, 0x44040000, 0x59a800b8, 0x81041400, - 0x480b50b8, 0x59a808ba, 0x81040c01, 0x82040480, - 0x00028f5a, 0x05001002, 0x41780800, 0x480750ba, - 0x81040040, 0x05000002, 0x4907c857, 0x59e40852, - 0x59a800b9, 0x80040580, 0x05000004, 0x480bc857, - 0x59e40052, 0x480350b9, 0x59940030, 0x81040400, - 0x48032830, 0x0139ff8b, 0x5998b002, 0x8058b1c0, - 0x05000008, 0x40f25800, 0x592e5801, 0x592c020a, - 0x8c000500, 0x05fe0a3a, 0x8058b040, 0x05fe07fb, - 0x59940000, 0x90000580, 0x05020005, 0x59940030, - 0x48032831, 0x497b2830, 0x64072800, 0x4c0c0000, - 0x58d400e5, 0x8c000514, 0x05000013, 0x59940807, - 0x59941006, 0x5994002f, 0x80081c80, 0x05001004, - 0x05000003, 0x480f2806, 0x0501f00b, 0x80040840, - 0x48072807, 0x05020004, 0x59940008, 0x0801f800, - 0x0501f005, 0x400c0000, 0x900c1c0a, 0x05fc27f8, - 0x480f2806, 0x5c001800, 0x4d180000, 0x59c80040, - 0x8c000534, 0x05020025, 0x417a3000, 0x91947c09, - 0x60042000, 0x58d400e5, 0x80100500, 0x05020007, - 0x801020c4, 0x903c7c05, 0x811a3000, 0x91180585, - 0x05fe07f9, 0x0501f019, 0x583c0801, 0x583c1000, - 0x5994002f, 0x80080480, 0x05001005, 0x05000004, - 0x48007800, 0x80000040, 0x05fe17f2, 0x80040840, - 0x48047801, 0x05000006, 0x9000040a, 0x48007800, - 0x05fc27fb, 0xb004053f, 0x05fdf7ea, 0x583c0004, - 0x4c3c0000, 0x4c100000, 0x0801f800, 0x5c002000, - 0x5c007800, 0x05fdf7e3, 0x5c023000, 0x8d0c0516, - 0x05020017, 0x8d0c0522, 0x0500001e, 0x5998b008, - 0x8058b1c0, 0x05000012, 0x41765800, 0x592e5800, - 0x592c0003, 0x80001540, 0x05000006, 0x05002008, - 0x5994002f, 0x80080480, 0x05021004, 0x497a5803, - 0x05f9fea5, 0x0501f002, 0x48025803, 0x8058b040, - 0x05fe07f3, 0x8d0c0520, 0x0500000a, 0x59940023, - 0x80001540, 0x05000007, 0x05002006, 0x5994002f, - 0x80080480, 0x05021002, 0x80000580, 0x48032823, - 0x59940026, 0x80000d40, 0x05000012, 0x59941025, - 0x5994002f, 0x80080480, 0x05001005, 0x05000004, - 0x48032825, 0x80000040, 0x0502100a, 0x80040840, - 0x48072826, 0x05020004, 0x59940027, 0x0801f800, - 0x0501f004, 0x9000040a, 0x48032825, 0x05fc27f8, - 0x59940004, 0x80000d40, 0x05000012, 0x59941003, - 0x5994002f, 0x80080480, 0x05001005, 0x05000004, - 0x48032803, 0x80000040, 0x0502100a, 0x80040840, - 0x48072804, 0x05020004, 0x59940005, 0x0801f800, - 0x0501f004, 0x9000040a, 0x48032803, 0x05fc27f8, - 0x59940029, 0x80000d40, 0x05000012, 0x59941028, - 0x5994002f, 0x80080480, 0x05001005, 0x05000004, - 0x48032828, 0x80000040, 0x0502100a, 0x80040840, - 0x48072829, 0x05020004, 0x5994002a, 0x0801f800, - 0x0501f004, 0x90000401, 0x48032828, 0x05fc27f8, - 0x5994002c, 0x80000d40, 0x05000012, 0x5994102b, - 0x5994002f, 0x80080480, 0x05001005, 0x05000004, - 0x4803282b, 0x80000040, 0x0502100a, 0x80040840, - 0x4807282c, 0x05020004, 0x5994002d, 0x0801f800, - 0x0501f004, 0x9000040a, 0x4803282b, 0x05fc27f8, - 0x59a8081c, 0x8c04053e, 0x0500001b, 0x84040d3e, - 0x4807501c, 0x05000018, 0x5994002f, 0x4c000000, - 0x82000400, 0x000003e8, 0x4803282f, 0x80040480, - 0x05001004, 0x05000003, 0x4803501c, 0x0501f00c, - 0x4c000000, 0x013df83f, 0x013c08af, 0x5c000000, - 0x59a8081b, 0x80040400, 0x05fc27ff, 0x800001c0, - 0x05020002, 0x40040000, 0x4803501c, 0x5c000000, - 0x4803282f, 0x59a8080f, 0x8c04053e, 0x05000021, - 0x84040d3e, 0x4807500f, 0x0500001e, 0x5994002f, - 0x4c000000, 0x82000400, 0x000003e8, 0x4803282f, - 0x80040480, 0x05001009, 0x05000008, 0x4803500f, - 0x4c000000, 0x59a8100d, 0x5808040b, 0x8c000514, - 0x5c000000, 0x0500000d, 0x4c000000, 0x60480000, - 0x59a8100d, 0x013dfb92, 0x013c08af, 0x5c000000, - 0x90000400, 0x05fc27ff, 0x800001c0, 0x05020002, - 0x60000000, 0x4803500f, 0x5c000000, 0x4803282f, - 0x59a80810, 0x8c04053e, 0x05000023, 0x84040d3e, - 0x48075010, 0x05000020, 0x5994002f, 0x4c000000, - 0x82000400, 0x000003e8, 0x4803282f, 0x80040480, - 0x05001009, 0x05000008, 0x48035010, 0x4c000000, - 0x59a8100e, 0x5808040b, 0x8c000514, 0x5c000000, - 0x0500000f, 0x4c000000, 0x60500000, 0x59a8100e, - 0x013dfb92, 0x013c08af, 0x5c000000, 0x82000400, - 0x000927c0, 0x05fc27fe, 0x800001c0, 0x05020003, - 0x42000000, 0x000927c0, 0x48035010, 0x5c000000, - 0x4803282f, 0x5994082e, 0x5994002f, 0x80040480, - 0x01001dda, 0x4803282e, 0x59940000, 0x0c01f001, - 0x00020e25, 0x001076d4, 0x00107743, 0x5c03e000, - 0x1c01f000, 0x5994002e, 0x80000000, 0x4803282e, - 0x4203e000, 0x70000000, 0x1c01f000, 0x813e79c0, - 0x05020016, 0x59a800d4, 0x80000040, 0x05fe07ff, - 0x58d400ea, 0x8c000516, 0x05fe07fe, 0x91300400, - 0x4801a8e1, 0x592c1003, 0x5808020a, 0x8c000500, - 0x0500000a, 0x592c1c0e, 0x820c1d00, 0x000000c0, - 0xb00c1d80, 0x05000005, 0x592c1813, 0x5808000d, - 0x800c0400, 0x4800100d, 0x1c01f000, 0x5c000000, - 0x4c000000, 0x4803c857, 0x4807c857, 0x59302a03, - 0x98140486, 0x05000005, 0x601c2800, 0x0501f003, - 0x60040800, 0x601c2800, 0x59325809, 0x832c0580, - 0x00110228, 0x0500001f, 0x832c0500, 0x00ff0000, - 0x05000025, 0x592c1000, 0x59301808, 0x59302027, - 0x801021c0, 0x05020039, 0x592c040e, 0x480a6009, - 0x48166203, 0x8c000510, 0x0502001c, 0x48065a0a, - 0x820c0500, 0x04000800, 0x82000580, 0x04000800, - 0x0500002b, 0xa1300494, 0x05021009, 0x05000008, - 0x592c040e, 0x8c00051e, 0x05020005, 0x013dff4d, - 0x59300202, 0x48025a10, 0x4932580d, 0x05f9fd11, - 0x417a7800, 0x59300009, 0x82000d80, 0x00110228, - 0x05020003, 0x58040000, 0x48026009, 0x80025d40, - 0x05fe07b3, 0x1c01f000, 0x832c0580, 0x00110228, - 0x05fc07f4, 0x592c040b, 0x8c000510, 0x05fe07f1, - 0x98040481, 0x05fe07de, 0x456a5800, 0x412ed000, - 0x815eb800, 0x592c0001, 0x80000d40, 0x05020006, + 0x000007f0, 0x0502101e, 0x8d0c050e, 0x0136006e, + 0x592e4414, 0x81224110, 0x83440480, 0x000007f0, + 0x0502101e, 0x83440400, 0x0010db80, 0x50000000, + 0x80026d40, 0x0134007e, 0x59340013, 0x80000130, + 0x81200580, 0x0136007e, 0x599c0018, 0x8c00052a, + 0x05000005, 0x592c0003, 0x5800040c, 0x81200580, + 0x0136007e, 0x5934000a, 0x8c00052e, 0x01360084, + 0x05fdf861, 0x01360080, 0x1c01f000, 0x83440c80, + 0x00000800, 0x01341029, 0x59a800ad, 0x81440480, + 0x01361029, 0x05fdf7dd, 0x05fdf89f, 0x05fc07e7, + 0x0135f07e, 0x58f00803, 0x58f00400, 0x48065800, + 0x492c0801, 0x492de003, 0x80000040, 0x4801e400, + 0x05000002, 0x1c01f000, 0x58f25802, 0x58f00007, + 0x6006e000, 0x0801f800, 0x1c01f000, 0x80140110, + 0x0134001b, 0x80000040, 0x05020009, 0x592c240e, + 0x8c100504, 0x0500000a, 0x592c020b, 0x82000c80, + 0x00001001, 0x01361029, 0x0135f71d, 0x4a01e007, + 0x00020a89, 0x05fdf67e, 0x592c240e, 0x592c040b, + 0x8c000510, 0x0500000d, 0x016df8ae, 0x0502000b, + 0x59a800e4, 0x492f50e4, 0x492fc857, 0x4803c857, + 0x80000d40, 0x05000003, 0x492c0800, 0x1c01f000, + 0x492f50e3, 0x1c01f000, 0x592e8a0a, 0x417a7800, + 0x592e440b, 0x83224500, 0x000000ff, 0x83200580, + 0x000000ff, 0x0134021e, 0x83200400, 0x0010d8f9, + 0x50024800, 0x83440c80, 0x000007f0, 0x01361215, + 0x83440c00, 0x0010db80, 0x50040000, 0x80026d40, + 0x01340219, 0x59340013, 0x80000130, 0x81200580, + 0x01360219, 0x59340002, 0x592c080c, 0x80040580, + 0x82000500, 0x00ffffff, 0x01360029, 0x59243a00, + 0x901c0503, 0x90000583, 0x05000004, 0x59340200, + 0x8c00050e, 0x01340212, 0x592c040b, 0x8c000510, + 0x0500001b, 0x592c080d, 0x59a802e2, 0x80041480, + 0x0134123a, 0x59a804e2, 0x80000000, 0x80041480, + 0x0136123a, 0x0139fe8a, 0x01340029, 0x59300407, + 0x800001c0, 0x01360029, 0x497a580c, 0x4936600a, + 0x59340002, 0x82000500, 0x00ffffff, 0x4802600b, + 0x641a6407, 0x4926601d, 0x492e6017, 0x592c040e, + 0x8c00051e, 0x01360029, 0x1c01f000, 0x592e600d, + 0x497a580c, 0x813004af, 0x0134123a, 0xa1300495, + 0x013611dc, 0x592c0a10, 0x59300202, 0x80040580, + 0x0136023a, 0x4936600a, 0x4926601d, 0x8c10051c, + 0x013601ce, 0x59240206, 0x8c000510, 0x01360252, + 0x8d0c050e, 0x013601ba, 0x8c1c0516, 0x01360249, + 0x59340200, 0x8c000518, 0x01360234, 0x59300c07, + 0x90040586, 0x01360255, 0xa1300494, 0x05021009, + 0xa1300496, 0x05001007, 0x592c040e, 0x8c00051e, + 0x05000004, 0x59300203, 0x90000587, 0x0136024f, + 0x8c100508, 0x013601b0, 0x59300809, 0x497a5807, + 0x64025a0a, 0x800409c0, 0x013601b5, 0x59300416, + 0x8c000516, 0x0136023d, 0x492e6009, 0x0501f359, + 0x497a5805, 0x80140110, 0x0134001b, 0x80000040, + 0x0134001b, 0x592c0a0b, 0x82040c80, 0x00001001, + 0x01361029, 0x4a01e007, 0x00020b17, 0x05fdf5f0, + 0x592c0001, 0x80001540, 0x0134001b, 0x58080a08, + 0x82040d00, 0x000000ff, 0xb004058a, 0x01360022, + 0x58080409, 0x8c000510, 0x05020021, 0x6006e000, + 0x592c240e, 0x8c100504, 0x05fc0765, 0x592c0208, + 0x82000580, 0x0000017a, 0x05fc0761, 0x40087800, + 0x592c020b, 0x82000480, 0x00001001, 0x01361029, + 0x583c180c, 0x583c200d, 0x583c100e, 0x82080500, + 0xffff0003, 0x01360029, 0x600ae000, 0x42000000, + 0x00114295, 0x50007000, 0x64207010, 0x592c0804, + 0x48047006, 0x480c7007, 0x48107008, 0x492c700b, + 0x6430700e, 0x483c700c, 0x0135f72f, 0x592c240e, + 0x8c100504, 0x01360029, 0x4d2c0000, 0x4c080000, + 0x05f9fcd8, 0x5c001000, 0x0500000e, 0x412c6800, + 0x5c025800, 0x592c5c0e, 0x802c5942, 0x48365805, + 0x05fdfe79, 0x05fc0739, 0x0135f029, 0x6006e000, + 0x412c6800, 0x58f25805, 0x592c1001, 0x05fdf7f6, + 0x5c025800, 0x492de005, 0x6022e000, 0x4a01e004, + 0x00020b52, 0x1c01f000, 0x4df00000, 0x4203e000, + 0x50000000, 0x0502b00b, 0x835c0480, 0x00000104, + 0x0500100c, 0x815eb840, 0x416a5800, 0x592ed000, + 0x492fb007, 0x497a5800, 0x497a5801, 0x05fcb7f7, + 0x59d80005, 0x82000500, 0x43238780, 0x01360395, + 0x5c03e000, 0x1c01f000, 0x4df00000, 0x4203e000, + 0x50000000, 0x0502f00b, 0x835c0480, 0x00000104, + 0x0500100c, 0x815eb840, 0x416a5800, 0x592ed000, + 0x492fa807, 0x497a5800, 0x497a5801, 0x05fcf7f7, + 0x59d40005, 0x82000500, 0x43238780, 0x0136038f, + 0x5c03e000, 0x1c01f000, 0x40307000, 0x5838000b, + 0x80025d40, 0x0500001c, 0x58380002, 0x82000580, + 0x00000100, 0x0500001d, 0x4c380000, 0x592c0208, + 0x82000500, 0x000000ff, 0x90000592, 0x0500000f, + 0xb00005a0, 0x0500000d, 0x90000588, 0x0500000b, + 0x592c020c, 0x8400054e, 0x48025a0c, 0x497a5c0c, + 0x497a5c0d, 0x640a5a0a, 0x4a025a08, 0x00000103, + 0x05fdf809, 0x0501f003, 0x64425a0a, 0x05fdf806, + 0x5c007000, 0x6006e000, 0x4a007002, 0x00000100, + 0x49787010, 0x1c01f000, 0x58380004, 0x90000483, + 0x05000081, 0x58381010, 0x8c080500, 0x05020014, + 0x8c080506, 0x05020037, 0x600cb000, 0x912cac15, + 0x5838000a, 0x5838100d, 0x8008a400, 0x4c380000, + 0x0501fe18, 0x5c007000, 0x5838000d, 0x90000403, + 0x4800700d, 0x64047010, 0x58380004, 0x90000483, + 0x48007004, 0x90000583, 0x0500006b, 0x5838000e, + 0x80001d40, 0x05020026, 0x4c380000, 0x05f9fc59, + 0x5c007000, 0x05000012, 0x4a025a08, 0x0000010a, + 0x60241800, 0x480c700e, 0x5838000c, 0x80000540, + 0x05020002, 0x5838000b, 0x40000800, 0x492c0801, + 0x492c700c, 0x603c0800, 0x0501f019, 0x6022e000, + 0x4a01e004, 0x00020bde, 0x1c01f000, 0x6022e000, + 0x4a01e004, 0x00020be2, 0x1c01f000, 0x600ae000, + 0x6e007000, 0x00114295, 0x0501f06b, 0x600ae000, + 0x42000000, 0x00114295, 0x50007000, 0x05fdf7e3, + 0x84081540, 0x48087010, 0x5838180e, 0x583a580c, + 0x400c0000, 0x60600800, 0x80040c80, 0x58381004, + 0x5838000f, 0x41783000, 0x80000540, 0x05020004, + 0x84183540, 0x90081483, 0x05000037, 0x40080000, + 0x80040480, 0x05001002, 0x40080800, 0x4004b000, + 0x412c0000, 0x800c0400, 0x4000a800, 0x5838000a, + 0x5838100d, 0x8008a400, 0x4c080000, 0x4c040000, + 0x4c0c0000, 0x4c380000, 0x0501fdca, 0x5c007000, + 0x5c001800, 0x5c000800, 0x40040000, 0x58381004, + 0x80080480, 0x48007004, 0x90000583, 0x05000002, + 0x84183500, 0x5c000000, 0x80041400, 0xb00804a0, + 0x05020003, 0x84183542, 0x41781000, 0x400c0000, + 0x80041c00, 0x900c0498, 0x05020003, 0x84183544, + 0x40001800, 0x40080800, 0x4804700d, 0x480c700e, + 0x40180000, 0x0c01f001, 0x00020c29, 0x00020c2c, + 0x00020c2a, 0x00020c29, 0x00020bc5, 0x00020c2c, + 0x00020c2a, 0x00020c29, 0x0101fe15, 0x5838100f, + 0x0135f72f, 0x5838080d, 0x90040402, 0x5838100a, + 0x80080400, 0x50001000, 0x800811c0, 0x05020041, + 0x58381810, 0x8c0c0506, 0x0502000b, 0x6006e000, + 0x583a580b, 0x4978700b, 0x49787010, 0x592c0208, + 0x82000500, 0x000000ff, 0x90000592, 0x05fc064b, + 0x05fdf602, 0x8c0c0502, 0x05020028, 0x8c0c0508, + 0x05000016, 0x5838080c, 0x5838000e, 0x80002d40, + 0x0502000b, 0x4c380000, 0x0105f9a8, 0x5c007000, + 0x05fc078b, 0x412c0800, 0x583a580c, 0x48065801, + 0x4a000a08, 0x0000010a, 0x60242800, 0x58381811, + 0x58382012, 0x58381013, 0x80040c05, 0x480c0800, + 0x48100801, 0x48080802, 0x6006e000, 0x583a580b, + 0x4978700b, 0x49787010, 0x592c0208, 0x82000d00, + 0x000000ff, 0xb00405b2, 0x05fc0628, 0x592c1001, + 0xb00405ba, 0x05fe054a, 0x58080409, 0x8c000510, + 0x05fc0622, 0x05fdf6dd, 0x8c0c0504, 0x05fe07ef, + 0x840c1d44, 0x480c7010, 0x58381811, 0x58382012, + 0x58381013, 0x480c7007, 0x48107008, 0x0135f72f, + 0x5838000a, 0x80040c00, 0x90381c07, 0x54041800, + 0x80040800, 0x800c1800, 0x54041800, 0x0135f72f, + 0x80140110, 0x0134001b, 0x80000040, 0x0134001b, + 0x4a01e007, 0x00020c82, 0x05fdf485, 0x4d2c0000, + 0x0105f9a8, 0x412c6800, 0x5c025800, 0x05000006, + 0x48365805, 0x90346c01, 0x0501f80c, 0x05fc05b7, + 0x0135f029, 0x492de006, 0x6022e000, 0x4a01e004, + 0x00020c91, 0x1c01f000, 0x6006e000, 0x412c6800, + 0x58f25806, 0x05fdf7f3, 0x592c4812, 0x592c020b, + 0x80004540, 0x05000023, 0x592c040b, 0x80002540, + 0x05000020, 0x592c7001, 0x80204040, 0x05000008, + 0x90200485, 0x05001006, 0x58387001, 0x803871c0, + 0x05000018, 0x80004540, 0x05fe07fa, 0x82204400, + 0x00100042, 0x50200000, 0x80380c00, 0x58042800, + 0x58043001, 0x58043802, 0x4838680d, 0x4800680c, + 0x49786814, 0x49786815, 0x48146810, 0x48186811, + 0x481c6812, 0x4820680e, 0x48246813, 0x80102040, + 0x4810680f, 0x05020005, 0x80000580, 0x1c01f000, + 0x90000541, 0x1c01f000, 0x80204000, 0x50201800, + 0x800c19c0, 0x0502000a, 0x58380001, 0x80007540, + 0x05fc07f8, 0x58380208, 0x9000050f, 0x82000400, + 0x0010004b, 0x50004000, 0x50201800, 0x4820680e, + 0x480c680c, 0x4838680d, 0x05fdf7ec, 0x4df00000, + 0x4203e000, 0x50000000, 0x5994002f, 0x80000540, + 0x05000183, 0x4c000000, 0x5c000000, 0x59947824, + 0x48032830, 0x803c0480, 0x05001004, 0x05000003, + 0x48032824, 0x0501f05f, 0x417a0800, 0x81060800, + 0x82000400, 0x000003e8, 0x05fc27fd, 0x48032824, + 0x59940033, 0x80000d40, 0x05000006, 0x80040840, + 0x48072833, 0x05020003, 0x59940034, 0x0801f800, + 0x59a8001e, 0x8400057e, 0x4803501e, 0x59a80024, + 0x8400057e, 0x48035024, 0x59a80011, 0x8400057e, + 0x48035011, 0x59a80012, 0x8400057e, 0x48035012, + 0x0125fac5, 0x0502000a, 0x59a8087b, 0x800409c0, + 0x05000007, 0xa0040c81, 0x4807507b, 0x05000002, + 0x05021003, 0x497b507b, 0x0141fb83, 0x59a800aa, + 0x8c000500, 0x0500000e, 0x59a8087b, 0x800409c0, + 0x0500000b, 0xa0040c81, 0x4807507b, 0x05000002, + 0x05021007, 0x497b507b, 0x42000000, 0x00111c8f, + 0x50000800, 0x84040d48, 0x44040000, 0x59a800bd, + 0x81041400, 0x480b50bd, 0x59a808bf, 0x81040c01, + 0x82040480, 0x00028f5a, 0x05001002, 0x41780800, + 0x480750bf, 0x81040040, 0x05000002, 0x4907c857, + 0x59e40852, 0x59a800be, 0x80040580, 0x05000004, + 0x480bc857, 0x59e40052, 0x480350be, 0x59940031, + 0x81040400, 0x48032831, 0x013dfbef, 0x5998b002, + 0x8058b1c0, 0x05000008, 0x40f25800, 0x592e5801, + 0x592c020a, 0x8c000500, 0x05fe0a2b, 0x8058b040, + 0x05fe07fb, 0x59940000, 0x90000580, 0x05020005, + 0x59940031, 0x48032832, 0x497b2831, 0x64072800, + 0x4c0c0000, 0x58d400e5, 0x8c000514, 0x05000013, + 0x59940807, 0x59941006, 0x59940030, 0x80081c80, + 0x05001004, 0x05000003, 0x480f2806, 0x0501f00b, + 0x80040840, 0x48072807, 0x05020004, 0x59940008, + 0x0801f800, 0x0501f005, 0x400c0000, 0x900c1c0a, + 0x05fc27f8, 0x480f2806, 0x5c001800, 0x4d180000, + 0x59c80040, 0x8c000534, 0x05020025, 0x417a3000, + 0x91947c09, 0x60042000, 0x58d400e5, 0x80100500, + 0x05020007, 0x801020c4, 0x903c7c05, 0x811a3000, + 0x91180585, 0x05fe07f9, 0x0501f019, 0x583c0801, + 0x583c1000, 0x59940030, 0x80080480, 0x05001005, + 0x05000004, 0x48007800, 0x80000040, 0x05fe17f2, + 0x80040840, 0x48047801, 0x05000006, 0x9000040a, + 0x48007800, 0x05fc27fb, 0xb004053f, 0x05fdf7ea, + 0x583c0004, 0x4c3c0000, 0x4c100000, 0x0801f800, + 0x5c002000, 0x5c007800, 0x05fdf7e3, 0x5c023000, + 0x8d0c0516, 0x05020017, 0x8d0c0522, 0x0500001e, + 0x5998b008, 0x8058b1c0, 0x05000012, 0x41765800, + 0x592e5800, 0x592c0003, 0x80001540, 0x05000006, + 0x05002008, 0x59940030, 0x80080480, 0x05021004, + 0x497a5803, 0x05f9fe95, 0x0501f002, 0x48025803, + 0x8058b040, 0x05fe07f3, 0x8d0c0520, 0x0500000a, + 0x59940023, 0x80001540, 0x05000007, 0x05002006, + 0x59940030, 0x80080480, 0x05021002, 0x80000580, + 0x48032823, 0x59940026, 0x80000d40, 0x05000012, + 0x59941025, 0x59940030, 0x80080480, 0x05001005, + 0x05000004, 0x48032825, 0x80000040, 0x0502100a, + 0x80040840, 0x48072826, 0x05020004, 0x59940027, + 0x0801f800, 0x0501f004, 0x9000040a, 0x48032825, + 0x05fc27f8, 0x59940004, 0x80000d40, 0x05000012, + 0x59941003, 0x59940030, 0x80080480, 0x05001005, + 0x05000004, 0x48032803, 0x80000040, 0x0502100a, + 0x80040840, 0x48072804, 0x05020004, 0x59940005, + 0x0801f800, 0x0501f004, 0x9000040a, 0x48032803, + 0x05fc27f8, 0x5994002a, 0x80000d40, 0x05000012, + 0x59941028, 0x59940030, 0x80080480, 0x05001005, + 0x05000004, 0x48032828, 0x80000040, 0x0502100a, + 0x80040840, 0x4807282a, 0x05020004, 0x5994002b, + 0x0801f800, 0x0501f004, 0x9000040a, 0x48032828, + 0x05fc27f8, 0x5994002d, 0x80000d40, 0x05000012, + 0x5994102c, 0x59940030, 0x80080480, 0x05001005, + 0x05000004, 0x4803282c, 0x80000040, 0x0502100a, + 0x80040840, 0x4807282d, 0x05020004, 0x5994002e, + 0x0801f800, 0x0501f004, 0x9000040a, 0x4803282c, + 0x05fc27f8, 0x59a8081e, 0x8c04053e, 0x0500001b, + 0x84040d3e, 0x4807501e, 0x05000018, 0x59940030, + 0x4c000000, 0x82000400, 0x000003e8, 0x48032830, + 0x80040480, 0x05001004, 0x05000003, 0x4803501e, + 0x0501f00c, 0x4c000000, 0x013dfcff, 0x013c0d6f, + 0x5c000000, 0x59a8081d, 0x80040400, 0x05fc27ff, + 0x800001c0, 0x05020002, 0x40040000, 0x4803501e, + 0x5c000000, 0x48032830, 0x59a80811, 0x8c04053e, + 0x05000021, 0x84040d3e, 0x48075011, 0x0500001e, + 0x59940030, 0x4c000000, 0x82000400, 0x000003e8, + 0x48032830, 0x80040480, 0x05001009, 0x05000008, + 0x48035011, 0x4c000000, 0x59a8100f, 0x5808040b, + 0x8c000514, 0x5c000000, 0x0500000d, 0x4c000000, + 0x60480000, 0x59a8100f, 0x0141f852, 0x013c0d6f, + 0x5c000000, 0x90000400, 0x05fc27ff, 0x800001c0, + 0x05020002, 0x60000000, 0x48035011, 0x5c000000, + 0x48032830, 0x59a80812, 0x8c04053e, 0x05000023, + 0x84040d3e, 0x48075012, 0x05000020, 0x59940030, + 0x4c000000, 0x82000400, 0x000003e8, 0x48032830, + 0x80040480, 0x05001009, 0x05000008, 0x48035012, + 0x4c000000, 0x59a81010, 0x5808040b, 0x8c000514, + 0x5c000000, 0x0500000f, 0x4c000000, 0x60500000, + 0x59a81010, 0x0141f852, 0x013c0d6f, 0x5c000000, + 0x82000400, 0x000927c0, 0x05fc27fe, 0x800001c0, + 0x05020003, 0x42000000, 0x000927c0, 0x48035012, + 0x5c000000, 0x48032830, 0x5994082f, 0x59940030, + 0x80040480, 0x01001e15, 0x4803282f, 0x59940000, + 0x0c01f001, 0x00020e5b, 0x00107aee, 0x00107ba7, + 0x5c03e000, 0x1c01f000, 0x5994002f, 0x80000000, + 0x4803282f, 0x4203e000, 0x70000000, 0x1c01f000, + 0x813e79c0, 0x05020016, 0x59a800d9, 0x80000040, + 0x05fe07ff, 0x58d400ea, 0x8c000516, 0x05fe07fe, + 0x91300400, 0x4801a8e1, 0x592c1003, 0x5808720a, + 0x8c380500, 0x0500000a, 0x592c1c0e, 0x820c1d00, + 0x000000c0, 0xb00c1d80, 0x05000005, 0x592c1813, + 0x5808000d, 0x800c0400, 0x4800100d, 0x1c01f000, + 0x5c000000, 0x4c000000, 0x4803c857, 0x4807c857, + 0x59302a03, 0x98140486, 0x05000005, 0x601c2800, + 0x0501f003, 0x60040800, 0x601c2800, 0x59325809, + 0x832c0580, 0x001141cc, 0x05000020, 0x832c0500, + 0x00ff0000, 0x05000026, 0x592c1000, 0x59301808, + 0x59302027, 0x801021c0, 0x0502003a, 0x592c040e, + 0x480a6009, 0x48166203, 0x8c000510, 0x0502001d, + 0x48065a0a, 0x820c0500, 0x04000800, 0x82000580, + 0x04000800, 0x0500002c, 0xa1300494, 0x0502100a, + 0xa1300496, 0x05001008, 0x592c040e, 0x8c00051e, + 0x05020005, 0x0141fc01, 0x59300202, 0x48025a10, + 0x4932580d, 0x05f9fd00, 0x417a7800, 0x59300009, + 0x82000d80, 0x001141cc, 0x05020003, 0x58040000, + 0x48026009, 0x80025d40, 0x05fe07b2, 0x1c01f000, + 0x832c0580, 0x001141cc, 0x05fc07f4, 0x592c040b, + 0x8c000510, 0x05fe07f1, 0x98040481, 0x05fe07dd, + 0x456a5800, 0x412ed000, 0x815eb800, 0x592c0001, + 0x80000d40, 0x05020006, 0x59c80000, 0x82000540, + 0x00001200, 0x48039000, 0x05fdf7e4, 0x05f9fcca, + 0x05fdf7e2, 0x59300021, 0x48025c13, 0x05fdf7d3, + 0x497a6027, 0x45682000, 0x4012d000, 0x815eb800, 0x59c80000, 0x82000540, 0x00001200, 0x48039000, - 0x05fdf7e4, 0x05f9fcdb, 0x05fdf7e2, 0x59300021, - 0x48025c13, 0x05fdf7d4, 0x497a6027, 0x45682000, - 0x4012d000, 0x815eb800, 0x59c80000, 0x82000540, - 0x00001200, 0x48039000, 0x05fdf7c0, 0x59300416, - 0x8c000510, 0x05000002, 0x84040d52, 0x48066004, - 0x497a6000, 0x497a6001, 0x58d400ea, 0x8c000516, - 0x05fe07fe, 0x83300400, 0xa0000000, 0x4801a8e1, - 0x1c01f000, 0x59300416, 0x8c000510, 0x05000002, - 0x84040d52, 0x59300004, 0x82000500, 0x00000100, - 0x80040d40, 0x48066004, 0x58d400ea, 0x8c000516, - 0x05fe07fe, 0x83300400, 0x40000000, 0x4801a8e1, - 0x1c01f000, 0x58d400ea, 0x82001500, 0x32000018, - 0x01420562, 0x8c000510, 0x0500002f, 0x58d410e0, - 0x82080500, 0xfffff000, 0x0502000d, 0x900a350f, - 0x80081108, 0x480bc857, 0x90080487, 0x01021dda, - 0x90080481, 0x01001dda, 0x1201f000, 0x00108566, - 0x84040d10, 0x48066004, 0x0501f019, 0x840a653e, - 0x59300804, 0x8c040520, 0x05fc07fa, 0x82040d00, - 0xfffefeff, 0x48066004, 0x8c08053e, 0x05020009, - 0x8c040514, 0x05000004, 0x05fdff72, 0x0501f8ff, - 0x0501f00b, 0x604e7000, 0x0501f920, 0x0501f008, - 0x8c040514, 0x05000004, 0x05fdff6a, 0x0501f8f7, - 0x0501f003, 0x61267000, 0x0501f918, 0x58d400ea, - 0x82001500, 0x32000018, 0x01420562, 0x8c000510, - 0x05fe07d3, 0x1c01f000, 0x59bc00ea, 0x82001500, - 0xb2000018, 0x0142058c, 0x8c000510, 0x05000009, - 0x59bc10e0, 0x80080108, 0x900a350f, 0x9800048b, - 0x05000005, 0x4803c857, 0x1201f000, 0x00108590, - 0x1c01f000, 0x4d300000, 0x59bc00ea, 0x8c000510, - 0x05fc07fe, 0x59be60e0, 0x813261c0, 0x01000dda, - 0x59300804, 0x8c04051c, 0x05020068, 0x59300027, - 0x80006d40, 0x05000065, 0x83180400, 0x00020f72, - 0x50001000, 0x5808020f, 0x8c000500, 0x0502005d, - 0x58340811, 0x8c040500, 0x0502002b, 0x5808000e, - 0x50000000, 0x48001003, 0x5808080c, 0x80040c80, - 0x58340011, 0x8c000504, 0x05000007, 0x5834200d, - 0x5834280e, 0x48101007, 0x48141008, 0x84000504, - 0x48006811, 0x5834180c, 0x5834300f, 0x58345010, - 0x40180000, 0x80284480, 0x05021002, 0x40280000, - 0x80000104, 0x80044480, 0x05001002, 0x40000800, - 0xb0040480, 0x05001002, 0x61000800, 0x48041004, - 0x800408c4, 0x48041005, 0x40040000, 0x80285480, - 0x48286810, 0x80184c80, 0x05000016, 0x4824680f, - 0x802851c0, 0x05000015, 0x05f9f8e5, 0x5c026000, - 0x1c01f000, 0x84040d00, 0x48046811, 0x5808080b, - 0x5834200d, 0x5834280e, 0x59301809, 0x580c3004, - 0x48181006, 0x48041003, 0x48101007, 0x48141008, - 0x49301010, 0x48341011, 0x60000801, 0x05fdf7d6, - 0x800c1840, 0x05020005, 0x58340011, 0x84000542, - 0x48006811, 0x05fdf7e9, 0x5834700a, 0x5834200b, - 0x80102000, 0x50100000, 0x80000540, 0x05000010, - 0x80383400, 0x58183800, 0x58184001, 0x58184802, - 0x4810680b, 0x480c680c, 0x481c680d, 0x4820680e, - 0x4824680f, 0x802851c0, 0x05fc07ec, 0x58340011, - 0x84000544, 0x48006811, 0x05fdf7d4, 0x58387001, - 0x4838680a, 0x42002000, 0x001012a3, 0x05fdf7ea, - 0x84000542, 0x4800120f, 0x4933c857, 0x05fdf7cc, - 0x0010e32d, 0x0010e33f, 0x0010e351, 0x0010e363, - 0x0010e375, 0x5830020f, 0x8c000500, 0x0502001b, - 0x58307810, 0x803c79c0, 0x05000030, 0x58300002, - 0x82000580, 0x00000100, 0x0502002e, 0x583c0c07, - 0x90040586, 0x05000003, 0x90040583, 0x05020027, - 0x58300804, 0x58300003, 0x80040c00, 0x5830000b, - 0x80047c80, 0x823c7d80, 0x00000080, 0x05020002, - 0x40000800, 0x5830000e, 0x44040000, 0x5830000d, - 0x480378e7, 0x1c01f000, 0x4803c856, 0x4978620f, - 0x8c000502, 0x05fc07fc, 0x4803c856, 0x4c300000, - 0x0141fd13, 0x5c006000, 0x58300c0f, 0x800410ca, - 0x82081400, 0x00007600, 0x4a001014, 0x00090000, - 0x800410c8, 0x82081400, 0x0000bf32, 0x58080005, - 0x84000500, 0x48001005, 0x5830000b, 0x5830080e, - 0x44000800, 0x0141fd04, 0x483fc857, 0x05fdf7e6, - 0x4d300000, 0x4d2c0000, 0x4d3c0000, 0x4c300000, - 0x58326010, 0x4933c857, 0x59325809, 0x592c020c, - 0x8400054e, 0x48025a0c, 0x417a7800, 0x0155f815, - 0x5c006000, 0x5c027800, 0x5c025800, 0x5c026000, - 0x05fdf7d5, 0x59a8029c, 0x81640480, 0x05001015, - 0x41626000, 0x41580000, 0x59300a03, 0x90040d80, - 0x05020007, 0x64226203, 0x8166c840, 0x9132c430, - 0x81600480, 0x05021008, 0x1c01f000, 0x91326430, - 0x81300c80, 0x05fc17f5, 0x42026000, 0x00111b00, - 0x05fdf7f2, 0x837ac540, 0x00111b00, 0x1c01f000, - 0x42000000, 0x0010e442, 0x0165ffdc, 0x4967c857, - 0x80026580, 0x1c01f000, 0x83300480, 0x00111b00, - 0x01001dda, 0x41580000, 0x81300480, 0x0502100a, - 0x457a6000, 0x4a026202, 0x0000ffff, 0x05011000, - 0x91300403, 0x4803c840, 0x64b7c842, 0x8166c800, - 0x1c01f000, 0x41540000, 0x81300480, 0x01021dda, - 0xa1300494, 0x05021005, 0x05000004, 0x64026203, - 0x497a6006, 0x1c01f000, 0x59a80098, 0x49335097, - 0x80000000, 0x48035098, 0x457a6000, 0x4a026202, + 0x05fdf7bf, 0x59300416, 0x8c000510, 0x05000002, + 0x84040d52, 0x48066004, 0x497a6000, 0x497a6001, + 0x58d400ea, 0x8c000516, 0x05fe07fe, 0x83300400, + 0xa0000000, 0x4801a8e1, 0x1c01f000, 0x59300416, + 0x8c000510, 0x05000002, 0x84040d52, 0x59300004, + 0x82000500, 0x00000100, 0x80040d40, 0x48066004, + 0x58d400ea, 0x8c000516, 0x05fe07fe, 0x83300400, + 0x40000000, 0x4801a8e1, 0x1c01f000, 0x58d400ea, + 0x82001500, 0x32000018, 0x01460220, 0x8c000510, + 0x0500002f, 0x58d410e0, 0x82080500, 0xfffff000, + 0x0502000d, 0x900a350f, 0x80081108, 0x480bc857, + 0x90080487, 0x01021e15, 0x90080481, 0x01001e15, + 0x1201f000, 0x00108a24, 0x84040d10, 0x48066004, + 0x0501f019, 0x840a653e, 0x59300804, 0x8c040520, + 0x05fc07fa, 0x82040d00, 0xfffefeff, 0x48066004, + 0x8c08053e, 0x05020009, 0x8c040514, 0x05000004, + 0x05fdff71, 0x0501f8fc, 0x0501f00b, 0x604e7000, + 0x0501f922, 0x0501f008, 0x8c040514, 0x05000004, + 0x05fdff69, 0x0501f8f4, 0x0501f003, 0x61267000, + 0x0501f91a, 0x58d400ea, 0x82001500, 0x32000018, + 0x01460220, 0x8c000510, 0x05fe07d3, 0x1c01f000, + 0x59bc00ea, 0x82001500, 0xb2000018, 0x0146024a, + 0x8c000510, 0x05000009, 0x59bc10e0, 0x80080108, + 0x900a350f, 0x9800048b, 0x05000005, 0x4803c857, + 0x1201f000, 0x00108a4e, 0x1c01f000, 0x4d300000, + 0x59bc00ea, 0x8c000510, 0x05fc07fe, 0x59be60e0, + 0x813261c0, 0x01000e15, 0x59300804, 0x8c04051c, + 0x05020068, 0x59300027, 0x80006d40, 0x05000065, + 0x83180400, 0x00020fa9, 0x50001000, 0x5808020f, + 0x8c000500, 0x0502005d, 0x58340811, 0x8c040500, + 0x0502002b, 0x5808000e, 0x50000000, 0x48001003, + 0x5808080c, 0x80040c80, 0x58340011, 0x8c000504, + 0x05000007, 0x5834200d, 0x5834280e, 0x48101007, + 0x48141008, 0x84000504, 0x48006811, 0x5834180c, + 0x5834300f, 0x58345010, 0x40180000, 0x80284480, + 0x05021002, 0x40280000, 0x80000104, 0x80044480, + 0x05001002, 0x40000800, 0xb0040480, 0x05001002, + 0x61000800, 0x48041004, 0x800408c4, 0x48041005, + 0x40040000, 0x80285480, 0x48286810, 0x80184c80, + 0x05000016, 0x4824680f, 0x802851c0, 0x05000015, + 0x05f9f8b6, 0x5c026000, 0x1c01f000, 0x84040d00, + 0x48046811, 0x5808080b, 0x5834200d, 0x5834280e, + 0x59301809, 0x580c3004, 0x48181006, 0x48041003, + 0x48101007, 0x48141008, 0x49301010, 0x48341011, + 0x60000801, 0x05fdf7d6, 0x800c1840, 0x05020005, + 0x58340011, 0x84000542, 0x48006811, 0x05fdf7e9, + 0x5834700a, 0x5834200b, 0x80102000, 0x50100000, + 0x80000540, 0x05000010, 0x80383400, 0x58183800, + 0x58184001, 0x58184802, 0x4810680b, 0x480c680c, + 0x481c680d, 0x4820680e, 0x4824680f, 0x802851c0, + 0x05fc07ec, 0x58340011, 0x84000544, 0x48006811, + 0x05fdf7d4, 0x58387001, 0x4838680a, 0x42002000, + 0x00100042, 0x05fdf7ea, 0x84000542, 0x4800120f, + 0x4933c857, 0x05fdf7cc, 0x001122c8, 0x001122da, + 0x001122ec, 0x001122fe, 0x00112310, 0x5830020f, + 0x8c000500, 0x0502001b, 0x58307810, 0x803c79c0, + 0x05000030, 0x58300002, 0x82000580, 0x00000100, + 0x0502002e, 0x583c0c07, 0x90040586, 0x05000003, + 0x90040583, 0x05020027, 0x58300804, 0x58300003, + 0x80040c00, 0x5830000b, 0x80047c80, 0x823c7d80, + 0x00000080, 0x05020002, 0x40000800, 0x5830000e, + 0x44040000, 0x5830000d, 0x480378e7, 0x1c01f000, + 0x4803c856, 0x4978620f, 0x8c000502, 0x05fc07fc, + 0x4803c856, 0x4c300000, 0x0145f9d1, 0x5c006000, + 0x58300c0f, 0x800410ca, 0x82081400, 0x00007600, + 0x4a001014, 0x00090000, 0x800410c8, 0x82081400, + 0x0000bf32, 0x58080005, 0x84000500, 0x48001005, + 0x5830000b, 0x5830080e, 0x44000800, 0x0145f9c2, + 0x483fc857, 0x05fdf7e6, 0x4d300000, 0x4d2c0000, + 0x4d3c0000, 0x4c300000, 0x58326010, 0x4933c857, + 0x59325809, 0x592c020c, 0x8400054e, 0x48025a0c, + 0x417a7800, 0x0155fd87, 0x5c006000, 0x5c027800, + 0x5c025800, 0x5c026000, 0x05fdf7d5, 0x816404a0, + 0x05001013, 0x41626000, 0x41580000, 0x59300a03, + 0x90040d80, 0x05020007, 0x64226203, 0x8166c840, + 0x9132c430, 0x81600480, 0x05021007, 0x1c01f000, + 0x91326430, 0x81300c80, 0x05fc17f5, 0x40be6000, + 0x05fdf7f3, 0x80bec56f, 0x1c01f000, 0x42000000, + 0x001123e4, 0x0169ff57, 0x4967c857, 0x80026580, + 0x1c01f000, 0x813004af, 0x014c10c4, 0x41580000, + 0x81300480, 0x0502100a, 0x457a6000, 0x4a026202, 0x0000ffff, 0x05011000, 0x91300403, 0x4803c840, - 0x64b7c842, 0x1c01f000, 0x4d340000, 0x4d240000, + 0x64b3c842, 0x8166c800, 0x1c01f000, 0x41540000, + 0x81300480, 0x01021e15, 0xa1300494, 0x05021008, + 0x5930102f, 0x82080580, 0x00000800, 0x4802602f, + 0x64026203, 0x497a6006, 0x1c01f000, 0x59a8009b, + 0x80000000, 0x4803509b, 0x5930102f, 0x82080580, + 0x00000800, 0x4802602f, 0x457a6000, 0x4a026202, + 0x0000ffff, 0x05011000, 0x91300403, 0x4803c840, + 0x64b3c842, 0x1c01f000, 0x4d340000, 0x4d240000, 0x5932481d, 0x5932680a, 0x59300407, 0x9000051f, 0x0c01f804, 0x5c024800, 0x5c026800, 0x1c01f000, - 0x0010942a, 0x00109439, 0x00109453, 0x0002102a, - 0x0010baa6, 0x0010bac1, 0x0002111a, 0x0010942a, - 0x00109439, 0x00107f71, 0x0010949b, 0x0010942a, - 0x0010942a, 0x0010942a, 0x0010942a, 0x0010946b, - 0x0010b373, 0x0010cb60, 0x0010942a, 0x0010942a, - 0x0010942a, 0x0010942a, 0x0010942a, 0x0010942a, - 0x0010942a, 0x0010942a, 0x0010942a, 0x0010942a, - 0x0010942a, 0x0010942a, 0x0010942a, 0x0010942a, - 0x59300203, 0x90000c91, 0x01021dda, 0x0c01f001, - 0x0010946a, 0x0010a076, 0x0002103f, 0x0010a2f9, - 0x0010a3aa, 0x0010946a, 0x0010946a, 0x0010946a, - 0x0010a062, 0x0010946a, 0x0010946a, 0x0010946a, - 0x0010946a, 0x0010a5a1, 0x0010ae80, 0x0010946a, - 0x0010aeaf, 0xb1380498, 0x05021006, 0xb1380480, + 0x0010995c, 0x0010996b, 0x00109985, 0x00021063, + 0x0010c183, 0x0010c19e, 0x00021153, 0x0010995c, + 0x0010996b, 0x0010842a, 0x001099cd, 0x0010995c, + 0x0010995c, 0x0010995c, 0x0010995c, 0x0010999d, + 0x0010b919, 0x0010d2aa, 0x0010995c, 0x0010995c, + 0x0010995c, 0x0010995c, 0x0010995c, 0x0010995c, + 0x0010995c, 0x0010995c, 0x0010995c, 0x0010995c, + 0x0010995c, 0x0010995c, 0x0010995c, 0x0010995c, + 0x59300203, 0x90000c91, 0x01021e15, 0x0c01f001, + 0x0010999c, 0x0010a5bb, 0x00021078, 0x0010a83d, + 0x0010a8ee, 0x0010999c, 0x0010999c, 0x0010999c, + 0x0010a5a7, 0x0010999c, 0x0010999c, 0x0010999c, + 0x0010999c, 0x0010ab13, 0x0010b419, 0x0010999c, + 0x0010b448, 0xb1380498, 0x05021006, 0xb1380480, 0x05001004, 0x4d2c0000, 0x0c01f803, 0x5c025800, - 0x1c01f000, 0x0010a0f0, 0x0010a0f0, 0x0010a0f0, - 0x0010a0f0, 0x0010a0f0, 0x0010a0f1, 0x0010a1ed, - 0x0010a0f0, 0x0010a23e, 0x0010a0f0, 0x0010a0f0, - 0x0010a0f0, 0x0010a0f0, 0x0010a0f0, 0x0010a0f0, - 0x0010a0f0, 0x0010a0f0, 0x0010a0f0, 0x0010a0f0, - 0x0010a1f1, 0x0002105f, 0x0010a0f0, 0x0010a1f0, - 0x0010a1f2, 0x59325809, 0x59300008, 0x8c000536, + 0x1c01f000, 0x0010a634, 0x0010a634, 0x0010a634, + 0x0010a634, 0x0010a634, 0x0010a635, 0x0010a731, + 0x0010a634, 0x0010a782, 0x0010a634, 0x0010a634, + 0x0010a634, 0x0010a634, 0x0010a634, 0x0010a634, + 0x0010a634, 0x0010a634, 0x0010a634, 0x0010a634, + 0x0010a735, 0x00021098, 0x0010a634, 0x0010a734, + 0x0010a736, 0x59325809, 0x59300008, 0x8c000536, 0x0500000f, 0x497a580d, 0x41782800, 0x60303000, 0x60443800, 0x4c5c0000, 0x592cb805, 0x0501f84c, - 0x4d2c0000, 0x405e5800, 0x0105f992, 0x5c025800, + 0x4d2c0000, 0x405e5800, 0x0105f9c9, 0x5c025800, 0x497a5805, 0x5c00b800, 0x0501f01c, 0x59300813, 0x59301402, 0x59340200, 0x8c00050e, 0x05020023, 0x0501f82f, 0x05000005, 0x4a025a08, 0x00000103, 0x497a580d, 0x0501f009, 0x4a025a08, 0x00000103, - 0x64025a0a, 0x497a580d, 0x40040000, 0x0159feba, - 0x80000d40, 0x01520b78, 0x4806580b, 0x480a5c0a, + 0x64025a0a, 0x497a580d, 0x40040000, 0x015dfc60, + 0x80000d40, 0x015608bc, 0x4806580b, 0x480a5c0a, 0x59300008, 0x82000500, 0x04000800, 0x82000580, - 0x04000800, 0x05000017, 0x05f9faf6, 0x0159feb1, + 0x04000800, 0x05000017, 0x05f9fae3, 0x015dfc57, 0x5934000f, 0x8d0c0512, 0x05020005, 0x5934140b, 0x80081040, 0x05001002, 0x480a6c0b, 0x80000540, - 0x05fa0a77, 0x05fdf745, 0x592c020e, 0x8c000502, + 0x05fa0a64, 0x05fdf740, 0x592c020e, 0x8c000502, 0x05fc07dc, 0x800409c0, 0x05fc07e0, 0x592c020c, - 0x8c00050e, 0x05fe07dd, 0x4933c857, 0x0155f703, + 0x8c00050e, 0x05fe07dd, 0x4933c857, 0x0159f49c, 0x59300221, 0x48025c13, 0x05fdf7e8, 0x592c020e, 0x8c000500, 0x0500000d, 0x59300017, 0x592c3813, 0x801c3c80, 0x05000009, 0x64565a0a, 0x8c1c053e, @@ -14629,2070 +15123,2091 @@ static const uint32_t isp_2500_risc_code[] = { 0x812c3c00, 0x50180000, 0x44003800, 0x401cc000, 0x901cc401, 0x585c0813, 0x800409c0, 0x0500003d, 0x4807c857, 0x8c04053e, 0x05020025, 0x5930002b, - 0x80000540, 0x05000018, 0x015dfa98, 0x0500002e, + 0x80000540, 0x05000018, 0x0161f94e, 0x0500002e, 0x4c040000, 0x4c080000, 0x4c0c0000, 0x4c100000, 0x4c140000, 0x40002800, 0x58141003, 0x40040000, - 0x80081480, 0x48082803, 0x40140000, 0x0105ff10, + 0x80081480, 0x48082803, 0x40140000, 0x0105ffae, 0x5c002800, 0x5c002000, 0x5c001800, 0x5c001000, 0x5c000800, 0x592c020a, 0x80000540, 0x0502000b, 0x0501f005, 0x592c040c, 0x8c00051c, 0x05000002, 0x592c0806, 0x4807c857, 0x592c020a, 0x82000540, 0x00001500, 0x48025a0a, 0x0501f016, 0x5930002b, - 0x80000540, 0x0500000e, 0x015dfa98, 0x0500000a, + 0x80000540, 0x0500000e, 0x0161f94e, 0x0500000a, 0x592c020a, 0x82000540, 0x00000700, 0x48025a0a, - 0x5930002b, 0x4c040000, 0x0105ff10, 0x5c000800, + 0x5930002b, 0x4c040000, 0x0105ffae, 0x5c000800, 0x0501f008, 0x64465a0a, 0x05fdf7fa, 0x4807c856, 0x592c020a, 0x82000540, 0x00000700, 0x48025a0a, 0x4404c000, 0x5c00c000, 0x5c00b800, 0x1c01f000, - 0x59300203, 0x90003491, 0x01021dda, 0x0c01f001, - 0x0010badf, 0x0002112f, 0x0010c2aa, 0x0010c2bb, - 0x0002114a, 0x0010badf, 0x0010c39c, 0x00021178, - 0x0010badf, 0x0010badf, 0x0010badf, 0x0010badf, - 0x0010badf, 0x0010badf, 0x0010c8cd, 0x0010badf, - 0x0010c900, 0x91380593, 0x01620241, 0x59300403, - 0xb0027484, 0x01021dda, 0xb0000480, 0x01001dda, - 0x0c01f001, 0x0010c28a, 0x0002113b, 0x0010c28b, - 0x0010c29d, 0x0159f89e, 0x05000005, 0x59a8005e, + 0x59300203, 0x90003491, 0x01021e15, 0x0c01f001, + 0x0010c1bc, 0x00021168, 0x0010c9ad, 0x0010c9be, + 0x00021183, 0x0010c1bc, 0x0010ca9f, 0x000211b1, + 0x0010c1bc, 0x0010c1bc, 0x0010c1bc, 0x0010c1bc, + 0x0010c1bc, 0x0010c1bc, 0x0010d017, 0x0010c1bc, + 0x0010d04a, 0x91380593, 0x01660144, 0x59300403, + 0xb0027484, 0x01021e15, 0xb0000480, 0x01001e15, + 0x0c01f001, 0x0010c98d, 0x00021174, 0x0010c98e, + 0x0010c9a0, 0x0159fe36, 0x05000005, 0x59a80061, 0x48026205, 0x643a6203, 0x1c01f000, 0x59325809, 0x832c0500, 0x00ff0000, 0x05000004, 0x592c0c0e, - 0x8c04051a, 0x0162029a, 0x05fdfd06, 0x05fdf693, + 0x8c04051a, 0x0166019d, 0x05fdfd03, 0x05fdf68e, 0xb1380498, 0x05001007, 0xb13805a1, 0x05000003, - 0xb13805a0, 0x01020dda, 0x4933c857, 0x1c01f000, - 0xb1380588, 0x05000004, 0xb1380593, 0x0160033f, - 0x0101fdda, 0x83300580, 0x00111ad0, 0x05020008, - 0x497a6205, 0x59301202, 0x41780000, 0x0161fc4e, - 0x01600354, 0x411e6000, 0x0161f31f, 0x5930002b, + 0xb13805a0, 0x01020e15, 0x4933c857, 0x1c01f000, + 0xb1380588, 0x05000004, 0xb1380593, 0x01640242, + 0x0101fe15, 0x83300580, 0x00115a74, 0x05020008, + 0x497a6205, 0x59301202, 0x41780000, 0x0165fb4b, + 0x01640257, 0x411e6000, 0x0165f222, 0x5930002b, 0x59301013, 0x5930080a, 0x58040a00, 0x8c04050e, - 0x01620325, 0x800811c0, 0x01620330, 0x5930002b, - 0x80000540, 0x0162033a, 0x59325809, 0x592c040e, - 0x8c00051e, 0x0160031f, 0x64066203, 0x65066403, + 0x01660228, 0x800811c0, 0x01660233, 0x5930002b, + 0x80000540, 0x0166023d, 0x59325809, 0x592c040e, + 0x8c00051e, 0x01640222, 0x64066203, 0x65066403, 0x42000800, 0x80002042, 0x8c00051a, 0x05020002, - 0x84040d54, 0x05fdf534, 0xb1380498, 0x01621360, - 0xb1380480, 0x01601361, 0x0c01f001, 0x0010c369, - 0x00021191, 0x0010c372, 0x0010c377, 0x0010c369, - 0x0010c369, 0x0010c369, 0x0010c369, 0x0010c36a, - 0x0010c36e, 0x0010c36e, 0x0010c369, 0x0010c369, - 0x0010c369, 0x0010c369, 0x0010c36e, 0x0010c369, - 0x0010c36e, 0x0010c369, 0x0010c36a, 0x64066203, - 0x493a6403, 0x42000800, 0x80002042, 0x05fdf516, + 0x84040d54, 0x05fdf532, 0xb1380498, 0x01661263, + 0xb1380480, 0x01641264, 0x0c01f001, 0x0010ca6c, + 0x000211ca, 0x0010ca75, 0x0010ca7a, 0x0010ca6c, + 0x0010ca6c, 0x0010ca6c, 0x0010ca6c, 0x0010ca6d, + 0x0010ca71, 0x0010ca71, 0x0010ca6c, 0x0010ca6c, + 0x0010ca6c, 0x0010ca6c, 0x0010ca71, 0x0010ca6c, + 0x0010ca71, 0x0010ca6c, 0x0010ca6d, 0x64066203, + 0x493a6403, 0x42000800, 0x80002042, 0x05fdf514, + 0x8058b1c0, 0x01000e15, 0x5450a800, 0x8050a000, + 0x8054a800, 0x8058b040, 0x05fe07fc, 0x1c01f000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00960114, + 0x00000000, 0x00000000, 0x00000000, 0x81cffae4, 0x00000000, 0x00000000, 0x00000000, 0x00000005, 0xfffffffb, 0x02800004, 0x00000000, 0x0000c000, - 0x00000aa2, 0x073fca5a, 0x0705a5a5, 0x01928009, + 0x00000adf, 0x073fca5a, 0x0705a5a5, 0x01928009, 0x070ff0e1, 0x03800006, 0x053f2aaa, 0x070aaaaa, - 0x073f3aaa, 0x070aaaaa, 0x05958014, 0x05308000, - 0x05008000, 0x0600902f, 0x04a007df, 0x0202f051, - 0x042e4020, 0x07840018, 0x028f0361, 0x033e5000, - 0x03020000, 0x068d0025, 0x079306e2, 0x039206e4, - 0x050fb056, 0x040010e6, 0x002fb008, 0x060ff0e6, - 0x00580401, 0x054880ff, 0x06810023, 0x008c04f2, - 0x008a04f1, 0x048b04ef, 0x069f0029, 0x039809b1, - 0x069f0029, 0x079909af, 0x058e8014, 0x07840018, - 0x0678aae5, 0x04004051, 0x06818275, 0x079a0014, - 0x030430d4, 0x04052051, 0x0448b043, 0x06810034, - 0x00252080, 0x022a5001, 0x06780043, 0x030e0000, - 0x030450ff, 0x06780043, 0x03019000, 0x03a182b7, - 0x0481892c, 0x027c0045, 0x03020000, 0x0781812d, - 0x0590803f, 0x0291092a, 0x010410a6, 0x06600052, - 0x030d60ff, 0x05601041, 0x050f80ff, 0x032fa071, - 0x060ff032, 0x055c0441, 0x0681004f, 0x070ff0d1, - 0x055c0403, 0x034a88ff, 0x05818944, 0x01800114, - 0x07480000, 0x07810936, 0x0149b000, 0x0781005f, - 0x06600a01, 0x050f80ff, 0x053fa809, 0x0600001c, - 0x07f00000, 0x030ef039, 0x02860934, 0x07600339, - 0x07601839, 0x050f80ff, 0x063fa051, 0x06000002, - 0x05481000, 0x04818068, 0x06780043, 0x070000f0, - 0x06810073, 0x037c00ff, 0x06000010, 0x04818932, - 0x02800073, 0x06780043, 0x070000f0, 0x037c00ff, - 0x07000030, 0x06810073, 0x06780043, 0x070000f0, - 0x037c00ff, 0x06000020, 0x06810073, 0x02800932, - 0x0379ff00, 0x070fffff, 0x06780043, 0x07f00000, - 0x075a0000, 0x020ef001, 0x02860934, 0x05484000, - 0x02a182da, 0x03680c00, 0x0581897b, 0x04600452, - 0x030d60ff, 0x002fb001, 0x070ff069, 0x00868089, - 0x060ff079, 0x055c0441, 0x07810014, 0x012fb000, - 0x060560fb, 0x0280008f, 0x060ff079, 0x028682b5, - 0x070ff069, 0x055c0441, 0x07810014, 0x060560fb, - 0x070ff0d1, 0x0700f0ff, 0x04600252, 0x030d60ff, - 0x070ff00f, 0x055c040c, 0x058180fa, 0x070ff0d1, - 0x045c040d, 0x054b08ff, 0x07818105, 0x04600801, - 0x050f80ff, 0x053fa809, 0x0600004f, 0x03070039, - 0x0007b001, 0x03079041, 0x0307a000, 0x07489000, - 0x06818134, 0x068d00a4, 0x0207c004, 0x0107d005, - 0x0107e006, 0x0207f007, 0x02080008, 0x01081009, - 0x0108200a, 0x0208300b, 0x018680bb, 0x0448d07a, - 0x058180bb, 0x0448b07a, 0x0681093d, 0x0049707a, - 0x058180bb, 0x04604679, 0x050f80ff, 0x053fa809, - 0x06000001, 0x01680703, 0x076c0303, 0x0481893d, - 0x072d5003, 0x033e5000, 0x05002000, 0x0049107a, - 0x068100c7, 0x070ff00a, 0x0054040b, 0x058280c6, - 0x078d00c3, 0x0008200b, 0x032ff000, 0x010770ff, - 0x0108400c, 0x0208500d, 0x0678007a, 0x06000008, - 0x068100da, 0x078d00cc, 0x04603e79, 0x050f80ff, - 0x073fa041, 0x0600004a, 0x0049707a, 0x01a18a0f, - 0x068d00d3, 0x0678007a, 0x07f00000, 0x010880ff, - 0x02386008, 0x03010000, 0x028000e0, 0x068d00da, - 0x0678007a, 0x07f00000, 0x010880ff, 0x03386000, - 0x03010000, 0x072e6300, 0x020ef07f, 0x03860014, - 0x070ff07d, 0x0450047c, 0x050f80ff, 0x002fa819, - 0x078d00e7, 0x02080001, 0x00081002, 0x0678007a, - 0x05000200, 0x068100ef, 0x0049107a, 0x02a182d3, - 0x01082003, 0x078d00f0, 0x0448b07a, 0x078100f6, - 0x0338600c, 0x03010000, 0x028000f8, 0x02386004, - 0x03010000, 0x072e6c00, 0x03800014, 0x04600252, - 0x030d60ff, 0x07f00000, 0x07f00000, 0x0400e0d0, - 0x0648300e, 0x07810096, 0x072e500c, 0x00208001, - 0x05a007e4, 0x03800014, 0x06780043, 0x070000f0, - 0x0781093f, 0x050020ff, 0x027c0002, 0x06000010, - 0x04810110, 0x027c0002, 0x07000030, 0x04810110, - 0x0380093f, 0x0500d0d1, 0x0279ff0d, 0x070000ff, - 0x0380009a, 0x060ff032, 0x055c0441, 0x0681004f, - 0x020ef002, 0x03860924, 0x04602602, 0x050f80ff, + 0x073f3aaa, 0x070aaaaa, 0x04958016, 0x05308000, + 0x05008000, 0x0600902f, 0x070ff02e, 0x055c0409, + 0x02a1880d, 0x0202f051, 0x042e4020, 0x0684001a, + 0x028f037c, 0x033e5000, 0x03020000, 0x078d0027, + 0x04930701, 0x01920703, 0x050fb056, 0x040010e6, + 0x002fb008, 0x060ff0e6, 0x00580401, 0x054880ff, + 0x06810025, 0x028c050d, 0x038a050c, 0x078b050a, + 0x079f002b, 0x039809ed, 0x079f002b, 0x079909eb, + 0x048e8016, 0x0684001a, 0x0678aae5, 0x04004051, + 0x0681828c, 0x069a0016, 0x030430d4, 0x04052051, + 0x0448b043, 0x07810036, 0x00252080, 0x022a5001, + 0x06780043, 0x030e0000, 0x030450ff, 0x06780043, + 0x03019000, 0x03a182d8, 0x05818960, 0x027c0045, + 0x03020000, 0x07818135, 0x05908041, 0x0291095e, + 0x010410a6, 0x06600052, 0x030d60ff, 0x05601041, + 0x050f80ff, 0x032fa071, 0x060ff032, 0x055c0441, + 0x06810051, 0x070ff0d1, 0x055c0403, 0x034a88ff, + 0x05818978, 0x0080011c, 0x07480000, 0x0781096a, + 0x0149b000, 0x06810061, 0x06600a01, 0x050f80ff, + 0x053fa809, 0x0600001c, 0x07f00000, 0x030ef039, + 0x02860968, 0x07600339, 0x07601839, 0x050f80ff, + 0x063fa051, 0x06000002, 0x05481000, 0x0581806a, + 0x06780043, 0x070000f0, 0x06810075, 0x037c00ff, + 0x06000010, 0x05818966, 0x02800075, 0x06780043, + 0x070000f0, 0x037c00ff, 0x07000030, 0x06810075, + 0x06780043, 0x070000f0, 0x037c00ff, 0x06000020, + 0x06810075, 0x03800966, 0x0379ff00, 0x070fffff, + 0x06780043, 0x07f00000, 0x075a0000, 0x020ef001, + 0x02860968, 0x05484000, 0x02a182fd, 0x03680c00, + 0x058189b7, 0x04600452, 0x030d60ff, 0x002fb001, + 0x070ff069, 0x0186808b, 0x060ff079, 0x055c0441, + 0x06810016, 0x012fb000, 0x060560fb, 0x02800091, + 0x060ff079, 0x038682d4, 0x070ff069, 0x055c0441, + 0x06810016, 0x060560fb, 0x070ff0d1, 0x0700f0ff, + 0x04600252, 0x030d60ff, 0x070ff00f, 0x055c040c, + 0x058180fc, 0x070ff0d1, 0x045c040d, 0x054b08ff, + 0x0681810d, 0x04600801, 0x050f80ff, 0x053fa809, + 0x0600004f, 0x03070039, 0x0007b001, 0x03079041, + 0x0307a000, 0x07489000, 0x0781813c, 0x078d00a6, + 0x0207c004, 0x0107d005, 0x0107e006, 0x0207f007, + 0x02080008, 0x01081009, 0x0108200a, 0x0208300b, + 0x018680bd, 0x0448d07a, 0x058180bd, 0x0448b07a, + 0x07810971, 0x0049707a, 0x058180bd, 0x04604679, + 0x050f80ff, 0x053fa809, 0x06000001, 0x01680703, + 0x076c0303, 0x05818971, 0x072d5003, 0x033e5000, + 0x05002000, 0x0049107a, 0x078100c9, 0x070ff00a, + 0x0054040b, 0x048280c8, 0x078d00c5, 0x0008200b, + 0x032ff000, 0x010770ff, 0x0108400c, 0x0208500d, + 0x0678007a, 0x06000008, 0x068100dc, 0x068d00ce, + 0x04603e79, 0x050f80ff, 0x073fa041, 0x0600004a, + 0x0049707a, 0x01a18a4b, 0x068d00d5, 0x0678007a, + 0x07f00000, 0x010880ff, 0x02386008, 0x03010000, + 0x038000e2, 0x068d00dc, 0x0678007a, 0x07f00000, + 0x010880ff, 0x03386000, 0x03010000, 0x072e6300, + 0x020ef07f, 0x02860016, 0x070ff07d, 0x0450047c, + 0x050f80ff, 0x002fa819, 0x068d00e9, 0x02080001, + 0x00081002, 0x0678007a, 0x05000200, 0x068100f1, + 0x0049107a, 0x03a182f6, 0x01082003, 0x068d00f2, + 0x0448b07a, 0x068100f8, 0x0338600c, 0x03010000, + 0x038000fa, 0x02386004, 0x03010000, 0x072e6c00, + 0x02800016, 0x04600252, 0x030d60ff, 0x07f00000, + 0x07f00000, 0x0400e0d0, 0x0648300e, 0x06810098, + 0x072e500c, 0x00208001, 0x062d6002, 0x050fd00c, + 0x07f00000, 0x07f00000, 0x070ff0d1, 0x050fd0ff, + 0x05a00812, 0x02800016, 0x06780043, 0x070000f0, + 0x06810973, 0x050020ff, 0x027c0002, 0x06000010, + 0x05810118, 0x027c0002, 0x07000030, 0x05810118, + 0x02800973, 0x0500d0d1, 0x0279ff0d, 0x070000ff, + 0x0380009c, 0x060ff032, 0x055c0441, 0x06810051, + 0x020ef002, 0x02860958, 0x04602602, 0x050f80ff, 0x053fa811, 0x06000008, 0x060ff0d0, 0x055c0411, - 0x0179feff, 0x0700ffff, 0x05818924, 0x0448b043, - 0x0481012c, 0x072d6000, 0x0179fd12, 0x0600001f, + 0x0179feff, 0x0700ffff, 0x04818958, 0x0448b043, + 0x04810134, 0x072d6000, 0x0179fd12, 0x0600001f, 0x060ff0d0, 0x0379fcff, 0x0600001f, 0x055c0412, - 0x05818924, 0x0280004f, 0x027c0045, 0x03040000, - 0x0481013d, 0x027c0045, 0x03080000, 0x0681092a, - 0x0380003f, 0x06600a79, 0x050f80ff, 0x053fa80a, - 0x06000010, 0x028000a4, 0x05601041, 0x050f80ff, - 0x032fa071, 0x0280004f, 0x0204a051, 0x06780043, - 0x070000f0, 0x037c00ff, 0x06000010, 0x07818266, - 0x06600052, 0x030d60ff, 0x00948926, 0x050fb056, - 0x044880e6, 0x05818014, 0x060ff0d0, 0x0179feff, - 0x0700ffff, 0x057dfeff, 0x0700ffff, 0x07810924, - 0x053f2000, 0x07030000, 0x019d8014, 0x070ff093, - 0x045a0201, 0x070ff093, 0x045c0401, 0x06818152, + 0x04818958, 0x02800051, 0x027c0045, 0x03040000, + 0x04810145, 0x027c0045, 0x03080000, 0x0681095e, + 0x03800041, 0x06600a79, 0x050f80ff, 0x053fa80a, + 0x06000010, 0x038000a6, 0x05601041, 0x050f80ff, + 0x032fa071, 0x02800051, 0x0204a051, 0x06780043, + 0x070000f0, 0x037c00ff, 0x06000010, 0x0781827d, + 0x06600052, 0x030d60ff, 0x0194895a, 0x050fb056, + 0x044880e6, 0x04818016, 0x060ff0d0, 0x0179feff, + 0x0700ffff, 0x057dfeff, 0x0700ffff, 0x06810958, + 0x053f2000, 0x07030000, 0x009d8016, 0x070ff093, + 0x045a0201, 0x070ff093, 0x045c0401, 0x0781815a, 0x02046092, 0x04002046, 0x060ff002, 0x045c0401, - 0x0703a0ff, 0x04600202, 0x00540401, 0x07828160, + 0x0703a0ff, 0x04600202, 0x00540401, 0x06828168, 0x04500425, 0x070060ff, 0x0730ffff, 0x0700000f, - 0x0742000f, 0x048102ad, 0x07a0090c, 0x0648a002, - 0x07818163, 0x00047089, 0x070ff047, 0x045c0443, - 0x077800ff, 0x07f00000, 0x068182ab, 0x07780047, - 0x0500e000, 0x04818913, 0x070ff006, 0x008601f1, + 0x0742000f, 0x058102c6, 0x06a00940, 0x0648a002, + 0x0681816b, 0x00047089, 0x070ff047, 0x045c0443, + 0x077800ff, 0x07f00000, 0x068182c2, 0x07780047, + 0x0500e600, 0x05818947, 0x070ff006, 0x01860200, 0x0179fe47, 0x0700000f, 0x010480ff, 0x056c7048, - 0x0681817c, 0x007a0d4a, 0x04003801, 0x0220f001, - 0x00800189, 0x07608e48, 0x034a60ff, 0x0700f0ff, + 0x07818184, 0x007a0d4a, 0x04003801, 0x0220f001, + 0x00800191, 0x07608e48, 0x034a60ff, 0x0700f0ff, 0x074b88ff, 0x037000ff, 0x07000600, 0x05500448, 0x074d00ff, 0x045a044a, 0x0304a0ff, 0x070ff00f, - 0x01540406, 0x048201f1, 0x04031051, 0x0349c0e4, - 0x048101e0, 0x062d6001, 0x07f00000, 0x060ff0d0, - 0x034900ff, 0x068181e0, 0x072e500c, 0x062d6002, + 0x01540406, 0x05820200, 0x04031051, 0x0349c0e4, + 0x048101ef, 0x062d6001, 0x07f00000, 0x060ff0d0, + 0x034900ff, 0x068181ef, 0x072e500c, 0x062d6002, 0x07f00000, 0x0204f0d0, 0x0079fe4f, 0x070000ff, - 0x050580ff, 0x01540436, 0x078281d8, 0x060ff058, - 0x0054043b, 0x058201d8, 0x072d6000, 0x044b044f, + 0x050580ff, 0x01540436, 0x078281e7, 0x060ff058, + 0x0054043b, 0x058201e7, 0x072d6000, 0x044b044f, 0x050580ff, 0x0004d0d0, 0x0379ff4d, 0x0700ffff, - 0x0104e0d1, 0x0379ff4e, 0x0700ffff, 0x079081a6, - 0x0291092a, 0x0500e0a6, 0x0279ff0e, 0x0700ffff, + 0x0104e0d1, 0x0379ff4e, 0x0700ffff, 0x069081ae, + 0x0291095e, 0x0500e0a6, 0x0279ff0e, 0x0700ffff, 0x04600e0e, 0x050f80ff, 0x032fa009, 0x07f00000, - 0x074b0000, 0x056c0e00, 0x048101dc, 0x0660060e, + 0x074b0000, 0x056c0e00, 0x058101eb, 0x0660060e, 0x050f80ff, 0x032fa009, 0x0379ff00, 0x070000ff, - 0x076c0000, 0x068181da, 0x06602e0e, 0x050f80ff, - 0x032fa009, 0x030ef000, 0x028681bf, 0x066a0331, - 0x00201008, 0x0460040e, 0x050f80ff, 0x032fa009, - 0x07780000, 0x07ffff00, 0x045a0458, 0x070000ff, + 0x076c0000, 0x068181e9, 0x06602e0e, 0x050f80ff, + 0x032fa009, 0x030ef000, 0x028681c7, 0x066a0331, + 0x04605e0e, 0x050f80ff, 0x032fa009, 0x07780000, + 0x06000008, 0x048101ce, 0x0045e04a, 0x00201008, + 0x0460040e, 0x050f80ff, 0x032fa009, 0x07780000, + 0x07ffff00, 0x045a0458, 0x070000ff, 0x04002051, + 0x06003051, 0x01204000, 0x07305000, 0x07000060, + 0x03206009, 0x05007022, 0x0460040e, 0x050f80ff, + 0x032fa042, 0x07f00000, 0x0405804f, 0x0460520e, + 0x050f80ff, 0x053fa812, 0x06000026, 0x00800213, + 0x066a0531, 0x018001ee, 0x046a0731, 0x018001ee, + 0x066a0931, 0x018001ee, 0x046a0b31, 0x0405804f, + 0x04950210, 0x07a0031d, 0x02868213, 0x06780043, + 0x070000f0, 0x037c00ff, 0x07000030, 0x0481020e, + 0x0134bfff, 0x070fffff, 0x0104102e, 0x050fd041, + 0x07602e41, 0x050f80ff, 0x06000051, 0x032fa00a, + 0x01800236, 0x07608e48, 0x034a60ff, 0x00540425, + 0x05810205, 0x06828208, 0x06a00379, 0x02209016, + 0x0380097e, 0x0495020e, 0x07a0031d, 0x0086020e, + 0x0202f00e, 0x052e4030, 0x040fd02f, 0x06a00379, + 0x02800016, 0x0400e02f, 0x042e4020, 0x0202f051, + 0x0004100e, 0x0079fe31, 0x070000ff, 0x0481022c, + 0x06602e0e, 0x050f80ff, 0x06780031, 0x06000004, + 0x0481021f, 0x04300ead, 0x010deadd, 0x0080022a, + 0x07000033, 0x032fa00a, 0x0079fe58, 0x070000ff, + 0x070000ff, 0x04602c0e, 0x050f80ff, 0x017a0100, + 0x03400000, 0x032fa00a, 0x0080022c, 0x032fa00a, + 0x07f00000, 0x044b8c31, 0x045a040e, 0x0104b0ff, + 0x004980e5, 0x07818236, 0x06780043, 0x070000f0, + 0x037c00ff, 0x07000030, 0x078109b4, 0x024a6c46, + 0x04500423, 0x050070ff, 0x03620024, 0x050080ff, + 0x04004046, 0x0700500f, 0x03206000, 0x05601048, + 0x0700a0ff, 0x0700900a, 0x070ff005, 0x04500446, + 0x00540425, 0x05820269, 0x07601e22, 0x050f80ff, + 0x063fa032, 0x06000002, 0x03203000, 0x01204000, + 0x03205000, 0x0120b000, 0x0320c000, 0x07601841, + 0x050f80ff, 0x043fa852, 0x06000001, 0x070ff056, + 0x056c02ff, 0x050fb0ff, 0x070560ff, 0x03079041, + 0x05601041, 0x050f80ff, 0x073fa011, 0x0600003d, + 0x06780043, 0x07f00000, 0x065a007a, 0x010880ff, + 0x033e5000, 0x05002000, 0x06a00316, 0x048d0262, + 0x0208a04a, 0x0108b04b, 0x02386001, 0x03010000, + 0x072e6300, 0x028000e3, 0x0500d00a, 0x05500405, + 0x014a68ff, 0x070090ff, 0x0154040a, 0x0700c0ff, + 0x0600a023, 0x0500b024, 0x02206001, 0x07601e22, + 0x050f80ff, 0x063fa04a, 0x06000002, 0x07f00000, + 0x07601822, 0x050f80ff, 0x043fa819, 0x06000001, + 0x0600a00d, 0x0080024c, 0x06780043, 0x070000f0, + 0x050010ff, 0x027c0001, 0x07000030, 0x05810287, + 0x027c0001, 0x06000020, 0x0781094e, 0x03800966, + 0x0548e0e4, 0x0781094e, 0x0334a000, 0x03080000, + 0x0180014b, 0x074860ff, 0x068182ad, 0x054880ff, + 0x06810016, 0x070ff056, 0x050fb0ff, 0x044880e5, + 0x04810298, 0x067800e6, 0x07000041, 0x04818016, + 0x0180029f, 0x056c02ff, 0x050fb0ff, 0x070560ff, + 0x072e5300, 0x067800e6, 0x07000041, 0x04818016, + 0x072d5003, 0x033e5000, 0x05002000, 0x06780043, + 0x07f00000, 0x010880ff, 0x050fd0ff, 0x058d02a6, + 0x03386005, 0x03010000, 0x033e6000, 0x0700000c, + 0x052e5200, 0x02800016, 0x069a0016, 0x05301fff, + 0x0700000f, 0x06420001, 0x058102c6, 0x06a00940, + 0x0648a002, 0x068182b0, 0x062e5080, 0x04001089, + 0x040fd002, 0x040fd001, 0x02499001, 0x048102ef, + 0x070ff0d4, 0x050fd0ff, 0x045c0401, 0x077800ff, + 0x07f00000, 0x068182ef, 0x02800016, 0x06009051, + 0x057b8509, 0x06000002, 0x00800815, 0x06009051, + 0x077b8d09, 0x06000002, 0x00800815, 0x06009051, + 0x077b9509, 0x06000002, 0x00800815, 0x03209000, + 0x00800815, 0x06009051, 0x057ba109, 0x06000002, + 0x00800815, 0x06009051, 0x077ba909, 0x06000002, + 0x00800815, 0x06780043, 0x07009000, 0x068182e3, + 0x00498043, 0x048102e3, 0x0648a0e5, 0x058102e4, + 0x027c0045, 0x03040000, 0x048102e6, 0x075c00ff, + 0x07c00000, 0x056a02ff, 0x008002e3, 0x018002e2, + 0x06780075, 0x06000c07, 0x05810882, 0x06009051, + 0x077bcf09, 0x06000002, 0x070fc0ff, 0x05a00800, + 0x070fc0ff, 0x05308000, 0x0700a000, 0x05a00812, + 0x033e5000, 0x0700000c, 0x02800016, 0x070ff003, + 0x01540477, 0x068282fb, 0x07003077, 0x060ff051, + 0x010770ff, 0x07c00000, 0x04602601, 0x050f80ff, + 0x063fa029, 0x06000008, 0x02015010, 0x02016051, + 0x00017051, 0x00011051, 0x07601e41, 0x050f80ff, + 0x053fa83a, 0x06000008, 0x07f00000, 0x05601041, + 0x050f80ff, 0x01464000, 0x032fa00a, 0x05007011, + 0x05008012, 0x06009013, 0x0700a014, 0x0400b015, + 0x0600c016, 0x0500d017, 0x07c00000, 0x072d5003, + 0x06601879, 0x050f80ff, 0x068d0319, 0x063fa051, + 0x0600003e, 0x07c00000, 0x06005051, 0x0400e02c, + 0x0660060e, 0x050f80ff, 0x032fa009, 0x0379ff00, + 0x070000ff, 0x076c0000, 0x07810330, 0x0660600e, + 0x0500e0ff, 0x034000ff, 0x01540427, 0x06820362, + 0x03400005, 0x070ff005, 0x055c0428, 0x06810364, + 0x0280031f, 0x06a00368, 0x04605e0e, 0x050f80ff, + 0x012fa809, 0x06780001, 0x06000008, 0x06810338, + 0x0045e04a, 0x06600052, 0x030d60ff, 0x0460040e, + 0x050f80ff, 0x0004d0d0, 0x0379ff4d, 0x0700ffff, + 0x0104e0d1, 0x0379ff4e, 0x0700ffff, 0x062d6002, + 0x032fa009, 0x0204f0d0, 0x064b004f, 0x07780000, + 0x07ffff00, 0x045a044f, 0x070000ff, 0x00201008, 0x04002051, 0x06003051, 0x01204000, 0x07305000, - 0x07000060, 0x03206009, 0x05007022, 0x0460040e, - 0x050f80ff, 0x032fa042, 0x07f00000, 0x0405804f, - 0x0460520e, 0x050f80ff, 0x053fa812, 0x06000026, - 0x018001fc, 0x066a0531, 0x008001df, 0x046a0731, - 0x008001df, 0x066a0931, 0x008001df, 0x046a0b31, - 0x0405804f, 0x059501f9, 0x05a002fa, 0x038681fc, - 0x06780043, 0x070000f0, 0x037c00ff, 0x07000030, - 0x048101f7, 0x0134bfff, 0x070fffff, 0x0104102e, - 0x050fd041, 0x07602e41, 0x050f80ff, 0x06000051, - 0x032fa00a, 0x0080021f, 0x049501f7, 0x05a002fa, - 0x008601f7, 0x0202f00e, 0x052e4030, 0x040fd02f, - 0x06a0035e, 0x03800014, 0x0400e02f, 0x042e4020, - 0x0202f051, 0x0004100e, 0x0079fe31, 0x070000ff, - 0x04810215, 0x06602e0e, 0x050f80ff, 0x06780031, - 0x06000004, 0x04810208, 0x04300ead, 0x010deadd, - 0x00800213, 0x07000033, 0x032fa00a, 0x0079fe58, - 0x070000ff, 0x070000ff, 0x04602c0e, 0x050f80ff, - 0x017a0100, 0x03400000, 0x032fa00a, 0x00800215, - 0x032fa00a, 0x07f00000, 0x044b8c31, 0x045a040e, - 0x0104b0ff, 0x004980e5, 0x0681821f, 0x06780043, - 0x070000f0, 0x037c00ff, 0x07000030, 0x07810978, - 0x024a6c46, 0x04500423, 0x050070ff, 0x03620024, - 0x050080ff, 0x04004046, 0x0700500f, 0x03206000, - 0x05601048, 0x0700a0ff, 0x0700900a, 0x070ff005, - 0x04500446, 0x00540425, 0x04820252, 0x07601e22, - 0x050f80ff, 0x063fa032, 0x06000002, 0x03203000, - 0x01204000, 0x03205000, 0x0120b000, 0x0320c000, - 0x07601841, 0x050f80ff, 0x043fa852, 0x06000001, - 0x070ff056, 0x056c02ff, 0x050fb0ff, 0x070560ff, - 0x03079041, 0x05601041, 0x050f80ff, 0x073fa011, - 0x0600003d, 0x06780043, 0x07f00000, 0x065a007a, - 0x010880ff, 0x033e5000, 0x05002000, 0x05a002f3, - 0x058d024b, 0x0208a04a, 0x0108b04b, 0x02386001, - 0x03010000, 0x072e6300, 0x038000e1, 0x0500d00a, - 0x05500405, 0x014a68ff, 0x070090ff, 0x0154040a, - 0x0700c0ff, 0x0600a023, 0x0500b024, 0x02206001, - 0x07601e22, 0x050f80ff, 0x063fa04a, 0x06000002, - 0x07f00000, 0x07601822, 0x050f80ff, 0x043fa819, - 0x06000001, 0x0600a00d, 0x01800235, 0x06780043, - 0x070000f0, 0x050010ff, 0x027c0001, 0x07000030, - 0x04810270, 0x027c0001, 0x06000020, 0x0681091a, - 0x02800932, 0x0548e0e4, 0x0681091a, 0x0334a000, - 0x03080000, 0x00800143, 0x074860ff, 0x07818296, - 0x054880ff, 0x07810014, 0x070ff056, 0x050fb0ff, - 0x044880e5, 0x05810281, 0x067800e6, 0x07000041, - 0x05818014, 0x01800288, 0x056c02ff, 0x050fb0ff, - 0x070560ff, 0x072e5300, 0x067800e6, 0x07000041, - 0x05818014, 0x072d5003, 0x033e5000, 0x05002000, - 0x06780043, 0x07f00000, 0x010880ff, 0x050fd0ff, - 0x048d028f, 0x03386005, 0x03010000, 0x033e6000, - 0x0700000c, 0x052e5200, 0x03800014, 0x079a0014, - 0x05301fff, 0x0700000f, 0x06420001, 0x048102ad, - 0x07a0090c, 0x0648a002, 0x07818299, 0x062e5080, - 0x04001089, 0x040fd002, 0x040fd001, 0x02499001, - 0x058102cc, 0x070ff0d4, 0x050fd0ff, 0x045c0401, - 0x077800ff, 0x07f00000, 0x078182cc, 0x03800014, - 0x002092ab, 0x018007e7, 0x002092ad, 0x018007e7, - 0x012092af, 0x018007e7, 0x03209000, 0x018007e7, - 0x002092b3, 0x018007e7, 0x002092b5, 0x018007e7, - 0x06780043, 0x07009000, 0x068182c2, 0x00498043, - 0x048102c2, 0x0648a0e5, 0x058102c3, 0x027c0045, - 0x03040000, 0x058102c5, 0x075c00ff, 0x07c00000, - 0x056a02ff, 0x008002c2, 0x008002c1, 0x06780075, - 0x06000c07, 0x04810852, 0x012092c6, 0x070fc0ff, - 0x05a007d2, 0x070fc0ff, 0x05308000, 0x0700a000, - 0x05a007e4, 0x033e5000, 0x0700000c, 0x03800014, - 0x070ff003, 0x01540477, 0x078282d8, 0x07003077, - 0x060ff051, 0x010770ff, 0x07c00000, 0x04602601, - 0x050f80ff, 0x063fa029, 0x06000008, 0x02015010, - 0x02016051, 0x00017051, 0x00011051, 0x07601e41, - 0x050f80ff, 0x053fa83a, 0x06000008, 0x07f00000, - 0x05601041, 0x050f80ff, 0x01464000, 0x032fa00a, - 0x05007011, 0x05008012, 0x06009013, 0x0700a014, - 0x0400b015, 0x0600c016, 0x0500d017, 0x07c00000, - 0x072d5003, 0x06601879, 0x050f80ff, 0x058d02f6, - 0x063fa051, 0x0600003e, 0x07c00000, 0x06005051, - 0x0400e02c, 0x0660060e, 0x050f80ff, 0x032fa009, - 0x0379ff00, 0x070000ff, 0x076c0000, 0x0681031c, - 0x0660600e, 0x0500e0ff, 0x034000ff, 0x01540427, - 0x07820347, 0x03400005, 0x070ff005, 0x055c0428, - 0x06810349, 0x056c0805, 0x078182fc, 0x040f8029, - 0x053fa809, 0x07000024, 0x07f00000, 0x06600649, - 0x050f80ff, 0x032fa009, 0x0379ff00, 0x070000ff, - 0x076c0000, 0x078182fc, 0x07a0034d, 0x0400e049, - 0x0380031d, 0x07a0034d, 0x06600052, 0x030d60ff, - 0x0460040e, 0x050f80ff, 0x0004d0d0, 0x0379ff4d, - 0x0700ffff, 0x0104e0d1, 0x0379ff4e, 0x0700ffff, - 0x062d6002, 0x032fa009, 0x0204f0d0, 0x064b004f, - 0x07780000, 0x07ffff00, 0x045a044f, 0x070000ff, - 0x00201008, 0x04002051, 0x06003051, 0x01204000, - 0x07305000, 0x06000068, 0x03206009, 0x05007022, - 0x0460040e, 0x050f80ff, 0x032fa042, 0x07f00000, - 0x0460520e, 0x050f80ff, 0x053fa812, 0x06000026, - 0x050010d1, 0x0660360e, 0x050f80ff, 0x012fa80a, - 0x060ff00e, 0x055c042e, 0x0781034b, 0x07c00000, - 0x0400e026, 0x02800308, 0x0500e02e, 0x0380031d, - 0x0400e051, 0x02800346, 0x050f802b, 0x053fa809, - 0x06000016, 0x07f00000, 0x0340002d, 0x050f802b, - 0x053fa80a, 0x06000016, 0x07f00000, 0x0660600e, - 0x0302c0ff, 0x034000ff, 0x01540427, 0x0782035c, - 0x07c00000, 0x0202c026, 0x0280035b, 0x053f2000, - 0x03020000, 0x07c00000, 0x022a5002, 0x077800e4, - 0x07000005, 0x068184df, 0x010440d7, 0x0678aae5, - 0x06000051, 0x01a18974, 0x05908369, 0x029103f2, - 0x030400a6, 0x04600e40, 0x050f80ff, 0x022fa029, - 0x07f00000, 0x074b0000, 0x076c0600, 0x048183f4, - 0x060ff002, 0x01580403, 0x04810420, 0x070ff044, - 0x045c0404, 0x034a88ff, 0x058183f6, 0x0349f044, - 0x07818422, 0x0049b001, 0x07810381, 0x0448e001, - 0x06810383, 0x028003f8, 0x02495001, 0x048183f8, - 0x030100d8, 0x062da001, 0x0149e044, 0x07810393, - 0x018f8387, 0x0700f0d7, 0x062da001, 0x0149e00f, - 0x0681038f, 0x008f838c, 0x05a004bb, 0x048183a4, - 0x0778000f, 0x07a00000, 0x03a18412, 0x048183a4, - 0x06480001, 0x078103c3, 0x0448e001, 0x078103a9, - 0x00491001, 0x0681840d, 0x06005010, 0x05780105, + 0x06000068, 0x03206009, 0x05007022, 0x0460040e, + 0x050f80ff, 0x032fa042, 0x07f00000, 0x0460520e, + 0x050f80ff, 0x053fa812, 0x06000026, 0x050010d1, + 0x0660360e, 0x050f80ff, 0x012fa80a, 0x060ff00e, + 0x055c042e, 0x07810366, 0x07c00000, 0x0400e026, + 0x0380032b, 0x0500e02e, 0x02800338, 0x0400e051, + 0x02800361, 0x050f802b, 0x053fa809, 0x06000016, + 0x07f00000, 0x0340002d, 0x050f802b, 0x053fa80a, + 0x06000016, 0x07f00000, 0x0660600e, 0x0302c0ff, + 0x034000ff, 0x01540427, 0x07820377, 0x07c00000, + 0x0202c026, 0x02800376, 0x053f2000, 0x03020000, + 0x07c00000, 0x022a5002, 0x077800e4, 0x07000005, + 0x078184fa, 0x010440d7, 0x0678aae5, 0x06000051, + 0x00a189b0, 0x05908384, 0x0091040d, 0x030400a6, + 0x04600e40, 0x050f80ff, 0x022fa029, 0x07f00000, + 0x074b0000, 0x076c0600, 0x0781840f, 0x060ff002, + 0x01580403, 0x0481043b, 0x070ff044, 0x045c0404, + 0x034a88ff, 0x07818411, 0x0349f044, 0x0681843d, + 0x0049b001, 0x0781039c, 0x0448e001, 0x0681039e, + 0x00800413, 0x02495001, 0x06818413, 0x030100d8, + 0x062da001, 0x0149e044, 0x068103ae, 0x008f83a2, + 0x0700f0d7, 0x062da001, 0x0149e00f, 0x078103aa, + 0x008f83a7, 0x04a004d6, 0x048183bf, 0x0778000f, + 0x07a00000, 0x03a1842d, 0x048183bf, 0x06480001, + 0x078103de, 0x0448e001, 0x068103c4, 0x00491001, + 0x07818428, 0x06005010, 0x05780105, 0x07ffff00, + 0x06006051, 0x06601402, 0x050f80ff, 0x053fa812, + 0x06000002, 0x0245f040, 0x078403bd, 0x020e0040, + 0x053f2000, 0x05008000, 0x0693001a, 0x0292001a, + 0x02800016, 0x060ff079, 0x045c0440, 0x048183c8, + 0x0644f07a, 0x002fb008, 0x060ff079, 0x045c0440, + 0x048183cd, 0x0644f07a, 0x002fb008, 0x0644f001, + 0x06489001, 0x068103d5, 0x04600440, 0x050f80ff, + 0x073fa00a, 0x06000008, 0x06a009b0, 0x04601040, + 0x050f80ff, 0x012fa80a, 0x03200003, 0x06600c40, + 0x050f80ff, 0x032fa00a, 0x028003bf, 0x020ef002, + 0x01860400, 0x04600840, 0x050f80ff, 0x053fa809, + 0x06000002, 0x05780105, 0x00800440, 0x017c0105, + 0x05000400, 0x07818400, 0x04602602, 0x050f80ff, + 0x053fa809, 0x06000002, 0x07f00000, 0x06602e40, + 0x050f80ff, 0x070ff005, 0x053fa809, 0x06000002, + 0x055c0405, 0x07818400, 0x06005010, 0x05780105, 0x07ffff00, 0x06006051, 0x06601402, 0x050f80ff, - 0x053fa812, 0x06000002, 0x0245f040, 0x068403a2, - 0x020e0040, 0x053f2000, 0x05008000, 0x07930018, - 0x03920018, 0x03800014, 0x060ff079, 0x045c0440, - 0x048183ad, 0x0644f07a, 0x002fb008, 0x060ff079, - 0x045c0440, 0x058183b2, 0x0644f07a, 0x002fb008, - 0x0644f001, 0x06489001, 0x068103ba, 0x04600440, - 0x050f80ff, 0x073fa00a, 0x06000008, 0x07a00974, - 0x04601040, 0x050f80ff, 0x012fa80a, 0x03200003, - 0x06600c40, 0x050f80ff, 0x032fa00a, 0x028003a4, - 0x020ef002, 0x028603e5, 0x04600840, 0x050f80ff, - 0x053fa809, 0x06000002, 0x05780105, 0x00800440, - 0x017c0105, 0x05000400, 0x048183e5, 0x04602602, - 0x050f80ff, 0x053fa809, 0x06000002, 0x07f00000, - 0x06602e40, 0x050f80ff, 0x070ff005, 0x053fa809, - 0x06000002, 0x055c0405, 0x048183e5, 0x06005010, - 0x05780105, 0x07ffff00, 0x06006051, 0x06601402, - 0x050f80ff, 0x053fa812, 0x06000002, 0x007a0140, - 0x07c00000, 0x028003a2, 0x0644f001, 0x04601040, - 0x050f80ff, 0x012fa80a, 0x05308000, 0x03040000, - 0x04600440, 0x050f80ff, 0x073fa00a, 0x06000008, - 0x06009040, 0x04a007df, 0x028003a4, 0x02209002, - 0x018004c5, 0x03209000, 0x018004c5, 0x02209004, - 0x018004c5, 0x04a004e9, 0x062da001, 0x0149e044, - 0x04810408, 0x018f83fc, 0x0700f0d7, 0x062da001, - 0x0149e00f, 0x04810404, 0x028f8401, 0x05a004bb, - 0x048183a4, 0x0778000f, 0x07a00000, 0x03a18412, - 0x048183a4, 0x05308000, 0x05002000, 0x06009040, - 0x04a007df, 0x028003a4, 0x05308000, 0x05004000, - 0x06009040, 0x04a007df, 0x028003a4, 0x0700600f, - 0x0379ff06, 0x0700ffff, 0x05602603, 0x050f80ff, - 0x053fa809, 0x06000008, 0x0179fe11, 0x0700ffff, - 0x055c0406, 0x0781841e, 0x07c00000, 0x056a02ff, - 0x0180041d, 0x02209008, 0x018004c5, 0x053f2000, - 0x05008000, 0x02495001, 0x07818495, 0x012f200c, - 0x029d8426, 0x04600840, 0x050f80ff, 0x053fa809, - 0x07000003, 0x0448e007, 0x06818492, 0x0721f000, - 0x0249f007, 0x04810432, 0x0245f01f, 0x06000002, - 0x0049b001, 0x0781843c, 0x05601c00, 0x050f80ff, - 0x012fa809, 0x06480001, 0x05810495, 0x04481001, - 0x07818495, 0x06602840, 0x050f80ff, 0x012fa809, - 0x020ef001, 0x03868495, 0x059c0495, 0x070050d8, - 0x062da001, 0x06306002, 0x05000430, 0x04600440, - 0x050f80ff, 0x053fa812, 0x06000002, 0x028f844a, - 0x050040d8, 0x062da001, 0x0149e044, 0x0481045b, - 0x028f844f, 0x0700f0d7, 0x062da001, 0x0149e00f, - 0x04810457, 0x028f8454, 0x05a004bb, 0x0681848c, - 0x0778000f, 0x07a00000, 0x03a18412, 0x0681848c, - 0x05602600, 0x050f80ff, 0x073fa009, 0x06000001, - 0x060ff004, 0x00540402, 0x05820490, 0x06005051, - 0x06006051, 0x04602640, 0x050f80ff, 0x063fa01a, - 0x06000002, 0x07f00000, 0x06600a40, 0x050f80ff, - 0x073fa00a, 0x07000003, 0x04487007, 0x0481047a, - 0x060ff002, 0x00540404, 0x0682847a, 0x002f2008, - 0x05308000, 0x07005000, 0x06009040, 0x04a007df, - 0x04008004, 0x05a007e4, 0x03800018, 0x06780007, - 0x02800040, 0x06818489, 0x0079c107, 0x07ffffff, - 0x007a0b07, 0x03800000, 0x04780104, 0x07ffff00, - 0x04810485, 0x02455007, 0x04600840, 0x050f80ff, - 0x053fa80a, 0x07000003, 0x060ff040, 0x045a041f, - 0x030e30ff, 0x002f2008, 0x07930018, 0x03920018, - 0x03800014, 0x04004002, 0x00800462, 0x002f2008, - 0x03209000, 0x018004c5, 0x002f2008, 0x04a004e9, - 0x062da001, 0x07f00000, 0x038f8499, 0x030100d8, - 0x062da001, 0x0149e044, 0x058104aa, 0x028f849e, - 0x0700f0d7, 0x062da001, 0x0149e00f, 0x058104a6, - 0x038f84a3, 0x05a004bb, 0x05818018, 0x0778000f, - 0x07a00000, 0x03a18412, 0x05818018, 0x05308000, - 0x07005000, 0x06009040, 0x04a007df, 0x04008010, - 0x05a007e4, 0x03800018, 0x05602603, 0x050f80ff, - 0x053fa809, 0x06000008, 0x07780044, 0x073f0000, - 0x055c0411, 0x077800ff, 0x07ff0000, 0x07c00000, - 0x07602803, 0x050f80ff, 0x053fa809, 0x06000008, - 0x070ff0d8, 0x062da001, 0x055c0411, 0x0379fcff, - 0x0600001f, 0x07c00000, 0x050fd009, 0x040fd040, - 0x053f2000, 0x05008000, 0x05308000, 0x03013000, - 0x04a007df, 0x010440d7, 0x0349f044, 0x058104d2, - 0x062da001, 0x018f04d2, 0x03e00000, 0x062da001, - 0x0149e044, 0x07810018, 0x018f04d7, 0x03e00000, - 0x0700f0d7, 0x062da001, 0x0149e00f, 0x07810018, - 0x018f04dd, 0x03e00000, 0x062da001, 0x03800018, - 0x069084df, 0x0249c0e5, 0x07810018, 0x062da001, - 0x07f00000, 0x07f00000, 0x033e5000, 0x070c0000, - 0x018f04e2, 0x02800016, 0x050020d8, 0x04600440, - 0x050f80ff, 0x073fa00a, 0x06000001, 0x07c00000, - 0x002fb001, 0x008004f2, 0x012fb000, 0x03075087, - 0x058d04f3, 0x03386000, 0x03020000, 0x04482075, - 0x0781059c, 0x0648a0e6, 0x06810543, 0x0642007f, - 0x07810541, 0x0340007e, 0x060ff038, 0x0154047e, - 0x02d00531, 0x0560027d, 0x050f80ff, 0x032fa009, - 0x030ef000, 0x0186084d, 0x0107d000, 0x05601000, - 0x050f80ff, 0x032fa009, 0x03681e00, 0x076c14ff, - 0x0581850f, 0x0007e038, 0x0727c009, 0x02800515, - 0x03681e00, 0x04500420, 0x050f80ff, 0x073fa009, - 0x0700003f, 0x008004fd, 0x070ff07d, 0x0450047c, - 0x050f80ff, 0x002fa819, 0x068d0519, 0x02080001, - 0x00081002, 0x0678007a, 0x05000200, 0x07810521, - 0x0049107a, 0x02a182d3, 0x01082003, 0x078d0522, - 0x0448b07a, 0x0481852a, 0x0249007a, 0x0781052d, - 0x07780003, 0x03800000, 0x0781052d, 0x0338600c, - 0x03010000, 0x0280052f, 0x02386004, 0x03010000, - 0x072e6c00, 0x0380059c, 0x02800537, 0x03800539, - 0x0280053b, 0x0280053d, 0x0380053f, 0x03800500, - 0x0727c009, 0x02800515, 0x0727c00c, 0x02800515, - 0x0727c00f, 0x02800515, 0x0727c012, 0x02800515, - 0x0627c015, 0x02800515, 0x052e6800, 0x0380059c, - 0x044880e6, 0x04810886, 0x070ff088, 0x0179feff, - 0x070fffff, 0x03a18821, 0x06818816, 0x0249607a, - 0x0781884b, 0x060ff083, 0x02868846, 0x013e6200, - 0x07000003, 0x0448b07a, 0x06810567, 0x0049707a, - 0x06810558, 0x004940e6, 0x06810567, 0x072e6300, - 0x02800567, 0x04604679, 0x050f80ff, 0x032fa009, - 0x03680600, 0x076c00ff, 0x04818567, 0x068d055e, - 0x05001099, 0x060ff001, 0x064b0001, 0x045c0401, - 0x0179feff, 0x070000ff, 0x06810567, 0x0245a07a, - 0x068d0567, 0x008c04f2, 0x0648307a, 0x048185f2, - 0x0279127a, 0x01040222, 0x016d02ff, 0x058185d1, - 0x00798075, 0x0700f50f, 0x058185d1, 0x06483075, - 0x078105d1, 0x04602679, 0x0049b07a, 0x07810578, - 0x04602670, 0x050f80ff, 0x053fa812, 0x07000041, - 0x078d057b, 0x004940e6, 0x06810580, 0x072e6300, - 0x03800014, 0x0049707a, 0x07810584, 0x0049807a, - 0x07810014, 0x02386001, 0x07030000, 0x0648f07a, - 0x0781059a, 0x04600479, 0x050f80ff, 0x053fa809, - 0x06000002, 0x05780105, 0x07ffff00, 0x06006051, - 0x0760147b, 0x050f80ff, 0x053fa812, 0x06000002, - 0x0245f079, 0x06840594, 0x020e0079, 0x033e6a00, - 0x0700aa0a, 0x02079051, 0x03800014, 0x0444e07a, - 0x02800649, 0x078d059c, 0x008c04f2, 0x038005b8, - 0x060ff0e6, 0x077800ff, 0x07000050, 0x058185b8, - 0x02799075, 0x0500fd0f, 0x037c00ff, 0x04000808, - 0x058185b8, 0x0049107a, 0x058185b8, 0x06601879, - 0x0049b07a, 0x068105ae, 0x06601870, 0x050f80ff, - 0x063fa052, 0x0600003e, 0x078d05b1, 0x02386001, - 0x07030000, 0x033e6a00, 0x0700aa0a, 0x02079051, - 0x03800014, 0x0648c0e6, 0x048185d9, 0x0448e0e6, - 0x068105ce, 0x022095bc, 0x02490075, 0x078182cc, - 0x004920e6, 0x078105c9, 0x04a008d5, 0x05001088, - 0x00700101, 0x03100000, 0x00088001, 0x033e6000, - 0x07000088, 0x018008c5, 0x02386001, 0x07030000, - 0x033e6000, 0x06000008, 0x028006b9, 0x02799075, - 0x0700f50f, 0x07810014, 0x06601879, 0x0049b07a, - 0x068105d5, 0x06601870, 0x050080ff, 0x06309052, - 0x0600003e, 0x028005e0, 0x04602679, 0x0049b07a, - 0x078105dd, 0x04602670, 0x050080ff, 0x05309812, - 0x07000041, 0x0648007a, 0x068105f2, 0x04488075, - 0x048185f2, 0x0678007a, 0x04000108, 0x078105ee, - 0x04603e79, 0x050f80ff, 0x068d05e9, 0x073fa042, - 0x0600004a, 0x068d05ec, 0x02086051, 0x040f8008, - 0x070fa009, 0x0049107a, 0x01a186bb, 0x00798075, - 0x0600f507, 0x07818869, 0x0448b075, 0x078105f9, - 0x02493075, 0x05810865, 0x004940e6, 0x07810611, - 0x02386001, 0x030e0000, 0x05001087, 0x00494001, - 0x07810603, 0x04780b01, 0x01204000, 0x0681060e, - 0x0249f076, 0x07810609, 0x06a00a7f, 0x0647f076, - 0x004940e6, 0x0781060f, 0x03386000, 0x030e0000, - 0x033e6000, 0x0700c000, 0x03800014, 0x06a00a2c, - 0x03386000, 0x030e0000, 0x0648c0e6, 0x05818624, - 0x068d0613, 0x02386001, 0x07030000, 0x0049107a, - 0x0681061a, 0x020ef083, 0x03860624, 0x06483075, - 0x078106b7, 0x0279007a, 0x01080200, 0x01a107d2, - 0x05308000, 0x07060000, 0x06009079, 0x04a007df, - 0x038006b7, 0x06483075, 0x058107fc, 0x068d0626, - 0x02386001, 0x07030000, 0x0444e07a, 0x0648307a, - 0x0581865f, 0x0448707a, 0x07810690, 0x0448107a, - 0x05818690, 0x0648f07a, 0x06810649, 0x05a007d2, - 0x04008079, 0x0049b07a, 0x07810639, 0x04602670, - 0x04a007f2, 0x0380063a, 0x04a007f1, 0x0186865a, - 0x0049107a, 0x0581865a, 0x04600408, 0x050f80ff, - 0x053fa809, 0x06000002, 0x05780105, 0x07ffff00, - 0x0760147b, 0x050f80ff, 0x053fa812, 0x06000002, - 0x05a007db, 0x038006b7, 0x0760187b, 0x050f80ff, - 0x032fa009, 0x0349c000, 0x04818658, 0x04601079, - 0x050f80ff, 0x073fa00a, 0x0600003d, 0x07f00000, - 0x06600a79, 0x050f80ff, 0x053fa80a, 0x06000010, - 0x038006b7, 0x0046e07a, 0x03800690, 0x06009008, - 0x05308000, 0x05004000, 0x04a007df, 0x038006b7, + 0x053fa812, 0x06000002, 0x007a0140, 0x07c00000, + 0x038003bd, 0x0644f001, 0x04601040, 0x050f80ff, + 0x012fa80a, 0x05308000, 0x03040000, 0x04600440, + 0x050f80ff, 0x073fa00a, 0x06000008, 0x06009040, + 0x04a0080d, 0x028003bf, 0x02209002, 0x008004e0, + 0x03209000, 0x008004e0, 0x02209004, 0x008004e0, + 0x06a00504, 0x062da001, 0x0149e044, 0x04810423, + 0x038f8417, 0x0700f0d7, 0x062da001, 0x0149e00f, + 0x0481041f, 0x028f841c, 0x04a004d6, 0x048183bf, + 0x0778000f, 0x07a00000, 0x03a1842d, 0x048183bf, + 0x05308000, 0x05002000, 0x06009040, 0x04a0080d, + 0x028003bf, 0x05308000, 0x05004000, 0x06009040, + 0x04a0080d, 0x028003bf, 0x0700600f, 0x0379ff06, + 0x0700ffff, 0x05602603, 0x050f80ff, 0x053fa809, + 0x06000008, 0x0179fe11, 0x0700ffff, 0x055c0406, + 0x07818439, 0x07c00000, 0x056a02ff, 0x00800438, + 0x02209008, 0x008004e0, 0x053f2000, 0x05008000, + 0x02495001, 0x068184b0, 0x012f200c, 0x039d8441, + 0x04600840, 0x050f80ff, 0x053fa809, 0x07000003, + 0x0448e007, 0x068184ad, 0x0721f000, 0x0249f007, + 0x0581044d, 0x0245f01f, 0x06000002, 0x0049b001, + 0x06818457, 0x05601c00, 0x050f80ff, 0x012fa809, + 0x06480001, 0x048104b0, 0x04481001, 0x068184b0, + 0x06602840, 0x050f80ff, 0x012fa809, 0x020ef001, + 0x028684b0, 0x049c04b0, 0x070050d8, 0x062da001, + 0x06306002, 0x05000430, 0x04600440, 0x050f80ff, + 0x053fa812, 0x06000002, 0x038f8465, 0x050040d8, + 0x062da001, 0x0149e044, 0x04810476, 0x038f846a, + 0x0700f0d7, 0x062da001, 0x0149e00f, 0x05810472, + 0x038f846f, 0x04a004d6, 0x068184a7, 0x0778000f, + 0x07a00000, 0x03a1842d, 0x068184a7, 0x05602600, + 0x050f80ff, 0x073fa009, 0x06000001, 0x060ff004, + 0x00540402, 0x048204ab, 0x06005051, 0x06006051, + 0x04602640, 0x050f80ff, 0x063fa01a, 0x06000002, + 0x07f00000, 0x06600a40, 0x050f80ff, 0x073fa00a, + 0x07000003, 0x04487007, 0x05810495, 0x060ff002, + 0x00540404, 0x07828495, 0x002f2008, 0x05308000, + 0x07005000, 0x06009040, 0x04a0080d, 0x04008004, + 0x05a00812, 0x0280001a, 0x06780007, 0x02800040, + 0x068184a4, 0x0079c107, 0x07ffffff, 0x007a0b07, + 0x03800000, 0x04780104, 0x07ffff00, 0x058104a0, + 0x02455007, 0x04600840, 0x050f80ff, 0x053fa80a, + 0x07000003, 0x060ff040, 0x045a041f, 0x030e30ff, + 0x002f2008, 0x0693001a, 0x0292001a, 0x02800016, + 0x04004002, 0x0180047d, 0x002f2008, 0x03209000, + 0x008004e0, 0x002f2008, 0x06a00504, 0x062da001, + 0x07f00000, 0x038f84b4, 0x030100d8, 0x062da001, + 0x0149e044, 0x058104c5, 0x028f84b9, 0x0700f0d7, + 0x062da001, 0x0149e00f, 0x048104c1, 0x038f84be, + 0x04a004d6, 0x0481801a, 0x0778000f, 0x07a00000, + 0x03a1842d, 0x0481801a, 0x05308000, 0x07005000, + 0x06009040, 0x04a0080d, 0x04008010, 0x05a00812, + 0x0280001a, 0x05602603, 0x050f80ff, 0x053fa809, + 0x06000008, 0x07780044, 0x073f0000, 0x055c0411, + 0x077800ff, 0x07ff0000, 0x07c00000, 0x07602803, + 0x050f80ff, 0x053fa809, 0x06000008, 0x070ff0d8, + 0x062da001, 0x055c0411, 0x0379fcff, 0x0600001f, + 0x07c00000, 0x050fd009, 0x040fd040, 0x053f2000, + 0x05008000, 0x05308000, 0x03013000, 0x04a0080d, + 0x010440d7, 0x0349f044, 0x058104ed, 0x062da001, + 0x018f04ed, 0x03e00000, 0x062da001, 0x0149e044, + 0x0681001a, 0x008f04f2, 0x03e00000, 0x0700f0d7, + 0x062da001, 0x0149e00f, 0x0681001a, 0x008f04f8, + 0x03e00000, 0x062da001, 0x0280001a, 0x079084fa, + 0x0249c0e5, 0x0681001a, 0x062da001, 0x07f00000, + 0x07f00000, 0x033e5000, 0x070c0000, 0x008f04fd, + 0x03800018, 0x050020d8, 0x04600440, 0x050f80ff, + 0x073fa00a, 0x06000001, 0x07c00000, 0x002fb001, + 0x0280050d, 0x012fb000, 0x03075087, 0x068d050e, + 0x03386000, 0x03020000, 0x04482075, 0x078105b7, + 0x0648a0e6, 0x0681055e, 0x0642007f, 0x0781055c, + 0x0340007e, 0x060ff038, 0x0154047e, 0x02d0054c, + 0x0560027d, 0x050f80ff, 0x032fa009, 0x030ef000, + 0x0186087b, 0x0107d000, 0x05601000, 0x050f80ff, + 0x032fa009, 0x03681e00, 0x076c14ff, 0x0481852a, + 0x0007e038, 0x0727c009, 0x03800530, 0x03681e00, + 0x04500420, 0x050f80ff, 0x073fa009, 0x0700003f, + 0x03800518, 0x070ff07d, 0x0450047c, 0x050f80ff, + 0x002fa819, 0x068d0534, 0x02080001, 0x00081002, + 0x0678007a, 0x05000200, 0x0781053c, 0x0049107a, + 0x03a182f6, 0x01082003, 0x068d053d, 0x0448b07a, + 0x04818545, 0x0249007a, 0x07810548, 0x07780003, + 0x03800000, 0x07810548, 0x0338600c, 0x03010000, + 0x0280054a, 0x02386004, 0x03010000, 0x072e6c00, + 0x038005b7, 0x02800552, 0x02800554, 0x03800556, + 0x02800558, 0x0380055a, 0x0380051b, 0x0727c009, + 0x03800530, 0x0727c00c, 0x03800530, 0x0727c00f, + 0x03800530, 0x0727c012, 0x03800530, 0x0627c015, + 0x03800530, 0x052e6800, 0x038005b7, 0x044880e6, + 0x048108ba, 0x070ff088, 0x0179feff, 0x070fffff, + 0x02a1884f, 0x07818844, 0x0249607a, 0x06818879, + 0x060ff083, 0x03868874, 0x013e6200, 0x07000003, + 0x0448b07a, 0x07810582, 0x0049707a, 0x06810573, + 0x004940e6, 0x07810582, 0x072e6300, 0x03800582, + 0x04604679, 0x050f80ff, 0x032fa009, 0x03680600, + 0x076c00ff, 0x05818582, 0x068d0579, 0x05001099, + 0x060ff001, 0x064b0001, 0x045c0401, 0x0179feff, + 0x070000ff, 0x07810582, 0x0245a07a, 0x078d0582, + 0x028c050d, 0x0648307a, 0x05818611, 0x0279127a, + 0x01040222, 0x016d02ff, 0x058185ee, 0x00798075, + 0x0700f50f, 0x058185ee, 0x06483075, 0x078105ee, + 0x04602679, 0x0049b07a, 0x07810593, 0x04602670, + 0x050f80ff, 0x053fa812, 0x07000041, 0x078d0596, + 0x004940e6, 0x0681059b, 0x072e6300, 0x02800016, + 0x0049707a, 0x0781059f, 0x0049807a, 0x06810016, + 0x02386001, 0x07030000, 0x0648f07a, 0x068105b5, + 0x04600479, 0x050f80ff, 0x053fa809, 0x06000002, + 0x05780105, 0x07ffff00, 0x06006051, 0x0760147b, + 0x050f80ff, 0x053fa812, 0x06000002, 0x0245f079, + 0x078405af, 0x020e0079, 0x033e6a00, 0x0700aa0a, + 0x02079051, 0x02800016, 0x0444e07a, 0x02800668, + 0x078d05b7, 0x028c050d, 0x028005d3, 0x060ff0e6, + 0x077800ff, 0x07000050, 0x048185d3, 0x02799075, + 0x0500fd0f, 0x037c00ff, 0x04000808, 0x048185d3, + 0x0049107a, 0x048185d3, 0x06601879, 0x0049b07a, + 0x078105c9, 0x06601870, 0x050f80ff, 0x063fa052, + 0x0600003e, 0x078d05cc, 0x02386001, 0x07030000, + 0x033e6a00, 0x0700aa0a, 0x02079051, 0x02800016, + 0x0648c0e6, 0x058185f6, 0x0448e0e6, 0x078105eb, + 0x06009051, 0x077baf09, 0x07000005, 0x02490075, + 0x068182ef, 0x004920e6, 0x068105e6, 0x07a00909, + 0x05001088, 0x00700101, 0x03100000, 0x00088001, + 0x033e6000, 0x07000088, 0x018008f9, 0x02386001, + 0x07030000, 0x033e6000, 0x06000008, 0x038006d8, + 0x02799075, 0x0700f50f, 0x06810016, 0x06601879, + 0x0049b07a, 0x068105f2, 0x06601870, 0x050080ff, + 0x06309052, 0x0600003e, 0x038005ff, 0x0648307a, + 0x05818611, 0x04602679, 0x0049b07a, 0x078105fc, + 0x04602670, 0x050080ff, 0x05309812, 0x07000041, + 0x0648007a, 0x07810611, 0x04488075, 0x05818611, + 0x0678007a, 0x04000108, 0x0681060d, 0x04603e79, + 0x050f80ff, 0x068d0608, 0x073fa042, 0x0600004a, + 0x068d060b, 0x02086051, 0x040f8008, 0x070fa009, + 0x0049107a, 0x00a186da, 0x00798075, 0x0600f507, + 0x0681889d, 0x0448b075, 0x07810618, 0x02493075, + 0x05810895, 0x004940e6, 0x07810630, 0x02386001, + 0x030e0000, 0x05001087, 0x00494001, 0x07810622, + 0x04780b01, 0x01204000, 0x0781062d, 0x0249f076, + 0x07810628, 0x07a00abb, 0x0647f076, 0x004940e6, + 0x0781062e, 0x03386000, 0x030e0000, 0x033e6000, + 0x0700c000, 0x02800016, 0x06a00a68, 0x03386000, + 0x030e0000, 0x0648c0e6, 0x04818643, 0x068d0632, + 0x02386001, 0x07030000, 0x0049107a, 0x07810639, + 0x020ef083, 0x02860643, 0x06483075, 0x068106d6, + 0x0279007a, 0x01080200, 0x01a10800, 0x05308000, + 0x07060000, 0x06009079, 0x04a0080d, 0x028006d6, + 0x06483075, 0x0481082a, 0x068d0645, 0x02386001, + 0x07030000, 0x0444e07a, 0x0648307a, 0x0581867e, + 0x0448707a, 0x078106af, 0x0448107a, 0x058186af, + 0x0648f07a, 0x06810668, 0x05a00800, 0x04008079, + 0x0049b07a, 0x06810658, 0x04602670, 0x04a00820, + 0x03800659, 0x04a0081f, 0x00868679, 0x0049107a, + 0x04818679, 0x04600408, 0x050f80ff, 0x053fa809, + 0x06000002, 0x05780105, 0x07ffff00, 0x0760147b, + 0x050f80ff, 0x053fa812, 0x06000002, 0x05a00809, + 0x028006d6, 0x0760187b, 0x050f80ff, 0x032fa009, + 0x0349c000, 0x05818677, 0x04601079, 0x050f80ff, + 0x073fa00a, 0x0600003d, 0x07f00000, 0x06600a79, + 0x050f80ff, 0x053fa80a, 0x06000010, 0x028006d6, + 0x0046e07a, 0x038006af, 0x06009008, 0x05308000, + 0x05004000, 0x04a0080d, 0x028006d6, 0x06600679, + 0x050f80ff, 0x00201007, 0x012fa80a, 0x0046047a, + 0x034630ff, 0x050020ff, 0x06003051, 0x04601079, + 0x050f80ff, 0x073fa012, 0x06000001, 0x07f00000, 0x07601e7b, 0x050f80ff, 0x032fa011, 0x070ff000, 0x04500401, 0x030460ff, 0x060ff025, 0x00540446, - 0x06820673, 0x030460ff, 0x052e40c0, 0x04092046, - 0x0349a0e4, 0x04818670, 0x003e4080, 0x0700c000, - 0x03800674, 0x003e4080, 0x05008000, 0x03800674, - 0x04092046, 0x070ff03a, 0x01868678, 0x013e4000, - 0x07000003, 0x06a0035e, 0x06600679, 0x050f80ff, - 0x00201007, 0x012fa80a, 0x0046047a, 0x034630ff, - 0x050020ff, 0x06003051, 0x04601079, 0x050f80ff, - 0x073fa012, 0x06000001, 0x07f00000, 0x06602e79, - 0x050f80ff, 0x032fa009, 0x030ef000, 0x0286068f, - 0x06009079, 0x05308000, 0x03016000, 0x04a007df, - 0x038006b7, 0x0049407a, 0x078106b2, 0x079c06b1, - 0x04008079, 0x04a007f1, 0x018686b1, 0x06600679, - 0x050f80ff, 0x063fa029, 0x06000001, 0x0349f003, - 0x058186b1, 0x07780006, 0x07ffff00, 0x037c00ff, - 0x07000600, 0x058186b1, 0x0079fe02, 0x070000ff, - 0x056c08ff, 0x058186b1, 0x0246007a, 0x0400707a, - 0x06600679, 0x050f80ff, 0x04302001, 0x04000410, - 0x05303442, 0x02080002, 0x063fa032, 0x06000001, - 0x020e3079, 0x038006b7, 0x0447407a, 0x05a007d2, - 0x05308000, 0x03020000, 0x06009079, 0x04a007df, - 0x033e6a00, 0x0700aa0a, 0x02079051, 0x03800014, - 0x06605679, 0x050f80ff, 0x032fa009, 0x070ff000, - 0x038606d4, 0x057dfeff, 0x07ffffff, 0x078106d4, - 0x050f8000, 0x012fa811, 0x0079fe02, 0x070000ff, - 0x077d66ff, 0x060000dc, 0x058186d4, 0x060ff001, - 0x008686d5, 0x064b0002, 0x06420002, 0x060ff002, - 0x05500400, 0x050f80ff, 0x05004084, 0x073fa00a, - 0x06000002, 0x07c00000, 0x04600201, 0x050f80ff, - 0x073fa009, 0x06000001, 0x0079fe02, 0x070000ff, - 0x077d72ff, 0x070000dd, 0x058186d4, 0x064b0002, - 0x06420002, 0x06000001, 0x028006ce, 0x0605004c, - 0x028006e6, 0x079306e2, 0x05a007d8, 0x054bc450, - 0x068106e9, 0x02d006ea, 0x028006e9, 0x038006fa, - 0x038006fc, 0x0080078c, 0x0180079f, 0x01800709, - 0x038006fc, 0x01800756, 0x038006fa, 0x008007a7, - 0x018007a3, 0x038006fa, 0x018007aa, 0x008007c7, - 0x01800778, 0x038006fa, 0x038006fa, 0x032096fa, - 0x018007e7, 0x073c3fff, 0x0700000f, 0x0379ff50, - 0x070fffff, 0x060ff079, 0x055c0450, 0x0581079c, - 0x002fb008, 0x060ff079, 0x055c0450, 0x0481079b, - 0x05a007ca, 0x00800794, 0x0179fe50, 0x070fffff, - 0x070050ff, 0x060ff079, 0x055c0405, 0x04810713, - 0x002fb008, 0x060ff079, 0x055c0405, 0x06818798, - 0x073c3fff, 0x0700000f, 0x070ff087, 0x017980ff, - 0x0600f507, 0x07818722, 0x02203040, 0x05002087, - 0x0049d002, 0x07818722, 0x002fb008, 0x07006087, - 0x002fb008, 0x0149d006, 0x05810750, 0x05930727, - 0x01257000, 0x052e4003, 0x072e5030, 0x0304c050, - 0x02400057, 0x06740057, 0x06000004, 0x0782001b, - 0x004940e6, 0x01a18a72, 0x0049107a, 0x01a186bb, - 0x04002083, 0x07003084, 0x04004085, 0x04602679, - 0x0049b07a, 0x05810736, 0x04602670, 0x050f80ff, - 0x063fa01a, 0x06000001, 0x05a007d2, 0x05a008de, - 0x033e6a00, 0x0700aa0a, 0x062e5020, 0x07a0090c, - 0x02798102, 0x070000ff, 0x007c8002, 0x07000055, - 0x0581074d, 0x072e50c0, 0x0648a002, 0x0581074d, - 0x040fd002, 0x058d0748, 0x03386006, 0x03010000, - 0x033e6000, 0x0700000c, 0x003e4002, 0x07000a00, - 0x028006b9, 0x07420003, 0x0681871a, 0x00798002, - 0x0600f507, 0x07818722, 0x0180072b, 0x0493075d, - 0x01257000, 0x073c3fff, 0x0700000f, 0x052e4003, - 0x072e5030, 0x0304c050, 0x067800e6, 0x07000041, - 0x04810762, 0x05a008e7, 0x0681876d, 0x002fb008, - 0x067800e6, 0x07000041, 0x04810768, 0x05a008e7, - 0x0681876d, 0x062e5020, 0x003e4002, 0x07000a00, - 0x03e00000, 0x03800014, 0x06740057, 0x07000018, - 0x0782001b, 0x05a008de, 0x033e6a00, 0x0700aa0a, - 0x002fb008, 0x05a008de, 0x033e6a00, 0x0700aa0a, - 0x00800768, 0x0379ff50, 0x070fffff, 0x060ff079, - 0x055c0450, 0x0781877e, 0x0245507a, 0x002fb008, - 0x060ff079, 0x055c0450, 0x06818783, 0x0245507a, - 0x002fb008, 0x05601050, 0x050f80ff, 0x012fa809, - 0x02455001, 0x05601050, 0x050f80ff, 0x012fa80a, - 0x01800795, 0x0795879c, 0x0179fe50, 0x070fffff, - 0x045c042f, 0x0781879c, 0x0202f051, 0x042e4020, - 0x01800795, 0x002fb008, 0x003e4002, 0x07000a00, - 0x0380001b, 0x0693879b, 0x062e5020, 0x042e4002, - 0x002fb008, 0x013e4000, 0x05000e00, 0x0380001b, - 0x0179fe50, 0x070fffff, 0x010210ff, 0x0380001b, - 0x0179fe50, 0x070fffff, 0x050340ff, 0x01800795, - 0x023e5008, 0x05000800, 0x0380001b, 0x0179fe50, - 0x070fffff, 0x0102e0ff, 0x05602c2e, 0x050f80ff, - 0x05222000, 0x07223000, 0x05224000, 0x07225000, - 0x07226000, 0x05227000, 0x05228000, 0x07229000, - 0x0722a000, 0x0522b000, 0x063fa051, 0x07000011, - 0x0202c026, 0x0522d000, 0x052e400c, 0x0560402e, - 0x050f80ff, 0x032fa021, 0x04032002, 0x07033003, - 0x07420000, 0x07036000, 0x0403b001, 0x0380001b, - 0x030430d4, 0x062e5008, 0x00800279, 0x05601050, - 0x050f80ff, 0x032fa009, 0x03460000, 0x008007d5, - 0x0246007a, 0x0045207a, 0x008007d3, 0x0246007a, - 0x0600007a, 0x04601079, 0x050f80ff, 0x032fa00a, - 0x07c00000, 0x039287d8, 0x070500e1, 0x07c00000, - 0x0245f008, 0x048407dc, 0x020e0008, 0x07c00000, - 0x070ff009, 0x065a0008, 0x058407e1, 0x020e0008, - 0x07c00000, 0x058407e4, 0x020e0008, 0x07c00000, - 0x05308000, 0x0500d000, 0x04a007df, 0x04a007ec, - 0x03800014, 0x052e4300, 0x072e500c, 0x073c3fff, - 0x0700000f, 0x07c00000, 0x04602608, 0x050f80ff, - 0x032fa011, 0x076a0000, 0x078187fa, 0x066a0001, - 0x058107fa, 0x06006051, 0x07c00000, 0x02206001, - 0x07c00000, 0x0678007a, 0x06000020, 0x06818804, - 0x0049107a, 0x04810804, 0x073c3fff, 0x0700000f, - 0x02800626, 0x040fd079, 0x0648307a, 0x05810809, - 0x06a0096b, 0x0080080e, 0x05a007cf, 0x05308000, - 0x05001000, 0x06009079, 0x04a007df, 0x048d080e, - 0x040fd079, 0x033e6a00, 0x0600aa0e, 0x02079051, - 0x03386006, 0x03010000, 0x03800014, 0x052e6200, - 0x0648307a, 0x0581081b, 0x06a0096b, 0x018008c5, - 0x05a007cf, 0x05308000, 0x05001000, 0x06009079, - 0x04a007df, 0x018008c5, 0x050010ff, 0x0448b07a, - 0x0481082f, 0x0049107a, 0x0481082f, 0x048d0826, - 0x04604679, 0x050f80ff, 0x032fa009, 0x03680600, - 0x056c02ff, 0x0681882f, 0x046c1001, 0x04810831, - 0x056a02ff, 0x07c00000, 0x04a00834, 0x075c00ff, - 0x07c00000, 0x048d0834, 0x060ff07c, 0x070ff07d, - 0x070ff07e, 0x060ff07f, 0x060ff080, 0x070ff081, - 0x070ff082, 0x060ff083, 0x070ff084, 0x060ff085, - 0x0338600c, 0x03010000, 0x038a8841, 0x058d0842, - 0x03386000, 0x03020000, 0x07c00000, 0x06483075, - 0x0781884b, 0x0448d07a, 0x078187fc, 0x040fd079, - 0x052e6200, 0x038005d1, 0x0648307a, 0x068182b3, - 0x05a007d2, 0x0120984d, 0x018007e7, 0x04002089, + 0x0782069f, 0x030460ff, 0x052e40c0, 0x04092046, + 0x0349a0e4, 0x0581869c, 0x003e4080, 0x0700c000, + 0x038006a0, 0x003e4080, 0x05008000, 0x038006a0, + 0x04092046, 0x070ff03a, 0x008686a4, 0x013e4000, + 0x07000003, 0x06a00379, 0x06602e79, 0x050f80ff, + 0x032fa009, 0x030ef000, 0x028606ae, 0x06009079, + 0x05308000, 0x03016000, 0x04a0080d, 0x028006d6, + 0x0049407a, 0x078106d1, 0x069c06d0, 0x04008079, + 0x04a0081f, 0x008686d0, 0x06600679, 0x050f80ff, + 0x063fa029, 0x06000001, 0x0349f003, 0x048186d0, + 0x07780006, 0x07ffff00, 0x037c00ff, 0x07000600, + 0x048186d0, 0x0079fe02, 0x070000ff, 0x056c08ff, + 0x048186d0, 0x0246007a, 0x0400707a, 0x06600679, + 0x050f80ff, 0x04302001, 0x04000410, 0x05303442, + 0x02080002, 0x063fa032, 0x06000001, 0x020e3079, + 0x028006d6, 0x0447407a, 0x05a00800, 0x05308000, + 0x03020000, 0x06009079, 0x04a0080d, 0x033e6a00, + 0x0700aa0a, 0x02079051, 0x02800016, 0x06605679, + 0x050f80ff, 0x032fa009, 0x070ff000, 0x038606f3, + 0x057dfeff, 0x07ffffff, 0x078106f3, 0x050f8000, + 0x012fa811, 0x0079fe02, 0x070000ff, 0x077d66ff, + 0x060000dc, 0x058186f3, 0x060ff001, 0x008686f4, + 0x064b0002, 0x06420002, 0x060ff002, 0x05500400, + 0x050f80ff, 0x05004084, 0x073fa00a, 0x06000002, + 0x07c00000, 0x04600201, 0x050f80ff, 0x073fa009, + 0x06000001, 0x0079fe02, 0x070000ff, 0x077d72ff, + 0x070000dd, 0x058186f3, 0x064b0002, 0x06420002, + 0x06000001, 0x038006ed, 0x0605004c, 0x01800705, + 0x04930701, 0x05a00806, 0x054bc450, 0x04810708, + 0x01d00709, 0x00800708, 0x00800719, 0x0180071d, + 0x018007bd, 0x008007d0, 0x0080072a, 0x0180071d, + 0x01800787, 0x00800719, 0x018007d4, 0x00800719, + 0x00800719, 0x018007d7, 0x018007f5, 0x018007a9, + 0x00800719, 0x00800719, 0x06009051, 0x037a3309, + 0x06000007, 0x00800815, 0x073c3fff, 0x0700000f, + 0x0379ff50, 0x070fffff, 0x060ff079, 0x055c0450, + 0x048107cd, 0x002fb008, 0x060ff079, 0x055c0450, + 0x058107cc, 0x04a007f8, 0x018007c5, 0x0179fe50, + 0x070fffff, 0x070050ff, 0x060ff079, 0x055c0405, + 0x0481073d, 0x002fb008, 0x060ff079, 0x055c0405, + 0x0481073d, 0x050fd005, 0x05601005, 0x050f80ff, + 0x032fa009, 0x03460000, 0x05601005, 0x050f80ff, + 0x032fa00a, 0x018007c9, 0x073c3fff, 0x0700000f, + 0x070ff087, 0x017980ff, 0x0600f507, 0x0681874c, + 0x02203040, 0x05002087, 0x0049d002, 0x0681874c, + 0x002fb008, 0x07006087, 0x002fb008, 0x0149d006, + 0x05810781, 0x04930751, 0x01257000, 0x052e4003, + 0x072e5030, 0x0304c050, 0x02400057, 0x06740057, + 0x06000004, 0x0782001d, 0x004940e6, 0x00a18aae, + 0x0448b07a, 0x0481075e, 0x04603e79, 0x050f80ff, + 0x048d075b, 0x073fa042, 0x0600004a, 0x0049107a, + 0x00a186da, 0x04002083, 0x07003084, 0x04004085, + 0x04602679, 0x0049b07a, 0x04810767, 0x04602670, + 0x050f80ff, 0x063fa01a, 0x06000001, 0x05a00800, + 0x07a00912, 0x033e6a00, 0x0700aa0a, 0x062e5020, + 0x06a00940, 0x02798102, 0x070000ff, 0x007c8002, + 0x07000055, 0x0581077e, 0x072e50c0, 0x0648a002, + 0x0581077e, 0x040fd002, 0x048d0779, 0x03386006, + 0x03010000, 0x033e6000, 0x0700000c, 0x003e4002, + 0x07000a00, 0x038006d8, 0x07420003, 0x07818744, + 0x00798002, 0x0600f507, 0x0681874c, 0x01800755, + 0x0593078e, 0x01257000, 0x073c3fff, 0x0700000f, + 0x052e4003, 0x072e5030, 0x0304c050, 0x067800e6, + 0x07000041, 0x05810793, 0x07a0091b, 0x0681879e, + 0x002fb008, 0x067800e6, 0x07000041, 0x05810799, + 0x07a0091b, 0x0681879e, 0x062e5020, 0x003e4002, + 0x07000a00, 0x03e00000, 0x02800016, 0x06740057, + 0x07000018, 0x0782001d, 0x07a00912, 0x033e6a00, + 0x0700aa0a, 0x002fb008, 0x07a00912, 0x033e6a00, + 0x0700aa0a, 0x01800799, 0x0379ff50, 0x070fffff, + 0x060ff079, 0x055c0450, 0x078187af, 0x0245507a, + 0x002fb008, 0x060ff079, 0x055c0450, 0x078187b4, + 0x0245507a, 0x002fb008, 0x05601050, 0x050f80ff, + 0x012fa809, 0x02455001, 0x05601050, 0x050f80ff, + 0x012fa80a, 0x018007c6, 0x069587cd, 0x0179fe50, + 0x070fffff, 0x045c042f, 0x068187cd, 0x0202f051, + 0x042e4020, 0x018007c6, 0x002fb008, 0x003e4002, + 0x07000a00, 0x0380001d, 0x079387cc, 0x062e5020, + 0x042e4002, 0x002fb008, 0x013e4000, 0x05000e00, + 0x0380001d, 0x0179fe50, 0x070fffff, 0x010210ff, + 0x0380001d, 0x023e5008, 0x05000800, 0x0380001d, + 0x0179fe50, 0x070fffff, 0x0102e0ff, 0x05602c2e, + 0x050f80ff, 0x05222000, 0x07223000, 0x05224000, + 0x07225000, 0x07226000, 0x05227000, 0x05228000, + 0x0722a000, 0x0522b000, 0x060ff029, 0x063fa051, + 0x07000011, 0x030290ff, 0x0202c026, 0x0522d000, + 0x052e400c, 0x0560402e, 0x050f80ff, 0x032fa021, + 0x04032002, 0x07033003, 0x07420000, 0x07036000, + 0x0403b001, 0x0380001d, 0x030430d4, 0x062e5008, + 0x01800290, 0x05601050, 0x050f80ff, 0x032fa009, + 0x03460000, 0x01800803, 0x0246007a, 0x0045207a, + 0x00800801, 0x0246007a, 0x0600007a, 0x04601079, + 0x050f80ff, 0x032fa00a, 0x07c00000, 0x03928806, + 0x070500e1, 0x07c00000, 0x0245f008, 0x0584080a, + 0x020e0008, 0x07c00000, 0x070ff009, 0x065a0008, + 0x0584080f, 0x020e0008, 0x07c00000, 0x05840812, + 0x020e0008, 0x07c00000, 0x05308000, 0x0500d000, + 0x04a0080d, 0x04a0081a, 0x02800016, 0x052e4300, + 0x072e500c, 0x073c3fff, 0x0700000f, 0x07c00000, + 0x04602608, 0x050f80ff, 0x032fa011, 0x076a0000, + 0x07818828, 0x066a0001, 0x05810828, 0x06006051, + 0x07c00000, 0x02206001, 0x07c00000, 0x0678007a, + 0x06000020, 0x06818832, 0x0049107a, 0x04810832, + 0x073c3fff, 0x0700000f, 0x02800645, 0x040fd079, + 0x0648307a, 0x04810837, 0x06a009a7, 0x0180083c, + 0x04a007fd, 0x05308000, 0x05001000, 0x06009079, + 0x04a0080d, 0x058d083c, 0x040fd079, 0x033e6a00, + 0x0600aa0e, 0x02079051, 0x03386006, 0x03010000, + 0x02800016, 0x052e6200, 0x0648307a, 0x04810849, + 0x06a009a7, 0x018008f9, 0x04a007fd, 0x05308000, + 0x05001000, 0x06009079, 0x04a0080d, 0x018008f9, + 0x050010ff, 0x0448b07a, 0x0481085d, 0x0049107a, + 0x0481085d, 0x048d0854, 0x04604679, 0x050f80ff, + 0x032fa009, 0x03680600, 0x056c02ff, 0x0681885d, + 0x046c1001, 0x0581085f, 0x056a02ff, 0x07c00000, + 0x04a00862, 0x075c00ff, 0x07c00000, 0x048d0862, + 0x060ff07c, 0x070ff07d, 0x070ff07e, 0x060ff07f, + 0x060ff080, 0x070ff081, 0x070ff082, 0x060ff083, + 0x070ff084, 0x060ff085, 0x0338600c, 0x03010000, + 0x038a886f, 0x048d0870, 0x03386000, 0x03020000, + 0x07c00000, 0x06483075, 0x06818879, 0x0448d07a, + 0x0681882a, 0x040fd079, 0x052e6200, 0x038005ee, + 0x0648307a, 0x068182d0, 0x05a00800, 0x06009051, + 0x017af709, 0x06000008, 0x00800815, 0x04002089, 0x04780102, 0x07f00000, 0x05001088, 0x04740101, 0x03100000, 0x04780101, 0x07f00000, 0x060ff002, - 0x045c0401, 0x06818867, 0x00088001, 0x033e6000, + 0x045c0401, 0x07818899, 0x00088001, 0x033e6000, 0x070000c0, 0x0220901a, 0x05308000, 0x01012000, - 0x04a007df, 0x018008c0, 0x01209865, 0x018007e7, - 0x00209867, 0x018002ca, 0x040fd075, 0x040fd07a, - 0x040fd079, 0x0648307a, 0x05810874, 0x06780075, - 0x06000007, 0x07818881, 0x00494075, 0x07818874, - 0x06a0096b, 0x06486075, 0x078182b1, 0x00494075, - 0x06818894, 0x02490075, 0x078182c6, 0x04487075, - 0x06818889, 0x0448b07a, 0x04810880, 0x00492075, - 0x0781889f, 0x00800897, 0x05308000, 0x03010000, - 0x06009079, 0x04a007df, 0x03800014, 0x0448e0e6, - 0x0581859c, 0x018002af, 0x0648307a, 0x078188c0, - 0x004940e6, 0x01a18a72, 0x05308000, 0x0500e000, - 0x06009079, 0x04a007df, 0x04008089, 0x05a007e4, - 0x018008c0, 0x00208007, 0x05a007e4, 0x03800014, - 0x05a007cf, 0x05308000, 0x0700f000, 0x06009079, - 0x07000088, 0x04a008a8, 0x04a007df, 0x03800014, - 0x004940e6, 0x01a18a72, 0x05308000, 0x01011000, - 0x06009079, 0x07000088, 0x04a008a8, 0x04a007df, - 0x03800014, 0x03386000, 0x07030000, 0x07f00000, - 0x048d08ab, 0x033e6a00, 0x0600aa0e, 0x02079051, - 0x040fd075, 0x0448b075, 0x058108b7, 0x02493075, - 0x058108b7, 0x05301005, 0x03010000, 0x008008b9, + 0x04a0080d, 0x008008f4, 0x06009051, 0x077b2b09, + 0x06000008, 0x00800815, 0x06009051, 0x077b3309, + 0x06000008, 0x018002ed, 0x040fd075, 0x040fd07a, + 0x040fd079, 0x0648307a, 0x048108a8, 0x06780075, + 0x06000007, 0x068188b5, 0x00494075, 0x068188a8, + 0x06a009a7, 0x06486075, 0x068182ce, 0x00494075, + 0x068188c8, 0x02490075, 0x078182e7, 0x04487075, + 0x078188bd, 0x0448b07a, 0x058108b4, 0x00492075, + 0x068188d3, 0x008008cb, 0x05308000, 0x03010000, + 0x06009079, 0x04a0080d, 0x02800016, 0x0448e0e6, + 0x058185b7, 0x018002ca, 0x0648307a, 0x068188f4, + 0x004940e6, 0x00a18aae, 0x05308000, 0x0500e000, + 0x06009079, 0x04a0080d, 0x04008089, 0x05a00812, + 0x008008f4, 0x00208007, 0x05a00812, 0x02800016, + 0x04a007fd, 0x05308000, 0x0700f000, 0x06009079, + 0x07000088, 0x04a008dc, 0x04a0080d, 0x02800016, + 0x004940e6, 0x00a18aae, 0x05308000, 0x01011000, + 0x06009079, 0x07000088, 0x04a008dc, 0x04a0080d, + 0x02800016, 0x03386000, 0x07030000, 0x07f00000, + 0x048d08df, 0x033e6a00, 0x0600aa0e, 0x02079051, + 0x040fd075, 0x0448b075, 0x058108eb, 0x02493075, + 0x058108eb, 0x05301005, 0x03010000, 0x018008ed, 0x05301006, 0x03010000, 0x05002087, 0x06485002, - 0x068188b9, 0x0744c000, 0x01088000, 0x02086001, - 0x07c00000, 0x05001088, 0x040fd001, 0x04a008d5, + 0x078188ed, 0x0744c000, 0x01088000, 0x02086001, + 0x07c00000, 0x05001088, 0x040fd001, 0x07a00909, 0x0644c001, 0x00088001, 0x070fc0ff, 0x033e6a00, - 0x0600aa0e, 0x004920e6, 0x068188cb, 0x02079051, - 0x048d08cb, 0x060ff089, 0x034990ff, 0x058108d2, - 0x03386005, 0x03010000, 0x03800014, 0x03386006, - 0x03010000, 0x03800014, 0x048d08d5, 0x03386000, - 0x07030000, 0x07f00000, 0x048d08d9, 0x070ff087, - 0x074850ff, 0x068188da, 0x07c00000, 0x058d08de, - 0x02386001, 0x07030000, 0x07f00000, 0x058d08e2, - 0x070ff087, 0x074850ff, 0x068188e3, 0x07c00000, - 0x05002087, 0x0049d002, 0x078188f6, 0x002fb008, - 0x067800e6, 0x07000041, 0x002fb008, 0x078188f6, - 0x07a0090c, 0x0448e002, 0x058108f9, 0x0648a002, - 0x05818903, 0x06486002, 0x048108fd, 0x02400057, - 0x056a02ff, 0x07c00000, 0x07a0090c, 0x06788102, - 0x06000004, 0x078188f6, 0x04002089, 0x070ff0d4, - 0x045c0402, 0x077800ff, 0x07f00000, 0x078188f6, - 0x00202010, 0x018c08f6, 0x07f00000, 0x06420002, - 0x04818904, 0x05a008de, 0x033e6a00, 0x0700aa0a, + 0x0600aa0e, 0x004920e6, 0x078188ff, 0x02079051, + 0x058d08ff, 0x060ff089, 0x034990ff, 0x07810906, + 0x03386005, 0x03010000, 0x02800016, 0x03386006, + 0x03010000, 0x02800016, 0x078d0909, 0x03386000, + 0x07030000, 0x07f00000, 0x068d090d, 0x070ff087, + 0x074850ff, 0x0481890e, 0x07c00000, 0x078d0912, + 0x02386001, 0x07030000, 0x07f00000, 0x068d0916, + 0x070ff087, 0x074850ff, 0x05818917, 0x07c00000, + 0x05002087, 0x0049d002, 0x0481892a, 0x002fb008, + 0x067800e6, 0x07000041, 0x002fb008, 0x0481892a, + 0x06a00940, 0x0448e002, 0x0781092d, 0x0648a002, + 0x04818937, 0x06486002, 0x06810931, 0x02400057, + 0x056a02ff, 0x07c00000, 0x06a00940, 0x06788102, + 0x06000004, 0x0481892a, 0x04002089, 0x070ff0d4, + 0x045c0402, 0x077800ff, 0x07f00000, 0x0481892a, + 0x00202010, 0x028c092a, 0x07f00000, 0x06420002, + 0x04818938, 0x07a00912, 0x033e6a00, 0x0700aa0a, 0x07c00000, 0x07f00000, 0x060ff0a2, 0x045a0202, - 0x060ff0a2, 0x045c0402, 0x0481890d, 0x07c00000, - 0x06a0035e, 0x03495047, 0x07810918, 0x0320901d, - 0x0280094a, 0x0220901f, 0x0280094a, 0x014980e4, - 0x05818014, 0x013e4000, 0x07003000, 0x05600e35, - 0x050f80ff, 0x07a00990, 0x01208003, 0x05a007e4, - 0x02800932, 0x03209009, 0x0280094a, 0x03209011, - 0x0280094a, 0x02209007, 0x0280094a, 0x03209003, - 0x0280094a, 0x00497043, 0x05818928, 0x00494043, - 0x07810924, 0x02209001, 0x0280094a, 0x0220900d, - 0x0280094a, 0x0320900f, 0x0280094a, 0x03493000, - 0x0681093b, 0x027c0045, 0x070a0000, 0x06810946, - 0x0220900b, 0x0280094a, 0x0320900c, 0x02800940, - 0x02209013, 0x05308000, 0x01012000, 0x04a007df, - 0x01800288, 0x03209005, 0x0280094a, 0x072e500c, - 0x00208002, 0x05a007e4, 0x03800014, 0x0349c0e4, - 0x06810967, 0x072d6000, 0x07f00000, 0x060000d0, + 0x060ff0a2, 0x045c0402, 0x05818941, 0x07c00000, + 0x06a00379, 0x03495047, 0x0681094c, 0x0320901d, + 0x0380097e, 0x0220901f, 0x0380097e, 0x014980e4, + 0x04818016, 0x013e4000, 0x07003000, 0x05600e35, + 0x050f80ff, 0x07a009cc, 0x01208003, 0x05a00812, + 0x03800966, 0x03209009, 0x0380097e, 0x03209011, + 0x0380097e, 0x02209007, 0x0380097e, 0x03209003, + 0x0380097e, 0x00497043, 0x0581895c, 0x00494043, + 0x06810958, 0x02209001, 0x0380097e, 0x0220900d, + 0x0380097e, 0x0320900f, 0x0380097e, 0x03493000, + 0x0781096f, 0x027c0045, 0x070a0000, 0x0681097a, + 0x0220900b, 0x0380097e, 0x0320900c, 0x03800974, + 0x02209013, 0x05308000, 0x01012000, 0x04a0080d, + 0x0180029f, 0x03209005, 0x0380097e, 0x072e500c, + 0x00208002, 0x05a00812, 0x02800016, 0x0349c0e4, + 0x0681099b, 0x072d6000, 0x07f00000, 0x060000d0, 0x0379ff00, 0x0700ffff, 0x04605232, 0x050f80ff, 0x032fa00a, 0x070000d1, 0x0379ff00, 0x0700ffff, 0x04605432, 0x050f80ff, 0x032fa00a, 0x062d6002, 0x07f00000, 0x0204f0d0, 0x0079fe4f, 0x070000ff, 0x074b0a00, 0x044b044f, 0x075a0000, 0x04600432, - 0x050f80ff, 0x032fa00a, 0x00041032, 0x03800044, - 0x05308000, 0x01012000, 0x04a007df, 0x00800279, - 0x06a0035e, 0x070ff02e, 0x045c0479, 0x06810973, - 0x05308000, 0x05008000, 0x06009079, 0x04a007df, - 0x07c00000, 0x053f2000, 0x0700c000, 0x019d8974, - 0x07c00000, 0x033e5000, 0x0700f000, 0x0280097f, - 0x004980e5, 0x0581807e, 0x033e5000, 0x05008000, - 0x050f8035, 0x07a00990, 0x00017008, 0x01018009, + 0x050f80ff, 0x032fa00a, 0x00041032, 0x02800046, + 0x07780047, 0x05000700, 0x037c00ff, 0x07000500, + 0x058189a3, 0x05308000, 0x03019000, 0x038009a5, + 0x05308000, 0x01012000, 0x04a0080d, 0x01800290, + 0x06a00379, 0x070ff02e, 0x045c0479, 0x078109af, + 0x05308000, 0x05008000, 0x06009079, 0x04a0080d, + 0x07c00000, 0x053f2000, 0x0700c000, 0x009d89b0, + 0x07c00000, 0x033e5000, 0x0700f000, 0x038009bb, + 0x004980e5, 0x04818080, 0x033e5000, 0x05008000, + 0x050f8035, 0x07a009cc, 0x00017008, 0x01018009, 0x033e5000, 0x07000c00, 0x05308000, 0x07006000, - 0x07009041, 0x04a007df, 0x033e5000, 0x07003000, - 0x05008017, 0x07009018, 0x0249a0e5, 0x0681821f, - 0x0380007e, 0x06600052, 0x030d60ff, 0x07f00000, + 0x07009041, 0x04a0080d, 0x033e5000, 0x07003000, + 0x05008017, 0x07009018, 0x0249a0e5, 0x07818236, + 0x02800080, 0x06600052, 0x030d60ff, 0x07f00000, 0x07f00000, 0x000110d0, 0x010120d1, 0x04600252, 0x030d60ff, 0x07f00000, 0x07f00000, 0x020130d0, 0x010140d1, 0x04600452, 0x030d60ff, 0x010170d4, 0x07f00000, 0x020150d0, 0x030160d1, 0x053fa83a, 0x06000008, 0x07c00000, 0x07600c41, 0x050f80ff, 0x01202003, 0x073fa00a, 0x06000001, 0x07f00000, - 0x05601041, 0x050f80ff, 0x032fa071, 0x01800139, - 0x002fb001, 0x038009b2, 0x012fb000, 0x02386001, - 0x030e0000, 0x03076087, 0x069f09b5, 0x03386000, - 0x03020000, 0x00498076, 0x04818a07, 0x00497076, - 0x048189c1, 0x04482076, 0x048189d3, 0x02496076, - 0x058189f6, 0x02800a04, 0x075a00ff, 0x069f09c2, + 0x05601041, 0x050f80ff, 0x032fa071, 0x01800141, + 0x002fb001, 0x038009ee, 0x012fb000, 0x02386001, + 0x030e0000, 0x03076087, 0x069f09f1, 0x03386000, + 0x03020000, 0x00498076, 0x04818a43, 0x00497076, + 0x048189fd, 0x04482076, 0x05818a0f, 0x02496076, + 0x04818a32, 0x02800a40, 0x075a00ff, 0x069f09fe, 0x03386000, 0x03010000, 0x033e6000, 0x07003000, - 0x00492076, 0x06810a04, 0x00491076, 0x04818a04, - 0x02490076, 0x04818a04, 0x0249a0e6, 0x078109d1, - 0x06a00a7f, 0x028009fb, 0x0245f076, 0x02800a04, - 0x004980e6, 0x06810a0d, 0x070ff074, 0x028609e5, + 0x00492076, 0x06810a40, 0x00491076, 0x04818a40, + 0x02490076, 0x04818a40, 0x0249a0e6, 0x06810a0d, + 0x07a00abb, 0x02800a37, 0x0245f076, 0x02800a40, + 0x004980e6, 0x06810a49, 0x070ff074, 0x03860a21, 0x070ff072, 0x05500471, 0x050f80ff, 0x002fa819, - 0x079f09db, 0x02080001, 0x00081002, 0x01082003, - 0x06a00a49, 0x02860a0d, 0x06a00a2c, 0x0249a0e6, - 0x048189fb, 0x02800a04, 0x06a00a2c, 0x033e6000, - 0x07002200, 0x030ef003, 0x018689ed, 0x033e6000, - 0x07002e00, 0x0045807a, 0x0249a0e6, 0x068109f1, - 0x04a007d3, 0x038009ff, 0x0648c0e6, 0x06810a04, - 0x03386000, 0x030e0000, 0x02800580, 0x06a00a2c, - 0x030ef003, 0x008689fb, 0x070ff074, 0x028609ea, - 0x033e6000, 0x07002200, 0x0249a0e6, 0x06810a04, + 0x079f0a17, 0x02080001, 0x00081002, 0x01082003, + 0x06a00a85, 0x02860a49, 0x06a00a68, 0x0249a0e6, + 0x04818a37, 0x02800a40, 0x06a00a68, 0x033e6000, + 0x07002200, 0x030ef003, 0x00868a29, 0x033e6000, + 0x07002e00, 0x0045807a, 0x0249a0e6, 0x07810a2d, + 0x04a00801, 0x02800a3b, 0x0648c0e6, 0x06810a40, + 0x03386000, 0x030e0000, 0x0280059b, 0x06a00a68, + 0x030ef003, 0x00868a37, 0x070ff074, 0x02860a26, + 0x033e6000, 0x07002200, 0x0249a0e6, 0x06810a40, 0x03386000, 0x030e0000, 0x033e6000, 0x05008000, - 0x03800611, 0x03386000, 0x030e0000, 0x02800029, + 0x03800630, 0x03386000, 0x030e0000, 0x0380002b, 0x040fd079, 0x033e6000, 0x0500a200, 0x03386000, - 0x030e0000, 0x00800897, 0x02209a0d, 0x018007e7, + 0x030e0000, 0x008008cb, 0x02209a49, 0x00800815, 0x02386001, 0x030e0000, 0x06604e79, 0x050f80ff, 0x032fa009, 0x03070000, 0x06601270, 0x050f80ff, 0x053fa821, 0x06000038, 0x07f00000, 0x04601a70, - 0x050f80ff, 0x032fa021, 0x060ff002, 0x02860a2a, - 0x069f0a1f, 0x03080000, 0x00081001, 0x00082002, + 0x050f80ff, 0x032fa021, 0x060ff002, 0x03860a66, + 0x069f0a5b, 0x03080000, 0x00081001, 0x00082002, 0x03083003, 0x070ff087, 0x033e6000, 0x07000300, 0x03386000, 0x030e0000, 0x07c00000, 0x0045807a, - 0x03800a27, 0x06604e79, 0x050f80ff, 0x032fa009, + 0x03800a63, 0x06604e79, 0x050f80ff, 0x032fa009, 0x03070000, 0x06601270, 0x050f80ff, 0x053fa822, - 0x06000038, 0x069f0a34, 0x070ff087, 0x0149d0ff, - 0x04818a40, 0x06000080, 0x05001081, 0x05002082, + 0x06000038, 0x069f0a70, 0x070ff087, 0x0149d0ff, + 0x04818a7c, 0x06000080, 0x05001081, 0x05002082, 0x06003083, 0x04601a70, 0x050f80ff, 0x032fa022, 0x07c00000, 0x0131ef00, 0x0700000f, 0x070ff087, - 0x0149d0ff, 0x06810a34, 0x0742001e, 0x05818a42, - 0x050fd0ff, 0x02800a40, 0x07420074, 0x06810a5e, - 0x02400073, 0x060ff038, 0x00540473, 0x03d00a60, + 0x0149d0ff, 0x06810a70, 0x0742001e, 0x05818a7e, + 0x050fd0ff, 0x02800a7c, 0x07420074, 0x07810a9a, + 0x02400073, 0x060ff038, 0x00540473, 0x03d00a9c, 0x05600272, 0x050f80ff, 0x032fa009, 0x030ef000, - 0x02860a70, 0x01072000, 0x05601000, 0x050f80ff, - 0x032fa009, 0x03681e00, 0x076c14ff, 0x04818a70, + 0x03860aac, 0x01072000, 0x05601000, 0x050f80ff, + 0x032fa009, 0x03681e00, 0x076c14ff, 0x05818aac, 0x02073038, 0x05271009, 0x07c00000, 0x022ff001, - 0x02800a5d, 0x03800a66, 0x02800a68, 0x03800a6a, - 0x03800a6c, 0x02800a6e, 0x02800a4f, 0x05271009, - 0x02800a5d, 0x0527100c, 0x02800a5d, 0x0527100f, - 0x02800a5d, 0x05271012, 0x02800a5d, 0x04271015, - 0x02800a5d, 0x032ff000, 0x02800a5d, 0x02386001, - 0x030e0000, 0x05001087, 0x069f0a75, 0x00494001, - 0x07810a7b, 0x03386000, 0x030e0000, 0x07c00000, + 0x03800a99, 0x02800aa2, 0x02800aa4, 0x03800aa6, + 0x02800aa8, 0x03800aaa, 0x03800a8b, 0x05271009, + 0x03800a99, 0x0527100c, 0x03800a99, 0x0527100f, + 0x03800a99, 0x05271012, 0x03800a99, 0x04271015, + 0x03800a99, 0x032ff000, 0x03800a99, 0x02386001, + 0x030e0000, 0x05001087, 0x079f0ab1, 0x00494001, + 0x07810ab7, 0x03386000, 0x030e0000, 0x07c00000, 0x03386000, 0x03010000, 0x033e6000, 0x07003000, - 0x00208080, 0x0301a087, 0x0049401a, 0x04818a89, - 0x0049701a, 0x05818a9f, 0x06420008, 0x04818a80, - 0x0760031e, 0x00208080, 0x0049d01a, 0x07810a90, - 0x06420008, 0x04818a80, 0x0760031d, 0x00208080, - 0x02800a80, 0x00208070, 0x0301a087, 0x0049401a, - 0x06810a80, 0x01208060, 0x0301a087, 0x0049401a, - 0x06810a80, 0x06a00a2c, 0x033e6000, 0x07002200, - 0x069f0a9b, 0x03386000, 0x030e0000, 0x07c00000, - 0x06a00a2c, 0x02800a9b, 0xe2cab9fe, 0x02800004, - 0x00000000, 0x00008000, 0x00000703, 0x033d0aaa, - 0x070aaaaa, 0x013d1aaa, 0x070aaaaa, 0x050f801e, - 0x012fa8d1, 0x050f801e, 0x043fa889, 0x0700000f, - 0x03200005, 0x07420000, 0x050fb000, 0x050f801e, - 0x073fa011, 0x06000038, 0x050f801e, 0x053fa859, - 0x0700003a, 0x050fe000, 0x0481800e, 0x07840024, - 0x0595801d, 0x030e0011, 0x072e4200, 0x03800018, - 0x02920040, 0x068b0023, 0x028a0064, 0x0778aae7, - 0x06000001, 0x01a18536, 0x079a0053, 0x05908018, - 0x010170e1, 0x03640a17, 0x0482803d, 0x070ff017, - 0x02d0002a, 0x02800032, 0x02800034, 0x02800037, - 0x0380003a, 0x0280003d, 0x0280003d, 0x0280003d, - 0x0280003d, 0x03e00000, 0x03800018, 0x04908034, - 0x030160e1, 0x0380003f, 0x04908037, 0x030150e1, - 0x0380003f, 0x0590803a, 0x010140e1, 0x0380003f, - 0x060fc013, 0x06a006f4, 0x03800018, 0x014940e4, - 0x00a18043, 0x03800024, 0x02681e0d, 0x050fb0ff, - 0x04600875, 0x050f80ff, 0x053fa809, 0x06000001, - 0x05488003, 0x04818052, 0x0400800d, 0x0120d000, - 0x013e4000, 0x05000200, 0x06009075, 0x04002076, - 0x06a006e0, 0x07c00000, 0x000170e3, 0x050fe017, - 0x05878059, 0x0547f417, 0x0301f0ff, 0x01800235, - 0x054bc417, 0x050fb0ff, 0x03640aff, 0x04828061, - 0x0179fe17, 0x070fffff, 0x030750ff, 0x01800472, - 0x050fd017, 0x06a006f4, 0x0380001d, 0x00018098, - 0x07480018, 0x04818079, 0x05481018, 0x04818076, - 0x05482018, 0x04818073, 0x07483018, 0x04818070, - 0x002fb004, 0x030190cc, 0x0380007b, 0x012fb003, - 0x020190cb, 0x0380007b, 0x002fb002, 0x030190ca, - 0x0380007b, 0x002fb001, 0x030190c9, 0x0380007b, - 0x012fb000, 0x020190c8, 0x00017086, 0x01491017, - 0x07810084, 0x05a001a0, 0x07781817, 0x05000200, - 0x037c00ff, 0x05000200, 0x0581012e, 0x078b0084, - 0x03385000, 0x03020000, 0x07780017, 0x0043dc07, - 0x078181e2, 0x056c0478, 0x05810147, 0x056c0278, - 0x07810090, 0x05278000, 0x0180012e, 0x05278000, - 0x07483017, 0x04810131, 0x05482017, 0x04810138, - 0x0448b076, 0x0681811c, 0x06601875, 0x050f80ff, - 0x073fa022, 0x0600003e, 0x06000080, 0x05001081, - 0x05002082, 0x06003083, 0x00683e76, 0x076c0aff, - 0x048180a7, 0x05004084, 0x04602075, 0x050f80ff, - 0x022fa02a, 0x038000aa, 0x04602075, 0x050f80ff, - 0x032fa022, 0x04487076, 0x0581011b, 0x04604675, - 0x050f80ff, 0x032fa009, 0x03680600, 0x050010ff, - 0x056c02ff, 0x058180f3, 0x07000090, 0x074b0000, - 0x050fe000, 0x038600ee, 0x0560027b, 0x050f80ff, - 0x032fa009, 0x07f00000, 0x07601400, 0x050f80ff, - 0x032fa009, 0x07f00000, 0x074b0000, 0x070ff08d, - 0x0179feff, 0x070000ff, 0x055c0400, 0x078100f3, - 0x070ff017, 0x037a00ff, 0x05000400, 0x010170ff, - 0x04604075, 0x050f80ff, 0x034a8400, 0x034a8800, - 0x05780100, 0x070000ff, 0x055a0400, 0x074b0a00, - 0x077bff00, 0x070000ff, 0x032fa00a, 0x07f00000, - 0x04603e75, 0x050f80ff, 0x07300fff, 0x070fffff, - 0x032fa00a, 0x07f00000, 0x04604a75, 0x050f80ff, - 0x0700008d, 0x017a0100, 0x07ffff00, 0x032fa00a, - 0x07f00000, 0x04604c75, 0x050f80ff, 0x07300fff, - 0x070fffff, 0x032fa00a, 0x07f00000, 0x06604275, - 0x050f80ff, 0x06000013, 0x032fa00a, 0x0245a076, - 0x008001ea, 0x04603875, 0x050f80ff, 0x05002071, - 0x073fa00a, 0x06000001, 0x066c0001, 0x06818115, - 0x05482017, 0x04810115, 0x070ff09a, 0x017910ff, - 0x03088888, 0x057d10ff, 0x03088888, 0x04810115, - 0x070ff09a, 0x045a0201, 0x070ff09a, 0x045c0401, - 0x048180fd, 0x050020ff, 0x060000fb, 0x06483001, - 0x07818109, 0x00680e01, 0x055c0400, 0x0481010e, - 0x004a4001, 0x02400002, 0x046c0e02, 0x06818104, - 0x00800115, 0x040fd002, 0x052e400c, 0x040080fb, - 0x046a6108, 0x06009075, 0x04002076, 0x06a006e0, - 0x04603e75, 0x050f80ff, 0x053fa842, 0x06000045, - 0x048b0119, 0x02085013, 0x05278000, 0x02075013, - 0x060ff0fb, 0x00d0011f, 0x01800124, 0x00800126, - 0x01800128, 0x0080012a, 0x0080012c, 0x062d0020, - 0x0180012e, 0x062d0080, 0x0180012e, 0x052d0200, - 0x0180012e, 0x052d0800, 0x0180012e, 0x033d0000, - 0x06000002, 0x03920024, 0x0584801d, 0x02800023, - 0x040fe07f, 0x00860140, 0x05a00160, 0x0192012e, - 0x040fe07f, 0x07a68160, 0x0180012e, 0x0760187b, - 0x050f80ff, 0x032fa009, 0x0744f000, 0x0760187b, - 0x050f80ff, 0x032fa00a, 0x02800097, 0x052e400c, - 0x040080fb, 0x046aa108, 0x06009075, 0x04002076, - 0x06a006e0, 0x0180012e, 0x04278001, 0x05482017, - 0x04810154, 0x048b014a, 0x060ff086, 0x0349f0ff, - 0x0581807b, 0x07483017, 0x04810151, 0x050fd0ff, - 0x040fe07f, 0x07a68160, 0x0180012e, 0x05004084, - 0x05a00217, 0x0192012e, 0x070ff07d, 0x0450047c, - 0x056004ff, 0x050f80ff, 0x032fa009, 0x070ff000, - 0x00540479, 0x030790ff, 0x00800138, 0x04487076, - 0x04810168, 0x04605875, 0x050f80ff, 0x032fa009, - 0x060ff079, 0x01540400, 0x0180016a, 0x060ff079, - 0x0054047a, 0x05820199, 0x05810199, 0x070ff07d, - 0x0450047c, 0x050f80ff, 0x002fa819, 0x048b0170, - 0x02080001, 0x00081002, 0x01082003, 0x058b0174, - 0x04487076, 0x0481017a, 0x02385001, 0x03010000, - 0x0080017c, 0x03385000, 0x03010000, 0x03400078, - 0x070ff003, 0x04500479, 0x030790ff, 0x0340007e, - 0x0642007f, 0x05810199, 0x070ff07e, 0x050f80ff, - 0x032fa009, 0x050fe000, 0x02868198, 0x070ff07d, - 0x056002ff, 0x050f80ff, 0x032fa009, 0x0107d000, - 0x0186019a, 0x0560107d, 0x050f80ff, 0x032fa009, - 0x03681e00, 0x0550041b, 0x050f80ff, 0x032fa009, - 0x0107e000, 0x070ff07e, 0x01800184, 0x0307c000, - 0x07c00000, 0x052e400c, 0x040080fb, 0x046aa108, - 0x06009075, 0x04002076, 0x028006e0, 0x060ff075, - 0x008601e0, 0x060ff073, 0x00540419, 0x058201b7, - 0x058101c3, 0x050010ff, 0x00202010, 0x00642001, - 0x068281ab, 0x04002001, 0x040f8073, 0x024a3c02, - 0x017a02ff, 0x06000c98, 0x070fa0ff, 0x060ff002, - 0x06500073, 0x03610072, 0x045c0473, 0x078181c6, - 0x03073072, 0x018001c6, 0x036100ff, 0x050010ff, - 0x03610072, 0x00540473, 0x057dfeff, 0x07ffffff, - 0x01400203, 0x00202010, 0x01642003, 0x068281ab, - 0x05002003, 0x008001ab, 0x04002013, 0x04001013, - 0x01294000, 0x07480077, 0x078181e1, 0x06604e75, - 0x050f80ff, 0x053fa809, 0x06000001, 0x07f00000, - 0x07602203, 0x050f80ff, 0x053fa809, 0x06000001, - 0x05481003, 0x078181dd, 0x060ff002, 0x04500401, - 0x016480ff, 0x078281e1, 0x07440077, 0x040080fb, - 0x006b6108, 0x06009075, 0x07a006db, 0x018001e1, - 0x060ff002, 0x045c0401, 0x078181e1, 0x01294000, - 0x07c00000, 0x040fd075, 0x050fd017, 0x060ff086, - 0x077800ff, 0x07000060, 0x037c00ff, 0x07000060, - 0x078181e4, 0x04487076, 0x04810201, 0x07780017, - 0x0243d807, 0x06818201, 0x06601875, 0x050f80ff, - 0x073fa022, 0x0600003e, 0x0249a076, 0x078181fa, - 0x058b01f5, 0x04603e75, 0x050f80ff, 0x053fa842, - 0x06000045, 0x052e400c, 0x040080fb, 0x026b4108, - 0x06009075, 0x04002076, 0x06a006e0, 0x03800024, - 0x06601875, 0x050f80ff, 0x073fa022, 0x0600003e, - 0x052e400c, 0x04600875, 0x050f80ff, 0x053fa809, - 0x06000001, 0x05488003, 0x05810211, 0x0400d0fb, - 0x066a810d, 0x013e4000, 0x07000300, 0x03800024, - 0x040080fb, 0x066a8108, 0x06009075, 0x04002076, - 0x06a006e0, 0x03800024, 0x0240007f, 0x0742007e, - 0x050f807e, 0x032fa009, 0x050fe000, 0x02868231, - 0x070ff07d, 0x055c047b, 0x04810226, 0x0760007d, - 0x050f80ff, 0x032fa009, 0x050fe000, 0x02868226, - 0x070ff07b, 0x0107d0ff, 0x0560107d, 0x050f80ff, - 0x032fa009, 0x03681e00, 0x0450041c, 0x0107e0ff, - 0x050f80ff, 0x032fa009, 0x050fe000, 0x01860233, - 0x0307c000, 0x07c00000, 0x040fd075, 0x028006f4, - 0x0460081f, 0x050f80ff, 0x032fa039, 0x01021000, - 0x03020005, 0x01018006, 0x01683e21, 0x00d0023d, - 0x0080025d, 0x018002f5, 0x0280032f, 0x038003d8, - 0x00800261, 0x0080025d, 0x0080025d, 0x0080025d, + 0x04008051, 0x00610108, 0x0301a087, 0x0049401a, + 0x05818ac6, 0x0049701a, 0x04818adc, 0x06420008, + 0x05818abd, 0x0760031e, 0x00610108, 0x0049d01a, + 0x06810acd, 0x06420008, 0x05818abd, 0x0760031d, + 0x00610108, 0x03800abd, 0x00208070, 0x0301a087, + 0x0049401a, 0x07810abd, 0x01208060, 0x0301a087, + 0x0049401a, 0x07810abd, 0x06a00a68, 0x033e6000, + 0x07002200, 0x079f0ad8, 0x03386000, 0x030e0000, + 0x07c00000, 0x06a00a68, 0x03800ad8, 0x8e579a58, + 0x02800004, 0x00000000, 0x00008000, 0x0000070b, + 0x033d0aaa, 0x070aaaaa, 0x013d1aaa, 0x070aaaaa, + 0x050f801e, 0x012fa8d1, 0x050f801e, 0x043fa889, + 0x0700000f, 0x03200005, 0x07420000, 0x050fb000, + 0x050f801e, 0x073fa011, 0x06000038, 0x050f801e, + 0x053fa859, 0x0700003a, 0x050fe000, 0x0481800e, + 0x07840024, 0x0595801d, 0x030e0011, 0x072e4200, + 0x03800018, 0x02920040, 0x068b0023, 0x028a0064, + 0x0778aae7, 0x06000001, 0x00a1853d, 0x079a0053, + 0x05908018, 0x010170e1, 0x03640a17, 0x0482803d, + 0x070ff017, 0x02d0002a, 0x02800032, 0x02800034, + 0x02800037, 0x0380003a, 0x0280003d, 0x0280003d, + 0x0280003d, 0x0280003d, 0x03e00000, 0x03800018, + 0x04908034, 0x030160e1, 0x0380003f, 0x04908037, + 0x030150e1, 0x0380003f, 0x0590803a, 0x010140e1, + 0x0380003f, 0x060fc013, 0x06a006fb, 0x03800018, + 0x014940e4, 0x00a18043, 0x03800024, 0x02681e0d, + 0x050fb0ff, 0x04600875, 0x050f80ff, 0x053fa809, + 0x06000001, 0x05488003, 0x04818052, 0x0400800d, + 0x0120d000, 0x013e4000, 0x05000200, 0x06009075, + 0x04002076, 0x07a006e7, 0x07c00000, 0x000170e3, + 0x050fe017, 0x05878059, 0x0547f417, 0x0301f0ff, + 0x01800235, 0x054bc417, 0x050fb0ff, 0x03640aff, + 0x04828061, 0x0179fe17, 0x070fffff, 0x030750ff, + 0x01800472, 0x050fd017, 0x06a006fb, 0x0380001d, + 0x00018098, 0x07480018, 0x04818079, 0x05481018, + 0x04818076, 0x05482018, 0x04818073, 0x07483018, + 0x04818070, 0x002fb004, 0x030190cc, 0x0380007b, + 0x012fb003, 0x020190cb, 0x0380007b, 0x002fb002, + 0x030190ca, 0x0380007b, 0x002fb001, 0x030190c9, + 0x0380007b, 0x012fb000, 0x020190c8, 0x00017086, + 0x01491017, 0x07810084, 0x05a001a0, 0x07781817, + 0x05000200, 0x037c00ff, 0x05000200, 0x0581012e, + 0x078b0084, 0x03385000, 0x03020000, 0x07780017, + 0x0043dc07, 0x078181e2, 0x056c0478, 0x05810147, + 0x056c0278, 0x07810090, 0x05278000, 0x0180012e, + 0x05278000, 0x07483017, 0x04810131, 0x05482017, + 0x04810138, 0x0448b076, 0x0681811c, 0x06601875, + 0x050f80ff, 0x073fa022, 0x0600003e, 0x06000080, + 0x05001081, 0x05002082, 0x06003083, 0x00683e76, + 0x076c0aff, 0x048180a7, 0x05004084, 0x04602075, + 0x050f80ff, 0x022fa02a, 0x038000aa, 0x04602075, + 0x050f80ff, 0x032fa022, 0x04487076, 0x0581011b, + 0x04604675, 0x050f80ff, 0x032fa009, 0x03680600, + 0x050010ff, 0x056c02ff, 0x058180f3, 0x07000090, + 0x074b0000, 0x050fe000, 0x038600ee, 0x0560027b, + 0x050f80ff, 0x032fa009, 0x07f00000, 0x07601400, + 0x050f80ff, 0x032fa009, 0x07f00000, 0x074b0000, + 0x070ff08d, 0x0179feff, 0x070000ff, 0x055c0400, + 0x078100f3, 0x070ff017, 0x037a00ff, 0x05000400, + 0x010170ff, 0x04604075, 0x050f80ff, 0x034a8400, + 0x034a8800, 0x05780100, 0x070000ff, 0x055a0400, + 0x074b0a00, 0x077bff00, 0x070000ff, 0x032fa00a, + 0x07f00000, 0x04603e75, 0x050f80ff, 0x07300fff, + 0x070fffff, 0x032fa00a, 0x07f00000, 0x04604a75, + 0x050f80ff, 0x0700008d, 0x017a0100, 0x07ffff00, + 0x032fa00a, 0x07f00000, 0x04604c75, 0x050f80ff, + 0x07300fff, 0x070fffff, 0x032fa00a, 0x07f00000, + 0x06604275, 0x050f80ff, 0x06000013, 0x032fa00a, + 0x0245a076, 0x008001ea, 0x04603875, 0x050f80ff, + 0x05002071, 0x073fa00a, 0x06000001, 0x066c0001, + 0x06818115, 0x05482017, 0x04810115, 0x070ff09a, + 0x017910ff, 0x03088888, 0x057d10ff, 0x03088888, + 0x04810115, 0x070ff09a, 0x045a0201, 0x070ff09a, + 0x045c0401, 0x048180fd, 0x050020ff, 0x060000fb, + 0x06483001, 0x07818109, 0x00680e01, 0x055c0400, + 0x0481010e, 0x004a4001, 0x02400002, 0x046c0e02, + 0x06818104, 0x00800115, 0x040fd002, 0x052e400c, + 0x040080fb, 0x046a6108, 0x06009075, 0x04002076, + 0x07a006e7, 0x04603e75, 0x050f80ff, 0x053fa842, + 0x06000045, 0x048b0119, 0x02085013, 0x05278000, + 0x02075013, 0x060ff0fb, 0x00d0011f, 0x01800124, + 0x00800126, 0x01800128, 0x0080012a, 0x0080012c, + 0x062d0020, 0x0180012e, 0x062d0080, 0x0180012e, + 0x052d0200, 0x0180012e, 0x052d0800, 0x0180012e, + 0x033d0000, 0x06000002, 0x03920024, 0x0584801d, + 0x02800023, 0x040fe07f, 0x00860140, 0x05a00160, + 0x0192012e, 0x040fe07f, 0x07a68160, 0x0180012e, + 0x0760187b, 0x050f80ff, 0x032fa009, 0x0744f000, + 0x0760187b, 0x050f80ff, 0x032fa00a, 0x02800097, + 0x052e400c, 0x040080fb, 0x046aa108, 0x06009075, + 0x04002076, 0x07a006e7, 0x0180012e, 0x04278001, + 0x05482017, 0x04810154, 0x048b014a, 0x060ff086, + 0x0349f0ff, 0x0581807b, 0x07483017, 0x04810151, + 0x050fd0ff, 0x040fe07f, 0x07a68160, 0x0180012e, + 0x05004084, 0x05a00217, 0x0192012e, 0x070ff07d, + 0x0450047c, 0x056004ff, 0x050f80ff, 0x032fa009, + 0x070ff000, 0x00540479, 0x030790ff, 0x00800138, + 0x04487076, 0x04810168, 0x04605875, 0x050f80ff, + 0x032fa009, 0x060ff079, 0x01540400, 0x0180016a, + 0x060ff079, 0x0054047a, 0x05820199, 0x05810199, + 0x070ff07d, 0x0450047c, 0x050f80ff, 0x002fa819, + 0x048b0170, 0x02080001, 0x00081002, 0x01082003, + 0x058b0174, 0x04487076, 0x0481017a, 0x02385001, + 0x03010000, 0x0080017c, 0x03385000, 0x03010000, + 0x03400078, 0x070ff003, 0x04500479, 0x030790ff, + 0x0340007e, 0x0642007f, 0x05810199, 0x070ff07e, + 0x050f80ff, 0x032fa009, 0x050fe000, 0x02868198, + 0x070ff07d, 0x056002ff, 0x050f80ff, 0x032fa009, + 0x0107d000, 0x0186019a, 0x0560107d, 0x050f80ff, + 0x032fa009, 0x03681e00, 0x0550041b, 0x050f80ff, + 0x032fa009, 0x0107e000, 0x070ff07e, 0x01800184, + 0x0307c000, 0x07c00000, 0x052e400c, 0x040080fb, + 0x046aa108, 0x06009075, 0x04002076, 0x038006e7, + 0x060ff075, 0x008601e0, 0x060ff073, 0x00540419, + 0x058201b7, 0x058101c3, 0x050010ff, 0x00202010, + 0x00642001, 0x068281ab, 0x04002001, 0x040f8073, + 0x024a3c02, 0x017a02ff, 0x06000c98, 0x070fa0ff, + 0x060ff002, 0x06500073, 0x03610072, 0x045c0473, + 0x078181c6, 0x03073072, 0x018001c6, 0x036100ff, + 0x050010ff, 0x03610072, 0x00540473, 0x057dfeff, + 0x07ffffff, 0x01400203, 0x00202010, 0x01642003, + 0x068281ab, 0x05002003, 0x008001ab, 0x04002013, + 0x04001013, 0x01294000, 0x07480077, 0x078181e1, + 0x06604e75, 0x050f80ff, 0x053fa809, 0x06000001, + 0x07f00000, 0x07602203, 0x050f80ff, 0x053fa809, + 0x06000001, 0x05481003, 0x078181dd, 0x060ff002, + 0x04500401, 0x016480ff, 0x078281e1, 0x07440077, + 0x040080fb, 0x006b6108, 0x06009075, 0x07a006e2, + 0x018001e1, 0x060ff002, 0x045c0401, 0x078181e1, + 0x01294000, 0x07c00000, 0x040fd075, 0x050fd017, + 0x060ff086, 0x077800ff, 0x07000060, 0x037c00ff, + 0x07000060, 0x078181e4, 0x04487076, 0x04810201, + 0x07780017, 0x0243d807, 0x06818201, 0x06601875, + 0x050f80ff, 0x073fa022, 0x0600003e, 0x0249a076, + 0x078181fa, 0x058b01f5, 0x04603e75, 0x050f80ff, + 0x053fa842, 0x06000045, 0x052e400c, 0x040080fb, + 0x026b4108, 0x06009075, 0x04002076, 0x07a006e7, + 0x03800024, 0x06601875, 0x050f80ff, 0x073fa022, + 0x0600003e, 0x052e400c, 0x04600875, 0x050f80ff, + 0x053fa809, 0x06000001, 0x05488003, 0x05810211, + 0x0400d0fb, 0x066a810d, 0x013e4000, 0x07000300, + 0x03800024, 0x040080fb, 0x066a8108, 0x06009075, + 0x04002076, 0x07a006e7, 0x03800024, 0x0240007f, + 0x0742007e, 0x050f807e, 0x032fa009, 0x050fe000, + 0x02868231, 0x070ff07d, 0x055c047b, 0x04810226, + 0x0760007d, 0x050f80ff, 0x032fa009, 0x050fe000, + 0x02868226, 0x070ff07b, 0x0107d0ff, 0x0560107d, + 0x050f80ff, 0x032fa009, 0x03681e00, 0x0450041c, + 0x0107e0ff, 0x050f80ff, 0x032fa009, 0x050fe000, + 0x01860233, 0x0307c000, 0x07c00000, 0x040fd075, + 0x028006fb, 0x0460081f, 0x050f80ff, 0x032fa039, + 0x01021000, 0x03020005, 0x01018006, 0x01683e21, + 0x00d0023d, 0x0080025d, 0x018002f5, 0x0280032f, + 0x038003d8, 0x00800261, 0x0080025d, 0x0080025d, 0x0080025d, 0x0080025d, 0x0080025d, 0x0080025d, - 0x0080025d, 0x0080025d, 0x00800413, 0x0080025d, + 0x0080025d, 0x0080025d, 0x0080025d, 0x00800413, 0x0080025d, 0x0080025d, 0x0080025d, 0x0080025d, 0x0080025d, 0x0080025d, 0x0080025d, 0x0080025d, 0x0080025d, 0x0080025d, 0x0080025d, 0x0080025d, 0x0080025d, 0x0080025d, 0x0080025d, 0x0080025d, - 0x050fd0ff, 0x06a006f4, 0x03800018, 0x0380001d, - 0x01494021, 0x06818434, 0x0400701f, 0x05a00466, - 0x007a0101, 0x07060000, 0x04601c20, 0x050f80ff, - 0x053fa809, 0x07000003, 0x04484007, 0x048102b9, - 0x06485007, 0x048102b9, 0x04601020, 0x050f80ff, - 0x073fa009, 0x07000003, 0x0769ff06, 0x076c3006, - 0x04810289, 0x056cd006, 0x04810289, 0x04601c20, - 0x050f80ff, 0x053fa809, 0x07000003, 0x06780007, - 0x070000ff, 0x075a0005, 0x04601020, 0x050f80ff, - 0x053fa809, 0x07000003, 0x0469fe07, 0x05780105, - 0x07ffff00, 0x075a0005, 0x030b6005, 0x018002a3, + 0x0080025d, 0x050fd0ff, 0x06a006fb, 0x03800018, + 0x0380001d, 0x01494021, 0x06818434, 0x0400701f, + 0x05a00466, 0x007a0101, 0x07060000, 0x04601c20, + 0x050f80ff, 0x053fa809, 0x07000003, 0x04484007, + 0x048102b9, 0x06485007, 0x048102b9, 0x04601020, + 0x050f80ff, 0x073fa009, 0x07000003, 0x0769ff06, + 0x076c3006, 0x04810289, 0x056cd006, 0x04810289, 0x04601c20, 0x050f80ff, 0x053fa809, 0x07000003, - 0x00464007, 0x02465007, 0x07f00000, 0x04601c20, - 0x050f80ff, 0x053fa80a, 0x07000003, 0x07f00000, - 0x04601c20, 0x050f80ff, 0x053fa809, 0x07000003, - 0x07f00000, 0x07f00000, 0x04601620, 0x050f80ff, - 0x053fa809, 0x07000003, 0x05780105, 0x07ffff00, - 0x044b0407, 0x075a0005, 0x0460041f, 0x050f80ff, - 0x053fa80a, 0x06000002, 0x07f00000, 0x0460041f, - 0x050f80ff, 0x053fa809, 0x07000003, 0x07303000, - 0x06008280, 0x0460081f, 0x050f80ff, 0x053fa809, - 0x07000003, 0x007a0107, 0x03400000, 0x0460081f, - 0x050f80ff, 0x053fa80a, 0x07000003, 0x018002bb, - 0x07303000, 0x07008290, 0x03496021, 0x068182bf, - 0x06006013, 0x018002c6, 0x02400010, 0x048102bf, - 0x06006010, 0x0660361f, 0x050f80ff, 0x073fa00a, - 0x07000003, 0x072d0003, 0x039b82c6, 0x069382cb, + 0x06780007, 0x070000ff, 0x075a0005, 0x04601020, + 0x050f80ff, 0x053fa809, 0x07000003, 0x0469fe07, + 0x05780105, 0x07ffff00, 0x075a0005, 0x030b6005, + 0x018002a3, 0x04601c20, 0x050f80ff, 0x053fa809, + 0x07000003, 0x00464007, 0x02465007, 0x07f00000, + 0x04601c20, 0x050f80ff, 0x053fa80a, 0x07000003, + 0x07f00000, 0x04601c20, 0x050f80ff, 0x053fa809, + 0x07000003, 0x07f00000, 0x07f00000, 0x04601620, + 0x050f80ff, 0x053fa809, 0x07000003, 0x05780105, + 0x07ffff00, 0x044b0407, 0x075a0005, 0x0460041f, + 0x050f80ff, 0x053fa80a, 0x06000002, 0x07f00000, + 0x0460041f, 0x050f80ff, 0x053fa809, 0x07000003, + 0x07303000, 0x06008280, 0x0460081f, 0x050f80ff, + 0x053fa809, 0x07000003, 0x007a0107, 0x03400000, + 0x0460081f, 0x050f80ff, 0x053fa80a, 0x07000003, + 0x018002bb, 0x07303000, 0x07008290, 0x03496021, + 0x068182bf, 0x06006013, 0x018002c6, 0x02400010, + 0x048102bf, 0x06006010, 0x0660361f, 0x050f80ff, + 0x073fa00a, 0x07000003, 0x072d0003, 0x039b82c6, + 0x069382cb, 0x073aa000, 0x06000004, 0x010b1000, + 0x000b2001, 0x020b3002, 0x010b4003, 0x020b5004, + 0x030b6005, 0x010b7006, 0x069382e6, 0x07602818, + 0x050f80ff, 0x012fa809, 0x04002001, 0x0279ff01, + 0x070000ff, 0x007a0101, 0x07500000, 0x000b8001, + 0x04780102, 0x07ffff00, 0x020b9002, 0x009702e3, + 0x063aa020, 0x0700001e, 0x008002ec, 0x063aa020, + 0x06000016, 0x008002ec, 0x029782ea, 0x063aa020, + 0x07000012, 0x008002ec, 0x063aa020, 0x0600001a, + 0x070ff0f6, 0x03687eff, 0x068182ec, 0x06601820, + 0x050f10ff, 0x063f3008, 0x06000008, 0x062d0002, + 0x01800260, 0x04007013, 0x05a00466, 0x007a0101, + 0x07050000, 0x07303000, 0x07008890, 0x074d0005, + 0x06006013, 0x072d0003, 0x029b82fd, 0x04938302, 0x073aa000, 0x06000004, 0x010b1000, 0x000b2001, 0x020b3002, 0x010b4003, 0x020b5004, 0x030b6005, - 0x010b7006, 0x069382e6, 0x07602818, 0x050f80ff, + 0x010b7006, 0x04938316, 0x07602818, 0x050f80ff, 0x012fa809, 0x04002001, 0x0279ff01, 0x070000ff, 0x007a0101, 0x07500000, 0x000b8001, 0x04780102, - 0x07ffff00, 0x020b9002, 0x009702e3, 0x063aa020, - 0x0700001e, 0x008002ec, 0x063aa020, 0x06000016, - 0x008002ec, 0x029782ea, 0x063aa020, 0x07000012, - 0x008002ec, 0x063aa020, 0x0600001a, 0x070ff0f6, - 0x03687eff, 0x068182ec, 0x06601820, 0x050f10ff, - 0x063f3008, 0x06000008, 0x062d0002, 0x01800260, - 0x04007013, 0x05a00466, 0x007a0101, 0x07050000, - 0x07303000, 0x07008890, 0x074d0005, 0x06006013, - 0x072d0003, 0x029b82fd, 0x04938302, 0x073aa000, + 0x07ffff00, 0x020b9002, 0x06602220, 0x050f80ff, + 0x022fa019, 0x04001002, 0x04002013, 0x0660281f, + 0x050f80ff, 0x032fa00a, 0x05938328, 0x0500b01e, + 0x0660050b, 0x040f800b, 0x022fa01a, 0x073aa00c, + 0x06000016, 0x07300003, 0x06000008, 0x01800409, + 0x050f801e, 0x022fa01a, 0x073aa00c, 0x07000012, + 0x07300003, 0x06000008, 0x01800409, 0x04007013, + 0x05a00466, 0x007a0101, 0x03070000, 0x04602c1f, + 0x050f80ff, 0x073fa009, 0x06000004, 0x02499008, + 0x0781033c, 0x07303000, 0x07008890, 0x0280033e, + 0x07303000, 0x04008980, 0x05007003, 0x04601620, + 0x050f80ff, 0x073fa009, 0x07000003, 0x03499006, + 0x0781034e, 0x0379ff05, 0x070000ff, 0x06602220, + 0x050f80ff, 0x073fa009, 0x07000003, 0x07780006, + 0x07ffff00, 0x075a0005, 0x074d0005, 0x06006013, + 0x072d0003, 0x019b8350, 0x05938355, 0x073aa000, 0x06000004, 0x010b1000, 0x000b2001, 0x020b3002, 0x010b4003, 0x020b5004, 0x030b6005, 0x010b7006, - 0x04938316, 0x07602818, 0x050f80ff, 0x012fa809, + 0x0493836b, 0x07602818, 0x050f80ff, 0x012fa809, 0x04002001, 0x0279ff01, 0x070000ff, 0x007a0101, 0x07500000, 0x000b8001, 0x04780102, 0x07ffff00, - 0x020b9002, 0x06602220, 0x050f80ff, 0x022fa019, - 0x04001002, 0x04002013, 0x0660281f, 0x050f80ff, - 0x032fa00a, 0x05938328, 0x0500b01e, 0x0660050b, - 0x040f800b, 0x022fa01a, 0x073aa00c, 0x06000016, - 0x07300003, 0x06000008, 0x01800409, 0x050f801e, - 0x022fa01a, 0x073aa00c, 0x07000012, 0x07300003, - 0x06000008, 0x01800409, 0x04007013, 0x05a00466, - 0x007a0101, 0x03070000, 0x04602c1f, 0x050f80ff, - 0x073fa009, 0x06000004, 0x02499008, 0x0781033c, - 0x07303000, 0x07008890, 0x0280033e, 0x07303000, - 0x04008980, 0x05007003, 0x04601620, 0x050f80ff, - 0x073fa009, 0x07000003, 0x03499006, 0x0781034e, - 0x0379ff05, 0x070000ff, 0x06602220, 0x050f80ff, - 0x073fa009, 0x07000003, 0x07780006, 0x07ffff00, - 0x075a0005, 0x074d0005, 0x06006013, 0x072d0003, - 0x019b8350, 0x05938355, 0x073aa000, 0x06000004, - 0x010b1000, 0x000b2001, 0x020b3002, 0x010b4003, - 0x020b5004, 0x030b6005, 0x010b7006, 0x0493836b, + 0x020b9002, 0x0500b01e, 0x0660050b, 0x04601c20, + 0x050f80ff, 0x032fa021, 0x07f00000, 0x064b0002, + 0x02499008, 0x06810373, 0x0644c002, 0x054b0400, + 0x050040ff, 0x06698104, 0x0581838b, 0x06000013, + 0x04001013, 0x04780102, 0x06000010, 0x06003013, + 0x04004013, 0x06005013, 0x06006013, 0x04007013, + 0x00644015, 0x07820384, 0x04448002, 0x02205008, + 0x05938387, 0x040f800b, 0x03800388, 0x050f801e, + 0x032fa042, 0x04008015, 0x038003cc, 0x046c8004, + 0x0581839c, 0x01208018, 0x06780002, 0x07000003, + 0x0581839f, 0x06003001, 0x06000013, 0x04001013, + 0x04004013, 0x06005013, 0x05938399, 0x040f800b, + 0x0380039a, 0x050f801e, 0x022fa032, 0x038003cc, + 0x040fd01f, 0x06a006fb, 0x03800018, 0x0379ff03, + 0x070000ff, 0x04488002, 0x078103a6, 0x070ff003, + 0x04500408, 0x050080ff, 0x0379ff00, 0x070000ff, + 0x06489002, 0x068103ad, 0x070ff000, 0x04500408, + 0x050080ff, 0x07005003, 0x05004000, 0x06003001, + 0x06000013, 0x04001013, 0x049383b5, 0x040f800b, + 0x028003b6, 0x050f801e, 0x022fa032, 0x07f00000, + 0x06602420, 0x050f80ff, 0x022fa031, 0x07f00000, + 0x049383bf, 0x06600c0b, 0x038003c0, 0x07600c1e, + 0x050f80ff, 0x022fa032, 0x02680608, 0x078103cc, + 0x016408ff, 0x057dfeff, 0x07ffffff, 0x034000ff, + 0x045a0407, 0x010b40ff, 0x06600908, 0x0669f908, + 0x049383d0, 0x027a0008, 0x05000160, 0x038003d2, + 0x027a0008, 0x04000120, 0x070aa0ff, 0x024a2408, + 0x037a00ff, 0x06000080, 0x070000ff, 0x01800409, + 0x04007013, 0x05a00466, 0x007a0101, 0x07030000, + 0x07303000, 0x07008190, 0x06006013, 0x028003e0, + 0x072d0003, 0x009b83e0, 0x049383e5, 0x073aa000, + 0x06000004, 0x010b1000, 0x000b2001, 0x020b3002, + 0x010b4003, 0x020b5004, 0x030b6005, 0x010b7006, + 0x06938401, 0x07602818, 0x050f80ff, 0x012fa809, + 0x04002001, 0x0279ff01, 0x070000ff, 0x007a0101, + 0x07500000, 0x000b8001, 0x04780102, 0x07ffff00, + 0x020b9002, 0x073ff000, 0x06000007, 0x029703fe, + 0x037a00ff, 0x06000080, 0x070aa0ff, 0x062d0002, + 0x01800260, 0x073ff000, 0x07000003, 0x01970406, + 0x037a00ff, 0x06000080, 0x070aa0ff, 0x062d0002, + 0x01800260, 0x070ff0f6, 0x03687eff, 0x07818409, + 0x0793840f, 0x040f100b, 0x00800410, 0x050f101e, + 0x070f3000, 0x062d0002, 0x01800260, 0x073aa000, + 0x06000002, 0x072d0003, 0x029b8415, 0x070ff0f6, + 0x036830ff, 0x07818417, 0x070ff0f6, 0x036830ff, + 0x0681841a, 0x0660301f, 0x070f00ff, 0x0693842f, 0x07602818, 0x050f80ff, 0x012fa809, 0x04002001, 0x0279ff01, 0x070000ff, 0x007a0101, 0x07500000, - 0x000b8001, 0x04780102, 0x07ffff00, 0x020b9002, - 0x0500b01e, 0x0660050b, 0x04601c20, 0x050f80ff, - 0x032fa021, 0x07f00000, 0x064b0002, 0x02499008, - 0x06810373, 0x0644c002, 0x054b0400, 0x050040ff, - 0x06698104, 0x0581838b, 0x06000013, 0x04001013, - 0x04780102, 0x06000010, 0x06003013, 0x04004013, - 0x06005013, 0x06006013, 0x04007013, 0x00644015, - 0x07820384, 0x04448002, 0x02205008, 0x05938387, - 0x040f800b, 0x03800388, 0x050f801e, 0x032fa042, - 0x04008015, 0x038003cc, 0x046c8004, 0x0581839c, - 0x01208018, 0x06780002, 0x07000003, 0x0581839f, - 0x06003001, 0x06000013, 0x04001013, 0x04004013, - 0x06005013, 0x05938399, 0x040f800b, 0x0380039a, - 0x050f801e, 0x022fa032, 0x038003cc, 0x040fd01f, - 0x06a006f4, 0x03800018, 0x0379ff03, 0x070000ff, - 0x04488002, 0x078103a6, 0x070ff003, 0x04500408, - 0x050080ff, 0x0379ff00, 0x070000ff, 0x06489002, - 0x068103ad, 0x070ff000, 0x04500408, 0x050080ff, - 0x07005003, 0x05004000, 0x06003001, 0x06000013, - 0x04001013, 0x049383b5, 0x040f800b, 0x028003b6, - 0x050f801e, 0x022fa032, 0x07f00000, 0x06602420, - 0x050f80ff, 0x022fa031, 0x07f00000, 0x049383bf, - 0x06600c0b, 0x038003c0, 0x07600c1e, 0x050f80ff, - 0x022fa032, 0x02680608, 0x078103cc, 0x016408ff, - 0x057dfeff, 0x07ffffff, 0x034000ff, 0x045a0407, - 0x010b40ff, 0x06600908, 0x0669f908, 0x049383d0, - 0x027a0008, 0x05000160, 0x038003d2, 0x027a0008, - 0x04000120, 0x070aa0ff, 0x024a2408, 0x037a00ff, - 0x06000080, 0x070000ff, 0x01800409, 0x04007013, - 0x05a00466, 0x007a0101, 0x07030000, 0x07303000, - 0x07008190, 0x06006013, 0x028003e0, 0x072d0003, - 0x009b83e0, 0x049383e5, 0x073aa000, 0x06000004, - 0x010b1000, 0x000b2001, 0x020b3002, 0x010b4003, - 0x020b5004, 0x030b6005, 0x010b7006, 0x06938401, - 0x07602818, 0x050f80ff, 0x012fa809, 0x04002001, - 0x0279ff01, 0x070000ff, 0x007a0101, 0x07500000, - 0x000b8001, 0x04780102, 0x07ffff00, 0x020b9002, - 0x073ff000, 0x06000007, 0x029703fe, 0x037a00ff, - 0x06000080, 0x070aa0ff, 0x062d0002, 0x01800260, - 0x073ff000, 0x07000003, 0x01970406, 0x037a00ff, - 0x06000080, 0x070aa0ff, 0x062d0002, 0x01800260, - 0x070ff0f6, 0x03687eff, 0x07818409, 0x0793840f, - 0x040f100b, 0x00800410, 0x050f101e, 0x070f3000, - 0x062d0002, 0x01800260, 0x073aa000, 0x06000002, - 0x072d0003, 0x029b8415, 0x070ff0f6, 0x036830ff, - 0x07818417, 0x070ff0f6, 0x036830ff, 0x0681841a, - 0x0660301f, 0x070f00ff, 0x0693842f, 0x07602818, - 0x050f80ff, 0x012fa809, 0x04002001, 0x0279ff01, - 0x070000ff, 0x007a0101, 0x07500000, 0x060af001, - 0x04780102, 0x07ffff00, 0x020b0002, 0x07300c00, - 0x07000005, 0x00800431, 0x07300c00, 0x07000005, - 0x070f3000, 0x062d0002, 0x01800260, 0x05474021, - 0x04602620, 0x050f80ff, 0x053fa809, 0x07000003, - 0x06780007, 0x07ffff00, 0x0481043d, 0x03455021, - 0x04602a20, 0x050f80ff, 0x063fa019, 0x06000002, - 0x06003013, 0x01497021, 0x07818455, 0x04601620, - 0x050f80ff, 0x053fa809, 0x06000001, 0x0379ff03, - 0x070000ff, 0x07420003, 0x04600220, 0x050f80ff, - 0x012fa809, 0x040fe001, 0x0186045a, 0x03200009, - 0x0760141b, 0x050f80ff, 0x073fa009, 0x06000001, - 0x04008013, 0x0660181f, 0x050f80ff, 0x022fa04a, - 0x01800263, 0x012080c0, 0x0600901f, 0x05002021, - 0x06a006e0, 0x01800260, 0x06489076, 0x05810463, - 0x02200020, 0x00800464, 0x03200000, 0x06006075, - 0x0180046c, 0x07489021, 0x0581046a, 0x03200030, - 0x0080046b, 0x03200011, 0x0600601f, 0x07a005ac, - 0x05600406, 0x050f80ff, 0x053fa809, 0x06000002, - 0x07c00000, 0x04600875, 0x050f80ff, 0x032fa039, + 0x060af001, 0x04780102, 0x07ffff00, 0x020b0002, + 0x07300c00, 0x07000005, 0x00800431, 0x07300c00, + 0x07000005, 0x070f3000, 0x062d0002, 0x01800260, + 0x05474021, 0x04602620, 0x050f80ff, 0x053fa809, + 0x07000003, 0x06780007, 0x07ffff00, 0x0481043d, + 0x03455021, 0x04602a20, 0x050f80ff, 0x063fa019, + 0x06000002, 0x06003013, 0x01497021, 0x07818455, + 0x04601620, 0x050f80ff, 0x053fa809, 0x06000001, + 0x0379ff03, 0x070000ff, 0x07420003, 0x04600220, + 0x050f80ff, 0x012fa809, 0x040fe001, 0x0186045a, + 0x03200009, 0x0760141b, 0x050f80ff, 0x073fa009, + 0x06000001, 0x04008013, 0x0660181f, 0x050f80ff, + 0x022fa04a, 0x01800263, 0x012080c0, 0x0600901f, + 0x05002021, 0x07a006e7, 0x01800260, 0x06489076, + 0x05810463, 0x02200020, 0x00800464, 0x03200000, + 0x06006075, 0x0180046c, 0x07489021, 0x0581046a, + 0x03200030, 0x0080046b, 0x03200011, 0x0600601f, + 0x06a005b3, 0x05600406, 0x050f80ff, 0x053fa809, + 0x06000002, 0x07c00000, 0x04600875, 0x050f80ff, + 0x032fa039, 0x07780000, 0x02800040, 0x037c00ff, + 0x03800000, 0x0481047c, 0x02075013, 0x008004a4, 0x03076000, 0x0107b005, 0x01018006, 0x0448b076, - 0x0781847e, 0x06602475, 0x050f80ff, 0x053fa811, - 0x0700003c, 0x00077013, 0x050fe078, 0x0386849a, - 0x04a0049e, 0x0092049d, 0x060ff0fb, 0x00d00485, - 0x0080048a, 0x0180048d, 0x01800490, 0x01800493, - 0x01800496, 0x072d0030, 0x029b848a, 0x0280052f, - 0x072d00c0, 0x039b848d, 0x0280052f, 0x072d0300, - 0x039b8490, 0x0280052f, 0x072d0c00, 0x039b8493, - 0x0280052f, 0x033d0000, 0x07000003, 0x039b8496, - 0x0280052f, 0x040fd075, 0x050fd078, 0x06a006f4, - 0x0380001d, 0x048b049e, 0x03385000, 0x07030000, + 0x06818485, 0x06602475, 0x050f80ff, 0x053fa811, + 0x0700003c, 0x00077013, 0x050fe078, 0x028684a1, + 0x05a004a5, 0x009204a4, 0x060ff0fb, 0x00d0048c, + 0x00800491, 0x00800494, 0x00800497, 0x0180049a, + 0x0080049d, 0x072d0030, 0x029b8491, 0x03800536, + 0x072d00c0, 0x029b8494, 0x03800536, 0x072d0300, + 0x029b8497, 0x03800536, 0x072d0c00, 0x039b849a, + 0x03800536, 0x033d0000, 0x07000003, 0x029b849d, + 0x03800536, 0x040fd075, 0x050fd078, 0x06a006fb, + 0x0380001d, 0x058b04a5, 0x03385000, 0x07030000, 0x05600818, 0x050f80ff, 0x032fa009, 0x07f00000, - 0x054b0400, 0x0308a0ff, 0x029884ad, 0x04693e76, - 0x076c0aff, 0x068184ad, 0x07288200, 0x008004b0, + 0x054b0400, 0x0308a0ff, 0x039884b4, 0x04693e76, + 0x076c0aff, 0x078184b4, 0x07288200, 0x018004b7, 0x0179fe00, 0x070000ff, 0x010880ff, 0x0560087b, 0x050f80ff, 0x012fa809, 0x0609f001, 0x0448b076, - 0x048104df, 0x05601c7b, 0x050f80ff, 0x002fa819, - 0x02790076, 0x03010000, 0x068184d5, 0x02025001, - 0x06483001, 0x048104d5, 0x04600475, 0x050f80ff, + 0x048104e6, 0x05601c7b, 0x050f80ff, 0x002fa819, + 0x02790076, 0x03010000, 0x068184dc, 0x02025001, + 0x06483001, 0x048104dc, 0x04600475, 0x050f80ff, 0x053fa809, 0x06000002, 0x07f00000, 0x054b0405, 0x05780105, 0x07ffff00, 0x075a0005, 0x050fd005, 0x040fd07a, 0x06602475, 0x050f80ff, 0x053fa811, 0x0700003c, 0x06306002, 0x05000430, 0x04600475, - 0x050f80ff, 0x053fa812, 0x06000002, 0x008004df, + 0x050f80ff, 0x053fa812, 0x06000002, 0x008004e6, 0x02080002, 0x01081003, 0x064b0001, 0x00082001, 0x02083001, 0x02079001, 0x0207a001, 0x00084013, - 0x0207f013, 0x0280051f, 0x06485076, 0x07810500, + 0x0207f013, 0x02800526, 0x06485076, 0x06810507, 0x02465076, 0x06601875, 0x050f80ff, 0x073fa021, 0x0600003e, 0x070ff07d, 0x0450047c, 0x050f80ff, - 0x002fa819, 0x048b04ea, 0x02080001, 0x00081002, - 0x01082003, 0x03079003, 0x04487076, 0x048104f8, - 0x00498076, 0x01a18527, 0x04605875, 0x050f80ff, - 0x032fa009, 0x03083000, 0x018004f9, 0x0208307a, - 0x0340007e, 0x0642007f, 0x0681050e, 0x070ff07e, - 0x05a00184, 0x0092850e, 0x02800526, 0x078b0500, + 0x002fa819, 0x048b04f1, 0x02080001, 0x00081002, + 0x01082003, 0x03079003, 0x04487076, 0x058104ff, + 0x00498076, 0x01a1852e, 0x04605875, 0x050f80ff, + 0x032fa009, 0x03083000, 0x03800500, 0x0208307a, + 0x0340007e, 0x0642007f, 0x06810515, 0x070ff07e, + 0x05a00184, 0x00928515, 0x0380052d, 0x068b0507, 0x06601875, 0x050f80ff, 0x073fa041, 0x0600003e, - 0x07f00000, 0x04487076, 0x0781050c, 0x04605875, + 0x07f00000, 0x04487076, 0x06810513, 0x04605875, 0x050f80ff, 0x032fa009, 0x03083000, 0x00498076, - 0x01a18527, 0x06602875, 0x050f80ff, 0x073fa009, - 0x06000007, 0x0008400e, 0x04487076, 0x0681051f, - 0x0007100e, 0x068b0516, 0x04603e75, 0x050f80ff, - 0x053fa841, 0x06000045, 0x078b051b, 0x02385001, - 0x03010000, 0x03800522, 0x068b051f, 0x03385000, - 0x03010000, 0x04278001, 0x040fe07f, 0x02860526, + 0x01a1852e, 0x06602875, 0x050f80ff, 0x073fa009, + 0x06000007, 0x0008400e, 0x04487076, 0x06810526, + 0x0007100e, 0x078b051d, 0x04603e75, 0x050f80ff, + 0x053fa841, 0x06000045, 0x078b0522, 0x02385001, + 0x03010000, 0x02800529, 0x068b0526, 0x03385000, + 0x03010000, 0x04278001, 0x040fe07f, 0x0386052d, 0x01800160, 0x07c00000, 0x04094013, 0x03073072, 0x07440077, 0x040080fb, 0x006b6108, 0x06009075, - 0x07a006db, 0x07c00000, 0x00683e76, 0x06810534, - 0x0448d076, 0x068105df, 0x03800635, 0x07a006cf, - 0x0080049d, 0x06000013, 0x00201001, 0x00202002, - 0x0778aae7, 0x06000001, 0x06810585, 0x050fb000, - 0x070ff000, 0x03d0053f, 0x03800559, 0x02800554, - 0x0280054f, 0x0280054a, 0x03800544, 0x077800e7, - 0x06000001, 0x07810582, 0x072e7200, 0x030190cc, - 0x0280055d, 0x016880e7, 0x07810582, 0x042e7080, - 0x020190cb, 0x0280055d, 0x016820e7, 0x07810582, - 0x042e7020, 0x030190ca, 0x0280055d, 0x016808e7, - 0x07810582, 0x042e7008, 0x030190c9, 0x0280055d, - 0x016802e7, 0x07810582, 0x042e7002, 0x020190c8, - 0x07480077, 0x07810582, 0x03460077, 0x060ff075, - 0x03860582, 0x06003094, 0x0748a003, 0x05818582, + 0x07a006e2, 0x07c00000, 0x00683e76, 0x0681053b, + 0x0448d076, 0x068105e6, 0x0380063c, 0x06a006d6, + 0x008004a4, 0x06000013, 0x00201001, 0x00202002, + 0x0778aae7, 0x06000001, 0x0681058c, 0x050fb000, + 0x070ff000, 0x02d00546, 0x03800560, 0x0280055b, + 0x03800556, 0x02800551, 0x0380054b, 0x077800e7, + 0x06000001, 0x06810589, 0x072e7200, 0x030190cc, + 0x02800564, 0x016880e7, 0x06810589, 0x042e7080, + 0x020190cb, 0x02800564, 0x016820e7, 0x06810589, + 0x042e7020, 0x030190ca, 0x02800564, 0x016808e7, + 0x06810589, 0x042e7008, 0x030190c9, 0x02800564, + 0x016802e7, 0x06810589, 0x042e7002, 0x020190c8, + 0x07480077, 0x06810589, 0x03460077, 0x060ff075, + 0x02860589, 0x06003094, 0x0748a003, 0x04818589, 0x01683e03, 0x02203010, 0x01540403, 0x014a1a03, - 0x060ff073, 0x00540419, 0x0682058f, 0x07810595, - 0x050010ff, 0x01540403, 0x07820571, 0x06003001, + 0x060ff073, 0x00540419, 0x07820596, 0x0781059c, + 0x050010ff, 0x01540403, 0x07820578, 0x06003001, 0x034a3c03, 0x017a02ff, 0x06000c98, 0x040f8073, 0x070fa0ff, 0x070ff003, 0x06500073, 0x03610072, - 0x045c0473, 0x0481857c, 0x03073072, 0x05394000, + 0x045c0473, 0x04818583, 0x03073072, 0x05394000, 0x07000090, 0x07f00000, 0x06003094, 0x07489003, - 0x04818586, 0x03400000, 0x076c0a00, 0x05818539, - 0x07c00000, 0x060ff073, 0x00540419, 0x0681059b, - 0x07820599, 0x01683e03, 0x02203010, 0x01540403, - 0x014a1a03, 0x0280056d, 0x03610072, 0x00540473, - 0x057dfeff, 0x07ffffff, 0x034000ff, 0x0280056d, - 0x040fd075, 0x040fd073, 0x040fd019, 0x03800582, - 0x040fd075, 0x028006f4, 0x06604e75, 0x050f80ff, + 0x0581858d, 0x03400000, 0x076c0a00, 0x04818540, + 0x07c00000, 0x060ff073, 0x00540419, 0x068105a2, + 0x078205a0, 0x01683e03, 0x02203010, 0x01540403, + 0x014a1a03, 0x03800574, 0x03610072, 0x00540473, + 0x057dfeff, 0x07ffffff, 0x034000ff, 0x03800574, + 0x040fd075, 0x040fd073, 0x040fd019, 0x02800589, + 0x040fd075, 0x028006fb, 0x06604e75, 0x050f80ff, 0x053fa809, 0x06000001, 0x07f00000, 0x07602203, 0x050f80ff, 0x053fa809, 0x06000001, 0x05481003, - 0x05818582, 0x07440077, 0x040080fb, 0x006b6108, - 0x06009075, 0x07a006db, 0x03800582, 0x009785ba, + 0x04818589, 0x07440077, 0x040080fb, 0x006b6108, + 0x06009075, 0x07a006e2, 0x02800589, 0x009785c1, 0x07602418, 0x050f80ff, 0x012fa809, 0x06780001, 0x070000ff, 0x075a0000, 0x05602618, 0x050f80ff, 0x012fa809, 0x060ff001, 0x0569feff, 0x054b08ff, 0x075a0000, 0x05600418, 0x050f80ff, 0x012fa809, - 0x040fe007, 0x008685c1, 0x01204000, 0x028005d6, + 0x040fe007, 0x008685c8, 0x01204000, 0x038005dd, 0x05600e06, 0x050f80ff, 0x073fa009, 0x06000002, 0x07f00000, 0x064d0004, 0x00700104, 0x03010000, - 0x06780004, 0x07ff0000, 0x076c00ff, 0x058185cf, + 0x06780004, 0x07ff0000, 0x076c00ff, 0x048185d6, 0x00700104, 0x03010000, 0x064d0004, 0x05600e06, 0x050f80ff, 0x073fa00a, 0x06000002, 0x07f00000, 0x044b0804, 0x0279ff01, 0x0700ffff, 0x05602618, 0x050f80ff, 0x073fa009, 0x06000001, 0x0279ff02, 0x0700ffff, 0x07c00000, 0x04007075, 0x0448b076, - 0x068105fe, 0x02790076, 0x03010000, 0x058185e7, - 0x06483025, 0x048185fe, 0x06489076, 0x078105eb, - 0x03200030, 0x028005ec, 0x03200011, 0x06006075, + 0x07810605, 0x02790076, 0x03010000, 0x058185ee, + 0x06483025, 0x05818605, 0x06489076, 0x068105f2, + 0x03200030, 0x038005f3, 0x03200011, 0x06006075, 0x05a0046c, 0x007a0101, 0x07060000, 0x07303000, - 0x07008290, 0x02496076, 0x058185f6, 0x06006013, - 0x03800611, 0x02400010, 0x078105f6, 0x06006010, + 0x07008290, 0x02496076, 0x048185fd, 0x06006013, + 0x03800618, 0x02400010, 0x068105fd, 0x06006010, 0x06603675, 0x050f80ff, 0x073fa00a, 0x07000003, - 0x03800611, 0x0600007a, 0x02493076, 0x04818607, + 0x03800618, 0x0600007a, 0x02493076, 0x0481860e, 0x06602e75, 0x050f80ff, 0x032fa009, 0x060ff07a, 0x05500400, 0x070000ff, 0x06473076, 0x06602e75, 0x050f80ff, 0x032fa00a, 0x05a0045f, 0x007a0101, 0x03010000, 0x06303008, 0x05008000, 0x0600600e, - 0x072d0003, 0x019b8611, 0x04938616, 0x073a0000, + 0x072d0003, 0x019b8618, 0x0593861d, 0x073a0000, 0x06000001, 0x050a4000, 0x060a5001, 0x060a6002, 0x050a7003, 0x040a8004, 0x070a9005, 0x050ae006, - 0x0593862d, 0x07602818, 0x050f80ff, 0x012fa809, + 0x04938634, 0x07602818, 0x050f80ff, 0x012fa809, 0x04002001, 0x0279ff01, 0x070000ff, 0x007a0101, 0x07500000, 0x060af001, 0x04780102, 0x07ffff00, - 0x020b0002, 0x053079a0, 0x0700000f, 0x0280062f, - 0x053079a0, 0x0600000e, 0x06489076, 0x06810632, - 0x06446007, 0x060a0007, 0x062d0002, 0x0080049d, - 0x00683e76, 0x076c0aff, 0x07810677, 0x04007013, - 0x06489076, 0x0681063d, 0x03200030, 0x0280063e, + 0x020b0002, 0x053079a0, 0x0700000f, 0x03800636, + 0x053079a0, 0x0600000e, 0x06489076, 0x07810639, + 0x06446007, 0x060a0007, 0x062d0002, 0x008004a4, + 0x00683e76, 0x076c0aff, 0x0781067e, 0x04007013, + 0x06489076, 0x07810644, 0x03200030, 0x02800645, 0x03200011, 0x06006075, 0x05a0046c, 0x007a0101, 0x03070000, 0x04602c75, 0x050f80ff, 0x053fa809, - 0x06000001, 0x03499003, 0x0781064d, 0x07303000, - 0x07008890, 0x053079a0, 0x0700000c, 0x02800651, + 0x06000001, 0x03499003, 0x06810654, 0x07303000, + 0x07008890, 0x053079a0, 0x0700000c, 0x02800658, 0x07303000, 0x04008980, 0x04307920, 0x0700000c, - 0x074d0005, 0x06006013, 0x072d0003, 0x019b8653, - 0x04938658, 0x073a0000, 0x06000001, 0x050a4000, + 0x074d0005, 0x06006013, 0x072d0003, 0x019b865a, + 0x0593865f, 0x073a0000, 0x06000001, 0x050a4000, 0x060a5001, 0x060a6002, 0x050a7003, 0x040a8004, - 0x070a9005, 0x050ae006, 0x0593866f, 0x07602818, + 0x070a9005, 0x050ae006, 0x04938676, 0x07602818, 0x050f80ff, 0x012fa809, 0x04002001, 0x0279ff01, 0x070000ff, 0x007a0101, 0x07500000, 0x060af001, 0x04780102, 0x07ffff00, 0x020b0002, 0x007a0107, - 0x07000030, 0x03800671, 0x007a0107, 0x06000020, - 0x06489076, 0x07810674, 0x06446007, 0x060a0007, - 0x062d0002, 0x0080049d, 0x06602e75, 0x050f80ff, + 0x07000030, 0x03800678, 0x007a0107, 0x06000020, + 0x06489076, 0x0781067b, 0x06446007, 0x060a0007, + 0x062d0002, 0x008004a4, 0x06602e75, 0x050f80ff, 0x032fa009, 0x060ff07a, 0x05500400, 0x070000ff, 0x06473076, 0x06602e75, 0x050f80ff, 0x032fa00a, 0x04007075, 0x05a0045f, 0x007a0101, 0x03010000, 0x06303008, 0x07008800, 0x074d0005, 0x06600a75, 0x050f80ff, 0x073fa009, 0x07000003, 0x07f00000, 0x054b0406, 0x045a0404, 0x050040ff, 0x0600600e, - 0x072d0003, 0x009b8691, 0x05938696, 0x073aa000, + 0x072d0003, 0x009b8698, 0x0493869d, 0x073aa000, 0x06000004, 0x050a4000, 0x060a5001, 0x060a6002, 0x050a7003, 0x040a8004, 0x070a9005, 0x050ae006, - 0x049386ad, 0x07602818, 0x050f80ff, 0x012fa809, + 0x059386b4, 0x07602818, 0x050f80ff, 0x012fa809, 0x04002001, 0x0279ff01, 0x070000ff, 0x007a0101, 0x07500000, 0x060af001, 0x04780102, 0x07ffff00, - 0x020b0002, 0x04307920, 0x0700000f, 0x038006af, + 0x020b0002, 0x04307920, 0x0700000f, 0x028006b6, 0x04307920, 0x0600000e, 0x06307d20, 0x0600000e, - 0x0648c076, 0x048186b5, 0x04307920, 0x0600000e, - 0x06489076, 0x078106b8, 0x06446007, 0x060a0007, - 0x062d0002, 0x0080049d, 0x072d0003, 0x019b86bb, - 0x070ff0f6, 0x03687eff, 0x058186bd, 0x050f2074, - 0x06489076, 0x068106c4, 0x06446007, 0x060a0007, - 0x040070fb, 0x049386c8, 0x066a9007, 0x050f40ff, - 0x062d0002, 0x0080049d, 0x01208060, 0x0600901f, - 0x05002021, 0x028006e0, 0x040080fb, 0x066ae108, - 0x06009075, 0x04002076, 0x028006e0, 0x03201100, - 0x048486d9, 0x06420001, 0x048186d5, 0x028006f7, - 0x020e0008, 0x07c00000, 0x03201100, 0x058486ed, - 0x06420001, 0x048186dc, 0x028006f7, 0x050fd009, - 0x040fd008, 0x03201100, 0x058486e7, 0x06420001, - 0x048186e3, 0x028006f7, 0x007a0102, 0x04000101, + 0x0648c076, 0x048186bc, 0x04307920, 0x0600000e, + 0x06489076, 0x068106bf, 0x06446007, 0x060a0007, + 0x062d0002, 0x008004a4, 0x072d0003, 0x009b86c2, + 0x070ff0f6, 0x03687eff, 0x048186c4, 0x050f2074, + 0x06489076, 0x068106cb, 0x06446007, 0x060a0007, + 0x040070fb, 0x059386cf, 0x066a9007, 0x050f40ff, + 0x062d0002, 0x008004a4, 0x01208060, 0x0600901f, + 0x05002021, 0x038006e7, 0x040080fb, 0x066ae108, + 0x06009075, 0x04002076, 0x038006e7, 0x03201100, + 0x048486e0, 0x06420001, 0x048186dc, 0x038006ff, + 0x020e0008, 0x07c00000, 0x03201100, 0x048486f4, + 0x06420001, 0x048186e3, 0x038006ff, 0x050fd009, + 0x040fd008, 0x03201100, 0x058486ee, 0x06420001, + 0x048186ea, 0x038006ff, 0x007a0102, 0x04000101, 0x05600809, 0x050f80ff, 0x073fa00a, 0x06000001, - 0x020e0008, 0x068406f1, 0x030e0009, 0x07c00000, + 0x020e0008, 0x068406f8, 0x030e0009, 0x07c00000, 0x01011009, 0x052e4300, 0x07c00000, 0x052e400f, - 0x01208090, 0x038006d4, 0x070fc0ff, 0x040f8013, - 0x032fa009, 0x038006fa, 0x05008006, 0x05007005, - 0x06006004, 0x07005003, 0x04004002, 0x06003001, - 0x07c00000, 0xf06a0be7, 0x02800004, 0x00000000, - 0x0000a000, 0x00000621, 0x033d0aaa, 0x070aaaaa, - 0x013d1aaa, 0x070aaaaa, 0x008c041c, 0x048e04cb, - 0x058d04d7, 0x028f053e, 0x02910013, 0x040f7029, - 0x02860013, 0x066c001f, 0x07810559, 0x066c0a1f, - 0x06810586, 0x040f702f, 0x0386001d, 0x06000010, - 0x050fb000, 0x066c0079, 0x068105c7, 0x0398001d, - 0x03400000, 0x076c0a00, 0x04818016, 0x07960021, - 0x05998021, 0x06a0009e, 0x02800008, 0x050f7012, - 0x04a683f7, 0x04908008, 0x030150e1, 0x06780015, - 0x07fffff0, 0x06810064, 0x0079fe15, 0x031fffff, - 0x030160ff, 0x064bd415, 0x03d0002d, 0x0180019f, - 0x038000d4, 0x03800035, 0x02800040, 0x0380004b, - 0x03800056, 0x02800076, 0x02800076, 0x040f7025, - 0x01868039, 0x02026016, 0x0280003d, 0x06600025, - 0x050f80ff, 0x073fa00a, 0x0600000b, 0x02025016, - 0x02400029, 0x03800078, 0x050f7021, 0x01868044, - 0x00022016, 0x03800048, 0x07600021, 0x050f80ff, - 0x073fa00a, 0x0600000b, 0x00021016, 0x02400029, - 0x03800078, 0x040f7023, 0x0086804f, 0x00024016, - 0x03800053, 0x06600023, 0x050f80ff, 0x073fa00a, - 0x0600000b, 0x02023016, 0x02400029, 0x03800078, - 0x04600816, 0x050f80ff, 0x012fa839, 0x06780004, - 0x07ffff00, 0x037c00ff, 0x05000700, 0x06810062, - 0x0448e001, 0x04818062, 0x07a000bb, 0x03800078, - 0x040fd016, 0x03800078, 0x0279f015, 0x07ffffff, - 0x04818076, 0x060ff015, 0x03d00069, 0x03800071, - 0x02800073, 0x02800076, 0x02800076, 0x02800076, - 0x02800076, 0x02800076, 0x02800076, 0x03e00000, - 0x02800008, 0x04908073, 0x010140e1, 0x03800078, - 0x060fc010, 0x06a00619, 0x02800008, 0x072e4800, - 0x03016011, 0x0186807e, 0x060fc010, 0x07c00000, - 0x00011010, 0x0647f016, 0x072d000c, 0x009b8080, - 0x04600816, 0x050f80ff, 0x012fa839, 0x0249f001, - 0x04818097, 0x06780004, 0x07ffff00, 0x037c00ff, - 0x07000300, 0x0481809b, 0x0448e001, 0x0481809b, - 0x0079c101, 0x07ffffff, 0x007a0b01, 0x03800000, - 0x04600816, 0x050f80ff, 0x012fa80a, 0x062d0008, - 0x038000bb, 0x062d0008, 0x00011016, 0x052e4c00, - 0x07c00000, 0x062d0008, 0x040fd016, 0x07c00000, - 0x030160eb, 0x0249f016, 0x0481807f, 0x04600816, - 0x050f80ff, 0x012fa839, 0x01494005, 0x068100b6, - 0x06783f01, 0x03800060, 0x027c0501, 0x02800020, - 0x0581809c, 0x040f7025, 0x018680af, 0x02026016, - 0x028000b3, 0x06600025, 0x050f80ff, 0x073fa00a, - 0x0600000b, 0x02025016, 0x02400029, 0x07c00000, - 0x06783f01, 0x03800060, 0x007c0b01, 0x03800000, - 0x0581809c, 0x06601807, 0x070030ff, 0x050f80ff, - 0x012fa809, 0x050f8003, 0x073fa00a, 0x0600000b, - 0x040f7001, 0x038600c9, 0x04600201, 0x050f80ff, - 0x073fa00a, 0x0600000b, 0x07c00000, 0x050f702e, - 0x008680ce, 0x0002e016, 0x0202f016, 0x028000d3, - 0x0760002e, 0x050f80ff, 0x073fa00a, 0x0600000b, - 0x0002e016, 0x07c00000, 0x0430e004, 0x03080000, - 0x06601216, 0x050f80ff, 0x073fa011, 0x07000005, - 0x07f00000, 0x0660000b, 0x050f80ff, 0x022fa019, - 0x0700c000, 0x0279ff02, 0x0700ffff, 0x00017002, - 0x0760280a, 0x050f80ff, 0x012fa809, 0x0079fe01, - 0x0700ffff, 0x055c0417, 0x0781818d, 0x0400d010, - 0x0548e00c, 0x078100ed, 0x0245600e, 0x0548400c, - 0x078100f5, 0x07300000, 0x05001000, 0x04602c16, - 0x050f80ff, 0x032fa00a, 0x0644900e, 0x0560100a, - 0x050f80ff, 0x032fa039, 0x02015002, 0x064b0015, - 0x0379ff03, 0x070000ff, 0x01018003, 0x05420418, - 0x07818100, 0x0045700e, 0x0179fe06, 0x070000ff, - 0x0700f0ff, 0x06006010, 0x04007010, 0x0760280a, + 0x04008013, 0x026b2108, 0x038006db, 0x070fc0ff, + 0x040f8013, 0x032fa009, 0x00800702, 0x05008006, + 0x05007005, 0x06006004, 0x07005003, 0x04004002, + 0x06003001, 0x07c00000, 0xd3228c85, 0x02800004, + 0x00000000, 0x0000a000, 0x0000062a, 0x033d0aaa, + 0x070aaaaa, 0x013d1aaa, 0x070aaaaa, 0x008c041c, + 0x058e04cc, 0x058d04d8, 0x038f0541, 0x02910013, + 0x040f7029, 0x02860013, 0x066c001f, 0x0781055c, + 0x066c0a1f, 0x0781058b, 0x040f702f, 0x0386001d, + 0x06000010, 0x050fb000, 0x066c0079, 0x068105ce, + 0x0398001d, 0x03400000, 0x076c0a00, 0x04818016, + 0x07960021, 0x05998021, 0x06a0009e, 0x02800008, + 0x050f7012, 0x04a683f7, 0x04908008, 0x030150e1, + 0x06780015, 0x07fffff0, 0x06810064, 0x0079fe15, + 0x031fffff, 0x030160ff, 0x064bd415, 0x03d0002d, + 0x0180019f, 0x038000d4, 0x03800035, 0x02800040, + 0x0380004b, 0x03800056, 0x02800076, 0x02800076, + 0x040f7025, 0x01868039, 0x02026016, 0x0280003d, + 0x06600025, 0x050f80ff, 0x073fa00a, 0x0600000b, + 0x02025016, 0x02400029, 0x03800078, 0x050f7021, + 0x01868044, 0x00022016, 0x03800048, 0x07600021, + 0x050f80ff, 0x073fa00a, 0x0600000b, 0x00021016, + 0x02400029, 0x03800078, 0x040f7023, 0x0086804f, + 0x00024016, 0x03800053, 0x06600023, 0x050f80ff, + 0x073fa00a, 0x0600000b, 0x02023016, 0x02400029, + 0x03800078, 0x04600816, 0x050f80ff, 0x012fa839, + 0x06780004, 0x07ffff00, 0x037c00ff, 0x05000700, + 0x06810062, 0x0448e001, 0x04818062, 0x07a000bb, + 0x03800078, 0x040fd016, 0x03800078, 0x0279f015, + 0x07ffffff, 0x04818076, 0x060ff015, 0x03d00069, + 0x03800071, 0x02800073, 0x02800076, 0x02800076, + 0x02800076, 0x02800076, 0x02800076, 0x02800076, + 0x03e00000, 0x02800008, 0x04908073, 0x010140e1, + 0x03800078, 0x060fc010, 0x07a00622, 0x02800008, + 0x072e4800, 0x03016011, 0x0186807e, 0x060fc010, + 0x07c00000, 0x00011010, 0x0647f016, 0x072d000c, + 0x009b8080, 0x04600816, 0x050f80ff, 0x012fa839, + 0x0249f001, 0x04818097, 0x06780004, 0x07ffff00, + 0x037c00ff, 0x07000300, 0x0481809b, 0x0448e001, + 0x0481809b, 0x0079c101, 0x07ffffff, 0x007a0b01, + 0x03800000, 0x04600816, 0x050f80ff, 0x012fa80a, + 0x062d0008, 0x038000bb, 0x062d0008, 0x00011016, + 0x052e4c00, 0x07c00000, 0x062d0008, 0x040fd016, + 0x07c00000, 0x030160eb, 0x0249f016, 0x0481807f, + 0x04600816, 0x050f80ff, 0x012fa839, 0x01494005, + 0x068100b6, 0x06783f01, 0x03800060, 0x027c0501, + 0x02800020, 0x0581809c, 0x040f7025, 0x018680af, + 0x02026016, 0x028000b3, 0x06600025, 0x050f80ff, + 0x073fa00a, 0x0600000b, 0x02025016, 0x02400029, + 0x07c00000, 0x06783f01, 0x03800060, 0x007c0b01, + 0x03800000, 0x0581809c, 0x06601807, 0x070030ff, + 0x050f80ff, 0x012fa809, 0x050f8003, 0x073fa00a, + 0x0600000b, 0x040f7001, 0x038600c9, 0x04600201, + 0x050f80ff, 0x073fa00a, 0x0600000b, 0x07c00000, + 0x050f702e, 0x008680ce, 0x0002e016, 0x0202f016, + 0x028000d3, 0x0760002e, 0x050f80ff, 0x073fa00a, + 0x0600000b, 0x0002e016, 0x07c00000, 0x0430e004, + 0x03080000, 0x06601216, 0x050f80ff, 0x073fa011, + 0x07000005, 0x07f00000, 0x0660000b, 0x050f80ff, + 0x022fa019, 0x0700c000, 0x0279ff02, 0x0700ffff, + 0x00017002, 0x0760280a, 0x050f80ff, 0x012fa809, + 0x0079fe01, 0x0700ffff, 0x055c0417, 0x0781818d, + 0x0400d010, 0x0548e00c, 0x078100ed, 0x0245600e, + 0x0548400c, 0x078100f5, 0x07300000, 0x05001000, + 0x04602c16, 0x050f80ff, 0x032fa00a, 0x0644900e, + 0x0560100a, 0x050f80ff, 0x032fa039, 0x02015002, + 0x064b0015, 0x0379ff03, 0x070000ff, 0x01018003, + 0x05420418, 0x07818100, 0x0045700e, 0x0179fe06, + 0x070000ff, 0x0700f0ff, 0x06006010, 0x04007010, + 0x0760280a, 0x050f80ff, 0x073fa009, 0x06000004, + 0x07f00000, 0x064b8408, 0x040080ce, 0x04500408, 0x050f80ff, 0x073fa009, 0x06000004, 0x07f00000, - 0x064b8408, 0x040080ce, 0x04500408, 0x050f80ff, - 0x073fa009, 0x06000004, 0x07f00000, 0x04603216, - 0x050f80ff, 0x063fa02a, 0x06000002, 0x0769ff00, - 0x076c9000, 0x0481011a, 0x076cd400, 0x0781811b, - 0x0444b00e, 0x0368060f, 0x01d0011d, 0x0080013e, - 0x01800139, 0x00800140, 0x01800121, 0x056cea00, - 0x0781818d, 0x0748300f, 0x05810135, 0x0560260a, - 0x050f80ff, 0x073fa009, 0x06000002, 0x06005010, - 0x06006010, 0x04602616, 0x050f80ff, 0x063fa01a, - 0x06000002, 0x07f00000, 0x0760180a, 0x050f80ff, - 0x053fa812, 0x06000002, 0x07f00000, 0x027a030d, - 0x03080000, 0x0444b00e, 0x01800139, 0x007a010e, - 0x07001800, 0x076c3000, 0x03a182e4, 0x07818172, - 0x0220f002, 0x01800147, 0x0120d081, 0x007a010e, - 0x05001000, 0x076c3000, 0x03a182e4, 0x07818172, - 0x0220f004, 0x0548400c, 0x0581014e, 0x0220f00e, - 0x0444100d, 0x0748600c, 0x0581014e, 0x0444200d, - 0x056cea00, 0x05810153, 0x0548700c, 0x05810153, - 0x0644900d, 0x024a1815, 0x004a2c15, 0x04500415, - 0x070030ff, 0x0700000f, 0x017a0100, 0x05004000, - 0x0400100e, 0x05304000, 0x07000030, 0x04002010, - 0x0600500d, 0x0700600a, 0x0400700b, 0x05008017, - 0x06600616, 0x050f80ff, 0x022fa04a, 0x0448b00e, - 0x05818056, 0x050f7027, 0x0286816b, 0x00028016, - 0x0180016f, 0x07600027, 0x050f80ff, 0x073fa00a, - 0x0600000b, 0x00027016, 0x02400029, 0x03800078, - 0x040fd016, 0x050fd00a, 0x0560100a, 0x050f80ff, - 0x032fa009, 0x05780100, 0x07ffff00, 0x017a0700, - 0x06000001, 0x050f80ff, 0x032fa00a, 0x07f00000, - 0x0760140a, 0x050f80ff, 0x022fa019, 0x05780100, - 0x07ffff00, 0x076a0500, 0x00202001, 0x0560260a, - 0x050f80ff, 0x012fa809, 0x06003010, 0x0760140a, - 0x050f80ff, 0x032fa022, 0x00800197, 0x050fd00a, - 0x0560100a, 0x050f80ff, 0x032fa009, 0x0379ff00, - 0x0380ffff, 0x0145b000, 0x0560100a, 0x050f80ff, - 0x032fa00a, 0x07303000, 0x07000030, 0x04600e16, - 0x050f80ff, 0x053fa80a, 0x06000001, 0x06a003e6, - 0x03800078, 0x06600616, 0x050f80ff, 0x012fa841, - 0x0079fe01, 0x070000ff, 0x070090ff, 0x0400d010, - 0x0600a007, 0x0400b008, 0x0560100a, 0x050f80ff, - 0x032fa009, 0x0769ff00, 0x0660000b, 0x050f80ff, - 0x073fa009, 0x07000006, 0x07f00000, 0x04602c16, - 0x050f80ff, 0x053fa809, 0x0600000b, 0x07479017, - 0x056c0e09, 0x058101bd, 0x076c0c09, 0x058101bd, - 0x050fd009, 0x06a00619, 0x03800078, 0x05601c0a, - 0x050f80ff, 0x053fa809, 0x06000007, 0x07f00000, - 0x074b000f, 0x0748300f, 0x058101ca, 0x07446000, - 0x04602c16, 0x050f80ff, 0x053fa80a, 0x0600000b, - 0x0368060f, 0x01d001cc, 0x008001d0, 0x0180024b, - 0x00800208, 0x0180027d, 0x0748f00f, 0x0581027b, - 0x0530e042, 0x02080002, 0x0578400f, 0x06000020, - 0x017c40ff, 0x06000020, 0x068181dc, 0x0748500c, - 0x048101dc, 0x03459017, 0x04602c16, 0x050f80ff, - 0x053fa80a, 0x0600000b, 0x0569800f, 0x078181e8, - 0x0548d00f, 0x068181e5, 0x0644a00e, 0x056c0e09, - 0x058101f3, 0x0080027f, 0x050010ff, 0x046c8001, - 0x078181fa, 0x056c0e09, 0x058101f3, 0x0560200a, - 0x050f80ff, 0x012fa809, 0x04780101, 0x07ffff00, - 0x0481027f, 0x01498017, 0x058101f6, 0x0644900e, - 0x06300001, 0x04000410, 0x05a00295, 0x03800035, - 0x026d0001, 0x048101fd, 0x0180027d, 0x0530e042, - 0x02080002, 0x01498017, 0x04810202, 0x0644900e, + 0x04603216, 0x050f80ff, 0x063fa02a, 0x06000002, + 0x0769ff00, 0x076c9000, 0x0481011a, 0x076cd400, + 0x0781811b, 0x0444b00e, 0x0368060f, 0x01d0011d, + 0x0080013e, 0x01800139, 0x00800140, 0x01800121, + 0x056cea00, 0x0781818d, 0x0748300f, 0x05810135, + 0x0560260a, 0x050f80ff, 0x073fa009, 0x06000002, + 0x06005010, 0x06006010, 0x04602616, 0x050f80ff, + 0x063fa01a, 0x06000002, 0x07f00000, 0x0760180a, + 0x050f80ff, 0x053fa812, 0x06000002, 0x07f00000, + 0x027a030d, 0x03080000, 0x0444b00e, 0x01800139, + 0x007a010e, 0x07001800, 0x076c3000, 0x03a182e4, + 0x07818172, 0x0220f002, 0x01800147, 0x0120d081, + 0x007a010e, 0x05001000, 0x076c3000, 0x03a182e4, + 0x07818172, 0x0220f004, 0x0548400c, 0x0581014e, + 0x0220f00e, 0x0444100d, 0x0748600c, 0x0581014e, + 0x0444200d, 0x056cea00, 0x05810153, 0x0548700c, + 0x05810153, 0x0644900d, 0x024a1815, 0x004a2c15, + 0x04500415, 0x070030ff, 0x0700000f, 0x017a0100, + 0x05004000, 0x0400100e, 0x05304000, 0x07000030, + 0x04002010, 0x0600500d, 0x0700600a, 0x0400700b, + 0x05008017, 0x06600616, 0x050f80ff, 0x022fa04a, + 0x0448b00e, 0x05818056, 0x050f7027, 0x0286816b, + 0x00028016, 0x0180016f, 0x07600027, 0x050f80ff, + 0x073fa00a, 0x0600000b, 0x00027016, 0x02400029, + 0x03800078, 0x040fd016, 0x050fd00a, 0x0560100a, + 0x050f80ff, 0x032fa009, 0x05780100, 0x07ffff00, + 0x017a0700, 0x06000001, 0x050f80ff, 0x032fa00a, + 0x07f00000, 0x0760140a, 0x050f80ff, 0x022fa019, + 0x05780100, 0x07ffff00, 0x076a0500, 0x00202001, + 0x0560260a, 0x050f80ff, 0x012fa809, 0x06003010, + 0x0760140a, 0x050f80ff, 0x032fa022, 0x00800197, + 0x050fd00a, 0x0560100a, 0x050f80ff, 0x032fa009, + 0x0379ff00, 0x0380ffff, 0x0145b000, 0x0560100a, + 0x050f80ff, 0x032fa00a, 0x07303000, 0x07000030, + 0x04600e16, 0x050f80ff, 0x053fa80a, 0x06000001, + 0x06a003e6, 0x03800078, 0x06600616, 0x050f80ff, + 0x012fa841, 0x0079fe01, 0x070000ff, 0x070090ff, + 0x0400d010, 0x0600a007, 0x0400b008, 0x0560100a, + 0x050f80ff, 0x032fa009, 0x0769ff00, 0x0660000b, + 0x050f80ff, 0x073fa009, 0x07000006, 0x07f00000, + 0x04602c16, 0x050f80ff, 0x053fa809, 0x0600000b, + 0x07479017, 0x056c0e09, 0x058101bd, 0x076c0c09, + 0x058101bd, 0x050fd009, 0x07a00622, 0x03800078, + 0x05601c0a, 0x050f80ff, 0x053fa809, 0x06000007, + 0x07f00000, 0x074b000f, 0x0748300f, 0x058101ca, + 0x07446000, 0x04602c16, 0x050f80ff, 0x053fa80a, + 0x0600000b, 0x0368060f, 0x01d001cc, 0x008001d0, + 0x0180024b, 0x00800208, 0x0180027d, 0x0748f00f, + 0x0581027b, 0x0530e042, 0x02080002, 0x0578400f, + 0x06000020, 0x017c40ff, 0x06000020, 0x068181dc, + 0x0748500c, 0x048101dc, 0x03459017, 0x04602c16, + 0x050f80ff, 0x053fa80a, 0x0600000b, 0x0569800f, + 0x078181e8, 0x0548d00f, 0x068181e5, 0x0644a00e, + 0x056c0e09, 0x058101f3, 0x0080027f, 0x050010ff, + 0x046c8001, 0x078181fa, 0x056c0e09, 0x058101f3, + 0x0560200a, 0x050f80ff, 0x012fa809, 0x04780101, + 0x07ffff00, 0x0481027f, 0x01498017, 0x058101f6, + 0x0644900e, 0x06300001, 0x04000410, 0x05a00295, + 0x03800035, 0x026d0001, 0x048101fd, 0x0180027d, + 0x0530e042, 0x02080002, 0x01498017, 0x04810202, + 0x0644900e, 0x05a002b2, 0x06818279, 0x07300003, + 0x05000430, 0x05a00295, 0x03800056, 0x0630e445, + 0x02080002, 0x056c0e09, 0x0681827f, 0x0748f00f, + 0x04810215, 0x0569800f, 0x0781827d, 0x0548d00f, + 0x07818217, 0x007a010e, 0x06000010, 0x0180021d, + 0x0246a00e, 0x0180021d, 0x0246a00e, 0x0748500f, + 0x0581021d, 0x0748500c, 0x0581021d, 0x03459017, + 0x0349a017, 0x07818224, 0x04602c16, 0x050f80ff, + 0x053fa80a, 0x0600000b, 0x0180022e, 0x0747a017, + 0x05001017, 0x0760220a, 0x050f80ff, 0x073fa009, + 0x06000001, 0x07f00000, 0x04602c16, 0x050f80ff, + 0x012fa812, 0x01498017, 0x05810233, 0x0644900e, + 0x0279ff0e, 0x07ffffeb, 0x0448700e, 0x04810245, + 0x06601216, 0x050f80ff, 0x012fa809, 0x07f00000, + 0x04600201, 0x050f80ff, 0x012fa809, 0x07f00000, + 0x06601401, 0x050f80ff, 0x012fa809, 0x060ff001, + 0x075a00ff, 0x04810245, 0x0279ff0e, 0x07ffffeb, 0x05a002b2, 0x06818279, 0x07300003, 0x05000430, - 0x05a00295, 0x03800056, 0x0630e445, 0x02080002, - 0x056c0e09, 0x0681827f, 0x0748f00f, 0x04810215, - 0x0569800f, 0x0781827d, 0x0548d00f, 0x07818217, - 0x007a010e, 0x06000010, 0x0180021d, 0x0246a00e, - 0x0180021d, 0x0246a00e, 0x0748500f, 0x0581021d, - 0x0748500c, 0x0581021d, 0x03459017, 0x0349a017, - 0x07818224, 0x04602c16, 0x050f80ff, 0x053fa80a, - 0x0600000b, 0x0180022e, 0x0747a017, 0x05001017, - 0x0760220a, 0x050f80ff, 0x073fa009, 0x06000001, - 0x07f00000, 0x04602c16, 0x050f80ff, 0x012fa812, - 0x01498017, 0x05810233, 0x0644900e, 0x0279ff0e, - 0x07ffffeb, 0x0448700e, 0x04810245, 0x06601216, - 0x050f80ff, 0x012fa809, 0x07f00000, 0x04600201, - 0x050f80ff, 0x012fa809, 0x07f00000, 0x06601401, - 0x050f80ff, 0x012fa809, 0x060ff001, 0x075a00ff, - 0x04810245, 0x0279ff0e, 0x07ffffeb, 0x05a002b2, - 0x06818279, 0x07300003, 0x05000430, 0x05a00295, - 0x03800056, 0x056c0e09, 0x0681827f, 0x0430e001, - 0x02080002, 0x0644000d, 0x0447400d, 0x0748f00f, - 0x05810265, 0x0569800f, 0x0781827d, 0x0578400f, - 0x06000020, 0x017c40ff, 0x06000020, 0x0681825e, - 0x0748500c, 0x0481025e, 0x03459017, 0x01800265, - 0x0049100d, 0x07818265, 0x0548700c, 0x07818265, - 0x07486000, 0x07818265, 0x0045400d, 0x04602c16, - 0x050f80ff, 0x053fa80a, 0x0600000b, 0x05a002b2, - 0x06818279, 0x01498017, 0x04810275, 0x0644900e, - 0x0444100d, 0x0630000e, 0x04000420, 0x0748600c, - 0x05810277, 0x0444200d, 0x01800277, 0x06300004, - 0x04000420, 0x05a00295, 0x03800035, 0x02200010, - 0x00800280, 0x02200001, 0x00800280, 0x03200006, - 0x00800280, 0x02200004, 0x040fd016, 0x050fd00a, - 0x050fd000, 0x0760140a, 0x050f80ff, 0x032fa00a, - 0x07f00000, 0x04600e16, 0x050f80ff, 0x053fa809, - 0x06000001, 0x05780103, 0x070000ff, 0x017a0103, - 0x07000600, 0x04600e16, 0x050f80ff, 0x053fa80a, - 0x06000001, 0x06a003e6, 0x03800078, 0x0760140a, - 0x050f80ff, 0x053fa809, 0x06000001, 0x07f00000, - 0x074b0003, 0x034a1803, 0x014a2c03, 0x05500403, - 0x070030ff, 0x0400100e, 0x04002010, 0x04600e16, - 0x050f80ff, 0x073fa009, 0x06000002, 0x0600500d, - 0x0700600a, 0x0400700b, 0x0460040b, 0x050f80ff, - 0x073fa009, 0x06000004, 0x0279ff08, 0x0700ffff, - 0x06600616, 0x050f80ff, 0x022fa04a, 0x07c00000, - 0x03681e00, 0x070090ff, 0x076c2400, 0x048102cd, - 0x056cf400, 0x048102ba, 0x076ce400, 0x068182df, - 0x0748000f, 0x058102bd, 0x0444b00d, 0x0548100f, - 0x058102c0, 0x0444700e, 0x06a00364, 0x078182e2, - 0x0760220a, 0x050f80ff, 0x0448b00d, 0x058102c9, - 0x073fa009, 0x06000004, 0x008002d3, 0x043fa819, - 0x06000002, 0x05008005, 0x008002d3, 0x0760220a, - 0x050f80ff, 0x043fa819, 0x06000002, 0x05008005, - 0x0500100a, 0x06780007, 0x07ffff00, 0x058102d7, - 0x0245500e, 0x0560160a, 0x050f80ff, 0x053fa809, - 0x06000001, 0x0379ff03, 0x070000ff, 0x01018003, - 0x03800318, 0x040fd016, 0x050fd00a, 0x02800619, - 0x056a02ff, 0x07c00000, 0x0447400e, 0x03681e00, - 0x070090ff, 0x076c3000, 0x07810312, 0x076c9000, - 0x07810312, 0x056cea00, 0x068182ef, 0x02209008, - 0x03800312, 0x056cd000, 0x058102f6, 0x076cd400, - 0x058102f6, 0x040fd016, 0x050fd00a, 0x02800619, - 0x0748000f, 0x058102f9, 0x0444700e, 0x0548100f, - 0x058102fc, 0x0444b00d, 0x06a00364, 0x05818311, - 0x0448700d, 0x05818317, 0x0644500e, 0x070ff009, + 0x05a00295, 0x03800056, 0x056c0e09, 0x0681827f, + 0x0430e001, 0x02080002, 0x0644000d, 0x0447400d, + 0x0748f00f, 0x05810265, 0x0569800f, 0x0781827d, + 0x0578400f, 0x06000020, 0x017c40ff, 0x06000020, + 0x0681825e, 0x0748500c, 0x0481025e, 0x03459017, + 0x01800265, 0x0049100d, 0x07818265, 0x0548700c, + 0x07818265, 0x07486000, 0x07818265, 0x0045400d, + 0x04602c16, 0x050f80ff, 0x053fa80a, 0x0600000b, + 0x05a002b2, 0x06818279, 0x01498017, 0x04810275, + 0x0644900e, 0x0444100d, 0x0630000e, 0x04000420, + 0x0748600c, 0x05810277, 0x0444200d, 0x01800277, + 0x06300004, 0x04000420, 0x05a00295, 0x03800035, + 0x02200010, 0x00800280, 0x02200001, 0x00800280, + 0x03200006, 0x00800280, 0x02200004, 0x040fd016, + 0x050fd00a, 0x050fd000, 0x0760140a, 0x050f80ff, + 0x032fa00a, 0x07f00000, 0x04600e16, 0x050f80ff, + 0x053fa809, 0x06000001, 0x05780103, 0x070000ff, + 0x017a0103, 0x07000600, 0x04600e16, 0x050f80ff, + 0x053fa80a, 0x06000001, 0x06a003e6, 0x03800078, + 0x0760140a, 0x050f80ff, 0x053fa809, 0x06000001, + 0x07f00000, 0x074b0003, 0x034a1803, 0x014a2c03, + 0x05500403, 0x070030ff, 0x0400100e, 0x04002010, + 0x04600e16, 0x050f80ff, 0x073fa009, 0x06000002, + 0x0600500d, 0x0700600a, 0x0400700b, 0x0460040b, + 0x050f80ff, 0x073fa009, 0x06000004, 0x0279ff08, + 0x0700ffff, 0x06600616, 0x050f80ff, 0x022fa04a, + 0x07c00000, 0x03681e00, 0x070090ff, 0x076c2400, + 0x048102cd, 0x056cf400, 0x048102ba, 0x076ce400, + 0x068182df, 0x0748000f, 0x058102bd, 0x0444b00d, + 0x0548100f, 0x058102c0, 0x0444700e, 0x06a00364, + 0x078182e2, 0x0760220a, 0x050f80ff, 0x0448b00d, + 0x058102c9, 0x073fa009, 0x06000004, 0x008002d3, + 0x043fa819, 0x06000002, 0x05008005, 0x008002d3, + 0x0760220a, 0x050f80ff, 0x043fa819, 0x06000002, + 0x05008005, 0x0500100a, 0x06780007, 0x07ffff00, + 0x058102d7, 0x0245500e, 0x0560160a, 0x050f80ff, + 0x053fa809, 0x06000001, 0x0379ff03, 0x070000ff, + 0x01018003, 0x03800318, 0x040fd016, 0x050fd00a, + 0x03800622, 0x056a02ff, 0x07c00000, 0x0447400e, + 0x03681e00, 0x070090ff, 0x076c3000, 0x07810312, + 0x076c9000, 0x07810312, 0x056cea00, 0x068182ef, + 0x02209008, 0x03800312, 0x056cd000, 0x058102f6, + 0x076cd400, 0x058102f6, 0x040fd016, 0x050fd00a, + 0x03800622, 0x0748000f, 0x058102f9, 0x0444700e, + 0x0548100f, 0x058102fc, 0x0444b00d, 0x06a00364, + 0x05818311, 0x0448700d, 0x05818317, 0x0644500e, + 0x070ff009, 0x0550041b, 0x050f80ff, 0x073fa009, + 0x06000001, 0x0320000c, 0x02400002, 0x04488004, + 0x0781030c, 0x02400002, 0x0320000f, 0x07003018, + 0x06601816, 0x050f80ff, 0x032fa022, 0x075c00ff, + 0x07c00000, 0x0500100a, 0x0560260a, 0x050f80ff, + 0x053fa809, 0x07000003, 0x04008010, 0x06a00320, + 0x0481831f, 0x07003018, 0x06601816, 0x050f80ff, + 0x022fa04a, 0x075c00ff, 0x07c00000, 0x070ff009, 0x0550041b, 0x050f80ff, 0x073fa009, 0x06000001, - 0x0320000c, 0x02400002, 0x04488004, 0x0781030c, - 0x02400002, 0x0320000f, 0x07003018, 0x06601816, - 0x050f80ff, 0x032fa022, 0x075c00ff, 0x07c00000, - 0x0500100a, 0x0560260a, 0x050f80ff, 0x053fa809, - 0x07000003, 0x04008010, 0x06a00320, 0x0481831f, - 0x07003018, 0x06601816, 0x050f80ff, 0x022fa04a, - 0x075c00ff, 0x07c00000, 0x070ff009, 0x0550041b, - 0x050f80ff, 0x073fa009, 0x06000001, 0x0448b00d, - 0x04818329, 0x0448700e, 0x0781032d, 0x02400002, - 0x0049700d, 0x0781032d, 0x02400002, 0x07a0033c, - 0x0581833a, 0x060ff001, 0x05500400, 0x050f80ff, - 0x063fa019, 0x06000002, 0x07f00000, 0x07420018, - 0x0681033b, 0x02400002, 0x07a0033c, 0x0681033b, - 0x056a02ff, 0x07c00000, 0x070ff01d, 0x00540402, - 0x03d0033f, 0x02800345, 0x03800347, 0x02800349, - 0x0380034b, 0x0380034d, 0x0280034f, 0x03200009, - 0x02800362, 0x0320000c, 0x02800362, 0x0320000f, - 0x02800362, 0x03200012, 0x02800362, 0x02200015, - 0x02800362, 0x04600201, 0x050f80ff, 0x012fa809, - 0x040f7001, 0x0286035e, 0x04601001, 0x050f80ff, - 0x073fa009, 0x06000001, 0x02681e02, 0x0550041b, - 0x050f80ff, 0x073fa009, 0x06000001, 0x0380033c, - 0x040fd016, 0x040fd002, 0x056a02ff, 0x03800363, - 0x075c00ff, 0x07c00000, 0x0560020a, 0x050f80ff, - 0x053fa809, 0x06000007, 0x050f700f, 0x038603e4, - 0x0560100f, 0x050f80ff, 0x053fa809, 0x06000004, - 0x0769ff09, 0x056c9409, 0x058183e4, 0x05602a0a, - 0x050f80ff, 0x063fa019, 0x07000003, 0x07000006, - 0x0079fe07, 0x070000ff, 0x050010ff, 0x0760120f, - 0x050f80ff, 0x063fa019, 0x06000002, 0x0379ff05, - 0x070000ff, 0x074b0c05, 0x055a0405, 0x070050ff, - 0x0079fe04, 0x070000ff, 0x050020ff, 0x064b0c04, - 0x045a0402, 0x050020ff, 0x064b0004, 0x04487004, - 0x06810392, 0x0379ff05, 0x070000ff, 0x04488004, - 0x04818398, 0x04007010, 0x04008010, 0x04444004, - 0x04488004, 0x068103ad, 0x02680604, 0x076c06ff, - 0x04818398, 0x00464004, 0x0045700d, 0x0045800e, - 0x05601a0f, 0x050f80ff, 0x073fa009, 0x0700000c, - 0x07f00000, 0x074b0018, 0x07600a0a, 0x050f80ff, - 0x053fa809, 0x06000001, 0x050f80ff, 0x073fa00a, - 0x06000008, 0x07f00000, 0x06604e16, 0x050f80ff, - 0x053fa80a, 0x06000001, 0x07f00000, 0x04605816, - 0x050f80ff, 0x073fa00a, 0x07000003, 0x06486004, - 0x058183c5, 0x04780107, 0x07ffff00, 0x004a8c07, - 0x04780107, 0x07ff0000, 0x004a8007, 0x045a0407, - 0x045a0404, 0x050040ff, 0x06780008, 0x07ff00ff, - 0x0279ff08, 0x0700ff00, 0x014c80ff, 0x044d8008, - 0x045a0408, 0x070030ff, 0x028003dc, 0x04780107, - 0x07ffff00, 0x0079fe08, 0x070000ff, 0x045a0407, - 0x050070ff, 0x06780007, 0x07ff00ff, 0x0279ff07, - 0x0700ff00, 0x054d80ff, 0x004c8007, 0x045a0407, - 0x070030ff, 0x04780108, 0x07ffff00, 0x004a8c08, - 0x04780108, 0x07ff0000, 0x004a8008, 0x045a0408, - 0x045a0404, 0x050040ff, 0x04603e16, 0x050f80ff, - 0x022fa032, 0x0500100f, 0x05007006, 0x01681f09, - 0x075c00ff, 0x07c00000, 0x056a02ff, 0x07c00000, - 0x050f7012, 0x038603ed, 0x06600013, 0x050f80ff, - 0x073fa00a, 0x0600000b, 0x07c00000, 0x070ff0e2, - 0x077800ff, 0x033e0000, 0x077400ff, 0x031a0000, - 0x05820412, 0x05810412, 0x00012016, 0x02013016, - 0x07c00000, 0x070ff0e2, 0x077800ff, 0x033e0000, - 0x077400ff, 0x031a0000, 0x078203ff, 0x078103ff, - 0x07c00000, 0x03016012, 0x06600016, 0x050f80ff, - 0x032fa009, 0x07f00000, 0x06600016, 0x050f80ff, - 0x073fa00a, 0x06000008, 0x050f7000, 0x0186040c, - 0x01012000, 0x0080040e, 0x00012010, 0x02013010, - 0x04600816, 0x050f80ff, 0x073fa009, 0x06000007, - 0x0647f00e, 0x007a010e, 0x04000101, 0x04600816, - 0x050f80ff, 0x073fa00a, 0x06000007, 0x072e0030, - 0x020e0016, 0x07c00000, 0x0391000a, 0x0784001d, - 0x022c0004, 0x046c041f, 0x04810431, 0x046c021f, - 0x05810481, 0x066c0c1f, 0x05810493, 0x046c081f, - 0x058104a5, 0x066c061f, 0x048104bf, 0x0721f000, - 0x0202c010, 0x0202a010, 0x02020010, 0x052e5800, - 0x02b60079, 0x058d04d7, 0x0380000c, 0x040f702a, - 0x0086042a, 0x06000010, 0x04001010, 0x0760182b, - 0x050f80ff, 0x032fa012, 0x07f00000, 0x0460082a, - 0x050f80ff, 0x053fa809, 0x06000001, 0x07780003, - 0x03400000, 0x05810471, 0x0560102b, 0x050f80ff, - 0x032fa009, 0x0769ff00, 0x076c3000, 0x05810448, - 0x056cd000, 0x07818471, 0x05601c2b, 0x050f80ff, - 0x032fa009, 0x05444000, 0x07445000, 0x032fa00a, - 0x06300002, 0x05000430, 0x0660062a, 0x050f80ff, - 0x032fa00a, 0x07f00000, 0x0560262b, 0x050f80ff, - 0x032fa009, 0x04001010, 0x04002010, 0x0460262a, - 0x050f80ff, 0x022fa01a, 0x07f00000, 0x06600a2a, - 0x050f80ff, 0x012fa80a, 0x07f00000, 0x0460082a, - 0x050f80ff, 0x012fa80a, 0x0079c101, 0x07ffffff, - 0x007a0b01, 0x03800000, 0x05780100, 0x07ffff00, - 0x0581046c, 0x02455001, 0x0460082a, 0x050f80ff, - 0x012fa80a, 0x0201602a, 0x07a000bb, 0x06420029, + 0x0448b00d, 0x04818329, 0x0448700e, 0x0781032d, + 0x02400002, 0x0049700d, 0x0781032d, 0x02400002, + 0x07a0033c, 0x0581833a, 0x060ff001, 0x05500400, + 0x050f80ff, 0x063fa019, 0x06000002, 0x07f00000, + 0x07420018, 0x0681033b, 0x02400002, 0x07a0033c, + 0x0681033b, 0x056a02ff, 0x07c00000, 0x070ff01d, + 0x00540402, 0x03d0033f, 0x02800345, 0x03800347, + 0x02800349, 0x0380034b, 0x0380034d, 0x0280034f, + 0x03200009, 0x02800362, 0x0320000c, 0x02800362, + 0x0320000f, 0x02800362, 0x03200012, 0x02800362, + 0x02200015, 0x02800362, 0x04600201, 0x050f80ff, + 0x012fa809, 0x040f7001, 0x0286035e, 0x04601001, + 0x050f80ff, 0x073fa009, 0x06000001, 0x02681e02, + 0x0550041b, 0x050f80ff, 0x073fa009, 0x06000001, + 0x0380033c, 0x040fd016, 0x040fd002, 0x056a02ff, + 0x03800363, 0x075c00ff, 0x07c00000, 0x0560020a, + 0x050f80ff, 0x053fa809, 0x06000007, 0x050f700f, + 0x038603e4, 0x0560100f, 0x050f80ff, 0x053fa809, + 0x06000004, 0x0769ff09, 0x056c9409, 0x058183e4, + 0x05602a0a, 0x050f80ff, 0x063fa019, 0x07000003, + 0x07000006, 0x0079fe07, 0x070000ff, 0x050010ff, + 0x0760120f, 0x050f80ff, 0x063fa019, 0x06000002, + 0x0379ff05, 0x070000ff, 0x074b0c05, 0x055a0405, + 0x070050ff, 0x0079fe04, 0x070000ff, 0x050020ff, + 0x064b0c04, 0x045a0402, 0x050020ff, 0x064b0004, + 0x04487004, 0x06810392, 0x0379ff05, 0x070000ff, + 0x04488004, 0x04818398, 0x04007010, 0x04008010, + 0x04444004, 0x04488004, 0x068103ad, 0x02680604, + 0x076c06ff, 0x04818398, 0x00464004, 0x0045700d, + 0x0045800e, 0x05601a0f, 0x050f80ff, 0x073fa009, + 0x0700000c, 0x07f00000, 0x074b0018, 0x07600a0a, + 0x050f80ff, 0x053fa809, 0x06000001, 0x050f80ff, + 0x073fa00a, 0x06000008, 0x07f00000, 0x06604e16, + 0x050f80ff, 0x053fa80a, 0x06000001, 0x07f00000, + 0x04605816, 0x050f80ff, 0x073fa00a, 0x07000003, + 0x06486004, 0x058183c5, 0x04780107, 0x07ffff00, + 0x004a8c07, 0x04780107, 0x07ff0000, 0x004a8007, + 0x045a0407, 0x045a0404, 0x050040ff, 0x06780008, + 0x07ff00ff, 0x0279ff08, 0x0700ff00, 0x014c80ff, + 0x044d8008, 0x045a0408, 0x070030ff, 0x028003dc, + 0x04780107, 0x07ffff00, 0x0079fe08, 0x070000ff, + 0x045a0407, 0x050070ff, 0x06780007, 0x07ff00ff, + 0x0279ff07, 0x0700ff00, 0x054d80ff, 0x004c8007, + 0x045a0407, 0x070030ff, 0x04780108, 0x07ffff00, + 0x004a8c08, 0x04780108, 0x07ff0000, 0x004a8008, + 0x045a0408, 0x045a0404, 0x050040ff, 0x04603e16, + 0x050f80ff, 0x022fa032, 0x0500100f, 0x05007006, + 0x01681f09, 0x075c00ff, 0x07c00000, 0x056a02ff, + 0x07c00000, 0x050f7012, 0x038603ed, 0x06600013, + 0x050f80ff, 0x073fa00a, 0x0600000b, 0x07c00000, + 0x070ff0e2, 0x077800ff, 0x033e0000, 0x077400ff, + 0x031a0000, 0x05820412, 0x05810412, 0x00012016, + 0x02013016, 0x07c00000, 0x070ff0e2, 0x077800ff, + 0x033e0000, 0x077400ff, 0x031a0000, 0x078203ff, + 0x078103ff, 0x07c00000, 0x03016012, 0x06600016, + 0x050f80ff, 0x032fa009, 0x07f00000, 0x06600016, + 0x050f80ff, 0x073fa00a, 0x06000008, 0x050f7000, + 0x0186040c, 0x01012000, 0x0080040e, 0x00012010, + 0x02013010, 0x04600816, 0x050f80ff, 0x073fa009, + 0x06000007, 0x0647f00e, 0x007a010e, 0x04000101, + 0x04600816, 0x050f80ff, 0x073fa00a, 0x06000007, + 0x072e0030, 0x020e0016, 0x07c00000, 0x0391000a, + 0x0784001d, 0x022c0004, 0x046c041f, 0x04810432, + 0x046c021f, 0x05810482, 0x066c0c1f, 0x04810494, + 0x046c081f, 0x058104a6, 0x066c061f, 0x058104c0, + 0x0721f000, 0x0202c010, 0x0202a010, 0x02020010, + 0x052e5800, 0x02b60079, 0x058d04d8, 0x0380000c, + 0x0380001d, 0x040f702a, 0x0086042a, 0x06000010, + 0x04001010, 0x0760182b, 0x050f80ff, 0x032fa012, + 0x07f00000, 0x0460082a, 0x050f80ff, 0x053fa809, + 0x06000001, 0x07780003, 0x03400000, 0x05810472, + 0x0560102b, 0x050f80ff, 0x032fa009, 0x0769ff00, + 0x076c3000, 0x04810449, 0x056cd000, 0x07818472, + 0x05601c2b, 0x050f80ff, 0x032fa009, 0x05444000, + 0x07445000, 0x032fa00a, 0x06300002, 0x05000430, + 0x0660062a, 0x050f80ff, 0x032fa00a, 0x07f00000, + 0x0560262b, 0x050f80ff, 0x032fa009, 0x04001010, + 0x04002010, 0x0460262a, 0x050f80ff, 0x022fa01a, + 0x07f00000, 0x06600a2a, 0x050f80ff, 0x012fa80a, + 0x07f00000, 0x0460082a, 0x050f80ff, 0x012fa80a, + 0x0079c101, 0x07ffffff, 0x007a0b01, 0x03800000, + 0x05780100, 0x07ffff00, 0x0481046d, 0x02455001, + 0x0460082a, 0x050f80ff, 0x012fa80a, 0x0201602a, + 0x07a000bb, 0x06420029, 0x0660002a, 0x050f80ff, + 0x053fa809, 0x06000001, 0x050f7003, 0x0086047f, + 0x01028003, 0x0660002a, 0x050f80ff, 0x073fa00a, + 0x06000008, 0x008004c1, 0x00028010, 0x00027010, + 0x008004c1, 0x040f702a, 0x00860429, 0x06420029, 0x0660002a, 0x050f80ff, 0x053fa809, 0x06000001, - 0x050f7003, 0x0186047e, 0x01028003, 0x0660002a, - 0x050f80ff, 0x073fa00a, 0x06000008, 0x018004c0, - 0x00028010, 0x00027010, 0x018004c0, 0x040f702a, + 0x050f7003, 0x00860491, 0x03026003, 0x0660002a, + 0x050f80ff, 0x073fa00a, 0x06000008, 0x008004c1, + 0x02026010, 0x02025010, 0x008004c1, 0x040f702a, 0x00860429, 0x06420029, 0x0660002a, 0x050f80ff, - 0x053fa809, 0x06000001, 0x050f7003, 0x01860490, - 0x03026003, 0x0660002a, 0x050f80ff, 0x073fa00a, - 0x06000008, 0x018004c0, 0x02026010, 0x02025010, - 0x018004c0, 0x040f702a, 0x00860429, 0x06420029, + 0x053fa809, 0x06000001, 0x050f7003, 0x018604a3, + 0x01024003, 0x0660002a, 0x050f80ff, 0x073fa00a, + 0x06000008, 0x018004b7, 0x00024010, 0x02023010, + 0x018004b7, 0x040f702a, 0x00860429, 0x06420029, 0x0660002a, 0x050f80ff, 0x053fa809, 0x06000001, - 0x050f7003, 0x008604a2, 0x01024003, 0x0660002a, - 0x050f80ff, 0x073fa00a, 0x06000008, 0x008004b6, - 0x00024010, 0x02023010, 0x008004b6, 0x040f702a, - 0x00860429, 0x06420029, 0x0660002a, 0x050f80ff, - 0x053fa809, 0x06000001, 0x050f7003, 0x018604b4, - 0x01022003, 0x0660002a, 0x050f80ff, 0x073fa00a, - 0x06000008, 0x008004b6, 0x00022010, 0x00021010, - 0x0647f020, 0x007a0120, 0x04000101, 0x06a0054a, - 0x0400802a, 0x06a005fe, 0x02948429, 0x0721f005, - 0x0080042a, 0x0080042f, 0x0647f020, 0x06486020, - 0x078184c5, 0x06a0054a, 0x00800429, 0x007a0120, - 0x04000101, 0x06a0054a, 0x0400802a, 0x06a005fe, - 0x00800429, 0x0391000a, 0x070ff0e2, 0x077800ff, - 0x033e0000, 0x077400ff, 0x031a0000, 0x0682842f, - 0x040fd02a, 0x052e4003, 0x00208010, 0x06a005fe, - 0x0080042f, 0x0784001d, 0x030150c0, 0x0448e015, - 0x05818505, 0x0648f015, 0x068184fd, 0x02490015, - 0x078184f5, 0x00491015, 0x078184ed, 0x00492015, - 0x0781053c, 0x033d0000, 0x07000003, 0x019b853c, - 0x033d0000, 0x06000002, 0x073c0000, 0x06000040, - 0x052e5200, 0x02200004, 0x0380050c, 0x072d0c00, - 0x039b84e1, 0x052d0800, 0x073c0000, 0x06000020, - 0x062e5080, 0x03200003, 0x0380050c, 0x072d0300, - 0x029b84df, 0x052d0200, 0x073c0000, 0x06000010, - 0x062e5020, 0x02200002, 0x0380050c, 0x072d00c0, - 0x039b84dd, 0x062d0080, 0x073c0000, 0x06000008, - 0x062e5008, 0x02200001, 0x0380050c, 0x072d0030, - 0x039b84db, 0x062d0020, 0x073c0000, 0x06000004, - 0x062e5002, 0x06000010, 0x0784001d, 0x0392000c, - 0x050fb000, 0x040f707c, 0x02860538, 0x046c0279, - 0x0581851d, 0x0448b07a, 0x07810524, 0x06000010, - 0x04001010, 0x0760187b, 0x050f80ff, 0x032fa012, - 0x0046b07a, 0x02b60079, 0x03800527, 0x066c0079, - 0x07810522, 0x040fd07c, 0x06a00619, 0x02800008, - 0x040fd07c, 0x03800527, 0x0045207a, 0x0279ff7a, - 0x07ffd7ff, 0x0007d010, 0x0647f07a, 0x0648607a, - 0x04818532, 0x0448707a, 0x07810530, 0x040f70fb, - 0x01868530, 0x0644f07a, 0x07a00550, 0x02800538, - 0x007a017a, 0x04000101, 0x07a00550, 0x0400807c, - 0x0245f008, 0x06a005fe, 0x07279000, 0x0007e010, - 0x0207c010, 0x0207a010, 0x008c041c, 0x0380000c, + 0x050f7003, 0x008604b5, 0x01022003, 0x0660002a, + 0x050f80ff, 0x073fa00a, 0x06000008, 0x018004b7, + 0x00022010, 0x00021010, 0x0647f020, 0x007a0120, + 0x04000101, 0x07a0054d, 0x0400802a, 0x07a00605, + 0x02948429, 0x0721f005, 0x0080042a, 0x00800431, + 0x0647f020, 0x06486020, 0x078184c6, 0x07a0054d, + 0x00800429, 0x007a0120, 0x04000101, 0x07a0054d, + 0x0400802a, 0x07a00605, 0x00800429, 0x0391001d, + 0x070ff0e2, 0x077800ff, 0x033e0000, 0x077400ff, + 0x031a0000, 0x06828431, 0x040fd02a, 0x052e4003, + 0x00208010, 0x07a00605, 0x00800431, 0x0784001d, + 0x030150c0, 0x0448e015, 0x05818506, 0x0648f015, + 0x068184fe, 0x02490015, 0x078184f6, 0x00491015, + 0x078184ee, 0x00492015, 0x06810540, 0x033d0000, + 0x07000003, 0x009b8540, 0x033d0000, 0x06000002, + 0x073c0000, 0x06000040, 0x052e5200, 0x02200004, + 0x0280050d, 0x072d0c00, 0x039b84e2, 0x052d0800, + 0x073c0000, 0x06000020, 0x062e5080, 0x03200003, + 0x0280050d, 0x072d0300, 0x029b84e0, 0x052d0200, + 0x073c0000, 0x06000010, 0x062e5020, 0x02200002, + 0x0280050d, 0x072d00c0, 0x039b84de, 0x062d0080, + 0x073c0000, 0x06000008, 0x062e5008, 0x02200001, + 0x0280050d, 0x072d0030, 0x029b84dc, 0x062d0020, + 0x073c0000, 0x06000004, 0x062e5002, 0x06000010, + 0x0784001d, 0x0392000c, 0x050fb000, 0x040f707c, + 0x03860539, 0x046c0279, 0x0581851e, 0x0448b07a, + 0x06810525, 0x06000010, 0x04001010, 0x0760187b, + 0x050f80ff, 0x032fa012, 0x0046b07a, 0x02b60079, + 0x03800528, 0x066c0079, 0x06810523, 0x040fd07c, + 0x07a00622, 0x02800008, 0x040fd07c, 0x03800528, + 0x0045207a, 0x0279ff7a, 0x07ffd7ff, 0x0007d010, + 0x0647f07a, 0x0648607a, 0x05818533, 0x0448707a, + 0x06810531, 0x040f70fb, 0x00868531, 0x0644f07a, + 0x07a00553, 0x03800539, 0x007a017a, 0x04000101, + 0x07a00553, 0x0400807c, 0x0245f008, 0x07a00605, + 0x07279000, 0x0007e010, 0x0207c010, 0x0207a010, + 0x008c041c, 0x058d04d8, 0x0380000c, 0x0380001d, 0x0392000c, 0x070ff0e2, 0x077800ff, 0x033e0000, - 0x077400ff, 0x031a0000, 0x0582853c, 0x070fc0ff, - 0x052e400c, 0x00208020, 0x06a005fe, 0x0380053c, + 0x077400ff, 0x031a0000, 0x04828540, 0x070fc0ff, + 0x052e400c, 0x00208020, 0x07a00605, 0x02800540, 0x06000020, 0x05001014, 0x0460082a, 0x050f80ff, 0x032fa012, 0x07c00000, 0x0600007a, 0x040010a2, 0x044b0801, 0x070ff014, 0x065a0001, 0x0460087c, 0x050f80ff, 0x032fa012, 0x07c00000, 0x050f7024, - 0x02860564, 0x070ff0e2, 0x077800ff, 0x033e0000, + 0x02860567, 0x070ff0e2, 0x077800ff, 0x033e0000, 0x077400ff, 0x031a0000, 0x04828013, 0x0721f006, - 0x0302a024, 0x028005ad, 0x050f7022, 0x02860573, + 0x0302a024, 0x038005b2, 0x050f7022, 0x03860577, 0x070ff0e2, 0x077800ff, 0x033e0000, 0x077400ff, - 0x031a0000, 0x04828013, 0x0302a022, 0x06a005b9, - 0x04488020, 0x0781059c, 0x040fd02a, 0x0202a010, - 0x02020010, 0x040f7026, 0x03860581, 0x0202a026, - 0x06a005b9, 0x04488020, 0x0581857d, 0x0621f001, - 0x00683e20, 0x048185ae, 0x0280059d, 0x040fd02a, - 0x0202a010, 0x0002b010, 0x02020010, 0x050f7028, - 0x028605b6, 0x0621f002, 0x0302a028, 0x028005ad, - 0x070ff0e2, 0x077800ff, 0x033e0000, 0x077400ff, - 0x031a0000, 0x04828013, 0x050f7024, 0x02860591, - 0x0721f006, 0x0302a024, 0x028005ad, 0x050f7022, - 0x028605b6, 0x0302a022, 0x06a005b9, 0x04488020, - 0x0781059c, 0x040fd02a, 0x0202a010, 0x0002b010, - 0x02020010, 0x028005b6, 0x0621f004, 0x070ff0e2, - 0x077800ff, 0x033e0000, 0x077400ff, 0x031a0000, - 0x048285a8, 0x01208060, 0x0600902a, 0x04002020, - 0x07a00605, 0x028005b6, 0x0202a010, 0x02020010, - 0x0002b010, 0x0721f000, 0x028005b6, 0x06a005b9, - 0x0400102a, 0x0245f001, 0x06a005bf, 0x050f801e, - 0x0320000a, 0x022017d0, 0x032fa012, 0x072e5c00, - 0x008c041c, 0x058d04d7, 0x02800013, 0x0460082a, - 0x050f80ff, 0x022fa031, 0x03020000, 0x0102b005, - 0x07c00000, 0x01200100, 0x079a05c3, 0x060f0001, - 0x07c00000, 0x07420000, 0x058185c0, 0x060fc010, - 0x02800619, 0x0392001d, 0x0207c02f, 0x0460087c, + 0x031a0000, 0x04828013, 0x0302a022, 0x06a005bf, + 0x04488020, 0x068105a1, 0x040fd02a, 0x0202a010, + 0x02020010, 0x038005be, 0x040f7026, 0x02860586, + 0x0202a026, 0x06a005bf, 0x04488020, 0x05818581, + 0x0621f001, 0x00683e20, 0x048185b3, 0x028005a2, + 0x040fd02a, 0x0202a010, 0x0002b010, 0x02020010, + 0x038005be, 0x050f7028, 0x038605bb, 0x0621f002, + 0x0302a028, 0x038005b2, 0x070ff0e2, 0x077800ff, + 0x033e0000, 0x077400ff, 0x031a0000, 0x04828013, + 0x050f7024, 0x03860596, 0x0721f006, 0x0302a024, + 0x038005b2, 0x050f7022, 0x038605bb, 0x0302a022, + 0x06a005bf, 0x04488020, 0x068105a1, 0x040fd02a, + 0x0202a010, 0x0002b010, 0x02020010, 0x038005be, + 0x0621f004, 0x070ff0e2, 0x077800ff, 0x033e0000, + 0x077400ff, 0x031a0000, 0x048285ad, 0x01208060, + 0x0600902a, 0x04002020, 0x06a0060d, 0x038005bb, + 0x0202a010, 0x02020010, 0x0002b010, 0x0721f000, + 0x038005bb, 0x06a005bf, 0x0400102a, 0x0245f001, + 0x07a005c5, 0x050f801e, 0x0320000a, 0x022017d0, + 0x032fa012, 0x072e5c00, 0x008c041c, 0x058d04d8, + 0x02800013, 0x0380001d, 0x0460082a, 0x050f80ff, + 0x022fa031, 0x03020000, 0x0102b005, 0x07c00000, + 0x07300000, 0x06000008, 0x079a05ca, 0x060f0001, + 0x07c00000, 0x07420000, 0x048185c7, 0x060fc010, + 0x03800622, 0x0392001d, 0x0207c02f, 0x0460087c, 0x050f80ff, 0x032fa039, 0x0307a000, 0x0107b005, 0x0307f006, 0x0660007c, 0x050020ff, 0x050f80ff, - 0x032fa011, 0x0302f000, 0x008685df, 0x0202f001, - 0x018685dd, 0x0002e010, 0x0660187f, 0x050f80ff, - 0x073fa00a, 0x06000008, 0x028005e5, 0x0002e001, - 0x028005e5, 0x040f7001, 0x038605d8, 0x0760002e, + 0x032fa011, 0x0302f000, 0x008685e6, 0x0202f001, + 0x018685e4, 0x0002e010, 0x0660187f, 0x050f80ff, + 0x073fa00a, 0x06000008, 0x028005ec, 0x0002e001, + 0x028005ec, 0x040f7001, 0x028605df, 0x0760002e, 0x050f80ff, 0x012fa80a, 0x0002e001, 0x06000010, 0x04001010, 0x040f8002, 0x032fa012, 0x06279001, 0x0400107c, 0x060ff0fb, 0x054bc8ff, 0x065a0001, - 0x06a005bf, 0x0320000a, 0x022011f4, 0x00202004, - 0x06003010, 0x0249507a, 0x078105f6, 0x0020200e, + 0x07a005c5, 0x0320000a, 0x022011f4, 0x00202004, + 0x06003010, 0x0249507a, 0x068105fd, 0x0020200e, 0x050f8078, 0x032fa022, 0x030e5077, 0x008c041c, - 0x058d04d7, 0x040f702f, 0x00868013, 0x0380001d, - 0x03201100, 0x05848603, 0x06420001, 0x058185ff, - 0x0280061c, 0x020e0008, 0x07c00000, 0x050fd009, - 0x040fd008, 0x03201100, 0x0584860c, 0x06420001, - 0x04818608, 0x0280061c, 0x007a0102, 0x04000101, - 0x05600809, 0x050f80ff, 0x073fa00a, 0x06000001, - 0x020e0008, 0x05848617, 0x06420001, 0x04818613, - 0x0280061c, 0x030e0009, 0x07c00000, 0x052e400f, - 0x00208040, 0x028005fe, 0x070fc0ff, 0x040f8010, - 0x032fa009, 0x0280061f, 0x45c0c10d, 0x00000000, - 0x00000000, 0x0000400e, 0x00000808, 0x00000803, - 0x00011f0f, 0x02080b02, 0xe6e5610b, 0x7f04e630, - 0x7f028001, 0x30e2e500, 0x017e04e4, 0x007e0280, - 0x08605fee, 0xe4f7f953, 0x0b80fef5, 0x16120a7f, - 0xf7f953b3, 0x7530fe75, 0xf5e408fc, 0x08f943fd, - 0x06000222, 0x000f1f01, 0x75002003, 0xf5e40151, - 0xf553f552, 0x7f7ef552, 0x3d040204, 0x520536c2, - 0x94d352e5, 0x7505400c, 0x36d20152, 0x740c0790, - 0x74a3f007, 0xf5e4f0ff, 0x90f0a30c, 0xa3f01407, - 0x200b75f0, 0xf5e409f5, 0xd308e508, 0x03403094, - 0x12090402, 0x0b150600, 0x047008e5, 0x0280017f, - 0x09e5007f, 0x017e0470, 0x007e0280, 0x05605fee, - 0xd2f31712, 0xf7e15335, 0x094508e5, 0x250be5ff, - 0x24e025e0, 0xe482f583, 0x83f50734, 0xe285f0ef, - 0xd352e520, 0x0d400194, 0xe02a1b12, 0x4064a054, - 0x04020370, 0xf8f95300, 0xe4709490, 0x10f5e0f0, - 0x1e1209af, 0xef08af74, 0x82f50844, 0xe0808375, - 0x44ef29f5, 0x7582f507, 0xf5e09e83, 0xd3405422, - 0x1e400094, 0xf05429e5, 0x1b122170, 0x8044e02a, - 0x5422e5f0, 0x70086530, 0x2a1b1209, 0xf0bf54e0, - 0x1b120980, 0xf040742a, 0x12000402, 0x8375491b, - 0xf0ff74ae, 0x007e08af, 0xf50744ef, 0xe5fde082, - 0x25e0250b, 0xf58124e0, 0x0734e482, 0xf0ed83f5, - 0xe00e0790, 0x44eff004, 0x7582f507, 0xf5e09883, - 0x5a1b1228, 0x1b120c40, 0x0144e02a, 0x02691b12, - 0x08affb03, 0x8074007e, 0x8dcdefcd, 0xe083f582, - 0x120ae030, 0x44e02a1b, 0x0402f020, 0x2a1b1200, - 0xf0df54e0, 0x12ae44ee, 0xe430711b, 0x00040203, - 0x1b129e74, 0x03e0203c, 0x8f000402, 0xe0838e82, - 0x0203e020, 0x1b120004, 0x1044e02a, 0x4408e5f0, - 0x7582f506, 0x44e09e83, 0x08aff004, 0x44ef007e, - 0xe082f506, 0x1234e220, 0x44e02a1b, 0xe4e5f008, - 0x7d04e630, 0x7d028001, 0xc37ee500, 0x04500494, - 0x0280017c, 0x4dec007c, 0x35c20560, 0xee000402, - 0x1b12d244, 0xf0404471, 0x12000402, 0x54e02a1b, - 0x1b12f0f7, 0xd2837549, 0xf0bf54e0, 0xe0140790, - 0x7ee5f004, 0x7e750370, 0x7e08af01, 0x5a1b1200, - 0x1b121240, 0x0144e02a, 0xe0291b12, 0x1b120254, - 0x00040269, 0xe02a1b12, 0x1b120244, 0xfe54e029, - 0xee35c2f0, 0x828f8044, 0xf5e083f5, 0x44e35417, - 0x9074f010, 0x4408e5fc, 0x82f5fd07, 0x54e0838c, - 0x0207903f, 0xc054e0f0, 0x838c828d, 0x129274f0, - 0x07903c1b, 0x501b1203, 0x1b128274, 0x0407903c, - 0x74501b12, 0x3c1b12b4, 0x12050790, 0x9474501b, - 0x4408e5fe, 0x411b1206, 0xe03010f5, 0x8037d204, - 0xe537c202, 0x8f7f5410, 0xf0838e82, 0x12304430, - 0x80543a1b, 0x400094d3, 0x8039d204, 0x8f39c202, - 0xe0838e82, 0x12f08044, 0x40543a1b, 0x400094d3, - 0x803ad204, 0x8f3ac202, 0xe0838e82, 0x74f04044, - 0x08e5fe92, 0x1b120644, 0x04e73041, 0x028038d2, - 0x828f38c2, 0x54e0838e, 0x1e12f07f, 0x0af5e407, - 0x80020320, 0x03433003, 0x20171912, 0x03800202, - 0x12034230, 0x3030970c, 0x17191206, 0x12970c12, - 0x1b124f0d, 0xfb54e02a, 0xc30ae5f0, 0x46400194, - 0x1208e143, 0x44e02a1b, 0xe4e5f004, 0x122ae720, - 0x8375491b, 0x0854e0d2, 0x400094d3, 0x80017f04, - 0xe5007f02, 0x0194c30a, 0x017e0440, 0x007e0280, - 0x05605eef, 0x80981d12, 0x491b1217, 0xe0d28375, - 0x02f00844, 0x1b120004, 0xd2837549, 0xf0f754e0, - 0x7f071e12, 0xb3161208, 0x12fe8e74, 0x838e491b, - 0x5410f5e0, 0x10e5f0fe, 0xe5ff0144, 0x44edfd08, - 0xef82f507, 0x5410e5f0, 0x44edfffe, 0xef82f507, - 0x75481b12, 0x44e08683, 0x481b1210, 0xf01044e0, - 0xe02a1b12, 0x0144fd54, 0x2a1b12ff, 0x691b12ef, - 0xe50c3230, 0xf5084408, 0x82837582, 0xaff00574, - 0x5918120b, 0x08251074, 0x000208f5, 0xe5090585, - 0x0794d309, 0x00020350, 0xd37ee582, 0x04400094, - 0x0280017f, 0x7ee5007f, 0x50fa94c3, 0x80017e04, - 0xee007e02, 0x0502605f, 0x0b35307e, 0x7f01e143, - 0xb3161209, 0x53580002, 0x0002fee1, 0x8f6a8e58, - 0x8d6c8c6b, 0x016e756d, 0x75016f75, 0xf5e40170, - 0xf574f573, 0x2f079075, 0xf53cf5f0, 0xf546f53e, - 0xf53df547, 0xe56ff53f, 0xe50e706f, 0x126a456b, - 0x83753707, 0x803a7480, 0x37071208, 0x74808375, - 0x3607121a, 0xe0868375, 0xe4f00844, 0x74c36ef5, - 0xff6e953f, 0x75680812, 0xf0ef8283, 0x12741912, - 0x33e5d308, 0x070912f0, 0x40be0812, 0x706fe5e1, - 0x3707120b, 0x74808375, 0x0980f036, 0x75370712, - 0x16748083, 0x016e75f0, 0x75370712, 0x6ee5b483, - 0x741912f0, 0x6e253f74, 0x34e482f5, 0xe583f500, - 0xbf74f033, 0x82f56e25, 0x120034e4, 0xd840be08, - 0xf570f5e4, 0xf547f546, 0x0709126e, 0xfee083f5, - 0xe0d30812, 0x0024007c, 0xfe3eecff, 0xefd33bad, - 0x509cee9d, 0x80017b04, 0xe5007b02, 0x7a047070, - 0x7a028001, 0x605aeb00, 0x466e8506, 0xd3017075, - 0x9cee9def, 0x017f0450, 0x007f0280, 0x01b470e5, - 0x80017e04, 0xef007e02, 0x8503605e, 0x6e05476e, - 0x7f646ee5, 0x46e5a370, 0x47e50560, 0x85037eb4, - 0x6fe54746, 0x46850870, 0x77478576, 0x74c30e80, - 0xf546957f, 0x7f74c378, 0x79f54795, 0x37706fe5, - 0x476546e5, 0x73750c70, 0x01747501, 0x3df53cf5, - 0xf5e43580, 0x47e5c34e, 0x3cf54695, 0x71f513c3, - 0x72f54625, 0x403f94c3, 0x3df5e405, 0x74c34080, - 0xf572953f, 0xe537803d, 0x70476546, 0x0173750f, - 0xf5017575, 0x753ff53e, 0x2280014e, 0xc34ef5e4, - 0x469547e5, 0x13c33ef5, 0x462571f5, 0x94d372f5, - 0xe405503f, 0x06803ff5, 0xc12472e5, 0x6f053ff5, - 0x94c36fe5, 0x02035002, 0x6de57304, 0x02706c45, - 0x74e50480, 0x07907545, 0x017ff02f, 0x04603ee5, - 0x14703ce5, 0xf53cf5e4, 0xf53ef53d, 0xdf08123f, - 0x02f00470, 0x7a80b106, 0x95c33ce5, 0xe507403e, - 0xff3e953c, 0xe5c30680, 0xff3c953e, 0x95d376e5, - 0x85054079, 0x03807a76, 0xe57a7985, 0x7895c377, - 0x77850550, 0x8503807b, 0x7be57b78, 0x407a95d3, - 0x957be530, 0xf53cf57a, 0x7be5c33e, 0x07907a95, - 0x3ce5f019, 0x71f513c3, 0x72f57a25, 0x403f94c3, - 0x3df5e405, 0x74c31f80, 0xf572953f, 0x803ff53d, - 0x3cf5e414, 0x07903ef5, 0x0812f019, 0xf00370df, - 0x01740380, 0x680812f0, 0xe0d08375, 0xadfe0f54, - 0x7e02703c, 0x020fbe07, 0xfbee807e, 0x749bd3ef, - 0x4098f880, 0x3cf5e41f, 0x08123ef5, 0xf00370df, - 0x01741280, 0xfb08e5f0, 0xf50744eb, 0xd2837582, - 0xf01044e0, 0xebfb08e5, 0x82f50944, 0xed9e8375, - 0x0744ebf0, 0x837582f5, 0x12f0edca, 0x83756808, - 0x22f0efcc, 0x074408e5, 0x837582f5, 0xf054e0bc, - 0x4408e5f0, 0x7582f507, 0x54e0be83, 0x08e5f0f0, - 0x82f50744, 0xe0c08375, 0xe5f0f054, 0xf5074408, - 0x90f02282, 0xfee02807, 0x82f5e0a3, 0x8522838e, - 0x41854242, 0x40408541, 0xf52fc074, 0x3e027482, - 0x42e583f5, 0x2fe074f0, 0x027482f5, 0x2283f53e, - 0xfd2942e5, 0xe5fc33e4, 0xec9dc33c, 0x74f88064, - 0xf5229880, 0x0790e083, 0xfd1f5422, 0xe0a3fae0, - 0x838a82f5, 0x9022f0ed, 0xfce02207, 0x82f5e0a3, - 0x9022838c, 0xedff2407, 0xf0cf0744, 0x22f0efa3, - 0x85383885, 0x3a853939, 0x2fc0743a, 0x027482f5, - 0x2283f53e, 0xff260790, 0xcf0744ed, 0xf0efa3f0, - 0xa074f022, 0x7482f52f, 0x83f53e02, 0x25c07422, - 0xe482f511, 0x83f50134, 0x25007422, 0xe482f511, - 0x83f50234, 0x25607422, 0xe482f511, 0x83f50334, - 0x25807422, 0xe482f511, 0x83f50334, 0x25e07422, - 0xe482f511, 0x83f50334, 0x25407422, 0xe482f511, - 0x83f50634, 0x2f807422, 0x027482f5, 0x2283f53e, - 0x82e583f5, 0x82f50744, 0x22f040e5, 0x11254074, - 0x34e482f5, 0x2283f502, 0x1125c074, 0x34e482f5, - 0x2283f503, 0x11250074, 0x34e482f5, 0x2283f506, - 0x11252074, 0x34e482f5, 0x2283f506, 0xedfd08e5, - 0x82f50744, 0xf041e522, 0x016465e5, 0x7e226445, - 0x007afb00, 0x22007cfd, 0x11252074, 0x34e482f5, - 0xa0742202, 0x82f51125, 0x220334e4, 0x007e08af, - 0xf50744ef, 0x3e852282, 0x413f8542, 0x8522408f, - 0x3d85423c, 0x22408f41, 0x903f4575, 0xf0e42007, - 0x83f522a3, 0x05f032e5, 0xc36ee56e, 0xf0224094, - 0x064408e5, 0x742282f5, 0xf56e2500, 0x0034e482, - 0xe52283f5, 0x906c456d, 0xe4222f07, 0xd33ce5f9, - 0x74223e95, 0x82f52e80, 0xf50234e4, 0x7422e083, - 0x82f52ea0, 0xf50234e4, 0x7422e083, 0xf56e2580, - 0x0034e482, 0xfd422522, 0x22fc33e4, 0x85424285, - 0x40854141, 0x4ced2240, 0x09020360, 0x704eeff2, - 0x26079037, 0xe0960712, 0xd90712fd, 0x0790f0ed, - 0x96071228, 0x0712fde0, 0x12f0ede5, 0x54e09307, - 0x0812fd1f, 0xed83f584, 0x240790f0, 0xe0960712, - 0x12fd1f54, 0xf0ed3808, 0x4e0464ef, 0x07903770, - 0x96071226, 0x0712fde0, 0x90f0edf1, 0x07122807, - 0x12fde096, 0xf0edfd07, 0xe0930712, 0x12fd1f54, - 0x83f58e08, 0x0790f0ed, 0x96071224, 0xfd1f54e0, - 0xed440812, 0x0164eff0, 0x7d04704e, 0x7d028001, - 0x0264ef00, 0x7f04704e, 0x7f028001, 0x604def00, - 0x26079078, 0xe0420712, 0x090812ff, 0x3e0712ef, - 0x0812ffe0, 0x90f0ef15, 0x07122207, 0x1f54e042, - 0x500812ff, 0x0790f0ef, 0x42071224, 0xff1f54e0, - 0xef5c0812, 0x071222f0, 0x12f0e4d9, 0xf0e4e507, - 0xf5840812, 0x12f0e483, 0x14743808, 0xf10712f0, - 0x0712f0e4, 0x12f0e4fd, 0x83f58e08, 0x0812f0e4, - 0xf0147444, 0xe4090812, 0x150812f0, 0x0812f0e4, - 0x12f0e450, 0x14745c08, 0x648c22f0, 0x668a658d, - 0xf5e4678b, 0x704eef69, 0x161d0203, 0xe568f5e4, - 0x70664567, 0x37071232, 0xe4908375, 0x75360712, - 0x12e4c283, 0x83753607, 0x0812e4c4, 0x12297073, - 0x83753707, 0x0712e492, 0xc6837536, 0x360712e4, - 0xe4c88375, 0x901180f0, 0x07122607, 0x0812e442, - 0x12057073, 0xf0e43f07, 0x12161d12, 0x67e5801e, - 0x33706645, 0x75370712, 0x41e59083, 0x75360712, - 0x41e5c283, 0x75360712, 0x0812c483, 0x12297071, - 0x83753707, 0x1240e592, 0x83753607, 0x1240e5c6, - 0x83753607, 0x900e80c8, 0x07122607, 0x71081242, - 0x07120670, 0xf040e53f, 0x007e69af, 0x66ac67ad, - 0x12490412, 0x83753707, 0x94d3e0ca, 0x050c5000, - 0xc368e568, 0x03500594, 0x224b0a02, 0x75f7f953, - 0xf5e410fc, 0x30fe75fd, 0xf943fff5, 0x20e6e508, - 0xff780be7, 0xfdd8f6e4, 0x80fee653, 0xe4087809, - 0x53fdd8f6, 0x8175fee6, 0xa8f5e480, 0xa9c2a8d2, - 0xe2e5afd2, 0x2005e520, 0x038002e6, 0xe502e143, - 0x0ee020e2, 0x7f000090, 0xe4087e00, 0xfcdfa3f0, - 0x0b02fade, 0x01fa43b5, 0xf0c0e0c0, 0x82c083c0, - 0x1112d0c0, 0xd0d0d018, 0xd083d082, 0x53e0d0f0, - 0x0232fefa, 0x93e4d51a, 0x93e4f8a3, 0xdf08f6a3, - 0xe42980f9, 0x54f8a393, 0xc80c2407, 0x54c433c3, - 0xc820440f, 0xf4044083, 0x46018056, 0x80e4dff6, - 0x0402010b, 0x40201008, 0xff0f9080, 0x93017ee4, - 0xffa3c160, 0xe5303f54, 0xfe1f5409, 0x60a393e4, - 0x54cf0e01, 0x60e025c0, 0x80b840ad, 0x8d608cfe, - 0xe7081261, 0x0d402074, 0x7482f52f, 0x83f53e03, - 0x80f03ee5, 0x82f52f0b, 0xf53e0374, 0xf03ce583, - 0x95d33ce5, 0xe53c403e, 0x70604561, 0x0912e910, - 0x123ee511, 0x3b407507, 0x80a20812, 0xc33ee518, - 0x1d403895, 0xe5383e85, 0x8505603e, 0x0380393f, - 0x8f393985, 0x2108123a, 0x07123ee5, 0xf03fe5cd, - 0xe5438022, 0x70604561, 0x6c071219, 0x08120540, - 0x122780ab, 0x08121809, 0x1242e521, 0x41e5cd07, - 0x3ce522f0, 0x403895c3, 0x383c851d, 0x05603ce5, - 0x80393d85, 0x39398503, 0x08123a8f, 0x123ce521, - 0x3de5cd07, 0x388522f0, 0x39398538, 0x123a3a85, - 0x38e52108, 0xe5cd0712, 0x7f22f039, 0xb3161206, - 0x12e41c12, 0x0e12b70e, 0x0a44e0e6, 0xfe8e74f0, - 0x12b70e12, 0xf0efbe0e, 0xe53028e5, 0x0180d303, - 0x750540c3, 0x03802014, 0x12081475, 0x8375b70e, - 0xf014e58a, 0x7505ffb4, 0x06808012, 0x13c314e5, - 0xf5e412f5, 0x127ff516, 0x1312b818, 0xc30ae5a3, - 0x09500194, 0x16e51605, 0x401494c3, 0x20e4e5ea, - 0x0e1228e7, 0xd28375b7, 0xd30854e0, 0x04400094, - 0x0280017f, 0x0ae5007f, 0x400194c3, 0x80017e04, - 0xef007e02, 0x1203605e, 0x7fe5981d, 0x401194c3, - 0xb70e1214, 0xe0d28375, 0xe5f08044, 0x0fe720e4, - 0x80981d12, 0xb70e120a, 0xe0d28375, 0x12f07f54, - 0x7422e41c, 0x82088580, 0x17e583f5, 0xed0e12f0, - 0x0790f0e4, 0x0e12e002, 0x908375ca, 0x9274f0ef, - 0x4408e5fe, 0x82f5ff07, 0x54e0838e, 0x0790fdc0, - 0x3f54e003, 0x8e828f4d, 0x0790f083, 0x0e12e004, - 0x828375ca, 0x0790f0ef, 0xedffe005, 0x82f50744, - 0xefb48375, 0x75b60e12, 0x54e08083, 0x3730f0bf, - 0x440f120a, 0xe0948375, 0x30f08044, 0x0f120a38, - 0x92837544, 0xf08044e0, 0xe43028e5, 0x0a39201a, - 0x75b70e12, 0x54e08883, 0x3a20f07f, 0xb70e120a, - 0xe0888375, 0x74f0bf54, 0x0e12fe8c, 0xe0838eb7, - 0x0e120f54, 0x868375b6, 0xf0bf54e0, 0x064408e5, - 0x75b00e12, 0xf0e48a83, 0x704eef22, 0xd9071226, - 0x0790fde0, 0x88071226, 0xe0e50712, 0x280790fd, - 0x12880712, 0x07128408, 0x3808127f, 0x240790e0, - 0xef850712, 0x704e0464, 0xf1071229, 0x0790fde0, - 0x88071226, 0xe0fd0712, 0x280790fd, 0x12880712, - 0x07128e08, 0x4408127f, 0xfd1f54e0, 0x12240790, - 0x64ef8807, 0x04704e01, 0x0280017d, 0x64ef007d, - 0x04704e02, 0x0280017f, 0x4def007f, 0x08123560, - 0x90ffe009, 0x07122607, 0x12f0ef96, 0xffe01508, - 0x12280790, 0xf0ef9607, 0xe0500812, 0x12ff1f54, - 0xf0ef9307, 0xe05c0812, 0x90ff1f54, 0x07122407, - 0x22f0ef96, 0x837582f5, 0xe5f0e482, 0xf5074408, - 0x838e2282, 0x5410f5e0, 0x10e5f0fe, 0xe5ff0144, - 0x44edfd08, 0x2282f507, 0x54c415e5, 0x08e5ff07, - 0x0844edfd, 0x837582f5, 0x83752282, 0x4044e080, - 0x4408e5f0, 0x7582f508, 0xe5228a83, 0x25e02516, - 0xf52f24e0, 0x1a34e482, 0x93e483f5, 0x43220df5, - 0xe14310e1, 0xfde15380, 0x2210e185, 0xe02516e5, - 0x3224e025, 0x34e482f5, 0xe483f51a, 0x55852293, - 0x83548582, 0x22f015e5, 0x2054e2e5, 0x220094d3, - 0x4054e2e5, 0x220094d3, 0x064408e5, 0xfd2282f5, - 0xebfb08e5, 0x82f50744, 0x53f5e422, 0x40340f12, - 0x80017f04, 0x12007f02, 0x04403c0f, 0x0280017e, - 0x4fee007e, 0x0f020370, 0x10e185f7, 0x5302e143, - 0xe1850fe1, 0x51f5e410, 0x3f54e3e5, 0x0f1252f5, - 0xad1d403c, 0x1251af52, 0x60efb01c, 0x10e18508, - 0x8040e143, 0xbfe1530b, 0x120b0f12, 0xfb800600, - 0x3f54e3e5, 0xe4e551f5, 0x52f53f54, 0x40340f12, - 0xaf52ad1d, 0xb01c1251, 0x850860ef, 0xe14310e1, - 0x530b8020, 0x0f12dfe1, 0x0600120b, 0x0f12fb80, - 0x7f044034, 0x7f028001, 0x3c0f1200, 0x017e0440, - 0x007e0280, 0x03604fee, 0x220e0f12, 0x01001f01, - 0x00002003, 0x02001102, 0x10024010, 0x00000090, - 0x00000000, 0x1f011f01, 0x1257f5e4, 0x15123f16, - 0x1012e4c6, 0xb7141256, 0x12260790, 0x12e44207, - 0xf0e43e07, 0x12561012, 0x0790b714, 0x42071226, - 0x071241e5, 0xf040e53e, 0x007e57af, 0x007c56ad, - 0xaf490412, 0x02007e56, 0x90ffee11, 0xe0a32007, - 0x56f5e4fd, 0xfcfe40f5, 0x12fa56ab, 0x0f7f5111, - 0xf5e4187d, 0xfe40f556, 0xfa56abfc, 0xaf411512, - 0x12007e56, 0xffe47f1a, 0x1f7d56f5, 0xfcfe40f5, - 0x22fa56ab, 0x55f5e422, 0x74fd08e5, 0xed56f5a0, - 0x57f50744, 0xe53028e5, 0x0180d303, 0x7f0540c3, - 0x0480ef28, 0xc3ef147f, 0xe454f513, 0xcb0e12f9, - 0xe08e8375, 0xefce10f5, 0x94d3eece, 0xe5264000, - 0x12fe5410, 0x83754b0f, 0xe5f0ed8e, 0xfd014410, - 0xf50744eb, 0x85f0ed82, 0x56858257, 0xe330e083, - 0x801e0901, 0xe934c2d4, 0x405495c3, 0x2234d202, - 0x00000f22, 0x90113030, 0x93e40010, 0x109010f5, - 0xf593e410, 0x90101210, 0x22501112, 0xe730e2e5, - 0x0310120e, 0x303030c2, 0xfc101203, 0xe5213320, - 0x2094c3fe, 0xf9530950, 0x30fe75f7, 0xe508f943, - 0x03e730f2, 0xe57ff953, 0xd37054f1, 0xdf500094, - 0x00000022, 0x8f588e22, 0x8d5a8c59, 0x8b5c8a5b, - 0x015e755d, 0xf55ff5e4, 0x1262f560, 0x83753707, - 0xc4ffe0d0, 0x61f50f54, 0x85661e12, 0xe5d35e59, - 0xe55b955e, 0x7807125a, 0x07124b50, 0xbc837510, - 0x125e45e0, 0x83753607, 0x5e45e0be, 0x75360712, - 0x45e0c083, 0x5faff05e, 0x081260e5, 0x360a127b, - 0x007e62af, 0x5cac5dad, 0xe5490412, 0x7e5eaf61, - 0x0503b400, 0x80e21d12, 0xac5dad07, 0x1713125c, - 0x11025e05, 0x1007127a, 0xe0bc8375, 0x07124045, - 0xbe837536, 0x124045e0, 0x83753607, 0x4045e0c0, - 0x588e22f0, 0x5a75598f, 0x75017901, 0xfbe4015b, - 0x75370712, 0x54e0ae83, 0x0812ff1a, 0x13c4e068, - 0xeffe0754, 0x65ee0c70, 0x90077035, 0xb4e02f07, - 0x35af0d01, 0x0e12007e, 0xcfebcf05, 0xe5211e02, - 0x45026459, 0x7f047058, 0x7f028001, 0x4559e500, - 0x7e047058, 0x7e028001, 0x604fee00, 0x49418523, - 0xe54b4085, 0x70584559, 0xfe5aaf2c, 0xfccde9cd, - 0x58aa59ab, 0xaf360a12, 0x12007e5b, 0x1580211e, - 0x007e5baf, 0x90211e12, 0x07122607, 0x1249e542, - 0x4be53e07, 0xaffde4f0, 0x12fcfe35, 0x8c222209, - 0x12658d64, 0x3c40e708, 0x644565e5, 0x09121070, - 0x3ee5c311, 0x40760712, 0xa208123b, 0x3ee51880, - 0x403895c3, 0x383e851d, 0x05603ee5, 0x80393f85, - 0x39398503, 0x07123a8f, 0x123ee5b5, 0x3fe56007, - 0x3b8022f0, 0x644565e5, 0x07121170, 0x1205406c, - 0x1f80ab08, 0xe54b0712, 0xe522f041, 0x3895c33c, - 0x3c851d40, 0x603ce538, 0x393d8505, 0x39850380, - 0x123a8f39, 0x3ce5b507, 0xe5600712, 0x1222f03d, - 0x38e5ac07, 0xe5600712, 0x8c22f039, 0x12648d63, - 0x3c40e708, 0x634564e5, 0x09121070, 0x3ee5c311, - 0x40760712, 0xa208123b, 0x3ee51880, 0x403895c3, - 0x383e851d, 0x05603ee5, 0x80393f85, 0x39398503, - 0x07123a8f, 0x123ee5b5, 0x3fe56007, 0x3b8022f0, - 0x634564e5, 0x07121170, 0x1205406c, 0x1f80ab08, - 0xe54b0712, 0xe522f041, 0x3895c33c, 0x3c851d40, - 0x603ce538, 0x393d8505, 0x39850380, 0x123a8f39, - 0x3ce5b507, 0xe5600712, 0x1222f03d, 0x38e5ac07, - 0xe5600712, 0xe522f039, 0x08e5fe0d, 0x0544548e, - 0x157555f5, 0x1282f50f, 0x17122d0f, 0x05312025, - 0x80031575, 0x0b157503, 0x94c30ae5, 0x12385001, - 0x31202014, 0x05150506, 0x15048015, 0xe5151515, - 0x0194c30a, 0x14122150, 0x04312020, 0x02801505, - 0x0ae51515, 0x500194c3, 0x2a0f120e, 0x20251712, - 0x15050531, 0xe52a0f12, 0x0408b415, 0x0280017f, - 0x15e5007f, 0x7e0407b4, 0x7e028001, 0x604fee00, - 0x227f0502, 0x85825585, 0x15e58354, 0x251712f0, - 0x37071222, 0x74ae8375, 0x360712ff, 0xf51a54e0, - 0x13c4e034, 0x35f50754, 0x2460fe24, 0x3c60fe24, - 0x63700424, 0xe52d3175, 0xb674fd08, 0x749f0712, - 0x220790bc, 0x74a20712, 0xc0071290, 0x3c809274, - 0xe53a3175, 0xba74fd08, 0x749f0712, 0x220790c0, - 0x74c30712, 0xc00712c4, 0x2080c874, 0xe5353175, - 0xb874fd08, 0x749f0712, 0x44edffbe, 0x22079007, - 0xefa3f0cf, 0x12c274f0, 0xc674c007, 0x0744edff, - 0xa3f0cfa3, 0x7522f0ef, 0x8e220134, 0x8c598f58, - 0x8a5b8d5a, 0x755d8b5c, 0xf5e4015e, 0x661e125f, - 0xd35e5985, 0x5b955ee5, 0x07125ae5, 0xe5575078, - 0x705c455d, 0x37071230, 0xe5928375, 0x3607125e, - 0xe5c68375, 0x3607125e, 0xe5c88375, 0x3607125e, - 0xe5908375, 0x3607125e, 0xe5c28375, 0x3607125e, - 0x80c48375, 0x3f071203, 0xaff05ee5, 0xad007e5f, - 0x125cac5d, 0x5eaf4904, 0x5dad007e, 0x0b125cac, - 0x025e05d9, 0x5dabcf14, 0x5bad5caa, 0x59af5aac, - 0x1b0258ae, 0x8d5c8c7b, 0x8b5e8a5d, 0x0160755f, - 0xf561f5e4, 0x1263f562, 0x608f661e, 0x9560e5d3, - 0x125ce55d, 0x61507807, 0x5e455fe5, 0x07122770, - 0xb6837537, 0x071260e5, 0xb8837536, 0x071260e5, - 0xba837536, 0xaff060e5, 0xe5007e61, 0x7d081262, - 0x80360a12, 0x24079019, 0xe5420712, 0x36071260, - 0xe48e8375, 0x74360712, 0x36071201, 0x63aff0e4, - 0x5fad007e, 0x04125eac, 0x7e60af49, 0xac5fad00, - 0x8b12125e, 0x15026005, 0xf5e42258, 0xaf59f558, - 0x0744ef08, 0x837582f5, 0xc4fde0d0, 0x5af50f54, - 0xf50744ef, 0x80837582, 0x12f00174, 0x83759a08, - 0xf045e582, 0xf50744ef, 0x8a837582, 0x12f0ff74, - 0x07127419, 0xbc837537, 0x12ef54e0, 0x83753607, - 0xef54e0be, 0x75360712, 0x54e0c083, 0x360712ef, - 0xe0bc8375, 0x07121044, 0xbe837536, 0x121044e0, - 0x83753607, 0x1044e0c0, 0xe558aff0, 0x7b081259, - 0xe4360a02, 0x017d58f5, 0x35af59f5, 0x0912fcfe, - 0x37071222, 0x74b68375, 0x36071210, 0x74b88375, - 0x36071210, 0x74ba8375, 0x36071210, 0x74bc8375, - 0x36071210, 0x74be8375, 0x36071210, 0x74c08375, - 0x36071210, 0xe4908375, 0x75360712, 0x12e4c283, - 0x83753607, 0x0712e4c4, 0x92837536, 0x360712e4, - 0xe4c68375, 0x75360712, 0xf0e4c883, 0xe5fe58af, - 0x7d081259, 0xe5360a02, 0x6ce430e2, 0xc054e7e5, - 0x64704064, 0x54c409e5, 0x08e5fe30, 0xe025e025, - 0xfe4ec054, 0x4e3f54ef, 0xae2be5fd, 0xc302782a, - 0xce33ce33, 0x82f5f9d8, 0xf0ed838e, 0x2aae2be5, - 0x33c30278, 0xd8ce33ce, 0x82f5fff9, 0xe5a3838e, - 0x828ff0fe, 0xa3a3838e, 0x8ff0fde5, 0xa3838e82, - 0xfce5a3a3, 0x2be5c3f0, 0x2ae5fa94, 0x08500094, - 0x2be52b05, 0x2a050270, 0xe4ffe422, 0x56f558f5, - 0x827457f5, 0xb70e12fc, 0xf5e0838c, 0xf07f5410, - 0x804410e5, 0xed4b0f12, 0x120a7ef0, 0x8375b70e, - 0xe020e0a0, 0x05f4de26, 0x7057e557, 0xe5560502, - 0xfd012414, 0xd3fc33e4, 0xe59d57e5, 0xd9409c56, - 0x20940ae5, 0x0a050250, 0xc208e143, 0xb70e1231, - 0xe0a68375, 0x12651255, 0x31d20370, 0x2231c222, - 0xe0260790, 0xf5e0a3fa, 0xe0838a82, 0x39e541f5, - 0x404195c3, 0x9539e526, 0xee9fc341, 0x40780712, - 0x80017c04, 0xe5007c02, 0x603f6441, 0x80017b04, - 0xec007b02, 0x0529605b, 0xc3288041, 0x399541e5, - 0x12ee9fc3, 0x04407807, 0x0280017f, 0x41e5007f, - 0x017e0460, 0x007e0280, 0x04605eef, 0x03804115, - 0x85413985, 0xe522403a, 0x60e430e2, 0xe230e1e5, - 0x7009e55b, 0x80017f04, 0xe5007f02, 0x7e047008, - 0x7e028001, 0x605fee00, 0xf8f95343, 0xe430e2e5, - 0x30e1e53b, 0xfa432ee2, 0xfbfa5302, 0x9010f5e4, - 0x10e57094, 0x30e1e5f0, 0x9490e7e2, 0x1065e070, - 0xfa430360, 0x90100504, 0x10e57094, 0x12e670f0, - 0xe1800600, 0x53fdfa53, 0xc080fbfa, 0x12548f22, - 0xe1e50600, 0x7f04e030, 0x7f028001, 0xd37ee500, - 0x04400594, 0x0280017e, 0x4fee007e, 0x54853d60, - 0x20e2e511, 0xce7432e1, 0x303c1b12, 0x017d04e7, - 0x007d0280, 0x838e828f, 0x04e630e0, 0x0280017f, - 0x5def007f, 0x1c121570, 0x12ce7467, 0xe6303c1b, - 0x8044e007, 0x80f943f0, 0x22f31712, 0xe5f70e12, - 0x25e02516, 0xf53024e0, 0x1a34e482, 0x93e483f5, - 0x16e50ff5, 0xe025e025, 0x82f53124, 0xf51a34e4, - 0xf593e483, 0x180f120e, 0x0fe510f5, 0x0e12f054, - 0x8c8375ca, 0x0fe5f0ef, 0x120ce030, 0x8375b70e, - 0x4044e086, 0x120a80f0, 0x8375b70e, 0xbf54e086, - 0x440f12f0, 0xe5828375, 0x7f22f00e, 0xb3161205, - 0x12b70e12, 0x0274e60e, 0xfe8e74f0, 0x12b70e12, - 0xf0efbe0e, 0x12701575, 0x34208a1e, 0x10157505, - 0x15750380, 0x8a1e1250, 0x74043420, 0x74028010, - 0xf51525f0, 0xd40e1215, 0x1012f0ef, 0x17342091, - 0x306415e5, 0x10740c60, 0x15f51525, 0xe40380b4, - 0x0e1215f5, 0x22f0efd4, 0x2a0790e4, 0x12f0a3f0, - 0x83753707, 0x7f54e082, 0xe0360712, 0x12f08044, - 0x08123d00, 0xa0837598, 0x1ae020e0, 0xe02b0790, - 0x0670f004, 0xe02a0790, 0x0790f004, 0x10b4e02a, - 0xb4e0a3e1, 0x44eedc00, 0x44effca6, 0x8c82f507, - 0x32f5e083, 0xfea844ee, 0xf50744ef, 0xe0838e82, - 0x122233f5, 0x83759808, 0x54c4e0d0, 0x4375fd0f, - 0xff447501, 0x74b70812, 0x3b75f004, 0x6014ed01, - 0x0b60140c, 0x240f6014, 0x800b7003, 0x12008009, - 0xf004b408, 0x08120680, 0xf00474b4, 0xfe8244ee, - 0xf50744ef, 0xe5838e82, 0xcb081245, 0xe5828375, - 0x36071231, 0xe0868375, 0x22f00844, 0x000f1f01, - 0x90002003, 0x920f2000, 0x940f2100, 0x960f2200, - 0x980f2300, 0x9a0f2400, 0x9c0f2500, 0x9e0f2600, - 0xa00f2700, 0xa2012001, 0xa4012101, 0xa6012201, - 0xa8012301, 0xaa012401, 0xac012501, 0xae012601, - 0xb0012701, 0xb4012801, 0xb60f2800, 0xb80f2840, - 0xcb012861, 0xeecacbef, 0xe4017fca, 0x704aebfd, - 0xf508e524, 0x12b67482, 0x08e52c08, 0xb87482f5, - 0xe52c0812, 0x7482f508, 0x2c0812ba, 0x007c007e, - 0x80360a12, 0x26079012, 0xe5420712, 0x0790f041, - 0x42071224, 0x12f040e5, 0x83753707, 0x0712e48e, - 0x12017436, 0xf0e43607, 0x26f5e422, 0xe15327f5, - 0x752af5fe, 0x08f5012b, 0x1612017f, 0x1c3030b3, - 0xe4291a90, 0x9010f593, 0x93e4f91f, 0x009010f5, - 0xf593e441, 0xf90f9010, 0x10f593e4, 0x1612027f, - 0x550f12b3, 0x1612037f, 0x060012b3, 0xe730e2e5, - 0x00101209, 0x12033030, 0x00020011, 0x0be5f047, - 0xe025e025, 0x82f58224, 0xf50734e4, 0x88742283, - 0x4408e5fe, 0x82f5ff07, 0x22e0838e, 0x4408e5f0, - 0x2282f507, 0xc054e0f0, 0x838e828f, 0x44ef22f0, - 0x7582f507, 0x54e08683, 0x0094d310, 0x0790f022, - 0xf004e015, 0x44effe22, 0x8e82f507, 0x8e22e083, - 0x12618f60, 0xffe4661e, 0xeeceedce, 0xe56195d3, - 0x78071260, 0x20743940, 0xe482f52e, 0x83f50334, - 0xff0370e0, 0x08122680, 0x9fc3fdef, 0xedcf1e40, - 0x704aebcf, 0x12428d0b, 0x41f5fb08, 0x0c80408e, - 0xf5ef0812, 0xfb081238, 0x3a8e39f5, 0x22bc801e, - 0xe5015875, 0x120c7035, 0xf5e0d907, 0xe507124a, - 0xe54cf5e0, 0x0c04b435, 0xe0f10712, 0x07124af5, - 0x4cf5e0fd, 0x01b435e5, 0x80017f04, 0xe5007f02, - 0x0402b435, 0x0280017e, 0x4fee007e, 0x08120c60, - 0x4af5e009, 0xe0150812, 0x41854cf5, 0x4b408549, - 0x015b7522, 0x12240790, 0x54e04207, 0x94d3ff1f, - 0x8f045002, 0xef058058, 0x58f5fe24, 0x1894c3ef, - 0x59750540, 0xef048018, 0x8559f504, 0x58af5a43, - 0x59ad007e, 0x5bab007c, 0x1512007a, 0x7e5aaf41, - 0x8c171200, 0x007e5baf, 0x907f1a02, 0x93e4fd10, - 0xf02e0790, 0x122d1412, 0x34e5cf19, 0x07123570, - 0xce837537, 0x1313ffe0, 0xf5075413, 0x240f5436, - 0x240b60fe, 0x240a60fe, 0x02187003, 0x1e026f1d, - 0x14101252, 0x1255f5e4, 0x5505461d, 0x94c355e5, - 0x22f44005, 0xedc3fce4, 0xf5effa9f, 0x00827583, - 0x93e4ff79, 0xa3cc6ccc, 0xf6daf8d9, 0xe430e2e5, - 0xede58c02, 0xefffff24, 0xf5ff8275, 0x6c93e483, - 0x017f0370, 0x22007f22, 0x75b70e12, 0xf0e48083, - 0x074408e5, 0x75b00e12, 0x0e128483, 0x868375b5, - 0x75b50e12, 0x54e08c83, 0xb60e12f3, 0x128e8375, - 0x8375b50e, 0xfb54e094, 0x071222f0, 0x8e837537, - 0x360712e4, 0x07120174, 0x0812e436, 0x8c8375cb, - 0x122044e0, 0x54e0cb08, 0x8474f0df, 0xf5820885, - 0x7f54e083, 0x8044e0f0, 0x567522f0, 0xf5fde401, - 0xfe35af57, 0x220912fc, 0x121d1c12, 0x1b123b1e, - 0x7e57afcc, 0x7c56ad00, 0x49041200, 0x007e56af, - 0x75ee1102, 0xfde40156, 0x35af57f5, 0x0912fcfe, - 0x1d1c1222, 0x123b1e12, 0x57afcc1b, 0x56ad007e, - 0x0412007c, 0x7e56af49, 0xee110200, 0x1216f5e4, - 0xe5fef70e, 0xff054408, 0x8f180f12, 0xf0838e82, - 0x16e51605, 0x401494c3, 0x1208e5e6, 0xf0e4de0e, - 0x58f5e422, 0x5af559f5, 0x58adfeff, 0x220912fc, - 0x007e047f, 0x007c58ad, 0x7f220912, 0xad007e02, - 0x02007c58, 0x3ce52209, 0xe5fc3e25, 0xfb002442, - 0xecfa33e4, 0x12ea9bc3, 0x0b407807, 0x3de5428c, - 0x41f53f25, 0x1222408f, 0x74221809, 0x8518f584, - 0x19851908, 0x83188582, 0xf07f54e0, 0xf08044e0, - 0xf08044e0, 0x704eef22, 0x3707120b, 0xe0d28375, - 0x22f0df54, 0x75370712, 0x44e0d283, 0x7522f020, - 0x07900158, 0x42071226, 0xf53f54e0, 0x3f071241, - 0xf53f54e0, 0x56752240, 0x57f5e402, 0xafbd1d12, - 0xad007e57, 0x02007c56, 0xf5e44904, 0xf541f542, - 0xf538f540, 0x223af539, 0xff0754ef, 0xf854f9e5, - 0x22f9f54f, 0xfee4017f, 0xffbe0e0f, 0x0e1222fb, - 0x12f0efd4, 0x00229110, 0x00000000, 0x00000000, + 0x058d04d8, 0x040f702f, 0x00868013, 0x0380001d, + 0x05301000, 0x06000008, 0x0484860b, 0x06420001, + 0x04818607, 0x02800625, 0x020e0008, 0x07c00000, + 0x050fd009, 0x040fd008, 0x05301000, 0x06000008, + 0x04848615, 0x06420001, 0x05818611, 0x02800625, + 0x007a0102, 0x04000101, 0x05600809, 0x050f80ff, + 0x073fa00a, 0x06000001, 0x020e0008, 0x04848620, + 0x06420001, 0x0481861c, 0x02800625, 0x030e0009, + 0x07c00000, 0x052e400f, 0x00208040, 0x03800605, + 0x070fc0ff, 0x040f8010, 0x032fa009, 0x03800628, + 0x0c83b152, 0x00000000, 0x00000000, 0x0000400e, + 0x00000808, 0x00000803, 0x00011f0f, 0x02080b02, + 0xe6e5610b, 0x7f04e630, 0x7f028001, 0x30e2e500, + 0x017e04e4, 0x007e0280, 0x08605fee, 0xe4f7f953, + 0x0b80fef5, 0x16120a7f, 0xf7f953b3, 0x7530fe75, + 0xf5e408fc, 0x08f943fd, 0x06000222, 0x000f1f01, + 0x75002003, 0xf5e40151, 0xf553f552, 0x7f7ef552, + 0x3d040204, 0x520536c2, 0x94d352e5, 0x7505400c, + 0x36d20152, 0x740c0790, 0x74a3f007, 0xf5e4f0ff, + 0x90f0a30c, 0xa3f01407, 0x200b75f0, 0xf5e409f5, + 0xd308e508, 0x03403094, 0x12090402, 0x0b150600, + 0x047008e5, 0x0280017f, 0x09e5007f, 0x017e0470, + 0x007e0280, 0x05605fee, 0xd2f31712, 0xf7e15335, + 0x094508e5, 0x250be5ff, 0x24e025e0, 0xe482f583, + 0x83f50734, 0xe285f0ef, 0xd352e520, 0x0d400194, + 0xe02a1b12, 0x4064a054, 0x04020370, 0xf8f95300, + 0xe4709490, 0x10f5e0f0, 0x1e1209af, 0xef08af74, + 0x82f50844, 0xe0808375, 0x44ef29f5, 0x7582f507, + 0xf5e09e83, 0xd3405422, 0x1e400094, 0xf05429e5, + 0x1b122170, 0x8044e02a, 0x5422e5f0, 0x70086530, + 0x2a1b1209, 0xf0bf54e0, 0x1b120980, 0xf040742a, + 0x12000402, 0x8375491b, 0xf0ff74ae, 0x007e08af, + 0xf50744ef, 0xe5fde082, 0x25e0250b, 0xf58124e0, + 0x0734e482, 0xf0ed83f5, 0xe00e0790, 0x44eff004, + 0x7582f507, 0xf5e09883, 0x5a1b1228, 0x1b120c40, + 0x0144e02a, 0x02691b12, 0x08affb03, 0x8074007e, + 0x8dcdefcd, 0xe083f582, 0x120ae030, 0x44e02a1b, + 0x0402f020, 0x2a1b1200, 0xf0df54e0, 0x12ae44ee, + 0xe430711b, 0x00040203, 0x1b129e74, 0x03e0203c, + 0x8f000402, 0xe0838e82, 0x0203e020, 0x1b120004, + 0x1044e02a, 0x4408e5f0, 0x7582f506, 0x44e09e83, + 0x08aff004, 0x44ef007e, 0xe082f506, 0x1234e220, + 0x44e02a1b, 0xe4e5f008, 0x7d04e630, 0x7d028001, + 0xc37ee500, 0x04500494, 0x0280017c, 0x4dec007c, + 0x35c20560, 0xee000402, 0x1b12d244, 0xf0404471, + 0x12000402, 0x54e02a1b, 0x1b12f0f7, 0xd2837549, + 0xf0bf54e0, 0xe0140790, 0x7ee5f004, 0x7e750370, + 0x7e08af01, 0x5a1b1200, 0x1b121240, 0x0144e02a, + 0xe0291b12, 0x1b120254, 0x00040269, 0xe02a1b12, + 0x1b120244, 0xfe54e029, 0xee35c2f0, 0x828f8044, + 0xf5e083f5, 0x44e35417, 0x9074f010, 0x4408e5fc, + 0x82f5fd07, 0x54e0838c, 0x0207903f, 0xc054e0f0, + 0x838c828d, 0x129274f0, 0x07903c1b, 0x501b1203, + 0x1b128274, 0x0407903c, 0x74501b12, 0x3c1b12b4, + 0x12050790, 0x9474501b, 0x4408e5fe, 0x411b1206, + 0xe03010f5, 0x8037d204, 0xe537c202, 0x8f7f5410, + 0xf0838e82, 0x12304430, 0x80543a1b, 0x400094d3, + 0x8039d204, 0x8f39c202, 0xe0838e82, 0x12f08044, + 0x40543a1b, 0x400094d3, 0x803ad204, 0x8f3ac202, + 0xe0838e82, 0x74f04044, 0x08e5fe92, 0x1b120644, + 0x04e73041, 0x028038d2, 0x828f38c2, 0x54e0838e, + 0x1e12f07f, 0x0af5e407, 0x80020320, 0x03433003, + 0x20171912, 0x03800202, 0x12034230, 0x3030970c, + 0x17191206, 0x12970c12, 0x1b124f0d, 0xfb54e02a, + 0xc30ae5f0, 0x46400194, 0x1208e143, 0x44e02a1b, + 0xe4e5f004, 0x122ae720, 0x8375491b, 0x0854e0d2, + 0x400094d3, 0x80017f04, 0xe5007f02, 0x0194c30a, + 0x017e0440, 0x007e0280, 0x05605eef, 0x80981d12, + 0x491b1217, 0xe0d28375, 0x02f00844, 0x1b120004, + 0xd2837549, 0xf0f754e0, 0x7f071e12, 0xb3161208, + 0x12fe8e74, 0x838e491b, 0x5410f5e0, 0x10e5f0fe, + 0xe5ff0144, 0x44edfd08, 0xef82f507, 0x5410e5f0, + 0x44edfffe, 0xef82f507, 0x75481b12, 0x44e08683, + 0x481b1210, 0xf01044e0, 0xe02a1b12, 0x0144fd54, + 0x2a1b12ff, 0x691b12ef, 0xe50c3230, 0xf5084408, + 0x82837582, 0xaff00574, 0x5918120b, 0x08251074, + 0x000208f5, 0xe5090585, 0x0794d309, 0x00020350, + 0xd37ee582, 0x04400094, 0x0280017f, 0x7ee5007f, + 0x50fa94c3, 0x80017e04, 0xee007e02, 0x0502605f, + 0x0b35307e, 0x7f01e143, 0xb3161209, 0x53580002, + 0x0002fee1, 0x8f6a8e58, 0x8d6c8c6b, 0x016e756d, + 0x75016f75, 0xf5e40170, 0xf574f573, 0x2f079075, + 0xf53cf5f0, 0xf546f53e, 0xf53df547, 0xe56ff53f, + 0xe50e706f, 0x126a456b, 0x83753707, 0x803a7480, + 0x37071208, 0x74808375, 0x3607121a, 0xe0868375, + 0xe4f00844, 0x74c36ef5, 0xff6e953f, 0x75680812, + 0xf0ef8283, 0x12741912, 0x33e5d308, 0x070912f0, + 0x40be0812, 0x706fe5e1, 0x3707120b, 0x74808375, + 0x0980f036, 0x75370712, 0x16748083, 0x016e75f0, + 0x75370712, 0x6ee5b483, 0x741912f0, 0x6e253f74, + 0x34e482f5, 0xe583f500, 0xbf74f033, 0x82f56e25, + 0x120034e4, 0xd840be08, 0xf570f5e4, 0xf547f546, + 0x0709126e, 0xfee083f5, 0xe0d30812, 0x0024007c, + 0xfe3eecff, 0xefd33bad, 0x509cee9d, 0x80017b04, + 0xe5007b02, 0x7a047070, 0x7a028001, 0x605aeb00, + 0x466e8506, 0xd3017075, 0x9cee9def, 0x017f0450, + 0x007f0280, 0x01b470e5, 0x80017e04, 0xef007e02, + 0x8503605e, 0x6e05476e, 0x7f646ee5, 0x46e5a370, + 0x47e50560, 0x85037eb4, 0x6fe54746, 0x46850870, + 0x77478576, 0x74c30e80, 0xf546957f, 0x7f74c378, + 0x79f54795, 0x37706fe5, 0x476546e5, 0x73750c70, + 0x01747501, 0x3df53cf5, 0xf5e43580, 0x47e5c34e, + 0x3cf54695, 0x71f513c3, 0x72f54625, 0x403f94c3, + 0x3df5e405, 0x74c34080, 0xf572953f, 0xe537803d, + 0x70476546, 0x0173750f, 0xf5017575, 0x753ff53e, + 0x2280014e, 0xc34ef5e4, 0x469547e5, 0x13c33ef5, + 0x462571f5, 0x94d372f5, 0xe405503f, 0x06803ff5, + 0xc12472e5, 0x6f053ff5, 0x94c36fe5, 0x02035002, + 0x6de57304, 0x02706c45, 0x74e50480, 0x07907545, + 0x017ff02f, 0x04603ee5, 0x14703ce5, 0xf53cf5e4, + 0xf53ef53d, 0xdf08123f, 0x02f00470, 0x7a80b106, + 0x95c33ce5, 0xe507403e, 0xff3e953c, 0xe5c30680, + 0xff3c953e, 0x95d376e5, 0x85054079, 0x03807a76, + 0xe57a7985, 0x7895c377, 0x77850550, 0x8503807b, + 0x7be57b78, 0x407a95d3, 0x957be530, 0xf53cf57a, + 0x7be5c33e, 0x07907a95, 0x3ce5f019, 0x71f513c3, + 0x72f57a25, 0x403f94c3, 0x3df5e405, 0x74c31f80, + 0xf572953f, 0x803ff53d, 0x3cf5e414, 0x07903ef5, + 0x0812f019, 0xf00370df, 0x01740380, 0x680812f0, + 0xe0d08375, 0xadfe0f54, 0x7e02703c, 0x020fbe07, + 0xfbee807e, 0x749bd3ef, 0x4098f880, 0x3cf5e41f, + 0x08123ef5, 0xf00370df, 0x01741280, 0xfb08e5f0, + 0xf50744eb, 0xd2837582, 0xf01044e0, 0xebfb08e5, + 0x82f50944, 0xed9e8375, 0x0744ebf0, 0x837582f5, + 0x12f0edca, 0x83756808, 0x22f0efcc, 0x074408e5, + 0x837582f5, 0xf054e0bc, 0x4408e5f0, 0x7582f507, + 0x54e0be83, 0x08e5f0f0, 0x82f50744, 0xe0c08375, + 0xe5f0f054, 0xf5074408, 0x90f02282, 0xfee02807, + 0x82f5e0a3, 0x8522838e, 0x41854242, 0x40408541, + 0xf52fc074, 0x3e027482, 0x42e583f5, 0x2fe074f0, + 0x027482f5, 0x2283f53e, 0xfd2942e5, 0xe5fc33e4, + 0xec9dc33c, 0x74f88064, 0xf5229880, 0x0790e083, + 0xfd1f5422, 0xe0a3fae0, 0x838a82f5, 0x9022f0ed, + 0xfce02207, 0x82f5e0a3, 0x9022838c, 0xedff2407, + 0xf0cf0744, 0x22f0efa3, 0x85383885, 0x3a853939, + 0x2fc0743a, 0x027482f5, 0x2283f53e, 0xff260790, + 0xcf0744ed, 0xf0efa3f0, 0xa074f022, 0x7482f52f, + 0x83f53e02, 0x25c07422, 0xe482f511, 0x83f50134, + 0x25007422, 0xe482f511, 0x83f50234, 0x25607422, + 0xe482f511, 0x83f50334, 0x25807422, 0xe482f511, + 0x83f50334, 0x25e07422, 0xe482f511, 0x83f50334, + 0x25407422, 0xe482f511, 0x83f50634, 0x2f807422, + 0x027482f5, 0x2283f53e, 0x82e583f5, 0x82f50744, + 0x22f040e5, 0x11254074, 0x34e482f5, 0x2283f502, + 0x1125c074, 0x34e482f5, 0x2283f503, 0x11250074, + 0x34e482f5, 0x2283f506, 0x11252074, 0x34e482f5, + 0x2283f506, 0xedfd08e5, 0x82f50744, 0xf041e522, + 0x016465e5, 0x7e226445, 0x007afb00, 0x22007cfd, + 0x11252074, 0x34e482f5, 0xa0742202, 0x82f51125, + 0x220334e4, 0x007e08af, 0xf50744ef, 0x3e852282, + 0x413f8542, 0x8522408f, 0x3d85423c, 0x22408f41, + 0x903f4575, 0xf0e42007, 0x83f522a3, 0x05f032e5, + 0xc36ee56e, 0xf0224094, 0x064408e5, 0x742282f5, + 0xf56e2500, 0x0034e482, 0xe52283f5, 0x906c456d, + 0xe4222f07, 0xd33ce5f9, 0x74223e95, 0x82f52e80, + 0xf50234e4, 0x7422e083, 0x82f52ea0, 0xf50234e4, + 0x7422e083, 0xf56e2580, 0x0034e482, 0xfd422522, + 0x22fc33e4, 0x85424285, 0x40854141, 0x4ced2240, + 0x09020360, 0x704eeff2, 0x26079037, 0xe0960712, + 0xd90712fd, 0x0790f0ed, 0x96071228, 0x0712fde0, + 0x12f0ede5, 0x54e09307, 0x0812fd1f, 0xed83f584, + 0x240790f0, 0xe0960712, 0x12fd1f54, 0xf0ed3808, + 0x4e0464ef, 0x07903770, 0x96071226, 0x0712fde0, + 0x90f0edf1, 0x07122807, 0x12fde096, 0xf0edfd07, + 0xe0930712, 0x12fd1f54, 0x83f58e08, 0x0790f0ed, + 0x96071224, 0xfd1f54e0, 0xed440812, 0x0164eff0, + 0x7d04704e, 0x7d028001, 0x0264ef00, 0x7f04704e, + 0x7f028001, 0x604def00, 0x26079078, 0xe0420712, + 0x090812ff, 0x3e0712ef, 0x0812ffe0, 0x90f0ef15, + 0x07122207, 0x1f54e042, 0x500812ff, 0x0790f0ef, + 0x42071224, 0xff1f54e0, 0xef5c0812, 0x071222f0, + 0x12f0e4d9, 0xf0e4e507, 0xf5840812, 0x12f0e483, + 0x14743808, 0xf10712f0, 0x0712f0e4, 0x12f0e4fd, + 0x83f58e08, 0x0812f0e4, 0xf0147444, 0xe4090812, + 0x150812f0, 0x0812f0e4, 0x12f0e450, 0x14745c08, + 0x648c22f0, 0x668a658d, 0xf5e4678b, 0x704eef69, + 0x161d0203, 0xe568f5e4, 0x70664567, 0x37071232, + 0xe4908375, 0x75360712, 0x12e4c283, 0x83753607, + 0x0812e4c4, 0x12297073, 0x83753707, 0x0712e492, + 0xc6837536, 0x360712e4, 0xe4c88375, 0x901180f0, + 0x07122607, 0x0812e442, 0x12057073, 0xf0e43f07, + 0x12161d12, 0x67e5801e, 0x33706645, 0x75370712, + 0x41e59083, 0x75360712, 0x41e5c283, 0x75360712, + 0x0812c483, 0x12297071, 0x83753707, 0x1240e592, + 0x83753607, 0x1240e5c6, 0x83753607, 0x900e80c8, + 0x07122607, 0x71081242, 0x07120670, 0xf040e53f, + 0x007e69af, 0x66ac67ad, 0x12490412, 0x83753707, + 0x94d3e0ca, 0x050c5000, 0xc368e568, 0x03500594, + 0x224b0a02, 0x75f7f953, 0xf5e410fc, 0x30fe75fd, + 0xf943fff5, 0x20e6e508, 0xff780be7, 0xfdd8f6e4, + 0x80fee653, 0xe4087809, 0x53fdd8f6, 0x8175fee6, + 0xa8f5e480, 0xa9c2a8d2, 0xe2e5afd2, 0x2005e520, + 0x038002e6, 0xe502e143, 0x0ee020e2, 0x7f000090, + 0xe4087e00, 0xfcdfa3f0, 0x0b02fade, 0x01fa43b5, + 0xf0c0e0c0, 0x82c083c0, 0x1112d0c0, 0xd0d0d018, + 0xd083d082, 0x53e0d0f0, 0x0232fefa, 0x93e4d51a, + 0x93e4f8a3, 0xdf08f6a3, 0xe42980f9, 0x54f8a393, + 0xc80c2407, 0x54c433c3, 0xc820440f, 0xf4044083, + 0x46018056, 0x80e4dff6, 0x0402010b, 0x40201008, + 0xff0f9080, 0x93017ee4, 0xffa3c160, 0xe5303f54, + 0xfe1f5409, 0x60a393e4, 0x54cf0e01, 0x60e025c0, + 0x80b840ad, 0x8d608cfe, 0xe7081261, 0x0d402074, + 0x7482f52f, 0x83f53e03, 0x80f03ee5, 0x82f52f0b, + 0xf53e0374, 0xf03ce583, 0x95d33ce5, 0xe53c403e, + 0x70604561, 0x0912e910, 0x123ee511, 0x3b407507, + 0x80a20812, 0xc33ee518, 0x1d403895, 0xe5383e85, + 0x8505603e, 0x0380393f, 0x8f393985, 0x2108123a, + 0x07123ee5, 0xf03fe5cd, 0xe5438022, 0x70604561, + 0x6c071219, 0x08120540, 0x122780ab, 0x08121809, + 0x1242e521, 0x41e5cd07, 0x3ce522f0, 0x403895c3, + 0x383c851d, 0x05603ce5, 0x80393d85, 0x39398503, + 0x08123a8f, 0x123ce521, 0x3de5cd07, 0x388522f0, + 0x39398538, 0x123a3a85, 0x38e52108, 0xe5cd0712, + 0x7f22f039, 0xb3161206, 0x12e41c12, 0x0e12b70e, + 0x0a44e0e6, 0xfe8e74f0, 0x12b70e12, 0xf0efbe0e, + 0xe53028e5, 0x0180d303, 0x750540c3, 0x03802014, + 0x12081475, 0x8375b70e, 0xf014e58a, 0x7505ffb4, + 0x06808012, 0x13c314e5, 0xf5e412f5, 0x127ff516, + 0x1312b818, 0xc30ae5a3, 0x09500194, 0x16e51605, + 0x401494c3, 0x20e4e5ea, 0x0e1228e7, 0xd28375b7, + 0xd30854e0, 0x04400094, 0x0280017f, 0x0ae5007f, + 0x400194c3, 0x80017e04, 0xef007e02, 0x1203605e, + 0x7fe5981d, 0x401194c3, 0xb70e1214, 0xe0d28375, + 0xe5f08044, 0x0fe720e4, 0x80981d12, 0xb70e120a, + 0xe0d28375, 0x12f07f54, 0x7422e41c, 0x82088580, + 0x17e583f5, 0xed0e12f0, 0x0790f0e4, 0x0e12e002, + 0x908375ca, 0x9274f0ef, 0x4408e5fe, 0x82f5ff07, + 0x54e0838e, 0x0790fdc0, 0x3f54e003, 0x8e828f4d, + 0x0790f083, 0x0e12e004, 0x828375ca, 0x0790f0ef, + 0xedffe005, 0x82f50744, 0xefb48375, 0x75b60e12, + 0x54e08083, 0x3730f0bf, 0x440f120a, 0xe0948375, + 0x30f08044, 0x0f120a38, 0x92837544, 0xf08044e0, + 0xe43028e5, 0x0a39201a, 0x75b70e12, 0x54e08883, + 0x3a20f07f, 0xb70e120a, 0xe0888375, 0x74f0bf54, + 0x0e12fe8c, 0xe0838eb7, 0x0e120f54, 0x868375b6, + 0xf0bf54e0, 0x064408e5, 0x75b00e12, 0xf0e48a83, + 0x704eef22, 0xd9071226, 0x0790fde0, 0x88071226, + 0xe0e50712, 0x280790fd, 0x12880712, 0x07128408, + 0x3808127f, 0x240790e0, 0xef850712, 0x704e0464, + 0xf1071229, 0x0790fde0, 0x88071226, 0xe0fd0712, + 0x280790fd, 0x12880712, 0x07128e08, 0x4408127f, + 0xfd1f54e0, 0x12240790, 0x64ef8807, 0x04704e01, + 0x0280017d, 0x64ef007d, 0x04704e02, 0x0280017f, + 0x4def007f, 0x08123560, 0x90ffe009, 0x07122607, + 0x12f0ef96, 0xffe01508, 0x12280790, 0xf0ef9607, + 0xe0500812, 0x12ff1f54, 0xf0ef9307, 0xe05c0812, + 0x90ff1f54, 0x07122407, 0x22f0ef96, 0x837582f5, + 0xe5f0e482, 0xf5074408, 0x838e2282, 0x5410f5e0, + 0x10e5f0fe, 0xe5ff0144, 0x44edfd08, 0x2282f507, + 0x54c415e5, 0x08e5ff07, 0x0844edfd, 0x837582f5, + 0x83752282, 0x4044e080, 0x4408e5f0, 0x7582f508, + 0xe5228a83, 0x25e02516, 0xf52f24e0, 0x1a34e482, + 0x93e483f5, 0x43220df5, 0xe14310e1, 0xfde15380, + 0x2210e185, 0xe02516e5, 0x3224e025, 0x34e482f5, + 0xe483f51a, 0x55852293, 0x83548582, 0x22f015e5, + 0x2054e2e5, 0x220094d3, 0x4054e2e5, 0x220094d3, + 0x064408e5, 0xfd2282f5, 0xebfb08e5, 0x82f50744, + 0x53f5e422, 0x40340f12, 0x80017f04, 0x12007f02, + 0x04403c0f, 0x0280017e, 0x4fee007e, 0x0f020370, + 0x10e185f7, 0x5302e143, 0xe1850fe1, 0x51f5e410, + 0x3f54e3e5, 0x0f1252f5, 0xad1d403c, 0x1251af52, + 0x60efb01c, 0x10e18508, 0x8040e143, 0xbfe1530b, + 0x120b0f12, 0xfb800600, 0x3f54e3e5, 0xe4e551f5, + 0x52f53f54, 0x40340f12, 0xaf52ad1d, 0xb01c1251, + 0x850860ef, 0xe14310e1, 0x530b8020, 0x0f12dfe1, + 0x0600120b, 0x0f12fb80, 0x7f044034, 0x7f028001, + 0x3c0f1200, 0x017e0440, 0x007e0280, 0x03604fee, + 0x220e0f12, 0x01001f01, 0x00002003, 0x02001102, + 0x10024010, 0x00000090, 0x00000000, 0x1f011f01, + 0x1257f5e4, 0x15123f16, 0x1012e4c6, 0xb7141256, + 0x12260790, 0x12e44207, 0xf0e43e07, 0x12561012, + 0x0790b714, 0x42071226, 0x071241e5, 0xf040e53e, + 0x007e57af, 0x007c56ad, 0xaf490412, 0x02007e56, + 0x90ffee11, 0xe0a32007, 0x56f5e4fd, 0xfcfe40f5, + 0x12fa56ab, 0x0f7f5111, 0xf5e4187d, 0xfe40f556, + 0xfa56abfc, 0xaf411512, 0x12007e56, 0xffe47f1a, + 0x1f7d56f5, 0xfcfe40f5, 0x22fa56ab, 0x55f5e422, + 0x74fd08e5, 0xed56f5a0, 0x57f50744, 0xe53028e5, + 0x0180d303, 0x7f0540c3, 0x0480ef28, 0xc3ef147f, + 0xe454f513, 0xcb0e12f9, 0xe08e8375, 0xefce10f5, + 0x94d3eece, 0xe5264000, 0x12fe5410, 0x83754b0f, + 0xe5f0ed8e, 0xfd014410, 0xf50744eb, 0x85f0ed82, + 0x56858257, 0xe330e083, 0x801e0901, 0xe934c2d4, + 0x405495c3, 0x2234d202, 0x00000f22, 0x90113030, + 0x93e40010, 0x109010f5, 0xf593e410, 0x90101210, + 0x22501112, 0xe730e2e5, 0x0310120e, 0x303030c2, + 0xfc101203, 0xe5213320, 0x2094c3fe, 0xf9530950, + 0x30fe75f7, 0xe508f943, 0x03e730f2, 0xe57ff953, + 0xd37054f1, 0xdf500094, 0x00000022, 0x8f588e22, + 0x8d5a8c59, 0x8b5c8a5b, 0x015e755d, 0xf55ff5e4, + 0x1262f560, 0x83753707, 0xc4ffe0d0, 0x61f50f54, + 0x85661e12, 0xe5d35e59, 0xe55b955e, 0x7807125a, + 0x07124b50, 0xbc837510, 0x125e45e0, 0x83753607, + 0x5e45e0be, 0x75360712, 0x45e0c083, 0x5faff05e, + 0x081260e5, 0x360a127b, 0x007e62af, 0x5cac5dad, + 0xe5490412, 0x7e5eaf61, 0x0503b400, 0x80e21d12, + 0xac5dad07, 0x1713125c, 0x11025e05, 0x1007127a, + 0xe0bc8375, 0x07124045, 0xbe837536, 0x124045e0, + 0x83753607, 0x4045e0c0, 0x588e22f0, 0x5a75598f, + 0x75017901, 0xfbe4015b, 0x75370712, 0x54e0ae83, + 0x0812ff1a, 0x13c4e068, 0xeffe0754, 0x65ee0c70, + 0x90077035, 0xb4e02f07, 0x35af0d01, 0x0e12007e, + 0xcfebcf05, 0xe5211e02, 0x45026459, 0x7f047058, + 0x7f028001, 0x4559e500, 0x7e047058, 0x7e028001, + 0x604fee00, 0x49418523, 0xe54b4085, 0x70584559, + 0xfe5aaf2c, 0xfccde9cd, 0x58aa59ab, 0xaf360a12, + 0x12007e5b, 0x1580211e, 0x007e5baf, 0x90211e12, + 0x07122607, 0x1249e542, 0x4be53e07, 0xaffde4f0, + 0x12fcfe35, 0x8c222209, 0x12658d64, 0x3c40e708, + 0x644565e5, 0x09121070, 0x3ee5c311, 0x40760712, + 0xa208123b, 0x3ee51880, 0x403895c3, 0x383e851d, + 0x05603ee5, 0x80393f85, 0x39398503, 0x07123a8f, + 0x123ee5b5, 0x3fe56007, 0x3b8022f0, 0x644565e5, + 0x07121170, 0x1205406c, 0x1f80ab08, 0xe54b0712, + 0xe522f041, 0x3895c33c, 0x3c851d40, 0x603ce538, + 0x393d8505, 0x39850380, 0x123a8f39, 0x3ce5b507, + 0xe5600712, 0x1222f03d, 0x38e5ac07, 0xe5600712, + 0x8c22f039, 0x12648d63, 0x3c40e708, 0x634564e5, + 0x09121070, 0x3ee5c311, 0x40760712, 0xa208123b, + 0x3ee51880, 0x403895c3, 0x383e851d, 0x05603ee5, + 0x80393f85, 0x39398503, 0x07123a8f, 0x123ee5b5, + 0x3fe56007, 0x3b8022f0, 0x634564e5, 0x07121170, + 0x1205406c, 0x1f80ab08, 0xe54b0712, 0xe522f041, + 0x3895c33c, 0x3c851d40, 0x603ce538, 0x393d8505, + 0x39850380, 0x123a8f39, 0x3ce5b507, 0xe5600712, + 0x1222f03d, 0x38e5ac07, 0xe5600712, 0xe522f039, + 0x08e5fe0d, 0x0544548e, 0x157555f5, 0x1282f50f, + 0x17122d0f, 0x05312025, 0x80031575, 0x0b157503, + 0x94c30ae5, 0x12385001, 0x31202014, 0x05150506, + 0x15048015, 0xe5151515, 0x0194c30a, 0x14122150, + 0x04312020, 0x02801505, 0x0ae51515, 0x500194c3, + 0x2a0f120e, 0x20251712, 0x15050531, 0xe52a0f12, + 0x0408b415, 0x0280017f, 0x15e5007f, 0x7e0407b4, + 0x7e028001, 0x604fee00, 0x227f0502, 0x85825585, + 0x15e58354, 0x251712f0, 0x37071222, 0x74ae8375, + 0x360712ff, 0xf51a54e0, 0x13c4e034, 0x35f50754, + 0x2460fe24, 0x3c60fe24, 0x63700424, 0xe52d3175, + 0xb674fd08, 0x749f0712, 0x220790bc, 0x74a20712, + 0xc0071290, 0x3c809274, 0xe53a3175, 0xba74fd08, + 0x749f0712, 0x220790c0, 0x74c30712, 0xc00712c4, + 0x2080c874, 0xe5353175, 0xb874fd08, 0x749f0712, + 0x44edffbe, 0x22079007, 0xefa3f0cf, 0x12c274f0, + 0xc674c007, 0x0744edff, 0xa3f0cfa3, 0x7522f0ef, + 0x8e220134, 0x8c598f58, 0x8a5b8d5a, 0x755d8b5c, + 0xf5e4015e, 0x661e125f, 0xd35e5985, 0x5b955ee5, + 0x07125ae5, 0xe5575078, 0x705c455d, 0x37071230, + 0xe5928375, 0x3607125e, 0xe5c68375, 0x3607125e, + 0xe5c88375, 0x3607125e, 0xe5908375, 0x3607125e, + 0xe5c28375, 0x3607125e, 0x80c48375, 0x3f071203, + 0xaff05ee5, 0xad007e5f, 0x125cac5d, 0x5eaf4904, + 0x5dad007e, 0x0b125cac, 0x025e05d9, 0x5dabcf14, + 0x5bad5caa, 0x59af5aac, 0x1b0258ae, 0x8d5c8c7b, + 0x8b5e8a5d, 0x0160755f, 0xf561f5e4, 0x1263f562, + 0x608f661e, 0x9560e5d3, 0x125ce55d, 0x61507807, + 0x5e455fe5, 0x07122770, 0xb6837537, 0x071260e5, + 0xb8837536, 0x071260e5, 0xba837536, 0xaff060e5, + 0xe5007e61, 0x7d081262, 0x80360a12, 0x24079019, + 0xe5420712, 0x36071260, 0xe48e8375, 0x74360712, + 0x36071201, 0x63aff0e4, 0x5fad007e, 0x04125eac, + 0x7e60af49, 0xac5fad00, 0x8b12125e, 0x15026005, + 0xf5e42258, 0xaf59f558, 0x0744ef08, 0x837582f5, + 0xc4fde0d0, 0x5af50f54, 0xf50744ef, 0x80837582, + 0x12f00174, 0x83759a08, 0xf045e582, 0xf50744ef, + 0x8a837582, 0x12f0ff74, 0x07127419, 0xbc837537, + 0x12ef54e0, 0x83753607, 0xef54e0be, 0x75360712, + 0x54e0c083, 0x360712ef, 0xe0bc8375, 0x07121044, + 0xbe837536, 0x121044e0, 0x83753607, 0x1044e0c0, + 0xe558aff0, 0x7b081259, 0xe4360a02, 0x017d58f5, + 0x35af59f5, 0x0912fcfe, 0x37071222, 0x74b68375, + 0x36071210, 0x74b88375, 0x36071210, 0x74ba8375, + 0x36071210, 0x74bc8375, 0x36071210, 0x74be8375, + 0x36071210, 0x74c08375, 0x36071210, 0xe4908375, + 0x75360712, 0x12e4c283, 0x83753607, 0x0712e4c4, + 0x92837536, 0x360712e4, 0xe4c68375, 0x75360712, + 0xf0e4c883, 0xe5fe58af, 0x7d081259, 0xe5360a02, + 0x6ce430e2, 0xc054e7e5, 0x64704064, 0x54c409e5, + 0x08e5fe30, 0xe025e025, 0xfe4ec054, 0x4e3f54ef, + 0xae2be5fd, 0xc302782a, 0xce33ce33, 0x82f5f9d8, + 0xf0ed838e, 0x2aae2be5, 0x33c30278, 0xd8ce33ce, + 0x82f5fff9, 0xe5a3838e, 0x828ff0fe, 0xa3a3838e, + 0x8ff0fde5, 0xa3838e82, 0xfce5a3a3, 0x2be5c3f0, + 0x2ae5fa94, 0x08500094, 0x2be52b05, 0x2a050270, + 0xe4ffe422, 0x56f558f5, 0x827457f5, 0xb70e12fc, + 0xf5e0838c, 0xf07f5410, 0x804410e5, 0xed4b0f12, + 0x120a7ef0, 0x8375b70e, 0xe020e0a0, 0x05f4de26, + 0x7057e557, 0xe5560502, 0xfd012414, 0xd3fc33e4, + 0xe59d57e5, 0xd9409c56, 0x20940ae5, 0x0a050250, + 0xc208e143, 0xb70e1231, 0xe0a68375, 0x12651255, + 0x31d20370, 0x2231c222, 0xe0260790, 0xf5e0a3fa, + 0xe0838a82, 0x39e541f5, 0x404195c3, 0x9539e526, + 0xee9fc341, 0x40780712, 0x80017c04, 0xe5007c02, + 0x603f6441, 0x80017b04, 0xec007b02, 0x0529605b, + 0xc3288041, 0x399541e5, 0x12ee9fc3, 0x04407807, + 0x0280017f, 0x41e5007f, 0x017e0460, 0x007e0280, + 0x04605eef, 0x03804115, 0x85413985, 0xe522403a, + 0x60e430e2, 0xe230e1e5, 0x7009e55b, 0x80017f04, + 0xe5007f02, 0x7e047008, 0x7e028001, 0x605fee00, + 0xf8f95343, 0xe430e2e5, 0x30e1e53b, 0xfa432ee2, + 0xfbfa5302, 0x9010f5e4, 0x10e57094, 0x30e1e5f0, + 0x9490e7e2, 0x1065e070, 0xfa430360, 0x90100504, + 0x10e57094, 0x12e670f0, 0xe1800600, 0x53fdfa53, + 0xc080fbfa, 0x12548f22, 0xe1e50600, 0x7f04e030, + 0x7f028001, 0xd37ee500, 0x04400594, 0x0280017e, + 0x4fee007e, 0x54853d60, 0x20e2e511, 0xce7432e1, + 0x303c1b12, 0x017d04e7, 0x007d0280, 0x838e828f, + 0x04e630e0, 0x0280017f, 0x5def007f, 0x1c121570, + 0x12ce7467, 0xe6303c1b, 0x8044e007, 0x80f943f0, + 0x22f31712, 0xe5f70e12, 0x25e02516, 0xf53024e0, + 0x1a34e482, 0x93e483f5, 0x16e50ff5, 0xe025e025, + 0x82f53124, 0xf51a34e4, 0xf593e483, 0x180f120e, + 0x0fe510f5, 0x0e12f054, 0x8c8375ca, 0x0fe5f0ef, + 0x120ce030, 0x8375b70e, 0x4044e086, 0x120a80f0, + 0x8375b70e, 0xbf54e086, 0x440f12f0, 0xe5828375, + 0x7f22f00e, 0xb3161205, 0x12b70e12, 0x0274e60e, + 0xfe8e74f0, 0x12b70e12, 0xf0efbe0e, 0x12701575, + 0x34208a1e, 0x10157505, 0x15750380, 0x8a1e1250, + 0x74043420, 0x74028010, 0xf51525f0, 0xd40e1215, + 0x1012f0ef, 0x17342091, 0x306415e5, 0x10740c60, + 0x15f51525, 0xe40380b4, 0x0e1215f5, 0x22f0efd4, + 0x2a0790e4, 0x12f0a3f0, 0x83753707, 0x7f54e082, + 0xe0360712, 0x12f08044, 0x08123d00, 0xa0837598, + 0x1ae020e0, 0xe02b0790, 0x0670f004, 0xe02a0790, + 0x0790f004, 0x10b4e02a, 0xb4e0a3e1, 0x44eedc00, + 0x44effca6, 0x8c82f507, 0x32f5e083, 0xfea844ee, + 0xf50744ef, 0xe0838e82, 0x122233f5, 0x83759808, + 0x54c4e0d0, 0x4375fd0f, 0xff447501, 0x74b70812, + 0x3b75f004, 0x6014ed01, 0x0b60140c, 0x240f6014, + 0x800b7003, 0x12008009, 0xf004b408, 0x08120680, + 0xf00474b4, 0xfe8244ee, 0xf50744ef, 0xe5838e82, + 0xcb081245, 0xe5828375, 0x36071231, 0xe0868375, + 0x22f00844, 0x000f1f01, 0x90002003, 0x920f2000, + 0x940f2100, 0x960f2200, 0x980f2300, 0x9a0f2400, + 0x9c0f2500, 0x9e0f2600, 0xa00f2700, 0xa2012001, + 0xa4012101, 0xa6012201, 0xa8012301, 0xaa012401, + 0xac012501, 0xae012601, 0xb0012701, 0xb4012801, + 0xb60f2800, 0xb80f2840, 0xcb012861, 0xeecacbef, + 0xe4017fca, 0x704aebfd, 0xf508e524, 0x12b67482, + 0x08e52c08, 0xb87482f5, 0xe52c0812, 0x7482f508, + 0x2c0812ba, 0x007c007e, 0x80360a12, 0x26079012, + 0xe5420712, 0x0790f041, 0x42071224, 0x12f040e5, + 0x83753707, 0x0712e48e, 0x12017436, 0xf0e43607, + 0x26f5e422, 0xe15327f5, 0x752af5fe, 0x08f5012b, + 0x1612017f, 0x1c3030b3, 0xe4291a90, 0x9010f593, + 0x93e4f91f, 0x009010f5, 0xf593e441, 0xf90f9010, + 0x10f593e4, 0x1612027f, 0x550f12b3, 0x1612037f, + 0x060012b3, 0xe730e2e5, 0x00101209, 0x12033030, + 0x00020011, 0x0be5f047, 0xe025e025, 0x82f58224, + 0xf50734e4, 0x88742283, 0x4408e5fe, 0x82f5ff07, + 0x22e0838e, 0x4408e5f0, 0x2282f507, 0xc054e0f0, + 0x838e828f, 0x44ef22f0, 0x7582f507, 0x54e08683, + 0x0094d310, 0x0790f022, 0xf004e015, 0x44effe22, + 0x8e82f507, 0x8e22e083, 0x12618f60, 0xffe4661e, + 0xeeceedce, 0xe56195d3, 0x78071260, 0x20743940, + 0xe482f52e, 0x83f50334, 0xff0370e0, 0x08122680, + 0x9fc3fdef, 0xedcf1e40, 0x704aebcf, 0x12428d0b, + 0x41f5fb08, 0x0c80408e, 0xf5ef0812, 0xfb081238, + 0x3a8e39f5, 0x22bc801e, 0xe5015875, 0x120c7035, + 0xf5e0d907, 0xe507124a, 0xe54cf5e0, 0x0c04b435, + 0xe0f10712, 0x07124af5, 0x4cf5e0fd, 0x01b435e5, + 0x80017f04, 0xe5007f02, 0x0402b435, 0x0280017e, + 0x4fee007e, 0x08120c60, 0x4af5e009, 0xe0150812, + 0x41854cf5, 0x4b408549, 0x015b7522, 0x12240790, + 0x54e04207, 0x94d3ff1f, 0x8f045002, 0xef058058, + 0x58f5fe24, 0x1894c3ef, 0x59750540, 0xef048018, + 0x8559f504, 0x58af5a43, 0x59ad007e, 0x5bab007c, + 0x1512007a, 0x7e5aaf41, 0x8c171200, 0x007e5baf, + 0x907f1a02, 0x93e4fd10, 0xf02e0790, 0x122d1412, + 0x34e5cf19, 0x07123570, 0xce837537, 0x1313ffe0, + 0xf5075413, 0x240f5436, 0x240b60fe, 0x240a60fe, + 0x02187003, 0x1e026f1d, 0x14101252, 0x1255f5e4, + 0x5505461d, 0x94c355e5, 0x22f44005, 0xedc3fce4, + 0xf5effa9f, 0x00827583, 0x93e4ff79, 0xa3cc6ccc, + 0xf6daf8d9, 0xe430e2e5, 0xede58c02, 0xefffff24, + 0xf5ff8275, 0x6c93e483, 0x017f0370, 0x22007f22, + 0x75b70e12, 0xf0e48083, 0x074408e5, 0x75b00e12, + 0x0e128483, 0x868375b5, 0x75b50e12, 0x54e08c83, + 0xb60e12f3, 0x128e8375, 0x8375b50e, 0xfb54e094, + 0x071222f0, 0x8e837537, 0x360712e4, 0x07120174, + 0x0812e436, 0x8c8375cb, 0x122044e0, 0x54e0cb08, + 0x8474f0df, 0xf5820885, 0x7f54e083, 0x8044e0f0, + 0x567522f0, 0xf5fde401, 0xfe35af57, 0x220912fc, + 0x121d1c12, 0x1b123b1e, 0x7e57afcc, 0x7c56ad00, + 0x49041200, 0x007e56af, 0x75ee1102, 0xfde40156, + 0x35af57f5, 0x0912fcfe, 0x1d1c1222, 0x123b1e12, + 0x57afcc1b, 0x56ad007e, 0x0412007c, 0x7e56af49, + 0xee110200, 0x1216f5e4, 0xe5fef70e, 0xff054408, + 0x8f180f12, 0xf0838e82, 0x16e51605, 0x401494c3, + 0x1208e5e6, 0xf0e4de0e, 0x58f5e422, 0x5af559f5, + 0x58adfeff, 0x220912fc, 0x007e047f, 0x007c58ad, + 0x7f220912, 0xad007e02, 0x02007c58, 0x3ce52209, + 0xe5fc3e25, 0xfb002442, 0xecfa33e4, 0x12ea9bc3, + 0x0b407807, 0x3de5428c, 0x41f53f25, 0x1222408f, + 0x74221809, 0x8518f584, 0x19851908, 0x83188582, + 0xf07f54e0, 0xf08044e0, 0xf08044e0, 0x704eef22, + 0x3707120b, 0xe0d28375, 0x22f0df54, 0x75370712, + 0x44e0d283, 0x7522f020, 0x07900158, 0x42071226, + 0xf53f54e0, 0x3f071241, 0xf53f54e0, 0x56752240, + 0x57f5e402, 0xafbd1d12, 0xad007e57, 0x02007c56, + 0xf5e44904, 0xf541f542, 0xf538f540, 0x223af539, + 0xff0754ef, 0xf854f9e5, 0x22f9f54f, 0xfee4017f, + 0xffbe0e0f, 0x0e1222fb, 0x12f0efd4, 0x00229110, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, @@ -16714,7 +17229,8 @@ static const uint32_t isp_2500_risc_code[] = { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x000f1f01, - 0xc3002003, 0xb9f6ad13, 0xffffb7ea, 0xffeeae82 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x000f1f01, 0xc3002003, 0xb9f6ad13, + 0xffffb7ea, 0xffee6df3 }; #endif From 2dcee04b3a2a0c25e7990da317c353ab0bacaaf3 Mon Sep 17 00:00:00 2001 From: Steven Hartland Date: Mon, 11 Apr 2016 13:17:11 +0000 Subject: [PATCH 158/159] Only include sysctl in kernel build Only include sysctl in kernel builds fixing warning about implicit declaration of function 'sysctl_handle_int'. PR: 204140 MFC after: 1 week X-MFC-With: r297813 Sponsored by: Multiplay --- .../opensolaris/uts/common/fs/zfs/spa_misc.c | 84 +++++++++++-------- 1 file changed, 47 insertions(+), 37 deletions(-) diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c index 60805949220..63350b34fad 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c @@ -55,6 +55,11 @@ #include "zfs_prop.h" #include +#if defined(__FreeBSD__) && defined(_KERNEL) +#include +#include +#endif + /* * SPA locking * @@ -255,35 +260,6 @@ int zfs_flags = 0; * in leaked space, or worse. */ boolean_t zfs_recover = B_FALSE; -SYSCTL_DECL(_vfs_zfs); -SYSCTL_INT(_vfs_zfs, OID_AUTO, recover, CTLFLAG_RWTUN, &zfs_recover, 0, - "Try to recover from otherwise-fatal errors."); - -static int -sysctl_vfs_zfs_debug_flags(SYSCTL_HANDLER_ARGS) -{ - int err, val; - - val = zfs_flags; - err = sysctl_handle_int(oidp, &val, 0, req); - if (err != 0 || req->newptr == NULL) - return (err); - - /* - * ZFS_DEBUG_MODIFY must be enabled prior to boot so all - * arc buffers in the system have the necessary additional - * checksum data. However, it is safe to disable at any - * time. - */ - if (!(zfs_flags & ZFS_DEBUG_MODIFY)) - val &= ~ZFS_DEBUG_MODIFY; - zfs_flags = val; - - return (0); -} -SYSCTL_PROC(_vfs_zfs, OID_AUTO, debug_flags, - CTLTYPE_UINT | CTLFLAG_MPSAFE | CTLFLAG_RWTUN, 0, sizeof(int), - sysctl_vfs_zfs_debug_flags, "IU", "Debug flags for ZFS testing."); /* * If destroy encounters an EIO while reading metadata (e.g. indirect @@ -325,26 +301,18 @@ boolean_t zfs_free_leak_on_eio = B_FALSE; * in a system panic. */ uint64_t zfs_deadman_synctime_ms = 1000000ULL; -SYSCTL_UQUAD(_vfs_zfs, OID_AUTO, deadman_synctime_ms, CTLFLAG_RDTUN, - &zfs_deadman_synctime_ms, 0, - "Stalled ZFS I/O expiration time in milliseconds"); /* * Check time in milliseconds. This defines the frequency at which we check * for hung I/O. */ uint64_t zfs_deadman_checktime_ms = 5000ULL; -SYSCTL_UQUAD(_vfs_zfs, OID_AUTO, deadman_checktime_ms, CTLFLAG_RDTUN, - &zfs_deadman_checktime_ms, 0, - "Period of checks for stalled ZFS I/O in milliseconds"); /* * Default value of -1 for zfs_deadman_enabled is resolved in * zfs_deadman_init() */ int zfs_deadman_enabled = -1; -SYSCTL_INT(_vfs_zfs, OID_AUTO, deadman_enabled, CTLFLAG_RDTUN, - &zfs_deadman_enabled, 0, "Kernel panic on stalled ZFS I/O"); /* * The worst case is single-sector max-parity RAID-Z blocks, in which @@ -356,8 +324,50 @@ SYSCTL_INT(_vfs_zfs, OID_AUTO, deadman_enabled, CTLFLAG_RDTUN, * (VDEV_RAIDZ_MAXPARITY + 1) * SPA_DVAS_PER_BP * 2 == 24 */ int spa_asize_inflation = 24; + +#if defined(__FreeBSD__) && defined(_KERNEL) +SYSCTL_DECL(_vfs_zfs); +SYSCTL_INT(_vfs_zfs, OID_AUTO, recover, CTLFLAG_RWTUN, &zfs_recover, 0, + "Try to recover from otherwise-fatal errors."); + +static int +sysctl_vfs_zfs_debug_flags(SYSCTL_HANDLER_ARGS) +{ + int err, val; + + val = zfs_flags; + err = sysctl_handle_int(oidp, &val, 0, req); + if (err != 0 || req->newptr == NULL) + return (err); + + /* + * ZFS_DEBUG_MODIFY must be enabled prior to boot so all + * arc buffers in the system have the necessary additional + * checksum data. However, it is safe to disable at any + * time. + */ + if (!(zfs_flags & ZFS_DEBUG_MODIFY)) + val &= ~ZFS_DEBUG_MODIFY; + zfs_flags = val; + + return (0); +} + +SYSCTL_PROC(_vfs_zfs, OID_AUTO, debug_flags, + CTLTYPE_UINT | CTLFLAG_MPSAFE | CTLFLAG_RWTUN, 0, sizeof(int), + sysctl_vfs_zfs_debug_flags, "IU", "Debug flags for ZFS testing."); + +SYSCTL_UQUAD(_vfs_zfs, OID_AUTO, deadman_synctime_ms, CTLFLAG_RDTUN, + &zfs_deadman_synctime_ms, 0, + "Stalled ZFS I/O expiration time in milliseconds"); +SYSCTL_UQUAD(_vfs_zfs, OID_AUTO, deadman_checktime_ms, CTLFLAG_RDTUN, + &zfs_deadman_checktime_ms, 0, + "Period of checks for stalled ZFS I/O in milliseconds"); +SYSCTL_INT(_vfs_zfs, OID_AUTO, deadman_enabled, CTLFLAG_RDTUN, + &zfs_deadman_enabled, 0, "Kernel panic on stalled ZFS I/O"); SYSCTL_INT(_vfs_zfs, OID_AUTO, spa_asize_inflation, CTLFLAG_RWTUN, &spa_asize_inflation, 0, "Worst case inflation factor for single sector writes"); +#endif #ifndef illumos #ifdef _KERNEL From b2d7040c1cc76c5bbbf54cd2351b4d137b8c22b6 Mon Sep 17 00:00:00 2001 From: "Andrey V. Elsukov" Date: Mon, 11 Apr 2016 13:44:31 +0000 Subject: [PATCH 159/159] Fix the problem, when gpart(8) can't write both bootcode and partcode in one command due to wrong file size limit. Do not use bootcode size to calculate partsize limit. Also add report message about successful partcode writing. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reported by: Trond Endrestøl MFC after: 2 weeks --- sbin/geom/class/part/geom_part.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/sbin/geom/class/part/geom_part.c b/sbin/geom/class/part/geom_part.c index 44309f925b7..4f57f008944 100644 --- a/sbin/geom/class/part/geom_part.c +++ b/sbin/geom/class/part/geom_part.c @@ -1126,6 +1126,7 @@ gpart_write_partcode(struct ggeom *gp, int idx, void *code, ssize_t size) err(EXIT_FAILURE, "%s", dsf); free(buf); close(fd); + printf("partcode written to %s\n", pp->lg_name); } else errx(EXIT_FAILURE, "invalid partition index"); } @@ -1172,6 +1173,9 @@ gpart_write_partcode_vtoc8(struct ggeom *gp, int idx, void *code) } if (installed == 0) errx(EXIT_FAILURE, "%s: no partitions", gp->lg_name); + else + printf("partcode written to %s\n", + idx != 0 ? pp->lg_name: gp->lg_name); } static void @@ -1193,10 +1197,8 @@ gpart_bootcode(struct gctl_req *req, unsigned int fl) bootcode); if (error) errc(EXIT_FAILURE, error, "internal error"); - } else { + } else bootcode = NULL; - bootsize = 0; - } s = gctl_get_ascii(req, "class"); if (s == NULL) @@ -1220,21 +1222,23 @@ gpart_bootcode(struct gctl_req *req, unsigned int fl) s = find_geomcfg(gp, "scheme"); if (s == NULL) errx(EXIT_FAILURE, "Scheme not found for geom %s", gp->lg_name); - vtoc8 = 0; if (strcmp(s, "VTOC8") == 0) vtoc8 = 1; + else + vtoc8 = 0; if (gctl_has_param(req, GPART_PARAM_PARTCODE)) { s = gctl_get_ascii(req, GPART_PARAM_PARTCODE); - partsize = vtoc8 != 0 ? VTOC_BOOTSIZE : bootsize * 1024; + if (vtoc8 != 0) + partsize = VTOC_BOOTSIZE; + else + partsize = 1024 * 1024; /* Arbitrary limit. */ partcode = gpart_bootfile_read(s, &partsize); error = gctl_delete_param(req, GPART_PARAM_PARTCODE); if (error) errc(EXIT_FAILURE, error, "internal error"); - } else { + } else partcode = NULL; - partsize = 0; - } if (gctl_has_param(req, GPART_PARAM_INDEX)) { if (partcode == NULL)