text:
from __future__ import division, print_function

import argparse
import io
import math
import os
import struct

try:
    import typing

    TSP = typing.TypeVar('TSP', bound='SpiffsObjPageWithIdx')
    ObjIdsItem = typing.Tuple[int, typing.Type[TSP]]
except ImportError:
    pass

SPIFFS_PH_FLAG_USED_FINAL_INDEX = 0xF8
SPIFFS_PH_FLAG_USED_FINAL = 0xFC

SPIFFS_PH_FLAG_LEN = 1
SPIFFS_PH_IX_SIZE_LEN = 4
SPIFFS_PH_IX_OBJ_TYPE_LEN = 1
SPIFFS_TYPE_FILE = 1

# Based on typedefs under spiffs_config.h
SPIFFS_OBJ_ID_LEN = 2  # spiffs_obj_id
SPIFFS_SPAN_IX_LEN = 2  # spiffs_span_ix
SPIFFS_PAGE_IX_LEN = 2  # spiffs_page_ix
SPIFFS_BLOCK_IX_LEN = 2  # spiffs_block_ix

class SpiffsBuildConfig(object):
    def __init__(self,
                 page_size,  # type: int
                 page_ix_len,  # type: int
                 block_size,  # type: int
                 block_ix_len,  # type: int
                 meta_len,  # type: int
                 obj_name_len,  # type: int
                 obj_id_len,  # type: int
                 span_ix_len,  # type: int
                 packed,  # type: bool
                 aligned,  # type: bool
                 endianness,  # type: str
                 use_magic,  # type: bool
                 use_magic_len,  # type: bool
                 aligned_obj_ix_tables  # type: bool
                 ):
        if block_size % page_size != 0:
            raise RuntimeError('block size should be a multiple of page size')

        self.page_size = page_size
        self.block_size = block_size
        self.obj_id_len = obj_id_len
        self.span_ix_len = span_ix_len
        self.packed = packed
        self.aligned = aligned
        self.obj_name_len = obj_name_len
        self.meta_len = meta_len
        self.page_ix_len = page_ix_len
        self.block_ix_len = block_ix_len
        self.endianness = endianness
        self.use_magic = use_magic
        self.use_magic_len = use_magic_len
        self.aligned_obj_ix_tables = aligned_obj_ix_tables

        self.PAGES_PER_BLOCK = self.block_size // self.page_size
        self.OBJ_LU_PAGES_PER_BLOCK = int(math.ceil(self.block_size / self.page_size * self.obj_id_len / self.page_size))
        self.OBJ_USABLE_PAGES_PER_BLOCK = self.PAGES_PER_BLOCK - self.OBJ_LU_PAGES_PER_BLOCK

        self.OBJ_LU_PAGES_OBJ_IDS_LIM = self.page_size // self.obj_id_len

        self.OBJ_DATA_PAGE_HEADER_LEN = self.obj_id_len + self.span_ix_len + SPIFFS_PH_FLAG_LEN

        pad = 4 - (4 if self.OBJ_DATA_PAGE_HEADER_LEN % 4 == 0 else self.OBJ_DATA_PAGE_HEADER_LEN % 4)

        self.OBJ_DATA_PAGE_HEADER_LEN_ALIGNED = self.OBJ_DATA_PAGE_HEADER_LEN + pad
        self.OBJ_DATA_PAGE_HEADER_LEN_ALIGNED_PAD = pad
        self.OBJ_DATA_PAGE_CONTENT_LEN = self.page_size - self.OBJ_DATA_PAGE_HEADER_LEN

        self.OBJ_INDEX_PAGES_HEADER_LEN = (self.OBJ_DATA_PAGE_HEADER_LEN_ALIGNED + SPIFFS_PH_IX_SIZE_LEN +
                                           SPIFFS_PH_IX_OBJ_TYPE_LEN + self.obj_name_len + self.meta_len)
        if aligned_obj_ix_tables:
            self.OBJ_INDEX_PAGES_HEADER_LEN_ALIGNED = (self.OBJ_INDEX_PAGES_HEADER_LEN + SPIFFS_PAGE_IX_LEN - 1) & ~(SPIFFS_PAGE_IX_LEN - 1)
            self.OBJ_INDEX_PAGES_HEADER_LEN_ALIGNED_PAD = self.OBJ_INDEX_PAGES_HEADER_LEN_ALIGNED - self.OBJ_INDEX_PAGES_HEADER_LEN
        else:
            self.OBJ_INDEX_PAGES_HEADER_LEN_ALIGNED = self.OBJ_INDEX_PAGES_HEADER_LEN
            self.OBJ_INDEX_PAGES_HEADER_LEN_ALIGNED_PAD = 0

        self.OBJ_INDEX_PAGES_OBJ_IDS_HEAD_LIM = (self.page_size - self.OBJ_INDEX_PAGES_HEADER_LEN_ALIGNED) // self.block_ix_len
        self.OBJ_INDEX_PAGES_OBJ_IDS_LIM = (self.page_size - self.OBJ_DATA_PAGE_HEADER_LEN_ALIGNED) // self.block_ix_len

class SpiffsFullError(RuntimeError):
    pass

class SpiffsPage(object):
    _endianness_dict = {
        'little': '<',
        'big': '>'
    }

    _len_dict = {
        1: 'B',
        2: 'H',
        4: 'I',
        8: 'Q'
    }

    def __init__(self, bix, build_config):  # type: (int, SpiffsBuildConfig) -> None
        self.build_config = build_config
        self.bix = bix

    def to_binary(self):  # type: () -> bytes
        raise NotImplementedError()

class SpiffsObjPageWithIdx(SpiffsPage):
    def __init__(self, obj_id, build_config):  # type: (int, SpiffsBuildConfig) -> None
        super(SpiffsObjPageWithIdx, self).__init__(0, build_config)
        self.obj_id = obj_id

    def to_binary(self):  # type: () -> bytes
        raise NotImplementedError()

class SpiffsObjLuPage(SpiffsPage):
    def __init__(self, bix, build_config):  # type: (int, SpiffsBuildConfig) -> None
        SpiffsPage.__init__(self, bix, build_config)

        self.obj_ids_limit = self.build_config.OBJ_LU_PAGES_OBJ_IDS_LIM
        self.obj_ids = list()  # type: typing.List[ObjIdsItem]

    def _calc_magic(self, blocks_lim):  # type: (int) -> int
        # Calculate the magic value mirroring computation done by the macro SPIFFS_MAGIC defined in
        # spiffs_nucleus.h
        magic = 0x20140529 ^ self.build_config.page_size
        if self.build_config.use_magic_len:
            magic = magic ^ (blocks_lim - self.bix)
        # narrow the result to build_config.obj_id_len bytes
        mask = (2 << (8 * self.build_config.obj_id_len)) - 1
        return magic & mask

    def register_page(self, page):  # type: (TSP) -> None
        if not self.obj_ids_limit > 0:
            raise SpiffsFullError()

        obj_id = (page.obj_id, page.__class__)
        self.obj_ids.append(obj_id)
        self.obj_ids_limit -= 1

    def to_binary(self):  # type: () -> bytes
        img = b''

        for (obj_id, page_type) in self.obj_ids:
            if page_type == SpiffsObjIndexPage:
                obj_id ^= (1 << ((self.build_config.obj_id_len * 8) - 1))
            img += struct.pack(SpiffsPage._endianness_dict[self.build_config.endianness] +
                               SpiffsPage._len_dict[self.build_config.obj_id_len], obj_id)

        assert len(img) <= self.build_config.page_size

        img += b'\xFF' * (self.build_config.page_size - len(img))

        return img

    def magicfy(self, blocks_lim):  # type: (int) -> None
        # Only use magic value if no valid obj id has been written to the spot, which is the
        # spot taken up by the last obj id on last lookup page. The parent is responsible
        # for determining which is the last lookup page and calling this function.
        remaining = self.obj_ids_limit
        empty_obj_id_dict = {
            1: 0xFF,
            2: 0xFFFF,
            4: 0xFFFFFFFF,
            8: 0xFFFFFFFFFFFFFFFF
        }
        if remaining >= 2:
            for i in range(remaining):
                if i == remaining - 2:
                    self.obj_ids.append((self._calc_magic(blocks_lim), SpiffsObjDataPage))
                    break
                else:
                    self.obj_ids.append((empty_obj_id_dict[self.build_config.obj_id_len], SpiffsObjDataPage))
                self.obj_ids_limit -= 1

class SpiffsObjIndexPage(SpiffsObjPageWithIdx):
    def __init__(self, obj_id, span_ix, size, name, build_config
                 ):  # type: (int, int, int, str, SpiffsBuildConfig) -> None
        super(SpiffsObjIndexPage, self).__init__(obj_id, build_config)
        self.span_ix = span_ix
        self.name = name
        self.size = size

        if self.span_ix == 0:
            self.pages_lim = self.build_config.OBJ_INDEX_PAGES_OBJ_IDS_HEAD_LIM
        else:
            self.pages_lim = self.build_config.OBJ_INDEX_PAGES_OBJ_IDS_LIM

        self.pages = list()  # type: typing.List[int]

    def register_page(self, page):  # type: (SpiffsObjDataPage) -> None
        if not self.pages_lim > 0:
            raise SpiffsFullError

        self.pages.append(page.offset)
        self.pages_lim -= 1

    def to_binary(self):  # type: () -> bytes
        obj_id = self.obj_id ^ (1 << ((self.build_config.obj_id_len * 8) - 1))
        img = struct.pack(SpiffsPage._endianness_dict[self.build_config.endianness] +
                          SpiffsPage._len_dict[self.build_config.obj_id_len] +
                          SpiffsPage._len_dict[self.build_config.span_ix_len] +
                          SpiffsPage._len_dict[SPIFFS_PH_FLAG_LEN],
                          obj_id,
                          self.span_ix,
                          SPIFFS_PH_FLAG_USED_FINAL_INDEX)

        # Add padding before the object index page specific information
        img += b'\xFF' * self.build_config.OBJ_DATA_PAGE_HEADER_LEN_ALIGNED_PAD

        # If this is the first object index page for the object, add filname, type
        # and size information
        if self.span_ix == 0:
            img += struct.pack(SpiffsPage._endianness_dict[self.build_config.endianness] +
                               SpiffsPage._len_dict[SPIFFS_PH_IX_SIZE_LEN]  +
                               SpiffsPage._len_dict[SPIFFS_PH_FLAG_LEN],
                               self.size,
                               SPIFFS_TYPE_FILE)

            img += self.name.encode() + (b'\x00' * (
                (self.build_config.obj_name_len - len(self.name))
                + self.build_config.meta_len
                + self.build_config.OBJ_INDEX_PAGES_HEADER_LEN_ALIGNED_PAD))

        # Finally, add the page index of daa pages
        for page in self.pages:
            page = page >> int(math.log(self.build_config.page_size, 2))
            img += struct.pack(SpiffsPage._endianness_dict[self.build_config.endianness] +
                               SpiffsPage._len_dict[self.build_config.page_ix_len], page)

        assert len(img) <= self.build_config.page_size

        img += b'\xFF' * (self.build_config.page_size - len(img))

        return img

