text:
# This file was derived from the linux-yocto-custom.bb recipe in
# oe-core.
#
# linux-yocto-custom.bb:
#
#   A yocto-bsp-generated kernel recipe that uses the linux-yocto and
#   oe-core kernel classes to apply a subset of yocto kernel
#   management to git managed kernel repositories.
#
# Warning:
#
#   Building this kernel without providing a defconfig or BSP
#   configuration will result in build or boot errors. This is not a
#   bug.
#
# Notes:
#
#   patches: patches can be merged into to the source git tree itself,
#            added via the SRC_URI, or controlled via a BSP
#            configuration.
#
#   example configuration addition:
#            SRC_URI += "file://smp.cfg"
#   example patch addition:
#            SRC_URI += "file://0001-linux-version-tweak.patch
#   example feature addition:
#            SRC_URI += "file://feature.scc"
#

inherit kernel
require recipes-kernel/linux/linux-yocto.inc

SRCREV = "9bb1282f6a7754955c18be912fbc2b55d133f1b9"
# using local clone of the archive linux for the current build.
SRC_URI = "git:///home/dwest/projects/git/snap-pro-kernel"
# figure out how to use the source repo for the build...
#SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git"
#SRC_URI = "git:///home/dwest/projects/git/snap-pro-kernel;protocol=file;bareclone=1"
SRC_URI += "file://linux-3.1.10_0001-Patch-LogicPD-Removed-nand-support-by-logicpd.patch"
SRC_URI += "file://linux-3.1.10_0002-Patch-IDexx-without-nand-support.patch"
SRC_URI += "file://linux-3.1.10_0003-Nand-Support-Added-Backported-the-MTD-NAND-layers-fr.patch"
SRC_URI += "file://linux-3.1.10_0004-Changed-ECC-to-HW-ECC-added-usblp-module-to-walnut_c.patch"
SRC_URI += "file://linux-3.1.10_0005-Onchip-NAND-ECC-support-added.patch"
SRC_URI += "file://linux-3.1.10_0006-Added-Micron-onchip-NAND-ECC-support-to-walnut_defco.patch"
SRC_URI += "file://linux-3.1.10_0007-Changed-NAND-timings.patch"
SRC_URI += "file://linux-3.1.10_0008-Removed-MCU_COMM-driver-this-driver-is-now-seprate-m.patch"
SRC_URI += "file://linux-3.1.10_0009-Added-Support-for-USB-Serial-Converter-with-FTDI-Sin.patch"
SRC_URI += "file://linux-3.1.10_0010-panel-driver-modified-for-gamma-contrast-correction-in-hx8363.patch"
SRC_URI += "file://linux-3.1.10_0011-Changed-memory-from-221M-to-472M.patch"
SRC_URI += "file://defconfig"

KBRANCH = "working-branch"
CONFIG_LOCALVERSION = "-idexx-snappro"
LINUX_VERSION ?= "3.1"
LINUX_VERSION_EXTENSION ?= "-custom"

SRCREV="${AUTOREV}"
# work around for do_validate_branches error
SRCREV_machine="${SRCREV}"

PR = "r1"
#PV = "${LINUX_VERSION}+git${SRCPV}"
PV = "${LINUX_VERSION}"

COMPATIBLE_MACHINE = "snappro"
COMPATIBLE_MACHINE_snappro = "snappro"

license: MIT

repository: hiharin/meta-snappro-omap

repo_name: hiharin/meta-snappro-omap

extension: bb


text:
// This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild

#include "integers_double_overflow.h"

integers_double_overflow_t::integers_double_overflow_t(kaitai::kstream* p__io, kaitai::kstruct* p__parent, integers_double_overflow_t* p__root) : kaitai::kstruct(p__io) {
    m__parent = p__parent;
    m__root = this;
    f_unsigned_safe_max_be = false;
    f_unsigned_safe_max_le = false;
    f_unsigned_unsafe_pos_be = false;
    f_unsigned_unsafe_pos_le = false;

    try {
        _read();
    } catch(...) {
        _clean_up();
        throw;
    }
}

void integers_double_overflow_t::_read() {
    m_signed_safe_min_be = m__io->read_s8be();
    m_signed_safe_min_le = m__io->read_s8le();
    m_signed_safe_max_be = m__io->read_s8be();
    m_signed_safe_max_le = m__io->read_s8le();
    m_signed_unsafe_neg_be = m__io->read_s8be();
    m_signed_unsafe_neg_le = m__io->read_s8le();
    m_signed_unsafe_pos_be = m__io->read_s8be();
    m_signed_unsafe_pos_le = m__io->read_s8le();
}

integers_double_overflow_t::~integers_double_overflow_t() {
    _clean_up();
}

void integers_double_overflow_t::_clean_up() {
    if (f_unsigned_safe_max_be) {
    }
    if (f_unsigned_safe_max_le) {
    }
    if (f_unsigned_unsafe_pos_be) {
    }
    if (f_unsigned_unsafe_pos_le) {
    }
}

uint64_t integers_double_overflow_t::unsigned_safe_max_be() {
    if (f_unsigned_safe_max_be)
        return m_unsigned_safe_max_be;
    std::streampos _pos = m__io->pos();
    m__io->seek(16);
    m_unsigned_safe_max_be = m__io->read_u8be();
    m__io->seek(_pos);
    f_unsigned_safe_max_be = true;
    return m_unsigned_safe_max_be;
}

uint64_t integers_double_overflow_t::unsigned_safe_max_le() {
    if (f_unsigned_safe_max_le)
        return m_unsigned_safe_max_le;
    std::streampos _pos = m__io->pos();
    m__io->seek(24);
    m_unsigned_safe_max_le = m__io->read_u8le();
    m__io->seek(_pos);
    f_unsigned_safe_max_le = true;
    return m_unsigned_safe_max_le;
}

uint64_t integers_double_overflow_t::unsigned_unsafe_pos_be() {
    if (f_unsigned_unsafe_pos_be)
        return m_unsigned_unsafe_pos_be;
    std::streampos _pos = m__io->pos();
    m__io->seek(48);
    m_unsigned_unsafe_pos_be = m__io->read_u8be();
    m__io->seek(_pos);
    f_unsigned_unsafe_pos_be = true;
    return m_unsigned_unsafe_pos_be;
}

uint64_t integers_double_overflow_t::unsigned_unsafe_pos_le() {
    if (f_unsigned_unsafe_pos_le)
        return m_unsigned_unsafe_pos_le;
    std::streampos _pos = m__io->pos();
    m__io->seek(56);
    m_unsigned_unsafe_pos_le = m__io->read_u8le();
    m__io->seek(_pos);
    f_unsigned_unsafe_pos_le = true;
    return m_unsigned_unsafe_pos_le;
}

license_type: permissive

branch_name: refs/heads/master

gha_license_id: MIT

extension: cpp


text:
package adcom1

// AuditStatus represents codes used in Audit objects to reflect status or workflow state.
type AuditStatus int

// Codes used in Audit objects to reflect status or workflow state.
//
// Values of 500+ hold endor-specific codes.
const (
	AuditPendingAudit                 AuditStatus = 1 // Pending Audit: An audit has not yet been completed on this ad. A recommendation cannot be made to use this ad, but vendors' policies may override.
	AuditPreApproved                  AuditStatus = 2 // Pre-Approved: An audit has not yet been completed on this ad. Subject to vendors' policies, it can be recommended for use. However, once the audit has been completed, its status will change and it may or may not be approved for continued use.
	AuditApproved                     AuditStatus = 3 // Approved: The audit is complete and the ad is approved for use. Note, however, that some attributes (e.g., adomain, cat, attr, etc.) may have been changed in the process by the auditor.
	AuditDenied                       AuditStatus = 4 // Denied: The audit is complete, but the ad has been found unacceptable in some material aspect and is disapproved for use.
	AuditChangedResubmissionRequested AuditStatus = 5 // Changed; Resubmission Requested: A version of the ad has been detected in use that is materially different from the version that was previously audited, which may result in rejection during use until the ad is resubmitted for audit and approved. Vendors need to communicate offline as to the criteria that constitutes a material change.
	AuditExpired                      AuditStatus = 6 // Expired: The ad has been marked as expired by the vendor. Vendors need to communicate offline as to the expected bidding behavior for ads with this status.
)

license: Unlicense

repository: mxmCherry/openrtb

repo_name: mxmCherry/openrtb

gha_license_id: Unlicense

gha_language: Go

extension: go


text:
#pragma once

#include <memory>

class ProcessHandler {
public:
    ProcessHandler() = default;
    virtual ~ProcessHandler() = default;

public:
    virtual void OnReadLine(const char* text) = 0;
    virtual void OnReadLineError(const char* text) = 0;
    virtual void OnProcessExit(int pid, bool normally) = 0;
};

class Logger;
struct _GIOChannel;
typedef struct _GIOChannel GIOChannel;

class Process {
public:
    Process() = delete;
    Process(ProcessHandler* handler, const std::shared_ptr<Logger>& logger);
    ~Process();

    void Start(const char* command);
    void Write(const char* text);
    void Kill();

private:
    void StartImpl(const char* command);
    void Spawn(char **argv);
    void SetNonBlockFlag(int fd);

private:
    int m_pid = -1;
    int m_readFd;
    int m_writeFd;
    unsigned int m_readChWatcher = 0;
    GIOChannel* m_readCh = nullptr;
    GIOChannel* m_writeCh = nullptr;
    ProcessHandler* m_handler = nullptr;
    std::shared_ptr<Logger> m_logger;
};

repository: ReanGD/rofi-proxy

repo_name: ReanGD/rofi-proxy

extension: h


