]> git.gag.com Git - hw/altusmetrum/commitdiff
Switch preferred parts to JSON format
authorKeith Packard <keithp@keithp.com>
Thu, 2 Nov 2023 04:35:45 +0000 (21:35 -0700)
committerKeith Packard <keithp@keithp.com>
Tue, 2 Jul 2024 19:34:40 +0000 (12:34 -0700)
This should make the file a bit easier to add fields to where
necessary and provide some validation during use.

To search the file for a string, use the new 'pgrep' command
in bin:

    $ bin/pgrep SAMD21G17D preferred.json
    {
    "device": "IC",
    "footprint": "vqfn-48",
    "loadstatus": "smt",
    "mfg_part_number": "ATSAMD21G17D-MUT",
    "provided": "yes",
    "value": "SAMD21G17D",
    "vendor": "mouser",
    "vendor_part_number": "556-ATSAMD21G17D-MUT"
    }

Signed-off-by: Keith Packard <keithp@keithp.com>
bin/fillpartslist.5c [new file with mode: 0755]
bin/parts-json [new file with mode: 0755]
bin/pgrep [new file with mode: 0755]
pcb-rnd.mk
pcb.mk
preferred.json [new file with mode: 0644]

diff --git a/bin/fillpartslist.5c b/bin/fillpartslist.5c
new file mode 100755 (executable)
index 0000000..adf9bb9
--- /dev/null
@@ -0,0 +1,370 @@
+#!/usr/bin/env nickle
+
+autoload JSON;
+autoload ParseArgs;
+autoload Sort;
+
+string[...] keys = {
+       "device",
+       "value",
+       "footprint",
+       "loadstatus",
+       "provided",
+       "mfg_part_number",
+       "vendor",
+       "vendor_part_number",
+       "pnpformat"
+};
+
+(string[string])[...]
+read_partslist_file(file f)
+{
+       bool got_labels = false;
+       string[*] labels;
+       (string[string])[...] ret = {};
+       while (!File::end(f)) {
+               string line = fgets(f);
+               string[*] items = String::parse_csv(line);
+               if (!got_labels) {
+                       labels = items;
+                       got_labels = true;
+               } else {
+                       string[string] entry = {};
+                       for (int i = 0; i < dim(items); i++) {
+                               entry[labels[i]] = items[i];
+                       }
+                       ret[dim(ret)] = entry;
+               }
+       }
+       return ret;
+}
+
+(string[string])[...] read_partslist(string filename) {
+       (string[string])[...] ret;
+       twixt(file f = File::open(filename, "r"); File::close(f))
+               ret = read_partslist_file(f);
+       return ret;
+}
+
+string string_from_file(file f)
+{
+       string c = "";
+       while (!File::end(f)) {
+               c += fgets(f);
+       }
+       return c;
+}
+
+string string_from_filename(string name)
+{
+       string c = "";
+       twixt(file f = File::open(name, "r"); File::close(f)) {
+               c = string_from_file(f);
+       }
+       return c;
+}
+
+(string[string])[...] read_preferred_parts(string filename) {
+       return JSON::from_json(string_from_filename(filename));
+}
+
+string
+get_value(string[string] part, string key, string def)
+{
+       if (!hash_test(part, key))
+               return def;
+       return part[key];
+}
+
+/*
+ * These are the keys used to match parts -- all parts in the database
+ * must have a unique device/value/footprint triplet
+ */
+string[*] match_keys = { "device", "value", "footprint" };
+
+bool
+match(string[string] part, string[string] preferred)
+{
+       for (int i = 0; i < dim(match_keys); i++)
+               if (get_value(part, match_keys[i], "unknown") != get_value(preferred, match_keys[i], "unknown"))
+                       return false;
+       return true;
+}
+
+/*
+ * Find a matching part in the preferred parts database
+ */
+string[string]
+preferred_part(string[string] part, (string[string])[*] preferred_parts)
+{
+       for (int i = 0; i < dim(preferred_parts); i++)
+               if (match(part, preferred_parts[i]))
+                       return preferred_parts[i];
+       return (string[string]) {};
+}
+
+/*
+ * Make sure every preferred part has a unique
+ * device/value/footprint triplet
+ */
+
+bool
+validate_preferred_parts((string[string])[*] preferred_parts)
+{
+       bool ok = true;
+       for (int i = 0; i < dim(preferred_parts); i++) {
+               string[string] p_part = preferred_part(preferred_parts[i], preferred_parts);
+               if (p_part != preferred_parts[i]) {
+                       File::fprintf(stderr, "#### Database error.\n");
+                       File::fprintf(stderr, "%s\n", JSON::to_json(p_part));
+                       File::fprintf(stderr, "%s\n", JSON::to_json(preferred_parts[i]));
+                       ok = false;
+               }
+       }
+       return ok;
+}
+/*
+ * Walk through all of the preferred parts in use and check to see if
+ * any of them have keys not included in the default list above. Add
+ * them so that every output entry includes the new value after the
+ * default set
+ */
+void
+add_new_keys((string[string])[*] parts, (string[string])[*] preferred_parts)
+{
+       /* Track the current set of keys using a hash table */
+       void[string] current_keys = {};
+       for (int i = 0; i < dim(keys); i++)
+               current_keys[keys[i]] = <>;
+
+       string[...] new_keys = {};
+
+       void add_keys(string[string] part) {
+               string[*] p_keys = hash_keys(part);
+               for (int j = 0; j < dim(p_keys); j++)
+                       if (!hash_test(current_keys, p_keys[j])) {
+                               current_keys[p_keys[j]] = <>;
+                               new_keys[dim(new_keys)] = p_keys[j];
+                       }
+       }
+
+       /*
+        * Walk the parts in use so that we only add keys which have a
+        * value for some part we'll print out
+        */
+       for (int i = 0; i < dim(parts); i++) {
+               add_keys(parts[i]);
+               add_keys(preferred_part(parts[i], preferred_parts));
+       }
+
+       /* Sort the new keys so the result is stable */
+       bool str_gt(string a, string b) { return a > b; }
+
+       Sort::qsort(&new_keys, str_gt);
+       for (int i = 0; i < dim(new_keys); i++)
+               keys[dim(keys)] = new_keys[i];
+}
+
+/*
+ * Walk through all of the parts in use adding missing values from the
+ * preferred parts database
+ */
+void
+fill_in_values(&(string[string]) part, (string[string])[*] preferred_parts)
+{
+       string[string] preferred = preferred_part(part, preferred_parts);
+
+       for (int i = 0; i < dim(keys); i++)
+               switch (get_value(part, keys[i], "")) {
+               case "":
+               case "unknown":
+                       part[keys[i]] = get_value(preferred, keys[i], "unknown");
+                       break;
+               }
+}
+
+bool
+need_csv_quote(string x)
+{
+       if (String::length(x) == 0)
+               return true;
+       string quoted = "\"\\\t ";
+       for (int i = 0; i < String::length(quoted); i++)
+               if (String::inchars(quoted[i], x))
+                       return true;
+       return false;
+}
+
+string
+csv_quote(string x)
+{
+       string backslashed = "\"\\";
+       if (need_csv_quote(x)) {
+               string ret = "\"";
+               for (int i = 0; i < String::length(x); i++) {
+                       string c = String::new(x[i]);
+                       if (String::inchars(x[i], backslashed))
+                               ret = ret + "\\";
+                       ret = ret + c;
+               }
+               return ret + "\"";
+       }
+       return x;
+}
+
+string
+detab(string x)
+{
+       string y = "";
+       for (int i = 0; i < String::length(x); i++) {
+               if (x[i] == '\t')
+                       y = y + " ";
+               else
+                       y = y + String::new(x[i]);
+       }
+       return y;
+}
+
+string[*]
+part_keys(string[string] part)
+{
+       string[...] k = keys;
+       string[*] p_keys = hash_keys(part);
+
+       for (int i = 0; i < dim(p_keys); i++) {
+               bool found = false;
+               for (int j = 0; j < dim(k); j++)
+                       if (p_keys[i] == k[j]) {
+                               found = true;
+                               break;
+                       }
+               if (!found)
+                       k[dim(k)] = p_keys[i];
+       }
+       return k;
+}
+
+string
+part_to_csv(string[string] part)
+{
+       string  ret = "";
+       string[*] p_keys = part_keys(part);
+       for (int i = 0; i < dim(p_keys); i++) {
+               string value = csv_quote(get_value(part, p_keys[i], "unknown"));
+               if (i > 0)
+                       ret += ", ";
+               ret += value;
+       }
+       return ret;
+}
+
+string
+part_to_tab(string[string] part)
+{
+       string ret = "";
+       string[*] p_keys = part_keys(part);
+       for (int i = 0; i < dim(p_keys); i++) {
+               string value = detab(get_value(part, p_keys[i], "unknown"));
+               if (i > 0)
+                       ret += "\t";
+               ret += value;
+       }
+       return ret;
+}
+
+string
+part_to_json(string[string] part)
+{
+       return JSON::to_json(part);
+}
+
+void
+header(bool csv)
+{
+       for (int i = 0; i < dim(keys); i++) {
+               if (i > 0) {
+                       if (csv)
+                               printf(", ");
+                       else
+                               printf("\t");
+               }
+               printf("%s", keys[i]);
+       }
+       printf("\n");
+}
+
+ParseArgs::argdesc argd = {
+       args = {
+               { var = (ParseArgs::arg_var.arg_flag) &(bool csv = false),
+                 name = "csv",
+                 abbr = 'c',
+                 desc = "Output in CSV format instead of tab separated"
+               },
+               { var = (ParseArgs::arg_var.arg_flag) &(bool json = false),
+                 name = "json",
+                 abbr = 'j',
+                 desc = "Output in JSON format instead of tab separated"
+               },
+               { var = (ParseArgs::arg_var.arg_string) &(string preferred_parts_file = "../altusmetrum/preferred.json"),
+                 name = "preferred",
+                 abbr = 'p',
+                 desc = "Preferred parts data base file"
+               },
+       },
+       unknown = &(int file_args = 0),
+};
+
+void
+main(string[*] argv)
+{
+       ParseArgs::parseargs(&argd, &argv);
+
+       (string[string])[*] preferred_parts = read_preferred_parts(preferred_parts_file);
+
+       if (!validate_preferred_parts(preferred_parts))
+               exit(1);
+
+       string[...] result = {};
+       (string[string])[...] parts = {};
+       for (int i = file_args; i < dim(argv); i++) {
+               (string[string])[...] this_parts = read_partslist(argv[i]);
+               for (int j = 0; j < dim(this_parts); j++)
+                       parts[dim(parts)] = this_parts[j];
+       }
+
+       add_new_keys(parts, preferred_parts);
+
+
+       for (int j = 0; j < dim(parts); j++) {
+               fill_in_values(&parts[j], preferred_parts);
+               string entry;
+               if (csv)
+                       entry = part_to_csv(parts[j]);
+               else if (json)
+                       entry = part_to_json(parts[j]);
+               else
+                       entry = part_to_tab(parts[j]);
+               result[dim(result)] = entry;
+       }
+
+       bool str_gt(string a, string b) { return a > b; }
+
+       Sort::qsort(&result, str_gt);
+
+       if (json) {
+               printf("[\n");
+               for (int i = 0; i < dim(result); i++) {
+                       if (i > 0)
+                               printf(",\n");
+                       printf("%s", result[i]);
+               }
+               printf("]\n");
+       } else {
+               header(csv);
+               for (int i = 0; i < dim(result); i++)
+                       printf("%s\n", result[i]);
+       }
+       exit(0);
+}
+
+main(argv);
diff --git a/bin/parts-json b/bin/parts-json
new file mode 100755 (executable)
index 0000000..27d6dfe
--- /dev/null
@@ -0,0 +1,42 @@
+#!/usr/bin/env nickle
+#
+# Convert CSV parts list into JSON format
+#
+# Copyright © 2023 Keith Packard <keithp@keithp.com>, GPL v3+
+#
+
+autoload JSON;
+
+string[*] read_line(file f) {
+       string line = fgets(f);
+
+       string[*] elts = String::wordsplit(line, "\t");
+       return elts;
+}
+
+string[string] read_entry(file f, string[*] labels) {
+       string[*] elts = read_line(f);
+
+       string[string] ret = {};
+       for (int i = 0; i < dim(elts); i++) {
+               ret[labels[i]] = String::chomp(elts[i]);
+       }
+       return ret;
+}
+
+string[*][string] read_file(file f) {
+       string[*] labels = read_line(f);
+
+       string[...][string] ret = {};
+       while (!File::end(f)) {
+               ret[dim(ret)] = read_entry(f, labels);
+       }
+       return ret;
+}
+
+void main() {
+       string json = JSON::to_json(read_file(stdin));
+       printf("%s\n", json);
+}
+
+main();
diff --git a/bin/pgrep b/bin/pgrep
new file mode 100755 (executable)
index 0000000..a36d271
--- /dev/null
+++ b/bin/pgrep
@@ -0,0 +1,128 @@
+#!/usr/bin/env nickle
+
+autoload JSON;
+
+string string_from_file(file f)
+{
+       string c = "";
+       while (!File::end(f)) {
+               c += fgets(f);
+       }
+       return c;
+}
+
+string string_from_filename(string name)
+{
+       string c = "";
+       twixt(file f = File::open(name, "r"); File::close(f)) {
+               c = string_from_file(f);
+       }
+       return c;
+}
+
+bool
+is_false(poly p)
+{
+       return is_bool(p) && !p;
+}
+
+poly
+poly_grep(string pattern, poly p);
+
+poly
+hash_grep(string pattern, poly[string] h)
+{
+       string[*] keys = hash_keys(h);
+       for (int j = 0; j < dim(keys); j++) {
+               string key = keys[j];
+               poly value = h[key];
+               if (!is_false(poly_grep(pattern, h[key]))) {
+                       return h;
+               }
+       }
+       return false;
+}
+
+poly
+array_grep(string pattern, poly[*] a)
+{
+       poly ret = false;
+       for (int i = 0; i < dim(a); i++) {
+               poly r = poly_grep(pattern, a[i]);
+               if (!is_false(r)) {
+                       if (is_false(ret))
+                               ret = (poly[...]){};
+                       ret[dim(ret)] = r;
+               }
+       }
+       return ret;
+}
+
+poly
+poly_grep(string pattern, poly p)
+{
+       if (is_array(p))
+               return array_grep(pattern, p);
+       else if (is_hash(p))
+               return hash_grep(pattern, p);
+       else if (is_string(p))
+               return String::index(p, pattern) != -1 ? p : false;
+       else
+               return false;
+}
+
+poly
+json_grep(string pattern, file f)
+{
+       poly json = JSON::from_json(string_from_file(f));
+
+       return poly_grep(pattern, json);
+}
+
+
+void
+usage(int code)
+{
+       File::fprintf(stderr, "Usage: %s <pattern> {filename ...}\n", argv[0]);
+       exit(code);
+}
+
+void main(string[*] argv)
+{
+       bool ret = true;
+
+       if (dim(argv) < 2)
+               usage(1);
+
+       string pattern = argv[1];
+
+       poly ret = false;
+       if (dim(argv) == 2)
+               ret = json_grep(pattern, stdin);
+       else {
+               for (int i = 2; i < dim(argv); i++) {
+                       twixt(file f = File::open(argv[i], "r"); File::close(f)) {
+                               poly r = json_grep(pattern, f);
+                               if (!is_false(r)) {
+                                       if (is_false(ret))
+                                               ret = (poly[...]) {};
+                                       if (is_array(r)) {
+                                               for (int j = 0; j < dim(r); j++)
+                                                       ret[dim(ret)] = r[j];
+                                       } else {
+                                               ret[dim(ret)] = r;
+                                       }
+                               }
+                       }
+               }
+       }
+       if (!is_false(ret)) {
+               if (is_array(ret) && dim(ret) == 1)
+                       ret = ret[0];
+               printf("%s\n", JSON::to_json(ret));
+               exit(0);
+       }
+       exit(1);
+}
+
+main(argv);
index d41f7801f725bdac793f44dfd67795e043614889..b948792a913ecdac83a9af24c2adc6657e1c4398 100644 (file)
@@ -24,16 +24,17 @@ $(PROJECT).drc: $(SCHEMATICS) Makefile $(CONFIG)
 
 partslists: partslist partslist.csv partslist-dk.csv partslist-check.dk partslist-mouser.csv partslist-other.csv
 
