+
+
+
\ No newline at end of file
diff --git a/deaf/common/enum.ByteDelimiter.html b/deaf/common/enum.ByteDelimiter.html
index 4f2a84f..fb984d2 100644
--- a/deaf/common/enum.ByteDelimiter.html
+++ b/deaf/common/enum.ByteDelimiter.html
@@ -1,16 +1,16 @@
-ByteDelimiter in deaf::common - Rust
\ No newline at end of file
diff --git a/deaf/common/enum.Layout.html b/deaf/common/enum.Layout.html
index 5252800..a50b282 100644
--- a/deaf/common/enum.Layout.html
+++ b/deaf/common/enum.Layout.html
@@ -1,4 +1,4 @@
-Layout in deaf::common - Rust
\ No newline at end of file
diff --git a/deaf/common/enum.PHType.html b/deaf/common/enum.PHType.html
index 8e3c3e1..bf674bb 100644
--- a/deaf/common/enum.PHType.html
+++ b/deaf/common/enum.PHType.html
@@ -1,4 +1,4 @@
-PHType in deaf::common - Rust
\ No newline at end of file
diff --git a/deaf/common/enum.SHFlags.html b/deaf/common/enum.SHFlags.html
index 6f73fd7..b5906d9 100644
--- a/deaf/common/enum.SHFlags.html
+++ b/deaf/common/enum.SHFlags.html
@@ -1,4 +1,4 @@
-SHFlags in deaf::common - Rust
\ No newline at end of file
diff --git a/deaf/common/enum.SHType.html b/deaf/common/enum.SHType.html
index fadaf45..b1a2f0d 100644
--- a/deaf/common/enum.SHType.html
+++ b/deaf/common/enum.SHType.html
@@ -1,4 +1,4 @@
-SHType in deaf::common - Rust
\ No newline at end of file
diff --git a/deaf/common/enum.STBind.html b/deaf/common/enum.STBind.html
index 7aa21e9..f098aec 100644
--- a/deaf/common/enum.STBind.html
+++ b/deaf/common/enum.STBind.html
@@ -1,23 +1,24 @@
-STBind in deaf::common - Rust
\ No newline at end of file
diff --git a/deaf/common/enum.STType.html b/deaf/common/enum.STType.html
index a89fe81..b210bb4 100644
--- a/deaf/common/enum.STType.html
+++ b/deaf/common/enum.STType.html
@@ -1,4 +1,4 @@
-STType in deaf::common - Rust
\ No newline at end of file
diff --git a/deaf/common/enum.STVisibility.html b/deaf/common/enum.STVisibility.html
new file mode 100644
index 0000000..5438a84
--- /dev/null
+++ b/deaf/common/enum.STVisibility.html
@@ -0,0 +1,28 @@
+STVisibility in deaf::common - Rust
\ No newline at end of file
diff --git a/deaf/common/enum.SectionType.html b/deaf/common/enum.SectionType.html
index 272f908..1128d44 100644
--- a/deaf/common/enum.SectionType.html
+++ b/deaf/common/enum.SectionType.html
@@ -1,4 +1,4 @@
-SectionType in deaf::common - Rust
\ No newline at end of file
diff --git a/deaf/common/enum.Width.html b/deaf/common/enum.Width.html
index 2ec7413..2c521f9 100644
--- a/deaf/common/enum.Width.html
+++ b/deaf/common/enum.Width.html
@@ -1,4 +1,4 @@
-Width in deaf::common - Rust
\ No newline at end of file
diff --git a/deaf/common/index.html b/deaf/common/index.html
index 464bf1a..ce031d7 100644
--- a/deaf/common/index.html
+++ b/deaf/common/index.html
@@ -1,6 +1,6 @@
-deaf::common - Rust
Trait to add an update function to
structs that can be updated.
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.ADDRESS.html b/deaf/common/ranges/constant.ADDRESS.html
index 5080cf3..1f4961b 100644
--- a/deaf/common/ranges/constant.ADDRESS.html
+++ b/deaf/common/ranges/constant.ADDRESS.html
@@ -1 +1 @@
-ADDRESS in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.BLOOMSHIFT.html b/deaf/common/ranges/constant.BLOOMSHIFT.html
index 0686bb6..4ae821b 100644
--- a/deaf/common/ranges/constant.BLOOMSHIFT.html
+++ b/deaf/common/ranges/constant.BLOOMSHIFT.html
@@ -1 +1 @@
-BLOOMSHIFT in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.BLOOMSIZE.html b/deaf/common/ranges/constant.BLOOMSIZE.html
index 642080b..ac0a5e3 100644
--- a/deaf/common/ranges/constant.BLOOMSIZE.html
+++ b/deaf/common/ranges/constant.BLOOMSIZE.html
@@ -1 +1 @@
-BLOOMSIZE in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.EI_ABIVERSION.html b/deaf/common/ranges/constant.EI_ABIVERSION.html
index fe3f5b2..f2469c5 100644
--- a/deaf/common/ranges/constant.EI_ABIVERSION.html
+++ b/deaf/common/ranges/constant.EI_ABIVERSION.html
@@ -1 +1 @@
-EI_ABIVERSION in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.EI_CLASS.html b/deaf/common/ranges/constant.EI_CLASS.html
index c1415f8..b3bfd6b 100644
--- a/deaf/common/ranges/constant.EI_CLASS.html
+++ b/deaf/common/ranges/constant.EI_CLASS.html
@@ -1 +1 @@
-EI_CLASS in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.EI_DATA.html b/deaf/common/ranges/constant.EI_DATA.html
index c58d15a..8f9ff5b 100644
--- a/deaf/common/ranges/constant.EI_DATA.html
+++ b/deaf/common/ranges/constant.EI_DATA.html
@@ -1 +1 @@
-EI_DATA in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.EI_KEY.html b/deaf/common/ranges/constant.EI_KEY.html
index 6a0b49d..1a2ef75 100644
--- a/deaf/common/ranges/constant.EI_KEY.html
+++ b/deaf/common/ranges/constant.EI_KEY.html
@@ -1 +1 @@
-EI_KEY in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.EI_MAGIC.html b/deaf/common/ranges/constant.EI_MAGIC.html
index 7f6784d..a6d9606 100644
--- a/deaf/common/ranges/constant.EI_MAGIC.html
+++ b/deaf/common/ranges/constant.EI_MAGIC.html
@@ -1 +1 @@
-EI_MAGIC in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.EI_OSABI.html b/deaf/common/ranges/constant.EI_OSABI.html
index e640469..3cae935 100644
--- a/deaf/common/ranges/constant.EI_OSABI.html
+++ b/deaf/common/ranges/constant.EI_OSABI.html
@@ -1 +1 @@
-EI_OSABI in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.EI_PAD.html b/deaf/common/ranges/constant.EI_PAD.html
index 6ff3552..911c36c 100644
--- a/deaf/common/ranges/constant.EI_PAD.html
+++ b/deaf/common/ranges/constant.EI_PAD.html
@@ -1 +1 @@
-EI_PAD in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.EI_VERSION.html b/deaf/common/ranges/constant.EI_VERSION.html
index 8c65a61..15ae04b 100644
--- a/deaf/common/ranges/constant.EI_VERSION.html
+++ b/deaf/common/ranges/constant.EI_VERSION.html
@@ -1 +1 @@
-EI_VERSION in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.E_EHSIZE.html b/deaf/common/ranges/constant.E_EHSIZE.html
index abecd70..2eb4d97 100644
--- a/deaf/common/ranges/constant.E_EHSIZE.html
+++ b/deaf/common/ranges/constant.E_EHSIZE.html
@@ -1 +1 @@
-E_EHSIZE in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.E_ENTRY.html b/deaf/common/ranges/constant.E_ENTRY.html
index e549158..a195618 100644
--- a/deaf/common/ranges/constant.E_ENTRY.html
+++ b/deaf/common/ranges/constant.E_ENTRY.html
@@ -1 +1 @@
-E_ENTRY in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.E_FLAGS.html b/deaf/common/ranges/constant.E_FLAGS.html
index ad185f2..7d6fd15 100644
--- a/deaf/common/ranges/constant.E_FLAGS.html
+++ b/deaf/common/ranges/constant.E_FLAGS.html
@@ -1 +1 @@
-E_FLAGS in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.E_MACHINE.html b/deaf/common/ranges/constant.E_MACHINE.html
index f6e5de2..0c66fef 100644
--- a/deaf/common/ranges/constant.E_MACHINE.html
+++ b/deaf/common/ranges/constant.E_MACHINE.html
@@ -1 +1 @@
-E_MACHINE in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.E_PHENTSIZE.html b/deaf/common/ranges/constant.E_PHENTSIZE.html
index 1e22986..395bf8c 100644
--- a/deaf/common/ranges/constant.E_PHENTSIZE.html
+++ b/deaf/common/ranges/constant.E_PHENTSIZE.html
@@ -1 +1 @@
-E_PHENTSIZE in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.E_PHNUM.html b/deaf/common/ranges/constant.E_PHNUM.html
index 51de251..0790a33 100644
--- a/deaf/common/ranges/constant.E_PHNUM.html
+++ b/deaf/common/ranges/constant.E_PHNUM.html
@@ -1 +1 @@
-E_PHNUM in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.E_PHOFF.html b/deaf/common/ranges/constant.E_PHOFF.html
index cbec199..778607d 100644
--- a/deaf/common/ranges/constant.E_PHOFF.html
+++ b/deaf/common/ranges/constant.E_PHOFF.html
@@ -1 +1 @@
-E_PHOFF in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.E_SHENTSIZE.html b/deaf/common/ranges/constant.E_SHENTSIZE.html
index 9de64ab..6a42914 100644
--- a/deaf/common/ranges/constant.E_SHENTSIZE.html
+++ b/deaf/common/ranges/constant.E_SHENTSIZE.html
@@ -1 +1 @@
-E_SHENTSIZE in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.E_SHNUM.html b/deaf/common/ranges/constant.E_SHNUM.html
index 287c657..706b375 100644
--- a/deaf/common/ranges/constant.E_SHNUM.html
+++ b/deaf/common/ranges/constant.E_SHNUM.html
@@ -1 +1 @@
-E_SHNUM in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.E_SHOFF.html b/deaf/common/ranges/constant.E_SHOFF.html
index 85cf633..65dd9f5 100644
--- a/deaf/common/ranges/constant.E_SHOFF.html
+++ b/deaf/common/ranges/constant.E_SHOFF.html
@@ -1 +1 @@
-E_SHOFF in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.E_SHSTRNDX.html b/deaf/common/ranges/constant.E_SHSTRNDX.html
index bc25f6d..59f8e08 100644
--- a/deaf/common/ranges/constant.E_SHSTRNDX.html
+++ b/deaf/common/ranges/constant.E_SHSTRNDX.html
@@ -1 +1 @@
-E_SHSTRNDX in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.E_TYPE.html b/deaf/common/ranges/constant.E_TYPE.html
index e99b98a..c1ea928 100644
--- a/deaf/common/ranges/constant.E_TYPE.html
+++ b/deaf/common/ranges/constant.E_TYPE.html
@@ -1 +1 @@
-E_TYPE in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.E_VERSION.html b/deaf/common/ranges/constant.E_VERSION.html
index c2372cd..6e71c88 100644
--- a/deaf/common/ranges/constant.E_VERSION.html
+++ b/deaf/common/ranges/constant.E_VERSION.html
@@ -1 +1 @@
-E_VERSION in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.NBUCKETS.html b/deaf/common/ranges/constant.NBUCKETS.html
index f6bacf4..48658f4 100644
--- a/deaf/common/ranges/constant.NBUCKETS.html
+++ b/deaf/common/ranges/constant.NBUCKETS.html
@@ -1 +1 @@
-NBUCKETS in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.NCHAIN.html b/deaf/common/ranges/constant.NCHAIN.html
index 360d30d..30bf10e 100644
--- a/deaf/common/ranges/constant.NCHAIN.html
+++ b/deaf/common/ranges/constant.NCHAIN.html
@@ -1 +1 @@
-NCHAIN in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.P_ALIGN.html b/deaf/common/ranges/constant.P_ALIGN.html
index 012d798..1293636 100644
--- a/deaf/common/ranges/constant.P_ALIGN.html
+++ b/deaf/common/ranges/constant.P_ALIGN.html
@@ -1 +1 @@
-P_ALIGN in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.P_FILESZ.html b/deaf/common/ranges/constant.P_FILESZ.html
index fb45c01..9b9f895 100644
--- a/deaf/common/ranges/constant.P_FILESZ.html
+++ b/deaf/common/ranges/constant.P_FILESZ.html
@@ -1 +1 @@
-P_FILESZ in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.P_FLAGS.html b/deaf/common/ranges/constant.P_FLAGS.html
index b06f93d..1316ed3 100644
--- a/deaf/common/ranges/constant.P_FLAGS.html
+++ b/deaf/common/ranges/constant.P_FLAGS.html
@@ -1 +1 @@
-P_FLAGS in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.P_MEMSZ.html b/deaf/common/ranges/constant.P_MEMSZ.html
index cb4e33a..6275a0a 100644
--- a/deaf/common/ranges/constant.P_MEMSZ.html
+++ b/deaf/common/ranges/constant.P_MEMSZ.html
@@ -1 +1 @@
-P_MEMSZ in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.P_OFFSET.html b/deaf/common/ranges/constant.P_OFFSET.html
index 5086ae4..ee6b8c9 100644
--- a/deaf/common/ranges/constant.P_OFFSET.html
+++ b/deaf/common/ranges/constant.P_OFFSET.html
@@ -1 +1 @@
-P_OFFSET in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.P_PADDR.html b/deaf/common/ranges/constant.P_PADDR.html
index 93d7c10..a0abd54 100644
--- a/deaf/common/ranges/constant.P_PADDR.html
+++ b/deaf/common/ranges/constant.P_PADDR.html
@@ -1 +1 @@
-P_PADDR in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.P_TYPE.html b/deaf/common/ranges/constant.P_TYPE.html
index 8038507..7480fc5 100644
--- a/deaf/common/ranges/constant.P_TYPE.html
+++ b/deaf/common/ranges/constant.P_TYPE.html
@@ -1 +1 @@
-P_TYPE in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.P_VADDR.html b/deaf/common/ranges/constant.P_VADDR.html
index f2b827b..b470888 100644
--- a/deaf/common/ranges/constant.P_VADDR.html
+++ b/deaf/common/ranges/constant.P_VADDR.html
@@ -1 +1 @@
-P_VADDR in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.RT_ADDEND.html b/deaf/common/ranges/constant.RT_ADDEND.html
index 1909e51..5fb1261 100644
--- a/deaf/common/ranges/constant.RT_ADDEND.html
+++ b/deaf/common/ranges/constant.RT_ADDEND.html
@@ -1 +1 @@
-RT_ADDEND in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.RT_INFO.html b/deaf/common/ranges/constant.RT_INFO.html
index 4be750b..7bb135c 100644
--- a/deaf/common/ranges/constant.RT_INFO.html
+++ b/deaf/common/ranges/constant.RT_INFO.html
@@ -1 +1 @@
-RT_INFO in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.RT_OFFSET.html b/deaf/common/ranges/constant.RT_OFFSET.html
index 0bfbde4..47b5fa5 100644
--- a/deaf/common/ranges/constant.RT_OFFSET.html
+++ b/deaf/common/ranges/constant.RT_OFFSET.html
@@ -1 +1 @@
-RT_OFFSET in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.SH_ADDR.html b/deaf/common/ranges/constant.SH_ADDR.html
index d4db543..1bf1006 100644
--- a/deaf/common/ranges/constant.SH_ADDR.html
+++ b/deaf/common/ranges/constant.SH_ADDR.html
@@ -1 +1 @@
-SH_ADDR in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.SH_ADDRALIGN.html b/deaf/common/ranges/constant.SH_ADDRALIGN.html
index 3c82539..901c638 100644
--- a/deaf/common/ranges/constant.SH_ADDRALIGN.html
+++ b/deaf/common/ranges/constant.SH_ADDRALIGN.html
@@ -1 +1 @@
-SH_ADDRALIGN in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.SH_ENTSIZE.html b/deaf/common/ranges/constant.SH_ENTSIZE.html
index d4b6bb7..cd75f3b 100644
--- a/deaf/common/ranges/constant.SH_ENTSIZE.html
+++ b/deaf/common/ranges/constant.SH_ENTSIZE.html
@@ -1 +1 @@
-SH_ENTSIZE in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.SH_FLAGS.html b/deaf/common/ranges/constant.SH_FLAGS.html
index d7fcf16..387735e 100644
--- a/deaf/common/ranges/constant.SH_FLAGS.html
+++ b/deaf/common/ranges/constant.SH_FLAGS.html
@@ -1 +1 @@
-SH_FLAGS in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.SH_INFO.html b/deaf/common/ranges/constant.SH_INFO.html
index cd9e144..29987c3 100644
--- a/deaf/common/ranges/constant.SH_INFO.html
+++ b/deaf/common/ranges/constant.SH_INFO.html
@@ -1 +1 @@
-SH_INFO in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.SH_LINK.html b/deaf/common/ranges/constant.SH_LINK.html
index f586a6c..4cce49d 100644
--- a/deaf/common/ranges/constant.SH_LINK.html
+++ b/deaf/common/ranges/constant.SH_LINK.html
@@ -1 +1 @@
-SH_LINK in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.SH_NAME.html b/deaf/common/ranges/constant.SH_NAME.html
index c05c5e3..947cd68 100644
--- a/deaf/common/ranges/constant.SH_NAME.html
+++ b/deaf/common/ranges/constant.SH_NAME.html
@@ -1 +1 @@
-SH_NAME in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.SH_OFFSET.html b/deaf/common/ranges/constant.SH_OFFSET.html
index 1a083e1..c0f2b45 100644
--- a/deaf/common/ranges/constant.SH_OFFSET.html
+++ b/deaf/common/ranges/constant.SH_OFFSET.html
@@ -1 +1 @@
-SH_OFFSET in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.SH_SIZE.html b/deaf/common/ranges/constant.SH_SIZE.html
index eafd414..f677da9 100644
--- a/deaf/common/ranges/constant.SH_SIZE.html
+++ b/deaf/common/ranges/constant.SH_SIZE.html
@@ -1 +1 @@
-SH_SIZE in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.SH_TYPE.html b/deaf/common/ranges/constant.SH_TYPE.html
index 9d1edda..9b99f38 100644
--- a/deaf/common/ranges/constant.SH_TYPE.html
+++ b/deaf/common/ranges/constant.SH_TYPE.html
@@ -1 +1 @@
-SH_TYPE in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.ST_INFO.html b/deaf/common/ranges/constant.ST_INFO.html
index 070bbd4..9d60f19 100644
--- a/deaf/common/ranges/constant.ST_INFO.html
+++ b/deaf/common/ranges/constant.ST_INFO.html
@@ -1 +1 @@
-ST_INFO in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.ST_NAME.html b/deaf/common/ranges/constant.ST_NAME.html
index 1c4a7f0..9a35f5f 100644
--- a/deaf/common/ranges/constant.ST_NAME.html
+++ b/deaf/common/ranges/constant.ST_NAME.html
@@ -1 +1 @@
-ST_NAME in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.ST_OTHER.html b/deaf/common/ranges/constant.ST_OTHER.html
index 7ba68b9..e1bf2d7 100644
--- a/deaf/common/ranges/constant.ST_OTHER.html
+++ b/deaf/common/ranges/constant.ST_OTHER.html
@@ -1 +1 @@
-ST_OTHER in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.ST_SHNDX.html b/deaf/common/ranges/constant.ST_SHNDX.html
index 5f96e61..b627e9c 100644
--- a/deaf/common/ranges/constant.ST_SHNDX.html
+++ b/deaf/common/ranges/constant.ST_SHNDX.html
@@ -1 +1 @@
-ST_SHNDX in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.ST_SIZE.html b/deaf/common/ranges/constant.ST_SIZE.html
index 9359129..a5aeac9 100644
--- a/deaf/common/ranges/constant.ST_SIZE.html
+++ b/deaf/common/ranges/constant.ST_SIZE.html
@@ -1 +1 @@
-ST_SIZE in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.ST_VALUE.html b/deaf/common/ranges/constant.ST_VALUE.html
index e5cb8aa..0d953b6 100644
--- a/deaf/common/ranges/constant.ST_VALUE.html
+++ b/deaf/common/ranges/constant.ST_VALUE.html
@@ -1 +1 @@
-ST_VALUE in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.SYMOFFSET.html b/deaf/common/ranges/constant.SYMOFFSET.html
index e2f5d51..eeb95f5 100644
--- a/deaf/common/ranges/constant.SYMOFFSET.html
+++ b/deaf/common/ranges/constant.SYMOFFSET.html
@@ -1 +1 @@
-SYMOFFSET in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.VALUE4.html b/deaf/common/ranges/constant.VALUE4.html
index 24ac5d1..13a9c13 100644
--- a/deaf/common/ranges/constant.VALUE4.html
+++ b/deaf/common/ranges/constant.VALUE4.html
@@ -1 +1 @@
-VALUE4 in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/constant.VALUE8.html b/deaf/common/ranges/constant.VALUE8.html
index bef87a4..719b274 100644
--- a/deaf/common/ranges/constant.VALUE8.html
+++ b/deaf/common/ranges/constant.VALUE8.html
@@ -1 +1 @@
-VALUE8 in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/index.html b/deaf/common/ranges/index.html
index 5fae66c..2ff3620 100644
--- a/deaf/common/ranges/index.html
+++ b/deaf/common/ranges/index.html
@@ -1,2 +1,2 @@
-deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/ranges/struct.Ranges.html b/deaf/common/ranges/struct.Ranges.html
index f7cb9e6..374183c 100644
--- a/deaf/common/ranges/struct.Ranges.html
+++ b/deaf/common/ranges/struct.Ranges.html
@@ -1,25 +1,25 @@
-Ranges in deaf::common::ranges - Rust
\ No newline at end of file
diff --git a/deaf/common/sidebar-items.js b/deaf/common/sidebar-items.js
index 11aa7d1..c6e5c66 100644
--- a/deaf/common/sidebar-items.js
+++ b/deaf/common/sidebar-items.js
@@ -1 +1 @@
-window.SIDEBAR_ITEMS = {"enum":["ByteDelimiter","Layout","PHType","SHFlags","SHType","STBind","STType","SectionType","Width"],"mod":["ranges"],"struct":["All","ByteIter","Field","Item","ItemArray","Update"],"trait":["Convert","FromBytes","IntoBytes","T32Value","T64Value","TOutValue","Updateable"]};
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"enum":["ByteDelimiter","Layout","PHType","SHFlags","SHType","STBind","STType","STVisibility","SectionType","Width"],"mod":["ranges"],"struct":["All","ByteIter","Field","Item","ItemArray","Update"],"trait":["Convert","FromBytes","IntoBytes","T32Value","T64Value","TOutValue","Updateable"]};
\ No newline at end of file
diff --git a/deaf/common/struct.All.html b/deaf/common/struct.All.html
index a66a17f..6357301 100644
--- a/deaf/common/struct.All.html
+++ b/deaf/common/struct.All.html
@@ -1,12 +1,12 @@
-All in deaf::common - Rust
\ No newline at end of file
diff --git a/deaf/common/struct.ByteIter.html b/deaf/common/struct.ByteIter.html
index 5a4978c..1c40280 100644
--- a/deaf/common/struct.ByteIter.html
+++ b/deaf/common/struct.ByteIter.html
@@ -1,196 +1,196 @@
-ByteIter in deaf::common - Rust
Creates an iterator which can use the peek and peek_mut methods
to look at the next element of the iterator without consuming it. See
-their documentation for more information. Read more
🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate,
-such that all those that return true precede all those that return false. Read more
🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate,
+such that all those that return true precede all those that return false. Read more
🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the
-closure returns a failure, the failure is propagated back to the caller immediately. Read more
🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the
+closure returns a failure, the failure is propagated back to the caller immediately. Read more
Lexicographically compares the PartialOrd elements of
+this Iterator with those of another. The comparison works like short-circuit
evaluation, returning a result without comparing the remaining elements.
-As soon as an order can be determined, the evaluation stops and a result is returned. Read more
\ No newline at end of file
diff --git a/deaf/common/struct.Field.html b/deaf/common/struct.Field.html
index 889f013..ee9b1b1 100644
--- a/deaf/common/struct.Field.html
+++ b/deaf/common/struct.Field.html
@@ -1,14 +1,14 @@
-Field in deaf::common - Rust
Internally maintains ranges for various widths (32- or 64-bit)
and layout (little- or big-endian) and allows bytes to be read
as values or values to be written to a byte buffer.
\ No newline at end of file
diff --git a/deaf/common/struct.Item.html b/deaf/common/struct.Item.html
index 198d19e..ee075e9 100644
--- a/deaf/common/struct.Item.html
+++ b/deaf/common/struct.Item.html
@@ -1,4 +1,4 @@
-Item in deaf::common - Rust
\ No newline at end of file
diff --git a/deaf/common/struct.ItemArray.html b/deaf/common/struct.ItemArray.html
index 84ab337..995a8e7 100644
--- a/deaf/common/struct.ItemArray.html
+++ b/deaf/common/struct.ItemArray.html
@@ -1,4 +1,4 @@
-ItemArray in deaf::common - Rust
\ No newline at end of file
diff --git a/deaf/common/struct.Update.html b/deaf/common/struct.Update.html
index 0748952..bcce6f3 100644
--- a/deaf/common/struct.Update.html
+++ b/deaf/common/struct.Update.html
@@ -1,17 +1,17 @@
-Update in deaf::common - Rust
\ No newline at end of file
diff --git a/deaf/common/trait.Convert.html b/deaf/common/trait.Convert.html
index 2fccda4..129e564 100644
--- a/deaf/common/trait.Convert.html
+++ b/deaf/common/trait.Convert.html
@@ -1,7 +1,7 @@
-Convert in deaf::common - Rust
Blanket implementation for NOP conversions to self
\ No newline at end of file
diff --git a/deaf/common/trait.FromBytes.html b/deaf/common/trait.FromBytes.html
index dec4a06..d4ad40e 100644
--- a/deaf/common/trait.FromBytes.html
+++ b/deaf/common/trait.FromBytes.html
@@ -1,7 +1,7 @@
-FromBytes in deaf::common - Rust
\ No newline at end of file
diff --git a/deaf/common/trait.IntoBytes.html b/deaf/common/trait.IntoBytes.html
index adacac5..a63c775 100644
--- a/deaf/common/trait.IntoBytes.html
+++ b/deaf/common/trait.IntoBytes.html
@@ -1,6 +1,6 @@
-IntoBytes in deaf::common - Rust
\ No newline at end of file
diff --git a/deaf/common/trait.T32Value.html b/deaf/common/trait.T32Value.html
index 88f693e..439d551 100644
--- a/deaf/common/trait.T32Value.html
+++ b/deaf/common/trait.T32Value.html
@@ -1 +1 @@
-T32Value in deaf::common - Rust
\ No newline at end of file
diff --git a/deaf/common/trait.T64Value.html b/deaf/common/trait.T64Value.html
index c52857a..1f9e158 100644
--- a/deaf/common/trait.T64Value.html
+++ b/deaf/common/trait.T64Value.html
@@ -1 +1 @@
-T64Value in deaf::common - Rust
\ No newline at end of file
diff --git a/deaf/common/trait.TOutValue.html b/deaf/common/trait.TOutValue.html
index f3200d3..30178d1 100644
--- a/deaf/common/trait.TOutValue.html
+++ b/deaf/common/trait.TOutValue.html
@@ -1 +1 @@
-TOutValue in deaf::common - Rust
\ No newline at end of file
diff --git a/deaf/common/trait.Updateable.html b/deaf/common/trait.Updateable.html
index 8f25cf2..0782733 100644
--- a/deaf/common/trait.Updateable.html
+++ b/deaf/common/trait.Updateable.html
@@ -1,14 +1,14 @@
-Updateable in deaf::common - Rust
\ No newline at end of file
diff --git a/deaf/errors/enum.Error.html b/deaf/errors/enum.Error.html
index 2e88823..5646096 100644
--- a/deaf/errors/enum.Error.html
+++ b/deaf/errors/enum.Error.html
@@ -1,21 +1,22 @@
-Error in deaf::errors - Rust
\ No newline at end of file
diff --git a/deaf/errors/index.html b/deaf/errors/index.html
index a2014fd..ae1b7f4 100644
--- a/deaf/errors/index.html
+++ b/deaf/errors/index.html
@@ -1,2 +1,2 @@
-deaf::errors - Rust
\ No newline at end of file
diff --git a/deaf/errors/type.Result.html b/deaf/errors/type.Result.html
index 261bdf1..be20aa5 100644
--- a/deaf/errors/type.Result.html
+++ b/deaf/errors/type.Result.html
@@ -1,2 +1,2 @@
-Result in deaf::errors - Rust
\ No newline at end of file
diff --git a/deaf/headers/index.html b/deaf/headers/index.html
index 77479c1..c80e15d 100644
--- a/deaf/headers/index.html
+++ b/deaf/headers/index.html
@@ -1,2 +1,2 @@
-deaf::headers - Rust
\ No newline at end of file
diff --git a/deaf/headers/struct.FileHeader.html b/deaf/headers/struct.FileHeader.html
index 44f5171..1a03add 100644
--- a/deaf/headers/struct.FileHeader.html
+++ b/deaf/headers/struct.FileHeader.html
@@ -1,63 +1,63 @@
-FileHeader in deaf::headers - Rust
\ No newline at end of file
diff --git a/deaf/headers/struct.ProgramHeader.html b/deaf/headers/struct.ProgramHeader.html
index d0d9cda..624b5c6 100644
--- a/deaf/headers/struct.ProgramHeader.html
+++ b/deaf/headers/struct.ProgramHeader.html
@@ -1,55 +1,55 @@
-ProgramHeader in deaf::headers - Rust
\ No newline at end of file
diff --git a/deaf/headers/struct.SectionHeader.html b/deaf/headers/struct.SectionHeader.html
index 76b654a..5e42866 100644
--- a/deaf/headers/struct.SectionHeader.html
+++ b/deaf/headers/struct.SectionHeader.html
@@ -1,58 +1,58 @@
-SectionHeader in deaf::headers - Rust
\ No newline at end of file
diff --git a/deaf/headers/struct.SectionHeaderData.html b/deaf/headers/struct.SectionHeaderData.html
index 04ac17a..9f9e73e 100644
--- a/deaf/headers/struct.SectionHeaderData.html
+++ b/deaf/headers/struct.SectionHeaderData.html
@@ -1,24 +1,24 @@
-SectionHeaderData in deaf::headers - Rust
\ No newline at end of file
diff --git a/deaf/index.html b/deaf/index.html
index 70817af..9e7d099 100644
--- a/deaf/index.html
+++ b/deaf/index.html
@@ -1,4 +1,4 @@
-deaf - Rust
\ No newline at end of file
diff --git a/deaf/struct.Section.html b/deaf/struct.Section.html
index c1bea36..6266cf0 100644
--- a/deaf/struct.Section.html
+++ b/deaf/struct.Section.html
@@ -1,29 +1,29 @@
-Section in deaf - Rust
\ No newline at end of file
diff --git a/deaf/struct.Segment.html b/deaf/struct.Segment.html
index 582398b..c5b328f 100644
--- a/deaf/struct.Segment.html
+++ b/deaf/struct.Segment.html
@@ -1,13 +1,13 @@
-Segment in deaf - Rust
\ No newline at end of file
diff --git a/deaf/tables/index.html b/deaf/tables/index.html
index f612d53..8be3ab2 100644
--- a/deaf/tables/index.html
+++ b/deaf/tables/index.html
@@ -1,5 +1,5 @@
-deaf::tables - Rust
Various types of tables and associated table items
Each table type can be created (using TryFrom) from an appropriate section
struct. TryFrom will fail if the section isn’t the correct type (e.g. non-SHT_SYMTAB
section header cannot be converted into a Table<SymbolItem> struct).
-
-
-
\ No newline at end of file
diff --git a/deaf/tables/sidebar-items.js b/deaf/tables/sidebar-items.js
index 7b85f3d..e5226e5 100644
--- a/deaf/tables/sidebar-items.js
+++ b/deaf/tables/sidebar-items.js
@@ -1 +1 @@
-window.SIDEBAR_ITEMS = {"struct":["ArrayItem","RelItem","RelaItem","RelocationInfo","StringItem","SymbolInfo","SymbolItem","Table","TableMut"],"trait":["TableItem","TableView"],"type":["Array","ArrayMut","RelTable","RelTableMut","RelaTable","RelaTableMut","StringTable","StringTableMut","SymbolTable","SymbolTableMut"]};
\ No newline at end of file
+window.SIDEBAR_ITEMS = {"struct":["ArrayItem","RelItem","RelaItem","RelocationInfo","StringItem","Table","TableMut"],"trait":["TableItem","TableView"],"type":["Array","ArrayMut","RelTable","RelTableMut","RelaTable","RelaTableMut","StringTable","StringTableMut","SymbolTable","SymbolTableMut"]};
\ No newline at end of file
diff --git a/deaf/tables/struct.ArrayItem.html b/deaf/tables/struct.ArrayItem.html
index 8f70524..bf5f416 100644
--- a/deaf/tables/struct.ArrayItem.html
+++ b/deaf/tables/struct.ArrayItem.html
@@ -1,18 +1,18 @@
-ArrayItem in deaf::tables - Rust
\ No newline at end of file
diff --git a/deaf/tables/struct.RelItem.html b/deaf/tables/struct.RelItem.html
index d0e650e..d4d8e36 100644
--- a/deaf/tables/struct.RelItem.html
+++ b/deaf/tables/struct.RelItem.html
@@ -1,20 +1,20 @@
-RelItem in deaf::tables - Rust
\ No newline at end of file
diff --git a/deaf/tables/struct.RelaItem.html b/deaf/tables/struct.RelaItem.html
index 1cbfe1a..fe8ac73 100644
--- a/deaf/tables/struct.RelaItem.html
+++ b/deaf/tables/struct.RelaItem.html
@@ -1,22 +1,22 @@
-RelaItem in deaf::tables - Rust
\ No newline at end of file
diff --git a/deaf/tables/struct.RelocationInfo.html b/deaf/tables/struct.RelocationInfo.html
index 1e65758..4ecf195 100644
--- a/deaf/tables/struct.RelocationInfo.html
+++ b/deaf/tables/struct.RelocationInfo.html
@@ -1,20 +1,20 @@
-RelocationInfo in deaf::tables - Rust
\ No newline at end of file
diff --git a/deaf/tables/struct.StringItem.html b/deaf/tables/struct.StringItem.html
index 9fdd625..ce28a8c 100644
--- a/deaf/tables/struct.StringItem.html
+++ b/deaf/tables/struct.StringItem.html
@@ -1,26 +1,26 @@
-StringItem in deaf::tables - Rust
\ No newline at end of file
diff --git a/deaf/tables/struct.SymbolInfo.html b/deaf/tables/struct.SymbolInfo.html
deleted file mode 100644
index bcfd082..0000000
--- a/deaf/tables/struct.SymbolInfo.html
+++ /dev/null
@@ -1,21 +0,0 @@
-SymbolInfo in deaf::tables - Rust
\ No newline at end of file
diff --git a/deaf/tables/struct.SymbolItem.html b/deaf/tables/struct.SymbolItem.html
deleted file mode 100644
index 1e1cd92..0000000
--- a/deaf/tables/struct.SymbolItem.html
+++ /dev/null
@@ -1,27 +0,0 @@
-SymbolItem in deaf::tables - Rust
\ No newline at end of file
diff --git a/deaf/tables/struct.Table.html b/deaf/tables/struct.Table.html
index 569fbc8..1c8695b 100644
--- a/deaf/tables/struct.Table.html
+++ b/deaf/tables/struct.Table.html
@@ -1,21 +1,21 @@
-Table in deaf::tables - Rust
\ No newline at end of file
diff --git a/deaf/tables/struct.TableMut.html b/deaf/tables/struct.TableMut.html
index 1f75db6..be4f645 100644
--- a/deaf/tables/struct.TableMut.html
+++ b/deaf/tables/struct.TableMut.html
@@ -1,25 +1,25 @@
-TableMut in deaf::tables - Rust
\ No newline at end of file
diff --git a/deaf/tables/trait.TableItem.html b/deaf/tables/trait.TableItem.html
index f643ca9..2950ca8 100644
--- a/deaf/tables/trait.TableItem.html
+++ b/deaf/tables/trait.TableItem.html
@@ -1,22 +1,22 @@
-TableItem in deaf::tables - Rust
\ No newline at end of file
diff --git a/deaf/tables/trait.TableView.html b/deaf/tables/trait.TableView.html
index 01e5e46..3becd5d 100644
--- a/deaf/tables/trait.TableView.html
+++ b/deaf/tables/trait.TableView.html
@@ -1,35 +1,37 @@
-TableView in deaf::tables - Rust
\ No newline at end of file
diff --git a/deaf/tables/type.Array.html b/deaf/tables/type.Array.html
index 727dd1d..a34e1ae 100644
--- a/deaf/tables/type.Array.html
+++ b/deaf/tables/type.Array.html
@@ -1 +1 @@
-Array in deaf::tables - Rust
\ No newline at end of file
diff --git a/deaf/tables/type.ArrayMut.html b/deaf/tables/type.ArrayMut.html
index e0a75fd..86a43ec 100644
--- a/deaf/tables/type.ArrayMut.html
+++ b/deaf/tables/type.ArrayMut.html
@@ -1 +1 @@
-ArrayMut in deaf::tables - Rust
\ No newline at end of file
diff --git a/deaf/tables/type.RelTable.html b/deaf/tables/type.RelTable.html
index 20a4482..4ac3020 100644
--- a/deaf/tables/type.RelTable.html
+++ b/deaf/tables/type.RelTable.html
@@ -1 +1 @@
-RelTable in deaf::tables - Rust
\ No newline at end of file
diff --git a/deaf/tables/type.RelTableMut.html b/deaf/tables/type.RelTableMut.html
index 068e0ab..7fc0809 100644
--- a/deaf/tables/type.RelTableMut.html
+++ b/deaf/tables/type.RelTableMut.html
@@ -1 +1 @@
-RelTableMut in deaf::tables - Rust
\ No newline at end of file
diff --git a/deaf/tables/type.RelaTable.html b/deaf/tables/type.RelaTable.html
index b25ccd1..161c468 100644
--- a/deaf/tables/type.RelaTable.html
+++ b/deaf/tables/type.RelaTable.html
@@ -1 +1 @@
-RelaTable in deaf::tables - Rust
\ No newline at end of file
diff --git a/deaf/tables/type.RelaTableMut.html b/deaf/tables/type.RelaTableMut.html
index 23967f5..0291a6f 100644
--- a/deaf/tables/type.RelaTableMut.html
+++ b/deaf/tables/type.RelaTableMut.html
@@ -1 +1 @@
-RelaTableMut in deaf::tables - Rust
\ No newline at end of file
diff --git a/deaf/tables/type.StringTable.html b/deaf/tables/type.StringTable.html
index 9b56a49..1a5839e 100644
--- a/deaf/tables/type.StringTable.html
+++ b/deaf/tables/type.StringTable.html
@@ -1 +1 @@
-StringTable in deaf::tables - Rust
\ No newline at end of file
diff --git a/deaf/tables/type.StringTableMut.html b/deaf/tables/type.StringTableMut.html
index fc39a9d..e35da35 100644
--- a/deaf/tables/type.StringTableMut.html
+++ b/deaf/tables/type.StringTableMut.html
@@ -1 +1 @@
-StringTableMut in deaf::tables - Rust
\ No newline at end of file
diff --git a/deaf/tables/type.SymbolTable.html b/deaf/tables/type.SymbolTable.html
index 22b4387..008354c 100644
--- a/deaf/tables/type.SymbolTable.html
+++ b/deaf/tables/type.SymbolTable.html
@@ -1 +1 @@
-SymbolTable in deaf::tables - Rust
\ No newline at end of file
diff --git a/deaf/tables/type.SymbolTableMut.html b/deaf/tables/type.SymbolTableMut.html
index b5d80cb..fbd8ce1 100644
--- a/deaf/tables/type.SymbolTableMut.html
+++ b/deaf/tables/type.SymbolTableMut.html
@@ -1 +1 @@
-SymbolTableMut in deaf::tables - Rust
pub type SymbolTableMut<'a> = TableMut<'a, Symbol>;
\ No newline at end of file
diff --git a/deaf/utilities/fn.read.html b/deaf/utilities/fn.read.html
index c355d4b..5fcab3c 100644
--- a/deaf/utilities/fn.read.html
+++ b/deaf/utilities/fn.read.html
@@ -1 +1 @@
-read in deaf::utilities - Rust
\ No newline at end of file
diff --git a/deaf/utilities/index.html b/deaf/utilities/index.html
index aebbc26..b1b5185 100644
--- a/deaf/utilities/index.html
+++ b/deaf/utilities/index.html
@@ -1,2 +1,2 @@
-deaf::utilities - Rust
\ No newline at end of file
diff --git a/implementors/core/clone/trait.Clone.js b/implementors/core/clone/trait.Clone.js
index 3cfa2d7..3ed9996 100644
--- a/implementors/core/clone/trait.Clone.js
+++ b/implementors/core/clone/trait.Clone.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"deaf":[["impl<T32, T64, Out> Clone for ItemArray<T32, T64, Out>where\n T32: T32Value<Out> + Clone,\n T64: T64Value<Out> + Clone,\n Out: TOutValue<T32, T64> + Clone,"],["impl Clone for SectionHeader"],["impl<T32, T64, Out> Clone for Field<T32, T64, Out>where\n T32: FromBytes + IntoBytes + Convert<Out> + Clone,\n T64: FromBytes + IntoBytes + Convert<Out> + Clone,\n Out: Convert<T32> + Convert<T64> + Debug + Clone,"],["impl Clone for SHType"],["impl Clone for StringItem"],["impl Clone for Width"],["impl Clone for SymbolItem"],["impl Clone for Section"],["impl Clone for STType"],["impl Clone for STBind"],["impl Clone for ArrayItem"],["impl Clone for Layout"],["impl Clone for RelItem"],["impl<T32, T64, Out> Clone for Item<T32, T64, Out>where\n T32: T32Value<Out> + Clone,\n T64: T64Value<Out> + Clone,\n Out: TOutValue<T32, T64> + Clone,"],["impl Clone for Ranges"],["impl Clone for SHFlags"],["impl Clone for RelaItem"],["impl Clone for SectionType"],["impl Clone for SymbolInfo"],["impl Clone for RelocationInfo"],["impl Clone for PHType"]]
+"deaf":[["impl Clone for STType"],["impl Clone for Layout"],["impl<T32, T64, Out> Clone for Item<T32, T64, Out>where\n T32: T32Value<Out> + Clone,\n T64: T64Value<Out> + Clone,\n Out: TOutValue<T32, T64> + Clone,"],["impl<T32, T64, Out> Clone for ItemArray<T32, T64, Out>where\n T32: T32Value<Out> + Clone,\n T64: T64Value<Out> + Clone,\n Out: TOutValue<T32, T64> + Clone,"],["impl Clone for Ranges"],["impl Clone for Width"],["impl Clone for SectionType"],["impl Clone for Section"],["impl Clone for StringItem"],["impl Clone for STBind"],["impl Clone for RelItem"],["impl Clone for RelaItem"],["impl Clone for ArrayItem"],["impl Clone for RelocationInfo"],["impl Clone for SHType"],["impl Clone for PHType"],["impl<T32, T64, Out> Clone for Field<T32, T64, Out>where\n T32: FromBytes + IntoBytes + Convert<Out> + Clone,\n T64: FromBytes + IntoBytes + Convert<Out> + Clone,\n Out: Convert<T32> + Convert<T64> + Debug + Clone,"],["impl Clone for SHFlags"],["impl Clone for SectionHeader"],["impl Clone for STVisibility"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/cmp/trait.PartialEq.js b/implementors/core/cmp/trait.PartialEq.js
index ca3244d..8fcab35 100644
--- a/implementors/core/cmp/trait.PartialEq.js
+++ b/implementors/core/cmp/trait.PartialEq.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"deaf":[["impl PartialEq<SHType> for SHType"],["impl PartialEq<PHType> for PHType"],["impl PartialEq<STType> for STType"],["impl PartialEq<STBind> for STBind"],["impl PartialEq<Width> for Width"],["impl PartialEq<StringItem> for StringItem"],["impl PartialEq<RelocationInfo> for RelocationInfo"],["impl PartialEq<SymbolInfo> for SymbolInfo"],["impl PartialEq<RelaItem> for RelaItem"],["impl PartialEq<ArrayItem> for ArrayItem"],["impl PartialEq<RelItem> for RelItem"],["impl<T32, T64, Out> PartialEq<Item<T32, T64, Out>> for Item<T32, T64, Out>where\n T32: T32Value<Out>,\n T64: T64Value<Out>,\n Out: TOutValue<T32, T64> + PartialEq,"],["impl PartialEq<SHFlags> for SHFlags"],["impl PartialEq<Layout> for Layout"],["impl PartialEq<SectionType> for SectionType"]]
+"deaf":[["impl PartialEq<SHFlags> for SHFlags"],["impl PartialEq<SectionType> for SectionType"],["impl PartialEq<RelItem> for RelItem"],["impl PartialEq<StringItem> for StringItem"],["impl PartialEq<STType> for STType"],["impl PartialEq<STBind> for STBind"],["impl PartialEq<SHType> for SHType"],["impl PartialEq<RelaItem> for RelaItem"],["impl PartialEq<PHType> for PHType"],["impl PartialEq<Width> for Width"],["impl PartialEq<STVisibility> for STVisibility"],["impl<T32, T64, Out> PartialEq<Item<T32, T64, Out>> for Item<T32, T64, Out>where\n T32: T32Value<Out>,\n T64: T64Value<Out>,\n Out: TOutValue<T32, T64> + PartialEq,"],["impl PartialEq<RelocationInfo> for RelocationInfo"],["impl PartialEq<Layout> for Layout"],["impl PartialEq<ArrayItem> for ArrayItem"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/convert/trait.From.js b/implementors/core/convert/trait.From.js
index 545de6d..6ee271c 100644
--- a/implementors/core/convert/trait.From.js
+++ b/implementors/core/convert/trait.From.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"deaf":[["impl From<NulError> for Error"],["impl From<SHType> for u32"],["impl From<Infallible> for Error"],["impl From<FromBytesWithNulError> for Error"],["impl From<Utf8Error> for Error"],["impl From<PHType> for u32"],["impl From<TryFromIntError> for Error"],["impl From<TryFromSliceError> for Error"],["impl From<i64> for ArrayItem"],["impl From<SectionType> for SHType"],["impl From<SectionHeaderData> for SectionHeader"],["impl<T> From<TryFromPrimitiveError<T>> for Errorwhere\n T: TryFromPrimitive,"],["impl From<u32> for SHType"],["impl From<Width> for u8"],["impl<'a, T> From<Table<'a, T>> for &'a Sectionwhere\n T: TableItem + Default,"],["impl From<Error> for Error"],["impl From<STType> for u8"],["impl<T> From<FromBitsError<T>> for Errorwhere\n T: BitFlag,\n T::Numeric: LowerHex,"],["impl From<SHType> for SectionType"],["impl From<Layout> for u8"],["impl From<IntoStringError> for Error"],["impl From<STBind> for u8"],["impl<'a, T> From<TableMut<'a, T>> for &'a mut Sectionwhere\n T: TableItem + Default,"],["impl<T> From<PoisonError<T>> for Error"],["impl<'a, T> From<TableMut<'a, T>> for Table<'a, T>where\n T: TableItem + Default,"]]
+"deaf":[["impl From<Width> for u8"],["impl From<Layout> for u8"],["impl From<STBind> for u8"],["impl<T> From<PoisonError<T>> for Error"],["impl From<u8> for STType"],["impl From<TryFromIntError> for Error"],["impl From<STVisibility> for u8"],["impl From<SectionType> for SHType"],["impl<T> From<FromBitsError<T>> for Errorwhere\n T: BitFlag,\n T::Numeric: LowerHex,"],["impl From<STType> for u8"],["impl From<u8> for STBind"],["impl From<i64> for ArrayItem"],["impl<'a, T> From<Table<'a, T>> for &'a Sectionwhere\n T: TableItem + Default,"],["impl<T> From<TryFromPrimitiveError<T>> for Errorwhere\n T: TryFromPrimitive,"],["impl From<NulError> for Error"],["impl From<u8> for STVisibility"],["impl From<PHType> for u32"],["impl<'a, T> From<TableMut<'a, T>> for &'a mut Sectionwhere\n T: TableItem + Default,"],["impl From<u32> for SHType"],["impl<'a, T> From<TableMut<'a, T>> for Table<'a, T>where\n T: TableItem + Default,"],["impl From<SectionHeaderData> for SectionHeader"],["impl From<SHType> for u32"],["impl From<TryFromSliceError> for Error"],["impl From<SHType> for SectionType"],["impl From<FromBytesWithNulError> for Error"],["impl From<IntoStringError> for Error"],["impl From<Error> for Error"],["impl From<Infallible> for Error"],["impl From<Utf8Error> for Error"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/convert/trait.Into.js b/implementors/core/convert/trait.Into.js
index e119986..9cd0712 100644
--- a/implementors/core/convert/trait.Into.js
+++ b/implementors/core/convert/trait.Into.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"deaf":[["impl Into<Range<usize>> for &Ranges"]]
+"deaf":[["impl Into<Range<usize>> for &Ranges"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/convert/trait.TryFrom.js b/implementors/core/convert/trait.TryFrom.js
index 8e844f1..2843c9f 100644
--- a/implementors/core/convert/trait.TryFrom.js
+++ b/implementors/core/convert/trait.TryFrom.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"deaf":[["impl<'a> TryFrom<&'a Section> for Table<'a, SymbolItem>"],["impl<'a> TryFrom<&'a mut Section> for TableMut<'a, RelItem>"],["impl<'a> TryFrom<&'a mut Section> for TableMut<'a, StringItem>"],["impl<'a> TryFrom<&'a mut Section> for TableMut<'a, SymbolItem>"],["impl TryFrom<u32> for PHType"],["impl TryFrom<u8> for Width"],["impl<'a> TryFrom<&'a Section> for Table<'a, StringItem>"],["impl TryFrom<u8> for Layout"],["impl<'a> TryFrom<&'a Section> for Table<'a, ArrayItem>"],["impl<'a> TryFrom<&'a mut Section> for TableMut<'a, ArrayItem>"],["impl<'a> TryFrom<&'a Section> for Table<'a, RelItem>"],["impl TryFrom<u8> for STBind"],["impl<'a> TryFrom<&'a mut Section> for TableMut<'a, RelaItem>"],["impl<'a> TryFrom<&'a Section> for Table<'a, RelaItem>"],["impl TryFrom<String> for StringItem"],["impl TryFrom<&str> for StringItem"],["impl TryFrom<u8> for STType"]]
+"deaf":[["impl<'a> TryFrom<&'a mut Section> for TableMut<'a, Symbol>"],["impl<'a> TryFrom<&'a mut Section> for TableMut<'a, ArrayItem>"],["impl TryFrom<u32> for PHType"],["impl TryFrom<String> for StringItem"],["impl<'a> TryFrom<&'a Section> for Table<'a, Symbol>"],["impl<'a> TryFrom<&'a mut Section> for TableMut<'a, RelaItem>"],["impl<'a> TryFrom<&'a Section> for Table<'a, StringItem>"],["impl<'a> TryFrom<&'a mut Section> for TableMut<'a, StringItem>"],["impl TryFrom<u8> for Layout"],["impl TryFrom<u8> for Width"],["impl<'a> TryFrom<&'a mut Section> for TableMut<'a, RelItem>"],["impl<'a> TryFrom<&'a Section> for Table<'a, RelItem>"],["impl<'a> TryFrom<&'a Section> for Table<'a, RelaItem>"],["impl TryFrom<&str> for StringItem"],["impl<'a> TryFrom<&'a Section> for Table<'a, ArrayItem>"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/default/trait.Default.js b/implementors/core/default/trait.Default.js
index 9c71651..234f68c 100644
--- a/implementors/core/default/trait.Default.js
+++ b/implementors/core/default/trait.Default.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"deaf":[["impl Default for ArrayItem"],["impl Default for RelItem"],["impl Default for SHType"],["impl Default for Width"],["impl Default for StringItem"],["impl Default for Layout"],["impl Default for RelocationInfo"],["impl Default for STBind"],["impl Default for RelaItem"],["impl Default for PHType"],["impl Default for SymbolInfo"],["impl Default for SectionHeaderData"],["impl Default for SymbolItem"],["impl Default for STType"]]
+"deaf":[["impl Default for RelaItem"],["impl Default for RelItem"],["impl Default for Layout"],["impl Default for SHType"],["impl Default for ArrayItem"],["impl Default for PHType"],["impl Default for STBind"],["impl Default for RelocationInfo"],["impl Default for STVisibility"],["impl Default for Width"],["impl Default for SectionHeaderData"],["impl Default for StringItem"],["impl Default for STType"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/error/trait.Error.js b/implementors/core/error/trait.Error.js
index bd66012..e278c76 100644
--- a/implementors/core/error/trait.Error.js
+++ b/implementors/core/error/trait.Error.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"deaf":[["impl Error for Error"]]
+"deaf":[["impl Error for Error"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/fmt/trait.Debug.js b/implementors/core/fmt/trait.Debug.js
index 7eb82ad..f018573 100644
--- a/implementors/core/fmt/trait.Debug.js
+++ b/implementors/core/fmt/trait.Debug.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"deaf":[["impl Debug for StringItem"],["impl Debug for Width"],["impl Debug for PHType"],["impl Debug for Ranges"],["impl Debug for RelocationInfo"],["impl<T32, T64, Out> Debug for Item<T32, T64, Out>where\n T32: T32Value<Out> + Debug,\n T64: T64Value<Out> + Debug,\n Out: TOutValue<T32, T64> + Debug,"],["impl Debug for Layout"],["impl Debug for SymbolInfo"],["impl Debug for SectionHeader"],["impl Debug for STType"],["impl Debug for STBind"],["impl Debug for SHFlags"],["impl Debug for Error"],["impl Debug for Section"],["impl Debug for SectionHeaderData"],["impl Debug for SectionType"],["impl Debug for SymbolItem"],["impl Debug for FileHeader"],["impl Debug for SHType"],["impl Debug for ProgramHeader"],["impl<T32, T64, Out> Debug for Field<T32, T64, Out>where\n T32: FromBytes + IntoBytes + Convert<Out> + Debug,\n T64: FromBytes + IntoBytes + Convert<Out> + Debug,\n Out: Convert<T32> + Convert<T64> + Debug + Debug,"]]
+"deaf":[["impl Debug for Layout"],["impl Debug for Width"],["impl Debug for Section"],["impl Debug for StringItem"],["impl<T32, T64, Out> Debug for Field<T32, T64, Out>where\n T32: FromBytes + IntoBytes + Convert<Out> + Debug,\n T64: FromBytes + IntoBytes + Convert<Out> + Debug,\n Out: Convert<T32> + Convert<T64> + Debug + Debug,"],["impl Debug for ProgramHeader"],["impl Debug for SectionHeaderData"],["impl Debug for STVisibility"],["impl Debug for Error"],["impl Debug for SectionHeader"],["impl Debug for SHType"],["impl Debug for Ranges"],["impl Debug for SHFlags"],["impl Debug for STBind"],["impl Debug for FileHeader"],["impl Debug for STType"],["impl Debug for RelocationInfo"],["impl<T32, T64, Out> Debug for Item<T32, T64, Out>where\n T32: T32Value<Out> + Debug,\n T64: T64Value<Out> + Debug,\n Out: TOutValue<T32, T64> + Debug,"],["impl Debug for SectionType"],["impl Debug for PHType"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/fmt/trait.Display.js b/implementors/core/fmt/trait.Display.js
index b2a896f..6f3dee7 100644
--- a/implementors/core/fmt/trait.Display.js
+++ b/implementors/core/fmt/trait.Display.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"deaf":[["impl Display for Error"]]
+"deaf":[["impl Display for Error"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/iter/traits/iterator/trait.Iterator.js b/implementors/core/iter/traits/iterator/trait.Iterator.js
index 4503ae0..e80c9bb 100644
--- a/implementors/core/iter/traits/iterator/trait.Iterator.js
+++ b/implementors/core/iter/traits/iterator/trait.Iterator.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"deaf":[["impl<'a> Iterator for ByteIter<'a>"]]
+"deaf":[["impl<'a> Iterator for ByteIter<'a>"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/marker/trait.Copy.js b/implementors/core/marker/trait.Copy.js
index 829c45f..ff5b722 100644
--- a/implementors/core/marker/trait.Copy.js
+++ b/implementors/core/marker/trait.Copy.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"deaf":[["impl Copy for STType"],["impl Copy for STBind"],["impl Copy for SHFlags"],["impl Copy for SHType"],["impl Copy for SectionType"],["impl Copy for Width"],["impl Copy for PHType"],["impl Copy for Layout"],["impl Copy for SymbolInfo"],["impl Copy for RelocationInfo"]]
+"deaf":[["impl Copy for RelocationInfo"],["impl Copy for SectionType"],["impl Copy for STBind"],["impl Copy for SHType"],["impl Copy for Layout"],["impl Copy for STType"],["impl Copy for SHFlags"],["impl Copy for Width"],["impl Copy for STVisibility"],["impl Copy for PHType"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/marker/trait.Freeze.js b/implementors/core/marker/trait.Freeze.js
index 8da39e1..e633cf5 100644
--- a/implementors/core/marker/trait.Freeze.js
+++ b/implementors/core/marker/trait.Freeze.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"deaf":[["impl Freeze for Error",1,["deaf::errors::Error"]],["impl Freeze for Ranges",1,["deaf::common::ranges::Ranges"]],["impl<T32, T64, Out> Freeze for Field<T32, T64, Out>",1,["deaf::common::field::Field"]],["impl<T32, T64, Out> Freeze for Item<T32, T64, Out>where\n Out: Freeze,",1,["deaf::common::item::Item"]],["impl Freeze for SectionType",1,["deaf::common::enums::SectionType"]],["impl Freeze for All",1,["deaf::common::update::All"]],["impl<T> Freeze for Update<T>",1,["deaf::common::update::Update"]],["impl<T32, T64, Out> Freeze for ItemArray<T32, T64, Out>where\n Out: Freeze,",1,["deaf::common::item_array::ItemArray"]],["impl Freeze for ByteDelimiter",1,["deaf::common::iterator::ByteDelimiter"]],["impl<'a> Freeze for ByteIter<'a>",1,["deaf::common::iterator::ByteIter"]],["impl Freeze for Width",1,["deaf::common::constants::Width"]],["impl Freeze for Layout",1,["deaf::common::constants::Layout"]],["impl Freeze for PHType",1,["deaf::common::constants::PHType"]],["impl Freeze for SHType",1,["deaf::common::constants::SHType"]],["impl Freeze for SHFlags",1,["deaf::common::constants::SHFlags"]],["impl Freeze for STBind",1,["deaf::common::constants::STBind"]],["impl Freeze for STType",1,["deaf::common::constants::STType"]],["impl Freeze for FileHeader",1,["deaf::headers::file::FileHeader"]],["impl Freeze for ProgramHeader",1,["deaf::headers::program::ProgramHeader"]],["impl Freeze for SectionHeader",1,["deaf::headers::section::SectionHeader"]],["impl Freeze for SectionHeaderData",1,["deaf::headers::section::SectionHeaderData"]],["impl Freeze for SymbolInfo",1,["deaf::tables::info::symbol::SymbolInfo"]],["impl Freeze for RelocationInfo",1,["deaf::tables::info::relocation::RelocationInfo"]],["impl Freeze for StringItem",1,["deaf::tables::items::string::StringItem"]],["impl Freeze for SymbolItem",1,["deaf::tables::items::symbol::SymbolItem"]],["impl Freeze for RelItem",1,["deaf::tables::items::relocation::RelItem"]],["impl Freeze for RelaItem",1,["deaf::tables::items::relocation::RelaItem"]],["impl Freeze for ArrayItem",1,["deaf::tables::items::array::ArrayItem"]],["impl<'a, T> Freeze for Table<'a, T>",1,["deaf::tables::table::Table"]],["impl<'a, T> Freeze for TableMut<'a, T>",1,["deaf::tables::table::TableMut"]],["impl Freeze for Segment",1,["deaf::segment::Segment"]],["impl Freeze for Section",1,["deaf::section::Section"]],["impl Freeze for Binary",1,["deaf::binary::Binary"]]]
+"deaf":[["impl Freeze for Error",1,["deaf::errors::Error"]],["impl Freeze for Ranges",1,["deaf::common::ranges::Ranges"]],["impl<T32, T64, Out> Freeze for Field<T32, T64, Out>",1,["deaf::common::field::Field"]],["impl<T32, T64, Out> Freeze for Item<T32, T64, Out>where\n Out: Freeze,",1,["deaf::common::item::Item"]],["impl Freeze for SectionType",1,["deaf::common::enums::SectionType"]],["impl Freeze for All",1,["deaf::common::update::All"]],["impl<T> Freeze for Update<T>",1,["deaf::common::update::Update"]],["impl<T32, T64, Out> Freeze for ItemArray<T32, T64, Out>where\n Out: Freeze,",1,["deaf::common::item_array::ItemArray"]],["impl Freeze for ByteDelimiter",1,["deaf::common::iterator::ByteDelimiter"]],["impl<'a> Freeze for ByteIter<'a>",1,["deaf::common::iterator::ByteIter"]],["impl Freeze for Width",1,["deaf::common::constants::Width"]],["impl Freeze for Layout",1,["deaf::common::constants::Layout"]],["impl Freeze for PHType",1,["deaf::common::constants::PHType"]],["impl Freeze for SHType",1,["deaf::common::constants::SHType"]],["impl Freeze for SHFlags",1,["deaf::common::constants::SHFlags"]],["impl Freeze for STBind",1,["deaf::common::constants::STBind"]],["impl Freeze for STType",1,["deaf::common::constants::STType"]],["impl Freeze for STVisibility",1,["deaf::common::constants::STVisibility"]],["impl Freeze for FileHeader",1,["deaf::headers::file::FileHeader"]],["impl Freeze for ProgramHeader",1,["deaf::headers::program::ProgramHeader"]],["impl Freeze for SectionHeader",1,["deaf::headers::section::SectionHeader"]],["impl Freeze for SectionHeaderData",1,["deaf::headers::section::SectionHeaderData"]],["impl Freeze for RelocationInfo",1,["deaf::tables::info::relocation::RelocationInfo"]],["impl Freeze for StringItem",1,["deaf::tables::items::string::StringItem"]],["impl Freeze for RelItem",1,["deaf::tables::items::relocation::RelItem"]],["impl Freeze for RelaItem",1,["deaf::tables::items::relocation::RelaItem"]],["impl Freeze for ArrayItem",1,["deaf::tables::items::array::ArrayItem"]],["impl<'a, T> Freeze for Table<'a, T>",1,["deaf::tables::table::Table"]],["impl<'a, T> Freeze for TableMut<'a, T>",1,["deaf::tables::table::TableMut"]],["impl Freeze for Segment",1,["deaf::segment::Segment"]],["impl Freeze for Section",1,["deaf::section::Section"]],["impl Freeze for Binary",1,["deaf::binary::Binary"]]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/marker/trait.Send.js b/implementors/core/marker/trait.Send.js
index 2be457a..8dc27ac 100644
--- a/implementors/core/marker/trait.Send.js
+++ b/implementors/core/marker/trait.Send.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"deaf":[["impl Send for Error",1,["deaf::errors::Error"]],["impl Send for Ranges",1,["deaf::common::ranges::Ranges"]],["impl<T32, T64, Out> Send for Field<T32, T64, Out>where\n Out: Send,\n T32: Send,\n T64: Send,",1,["deaf::common::field::Field"]],["impl<T32, T64, Out> Send for Item<T32, T64, Out>where\n Out: Send,\n T32: Send,\n T64: Send,",1,["deaf::common::item::Item"]],["impl Send for SectionType",1,["deaf::common::enums::SectionType"]],["impl Send for All",1,["deaf::common::update::All"]],["impl<T> Send for Update<T>",1,["deaf::common::update::Update"]],["impl<T32, T64, Out> Send for ItemArray<T32, T64, Out>where\n Out: Send,\n T32: Send,\n T64: Send,",1,["deaf::common::item_array::ItemArray"]],["impl Send for ByteDelimiter",1,["deaf::common::iterator::ByteDelimiter"]],["impl<'a> Send for ByteIter<'a>",1,["deaf::common::iterator::ByteIter"]],["impl Send for Width",1,["deaf::common::constants::Width"]],["impl Send for Layout",1,["deaf::common::constants::Layout"]],["impl Send for PHType",1,["deaf::common::constants::PHType"]],["impl Send for SHType",1,["deaf::common::constants::SHType"]],["impl Send for SHFlags",1,["deaf::common::constants::SHFlags"]],["impl Send for STBind",1,["deaf::common::constants::STBind"]],["impl Send for STType",1,["deaf::common::constants::STType"]],["impl Send for FileHeader",1,["deaf::headers::file::FileHeader"]],["impl Send for ProgramHeader",1,["deaf::headers::program::ProgramHeader"]],["impl Send for SectionHeader",1,["deaf::headers::section::SectionHeader"]],["impl Send for SectionHeaderData",1,["deaf::headers::section::SectionHeaderData"]],["impl Send for SymbolInfo",1,["deaf::tables::info::symbol::SymbolInfo"]],["impl Send for RelocationInfo",1,["deaf::tables::info::relocation::RelocationInfo"]],["impl Send for StringItem",1,["deaf::tables::items::string::StringItem"]],["impl Send for SymbolItem",1,["deaf::tables::items::symbol::SymbolItem"]],["impl Send for RelItem",1,["deaf::tables::items::relocation::RelItem"]],["impl Send for RelaItem",1,["deaf::tables::items::relocation::RelaItem"]],["impl Send for ArrayItem",1,["deaf::tables::items::array::ArrayItem"]],["impl<'a, T> Send for Table<'a, T>where\n T: Send,",1,["deaf::tables::table::Table"]],["impl<'a, T> Send for TableMut<'a, T>where\n T: Send,",1,["deaf::tables::table::TableMut"]],["impl Send for Segment",1,["deaf::segment::Segment"]],["impl Send for Section",1,["deaf::section::Section"]],["impl Send for Binary",1,["deaf::binary::Binary"]]]
+"deaf":[["impl Send for Error",1,["deaf::errors::Error"]],["impl Send for Ranges",1,["deaf::common::ranges::Ranges"]],["impl<T32, T64, Out> Send for Field<T32, T64, Out>where\n Out: Send,\n T32: Send,\n T64: Send,",1,["deaf::common::field::Field"]],["impl<T32, T64, Out> Send for Item<T32, T64, Out>where\n Out: Send,\n T32: Send,\n T64: Send,",1,["deaf::common::item::Item"]],["impl Send for SectionType",1,["deaf::common::enums::SectionType"]],["impl Send for All",1,["deaf::common::update::All"]],["impl<T> Send for Update<T>",1,["deaf::common::update::Update"]],["impl<T32, T64, Out> Send for ItemArray<T32, T64, Out>where\n Out: Send,\n T32: Send,\n T64: Send,",1,["deaf::common::item_array::ItemArray"]],["impl Send for ByteDelimiter",1,["deaf::common::iterator::ByteDelimiter"]],["impl<'a> Send for ByteIter<'a>",1,["deaf::common::iterator::ByteIter"]],["impl Send for Width",1,["deaf::common::constants::Width"]],["impl Send for Layout",1,["deaf::common::constants::Layout"]],["impl Send for PHType",1,["deaf::common::constants::PHType"]],["impl Send for SHType",1,["deaf::common::constants::SHType"]],["impl Send for SHFlags",1,["deaf::common::constants::SHFlags"]],["impl Send for STBind",1,["deaf::common::constants::STBind"]],["impl Send for STType",1,["deaf::common::constants::STType"]],["impl Send for STVisibility",1,["deaf::common::constants::STVisibility"]],["impl Send for FileHeader",1,["deaf::headers::file::FileHeader"]],["impl Send for ProgramHeader",1,["deaf::headers::program::ProgramHeader"]],["impl Send for SectionHeader",1,["deaf::headers::section::SectionHeader"]],["impl Send for SectionHeaderData",1,["deaf::headers::section::SectionHeaderData"]],["impl Send for RelocationInfo",1,["deaf::tables::info::relocation::RelocationInfo"]],["impl Send for StringItem",1,["deaf::tables::items::string::StringItem"]],["impl Send for RelItem",1,["deaf::tables::items::relocation::RelItem"]],["impl Send for RelaItem",1,["deaf::tables::items::relocation::RelaItem"]],["impl Send for ArrayItem",1,["deaf::tables::items::array::ArrayItem"]],["impl<'a, T> Send for Table<'a, T>where\n T: Send,",1,["deaf::tables::table::Table"]],["impl<'a, T> Send for TableMut<'a, T>where\n T: Send,",1,["deaf::tables::table::TableMut"]],["impl Send for Segment",1,["deaf::segment::Segment"]],["impl Send for Section",1,["deaf::section::Section"]],["impl Send for Binary",1,["deaf::binary::Binary"]]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/marker/trait.StructuralPartialEq.js b/implementors/core/marker/trait.StructuralPartialEq.js
index f178c27..aea0133 100644
--- a/implementors/core/marker/trait.StructuralPartialEq.js
+++ b/implementors/core/marker/trait.StructuralPartialEq.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"deaf":[["impl StructuralPartialEq for StringItem"],["impl StructuralPartialEq for ArrayItem"],["impl StructuralPartialEq for STBind"],["impl StructuralPartialEq for SectionType"],["impl StructuralPartialEq for RelocationInfo"],["impl StructuralPartialEq for SHFlags"],["impl StructuralPartialEq for Layout"],["impl StructuralPartialEq for PHType"],["impl StructuralPartialEq for RelaItem"],["impl StructuralPartialEq for Width"],["impl StructuralPartialEq for SHType"],["impl StructuralPartialEq for STType"],["impl StructuralPartialEq for RelItem"],["impl StructuralPartialEq for SymbolInfo"]]
+"deaf":[["impl StructuralPartialEq for RelItem"],["impl StructuralPartialEq for PHType"],["impl StructuralPartialEq for STType"],["impl StructuralPartialEq for Width"],["impl StructuralPartialEq for RelocationInfo"],["impl StructuralPartialEq for SectionType"],["impl StructuralPartialEq for STBind"],["impl StructuralPartialEq for RelaItem"],["impl StructuralPartialEq for Layout"],["impl StructuralPartialEq for SHFlags"],["impl StructuralPartialEq for StringItem"],["impl StructuralPartialEq for ArrayItem"],["impl StructuralPartialEq for STVisibility"],["impl StructuralPartialEq for SHType"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/marker/trait.Sync.js b/implementors/core/marker/trait.Sync.js
index 810ce7d..644e92c 100644
--- a/implementors/core/marker/trait.Sync.js
+++ b/implementors/core/marker/trait.Sync.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"deaf":[["impl Sync for Error",1,["deaf::errors::Error"]],["impl Sync for Ranges",1,["deaf::common::ranges::Ranges"]],["impl<T32, T64, Out> Sync for Field<T32, T64, Out>where\n Out: Sync,\n T32: Sync,\n T64: Sync,",1,["deaf::common::field::Field"]],["impl<T32, T64, Out> Sync for Item<T32, T64, Out>where\n Out: Sync,\n T32: Sync,\n T64: Sync,",1,["deaf::common::item::Item"]],["impl Sync for SectionType",1,["deaf::common::enums::SectionType"]],["impl Sync for All",1,["deaf::common::update::All"]],["impl<T> Sync for Update<T>",1,["deaf::common::update::Update"]],["impl<T32, T64, Out> Sync for ItemArray<T32, T64, Out>where\n Out: Sync,\n T32: Sync,\n T64: Sync,",1,["deaf::common::item_array::ItemArray"]],["impl Sync for ByteDelimiter",1,["deaf::common::iterator::ByteDelimiter"]],["impl<'a> Sync for ByteIter<'a>",1,["deaf::common::iterator::ByteIter"]],["impl Sync for Width",1,["deaf::common::constants::Width"]],["impl Sync for Layout",1,["deaf::common::constants::Layout"]],["impl Sync for PHType",1,["deaf::common::constants::PHType"]],["impl Sync for SHType",1,["deaf::common::constants::SHType"]],["impl Sync for SHFlags",1,["deaf::common::constants::SHFlags"]],["impl Sync for STBind",1,["deaf::common::constants::STBind"]],["impl Sync for STType",1,["deaf::common::constants::STType"]],["impl Sync for FileHeader",1,["deaf::headers::file::FileHeader"]],["impl Sync for ProgramHeader",1,["deaf::headers::program::ProgramHeader"]],["impl Sync for SectionHeader",1,["deaf::headers::section::SectionHeader"]],["impl Sync for SectionHeaderData",1,["deaf::headers::section::SectionHeaderData"]],["impl Sync for SymbolInfo",1,["deaf::tables::info::symbol::SymbolInfo"]],["impl Sync for RelocationInfo",1,["deaf::tables::info::relocation::RelocationInfo"]],["impl Sync for StringItem",1,["deaf::tables::items::string::StringItem"]],["impl Sync for SymbolItem",1,["deaf::tables::items::symbol::SymbolItem"]],["impl Sync for RelItem",1,["deaf::tables::items::relocation::RelItem"]],["impl Sync for RelaItem",1,["deaf::tables::items::relocation::RelaItem"]],["impl Sync for ArrayItem",1,["deaf::tables::items::array::ArrayItem"]],["impl<'a, T> Sync for Table<'a, T>where\n T: Sync,",1,["deaf::tables::table::Table"]],["impl<'a, T> Sync for TableMut<'a, T>where\n T: Sync,",1,["deaf::tables::table::TableMut"]],["impl Sync for Segment",1,["deaf::segment::Segment"]],["impl Sync for Section",1,["deaf::section::Section"]],["impl Sync for Binary",1,["deaf::binary::Binary"]]]
+"deaf":[["impl Sync for Error",1,["deaf::errors::Error"]],["impl Sync for Ranges",1,["deaf::common::ranges::Ranges"]],["impl<T32, T64, Out> Sync for Field<T32, T64, Out>where\n Out: Sync,\n T32: Sync,\n T64: Sync,",1,["deaf::common::field::Field"]],["impl<T32, T64, Out> Sync for Item<T32, T64, Out>where\n Out: Sync,\n T32: Sync,\n T64: Sync,",1,["deaf::common::item::Item"]],["impl Sync for SectionType",1,["deaf::common::enums::SectionType"]],["impl Sync for All",1,["deaf::common::update::All"]],["impl<T> Sync for Update<T>",1,["deaf::common::update::Update"]],["impl<T32, T64, Out> Sync for ItemArray<T32, T64, Out>where\n Out: Sync,\n T32: Sync,\n T64: Sync,",1,["deaf::common::item_array::ItemArray"]],["impl Sync for ByteDelimiter",1,["deaf::common::iterator::ByteDelimiter"]],["impl<'a> Sync for ByteIter<'a>",1,["deaf::common::iterator::ByteIter"]],["impl Sync for Width",1,["deaf::common::constants::Width"]],["impl Sync for Layout",1,["deaf::common::constants::Layout"]],["impl Sync for PHType",1,["deaf::common::constants::PHType"]],["impl Sync for SHType",1,["deaf::common::constants::SHType"]],["impl Sync for SHFlags",1,["deaf::common::constants::SHFlags"]],["impl Sync for STBind",1,["deaf::common::constants::STBind"]],["impl Sync for STType",1,["deaf::common::constants::STType"]],["impl Sync for STVisibility",1,["deaf::common::constants::STVisibility"]],["impl Sync for FileHeader",1,["deaf::headers::file::FileHeader"]],["impl Sync for ProgramHeader",1,["deaf::headers::program::ProgramHeader"]],["impl Sync for SectionHeader",1,["deaf::headers::section::SectionHeader"]],["impl Sync for SectionHeaderData",1,["deaf::headers::section::SectionHeaderData"]],["impl Sync for RelocationInfo",1,["deaf::tables::info::relocation::RelocationInfo"]],["impl Sync for StringItem",1,["deaf::tables::items::string::StringItem"]],["impl Sync for RelItem",1,["deaf::tables::items::relocation::RelItem"]],["impl Sync for RelaItem",1,["deaf::tables::items::relocation::RelaItem"]],["impl Sync for ArrayItem",1,["deaf::tables::items::array::ArrayItem"]],["impl<'a, T> Sync for Table<'a, T>where\n T: Sync,",1,["deaf::tables::table::Table"]],["impl<'a, T> Sync for TableMut<'a, T>where\n T: Sync,",1,["deaf::tables::table::TableMut"]],["impl Sync for Segment",1,["deaf::segment::Segment"]],["impl Sync for Section",1,["deaf::section::Section"]],["impl Sync for Binary",1,["deaf::binary::Binary"]]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/marker/trait.Unpin.js b/implementors/core/marker/trait.Unpin.js
index 9a0f818..410cb49 100644
--- a/implementors/core/marker/trait.Unpin.js
+++ b/implementors/core/marker/trait.Unpin.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"deaf":[["impl Unpin for Error",1,["deaf::errors::Error"]],["impl Unpin for Ranges",1,["deaf::common::ranges::Ranges"]],["impl<T32, T64, Out> Unpin for Field<T32, T64, Out>where\n Out: Unpin,\n T32: Unpin,\n T64: Unpin,",1,["deaf::common::field::Field"]],["impl<T32, T64, Out> Unpin for Item<T32, T64, Out>where\n Out: Unpin,\n T32: Unpin,\n T64: Unpin,",1,["deaf::common::item::Item"]],["impl Unpin for SectionType",1,["deaf::common::enums::SectionType"]],["impl Unpin for All",1,["deaf::common::update::All"]],["impl<T> Unpin for Update<T>where\n T: Unpin,",1,["deaf::common::update::Update"]],["impl<T32, T64, Out> Unpin for ItemArray<T32, T64, Out>where\n Out: Unpin,\n T32: Unpin,\n T64: Unpin,",1,["deaf::common::item_array::ItemArray"]],["impl Unpin for ByteDelimiter",1,["deaf::common::iterator::ByteDelimiter"]],["impl<'a> Unpin for ByteIter<'a>",1,["deaf::common::iterator::ByteIter"]],["impl Unpin for Width",1,["deaf::common::constants::Width"]],["impl Unpin for Layout",1,["deaf::common::constants::Layout"]],["impl Unpin for PHType",1,["deaf::common::constants::PHType"]],["impl Unpin for SHType",1,["deaf::common::constants::SHType"]],["impl Unpin for SHFlags",1,["deaf::common::constants::SHFlags"]],["impl Unpin for STBind",1,["deaf::common::constants::STBind"]],["impl Unpin for STType",1,["deaf::common::constants::STType"]],["impl Unpin for FileHeader",1,["deaf::headers::file::FileHeader"]],["impl Unpin for ProgramHeader",1,["deaf::headers::program::ProgramHeader"]],["impl Unpin for SectionHeader",1,["deaf::headers::section::SectionHeader"]],["impl Unpin for SectionHeaderData",1,["deaf::headers::section::SectionHeaderData"]],["impl Unpin for SymbolInfo",1,["deaf::tables::info::symbol::SymbolInfo"]],["impl Unpin for RelocationInfo",1,["deaf::tables::info::relocation::RelocationInfo"]],["impl Unpin for StringItem",1,["deaf::tables::items::string::StringItem"]],["impl Unpin for SymbolItem",1,["deaf::tables::items::symbol::SymbolItem"]],["impl Unpin for RelItem",1,["deaf::tables::items::relocation::RelItem"]],["impl Unpin for RelaItem",1,["deaf::tables::items::relocation::RelaItem"]],["impl Unpin for ArrayItem",1,["deaf::tables::items::array::ArrayItem"]],["impl<'a, T> Unpin for Table<'a, T>where\n T: Unpin,",1,["deaf::tables::table::Table"]],["impl<'a, T> Unpin for TableMut<'a, T>where\n T: Unpin,",1,["deaf::tables::table::TableMut"]],["impl Unpin for Segment",1,["deaf::segment::Segment"]],["impl Unpin for Section",1,["deaf::section::Section"]],["impl Unpin for Binary",1,["deaf::binary::Binary"]]]
+"deaf":[["impl Unpin for Error",1,["deaf::errors::Error"]],["impl Unpin for Ranges",1,["deaf::common::ranges::Ranges"]],["impl<T32, T64, Out> Unpin for Field<T32, T64, Out>where\n Out: Unpin,\n T32: Unpin,\n T64: Unpin,",1,["deaf::common::field::Field"]],["impl<T32, T64, Out> Unpin for Item<T32, T64, Out>where\n Out: Unpin,\n T32: Unpin,\n T64: Unpin,",1,["deaf::common::item::Item"]],["impl Unpin for SectionType",1,["deaf::common::enums::SectionType"]],["impl Unpin for All",1,["deaf::common::update::All"]],["impl<T> Unpin for Update<T>where\n T: Unpin,",1,["deaf::common::update::Update"]],["impl<T32, T64, Out> Unpin for ItemArray<T32, T64, Out>where\n Out: Unpin,\n T32: Unpin,\n T64: Unpin,",1,["deaf::common::item_array::ItemArray"]],["impl Unpin for ByteDelimiter",1,["deaf::common::iterator::ByteDelimiter"]],["impl<'a> Unpin for ByteIter<'a>",1,["deaf::common::iterator::ByteIter"]],["impl Unpin for Width",1,["deaf::common::constants::Width"]],["impl Unpin for Layout",1,["deaf::common::constants::Layout"]],["impl Unpin for PHType",1,["deaf::common::constants::PHType"]],["impl Unpin for SHType",1,["deaf::common::constants::SHType"]],["impl Unpin for SHFlags",1,["deaf::common::constants::SHFlags"]],["impl Unpin for STBind",1,["deaf::common::constants::STBind"]],["impl Unpin for STType",1,["deaf::common::constants::STType"]],["impl Unpin for STVisibility",1,["deaf::common::constants::STVisibility"]],["impl Unpin for FileHeader",1,["deaf::headers::file::FileHeader"]],["impl Unpin for ProgramHeader",1,["deaf::headers::program::ProgramHeader"]],["impl Unpin for SectionHeader",1,["deaf::headers::section::SectionHeader"]],["impl Unpin for SectionHeaderData",1,["deaf::headers::section::SectionHeaderData"]],["impl Unpin for RelocationInfo",1,["deaf::tables::info::relocation::RelocationInfo"]],["impl Unpin for StringItem",1,["deaf::tables::items::string::StringItem"]],["impl Unpin for RelItem",1,["deaf::tables::items::relocation::RelItem"]],["impl Unpin for RelaItem",1,["deaf::tables::items::relocation::RelaItem"]],["impl Unpin for ArrayItem",1,["deaf::tables::items::array::ArrayItem"]],["impl<'a, T> Unpin for Table<'a, T>where\n T: Unpin,",1,["deaf::tables::table::Table"]],["impl<'a, T> Unpin for TableMut<'a, T>where\n T: Unpin,",1,["deaf::tables::table::TableMut"]],["impl Unpin for Segment",1,["deaf::segment::Segment"]],["impl Unpin for Section",1,["deaf::section::Section"]],["impl Unpin for Binary",1,["deaf::binary::Binary"]]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/ops/bit/trait.BitAnd.js b/implementors/core/ops/bit/trait.BitAnd.js
index a31988f..57d177c 100644
--- a/implementors/core/ops/bit/trait.BitAnd.js
+++ b/implementors/core/ops/bit/trait.BitAnd.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"deaf":[["impl BitAnd<SHFlags> for SHFlags"]]
+"deaf":[["impl BitAnd<SHFlags> for SHFlags"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/ops/bit/trait.BitOr.js b/implementors/core/ops/bit/trait.BitOr.js
index 7e8c2d0..f6f6cb8 100644
--- a/implementors/core/ops/bit/trait.BitOr.js
+++ b/implementors/core/ops/bit/trait.BitOr.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"deaf":[["impl BitOr<SHFlags> for SHFlags"]]
+"deaf":[["impl BitOr<SHFlags> for SHFlags"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/ops/bit/trait.BitXor.js b/implementors/core/ops/bit/trait.BitXor.js
index 56eac83..920269a 100644
--- a/implementors/core/ops/bit/trait.BitXor.js
+++ b/implementors/core/ops/bit/trait.BitXor.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"deaf":[["impl BitXor<SHFlags> for SHFlags"]]
+"deaf":[["impl BitXor<SHFlags> for SHFlags"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/ops/bit/trait.Not.js b/implementors/core/ops/bit/trait.Not.js
index 027a600..4425f7d 100644
--- a/implementors/core/ops/bit/trait.Not.js
+++ b/implementors/core/ops/bit/trait.Not.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"deaf":[["impl Not for SHFlags"]]
+"deaf":[["impl Not for SHFlags"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js b/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js
index 44b1c7b..151652a 100644
--- a/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js
+++ b/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"deaf":[["impl !RefUnwindSafe for Error",1,["deaf::errors::Error"]],["impl RefUnwindSafe for Ranges",1,["deaf::common::ranges::Ranges"]],["impl<T32, T64, Out> RefUnwindSafe for Field<T32, T64, Out>where\n Out: RefUnwindSafe,\n T32: RefUnwindSafe,\n T64: RefUnwindSafe,",1,["deaf::common::field::Field"]],["impl<T32, T64, Out> RefUnwindSafe for Item<T32, T64, Out>where\n Out: RefUnwindSafe,\n T32: RefUnwindSafe,\n T64: RefUnwindSafe,",1,["deaf::common::item::Item"]],["impl RefUnwindSafe for SectionType",1,["deaf::common::enums::SectionType"]],["impl RefUnwindSafe for All",1,["deaf::common::update::All"]],["impl<T> !RefUnwindSafe for Update<T>",1,["deaf::common::update::Update"]],["impl<T32, T64, Out> RefUnwindSafe for ItemArray<T32, T64, Out>where\n Out: RefUnwindSafe,\n T32: RefUnwindSafe,\n T64: RefUnwindSafe,",1,["deaf::common::item_array::ItemArray"]],["impl RefUnwindSafe for ByteDelimiter",1,["deaf::common::iterator::ByteDelimiter"]],["impl<'a> RefUnwindSafe for ByteIter<'a>",1,["deaf::common::iterator::ByteIter"]],["impl RefUnwindSafe for Width",1,["deaf::common::constants::Width"]],["impl RefUnwindSafe for Layout",1,["deaf::common::constants::Layout"]],["impl RefUnwindSafe for PHType",1,["deaf::common::constants::PHType"]],["impl RefUnwindSafe for SHType",1,["deaf::common::constants::SHType"]],["impl RefUnwindSafe for SHFlags",1,["deaf::common::constants::SHFlags"]],["impl RefUnwindSafe for STBind",1,["deaf::common::constants::STBind"]],["impl RefUnwindSafe for STType",1,["deaf::common::constants::STType"]],["impl RefUnwindSafe for FileHeader",1,["deaf::headers::file::FileHeader"]],["impl RefUnwindSafe for ProgramHeader",1,["deaf::headers::program::ProgramHeader"]],["impl RefUnwindSafe for SectionHeader",1,["deaf::headers::section::SectionHeader"]],["impl RefUnwindSafe for SectionHeaderData",1,["deaf::headers::section::SectionHeaderData"]],["impl RefUnwindSafe for SymbolInfo",1,["deaf::tables::info::symbol::SymbolInfo"]],["impl RefUnwindSafe for RelocationInfo",1,["deaf::tables::info::relocation::RelocationInfo"]],["impl RefUnwindSafe for StringItem",1,["deaf::tables::items::string::StringItem"]],["impl RefUnwindSafe for SymbolItem",1,["deaf::tables::items::symbol::SymbolItem"]],["impl RefUnwindSafe for RelItem",1,["deaf::tables::items::relocation::RelItem"]],["impl RefUnwindSafe for RelaItem",1,["deaf::tables::items::relocation::RelaItem"]],["impl RefUnwindSafe for ArrayItem",1,["deaf::tables::items::array::ArrayItem"]],["impl<'a, T> RefUnwindSafe for Table<'a, T>where\n T: RefUnwindSafe,",1,["deaf::tables::table::Table"]],["impl<'a, T> RefUnwindSafe for TableMut<'a, T>where\n T: RefUnwindSafe,",1,["deaf::tables::table::TableMut"]],["impl RefUnwindSafe for Segment",1,["deaf::segment::Segment"]],["impl RefUnwindSafe for Section",1,["deaf::section::Section"]],["impl RefUnwindSafe for Binary",1,["deaf::binary::Binary"]]]
+"deaf":[["impl !RefUnwindSafe for Error",1,["deaf::errors::Error"]],["impl RefUnwindSafe for Ranges",1,["deaf::common::ranges::Ranges"]],["impl<T32, T64, Out> RefUnwindSafe for Field<T32, T64, Out>where\n Out: RefUnwindSafe,\n T32: RefUnwindSafe,\n T64: RefUnwindSafe,",1,["deaf::common::field::Field"]],["impl<T32, T64, Out> RefUnwindSafe for Item<T32, T64, Out>where\n Out: RefUnwindSafe,\n T32: RefUnwindSafe,\n T64: RefUnwindSafe,",1,["deaf::common::item::Item"]],["impl RefUnwindSafe for SectionType",1,["deaf::common::enums::SectionType"]],["impl RefUnwindSafe for All",1,["deaf::common::update::All"]],["impl<T> !RefUnwindSafe for Update<T>",1,["deaf::common::update::Update"]],["impl<T32, T64, Out> RefUnwindSafe for ItemArray<T32, T64, Out>where\n Out: RefUnwindSafe,\n T32: RefUnwindSafe,\n T64: RefUnwindSafe,",1,["deaf::common::item_array::ItemArray"]],["impl RefUnwindSafe for ByteDelimiter",1,["deaf::common::iterator::ByteDelimiter"]],["impl<'a> RefUnwindSafe for ByteIter<'a>",1,["deaf::common::iterator::ByteIter"]],["impl RefUnwindSafe for Width",1,["deaf::common::constants::Width"]],["impl RefUnwindSafe for Layout",1,["deaf::common::constants::Layout"]],["impl RefUnwindSafe for PHType",1,["deaf::common::constants::PHType"]],["impl RefUnwindSafe for SHType",1,["deaf::common::constants::SHType"]],["impl RefUnwindSafe for SHFlags",1,["deaf::common::constants::SHFlags"]],["impl RefUnwindSafe for STBind",1,["deaf::common::constants::STBind"]],["impl RefUnwindSafe for STType",1,["deaf::common::constants::STType"]],["impl RefUnwindSafe for STVisibility",1,["deaf::common::constants::STVisibility"]],["impl RefUnwindSafe for FileHeader",1,["deaf::headers::file::FileHeader"]],["impl RefUnwindSafe for ProgramHeader",1,["deaf::headers::program::ProgramHeader"]],["impl RefUnwindSafe for SectionHeader",1,["deaf::headers::section::SectionHeader"]],["impl RefUnwindSafe for SectionHeaderData",1,["deaf::headers::section::SectionHeaderData"]],["impl RefUnwindSafe for RelocationInfo",1,["deaf::tables::info::relocation::RelocationInfo"]],["impl RefUnwindSafe for StringItem",1,["deaf::tables::items::string::StringItem"]],["impl RefUnwindSafe for RelItem",1,["deaf::tables::items::relocation::RelItem"]],["impl RefUnwindSafe for RelaItem",1,["deaf::tables::items::relocation::RelaItem"]],["impl RefUnwindSafe for ArrayItem",1,["deaf::tables::items::array::ArrayItem"]],["impl<'a, T> RefUnwindSafe for Table<'a, T>where\n T: RefUnwindSafe,",1,["deaf::tables::table::Table"]],["impl<'a, T> RefUnwindSafe for TableMut<'a, T>where\n T: RefUnwindSafe,",1,["deaf::tables::table::TableMut"]],["impl RefUnwindSafe for Segment",1,["deaf::segment::Segment"]],["impl RefUnwindSafe for Section",1,["deaf::section::Section"]],["impl RefUnwindSafe for Binary",1,["deaf::binary::Binary"]]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/core/panic/unwind_safe/trait.UnwindSafe.js b/implementors/core/panic/unwind_safe/trait.UnwindSafe.js
index 7128e10..ff3909b 100644
--- a/implementors/core/panic/unwind_safe/trait.UnwindSafe.js
+++ b/implementors/core/panic/unwind_safe/trait.UnwindSafe.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"deaf":[["impl !UnwindSafe for Error",1,["deaf::errors::Error"]],["impl UnwindSafe for Ranges",1,["deaf::common::ranges::Ranges"]],["impl<T32, T64, Out> UnwindSafe for Field<T32, T64, Out>where\n Out: UnwindSafe,\n T32: UnwindSafe,\n T64: UnwindSafe,",1,["deaf::common::field::Field"]],["impl<T32, T64, Out> UnwindSafe for Item<T32, T64, Out>where\n Out: UnwindSafe,\n T32: UnwindSafe,\n T64: UnwindSafe,",1,["deaf::common::item::Item"]],["impl UnwindSafe for SectionType",1,["deaf::common::enums::SectionType"]],["impl UnwindSafe for All",1,["deaf::common::update::All"]],["impl<T> !UnwindSafe for Update<T>",1,["deaf::common::update::Update"]],["impl<T32, T64, Out> UnwindSafe for ItemArray<T32, T64, Out>where\n Out: UnwindSafe,\n T32: UnwindSafe,\n T64: UnwindSafe,",1,["deaf::common::item_array::ItemArray"]],["impl UnwindSafe for ByteDelimiter",1,["deaf::common::iterator::ByteDelimiter"]],["impl<'a> UnwindSafe for ByteIter<'a>",1,["deaf::common::iterator::ByteIter"]],["impl UnwindSafe for Width",1,["deaf::common::constants::Width"]],["impl UnwindSafe for Layout",1,["deaf::common::constants::Layout"]],["impl UnwindSafe for PHType",1,["deaf::common::constants::PHType"]],["impl UnwindSafe for SHType",1,["deaf::common::constants::SHType"]],["impl UnwindSafe for SHFlags",1,["deaf::common::constants::SHFlags"]],["impl UnwindSafe for STBind",1,["deaf::common::constants::STBind"]],["impl UnwindSafe for STType",1,["deaf::common::constants::STType"]],["impl UnwindSafe for FileHeader",1,["deaf::headers::file::FileHeader"]],["impl UnwindSafe for ProgramHeader",1,["deaf::headers::program::ProgramHeader"]],["impl UnwindSafe for SectionHeader",1,["deaf::headers::section::SectionHeader"]],["impl UnwindSafe for SectionHeaderData",1,["deaf::headers::section::SectionHeaderData"]],["impl UnwindSafe for SymbolInfo",1,["deaf::tables::info::symbol::SymbolInfo"]],["impl UnwindSafe for RelocationInfo",1,["deaf::tables::info::relocation::RelocationInfo"]],["impl UnwindSafe for StringItem",1,["deaf::tables::items::string::StringItem"]],["impl UnwindSafe for SymbolItem",1,["deaf::tables::items::symbol::SymbolItem"]],["impl UnwindSafe for RelItem",1,["deaf::tables::items::relocation::RelItem"]],["impl UnwindSafe for RelaItem",1,["deaf::tables::items::relocation::RelaItem"]],["impl UnwindSafe for ArrayItem",1,["deaf::tables::items::array::ArrayItem"]],["impl<'a, T> UnwindSafe for Table<'a, T>where\n T: UnwindSafe,",1,["deaf::tables::table::Table"]],["impl<'a, T> !UnwindSafe for TableMut<'a, T>",1,["deaf::tables::table::TableMut"]],["impl UnwindSafe for Segment",1,["deaf::segment::Segment"]],["impl UnwindSafe for Section",1,["deaf::section::Section"]],["impl UnwindSafe for Binary",1,["deaf::binary::Binary"]]]
+"deaf":[["impl !UnwindSafe for Error",1,["deaf::errors::Error"]],["impl UnwindSafe for Ranges",1,["deaf::common::ranges::Ranges"]],["impl<T32, T64, Out> UnwindSafe for Field<T32, T64, Out>where\n Out: UnwindSafe,\n T32: UnwindSafe,\n T64: UnwindSafe,",1,["deaf::common::field::Field"]],["impl<T32, T64, Out> UnwindSafe for Item<T32, T64, Out>where\n Out: UnwindSafe,\n T32: UnwindSafe,\n T64: UnwindSafe,",1,["deaf::common::item::Item"]],["impl UnwindSafe for SectionType",1,["deaf::common::enums::SectionType"]],["impl UnwindSafe for All",1,["deaf::common::update::All"]],["impl<T> !UnwindSafe for Update<T>",1,["deaf::common::update::Update"]],["impl<T32, T64, Out> UnwindSafe for ItemArray<T32, T64, Out>where\n Out: UnwindSafe,\n T32: UnwindSafe,\n T64: UnwindSafe,",1,["deaf::common::item_array::ItemArray"]],["impl UnwindSafe for ByteDelimiter",1,["deaf::common::iterator::ByteDelimiter"]],["impl<'a> UnwindSafe for ByteIter<'a>",1,["deaf::common::iterator::ByteIter"]],["impl UnwindSafe for Width",1,["deaf::common::constants::Width"]],["impl UnwindSafe for Layout",1,["deaf::common::constants::Layout"]],["impl UnwindSafe for PHType",1,["deaf::common::constants::PHType"]],["impl UnwindSafe for SHType",1,["deaf::common::constants::SHType"]],["impl UnwindSafe for SHFlags",1,["deaf::common::constants::SHFlags"]],["impl UnwindSafe for STBind",1,["deaf::common::constants::STBind"]],["impl UnwindSafe for STType",1,["deaf::common::constants::STType"]],["impl UnwindSafe for STVisibility",1,["deaf::common::constants::STVisibility"]],["impl UnwindSafe for FileHeader",1,["deaf::headers::file::FileHeader"]],["impl UnwindSafe for ProgramHeader",1,["deaf::headers::program::ProgramHeader"]],["impl UnwindSafe for SectionHeader",1,["deaf::headers::section::SectionHeader"]],["impl UnwindSafe for SectionHeaderData",1,["deaf::headers::section::SectionHeaderData"]],["impl UnwindSafe for RelocationInfo",1,["deaf::tables::info::relocation::RelocationInfo"]],["impl UnwindSafe for StringItem",1,["deaf::tables::items::string::StringItem"]],["impl UnwindSafe for RelItem",1,["deaf::tables::items::relocation::RelItem"]],["impl UnwindSafe for RelaItem",1,["deaf::tables::items::relocation::RelaItem"]],["impl UnwindSafe for ArrayItem",1,["deaf::tables::items::array::ArrayItem"]],["impl<'a, T> UnwindSafe for Table<'a, T>where\n T: UnwindSafe,",1,["deaf::tables::table::Table"]],["impl<'a, T> !UnwindSafe for TableMut<'a, T>",1,["deaf::tables::table::TableMut"]],["impl UnwindSafe for Segment",1,["deaf::segment::Segment"]],["impl UnwindSafe for Section",1,["deaf::section::Section"]],["impl UnwindSafe for Binary",1,["deaf::binary::Binary"]]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/num_enum/trait.FromPrimitive.js b/implementors/num_enum/trait.FromPrimitive.js
index b1d7e3b..078e657 100644
--- a/implementors/num_enum/trait.FromPrimitive.js
+++ b/implementors/num_enum/trait.FromPrimitive.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"deaf":[["impl FromPrimitive for SHType"]]
+"deaf":[["impl FromPrimitive for STBind"],["impl FromPrimitive for STVisibility"],["impl FromPrimitive for SHType"],["impl FromPrimitive for STType"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/implementors/num_enum/trait.TryFromPrimitive.js b/implementors/num_enum/trait.TryFromPrimitive.js
index d9c8713..c01b993 100644
--- a/implementors/num_enum/trait.TryFromPrimitive.js
+++ b/implementors/num_enum/trait.TryFromPrimitive.js
@@ -1,3 +1,3 @@
(function() {var implementors = {
-"deaf":[["impl TryFromPrimitive for Width"],["impl TryFromPrimitive for STBind"],["impl TryFromPrimitive for PHType"],["impl TryFromPrimitive for Layout"],["impl TryFromPrimitive for STType"],["impl TryFromPrimitive for SHType"]]
+"deaf":[["impl TryFromPrimitive for STVisibility"],["impl TryFromPrimitive for STBind"],["impl TryFromPrimitive for STType"],["impl TryFromPrimitive for PHType"],["impl TryFromPrimitive for SHType"],["impl TryFromPrimitive for Width"],["impl TryFromPrimitive for Layout"]]
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
\ No newline at end of file
diff --git a/search-index.js b/search-index.js
index 63a8899..575ba8c 100644
--- a/search-index.js
+++ b/search-index.js
@@ -1,5 +1,5 @@
var searchIndex = JSON.parse('{\
-"deaf":{"doc":"","t":"DDDLLLLLLLLLALLLLLLLALLLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLALLLLDNEDINNNNDNINNNNNNIDDENNNNENNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNENNNNNNNNNNNNNNNNNNNNNNNNNNNNNENNNENNNNNNNEENNIIINNNDINENNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRDRRRRRRRRRRRRRRRRRRRLLLLLLLLLLLLLLLLLLLMMMNENNNNNNNNNNNNNNNGNLLLLLLLLLLLLLLLLLLLLLLLLDDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMLLLLLLLLLLLLLLLLLLLLLLLLLMLLLGDGDGGDGGDDGGDDGGDIDILLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLF","n":["Binary","Section","Segment","body_size","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","common","convert","convert","convert","data","data_mut","entity_count","entity_size","errors","fmt","from","from","from","from","from","header","header_mut","headers","into","into","into","is_kind","kind","layout","layout","load","name","new","new","offset","phentsize","phnum","phoff","read","read","read_all","save","section","section_mut","section_name","section_names","sections","sections_mut","set_body_size","set_data","shentsize","shnum","shoff","shstrndx","size","size","slice","slice_mut","slice_mut_unchecked","slice_unchecked","tables","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","update","update","utilities","width","width","write","write","All","Big","ByteDelimiter","ByteIter","Convert","Dynamic","DynamicSymbols","Empty","ExtendedSymbols","Field","FiniArray","FromBytes","GNUHash","GNULibList","GNU_RELRO","Group","Hash","InitArray","IntoBytes","Item","ItemArray","Layout","Length","Little","Notes","Null","PHType","PT_DYNAMIC","PT_GNU_EH_FRAME","PT_GNU_PROPERTY","PT_GNU_STACK","PT_HIOS","PT_HIPROC","PT_INTERP","PT_LOAD","PT_LOOS","PT_LOPROC","PT_NOTE","PT_NULL","PT_PHDR","PT_SHLIB","PT_TLS","PreInitArray","Program","Ranges","Relocations","RelocationsAddend","Reserved","ReservedTypes","SHF_ALLOC","SHF_EXCLUDE","SHF_EXECINSTR","SHF_GROUP","SHF_INFO_LINK","SHF_LINK_ORDER","SHF_MERGE","SHF_ORDERED","SHF_OS_NONCONFORMING","SHF_STRINGS","SHF_TLS","SHF_WRITE","SHFlags","SHT_ARM_ATTRIBUTES","SHT_ARM_DEBUGOVERLAY","SHT_ARM_EXIDX","SHT_ARM_OVERLAYSECTION","SHT_ARM_PREEMPTMAP","SHT_DYNAMIC","SHT_DYNSYM","SHT_FINI_ARRAY","SHT_GNU_HASH","SHT_GNU_LIBLIST","SHT_GROUP","SHT_HASH","SHT_INIT_ARRAY","SHT_LOOS","SHT_NOBITS","SHT_NOTE","SHT_NULL","SHT_NUM","SHT_PREINIT_ARRAY","SHT_PROGBITS","SHT_REL","SHT_RELA","SHT_SHLIB","SHT_STRTAB","SHT_SYMTAB","SHT_SYMTAB_SHNDX","SHT_VERDEF","SHT_VERNEED","SHT_VERSYM","SHType","STB_GLOBAL","STB_LOCAL","STB_WEAK","STBind","STT_COMMON","STT_FILE","STT_FUNC","STT_NOTYPE","STT_OBJECT","STT_SECTION","STT_TLS","STType","SectionType","Strings","Symbols","T32Value","T64Value","TOutValue","Unknown","Unknown","Unknown","Update","Updateable","Value","Width","X32","X64","add","add_offset","apply","bitand","bitor","bits","bitxor","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clear","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","convert","convert","convert","convert","convert","convert","convert","convert","convert","convert","convert","convert","convert","convert","convert","convert","convert","convert","convert","convert","count","default","default","default","default","default","default","empty","eq","eq","eq","eq","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_bytes","from_primitive","get","get","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into_iter","item_offset","item_size","iterator","layout","layout","layout","length","length","make","make","new","new","new","new","next","not","offset","offset","parse","ranges","read","read","set","set","set_index","set_index","set_layout","set_layout","set_layout","set_offset","set_offset","set_width","set_width","set_width","size","size","to_bytes","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from_primitive","try_from_primitive","try_from_primitive","try_from_primitive","try_from_primitive","try_from_primitive","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_offset","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","update","update","value","width","width","width","with_index","with_last_offset","with_layout","with_layout","with_layout","with_offset","with_offset","with_value","with_width","with_width","with_width","write","ADDRESS","BLOOMSHIFT","BLOOMSIZE","EI_ABIVERSION","EI_CLASS","EI_DATA","EI_KEY","EI_MAGIC","EI_OSABI","EI_PAD","EI_VERSION","E_EHSIZE","E_ENTRY","E_FLAGS","E_MACHINE","E_PHENTSIZE","E_PHNUM","E_PHOFF","E_SHENTSIZE","E_SHNUM","E_SHOFF","E_SHSTRNDX","E_TYPE","E_VERSION","NBUCKETS","NCHAIN","P_ALIGN","P_FILESZ","P_FLAGS","P_MEMSZ","P_OFFSET","P_PADDR","P_TYPE","P_VADDR","RT_ADDEND","RT_INFO","RT_OFFSET","Ranges","SH_ADDR","SH_ADDRALIGN","SH_ENTSIZE","SH_FLAGS","SH_INFO","SH_LINK","SH_NAME","SH_OFFSET","SH_SIZE","SH_TYPE","ST_INFO","ST_NAME","ST_OTHER","ST_SHNDX","ST_SIZE","ST_VALUE","SYMOFFSET","VALUE4","VALUE8","at","at_mut","borrow","borrow_mut","clone","clone_into","convert","empty","fmt","from","get","into","into","new","size","to_owned","try_from","try_into","type_id","width","x32","x64","ConversionError","Error","FromBytesWithNulError","FromComplexError","FromPrimitiveError","FromStringError","IOError","InfallibleError","IntConvertError","IntoStringError","MalformedDataError","NotFound","OutOfBoundsError","ParseError","ParseUtf8Error","ParseValueError","PoisonError","Result","WrongSectionError","borrow","borrow_mut","convert","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","into","provide","source","to_string","try_from","try_into","type_id","FileHeader","ProgramHeader","SectionHeader","SectionHeaderData","abiversion","addralign","address","align","body_size","body_size","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","class","clone","clone_into","convert","convert","convert","convert","data","default","ehsize","entry","entsize","file_type","filesz","flags","flags","flags","fmt","fmt","fmt","fmt","from","from","from","from","from","info","into","into","into","into","kind","kind","layout","layout","layout","layout","link","machine","magic","memsz","name","new","new","new","offset","offset","osabi","paddr","parse","parse","parse","parse_all","parse_all","phentsize","phnum","phoff","read","read","read","set_abiversion","set_addralign","set_address","set_align","set_body_size","set_body_size","set_class","set_data","set_ehsize","set_entry","set_entsize","set_file_type","set_filesz","set_flags","set_flags","set_flags","set_info","set_kind","set_kind","set_layout","set_layout","set_layout","set_link","set_machine","set_magic","set_memsz","set_name","set_offset","set_offset","set_osabi","set_paddr","set_phentsize","set_phnum","set_phoff","set_shentsize","set_shnum","set_shoff","set_shstrndx","set_vaddr","set_version","set_width","set_width","set_width","sh_addralign","sh_address","sh_entsize","sh_flags","sh_info","sh_link","sh_name","sh_offset","sh_size","sh_type","shentsize","shnum","shoff","shstrndx","size","size","size","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vaddr","version","width","width","width","width","write","write","write","Array","ArrayItem","ArrayMut","RelItem","RelTable","RelTableMut","RelaItem","RelaTable","RelaTableMut","RelocationInfo","StringItem","StringTable","StringTableMut","SymbolInfo","SymbolItem","SymbolTable","SymbolTableMut","Table","TableItem","TableMut","TableView","addend","append","at","at","at_offset","at_offset","bind","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","convert","convert","convert","convert","convert","convert","convert","convert","convert","convert","convert","convert","data","data","default","default","default","default","default","default","default","delimiter","delimiter","delimiter","empty","eq","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","has_fixed_size","has_fixed_size","has_variable_size","has_variable_size","info","info","info","insert","into","into","into","into","into","into","into","into","into","items","items","iterator","iterator","kind","kind","layout","layout","len","len","name","new","offset","offset","offset","offset","other","parse","parse","prepend","read","read","read","read","read","read","remove","section","section","section","set_addend","set_info","set_info","set_info","set_kind","set_layout","set_layout","set_layout","set_layout","set_layout","set_layout","set_name","set_offset","set_offset","set_other","set_shndx","set_size","set_string","set_symbol","set_value","set_value","set_width","set_width","set_width","set_width","set_width","set_width","shndx","size","size","size","size","size","size","size","size","size","string","string_lossy","symbol","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","value","value","value","width","width","write","write","write","write","write","write","read"],"q":[[0,"deaf"],[85,"deaf::common"],[472,"deaf::common::ranges"],[551,"deaf::errors"],[594,"deaf::headers"],[754,"deaf::tables"],[1004,"deaf::utilities"]],"d":["An ELF formatted binary file","A Section extracted from an ELF file","A Segment extracted from an ELF file","","","","","","","","","","Common structs and types used by all other modules","","","","","","","","A custom error type that aggregates internal errors","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","File, program and section header definitions","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","Get the layout of the file (little or big endian)","","","","Create a new segment from a program header","Create a new section from a program header","","Get the size of program headers","Get the number of program headers in the file","Get the offset of the program header table","","","Parse all sections for a byte array given count, offset …","","","","","","","","","","Get the size of section headers","Get the number of section headers in the file","Get the offset of the section header table","","","","","","","","Various types of tables and associated table items","","","","","","","","","","","","","Utility functions for both testing and execution","Get the addressing width of the file (32, 64 etc)","","","","Placeholder target for Update","Big endian (e.g. 0xABCD is represented as ‘AB CD’ )","The delimiter used to determine the ending index of …","An iterator that uses a delimiting value or length to …","Convert a value into another value","","","","","A single field in a section, table item etc.","","Parse an object from bytes","","","","","","","Convert an object into bytes","An item in a section, table item etc that contains a field ","","The endianness of the ELF file","","Little endian (e.g. 0xABCD is represented as ‘CD AB’)","","","The type of a program header","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The flags of a particular section header","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The type of a section header","","","","The binding of a symbol entry from a static or dynamic …","","","","","","","","The type of a symbol entry from a static or dynamic symbol …","","","","","","","","","","Update for an object of type T","Trait to add an update function to structs that can be …","","The mode of the ELF file","Mode of the ELF file is 32-bit","Mode of the ELF file is 64-bit","Add a new update for type T","Set the offset of the array in the parsed data","Apply all updates for type T","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Clear all updates of type T","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Count updates of type T","","","","","","","Create a new field with an empty range","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Read the buffer and convert into the output value","Get the output value of the item","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Get the offset of a particular index in the array","Get the size of the item for the current width","Get an iterator over slices of the data","Get the layout of the field","Get the layout (little- or big-endian) of the item","Get the layout (little- or big-endian) of the item","Create a new iterator with a length delimiter","Get the length of the array, given the item count","Create a new item with ranges, width and layout","Create a new item array with given ranges, layout, and …","Create a new byte iterator with data and a delimiter","Create a new field from given ranges","Create a new item with given ranges","Create a new item array with given ranges","","","Skip directly to an offset in the data","Get the total offset at which the array will read","Builder method to parse a byte buffer","","Read the value if possible","Read a value at a particular index in the data","Convert output value and write to the buffer","Set the output value of the item","Set an index based on field size to read at","Set an index based on field size to read at","Set the layout of the field","Set the layout (little- or big-endian) of the item","Set the layout (little- or big-endian) of the item","Set an offset in bytes to read at","Set an offset in bytes to read at","Set the width of the field","Set the width (32- or 64-bit) of the item","Set the width (32- or 64-bit) of the item","The expected size in bytes of the output/input buffers","Get the size of the item if there is a value","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Skip directly to an offset in the data","","","","","","","","","","","","","","","","","","Create a new iterator with a value delimiter","Get the width of the field","Get the width (32- or 64-bit) of the item","Get the width (32- or 64-bit) of the item","Builder method to set an index","Builder method to set the last offset for the array","Builder method to set the layout of the field","Builder method to set the initial layout","Builder method to set the initial layout","Builder method to set an offset","Builder method to add an array offset","Builder method to set the initial value","Builder method to set the width of the field","Builder method to set the initial width","Builder method to set the initial width","Write the value if there is one","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","This struct maintains several ranges and returns them …","","","","","","","","","","","","","","","","","","","","Get a reference to the current Range","Get at mutable reference to the current Range","","","","","","Create an empty set of ranges","","Returns the argument unchanged.","Get the active Range depending on the current Width","Calls U::from(self).","","Create a new set of ranges given a 32- and 64-bit Range","Get the expected size in bytes of the current range","","","","","","","","A value could not be converted to a different …","Custom error type used everywhere in this crate","Bytes with no nul terminator could not be parsed as …","Could not parse complex type from primitive","Could not parse complex type from primitive","String with no nul terminator could not be parsed as …","Could not open a file for reading","This error will never actually be created","Could not convert integer to a different integer type","CString failed to convert to UTF-8 encoded String","Given data has missing or wrong values for the action","A resource could not be found","Collection was accessed with an out-of-bounds index","Binary data could not be parsed into fields","Bytes could not be converted to UTF-8 encoded String","Failed to convert bytes to a value representation","Failed to access shared data because Mutex is poisoned","Type alias for ‘Result’ that uses our Error type","Filed to convert section to a table or array","","","","","","Returns the argument unchanged.","","","","","","","","","","","","Calls U::from(self).","","","","","","","The ELF file header parsed from the beginning of the file","Program headers extracted from an ELF file.","Section headers extracted from an ELF file.","","Get the abiversion attribute of the header","Get the sh_addralign attribute of the header","Get the sh_address attribute of the header","Get the p_align attribute of the header","Get the p_filesz attribute of the header","Get the sh_size attribute of the header","","","","","","","","","Get the ei_class attribute of the header","","","","","","","Get the ei_data attribute of the header","","Get the e_ehsize attribute of the header","Get the e_entry attribute of the header","Get the sh_entsize attribute of the header","Get the e_type attribute of the header","Get the p_filesz attribute of the header","Get the e_flags attribute of the header","Get the p_flags attribute of the header","Get the sh_flags attribute of the header","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Get the sh_info attribute of the header","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Get the p_type attribute of the header","Get the sh_type attribute of the header","Get the layout (little or big-endian) of the header","Get the layout (little or big-endian) of the header","Get the layout (little or big-endian) of the header","","Get the sh_link attribute of the header","Get the e_machine attribute of the header","Get the ei_magic attribute of the header","Get the p_memsz attribute of the header","Get the sh_name attribute of the header","Create a new header with given Layout and Width","Create a new header with given Layout and Width","Create a new header with given Layout and Width","Get the p_offset attribute of the header","Get the sh_offset attribute of the header","Get the ei_osabi attribute of the header","Get the p_paddr attribute of the header","Parse a header from the provided byte buffer","Parse a header from the provided byte buffer","Parse a header from the provided byte buffer","Parse all headers for a byte array given count, offset etc.","Parse all headers for a byte array given count, offset etc.","Get the e_phentsize attribute of the header","Get the e_phnum attribute of the header","Get the e_phoff attribute of the header","Read values from a byte buffer ","Read values from a byte buffer ","Read values from a byte buffer ","Set the abiversion attribute of the header ","Set the sh_addralign attribute of the header ","Set the sh_address attribute of the header ","Set the p_align attribute of the header ","Set the p_filesz attribute of the header ","Set the sh_size attribute of the header ","Set the ei_class attribute of the header ","Set the ei_data attribute of the header ","Set the e_ehsize attribute of the header ","Set the e_entry attribute of the header ","Set the sh_entsize attribute of the header ","Set the e_type attribute of the header ","Set the p_filesz attribute of the header ","Set the e_flags attribute of the header ","Set the p_flags attribute of the header ","Set the sh_flags attribute of the header ","Set the sh_info attribute of the header ","Set the p_type attribute of the header ","Set the sh_type attribute of the header ","Set the layout of the header","Set the layout of the header","Set the layout of the header","Set the sh_link attribute of the header ","Set the e_machine attribute of the header ","Set the ei_magic attribute of the header ","Set the p_memsz attribute of the header ","Set the sh_name attribute of the header ","Set the p_offset attribute of the header ","Set the sh_offset attribute of the header ","Set the ei_osabi attribute of the header ","Set the p_paddr attribute of the header ","Set the e_phentsize attribute of the header ","Set the e_phnum attribute of the header ","Set the e_phoff attribute of the header ","Set the e_shentsize attribute of the header ","Set the e_shnum attribute of the header ","Set the e_shoff attribute of the header ","Set the e_shstrndx attribute of the header ","Set the p_vaddr attribute of the header ","Set the ei_version attribute of the header ","Set the width of the header","Set the width of the header","Set the width of the header","","","","","","","","","","","Get the e_shentsize attribute of the header","Get the e_shnum attribute of the header","Get the e_shoff attribute of the header","Get the e_shstrndx attribute of the header","The size of the header in bytes","The size of the header in bytes","The size of the header in bytes","","","","","","","","","","","","","","Get the p_vaddr attribute of the header","Get the ei_version attribute of the header","Get the width (32 or 64-bit) of the header","Get the width (32 or 64-bit) of the header","Get the width (32 or 64-bit) of the header","","Write values to a byte buffer ","Write values to a byte buffer ","Write values to a byte buffer ","","A specialization of item for reading addresses from Arrays","","A Relocation item found in relocation tables","","","A Relocation item found in relocation tables","","","Representation of the info field in a Relocation record","A String item found in string tables","","","Representation of the info field in a Symbol record","A Symbol item found in symbol tables","","","A Section represented as an immutable Table","A record that can be extracted from a table section","A Section represented as a mutable Table","Shared table interface between Table and TableMut","Get the ‘r_addend’ attribute of the relocation","Append an item to the table","Get an element from the table","Get an element from the table","Get an element from the table at a byte offset","Get an element from the table at a byte offset","Get the ‘bind’ component of the info struct","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Get a slice of data that represents an item","Get a slice of data that represents an item","","","","","","","","Make a delimiter given expected entity size","Make a delimiter given expected entity size","","Initialize an empty symbol info instance","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","True if items are all the same size","True if items are all the same size","True if items can be different sizes","True if items can be different sizes","Get the ‘st_info’ attribute of the symbol","Get the ‘r_info’ attribute of the relocation","Get the ‘r_info’ attribute of the relocation","Insert an item into the table","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Get all items from the table","Get all items from the table","Get an iterator over each item’s binary data","Get an iterator over each item’s binary data","Get the ‘kind’ component of the info struct","Get the ‘kind’ component of the info struct","Get the layout being used by this table","Get the layout being used by this table","Get the number of items in the table","Get the number of items in the table","Get the ‘st_name’ attribute (name index) of the symbol","Parse a combined value as an info struct","Get the offset of an item from the index","Get the offset of an item from the index","Get the ‘r_offset’ attribute of the relocation","Get the ‘r_offset’ attribute of the relocation","Get the ‘st_other’ attribute of the symbol","Parse the item directly from the byte array","Parse the item directly from the byte array","Prepend an item to the table","Read the item from a byte array","","","","","","Remove an item from the table by index","Get an immutable reference to the internal section","","","Set the ‘r_addend’ attribute of the relocation","Set the ‘st_info’ attribute of the symbol","Set the ‘r_info’ attribute of the relocation","Set the ‘r_info’ attribute of the relocation","Set the ‘kind’ component of the info struct","Set the layout if necessary","Set the layout if necessary","","","","","Set the ‘st_name’ attribute (name index) of the symbol","Set the ‘r_offset’ attribute of the relocation","Set the ‘r_offset’ attribute of the relocation","Set the ‘st_other’ attribute of the symbol","Set the ‘st_shndx’ attribute of the symbol","Set the ‘st_size’ attribute of the symbol","Set the string value of the table item","Set the ‘symbol’ component of the info struct","Set the ‘st_value’ attribute of the symbol","Set the internal value","Set the width if necessary","Set the width if necessary","","","","","Get the ‘st_shndx’ attribute of the symbol","Get the calculated size of the item","Get the number of bytes in the table","Get the number of bytes in the table","","Get the ‘st_size’ attribute of the symbol","","","","","Get the string value of the table item","Get the string value of the table item","Get the ‘symbol’ component of the info struct","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Get the combined value of the info struct","Get the ‘st_value’ attribute of the symbol","Get the internal value ","Get the width being used by this table","Get the width being used by this table","Write the item to a byte array","","","","","",""],"i":[0,0,0,1,22,16,1,22,16,1,1,1,0,22,16,1,1,1,1,1,0,1,22,16,1,1,1,1,1,0,22,16,1,1,1,16,1,16,1,22,1,1,16,16,16,16,1,1,16,16,16,16,16,16,16,1,1,16,16,16,16,16,1,1,1,1,1,0,1,22,16,1,22,16,1,22,16,1,16,1,0,16,1,16,1,0,17,0,0,0,14,14,14,14,0,14,0,14,14,42,14,14,14,0,0,0,0,51,17,14,14,0,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,14,14,0,14,14,14,14,34,34,34,34,34,34,34,34,34,34,34,34,0,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,0,44,44,44,0,45,45,45,45,45,45,45,0,0,14,14,0,0,0,14,42,43,0,0,51,0,24,24,86,33,86,34,34,34,34,87,86,51,49,40,41,14,33,24,17,42,43,34,44,45,87,86,51,49,40,41,14,33,24,17,42,43,34,44,45,86,40,41,14,33,24,17,42,43,34,44,45,40,41,14,33,24,17,42,43,34,44,45,37,87,86,51,49,40,41,14,33,24,24,17,17,42,42,43,43,34,44,45,86,24,17,42,43,44,45,40,41,14,24,17,42,43,34,44,45,40,41,14,24,17,42,43,34,44,45,87,86,51,49,40,41,14,14,33,24,17,42,43,43,43,34,44,45,35,43,40,41,87,86,51,49,40,41,14,33,24,17,42,43,34,44,45,49,33,33,33,40,41,33,49,33,41,33,49,40,41,33,49,34,49,33,41,0,41,33,40,41,40,41,40,41,33,40,41,40,41,33,40,41,36,40,41,14,33,24,17,42,43,34,44,45,87,86,51,49,40,41,14,33,24,24,17,17,42,42,43,34,44,44,45,45,24,17,42,43,44,45,87,86,51,49,40,41,14,33,24,17,42,43,34,44,45,49,87,86,51,49,40,41,14,33,24,17,42,43,34,44,45,88,88,49,40,41,33,41,33,40,41,33,41,33,41,40,41,33,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,3,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,70,13,13,21,21,13,70,21,13,72,70,21,13,72,70,13,13,70,21,13,72,70,72,70,70,13,70,21,70,21,13,70,21,13,72,70,21,13,13,72,13,70,21,13,72,21,13,70,21,13,72,13,70,70,21,13,70,21,13,21,13,70,21,70,21,13,21,13,70,70,70,70,21,13,70,13,13,21,21,13,70,70,70,70,13,70,21,70,21,13,13,21,13,70,21,13,13,70,70,21,13,21,13,70,21,70,70,70,70,70,70,70,21,70,70,21,13,72,72,72,72,72,72,72,72,72,72,70,70,70,70,70,21,13,13,70,21,13,72,70,21,13,72,70,21,13,72,21,70,70,21,13,72,70,21,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,11,89,89,89,89,77,12,11,77,78,79,80,81,75,82,12,11,77,78,79,80,81,75,82,77,78,79,80,81,75,82,77,78,79,80,81,75,82,12,11,77,77,78,78,78,79,80,81,75,82,89,89,77,78,79,80,81,75,82,9,9,79,77,77,78,79,81,75,82,77,78,79,80,12,12,11,77,78,79,80,81,75,82,82,89,89,89,89,80,81,75,11,12,11,77,78,79,80,81,75,82,89,89,89,89,77,78,89,89,89,89,80,77,89,89,81,75,80,9,9,11,9,79,80,81,75,82,11,89,12,11,75,80,81,75,78,9,9,80,81,75,82,80,81,75,80,80,80,79,78,80,82,9,9,80,81,75,82,80,9,89,89,79,80,80,81,75,82,79,79,78,77,78,79,80,81,75,82,12,12,12,12,12,12,11,11,11,11,11,11,77,78,79,79,79,80,81,75,82,12,11,77,78,79,80,81,75,82,12,11,77,78,79,80,81,75,82,77,80,82,89,89,9,79,80,81,75,82,0],"f":[0,0,0,[1,2],[[]],[[]],[[]],[[]],[[]],[[]],[1,1],[[]],0,[[],[[4,[3]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[1,[[6,[5]]]],[1,[[6,[5]]]],[1,2],[1,2],0,[[1,7],8],[[]],[[]],[[]],[[[11,[[0,[9,10]]]]],1],[[[12,[[0,[9,10]]]]],1],[1,13],[1,13],0,[[]],[[]],[[]],[[1,14],15],[1,14],[16,17],[1,17],[[[19,[18]]],[[20,[16]]]],[1,2],[[21,[6,[5]]],22],[13,1],[1,2],[16,2],[16,2],[16,2],[[16,[23,[5]]],[[20,[2]]]],[[13,[23,[5]]],[[20,[1]]]],[[[23,[5]],2,2,2,17,24],[[20,[[6,[1]]]]]],[[16,[19,[18]]],[[20,[2]]]],[[16,2],[[20,[1]]]],[[16,2],[[20,[1]]]],[[16,2],[[20,[25]]]],[16,[[20,[[6,[25]]]]]],[[16,14],[[6,[1]]]],[[16,14],[[6,[1]]]],[[1,2]],[[1,[6,[5]]]],[16,2],[16,2],[16,2],[16,2],[16,2],[1,2],[[1,2,2],[[20,[[23,[5]]]]]],[[1,2,2],[[20,[[23,[5]]]]]],[[1,2,2],[[23,[5]]]],[[1,2,2],[[23,[5]]]],0,[[]],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],26],[[],26],[[],26],[16],[1],0,[16,24],[1,24],[[16,[23,[5]]],[[20,[2]]]],[[1,[23,[5]],2,2],[[20,[2]]]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[0,[27,28,29]]]],[[[33,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]],2]],[[[0,[28,29]]]],[[34,34]],[[34,34]],[34],[[34,34]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[40,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38,39]]]],39]]]],[37,[[0,[35,36,[37,[[0,[37,37,38,39]]]],39]]]],38,39]]]],39]],[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38,39]]]],39]]]],[37,[[0,[35,36,[37,[[0,[37,37,38,39]]]],39]]]],38,39]]]],39]],[0,[[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37,39]]]],[37,[[0,[35,36,37,39]]]],38,39]]]],39]]]],[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37,39]]]],[37,[[0,[35,36,37,39]]]],38,39]]]],39]]]],38,39]]]]],[[40,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38,39]]]],39]]]],[37,[[0,[35,36,[37,[[0,[37,37,38,39]]]],39]]]],38,39]]]],39]],[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38,39]]]],39]]]],[37,[[0,[35,36,[37,[[0,[37,37,38,39]]]],39]]]],38,39]]]],39]],[0,[[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37,39]]]],[37,[[0,[35,36,37,39]]]],38,39]]]],39]]]],[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37,39]]]],[37,[[0,[35,36,37,39]]]],38,39]]]],39]]]],38,39]]]]]],[[[41,[[0,[[31,[[0,[[30,[[0,[[31,[[0,[30,39]]]],39]],[0,[[32,[[0,[30,39]]]],39]]]],39]]]],39]],[0,[[32,[[0,[[30,[[0,[[31,[[0,[30,39]]]],39]],[0,[[32,[[0,[30,39]]]],39]]]],39]]]],39]],[0,[[30,[[0,[[31,[[0,[[30,[[0,[31,39]],[0,[32,39]]]],39]]]],39]],[0,[[32,[[0,[[30,[[0,[31,39]],[0,[32,39]]]],39]]]],39]]]],39]]]]],[[41,[[0,[[31,[[0,[[30,[[0,[[31,[[0,[30,39]]]],39]],[0,[[32,[[0,[30,39]]]],39]]]],39]]]],39]],[0,[[32,[[0,[[30,[[0,[[31,[[0,[30,39]]]],39]],[0,[[32,[[0,[30,39]]]],39]]]],39]]]],39]],[0,[[30,[[0,[[31,[[0,[[30,[[0,[31,39]],[0,[32,39]]]],39]]]],39]],[0,[[32,[[0,[[30,[[0,[31,39]],[0,[32,39]]]],39]]]],39]]]],39]]]]]],[14,14],[[[33,[[0,[[31,[[0,[[30,[[0,[[31,[[0,[30,39]]]],39]],[0,[[32,[[0,[30,39]]]],39]]]],39]]]],39]],[0,[[32,[[0,[[30,[[0,[[31,[[0,[30,39]]]],39]],[0,[[32,[[0,[30,39]]]],39]]]],39]]]],39]],[0,[[30,[[0,[[31,[[0,[[30,[[0,[31,39]],[0,[32,39]]]],39]]]],39]],[0,[[32,[[0,[[30,[[0,[31,39]],[0,[32,39]]]],39]]]],39]]]],39]]]]],[[33,[[0,[[31,[[0,[[30,[[0,[[31,[[0,[30,39]]]],39]],[0,[[32,[[0,[30,39]]]],39]]]],39]]]],39]],[0,[[32,[[0,[[30,[[0,[[31,[[0,[30,39]]]],39]],[0,[[32,[[0,[30,39]]]],39]]]],39]]]],39]],[0,[[30,[[0,[[31,[[0,[[30,[[0,[31,39]],[0,[32,39]]]],39]]]],39]],[0,[[32,[[0,[[30,[[0,[31,39]],[0,[32,39]]]],39]]]],39]]]],39]]]]]],[24,24],[17,17],[42,42],[43,43],[34,34],[44,44],[45,45],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],[[20,[46]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[24,[[20,[5]]]],[[],[[4,[3]]]],[17,[[20,[5]]]],[[],[[4,[3]]]],[42,[[20,[47]]]],[43,[[20,[47]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[[],2],[[],24],[[],17],[[],42],[[],43],[[],44],[[],45],[[],[[40,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],38]]]]]],[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],38]]]]]],[0,[[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37]]]],[37,[[0,[35,36,37]]]],38]]]]]]]],[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37]]]],[37,[[0,[35,36,37]]]],38]]]]]]]],38]]]]]],[[[41,[[31,[[0,[[30,[[31,[[0,[30,48]]]],[32,[[0,[30,48]]]]]],48]]]],[32,[[0,[[30,[[31,[[0,[30,48]]]],[32,[[0,[30,48]]]]]],48]]]],[0,[[30,[[31,[[0,[[30,[31,32]],48]]]],[32,[[0,[[30,[31,32]],48]]]]]],48]]]],[41,[[31,[[0,[[30,[[31,[[0,[30,48]]]],[32,[[0,[30,48]]]]]],48]]]],[32,[[0,[[30,[[31,[[0,[30,48]]]],[32,[[0,[30,48]]]]]],48]]]],[0,[[30,[[31,[[0,[[30,[31,32]],48]]]],[32,[[0,[[30,[31,32]],48]]]]]],48]]]]],15],[[14,14],15],[[24,24],15],[[17,17],15],[[42,42],15],[[43,43],15],[[34,34],15],[[44,44],15],[[45,45],15],[[[40,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38,38]]]],38]]]],[37,[[0,[35,36,[37,[[0,[37,37,38,38]]]],38]]]],38,38]]]],38]],[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38,38]]]],38]]]],[37,[[0,[35,36,[37,[[0,[37,37,38,38]]]],38]]]],38,38]]]],38]],[0,[[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37,38]]]],[37,[[0,[35,36,37,38]]]],38,38]]]],38]]]],[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37,38]]]],[37,[[0,[35,36,37,38]]]],38,38]]]],38]]]],38,38]]]],7],8],[[[41,[[0,[[31,[[0,[[30,[[0,[[31,[[0,[30,38]]]],38]],[0,[[32,[[0,[30,38]]]],38]]]],38]]]],38]],[0,[[32,[[0,[[30,[[0,[[31,[[0,[30,38]]]],38]],[0,[[32,[[0,[30,38]]]],38]]]],38]]]],38]],[0,[[30,[[0,[[31,[[0,[[30,[[0,[31,38]],[0,[32,38]]]],38]]]],38]],[0,[[32,[[0,[[30,[[0,[31,38]],[0,[32,38]]]],38]]]],38]]]],38]]]],7],8],[[14,7],8],[[24,7],8],[[17,7],8],[[42,7],8],[[43,7],8],[[34,7],8],[[44,7],8],[[45,7],8],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[43,14],[[]],[[]],[[]],[[]],[14,43],[[]],[47,43],[[]],[[]],[[]],[[[23,[5]],17],[[20,[46]]]],[[],43],[[[40,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],38]]]]]],[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],38]]]]]],[0,[[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37]]]],[37,[[0,[35,36,37]]]],38]]]]]]]],[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37]]]],[37,[[0,[35,36,37]]]],38]]]]]]]],38]]]],[23,[5]]],[[20,[[0,[[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37]]]],[37,[[0,[35,36,37]]]],38]]]]]]]],[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37]]]],[37,[[0,[35,36,37]]]],38]]]]]]]],38]]]]]],[[[41,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]]],[[30,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[33,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]],2],2],[[[33,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]]],2],[[[33,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]],[23,[5]]],49],[[[40,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],38]]]]]],[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],38]]]]]],[0,[[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37]]]],[37,[[0,[35,36,37]]]],38]]]]]]]],[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37]]]],[37,[[0,[35,36,37]]]],38]]]]]]]],38]]]]],17],[[[41,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]]],17],[[[33,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]]],17],[[[23,[5]],2],49],[[[33,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]],2],2],[[50,24,17],[[41,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]]]],[[50,24,17],[[33,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]]]],[[[23,[5]],51],49],[50,[[40,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],38]]]]]],[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],38]]]]]],[0,[[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37]]]],[37,[[0,[35,36,37]]]],38]]]]]]]],[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37]]]],[37,[[0,[35,36,37]]]],38]]]]]]]],38]]]]]],[50,[[41,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]]]],[50,[[33,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]]]],[49,52],[34],[[49,2],49],[[[33,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]]],2],[[[41,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]],[23,[5]]],[[20,[[41,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]]]]]],0,[[[41,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]],[23,[5]]],[[20,[[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]]]],[[[33,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]],[23,[5]],2],[[20,[[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]]]],[[[40,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],38]]]]]],[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],38]]]]]],[0,[[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37]]]],[37,[[0,[35,36,37]]]],38]]]]]]]],[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37]]]],[37,[[0,[35,36,37]]]],38]]]]]]]],38]]]],[23,[5]],[0,[[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],38]]]]]]]],[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],38]]]]]]]],38]]],20],[[[41,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]],[30,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]]]]]],[[[40,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],38]]]]]],[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],38]]]]]],[0,[[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37]]]],[37,[[0,[35,36,37]]]],38]]]]]]]],[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37]]]],[37,[[0,[35,36,37]]]],38]]]]]]]],38]]]],2]],[[[41,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]],2]],[[[40,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],38]]]]]],[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],38]]]]]],[0,[[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37]]]],[37,[[0,[35,36,37]]]],38]]]]]]]],[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37]]]],[37,[[0,[35,36,37]]]],38]]]]]]]],38]]]],17]],[[[41,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]],17]],[[[33,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]],17]],[[[40,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],38]]]]]],[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],38]]]]]],[0,[[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37]]]],[37,[[0,[35,36,37]]]],38]]]]]]]],[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37]]]],[37,[[0,[35,36,37]]]],38]]]]]]]],38]]]],2]],[[[41,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]],2]],[[[40,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],38]]]]]],[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],38]]]]]],[0,[[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37]]]],[37,[[0,[35,36,37]]]],38]]]]]]]],[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37]]]],[37,[[0,[35,36,37]]]],38]]]]]]]],38]]]],24]],[[[41,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]],24]],[[[33,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]],24]],[[[40,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],38]]]]]],[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],38]]]]]],[0,[[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37]]]],[37,[[0,[35,36,37]]]],38]]]]]]]],[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37]]]],[37,[[0,[35,36,37]]]],38]]]]]]]],38]]]]],2],[[[41,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]]],2],[[[23,[5]],17],20],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[5,[[4,[24,[53,[24]]]]]],[5,[[4,[17,[53,[17]]]]]],[[],4],[[],4],[47,[[4,[42,[53,[42]]]]]],[[],4],[[],4],[[],4],[5,[[4,[44,[53,[44]]]]]],[5,[[4,[45,[53,[45]]]]]],[[],4],[[],[[4,[24,[53,[24]]]]]],[[],[[4,[17,[53,[17]]]]]],[[],[[4,[42,[53,[42]]]]]],[[],[[4,[43,[53,[43]]]]]],[[],[[4,[44,[53,[44]]]]]],[[],[[4,[45,[53,[45]]]]]],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[49,[54,[2]]],[[20,[49]]]],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[[0,[28,29,46]]]],[[[0,[28,29,46]]]],[[[23,[5]],5],49],[[[40,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],38]]]]]],[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],38]]]]]],[0,[[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37]]]],[37,[[0,[35,36,37]]]],38]]]]]]]],[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37]]]],[37,[[0,[35,36,37]]]],38]]]]]]]],38]]]]],24],[[[41,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]]],24],[[[33,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]]],24],[[[41,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]],2],[[41,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]]]],[[[33,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]],2],[[33,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]]]],[[[40,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],38]]]]]],[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],38]]]]]],[0,[[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37]]]],[37,[[0,[35,36,37]]]],38]]]]]]]],[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37]]]],[37,[[0,[35,36,37]]]],38]]]]]]]],38]]]],17],[[40,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],38]]]]]],[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],38]]]]]],[0,[[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37]]]],[37,[[0,[35,36,37]]]],38]]]]]]]],[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37]]]],[37,[[0,[35,36,37]]]],38]]]]]]]],38]]]]]],[[[41,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]],17],[[41,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]]]],[[[33,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]],17],[[33,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]]]],[[[41,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]],2],[[41,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]]]],[[[33,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]],2],[[33,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]]]],[[[41,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]],[30,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]]]]],[[41,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]]]],[[[40,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],38]]]]]],[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],38]]]]]],[0,[[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37]]]],[37,[[0,[35,36,37]]]],38]]]]]]]],[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37]]]],[37,[[0,[35,36,37]]]],38]]]]]]]],38]]]],24],[[40,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],38]]]]]],[0,[35,36,[37,[[0,[[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],[37,[[0,[35,36,[37,[[0,[37,37,38]]]]]]]],38]]]]]],[0,[[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37]]]],[37,[[0,[35,36,37]]]],38]]]]]]]],[37,[[0,[35,36,[37,[[0,[[37,[[0,[35,36,37]]]],[37,[[0,[35,36,37]]]],38]]]]]]]],38]]]]]],[[[41,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]],24],[[41,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]]]],[[[33,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]],24],[[33,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]]]],[[[41,[[31,[[30,[[31,[30]],[32,[30]]]]]],[32,[[30,[[31,[30]],[32,[30]]]]]],[30,[[31,[[30,[31,32]]]],[32,[[30,[31,32]]]]]]]],[23,[5]]],20],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[50,[[55,[2]]]],[50,[[55,[2]]]],[[]],[[]],[50,50],[[]],[[],[[4,[3]]]],[[],50],[[50,7],8],[[]],[50,[[55,[2]]]],[[]],[50,[[55,[2]]]],[[[55,[2]],[55,[2]]],50],[50,2],[[]],[[],4],[[],4],[[],26],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[],[[4,[3]]]],[[3,7],8],[[3,7],8],[[]],[56,3],[57,3],[58,3],[59,3],[60,3],[61,3],[62,3],[[[64,[63]]],3],[65,3],[66,3],[[[53,[67]]],3],[[]],[68],[3,[[52,[69]]]],[[],25],[[],4],[[],4],[[],26],0,0,0,0,[70,5],[13,71],[13,71],[21,71],[21,2],[13,2],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[70,24],[13,13],[[]],[[],[[4,[3]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[70,17],[[],72],[70,73],[70,71],[13,2],[70,73],[21,2],[70,47],[21,47],[13,[[74,[34]]]],[[70,7],8],[[21,7],8],[[13,7],8],[[72,7],8],[[]],[[]],[72,13],[[]],[[]],[13,47],[[]],[[]],[[]],[[]],[21,42],[13,43],[70,17],[21,17],[13,17],0,[13,47],[70,73],[70,25],[21,71],[13,47],[[],70],[[17,24],21],[[17,24],13],[21,2],[13,2],[70,5],[21,71],[[[23,[5]]],[[20,[70]]]],[[[23,[5]],17,24],[[20,[21]]]],[[[23,[5]],17,24],[[20,[13]]]],[[[23,[5]],2,2,2,17,24],[[20,[[6,[21]]]]]],[[[23,[5]],2,2,2,17,24],[[20,[[6,[13]]]]]],[70,2],[70,2],[70,2],[[70,[23,[5]]],20],[[21,[23,[5]]],20],[[13,[23,[5]]],20],[[70,5]],[[13,71]],[[13,71]],[[21,71]],[[21,2]],[[13,2]],[[70,24]],[[70,17]],[[70,73]],[[70,71]],[[13,2]],[[70,73]],[[21,2]],[[70,47]],[[21,47]],[[13,[74,[34]]]],[[13,47]],[[21,42]],[[13,43]],[[70,17]],[[21,17]],[[13,17]],[[13,47]],[[70,73]],[[70,25]],[[21,71]],[[13,47]],[[21,2]],[[13,2]],[[70,5]],[[21,71]],[[70,2]],[[70,2]],[[70,2]],[[70,2]],[[70,2]],[[70,2]],[[70,2]],[[21,71]],[[70,5]],[[70,24]],[[21,24]],[[13,24]],0,0,0,0,0,0,0,0,0,0,[70,2],[70,2],[70,2],[70,2],[70,2],[21,2],[13,2],[[]],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],26],[[],26],[[],26],[[],26],[21,71],[70,5],[70,24],[21,24],[13,24],0,[[70,[23,[5]]],20],[[21,[23,[5]]],20],[[13,[23,[5]]],20],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[75,76],[[[11,[[0,[9,10]]]],[0,[9,10]]],[[20,[2]]]],[2,20],[2,20],[2,20],[2,20],[77,44],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[77,77],[78,78],[79,79],[80,80],[81,81],[75,75],[82,82],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],[[4,[3]]]],[[],[[4,[3]]]],[77,[[20,[5]]]],[[],[[4,[3]]]],[78,[[20,[71]]]],[[],[[4,[3]]]],[78,[[20,[47]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[2,[[20,[[23,[5]]]]]],[2,[[20,[[23,[5]]]]]],[[],77],[[],78],[[],79],[[],80],[[],81],[[],75],[[],82],[2,51],[2,51],[2,51],[[],77],[[77,77],15],[[78,78],15],[[79,79],15],[[81,81],15],[[75,75],15],[[82,82],15],[[77,7],8],[[78,7],8],[[79,7],8],[[80,7],8],[[[11,[[0,[9,10]]]]],[[12,[[0,[9,10]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[76,82],[[]],[[],15],[[],15],[[],15],[[],15],[80,77],[81,78],[75,78],[[[11,[[0,[9,10]]]],2,[0,[9,10]]],[[20,[2]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],[[20,[6]]]],[[],[[20,[6]]]],[[],49],[[],49],[77,45],[78,5],[[],17],[[],17],[[],2],[[],2],[80,47],[5,[[20,[77]]]],[2,2],[2,2],[81,71],[75,71],[80,5],[[[23,[5]],1],[[20,[46]]]],[[[23,[5]],1],[[20,[46]]]],[[[11,[[0,[9,10]]]],[0,[9,10]]],[[20,[2]]]],[[[23,[5]]],20],[[79,[23,[5]]],20],[[80,[23,[5]]],20],[[81,[23,[5]]],20],[[75,[23,[5]]],20],[[82,[23,[5]]],20],[[[11,[[0,[9,10]]]],2],[[20,[[0,[9,10]]]]]],[[],1],[[[12,[[0,[9,10]]]]],1],[[[11,[[0,[9,10]]]]],1],[[75,76]],[[80,77]],[[81,78]],[[75,78]],[[78,5]],[17],[17],[[80,17]],[[81,17]],[[75,17]],[[82,17]],[[80,47]],[[81,71]],[[75,71]],[[80,5]],[[80,73]],[[80,71]],[[79,25],20],[[78,71]],[[80,71]],[[82,76]],[24],[24],[[80,24]],[[81,24]],[[75,24]],[[82,24]],[80,73],[[],2],[[],2],[[],2],[79,2],[80,71],[80,2],[81,2],[75,2],[82,2],[79,[[20,[25]]]],[79,25],[78,71],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[1,[[20,[[12,[79]]]]]],[[],4],[1,[[20,[[12,[75]]]]]],[1,[[20,[[12,[80]]]]]],[1,[[20,[[12,[81]]]]]],[1,[[20,[[12,[82]]]]]],[1,[[20,[[11,[80]]]]]],[1,[[20,[[11,[75]]]]]],[1,[[20,[[11,[82]]]]]],[1,[[20,[[11,[79]]]]]],[[],4],[1,[[20,[[11,[81]]]]]],[[],4],[[],4],[83,[[20,[79]]]],[25,[[20,[79]]]],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[77,5],[80,71],[82,76],[[],24],[[],24],[[[23,[5]]],20],[[79,[23,[5]]],20],[[80,[23,[5]]],20],[[81,[23,[5]]],20],[[75,[23,[5]]],20],[[82,[23,[5]]],20],[[[85,[84]]],[[20,[[6,[5]]]]]]],"c":[],"p":[[3,"Section"],[15,"usize"],[4,"Error"],[4,"Result"],[15,"u8"],[3,"Vec"],[3,"Formatter"],[6,"Result"],[8,"TableItem"],[8,"Default"],[3,"TableMut"],[3,"Table"],[3,"SectionHeader"],[4,"SectionType"],[15,"bool"],[3,"Binary"],[4,"Layout"],[3,"Path"],[8,"AsRef"],[6,"Result"],[3,"ProgramHeader"],[3,"Segment"],[15,"slice"],[4,"Width"],[3,"String"],[3,"TypeId"],[8,"Fn"],[8,"Send"],[8,"Sync"],[8,"TOutValue"],[8,"T32Value"],[8,"T64Value"],[3,"ItemArray"],[4,"SHFlags"],[8,"FromBytes"],[8,"IntoBytes"],[8,"Convert"],[8,"Debug"],[8,"Clone"],[3,"Field"],[3,"Item"],[4,"PHType"],[4,"SHType"],[4,"STBind"],[4,"STType"],[8,"Sized"],[15,"u32"],[8,"PartialEq"],[3,"ByteIter"],[3,"Ranges"],[4,"ByteDelimiter"],[4,"Option"],[3,"TryFromPrimitiveError"],[8,"TryInto"],[3,"Range"],[3,"IntoStringError"],[3,"TryFromSliceError"],[3,"PoisonError"],[3,"FromBytesWithNulError"],[3,"Error"],[3,"Utf8Error"],[3,"TryFromIntError"],[8,"BitFlag"],[3,"FromBitsError"],[4,"Infallible"],[3,"NulError"],[8,"TryFromPrimitive"],[3,"Demand"],[8,"Error"],[3,"FileHeader"],[15,"u64"],[3,"SectionHeaderData"],[15,"u16"],[3,"BitFlags"],[3,"RelaItem"],[15,"i64"],[3,"SymbolInfo"],[3,"RelocationInfo"],[3,"StringItem"],[3,"SymbolItem"],[3,"RelItem"],[3,"ArrayItem"],[15,"str"],[3,"PathBuf"],[8,"Into"],[3,"Update"],[3,"All"],[8,"Updateable"],[8,"TableView"]]}\
+"deaf":{"doc":"","t":"DDDLLLLLLLLLALLLLLLLLLALLLLLLLLLLALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLALLLLLDNEDINNNNDNINNNNNNIDDENNNNENNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNENNNNNNNNNNNNNNNNNNNNNNNNNNNNNENNNENNNNNNNENNNNEENNIIINNNDINENNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLALLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRDRRRRRRRRRRRRRRRRRRRLLLLLLLLLLLLLLLLLLLMMMNENNNNNNNNNNNNNNNGNNLLLLLLLLLLLLLLLLLLLLLLLLDDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMMMMMMLLLLLLLLLLLLLLLLLLLLLLLLLMLLLGDGDGGDGGDDGGGGDIDILLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLKLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLF","n":["Binary","Section","Segment","body_size","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","common","convert","convert","convert","data","data","data_mut","end","entity_count","entity_size","errors","fmt","from","from","from","from","from","functions","functions_ex","header","header_mut","headers","into","into","into","is_kind","kind","layout","layout","load","name","name_index","new","new","offset","phentsize","phnum","phoff","process","read","read","read_all","save","section","section_for_address","section_mut","section_name","section_names","sections","sections_mut","set_body_size","set_data","set_name","shentsize","shnum","shoff","shstrndx","size","size","slice","slice_mut","slice_mut_unchecked","slice_unchecked","start","string_tables","symbol_name","symbol_tables","symbol_tables_mut","symbols","tables","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","update","update","utilities","width","width","with_name","write","write","All","Big","ByteDelimiter","ByteIter","Convert","Dynamic","DynamicSymbols","Empty","ExtendedSymbols","Field","FiniArray","FromBytes","GNUHash","GNULibList","GNU_RELRO","Group","Hash","InitArray","IntoBytes","Item","ItemArray","Layout","Length","Little","Notes","Null","PHType","PT_DYNAMIC","PT_GNU_EH_FRAME","PT_GNU_PROPERTY","PT_GNU_STACK","PT_HIOS","PT_HIPROC","PT_INTERP","PT_LOAD","PT_LOOS","PT_LOPROC","PT_NOTE","PT_NULL","PT_PHDR","PT_SHLIB","PT_TLS","PreInitArray","Program","Ranges","Relocations","RelocationsAddend","Reserved","ReservedTypes","SHF_ALLOC","SHF_EXCLUDE","SHF_EXECINSTR","SHF_GROUP","SHF_INFO_LINK","SHF_LINK_ORDER","SHF_MERGE","SHF_ORDERED","SHF_OS_NONCONFORMING","SHF_STRINGS","SHF_TLS","SHF_WRITE","SHFlags","SHT_ARM_ATTRIBUTES","SHT_ARM_DEBUGOVERLAY","SHT_ARM_EXIDX","SHT_ARM_OVERLAYSECTION","SHT_ARM_PREEMPTMAP","SHT_DYNAMIC","SHT_DYNSYM","SHT_FINI_ARRAY","SHT_GNU_HASH","SHT_GNU_LIBLIST","SHT_GROUP","SHT_HASH","SHT_INIT_ARRAY","SHT_LOOS","SHT_NOBITS","SHT_NOTE","SHT_NULL","SHT_NUM","SHT_PREINIT_ARRAY","SHT_PROGBITS","SHT_REL","SHT_RELA","SHT_SHLIB","SHT_STRTAB","SHT_SYMTAB","SHT_SYMTAB_SHNDX","SHT_VERDEF","SHT_VERNEED","SHT_VERSYM","SHType","STB_GLOBAL","STB_LOCAL","STB_WEAK","STBind","STT_COMMON","STT_FILE","STT_FUNC","STT_NOTYPE","STT_OBJECT","STT_SECTION","STT_TLS","STType","STV_DEFAULT","STV_HIDDEN","STV_INTERNAL","STV_PROTECTED","STVisibility","SectionType","Strings","Symbols","T32Value","T64Value","TOutValue","Unknown","Unknown","Unknown","Update","Updateable","Value","Width","X32","X64","add","add_offset","apply","bitand","bitor","bits","bitxor","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clear","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","convert","convert","convert","convert","convert","convert","convert","convert","convert","convert","convert","convert","convert","convert","convert","convert","convert","convert","convert","convert","convert","count","default","default","default","default","default","default","default","empty","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_bytes","from_primitive","from_primitive","from_primitive","from_primitive","get","get","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into_iter","item_offset","item_size","iterator","layout","layout","layout","length","length","make","make","new","new","new","new","next","not","offset","offset","parse","ranges","read","read","set","set","set_index","set_index","set_layout","set_layout","set_layout","set_offset","set_offset","set_width","set_width","set_width","size","size","to_bytes","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from_primitive","try_from_primitive","try_from_primitive","try_from_primitive","try_from_primitive","try_from_primitive","try_from_primitive","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_offset","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","update","update","value","width","width","width","with_index","with_last_offset","with_layout","with_layout","with_layout","with_offset","with_offset","with_value","with_width","with_width","with_width","write","ADDRESS","BLOOMSHIFT","BLOOMSIZE","EI_ABIVERSION","EI_CLASS","EI_DATA","EI_KEY","EI_MAGIC","EI_OSABI","EI_PAD","EI_VERSION","E_EHSIZE","E_ENTRY","E_FLAGS","E_MACHINE","E_PHENTSIZE","E_PHNUM","E_PHOFF","E_SHENTSIZE","E_SHNUM","E_SHOFF","E_SHSTRNDX","E_TYPE","E_VERSION","NBUCKETS","NCHAIN","P_ALIGN","P_FILESZ","P_FLAGS","P_MEMSZ","P_OFFSET","P_PADDR","P_TYPE","P_VADDR","RT_ADDEND","RT_INFO","RT_OFFSET","Ranges","SH_ADDR","SH_ADDRALIGN","SH_ENTSIZE","SH_FLAGS","SH_INFO","SH_LINK","SH_NAME","SH_OFFSET","SH_SIZE","SH_TYPE","ST_INFO","ST_NAME","ST_OTHER","ST_SHNDX","ST_SIZE","ST_VALUE","SYMOFFSET","VALUE4","VALUE8","at","at_mut","borrow","borrow_mut","clone","clone_into","convert","empty","fmt","from","get","into","into","new","size","to_owned","try_from","try_into","type_id","width","x32","x64","ConversionError","Error","FromBytesWithNulError","FromComplexError","FromPrimitiveError","FromStringError","IOError","InfallibleError","IntConvertError","IntoStringError","MalformedDataError","NotFound","OutOfBoundsError","ParseError","ParseUtf8Error","ParseValueError","PoisonError","Result","WrongSectionError","WrongTypeError","borrow","borrow_mut","convert","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","into","provide","source","to_string","try_from","try_into","type_id","FileHeader","ProgramHeader","SectionHeader","SectionHeaderData","abiversion","addralign","address","align","body_size","body_size","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","class","clone","clone_into","convert","convert","convert","convert","data","default","ehsize","entry","entsize","file_type","filesz","flags","flags","flags","fmt","fmt","fmt","fmt","from","from","from","from","from","info","into","into","into","into","kind","kind","layout","layout","layout","layout","link","machine","magic","memsz","name_index","new","new","new","offset","offset","osabi","paddr","parse","parse","parse","parse_all","parse_all","phentsize","phnum","phoff","read","read","read","set_abiversion","set_addralign","set_address","set_align","set_body_size","set_body_size","set_class","set_data","set_ehsize","set_entry","set_entsize","set_file_type","set_filesz","set_flags","set_flags","set_flags","set_info","set_kind","set_kind","set_layout","set_layout","set_layout","set_link","set_machine","set_magic","set_memsz","set_name_index","set_offset","set_offset","set_osabi","set_paddr","set_phentsize","set_phnum","set_phoff","set_shentsize","set_shnum","set_shoff","set_shstrndx","set_vaddr","set_version","set_width","set_width","set_width","sh_addralign","sh_address","sh_entsize","sh_flags","sh_info","sh_link","sh_name","sh_offset","sh_size","sh_type","shentsize","shnum","shoff","shstrndx","size","size","size","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","vaddr","version","width","width","width","width","write","write","write","Array","ArrayItem","ArrayMut","RelItem","RelTable","RelTableMut","RelaItem","RelaTable","RelaTableMut","RelocationInfo","StringItem","StringTable","StringTableMut","SymbolTable","SymbolTableMut","Table","TableItem","TableMut","TableView","addend","append","at","at","at_offset","at_offset","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","convert","convert","convert","convert","convert","convert","convert","convert","convert","data","data","default","default","default","default","default","delimiter","delimiter","delimiter","eq","eq","eq","eq","eq","fmt","fmt","from","from","from","from","from","from","from","from","from","has_fixed_size","has_fixed_size","has_variable_size","has_variable_size","info","info","insert","into","into","into","into","into","into","into","items","items","iterator","iterator","kind","layout","layout","len","len","name_index","name_index","offset","offset","offset","offset","parse","parse","prepend","read","read","read","read","read","remove","section","section","section","set_addend","set_info","set_info","set_kind","set_layout","set_layout","set_layout","set_layout","set_layout","set_offset","set_offset","set_string","set_symbol","set_value","set_width","set_width","set_width","set_width","set_width","size","size","size","size","size","size","size","string","string_lossy","symbol","to_owned","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","value","width","width","write","write","write","write","write","read"],"q":[[0,"deaf"],[100,"deaf::common"],[511,"deaf::common::ranges"],[590,"deaf::errors"],[634,"deaf::headers"],[794,"deaf::tables"],[994,"deaf::utilities"]],"d":["An ELF formatted binary file","A Section extracted from an ELF file","A Segment extracted from an ELF file","","","","","","","","","","Common structs and types used by all other modules","","","","","","","","","","A custom error type that aggregates internal errors","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","","","","","File, program and section header definitions","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","Get the layout of the file (little or big endian)","","","","","Create a new segment from a program header","Create a new section from a program header","","Get the size of program headers","Get the number of program headers in the file","Get the offset of the program header table","","","","Parse all sections for a byte array given count, offset …","","","","","","","","","","","","Get the size of section headers","Get the number of section headers in the file","Get the offset of the section header table","","","","","","","","","Get all string tables except the ‘shstrtab’","","","","","Various types of tables and associated table items","","","","","","","","","","","","","Utility functions for both testing and execution","Get the addressing width of the file (32, 64 etc)","","","","","Placeholder target for Update","Big endian (e.g. 0xABCD is represented as ‘AB CD’ )","The delimiter used to determine the ending index of …","An iterator that uses a delimiting value or length to …","Convert a value into another value","","","","","A single field in a section, table item etc.","","Parse an object from bytes","","","","","","","Convert an object into bytes","An item in a section, table item etc that contains a field ","","The endianness of the ELF file","","Little endian (e.g. 0xABCD is represented as ‘CD AB’)","","","The type of a program header","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The flags of a particular section header","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The type of a section header","","","","The binding of a symbol entry from a static or dynamic …","","","","","","","","The type of a symbol entry from a static or dynamic symbol …","The visibility is as specified by the symbol binding type","This symbol is protected and not externally visible","This visibility attribute is currently reserved","External references must be resolved externally","The binding of a symbol entry from a static or dynamic …","","","","","","","","","","Update for an object of type T","Trait to add an update function to structs that can be …","","The mode of the ELF file","Mode of the ELF file is 32-bit","Mode of the ELF file is 64-bit","Add a new update for type T","Set the offset of the array in the parsed data","Apply all updates for type T","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Clear all updates of type T","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Count updates of type T","","","","","","","","Create a new field with an empty range","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","Read the buffer and convert into the output value","Get the output value of the item","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Get the offset of a particular index in the array","Get the size of the item for the current width","Get an iterator over slices of the data","Get the layout of the field","Get the layout (little- or big-endian) of the item","Get the layout (little- or big-endian) of the item","Create a new iterator with a length delimiter","Get the length of the array, given the item count","Create a new item with ranges, width and layout","Create a new item array with given ranges, layout, and …","Create a new byte iterator with data and a delimiter","Create a new field from given ranges","Create a new item with given ranges","Create a new item array with given ranges","","","Skip directly to an offset in the data","Get the total offset at which the array will read","Builder method to parse a byte buffer","","Read the value if possible","Read a value at a particular index in the data","Convert output value and write to the buffer","Set the output value of the item","Set an index based on field size to read at","Set an index based on field size to read at","Set the layout of the field","Set the layout (little- or big-endian) of the item","Set the layout (little- or big-endian) of the item","Set an offset in bytes to read at","Set an offset in bytes to read at","Set the width of the field","Set the width (32- or 64-bit) of the item","Set the width (32- or 64-bit) of the item","The expected size in bytes of the output/input buffers","Get the size of the item if there is a value","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Skip directly to an offset in the data","","","","","","","","","","","","","","","","","","","Create a new iterator with a value delimiter","Get the width of the field","Get the width (32- or 64-bit) of the item","Get the width (32- or 64-bit) of the item","Builder method to set an index","Builder method to set the last offset for the array","Builder method to set the layout of the field","Builder method to set the initial layout","Builder method to set the initial layout","Builder method to set an offset","Builder method to add an array offset","Builder method to set the initial value","Builder method to set the width of the field","Builder method to set the initial width","Builder method to set the initial width","Write the value if there is one","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","This struct maintains several ranges and returns them …","","","","","","","","","","","","","","","","","","","","Get a reference to the current Range","Get at mutable reference to the current Range","","","","","","Create an empty set of ranges","","Returns the argument unchanged.","Get the active Range depending on the current Width","","Calls U::from(self).","Create a new set of ranges given a 32- and 64-bit Range","Get the expected size in bytes of the current range","","","","","","","","A value could not be converted to a different …","Custom error type used everywhere in this crate","Bytes with no nul terminator could not be parsed as …","Could not parse complex type from primitive","Could not parse complex type from primitive","String with no nul terminator could not be parsed as …","Could not open a file for reading","This error will never actually be created","Could not convert integer to a different integer type","CString failed to convert to UTF-8 encoded String","Given data has missing or wrong values for the action","A resource could not be found","Collection was accessed with an out-of-bounds index","Binary data could not be parsed into fields","Bytes could not be converted to UTF-8 encoded String","Failed to convert bytes to a value representation","Failed to access shared data because Mutex is poisoned","Type alias for ‘Result’ that uses our Error type","Filed to convert section to a table or array","Filed to convert type to some specialized type","","","","","","","","","","Returns the argument unchanged.","","","","","","","","Calls U::from(self).","","","","","","","The ELF file header parsed from the beginning of the file","Program headers extracted from an ELF file.","Section headers extracted from an ELF file.","","Get the abiversion attribute of the header","Get the sh_addralign attribute of the header","Get the sh_address attribute of the header","Get the p_align attribute of the header","Get the p_filesz attribute of the header","Get the sh_size attribute of the header","","","","","","","","","Get the ei_class attribute of the header","","","","","","","Get the ei_data attribute of the header","","Get the e_ehsize attribute of the header","Get the e_entry attribute of the header","Get the sh_entsize attribute of the header","Get the e_type attribute of the header","Get the p_filesz attribute of the header","Get the e_flags attribute of the header","Get the p_flags attribute of the header","Get the sh_flags attribute of the header","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Get the sh_info attribute of the header","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Get the p_type attribute of the header","Get the sh_type attribute of the header","Get the layout (little or big-endian) of the header","Get the layout (little or big-endian) of the header","Get the layout (little or big-endian) of the header","","Get the sh_link attribute of the header","Get the e_machine attribute of the header","Get the ei_magic attribute of the header","Get the p_memsz attribute of the header","Get the sh_name attribute of the header","Create a new header with given Layout and Width","Create a new header with given Layout and Width","Create a new header with given Layout and Width","Get the p_offset attribute of the header","Get the sh_offset attribute of the header","Get the ei_osabi attribute of the header","Get the p_paddr attribute of the header","Parse a header from the provided byte buffer","Parse a header from the provided byte buffer","Parse a header from the provided byte buffer","Parse all headers for a byte array given count, offset etc.","Parse all headers for a byte array given count, offset etc.","Get the e_phentsize attribute of the header","Get the e_phnum attribute of the header","Get the e_phoff attribute of the header","Read values from a byte buffer ","Read values from a byte buffer ","Read values from a byte buffer ","Set the abiversion attribute of the header ","Set the sh_addralign attribute of the header ","Set the sh_address attribute of the header ","Set the p_align attribute of the header ","Set the p_filesz attribute of the header ","Set the sh_size attribute of the header ","Set the ei_class attribute of the header ","Set the ei_data attribute of the header ","Set the e_ehsize attribute of the header ","Set the e_entry attribute of the header ","Set the sh_entsize attribute of the header ","Set the e_type attribute of the header ","Set the p_filesz attribute of the header ","Set the e_flags attribute of the header ","Set the p_flags attribute of the header ","Set the sh_flags attribute of the header ","Set the sh_info attribute of the header ","Set the p_type attribute of the header ","Set the sh_type attribute of the header ","Set the layout of the header","Set the layout of the header","Set the layout of the header","Set the sh_link attribute of the header ","Set the e_machine attribute of the header ","Set the ei_magic attribute of the header ","Set the p_memsz attribute of the header ","Set the sh_name attribute of the header ","Set the p_offset attribute of the header ","Set the sh_offset attribute of the header ","Set the ei_osabi attribute of the header ","Set the p_paddr attribute of the header ","Set the e_phentsize attribute of the header ","Set the e_phnum attribute of the header ","Set the e_phoff attribute of the header ","Set the e_shentsize attribute of the header ","Set the e_shnum attribute of the header ","Set the e_shoff attribute of the header ","Set the e_shstrndx attribute of the header ","Set the p_vaddr attribute of the header ","Set the ei_version attribute of the header ","Set the width of the header","Set the width of the header","Set the width of the header","","","","","","","","","","","Get the e_shentsize attribute of the header","Get the e_shnum attribute of the header","Get the e_shoff attribute of the header","Get the e_shstrndx attribute of the header","The size of the header in bytes","The size of the header in bytes","The size of the header in bytes","","","","","","","","","","","","","","Get the p_vaddr attribute of the header","Get the ei_version attribute of the header","Get the width (32 or 64-bit) of the header","Get the width (32 or 64-bit) of the header","Get the width (32 or 64-bit) of the header","","Write values to a byte buffer ","Write values to a byte buffer ","Write values to a byte buffer ","","A specialization of item for reading addresses from Arrays","","A Relocation item found in relocation tables","","","A Relocation item found in relocation tables","","","Representation of the info field in a Relocation record","A String item found in string tables","","","","","A Section represented as an immutable Table","A record that can be extracted from a table section","A Section represented as a mutable Table","Shared table interface between Table and TableMut","Get the ‘r_addend’ attribute of the relocation","Append an item to the table","Get an element from the table","Get an element from the table","Get an element from the table at a byte offset","Get an element from the table at a byte offset","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Get a slice of data that represents an item","Get a slice of data that represents an item","","","","","","Make a delimiter given expected entity size","Make a delimiter given expected entity size","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","True if items are all the same size","True if items are all the same size","True if items can be different sizes","True if items can be different sizes","Get the ‘r_info’ attribute of the relocation","Get the ‘r_info’ attribute of the relocation","Insert an item into the table","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Get all items from the table","Get all items from the table","Get an iterator over each item’s binary data","Get an iterator over each item’s binary data","Get the ‘kind’ component of the info struct","Get the layout being used by this table","Get the layout being used by this table","Get the number of items in the table","Get the number of items in the table","Get the name index of the internal section","Get the name index of the internal section","Get the offset of an item from the index","Get the offset of an item from the index","Get the ‘r_offset’ attribute of the relocation","Get the ‘r_offset’ attribute of the relocation","Parse the item directly from the byte array","Parse the item directly from the byte array","Prepend an item to the table","Read the item from a byte array","","","","","Remove an item from the table by index","Get an immutable reference to the internal section","","","Set the ‘r_addend’ attribute of the relocation","Set the ‘r_info’ attribute of the relocation","Set the ‘r_info’ attribute of the relocation","Set the ‘kind’ component of the info struct","Set the layout if necessary","Set the layout if necessary","","","","Set the ‘r_offset’ attribute of the relocation","Set the ‘r_offset’ attribute of the relocation","Set the string value of the table item","Set the ‘symbol’ component of the info struct","Set the internal value","Set the width if necessary","Set the width if necessary","","","","Get the calculated size of the item","Get the number of bytes in the table","Get the number of bytes in the table","","","","","Get the string value of the table item","Get the string value of the table item","Get the ‘symbol’ component of the info struct","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Get the internal value ","Get the width being used by this table","Get the width being used by this table","Write the item to a byte array","","","","",""],"i":[0,0,0,1,23,5,1,23,5,1,1,1,0,23,5,1,5,1,1,1,1,1,0,1,23,5,1,1,1,5,5,1,1,0,23,5,1,1,1,5,1,5,1,1,23,1,1,5,5,5,5,5,1,1,5,5,5,5,5,5,5,5,1,1,1,5,5,5,5,5,1,1,1,1,1,1,5,5,5,5,5,0,1,23,5,1,23,5,1,23,5,1,5,1,0,5,1,1,5,1,0,18,0,0,0,16,16,16,16,0,16,0,16,16,45,16,16,16,0,0,0,0,55,18,16,16,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,16,16,0,16,16,16,16,37,37,37,37,37,37,37,37,37,37,37,37,0,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,46,0,47,47,47,0,48,48,48,48,48,48,48,0,49,49,49,49,0,0,16,16,0,0,0,16,45,46,0,0,55,0,25,25,88,36,88,37,37,37,37,89,88,55,53,43,44,16,36,25,18,45,46,37,47,48,49,89,88,55,53,43,44,16,36,25,18,45,46,37,47,48,49,88,43,44,16,36,25,18,45,46,37,47,48,49,43,44,16,36,25,18,45,46,37,47,48,49,40,89,88,55,53,43,44,16,36,25,25,18,18,45,45,46,46,37,47,48,49,88,25,18,45,46,47,48,49,43,44,16,25,18,45,46,37,47,48,49,43,44,16,25,18,45,46,37,47,48,49,89,88,55,53,43,44,16,16,36,25,18,45,46,46,46,37,47,47,48,48,49,49,38,46,47,48,49,43,44,89,88,55,53,43,44,16,36,25,18,45,46,37,47,48,49,53,36,36,36,43,44,36,53,36,44,36,53,43,44,36,53,37,53,36,44,0,44,36,43,44,43,44,43,44,36,43,44,43,44,36,43,44,39,43,44,16,36,25,18,45,46,37,47,48,49,89,88,55,53,43,44,16,36,25,25,18,18,45,45,46,37,47,48,49,25,18,45,46,47,48,49,89,88,55,53,43,44,16,36,25,18,45,46,37,47,48,49,53,89,88,55,53,43,44,16,36,25,18,45,46,37,47,48,49,90,90,53,43,44,36,44,36,43,44,36,44,36,44,43,44,36,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,54,3,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,74,15,15,22,22,15,74,22,15,76,74,22,15,76,74,15,15,74,22,15,76,74,76,74,74,15,74,22,74,22,15,74,22,15,76,74,22,15,15,76,15,74,22,15,76,22,15,74,22,15,76,15,74,74,22,15,74,22,15,22,15,74,22,74,22,15,22,15,74,74,74,74,22,15,74,15,15,22,22,15,74,74,74,74,15,74,22,74,22,15,15,22,15,74,22,15,15,74,74,22,15,22,15,74,22,74,74,74,74,74,74,74,22,74,74,22,15,76,76,76,76,76,76,76,76,76,76,74,74,74,74,74,22,15,15,74,22,15,76,74,22,15,76,74,22,15,76,22,74,74,22,15,76,74,22,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,13,91,91,91,91,12,13,81,82,83,79,84,12,13,81,82,83,79,84,81,82,83,79,84,81,82,83,79,84,12,13,81,81,81,82,83,79,84,91,91,81,82,83,79,84,10,10,82,81,82,83,79,84,81,82,12,12,13,81,82,83,79,84,84,91,91,91,91,83,79,13,12,13,81,82,83,79,84,91,91,91,91,81,91,91,91,91,91,91,91,91,83,79,10,10,13,10,82,83,79,84,13,91,12,13,79,83,79,81,10,10,83,79,84,83,79,82,81,84,10,10,83,79,84,10,91,91,82,83,79,84,82,82,81,81,82,83,79,84,12,12,12,12,12,12,13,13,13,13,13,13,81,82,82,82,83,79,84,12,13,81,82,83,79,84,12,13,81,82,83,79,84,84,91,91,10,82,83,79,84,0],"f":[0,0,0,[1,2],[[]],[[]],[[]],[[]],[[]],[[]],[1,1],[[]],0,[[],[[4,[3]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[[5,2,2],[[7,[6]]]],[1,[[7,[6]]]],[1,[[7,[6]]]],[1,2],[1,2],[1,2],0,[[1,8],9],[[]],[[]],[[[12,[[0,[10,11]]]]],1],[[]],[[[13,[[0,[10,11]]]]],1],[5,[[7,[0]]]],[5,[[14,[[7,[0]]]]]],[1,15],[1,15],0,[[]],[[]],[[]],[[1,16],17],[1,16],[5,18],[1,18],[[[20,[19]]],[[14,[5]]]],[1,21],[1,2],[[22,[7,[6]]],23],[15,1],[1,2],[5,2],[5,2],[5,2],[5,14],[[5,[24,[6]]],[[14,[2]]]],[[15,[24,[6]]],[[14,[1]]]],[[[24,[6]],2,2,2,18,25],[[14,[[7,[1]]]]]],[[5,[20,[19]]],[[14,[2]]]],[[5,2],[[14,[1]]]],[[5,2],[[14,[1]]]],[[5,2],[[14,[1]]]],[[5,2],[[14,[21]]]],[5,[[14,[[7,[21]]]]]],[[5,16],[[7,[1]]]],[[5,16],[[7,[1]]]],[[1,2]],[[1,[7,[6]]]],[[1,21]],[5,2],[5,2],[5,2],[5,2],[5,2],[1,2],[[1,2,2],[[14,[[24,[6]]]]]],[[1,2,2],[[14,[[24,[6]]]]]],[[1,2,2],[[24,[6]]]],[[1,2,2],[[24,[6]]]],[1,2],[5,[[7,[26]]]],[[5,2],[[14,[21]]]],[5,[[7,[27]]]],[5,[[7,[28]]]],[5,[[7,[0]]]],0,[[]],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],29],[[],29],[[],29],[5],[1],0,[5,25],[1,25],[[1,21],1],[[5,[24,[6]]],[[14,[2]]]],[[1,[24,[6]],2,2],[[14,[2]]]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[0,[30,31,32]]]],[[[36,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]],2]],[[[0,[31,32]]]],[[37,37]],[[37,37]],[37],[[37,37]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[43,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41,42]]]],42]]]],[40,[[0,[38,39,[40,[[0,[40,40,41,42]]]],42]]]],41,42]]]],42]],[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41,42]]]],42]]]],[40,[[0,[38,39,[40,[[0,[40,40,41,42]]]],42]]]],41,42]]]],42]],[0,[[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40,42]]]],[40,[[0,[38,39,40,42]]]],41,42]]]],42]]]],[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40,42]]]],[40,[[0,[38,39,40,42]]]],41,42]]]],42]]]],41,42]]]]],[[43,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41,42]]]],42]]]],[40,[[0,[38,39,[40,[[0,[40,40,41,42]]]],42]]]],41,42]]]],42]],[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41,42]]]],42]]]],[40,[[0,[38,39,[40,[[0,[40,40,41,42]]]],42]]]],41,42]]]],42]],[0,[[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40,42]]]],[40,[[0,[38,39,40,42]]]],41,42]]]],42]]]],[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40,42]]]],[40,[[0,[38,39,40,42]]]],41,42]]]],42]]]],41,42]]]]]],[[[44,[[0,[[34,[[0,[[33,[[0,[[34,[[0,[33,42]]]],42]],[0,[[35,[[0,[33,42]]]],42]]]],42]]]],42]],[0,[[35,[[0,[[33,[[0,[[34,[[0,[33,42]]]],42]],[0,[[35,[[0,[33,42]]]],42]]]],42]]]],42]],[0,[[33,[[0,[[34,[[0,[[33,[[0,[34,42]],[0,[35,42]]]],42]]]],42]],[0,[[35,[[0,[[33,[[0,[34,42]],[0,[35,42]]]],42]]]],42]]]],42]]]]],[[44,[[0,[[34,[[0,[[33,[[0,[[34,[[0,[33,42]]]],42]],[0,[[35,[[0,[33,42]]]],42]]]],42]]]],42]],[0,[[35,[[0,[[33,[[0,[[34,[[0,[33,42]]]],42]],[0,[[35,[[0,[33,42]]]],42]]]],42]]]],42]],[0,[[33,[[0,[[34,[[0,[[33,[[0,[34,42]],[0,[35,42]]]],42]]]],42]],[0,[[35,[[0,[[33,[[0,[34,42]],[0,[35,42]]]],42]]]],42]]]],42]]]]]],[16,16],[[[36,[[0,[[34,[[0,[[33,[[0,[[34,[[0,[33,42]]]],42]],[0,[[35,[[0,[33,42]]]],42]]]],42]]]],42]],[0,[[35,[[0,[[33,[[0,[[34,[[0,[33,42]]]],42]],[0,[[35,[[0,[33,42]]]],42]]]],42]]]],42]],[0,[[33,[[0,[[34,[[0,[[33,[[0,[34,42]],[0,[35,42]]]],42]]]],42]],[0,[[35,[[0,[[33,[[0,[34,42]],[0,[35,42]]]],42]]]],42]]]],42]]]]],[[36,[[0,[[34,[[0,[[33,[[0,[[34,[[0,[33,42]]]],42]],[0,[[35,[[0,[33,42]]]],42]]]],42]]]],42]],[0,[[35,[[0,[[33,[[0,[[34,[[0,[33,42]]]],42]],[0,[[35,[[0,[33,42]]]],42]]]],42]]]],42]],[0,[[33,[[0,[[34,[[0,[[33,[[0,[34,42]],[0,[35,42]]]],42]]]],42]],[0,[[35,[[0,[[33,[[0,[34,42]],[0,[35,42]]]],42]]]],42]]]],42]]]]]],[25,25],[18,18],[45,45],[46,46],[37,37],[47,47],[48,48],[49,49],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],[[14,[50]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[25,[[14,[6]]]],[[],[[4,[3]]]],[18,[[14,[6]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[45,[[14,[51]]]],[46,[[14,[51]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[[],2],[[],25],[[],18],[[],45],[[],46],[[],47],[[],48],[[],49],[[],[[43,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],41]]]]]],[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],41]]]]]],[0,[[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40]]]],[40,[[0,[38,39,40]]]],41]]]]]]]],[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40]]]],[40,[[0,[38,39,40]]]],41]]]]]]]],41]]]]]],[[[44,[[34,[[0,[[33,[[34,[[0,[33,52]]]],[35,[[0,[33,52]]]]]],52]]]],[35,[[0,[[33,[[34,[[0,[33,52]]]],[35,[[0,[33,52]]]]]],52]]]],[0,[[33,[[34,[[0,[[33,[34,35]],52]]]],[35,[[0,[[33,[34,35]],52]]]]]],52]]]],[44,[[34,[[0,[[33,[[34,[[0,[33,52]]]],[35,[[0,[33,52]]]]]],52]]]],[35,[[0,[[33,[[34,[[0,[33,52]]]],[35,[[0,[33,52]]]]]],52]]]],[0,[[33,[[34,[[0,[[33,[34,35]],52]]]],[35,[[0,[[33,[34,35]],52]]]]]],52]]]]],17],[[16,16],17],[[25,25],17],[[18,18],17],[[45,45],17],[[46,46],17],[[37,37],17],[[47,47],17],[[48,48],17],[[49,49],17],[[[43,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41,41]]]],41]]]],[40,[[0,[38,39,[40,[[0,[40,40,41,41]]]],41]]]],41,41]]]],41]],[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41,41]]]],41]]]],[40,[[0,[38,39,[40,[[0,[40,40,41,41]]]],41]]]],41,41]]]],41]],[0,[[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40,41]]]],[40,[[0,[38,39,40,41]]]],41,41]]]],41]]]],[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40,41]]]],[40,[[0,[38,39,40,41]]]],41,41]]]],41]]]],41,41]]]],8],9],[[[44,[[0,[[34,[[0,[[33,[[0,[[34,[[0,[33,41]]]],41]],[0,[[35,[[0,[33,41]]]],41]]]],41]]]],41]],[0,[[35,[[0,[[33,[[0,[[34,[[0,[33,41]]]],41]],[0,[[35,[[0,[33,41]]]],41]]]],41]]]],41]],[0,[[33,[[0,[[34,[[0,[[33,[[0,[34,41]],[0,[35,41]]]],41]]]],41]],[0,[[35,[[0,[[33,[[0,[34,41]],[0,[35,41]]]],41]]]],41]]]],41]]]],8],9],[[16,8],9],[[25,8],9],[[18,8],9],[[45,8],9],[[46,8],9],[[37,8],9],[[47,8],9],[[48,8],9],[[49,8],9],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[46,16],[[]],[[]],[[]],[[]],[16,46],[51,46],[[]],[[]],[6,47],[[]],[6,48],[[]],[[]],[6,49],[[[24,[6]],18],[[14,[50]]]],[[],46],[[],47],[[],48],[[],49],[[[43,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],41]]]]]],[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],41]]]]]],[0,[[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40]]]],[40,[[0,[38,39,40]]]],41]]]]]]]],[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40]]]],[40,[[0,[38,39,40]]]],41]]]]]]]],41]]]],[24,[6]]],[[14,[[0,[[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40]]]],[40,[[0,[38,39,40]]]],41]]]]]]]],[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40]]]],[40,[[0,[38,39,40]]]],41]]]]]]]],41]]]]]],[[[44,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]]],[[33,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[36,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]],2],2],[[[36,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]]],2],[[[36,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]],[24,[6]]],53],[[[43,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],41]]]]]],[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],41]]]]]],[0,[[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40]]]],[40,[[0,[38,39,40]]]],41]]]]]]]],[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40]]]],[40,[[0,[38,39,40]]]],41]]]]]]]],41]]]]],18],[[[44,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]]],18],[[[36,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]]],18],[[[24,[6]],2],53],[[[36,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]],2],2],[[54,25,18],[[44,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]]]],[[54,25,18],[[36,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]]]],[[[24,[6]],55],53],[54,[[43,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],41]]]]]],[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],41]]]]]],[0,[[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40]]]],[40,[[0,[38,39,40]]]],41]]]]]]]],[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40]]]],[40,[[0,[38,39,40]]]],41]]]]]]]],41]]]]]],[54,[[44,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]]]],[54,[[36,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]]]],[53,56],[37],[[53,2],53],[[[36,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]]],2],[[[44,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]],[24,[6]]],[[14,[[44,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]]]]]],0,[[[44,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]],[24,[6]]],[[14,[[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]]]],[[[36,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]],[24,[6]],2],[[14,[[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]]]],[[[43,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],41]]]]]],[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],41]]]]]],[0,[[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40]]]],[40,[[0,[38,39,40]]]],41]]]]]]]],[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40]]]],[40,[[0,[38,39,40]]]],41]]]]]]]],41]]]],[24,[6]],[0,[[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],41]]]]]]]],[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],41]]]]]]]],41]]],14],[[[44,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]],[33,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]]]]]],[[[43,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],41]]]]]],[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],41]]]]]],[0,[[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40]]]],[40,[[0,[38,39,40]]]],41]]]]]]]],[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40]]]],[40,[[0,[38,39,40]]]],41]]]]]]]],41]]]],2]],[[[44,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]],2]],[[[43,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],41]]]]]],[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],41]]]]]],[0,[[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40]]]],[40,[[0,[38,39,40]]]],41]]]]]]]],[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40]]]],[40,[[0,[38,39,40]]]],41]]]]]]]],41]]]],18]],[[[44,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]],18]],[[[36,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]],18]],[[[43,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],41]]]]]],[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],41]]]]]],[0,[[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40]]]],[40,[[0,[38,39,40]]]],41]]]]]]]],[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40]]]],[40,[[0,[38,39,40]]]],41]]]]]]]],41]]]],2]],[[[44,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]],2]],[[[43,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],41]]]]]],[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],41]]]]]],[0,[[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40]]]],[40,[[0,[38,39,40]]]],41]]]]]]]],[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40]]]],[40,[[0,[38,39,40]]]],41]]]]]]]],41]]]],25]],[[[44,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]],25]],[[[36,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]],25]],[[[43,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],41]]]]]],[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],41]]]]]],[0,[[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40]]]],[40,[[0,[38,39,40]]]],41]]]]]]]],[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40]]]],[40,[[0,[38,39,40]]]],41]]]]]]]],41]]]]],2],[[[44,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]]],2],[[[24,[6]],18],14],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[6,[[4,[25,[57,[25]]]]]],[[],4],[6,[[4,[18,[57,[18]]]]]],[[],4],[[],4],[51,[[4,[45,[57,[45]]]]]],[[],4],[[],4],[[],4],[[],4],[[],4],[[],[[4,[25,[57,[25]]]]]],[[],[[4,[18,[57,[18]]]]]],[[],[[4,[45,[57,[45]]]]]],[[],[[4,[46,[57,[46]]]]]],[[],[[4,[47,[57,[47]]]]]],[[],[[4,[48,[57,[48]]]]]],[[],[[4,[49,[57,[49]]]]]],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[53,[58,[2]]],[[14,[53]]]],[[],29],[[],29],[[],29],[[],29],[[],29],[[],29],[[],29],[[],29],[[],29],[[],29],[[],29],[[],29],[[],29],[[],29],[[],29],[[],29],[[[0,[31,32,50]]]],[[[0,[31,32,50]]]],[[[24,[6]],6],53],[[[43,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],41]]]]]],[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],41]]]]]],[0,[[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40]]]],[40,[[0,[38,39,40]]]],41]]]]]]]],[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40]]]],[40,[[0,[38,39,40]]]],41]]]]]]]],41]]]]],25],[[[44,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]]],25],[[[36,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]]],25],[[[44,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]],2],[[44,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]]]],[[[36,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]],2],[[36,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]]]],[[[43,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],41]]]]]],[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],41]]]]]],[0,[[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40]]]],[40,[[0,[38,39,40]]]],41]]]]]]]],[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40]]]],[40,[[0,[38,39,40]]]],41]]]]]]]],41]]]],18],[[43,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],41]]]]]],[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],41]]]]]],[0,[[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40]]]],[40,[[0,[38,39,40]]]],41]]]]]]]],[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40]]]],[40,[[0,[38,39,40]]]],41]]]]]]]],41]]]]]],[[[44,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]],18],[[44,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]]]],[[[36,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]],18],[[36,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]]]],[[[44,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]],2],[[44,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]]]],[[[36,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]],2],[[36,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]]]],[[[44,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]],[33,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]]]]],[[44,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]]]],[[[43,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],41]]]]]],[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],41]]]]]],[0,[[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40]]]],[40,[[0,[38,39,40]]]],41]]]]]]]],[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40]]]],[40,[[0,[38,39,40]]]],41]]]]]]]],41]]]],25],[[43,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],41]]]]]],[0,[38,39,[40,[[0,[[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],[40,[[0,[38,39,[40,[[0,[40,40,41]]]]]]]],41]]]]]],[0,[[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40]]]],[40,[[0,[38,39,40]]]],41]]]]]]]],[40,[[0,[38,39,[40,[[0,[[40,[[0,[38,39,40]]]],[40,[[0,[38,39,40]]]],41]]]]]]]],41]]]]]],[[[44,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]],25],[[44,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]]]],[[[36,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]],25],[[36,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]]]],[[[44,[[34,[[33,[[34,[33]],[35,[33]]]]]],[35,[[33,[[34,[33]],[35,[33]]]]]],[33,[[34,[[33,[34,35]]]],[35,[[33,[34,35]]]]]]]],[24,[6]]],14],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[54,[[59,[2]]]],[54,[[59,[2]]]],[[]],[[]],[54,54],[[]],[[],[[4,[3]]]],[[],54],[[54,8],9],[[]],[54,[[59,[2]]]],[54,[[59,[2]]]],[[]],[[[59,[2]],[59,[2]]],54],[54,2],[[]],[[],4],[[],4],[[],29],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[],[[4,[3]]]],[[3,8],9],[[3,8],9],[60,3],[61,3],[62,3],[63,3],[[]],[64,3],[65,3],[66,3],[67,3],[[[57,[68]]],3],[[[70,[69]]],3],[71,3],[[]],[72],[3,[[56,[73]]]],[[],21],[[],4],[[],4],[[],29],0,0,0,0,[74,6],[15,75],[15,75],[22,75],[22,2],[15,2],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[74,25],[15,15],[[]],[[],[[4,[3]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[74,18],[[],76],[74,77],[74,75],[15,2],[74,77],[22,2],[74,51],[22,51],[15,[[78,[37]]]],[[74,8],9],[[22,8],9],[[15,8],9],[[76,8],9],[[]],[[]],[[]],[76,15],[[]],[15,51],[[]],[[]],[[]],[[]],[22,45],[15,46],[74,18],[22,18],[15,18],0,[15,51],[74,77],[74,21],[22,75],[15,51],[[],74],[[18,25],22],[[18,25],15],[22,2],[15,2],[74,6],[22,75],[[[24,[6]]],[[14,[74]]]],[[[24,[6]],18,25],[[14,[22]]]],[[[24,[6]],18,25],[[14,[15]]]],[[[24,[6]],2,2,2,18,25],[[14,[[7,[22]]]]]],[[[24,[6]],2,2,2,18,25],[[14,[[7,[15]]]]]],[74,2],[74,2],[74,2],[[74,[24,[6]]],14],[[22,[24,[6]]],14],[[15,[24,[6]]],14],[[74,6]],[[15,75]],[[15,75]],[[22,75]],[[22,2]],[[15,2]],[[74,25]],[[74,18]],[[74,77]],[[74,75]],[[15,2]],[[74,77]],[[22,2]],[[74,51]],[[22,51]],[[15,[78,[37]]]],[[15,51]],[[22,45]],[[15,46]],[[74,18]],[[22,18]],[[15,18]],[[15,51]],[[74,77]],[[74,21]],[[22,75]],[[15,51]],[[22,2]],[[15,2]],[[74,6]],[[22,75]],[[74,2]],[[74,2]],[[74,2]],[[74,2]],[[74,2]],[[74,2]],[[74,2]],[[22,75]],[[74,6]],[[74,25]],[[22,25]],[[15,25]],0,0,0,0,0,0,0,0,0,0,[74,2],[74,2],[74,2],[74,2],[74,2],[22,2],[15,2],[[]],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],29],[[],29],[[],29],[[],29],[22,75],[74,6],[74,25],[22,25],[15,25],0,[[74,[24,[6]]],14],[[22,[24,[6]]],14],[[15,[24,[6]]],14],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[79,80],[[[13,[[0,[10,11]]]],[0,[10,11]]],[[14,[2]]]],[2,14],[2,14],[2,14],[2,14],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[81,81],[82,82],[83,83],[79,79],[84,84],[[]],[[]],[[]],[[]],[[]],[[],[[4,[3]]]],[[],[[4,[3]]]],[81,[[14,[51]]]],[[],[[4,[3]]]],[81,[[14,[75]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[[],[[4,[3]]]],[2,[[14,[[24,[6]]]]]],[2,[[14,[[24,[6]]]]]],[[],81],[[],82],[[],83],[[],79],[[],84],[2,55],[2,55],[2,55],[[81,81],17],[[82,82],17],[[83,83],17],[[79,79],17],[[84,84],17],[[81,8],9],[[82,8],9],[[[13,[[0,[10,11]]]]],[[12,[[0,[10,11]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[80,84],[[]],[[],17],[[],17],[[],17],[[],17],[83,81],[79,81],[[[13,[[0,[10,11]]]],2,[0,[10,11]]],[[14,[2]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],[[14,[7]]]],[[],[[14,[7]]]],[[],53],[[],53],[81,6],[[],18],[[],18],[[],2],[[],2],[[],2],[[],2],[2,2],[2,2],[83,75],[79,75],[[[24,[6]],1],[[14,[50]]]],[[[24,[6]],1],[[14,[50]]]],[[[13,[[0,[10,11]]]],[0,[10,11]]],[[14,[2]]]],[[[24,[6]]],14],[[82,[24,[6]]],14],[[83,[24,[6]]],14],[[79,[24,[6]]],14],[[84,[24,[6]]],14],[[[13,[[0,[10,11]]]],2],[[14,[[0,[10,11]]]]]],[[],1],[[[12,[[0,[10,11]]]]],1],[[[13,[[0,[10,11]]]]],1],[[79,80]],[[83,81]],[[79,81]],[[81,6]],[18],[18],[[83,18]],[[79,18]],[[84,18]],[[83,75]],[[79,75]],[[82,21],14],[[81,75]],[[84,80]],[25],[25],[[83,25]],[[79,25]],[[84,25]],[[],2],[[],2],[[],2],[82,2],[83,2],[79,2],[84,2],[82,[[14,[21]]]],[82,21],[81,75],[[]],[[]],[[]],[[]],[[]],[1,[[14,[[12,[84]]]]]],[[],4],[1,[[14,[[12,[83]]]]]],[1,[[14,[[12,[0]]]]]],[1,[[14,[[12,[79]]]]]],[1,[[14,[[12,[82]]]]]],[1,[[14,[[13,[83]]]]]],[[],4],[1,[[14,[[13,[0]]]]]],[1,[[14,[[13,[84]]]]]],[1,[[14,[[13,[79]]]]]],[1,[[14,[[13,[82]]]]]],[[],4],[85,[[14,[82]]]],[[],4],[21,[[14,[82]]]],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],29],[[],29],[[],29],[[],29],[[],29],[[],29],[[],29],[84,80],[[],25],[[],25],[[[24,[6]]],14],[[82,[24,[6]]],14],[[83,[24,[6]]],14],[[79,[24,[6]]],14],[[84,[24,[6]]],14],[[[87,[86]]],[[14,[[7,[6]]]]]]],"c":[],"p":[[3,"Section"],[15,"usize"],[4,"Error"],[4,"Result"],[3,"Binary"],[15,"u8"],[3,"Vec"],[3,"Formatter"],[6,"Result"],[8,"TableItem"],[8,"Default"],[3,"Table"],[3,"TableMut"],[6,"Result"],[3,"SectionHeader"],[4,"SectionType"],[15,"bool"],[4,"Layout"],[3,"Path"],[8,"AsRef"],[3,"String"],[3,"ProgramHeader"],[3,"Segment"],[15,"slice"],[4,"Width"],[6,"StringTable"],[6,"SymbolTable"],[6,"SymbolTableMut"],[3,"TypeId"],[8,"Fn"],[8,"Send"],[8,"Sync"],[8,"TOutValue"],[8,"T32Value"],[8,"T64Value"],[3,"ItemArray"],[4,"SHFlags"],[8,"FromBytes"],[8,"IntoBytes"],[8,"Convert"],[8,"Debug"],[8,"Clone"],[3,"Field"],[3,"Item"],[4,"PHType"],[4,"SHType"],[4,"STBind"],[4,"STType"],[4,"STVisibility"],[8,"Sized"],[15,"u32"],[8,"PartialEq"],[3,"ByteIter"],[3,"Ranges"],[4,"ByteDelimiter"],[4,"Option"],[3,"TryFromPrimitiveError"],[8,"TryInto"],[3,"Range"],[3,"IntoStringError"],[3,"TryFromSliceError"],[3,"Error"],[3,"TryFromIntError"],[3,"FromBytesWithNulError"],[3,"Utf8Error"],[3,"PoisonError"],[3,"NulError"],[8,"TryFromPrimitive"],[8,"BitFlag"],[3,"FromBitsError"],[4,"Infallible"],[3,"Demand"],[8,"Error"],[3,"FileHeader"],[15,"u64"],[3,"SectionHeaderData"],[15,"u16"],[3,"BitFlags"],[3,"RelaItem"],[15,"i64"],[3,"RelocationInfo"],[3,"StringItem"],[3,"RelItem"],[3,"ArrayItem"],[15,"str"],[3,"PathBuf"],[8,"Into"],[3,"Update"],[3,"All"],[8,"Updateable"],[8,"TableView"]]}\
}');
if (typeof window !== 'undefined' && window.initSearch) {window.initSearch(searchIndex)};
if (typeof exports !== 'undefined') {exports.searchIndex = searchIndex};
diff --git a/settings.html b/settings.html
index ca5e482..0dbd91b 100644
--- a/settings.html
+++ b/settings.html
@@ -1 +1 @@
-Rustdoc settings
use std::path::Path;
use std::fs;
use crate::Section;
-use crate::tables::{Table,TableView,StringItem};
+use crate::symbols::Symbol;
+use crate::functions::Function;
+use crate::tables::{Table,TableView,StringItem, SymbolTable, SymbolTableMut, StringTable};
use crate::headers::FileHeader;
use crate::errors::{Error,Result};
use crate::common::{
@@ -314,6 +532,7 @@
width
)?;
+ self.process();
Ok(self.size())
}
@@ -347,6 +566,24 @@
Ok(size)
}
+ pub fn process(&mut self) -> Result<()> {
+
+ let str_section = self.section(self.header.shstrndx())?.clone();
+ let str_table = StringTable::try_from(&str_section)?;
+
+ for section in self.sections.iter_mut() {
+ let offset = section.name_index();
+ let name = str_table
+ .at_offset(offset)
+ .and_then(|e| e.string())
+ .unwrap_or("".into());
+
+ section.set_name(name);
+ }
+
+ Ok(())
+ }
+
pub fn size(&self) -> usize {
self.header.size() +
self.sections
@@ -360,6 +597,13 @@
.ok_or(Error::NotFound)
}
+ pub fn section_for_address(&self, address: usize) -> Result<&Section> {
+ self.sections
+ .iter()
+ .find(|s| s.start() <= address && s.end() > address)
+ .ok_or(Error::NotFound)
+ }
+
pub fn section_mut(&mut self, index: usize) -> Result<&mut Section> {
self.sections
.get_mut(index)
@@ -390,7 +634,7 @@
pub fn section_names(&self) -> Result<Vec<String>> {
self.section(self.header.shstrndx())
- .and_then(Table::<StringItem>::try_from)
+ .and_then(StringTable::try_from)
.and_then(|t| t
.items())
.and_then(|v| v
@@ -399,6 +643,102 @@
.collect())
}
+ /// Get all string tables except the 'shstrtab'
+ pub fn string_tables(&self) -> Vec<StringTable> {
+ let k = self.header.shstrndx();
+ self.sections
+ .iter()
+ .enumerate()
+ .filter(|(i,_)| *i != k)
+ .map(|(_,t)| t)
+ .flat_map(StringTable::try_from)
+ .collect()
+ }
+
+ pub fn symbol_tables(&self) -> Vec<SymbolTable> {
+ self.sections
+ .iter()
+ .flat_map(SymbolTable::try_from)
+ .collect()
+ }
+
+ pub fn symbol_tables_mut(&mut self) -> Vec<SymbolTableMut> {
+ self.sections
+ .iter_mut()
+ .flat_map(SymbolTableMut::try_from)
+ .collect()
+ }
+
+ pub fn symbol_name(&self, offset: usize) -> Result<String> {
+ self.string_tables()
+ .iter()
+ .find_map(|t| t
+ .at_offset(offset)
+ .and_then(|s| s.string())
+ .ok())
+ .ok_or(Error::NotFound)
+ }
+
+ pub fn symbols(&self) -> Vec<Symbol> {
+ self.symbol_tables()
+ .iter()
+ .flat_map(SymbolTable::items)
+ .flatten()
+ .collect()
+ }
+
+ pub fn functions(&self) -> Vec<Function> {
+ self.symbols()
+ .into_iter()
+ .flat_map(|f| self
+ .symbol_name(f.name())
+ .map(|s| (f,s)))
+ .flat_map(|(v,s)| Function::try_from(v)
+ .map(|f| {
+ let address = f.address() as usize;
+ let size = f.size() as usize;
+
+ f
+ .with_name(s)
+ .with_body(&self.data(address,size))
+ }))
+ .collect()
+ }
+
+ pub fn functions_ex(&self) -> Result<Vec<Function>> {
+
+ let mut functions = self
+ .symbols()
+ .into_iter()
+ .filter_map(|s| Function::try_from(s).ok())
+ .collect::<Vec<Function>>();
+
+ for function in functions.iter_mut() {
+
+ let section_index = function.section();
+ let name_index = function.symbol().name();
+
+ let section = self.section(section_index)?;
+ let name = self.symbol_name(name_index)?;
+
+ function.set_body_from(
+ §ion.data(),
+ section.offset())?;
+
+ function.set_name(name)
+
+ }
+
+ Ok(functions)
+ }
+
+ pub fn data(&self, address: usize, size: usize) -> Vec<u8> {
+ self.section_for_address(address)
+ .and_then(|s| s.slice(s.offset().saturating_sub(address), size))
+ .map(|d| d.to_vec())
+ .unwrap_or(Vec::new())
+ }
+
/// Get the number of section headers in the file
pub fn shnum(&self) -> usize {
self.header.shnum()
@@ -466,7 +806,7 @@
let names = binary
.sections(SectionType::Strings)
.iter()
- .map(|s| s.name())
+ .map(|s| s.name_index())
.map(|i| binary.section_name(i))
.collect::<Result<Vec<String>>>()
.unwrap();
@@ -477,50 +817,142 @@
}
#[test]
- fn test_display_sections() {
+ fn test_get_symbol_tables() {
let path = "assets/libvpf/libvpf.so.4.1";
let binary = Binary::load(path).unwrap();
- for (i,section) in binary.sections.iter().enumerate() {
- let kind = section.header().kind();
- let index = section.name();
- let name = binary.section_name(index).unwrap();
+ let tables = binary.symbol_tables();
+ assert_eq!(tables.len(),1);
- println!("{}: {} (kind={:?})",i,name,kind);
- }
+ let index = tables[0].name_index();
+ assert_eq!(index,59);
+
+ let result = binary.section_name(index);
+ assert!(result.is_ok());
+
+ let name = result.unwrap();
+ assert_eq!(name, ".dynsym".to_string());
}
#[test]
- fn test_display_string_table() {
- let path = "assets/libjpeg/libjpeg.so.9";
+ fn test_get_symbols() {
+ let path = "assets/libvpf/libvpf.so.4.1";
let binary = Binary::load(path).unwrap();
- let sections = &binary.sections[36];
+ let symbols = binary.symbols();
+ assert_eq!(symbols.len(),294);
- let dynstr = StringTable::try_from(sections).unwrap();
-
- for (i,item) in dynstr.items().unwrap().into_iter().enumerate() {
- println!("{}: {}",i,item.string_lossy());
- }
+ let index = symbols[1].name();
+ let result = binary.symbol_name(index);
+ assert!(result.is_ok());
+
+ let name = result.unwrap();
+ assert_eq!(name, "__ctype_toupper_loc".to_string());
}
#[test]
- fn test_display_symbol_table() {
+ fn test_get_functions() {
let path = "assets/libvpf/libvpf.so.4.1";
let binary = Binary::load(path).unwrap();
- let strings = &binary.sections[5];
- let symbols = &binary.sections[4];
+ let functions = binary.functions();
+ assert_eq!(functions.len(),280);
- let dynstr = StringTable::try_from(strings).unwrap();
- let dynsym = SymbolTable::try_from(symbols).unwrap();
-
- for (i,item) in dynsym.items().unwrap().into_iter().enumerate() {
- let name = dynstr
- .at_offset(item.name() as usize)
- .map(|v| v.string_lossy());
- println!("{}: {:?}",i,name);
- }
+ let function1 = &functions[80];
+ let function2 = &functions[171];
+ let function3 = &functions[238];
+
+ assert_eq!(function1.address(),0x15df0);
+ assert_eq!(function2.address(),0x06250);
+ assert_eq!(function3.address(),0x256a0);
+
+ assert_eq!(function1.name(),"table_in_list".to_string());
+ assert_eq!(function2.name(),"swap_two".to_string());
+ assert_eq!(function3.name(),"leftjust".to_string());
}
-}
\ No newline at end of file
+ #[test]
+ fn test_get_sections_for_address() {
+ let path = "assets/libvpf/libvpf.so.4.1";
+ let binary = Binary::load(path).unwrap();
+
+ let result = binary.section_for_address(0x2d5);
+ assert!(result.is_ok());
+
+ let section = result.unwrap();
+ assert_eq!(section.name(),".note.gnu.build-id");
+
+ let result = binary.section_for_address(0x2f0);
+ assert!(result.is_ok());
+
+ let section = result.unwrap();
+ assert_eq!(section.name(),".gnu.hash");
+
+ let result = binary.section_for_address(0x5740);
+ assert!(result.is_ok());
+
+ let section = result.unwrap();
+ assert_eq!(section.name(),".text");
+
+ let result = binary.section_for_address(0x33f40);
+ assert!(result.is_ok());
+
+ let section = result.unwrap();
+ assert_eq!(section.name(),".fini");
+
+ let result = binary.section_for_address(0x33f39);
+ assert!(result.is_ok());
+
+ let section = result.unwrap();
+ assert_eq!(section.name(),".text");
+ }
+
+
+ // #[test]
+ // fn test_display_sections() {
+ // let path = "assets/libvpf/libvpf.so.4.1";
+ // let binary = Binary::load(path).unwrap();
+
+ // for (i,section) in binary.sections.iter().enumerate() {
+ // let kind = section.header().kind();
+ // let index = section.name_index();
+ // let name = binary.section_name(index).unwrap();
+
+ // println!("{}: {} (kind={:?})",i,name,kind);
+ // }
+ // }
+
+ // #[test]
+ // fn test_display_string_table() {
+ // let path = "assets/libvpf/libvpf.so.4.1";
+ // let binary = Binary::load(path).unwrap();
+
+ // let sections = &binary.sections[27];
+
+ // let dynstr = StringTable::try_from(sections).unwrap();
+
+ // for (i,item) in dynstr.items().unwrap().into_iter().enumerate() {
+ // println!("{}: {}",i,item.string_lossy());
+ // }
+ // }
+
+ // #[test]
+ // fn test_display_symbol_table() {
+ // let path = "assets/libvpf/libvpf.so.4.1";
+ // let binary = Binary::load(path).unwrap();
+
+ // let strings = &binary.sections[5];
+ // let symbols = &binary.sections[4];
+
+ // let dynstr = StringTable::try_from(strings).unwrap();
+ // let dynsym = SymbolTable::try_from(symbols).unwrap();
+
+ // for (i,item) in dynsym.items().unwrap().into_iter().enumerate() {
+ // let name = dynstr
+ // .at_offset(item.name() as usize)
+ // .map(|v| v.string_lossy());
+ // println!("{}: {:?}",i,name);
+ // }
+ // }
+
+}
\ No newline at end of file
diff --git a/src/deaf/common/bytes.rs.html b/src/deaf/common/bytes.rs.html
index 2c26375..8eeb7be 100644
--- a/src/deaf/common/bytes.rs.html
+++ b/src/deaf/common/bytes.rs.html
@@ -1,4 +1,4 @@
-bytes.rs - source
use std::default;
+
+use num_enum::{IntoPrimitive, TryFromPrimitive, FromPrimitive};
use enumflags2::bitflags;
/// The mode of the ELF file
@@ -235,6 +288,32 @@
fn default() -> Self { Self::PT_NULL }
}
+/// Reserved values for section header indices
+#[repr(u32)]
+#[allow(non_camel_case_types)]
+#[derive(Debug, Clone, Copy, PartialEq, IntoPrimitive, FromPrimitive)]
+pub enum SHIndex {
+ #[default]
+ /// An undefined, missing, irrelevant, or otherwise meaningless section reference
+ SHN_UNDEF = 0x0000,
+
+ /// Provide for ordering in conjunction with the SHF_LINK_ORDER/SHF_ORDERED flags
+ SHN_BEFORE = 0xff00,
+
+ /// Provide for ordering in conjunction with the SHF_LINK_ORDER/SHF_ORDERED flags
+ SHN_AFTER = 0xff01,
+
+ /// Symbols defined relative to this index are not affected by relocation
+ SHN_ABS = 0xfff1,
+
+ /// Sections defined relative to this index are tenative/common symbols
+ SHN_COMMON = 0xfff2,
+
+ /// The actual section header index is too large to fit in the containing field
+ /// (actual index is in SHT_SYMTAB_SHNDX section)
+ SHN_XINDEX = 0xffff,
+}
+
/// The type of a section header
///
/// This enum is generally parsed from the section headers (sh_type).
@@ -305,10 +384,11 @@
/// The binding of a symbol entry from a static or dynamic symbol table
///
-/// This enum is parsed from symbol table entities (st_info).
+/// This enum is parsed from the upper 4 bits of the 1-byte 'st_info'
+/// field include in each entry of the symbol table.
#[repr(u8)]
#[allow(non_camel_case_types)]
-#[derive(Default, Debug, Clone, Copy, PartialEq, IntoPrimitive, TryFromPrimitive)]
+#[derive(Default, Debug, Clone, Copy, PartialEq, IntoPrimitive, FromPrimitive)]
pub enum STBind {
#[default]
STB_LOCAL = 0x00,
@@ -318,10 +398,11 @@
/// The type of a symbol entry from a static or dynamic symbol table
///
-/// This enum is parsed from symbol table entities (st_info).
+/// This enum is parsed from the lower 4 bits of the 1-byte 'st_info'
+/// field include in each entry of the symbol table.
#[repr(u8)]
#[allow(non_camel_case_types)]
-#[derive(Default, Debug, Clone, Copy, PartialEq, IntoPrimitive, TryFromPrimitive)]
+#[derive(Default, Debug, Clone, Copy, PartialEq, IntoPrimitive, FromPrimitive)]
pub enum STType {
#[default]
STT_NOTYPE = 0x00,
@@ -331,4 +412,25 @@
STT_FILE = 0x04,
STT_COMMON = 0x05,
STT_TLS = 0x06,
-}
\ No newline at end of file
+}
+
+/// The binding of a symbol entry from a static or dynamic symbol table
+///
+/// This enum is parsed entries in the symbol table.
+#[repr(u8)]
+#[allow(non_camel_case_types)]
+#[derive(Default, Debug, Clone, Copy, PartialEq, IntoPrimitive, FromPrimitive)]
+pub enum STVisibility {
+ #[default]
+ /// The visibility is as specified by the symbol binding type
+ STV_DEFAULT = 0x00,
+
+ /// This visibility attribute is currently reserved
+ STV_INTERNAL = 0x01,
+
+ /// This symbol is protected and not externally visible
+ STV_HIDDEN = 0x02,
+
+ /// External references must be resolved externally
+ STV_PROTECTED = 0x03
+}
\ No newline at end of file
diff --git a/src/deaf/common/enums.rs.html b/src/deaf/common/enums.rs.html
index 1122392..3d6cf3c 100644
--- a/src/deaf/common/enums.rs.html
+++ b/src/deaf/common/enums.rs.html
@@ -1,4 +1,4 @@
-enums.rs - source
//! A custom error type that aggregates internal errors
//!
@@ -146,6 +150,10 @@
#[error("Given section is of the wrong type")]
WrongSectionError,
+ /// Filed to convert type to some specialized type
+ #[error("Given object is of the wrong type")]
+ WrongTypeError,
+
/// Could not parse complex type from primitive
#[error("Could not convert from complex value")]
FromComplexError,
diff --git a/src/deaf/functions/function.rs.html b/src/deaf/functions/function.rs.html
new file mode 100644
index 0000000..7376260
--- /dev/null
+++ b/src/deaf/functions/function.rs.html
@@ -0,0 +1,948 @@
+function.rs - source
use crate::errors::{Error,Result};
+use crate::common::{STType,STBind,STVisibility,Layout,Width};
+use crate::symbols::{Symbol,SymbolInfo};
+
+#[derive(Default)]
+pub struct Function {
+ name: String,
+ body: Vec<u8>,
+ symbol: Symbol
+}
+
+impl Function {
+
+ pub fn new() -> Function {
+ Self::default()
+ }
+
+ /// Get the name of the function
+ pub fn name(&self) -> String {
+ self.name.clone()
+ }
+
+ /// Set the name of the function
+ ///
+ /// This function will override the 'st_name' field in the
+ /// symbol when the function is added to a binary and may
+ /// insert a new value into the string table.
+ pub fn set_name<T: Into<String>>(&mut self, value: T) {
+ self.name = value.into();
+ }
+
+ /// Builder method to set the name of the function
+ ///
+ /// This function will override the 'st_name' field in the
+ /// symbol when the function is added to a binary and may
+ /// insert a new value into the string table.
+ pub fn with_name<T: Into<String>>(mut self, name: T) -> Self {
+ self.set_name(name);
+ self
+ }
+
+ /// Get the function body
+ pub fn body(&self) -> &[u8] {
+ &self.body
+ }
+
+ /// Set the function body
+ ///
+ /// Also updates the size of the symbol to reflect
+ /// the size of the given body.
+ pub fn set_body(&mut self, body: &[u8]) {
+ self.body = body.into();
+ self.set_size(body.len());
+ }
+
+ /// Extract the function body from section data
+ ///
+ /// Also updates the size of the symbol to reflect
+ /// the size of the extracted body.
+ pub fn set_body_from(&mut self, data: &[u8], offset: usize) -> Result<()> {
+ self.read_body(data, offset)?;
+ Ok(())
+ }
+
+ /// Builder method to set the function body
+ ///
+ /// Also updates the size of the symbol to reflect
+ /// the size of the given body.
+ pub fn with_body(mut self, body: &[u8]) -> Self {
+ self.set_body(body);
+ self
+ }
+
+ /// Builder method to extract body from section data
+ ///
+ /// Also updates the size of the symbol to reflect
+ /// the size of the extracted body.
+ pub fn with_body_from(mut self, data: &[u8], offset: usize) -> Result<Self> {
+ self.set_body_from(data, offset)?;
+ Ok(self)
+ }
+
+ /// Get the 'st_value' field of the function symbol
+ pub fn address(&self) -> usize {
+ self.symbol.value() as usize
+ }
+
+ /// Set the 'st_value' field of the function symbol
+ pub fn set_address(&mut self, value: usize) {
+ self.symbol.set_value(value as u64);
+ }
+
+ /// Builder method to set the 'st_value' field of the function symbol
+ pub fn with_address(mut self, value: usize) -> Self {
+ self.set_address(value);
+ self
+ }
+
+ /// Get the 'st_size' field of the function symbol
+ pub fn size(&self) -> usize {
+ self.symbol.size() as usize
+ }
+
+ /// Set the 'st_size' field of the function symbol
+ pub fn set_size(&mut self, value: usize) {
+ self.symbol.set_size(value as u64);
+ }
+
+ /// Builder method to set the 'st_size' field of the function symbol
+ pub fn with_size(mut self, value: usize) -> Self {
+ self.set_size(value);
+ self
+ }
+
+ /// Get the 'st_info' field of the function symbol
+ pub fn info(&self) -> SymbolInfo {
+ self.symbol.info()
+ }
+
+ /// Set the 'st_info' field of the function symbol
+ pub fn set_info(&mut self, value: SymbolInfo) {
+ self.symbol.set_info(value)
+ }
+
+ /// Builder method to set the 'st_info' field of the function symbol
+ pub fn with_info(mut self, value: SymbolInfo) -> Self {
+ self.set_info(value);
+ self
+ }
+
+ /// Get the type of the function symbol
+ pub fn kind(&self) -> STType {
+ self.info().kind()
+ }
+
+ /// Set the kind of the function symbol
+ pub fn set_kind(&mut self, kind: STType) {
+ self.symbol.set_kind(kind);
+ }
+
+ /// Builder method to set the kind (on SymbolInfo) of the function symbol
+ pub fn with_kind(mut self, value: STType) -> Self {
+ self.set_kind(value);
+ self
+ }
+
+ /// Get the binding of the function symbol
+ pub fn bind(&self) -> STBind {
+ self.symbol.bind()
+ }
+
+ /// Set the binding of the function symbol
+ pub fn set_bind(&mut self, bind: STBind) {
+ self.symbol.set_bind(bind)
+ }
+
+ /// Builder method to set the bind (on SymbolInfo) of the function symbol
+ pub fn with_bind(mut self, value: STBind) -> Self {
+ self.set_bind(value);
+ self
+ }
+
+ /// Get the 'st_other' field as an enum
+ pub fn visibility(&self) -> STVisibility {
+ self.symbol.visibility()
+ }
+
+ /// Set the 'st_other' field as an enum
+ pub fn set_visibility(&mut self, value: STVisibility) {
+ self.symbol.set_visibility(value);
+ }
+
+ /// Builder method to set the 'st_other' field as an enum
+ pub fn with_visibility(mut self, value: STVisibility) -> Self {
+ self.set_visibility(value);
+ self
+ }
+
+ /// Get the section index of the function symbol
+ ///
+ /// This gets the 'st_shndx' field of the internal symbol.
+ pub fn section(&self) -> usize {
+ self.symbol.shndx() as usize
+ }
+
+ /// Set the section index of the function symbol
+ ///
+ /// This sets the 'st_shndx' field of the internal symbol.
+ pub fn set_section(&mut self, value: usize) {
+ self.symbol.set_shndx(value as u16);
+ }
+
+ /// Builder method to set the sextion index of the function symbol
+ ///
+ /// This sets the 'st_shndx' field of the internal symbol.
+ pub fn with_section(mut self, value: usize) -> Self {
+ self.set_section(value);
+ self
+ }
+
+ /// Get the current layout of the function symbol
+ pub fn layout(&self) -> Layout {
+ self.symbol.layout()
+ }
+
+ /// Set the current layout of the function symbol
+ pub fn set_layout(&mut self, layout: Layout){
+ self.symbol.set_layout(layout)
+ }
+
+ /// Builder method to set the layout of the function symbol
+ pub fn with_layout(mut self, value: Layout) -> Self {
+ self.set_layout(value);
+ self
+ }
+
+ /// Get the current width of the function symbol
+ pub fn width(&self) -> Width {
+ self.symbol.width()
+ }
+
+ /// Set the current width of the function symbol
+ pub fn set_width(&mut self, width: Width){
+ self.symbol.set_width(width)
+ }
+
+ /// Builder method to set the width of the function symbol
+ pub fn with_width(mut self, value: Width) -> Self {
+ self.set_width(value);
+ self
+ }
+
+ /// Get the symbol that represents this function
+ ///
+ /// Fields on the symbol will not reflect some changes
+ /// until the function is added to the binary. The
+ /// function name, for example, may be set as a string,
+ /// but will not update the 'st_name' field of the symbol
+ /// until the string is added to the string table.
+ pub fn symbol(&self) -> &Symbol {
+ &self.symbol
+ }
+
+ /// Get the mutable symbol that represents this function
+ ///
+ /// Changes made directly to the symbol may be overridden
+ /// when the function is added to the binary. The 'st_name'
+ /// field of the symbol, for example, will be overwritten
+ /// when the string 'name' is added to the string table.
+ pub fn symbol_mut(&mut self) -> &mut Symbol {
+ &mut self.symbol
+ }
+
+ /// Set the symbol of the function
+ ///
+ /// This method will overwrite most existing changes made
+ /// to the function and some fields on the given symbol
+ /// will be overwritten when the function is added to the
+ /// binary.
+ pub fn set_symbol(&mut self, value: Symbol) {
+ self.symbol = value;
+ }
+
+ /// Builder method to set the symbol of the function
+ ///
+ /// This method will overwrite most existing changes made
+ /// to the function and some fields on the given symbol
+ /// will be overwritten when the function is added to the
+ /// binary.
+ pub fn with_symbol(mut self, value: Symbol) -> Self {
+ self.set_symbol(value);
+ self
+ }
+
+ /// Get the offset starting position of the function body
+ pub fn start(&self, offset: usize) -> usize {
+ self.address().saturating_sub(offset)
+ }
+
+ /// Get the offset ending position of the function body
+ pub fn end(&self, offset: usize) -> usize {
+ self.start(offset).saturating_add(self.size())
+ }
+
+ /// Read the symbol entry from the beginning of the given data
+ pub fn read_symbol(&mut self, data: &[u8]) -> Result<()> {
+ self.symbol.read(data)
+ }
+
+ /// Read the function body from the given data
+ ///
+ /// Offset is subtracted from the function address to position
+ /// the function body inside of a section.
+ pub fn read_body(&mut self, data: &[u8], offset: usize) -> Result<()> {
+ let start = self.start(offset);
+ let end = self.end(offset);
+ if start <= end && end <= data.len() {
+ self.set_body(&data[start..end]);
+ Ok(())
+ }
+ else {
+ Err(Error::OutOfBoundsError)
+ }
+ }
+
+ /// Write the symbol entry to the beginning of the given data
+ fn write_symbol(&self, data: &mut [u8]) -> Result<()> {
+ self.symbol.write(data)
+ }
+
+ /// Write the function body to the given data
+ ///
+ /// Offset is subtracted from the function address to position
+ /// the function body inside of a section.
+ pub fn write_body(&self, data: &mut [u8], offset: usize) -> Result<()> {
+ let start = self.start(offset);
+ let end = self.end(offset);
+ if start <= end && end <= data.len() {
+ data[start..end].copy_from_slice(&self.body);
+ Ok(())
+ }
+ else {
+ Err(Error::OutOfBoundsError)
+ }
+ }
+
+ /// Finish and validate the new function
+ pub fn build(mut self) -> Result<Self> {
+
+ // ensure that the symbol is valid
+ self.symbol.validate()?;
+
+ Ok(self)
+ }
+
+}
+
+impl TryFrom<Symbol> for Function {
+ type Error = Error;
+
+ fn try_from(symbol: Symbol) -> Result<Self> {
+ match symbol.kind() {
+ STType::STT_FUNC => Self::new()
+ .with_symbol(symbol)
+ .build(),
+ _ => Err(Error::WrongTypeError)
+ }
+ }
+}
+
+#[cfg(test)]
+mod tests {
+ use crate::common::{Layout, Width, STBind};
+
+ use super::*;
+
+ macro_rules! setup_32 {
+ () => {{
+ // 32-bit, little-endian hex representation of a symbol
+ // with attached assembly function body
+ let data: [u8;44] = [
+ 0x00, 0x00, 0x00, 0x00, // name: 0
+ 0x10, 0x00, 0x00, 0x00, // value: 16
+ 0x1c, 0x00, 0x00, 0x00, // size: 28
+ 0x12, // info: STB_GLOBAL + STT_FUNC
+ 0x01, // other: 1
+ 0x01, 0x00, // shndx: 1
+
+ 0xf3, 0x0f, 0x1e, 0xfa, // endbr64
+ 0x48, 0x83, 0xec, 0x48, // sub $0x48,%rsp
+ 0x8b, 0x17, // mov (%rdi),%edx
+ 0x48, 0x8b, 0x4e, 0x10, // mov 0x10(%rsi),%rcx
+ 0x64, 0x48, 0x8b, 0x04, 0x25, 0x28, 0x00, // mov %fs:0x28,%rax
+ 0x75, 0x05, // jne 5864 <Icmpval@@Base+0x64>
+ 0x48, 0x83, 0xc4, 0x48, // add $0x48,%rsp
+ 0xc3 // ret
+ ];
+
+ data
+ }};
+ }
+
+ macro_rules! setup_64 {
+ () => {{
+ // 64-bit, little-endian hex representation of a symbol
+ // with attached assembly
+ let data: [u8;52] = [
+ 0x01, 0x00, 0x00, 0x00, // name: 1
+ 0x12, // info: STB_GLOBAL + STT_FUNC
+ 0x01, // other: 1
+ 0x01, 0x00, // shndx: 1
+ 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // value: 24 (address, for function)
+ 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // size: 28 (body size, for function)
+
+ 0xf3, 0x0f, 0x1e, 0xfa, // endbr64
+ 0x48, 0x83, 0xec, 0x48, // sub $0x48,%rsp
+ 0x8b, 0x17, // mov (%rdi),%edx
+ 0x48, 0x8b, 0x4e, 0x10, // mov 0x10(%rsi),%rcx
+ 0x64, 0x48, 0x8b, 0x04, 0x25, 0x28, 0x00, // mov %fs:0x28,%rax
+ 0x75, 0x05, // jne 5864 <Icmpval@@Base+0x64>
+ 0x48, 0x83, 0xc4, 0x48, // add $0x48,%rsp
+ 0xc3 // ret
+ ];
+
+ data
+ }};
+ }
+
+ #[test]
+ fn test_create_function_64() {
+ let data = setup_64!();
+
+ let mut buffer: [u8;52] = [0;52];
+
+ let function = Function::new()
+ .with_symbol(Symbol::new()
+ .with_layout(Layout::Little)
+ .with_width(Width::X64)
+ .with_visibility(STVisibility::STV_INTERNAL)
+ .with_bind(STBind::STB_GLOBAL)
+ .with_kind(STType::STT_FUNC)
+ .with_name(1)
+ .with_shndx(1)
+ .build()
+ .unwrap())
+ .with_name("Test")
+ .with_size(28)
+ .with_address(24)
+ .with_body_from(&data, 0)
+ .expect("could not read body from data")
+ .build()
+ .expect("could not build new function");
+
+ let result = function.write_symbol(&mut buffer);
+ assert!(result.is_ok());
+
+ let result = function.write_body(&mut buffer, 0);
+ assert!(result.is_ok());
+
+ assert_eq!(buffer,data);
+ }
+
+ #[test]
+ fn test_create_function_32() {
+ let data = setup_32!();
+
+ let mut buffer: [u8;44] = [0;44];
+
+ let mut function = Function::new()
+ .with_name("Test")
+ .with_size(28)
+ .with_section(1)
+ .with_address(16)
+ .with_width(Width::X32)
+ .with_layout(Layout::Little)
+ .with_bind(STBind::STB_GLOBAL)
+ .with_kind(STType::STT_FUNC)
+ .with_visibility(STVisibility::STV_INTERNAL)
+ .build()
+ .unwrap();
+
+ let result = function.read_body(&data,0);
+ assert!(result.is_ok());
+
+ let result = function.write_symbol(&mut buffer);
+ assert!(result.is_ok());
+
+ let result = function.write_body(&mut buffer, 0);
+ assert!(result.is_ok());
+
+ assert_eq!(buffer,data);
+ }
+
+}
\ No newline at end of file
diff --git a/src/deaf/functions/mod.rs.html b/src/deaf/functions/mod.rs.html
new file mode 100644
index 0000000..b674275
--- /dev/null
+++ b/src/deaf/functions/mod.rs.html
@@ -0,0 +1,8 @@
+mod.rs - source
\ No newline at end of file
diff --git a/src/deaf/headers/file.rs.html b/src/deaf/headers/file.rs.html
index beeea28..d762c39 100644
--- a/src/deaf/headers/file.rs.html
+++ b/src/deaf/headers/file.rs.html
@@ -1,4 +1,4 @@
-file.rs - source
use crate::errors::{Error,Result};
+use crate::common::{Convert, STBind, STType};
+
+const TYPE_MASK: u8 = 0x0f;
+const TYPE_SHIFT: u8 = 0;
+
+const BIND_MASK: u8 = 0xf0;
+const BIND_SHIFT: u8 = 4;
+
+/// Representation of the info field in a Symbol record
+#[derive(Default,Debug,Clone,Copy,PartialEq)]
+pub struct SymbolInfo {
+ bind: STBind,
+ kind: STType,
+}
+
+impl SymbolInfo {
+
+ /// Create a new SymbolInfo struct with default values
+ pub fn new() -> Self {
+ Self {
+ bind: STBind::default(),
+ kind: STType::default()
+ }
+ }
+
+ /// Get the 'kind' component of the info struct
+ pub fn kind(&self) -> STType {
+ self.kind.clone()
+ }
+
+ /// Set the 'kind' component of the info struct
+ pub fn set_kind(&mut self, kind: STType) {
+ self.kind = kind;
+ }
+
+ /// Builder method for setting the 'kind' component of the info struct
+ pub fn with_kind(mut self, kind: STType) -> Self {
+ self.set_kind(kind);
+ self
+ }
+
+ /// Get the 'bind' component of the info struct
+ pub fn bind(&self) -> STBind {
+ self.bind.clone()
+ }
+
+ /// Set the 'bind' component of the info struct
+ pub fn set_bind(&mut self, bind: STBind) {
+ self.bind = bind;
+ }
+
+ /// Builder method for setting the 'bind' component of the info struct
+ pub fn with_bind(mut self, bind: STBind) -> Self {
+ self.set_bind(bind);
+ self
+ }
+
+}
+
+impl TryFrom<u8> for SymbolInfo {
+ type Error = Error;
+
+ fn try_from(v: u8) -> Result<Self> {
+ let bind = STBind::try_from((v & BIND_MASK) >> BIND_SHIFT)?;
+ let kind = STType::try_from((v & TYPE_MASK) >> TYPE_SHIFT)?;
+ Ok(Self { bind, kind })
+ }
+}
+
+impl From<SymbolInfo> for u8 {
+
+ fn from(v: SymbolInfo) -> Self {
+ let b: u8 = v.bind().into();
+ let t: u8 = v.kind().into();
+ (b << BIND_SHIFT) | (t << TYPE_SHIFT)
+ }
+
+}
+
+impl Convert<u8> for SymbolInfo {
+ fn convert(self) -> Result<u8> { Ok(self.into()) }
+}
+
+impl Convert<SymbolInfo> for u8 {
+ fn convert(self) -> Result<SymbolInfo> { self.try_into() }
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn test_symbol_info_parse_pair() {
+ let value = 0x21; // STB_WEAK + STT_OBJECT
+ let result = SymbolInfo::try_from(value);
+
+ assert!(result.is_ok());
+ let info = result.unwrap();
+
+ assert_eq!(info.bind,STBind::STB_WEAK);
+ assert_eq!(info.kind,STType::STT_OBJECT);
+ }
+
+ #[test]
+ fn test_symbol_info_parse_zeroes() {
+ let value = 0x00; // STB_LOCAL + STT_NOTYPE
+ let result = SymbolInfo::try_from(value);
+
+ assert!(result.is_ok());
+ let info = result.unwrap();
+
+ assert_eq!(info.bind,STBind::STB_LOCAL);
+ assert_eq!(info.kind,STType::STT_NOTYPE);
+ }
+
+ #[test]
+ fn test_symbol_info_back_to_zeroes() {
+ let value = 0x00; // STB_LOCAL + STT_NOTYPE
+ let info = SymbolInfo::try_from(value).unwrap();
+ let result: Result<u8> = info.convert();
+
+ assert!(result.is_ok());
+ assert_eq!(result.unwrap(),value);
+ }
+
+ #[test]
+ fn test_symbol_info_back_to_value() {
+ let value = 0x21; // STB_LOCAL + STT_OBJECT
+ let info = SymbolInfo::try_from(value).unwrap();
+ let result: Result<u8> = info.convert();
+
+ assert!(result.is_ok());
+ assert_eq!(result.unwrap(),value);
+ }
+
+}
\ No newline at end of file
diff --git a/src/deaf/symbols/mod.rs.html b/src/deaf/symbols/mod.rs.html
new file mode 100644
index 0000000..f5fb961
--- /dev/null
+++ b/src/deaf/symbols/mod.rs.html
@@ -0,0 +1,12 @@
+mod.rs - source
+mod info;
+mod symbol;
+
+pub use info::SymbolInfo;
+pub use symbol::Symbol;
\ No newline at end of file
diff --git a/src/deaf/symbols/symbol.rs.html b/src/deaf/symbols/symbol.rs.html
new file mode 100644
index 0000000..cb05d93
--- /dev/null
+++ b/src/deaf/symbols/symbol.rs.html
@@ -0,0 +1,1278 @@
+symbol.rs - source
use crate::errors::Result;
+use crate::common::{
+ Width,
+ Layout,
+ Item,
+ ranges::*, STType, STBind, STVisibility
+};
+use crate::symbols::SymbolInfo;
+use crate::tables::TableItem;
+
+/// A Symbol item found in symbol tables
+#[derive(Clone,Debug)]
+pub struct Symbol {
+ st_name: Item<u32,u32,usize>,
+ st_value: Item<u32,u64>,
+ st_size: Item<u32,u64>,
+ st_info: Item<u8,u8,SymbolInfo>,
+ st_other: Item<u8>,
+ st_shndx: Item<u16,u16>,
+}
+
+impl Symbol {
+
+ /// Create a new symbol
+ pub fn new() -> Self {
+ Self {
+ st_name: Item::new(ST_NAME),
+ st_value: Item::new(ST_VALUE),
+ st_size: Item::new(ST_SIZE),
+ st_info: Item::new(ST_INFO),
+ st_other: Item::new(ST_OTHER),
+ st_shndx: Item::new(ST_SHNDX),
+ }
+ }
+
+ /// Get the 'st_name' field (name *index*) of the symbol
+ pub fn name(&self) -> usize {
+ self.st_name.get()
+ }
+
+ /// Set the 'st_name' field (name *index*) of the symbol
+ pub fn set_name(&mut self, value: usize) {
+ self.st_name.set(value);
+ }
+
+ /// Builder method to set the 'st_name' field of the symbol
+ pub fn with_name(mut self, value: usize) -> Self {
+ self.set_name(value);
+ self
+ }
+
+ /// Get the 'st_value' field of the symbol
+ pub fn value(&self) -> u64 {
+ self.st_value.get()
+ }
+
+ /// Set the 'st_value' field of the symbol
+ pub fn set_value(&mut self, value: u64) {
+ self.st_value.set(value);
+ }
+
+ /// Builder method to set the 'st_value' field of the symbol
+ pub fn with_value(mut self, value: u64) -> Self {
+ self.set_value(value);
+ self
+ }
+
+ /// Get the 'st_size' field of the symbol
+ pub fn size(&self) -> u64 {
+ self.st_size.get()
+ }
+
+ /// Set the 'st_size' field of the symbol
+ pub fn set_size(&mut self, value: u64) {
+ self.st_size.set(value);
+ }
+
+ /// Builder method to set the 'st_size' field of the symbol
+ pub fn with_size(mut self, value: u64) -> Self {
+ self.set_size(value);
+ self
+ }
+
+ /// Get the 'st_info' field of the symbol
+ pub fn info(&self) -> SymbolInfo {
+ self.st_info.get()
+ }
+
+ /// Set the 'st_info' field of the symbol
+ pub fn set_info(&mut self, value: SymbolInfo) {
+ self.st_info.set(value);
+ }
+
+ /// Builder method to set the 'st_info' field of the symbol
+ pub fn with_info(mut self, value: SymbolInfo) -> Self {
+ self.set_info(value);
+ self
+ }
+
+ /// Get the type of the symbol
+ pub fn kind(&self) -> STType {
+ self.info().kind()
+ }
+
+ /// Set the kind of the symbol
+ pub fn set_kind(&mut self, kind: STType) {
+ self.set_info(self.info().with_kind(kind))
+ }
+
+ /// Builder method to set the kind (on SymbolInfo) of the symbol
+ pub fn with_kind(mut self, value: STType) -> Self {
+ self.set_kind(value);
+ self
+ }
+
+ /// Get the binding of the symbol
+ pub fn bind(&self) -> STBind {
+ self.info().bind()
+ }
+
+ /// Set the binding of the symbol
+ pub fn set_bind(&mut self, bind: STBind) {
+ self.set_info(self.info().with_bind(bind))
+ }
+
+ /// Builder method to set the bind (on SymbolInfo) of the symbol
+ pub fn with_bind(mut self, value: STBind) -> Self {
+ self.set_bind(value);
+ self
+ }
+
+ /// Get the 'st_other' field of the symbol
+ pub fn other(&self) -> u8 {
+ self.st_other.get()
+ }
+
+ /// Set the 'st_other' field of the symbol
+ pub fn set_other(&mut self, value: u8) {
+ self.st_other.set(value);
+ }
+
+ /// Builder method to set the 'st_other' field of the symbol
+ pub fn with_other(mut self, value: u8) -> Self {
+ self.set_other(value);
+ self
+ }
+
+ /// Get the 'st_other' field as an enum
+ pub fn visibility(&self) -> STVisibility {
+ self.st_other.get().into()
+ }
+
+ /// Set the 'st_other' field as an enum
+ ///
+ /// Setting the visibility through this method will
+ /// overwrite any changes previously done through
+ /// 'set_other' or 'with_other'.
+ pub fn set_visibility(&mut self, value: STVisibility) {
+ self.set_other(value.into());
+ }
+
+ /// Builder method to set the 'st_other' field as an enum
+ ///
+ /// Setting the visibility through this method will
+ /// overwrite any changes previously done through
+ /// 'set_other' or 'with_other'.
+ pub fn with_visibility(mut self, value: STVisibility) -> Self {
+ self.set_visibility(value);
+ self
+ }
+
+ /// Get the 'st_shndx' field of the symbol
+ pub fn shndx(&self) -> u16 {
+ self.st_shndx.get()
+ }
+
+ /// Set the 'st_shndx' field of the symbol
+ pub fn set_shndx(&mut self, value: u16) {
+ self.st_shndx.set(value);
+ }
+
+ /// Builder method to set the 'st_shndx' field of the symbol
+ pub fn with_shndx(mut self, value: u16) -> Self {
+ self.set_shndx(value);
+ self
+ }
+
+ /// Get the current layout of the symbol
+ pub fn layout(&self) -> Layout {
+ self.st_name.layout()
+ }
+
+ /// Set the current layout of the symbol
+ pub fn set_layout(&mut self, layout: Layout){
+ TableItem::set_layout(self, layout)
+ }
+
+ /// Builder method to set the layout of the symbol
+ pub fn with_layout(mut self, value: Layout) -> Self {
+ self.set_layout(value);
+ self
+ }
+
+ /// Get the current width of the symbol
+ pub fn width(&self) -> Width {
+ self.st_name.width()
+ }
+
+ /// Set the current width of the symbol
+ pub fn set_width(&mut self, width: Width){
+ TableItem::set_width(self, width)
+ }
+
+ /// Builder method to set the width of the symbol
+ pub fn with_width(mut self, value: Width) -> Self {
+ self.set_width(value);
+ self
+ }
+
+ /// Read all fields from a data buffer
+ pub fn read(&mut self, data: &[u8]) -> Result<()> {
+ TableItem::read(self, data)
+ }
+
+ /// Write all fields to a mutable data buffer
+ pub fn write(&self, data: &mut [u8]) -> Result<()> {
+ TableItem::write(self,data)
+ }
+
+ /// Get the calculated size of the symbol
+ pub fn item_size(&self) -> usize {
+ TableItem::size(self)
+ }
+
+ /// Finish building and validate the new symbol
+ pub fn build(self) -> Result<Self> {
+ self.validate()?;
+ Ok(self)
+ }
+
+ /// Validate the symbol fields
+ pub fn validate(&self) -> Result<()> {
+ STVisibility::try_from(self.other())?;
+ Ok(())
+ }
+
+}
+
+impl TableItem for Symbol {
+
+ fn set_layout(&mut self, layout: Layout){
+ self.st_name.set_layout(layout);
+ self.st_value.set_layout(layout);
+ self.st_size.set_layout(layout);
+ self.st_info.set_layout(layout);
+ self.st_other.set_layout(layout);
+ self.st_shndx.set_layout(layout);
+ }
+
+ fn set_width(&mut self, width: Width){
+ self.st_name.set_width(width);
+ self.st_value.set_width(width);
+ self.st_size.set_width(width);
+ self.st_info.set_width(width);
+ self.st_other.set_width(width);
+ self.st_shndx.set_width(width);
+ }
+
+ fn read(&mut self, b: &[u8]) -> Result<()> {
+ self.st_name.read(b)?;
+ self.st_value.read(b)?;
+ self.st_size.read(b)?;
+ self.st_info.read(b)?;
+ self.st_other.read(b)?;
+ self.st_shndx.read(b)?;
+ Ok(())
+ }
+
+ fn write(&self, b: &mut [u8]) -> Result<()> {
+ self.st_name.write(b)?;
+ self.st_value.write(b)?;
+ self.st_size.write(b)?;
+ self.st_info.write(b)?;
+ self.st_other.write(b)?;
+ self.st_shndx.write(b)?;
+ Ok(())
+ }
+
+ fn size(&self) -> usize {
+ self.st_name.size() +
+ self.st_value.size() +
+ self.st_size.size() +
+ self.st_info.size() +
+ self.st_other.size() +
+ self.st_shndx.size()
+ }
+
+}
+
+impl Default for Symbol {
+ fn default() -> Self {
+ Self::new()
+ }
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ macro_rules! setup_32 {
+ () => {{
+ let symbol = Symbol::new()
+ .with_layout(Layout::Little)
+ .with_width(Width::X32)
+ .build()
+ .unwrap();
+
+ // 32-bit, little-endian hex representation of a symbol
+ let data: [u8;16] = [
+ 0x01, 0x00, 0x00, 0x00, // name: 1
+ 0x01, 0x00, 0x00, 0x00, // value: 1
+ 0x18, 0x00, 0x00, 0x00, // size: 24
+ 0x21, // info: STB_WEAK + STT_OBJECT
+ 0x01, // other: 1
+ 0x01, 0x00, // shndx: 1
+ ];
+
+ (symbol,data)
+ }};
+ }
+
+ macro_rules! setup_64 {
+ () => {{
+ let symbol = Symbol::new()
+ .with_layout(Layout::Little)
+ .with_width(Width::X64)
+ .build()
+ .unwrap();
+
+ // 64-bit, little-endian hex representation of a symbol
+ let data: [u8;24] = [
+ 0x01, 0x00, 0x00, 0x00, // name: 1
+ 0x21, // info: STB_WEAK + STT_OBJECT
+ 0x01, // other: 1
+ 0x01, 0x00, // shndx: 1
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // value: 1
+ 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // size: 24
+ ];
+
+ (symbol,data)
+ }};
+ }
+
+ #[test]
+ fn test_create_symbol_64() {
+ let (_, data) = setup_64!();
+
+ let mut buffer: [u8;24] = [0;24];
+
+ let symbol = Symbol::new()
+ .with_layout(Layout::Little)
+ .with_width(Width::X64)
+ .with_visibility(STVisibility::STV_INTERNAL)
+ .with_bind(STBind::STB_WEAK)
+ .with_kind(STType::STT_OBJECT)
+ .with_name(1)
+ .with_value(1)
+ .with_size(24)
+ .with_shndx(1)
+ .build()
+ .unwrap();
+
+ let result = symbol.write(&mut buffer);
+
+ assert!(result.is_ok());
+ assert_eq!(buffer,data);
+ }
+
+ #[test]
+ fn test_symbol_read_write_name_64() {
+ let (mut symbol, mut data) = setup_64!();
+ let maximum = 0xffffffff;
+
+ let result = symbol.read(&data);
+ assert!(result.is_ok());
+ assert_eq!(symbol.name(),1);
+
+ symbol.set_value(maximum);
+ assert_eq!(symbol.value(),maximum);
+
+ let result = symbol.write(&mut data);
+ assert!(result.is_ok());
+
+ let result = symbol.read(&data);
+ assert!(result.is_ok());
+ assert_eq!(symbol.value(),maximum);
+ }
+
+ #[test]
+ fn test_symbol_read_write_kind_64() {
+ let (mut symbol, mut data) = setup_64!();
+
+ let result = symbol.read(&data);
+ assert!(result.is_ok());
+ assert_eq!(symbol.kind(),STType::STT_OBJECT);
+
+ symbol.set_kind(STType::STT_FUNC);
+ assert_eq!(symbol.kind(),STType::STT_FUNC);
+
+ let result = symbol.write(&mut data);
+ assert!(result.is_ok());
+
+ let result = symbol.read(&data);
+ assert!(result.is_ok());
+ assert_eq!(symbol.kind(),STType::STT_FUNC);
+ }
+
+ #[test]
+ fn test_symbol_read_write_bind_64() {
+ let (mut symbol, mut data) = setup_64!();
+
+ let result = symbol.read(&data);
+ assert!(result.is_ok());
+ assert_eq!(symbol.bind(),STBind::STB_WEAK);
+
+ symbol.set_bind(STBind::STB_GLOBAL);
+ assert_eq!(symbol.bind(),STBind::STB_GLOBAL);
+
+ let result = symbol.write(&mut data);
+ assert!(result.is_ok());
+
+ let result = symbol.read(&data);
+ assert!(result.is_ok());
+ assert_eq!(symbol.bind(),STBind::STB_GLOBAL);
+ }
+
+ #[test]
+ fn test_symbol_read_write_shndx_64() {
+ let (mut symbol, mut data) = setup_64!();
+ let maximum = 0xffff;
+
+ let result = symbol.read(&data);
+ assert!(result.is_ok());
+ assert_eq!(symbol.shndx(),1);
+
+ symbol.set_shndx(maximum);
+ assert_eq!(symbol.shndx(),maximum);
+
+ let result = symbol.write(&mut data);
+ assert!(result.is_ok());
+
+ let result = symbol.read(&data);
+ assert!(result.is_ok());
+ assert_eq!(symbol.shndx(),maximum);
+ }
+
+ #[test]
+ fn test_symbol_read_write_value_64() {
+ let (mut symbol, mut data) = setup_64!();
+ let maximum = 0xffffffffffffffff;
+
+ let result = symbol.read(&data);
+ assert!(result.is_ok());
+ assert_eq!(symbol.value(),1);
+
+ symbol.set_value(maximum);
+ assert_eq!(symbol.value(),maximum);
+
+ let result = symbol.write(&mut data);
+ assert!(result.is_ok());
+
+ let result = symbol.read(&data);
+ assert!(result.is_ok());
+ assert_eq!(symbol.value(),maximum);
+ }
+
+ #[test]
+ fn test_symbol_read_write_size_64() {
+ let (mut symbol, mut data) = setup_64!();
+ let maximum = 0xffffffffffffffff;
+
+ let result = symbol.read(&data);
+ assert!(result.is_ok());
+ assert_eq!(symbol.size(),24);
+
+ symbol.set_size(maximum);
+ assert_eq!(symbol.size(),maximum);
+
+ let result = symbol.write(&mut data);
+ assert!(result.is_ok());
+
+ let result = symbol.read(&data);
+ assert!(result.is_ok());
+ assert_eq!(symbol.size(),maximum);
+ }
+
+ #[test]
+ fn test_create_symbol_32() {
+ let (_, data) = setup_32!();
+
+ let mut buffer: [u8;16] = [0;16];
+
+ let symbol = Symbol::new()
+ .with_layout(Layout::Little)
+ .with_width(Width::X32)
+ .with_visibility(STVisibility::STV_INTERNAL)
+ .with_bind(STBind::STB_WEAK)
+ .with_kind(STType::STT_OBJECT)
+ .with_name(1)
+ .with_value(1)
+ .with_size(24)
+ .with_shndx(1)
+ .build()
+ .unwrap();
+
+ let result = symbol.write(&mut buffer);
+
+ assert!(result.is_ok());
+ assert_eq!(buffer,data);
+ }
+
+ #[test]
+ fn test_symbol_read_write_name_32() {
+ let (mut symbol, mut data) = setup_32!();
+ let maximum = 0xffff;
+
+ let result = symbol.read(&data);
+ assert!(result.is_ok());
+ assert_eq!(symbol.name(),1);
+
+ symbol.set_value(maximum);
+ assert_eq!(symbol.value(),maximum);
+
+ let result = symbol.write(&mut data);
+ assert!(result.is_ok());
+
+ let result = symbol.read(&data);
+ assert!(result.is_ok());
+ assert_eq!(symbol.value(),maximum);
+ }
+
+ #[test]
+ fn test_symbol_read_write_kind_32() {
+ let (mut symbol, mut data) = setup_32!();
+
+ let result = symbol.read(&data);
+ assert!(result.is_ok());
+ assert_eq!(symbol.kind(),STType::STT_OBJECT);
+
+ symbol.set_kind(STType::STT_FUNC);
+ assert_eq!(symbol.kind(),STType::STT_FUNC);
+
+ let result = symbol.write(&mut data);
+ assert!(result.is_ok());
+
+ let result = symbol.read(&data);
+ assert!(result.is_ok());
+ assert_eq!(symbol.kind(),STType::STT_FUNC);
+ }
+
+ #[test]
+ fn test_symbol_read_write_bind_32() {
+ let (mut symbol, mut data) = setup_32!();
+
+ let result = symbol.read(&data);
+ assert!(result.is_ok());
+ assert_eq!(symbol.bind(),STBind::STB_WEAK);
+
+ symbol.set_bind(STBind::STB_GLOBAL);
+ assert_eq!(symbol.bind(),STBind::STB_GLOBAL);
+
+ let result = symbol.write(&mut data);
+ assert!(result.is_ok());
+
+ let result = symbol.read(&data);
+ assert!(result.is_ok());
+ assert_eq!(symbol.bind(),STBind::STB_GLOBAL);
+ }
+
+ #[test]
+ fn test_symbol_read_write_shndx_32() {
+ let (mut symbol, mut data) = setup_32!();
+ let maximum = 0xffff;
+
+ let result = symbol.read(&data);
+ assert!(result.is_ok());
+ assert_eq!(symbol.shndx(),1);
+
+ symbol.set_shndx(maximum);
+ assert_eq!(symbol.shndx(),maximum);
+
+ let result = symbol.write(&mut data);
+ assert!(result.is_ok());
+
+ let result = symbol.read(&data);
+ assert!(result.is_ok());
+ assert_eq!(symbol.shndx(),maximum);
+ }
+
+ #[test]
+ fn test_symbol_read_write_value_32() {
+ let (mut symbol, mut data) = setup_32!();
+ let maximum = 0xffffffff;
+
+ let result = symbol.read(&data);
+ assert!(result.is_ok());
+ assert_eq!(symbol.value(),1);
+
+ symbol.set_value(maximum);
+ assert_eq!(symbol.value(),maximum);
+
+ let result = symbol.write(&mut data);
+ assert!(result.is_ok());
+
+ let result = symbol.read(&data);
+ assert!(result.is_ok());
+ assert_eq!(symbol.value(),maximum);
+ }
+
+ #[test]
+ fn test_symbol_read_write_size_32() {
+ let (mut symbol, mut data) = setup_32!();
+ let maximum = 0xffffffff;
+
+ let result = symbol.read(&data);
+ assert!(result.is_ok());
+ assert_eq!(symbol.size(),24);
+
+ symbol.set_size(maximum);
+ assert_eq!(symbol.size(),maximum);
+
+ let result = symbol.write(&mut data);
+ assert!(result.is_ok());
+
+ let result = symbol.read(&data);
+ assert!(result.is_ok());
+ assert_eq!(symbol.size(),maximum);
+ }
+}
\ No newline at end of file
diff --git a/src/deaf/tables/info/mod.rs.html b/src/deaf/tables/info/mod.rs.html
index 7b55163..a55a6ec 100644
--- a/src/deaf/tables/info/mod.rs.html
+++ b/src/deaf/tables/info/mod.rs.html
@@ -1,12 +1,8 @@
-mod.rs - source
-mod symbol;
mod relocation;
-pub use symbol::SymbolInfo;
pub use relocation::RelocationInfo;
\ No newline at end of file
diff --git a/src/deaf/tables/info/relocation.rs.html b/src/deaf/tables/info/relocation.rs.html
index 4b8de58..7e6f544 100644
--- a/src/deaf/tables/info/relocation.rs.html
+++ b/src/deaf/tables/info/relocation.rs.html
@@ -1,4 +1,4 @@
-relocation.rs - source
use crate::errors::Result;
-use crate::common::{Convert, STBind, STType};
-
-/// Representation of the info field in a Symbol record
-#[derive(Default,Clone,Copy,PartialEq)]
-pub struct SymbolInfo {
- bind: STBind,
- kind: STType,
-}
-
-impl SymbolInfo {
-
- /// Initialize an empty symbol info instance
- pub fn empty() -> Self {
- Self {
- bind: STBind::STB_LOCAL,
- kind: STType::STT_NOTYPE
- }
- }
-
- /// Parse a combined value as an info struct
- pub fn new(v: u8) -> Result<Self> {
- let bind = STBind::try_from(v >> 4)?;
- let kind = STType::try_from(v & 0xf)?;
- Ok(Self { bind, kind })
- }
-
- /// Get the combined value of the info struct
- pub fn value(&self) -> u8 {
- let b: u8 = self.bind.into();
- let t: u8 = self.kind.into();
- (b << 4) | t
- }
-
- /// Get the 'kind' component of the info struct
- pub fn kind(&self) -> STType {
- self.kind.clone()
- }
-
- /// Get the 'bind' component of the info struct
- pub fn bind(&self) -> STBind {
- self.bind.clone()
- }
-
-}
-
-impl Convert<u8> for SymbolInfo {
- fn convert(self) -> Result<u8> { Ok(self.value()) }
-}
-
-impl Convert<SymbolInfo> for u8 {
- fn convert(self) -> Result<SymbolInfo> { SymbolInfo::new(self) }
-}
-
-impl std::fmt::Debug for SymbolInfo {
- fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
- f.debug_struct("SymbolInfo")
- .field("kind", &self.kind())
- .field("bind", &self.bind())
- .finish()
- }
-}
-
-#[cfg(test)]
-mod tests {
- use super::*;
-
- #[test]
- fn test_symbol_info_parse_pair() {
- let value = 0x21; // STB_WEAK + STT_OBJECT
- let result = SymbolInfo::new(value);
-
- assert!(result.is_ok());
- let info = result.unwrap();
-
- assert_eq!(info.bind,STBind::STB_WEAK);
- assert_eq!(info.kind,STType::STT_OBJECT);
- }
-
- #[test]
- fn test_symbol_info_parse_zeroes() {
- let value = 0x00; // STB_LOCAL + STT_NOTYPE
- let result = SymbolInfo::new(value);
-
- assert!(result.is_ok());
- let info = result.unwrap();
-
- assert_eq!(info.bind,STBind::STB_LOCAL);
- assert_eq!(info.kind,STType::STT_NOTYPE);
- }
-
- #[test]
- fn test_symbol_info_back_to_zeroes() {
- let value = 0x00; // STB_LOCAL + STT_NOTYPE
- let info = SymbolInfo::new(value).unwrap();
- let result: Result<u8> = info.convert();
-
- assert!(result.is_ok());
- assert_eq!(result.unwrap(),value);
- }
-
- #[test]
- fn test_symbol_info_back_to_value() {
- let value = 0x21; // STB_WEAK + STT_OBJECT
- let info = SymbolInfo::new(value).unwrap();
- let result: Result<u8> = info.convert();
-
- assert!(result.is_ok());
- assert_eq!(result.unwrap(),value);
- }
-
-}
\ No newline at end of file
diff --git a/src/deaf/tables/items/array.rs.html b/src/deaf/tables/items/array.rs.html
index fdcac90..c2b8573 100644
--- a/src/deaf/tables/items/array.rs.html
+++ b/src/deaf/tables/items/array.rs.html
@@ -1,4 +1,4 @@
-array.rs - source
mod traits;
mod string;
-mod symbol;
mod relocation;
mod array;
pub use traits::TableItem;
pub use string::StringItem;
-pub use symbol::SymbolItem;
pub use array::ArrayItem;
pub use relocation::{
RelItem,
diff --git a/src/deaf/tables/items/relocation.rs.html b/src/deaf/tables/items/relocation.rs.html
index 8d70060..efc165f 100644
--- a/src/deaf/tables/items/relocation.rs.html
+++ b/src/deaf/tables/items/relocation.rs.html
@@ -1,4 +1,4 @@
-relocation.rs - source