text:
@article{Aasi:LowFrequency2016,
 author = {Aasi, J. et al.},
 collaboration = {LIGO Scientific Collaboration and Virgo Collaboration},
 doi = {10.1103/PhysRevD.93.042007},
 issue = {4},
 journal = {Phys. Rev. D},
 month = {Feb},
 numpages = {25},
 pages = {042007},
 publisher = {American Physical Society},
 title = {First low frequency all-sky search for continuous gravitational wave signals},
 url = {http://link.aps.org/doi/10.1103/PhysRevD.93.042007},
 volume = {93},
 year = {2016}
}

repository: mcoughlin/personal-website

repo_name: mcoughlin/personal-website

gha_language: TeX

extension: bib


text:
package sink

import (
	"fmt"
	"io/ioutil"
	"os"
	"path/filepath"
	"regexp"
	"strings"
	"time"

	"github.com/pkg/errors"
)

// FileSink writes events to a file
type FileSink struct {
	file           *os.File
	id             string
	fileName       string
	Directory      string
	RetentionHours int
	// sync.RWMutex
}

// NewFileSink returns a new FileSink
func NewFileSink(dir string, retain int) *FileSink {
	//ext := time.Now().Format("20060102_15")
	//fileName := fmt.Sprintf("xelogstash_events_%s.json", ext)
	// time.Parse("20060102150405", dt+tm)
	fs := FileSink{Directory: dir, RetentionHours: retain}
	return &fs
}

// Name returns the name of the sink
func (fs *FileSink) Name() string {
	// fs.RLock()
	// defer fs.RUnlock()
	//return fmt.Sprintf("filesink: %s", fs.name)
	return fmt.Sprintf("filesink: %s (retain: %d hours)", fs.Directory, fs.RetentionHours)
}

// Open opens the file
func (fs *FileSink) Open(id string) error {
	// fs.Lock()
	// defer fs.Unlock()
	return fs.open(id)
}

// Write a message to the FileSink
func (fs *FileSink) Write(name, event string) (int, error) {
	var err error
	// fs.Lock()
	// defer fs.Unlock()

	if fs.file == nil {
		return 0, errors.New("filesink: not open")
	}
	if !strings.HasSuffix(event, "\n") {
		event = event + "\n"
	}

	n, err := fs.file.Write([]byte(event))
	if err != nil {
		return n, errors.Wrap(err, "fs.file.write")
	}
	return n, nil
}

// Close the FileSink
func (fs *FileSink) Close() error {
	// fs.Lock()
	// defer fs.Unlock()

	if fs.file == nil {
		return nil
	}

	// TODO handle this error
	_ = fs.file.Close()

	// TODO clean up old files
	return nil
}

// Flush any buffers
func (fs *FileSink) Flush() error {
	// fs.Lock()
	// defer fs.Unlock()

	if fs.file == nil {
		return nil
	}
	return fs.file.Sync()
}
func makeFileName(id string) string {
	ext := time.Now().Format("20060102_15")
	fileName := fmt.Sprintf("xelogstash_%s_%s.json", id, ext)
	return fileName
}

func (fs *FileSink) open(id string) error {
	var err error
	fs.id = id
	fileName := makeFileName(id)
	// executable, err := os.Executable()
	// if err != nil {
	// 	return errors.Wrap(err, "os.executable")
	// }
	// exeDir := filepath.Dir(executable)

	// eventDir := filepath.Join(exeDir, "events")
	eventDir := fs.Directory
	if _, err = os.Stat(eventDir); os.IsNotExist(err) {
		err = os.Mkdir(eventDir, 0644)
	}
	if err != nil {
		return errors.Wrap(err, "os.mkdir")
	}

	fqfile := filepath.Join(eventDir, fileName)
	lf, err := os.OpenFile(fqfile, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
	if err != nil {
		return errors.Wrap(err, "os.openfile")
	}
	fs.file = lf
	return nil
}

// Clean up any old artifacts
func (fs *FileSink) Clean() error {
	var err error

	cutoff := time.Duration(fs.RetentionHours) * time.Hour
	files, err := ioutil.ReadDir(fs.Directory)
	if err != nil {
		return errors.Wrap(err, "ioutil.readdir")
	}
	pattern := fmt.Sprintf("xelogstash_%s_\\d{8}_\\d{2}\\.json", fs.id)
	re := regexp.MustCompile(pattern)
	now := time.Now()

	for _, fi := range files {
		if fi.IsDir() {
			continue
		}
		m := re.FindStringSubmatch(fi.Name())
		if len(m) == 0 {
			continue
		}
		diff := now.Sub(fi.ModTime())
		if diff > cutoff {
			err = os.Remove(filepath.Join(fs.Directory, fi.Name()))
			if err != nil {
				return errors.Wrap(err, fmt.Sprintf("os.remove: %s", fi.Name()))
			}
		}
	}
	return nil
}

repository: bryanklewis/xelogstash

repo_name: bryanklewis/xelogstash


text:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE eagle SYSTEM "eagle.dtd">
<eagle version="6.4">
<drawing>
<settings>
<setting alwaysvectorfont="no"/>
<setting verticaltext="up"/>
</settings>
<grid distance="1" unitdist="mm" unit="mm" style="lines" multiple="10" display="yes" altdistance="0.025" altunitdist="inch" altunit="inch"/>
<layers>
<layer number="1" name="Top" color="4" fill="1" visible="yes" active="yes"/>
<layer number="2" name="Route2" color="1" fill="3" visible="no" active="no"/>
<layer number="3" name="Route3" color="4" fill="3" visible="no" active="no"/>
<layer number="4" name="Route4" color="1" fill="4" visible="no" active="no"/>
<layer number="5" name="Route5" color="4" fill="4" visible="no" active="no"/>
<layer number="6" name="Route6" color="1" fill="8" visible="no" active="no"/>
<layer number="7" name="Route7" color="4" fill="8" visible="no" active="no"/>
<layer number="8" name="Route8" color="1" fill="2" visible="no" active="no"/>
<layer number="9" name="Route9" color="4" fill="2" visible="no" active="no"/>
<layer number="10" name="Route10" color="1" fill="7" visible="no" active="no"/>
<layer number="11" name="Route11" color="4" fill="7" visible="no" active="no"/>
<layer number="12" name="Route12" color="1" fill="5" visible="no" active="no"/>
<layer number="13" name="Route13" color="4" fill="5" visible="no" active="no"/>
<layer number="14" name="Route14" color="1" fill="6" visible="no" active="no"/>
<layer number="15" name="Route15" color="4" fill="6" visible="no" active="no"/>
<layer number="16" name="Bottom" color="1" fill="1" visible="yes" active="yes"/>
<layer number="17" name="Pads" color="2" fill="1" visible="yes" active="yes"/>
<layer number="18" name="Vias" color="2" fill="1" visible="yes" active="yes"/>
<layer number="19" name="Unrouted" color="6" fill="1" visible="yes" active="yes"/>
<layer number="20" name="Dimension" color="15" fill="1" visible="yes" active="yes"/>
<layer number="21" name="tPlace" color="7" fill="1" visible="yes" active="yes"/>
<layer number="22" name="bPlace" color="7" fill="1" visible="yes" active="yes"/>
<layer number="23" name="tOrigins" color="15" fill="1" visible="yes" active="yes"/>
<layer number="24" name="bOrigins" color="15" fill="1" visible="yes" active="yes"/>
<layer number="25" name="tNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="26" name="bNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="27" name="tValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="28" name="bValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="29" name="tStop" color="7" fill="3" visible="no" active="yes"/>
<layer number="30" name="bStop" color="7" fill="6" visible="no" active="yes"/>
<layer number="31" name="tCream" color="7" fill="4" visible="no" active="yes"/>
<layer number="32" name="bCream" color="7" fill="5" visible="no" active="yes"/>
<layer number="33" name="tFinish" color="6" fill="3" visible="no" active="yes"/>
<layer number="34" name="bFinish" color="6" fill="6" visible="no" active="yes"/>
<layer number="35" name="tGlue" color="7" fill="4" visible="no" active="yes"/>
<layer number="36" name="bGlue" color="7" fill="5" visible="no" active="yes"/>
<layer number="37" name="tTest" color="7" fill="1" visible="no" active="yes"/>
<layer number="38" name="bTest" color="7" fill="1" visible="no" active="yes"/>
<layer number="39" name="tKeepout" color="4" fill="11" visible="yes" active="yes"/>
<layer number="40" name="bKeepout" color="1" fill="11" visible="yes" active="yes"/>
<layer number="41" name="tRestrict" color="4" fill="10" visible="yes" active="yes"/>
<layer number="42" name="bRestrict" color="1" fill="10" visible="yes" active="yes"/>
<layer number="43" name="vRestrict" color="2" fill="10" visible="yes" active="yes"/>
<layer number="44" name="Drills" color="7" fill="1" visible="no" active="yes"/>
<layer number="45" name="Holes" color="7" fill="1" visible="no" active="yes"/>
<layer number="46" name="Milling" color="3" fill="1" visible="no" active="yes"/>
<layer number="47" name="Measures" color="7" fill="1" visible="no" active="yes"/>
<layer number="48" name="Document" color="7" fill="1" visible="yes" active="yes"/>
<layer number="49" name="Reference" color="7" fill="1" visible="yes" active="yes"/>
<layer number="51" name="tDocu" color="7" fill="1" visible="yes" active="yes"/>
<layer number="52" name="bDocu" color="7" fill="1" visible="yes" active="yes"/>
</layers>
<board>
<plain>
<wire x1="0" y1="33" x2="33" y2="33" width="0.4064" layer="20"/>
<wire x1="33" y1="33" x2="33" y2="0" width="0.4064" layer="20"/>
<wire x1="33" y1="0" x2="33" y2="-33" width="0.4064" layer="20"/>
<wire x1="33" y1="-33" x2="0" y2="-33" width="0.4064" layer="20"/>
<wire x1="0" y1="-33" x2="-33" y2="-33" width="0.4064" layer="20"/>
<wire x1="-33" y1="-33" x2="-33" y2="0" width="0.4064" layer="20"/>
<wire x1="-33" y1="0" x2="-33" y2="33" width="0.4064" layer="20"/>
<wire x1="-33" y1="33" x2="0" y2="33" width="0.4064" layer="20"/>
<wire x1="0" y1="13" x2="0" y2="-13" width="0.4064" layer="20"/>
<wire x1="-13" y1="0" x2="13" y2="0" width="0.4064" layer="20"/>
<wire x1="0" y1="33" x2="0" y2="23" width="0.4064" layer="20"/>
<wire x1="0" y1="23" x2="0" y2="13" width="0.4064" layer="20"/>
<wire x1="33" y1="0" x2="23" y2="0" width="0.4064" layer="20"/>
<wire x1="23" y1="0" x2="13" y2="0" width="0.4064" layer="20"/>
<wire x1="0" y1="-33" x2="0" y2="-23" width="0.4064" layer="20"/>
<wire x1="0" y1="-23" x2="0" y2="-13" width="0.4064" layer="20"/>
<wire x1="-33" y1="0" x2="-23" y2="0" width="0.4064" layer="20"/>
<wire x1="-23" y1="0" x2="-13" y2="0" width="0.4064" layer="20"/>
<wire x1="80" y1="32" x2="113" y2="32" width="0.4064" layer="20"/>
<wire x1="113" y1="32" x2="113" y2="-1" width="0.4064" layer="20"/>
<wire x1="113" y1="-1" x2="113" y2="-34" width="0.4064" layer="20"/>
<wire x1="113" y1="-34" x2="80" y2="-34" width="0.4064" layer="20"/>
<wire x1="80" y1="-34" x2="47" y2="-34" width="0.4064" layer="20"/>
<wire x1="47" y1="-34" x2="47" y2="-1" width="0.4064" layer="20"/>
<wire x1="47" y1="-1" x2="47" y2="32" width="0.4064" layer="20"/>
<wire x1="47" y1="32" x2="80" y2="32" width="0.4064" layer="20"/>
<wire x1="80" y1="12" x2="80" y2="-14" width="0.4064" layer="20"/>
<wire x1="67" y1="-1" x2="93" y2="-1" width="0.4064" layer="20"/>
<wire x1="80" y1="32" x2="80" y2="22" width="0.4064" layer="20"/>
<wire x1="80" y1="22" x2="80" y2="12" width="0.4064" layer="20"/>
<wire x1="113" y1="-1" x2="103" y2="-1" width="0.4064" layer="20"/>
<wire x1="103" y1="-1" x2="93" y2="-1" width="0.4064" layer="20"/>
<wire x1="80" y1="-34" x2="80" y2="-24" width="0.4064" layer="20"/>
<wire x1="80" y1="-24" x2="80" y2="-14" width="0.4064" layer="20"/>
<wire x1="47" y1="-1" x2="57" y2="-1" width="0.4064" layer="20"/>
<wire x1="57" y1="-1" x2="67" y2="-1" width="0.4064" layer="20"/>
<wire x1="1" y1="-40" x2="34" y2="-40" width="0.4064" layer="20"/>
<wire x1="34" y1="-40" x2="34" y2="-73" width="0.4064" layer="20"/>
<wire x1="34" y1="-73" x2="34" y2="-106" width="0.4064" layer="20"/>
<wire x1="34" y1="-106" x2="1" y2="-106" width="0.4064" layer="20"/>
<wire x1="1" y1="-106" x2="-32" y2="-106" width="0.4064" layer="20"/>
<wire x1="-32" y1="-106" x2="-32" y2="-73" width="0.4064" layer="20"/>
<wire x1="-32" y1="-73" x2="-32" y2="-40" width="0.4064" layer="20"/>
<wire x1="-32" y1="-40" x2="1" y2="-40" width="0.4064" layer="20"/>
<wire x1="1" y1="-60" x2="1" y2="-86" width="0.4064" layer="20"/>
<wire x1="-12" y1="-73" x2="14" y2="-73" width="0.4064" layer="20"/>
<wire x1="1" y1="-40" x2="1" y2="-50" width="0.4064" layer="20"/>
<wire x1="1" y1="-50" x2="1" y2="-60" width="0.4064" layer="20"/>
<wire x1="34" y1="-73" x2="24" y2="-73" width="0.4064" layer="20"/>
<wire x1="24" y1="-73" x2="14" y2="-73" width="0.4064" layer="20"/>
<wire x1="1" y1="-106" x2="1" y2="-96" width="0.4064" layer="20"/>
<wire x1="1" y1="-96" x2="1" y2="-86" width="0.4064" layer="20"/>
<wire x1="-32" y1="-73" x2="-22" y2="-73" width="0.4064" layer="20"/>
<wire x1="-22" y1="-73" x2="-12" y2="-73" width="0.4064" layer="20"/>
<wire x1="81" y1="-41" x2="114" y2="-41" width="0.4064" layer="20"/>
<wire x1="114" y1="-41" x2="114" y2="-74" width="0.4064" layer="20"/>
<wire x1="114" y1="-74" x2="114" y2="-107" width="0.4064" layer="20"/>
<wire x1="114" y1="-107" x2="81" y2="-107" width="0.4064" layer="20"/>
<wire x1="81" y1="-107" x2="48" y2="-107" width="0.4064" layer="20"/>
<wire x1="48" y1="-107" x2="48" y2="-74" width="0.4064" layer="20"/>
<wire x1="48" y1="-74" x2="48" y2="-41" width="0.4064" layer="20"/>
<wire x1="48" y1="-41" x2="81" y2="-41" width="0.4064" layer="20"/>
<wire x1="81" y1="-61" x2="81" y2="-87" width="0.4064" layer="20"/>
<wire x1="68" y1="-74" x2="94" y2="-74" width="0.4064" layer="20"/>
<wire x1="81" y1="-41" x2="81" y2="-51" width="0.4064" layer="20"/>
<wire x1="81" y1="-51" x2="81" y2="-61" width="0.4064" layer="20"/>
<wire x1="114" y1="-74" x2="104" y2="-74" width="0.4064" layer="20"/>
<wire x1="104" y1="-74" x2="94" y2="-74" width="0.4064" layer="20"/>
<wire x1="81" y1="-107" x2="81" y2="-97" width="0.4064" layer="20"/>
<wire x1="81" y1="-97" x2="81" y2="-87" width="0.4064" layer="20"/>
<wire x1="48" y1="-74" x2="58" y2="-74" width="0.4064" layer="20"/>
<wire x1="58" y1="-74" x2="68" y2="-74" width="0.4064" layer="20"/>
<dimension x1="33" y1="33" x2="-33" y2="33" x3="0" y3="38" textsize="1.778" layer="1"/>
<dimension x1="-33" y1="33" x2="-33" y2="-33" x3="-37" y3="0" textsize="1.778" layer="1"/>
</plain>
<libraries>
</libraries>
<attributes>
</attributes>
<variantdefs>
</variantdefs>
<classes>
<class number="0" name="default" width="0" drill="0">
</class>
</classes>
<designrules name="default">
<description language="de">EAGLE Design Rules

Die Standard-Design-Rules sind so gewählt, dass sie für
die meisten Anwendungen passen. Sollte ihre Platine
besondere Anforderungen haben, treffen Sie die erforderlichen
Einstellungen hier und speichern die Design Rules unter
einem neuen Namen ab.</description>
<description language="en">EAGLE Design Rules

The default Design Rules have been set to cover
a wide range of applications. Your particular design
may have different requirements, so please make the
necessary adjustments and save your customized
design rules under a new name.</description>
<param name="layerSetup" value="(1*16)"/>
<param name="mtCopper" value="0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm"/>
<param name="mtIsolate" value="1.5mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm"/>
<param name="mdWireWire" value="8mil"/>
<param name="mdWirePad" value="8mil"/>
<param name="mdWireVia" value="8mil"/>
<param name="mdPadPad" value="8mil"/>
<param name="mdPadVia" value="8mil"/>
<param name="mdViaVia" value="8mil"/>
<param name="mdSmdPad" value="8mil"/>
<param name="mdSmdVia" value="8mil"/>
<param name="mdSmdSmd" value="8mil"/>
<param name="mdViaViaSameLayer" value="8mil"/>
<param name="mnLayersViaInSmd" value="2"/>
<param name="mdCopperDimension" value="40mil"/>
<param name="mdDrill" value="8mil"/>
<param name="mdSmdStop" value="0mil"/>
<param name="msWidth" value="10mil"/>
<param name="msDrill" value="24mil"/>
<param name="msMicroVia" value="9.99mm"/>
<param name="msBlindViaRatio" value="0.5"/>
<param name="rvPadTop" value="0.25"/>
<param name="rvPadInner" value="0.25"/>
<param name="rvPadBottom" value="0.25"/>
<param name="rvViaOuter" value="0.25"/>
<param name="rvViaInner" value="0.25"/>
<param name="rvMicroViaOuter" value="0.25"/>
<param name="rvMicroViaInner" value="0.25"/>
<param name="rlMinPadTop" value="10mil"/>
<param name="rlMaxPadTop" value="20mil"/>
<param name="rlMinPadInner" value="10mil"/>
<param name="rlMaxPadInner" value="20mil"/>
<param name="rlMinPadBottom" value="10mil"/>
<param name="rlMaxPadBottom" value="20mil"/>
<param name="rlMinViaOuter" value="8mil"/>
<param name="rlMaxViaOuter" value="20mil"/>
<param name="rlMinViaInner" value="8mil"/>
<param name="rlMaxViaInner" value="20mil"/>
<param name="rlMinMicroViaOuter" value="4mil"/>
<param name="rlMaxMicroViaOuter" value="20mil"/>
<param name="rlMinMicroViaInner" value="4mil"/>
<param name="rlMaxMicroViaInner" value="20mil"/>
<param name="psTop" value="-1"/>
<param name="psBottom" value="-1"/>
<param name="psFirst" value="-1"/>
<param name="psElongationLong" value="100"/>
<param name="psElongationOffset" value="100"/>
<param name="mvStopFrame" value="1"/>
<param name="mvCreamFrame" value="0"/>
<param name="mlMinStopFrame" value="4mil"/>
<param name="mlMaxStopFrame" value="4mil"/>
<param name="mlMinCreamFrame" value="0mil"/>
<param name="mlMaxCreamFrame" value="0mil"/>
<param name="mlViaStopLimit" value="0mil"/>
<param name="srRoundness" value="0"/>
<param name="srMinRoundness" value="0mil"/>
<param name="srMaxRoundness" value="0mil"/>
<param name="slThermalIsolate" value="10mil"/>
<param name="slThermalsForVias" value="0"/>
<param name="dpMaxLengthDifference" value="10mm"/>
<param name="dpGapFactor" value="2.5"/>
<param name="checkGrid" value="0"/>
<param name="checkAngle" value="0"/>
<param name="checkFont" value="1"/>
<param name="checkRestrict" value="1"/>
<param name="useDiameter" value="13"/>
<param name="maxErrors" value="50"/>
</designrules>
<autorouter>
<pass name="Default">
<param name="RoutingGrid" value="50mil"/>
<param name="tpViaShape" value="round"/>
<param name="PrefDir.1" value="|"/>
<param name="PrefDir.2" value="0"/>
<param name="PrefDir.3" value="0"/>
<param name="PrefDir.4" value="0"/>
<param name="PrefDir.5" value="0"/>
<param name="PrefDir.6" value="0"/>
<param name="PrefDir.7" value="0"/>
<param name="PrefDir.8" value="0"/>
<param name="PrefDir.9" value="0"/>
<param name="PrefDir.10" value="0"/>
<param name="PrefDir.11" value="0"/>
<param name="PrefDir.12" value="0"/>
<param name="PrefDir.13" value="0"/>
<param name="PrefDir.14" value="0"/>
<param name="PrefDir.15" value="0"/>
<param name="PrefDir.16" value="-"/>
<param name="cfVia" value="8"/>
<param name="cfNonPref" value="5"/>
<param name="cfChangeDir" value="2"/>
<param name="cfOrthStep" value="2"/>
<param name="cfDiagStep" value="3"/>
<param name="cfExtdStep" value="0"/>
<param name="cfBonusStep" value="1"/>
<param name="cfMalusStep" value="1"/>
<param name="cfPadImpact" value="4"/>
<param name="cfSmdImpact" value="4"/>
<param name="cfBusImpact" value="0"/>
<param name="cfHugging" value="3"/>
<param name="cfAvoid" value="4"/>
<param name="cfPolygon" value="10"/>
<param name="cfBase.1" value="0"/>
<param name="cfBase.2" value="1"/>
<param name="cfBase.3" value="1"/>
<param name="cfBase.4" value="1"/>
<param name="cfBase.5" value="1"/>
<param name="cfBase.6" value="1"/>
<param name="cfBase.7" value="1"/>
<param name="cfBase.8" value="1"/>
<param name="cfBase.9" value="1"/>
<param name="cfBase.10" value="1"/>
<param name="cfBase.11" value="1"/>
<param name="cfBase.12" value="1"/>
<param name="cfBase.13" value="1"/>
<param name="cfBase.14" value="1"/>
<param name="cfBase.15" value="1"/>
<param name="cfBase.16" value="0"/>
<param name="mnVias" value="20"/>
<param name="mnSegments" value="9999"/>
<param name="mnExtdSteps" value="9999"/>
<param name="mnRipupLevel" value="10"/>
<param name="mnRipupSteps" value="100"/>
<param name="mnRipupTotal" value="100"/>
</pass>
<pass name="Follow-me" refer="Default" active="yes">
</pass>
<pass name="Busses" refer="Default" active="yes">
<param name="cfNonPref" value="4"/>
<param name="cfBusImpact" value="4"/>
<param name="cfHugging" value="0"/>
<param name="mnVias" value="0"/>
</pass>
<pass name="Route" refer="Default" active="yes">
</pass>
<pass name="Optimize1" refer="Default" active="yes">
<param name="cfVia" value="99"/>
<param name="cfExtdStep" value="10"/>
<param name="cfHugging" value="1"/>
<param name="mnExtdSteps" value="1"/>
<param name="mnRipupLevel" value="0"/>
</pass>
<pass name="Optimize2" refer="Optimize1" active="yes">
<param name="cfNonPref" value="0"/>
<param name="cfChangeDir" value="6"/>
<param name="cfExtdStep" value="0"/>
<param name="cfBonusStep" value="2"/>
<param name="cfMalusStep" value="2"/>
<param name="cfPadImpact" value="2"/>
<param name="cfSmdImpact" value="2"/>
<param name="cfHugging" value="0"/>
</pass>
<pass name="Optimize3" refer="Optimize2" active="yes">
<param name="cfChangeDir" value="8"/>
<param name="cfPadImpact" value="0"/>
<param name="cfSmdImpact" value="0"/>
</pass>
<pass name="Optimize4" refer="Optimize3" active="yes">
<param name="cfChangeDir" value="25"/>
</pass>
</autorouter>
<elements>
</elements>
<signals>
<signal name="S$1">
<wire x1="33" y1="0" x2="33" y2="33" width="0.4064" layer="16"/>
<wire x1="33" y1="0" x2="30" y2="0" width="0.4064" layer="16"/>
<wire x1="30" y1="0" x2="20" y2="0" width="0.4064" layer="16"/>
<wire x1="20" y1="0" x2="10" y2="0" width="0.4064" layer="16"/>
<wire x1="10" y1="0" x2="0" y2="0" width="0.4064" layer="16"/>
<wire x1="0" y1="0" x2="-10" y2="0" width="0.4064" layer="16"/>
<wire x1="-10" y1="0" x2="-20" y2="0" width="0.4064" layer="16"/>
<wire x1="-20" y1="0" x2="-30" y2="0" width="0.4064" layer="16"/>
<wire x1="-30" y1="0" x2="-33" y2="0" width="0.4064" layer="16"/>
<wire x1="-33" y1="0" x2="-33" y2="-33" width="0.4064" layer="16"/>
<wire x1="-33" y1="-33" x2="33" y2="-33" width="0.4064" layer="16"/>
<wire x1="33" y1="-33" x2="33" y2="0" width="0.4064" layer="16"/>
<wire x1="33" y1="33" x2="-33" y2="33" width="0.4064" layer="16"/>
<wire x1="-33" y1="33" x2="-33" y2="0" width="0.4064" layer="16"/>
<via x="-10" y="0" extent="1-16" drill="1.5" diameter="3.81"/>
<via x="-20" y="0" extent="1-16" drill="1.5" diameter="3.81"/>
<via x="-30" y="0" extent="1-16" drill="1.5" diameter="3.81"/>
<via x="10" y="0" extent="1-16" drill="1.5" diameter="3.81"/>
<via x="20" y="0" extent="1-16" drill="1.5" diameter="3.81"/>
<via x="30" y="0" extent="1-16" drill="1.5" diameter="3.81"/>
<via x="0" y="0" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$18">
<via x="-30" y="30" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$19">
<via x="-30" y="20" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$21">
<via x="-20" y="30" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$23">
<via x="-25" y="25" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$24">
<via x="-15" y="25" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$25">
<via x="-25" y="15" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$26">
<via x="-15" y="15" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$27">
<via x="-20" y="20" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$33">
<via x="20" y="30" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$34">
<via x="30" y="30" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$35">
<via x="30" y="20" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$36">
<via x="20" y="20" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$41">
<via x="15" y="15" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$42">
<via x="15" y="25" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$43">
<via x="25" y="25" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$44">
<via x="25" y="15" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$49">
<via x="-20" y="-20" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$50">
<via x="-30" y="-20" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$51">
<via x="-25" y="-15" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$52">
<via x="-15" y="-15" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$54">
<via x="-20" y="-30" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$55">
<via x="-30" y="-30" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$56">
<via x="-25" y="-25" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$57">
<via x="-15" y="-25" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$61">
<via x="30" y="-20" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$62">
<via x="20" y="-20" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$65">
<via x="20" y="-30" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$66">
<via x="30" y="-30" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$67">
<via x="25" y="-25" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$68">
<via x="15" y="-25" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$69">
<via x="15" y="-15" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$70">
<via x="25" y="-15" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$2">
<via x="0" y="30" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$3">
<via x="0" y="20" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$4">
<via x="0" y="10" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$5">
<via x="0" y="-10" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$6">
<via x="0" y="-20" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$7">
<via x="0" y="-30" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$8">
<via x="-30" y="10" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$9">
<via x="-10" y="30" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$10">
<via x="10" y="30" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$11">
<via x="30" y="10" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$12">
<via x="30" y="-10" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$13">
<via x="10" y="-30" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$14">
<via x="-10" y="-30" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$15">
<via x="-30" y="-10" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$16">
<via x="-10" y="20" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$17">
<via x="-20" y="10" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$20">
<via x="-10" y="10" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$22">
<via x="10" y="20" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$28">
<via x="10" y="10" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$29">
<via x="20" y="10" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$30">
<via x="20" y="-10" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$31">
<via x="10" y="-10" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$32">
<via x="10" y="-20" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$37">
<via x="-10" y="-20" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$38">
<via x="-10" y="-10" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$39">
<via x="-20" y="-10" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$40">
<wire x1="113" y1="-1" x2="113" y2="32" width="0.4064" layer="16"/>
<wire x1="113" y1="-1" x2="110" y2="-1" width="0.4064" layer="16"/>
<wire x1="110" y1="-1" x2="100" y2="-1" width="0.4064" layer="16"/>
<wire x1="100" y1="-1" x2="90" y2="-1" width="0.4064" layer="16"/>
<wire x1="90" y1="-1" x2="80" y2="-1" width="0.4064" layer="16"/>
<wire x1="80" y1="-1" x2="70" y2="-1" width="0.4064" layer="16"/>
<wire x1="70" y1="-1" x2="60" y2="-1" width="0.4064" layer="16"/>
<wire x1="60" y1="-1" x2="50" y2="-1" width="0.4064" layer="16"/>
<wire x1="50" y1="-1" x2="47" y2="-1" width="0.4064" layer="16"/>
<wire x1="47" y1="-1" x2="47" y2="-34" width="0.4064" layer="16"/>
<wire x1="47" y1="-34" x2="113" y2="-34" width="0.4064" layer="16"/>
<wire x1="113" y1="-34" x2="113" y2="-1" width="0.4064" layer="16"/>
<wire x1="113" y1="32" x2="47" y2="32" width="0.4064" layer="16"/>
<wire x1="47" y1="32" x2="47" y2="-1" width="0.4064" layer="16"/>
<via x="70" y="-1" extent="1-16" drill="1.5" diameter="3.81"/>
<via x="60" y="-1" extent="1-16" drill="1.5" diameter="3.81"/>
<via x="50" y="-1" extent="1-16" drill="1.5" diameter="3.81"/>
<via x="90" y="-1" extent="1-16" drill="1.5" diameter="3.81"/>
<via x="100" y="-1" extent="1-16" drill="1.5" diameter="3.81"/>
<via x="110" y="-1" extent="1-16" drill="1.5" diameter="3.81"/>
<via x="80" y="-1" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$45">
<via x="50" y="29" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$46">
<via x="50" y="19" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$47">
<via x="60" y="29" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$48">
<via x="55" y="24" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$53">
<via x="65" y="24" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$58">
<via x="55" y="14" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$59">
<via x="65" y="14" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$60">
<via x="60" y="19" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$63">
<via x="100" y="29" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$64">
<via x="110" y="29" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$71">
<via x="110" y="19" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$72">
<via x="100" y="19" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$73">
<via x="95" y="14" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$74">
<via x="95" y="24" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$75">
<via x="105" y="24" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$76">
<via x="105" y="14" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$77">
<via x="60" y="-21" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$78">
<via x="50" y="-21" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$79">
<via x="55" y="-16" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$80">
<via x="65" y="-16" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$81">
<via x="60" y="-31" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$82">
<via x="50" y="-31" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$83">
<via x="55" y="-26" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$84">
<via x="65" y="-26" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$85">
<via x="110" y="-21" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$86">
<via x="100" y="-21" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$87">
<via x="100" y="-31" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$88">
<via x="110" y="-31" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$89">
<via x="105" y="-26" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$90">
<via x="95" y="-26" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$91">
<via x="95" y="-16" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$92">
<via x="105" y="-16" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$93">
<via x="80" y="29" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$94">
<via x="80" y="19" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$95">
<via x="80" y="9" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$96">
<via x="80" y="-11" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$97">
<via x="80" y="-21" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$98">
<via x="80" y="-31" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$99">
<via x="50" y="9" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$100">
<via x="70" y="29" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$101">
<via x="90" y="29" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$102">
<via x="110" y="9" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$103">
<via x="110" y="-11" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$104">
<via x="90" y="-31" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$105">
<via x="70" y="-31" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$106">
<via x="50" y="-11" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$107">
<via x="70" y="19" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$108">
<via x="60" y="9" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$109">
<via x="70" y="9" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$110">
<via x="90" y="19" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$111">
<via x="90" y="9" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$112">
<via x="100" y="9" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$113">
<via x="100" y="-11" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$114">
<via x="90" y="-11" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$115">
<via x="90" y="-21" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$116">
<via x="70" y="-21" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$117">
<via x="70" y="-11" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$118">
<via x="60" y="-11" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$119">
<wire x1="34" y1="-73" x2="34" y2="-40" width="0.4064" layer="16"/>
<wire x1="34" y1="-73" x2="31" y2="-73" width="0.4064" layer="16"/>
<wire x1="31" y1="-73" x2="21" y2="-73" width="0.4064" layer="16"/>
<wire x1="21" y1="-73" x2="11" y2="-73" width="0.4064" layer="16"/>
<wire x1="11" y1="-73" x2="1" y2="-73" width="0.4064" layer="16"/>
<wire x1="1" y1="-73" x2="-9" y2="-73" width="0.4064" layer="16"/>
<wire x1="-9" y1="-73" x2="-19" y2="-73" width="0.4064" layer="16"/>
<wire x1="-19" y1="-73" x2="-29" y2="-73" width="0.4064" layer="16"/>
<wire x1="-29" y1="-73" x2="-32" y2="-73" width="0.4064" layer="16"/>
<wire x1="-32" y1="-73" x2="-32" y2="-106" width="0.4064" layer="16"/>
<wire x1="-32" y1="-106" x2="34" y2="-106" width="0.4064" layer="16"/>
<wire x1="34" y1="-106" x2="34" y2="-73" width="0.4064" layer="16"/>
<wire x1="34" y1="-40" x2="-32" y2="-40" width="0.4064" layer="16"/>
<wire x1="-32" y1="-40" x2="-32" y2="-73" width="0.4064" layer="16"/>
<via x="-9" y="-73" extent="1-16" drill="1.5" diameter="3.81"/>
<via x="-19" y="-73" extent="1-16" drill="1.5" diameter="3.81"/>
<via x="-29" y="-73" extent="1-16" drill="1.5" diameter="3.81"/>
<via x="11" y="-73" extent="1-16" drill="1.5" diameter="3.81"/>
<via x="21" y="-73" extent="1-16" drill="1.5" diameter="3.81"/>
<via x="31" y="-73" extent="1-16" drill="1.5" diameter="3.81"/>
<via x="1" y="-73" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$120">
<via x="-29" y="-43" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$121">
<via x="-29" y="-53" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$122">
<via x="-19" y="-43" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$123">
<via x="-24" y="-48" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$124">
<via x="-14" y="-48" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$125">
<via x="-24" y="-58" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$126">
<via x="-14" y="-58" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$127">
<via x="-19" y="-53" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$128">
<via x="21" y="-43" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$129">
<via x="31" y="-43" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$130">
<via x="31" y="-53" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$131">
<via x="21" y="-53" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$132">
<via x="16" y="-58" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$133">
<via x="16" y="-48" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$134">
<via x="26" y="-48" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$135">
<via x="26" y="-58" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$136">
<via x="-19" y="-93" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$137">
<via x="-29" y="-93" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$138">
<via x="-24" y="-88" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$139">
<via x="-14" y="-88" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$140">
<via x="-19" y="-103" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$141">
<via x="-29" y="-103" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$142">
<via x="-24" y="-98" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$143">
<via x="-14" y="-98" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$144">
<via x="31" y="-93" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$145">
<via x="21" y="-93" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$146">
<via x="21" y="-103" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$147">
<via x="31" y="-103" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$148">
<via x="26" y="-98" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$149">
<via x="16" y="-98" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$150">
<via x="16" y="-88" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$151">
<via x="26" y="-88" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$152">
<via x="1" y="-43" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$153">
<via x="1" y="-53" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$154">
<via x="1" y="-63" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$155">
<via x="1" y="-83" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$156">
<via x="1" y="-93" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$157">
<via x="1" y="-103" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$158">
<via x="-29" y="-63" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$159">
<via x="-9" y="-43" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$160">
<via x="11" y="-43" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$161">
<via x="31" y="-63" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$162">
<via x="31" y="-83" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$163">
<via x="11" y="-103" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$164">
<via x="-9" y="-103" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$165">
<via x="-29" y="-83" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$166">
<via x="-9" y="-53" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$167">
<via x="-19" y="-63" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$168">
<via x="-9" y="-63" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$169">
<via x="11" y="-53" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$170">
<via x="11" y="-63" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$171">
<via x="21" y="-63" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$172">
<via x="21" y="-83" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$173">
<via x="11" y="-83" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$174">
<via x="11" y="-93" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$175">
<via x="-9" y="-93" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$176">
<via x="-9" y="-83" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$177">
<via x="-19" y="-83" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$178">
<wire x1="114" y1="-74" x2="114" y2="-41" width="0.4064" layer="16"/>
<wire x1="114" y1="-74" x2="111" y2="-74" width="0.4064" layer="16"/>
<wire x1="111" y1="-74" x2="101" y2="-74" width="0.4064" layer="16"/>
<wire x1="101" y1="-74" x2="91" y2="-74" width="0.4064" layer="16"/>
<wire x1="91" y1="-74" x2="81" y2="-74" width="0.4064" layer="16"/>
<wire x1="81" y1="-74" x2="71" y2="-74" width="0.4064" layer="16"/>
<wire x1="71" y1="-74" x2="61" y2="-74" width="0.4064" layer="16"/>
<wire x1="61" y1="-74" x2="51" y2="-74" width="0.4064" layer="16"/>
<wire x1="51" y1="-74" x2="48" y2="-74" width="0.4064" layer="16"/>
<wire x1="48" y1="-74" x2="48" y2="-107" width="0.4064" layer="16"/>
<wire x1="48" y1="-107" x2="114" y2="-107" width="0.4064" layer="16"/>
<wire x1="114" y1="-107" x2="114" y2="-74" width="0.4064" layer="16"/>
<wire x1="114" y1="-41" x2="48" y2="-41" width="0.4064" layer="16"/>
<wire x1="48" y1="-41" x2="48" y2="-74" width="0.4064" layer="16"/>
<via x="71" y="-74" extent="1-16" drill="1.5" diameter="3.81"/>
<via x="61" y="-74" extent="1-16" drill="1.5" diameter="3.81"/>
<via x="51" y="-74" extent="1-16" drill="1.5" diameter="3.81"/>
<via x="91" y="-74" extent="1-16" drill="1.5" diameter="3.81"/>
<via x="101" y="-74" extent="1-16" drill="1.5" diameter="3.81"/>
<via x="111" y="-74" extent="1-16" drill="1.5" diameter="3.81"/>
<via x="81" y="-74" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$179">
<via x="51" y="-44" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$180">
<via x="51" y="-54" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$181">
<via x="61" y="-44" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$182">
<via x="56" y="-49" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$183">
<via x="66" y="-49" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$184">
<via x="56" y="-59" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$185">
<via x="66" y="-59" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$186">
<via x="61" y="-54" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$187">
<via x="101" y="-44" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$188">
<via x="111" y="-44" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$189">
<via x="111" y="-54" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$190">
<via x="101" y="-54" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$191">
<via x="96" y="-59" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$192">
<via x="96" y="-49" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$193">
<via x="106" y="-49" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$194">
<via x="106" y="-59" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$195">
<via x="61" y="-94" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$196">
<via x="51" y="-94" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$197">
<via x="56" y="-89" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$198">
<via x="66" y="-89" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$199">
<via x="61" y="-104" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$200">
<via x="51" y="-104" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$201">
<via x="56" y="-99" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$202">
<via x="66" y="-99" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$203">
<via x="111" y="-94" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$204">
<via x="101" y="-94" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$205">
<via x="101" y="-104" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$206">
<via x="111" y="-104" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$207">
<via x="106" y="-99" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$208">
<via x="96" y="-99" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$209">
<via x="96" y="-89" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$210">
<via x="106" y="-89" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$211">
<via x="81" y="-44" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$212">
<via x="81" y="-54" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$213">
<via x="81" y="-64" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$214">
<via x="81" y="-84" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$215">
<via x="81" y="-94" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$216">
<via x="81" y="-104" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$217">
<via x="51" y="-64" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$218">
<via x="71" y="-44" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$219">
<via x="91" y="-44" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$220">
<via x="111" y="-64" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$221">
<via x="111" y="-84" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$222">
<via x="91" y="-104" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$223">
<via x="71" y="-104" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$224">
<via x="51" y="-84" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$225">
<via x="71" y="-54" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$226">
<via x="61" y="-64" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$227">
<via x="71" y="-64" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$228">
<via x="91" y="-54" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$229">
<via x="91" y="-64" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$230">
<via x="101" y="-64" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$231">
<via x="101" y="-84" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$232">
<via x="91" y="-84" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$233">
<via x="91" y="-94" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$234">
<via x="71" y="-94" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$235">
<via x="71" y="-84" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
<signal name="S$236">
<via x="61" y="-84" extent="1-16" drill="1.5" diameter="3.81"/>
</signal>
</signals>
</board>
</drawing>
</eagle>

repository: kevarek/Quadcopter

repo_name: kevarek/Quadcopter

extension: brd


text:
/*
 * @lc app=leetcode.cn id=66 lang=golang
 *
 * [66] 加一
 */

// @lc code=start
func plusOne(digits []int) []int {
    for i:=len(digits)-1;i>=0;i--{
        if digits[i]==9{
            digits[i]=0
        }else{
            digits[i]=digits[i]+1
            break
        }
    }
    if digits[0]==0{
        digits=append([]int{1},digits...)
    }
    return digits
}
// @lc code=end


text:
package config

import (
	"github.com/Jeffail/benthos/v3/internal/docs"
	"github.com/Jeffail/benthos/v3/lib/api"
	"github.com/Jeffail/benthos/v3/lib/log"
	"github.com/Jeffail/benthos/v3/lib/manager"
	"github.com/Jeffail/benthos/v3/lib/stream"
)

var httpField = docs.FieldCommon("http", "Configures the service-wide HTTP server.").WithChildren(api.Spec()...)

var observabilityFields = docs.FieldSpecs{
	docs.FieldCommon("logger", "Describes how operational logs should be emitted.").WithChildren(log.Spec()...),
	docs.FieldCommon("metrics", "A mechanism for exporting metrics.").HasType(docs.FieldTypeMetrics),
	docs.FieldCommon("tracer", "A mechanism for exporting traces.").HasType(docs.FieldTypeTracer),
	docs.FieldString("shutdown_timeout", "The maximum period of time to wait for a clean shutdown. If this time is exceeded Benthos will forcefully close.").HasDefault("20s"),
}

// TestsField describes the optional test definitions field at the root of a
// benthos config.
var TestsField = docs.FieldCommon("tests", "Optional unit tests for the config, to be run with the `benthos test` subcommand.").Array().HasType(docs.FieldTypeUnknown).HasDefault([]interface{}{})

// Spec returns a docs.FieldSpec for an entire Benthos configuration.
func Spec() docs.FieldSpecs {
	fields := docs.FieldSpecs{httpField}
	fields = append(fields, stream.Spec()...)
	fields = append(fields, manager.Spec()...)
	fields = append(fields, observabilityFields...)
	fields = append(fields, TestsField)
	return fields
}

// SpecWithoutStream describes a stream config without the core stream fields.
func SpecWithoutStream() docs.FieldSpecs {
	fields := docs.FieldSpecs{httpField}
	fields = append(fields, manager.Spec()...)
	fields = append(fields, observabilityFields...)
	fields = append(fields, TestsField)
	return fields
}


text:
inherit setuptools
require python-behave.inc

RDEPENDS_${PN} += " \
    ${PYTHON_PN}-argparse \
    ${PYTHON_PN}-enum34 \
    ${PYTHON_PN}-traceback2 \
    "

repository: Kynetics/meta-openembedded

repo_name: Kynetics/meta-openembedded


text:
package stats

import (
	"bytes"
	"time"

	"github.com/cactus/go-statsd-client/statsd"
)

// Statsd represents a statsd client.
type Statsd struct {
	client statsd.Statter
}

// NewStatsd create a Statsd instance.
func NewStatsd(addr, prefix string) (*Statsd, error) {
	c, err := statsd.New(addr, prefix)
	if err != nil {
		return nil, err
	}

	return &Statsd{
		client: c,
	}, nil
}

// Inc increments a count by the value.
func (s Statsd) Inc(name string, value int64, rate float32, tags map[string]string) error {
	name += s.formatTags(tags)
	return s.client.Inc(name, value, rate)
}

// Dec decrements a count by the value.
func (s Statsd) Dec(name string, value int64, rate float32, tags map[string]string) error {
	name += s.formatTags(tags)
	return s.client.Dec(name, value, rate)
}

// Gauge measures the value of a metric.
func (s Statsd) Gauge(name string, value float64, rate float32, tags map[string]string) error {
	name += s.formatTags(tags)
	return s.client.Gauge(name, int64(value), rate)
}

// Timing sends the value of a Duration.
func (s Statsd) Timing(name string, value time.Duration, rate float32, tags map[string]string) error {
	name += s.formatTags(tags)
	return s.client.TimingDuration(name, value, rate)
}

// formatTags formats into an InfluxDB style string
func (s Statsd) formatTags(tags map[string]string) string {
	if len(tags) == 0 {
		return ""
	}

	var buf bytes.Buffer
	for k, v := range tags {
		buf.WriteString(",")
		buf.WriteString(k)
		buf.WriteString("=")
		buf.WriteString(v)
	}

	return buf.String()
}

repository: jacksonspiedade/gostats

repo_name: jacksonspiedade/gostats


text:
package main

import (
	"crypto/rand"
	"fmt"
	"github.com/guitangli/go_util/secure"
)

func main()  {
	key := "12345678901234567890123456789012"
	err := secure.InitAESCBC([]byte(key))
	if err != nil {
		panic(err)
	}
	blockSize := secure.AESCBCBlockSize()
	iv := make([]byte, blockSize)
	_, err = rand.Read(iv)
	if err != nil {
		panic(err)
	}
	//secure.AESCBCEncryptSetIV(iv)
	//secure.AESCBCDecryptSetIV(iv)
	fmt.Printf("iv=%v\n", iv)

	plaintext := "1234567890123456"

	ciphertext, err := secure.AESCBCEncryptNoPadding([]byte(plaintext))
	if err != nil {
		panic(err)
	}
	fmt.Printf("ciphertext=%v", ciphertext)

	compare, err := secure.AESCBCDecryptNoPadding(ciphertext)
	if err != nil {
		panic(err)
	}
	fmt.Printf("compare=%v", string(compare))
	if string(compare) != plaintext {
		panic("diff")
	}
}


text:
package main

import (
	"bufio"
	"bytes"
	"context"
	"strings"
	"testing"

	"github.com/stretchr/testify/assert"
)

// TestHandle .
func TestHandle(test *testing.T) {
	reader := strings.NewReader("test")
	writer := bufio.NewWriter(&bytes.Buffer{})
	HandleRequest(context.Background(), reader, writer)

	assert.True(test, TestResult)
}

// TestCreateAPI .
func TestCreateAPI(test *testing.T) {
	result := CreateAPI()
	assert.NotNil(test, result)
}


text:
#include <gtest/gtest.h>
#include <zaf/control/linear_box.h>
#include <zaf/creation.h>

//Children would not be layouted if it is invisible.
TEST(LayoutCaseTest, Case1) {

    auto parent = zaf::Create<zaf::VerticalBox>();
    parent->SetFixedSize(zaf::Size{ 100, 100 });

    auto child1 = zaf::Create<zaf::Control>();
    child1->SetIsVisible(false);

    auto child2 = zaf::Create<zaf::Control>();
    parent->AddChildren({ child1, child2 });

    ASSERT_EQ(child1->Height(), 0);
    ASSERT_EQ(child2->Height(), 100);
}

//Children can be layouted even if parent is invisible.
TEST(LayoutCaseTest, Case2) {

    auto parent = zaf::Create<zaf::VerticalBox>();
    parent->SetIsVisible(false);
    parent->SetFixedSize(zaf::Size{ 100, 100 });

    auto child = zaf::Create<zaf::Control>();
    parent->AddChild(child);

    ASSERT_EQ(child->Width(), 100);
    ASSERT_EQ(child->Height(), 100);
}

repository: Zplutor/zaf

repo_name: Zplutor/zaf


text:
package qtrade

import (
	"encoding/json"
	"fmt"
	"math"
	"net/http"
	"path"
	"strconv"
	"sync"
	"time"
)

type Ticker struct {
	Data struct {
		Ask             float64 `json:"ask,string"`
		Bid             float64 `json:"bid,string"`
		DayAvgPrice     float64 `json:"day_avg_price,string"`
		DayChange       float64 `json:"day_change,string"`
		DayHigh         float64 `json:"day_high,string"`
		DayLow          float64 `json:"day_low,string"`
		DayOpen         float64 `json:"day_open,string"`
		DayVolumeBase   float64 `json:"day_volume_base,string"`
		DayVolumeMarket float64 `json:"day_volume_market,string"`
		ID              int     `json:"id"`
		IDHr            string  `json:"id_hr"`
		Last            float64 `json:"last,string"`
	} `json:"data"`
}

func (p *Client) Ticker(code string) (*Ticker, error) {
	p.URL.Path = path.Join(VERSION, "ticker", code)
	res, err := p.do(http.MethodGet, p.URL.String(), nil, nil)
	if err != nil {
		return nil, err
	}

	t := new(Ticker)
	decoder(res, &t)

	return t, err
}

type Orderbook struct {
	Data struct {
		BestAsk, BestBid float64
		Buy              Books `json:"buy"`
		Sell             Books `json:"sell"`
	} `json:"data"`
}

type Books struct {
	Books []Book
}

type Book struct {
	Price float64
	Size  float64
}

func (p *Client) Orderbook(code string) (*Orderbook, error) {
	p.URL.Path = path.Join(VERSION, "orderbook", code)
	res, err := p.do(http.MethodGet, p.URL.String(), nil, nil)
	if err != nil {
		return nil, err
	}

	o := new(Orderbook)
	decoder(res, &o)

	o.getSpread()

	return o, err
}

func (p *Books) UnmarshalJSON(b []byte) error {
	var j map[string]string
	json.Unmarshal(b, &j)

	for key, val := range j {
		price, err := strconv.ParseFloat(key, 64)
		if err != nil {
			continue
		}
		size, err := strconv.ParseFloat(val, 64)
		if err != nil {
			continue
		}
		p.Books = append(p.Books, Book{
			Price: price,
			Size:  size,
		})
	}

	return nil
}

func (p *Orderbook) getSpread() {
	var wg sync.WaitGroup

	wg.Add(1)
	go func() {
		var bid float64
		for _, v := range p.Data.Buy.Books {
			if bid < v.Price {
				bid = v.Price
			}
		}
		p.Data.BestBid = bid
		wg.Done()
	}()

	wg.Add(1)
	go func() {
		ask := math.Inf(1)
		for _, v := range p.Data.Sell.Books {
			if ask > v.Price {
				ask = v.Price
			}
		}
		p.Data.BestAsk = ask
		wg.Done()
	}()

	wg.Wait()
}

type Executions struct {
	Data struct {
		Trades []struct {
			Amount      float64   `json:"amount,string"`
			CreatedAt   time.Time `json:"created_at"`
			Price       float64   `json:"price,string"`
			SellerTaker bool      `json:"seller_taker"`
		} `json:"trades"`
	} `json:"data"`
}

func (p *Client) Executions(code string) (*Executions, error) {
	p.URL.Path = fmt.Sprintf("%s/market/%s/trades", VERSION, code)
	res, err := p.do(http.MethodGet, p.URL.String(), nil, nil)
	if err != nil {
		return nil, err
	}

	e := new(Executions)
	decoder(res, &e)

	return e, err
}

repository: go-numb/go-qtrade

repo_name: go-numb/go-qtrade


text:
require linux.inc

PR = "r8"

# Mark archs/machines that this kernel supports
DEFAULT_PREFERENCE = "-1"
DEFAULT_PREFERENCE_boc01 = "1"
DEFAULT_PREFERENCE_mpc8313e-rdb = "1"
DEFAULT_PREFERENCE_canyonlands = "1"

SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.26.tar.bz2 \
           file://defconfig"

SRC_URI_append_boc01 = "\
	file://boc01.dts \
	file://fsl-elbc-nand-backport.patch;patch=1 \
	file://002-081105-headers.patch;patch=1 \
	file://004-081105-usb.patch;patch=1 \
	file://005-081217-isl12024.patch;patch=1 \
	file://006-081216-at24c32.patch;patch=1 \
	file://007-081216-lm73.patch;patch=1 \
	file://008-081127-spi.patch;patch=1 \
	file://010-081105-mii.patch;patch=1 \
	file://011-081202-gpio.patch;patch=1 \
	file://012-081222-cy3218-btns.patch;patch=1 \
	file://013-081212-lcd.patch;patch=1 \
	"

SRC_URI_append_mpc8313e-rdb = "\
	file://cdc-ether-hack.patch;patch=1 \
	file://fsl-elbc-nand-backport.patch;patch=1 \
	file://mpc8313e-rdb-leds.patch;patch=1 \
	file://mpc8313e-rdb-cardbus.patch;patch=1 \
	file://mpc8313e-rdb-eth-fixed.patch;patch=1 \
	"

# see http://bugzilla.kernel.org/show_bug.cgi?id=11143
do_stage_append() {
	if [ -f arch/${ARCH}/lib/crtsavres.o ]; then
		mkdir -p ${STAGING_KERNEL_DIR}/arch/${ARCH}/lib
		cp -a arch/${ARCH}/lib/crtsavres.o ${STAGING_KERNEL_DIR}/arch/${ARCH}/lib/
	fi
}


text:
DESCRIPTION = "Enhance translates between glade .xml files and ETK"
LICENSE = "MIT"
DEPENDS = "exml"
PV = "0.0.0+svnr${SRCREV}"
PR = "r1"

inherit efl


text:
LICENSE = GPL
DESCRIPTION = "libxine is a library for multimedia players. \
It plays back CDs, DVDs, and VCDs. It also decodes multimedia \
files like AVI, MOV, WMV, and MP3 from local disk drives, \
and displays multimedia streamed over the Internet. It interprets \
many of the most common multimedia formats available - \
and some of the most uncommon formats, too."
SECTION = "libs"
PRIORITY = "optional"
DEPENDS = "zlib libogg tremor libmad"
PR = "r4"

DEFAULT_PREFERENCE = "-1"

inherit autotools pkgconfig binconfig gettext

SRC_URI = "${SOURCEFORGE_MIRROR}/xine/xine-lib-1-beta12.tar.gz \
	   file://full.patch;patch=1 \
	   file://libvorbis.patch;patch=1 \
	   file://demux_ogg.patch;patch=1 \
	   file://configure.ac.patch;patch=1 \
	   file://vo_scale.patch;patch=1 \
	   file://oss.patch;patch=1;pnum=0 \
	   file://fix-oss-plugin.patch;patch=1 \
	   file://mpegvideo-static-inlining.patch;patch=1 \
	   file://fix-syntax-xine-vorbis-decoder.patch;patch=1 \
	   file://fftscope-static-inlining.patch;patch=1"
S = "${WORKDIR}/xine-lib-1-beta12"

SOV = "1.0.6"

do_configure() {
	./autogen.sh --host ${TARGET_SYS} --build ${BUILD_SYS} \
	      --enable-shared --disable-static --prefix=${prefix} \
	      --with-zlib-path=${STAGING_DIR}/${HOST_SYS} --with-vorbis-prefix=${STAGING_DIR}/${HOST_SYS} \
	      --disable-oggtest --with-ogg-prefix=${STAGING_DIR}/${HOST_SYS} --without-x \
	--disable-iconv --without-arts --without-sdl \
	--disable-aalib
}

do_compile() {
	oe_runmake LIBTOOL=${STAGING_BINDIR}/${TARGET_PREFIX}libtool OGG_LIBS=${STAGING_LIBDIR}/libogg.so
}

do_stage() {
	oe_runmake -e LIBTOOL=${STAGING_BINDIR}/${TARGET_PREFIX}libtool \
	  -C src install-data \
	  'prefix=${STAGING_DIR}' 'exec_prefix=${STAGING_DIR}' \
	  'libdir=${STAGING_LIBDIR}' \
	  'includedir=${STAGING_INCDIR}'

	oe_runmake -e LIBTOOL=${STAGING_BINDIR}/${TARGET_PREFIX}libtool \
	  -C include install-data \
	  'prefix=${STAGING_DIR}' 'exec_prefix=${STAGING_DIR}' \
	  'libdir=${STAGING_LIBDIR}' \
	  'includedir=${STAGING_INCDIR}'

	for plugin in `find ${S}/src -type f -name xineplug*.la`; do
	  dir=`dirname $plugin`
	  libname=`basename $plugin|sed -e's,\.la,,'`
	  oe_libinstall -so -C $dir $libname ${STAGING_LIBDIR}/xine/plugins/1.0.0
	done

	oe_libinstall -so -C src/xine-engine libxine ${STAGING_LIBDIR}
}

do_install() {
        oe_runmake -e LIBTOOL=${STAGING_BINDIR}/${TARGET_PREFIX}libtool \
          -C src install-data \
          'prefix=${D}' 'exec_prefix=${D}' 'libdir=${D}${libdir}' \
          'includedir=${D}${includedir}'

        oe_runmake -e LIBTOOL=${STAGING_BINDIR}/${TARGET_PREFIX}libtool \
          -C include install-data \
          'prefix=${D}' 'exec_prefix=${D}' 'libdir=${D}${libdir}' \
          'includedir=${D}${includedir}'

        for plugin in `find ${S}/src -type f -name xineplug*.la`; do
          dir=`dirname $plugin`
          libname=`basename $plugin|sed -e's,\.la,,'`
          oe_libinstall -so -C $dir $libname ${D}${libdir}/xine/plugins/1.0.0
        done

        oe_libinstall -so -C src/xine-engine libxine ${D}${libdir}
}

python populate_packages_prepend () {
	plugins_dir = bb.data.expand('${libdir}/xine/plugins/1.0.0/', d)

	do_split_packages(d, plugins_dir, file_regex='^xineplug_(.*).so$', output_pattern='libxine-plugin-%s', description='Xine plugin - %s')
}

repository: BackupTheBerlios/openslug-svn

repo_name: BackupTheBerlios/openslug-svn


text:
DESCRIPTION = "OLE::Storage_Lite - Simple Class for OLE document interface"
SECTION = "libs"
LICENSE = "Artistic|GPLv1+"
BBCLASSEXTEND = "native"
RDEPENDS_${PN} += "perl-module-extutils-makemaker"
PR = "r1"

SRC_URI = "http://search.cpan.org/CPAN/authors/id/J/JM/JMCNAMARA/OLE-Storage_Lite-${PV}.tar.gz;name=ole-storage-lite-perl-${PV}"
SRC_URI[ole-storage-lite-perl-0.19.md5sum] = "1a713f5342c7d90e54ab0d9659650296"
SRC_URI[ole-storage-lite-perl-0.19.sha256sum] = "e72e055c35bd85ad7c20cf2adb6c89bdbf5725df969484fa6dc981d531ef2c9d"

S = "${WORKDIR}/OLE-Storage_Lite-${PV}"

inherit cpan

PACKAGE_ARCH = "all"

repository: overo/overo-oe-natty

repo_name: overo/overo-oe-natty

branch_name: HEAD


text:
// Package main implements a plaintext to morse-code encoder
package main

// import required packages
import (
	"fmt"
	"errors"
	"flag"
	"os"
	"strings"
	"bytes"
)

// errorHandler prints out(and terminates) an error according to the error-log argument
func errorHandler(errorLog string) {
	err := errors.New(errorLog)
	fmt.Println(err)
	os.Exit(1)
}

// translateInput parses the STDIN data and translates it into morse code
func translateInput(args []string) {
	// map that holds character to morse code mapping
	reverseMap := make(map[string]string)

	// Alphabates
	reverseMap["A"] = ".-"
	reverseMap["B"] = "-..."
	reverseMap["C"] = "-.-."
	reverseMap["D"] = "-.."
	reverseMap["E"] = "."
	reverseMap["F"] = "..-."
	reverseMap["G"] = "--."
	reverseMap["H"] = "...."
	reverseMap["I"] = ".."
	reverseMap["J"] = ".---"
	reverseMap["K"] = "-.-"
	reverseMap["L"] = ".-.."
	reverseMap["M"] = "--"
	reverseMap["N"] = "-."
	reverseMap["O"] = "---"
	reverseMap["P"] = ".--."
	reverseMap["Q"] = "--.-"
	reverseMap["R"] = ".-."
	reverseMap["S"] = "..."
	reverseMap["T"] = "-"
	reverseMap["U"] = "..-"
	reverseMap["V"] = "...-"
	reverseMap["W"] = ".--"
	reverseMap["X"] = "-..-"
	reverseMap["Y"] = "-.--"
	reverseMap["Z"] = "--.."

	// Decimals
	reverseMap["1"] = ".----"
	reverseMap["2"] = "..---"
	reverseMap["3"] = "...--"
	reverseMap["4"] = "....-"
	reverseMap["5"] = "....."
	reverseMap["6"] = "-...."
	reverseMap["7"] = "--..."
	reverseMap["8"] = "---.."
	reverseMap["9"] = "----."
	reverseMap["0"] = "-----"

	// Punctuation marks and miscellaneous signs
	reverseMap["."] = ".-.-.-"
	reverseMap[","] = "--..--"
	reverseMap[":"] = "---..."
	reverseMap["?"] = "..--.."
	reverseMap["'"] = ".----."
	reverseMap["-"] = "-....-"
	reverseMap["/"] = "-..-."
	reverseMap["("] = "-.--."
	reverseMap[")"] = "-.--.-"
	reverseMap["+"] = ".-.-."
	reverseMap["×"] = "-..-"
	reverseMap["@"] = ".--.-."

	// buffer holding resultant string
	var result bytes.Buffer

	// no text provided to translate
	if len(args) == 0 {
		errorHandler("Usage: morser -encode PLAINTEXT")
	}

	// iterate over each word of the input text
	for i := 0; i < len(args); i++ {

		// separate word representations in morse code by a backslace
		if i >= 1 {
			result.WriteString(" / ")
		}

		// iterate over each character of the word
		for j := 0; j < len(args[i]); j++ {

			// separate character representations in morse code by a space
			if j >= 1 {
				result.WriteString(" ")
			}

			// validates the input text, character by character
			_, isPresent := reverseMap[strings.ToUpper(string(args[i][j]))]

			// invalid input provided
			if !isPresent {
				errorHandler("Invalid input. Only alphabates, decimals and punctuation marks are supported.")
			}

			result.WriteString(reverseMap[strings.ToUpper(string(args[i][j]))])
		}
	}

	fmt.Println(result.String())
}

func main() {
	// defines a command line flag that looks for encoding permission
	encodeFlag := flag.Bool("encode", false, "morser -encode [arg] : Encodes a plaintext string (argument) to morse code")

	// parse the command line arguments
	flag.Parse()

	// process ahead if the 'encode' flag is available in arguments
	if *encodeFlag {
		translateInput(flag.Args())
	} else {
		errorHandler("Usage: morser -encode PLAINTEXT")
	}
}

repository: pravj/morser

repo_name: pravj/morser


text:
# The set of languages for which implicit dependencies are needed:
set(CMAKE_DEPENDS_LANGUAGES
  "CXX"
  )
# The set of files for implicit dependencies of each language:
set(CMAKE_DEPENDS_CHECK_CXX
  "/home/dongdong/matlab_cuda/Common/GridTools.cpp" "/home/dongdong/matlab_cuda/Common/CMakeFiles/Common.dir/GridTools.cpp.o"
  "/home/dongdong/matlab_cuda/Common/MultiScaleTools.cpp" "/home/dongdong/matlab_cuda/Common/CMakeFiles/Common.dir/MultiScaleTools.cpp.o"
  "/home/dongdong/matlab_cuda/Common/TCouplingHandler.cpp" "/home/dongdong/matlab_cuda/Common/CMakeFiles/Common.dir/TCouplingHandler.cpp.o"
  "/home/dongdong/matlab_cuda/Common/TEpsScaling.cpp" "/home/dongdong/matlab_cuda/Common/CMakeFiles/Common.dir/TEpsScaling.cpp.o"
  "/home/dongdong/matlab_cuda/Common/THierarchicalCostFunctionProvider.cpp" "/home/dongdong/matlab_cuda/Common/CMakeFiles/Common.dir/THierarchicalCostFunctionProvider.cpp.o"
  "/home/dongdong/matlab_cuda/Common/THierarchicalPartition.cpp" "/home/dongdong/matlab_cuda/Common/CMakeFiles/Common.dir/THierarchicalPartition.cpp.o"
  "/home/dongdong/matlab_cuda/Common/THierarchyBuilder.cpp" "/home/dongdong/matlab_cuda/Common/CMakeFiles/Common.dir/THierarchyBuilder.cpp.o"
  "/home/dongdong/matlab_cuda/Common/TVarListHandler.cpp" "/home/dongdong/matlab_cuda/Common/CMakeFiles/Common.dir/TVarListHandler.cpp.o"
  "/home/dongdong/matlab_cuda/Common/Tools.cpp" "/home/dongdong/matlab_cuda/Common/CMakeFiles/Common.dir/Tools.cpp.o"
  "/home/dongdong/matlab_cuda/Common/Verbose.cpp" "/home/dongdong/matlab_cuda/Common/CMakeFiles/Common.dir/Verbose.cpp.o"
  "/home/dongdong/matlab_cuda/Common/eps_handler.cpp" "/home/dongdong/matlab_cuda/Common/CMakeFiles/Common.dir/eps_handler.cpp.o"
  "/home/dongdong/matlab_cuda/Common/family.cpp" "/home/dongdong/matlab_cuda/Common/CMakeFiles/Common.dir/family.cpp.o"
  )
set(CMAKE_CXX_COMPILER_ID "GNU")

# The include file search paths:
set(CMAKE_CXX_TARGET_INCLUDE_PATH
  "."
  "/usr/include/eigen3"
  "./usr/local/cuda-10.2/include"
  "/usr/local/cuda-10.0/include"
  "Common"
  )

# Targets to which this target links.
set(CMAKE_TARGET_LINKED_INFO_FILES
  )

# Fortran module output directory.
set(CMAKE_Fortran_TARGET_MODULE_DIR "")

branch_name: refs/heads/main

extension: cmake


text:
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef SRC_STORAGE_FSHOST_FDIO_H_
#define SRC_STORAGE_FSHOST_FDIO_H_

#include <lib/zx/channel.h>
#include <lib/zx/job.h>

#include <memory>

namespace fshost {

// Launch a binary using fdio_spawn_etc, populating the process args with the list of handles
// provided, as well as some other environmental setup, like providing /svc.
zx_status_t Launch(const zx::job& job, const char* name, const char* const* argv, const char** envp,
                   int stdiofd, const zx::resource& root_resource, const zx_handle_t* handles,
                   const uint32_t* types, size_t hcount, zx::process* out_proc);

// Returns the result of splitting |args| into an argument vector.
class ArgumentVector {
 public:
  static ArgumentVector FromCmdline(const char* cmdline);

  // Returns a nullptr-terminated list of arguments.  Only valid for the
  // lifetime of |this|.
  const char* const* argv() const { return argv_; }

 private:
  ArgumentVector() = default;

  static constexpr size_t kMaxArgs = 8;
  const char* argv_[kMaxArgs + 1];
  std::unique_ptr<char[]> raw_bytes_;
};

std::ostream& operator<<(std::ostream& stream, const ArgumentVector& arguments);

// The variable to set on the kernel command line to enable ld.so tracing
// of the processes we launch.
#define LDSO_TRACE_CMDLINE "ldso.trace"
// The env var to set to enable ld.so tracing.
#define LDSO_TRACE_ENV "LD_TRACE=1"

}  // namespace fshost

#endif  // SRC_STORAGE_FSHOST_FDIO_H_

repository: gnoliyil/fuchsia

repo_name: gnoliyil/fuchsia


text:
package roomsync

import (
	"context"
	"strings"
	"time"

	"github.com/byuoitav/common/db"
	"github.com/byuoitav/common/log"
	"github.com/byuoitav/common/nerr"
	sd "github.com/byuoitav/common/state/statedefinition"
	"github.com/byuoitav/common/structs"
	"github.com/byuoitav/shipwright/state/cache"
	"github.com/fatih/color"
)

func init() {
}

//StartRoomSync will pull config information from the config db to store in ELK on the interval defined. Ctx is for cancellation.
func StartRoomSync(interval time.Duration, ctx context.Context) {
	log.L.Infof(color.HiBlueString("Starting room sync"))

	run()

	//run an initial one
	t := time.NewTicker(interval)
	for {
		select {
		case <-t.C:
			run()

		case <-ctx.Done():
			log.L.Infof("Cancel called, ending room sync.")
			return

		}
	}
}

func run() {
	rms, err := GetRoomsWithTypes()
	if err != nil {
		log.L.Errorf("Couldn't sync room information: %v", err.Error())
		return
	}

	for i := range rms {
		_, _, err := cache.GetCache("default").CheckAndStoreRoom(rms[i])
		if err != nil {
			log.L.Errorf("Couldn't sync room information for room %v: %v", rms[i].RoomID, err.Error())
			continue
		}
	}
}

func GetRoomsWithTypes() ([]sd.StaticRoom, *nerr.E) {

	toReturn := map[string]sd.StaticRoom{}

	//start with the DMPS systems
	list, err := GetDMPSSystems()
	if err != nil {
		return []sd.StaticRoom{}, err.Addf("Couldn't build list of rooms with system types")
	}

	for i := range list {
		//build our room
		cur := sd.StaticRoom{
			RoomID:      list[i],
			BuildingID:  strings.Split(list[i], "-")[0],
			Designation: sd.Production,
			SystemType:  []string{sd.DMPS},
			UpdateTimes: map[string]time.Time{
				"system-type": time.Now(),
				"designation": time.Now(),
			},
		}
		toReturn[list[i]] = cur
	}

	//we've done our DMPS stuff, now on to the regular stuff
	devs, er := db.GetDB().GetAllDevices()
	if er != nil {
		return []sd.StaticRoom{}, nerr.Translate(er).Addf("Couldn't build list of rooms with system types")
	}

	for i := range devs {
		//check the type against our map
		if v, ok := TypeMappings[devs[i].Type.ID]; ok {

			//check to see if we already have this room
			rmID := devs[i].GetDeviceRoomID()
			rm, ok := toReturn[rmID]
			if ok {
				if !rm.HasSystemType(v) {
					rm.SystemType = append(rm.SystemType, v)
				}
				toReturn[rmID] = rm
			} else {
				//create our new room
				cur := sd.StaticRoom{
					RoomID:     rmID,
					BuildingID: strings.Split(rmID, "-")[0],
					SystemType: []string{v},
					UpdateTimes: map[string]time.Time{
						"system-type": time.Now(),
					},
				}
				toReturn[rmID] = cur
			}
		}
	}

	roomsMap := map[string]structs.Room{}
	//get all the rooms:
	rms, er := db.GetDB().GetAllRooms()
	if er != nil {
		log.L.Errorf("Couldn't get all rooms: %v", er.Error())
	} else {
		for i := range rms {
			roomsMap[rms[i].ID] = rms[i]
		}
	}

	tmp := []sd.StaticRoom{}
	//we need to go through and do our designations too?
	for _, v := range toReturn {
		//check the designation
		if v.Designation == "" {
			if rm, ok := roomsMap[v.RoomID]; ok {
				v.Designation = rm.Designation
			}
			v.UpdateTimes["designation"] = time.Now()
		}

		tmp = append(tmp, v)
	}

	return tmp, nil
}

func GetDMPSSystems() ([]string, *nerr.E) {

	log.L.Debugf("Getting the list of DMPS systems")

	//from couch we just check the 'dmps' database for the list, it contains the list of devices, we build a room for each unique oneA
	rooms := map[string]bool{}
	toSend := []string{}

	list, er := db.GetDB().GetDMPSList()
	if er != nil {
		return toSend, nerr.Translate(er).Addf("Couldn't get list of DMPS systems")
	}

	for i := range list.List {
		splitName := strings.Split(list.List[i].Hostname, "-")
		if len(splitName) != 3 {
			log.L.Error("Bad DMPS system hostname %v", list.List[i].Hostname)
			continue
		}

		rooms[splitName[0]+"-"+splitName[1]] = true
	}

	for k := range rooms {
		toSend = append(toSend, k)
	}

	log.L.Debugf("Found %v rooms with DMPS systems", len(toSend))
	return toSend, nil
}

//type mappings means that, by room, if any devices in the room have these devices we add these system types to the room record.
var TypeMappings map[string]string

func init() {
	TypeMappings = map[string]string{
		"DMPS":            sd.DMPS,
		"Pi3":             sd.Pi,
		"SchedulingPanel": sd.Scheduling,
		"Timeclock":       sd.Timeclock,
	}
}

repository: byuoitav/shipwright

repo_name: byuoitav/shipwright


text:
package wtfs

import (
	"errors"
	"os"

	"github.com/go-git/go-billy/v5"
	"github.com/go-git/go-billy/v5/osfs"
)

const Extension = ".json"

// Filesystem contains everything needed to access the filesystem
type Filesystem struct {
	FS billy.Filesystem
}

func New(dir string) (*Filesystem, error) {
	i, err := os.Lstat(dir)
	if err != nil {
		return nil, err
	}
	if !i.IsDir() {
		return nil, errors.New("Not a directory")
	}

	ofs := osfs.New(dir)

	f := Filesystem{
		FS: ofs,
	}

	return &f, nil
}

repository: evieDelta/wikithing

repo_name: evieDelta/wikithing


text:
@article{Austin:2019aa,
 abstract = {OBJECTIVE: To build a longitudinal state-level database on targeted regulation of abortion providers (TRAP) laws.
DATA SOURCES: Primary sources included state websites, Lexis Nexis Quicklaw, and WestlawNext. We used a range of secondary sources to pinpoint policy timing.
STUDY DESIGN: This was a state-level review of TRAP shifts from 1973 to present.
DATA COLLECTION: We captured data on TRAP policy activity and timing, focusing specifically on ambulatory surgical center (ASC) laws, admitting privilege requirements, and transfer agreements.
PRINCIPAL FINDINGS: Twenty-five states had ever enacted an ASC, admitting privilege, or transfer agreement law. Many currently face legal challenges.
CONCLUSIONS: Targeted regulation of abortion providers laws are favored by many states as a way to regulate abortion provision. These data can be used to better understand the impact of these laws.},
 author = {Austin, Nichole and Harper, Sam},
 bdsk-url-1 = {https://doi.org/10.1111/1475-6773.13185},
 date-added = {2020-09-24 17:39:33 -0400},
 date-modified = {2020-09-24 17:39:33 -0400},
 doi = {10.1111/1475-6773.13185},
 journal = {Health Serv Res},
 journal-full = {Health services research},
 keywords = {abortion; supply-side policies; women's health},
 mesh = {Abortion, Induced; Adult; Data Management; Databases, Factual; Female; Government Regulation; Health Policy; Humans; Pregnancy; State Government; United States},
 month = {10},
 number = {5},
 pages = {1084-1089},
 pmc = {PMC6736922},
 pmid = {31206632},
 pst = {ppublish},
 title = {Constructing a longitudinal database of targeted regulation of abortion providers laws},
 volume = {54},
 year = {2019}
}


text:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using dominio;
using negocio;

namespace MedicalTurns
{
    public partial class A_CargarMedico : System.Web.UI.Page
    {
        public List<Medico> listaMedicos;
        public List<Especialidad> listaEspecialidad;

        public Medico medico = new Medico();

        protected void Page_Load(object sender, EventArgs e)
        {
            UsuarioAdmi();
            try
            {
                ElimarMedico();
                listarEspecialidad();

                ///Listamos a medico
                N_Medico medicoNegocio = new N_Medico();

                listaMedicos = medicoNegocio.Listar();

                Session.Add("Medico", listaMedicos);

            }
            catch (Exception ex)
            {
                Response.Redirect("A_Error.aspx", false);

            }
        }

        protected void UsuarioAdmi()
        {
            if (Session["AdmiSettings"] == null)
            {
                Response.Redirect("../Logindef.aspx", false);
            }
        }

        protected void ElimarMedico()
        {
            try
            {
                if (!(string.IsNullOrEmpty(Request.QueryString["IDMedico"])) && Session["Medico"] != null)
                {
                    N_Medico negocio = new N_Medico();

                    medico = RetornarMedico();

                    negocio.Eliminar(medico);
                    Response.Redirect("A_CargarMedico.aspx", false);
                }
            }
            catch (Exception ex)
            {
                Response.Redirect("A_Error.aspx", false);

            }
        }

        protected void listarEspecialidad()
        {
            N_Especialidad especialidad = new N_Especialidad();
            listaEspecialidad = especialidad.listar();

            foreach (dominio.Especialidad item in listaEspecialidad)
            {
                string nombreAux = item.Nombre.ToString();
                string valueAux = item.ID.ToString();
                ListItem listItemAux = new ListItem(nombreAux, valueAux);
                Especialidad.Items.Add(listItemAux);
            }
        }

        protected Medico RetornarMedico()
        {
            int ID = int.Parse(Request.QueryString["IDMedico"]);

            listaMedicos = (List<Medico>)Session["Medico"];

            medico = new Medico();

            return medico = listaMedicos.Find(x => x.ID == ID);
        }

        protected void BtnSubmit_Click(object sender, EventArgs e)
        {
            Page.Validate();
            if (!Page.IsValid) return;

            else
            {
                N_Medico negocio = new N_Medico();

                medico.Nombre = Nombre.Text;
                medico.Apellido = Apellido.Text;
                medico.FechaNacimiento = DateTime.Parse(Nacimiento.Text);
                medico.Genero = Genero.SelectedValue;
                medico.especialidad.ID = Convert.ToInt32(Especialidad.SelectedValue.ToString());
                medico.Domicilio = Domicilio.Text;
                medico.Celular = Celular.Text;
                medico.Matricula = Matricula.Text;

                medico.Usuario.Email = Email.Text;
                medico.Usuario.Contrasena = "root";
                medico.Usuario.tipoUsuario = 1;

                negocio.Cargar(medico);
                Response.Redirect("A_CargarMedico.aspx", false);
            }
        }
    }
}

gha_language: C#

extension: cs


text:
DESCRIPTION = "This subclass of Module::Build adds some tools and processes to make it \
easier to use for wrapping C++ using XS++ (ExtUtils::XSpp)."

SECTION = "libs"
LICENSE = "Artistic-1.0 | GPL-2.0"
PR = "r0"

MAINTAINER=	"Poky <poky@yoctoproject.org>"
HOMEPAGE=	"https://metacpan.org/release/Module-Build-WithXSpp"

LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Artistic-1.0;md5=cda03bbdc3c1951996392b872397b798 \
file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"

SRC_URI = "http://cpan.metacpan.org/authors/id/S/SM/SMUELLER/Module-Build-WithXSpp-0.14.tar.gz"

SRC_URI[md5sum] = "f3d6ad08127f62eed9baef131870f450"
SRC_URI[sha256sum] = "53b3c8c8fdbd50fc3dad3d19da20f1b6414ef70665b9311710c802969e746934"
RDEPENDS_${PN} += "extutils-cppguess-perl"
RDEPENDS_${PN} += "extutils-xspp-perl"
RDEPENDS_${PN} += "module-build-perl"

S = "${WORKDIR}/Module-Build-WithXSpp-${PV}"

inherit cpan_build

BBCLASSEXTEND = "native"

repository: CELLINKAB/meta-cpan

repo_name: CELLINKAB/meta-cpan


text:
package _0061

import (
	. "github.com/godcong/leetcode/common"
)

/*
61. 旋转链表
给你一个链表的头节点 head ，旋转链表，将链表每个节点向右移动 k 个位置。

示例 1：

输入：head = [1,2,3,4,5], k = 2
输出：[4,5,1,2,3]
示例 2：

输入：head = [0,1,2], k = 4
输出：[2,0,1]

提示：

链表中节点的数目在范围 [0, 500] 内
-100 <= Node.val <= 100
0 <= k <= 2 * 109
*/
/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func rotateRight(head *ListNode, k int) *ListNode {
	if k == 0 || head == nil || head.Next == nil {
		return head
	}
	n := 1
	iter := head
	for iter.Next != nil {
		iter = iter.Next
		n++
	}
	add := n - k%n
	if add == n {
		return head
	}
	iter.Next = head
	for add > 0 {
		iter = iter.Next
		add--
	}
	ret := iter.Next
	iter.Next = nil
	return ret
}

repository: godcong/leetcode

repo_name: godcong/leetcode


text:
package libcomfo

import (
	"bytes"
	"errors"
	"reflect"
	"testing"
)

// mockSetReq implements the SetRequest interface
// and is used to raise errors during testing.
type mockSetReq struct {
	mockType setRequest
	mockData []byte
	mockErr  error
}

func (sr mockSetReq) requestType() setRequest { return sr.mockType }
func (sr mockSetReq) MarshalBinary() (out []byte, err error) {
	return sr.mockData, sr.mockErr
}

func TestTemperatureMarshalBinary(t *testing.T) {
	tests := []struct {
		name string
		temp temperature
		b    byte
		err  error
	}{
		{
			name: "average value",
			temp: temperature(25),
			b:    90,
		},
		{
			name: "high value",
			temp: temperature(107),
			b:    254,
		},
		{
			name: "low value",
			temp: temperature(-20),
			b:    0,
		},
		{
			name: "temperature too low",
			temp: temperature(-21),
			err:  errTooLow,
		},
		{
			name: "temperature too high",
			temp: temperature(108),
			err:  errTooHigh,
		},
	}

	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {

			// Marshal value into binary representation
			b, err := tt.temp.MarshalBinary()

			if want, got := tt.err, err; want != got {
				t.Fatalf("unexpected error marshaling temperature:\n- want: %v\n-  got: %v",
					want, got)
			}

			if want, got := tt.b, b; !reflect.DeepEqual(want, got) {
				t.Fatalf("unexpected temperature marshal:\n- want: %v\n-  got: %v",
					want, got)
			}
		})
	}
}

func TestTemperatureUnmarshalBinary(t *testing.T) {
	tests := []struct {
		name string
		temp temperature
		b    byte
	}{
		{
			name: "average value",
			b:    90,
			temp: temperature(25),
		},
		{
			name: "high value",
			b:    255,
			temp: temperature(107),
		},
		{
			name: "low value",
			b:    0,
			temp: temperature(-20),
		},
	}

	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {

			// Unmarshal binary representation into temperature value
			var temp temperature
			temp.UnmarshalBinary(tt.b)

			if want, got := tt.temp, temp; !reflect.DeepEqual(want, got) {
				t.Fatalf("unexpected temperature unmarshal:\n- want: %v\n-  got: %v",
					want, got)
			}
		})
	}
}