-partslist:     $(SCHEMATICS) Makefile $(AM)/preferred-parts $(CONFIG)
-       lepton-netlist -g bom -o $(PROJECT).unsorted $(SCHEMATICS)
-       head -n1 $(PROJECT).unsorted > partslist
-       tail -n+2 $(PROJECT).unsorted | sort | awk -f $(AM)/bin/fillpartslist >> partslist
-       rm -f $(PROJECT).unsorted
+$(PROJECT)-parts.csv: $(SCHEMATICS)
+       lepton-netlist -L $(SCHEME) -g bomAM -o $@ $(SCHEMATICS)
 
-partslist.csv: $(SCHEMATICS) Makefile $(AM)/preferred-parts $(CONFIG)
-       lepton-netlist -L $(SCHEME) -g bomAM -o $(PROJECT).csvtmp $(SCHEMATICS)
-       (head -n1 $(PROJECT).csvtmp; tail -n+2 $(PROJECT).csvtmp | sort -t \, -k 8 | \
-               awk -f $(AM)/bin/fillpartscsv | sort ) > $@ && rm -f $(PROJECT).csvtmp
+partslist: $(PROJECT)-parts.csv Makefile $(AM)/preferred.json $(AM)/bin/fillpartslist.5c $(CONFIG)
+       $(AM)/bin/fillpartslist.5c --preferred $(AM)/preferred.json $(PROJECT)-parts.csv > $@
+
+partslist.csv: $(PROJECT)-parts.csv Makefile $(AM)/preferred.json $(AM)/bin/fillpartslist.5c $(CONFIG)
+       $(AM)/bin/fillpartslist.5c --preferred $(AM)/preferred.json --csv $(PROJECT)-parts.csv > $@
+
+partslist.json: $(PROJECT)-parts.csv Makefile $(AM)/preferred.json $(AM)/bin/fillpartslist.5c $(CONFIG)
+       $(AM)/bin/fillpartslist.5c --preferred $(AM)/preferred.json --json $(PROJECT)-parts.csv > $@
 
 partslist-dk.csv: partslist.csv
        $(AM)/bin/partslist-vendor --vendor digikey partslist.csv > $@
@@ -113,6 +114,7 @@ clean:
        rm -f *.net *.xy *.cmd *.png partslist partslist.csv *.ger *.xln PCB*save
        rm -f *.partslist *.unsorted $(PROJECT).xls muffin-*.pdf attribs
        rm -f partslist-check.dk partslist-dk.csv partslist-mouser.csv partslist-other.csv
+       rm -f $(PROJECT)-parts.csv
        rm -f $(PROJECT)-sch.ps $(PROJECT)-sch.pdf $(PROJECT)-pcb.ps $(PROJECT)-pcb.pdf
        rm -f $(PROJECT).gbl $(PROJECT).gbs $(PROJECT).gbo $(PROJECT).gbp $(PROJECT).ncd
        rm -f $(PROJECT).gto $(PROJECT).gtp $(PROJECT).gml $(PROJECT).gtl $(PROJECT).gts
diff --git a/pcb.mk b/pcb.mk
index f282013f655fd583afe17217c9bcb6c421ec8f84..82dd4ab7dd4eb9ed2a5f487d0285c491042ab665 100644 (file)
--- a/pcb.mk
+++ b/pcb.mk
@@ -24,15 +24,17 @@ $(PROJECT).drc: $(SCHEMATICS) Makefile $(CONFIG)
 
 partslists: partslist partslist.csv partslist-dk.csv partslist-check.dk partslist-mouser.csv partslist-other.csv
 
-partslist:     $(SCHEMATICS) Makefile $(AM)/preferred-parts $(CONFIG)
-       gnetlist -g bom -o $(PROJECT).unsorted $(SCHEMATICS)
-       head -n1 $(PROJECT).unsorted > partslist
-       tail -n+2 $(PROJECT).unsorted | sort | awk -f $(AM)/bin/fillpartslist >> partslist
-       rm -f $(PROJECT).unsorted
+$(PROJECT)-parts.csv: $(SCHEMATICS)
+       gnetlist -L $(AM)/scheme -g bomAM -o $@ $(SCHEMATICS)
 
-partslist.csv: $(SCHEMATICS) Makefile $(AM)/preferred-parts $(CONFIG)
-       gnetlist -L $(SCHEME) -g bomAM -o $(PROJECT).csvtmp $(SCHEMATICS)
-       (head -n1 $(PROJECT).csvtmp; tail -n+2 $(PROJECT).csvtmp | sort -t \, -k 8 | awk -f $(AM)/bin/fillpartscsv | sort ) > $@ && rm -f $(PROJECT).csvtmp
+partslist: $(PROJECT)-parts.csv Makefile $(AM)/preferred.json $(AM)/bin/fillpartslist.5c $(CONFIG)
+       $(AM)/bin/fillpartslist.5c --preferred $(AM)/preferred.json $(PROJECT)-parts.csv > $@
+
+partslist.csv: $(PROJECT)-parts.csv Makefile $(AM)/preferred.json $(AM)/bin/fillpartslist.5c $(CONFIG)
+       $(AM)/bin/fillpartslist.5c --preferred $(AM)/preferred.json --csv $(PROJECT)-parts.csv > $@
+
+partslist.json: $(PROJECT)-parts.csv Makefile $(AM)/preferred.json $(AM)/bin/fillpartslist.5c $(CONFIG)
+       $(AM)/bin/fillpartslist.5c --preferred $(AM)/preferred.json --json $(PROJECT)-parts.csv > $@
 
 partslist-dk.csv: partslist.csv
        $(AM)/bin/partslist-vendor --vendor digikey partslist.csv > $@
@@ -239,6 +241,7 @@ clean:
        rm -f *.net *.xy *.cmd *.png partslist partslist.csv *.ger *.xln
        rm -f *.partslist *.new.pcb *.unsorted $(PROJECT).xls muffin-5267.pdf muffin-keithp.pdf
        rm -f partslist-check.dk partslist-dk.csv partslist-mouser.csv partslist-other.csv
+       rm -f $(PROJECT)-parts.csv
        rm -f $(PROJECT)-sch.ps $(PROJECT)-sch.pdf $(PROJECT)-pcb.ps $(PROJECT)-pcb.pdf
        rm -f $(PROJECT).gbl $(PROJECT).gbs $(PROJECT).gbo $(PROJECT).gbp $(PROJECT).ncd
        rm -f $(PROJECT).gto $(PROJECT).gtp $(PROJECT).gml $(PROJECT).gtl $(PROJECT).gts