class SpiffsObjDataPage(SpiffsObjPageWithIdx):
    def __init__(self, offset, obj_id, span_ix, contents, build_config
                 ):  # type: (int, int, int, bytes, SpiffsBuildConfig) -> None
        super(SpiffsObjDataPage, self).__init__(obj_id, build_config)
        self.span_ix = span_ix
        self.contents = contents
        self.offset = offset

    def to_binary(self):  # type: () -> bytes
        img = struct.pack(SpiffsPage._endianness_dict[self.build_config.endianness] +
                          SpiffsPage._len_dict[self.build_config.obj_id_len] +
                          SpiffsPage._len_dict[self.build_config.span_ix_len] +
                          SpiffsPage._len_dict[SPIFFS_PH_FLAG_LEN],
                          self.obj_id,
                          self.span_ix,
                          SPIFFS_PH_FLAG_USED_FINAL)

        img += self.contents

        assert len(img) <= self.build_config.page_size

        img += b'\xFF' * (self.build_config.page_size - len(img))

        return img

class SpiffsBlock(object):
    def _reset(self):  # type: () -> None
        self.cur_obj_index_span_ix = 0
        self.cur_obj_data_span_ix = 0
        self.cur_obj_id = 0
        self.cur_obj_idx_page = None  # type: typing.Optional[SpiffsObjIndexPage]

    def __init__(self, bix, build_config):  # type: (int, SpiffsBuildConfig) -> None
        self.build_config = build_config
        self.offset = bix * self.build_config.block_size
        self.remaining_pages = self.build_config.OBJ_USABLE_PAGES_PER_BLOCK
        self.pages = list()  # type: typing.List[SpiffsPage]
        self.bix = bix

        lu_pages = list()
        for i in range(self.build_config.OBJ_LU_PAGES_PER_BLOCK):
            page = SpiffsObjLuPage(self.bix, self.build_config)
            lu_pages.append(page)

        self.pages.extend(lu_pages)

        self.lu_page_iter = iter(lu_pages)
        self.lu_page = next(self.lu_page_iter)

        self._reset()

    def _register_page(self, page):  # type: (TSP) -> None
        if isinstance(page, SpiffsObjDataPage):
            assert self.cur_obj_idx_page is not None
            self.cur_obj_idx_page.register_page(page)  # can raise SpiffsFullError

        try:
            self.lu_page.register_page(page)
        except SpiffsFullError:
            self.lu_page = next(self.lu_page_iter)
            try:
                self.lu_page.register_page(page)
            except AttributeError:  # no next lookup page
                # Since the amount of lookup pages is pre-computed at every block instance,
                # this should never occur
                raise RuntimeError('invalid attempt to add page to a block when there is no more space in lookup')

        self.pages.append(page)

    def begin_obj(self, obj_id, size, name, obj_index_span_ix=0, obj_data_span_ix=0
                  ):  # type: (int, int, str, int, int) -> None
        if not self.remaining_pages > 0:
            raise SpiffsFullError()
        self._reset()

        self.cur_obj_id = obj_id
        self.cur_obj_index_span_ix = obj_index_span_ix
        self.cur_obj_data_span_ix = obj_data_span_ix

        page = SpiffsObjIndexPage(obj_id, self.cur_obj_index_span_ix, size, name, self.build_config)
        self._register_page(page)

        self.cur_obj_idx_page = page

        self.remaining_pages -= 1
        self.cur_obj_index_span_ix += 1

    def update_obj(self, contents):  # type: (bytes) -> None
        if not self.remaining_pages > 0:
            raise SpiffsFullError()
        page = SpiffsObjDataPage(self.offset + (len(self.pages) * self.build_config.page_size),
                                 self.cur_obj_id, self.cur_obj_data_span_ix, contents, self.build_config)

        self._register_page(page)

        self.cur_obj_data_span_ix += 1
        self.remaining_pages -= 1

    def end_obj(self):  # type: () -> None
        self._reset()

    def is_full(self):  # type: () -> bool
        return self.remaining_pages <= 0

    def to_binary(self, blocks_lim):  # type: (int) -> bytes
        img = b''

        if self.build_config.use_magic:
            for (idx, page) in enumerate(self.pages):
                if idx == self.build_config.OBJ_LU_PAGES_PER_BLOCK - 1:
                    assert isinstance(page, SpiffsObjLuPage)
                    page.magicfy(blocks_lim)
                img += page.to_binary()
        else:
            for page in self.pages:
                img += page.to_binary()

        assert len(img) <= self.build_config.block_size

        img += b'\xFF' * (self.build_config.block_size - len(img))
        return img

class SpiffsFS(object):
    def __init__(self, img_size, build_config):  # type: (int, SpiffsBuildConfig) -> None
        if img_size % build_config.block_size != 0:
            raise RuntimeError('image size should be a multiple of block size')

        self.img_size = img_size
        self.build_config = build_config

        self.blocks = list()  # type: typing.List[SpiffsBlock]
        self.blocks_lim = self.img_size // self.build_config.block_size
        self.remaining_blocks = self.blocks_lim
        self.cur_obj_id = 1  # starting object id

    def _create_block(self):  # type: () -> SpiffsBlock
        if self.is_full():
            raise SpiffsFullError('the image size has been exceeded')

        block = SpiffsBlock(len(self.blocks), self.build_config)
        self.blocks.append(block)
        self.remaining_blocks -= 1
        return block

    def is_full(self):  # type: () -> bool
        return self.remaining_blocks <= 0

    def create_file(self, img_path, file_path):  # type: (str, str) -> None
        if len(img_path) > self.build_config.obj_name_len:
            raise RuntimeError("object name '%s' too long" % img_path)

        name = img_path

        with open(file_path, 'rb') as obj:
            contents = obj.read()

        stream = io.BytesIO(contents)

        try:
            block = self.blocks[-1]
            block.begin_obj(self.cur_obj_id, len(contents), name)
        except (IndexError, SpiffsFullError):
            block = self._create_block()
            block.begin_obj(self.cur_obj_id, len(contents), name)

        contents_chunk = stream.read(self.build_config.OBJ_DATA_PAGE_CONTENT_LEN)

        while contents_chunk:
            try:
                block = self.blocks[-1]
                try:
                    # This can fail because either (1) all the pages in block have been
                    # used or (2) object index has been exhausted.
                    block.update_obj(contents_chunk)
                except SpiffsFullError:
                    # If its (1), use the outer exception handler
                    if block.is_full():
                        raise SpiffsFullError
                    # If its (2), write another object index page
                    block.begin_obj(self.cur_obj_id, len(contents), name,
                                    obj_index_span_ix=block.cur_obj_index_span_ix,
                                    obj_data_span_ix=block.cur_obj_data_span_ix)
                    continue
            except (IndexError, SpiffsFullError):
                # All pages in the block have been exhausted. Create a new block, copying
                # the previous state of the block to a new one for the continuation of the
                # current object
                prev_block = block
                block = self._create_block()
                block.cur_obj_id = prev_block.cur_obj_id
                block.cur_obj_idx_page = prev_block.cur_obj_idx_page
                block.cur_obj_data_span_ix = prev_block.cur_obj_data_span_ix
                block.cur_obj_index_span_ix = prev_block.cur_obj_index_span_ix
                continue

            contents_chunk = stream.read(self.build_config.OBJ_DATA_PAGE_CONTENT_LEN)

        block.end_obj()

        self.cur_obj_id += 1

    def to_binary(self):  # type: () -> bytes
        img = b''
        all_blocks = []
        for block in self.blocks:
            all_blocks.append(block.to_binary(self.blocks_lim))
        bix = len(self.blocks)
        if self.build_config.use_magic:
            # Create empty blocks with magic numbers
            while self.remaining_blocks > 0:
                block = SpiffsBlock(bix, self.build_config)
                all_blocks.append(block.to_binary(self.blocks_lim))
                self.remaining_blocks -= 1
                bix += 1
        else:
            # Just fill remaining spaces FF's
            all_blocks.append(b'\xFF' * (self.img_size - len(all_blocks) * self.build_config.block_size))
        img += b''.join([blk for blk in all_blocks])
        return img

class CustomHelpFormatter(argparse.HelpFormatter):
    """
    Similar to argparse.ArgumentDefaultsHelpFormatter, except it
    doesn't add the default value if "(default:" is already present.
    This helps in the case of options with action="store_false", like
    --no-magic or --no-magic-len.
    """
    def _get_help_string(self, action):  # type: (argparse.Action) -> str
        if action.help is None:
            return ''
        if '%(default)' not in action.help and '(default:' not in action.help:
            if action.default is not argparse.SUPPRESS:
                defaulting_nargs = [argparse.OPTIONAL, argparse.ZERO_OR_MORE]
                if action.option_strings or action.nargs in defaulting_nargs:
                    return action.help + ' (default: %(default)s)'
        return action.help