// Simple test that calls EncodeGetRequest on a getRequest,
// which wraps an int in a struct and sets Expect to true.
func TestEncodeGetRequest(t *testing.T) {

	pkt := EncodeGetRequest(getBootloader)

	if want, got := getBootloader, getRequest(pkt.Command); want != got {
		t.Fatalf("unexpected Packet command:\n- want: %v\n-  got: %v", want, got)
	}

	if want, got := true, pkt.Expect; want != got {
		t.Fatalf("unexpected Packet.Expect:\n- want: %v\n-  got: %v", want, got)
	}
}

func TestEncodeSetRequest(t *testing.T) {

	errTestMarshal := errors.New("error during marshal")

	tests := []struct {
		name string
		sr   SetRequest
		pkt  Packet
		err  error
	}{
		{
			name: "setSpeedT",
			sr:   setSpeedT{Speed: 3},
			pkt:  Packet{Command: 0x99, Data: []byte{3}, Expect: false},
		},
		{
			name: "mockSetReq unknown type",
			sr:   mockSetReq{mockType: 0},
			err:  errRequestType,
		},
		{
			name: "mockSetReq marshal error",
			sr: mockSetReq{
				mockType: 0xff,
				mockErr:  errTestMarshal,
			},
			err: errTestMarshal,
		},
	}

	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {

			pkt, err := EncodeSetRequest(tt.sr)

			if want, got := tt.err, err; want != got {
				t.Fatalf("unexpected error encoding request:\n- want: %v\n-  got: %v",
					want, got)
			}

			if want, got := tt.pkt, pkt; !reflect.DeepEqual(want, got) {
				t.Fatalf("unexpected request encoding result:\n- want: %v\n-  got: %v",
					want, got)
			}
		})
	}
}