diff --git a/preferred.json b/preferred.json
new file mode 100644 (file)
index 0000000..6ccd03f
--- /dev/null
@@ -0,0 +1,3299 @@
+[
+    {
+       "device": "ANTENNA",
+       "footprint": "GP.18.4",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "APAE1575R1840AADB7-T",
+       "provided": "no",
+       "value": "APAE1575R1840AADB7-T",
+       "vendor": "mouser",
+       "vendor_part_number": "815-1575R1840AADB7T"
+    },
+    {
+       "device": "ANTENNA",
+       "footprint": "GP.18.4",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "GP.1575.18.4.A.02",
+       "provided": "no",
+       "value": "GP.1575.18.4.A.02",
+       "vendor": "mouser",
+       "vendor_part_number": "960-GP1575184A02"
+    },
+    {
+       "device": "BATTERY",
+       "footprint": "BU2032SM",
+       "loadstatus": "smt",
+       "mfg_part_number": "BU2032SM-BT-GTR",
+       "provided": "no",
+       "value": "3v",
+       "vendor": "digikey",
+       "vendor_part_number": "BU2032SM-BT-GCT-ND"
+    },
+    {
+       "device": "BATTERY",
+       "footprint": "bhx1-1025-sm",
+       "loadstatus": "smt",
+       "mfg_part_number": "BHX1-1025-SM",
+       "provided": "no",
+       "value": "3v",
+       "vendor": "digikey",
+       "vendor_part_number": "BHX1-1025-SM-ND"
+    },
+    {
+       "device": "BATTERY",
+       "footprint": "bc4aa",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "BC4AAPC",
+       "provided": "no",
+       "value": "4AA",
+       "vendor": "digikey",
+       "vendor_part_number": "BC4AAPC-ND"
+    },
+    {
+       "device": "BEEPER",
+       "footprint": "AT1220",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "AT-1220-TT-11-R",
+       "provided": "no",
+       "value": "AT1220",
+       "vendor": "mouser",
+       "vendor_part_number": "665-AT1220TT11R"
+    },
+    {
+       "device": "BEEPER",
+       "footprint": "dualbeeper",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "AT-1220-TT-11-R",
+       "provided": "no",
+       "value": "AT1220",
+       "vendor": "mouser",
+       "vendor_part_number": "665-AT1220TT11R"
+    },
+    {
+       "device": "BEEPER",
+       "footprint": "TDK_PS12",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "PS1240P02BT",
+       "provided": "no",
+       "value": "TDK_PS12",
+       "vendor": "digikey",
+       "vendor_part_number": "445-2525-1-ND"
+    },
+    {
+       "device": "BEEPER",
+       "footprint": "TDK_PS12-small",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "PS1240P02BT",
+       "provided": "no",
+       "value": "TDK_PS12",
+       "vendor": "digikey",
+        "vendor_part_number": "445-2525-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "GRM1555C1H102JA01D",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "0.001uF",
+       "vendor": "digikey",
+       "vendor_part_number": "490-3244-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "CC0402KRX7R9BB103",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "0.01uF",
+       "vendor": "digikey",
+       "vendor_part_number": "311-1349-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "C1005X5R1E104K050BC",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "0.1uF",
+       "vendor": "digikey",
+       "vendor_part_number": "445-4964-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "1206",
+       "loadstatus": "smt",
+       "mfg_part_number": "GRM31CF50J107ZE01L",
+       "pnpformat": "reel_8x4",
+       "provided": "no",
+       "value": "100uF",
+       "vendor": "digikey",
+       "vendor_part_number": "490-4512-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0805",
+       "loadstatus": "smt",
+       "mfg_part_number": "08055C823JAT2A",
+       "pnpformat": "reel_8x4",
+       "provided": "no",
+       "value": "0.082uF",
+       "vendor": "digikey",
+       "vendor_part_number": "478-10564-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "LMK105BJ224KV-F",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "0.22uF",
+       "vendor": "digikey",
+       "vendor_part_number": "587-1228-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "C1005X5R1E334K050BB",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "0.33uF",
+       "vendor": "digikey",
+       "vendor_part_number": "445-8018-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "CGA2B2NP01H101J050BA",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "100pF",
+       "vendor": "digikey",
+       "vendor_part_number": "445-12119-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "250R07W103KV4T",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "10nF",
+       "vendor": "digikey",
+       "vendor_part_number": "709-1132-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "0402N100J500CT",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "10pF",
+       "vendor": "digikey",
+       "vendor_part_number": "1292-1636-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "04025C182KAT2A",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "1.8nF",
+       "vendor": "digikey",
+       "vendor_part_number": "478-1104-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "GRM1555C1H180FA01D",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "18pF",
+       "vendor": "digikey",
+       "vendor_part_number": "490-6203-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "CL05A105KP5NNNC",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "1uF",
+       "vendor": "digikey",
+       "vendor_part_number": "1276-1076-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "C1005X5R1V105K050BE",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "1uF-35V",
+       "vendor": "digikey",
+       "vendor_part_number": "445-175218-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "04026D106MAT2A",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "10uF",
+       "vendor": "digikey",
+       "vendor_part_number": "478-10059-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0603",
+       "loadstatus": "smt",
+       "mfg_part_number": "CL10A106KQ8NNNC",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "10uF",
+       "vendor": "digikey",
+       "vendor_part_number": "1276-1038-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0805",
+       "loadstatus": "smt",
+       "mfg_part_number": "C0805C106Z8VACTU",
+       "pnpformat": "reel_8x4",
+       "provided": "no",
+       "value": "10uF",
+       "vendor": "digikey",
+       "vendor_part_number": "399-8015-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "UMK105CG221JV-F",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "220pF",
+       "vendor": "digikey",
+       "vendor_part_number": "587-1215-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "CAP_FC8",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "EEU-FC1V221L",
+       "provided": "no",
+       "value": "220uF",
+       "vendor": "digikey",
+       "vendor_part_number": "P10296-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "GRM1555C1H220FA01D",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "22pF",
+       "vendor": "digikey",
+       "vendor_part_number": "490-8589-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0603",
+       "loadstatus": "smt",
+       "mfg_part_number": "GRM1885C1H222JA01D",
+       "pnpformat": "reel_8x4",
+       "provided": "no",
+       "value": "2.2nF",
+       "vendor": "digikey",
+       "vendor_part_number": "490-1459-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "CC0402KRX7R9BB222",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "2.2nF",
+       "vendor": "digikey",
+       "vendor_part_number": "311-1037-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "GJM1555C1H2R2BB01D",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "2.2pF",
+       "vendor": "digikey",
+       "vendor_part_number": "490-8092-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "LMK105BJ225MV-F",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "2.2uF",
+       "vendor": "digikey",
+       "vendor_part_number": "587-3153-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "GCM155R71H223KA55D",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "22nF",
+       "vendor": "digikey",
+       "vendor_part_number": "490-4763-2-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0805",
+       "loadstatus": "smt",
+       "mfg_part_number": "CL21A226MQQNNNE",
+       "pnpformat": "reel_8x4",
+       "provided": "no",
+       "value": "22uF",
+       "vendor": "digikey",
+       "vendor_part_number": "1276-1100-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "1206",
+       "loadstatus": "smt",
+       "mfg_part_number": "CL31A226KAHNNNE",
+       "pnpformat": "reel_8x4",
+       "provided": "no",
+       "value": "22uF",
+       "vendor": "digikey",
+       "vendor_part_number": "1276-3047-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "1210",
+       "loadstatus": "smt",
+       "mfg_part_number": "CL31A226KAHNNNE",
+       "pnpformat": "reel_8x4",
+       "provided": "no",
+       "value": "22uF",
+       "vendor": "digikey",
+       "vendor_part_number": "1276-3047-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "CAP_FC8",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "EKYB350ELL331MH20D",
+       "provided": "no",
+       "value": "330uF",
+       "vendor": "digikey",
+       "vendor_part_number": "565-3914-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "GRM1555C1H390JA01D",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "39pF",
+       "vendor": "digikey",
+       "vendor_part_number": "490-5871-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "GRM1555C1H3R9CA01D",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "3.9pF",
+       "vendor": "digikey",
+       "vendor_part_number": "490-5940-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "C0402C470J5GACTU",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "47pF",
+       "vendor": "digikey",
+       "vendor_part_number": "399-1019-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "CGA2B2X7R1C473K050BA",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "47nF",
+       "vendor": "digikey",
+       "vendor_part_number": "445-5611-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "04026D475KAT2A",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "4.7uF",
+       "vendor": "digikey",
+       "vendor_part_number": "478-10669-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0603",
+       "loadstatus": "smt",
+       "mfg_part_number": "CL10A475KP8NNNC",
+       "pnpformat": "reel_8x2",
+       "provided": "yes",
+       "value": "4.7uF",
+       "vendor": "mouser",
+       "vendor_part_number": "187-CL10A475KP8NNNC"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "1206",
+       "loadstatus": "smt",
+       "mfg_part_number": "UMK316AB7475KL-T",
+       "pnpformat": "reel_8x4",
+       "provided": "no",
+       "value": "4.7uF",
+       "vendor": "digikey",
+       "vendor_part_number": "587-2994-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "1206",
+       "loadstatus": "smt",
+       "mfg_part_number": "CL31A476MPHNNNE",
+       "pnpformat": "reel_8x4",
+       "provided": "no",
+       "value": "47uF",
+       "vendor": "digikey",
+       "vendor_part_number": "1276-3063-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "c8x8",
+       "loadstatus": "smt",
+       "mfg_part_number": "EEE-HA1A471UP",
+       "provided": "no",
+       "value": "470uF",
+       "vendor": "digikey",
+       "vendor_part_number": "PCE4178TR-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "C0402C519C5GACTU",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "5.1pF",
+       "vendor": "digikey",
+       "vendor_part_number": "399-8972-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "C0402C560J5GACTU",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "56pF",
+       "vendor": "digikey",
+       "vendor_part_number": "399-1020-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "GRM1555C1H5R6DA01D",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "5.6pF",
+       "vendor": "digikey",
+       "vendor_part_number": "490-5946-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "GJM1555C1H6R2CB01D",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "6.2pF",
+       "vendor": "digikey",
+       "vendor_part_number": "490-3105-1-ND"
+    },
+    {
+       "device": "CAPACITOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "UMK105CG8R2DV-F",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "8.2pF",
+       "vendor": "digikey",
+       "vendor_part_number": "587-1946-1-ND"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "TE1217861",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "1217861-1",
+       "provided": "no",
+       "value": "0.25",
+       "vendor": "digikey",
+       "vendor_part_number": "A100452CT-ND"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "100mil2pin",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "SSW-102-01-F-S",
+       "provided": "no",
+       "value": "100mil2pin",
+       "vendor": "digikey",
+       "vendor_part_number": "SAM10014-ND"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "284512-2",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "284512-2",
+       "provided": "no",
+       "value": "3.5mm2pin",
+       "vendor": "mouser",
+       "vendor_part_number": "571-284512-2"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "100mil20x2",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "PPPC202LFBN-RC",
+       "provided": "no",
+       "value": "female",
+       "vendor": "digikey",
+       "vendor_part_number": "S7123-ND"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "100mil20x2",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "PRPC020DAAN-RC",
+       "provided": "no",
+       "value": "male",
+       "vendor": "digikey",
+       "vendor_part_number": "S2011EC-20-ND"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "pico-ezmate-6",
+       "loadstatus": "smt",
+       "mfg_part_number": "0781715006",
+       "provided": "no",
+       "value": "6-pin",
+       "vendor": "digikey",
+       "vendor_part_number": "WM5408CT-ND"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "100mil8x3",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "SSW-108-01-G-T",
+       "provided": "no",
+       "value": "100mil8x3",
+       "vendor": "digikey",
+       "vendor_part_number": "SAM15290-ND"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "0-338068-8",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "338068-8",
+       "provided": "no",
+       "value": "Companion",
+       "vendor": "mouser",
+       "vendor_part_number": "571-338068-8"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "0-215079-4",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "215079-4",
+       "provided": "no",
+       "value": "Debug",
+       "vendor": "mouser",
+       "vendor_part_number": "571-215079-4"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "530470610",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "0530470610",
+       "provided": "no",
+       "value": "Debug",
+       "vendor": "digikey",
+       "vendor_part_number": "WM1735-ND"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "picodebug",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "GRPB041VWVN-RC",
+       "provided": "no",
+       "value": "Debug",
+       "vendor": "digikey",
+       "vendor_part_number": "S9014E-04-ND"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "189-15",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "189-015-513R571",
+       "provided": "no",
+       "value": "dual15dsub",
+       "vendor": "mouser",
+       "vendor_part_number": "636-189-015-513R571"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "B2B-PH",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "440054-2",
+       "provided": "no",
+       "value": "LiPo",
+       "vendor": "digikey",
+       "vendor_part_number": "A100034-ND"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "S2B-PH",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "S2B-PH-K-S(LF)(SN)",
+       "provided": "no",
+       "value": "LiPo",
+       "vendor": "digikey",
+       "vendor_part_number": "455-1719-ND"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "S2B-PH-SM",
+       "loadstatus": "smt",
+       "mfg_part_number": "S2B-PH-SM4-TB(LF)(SN)",
+       "pnpformat": "reel_16",
+       "provided": "no",
+       "value": "LiPo",
+       "vendor": "digikey",
+       "vendor_part_number": "455-1749-1-ND"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "282834-2",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "20086",
+       "provided": "no",
+       "seeed_part_number": "282834-2",
+       "value": "2screws",
+       "vendor": "4ucon",
+       "vendor_part_number": "20086"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "282834-4",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "20087",
+       "provided": "no",
+       "seeed_part_number": "282834-4",
+       "value": "4screws",
+       "vendor": "4ucon",
+       "vendor_part_number": "20087"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "282834-6",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "20088",
+       "provided": "no",
+       "seeed_part_number": "282834-6",
+       "value": "6screws",
+       "vendor": "4ucon",
+       "vendor_part_number": "20088"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "tb003-500-06",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "TB003-500-P06BE",
+       "provided": "no",
+       "value": "6screws",
+       "vendor": "digikey",
+       "vendor_part_number": "102-6165-ND"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "282834-8",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "18476",
+       "provided": "no",
+       "seeed_part_number": "282834-8",
+       "value": "8screws",
+       "vendor": "4ucon",
+       "vendor_part_number": "18476"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "282834-9",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "18477",
+       "provided": "no",
+       "seeed_part_number": "282834-9",
+       "value": "9screws",
+       "vendor": "4ucon",
+       "vendor_part_number": "18477"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "0-338068-6",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "338068-6",
+       "provided": "no",
+       "value": "Servos",
+       "vendor": "digikey",
+       "vendor_part_number": "A99437CT-ND"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "0-338068-6",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "338068-6",
+       "provided": "no",
+       "value": "encoder",
+       "vendor": "digikey",
+       "vendor_part_number": "A99437CT-ND"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "m50-31-4",
+       "loadstatus": "smt",
+       "mfg_part_number": "M50-3130445",
+       "provided": "no",
+       "value": "50mil4socket",
+       "vendor": "digikey",
+       "vendor_part_number": "952-3584-ND"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "m50-31-8",
+       "loadstatus": "smt",
+       "mfg_part_number": "M50-3130845",
+       "provided": "no",
+       "value": "50mil8socket",
+       "vendor": "digikey",
+       "vendor_part_number": "952-3587-ND"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "50mil4pin",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "M50-3530442",
+       "provided": "no",
+       "value": "50mil4pin",
+       "vendor": "digikey",
+       "vendor_part_number": "952-3600-ND"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "50mil8pin",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "M50-3530842",
+       "provided": "no",
+       "value": "50mil8pin",
+       "vendor": "digikey",
+       "vendor_part_number": "952-3603-ND"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "sma-edge",
+       "loadstatus": "handload",
+       "mfg_part_number": "73251-2120",
+       "provided": "no",
+       "value": "SMA",
+       "vendor": "digikey",
+       "vendor_part_number": "WM5536-ND"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "usbcable",
+       "loadstatus": "handload",
+       "mfg_part_number": "88738-8000",
+       "provided": "no",
+       "value": "USBcable-0.81m",
+       "vendor": "mouser",
+       "vendor_part_number": "538-88738-8000"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "usbcable",
+       "loadstatus": "handload",
+       "mfg_part_number": "88728-3400",
+       "provided": "no",
+       "value": "USBcable",
+       "vendor": "mouser",
+       "vendor_part_number": "538-88728-3400"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "11071",
+       "loadstatus": "smt",
+       "mfg_part_number": "11071",
+       "pnpformat": "reel_16",
+       "provided": "yes",
+       "seeed_part_number": "2013499-1",
+       "value": "USBmicroB",
+       "vendor": "4ucon",
+       "vendor_part_number": "11071"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "ZX62-B-5PA",
+       "loadstatus": "smt",
+       "mfg_part_number": "ZX62-B-5PA(33)",
+       "pnpformat": "reel_16",
+       "provided": "no",
+       "value": "USBmicroB",
+       "vendor": "mouser",
+       "vendor_part_number": "798-ZX62-B-5PA33"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "2013499-1",
+       "loadstatus": "smt",
+       "mfg_part_number": "2013499-1",
+       "provided": "no",
+       "value": "USBmicroB",
+       "vendor": "digikey",
+       "vendor_part_number": "A107962CT-ND"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "1051330011",
+       "loadstatus": "smt",
+       "mfg_part_number": "1051330011",
+       "provided": "no",
+       "value": "USBmicroV",
+       "vendor": "digikey",
+       "vendor_part_number": "WM10134CT-ND"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "usbAmale",
+       "loadstatus": "smt",
+       "mfg_part_number": "931",
+       "provided": "no",
+       "value": "USBA",
+       "vendor": "mouser",
+       "vendor_part_number": "534-931"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "PJ-037A",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "PJ-037AH",
+       "provided": "no",
+       "value": "PJ-037AH",
+       "vendor": "digikey",
+       "vendor_part_number": "CP-037AH-ND"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "100mil5pin",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "PPTC051LFBN-RC",
+       "provided": "no",
+       "value": "Header-5",
+       "vendor": "digikey",
+       "vendor_part_number": "S6103-ND"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "100mil6pin",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "PPTC061LFBN-RC",
+       "provided": "no",
+       "value": "Header-6",
+       "vendor": "digikey",
+       "vendor_part_number": "S7004-ND"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "100mil8pin",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "PPTC081LFBN-RC",
+       "provided": "no",
+       "value": "Header-8",
+       "vendor": "digikey",
+       "vendor_part_number": "S7006-ND"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "100mil3x2",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "PREC003DAAN-RC",
+       "provided": "no",
+       "value": "AVR",
+       "vendor": "digikey",
+       "vendor_part_number": "S2012EC-03-ND"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "50mil7pin",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "GRPB071VWVN-RC",
+       "provided": "no",
+       "value": "Pins-50mil-7",
+       "vendor": "digikey",
+       "vendor_part_number": "S9014E-07-ND"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "50mil7pin",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "SLM-107-01-S-S",
+       "provided": "no",
+       "value": "Socket-50mil-7",
+       "vendor": "digikey",
+       "vendor_part_number": "SAM9939-ND"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "microSD",
+       "loadstatus": "smt",
+       "mfg_part_number": "MEM2067-02-180-00-A",
+       "provided": "no",
+       "value": "microSD",
+       "vendor": "digikey",
+       "vendor_part_number": "2073-MEM2067-02-180-00-ACT-ND"
+    },
+    {
+       "device": "CONNECTOR",
+       "footprint": "microSDpush",
+       "loadstatus": "smt",
+       "mfg_part_number": "MEM2051-00-195-00-A",
+       "provided": "no",
+       "value": "microSD",
+       "vendor": "digikey",
+       "vendor_part_number": "2073-MEM2051-00-195-00-ACT-ND"
+    },
+    {
+       "device": "CRYSTAL",
+       "footprint": "ABM8",
+       "loadstatus": "smt",
+       "mfg_part_number": "ABM8G-12.000MHZ-4Y-T3",
+       "provided": "no",
+       "value": "12MHz",
+       "vendor": "digikey",
+       "vendor_part_number": "535-10901-1-ND"
+    },
+    {
+       "device": "CRYSTAL",
+       "footprint": "ABM8",
+       "loadstatus": "smt",
+       "mfg_part_number": "ABM8G-16.000MHZ-4Y-T3",
+       "provided": "no",
+       "value": "16MHz",
+       "vendor": "digikey",
+       "vendor_part_number": "535-10907-1-ND"
+    },
+    {
+       "device": "CRYSTAL",
+       "footprint": "FA-20H",
+       "loadstatus": "smt",
+       "mfg_part_number": "FA-20H 16.0000MF10Z-AJ0",
+       "provided": "no",
+       "value": "16MHz",
+       "vendor": "digikey",
+       "vendor_part_number": "SER4068CT-ND"
+    },
+    {
+       "device": "CRYSTAL",
+       "footprint": "ABM3C",
+       "loadstatus": "smt",
+       "mfg_part_number": "ABM3C-16.384MHZ-D4Y-T",
+       "provided": "no",
+       "value": "16.384MHz",
+       "vendor": "digikey",
+       "vendor_part_number": "535-11289-1-ND"
+    },
+    {
+       "device": "CRYSTAL",
+       "footprint": "ECX2236",
+       "loadstatus": "smt",
+       "mfg_part_number": "ECS-163.84-10-36-JGN-TR",
+       "provided": "no",
+       "value": "16.384MHz",
+       "vendor": "digikey",
+       "vendor_part_number": "XC2445CT-ND"
+    },
+    {
+       "device": "CRYSTAL",
+       "footprint": "ABM8",
+       "loadstatus": "smt",
+       "mfg_part_number": "7M-26.000MEEQ-T",
+       "provided": "no",
+       "value": "26mhz",
+       "vendor": "digikey",
+       "vendor_part_number": "887-1327-1-ND"
+    },
+    {
+       "device": "CRYSTAL",
+       "footprint": "nx3215sa",
+       "loadstatus": "smt",
+       "mfg_part_number": "NX3215SA-32.768K-STD-MUS-2",
+       "provided": "no",
+       "value": "32.768khz",
+       "vendor": "digikey",
+       "vendor_part_number": "644-1159-1-ND"
+    },
+    {
+       "device": "CRYSTAL",
+       "footprint": "NDK32",
+       "loadstatus": "smt",
+       "mfg_part_number": "NX3225SA-32.000MHZ-STD-CSR-1",
+       "provided": "no",
+       "value": "32mhz",
+       "vendor": "digikey",
+       "vendor_part_number": "644-1056-1-ND"
+    },
+    {
+       "device": "CRYSTAL",
+       "footprint": "ABM12",
+       "loadstatus": "smt",
+       "mfg_part_number": "NX1612SA-32.000MHZ-CHP-CIS-3",
+       "provided": "no",
+       "value": "32MHz",
+       "vendor": "digikey",
+       "vendor_part_number": "644-1284-1-ND"
+    },
+    {
+       "device": "CRYSTAL",
+       "footprint": "NDK32",
+       "loadstatus": "smt",
+       "mfg_part_number": "ABM8W-40.0000MHZ-4-B1U-T3",
+       "provided": "no",
+       "value": "40mhz",
+       "vendor": "digikey",
+       "vendor_part_number": "535-14086-1-ND"
+    },
+    {
+       "device": "CRYSTAL",
+       "footprint": "ABM12",
+       "loadstatus": "smt",
+       "mfg_part_number": "8Q-40.000MEEV-T",
+       "provided": "no",
+       "value": "40mhz",
+       "vendor": "digikey",
+       "vendor_part_number": "887-1852-1-ND"
+    },
+    {
+       "device": "CRYSTAL",
+       "footprint": "ABM8",
+       "loadstatus": "smt",
+       "mfg_part_number": "7M-48.000MEEQ-T",
+       "provided": "no",
+       "value": "48mhz",
+       "vendor": "digikey",
+       "vendor_part_number": "887-1335-1-ND"
+    },
+    {
+       "device": "CRYSTAL",
+       "footprint": "ABM3B",
+       "loadstatus": "smt",
+       "mfg_part_number": "ABM3B-8.000MHZ-10-1-U-T",
+       "provided": "no",
+       "value": "8mhz",
+       "vendor": "digikey",
+       "vendor_part_number": "535-9721-1-ND"
+    },
+    {
+       "device": "CRYSTAL",
+       "footprint": "saw",
+       "loadstatus": "smt",
+       "mfg_part_number": "B39162B4300F210",
+       "provided": "yes",
+       "value": "SAW",
+       "vendor": "mouser",
+       "vendor_part_number": "871-B39162B4300F210"
+    },
+    {
+       "device": "DIODE",
+       "footprint": "sod323",
+       "loadstatus": "smt",
+       "mfg_part_number": "1N4148WSTR",
+       "provided": "no",
+       "value": "1N4148",
+       "vendor": "digikey",
+       "vendor_part_number": "1655-1359-1-ND"
+    },
+    {
+       "device": "DIODE",
+       "footprint": "DO-214AC",
+       "loadstatus": "smt",
+       "mfg_part_number": "CDBA540-HF",
+       "provided": "no",
+       "value": "CDBA540",
+       "vendor": "digikey",
+       "vendor_part_number": "641-1707-1-ND"
+    },
+    {
+       "device": "DIODE",
+       "footprint": "powerdi123",
+       "loadstatus": "smt",
+       "mfg_part_number": "DFLS130LQ-7",
+       "provided": "yes",
+       "value": "DFLS130L",
+       "vendor": "mouser",
+       "vendor_part_number": "621-DFLS130LQ7"
+    },
+    {
+       "device": "DIODE",
+       "footprint": "sod323",
+       "loadstatus": "smt",
+       "mfg_part_number": "NSR0240HT1G",
+       "provided": "no",
+       "value": "NSR0240HT",
+       "vendor": "digikey",
+       "vendor_part_number": "NSR0240HT1GOSCT-ND"
+    },
+    {
+       "device": "DIODE",
+       "footprint": "DO-214AC",
+       "loadstatus": "smt",
+       "mfg_part_number": "S1G",
+       "provided": "no",
+       "value": "S1G",
+       "vendor": "digikey",
+       "vendor_part_number": "S1GFSCT-ND"
+    },
+    {
+       "device": "ENCLOSURE",
+       "footprint": "1551NGY",
+       "loadstatus": "handload",
+       "mfg_part_number": "1551NGY",
+       "provided": "no",
+       "value": "1551NGY",
+       "vendor": "mouser",
+       "vendor_part_number": "546-1551NGY"
+    },
+    {
+       "device": "FUSE",
+       "footprint": "fuse3568",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "3568",
+       "provided": "no",
+       "value": "fuse3568",
+       "vendor": "digikey",
+       "vendor_part_number": "36-3568-ND"
+    },
+    {
+       "device": "FUSE",
+       "footprint": "fuse345",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "03450101H",
+       "provided": "no",
+       "value": "fuse345",
+       "vendor": "mouser",
+       "vendor_part_number": "576-03450101H"
+    },
+    {
+       "device": "IC",
+       "footprint": "s-pqfp-g32",
+       "loadstatus": "smt",
+       "mfg_part_number": "ADS124S06IPBS",
+       "provided": "no",
+       "value": "ADS124S0X",
+       "vendor": "digikey",
+       "vendor_part_number": "296-45188-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "s-pqfp-g32",
+       "loadstatus": "smt",
+       "mfg_part_number": "ADS131A04IPBSR",
+       "provided": "no",
+       "value": "ADS131A04",
+       "vendor": "digikey",
+       "vendor_part_number": "296-44202-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "lga14",
+       "loadstatus": "smt",
+       "mfg_part_number": "ADXL375BCCZ-RL",
+       "provided": "yes",
+       "value": "ADXL375",
+       "vendor": "digikey",
+       "vendor_part_number": "ADXL375BCCZ-RLCT-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "SOT23-5",
+       "loadstatus": "smt",
+       "mfg_part_number": "AP3012KTR-G1",
+       "provided": "no",
+       "value": "AP3012",
+       "vendor": "digikey",
+       "vendor_part_number": "AP3012KTR-G1DICT-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "TQFP32_7",
+       "loadstatus": "smt",
+       "mfg_part_number": "ATMEGA328P-AUR",
+       "provided": "no",
+       "value": "ATmega328p",
+       "vendor": "digikey",
+       "vendor_part_number": "ATMEGA328P-AURCT-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "MO-220",
+       "loadstatus": "smt",
+       "mfg_part_number": "ATTINY85-20MU",
+       "provided": "no",
+       "value": "ATtiny85",
+       "vendor": "digikey",
+       "vendor_part_number": "ATTINY85-20MU-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "lga16",
+       "loadstatus": "smt",
+       "mfg_part_number": "BMI088",
+       "provided": "yes",
+       "value": "BMI088",
+       "vendor": "digikey 828-1082-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "lga14b",
+       "loadstatus": "smt",
+       "mfg_part_number": "BMX160",
+       "provided": "no",
+       "value": "BMX160",
+       "vendor": "digikey",
+       "vendor_part_number": "828-1087-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "BTM182",
+       "loadstatus": "smt",
+       "mfg_part_number": "BTM-182",
+       "provided": "yes",
+       "value": "BTM-182",
+       "vendor": "rayson",
+       "vendor_part_number": "BTM-182"
+    },
+    {
+       "device": "IC",
+       "footprint": "SOIJ8",
+       "loadstatus": "smt",
+       "mfg_part_number": "CAT24C32WI-G",
+       "provided": "no",
+       "value": "CAT24C32",
+       "vendor": "digikey",
+       "vendor_part_number": "CAT24C32WI-GOS-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "TI-QFN36",
+       "loadstatus": "smt",
+       "mfg_part_number": "CC1111F32RSPR",
+       "provided": "no",
+       "value": "CC1111",
+       "vendor": "digikey",
+       "vendor_part_number": "296-22684-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "TI-QFN32",
+       "loadstatus": "smt",
+       "mfg_part_number": "CC1120RHBR",
+       "provided": "no",
+       "value": "CC1120",
+       "vendor": "digikey",
+       "vendor_part_number": "296-35667-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "ti-qfn20",
+       "loadstatus": "smt",
+       "mfg_part_number": "CC115LRGPR",
+       "provided": "no",
+       "value": "CC115L",
+       "vendor": "digikey",
+       "vendor_part_number": "296-35721-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "TI-QFN32",
+       "loadstatus": "smt",
+       "mfg_part_number": "CC1200RHBR",
+       "pnpformat": "reel_12",
+       "provided": "yes",
+       "value": "CC1200",
+       "vendor": "digikey",
+       "vendor_part_number": "296-38892-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "TI-QFN32-new",
+       "loadstatus": "smt",
+       "mfg_part_number": "CC1200RHBT",
+       "pnpformat": "reel_12",
+       "provided": "yes",
+       "value": "CC1200",
+       "vendor": "digikey",
+       "vendor_part_number": "296-36396-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "TI-QFN32-new",
+       "loadstatus": "smt",
+       "mfg_part_number": "CC1200RHBT",
+       "provided": "yes",
+       "value": "CC1201",
+       "vendor": "mouser",
+       "vendor_part_number": "595-CC1201RHBT"
+    },
+    {
+       "device": "IC",
+       "footprint": "wqfn-16",
+       "loadstatus": "smt",
+       "mfg_part_number": "DRV8800RTYR",
+       "pnpformat": "reel_12",
+       "provided": "no",
+       "value": "DRV8800",
+       "vendor": "digikey",
+       "vendor_part_number": "296-23637-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "s-pwson-n8",
+       "loadstatus": "smt",
+       "mfg_part_number": "DRV8838DSGT",
+       "provided": "no",
+       "value": "DRV8838",
+       "vendor": "digikey",
+       "vendor_part_number": "296-37539-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "SOIJ8",
+       "loadstatus": "smt",
+       "mfg_part_number": "DS1307Z+T&R",
+       "provided": "no",
+       "value": "DS1307",
+       "vendor": "mouser",
+       "vendor_part_number": "700-DS1307ZT&R"
+    },
+    {
+       "device": "IC",
+       "footprint": "ssop-16",
+       "loadstatus": "smt",
+       "mfg_part_number": "FT230XS-R",
+       "provided": "no",
+       "value": "FT230XS",
+       "vendor": "digikey",
+       "vendor_part_number": "768-1135-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "TI-QFN32",
+       "loadstatus": "smt",
+       "mfg_part_number": "FT232RQ-REEL",
+       "provided": "no",
+       "value": "FT232RQ",
+       "vendor": "digikey",
+       "vendor_part_number": "768-1008-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "LPCC16",
+       "loadstatus": "smt",
+       "mfg_part_number": "HMC5883L-TR",
+       "provided": "no",
+       "value": "HMC5883L",
+       "vendor": "newark",
+       "vendor_part_number": "20T0699"
+    },
+    {
+       "device": "IC",
+       "footprint": "LPCC16",
+       "loadstatus": "smt",
+       "mfg_part_number": "MMC5983MA",
+       "provided": "yes",
+       "value": "MMC5983MA",
+       "vendor": "mouser",
+       "vendor_part_number": "438-MMC5983MA"
+    },
+    {
+       "device": "IC",
+       "footprint": "SO16",
+       "loadstatus": "smt",
+       "mfg_part_number": "INA125U/2K5",
+       "provided": "no",
+       "value": "INA125",
+       "vendor": "digikey",
+       "vendor_part_number": "296-INA125U/2K5CT-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "SOT23-5",
+       "loadstatus": "smt",
+       "mfg_part_number": "INA180A4IDBVT",
+       "provided": "no",
+       "value": "INA180",
+       "vendor": "digikey",
+       "vendor_part_number": "296-46630-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "TO92",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "L78L33ACZ",
+       "provided": "no",
+       "value": "L78L33",
+       "vendor": "digikey",
+       "vendor_part_number": "497-7288-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "TO252",
+       "loadstatus": "smt",
+       "mfg_part_number": "LD29150DT33R",
+       "provided": "no",
+       "value": "LD29150DT33R",
+       "vendor": "digikey",
+       "vendor_part_number": "497-1496-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "TO252",
+       "loadstatus": "smt",
+       "mfg_part_number": "LD29150DT50R",
+       "provided": "no",
+       "value": "LD29150DT50R",
+       "vendor": "digikey",
+       "vendor_part_number": "497-3468-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "SOT23-5",
+       "loadstatus": "smt",
+       "mfg_part_number": "LD2980ABM33TR",
+       "provided": "yes",
+       "value": "LD2980-3.3",
+       "vendor": "digikey",
+       "vendor_part_number": "497-1517-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "SOT23-5",
+       "loadstatus": "smt",
+       "mfg_part_number": "LD2980CM33TR",
+       "provided": "no",
+       "value": "LD2980CM33TR",
+       "vendor": "digikey",
+       "vendor_part_number": "497-3479-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "8ufson2x2",
+       "loadstatus": "smt",
+       "mfg_part_number": "LM193QT",
+       "provided": "yes",
+       "value": "LM193",
+       "vendor": "mouser",
+       "vendor_part_number": "511-LM193QT"
+    },
+    {
+       "device": "IC",
+       "footprint": "8ufson2x2",
+       "loadstatus": "smt",
+       "mfg_part_number": "LM293QT",
+       "provided": "yes",
+       "value": "LM293",
+       "vendor": "digikey",
+       "vendor_part_number": "497-11134-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "miniso8",
+       "loadstatus": "smt",
+       "mfg_part_number": "LM293ST",
+       "provided": "yes",
+       "value": "LM293",
+       "vendor": "digikey",
+       "vendor_part_number": "497-4265-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "SOT23-5",
+       "loadstatus": "smt",
+       "mfg_part_number": "LP2985-50DBVR",
+       "provided": "no",
+       "value": "LP2985",
+       "vendor": "digikey",
+       "vendor_part_number": "296-20717-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "hvqfn33",
+       "loadstatus": "smt",
+       "mfg_part_number": "LPC11U14FHI33/201",
+       "provided": "yes",
+       "value": "LPC11U14FHI33",
+       "vendor": "mouser",
+       "vendor_part_number": "771-LPC11U14FHI33201"
+    },
+    {
+       "device": "IC",
+       "footprint": "sot1155-2",
+       "loadstatus": "smt",
+       "mfg_part_number": "LPC11U24FET48/301",
+       "provided": "yes",
+       "value": "LPC11U24FET48/301",
+       "vendor": "mouser",
+       "vendor_part_number": "771-LPC11U24FET48301"
+    },
+    {
+       "device": "IC",
+       "footprint": "mlp8-4x3",
+       "loadstatus": "smt",
+       "mfg_part_number": "M25P16-VMC6TG",
+       "provided": "no",
+       "value": "M25P16",
+       "vendor": "digikey",
+       "vendor_part_number": "M25P16-VMC6TGCT-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "UBLOX-MAX",
+       "loadstatus": "smt",
+       "mfg_part_number": "MAX-M10S-00B",
+       "pnpformat": "reel_24",
+       "provided": "no",
+       "value": "MAX-10",
+       "vendor": "digikey",
+       "vendor_part_number": "672-MAX-M10S-00BCT-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "UBLOX-MAX",
+       "loadstatus": "smt",
+       "mfg_part_number": "MAX-7Q",
+       "pnpformat": "reel_24",
+       "provided": "yes",
+       "value": "MAX-7Q",
+       "vendor": "u-blox",
+       "vendor_part_number": "MAX-7Q"
+    },
+    {
+       "device": "IC",
+       "footprint": "UBLOX-MAX",
+       "loadstatus": "smt",
+       "mfg_part_number": "MAX-M8C-0",
+       "pnpformat": "reel_24",
+       "provided": "yes",
+       "value": "MAX-8C",
+       "vendor": "digikey",
+       "vendor_part_number": "672-MAX-M8C-0TR-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "UBLOX-MAX",
+       "loadstatus": "smt",
+       "mfg_part_number": "MAX-8Q-0-10",
+       "pnpformat": "reel_24",
+       "provided": "yes",
+       "value": "MAX-8Q",
+       "vendor": "digikey",
+       "vendor_part_number": "672-MAX-8Q-0-10CT-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "UBLOX-ZOE",
+       "loadstatus": "smt",
+       "mfg_part_number": "ZOE-M8Q-0-10",
+       "pnpformat": "reel_12",
+       "provided": "no",
+       "value": "ZOE-M8Q-0-10",
+       "vendor": "digikey",
+       "vendor_part_number": "672-ZOE-M8Q-0-10CT-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "SOT23",
+       "loadstatus": "smt",
+       "mfg_part_number": "MCP130T-300I/TT",
+       "pnpformat": "reel_8x4",
+       "provided": "yes",
+       "value": "MCP130T-300",
+       "vendor": "digikey",
+       "vendor_part_number": "MCP130T-300I/TTCT-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "dfn-2x3-8",
+       "loadstatus": "smt",
+       "mfg_part_number": "MCP1642B-50I/MC",
+       "provided": "yes",
+       "value": "MCP1642B-50",
+       "vendor": "mouser",
+       "vendor_part_number": "579-MCP1642B-50I/MC"
+    },
+    {
+       "device": "IC",
+       "footprint": "soic-16",
+       "loadstatus": "smt",
+       "mfg_part_number": "MCP3008T-I/SL",
+       "provided": "no",
+       "value": "MCP3008",
+       "vendor": "digikey",
+       "vendor_part_number": "MCP3008T-I/SLCT-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "SOT23-5",
+       "loadstatus": "smt",
+       "mfg_part_number": "MCP3021A5T-E/OT",
+       "pnpformat": "reel_8x4",
+       "provided": "no",
+       "value": "MCP3021",
+       "vendor": "digikey",
+       "vendor_part_number": "MCP3021A5T-E/OTCT-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "SOT23-5",
+       "loadstatus": "smt",
+       "mfg_part_number": "MCP73831T-2ACI/OT",
+       "pnpformat": "reel_8x4",
+       "provided": "no",
+       "value": "MCP73831",
+       "vendor": "digikey",
+       "vendor_part_number": "MCP73831T-2ACI/OTCT-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "dfn-2x3-8",
+       "loadstatus": "smt",
+       "mfg_part_number": "MCP73831-2ACI/MC",
+       "provided": "yes",
+       "value": "MCP73831-DFN",
+       "vendor": "mouser",
+       "vendor_part_number": "579-MCP73831-2ACIMC"
+    },
+    {
+       "device": "IC",
+       "footprint": "SC70_5",
+       "loadstatus": "smt",
+       "mfg_part_number": "MCP6541UT-I/LT",
+       "provided": "no",
+       "value": "MCP6541UT",
+       "vendor": "digikey",
+       "vendor_part_number": "MCP6541UT-I/LTCT-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "SOT23-5",
+       "loadstatus": "smt",
+       "mfg_part_number": "MIC5235-3.3YM5-TR",
+       "pnpformat": "reel_8x4",
+       "provided": "no",
+       "value": "MIC5235",
+       "vendor": "digikey",
+       "vendor_part_number": "576-2784-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "qfn16-3x3",
+       "loadstatus": "smt",
+       "mfg_part_number": "MKL02Z32VFG4",
+       "provided": "no",
+       "value": "MKL02Z32VFG4",
+       "vendor": "digikey",
+       "vendor_part_number": "MKL02Z32VFG4-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "AN3111",
+       "loadstatus": "smt",
+       "mfg_part_number": "MMA6555KW",
+       "provided": "yes",
+       "value": "MMA6555",
+       "vendor": "mouser",
+       "vendor_part_number": "841-MMA6555KW"
+    },
+    {
+       "device": "IC",
+       "footprint": "MOT1317",
+       "loadstatus": "smt",
+       "mfg_part_number": "MP3H6115A6U",
+       "provided": "no",
+       "value": "MP3H6115A",
+       "vendor": "digikey",
+       "vendor_part_number": "MP3H6115A6U-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "MPU6000",
+       "loadstatus": "smt",
+       "mfg_part_number": "MPU-6000",
+       "provided": "yes",
+       "value": "MPU-6000",
+       "vendor": "cdiweb",
+       "vendor_part_number": "MPU-6000"
+    },
+    {
+       "device": "IC",
+       "footprint": "ufqfpn24",
+       "loadstatus": "smt",
+       "mfg_part_number": "MPU-9250",
+       "provided": "no",
+       "value": "MPU-9250",
+       "vendor": "mouser",
+       "vendor_part_number": "410-MPU-9250"
+    },
+    {
+       "device": "IC",
+       "footprint": "MS5607",
+       "loadstatus": "smt",
+       "mfg_part_number": "MS560702BA03-50",
+       "provided": "no",
+       "value": "MS5607",
+       "vendor": "digikey",
+       "vendor_part_number": "223-1198-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "MS5607",
+       "loadstatus": "smt",
+       "mfg_part_number": "MS860702BA01-50",
+       "provided": "no",
+       "value": "MS8607",
+       "vendor": "digikey",
+       "vendor_part_number": "223-1701-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "uson-8",
+       "loadstatus": "smt",
+       "mfg_part_number": "MX25L4006EZUI-12G TR",
+       "provided": "no",
+       "value": "MX25L4006E",
+       "vendor": "digikey",
+       "vendor_part_number": "1092-1154-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "uson-8",
+       "loadstatus": "smt",
+       "mfg_part_number": "MX25V8035FZUI",
+       "provided": "no",
+       "value": "MX25V8035F",
+       "vendor": "digikey",
+       "vendor_part_number": "1092-1194-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "506CD",
+       "loadstatus": "smt",
+       "mfg_part_number": "NCP45560IMNTWG-L",
+       "provided": "no",
+       "value": "NCP45560",
+       "vendor": "digikey",
+       "vendor_part_number": "NCP45560IMNTWG-LOSCT-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "711AT",
+       "loadstatus": "smt",
+       "mfg_part_number": "NCV8152MX330180TCG",
+       "provided": "no",
+       "value": "NCV8152MX330180TCG",
+       "vendor": "mouser",
+       "vendor_part_number": "863-NCV8152MX330180T"
+    },
+    {
+       "device": "IC",
+       "footprint": "SOT23-5",
+       "loadstatus": "smt",
+       "mfg_part_number": "OPA356AIDBVR",
+       "pnpformat": "reel_8x4",
+       "provided": "no",
+       "value": "OPA356",
+       "vendor": "digikey",
+       "vendor_part_number": "296-32191-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "so-8ep",
+       "loadstatus": "smt",
+       "mfg_part_number": "PAM2421AECADJR",
+       "provided": "no",
+       "value": "PAM2421",
+       "vendor": "digikey",
+       "vendor_part_number": "PAM2421AECADJRDICT-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "so-8ep",
+       "loadstatus": "smt",
+       "mfg_part_number": "PAM2422AECADJR",
+       "provided": "no",
+       "value": "PAM2422",
+       "vendor": "digikey",
+       "vendor_part_number": "PAM2422AECADJRDICT-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "so-8ep",
+       "loadstatus": "smt",
+       "mfg_part_number": "PAM2423AECADJR",
+       "provided": "no",
+       "value": "PAM2423",
+       "vendor": "digikey",
+       "vendor_part_number": "PAM2423AECADJRDICT-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "TSSOP28",
+       "loadstatus": "smt",
+       "mfg_part_number": "PCA9685PW,112",
+       "pnpformat": "tube",
+       "provided": "no",
+       "value": "PCA9685",
+       "vendor": "digikey",
+       "vendor_part_number": "568-8366-5-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "RN4678",
+       "loadstatus": "smt",
+       "mfg_part_number": "RN4678-V/RM113",
+       "pnpformat": "tray",
+       "provided": "yes",
+       "value": "RN4678",
+       "vendor": "mouser",
+       "vendor_part_number": "579-RN4678-V/RM113"
+    },
+    {
+       "device": "IC",
+       "footprint": "vqfn-48",
+       "loadstatus": "smt",
+       "mfg_part_number": "ATSAMD21G17D-MUT",
+       "provided": "yes",
+       "value": "SAMD21G17D",
+       "vendor": "mouser",
+       "vendor_part_number": "556-ATSAMD21G17D-MUT"
+    },
+    {
+       "device": "IC",
+       "footprint": "lqfp48",
+       "loadstatus": "smt",
+       "mfg_part_number": "ATSAMD21G18A-AU",
+       "provided": "no",
+       "value": "SAMD21G18A",
+       "vendor": "digikey",
+       "vendor_part_number": "ATSAMD21G18A-AU-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "lqfp64",
+       "loadstatus": "smt",
+       "mfg_part_number": "STM32F103R8T6TR",
+       "provided": "no",
+       "value": "STM32F103R8T6",
+       "vendor": "mouser",
+       "vendor_part_number": "511-STM32F103R8T6TR"
+    },
+    {
+       "device": "IC",
+       "footprint": "lqfp64",
+       "loadstatus": "smt",
+       "mfg_part_number": "STM32F103RBT6TR",
+       "provided": "no",
+       "value": "STM32F103RBT6",
+       "vendor": "mouser",
+       "vendor_part_number": "511-STM32F103RBT6TR"
+    },
+    {
+       "device": "IC",
+       "footprint": "ufqfpn20",
+       "loadstatus": "smt",
+       "mfg_part_number": "STM32L011F4U6",
+       "provided": "no",
+       "value": "STM32L011F4U6",
+       "vendor": "mouser",
+       "vendor_part_number": "511-STM32L011F4U6TR"
+    },
+    {
+       "device": "IC",
+       "footprint": "ufqfpn48",
+       "loadstatus": "smt",
+       "mfg_part_number": "STM32L151CBU6",
+       "provided": "no",
+       "value": "STM32L151CBU6",
+       "vendor": "mouser",
+       "vendor_part_number": "511-STM32L151CBU6A"
+    },
+    {
+       "device": "IC",
+       "footprint": "lqfp64",
+       "loadstatus": "smt",
+       "mfg_part_number": "STM32L151RBT6",
+       "provided": "no",
+       "value": "STM32L151RBT6",
+       "vendor": "digikey",
+       "vendor_part_number": "497-11193-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "lqfp100",
+       "loadstatus": "smt",
+       "mfg_part_number": "STM32L151VCT6",
+       "provided": "no",
+       "value": "STM32L151VCT6",
+       "vendor": "mouser",
+       "vendor_part_number": "511-STM32L151VCT6"
+    },
+    {
+       "device": "IC",
+       "footprint": "lqfp100",
+       "loadstatus": "smt",
+       "mfg_part_number": "STM32L151VDT7X",
+       "provided": "yes",
+       "value": "STM32L151VDT7X",
+       "vendor": "mouser",
+       "vendor_part_number": "511-STM32L151VDT7X"
+    },
+    {
+       "device": "IC",
+       "footprint": "lqfp100",
+       "loadstatus": "smt",
+       "mfg_part_number": "STM32L152VCT6",
+       "provided": "no",
+       "value": "STM32L152VCT6",
+       "vendor": "mouser",
+       "vendor_part_number": "511-STM32L152VCT6"
+    },
+    {
+       "device": "IC",
+       "footprint": "lqfp100",
+       "loadstatus": "smt",
+       "mfg_part_number": "STM32L162VCT6D",
+       "pnpformat": "tray",
+       "provided": "yes",
+       "value": "STM32L162VCT6D",
+       "vendor": "mouser",
+       "vendor_part_number": "511-STM32L162VCT6D"
+    },
+    {
+       "device": "IC",
+       "footprint": "lqfp48",
+       "loadstatus": "smt",
+       "mfg_part_number": "STM32F042C6T6",
+       "pnpformat": "tray",
+       "provided": "no",
+       "value": "STM32F042C",
+       "vendor": "digikey",
+       "vendor_part_number": "497-14648-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "urqfpn48",
+       "loadstatus": "smt",
+       "mfg_part_number": "STM32F042C6U6",
+       "provided": "no",
+       "value": "STM32F042C",
+       "vendor": "mouser",
+       "vendor_part_number": "511-STM32F042C6U6"
+    },
+    {
+       "device": "IC",
+       "footprint": "ufqfpn28",
+       "loadstatus": "smt",
+       "mfg_part_number": "STM32F042G6U6",
+       "provided": "yes",
+       "value": "STM32F042G6U",
+       "vendor": "mouser",
+       "vendor_part_number": "511-STM32F042G6U6"
+    },
+    {
+       "device": "IC",
+       "footprint": "lqfp32",
+       "loadstatus": "smt",
+       "mfg_part_number": "STM32F042K6T6",
+       "pnpformat": "reel_16",
+       "provided": "no",
+       "value": "STM32F042K6T",
+       "vendor": "digikey",
+       "vendor_part_number": "497-14647-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "SOT23-5",
+       "loadstatus": "smt",
+       "mfg_part_number": "TC2185-3.3VCTTR",
+       "pnpformat": "reel_8x4",
+       "provided": "no",
+       "value": "TC2185-3.3",
+       "vendor": "digikey",
+       "vendor_part_number": "TC2185-3.3VCCT-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "SOIJ4",
+       "loadstatus": "smt",
+       "mfg_part_number": "TLP290(GR-TP,SE",
+       "provided": "no",
+       "value": "TLP290",
+       "vendor": "digikey",
+       "vendor_part_number": "TLP290(GR-TPSECT-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "SOT23-5",
+       "loadstatus": "smt",
+       "mfg_part_number": "TLV73333PQDBVRQ1",
+       "pnpformat": "reel_8x4",
+       "provided": "yes",
+       "value": "TLV73333",
+       "vendor": "mouser",
+       "vendor_part_number": "595-TLV73333PQDBVRQ1"
+    },
+    {
+       "device": "IC",
+       "footprint": "VQFN-HR-12",
+       "loadstatus": "smt",
+       "mfg_part_number": "TPS2121RUXR",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "TPS2121",
+       "vendor": "digikey",
+       "vendor_part_number": "296-53410-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "SOT23-5",
+       "loadstatus": "smt",
+       "mfg_part_number": "TPS70933DBVR",
+       "pnpformat": "reel_8x4",
+       "provided": "no",
+       "value": "TPS70933",
+       "vendor": "digikey",
+       "vendor_part_number": "296-35483-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "SOT23-5",
+       "loadstatus": "smt",
+       "mfg_part_number": "TPS70950DBVR",
+       "pnpformat": "reel_8x4",
+       "provided": "no",
+       "value": "TPS70950",
+       "vendor": "digikey",
+       "vendor_part_number": "296-35484-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "s-pwson-n6",
+       "loadstatus": "smt",
+       "mfg_part_number": "TPS71433DRVR",
+       "provided": "no",
+       "value": "TPS71433",
+       "vendor": "digikey",
+       "vendor_part_number": "296-24040-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "SOT23-5",
+       "loadstatus": "smt",
+       "mfg_part_number": "TPS76033DBVR",
+       "pnpformat": "reel_8x4",
+       "provided": "no",
+       "value": "TPS76033",
+       "vendor": "digikey",
+       "vendor_part_number": "296-8073-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "SOT23-5",
+       "loadstatus": "smt",
+       "mfg_part_number": "TPS76133DBVR",
+       "pnpformat": "reel_8x4",
+       "provided": "no",
+       "value": "TPS76133",
+       "vendor": "digikey",
+       "vendor_part_number": "296-11010-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "SC70_5",
+       "loadstatus": "smt",
+       "mfg_part_number": "TSV521AICT",
+       "provided": "no",
+       "value": "TSV521",
+       "vendor": "digikey",
+       "vendor_part_number": "497-13193-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "SOIJ8",
+       "loadstatus": "smt",
+       "mfg_part_number": "VN7050ASTR",
+       "provided": "no",
+       "value": "VN7050AS",
+       "vendor": "digikey",
+       "vendor_part_number": "497-15993-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "SOIJ8",
+       "loadstatus": "smt",
+       "mfg_part_number": "GD25Q16CSIGR",
+       "provided": "no",
+       "value": "W25Q16",
+       "vendor": "digikey",
+       "vendor_part_number": "1970-1024-1-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "SOIJ8",
+       "loadstatus": "smt",
+       "mfg_part_number": "W25Q64JVSSIQ",
+       "provided": "no",
+       "value": "W25Q64",
+       "vendor": "digikey",
+       "vendor_part_number": "W25Q64JVSSIQ-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "SOIJ8",
+       "loadstatus": "smt",
+       "mfg_part_number": "MX25L25673GM2I-08G",
+       "provided": "no",
+       "value": "MX25L25673GM2I-08G",
+       "vendor": "digikey",
+       "vendor_part_number": "1092-1239-ND"
+    },
+    {
+       "device": "IC",
+       "footprint": "SOIJ8",
+       "loadstatus": "smt",
+       "mfg_part_number": "W25Q80DVSSIG",
+       "provided": "no",
+       "value": "W25Q80",
+       "vendor": "digikey",
+       "vendor_part_number": "W25Q80DVSSIG-ND"
+    },
+    {
+       "device": "INDUCTOR",
+       "footprint": "0603",
+       "loadstatus": "smt",
+       "mfg_part_number": "MLZ1608A1R0WT000",
+       "pnpformat": "reel_8x4",
+       "provided": "no",
+       "value": "1.0uH",
+       "vendor": "digikey",
+       "vendor_part_number": "445-6384-1-ND"
+    },
+    {
+       "device": "INDUCTOR",
+       "footprint": "0603",
+       "loadstatus": "smt",
+       "mfg_part_number": "MLZ1608N2R2LT000",
+       "pnpformat": "reel_8x4",
+       "provided": "no",
+       "value": "2.2uH",
+       "vendor": "digikey",
+       "vendor_part_number": "445-6754-1-ND"
+    },
+    {
+       "device": "INDUCTOR",
+       "footprint": "NRS50",
+       "loadstatus": "smt",
+       "mfg_part_number": "NRS5024T3R3NMGJ",
+       "provided": "no",
+       "value": "3.3uH",
+       "vendor": "digikey",
+       "vendor_part_number": "587-5581-1-ND"
+    },
+    {
+       "device": "INDUCTOR",
+       "footprint": "M1040M",
+       "loadstatus": "smt",
+       "mfg_part_number": "ETQ-P4M4R7KVC",
+       "provided": "no",
+       "value": "4.7uH",
+       "vendor": "digikey",
+       "vendor_part_number": "P19787CT-ND"
+    },
+    {
+       "device": "INDUCTOR",
+       "footprint": "1008",
+       "loadstatus": "smt",
+       "mfg_part_number": "AIML-1008HC-4R7M-T",
+       "provided": "yes",
+       "value": "4.7uH",
+       "vendor": "digikey",
+       "vendor_part_number": "535-12797-1-ND"
+    },
+    {
+       "device": "INDUCTOR",
+       "footprint": "l8x8",
+       "loadstatus": "smt",
+       "mfg_part_number": "NRS8040T6R8NJGJ",
+       "provided": "no",
+       "value": "6.8uH",
+       "vendor": "digikey",
+       "vendor_part_number": "587-2979-2-ND"
+    },
+    {
+       "device": "INDUCTOR",
+       "footprint": "0806",
+       "loadstatus": "smt",
+       "mfg_part_number": "LQH2MCN100K02L",
+       "provided": "no",
+       "value": "10uH",
+       "vendor": "digikey",
+       "vendor_part_number": "490-4046-1-ND"
+    },
+    {
+       "device": "INDUCTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "LQG15HS15NJ02D",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "15nH",
+       "vendor": "digikey",
+       "vendor_part_number": "490-2625-1-ND"
+    },
+    {
+       "device": "INDUCTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "LQG15HS22NG02D",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "22nH",
+       "vendor": "digikey",
+       "vendor_part_number": "490-LQG15HS22NG02DCT-ND"
+    },
+    {
+       "device": "INDUCTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "LQG15HS27NJ02D",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "27nH",
+       "vendor": "digikey",
+       "vendor_part_number": "490-2628-1-ND"
+    },
+    {
+       "device": "INDUCTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "MLG1005S43NJTD25",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "43nH",
+       "vendor": "digikey",
+       "vendor_part_number": "445-16305-1-ND"
+    },
+    {
+       "device": "INDUCTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "LQG15HS56NJ02D",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "56nH",
+       "vendor": "digikey",
+       "vendor_part_number": "490-2632-1-ND"
+    },
+    {
+       "device": "INDUCTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "LI0402C221R-10",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "bead",
+       "vendor": "digikey",
+       "vendor_part_number": "240-2554-1-ND"
+    },
+    {
+       "device": "INDUCTOR",
+       "footprint": "JTIBM15",
+       "loadstatus": "smt",
+       "mfg_part_number": "0433BM15A0001",
+       "provided": "no",
+       "value": "433BM15",
+       "vendor": "digikey",
+       "vendor_part_number": "712-1540-1-ND"
+    },
+    {
+       "device": "LCD",
+       "footprint": "LCD-S101D14TR",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "LCD-S101D14TR",
+       "provided": "no",
+       "value": "digit",
+       "vendor": "digikey",
+       "vendor_part_number": "67-1506-ND"
+    },
+    {
+       "device": "LCD",
+       "footprint": "NHD-C12864LZ",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "NHD-C12864LZ-FSW-FBW-3V3",
+       "provided": "no",
+       "value": "NHD-C12864LZ",
+       "vendor": "mouser",
+       "vendor_part_number": "763-12864LZFSWFBW3V3"
+    },
+    {
+       "device": "LED",
+       "footprint": "0603diode",
+       "loadstatus": "smt",
+       "mfg_part_number": "LTST-C190KRKT",
+       "pnpformat": "reel_8x4",
+       "provided": "no",
+       "value": "red",
+       "vendor": "digikey",
+       "vendor_part_number": "160-1436-1-ND"
+    },
+    {
+       "device": "LED",
+       "footprint": "100mil-led",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "C503B-RCN-CW0Z0AA1",
+       "provided": "no",
+       "value": "red",
+       "vendor": "digikey",
+       "vendor_part_number": "C503B-RCN-CW0Z0AA1-ND"
+    },
+    {
+       "device": "LED",
+       "footprint": "100mil-led",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "INL-3AR30",
+       "provided": "no",
+       "value": "red3mm",
+       "vendor": "digikey",
+       "vendor_part_number": "1830-1000-ND"
+    },
+    {
+       "device": "LED",
+       "footprint": "topled",
+       "loadstatus": "smt",
+       "mfg_part_number": "LO T67K-L1M2-24-Z",
+       "provided": "no",
+       "value": "orange",
+       "vendor": "digikey",
+       "vendor_part_number": "475-1178-1-ND"
+    },
+    {
+       "device": "LED",
+       "footprint": "0603diode",
+       "loadstatus": "smt",
+       "mfg_part_number": "LTST-C191KSKT",
+       "pnpformat": "reel_8x4",
+       "provided": "no",
+       "value": "yellow",
+       "vendor": "digikey",
+       "vendor_part_number": "160-1448-1-ND"
+    },
+    {
+       "device": "LED",
+       "footprint": "100mil-led",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "C503B-ACN-CW0Y0251",
+       "provided": "no",
+       "value": "yellow",
+       "vendor": "digikey",
+       "vendor_part_number": "C503B-ACN-CW0Y0251-ND"
+    },
+    {
+       "device": "LED",
+       "footprint": "0603diode",
+       "loadstatus": "smt",
+       "mfg_part_number": "LTST-C190KGKT",
+       "pnpformat": "reel_8x4",
+       "provided": "no",
+       "value": "green",
+       "vendor": "digikey",
+       "vendor_part_number": "160-1435-1-ND"
+    },
+    {
+       "device": "LED",
+       "footprint": "100mil-led",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "C503B-GCN-CY0C0791",
+       "provided": "no",
+       "value": "green",
+       "vendor": "digikey",
+       "vendor_part_number": "C503B-GCN-CY0C0791-ND"
+    },
+    {
+       "device": "LED",
+       "footprint": "100mil-led",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "C503B-BCN-CV0Z0461",
+       "provided": "no",
+       "value": "blue",
+       "vendor": "digikey",
+       "vendor_part_number": "C503B-BCN-CV0Z0461-ND"
+    },
+    {
+       "device": "LED",
+       "footprint": "100mil-led",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "INL-3AG30",
+       "provided": "no",
+       "value": "green3mm",
+       "vendor": "digikey",
+       "vendor_part_number": "1830-1004-ND"
+    },
+    {
+       "device": "LED",
+       "footprint": "0603diode",
+       "loadstatus": "smt",
+       "mfg_part_number": "LTST-C194TBKT",
+       "pnpformat": "reel_8x4",
+       "provided": "no",
+       "value": "blue",
+       "vendor": "digikey",
+       "vendor_part_number": "160-1837-1-ND"
+    },
+    {
+       "device": "LED",
+       "footprint": "0603-sideled",
+       "loadstatus": "smt",
+       "mfg_part_number": "LTST-S220TBKT",
+       "pnpformat": "reel_8x4",
+       "provided": "no",
+       "value": "blue",
+       "vendor": "digikey",
+       "vendor_part_number": "160-2032-1-ND"
+    },
+    {
+       "device": "LED",
+       "footprint": "0605",
+       "loadstatus": "smt",
+       "mfg_part_number": "LTST-C195KGJRKT",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "dualLED",
+       "vendor": "digikey",
+       "vendor_part_number": "160-1452-1-ND"
+    },
+    {
+       "device": "LED",
+       "footprint": "sk6812",
+       "loadstatus": "smt",
+       "mfg_part_number": "1655",
+       "provided": "no",
+       "value": "sk6812",
+       "vendor": "digikey",
+       "vendor_part_number": "1528-1104-ND"
+    },
+    {
+       "device": "MOSFET",
+       "footprint": "SO8",
+       "loadstatus": "smt",
+       "mfg_part_number": "FDS9926A",
+       "provided": "no",
+       "value": "FDS9926A",
+       "vendor": "digikey",
+       "vendor_part_number": "FDS9926ACT-ND"
+    },
+    {
+       "device": "MOSFET",
+       "footprint": "1212-8",
+       "loadstatus": "smt",
+       "mfg_part_number": "SI7232DN-T1-GE3",
+       "provided": "yes",
+       "value": "Si7232DN",
+       "vendor": "mouser",
+       "vendor_part_number": "781-SI7232DN-GE3"
+    },
+    {
+       "device": "MOSFET",
+       "footprint": "PDFN33",
+       "loadstatus": "smt",
+       "mfg_part_number": "TSM200N03DPQ33 RGG",
+       "provided": "yes",
+       "value": "TSM200N03D",
+       "vendor": "mouser",
+       "vendor_part_number": "821-TSM200N03DPQ33RG"
+    },
+    {
+       "device": "MOSFET",
+       "footprint": "TO252FET",
+       "loadstatus": "smt",
+       "mfg_part_number": "IPD068P03L3GATMA1",
+       "provided": "no",
+       "value": "IPD068P03L3GATMA1",
+       "vendor": "digikey",
+       "vendor_part_number": "IPD068P03L3GATMA1CT-ND"
+    },
+    {
+       "device": "MOSFET",
+       "footprint": "coolmos",
+       "loadstatus": "smt",
+       "mfg_part_number": "IPN60R3K4CEATMA1",
+       "provided": "no",
+       "value": "IPN60R3K4CE",
+       "vendor": "digikey",
+       "vendor_part_number": "IPN60R3K4CEATMA1CT-ND"
+    },
+    {
+       "device": "MOSFET",
+       "footprint": "TO252FET",
+       "loadstatus": "smt",
+       "mfg_part_number": "IRLR8743TRPBF",
+       "pnpformat": "reel_16",
+       "provided": "no",
+       "value": "IRLR8743PbF",
+       "vendor": "digikey",
+       "vendor_part_number": "IRLR8743TRPBFCT-ND"
+    },
+    {
+       "device": "OffBoard",
+       "footprint": "none",
+       "loadstatus": "noload",
+       "mfg_part_number": "62V30-02-040C",
+       "provided": "no",
+       "value": "62V30",
+       "vendor": "digikey",
+       "vendor_part_number": "62V30-02-040C-ND"
+    },
+    {
+       "device": "PHOTOTRANSISTOR",
+       "footprint": "2125",
+       "loadstatus": "smt",
+       "mfg_part_number": "RPM-075PTT86",
+       "provided": "no",
+       "value": "RPM-075PT",
+       "vendor": "digikey",
+       "vendor_part_number": "511-1356-1-ND"
+    },
+    {
+       "device": "PHOTORESISTOR",
+       "footprint": "100mil2pin",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "PDV-P8103",
+       "provided": "no",
+       "value": "PDV-P8103",
+       "vendor": "digikey",
+       "vendor_part_number": "PDV-P8103-ND"
+    },
+    {
+       "device": "RELAY",
+       "footprint": "g5rl1ae",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "G5RL-1A-E-HR-DC5",
+       "provided": "no",
+       "value": "G5RL-1(A)",
+       "vendor": "mouser",
+       "vendor_part_number": "653-G5RL-1AEHR-DC5"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "2512",
+       "loadstatus": "smt",
+       "mfg_part_number": "PA2512FKF070R001E",
+       "provided": "no",
+       "value": "0.001",
+       "vendor": "digikey",
+       "vendor_part_number": "YAG2136CT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "ERJ-2RKF1000X",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "100",
+       "vendor": "digikey",
+       "vendor_part_number": "P100LCT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "RC0402FR-07100KL",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "100k",
+       "vendor": "digikey",
+       "vendor_part_number": "311-100KLRCT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "CRGP0402F10K",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "10k",
+       "vendor": "digikey",
+       "vendor_part_number": "A130367CT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0603",
+       "loadstatus": "smt",
+       "mfg_part_number": "CRG0603F1M0/10",
+       "pnpformat": "reel_8x4",
+       "provided": "yes",
+       "value": "10k",
+       "vendor": "mouser",
+       "vendor_part_number": "279-CRG0603F1M0/10"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "RNCF0402BTE10K0",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "10k_0.1%",
+       "vendor": "digikey",
+       "vendor_part_number": "RNCF0402BTE10K0CT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "ERJ-2RKF12R7X",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "12.7",
+       "vendor": "digikey",
+       "vendor_part_number": "P12.7LCT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "RC0402FR-071K5L",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "1.5k",
+       "vendor": "digikey",
+       "vendor_part_number": "311-1.50KLRCT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "ERJ-2RKF1400X",
+       "pnpformat": "reel_8x2",
+       "provided": "yes",
+       "value": "140",
+       "vendor": "digikey",
+       "vendor_part_number": "P140LTR-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "ERJ-2RKF1500X",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "150",
+       "vendor": "digikey",
+       "vendor_part_number": "P150LCT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "ERJ-2RKF1502X",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "15k",
+       "vendor": "digikey",
+       "vendor_part_number": "P15.0KLCT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "CRGP0402F18R",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "18",
+       "vendor": "digikey",
+       "vendor_part_number": "A130334CT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "ERJ-2RKF1801X",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "1.8k",
+       "vendor": "digikey",
+       "vendor_part_number": "P1.80KLCT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "RC0402FR-071KL",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "1k",
+       "vendor": "digikey",
+       "vendor_part_number": "311-1.00KLRCT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0603",
+       "loadstatus": "smt",
+       "mfg_part_number": "302-1.0K-RC",
+       "pnpformat": "reel_8x4",
+       "provided": "yes",
+       "value": "1k",
+       "vendor": "mouser",
+       "vendor_part_number": "302-1.0K-RC"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0603",
+       "loadstatus": "smt",
+       "mfg_part_number": "CRG0603F2K4",
+       "pnpformat": "reel_8x4",
+       "provided": "yes",
+       "value": "2k",
+       "vendor": "mouser",
+       "vendor_part_number": "279-CRG0603F2K4"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "ERJ-2RKF22R0X",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "22",
+       "vendor": "digikey",
+       "vendor_part_number": "P22.0LCT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "RK73H1ETTP2200F",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "220",
+       "vendor": "digikey",
+       "vendor_part_number": "2019-RK73H1ETTP2200FCT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "ERJ-2RKF2202X",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "22k",
+       "vendor": "digikey",
+       "vendor_part_number": "P22.0KLCT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "ERJ-2RKF2612X",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "26.1k",
+       "vendor": "digikey",
+       "vendor_part_number": "P26.1KLCT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "RC0402FR-072K49L",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "2.49k",
+       "vendor": "digikey",
+       "vendor_part_number": "311-2.49KLRCT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "ERJ-2RKF2201X",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "2.2k",
+       "vendor": "digikey",
+       "vendor_part_number": "P2.20KLCT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "ERJ-2RKF2701X",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "2.7k",
+       "vendor": "digikey",
+       "vendor_part_number": "P2.70KLCT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "ERJ-2RKF2700X",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "270",
+       "vendor": "digikey",
+       "vendor_part_number": "P270LCT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "ERJ-2RKF2003X",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "200k",
+       "vendor": "digikey",
+       "vendor_part_number": "P200KLCT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "RC0402FR-0727KL",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "27k",
+       "vendor": "digikey",
+       "vendor_part_number": "311-27.0KLRCT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "ERJ-2RKF2001X",
+       "pnpformat": "reel_8x2",
+       "provided": "yes",
+       "value": "2k",
+       "vendor": "digikey",
+       "vendor_part_number": "P2.00KLTR-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "RC0402FR-0733RL",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "33",
+       "vendor": "digikey",
+       "vendor_part_number": "311-33.0LRCT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "ERJ-2RKF3300X",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "330",
+       "vendor": "digikey",
+       "vendor_part_number": "P330LCT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "ERJ-2RKF3600X",
+       "pnpformat": "reel_8x2",
+       "provided": "yes",
+       "value": "360",
+       "vendor": "digikey",
+       "vendor_part_number": "P360LCT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "AC0402FR-073K3L",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "3.3k",
+       "vendor": "digikey",
+       "vendor_part_number": "YAG3483CT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "ERJ-2RKF3901X",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "3.9k",
+       "vendor": "digikey",
+       "vendor_part_number": "P3.90KLCT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "ERJ-2RKF4700X",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "470",
+       "vendor": "digikey",
+       "vendor_part_number": "P470LCT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "ERJ-2RKF4701X",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "4.7k",
+       "vendor": "digikey",
+       "vendor_part_number": "P4.70KLCT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "ERJ-2RKF4703X",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "470k",
+       "vendor": "digikey",
+       "vendor_part_number": "P470KLCT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "ERJ-2RKF5101X",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "5.1k",
+       "vendor": "digikey",
+       "vendor_part_number": "P5.10KLCT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "ERJ-2RKF5102X",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "51k",
+       "vendor": "digikey",
+       "vendor_part_number": "P51.0KLCT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "ERJ-2RKF5490X",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "549",
+       "vendor": "digikey",
+       "vendor_part_number": "P549LCT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "RC0402FR-075K6L",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "5.6k",
+       "vendor": "digikey",
+       "vendor_part_number": "311-5.6KLRCT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "RT0402BRD075K6L",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "5.6k_0.1%",
+       "vendor": "digikey",
+       "vendor_part_number": "YAG1459CT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "ERJ-U02F5602X",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "56k",
+       "vendor": "digikey",
+       "vendor_part_number": "10-ERJ-U02F5602XCT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "ERJ-2RKF6202X",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "62k",
+       "vendor": "digikey",
+       "vendor_part_number": "P62.0KLTR-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "1206",
+       "loadstatus": "smt",
+       "mfg_part_number": "RMCF1206FT6R80",
+       "pnpformat": "reel_8x4",
+       "provided": "no",
+       "value": "6.8",
+       "vendor": "digikey",
+       "vendor_part_number": "RMCF1206FT6R80CT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "RK73H1ERTTP8061F",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "8.06k",
+       "vendor": "digikey",
+       "vendor_part_number": "2019-RK73H1ERTTP8061FCT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "RC0402FR-0780K6L",
+       "pnpformat": "reel_8x2",
+       "provided": "yes",
+       "value": "80.6k",
+       "vendor": "mouser",
+       "vendor_part_number": "603-RC0402FR-0780K6L"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "ERJ-2RKF8451X",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "8.45k",
+       "vendor": "digikey",
+       "vendor_part_number": "P8.45KLCT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "ERJ-2RKF9091X",
+       "pnpformat": "reel_8x2",
+       "provided": "no",
+       "value": "9.09k",
+       "vendor": "digikey",
+       "vendor_part_number": "P9.09KLCT-ND"
+    },
+    {
+       "device": "RESISTOR",
+       "footprint": "0402",
+       "loadstatus": "smt",
+       "mfg_part_number": "RC0402FR-0790K9L",
+       "pnpformat": "reel_8x2",
+       "provided": "yes",
+       "value": "90.9k",
+       "vendor": "mouser",
+       "vendor_part_number": "603-RC0402FR-0790K9L"
+    },
+    {
+       "device": "SWITCH",
+       "footprint": "LPH",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "1301.9307",
+       "provided": "no",
+       "value": "PUSHNO",
+       "vendor": "mouser",
+       "vendor_part_number": "693-1301.9307"
+    },
+    {
+       "device": "SWITCH",
+       "footprint": "PNswitchDPDT",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "PN22SJNA03QE",
+       "provided": "no",
+       "value": "On/OFF",
+       "vendor": "mouser",
+       "vendor_part_number": "611-PN22SJNA03QE"
+    },
+    {
+       "device": "SWITCH",
+       "footprint": "SK12F17",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "SK12F17G7",
+       "provided": "no",
+       "value": "SPDT",
+       "vendor": "mouser",
+       "vendor_part_number": "611-SK-12F17-G7"
+    },
+    {
+       "device": "SWITCH",
+       "footprint": "cus-12",
+       "loadstatus": "smt",
+       "mfg_part_number": "CUS-12TB",
+       "provided": "no",
+       "value": "SPDT",
+       "vendor": "digikey",
+       "vendor_part_number": "563-1102-1-ND"
+    },
+    {
+       "device": "SWITCH",
+       "footprint": "PCM12SMTR",
+       "loadstatus": "smt",
+       "mfg_part_number": "PCM12SMTR",
+       "pnpformat": "reel_16",
+       "provided": "no",
+       "value": "SPDT",
+       "vendor": "mouser",
+       "vendor_part_number": "611-PCM12SMTR"
+    },
+    {
+       "device": "SWITCH",
+       "footprint": "DIP16",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "206-214",
+       "provided": "no",
+       "value": "DPST",
+       "vendor": "digikey",
+       "vendor_part_number": "CT206214-ND"
+    },
+    {
+       "device": "SWITCH",
+       "footprint": "DIP16",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "206-8",
+       "provided": "no",
+       "value": "8DIP",
+       "vendor": "digikey",
+       "vendor_part_number": "CT2068-ND"
+    },
+    {
+       "device": "SWITCH",
+       "footprint": "A6R-102R",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "A6R-102R",
+       "provided": "no",
+       "value": "A6R-102R",
+       "vendor": "mouser",
+       "vendor_part_number": "653-A6R-102RF"
+    },
+    {
+       "device": "SWITCH",
+       "footprint": "pts645",
+       "loadstatus": "smt",
+       "mfg_part_number": "PTS645SM43SMTR92 LFS",
+       "provided": "no",
+       "value": "SPST",
+       "vendor": "digikey",
+       "vendor_part_number": "CKN9112TR-ND"
+    },
+    {
+       "device": "SWITCH",
+       "footprint": "l102",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "L102011MS02Q",
+       "provided": "no",
+       "value": "SPDT",
+       "vendor": "digikey",
+       "vendor_part_number": "CKC5107-ND"
+    },
+    {
+       "device": "SWITCH",
+       "footprint": "l201",
+       "loadstatus": "throughhole",
+       "mfg_part_number": "L201011MS02Q",
+       "provided": "no",
+       "value": "DPST",
+       "vendor": "digikey",
+       "vendor_part_number": "CKN11876-ND"
+    },
+    {
+       "device": "TRANSISTOR",
+       "footprint": "SOT23",
+       "loadstatus": "smt",
+       "mfg_part_number": "MMBT2222A",
+       "pnpformat": "reel_8x4",
+       "provided": "no",
+       "value": "MMBT2222A",
+       "vendor": "digikey",
+       "vendor_part_number": "MMBT2222AFSCT-ND"
+    },
+    {
+       "device": "TRANSISTOR",
+       "footprint": "sot666",
+       "loadstatus": "smt",
+       "mfg_part_number": "PMBT3904VS,115",
+       "provided": "no",
+       "value": "PMBT3904VS",
+       "vendor": "digikey",
+       "vendor_part_number": "568-6488-1-ND"
+    }
+]