def main():  # type: () -> None
    parser = argparse.ArgumentParser(description='SPIFFS Image Generator',
                                     formatter_class=CustomHelpFormatter)

    parser.add_argument('image_size',
                        help='Size of the created image')

    parser.add_argument('base_dir',
                        help='Path to directory from which the image will be created')

    parser.add_argument('output_file',
                        help='Created image output file path')

    parser.add_argument('--page-size',
                        help='Logical page size. Set to value same as CONFIG_SPIFFS_PAGE_SIZE.',
                        type=int,
                        default=256)

    parser.add_argument('--block-size',
                        help="Logical block size. Set to the same value as the flash chip's sector size (g_rom_flashchip.sector_size).",
                        type=int,
                        default=4096)

    parser.add_argument('--obj-name-len',
                        help='File full path maximum length. Set to value same as CONFIG_SPIFFS_OBJ_NAME_LEN.',
                        type=int,
                        default=32)

    parser.add_argument('--meta-len',
                        help='File metadata length. Set to value same as CONFIG_SPIFFS_META_LENGTH.',
                        type=int,
                        default=4)

    parser.add_argument('--use-magic',
                        dest='use_magic',
                        help='Use magic number to create an identifiable SPIFFS image. Specify if CONFIG_SPIFFS_USE_MAGIC.',
                        action='store_true')

    parser.add_argument('--no-magic',
                        dest='use_magic',
                        help='Inverse of --use-magic (default: --use-magic is enabled)',
                        action='store_false')

    parser.add_argument('--use-magic-len',
                        dest='use_magic_len',
                        help='Use position in memory to create different magic numbers for each block. Specify if CONFIG_SPIFFS_USE_MAGIC_LENGTH.',
                        action='store_true')

    parser.add_argument('--no-magic-len',
                        dest='use_magic_len',
                        help='Inverse of --use-magic-len (default: --use-magic-len is enabled)',
                        action='store_false')

    parser.add_argument('--follow-symlinks',
                        help='Take into account symbolic links during partition image creation.',
                        action='store_true')

    parser.add_argument('--big-endian',
                        help='Specify if the target architecture is big-endian. If not specified, little-endian is assumed.',
                        action='store_true')

    parser.add_argument('--aligned-obj-ix-tables',
                        action='store_true',
                        help='Use aligned object index tables. Specify if SPIFFS_ALIGNED_OBJECT_INDEX_TABLES is set.')

    parser.set_defaults(use_magic=True, use_magic_len=True)

    args = parser.parse_args()

    if not os.path.exists(args.base_dir):
        raise RuntimeError('given base directory %s does not exist' % args.base_dir)

    with open(args.output_file, 'wb') as image_file:
        image_size = int(args.image_size, 0)
        spiffs_build_default = SpiffsBuildConfig(args.page_size, SPIFFS_PAGE_IX_LEN,
                                                 args.block_size, SPIFFS_BLOCK_IX_LEN, args.meta_len,
                                                 args.obj_name_len, SPIFFS_OBJ_ID_LEN, SPIFFS_SPAN_IX_LEN,
                                                 True, True, 'big' if args.big_endian else 'little',
                                                 args.use_magic, args.use_magic_len, args.aligned_obj_ix_tables)

        spiffs = SpiffsFS(image_size, spiffs_build_default)

        for root, dirs, files in os.walk(args.base_dir, followlinks=args.follow_symlinks):
            for f in files:
                full_path = os.path.join(root, f)
                spiffs.create_file('/' + os.path.relpath(full_path, args.base_dir).replace('\\', '/'), full_path)

        image = spiffs.to_binary()

        image_file.write(image)

if __name__ == '__main__':
    main()


Rock Crusher Mfg In Tx. rock crusher mfg in tx - mayukhportfolio. Jay-Bee Manufacturing Tyler TX, 75702 – Manta. More Details for Jay-Bee Manufacturing Inc. Categorized under Hammer Mills (Rock and Ore Crushing Machines), Portable.
The Texas Rock-Crusher Railway provides rail service for several large operations in Brownwood, Texas. Several properties adjacent to or near the railroad can be purchased from private land owners. This 80 acre site is located of Milam Drive and owned by the Brownwood Industrial foundation.
Rock crusher mfg in tx - YouTube. 31 Aug 2016, Published on Aug 31, 2016 Hello, we are doing mining equipment manufacturers, you see our products, . rock crusher mfg in tx.
Rock Crusher Mfg In Tx - cz-eu.eu. Rock Crushers For Sale Near San Antonio Tx - China large . rock crusher for sale texas . FDP is one of the biggest manufacturers in Aggregate Processing Machinery for the cec rock crusher san antonio tx, .
Rock Crusher Mfg In Tx Newest Crusher, Grinding Rock Crusher Mfg In Tx Texas Crusher Systems Of Floydada, Texas Texas Crusher Systems, Inc Rt 2, Box 48, Erlandson Rock Crusher Tx, 8416 W Us Rock Crusher Mfg In Tx Minemining >mine Process And Mining Equipment>rock Crusher Mfg In Tx .
Whether you are looking for manufacturers of hand held rock crushers, pioneer crusher parts, portable rock crusher, or customized crushers of every type, this is the resource for you. ... Granutech-Saturn Systems Grand Prairie, TX. Request For Quote View Company Profile View CAD Drawings.
Texas Contractors Equipment Inc. currently carries several different rock crusher wear parts from ESCO Corporation that are specifically designed to improve the lifespan of your rock crusher and make it operate more efficiently.
rock crusher mfg in tx . Tractor Mounted Rock Crusher In Tx -, Tractor Mounted Rock Crusher In Tx, concrete crusher head manufacturers TEXAS CRUSHER SYSTEMS The "Auto-Balance Crusher" Follow, Lonestar Crushers, LLC - Crushing & Screening Equipment .
Rock crusher manufacturing products are most popular in Africa, Southeast Asia, and Domestic Market. You can ensure product safety by selecting from certified suppliers, including 2,979 with ISO9001, 1,307 with Other, and 105 with ISO14001 certification.


Product Description Redefine Beauty With This Alluring Amethyst Encrusted Gold Plated Kundan Necklace Set. Adorn This Set With Matching Ethnic Attire And You'll Steal The Show On Any Special Occasion! Necklace With Adjustable Back Dori.