func TestDecodeResponse(t *testing.T) {

	tests := []struct {
		name string
		pkt  Packet
		resp Response
		err  error
	}{
		{
			name: "Bypass",
			pkt:  Packet{Command: 0xE0, Data: []byte{0xFF, 0xFF, 0xF0, 0x90, 0x01, 0xFF, 1}},
			resp: &Bypass{
				Factor:     240,
				Level:      144,
				Correction: 1,
				SummerMode: true,
			},
		},
		{
			name: "response with nil command",
			pkt:  Packet{},
			err:  errDecodeNil,
		},
		{
			name: "non-existing response type",
			pkt:  Packet{Command: 0xFF},
			err:  errResponseType,
		},
	}

	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {

			resp, err := DecodeResponse(tt.pkt)

			if want, got := tt.err, err; want != got {
				t.Fatalf("unexpected error decoding response:\n- want: %v\n-  got: %v",
					want, got)
			}

			if want, got := tt.resp, resp; !reflect.DeepEqual(want, got) {
				t.Fatalf("unexpected response decoding result:\n- want: %v\n-  got: %v",
					want, got)
			}
		})
	}
}

func TestConnSetRequest(t *testing.T) {

	srtests := []struct {
		name string
		sr   SetRequest
		tc   TestConn
		err  error
	}{
		{
			name: "set comfort temperature",
			sr:   setComfortT{Temperature: 42},
			tc: TestConn{
				Receives: []byte{
					0x07, 0xF0, // Frame Start
					0x00, uint8(setComfort), // request type
					0x01, 0x7C, // Length + payload (calculated temp)
					0xFD,     // Checksum
					esc, end, // Frame End
					esc, ack, // Ack
				},
				Emits: []byte{esc, ack}, // Read an ACK back from the connection
			},
		},
		{
			name: "set fan speed mode",
			sr:   setSpeedT{Speed: 3},
			tc: TestConn{
				Receives: []byte{
					0x07, 0xF0, // Start
					0x00, uint8(setSpeed), // request type
					0x01, 0x03, // Length + payload
					0x4A, // Checksum
					esc, end,
					esc, ack,
				},
				Emits: []byte{esc, ack},
			},
		},
		{
			name: "garbage before response ACK",
			sr:   setComfortT{Temperature: 42},
			tc: TestConn{
				Receives: []byte{
					0x07, 0xF0, // Start
					0x00, uint8(setComfort), // request type
					0x01, 0x7C, // Length + payload
					0xFD, // Checksum
					esc, end,
					esc, ack,
				},
				Emits: []byte{0xF0, 0x0B, 0xA1, 0x2, esc, ack},
			},
			err: errScanInput,
		},
		{
			name: "error from EncodeSetRequest",
			sr:   mockSetReq{mockType: 0x0},
			tc:   TestConn{},
			err:  errRequestType,
		},
	}

	for _, tt := range srtests {
		t.Run(tt.name, func(t *testing.T) {

			// Run setQuery against a test connection
			err := setQuery(tt.sr, &tt.tc)

			if want, got := tt.err, err; want != got {
				t.Fatalf("unexpected error during request:\n- want: %v\n-  got: %v",
					want, got)
			}
		})
	}
}