text:
This page has been moved to http://www.preservingourhistory.com
***Ervin Davis, the creator and maintainer of this website passed away April 22, 2007.
His family can still be contacted through his old email address, edavis3625@aol.com
Please continue to sign the guestbook. He always loved to hear from fellow Vets and researchers..!
Nyob zoo ! ... page one
Southeast Asian History
and the Hmong
These pages are based upon my years of research into the history of South Asia and South East Asia.
Emphasis is upon a primary Tribal peoples that I became aware of during my 1960's military years, namely the "Meo", many of whom today have since prefered to be known by one of their historical identies, "Hmong". So the following is a generalized history, that also attempts to follow the origin, evolution, migrations and difficulities of the Hmong Tribe.
No attempt was made to exclude other Tribes, as other Tribal groups are mentioned, but due to my years of research focused upon the Tribal people of the Hmong (Meo), I focus this report upon the Hmong because of my knowledge of their name, their peoples and their bold courage.
Who Are The Hmong ?
To 'begin' to understand WHO the Hmong are, we will need to :
( 1. ) explore where the Hmong came from,
( 2. ) take a glimpse at their ancestory experiances,
( 3. ) sample world events occuring during their timeline of existance
( 4. ) explore some examples occurances in lands occupied by the Hmong,
( 5. ) try to understand some situations contributing to their cultural aspects.
( 6. ) and then try to see the world of the Hmong and other Tribal groups that compose the interwoven cultural expressions of South East Asia from the dawn of history untill the present day....., but we need to begin somewhere, so we begin with the path of the Hmong (Hmoob).
NOTE : Frequently asked Questions about the Hmong.
NOTE : Pictures and Languages of the Hmong.
NOTE : Hmong research Resources [ 1 ] , [ 2 ] , [ 3 ]
NOTE : Also, so that their is not any confusion, the Hmong are a seperate Tribal peoples from the Montagnards (Moi) or Bru or Dao of Vietnam.
Where did the Hmong originally come from ?
There are various colorful Asian folk tales and others worldwide describing the origin , the birth, of mankind and the several thousand year history of the Hmong (Hmoob), and other Tribal groups, but space here is not sufficient to tell about them all, so I will focus upon the Hmong.
One of the Hmong legends describes life in an ancient time in a land of ice and snow. Some people believe that was Mongolia , ..... and others look for word simularities or fossils as evidence or rejection.
Meanwhile, others suggest the migratrion of the Hmong started much earlier than Mongolia, in West Asia, traveling north along the Caspian Sea, then east across Siberia, and then south to Mongolia, then in later migrations they moved southward entering the lands of ancient China.
While in ancient China, others tell of a legend, that long after the Hmong entered China they became a powerful people, who constructed many vast reaching progressive communities and then became the emperors in early Beijing (Peking) China in the ancient times.
In China (Zhongguo, "the Middle Kingdom"), the Hmong, were known as "Miao" (Meo), also a people who used to call themselves "Hmong", "A-mao", (A Mao), "Mo", "Mor", and "Guoxiong".
The earliest written accounts of the Hmong (Meo) is found in Chinese annals dating to between 403 and 561 CE, when the Chinese record 40 Hmong uprisings against Chinese rule. Defeated Armies likely returned to face the Chinese Generals knowing they would loose their heads if they admitted defeat to jungle farmers, so they assuridly described their losses taken at the hands of 'fierce barbarians'.
The Chinese government regarded the Hmong in need of taxation and the civilizing influences of Chinese culture, hence their term for their fierce fighting peoples being "Miao" (Meo) ; ... 'Barbarians'.
The term remained proudly used by many of their ancestors for hundreds of years, well into the 1970's.
NOTE : The Chinese term of 'Miao" (Meo) , had several varations thru time :
"Miao" to "Miao-Man" or "Man-Miao", "Wuling Man," 'Wuxi Man,"
or simply "Man," and then eventually back to "Miao" (Meo).
So please keep this in mind when researching the term : "Miao" (Meo).
MORE IDENTITY ISSUES :
"MEO" (Miao) -or- "HMONG" (Mong) -or- "HMONG LENG" (Mong Leng) ?
Some examples of such identity issues ;
"MEO" (Miao) ;
Americans who worked with the Hmong during the war years occasionally
complain that they never heard of the term "Hmong" untill after the war
was over. During the war years, Hmong were known by their self-proclaimed
identity as ; "MEO" (Miao) Tribesmen.
When American Veterans who served in South Vietnam heard descriptions of
the Meo (Miao) Tribesmen they assumed them to be another name for the
stoneage Montagnards (Mountainyards, Yards) of Vietnam.
Such was the identity confussion that existed then,... and even now.
A change came about, during the last part of the war, in the late 1970's,
when an American female volunteer worker in Lao Refugee Camps in Thailand
(who was involved in such self-recognition efforts as selling of refugee
handicrafts), became aware of an identity situation that was resulting
in ill feelings between some of the Refugees. Many of the new arrivals
did not want to be identified as "Mao" but instead demanded to be known
by their historic identity as "Hmong". It was pointed out to refugees
that the United Nations and the international community may not be as
quickly inclined to support the needs of peoples whose name (Mao) might
be translated as "Barbarians", ... but may be more willing to become
sympathetic to peoples who identify with an ancient identity,..one that
was also then used historicly by regional tribesmen ; "Hmong" (Mong).
There was further resentment within the Hmong community over unresolved
issues of the Mainland Chinese, Vietnamese military and even some
described within the Lao Government who did not have any respectful
mental image of any 'warrior' when calling them "Meo", but who instead
were percieved speaking in ill mannerly racial terminology.
The identity change also helped heal resentments between refugees who
didn't want to be known as Meo but demanded to be known as Hmong.
Since then a great emphasis has been noted on the elimination of "Mao"
as an identity and has since been replaced with "Hmong" (Mong).
The transfer to a Hmong (Mong) identity was difficult for some, who even
complained many years later after arriving in America.
But the single identity provided a new unity-of-identity in a stronger
voice of recognition for all peoples so identified as "Hmong".
"HMONG" (MONG) ;
Since the 1970's an identity emphasis has been placed upon "HMONG".
"Hmong" is translated as "Human", and as "Free Man".
Although there remains some disagreement as to the exact meaning of "Free Man".
Some Examples ;
"Free Man" as living free of tight government controls,...
"Free Man" as an 'Unrestricted Person Living Freely',...
"Free Man" as an Outspoken Person,...
"Free Man" as in, NOT a 'Slave',...
"Free Man" as a Political Voice,...
"Free Man" as a Human Being,...
"Free Man" as a Warrior,...
"HMONG LENG" (MONG LENG) ;
"HMONG" (Mong) ; 'Human',... is considered an undesired term by at least one
individual who wrote to me claiming it to be to be "a prejudicial term, with
no male or female predominance of importance in its meaning". Hence he wants
all Hmong's to be known as "Hmong Leng" ("Mong Leng"), which he said, means ;
a "True Human" !
MY APOLOGY :
For the sake of presenting this generalized material to be supportive of the
Hmong in Southeast Asian history, I will henceforth use one reference 'term',
and that term will be "Hmong".
I therefore apologize to anyone who disagrees with that selection. I realize
this issue exists, because I continue to receive an occasional e-mail every
six or nine months from someone demanding 'their identity' as the 'only'
chosen one.
So please understand that everyone can not be satisfied ;
NOT every Identity can be recognized in these brief pages.
NOT every Tribe can be identified in these brief pages.
NOT every person of Historical importance can be included.
Hence the term "Hmong" identity will henceforth be used in this material and
I will do my best with the rest.
Should any better be desired, please simply create your own WebPage and
write it yourself !
The Hmong
The Hmong became a vast interwoven cultural group who dominated south-western China for hundreds of years, until the Hmong had to flee during the arrival of the massive numbers of invading war skilled confederation of Huns, a nomadic central Asian confederation of Tribal peoples, who eventually encrouched upon more and more of the Hmong lands, where after many battles, the surviving more peaceful Hmong moved.
Yet the Hmong Tribes extended their Hmong cultural groups at least as far north as villages in Mongolia, as far west as Tibet, east to the Red River Valley of North Vietnam, south into present-day Laos, Thailand, Burma and Cambodia.
The Hmong survived to became one of the most significant minority groups in China and remains so in Laos .
The Hmong are one of many tribes that have existed in Laos, to include such as the mountain tribes of the Sino-Tibetan (Hmong, Yao, Aka, and Lahu) and Thai ethno-linguistic heritage that are found in northern & central Vietnam, Thailand, the central and southern mountains of China where the Mon-Khmer tribes are predominate, (as well as some Vietnamese and Chinese minorities).
Please find out more about the Hmong
Exploring the history of the Hmong peoples is a great extensive undertaking, so please forgive me in this limited space to provide only very brief information........., but hopefully this information will stimulate further research by YOU , the reader.
It is my sincere hope that what is offered here on these pages (and links) may stimulate more of the Hmong youth to conduct their own historic research, to document from the living treasures of their elders , to preserve their history, the stories about culture, the songs, the foods, the clans language, and translations, and crafts, so that such knowledge will NOT ever be lost.
The Hmong also have many Veteran heros during their several thousand year history,....... from ancient China , to the modern era in Laos, where Hmong Soldiers and Pilots bravely fought during the Secret War years.
The careful preservation of such Hmong history in English language, and the original Hmong clans dialects pronunciations, could then be shared with future generations, to keep alive the history of the Hmong peoples forever !
The following is only a brief exploration of the history of the Hmong peoples, so no -NO- attempt is being made to enter 'every word' of their history, but rather only to provide a time line showing the appearances of the Hmong, as compared to other noteworthy events elsewhere.
For those of you who want to learn more about the Hmong and other tribal peoples, I hope these pages stimulate you to begin , or continue, your research.
But first, to discover who the Hmong are, we also need to examine some world events through time and see where China, Laos, Vietnam, Thailand , Burma, Tibet, the Hmong and their ancestors fit into the history of South East Asia.
A Brief Glimpse Into
Southeast Asian History and the Hmong
Page One .......... 75 Million B.C. to 2,500 B.C.
Page Two .......... 2,500 B.C. to 483 B.C.
Page Three .......... 483 B.C. to 650 A.D.
Page Four ......... 650 A.D. to
75 Million B.C.
The first to live in Laos were NOT the Hmong, but Millions of years before the birth of the Hmong lived 15 meter long Dinosaurs of the early Cretaceous era who roamed the lands of Savannakhet province in Laos. Their scientific name is Tangvayosaurus hoffeti. Other types have been found elsewhere in Laos, nearby Thailand and elsewhere in Asia.
NOTE : The term "B.C." means "Before Christ" . Jesus Christ birth date is around the year zero in our calendar, which was 2,000 years ago. So an object dated as 2,000 B.C. is 4,000 years old.
38,000 B.C.
Stone tools discovered in Huaphan and Luang Prabang provinces of Laos show the presence of prehistoric hunter-gatherers at least 40,000 years ago.
Some research suggests the existence of an advanced prehistoric global society over 14,000 years ago, that may have been largely destroyed due to a series of global catastrophes around 12,000 B.C. , which are also supported by tribal legends around the globe, many suggestive of meteorite impact causing their destruction..
Other research suggests that such an advanced civilization may have previously occupied the peninsula of Southeast Asia, where lowered sea levels would have provided more land mass and land bridges for migratory movement by land , and sea trade extending far into the Pacific basin.
Such ocean side cultures would have become endangered, then have been submerged, in the later years of rising ocean levels, when the Northern and Southern polar ice sheets melted due to Climate Catastrophe situations.
Refugees of such flooding low-land sea-side cultures would have migrated to higher lands, where evidence does suggest that such an advanced culture may have scattered around the Pacific Ocean basin , during a time of global catastrophe, then migrated into higher land areas of such locations as northern Thailand, Laos, China , [ 2 ] and as is evident in the similar artifact distributions of Asia , Pacific islands , Europe, and Egypt, and North America, and South America.
9,000 B.C.
11,000 years ago, some of the earliest evidence of prehistoric Southeast Asian migration into North America is found in the Inner Columbia River Basin, at a Stone Age "Wenachee site", dated to 9,000 B.C., that also contains the earliest known assemblage of bifacially flaked stone tools with unique characteristic of a central basal-struck flute allowing for secure hafting of the point to a shaft, as found in a trail leading from Southeast Asia into Alaska, into Southern South America.
The lands today known as Laos were occupied 10,000 years ago, according to village sites of stone tools, implements and human bones discovered in Huaphan, Savannakhet and Luang Prabang (lw�ng' pr�-b�ng') , (Louangphrabang) provinces of Laos.
NOTE : The central area of Indochina, from the Mekong River Valley to the Khorat Plateau of Thailand, was inhabited as far back as 10,000 years ago.
Stone columns in Huaphan province, Laos date from the neolithic period (6,500 B.C.)
Rice was first cultivated in the Yangtze River (Chang-jiang , which means "Long River") Valley of China 8,500 years ago, around 6,500 B.C.
NOTE : First Japanese wet-rice farmersDNA traced to migration from ancient rice farmers in the ancient Yangtze River Valley, where the Hmong also resided in ancient times.
NOTE : Genetic research data.
NOTE : Stone axe heads and other artifacts found in northern Thailand at prehistoric Chiang Saen village look identical to axe [ 2 ] heads found in North American prehistoric culture sites.
NOTE : See Yangtze River data.
NOTE : See photos of rice transplanting.
NOTE : Ancient Rice-Fish culture in China.
NOTE : Rice cooking instructions.
A large migrating wave of dominate prehistoric peoples are believed to have arrived in the Northwestern Szechuan ( Sze-ch'uan, Sichuan), China about 5,000 years ago, where many concentrated their homes in the Yellow River (Huang He, Huang Lee) Valley of China.
It is believed by some that this huge migration may have begun during a time of massive natural disaster or widespread warfare in their former homelands.
More then 5,000 years ago the Hmong ancestors lived on the side plain along the upper reaches of the Yellow River, where they were so successful that they gradually evolved into a tribal group called "Jiu Li", and held sway over ALL of Eastern China
Some believe that artifacts and legends indicate such former homeland origin of the Hmong to have been in the mountainous area of Northwestern Mongolia.
Some believe the ancient Hmong originally came from Mongolia, while others do not believe that, but regardless of the most ancient migrations of the Hmong, it is known that the Hmong progressively became the largest tribal population in Laos.
NOTE : Chinese Mythology and History.
NOTE : Chinese Embroidered cloths.
NOTE : Traditional Chinese Phytotherapy and Medicine.
NOTE : Chinese Herbs, and translate Chinese Herbs into English.
In China, Huang-Ti (the Yellow Emperor) was the first "authentic ruler" of China and that therefore scholors say that Chinese history began in 2697 BC.
According to Chinese mythology, "Huang-Ti" is attributed to have invented the art of writing, medical research, agriculture, physical education, hunting, and the sports of wrestling, archery, swordsmanship and football.
Meanwhile in Egypt : The Khufu and Khafre Pyramids were built in Egypt (c.2650 BC) with astrological alignments.
Meanwhile in Inda : Harappan Civilization in Indus River Valley is at its glory in ancient India ( 2600 - 2500 B.C.), (where Pakistan is at today), where the Harappa [ 2 ] and Mohenjo-Dara , [ 2 ] , [ 3 ] culture residents lived in multi-level houses and had city-wide plumbing , [ 2 ] untill their civilization collapsed because of a suspected natural disaster altering the course of the Indus River.
NOTE : Indus Valley resources
Around 4,500 years ago the Hmong lived in China's Hebei province, where their leader was the legendary warrior Chief Chiyou (Ciyou), and his people were many confederated tribes and they united were known as the Jiuli Tribe.
As Chinese population grew, they expanded southward into Hmong territory, where ten wars were fought between the two sides on the northwestern part of modern-day Beijing (Peking) , where the Hmong won nine battles but lost the tenth.
After so many battles fought against the Chinese, so many losses of lives, and after their defeat in the 10th battle, the Hmong took that as an omen to migrate southward into the lower reaches of the Yellow River where they re-established the San-Miao Kingdom.
The Hun's expanded their territory into the lands occupied by the Hmong about 2,200 B.C. and again the Hmong moved, leaving the Hun to live in the Yellow River Valley of China.
History of the Hmong's Southeast Asia
Page ................... LAOS : The Secret War
Page ................... LAOS : War Pilots Remembered
Page ................... LAOS : Brigadier General Thao Ma
And now it's up to you !
"He who asks is a fool for five minutes,
but he who does not ask remains a fool forever."
-- Old Chinese saying
Please sign or view the new Guest Book.
You can view the old Guest Book here.
This WebPage was first published 21 April 2000 by WebMaster : Ervin Davis
Last Up-dated : 17 July 2005

redpajama_set_name: RedPajamaCommonCrawl


Please enter your email so we can alert you when the Extreme Comfort Slim Pants in is back in stock. We promise not to spam you. You will only be notified once.
Meet Lee's Extreme Comfort Men's Slim Pant, featuring a slim fit cut close to the body for men who want a modern look. But hey, these men's slim pants are still insanely comfortable thanks to Active Comfort Fabric with stretch for limitless motion range, an Athletic Flex Waist that adapts to your body.


Uncork'd releasing Room for Rent in theaters and on demand this May.
Uncork'd is releasing Pet Graveyard. What else do you need to know?
Darren Lynn Bousman's new nunsploitation flick treads familiar ground but with beautiful camerawork and some gruesome set pieces, manages to still find some fresh life in a lost genre.
Writer-director Justin McConnell presents a unique and thought provoking take on a shapeshifter, a body horror creature feature sprinkled with dark humor, romance, and some solid gross outs.
From the director of Bite, we are getting some madness in the form of The Heretics.
Mischa Barton looks to make herself the direct-to-video scream queen with another horror flick, this time Uncork'd Entertainment's The Basement.


An artist who is at home in both Pilipino tribal/traditional arts and American contemporary forms.
Alleluia Panis has received awards for her choreography from the Wallace Alexander Gerbode Foundation, Rockefeller Foundation, San Francisco Arts Commission, California Arts Council, New Langton Arts, and Creative Work Fund. She has created twenty full-length dance theater works since 1985, which have been performed on main stages in the United States, Europe and Asia, including the Kennedy Center, Lincoln Center, Dance Theater Workshop, Singapore Arts Festival, and Verona Arts Fest – Italy. She has collaborated with numerous artists, including playwright Cherrie Moraga, National Endowment for the Arts Heritage Fellow Danongan Kalanduyan, Sean San José, Jon Jang, Jill Togawa, and Francis Wong, among others. She is the director of Kularts, the nation's premiere presenter of contemporary and tribal Pilipino arts. She regularly travels to Mindanao, Philippines to participate in Pulangi River's sacred ipat ritual. Her most recent collaborations includes world premiere of NEW FIRE by Cherrie Moraga produced by Brava Theater, BUFFALO'ED by Jeannie Barroga produced by San Jose Stage, Florante Aguilar's HARANA CINEMATIC CONCERT – PHILIPPINES, Campo Santo/Intersection's LA SEMILLA CAMINANTE and Jason Magabo Perez' YOU WILL GONNA GO CRAZY. Her latest work 2015 She, Who Can See was featured in Dancers' Group. Her upcoming 2017-18 dance, film, theater work, 'Incarceration 6×9,' takes place in the year 2048, 150 years after the U.S. Occupation, centralizing on stories of incarceration in the Pilipino American community, and the impact of cultural displacement in search of the American dream.


In such a turbulant noisy and high stressed place such as the streets that we rest on, it is so easy to become the victim of every little jitter and flutter and every word uttered, our senses grow so weary to every little event within event within event and our mind begins to take note of every little change. We, being the beings behind the scenes, thus become the victim to every thing that is floating by in our imagination, but we somewhere have lost the ability to veiw the reality as an illusion like a movie, when you watch a movie, you can pretend that the people are as present as you are your self, but you know they are composed by millions of individual frames that animate them and bring them to life, well this is almost no different than anything happening outside yourself, everyone and everything, as real as they are, are an illusion, and are composed of nothing greater than the atmosphere. If you can understand this, then you can understand the importance of training your mind properly so as not to be decieved by that it percieves, all the noise in the world is nothing more than millions of children playing and fumbling with their building blocks, and all of the words floating in your ears, are nothing more than secret messages you send to yourself to decode. We are eternaly engaged in an internal game with ourselves, and wisdom and wits are the tools we use to win, but the truth is, we will never lose.
the US, at least,are like ant's repairing an ant hill run over by a lawn mower.
sitting in side watching make believe instead of living life.
I especially like your last sentence. And I only watch the idiot box now and again. You miss life when the TV is on only I love the nature shows. Keep up the great writing.
place than here, and no better time than now.
This is really awesoem post thanks for sharing this.


text:
Collaborative Futures Library Services Platform
Queen's University Library has partnered with 15 other Ontario university libraries to implement a shared library services platform (LSP) as part of a project called Collaborative Futures. The new platform went live in December 2019, replacing our previous system (QCAT and Summon), and has improved library support for students, faculty, and staff by providing enhanced discovery and delivery of valuable information resources at Queen's and our partner institutions.
This means that we now have a powerful single search tool for searching across Queen's and the other Ontario university partner library collections, called Omni. Omni gives you streamlined access to resources across all partner libraries.
Recent and upcoming enhancements include:
a seamless way to search and request print materials from Queen's and our partners across Ontario and beyond. For more details, see Request Materials from Omni.
an updated and integrated eReserves system. For more details, see Course Reserves for Faculty and Instructors.
Questions? Please see our guide Omni Search Tips. For more information please contact your Subject Librarian or Ask Us.
Further details about this project can be found on the OCUL website. The shared platform provides a foundation for increasing collaboration over time as we build on the system capabilities and the shared expertise within the partnership.
Building upon 50 years of successful cooperative work among Ontario Council of University Libraries (OCUL) member libraries, this collaboration has included the selection, procurement, and implementation of a shared LSP that allows our libraries to improve our support for faculty and students; modernize internal workflows with greater streamlining and reduced duplication of effort; share expertise; reduce or redirect costs; and meet our stewardship responsibilities for the province's valuable print and electronic research collections.
We have been busy implementing the new system and building the new consortial partnership and shared policy to address how we will work together to accomplish the priority collaboration goals in order to reap the benefits of collaboration in those areas where it makes most sense, while facilitating local differences where necessary.
This has been a transformative opportunity to improve our services. We continue to deepen our connections with our partners, and work with them to leverage the evolving system functionality and efficiencies that will enhance the services we offer to our students, faculty, and staff.
Queen's University
Collaborative Futures in Library News
Improvements to our interlibrary loan service (August 3, 2021)
Coming soon ... Omni! (December 3, 2019)
Omni, the new, easy-to-use academic search tool (October 30, 2019)
New Library System and Search Tool to Launch Dec. 12 (October 17, 2019)
Key dates for Collaborative Futures Project (September 24, 2018)
Announcement of selected Library Service Platform solution for Collaborative Futures (July 12, 2018)
Entering the next phase of Collaborative Futures (January 22, 2018)
Queen's University Library announces participation in Phase 3 of OCUL Collaborative Futures project. (April 11, 2017)


WAVERLY, Iowa – The Gustavus men's and women's cross country teams traveled to Wartburg College in Waverly, Iowa on Saturday to compete in the NCAA Division III Central Regional. The Gustie women finished in sixth out of 29 teams, while the men finished ninth of 31.
On the men's side, after a sixth place finish in the MIAC Championships, the Gusties were looking to climb the ladder of MIAC competition and did so in the Regional. After finishing behind Bethel and Saint John's in the MIAC Championships, the Gusties finished above both of them today. Andrew Stumbo (So., Boone, Iowa) led the men finishing in eighth place overall with a time of 25:11.1. Alex Wischnack (Sr., Norwood, Minn.) ran well again for the Gusties finished 54th with a time of 26:08.1. A trio of first-years in Noah Johnson (Fy., Stillwater, Minn.), Garet Grant (Fy., Winona, Minn.), and Ben Wicklund (Fy., Marine on St. Croix, Minn.) all finished inside the top 80 to round out the top five for Gustavus.
On the men's performance coach Brenden Huber said, "Our guys saved their best effort for their last meet. We hadn't been ranked much in the region all season, and to finish top ten in the region shows how much their efforts have paid off. We've known we've had a good squad all year and just haven't put it into an all-around team performance and we did that today.
Stumbo's time, which was sixth fastest in school history, will qualify him for the National Meet in Oshkosh, Wis. on Saturday.
In similar fashion to the men, the Gustavus women finished sixth in the MIAC Championships. They climbed the ladder of competition and were the fourth MIAC team to finish in the regional. The Gusties placed two runners in the top 30 in the event as Tierney Winter (Jr., Waterville, Minn.) finished 27th with a time of 23:03.1, while Iliana Ramon (Fy., Fairmont, Minn.) came in 29th with a 23:04.6. Abbie Schnabel (Sr., Hamburg, Minn.), Lotus Schifsky (Sr., Prescott, Wis.), and Kourtney Kulseth (So., New Richland, Minn.) rounded out the Gustie top five finishing in 56th, 60th, and 62nd respectively.
The top 35 runners on both the men's and women's side receive all-region honors, so Winter and Ramon gained all-region for the women, while Stumbo garnered all-region honors for the men.


Irrespective of the underlying technology used to implement a large-scale quantum architecture system, one of the central challenges of accurately modeling the architecture is the ability to map and schedule a quantum application onto a physical grid while taking into account the cost of communication, the classical resources, and the maximum exploitable parallelism. In this paper we introduce and evaluate a physical operations scheduler for arbitrary quantum circuits. Our scheduler accepts a description of a circuit together with a description of a specific physical layout and outputs a sequence of operations that expose the required communication and available parallelism in the circuit. The output of the scheduler is a quantum assembly language file that can directly be simulated on a set of available tools.


text:
# ext-psi

[![Join the chat at https://gitter.im/m6w6/ext-psi](https://badges.gitter.im/m6w6/ext-psi.svg)](https://gitter.im/m6w6/ext-psi?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Build Status](https://travis-ci.org/m6w6/ext-psi.svg?branch=master)](https://travis-ci.org/m6w6/ext-psi)

PSI is a PHP extension, which provides a foreign function interface through
`libffi` and/or `libjit`.

The acronym PSI may be read as:
* PHP System Interface

> **WARNING:**
> This is heavy WIP.

## Features

* structs, unions, enums and typedefs
* numeric and boolean expressions
* scalar constants
* vararg calls

## Installing

> **WARNING:**
> This is heavy WIP. Installation only works from a source checkout
> with php-src@master on x86_64-linux yet.
> Sort of works on x64_64-darwin, too, roughly.

### PECL

> Not implemented yet.

This extension is distributed through [PECL](http://pecl.php.net) and can be
installed with [PEAR](http://pear.php.net)'s pecl command:

	pecl install psi

### PHARext

> Not implemented yet.

Watch out for [PECL replicates](https://replicator.pharext.org?psi)
and [pharext](https://github.com/pharext) packages attached to
[releases](https://github.com/m6w6/ext-psi/releases).

### Checkout

This extension is hosted at [Github](https://github.com/m6w6/ext-psi) with a
personal [mirror](https://git.m6w6.name/?p=m6w6/ext-psi) available.

	git clone github.com:m6w6/ext-psi

	cd ext-psi

	/path/to/phpize
	./configure --with-php-config=/path/to/php-config
	make
	sudo make install

## Configuring PSI at build time

PSI supports the following configure switches:

### --enable-psi
**Enable PHP System Interface support.**

This is only relevant for an in-tree build. Use `--enable-psi` to include
the PSI extension in the build.

### --with-psi-libjit
**Path to libjit.**

> **WARNING:**
> We currently rely on a patched libjit, because of an apparent bug in how
> libjit creates closures, which still needs to be verified, though.
> See https://github.com/m6w6/libjit for the preliminary patch.

### --with-psi-libffi
**Path to libffi.**

## Configuring PSI at runtime

### psi.engine

The backend that PSI should use as FFI, either _jit_ for `libjit` or _ffi_ for `libffi`. Defaults to "ffi".

### psi.directory

A colon separated list of directories to scan for `*.psi` files. Defaults to "psi.d".

### psi.blacklist.decls

A comma separated list of C function declarations to ignore.

### psi.blacklist.vars

A comma separated list of C variable declarations to ignore.

## PSI files

PSI files are augmented C header files. So, everything usually found in C
headers including comments, preprocessor directives, typedefs, structs,
unions, enums, function and variable declarations should work.

That means, that you can just include C headers in the usual way:

```c
#include <stdlib.h>
```

### Dynamic Libraries

PSI needs to know which library it should `dlopen` unless the declared functions
are provided by the standard C library. Therefore the PSI preprocessor
understands a special pragma:

```c
#pragma lib "crypt"
```

### Constants

```c
const int num\ZERO = 0;
const string pwd\TOKEN = "4WlOjXGL";
```

Constants must have namespaced identifiers and are registered as userland constants.

C enums and preprocessor macros with numerical or string expressions are
automatically discovered and registered as constants.

### Implementations

Implementations are the userland visible interfaces to the foreign function interface.

```php
function str\error(int $num) : string {
    let errnum = intval($num);
    return strerror(errnum) as to_string(strerror);
}
```

Each implementation refers to exactly one declared foreign function referenced in its `return` statement. Each native function, on the other hand, may have any number of implementations.

## Complete example

```c
#ifdef __linux__
/* needed for setkey() in stdlib.h */
# pragma lib "crypt"
#endif

/* for free() */
#include <stdlib.h>

#pragma lib "idn"
#include <idna.h>

function idn\utf8_to_ascii(string $host, string &$result, int $flags = 0) : int {
    // there must be a `let` statement for each
    // declared argument of the called function

    // setup a pointer to NULL
	let buffer = &NULL;

	// setup a string pointer to $host
	let host = strval($host);

	// assing the integer value of $flags
	let flags = intval($flags);

	// the function to call is referenced in
	// the return statement, along with the
	// necessary cast how to interpret the
	// returned native value
	return idna_to_ascii_8z(host, buffer, flags)
	           as to_int(idna_to_ascii_8z);

	// by-ref vars might receive output values
	// through `set` statments, which also
	// require a cast how to marshal the
	// native data as PHP value
	set $result = to_string(*buffer);

	// after the buffer has been marshaled
	// for the PHP engine, we have to free
	// the buffer to avoid a memory leak
	free free(*buffer);
	// note that in this example we omit the
	// declaration of the free() function called
	// in our `free` statement for brevity
}

function idn\strerror(int $rc) : string {
	return to_string(idna_strerror);
	let rc = intval($rc);
}
```

### Userland

```php
$rc = idn\utf8_to_ascii("flöte.de", $result);
printf("<%s>\n", $result);
printf("%s\n", idn\strerror($rc));

$rc = idn\utf8_to_ascii("…asdf….de", $result, IDNA_USE_STD3_ASCII_RULES);
printf("<%s>\n", $result);
printf("%s\n", idn\strerror($rc));
```

#### Output
```
<xn--flte-6qa.de>
Success
<>
Non-digit/letter/hyphen in input
```

## License

ext-psi is licensed under the 2-Clause-BSD license, which can be found in
the accompanying [LICENSE](./LICENSE) file.

## Contributing

All forms of contribution are welcome! Please see the bundled
[CONTRIBUTING](./CONTRIBUTING.md) note for the general principles followed.

The list of past and current contributors is maintained in [THANKS](./THANKS).

redpajama_set_name: RedPajamaGithub


text:
Miami Hurricane, April 30, 1993
► PUBLIC SAFETY
FORMER NBC NEWS EXEC BECOMES UM CHAIR
The School of Communication has named Joseph Angotti, former newsman and executive for NBC News, to the Communication Studies Chair.
Beginning June 1, Angotti will start teaching both undergraduate and graduate classes in journalism and broadcasting.
Angotti was unanimously chosen after he and three other candidates applied and gave presentations to School of Communication faculty.
According to Bob Hosmon, assistant dean of the School of Communication, Angotti is eager to begin implementing a masters program for broadcast journalism.
"He's going to bring with him a tremendous amount of experience and background as well as wonderful contacts within the professional community," Hosmon said.
Angotti, who holds a Master of Arts degree from Indiana University, was general manager of European news, executive producer of election specials and senior vice president of all news operations for NBC.
Future of UM police force uncertain
BY PAMELA WII FIMr.ro	.. .
BY PAMELA WILFINGER
Newsbrlels Editor
Faced with personnel problems and at odds with the Coral Gables Police Department, the University of Miami Department of Public Safety may undergo some drastic changes before students return to campus this fall.
Last fall, Public Safety officially had 26 sworn officers on duty. Half of these officers have left during the past year to pursue othei opportunities and to escape the possible threat of dissolution.
Currently, 13 officers are working at UM, although 27 officers are budgeted to staff Public Safety come August, said David Lieberman, UM senior vice president. Security guards are being used to fill the void.
"We have substantially fewer officers on the payroll
[than in the fall]," Lieberman said. "It is not in our best interest to be in this position, but we've decided to use this situation to hire from a pool of applicants for next year."
The Coral Gables Police Department is in the process of deciding whether the substation at UM is an "efficient and necessary" entity.
The department is being reviewed by the Commission on Accreditation for Law Enforcement Agencies. To receive accreditation, Coral Gables must meet more than 900 standards. The UM substation has become a major obstacle to reaching that goal.
"We can't become accredited until we decide the UM issue, said Sgt. Linda Miller, accreditation manager for the city's department.
By completing the accreditation process, the police
department will adopt the commission's set of directives and will acquire a higher professional status in the law enforcement field.
Currently, Coral Gables has an agreement with the-Uni-versity to provide a small substation worked by state-qerti-fied, part-time Coral Gables police. Disparities between the UM officers' benefits, pay, hours worked and status and those of regular Coral Gables officers may violate some commission standards.
One of the city's options is to dissolve Public Safety and assign two or three full-time officers to patrol the campus, said Miller.
If the unit is dissolved, the University will be forced to
See page 2/ SAFETY
New services, food choices come to Marriott cafeterias
YEARBOOK DEDICATED TO RON FRASER ...
The 1993 Ibis yearbook will be dedicated to retired UM Baseball Coach Ron Fraser. The Ibis, which will be distributed in the fall due to production problems, was dedicated to Fraser in honor of his 30 years of service with the University.
Fraser retired this past summer, after helping the Hurricanes win national championships in 1982 and 1985. He was also honored this year by have a small strip of Ponce de Leon Boulevard renamed Ron Fraser Way.
Robert Miller, editor in chief of the 1993 yearbook, said Fraser was the best candidate because of his continued dedication to UM.
"We chose Coach Fraser from a list of candidates because of his commitment to excellence and helping young people," Miller said.
THREE STUDENTS GIVEN VOLUNTEER SPIRIT AWARD
General Motors Volunteer Spirit awards were presented last Wednesday in the Lowe Art Museum to three UM students for their outstanding volunteer work.
Christy Ezelle, Joseph James Hine and Paul Bryant Sygall each received five shares of General Motors sttx k and a plaque signed by Jack Smith, president of GM and by UM President Edward T. Foote II.
The winners were chosen by an independent committee on the basis of their volunteer contributions to UM and local community.
GM presents the award each year to 400 student volunteers on 40 college and university campuses.
FACE THE FACTS
following are the increases in the basic 20-meal plan in the last five years:
BY SIMON P. DUVALL
Associate News Editor
Marriott Dining Services has introduced a variety of new services and features to students dining in the Mahoney/Pearson, Hecht/Stanford and Hurricane cafeterias, said Gene Perkins. Marriott general manager at UM.
^fer.re test'nK all kinds of new things now, Perkins said. "We're tzoinu for mr»r«»
now, Perkins said. "We're going for more ot a food court idea, where there   I<>>,■
five serving areas available."
Changes in dining service include areas in the dining halls being renamed Mom's Place and The Healthy Delights station, popular quick serve entrees being available in the "hot spot" dining area in each cafeteria. Menu selections for each day are available on a phone recording, 284-3463, and on the Residence Halls cable channel.
Perkjns also said that the serving lines are becoming more self-service oriented.
"We're trying to give students what they want," he said. "If a student feels like eating four pounds of macaroni and cheese, they can eat four pounds of macaroni and cheese rather than what our server feels like giving them."
The changes in dining service come at the same time that UM is beginning to evaluate food service in preparation for bidding of the contract that Marriott now holds, William Butler, vice president for Student Affairs, said. The bidding is likely to start next spring.
"We're in the very early phases of that process," Butler said. "It will be another year."
Butler said Marriott will be one of several companies bidding next spring, and that they will remain on campus until that time.
Alan Fish, assistant vice president for
"We're trying to give students what they want. If a student feels like eating four pounds of macaroni and cheese, they can eat four pounds of macaroni and cheese rather than what our
server	like Riving them "
GENE PERKINS, UM general manager, Marriott Dining Services
Business Services, said UM is beginning to develop a five-year master plan for food service, and that the many aspects of the food service operation are being looked at, including cash operations, catering, board plans, value for the dollar, and variety.
Fish said the University recommended to Marriott that changes be made in the service offered.
Student reactions to the new services have been mixed, but most students seem to like the new options.
"I think it's pretty strange how it changed all of a sudden," freshman Chip Lewis said. "I like it better now."
Perkins said the Marriott executive chef will Visit UM this summer to hold cooking classes for all cafeteria cooks.
"Quality and taste will improve," Perkins said.
Changes that will be implemented over the summer and next' year are also in the planning stages now, Perkins said. These include remodeling the Ibis cafeteria into a food court, and extending the Eye's hours.
J U HIULLV ; Phili E'ilTSr
■ POPPING AN OLLIE: Sophomore Will Sions takes a break from his studies to practice on his skateboard Tuesday afternoon on the University Center Plaza. Sions finished third in the National Skateboarding Association finals in Houston, Texas, last summer.
School of Medicine braces for Clinton's health care reforms
BY JODYJACKSON
The UM Medical School is considering major reforms in preparation for anticipated changes in health care policies by the Clinton Administration, said Dr. Bernard Fogel, senior vice president for Medical Affairs and dean of the school.
Health care issues were discussed Saturday at a meeting of the University Board of T rustees.
"We think there will be managed care and we need to look at the issues and alterna-
tives involved," UM President Edward Foote II said. "We are facing a social revolution. The only constant is change."
"At present, we know there will be reform, and it will be drastic reform," Fogel said. "The national plan will be phased in over the next four to five years."
Patient care alone will generate close to $140 million this fiscal year. Clinton's health plan is expected to alter the Medical School's revenue and cause long-term restructuring.
According to Fogel and David Lieberman,
UM senior vice president, a committee was set up to plan for future policy changes. The committee will look at what other universities have done about health care.
"The committee was formed in order to try and be efficient to deal with the changes in health reform," Fogel said.
Doctors at UM face a 10 percent pay cut on June 1. This is a preliminary reaction to the upcoming changes in health care. Its primary purpose is to avoid laying off employees and raising tuition at the Medical School.
According to Foote, the Medical School-
will have to shift its emphasis from tertiary to primary care as part of the restructuring process. The bulk of the planning process will culminate mid-summer.
"The med school is budgeted to break even. Because of the hurricane |the school | has faced severe fiscal pressure," Foote said.
Despite this, the school will come close to breaking even, Foote said, although it "may face a modest deficit of $1 to 2 million this year."
'89-'90	'91-'92
'90-'91	'92-*93
DEREK HEMBD / Special !o the Hurricane
► student employment
Funding available for summer sessions
BY JENNIFER RAMACH
Assistant News Editor
Work-study positions will be available to UM students during both 1993 summer sessions. For the last two years, work-study positions have only been available for the second summer session.
The positions will be partially funded by money saved by the University after Hurricane Andrew, said Grisel Valdes, director of Student Employment.
Valdes said that because the administration postponed the first day of classes and, therefore, the first day of work, fall
work-study students did not use all allocated funds.
"We were left with an entire pay period and were able to save some of the money," Valdes said.
Valdes said hurricane relief funds made available to the University also provided some of the funding for these summer work-study programs.
"We have already awarded over 700 students work study," Valdes said. "That doesn't mean all of them will work. Some get off-campus jobs or decide it is too hard to work and take classes."
Valdes said she would not be
able to discern the exact amount of funds available for the summer session work-study positions until the end of the academic year.
Leonor Meitin, staff associate in charge of student employment at the Otto G. Richter Library, said the number of summer work-study positions available at the library also depends on the amount of hours each student wants to work.
"We are going to hire around 37 new students," Meitin said. "Depending on the hours they want to work, we may hire as many as 40."
SG Chief Justice removed
BY JASON ZDANOWICZ
The Student Government Supreme Court relieved SG Chief Justice Craig Gelman of his title on Tuesday but did not remove him from the bench.
Because of an error by former SG Senate Speaker Steve Cohen, Gelman was sworn into office without receiving the required two-thirds vote of the senate.
The senate asked the court last week to determine what course of action needed to be taken to rectify the error.
"The court decided that to ratify a chief justice you need a two-thirds majority — Craig did not
receive that," SG Senate Speaker Ira Miller said.
SG President Adam August said he thought the court made the correct decision.
"It seems fair because he didn't get the two-thirds vote," August said.
Gelman has been named acting chief justice until a permanent chief justice is ratified by the senate.
August said he is accepting applications for the position and will forward his nominations at the beginning of the fall semester.
"I can nominate up to four people and [Gelman] will definitely be one of them," August said.
Title Miami Hurricane, April 30, 1993
Full Text ► PUBLIC SAFETY briefs FORMER NBC NEWS EXEC BECOMES UM CHAIR The School of Communication has named Joseph Angotti, former newsman and executive for NBC News, to the Communication Studies Chair. Beginning June 1, Angotti will start teaching both undergraduate and graduate classes in journalism and broadcasting. Angotti was unanimously chosen after he and three other candidates applied and gave presentations to School of Communication faculty. According to Bob Hosmon, assistant dean of the School of Communication, Angotti is eager to begin implementing a masters program for broadcast journalism. "He's going to bring with him a tremendous amount of experience and background as well as wonderful contacts within the professional community," Hosmon said. Angotti, who holds a Master of Arts degree from Indiana University, was general manager of European news, executive producer of election specials and senior vice president of all news operations for NBC. $2,500 $2,000 Future of UM police force uncertain BY PAMELA WII FIMr.ro	.. . BY PAMELA WILFINGER Newsbrlels Editor Faced with personnel problems and at odds with the Coral Gables Police Department, the University of Miami Department of Public Safety may undergo some drastic changes before students return to campus this fall. Last fall, Public Safety officially had 26 sworn officers on duty. Half of these officers have left during the past year to pursue othei opportunities and to escape the possible threat of dissolution. Currently, 13 officers are working at UM, although 27 officers are budgeted to staff Public Safety come August, said David Lieberman, UM senior vice president. Security guards are being used to fill the void. "We have substantially fewer officers on the payroll [than in the fall]," Lieberman said. "It is not in our best interest to be in this position, but we've decided to use this situation to hire from a pool of applicants for next year." The Coral Gables Police Department is in the process of deciding whether the substation at UM is an "efficient and necessary" entity. The department is being reviewed by the Commission on Accreditation for Law Enforcement Agencies. To receive accreditation, Coral Gables must meet more than 900 standards. The UM substation has become a major obstacle to reaching that goal. "We can't become accredited until we decide the UM issue, said Sgt. Linda Miller, accreditation manager for the city's department. By completing the accreditation process, the police department will adopt the commission's set of directives and will acquire a higher professional status in the law enforcement field. Currently, Coral Gables has an agreement with the-Uni-versity to provide a small substation worked by state-qerti-fied, part-time Coral Gables police. Disparities between the UM officers' benefits, pay, hours worked and status and those of regular Coral Gables officers may violate some commission standards. One of the city's options is to dissolve Public Safety and assign two or three full-time officers to patrol the campus, said Miller. If the unit is dissolved, the University will be forced to See page 2/ SAFETY ► DINING SERVICES New services, food choices come to Marriott cafeterias YEARBOOK DEDICATED TO RON FRASER ... The 1993 Ibis yearbook will be dedicated to retired UM Baseball Coach Ron Fraser. The Ibis, which will be distributed in the fall due to production problems, was dedicated to Fraser in honor of his 30 years of service with the University. Fraser retired this past summer, after helping the Hurricanes win national championships in 1982 and 1985. He was also honored this year by have a small strip of Ponce de Leon Boulevard renamed Ron Fraser Way. Robert Miller, editor in chief of the 1993 yearbook, said Fraser was the best candidate because of his continued dedication to UM. "We chose Coach Fraser from a list of candidates because of his commitment to excellence and helping young people," Miller said. THREE STUDENTS GIVEN VOLUNTEER SPIRIT AWARD General Motors Volunteer Spirit awards were presented last Wednesday in the Lowe Art Museum to three UM students for their outstanding volunteer work. Christy Ezelle, Joseph James Hine and Paul Bryant Sygall each received five shares of General Motors sttx k and a plaque signed by Jack Smith, president of GM and by UM President Edward T. Foote II. The winners were chosen by an independent committee on the basis of their volunteer contributions to UM and local community. GM presents the award each year to 400 student volunteers on 40 college and university campuses. FACE THE FACTS The following are the increases in the basic 20-meal plan in the last five years: BY SIMON P. DUVALL Associate News Editor Marriott Dining Services has introduced a variety of new services and features to students dining in the Mahoney/Pearson, Hecht/Stanford and Hurricane cafeterias, said Gene Perkins. Marriott general manager at UM. ^fer.re test'nK all kinds of new things now, Perkins said. "We're tzoinu for mr»r«» now, Perkins said. "We're going for more ot a food court idea, where there I<>>,■ five serving areas available." Changes in dining service include areas in the dining halls being renamed Mom's Place and The Healthy Delights station, popular quick serve entrees being available in the "hot spot" dining area in each cafeteria. Menu selections for each day are available on a phone recording, 284-3463, and on the Residence Halls cable channel. Perkjns also said that the serving lines are becoming more self-service oriented. "We're trying to give students what they want," he said. "If a student feels like eating four pounds of macaroni and cheese, they can eat four pounds of macaroni and cheese rather than what our server feels like giving them." The changes in dining service come at the same time that UM is beginning to evaluate food service in preparation for bidding of the contract that Marriott now holds, William Butler, vice president for Student Affairs, said. The bidding is likely to start next spring. "We're in the very early phases of that process," Butler said. "It will be another year." Butler said Marriott will be one of several companies bidding next spring, and that they will remain on campus until that time. Alan Fish, assistant vice president for "We're trying to give students what they want. If a student feels like eating four pounds of macaroni and cheese, they can eat four pounds of macaroni and cheese rather than what our server	like Riving them " GENE PERKINS, UM general manager, Marriott Dining Services Business Services, said UM is beginning to develop a five-year master plan for food service, and that the many aspects of the food service operation are being looked at, including cash operations, catering, board plans, value for the dollar, and variety. Fish said the University recommended to Marriott that changes be made in the service offered. Student reactions to the new services have been mixed, but most students seem to like the new options. "I think it's pretty strange how it changed all of a sudden," freshman Chip Lewis said. "I like it better now." Perkins said the Marriott executive chef will Visit UM this summer to hold cooking classes for all cafeteria cooks. "Quality and taste will improve," Perkins said. Changes that will be implemented over the summer and next' year are also in the planning stages now, Perkins said. These include remodeling the Ibis cafeteria into a food court, and extending the Eye's hours. ►student life J U HIULLV ; Phili E'ilTSr ■ POPPING AN OLLIE: Sophomore Will Sions takes a break from his studies to practice on his skateboard Tuesday afternoon on the University Center Plaza. Sions finished third in the National Skateboarding Association finals in Houston, Texas, last summer. ► MEDICINE School of Medicine braces for Clinton's health care reforms BY JODYJACKSON Hurricane Staff Writer The UM Medical School is considering major reforms in preparation for anticipated changes in health care policies by the Clinton Administration, said Dr. Bernard Fogel, senior vice president for Medical Affairs and dean of the school. Health care issues were discussed Saturday at a meeting of the University Board of T rustees. "We think there will be managed care and we need to look at the issues and alterna- tives involved," UM President Edward Foote II said. "We are facing a social revolution. The only constant is change." "At present, we know there will be reform, and it will be drastic reform," Fogel said. "The national plan will be phased in over the next four to five years." Patient care alone will generate close to $140 million this fiscal year. Clinton's health plan is expected to alter the Medical School's revenue and cause long-term restructuring. According to Fogel and David Lieberman, UM senior vice president, a committee was set up to plan for future policy changes. The committee will look at what other universities have done about health care. "The committee was formed in order to try and be efficient to deal with the changes in health reform," Fogel said. Doctors at UM face a 10 percent pay cut on June 1. This is a preliminary reaction to the upcoming changes in health care. Its primary purpose is to avoid laying off employees and raising tuition at the Medical School. According to Foote, the Medical School- will have to shift its emphasis from tertiary to primary care as part of the restructuring process. The bulk of the planning process will culminate mid-summer. "The med school is budgeted to break even. Because of the hurricane |the school | has faced severe fiscal pressure," Foote said. Despite this, the school will come close to breaking even, Foote said, although it "may face a modest deficit of $1 to 2 million this year." '89-'90	'91-'92 '90-'91	'92-*93 DEREK HEMBD / Special !o the Hurricane ► student employment Funding available for summer sessions BY JENNIFER RAMACH Assistant News Editor Work-study positions will be available to UM students during both 1993 summer sessions. For the last two years, work-study positions have only been available for the second summer session. The positions will be partially funded by money saved by the University after Hurricane Andrew, said Grisel Valdes, director of Student Employment. Valdes said that because the administration postponed the first day of classes and, therefore, the first day of work, fall work-study students did not use all allocated funds. "We were left with an entire pay period and were able to save some of the money," Valdes said. Valdes said hurricane relief funds made available to the University also provided some of the funding for these summer work-study programs. "We have already awarded over 700 students work study," Valdes said. "That doesn't mean all of them will work. Some get off-campus jobs or decide it is too hard to work and take classes." Valdes said she would not be able to discern the exact amount of funds available for the summer session work-study positions until the end of the academic year. Leonor Meitin, staff associate in charge of student employment at the Otto G. Richter Library, said the number of summer work-study positions available at the library also depends on the amount of hours each student wants to work. "We are going to hire around 37 new students," Meitin said. "Depending on the hours they want to work, we may hire as many as 40." ►student government SG Chief Justice removed BY JASON ZDANOWICZ Assistant News Editor The Student Government Supreme Court relieved SG Chief Justice Craig Gelman of his title on Tuesday but did not remove him from the bench. Because of an error by former SG Senate Speaker Steve Cohen, Gelman was sworn into office without receiving the required two-thirds vote of the senate. The senate asked the court last week to determine what course of action needed to be taken to rectify the error. "The court decided that to ratify a chief justice you need a two-thirds majority — Craig did not receive that," SG Senate Speaker Ira Miller said. SG President Adam August said he thought the court made the correct decision. "It seems fair because he didn't get the two-thirds vote," August said. Gelman has been named acting chief justice until a permanent chief justice is ratified by the senate. August said he is accepting applications for the position and will forward his nominations at the beginning of the fall semester. "I can nominate up to four people and [Gelman] will definitely be one of them," August said. s


Good News: With a few exceptions, horseweed (marestail) control with burndown applications this spring has been much better than the last couple of years. The main reason for this is the horseweed has been much smaller than last year when herbicide applications were made.
According to NOAA statistics this has been the 2nd coldest spring in recorded history. Only the spring of 1975 was colder. The cold conditions this winter and spring have kept the growth of horseweed in check. Small horseweed is simply much easier to control.
Bad News: Cover crops have been very difficult to control. I have had a number of calls from folks who are frustrated by poor control of wheat, rye, vetch and crimson clover this spring. We have had similar results in research as well. Again the cold temperatures had an effect. This time it was negative as the cold conditions made control of cover crops less consistent. Most have had to resort to some kind of two pass program to control their cover crops. A number of folks have added clethodim into the burndown to take out rye and wheat.
It is no news to anyone that this has been a very wet spring. In Jackson we have had 25" of rain as of April 30. The long term average here is 17" at this point in the year. Last year was the opposite flip of the coin with only 12" of rain by April 30. The very wet spring has slowed down herbicide applications to the point that many have yet to go out. Horseweed is getting large and Palmer is emerging. The horseweed is beginning to bolt. I was hoping that the very small Palmer would have frozen out with the frost we had last week but no such luck! On the positive side it has not grown though and is still just ¼ to ½" tall.
There have been a number of calls this week from folks who are planning last minute burndown strategies in these fields that have yet to be touched. Typically they want to apply the herbicide and start planting hopefully by next week.
In soybeans the best burndown option on the very small Palmer amaranth and large horseweed this spring has been Verdict. In a couple tests we just rated that were sprayed last week Verdict plus MSO plus glyphosate had provided 99% control of small Palmer and 6" tall horseweed. Soybeans may be planted anytime after a Verdict application. We only got about 80% control of horseweed with a pint of 2,4-D with glyphosate. The Palmer looked to be going down as well with the 2,4-D treatment. Soybeans may be planted 7 days after a pint of 2,4-D. Dicamba is another option but the plant back is 14 days to soybeans with 8 ozs/A and 30 days for anything over 8 ozs.


Lauren has worked here as a part time veterinary nurse over the past 2 years and has just joined us full time after qualifiying with a degree in veterinary nursing from UCD. Lauren loves working with all animals but has a particular soft spot for guinea pigs. She is currently studying for a post graduate qualification in veterinary nursing of exotic species.