func TestConnGetRequest(t *testing.T) {

	grtests := []struct {
		name string
		gr   getRequest // Command type only
		resp Response
		tc   TestConn
		err  bool
	}{
		{
			name: "get fan speeds",
			gr:   getFans,
			tc: TestConn{
				Receives: []byte{ // Request
					0x07, 0xF0, // Frame Start
					0x00, uint8(getFans), // request type
					0x00,     // Length
					0xB8,     // Checksum
					esc, end, // Frame End
					esc, ack, // Response ACK
				},
				Emits: []byte{ // Response
					esc, ack,
					0x07, 0xF0, // Frame Start
					0x00, uint8(getFans + 1), // response type
					0x06,       // Length
					0xAA, 0xBB, // in/out percents
					0x11, 0x22, // in speed
					0x33, 0x44, // out speed
					0xCE, // Checksum
					esc, end,
					esc, ack,
				},
			},
			resp: &Fans{
				InPercent:  170,
				OutPercent: 187,
				InSpeed:    427,
				OutSpeed:   142,
			},
		},
		{
			name: "connection write error",
			gr:   getFans,
			tc:   TestConn{},
			err:  true,
		},
	}

	for _, tt := range grtests {
		t.Run(tt.name, func(t *testing.T) {

			// Run setQuery against a test connection
			resp, err := getQuery(tt.gr, &tt.tc)

			// Generic error checking
			if want, got := tt.err, err; !tt.err && err != nil {
				t.Fatalf("unexpected error during request:\n- want: %v\n-  got: %v",
					want, got)
			}

			if want, got := tt.resp, resp; !reflect.DeepEqual(want, got) {
				t.Fatalf("unexpected response:\n- want: %v\n-  got: %v",
					want, got)
			}
		})
	}
}

func TestLeftPad32(t *testing.T) {
	defer func() {
		if r := recover(); r == nil {
			t.Fatal("unable to recover from panic in leftPad32()")
		}
	}()

	want := []byte{0, 0, 0x1, 0x2}
	got := leftPad32([]byte{0x01, 0x02})

	if !bytes.Equal(want, got) {
		t.Fatalf("unexpected error in leftPad32t:\n- want: %v\n-  got: %v",
			want, got)
	}

	// Make leftPad32 panic with oversized input
	leftPad32([]byte{1, 2, 3, 4, 5})
}

repository: ti-mo/comfo

repo_name: ti-mo/comfo