Repository: amitgaru2/nepali-datetime (language: python)

Issue:
'%y' behaviour needs alteration
Currently, %y for any year 'xx' > 68 gives 19xx.

While the open group spec does suggest the range [69, 99] to be the year 1900s, it feels a tad bit foolish in the case of Nepali year, no? We're at 2077 currently; so I think that suggestion should be disregarded and updated accordingly.
'%y' behaviour needs alteration
Currently, %y for any year 'xx' > 68 gives 19xx.

While the open group spec does suggest the range [69, 99] to be the year 1900s, it feels a tad bit foolish in the case of Nepali year, no? We're at 2077 currently; so I think that suggestion should be disregarded and updated accordingly.


Discussion / hints:

Fix patch:
diff --git a/.gitignore b/.gitignore
index 3596ad4..e8200a5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,4 +10,6 @@ docs/source/_*
 
 /build
 
-/*.egg-info/
\ No newline at end of file
+/*.egg-info/
+
+dist/
diff --git a/README.md b/README.md
index da044d8..d3bb3e9 100755
--- a/README.md
+++ b/README.md
@@ -1,7 +1,10 @@
 # Nepali Datetime (Bikram Sambat Date & Nepal Time)
 
-The package inspired from Python's core `datetime` that
-operates on top of Bikram Sambat (B.S) date & Nepal Time (NPT) `+05:45`.
+The package inspired from Python's core `datetime` package that
+operates on top of Bikram Sambat (B.S) Date & Nepal Time (NPT) `+05:45`.
+
+> Supports: **Python 3.5+**
+
 
 ## Basic Usage
 
@@ -27,18 +30,14 @@ operates on top of Bikram Sambat (B.S) date & Nepal Time (NPT) `+05:45`.
 >>> nepali_datetime.datetime(2077, 5, 19, 8, 26, 10, 123456)
 
 # date/datetime formatting
->>> datetime.datetime(2020, 9, 4, 8, 26, 10, 123456).strftime("%d %B %Y")
-# 04 September 2020
 >>> nepali_datetime.datetime(2077, 5, 19, 8, 26, 10, 123456).strftime("%d %B %Y")
 # 19 Bhadau 2077
 
 # datetime parsed from string (strptime)
->>> datetime.datetime.strptime('2020-12-27', '%Y-%m-%d')
-# datetime.datetime(2020, 12, 27, 0, 0)
 >>> nepali_datetime.datetime.strptime('2077-09-12', '%Y-%m-%d')
 # nepali_datetime.datetime(2077, 9, 12, 0, 0)
 
-# date/datetime formatting with Nepali month unicode support
+# date/datetime formatting with Nepali unicode support
 >>> nepali_datetime.date(1977, 10, 25).strftime('%K-%n-%D (%k %N %G)')
 # १९७७-१०-२५ (७७ माघ आइतबार)
 
@@ -48,8 +47,8 @@ operates on top of Bikram Sambat (B.S) date & Nepal Time (NPT) `+05:45`.
 >>> nepali_datetime.datetime(1990, 5, 10, 5, 10, 20) + datetime.timedelta(hours=3, minutes=15)
 # nepali_datetime.date(1990, 5, 10, 8, 25, 20)
 
-# BS monthly calendar
->>> nepali_datetime.date(2078, 1, 10).calendar()
+# Bikram Sambat monthly calendar
+>>> nepali_datetime.date(2078, 1, 1).calendar()
 
           Baishakh 2078
 Sun  Mon  Tue  Wed  Thu  Fri  Sat
@@ -68,8 +67,8 @@ $ pip install nepali-datetime
 
 ## Documentation
 
-Complete documentations can be found [here](https://dxillar.github.io/nepali-datetime/).
+Complete documentations is [here](https://dxillar.github.io/nepali-datetime/).
 
 ## Contribution
 
-For contribution check the guidelines in [CONTRIBUTING.md](https://github.com/dxillar/nepali-datetime/blob/master/CONTRIBUTING.md).
+Any contributions are most welcome. Do check the guidelines in [CONTRIBUTING.md](https://github.com/dxillar/nepali-datetime/blob/master/CONTRIBUTING.md).
diff --git a/dist/nepali-datetime-1.0.5.1.tar.gz b/dist/nepali-datetime-1.0.5.1.tar.gz
deleted file mode 100644
index 1cbf7d8..0000000
Binary files a/dist/nepali-datetime-1.0.5.1.tar.gz and /dev/null differ
diff --git a/dist/nepali-datetime-1.0.5.tar.gz b/dist/nepali-datetime-1.0.5.tar.gz
deleted file mode 100644
index bad3404..0000000
Binary files a/dist/nepali-datetime-1.0.5.tar.gz and /dev/null differ
diff --git a/dist/nepali-datetime-1.0.6.tar.gz b/dist/nepali-datetime-1.0.6.tar.gz
deleted file mode 100644
index 6fe630b..0000000
Binary files a/dist/nepali-datetime-1.0.6.tar.gz and /dev/null differ
diff --git a/dist/nepali_datetime-1.0.5-py3-none-any.whl b/dist/nepali_datetime-1.0.5-py3-none-any.whl
deleted file mode 100644
index 6e89995..0000000
Binary files a/dist/nepali_datetime-1.0.5-py3-none-any.whl and /dev/null differ
diff --git a/dist/nepali_datetime-1.0.5.1-py3-none-any.whl b/dist/nepali_datetime-1.0.5.1-py3-none-any.whl
deleted file mode 100644
index e415a86..0000000
Binary files a/dist/nepali_datetime-1.0.5.1-py3-none-any.whl and /dev/null differ
diff --git a/dist/nepali_datetime-1.0.6-py3-none-any.whl b/dist/nepali_datetime-1.0.6-py3-none-any.whl
deleted file mode 100644
index e82dc2d..0000000
Binary files a/dist/nepali_datetime-1.0.6-py3-none-any.whl and /dev/null differ
diff --git a/docs/doctrees/environment.pickle b/docs/doctrees/environment.pickle
index 62c2e6a..1b03acb 100644
Binary files a/docs/doctrees/environment.pickle and b/docs/doctrees/environment.pickle differ
diff --git a/docs/doctrees/index.doctree b/docs/doctrees/index.doctree
index fb292f0..6d3f4c8 100644
Binary files a/docs/doctrees/index.doctree and b/docs/doctrees/index.doctree differ
diff --git a/docs/html/.buildinfo b/docs/html/.buildinfo
index cec4907..b10ceba 100644
--- a/docs/html/.buildinfo
+++ b/docs/html/.buildinfo
@@ -1,4 +1,4 @@
 # Sphinx build info version 1
 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
-config: b76c01f08330bc485db56e4cdf2a64d4
+config: 4f99e0a99eea167d190d882040574432
 tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/docs/html/_sources/index.rst.txt b/docs/html/_sources/index.rst.txt
index 70fba15..fe26da3 100644
--- a/docs/html/_sources/index.rst.txt
+++ b/docs/html/_sources/index.rst.txt
@@ -660,7 +660,7 @@ Directives   Meaning                          Example                  Notes
 ``%n``       Month as a zero-padded           ०१, ०२,..., १२               
              decimal number.                            
 
-``%y``       Year without century as a        00, 01, ..., 99               
+``%y``       Year without century as a        00, 01, ..., 99          \(7)     
              zero-padded decimal number.
 
 ``%k``       Year without century as a        ००, ०१, ..., ९९               
@@ -676,19 +676,35 @@ Directives   Meaning                          Example                  Notes
 
 ``%H``       Hour (24-hour clock) as a        00, 01, ..., 23               
              zero-padded decimal number.
+
+``%h``       Hour (24-hour clock) as a        ००, ०१, ..., २३               
+             zero-padded decimal number
+             in Nepali unicode.
                      
 ``%I``       Hour (12-hour clock) as a        01, 02, ..., 12               
              zero-padded decimal number.                          
 
+``%i``       Hour (12-hour clock) as a        ०१, ०२, ..., १२               
+             zero-padded decimal number
+             in Nepali unicode.
+
 ``%p``       Locale's equivalent of either    AM, PM                   \(1)
              AM or PM.                                                     
 
 ``%M``       Minute as a zero-padded          00, 01, ..., 59               
              decimal number.                                               
 
+``%l``       Minute as a zero-padded          ००, ०१, ..., ५९               
+             decimal number in Nepali
+             unicode.                                               
+
 ``%S``       Second as a zero-padded          00, 01, ..., 59          \(4)  
              decimal number.                                               
 
+``%s``       Second as a zero-padded          ००, ०१, ..., ५९          \(4)  
+             decimal number in Nepali
+             unicode.                     
+
 ``%f``       Microsecond as a decimal         000000, 000001, ...,     \(5)  
              number, zero-padded on the       999999                        
              left.                                                         
@@ -753,3 +769,9 @@ Notes:
       When the ``%z`` directive is provided to the :meth:`strptime` method, an
       aware :class:`.datetime` object will be produced.  The ``tzinfo`` of the
       result will be set to a :class:`timezone` instance.
+
+(7)
+   The year within century. When a century is not otherwise specified, values in 
+   the range [90,99] shall refer to years 1990 to 1999 inclusive, and values in 
+   the range [00,89] shall refer to years 2000 to 2089 inclusive; leading zeros 
+   shall be permitted but shall not be required.
diff --git a/docs/html/_static/basic.css b/docs/html/_static/basic.css
index 24a49f0..aa9df31 100644
--- a/docs/html/_static/basic.css
+++ b/docs/html/_static/basic.css
@@ -4,7 +4,7 @@
  *
  * Sphinx stylesheet -- basic theme.
  *
- * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
@@ -130,7 +130,7 @@ ul.search li a {
     font-weight: bold;
 }
 
-ul.search li div.context {
+ul.search li p.context {
     color: #888;
     margin: 2px 0 0 30px;
     text-align: left;
@@ -277,25 +277,25 @@ p.rubric {
     font-weight: bold;
 }
 
-img.align-left, .figure.align-left, object.align-left {
+img.align-left, figure.align-left, .figure.align-left, object.align-left {
     clear: left;
     float: left;
     margin-right: 1em;
 }
 
-img.align-right, .figure.align-right, object.align-right {
+img.align-right, figure.align-right, .figure.align-right, object.align-right {
     clear: right;
     float: right;
     margin-left: 1em;
 }
 
-img.align-center, .figure.align-center, object.align-center {
+img.align-center, figure.align-center, .figure.align-center, object.align-center {
   display: block;
   margin-left: auto;
   margin-right: auto;
 }
 
-img.align-default, .figure.align-default {
+img.align-default, figure.align-default, .figure.align-default {
   display: block;
   margin-left: auto;
   margin-right: auto;
@@ -319,7 +319,8 @@ img.align-default, .figure.align-default {
 
 /* -- sidebars -------------------------------------------------------------- */
 
-div.sidebar {
+div.sidebar,
+aside.sidebar {
     margin: 0 0 0.5em 1em;
     border: 1px solid #ddb;
     padding: 7px;
@@ -377,12 +378,14 @@ div.body p.centered {
 /* -- content of sidebars/topics/admonitions -------------------------------- */
 
 div.sidebar > :last-child,
+aside.sidebar > :last-child,
 div.topic > :last-child,
 div.admonition > :last-child {
     margin-bottom: 0;
 }
 
 div.sidebar::after,
+aside.sidebar::after,
 div.topic::after,
 div.admonition::after,
 blockquote::after {
@@ -455,20 +458,22 @@ td > :last-child {
 
 /* -- figures --------------------------------------------------------------- */
 
-div.figure {
+div.figure, figure {
     margin: 0.5em;
     padding: 0.5em;
 }
 
-div.figure p.caption {
+div.figure p.caption, figcaption {
     padding: 0.3em;
 }
 
-div.figure p.caption span.caption-number {
+div.figure p.caption span.caption-number,
+figcaption span.caption-number {
     font-style: italic;
 }
 
-div.figure p.caption span.caption-text {
+div.figure p.caption span.caption-text,
+figcaption span.caption-text {
 }
 
 /* -- field list styles ----------------------------------------------------- */
@@ -503,6 +508,63 @@ table.hlist td {
     vertical-align: top;
 }
 
+/* -- object description styles --------------------------------------------- */
+
+.sig {
+	font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
+}
+
+.sig-name, code.descname {
+    background-color: transparent;
+    font-weight: bold;
+}
+
+.sig-name {
+	font-size: 1.1em;
+}
+
+code.descname {
+    font-size: 1.2em;
+}
+
+.sig-prename, code.descclassname {
+    background-color: transparent;
+}
+
+.optional {
+    font-size: 1.3em;
+}
+
+.sig-paren {
+    font-size: larger;
+}
+
+.sig-param.n {
+	font-style: italic;
+}
+
+/* C++ specific styling */
+
+.sig-inline.c-texpr,
+.sig-inline.cpp-texpr {
+	font-family: unset;
+}
+
+.sig.c   .k, .sig.c   .kt,
+.sig.cpp .k, .sig.cpp .kt {
+	color: #0033B3;
+}
+
+.sig.c   .m,
+.sig.cpp .m {
+	color: #1750EB;
+}
+
+.sig.c   .s, .sig.c   .sc,
+.sig.cpp .s, .sig.cpp .sc {
+	color: #067D17;
+}
+
 
 /* -- other body styles ----------------------------------------------------- */
 
@@ -629,14 +691,6 @@ dl.glossary dt {
     font-size: 1.1em;
 }
 
-.optional {
-    font-size: 1.3em;
-}
-
-.sig-paren {
-    font-size: larger;
-}
-
 .versionmodified {
     font-style: italic;
 }
@@ -766,7 +820,11 @@ div.code-block-caption code {
 table.highlighttable td.linenos,
 span.linenos,
 div.doctest > div.highlight span.gp {  /* gp: Generic.Prompt */
-    user-select: none;
+  user-select: none;
+  -webkit-user-select: text; /* Safari fallback only */
+  -webkit-user-select: none; /* Chrome/Safari */
+  -moz-user-select: none; /* Firefox */
+  -ms-user-select: none; /* IE10+ */
 }
 
 div.code-block-caption span.caption-number {
@@ -781,16 +839,6 @@ div.literal-block-wrapper {
     margin: 1em 0;
 }
 
-code.descname {
-    background-color: transparent;
-    font-weight: bold;
-    font-size: 1.2em;
-}
-
-code.descclassname {
-    background-color: transparent;
-}
-
 code.xref, a code {
     background-color: transparent;
     font-weight: bold;
diff --git a/docs/html/_static/caret-down.svg b/docs/html/_static/caret-down.svg
new file mode 100644
index 0000000..fc55b34
--- /dev/null
+++ b/docs/html/_static/caret-down.svg
@@ -0,0 +1,1 @@
+<svg viewBox="0 0 30 30" xmlns="http://www.w3.org/2000/svg"><path d="M7.45896 11.25H22.5351c1.043 0 1.5645 1.2598.8262 1.998l-7.5352 7.5411c-.457.457-1.2011.457-1.6582 0L6.63279 13.248c-.73828-.7382-.2168-1.998.82617-1.998z" fill="#444"/></svg>
diff --git a/docs/html/_static/classic.css b/docs/html/_static/classic.css
index d7b3d1f..683efa1 100644
--- a/docs/html/_static/classic.css
+++ b/docs/html/_static/classic.css
@@ -4,7 +4,7 @@
  *
  * Sphinx stylesheet -- classic theme.
  *
- * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
diff --git a/docs/html/_static/copybutton.js b/docs/html/_static/copybutton.js
index f5960d2..16dee00 100644
--- a/docs/html/_static/copybutton.js
+++ b/docs/html/_static/copybutton.js
@@ -5,6 +5,7 @@ $(document).ready(function() {
     var div = $('.highlight-python .highlight,' +
                 '.highlight-python3 .highlight,' +
                 '.highlight-pycon .highlight,' +
+                '.highlight-pycon3 .highlight,' +
                 '.highlight-default .highlight');
     var pre = div.find('pre');
 
@@ -61,4 +62,3 @@ $(document).ready(function() {
         }
     });
 });
-
diff --git a/docs/html/_static/doctools.js b/docs/html/_static/doctools.js
index 7d88f80..61ac9d2 100644
--- a/docs/html/_static/doctools.js
+++ b/docs/html/_static/doctools.js
@@ -4,7 +4,7 @@
  *
  * Sphinx JavaScript utilities for all documentation.
  *
- * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
@@ -29,9 +29,14 @@ if (!window.console || !console.firebug) {
 
 /**
  * small helper function to urldecode strings
+ *
+ * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL
  */
 jQuery.urldecode = function(x) {
-  return decodeURIComponent(x).replace(/\+/g, ' ');
+  if (!x) {
+    return x
+  }
+  return decodeURIComponent(x.replace(/\+/g, ' '));
 };
 
 /**
diff --git a/docs/html/_static/language_data.js b/docs/html/_static/language_data.js
index d2b4ee9..863704b 100644
--- a/docs/html/_static/language_data.js
+++ b/docs/html/_static/language_data.js
@@ -5,7 +5,7 @@
  * This script contains the language-specific data used by searchtools.js,
  * namely the list of stopwords, stemmer, scorer and splitter.
  *
- * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
@@ -13,7 +13,8 @@
 var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"];
 
 
-/* Non-minified version JS is _stemmer.js if file is provided */ 
+/* Non-minified version is copied as a separate JS file, is available */
+
 /**
  * Porter Stemmer
  */
@@ -199,7 +200,6 @@ var Stemmer = function() {
 
 
 
-
 var splitChars = (function() {
     var result = {};
     var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648,
diff --git a/docs/html/_static/menu.js b/docs/html/_static/menu.js
new file mode 100644
index 0000000..b2eabb3
--- /dev/null
+++ b/docs/html/_static/menu.js
@@ -0,0 +1,55 @@
+document.addEventListener('DOMContentLoaded', function () {
+
+    // Make tables responsive by wrapping them in a div and making them scrollable
+    const tables = document.querySelectorAll('table.docutils');
+    tables.forEach(function(table){
+        table.outerHTML = '<div class="responsive-table__container">' + table.outerHTML + '</div>'
+    });
+
+    const togglerInput = document.querySelector('.toggler__input');
+    const togglerLabel = document.querySelector('.toggler__label');
+    const sideMenu = document.querySelector('.menu-wrapper');
+    const menuItems = document.querySelectorAll('.menu')
+    const doc = document.querySelector('.document');
+    const body = document.querySelector('body');
+
+    function closeMenu() {
+        togglerInput.checked = false;
+        sideMenu.setAttribute("aria-expanded", 'false');
+        sideMenu.setAttribute('aria-hidden', 'true');
+        togglerLabel.setAttribute('aria-pressed', 'false');
+        body.style.overflow = 'visible';
+    }
+    function openMenu() {
+        togglerInput.checked = true;
+        sideMenu.setAttribute("aria-expanded", 'true');
+        sideMenu.setAttribute('aria-hidden', 'false');
+        togglerLabel.setAttribute('aria-pressed', 'true');
+        body.style.overflow = 'hidden';
+    }
+
+    // Close menu when link on the sideMenu is clicked
+    sideMenu.addEventListener('click', function (event) {
+        let target = event.target;
+        if (target.tagName.toLowerCase() !== 'a') return;
+        closeMenu();
+    })
+    // Add accessibility data when sideMenu is opened/closed
+    togglerInput.addEventListener('change', function (e) {
+        togglerInput.checked ? openMenu() : closeMenu();
+    });
+    // Make sideMenu links tabbable only when visible
+    for(let menuItem of menuItems) {
+        if(togglerInput.checked) {
+          menuItem.setAttribute('tabindex', '0');
+        } else {
+          menuItem.setAttribute('tabindex', '-1');
+        }
+    }
+    // Close sideMenu when document body is clicked
+    doc.addEventListener('click', function () {
+        if (togglerInput.checked) {
+            closeMenu();
+        }
+    })
+})
\ No newline at end of file
diff --git a/docs/html/_static/py.svg b/docs/html/_static/py.svg
new file mode 100644
index 0000000..90b6c90
--- /dev/null
+++ b/docs/html/_static/py.svg
@@ -0,0 +1,14 @@
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M7.90472 0.00013087C7.24498 0.00316295 6.61493 0.0588153 6.06056 0.15584C4.42744 0.441207 4.13093 1.0385 4.13093 2.14002V3.59479H7.99018V4.07971H4.13093H2.68259C1.56098 4.07971 0.578874 4.7465 0.271682 6.01495C-0.0826595 7.4689 -0.0983765 8.37618 0.271682 9.89434C0.546011 11.0244 1.20115 11.8296 2.32275 11.8296H3.64965V10.0856C3.64965 8.82574 4.75178 7.71441 6.06056 7.71441H9.91531C10.9883 7.71441 11.8449 6.84056 11.8449 5.77472V2.14002C11.8449 1.10556 10.9626 0.328486 9.91531 0.15584C9.25235 0.046687 8.56447 -0.00290121 7.90472 0.00013087ZM5.81767 1.17017C6.2163 1.17017 6.54184 1.49742 6.54184 1.89978C6.54184 2.30072 6.2163 2.62494 5.81767 2.62494C5.41761 2.62494 5.0935 2.30072 5.0935 1.89978C5.0935 1.49742 5.41761 1.17017 5.81767 1.17017Z" fill="url(#paint0_linear)"/>
+<path d="M12.3262 4.07971V5.77472C12.3262 7.08883 11.1998 8.19488 9.9153 8.19488H6.06055C5.00466 8.19488 4.13092 9.0887 4.13092 10.1346V13.7693C4.13092 14.8037 5.04038 15.4122 6.06055 15.709C7.28217 16.0642 8.45364 16.1285 9.9153 15.709C10.8869 15.4307 11.8449 14.8708 11.8449 13.7693V12.3145H7.99017V11.8296H11.8449H13.7746C14.8962 11.8296 15.3141 11.0558 15.7042 9.89434C16.1071 8.69865 16.09 7.5488 15.7042 6.01495C15.427 4.91058 14.8976 4.07971 13.7746 4.07971H12.3262ZM10.1582 13.2843C10.5583 13.2843 10.8824 13.6086 10.8824 14.0095C10.8824 14.4119 10.5583 14.7391 10.1582 14.7391C9.75955 14.7391 9.43402 14.4119 9.43402 14.0095C9.43402 13.6086 9.75955 13.2843 10.1582 13.2843Z" fill="url(#paint1_linear)"/>
+<defs>
+<linearGradient id="paint0_linear" x1="1.25961e-08" y1="1.08223e-08" x2="8.81664" y2="7.59597" gradientUnits="userSpaceOnUse">
+<stop stop-color="#5A9FD4"/>
+<stop offset="1" stop-color="#306998"/>
+</linearGradient>
+<linearGradient id="paint1_linear" x1="10.0654" y1="13.8872" x2="6.91912" y2="9.42957" gradientUnits="userSpaceOnUse">
+<stop stop-color="#FFD43B"/>
+<stop offset="1" stop-color="#FFE873"/>
+</linearGradient>
+</defs>
+</svg>
diff --git a/docs/html/_static/pydoctheme.css b/docs/html/_static/pydoctheme.css
index 33f74d7..be98ed3 100644
--- a/docs/html/_static/pydoctheme.css
+++ b/docs/html/_static/pydoctheme.css
@@ -6,10 +6,15 @@ body {
     margin-right: 1em;
 }
 
+.mobile-nav,
+.menu-wrapper {
+    display: none;
+}
+
 div.related {
     margin-bottom: 1.2em;
     padding: 0.5em 0;
-    border-top: 1px solid #ccc;
+    border-bottom: 1px solid #ccc;
     margin-top: 0.5em;
 }
 
@@ -17,9 +22,23 @@ div.related a:hover {
     color: #0095C4;
 }
 
-div.related:first-child {
-    border-top: 0;
-    border-bottom: 1px solid #ccc;
+div.related ~ div.related {
+    border-top: 1px solid #ccc;
+    border-bottom: none;
+}
+
+.related .switchers {
+    display: inline-flex;
+}
+
+.switchers > div {
+    margin-right: 5px;
+}
+
+.version_switcher_placeholder,
+.language_switcher_placeholder {
+    padding-left: 5px;
+    background-color: white;
 }
 
 .inline-search {
@@ -191,3 +210,281 @@ div.footer a:hover {
 dl > dt span ~ em {
     font-family: monospace, sans-serif;
 }
+
+.toctree-wrapper ul {
+    padding-left: 20px;
+}
+
+@media (max-width: 1023px) {
+    /* Body layout */
+    div.body {
+        min-width: 100%;
+        padding: 0;
+        font-size: 0.875rem;
+    }
+    div.bodywrapper {
+        margin: 0;
+    }
+    /* Typography */
+    div.body h1 {
+        font-size: 1.625rem;
+    }
+    div.body h2 {
+        font-size: 1.25rem;
+    }
+    div.body h3, div.body h4, div.body h5 {
+        font-size: 1rem;
+    }
+    /* Remove sidebar and top related bar */
+    div.related, .sphinxsidebar {
+        display: none;
+    }
+    /* Anchorlinks are not hidden by fixed-positioned navbar when scrolled to */
+    html {
+        scroll-padding-top: 40px;
+    }
+
+    /* Top navigation bar */
+    .mobile-nav {
+        display: block;
+        height: 40px;
+        width: 100%;
+        position: fixed;
+        top: 0;
+        left: 0;
+        background-color: white;
+        box-shadow: rgba(0, 0, 0, 0.25) 0 0 2px 0;
+        z-index: 1;
+    }
+    .mobile-nav * {
+        box-sizing: border-box;
+    }
+    .nav-content {
+        position: absolute;
+        z-index: 2;
+        left: 0;
+        top: 0;
+        height: 40px;
+        width: 100%;
+        padding: 0 1rem 0 45px;
+        display: flex;
+        align-items: center;
+        background-color: white;
+    }
+    .nav-logo {
+        margin-right: 0.7rem;
+        display: flex;
+        flex: 0 0 auto;
+    }
+    .nav-content img {
+        width: 20px;
+        height: auto;
+    }
+    .version_switcher_placeholder {
+        flex: 0 1 0;
+        margin-right: 1rem;
+    }
+    .version_switcher_placeholder select {
+        height: 30px;
+        border-radius: 0;
+    }
+    .nav-content .search {
+        display: flex;
+        flex: 1 1 auto;
+        align-items: center;
+        padding: 0 0 0 2px;
+        border: 1px solid #a9a9a9;
+        height: 30px;
+        overflow: hidden;
+    }
+    .nav-content .search:hover {
+        box-shadow: 0 1px 6px 0 rgba(32,33,36,0.28);
+        border-color: rgba(223,225,229,0);
+    }
+    .nav-content .search input[type=text] {
+        border: 0;
+        outline: 0;
+        box-shadow: none;
+        width: 40px;
+        height: 28px;
+        flex: 1 1 auto;
+    }
+    .nav-content .search input[type=submit] {
+        height: 100%;
+        border: 0;
+        box-shadow: none;
+        outline: 1px solid #999;
+        cursor: pointer;
+    }
+    .nav-content .search svg {
+        flex: 0 0 20px;
+        fill: #333;
+    }
+    .toggler__input {
+        width: 40px;
+        height: 40px;
+        left: 0;
+        opacity: 0;
+        position: absolute;
+        z-index: 3;
+        margin: 0;
+    }
+    .toggler__label {
+        width: 40px;
+        height: 40px;
+        margin: 0;
+        position: absolute;
+        cursor: pointer;
+        top: 0;
+        left: 0;
+        background-color: transparent;
+        border: 1px solid white;
+        box-shadow: none;
+        z-index: 3;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        padding: 0 8px;
+    }
+    .toggler__label:focus {
+        background-color: #eee;
+        border: 1px solid #ededed;
+        box-shadow: rgba(0, 0, 0, 0.25) 1px 0 2px 0;
+    }
+    .toggler__label:hover {
+        background-color: #eee;
+        border: 1px solid #ededed;
+        box-shadow: rgba(0, 0, 0, 0.25) 1px 0 2px 0;
+    }
+    .toggler__label > span {
+        position: relative;
+        flex: none;
+        height: 2px;
+        width: 100%;
+        background: #444;
+        transition: all 400ms ease;
+    }
+    .toggler__label > span::before,
+    .toggler__label > span::after {
+        content: '';
+        height: 2px;
+        width: 100%;
+        background: inherit;
+        position: absolute;
+        left: 0;
+        top: -8px;
+    }
+    .toggler__label > span::after {
+        top: 8px;
+    }
+    .toggler__input:checked ~ .toggler__label span {
+        transform: rotate(135deg);
+    }
+    .toggler__input:checked ~ .toggler__label span::before {
+        transform: rotate(90deg);
+    }
+    .toggler__input:checked ~ .toggler__label span::before,
+    .toggler__input:checked ~ .toggler__label span::after {
+        top: 0;
+    }
+    .toggler__input:checked:hover ~ .toggler__label span {
+        transform: rotate(315deg);
+    }
+    .toggler__input:checked ~ .menu-wrapper {
+        visibility: visible;
+        left: 0;
+    }
+
+    /* Sliding side menu */
+    .menu-wrapper {
+        display: block;
+        position: fixed;
+        top: 0;
+        transition: left 400ms ease;
+        left: -310px;
+        width: 300px;
+        height: 100%;
+        background-color: #eee;
+        box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
+        overflow-y: auto;
+    }
+    .menu-wrapper.open {
+        visibility: visible;
+        left: 0;
+    }
+    .menu {
+        padding: 40px 10px 30px 20px;
+    }
+    .menu-wrapper h3,
+    .menu-wrapper h4 {
+        margin-bottom: 0;
+        font-weight: normal;
+    }
+    .menu-wrapper h4 {
+        font-size: 1.3em;
+    }
+    .menu-wrapper h3 {
+        color: #444444;
+        font-size: 1.4em;
+    }
+    .menu-wrapper h3 + p,
+    .menu-wrapper h4 + p {
+        margin-top: 0.5rem;
+    }
+    .menu a {
+        font-size: smaller;
+        color: #444444;
+        text-decoration: none;
+    }
+    .menu ul {
+        list-style: none;
+        line-height: 1.4;
+        overflow-wrap: break-word;
+        padding-left: 0;
+    }
+    .menu ul ul {
+        margin-left: 20px;
+        list-style: square;
+    }
+    .menu ul li {
+        margin-bottom: 0.5rem;
+    }
+    .language_switcher_placeholder,
+    .version_switcher_placeholder {
+        position: relative;
+        border: 1px solid #a8a8a8;
+        height: 30px;
+    }
+    .language_switcher_placeholder {
+        margin-top: 2rem;
+    }
+    .language_switcher_placeholder::after,
+    .version_switcher_placeholder::after {
+        content: url('../_static/caret-down.svg');
+        position: absolute;
+        top: 7px;
+        width: 15px;
+        height: 15px;
+        right: 3px;
+        pointer-events: none;
+    }
+    .language_switcher_placeholder select,
+    .version_switcher_placeholder select {
+        appearance: none;
+        border: 0;
+        height: 100%;
+    }
+    .language_switcher_placeholder select {
+        width: 100%;
+    }
+    .document {
+        padding-top: 40px;
+        position: relative;
+        z-index: 0;
+    }
+    /*Responsive tables*/
+    .responsive-table__container {
+        width: 100%;
+        overflow-x: auto;
+    }
+}
diff --git a/docs/html/_static/pygments.css b/docs/html/_static/pygments.css
index de7af26..582d5c3 100644
--- a/docs/html/_static/pygments.css
+++ b/docs/html/_static/pygments.css
@@ -1,74 +1,74 @@
 pre { line-height: 125%; }
-td.linenos pre { color: #000000; background-color: #f0f0f0; padding-left: 5px; padding-right: 5px; }
-span.linenos { color: #000000; background-color: #f0f0f0; padding-left: 5px; padding-right: 5px; }
-td.linenos pre.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
+td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
+span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
+td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
 span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
 .highlight .hll { background-color: #ffffcc }
-.highlight { background: #eeffcc; }
-.highlight .c { color: #408090; font-style: italic } /* Comment */
+.highlight { background: #f8f8f8; }
+.highlight .c { color: #408080; font-style: italic } /* Comment */
 .highlight .err { border: 1px solid #FF0000 } /* Error */
-.highlight .k { color: #007020; font-weight: bold } /* Keyword */
+.highlight .k { color: #008000; font-weight: bold } /* Keyword */
 .highlight .o { color: #666666 } /* Operator */
-.highlight .ch { color: #408090; font-style: italic } /* Comment.Hashbang */
-.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */
-.highlight .cp { color: #007020 } /* Comment.Preproc */
-.highlight .cpf { color: #408090; font-style: italic } /* Comment.PreprocFile */
-.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */
-.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
+.highlight .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #BC7A00 } /* Comment.Preproc */
+.highlight .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
 .highlight .gd { color: #A00000 } /* Generic.Deleted */
 .highlight .ge { font-style: italic } /* Generic.Emph */
 .highlight .gr { color: #FF0000 } /* Generic.Error */
 .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
 .highlight .gi { color: #00A000 } /* Generic.Inserted */
-.highlight .go { color: #333333 } /* Generic.Output */
-.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
+.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
 .highlight .gs { font-weight: bold } /* Generic.Strong */
 .highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
 .highlight .gt { color: #0044DD } /* Generic.Traceback */
-.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
-.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
-.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
-.highlight .kp { color: #007020 } /* Keyword.Pseudo */
-.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
-.highlight .kt { color: #902000 } /* Keyword.Type */
-.highlight .m { color: #208050 } /* Literal.Number */
-.highlight .s { color: #4070a0 } /* Literal.String */
-.highlight .na { color: #4070a0 } /* Name.Attribute */
-.highlight .nb { color: #007020 } /* Name.Builtin */
-.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
-.highlight .no { color: #60add5 } /* Name.Constant */
-.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
-.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
-.highlight .ne { color: #007020 } /* Name.Exception */
-.highlight .nf { color: #06287e } /* Name.Function */
-.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
-.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
-.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
-.highlight .nv { color: #bb60d5 } /* Name.Variable */
-.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
+.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #008000 } /* Keyword.Pseudo */
+.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #B00040 } /* Keyword.Type */
+.highlight .m { color: #666666 } /* Literal.Number */
+.highlight .s { color: #BA2121 } /* Literal.String */
+.highlight .na { color: #7D9029 } /* Name.Attribute */
+.highlight .nb { color: #008000 } /* Name.Builtin */
+.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
+.highlight .no { color: #880000 } /* Name.Constant */
+.highlight .nd { color: #AA22FF } /* Name.Decorator */
+.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #0000FF } /* Name.Function */
+.highlight .nl { color: #A0A000 } /* Name.Label */
+.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #19177C } /* Name.Variable */
+.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
 .highlight .w { color: #bbbbbb } /* Text.Whitespace */
-.highlight .mb { color: #208050 } /* Literal.Number.Bin */
-.highlight .mf { color: #208050 } /* Literal.Number.Float */
-.highlight .mh { color: #208050 } /* Literal.Number.Hex */
-.highlight .mi { color: #208050 } /* Literal.Number.Integer */
-.highlight .mo { color: #208050 } /* Literal.Number.Oct */
-.highlight .sa { color: #4070a0 } /* Literal.String.Affix */
-.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
-.highlight .sc { color: #4070a0 } /* Literal.String.Char */
-.highlight .dl { color: #4070a0 } /* Literal.String.Delimiter */
-.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
-.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
-.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
-.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
-.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
-.highlight .sx { color: #c65d09 } /* Literal.String.Other */
-.highlight .sr { color: #235388 } /* Literal.String.Regex */
-.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
-.highlight .ss { color: #517918 } /* Literal.String.Symbol */
-.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
-.highlight .fm { color: #06287e } /* Name.Function.Magic */
-.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
-.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
-.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
-.highlight .vm { color: #bb60d5 } /* Name.Variable.Magic */
-.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */
\ No newline at end of file
+.highlight .mb { color: #666666 } /* Literal.Number.Bin */
+.highlight .mf { color: #666666 } /* Literal.Number.Float */
+.highlight .mh { color: #666666 } /* Literal.Number.Hex */
+.highlight .mi { color: #666666 } /* Literal.Number.Integer */
+.highlight .mo { color: #666666 } /* Literal.Number.Oct */
+.highlight .sa { color: #BA2121 } /* Literal.String.Affix */
+.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
+.highlight .sc { color: #BA2121 } /* Literal.String.Char */
+.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */
+.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
+.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
+.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
+.highlight .sx { color: #008000 } /* Literal.String.Other */
+.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
+.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
+.highlight .ss { color: #19177C } /* Literal.String.Symbol */
+.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
+.highlight .fm { color: #0000FF } /* Name.Function.Magic */
+.highlight .vc { color: #19177C } /* Name.Variable.Class */
+.highlight .vg { color: #19177C } /* Name.Variable.Global */
+.highlight .vi { color: #19177C } /* Name.Variable.Instance */
+.highlight .vm { color: #19177C } /* Name.Variable.Magic */
+.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/docs/html/_static/searchtools.js b/docs/html/_static/searchtools.js
index 261ecaa..e09f926 100644
--- a/docs/html/_static/searchtools.js
+++ b/docs/html/_static/searchtools.js
@@ -4,7 +4,7 @@
  *
  * Sphinx JavaScript utilities for the full-text search.
  *
- * :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS.
+ * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
  * :license: BSD, see LICENSE for details.
  *
  */
@@ -248,7 +248,7 @@ var Search = {
       // results left, load the summary and display it
       if (results.length) {
         var item = results.pop();
-        var listItem = $('<li style="display:none"></li>');
+        var listItem = $('<li></li>');
         var requestUrl = "";
         var linkUrl = "";
         if (DOCUMENTATION_OPTIONS.BUILDER === 'dirhtml') {
@@ -273,9 +273,9 @@ var Search = {
         if (item[3]) {
           listItem.append($('<span> (' + item[3] + ')</span>'));
           Search.output.append(listItem);
-          listItem.slideDown(5, function() {
+          setTimeout(function() {
             displayNextItem();
-          });
+          }, 5);
         } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
           $.ajax({url: requestUrl,
                   dataType: "text",
@@ -285,16 +285,16 @@ var Search = {
                       listItem.append(Search.makeSearchSummary(data, searchterms, hlterms));
                     }
                     Search.output.append(listItem);
-                    listItem.slideDown(5, function() {
+                    setTimeout(function() {
                       displayNextItem();
-                    });
+                    }, 5);
                   }});
         } else {
           // no source available, just display title
           Search.output.append(listItem);
-          listItem.slideDown(5, function() {
+          setTimeout(function() {
             displayNextItem();
-          });
+          }, 5);
         }
       }
       // search finished, update title and status message
@@ -379,6 +379,13 @@ var Search = {
     return results;
   },
 
+  /**
+   * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
+   */
+  escapeRegExp : function(string) {
+    return string.replace(/[.*+\-?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
+  },
+
   /**
    * search for full-text terms in the index
    */
@@ -402,13 +409,14 @@ var Search = {
       ];
       // add support for partial matches
       if (word.length > 2) {
+        var word_regex = this.escapeRegExp(word);
         for (var w in terms) {
-          if (w.match(word) && !terms[word]) {
+          if (w.match(word_regex) && !terms[word]) {
             _o.push({files: terms[w], score: Scorer.partialTerm})
           }
         }
         for (var w in titleterms) {
-          if (w.match(word) && !titleterms[word]) {
+          if (w.match(word_regex) && !titleterms[word]) {
               _o.push({files: titleterms[w], score: Scorer.partialTitle})
           }
         }
@@ -501,7 +509,7 @@ var Search = {
     var excerpt = ((start > 0) ? '...' : '') +
       $.trim(text.substr(start, 240)) +
       ((start + 240 - text.length) ? '...' : '');
-    var rv = $('<div class="context"></div>').text(excerpt);
+    var rv = $('<p class="context"></p>').text(excerpt);
     $.each(hlwords, function() {
       rv = rv.highlightText(this, 'highlighted');
     });
diff --git a/docs/html/_static/underscore-1.13.1.js b/docs/html/_static/underscore-1.13.1.js
new file mode 100644
index 0000000..ffd77af
--- /dev/null
+++ b/docs/html/_static/underscore-1.13.1.js
@@ -0,0 +1,2042 @@
+(function (global, factory) {
+  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+  typeof define === 'function' && define.amd ? define('underscore', factory) :
+  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (function () {
+    var current = global._;
+    var exports = global._ = factory();
+    exports.noConflict = function () { global._ = current; return exports; };
+  }()));
+}(this, (function () {
+  //     Underscore.js 1.13.1
+  //     https://underscorejs.org
+  //     (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors
+  //     Underscore may be freely distributed under the MIT license.
+
+  // Current version.
+  var VERSION = '1.13.1';
+
+  // Establish the root object, `window` (`self`) in the browser, `global`
+  // on the server, or `this` in some virtual machines. We use `self`
+  // instead of `window` for `WebWorker` support.
+  var root = typeof self == 'object' && self.self === self && self ||
+            typeof global == 'object' && global.global === global && global ||
+            Function('return this')() ||
+            {};
+
+  // Save bytes in the minified (but not gzipped) version:
+  var ArrayProto = Array.prototype, ObjProto = Object.prototype;
+  var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;
+
+  // Create quick reference variables for speed access to core prototypes.
+  var push = ArrayProto.push,
+      slice = ArrayProto.slice,
+      toString = ObjProto.toString,
+      hasOwnProperty = ObjProto.hasOwnProperty;
+
+  // Modern feature detection.
+  var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',
+      supportsDataView = typeof DataView !== 'undefined';
+
+  // All **ECMAScript 5+** native function implementations that we hope to use
+  // are declared here.
+  var nativeIsArray = Array.isArray,
+      nativeKeys = Object.keys,
+      nativeCreate = Object.create,
+      nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;
+
+  // Create references to these builtin functions because we override them.
+  var _isNaN = isNaN,
+      _isFinite = isFinite;
+
+  // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.
+  var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');
+  var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',
+    'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];
+
+  // The largest integer that can be represented exactly.
+  var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;
+
+  // Some functions take a variable number of arguments, or a few expected
+  // arguments at the beginning and then a variable number of values to operate
+  // on. This helper accumulates all remaining arguments past the function’s
+  // argument length (or an explicit `startIndex`), into an array that becomes
+  // the last argument. Similar to ES6’s "rest parameter".
+  function restArguments(func, startIndex) {
+    startIndex = startIndex == null ? func.length - 1 : +startIndex;
+    return function() {
+      var length = Math.max(arguments.length - startIndex, 0),
+          rest = Array(length),
+          index = 0;
+      for (; index < length; index++) {
+        rest[index] = arguments[index + startIndex];
+      }
+      switch (startIndex) {
+        case 0: return func.call(this, rest);
+        case 1: return func.call(this, arguments[0], rest);
+        case 2: return func.call(this, arguments[0], arguments[1], rest);
+      }
+      var args = Array(startIndex + 1);
+      for (index = 0; index < startIndex; index++) {
+        args[index] = arguments[index];
+      }
+      args[startIndex] = rest;
+      return func.apply(this, args);
+    };
+  }
+
+  // Is a given variable an object?
+  function isObject(obj) {
+    var type = typeof obj;
+    return type === 'function' || type === 'object' && !!obj;
+  }
+
+  // Is a given value equal to null?
+  function isNull(obj) {
+    return obj === null;
+  }
+
+  // Is a given variable undefined?
+  function isUndefined(obj) {
+    return obj === void 0;
+  }
+
+  // Is a given value a boolean?
+  function isBoolean(obj) {
+    return obj === true || obj === false || toString.call(obj) === '[object Boolean]';
+  }
+
+  // Is a given value a DOM element?
+  function isElement(obj) {
+    return !!(obj && obj.nodeType === 1);
+  }
+
+  // Internal function for creating a `toString`-based type tester.
+  function tagTester(name) {
+    var tag = '[object ' + name + ']';
+    return function(obj) {
+      return toString.call(obj) === tag;
+    };
+  }
+
+  var isString = tagTester('String');
+
+  var isNumber = tagTester('Number');
+
+  var isDate = tagTester('Date');
+
+  var isRegExp = tagTester('RegExp');
+
+  var isError = tagTester('Error');
+
+  var isSymbol = tagTester('Symbol');
+
+  var isArrayBuffer = tagTester('ArrayBuffer');
+
+  var isFunction = tagTester('Function');
+
+  // Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old
+  // v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).
+  var nodelist = root.document && root.document.childNodes;
+  if (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {
+    isFunction = function(obj) {
+      return typeof obj == 'function' || false;
+    };
+  }
+
+  var isFunction$1 = isFunction;
+
+  var hasObjectTag = tagTester('Object');
+
+  // In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.
+  // In IE 11, the most common among them, this problem also applies to
+  // `Map`, `WeakMap` and `Set`.
+  var hasStringTagBug = (
+        supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8)))
+      ),
+      isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map));
+
+  var isDataView = tagTester('DataView');
+
+  // In IE 10 - Edge 13, we need a different heuristic
+  // to determine whether an object is a `DataView`.
+  function ie10IsDataView(obj) {
+    return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer);
+  }
+
+  var isDataView$1 = (hasStringTagBug ? ie10IsDataView : isDataView);
+
+  // Is a given value an array?
+  // Delegates to ECMA5's native `Array.isArray`.
+  var isArray = nativeIsArray || tagTester('Array');
+
+  // Internal function to check whether `key` is an own property name of `obj`.
+  function has$1(obj, key) {
+    return obj != null && hasOwnProperty.call(obj, key);
+  }
+
+  var isArguments = tagTester('Arguments');
+
+  // Define a fallback version of the method in browsers (ahem, IE < 9), where
+  // there isn't any inspectable "Arguments" type.
+  (function() {
+    if (!isArguments(arguments)) {
+      isArguments = function(obj) {
+        return has$1(obj, 'callee');
+      };
+    }
+  }());
+
+  var isArguments$1 = isArguments;
+
+  // Is a given object a finite number?
+  function isFinite$1(obj) {
+    return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj));
+  }
+
+  // Is the given value `NaN`?
+  function isNaN$1(obj) {
+    return isNumber(obj) && _isNaN(obj);
+  }
+
+  // Predicate-generating function. Often useful outside of Underscore.
+  function constant(value) {
+    return function() {
+      return value;
+    };
+  }
+
+  // Common internal logic for `isArrayLike` and `isBufferLike`.
+  function createSizePropertyCheck(getSizeProperty) {
+    return function(collection) {
+      var sizeProperty = getSizeProperty(collection);
+      return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX;
+    }
+  }
+
+  // Internal helper to generate a function to obtain property `key` from `obj`.
+  function shallowProperty(key) {
+    return function(obj) {
+      return obj == null ? void 0 : obj[key];
+    };
+  }
+
+  // Internal helper to obtain the `byteLength` property of an object.
+  var getByteLength = shallowProperty('byteLength');
+
+  // Internal helper to determine whether we should spend extensive checks against
+  // `ArrayBuffer` et al.
+  var isBufferLike = createSizePropertyCheck(getByteLength);
+
+  // Is a given value a typed array?
+  var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;
+  function isTypedArray(obj) {
+    // `ArrayBuffer.isView` is the most future-proof, so use it when available.
+    // Otherwise, fall back on the above regular expression.
+    return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) :
+                  isBufferLike(obj) && typedArrayPattern.test(toString.call(obj));
+  }
+
+  var isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false);
+
+  // Internal helper to obtain the `length` property of an object.
+  var getLength = shallowProperty('length');
+
+  // Internal helper to create a simple lookup structure.
+  // `collectNonEnumProps` used to depend on `_.contains`, but this led to
+  // circular imports. `emulatedSet` is a one-off solution that only works for
+  // arrays of strings.
+  function emulatedSet(keys) {
+    var hash = {};
+    for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;
+    return {
+      contains: function(key) { return hash[key]; },
+      push: function(key) {
+        hash[key] = true;
+        return keys.push(key);
+      }
+    };
+  }
+
+  // Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't
+  // be iterated by `for key in ...` and thus missed. Extends `keys` in place if
+  // needed.
+  function collectNonEnumProps(obj, keys) {
+    keys = emulatedSet(keys);
+    var nonEnumIdx = nonEnumerableProps.length;
+    var constructor = obj.constructor;
+    var proto = isFunction$1(constructor) && constructor.prototype || ObjProto;
+
+    // Constructor is a special case.
+    var prop = 'constructor';
+    if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop);
+
+    while (nonEnumIdx--) {
+      prop = nonEnumerableProps[nonEnumIdx];
+      if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {
+        keys.push(prop);
+      }
+    }
+  }
+
+  // Retrieve the names of an object's own properties.
+  // Delegates to **ECMAScript 5**'s native `Object.keys`.
+  function keys(obj) {
+    if (!isObject(obj)) return [];
+    if (nativeKeys) return nativeKeys(obj);
+    var keys = [];
+    for (var key in obj) if (has$1(obj, key)) keys.push(key);
+    // Ahem, IE < 9.
+    if (hasEnumBug) collectNonEnumProps(obj, keys);
+    return keys;
+  }
+
+  // Is a given array, string, or object empty?
+  // An "empty" object has no enumerable own-properties.
+  function isEmpty(obj) {
+    if (obj == null) return true;
+    // Skip the more expensive `toString`-based type checks if `obj` has no
+    // `.length`.
+    var length = getLength(obj);
+    if (typeof length == 'number' && (
+      isArray(obj) || isString(obj) || isArguments$1(obj)
+    )) return length === 0;
+    return getLength(keys(obj)) === 0;
+  }
+
+  // Returns whether an object has a given set of `key:value` pairs.
+  function isMatch(object, attrs) {
+    var _keys = keys(attrs), length = _keys.length;
+    if (object == null) return !length;
+    var obj = Object(object);
+    for (var i = 0; i < length; i++) {
+      var key = _keys[i];
+      if (attrs[key] !== obj[key] || !(key in obj)) return false;
+    }
+    return true;
+  }
+
+  // If Underscore is called as a function, it returns a wrapped object that can
+  // be used OO-style. This wrapper holds altered versions of all functions added
+  // through `_.mixin`. Wrapped objects may be chained.
+  function _$1(obj) {
+    if (obj instanceof _$1) return obj;
+    if (!(this instanceof _$1)) return new _$1(obj);
+    this._wrapped = obj;
+  }
+
+  _$1.VERSION = VERSION;
+
+  // Extracts the result from a wrapped and chained object.
+  _$1.prototype.value = function() {
+    return this._wrapped;
+  };
+
+  // Provide unwrapping proxies for some methods used in engine operations
+  // such as arithmetic and JSON stringification.
+  _$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value;
+
+  _$1.prototype.toString = function() {
+    return String(this._wrapped);
+  };
+
+  // Internal function to wrap or shallow-copy an ArrayBuffer,
+  // typed array or DataView to a new view, reusing the buffer.
+  function toBufferView(bufferSource) {
+    return new Uint8Array(
+      bufferSource.buffer || bufferSource,
+      bufferSource.byteOffset || 0,
+      getByteLength(bufferSource)
+    );
+  }
+
+  // We use this string twice, so give it a name for minification.
+  var tagDataView = '[object DataView]';
+
+  // Internal recursive comparison function for `_.isEqual`.
+  function eq(a, b, aStack, bStack) {
+    // Identical objects are equal. `0 === -0`, but they aren't identical.
+    // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).
+    if (a === b) return a !== 0 || 1 / a === 1 / b;
+    // `null` or `undefined` only equal to itself (strict comparison).
+    if (a == null || b == null) return false;
+    // `NaN`s are equivalent, but non-reflexive.
+    if (a !== a) return b !== b;
+    // Exhaust primitive checks
+    var type = typeof a;
+    if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;
+    return deepEq(a, b, aStack, bStack);
+  }
+
+  // Internal recursive comparison function for `_.isEqual`.
+  function deepEq(a, b, aStack, bStack) {
+    // Unwrap any wrapped objects.
+    if (a instanceof _$1) a = a._wrapped;
+    if (b instanceof _$1) b = b._wrapped;
+    // Compare `[[Class]]` names.
+    var className = toString.call(a);
+    if (className !== toString.call(b)) return false;
+    // Work around a bug in IE 10 - Edge 13.
+    if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) {
+      if (!isDataView$1(b)) return false;
+      className = tagDataView;
+    }
+    switch (className) {
+      // These types are compared by value.
+      case '[object RegExp]':
+        // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')
+      case '[object String]':
+        // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is
+        // equivalent to `new String("5")`.
+        return '' + a === '' + b;
+      case '[object Number]':
+        // `NaN`s are equivalent, but non-reflexive.
+        // Object(NaN) is equivalent to NaN.
+        if (+a !== +a) return +b !== +b;
+        // An `egal` comparison is performed for other numeric values.
+        return +a === 0 ? 1 / +a === 1 / b : +a === +b;
+      case '[object Date]':
+      case '[object Boolean]':
+        // Coerce dates and booleans to numeric primitive values. Dates are compared by their
+        // millisecond representations. Note that invalid dates with millisecond representations
+        // of `NaN` are not equivalent.
+        return +a === +b;
+      case '[object Symbol]':
+        return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);
+      case '[object ArrayBuffer]':
+      case tagDataView:
+        // Coerce to typed array so we can fall through.
+        return deepEq(toBufferView(a), toBufferView(b), aStack, bStack);
+    }
+
+    var areArrays = className === '[object Array]';
+    if (!areArrays && isTypedArray$1(a)) {
+        var byteLength = getByteLength(a);
+        if (byteLength !== getByteLength(b)) return false;
+        if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;
+        areArrays = true;
+    }
+    if (!areArrays) {
+      if (typeof a != 'object' || typeof b != 'object') return false;
+
+      // Objects with different constructors are not equivalent, but `Object`s or `Array`s
+      // from different frames are.
+      var aCtor = a.constructor, bCtor = b.constructor;
+      if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor &&
+                               isFunction$1(bCtor) && bCtor instanceof bCtor)
+                          && ('constructor' in a && 'constructor' in b)) {
+        return false;
+      }
+    }
+    // Assume equality for cyclic structures. The algorithm for detecting cyclic
+    // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.
+
+    // Initializing stack of traversed objects.
+    // It's done here since we only need them for objects and arrays comparison.
+    aStack = aStack || [];
+    bStack = bStack || [];
+    var length = aStack.length;
+    while (length--) {
+      // Linear search. Performance is inversely proportional to the number of
+      // unique nested structures.
+      if (aStack[length] === a) return bStack[length] === b;
+    }
+
+    // Add the first object to the stack of traversed objects.
+    aStack.push(a);
+    bStack.push(b);
+
+    // Recursively compare objects and arrays.
+    if (areArrays) {
+      // Compare array lengths to determine if a deep comparison is necessary.
+      length = a.length;
+      if (length !== b.length) return false;
+      // Deep compare the contents, ignoring non-numeric properties.
+      while (length--) {
+        if (!eq(a[length], b[length], aStack, bStack)) return false;
+      }
+    } else {
+      // Deep compare objects.
+      var _keys = keys(a), key;
+      length = _keys.length;
+      // Ensure that both objects contain the same number of properties before comparing deep equality.
+      if (keys(b).length !== length) return false;
+      while (length--) {
+        // Deep compare each member
+        key = _keys[length];
+        if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false;
+      }
+    }
+    // Remove the first object from the stack of traversed objects.
+    aStack.pop();
+    bStack.pop();
+    return true;
+  }
+
+  // Perform a deep comparison to check if two objects are equal.
+  function isEqual(a, b) {
+    return eq(a, b);
+  }
+
+  // Retrieve all the enumerable property names of an object.
+  function allKeys(obj) {
+    if (!isObject(obj)) return [];
+    var keys = [];
+    for (var key in obj) keys.push(key);
+    // Ahem, IE < 9.
+    if (hasEnumBug) collectNonEnumProps(obj, keys);
+    return keys;
+  }
+
+  // Since the regular `Object.prototype.toString` type tests don't work for
+  // some types in IE 11, we use a fingerprinting heuristic instead, based
+  // on the methods. It's not great, but it's the best we got.
+  // The fingerprint method lists are defined below.
+  function ie11fingerprint(methods) {
+    var length = getLength(methods);
+    return function(obj) {
+      if (obj == null) return false;
+      // `Map`, `WeakMap` and `Set` have no enumerable keys.
+      var keys = allKeys(obj);
+      if (getLength(keys)) return false;
+      for (var i = 0; i < length; i++) {
+        if (!isFunction$1(obj[methods[i]])) return false;
+      }
+      // If we are testing against `WeakMap`, we need to ensure that
+      // `obj` doesn't have a `forEach` method in order to distinguish
+      // it from a regular `Map`.
+      return methods !== weakMapMethods || !isFunction$1(obj[forEachName]);
+    };
+  }
+
+  // In the interest of compact minification, we write
+  // each string in the fingerprints only once.
+  var forEachName = 'forEach',
+      hasName = 'has',
+      commonInit = ['clear', 'delete'],
+      mapTail = ['get', hasName, 'set'];
+
+  // `Map`, `WeakMap` and `Set` each have slightly different
+  // combinations of the above sublists.
+  var mapMethods = commonInit.concat(forEachName, mapTail),
+      weakMapMethods = commonInit.concat(mapTail),
+      setMethods = ['add'].concat(commonInit, forEachName, hasName);
+
+  var isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map');
+
+  var isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap');
+
+  var isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set');
+
+  var isWeakSet = tagTester('WeakSet');
+
+  // Retrieve the values of an object's properties.
+  function values(obj) {
+    var _keys = keys(obj);
+    var length = _keys.length;
+    var values = Array(length);
+    for (var i = 0; i < length; i++) {
+      values[i] = obj[_keys[i]];
+    }
+    return values;
+  }
+
+  // Convert an object into a list of `[key, value]` pairs.
+  // The opposite of `_.object` with one argument.
+  function pairs(obj) {
+    var _keys = keys(obj);
+    var length = _keys.length;
+    var pairs = Array(length);
+    for (var i = 0; i < length; i++) {
+      pairs[i] = [_keys[i], obj[_keys[i]]];
+    }
+    return pairs;
+  }
+
+  // Invert the keys and values of an object. The values must be serializable.
+  function invert(obj) {
+    var result = {};
+    var _keys = keys(obj);
+    for (var i = 0, length = _keys.length; i < length; i++) {
+      result[obj[_keys[i]]] = _keys[i];
+    }
+    return result;
+  }
+
+  // Return a sorted list of the function names available on the object.
+  function functions(obj) {
+    var names = [];
+    for (var key in obj) {
+      if (isFunction$1(obj[key])) names.push(key);
+    }
+    return names.sort();
+  }
+
+  // An internal function for creating assigner functions.
+  function createAssigner(keysFunc, defaults) {
+    return function(obj) {
+      var length = arguments.length;
+      if (defaults) obj = Object(obj);
+      if (length < 2 || obj == null) return obj;
+      for (var index = 1; index < length; index++) {
+        var source = arguments[index],
+            keys = keysFunc(source),
+            l = keys.length;
+        for (var i = 0; i < l; i++) {
+          var key = keys[i];
+          if (!defaults || obj[key] === void 0) obj[key] = source[key];
+        }
+      }
+      return obj;
+    };
+  }
+
+  // Extend a given object with all the properties in passed-in object(s).
+  var extend = createAssigner(allKeys);
+
+  // Assigns a given object with all the own properties in the passed-in
+  // object(s).
+  // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)
+  var extendOwn = createAssigner(keys);
+
+  // Fill in a given object with default properties.
+  var defaults = createAssigner(allKeys, true);
+
+  // Create a naked function reference for surrogate-prototype-swapping.
+  function ctor() {
+    return function(){};
+  }
+
+  // An internal function for creating a new object that inherits from another.
+  function baseCreate(prototype) {
+    if (!isObject(prototype)) return {};
+    if (nativeCreate) return nativeCreate(prototype);
+    var Ctor = ctor();
+    Ctor.prototype = prototype;
+    var result = new Ctor;
+    Ctor.prototype = null;
+    return result;
+  }
+
+  // Creates an object that inherits from the given prototype object.
+  // If additional properties are provided then they will be added to the
+  // created object.
+  function create(prototype, props) {
+    var result = baseCreate(prototype);
+    if (props) extendOwn(result, props);
+    return result;
+  }
+
+  // Create a (shallow-cloned) duplicate of an object.
+  function clone(obj) {
+    if (!isObject(obj)) return obj;
+    return isArray(obj) ? obj.slice() : extend({}, obj);
+  }
+
+  // Invokes `interceptor` with the `obj` and then returns `obj`.
+  // The primary purpose of this method is to "tap into" a method chain, in
+  // order to perform operations on intermediate results within the chain.
+  function tap(obj, interceptor) {
+    interceptor(obj);
+    return obj;
+  }
+
+  // Normalize a (deep) property `path` to array.
+  // Like `_.iteratee`, this function can be customized.
+  function toPath$1(path) {
+    return isArray(path) ? path : [path];
+  }
+  _$1.toPath = toPath$1;
+
+  // Internal wrapper for `_.toPath` to enable minification.
+  // Similar to `cb` for `_.iteratee`.
+  function toPath(path) {
+    return _$1.toPath(path);
+  }
+
+  // Internal function to obtain a nested property in `obj` along `path`.
+  function deepGet(obj, path) {
+    var length = path.length;
+    for (var i = 0; i < length; i++) {
+      if (obj == null) return void 0;
+      obj = obj[path[i]];
+    }
+    return length ? obj : void 0;
+  }
+
+  // Get the value of the (deep) property on `path` from `object`.
+  // If any property in `path` does not exist or if the value is
+  // `undefined`, return `defaultValue` instead.
+  // The `path` is normalized through `_.toPath`.
+  function get(object, path, defaultValue) {
+    var value = deepGet(object, toPath(path));
+    return isUndefined(value) ? defaultValue : value;
+  }
+
+  // Shortcut function for checking if an object has a given property directly on
+  // itself (in other words, not on a prototype). Unlike the internal `has`
+  // function, this public version can also traverse nested properties.
+  function has(obj, path) {
+    path = toPath(path);
+    var length = path.length;
+    for (var i = 0; i < length; i++) {
+      var key = path[i];
+      if (!has$1(obj, key)) return false;
+      obj = obj[key];
+    }
+    return !!length;
+  }
+
+  // Keep the identity function around for default iteratees.
+  function identity(value) {
+    return value;
+  }
+
+  // Returns a predicate for checking whether an object has a given set of
+  // `key:value` pairs.
+  function matcher(attrs) {
+    attrs = extendOwn({}, attrs);
+    return function(obj) {
+      return isMatch(obj, attrs);
+    };
+  }
+
+  // Creates a function that, when passed an object, will traverse that object’s
+  // properties down the given `path`, specified as an array of keys or indices.
+  function property(path) {
+    path = toPath(path);
+    return function(obj) {
+      return deepGet(obj, path);
+    };
+  }
+
+  // Internal function that returns an efficient (for current engines) version
+  // of the passed-in callback, to be repeatedly applied in other Underscore
+  // functions.
+  function optimizeCb(func, context, argCount) {
+    if (context === void 0) return func;
+    switch (argCount == null ? 3 : argCount) {
+      case 1: return function(value) {
+        return func.call(context, value);
+      };
+      // The 2-argument case is omitted because we’re not using it.
+      case 3: return function(value, index, collection) {
+        return func.call(context, value, index, collection);
+      };
+      case 4: return function(accumulator, value, index, collection) {
+        return func.call(context, accumulator, value, index, collection);
+      };
+    }
+    return function() {
+      return func.apply(context, arguments);
+    };
+  }
+
+  // An internal function to generate callbacks that can be applied to each
+  // element in a collection, returning the desired result — either `_.identity`,
+  // an arbitrary callback, a property matcher, or a property accessor.
+  function baseIteratee(value, context, argCount) {
+    if (value == null) return identity;
+    if (isFunction$1(value)) return optimizeCb(value, context, argCount);
+    if (isObject(value) && !isArray(value)) return matcher(value);
+    return property(value);
+  }
+
+  // External wrapper for our callback generator. Users may customize
+  // `_.iteratee` if they want additional predicate/iteratee shorthand styles.
+  // This abstraction hides the internal-only `argCount` argument.
+  function iteratee(value, context) {
+    return baseIteratee(value, context, Infinity);
+  }
+  _$1.iteratee = iteratee;
+
+  // The function we call internally to generate a callback. It invokes
+  // `_.iteratee` if overridden, otherwise `baseIteratee`.
+  function cb(value, context, argCount) {
+    if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context);
+    return baseIteratee(value, context, argCount);
+  }
+
+  // Returns the results of applying the `iteratee` to each element of `obj`.
+  // In contrast to `_.map` it returns an object.
+  function mapObject(obj, iteratee, context) {
+    iteratee = cb(iteratee, context);
+    var _keys = keys(obj),
+        length = _keys.length,
+        results = {};
+    for (var index = 0; index < length; index++) {
+      var currentKey = _keys[index];
+      results[currentKey] = iteratee(obj[currentKey], currentKey, obj);
+    }
+    return results;
+  }
+
+  // Predicate-generating function. Often useful outside of Underscore.
+  function noop(){}
+
+  // Generates a function for a given object that returns a given property.
+  function propertyOf(obj) {
+    if (obj == null) return noop;
+    return function(path) {
+      return get(obj, path);
+    };
+  }
+
+  // Run a function **n** times.
+  function times(n, iteratee, context) {
+    var accum = Array(Math.max(0, n));
+    iteratee = optimizeCb(iteratee, context, 1);
+    for (var i = 0; i < n; i++) accum[i] = iteratee(i);
+    return accum;
+  }
+
+  // Return a random integer between `min` and `max` (inclusive).
+  function random(min, max) {
+    if (max == null) {
+      max = min;
+      min = 0;
+    }
+    return min + Math.floor(Math.random() * (max - min + 1));
+  }
+
+  // A (possibly faster) way to get the current timestamp as an integer.
+  var now = Date.now || function() {
+    return new Date().getTime();
+  };
+
+  // Internal helper to generate functions for escaping and unescaping strings
+  // to/from HTML interpolation.
+  function createEscaper(map) {
+    var escaper = function(match) {
+      return map[match];
+    };
+    // Regexes for identifying a key that needs to be escaped.
+    var source = '(?:' + keys(map).join('|') + ')';
+    var testRegexp = RegExp(source);
+    var replaceRegexp = RegExp(source, 'g');
+    return function(string) {
+      string = string == null ? '' : '' + string;
+      return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;
+    };
+  }
+
+  // Internal list of HTML entities for escaping.
+  var escapeMap = {
+    '&': '&amp;',
+    '<': '&lt;',
+    '>': '&gt;',
+    '"': '&quot;',
+    "'": '&#x27;',
+    '`': '&#x60;'
+  };
+
+  // Function for escaping strings to HTML interpolation.
+  var _escape = createEscaper(escapeMap);
+
+  // Internal list of HTML entities for unescaping.
+  var unescapeMap = invert(escapeMap);
+
+  // Function for unescaping strings from HTML interpolation.
+  var _unescape = createEscaper(unescapeMap);
+
+  // By default, Underscore uses ERB-style template delimiters. Change the
+  // following template settings to use alternative delimiters.
+  var templateSettings = _$1.templateSettings = {
+    evaluate: /<%([\s\S]+?)%>/g,
+    interpolate: /<%=([\s\S]+?)%>/g,
+    escape: /<%-([\s\S]+?)%>/g
+  };
+
+  // When customizing `_.templateSettings`, if you don't want to define an
+  // interpolation, evaluation or escaping regex, we need one that is
+  // guaranteed not to match.
+  var noMatch = /(.)^/;
+
+  // Certain characters need to be escaped so that they can be put into a
+  // string literal.
+  var escapes = {
+    "'": "'",
+    '\\': '\\',
+    '\r': 'r',
+    '\n': 'n',
+    '\u2028': 'u2028',
+    '\u2029': 'u2029'
+  };
+
+  var escapeRegExp = /\\|'|\r|\n|\u2028|\u2029/g;
+
+  function escapeChar(match) {
+    return '\\' + escapes[match];
+  }
+
+  // In order to prevent third-party code injection through
+  // `_.templateSettings.variable`, we test it against the following regular
+  // expression. It is intentionally a bit more liberal than just matching valid
+  // identifiers, but still prevents possible loopholes through defaults or
+  // destructuring assignment.
+  var bareIdentifier = /^\s*(\w|\$)+\s*$/;
+
+  // JavaScript micro-templating, similar to John Resig's implementation.
+  // Underscore templating handles arbitrary delimiters, preserves whitespace,
+  // and correctly escapes quotes within interpolated code.
+  // NB: `oldSettings` only exists for backwards compatibility.
+  function template(text, settings, oldSettings) {
+    if (!settings && oldSettings) settings = oldSettings;
+    settings = defaults({}, settings, _$1.templateSettings);
+
+    // Combine delimiters into one regular expression via alternation.
+    var matcher = RegExp([
+      (settings.escape || noMatch).source,
+      (settings.interpolate || noMatch).source,
+      (settings.evaluate || noMatch).source
+    ].join('|') + '|$', 'g');
+
+    // Compile the template source, escaping string literals appropriately.
+    var index = 0;
+    var source = "__p+='";
+    text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {
+      source += text.slice(index, offset).replace(escapeRegExp, escapeChar);
+      index = offset + match.length;
+
+      if (escape) {
+        source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'";
+      } else if (interpolate) {
+        source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'";
+      } else if (evaluate) {
+        source += "';\n" + evaluate + "\n__p+='";
+      }
+
+      // Adobe VMs need the match returned to produce the correct offset.
+      return match;
+    });
+    source += "';\n";
+
+    var argument = settings.variable;
+    if (argument) {
+      // Insure against third-party code injection. (CVE-2021-23358)
+      if (!bareIdentifier.test(argument)) throw new Error(
+        'variable is not a bare identifier: ' + argument
+      );
+    } else {
+      // If a variable is not specified, place data values in local scope.
+      source = 'with(obj||{}){\n' + source + '}\n';
+      argument = 'obj';
+    }
+
+    source = "var __t,__p='',__j=Array.prototype.join," +
+      "print=function(){__p+=__j.call(arguments,'');};\n" +
+      source + 'return __p;\n';
+
+    var render;
+    try {
+      render = new Function(argument, '_', source);
+    } catch (e) {
+      e.source = source;
+      throw e;
+    }
+
+    var template = function(data) {
+      return render.call(this, data, _$1);
+    };
+
+    // Provide the compiled source as a convenience for precompilation.
+    template.source = 'function(' + argument + '){\n' + source + '}';
+
+    return template;
+  }
+
+  // Traverses the children of `obj` along `path`. If a child is a function, it
+  // is invoked with its parent as context. Returns the value of the final
+  // child, or `fallback` if any child is undefined.
+  function result(obj, path, fallback) {
+    path = toPath(path);
+    var length = path.length;
+    if (!length) {
+      return isFunction$1(fallback) ? fallback.call(obj) : fallback;
+    }
+    for (var i = 0; i < length; i++) {
+      var prop = obj == null ? void 0 : obj[path[i]];
+      if (prop === void 0) {
+        prop = fallback;
+        i = length; // Ensure we don't continue iterating.
+      }
+      obj = isFunction$1(prop) ? prop.call(obj) : prop;
+    }
+    return obj;
+  }
+
+  // Generate a unique integer id (unique within the entire client session).
+  // Useful for temporary DOM ids.
+  var idCounter = 0;
+  function uniqueId(prefix) {
+    var id = ++idCounter + '';
+    return prefix ? prefix + id : id;
+  }
+
+  // Start chaining a wrapped Underscore object.
+  function chain(obj) {
+    var instance = _$1(obj);
+    instance._chain = true;
+    return instance;
+  }
+
+  // Internal function to execute `sourceFunc` bound to `context` with optional
+  // `args`. Determines whether to execute a function as a constructor or as a
+  // normal function.
+  function executeBound(sourceFunc, boundFunc, context, callingContext, args) {
+    if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);
+    var self = baseCreate(sourceFunc.prototype);
+    var result = sourceFunc.apply(self, args);
+    if (isObject(result)) return result;
+    return self;
+  }
+
+  // Partially apply a function by creating a version that has had some of its
+  // arguments pre-filled, without changing its dynamic `this` context. `_` acts
+  // as a placeholder by default, allowing any combination of arguments to be
+  // pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.
+  var partial = restArguments(function(func, boundArgs) {
+    var placeholder = partial.placeholder;
+    var bound = function() {
+      var position = 0, length = boundArgs.length;
+      var args = Array(length);
+      for (var i = 0; i < length; i++) {
+        args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];
+      }
+      while (position < arguments.length) args.push(arguments[position++]);
+      return executeBound(func, bound, this, this, args);
+    };
+    return bound;
+  });
+
+  partial.placeholder = _$1;
+
+  // Create a function bound to a given object (assigning `this`, and arguments,
+  // optionally).
+  var bind = restArguments(function(func, context, args) {
+    if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function');
+    var bound = restArguments(function(callArgs) {
+      return executeBound(func, bound, context, this, args.concat(callArgs));
+    });
+    return bound;
+  });
+
+  // Internal helper for collection methods to determine whether a collection
+  // should be iterated as an array or as an object.
+  // Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength
+  // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094
+  var isArrayLike = createSizePropertyCheck(getLength);
+
+  // Internal implementation of a recursive `flatten` function.
+  function flatten$1(input, depth, strict, output) {
+    output = output || [];
+    if (!depth && depth !== 0) {
+      depth = Infinity;
+    } else if (depth <= 0) {
+      return output.concat(input);
+    }
+    var idx = output.length;
+    for (var i = 0, length = getLength(input); i < length; i++) {
+      var value = input[i];
+      if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) {
+        // Flatten current level of array or arguments object.
+        if (depth > 1) {
+          flatten$1(value, depth - 1, strict, output);
+          idx = output.length;
+        } else {
+          var j = 0, len = value.length;
+          while (j < len) output[idx++] = value[j++];
+        }
+      } else if (!strict) {
+        output[idx++] = value;
+      }
+    }
+    return output;
+  }
+
+  // Bind a number of an object's methods to that object. Remaining arguments
+  // are the method names to be bound. Useful for ensuring that all callbacks
+  // defined on an object belong to it.
+  var bindAll = restArguments(function(obj, keys) {
+    keys = flatten$1(keys, false, false);
+    var index = keys.length;
+    if (index < 1) throw new Error('bindAll must be passed function names');
+    while (index--) {
+      var key = keys[index];
+      obj[key] = bind(obj[key], obj);
+    }
+    return obj;
+  });
+
+  // Memoize an expensive function by storing its results.
+  function memoize(func, hasher) {
+    var memoize = function(key) {
+      var cache = memoize.cache;
+      var address = '' + (hasher ? hasher.apply(this, arguments) : key);
+      if (!has$1(cache, address)) cache[address] = func.apply(this, arguments);
+      return cache[address];
+    };
+    memoize.cache = {};
+    return memoize;
+  }
+
+  // Delays a function for the given number of milliseconds, and then calls
+  // it with the arguments supplied.
+  var delay = restArguments(function(func, wait, args) {
+    return setTimeout(function() {
+      return func.apply(null, args);
+    }, wait);
+  });
+
+  // Defers a function, scheduling it to run after the current call stack has
+  // cleared.
+  var defer = partial(delay, _$1, 1);
+
+  // Returns a function, that, when invoked, will only be triggered at most once
+  // during a given window of time. Normally, the throttled function will run
+  // as much as it can, without ever going more than once per `wait` duration;
+  // but if you'd like to disable the execution on the leading edge, pass
+  // `{leading: false}`. To disable execution on the trailing edge, ditto.
+  function throttle(func, wait, options) {
+    var timeout, context, args, result;
+    var previous = 0;
+    if (!options) options = {};
+
+    var later = function() {
+      previous = options.leading === false ? 0 : now();
+      timeout = null;
+      result = func.apply(context, args);
+      if (!timeout) context = args = null;
+    };
+
+    var throttled = function() {
+      var _now = now();
+      if (!previous && options.leading === false) previous = _now;
+      var remaining = wait - (_now - previous);
+      context = this;
+      args = arguments;
+      if (remaining <= 0 || remaining > wait) {
+        if (timeout) {
+          clearTimeout(timeout);
+          timeout = null;
+        }
+        previous = _now;
+        result = func.apply(context, args);
+        if (!timeout) context = args = null;
+      } else if (!timeout && options.trailing !== false) {
+        timeout = setTimeout(later, remaining);
+      }
+      return result;
+    };
+
+    throttled.cancel = function() {
+      clearTimeout(timeout);
+      previous = 0;
+      timeout = context = args = null;
+    };
+
+    return throttled;
+  }
+
+  // When a sequence of calls of the returned function ends, the argument
+  // function is triggered. The end of a sequence is defined by the `wait`
+  // parameter. If `immediate` is passed, the argument function will be
+  // triggered at the beginning of the sequence instead of at the end.
+  function debounce(func, wait, immediate) {
+    var timeout, previous, args, result, context;
+
+    var later = function() {
+      var passed = now() - previous;
+      if (wait > passed) {
+        timeout = setTimeout(later, wait - passed);
+      } else {
+        timeout = null;
+        if (!immediate) result = func.apply(context, args);
+        // This check is needed because `func` can recursively invoke `debounced`.
+        if (!timeout) args = context = null;
+      }
+    };
+
+    var debounced = restArguments(function(_args) {
+      context = this;
+      args = _args;
+      previous = now();
+      if (!timeout) {
+        timeout = setTimeout(later, wait);
+        if (immediate) result = func.apply(context, args);
+      }
+      return result;
+    });
+
+    debounced.cancel = function() {
+      clearTimeout(timeout);
+      timeout = args = context = null;
+    };
+
+    return debounced;
+  }
+
+  // Returns the first function passed as an argument to the second,
+  // allowing you to adjust arguments, run code before and after, and
+  // conditionally execute the original function.
+  function wrap(func, wrapper) {
+    return partial(wrapper, func);
+  }
+
+  // Returns a negated version of the passed-in predicate.
+  function negate(predicate) {
+    return function() {
+      return !predicate.apply(this, arguments);
+    };
+  }
+
+  // Returns a function that is the composition of a list of functions, each
+  // consuming the return value of the function that follows.
+  function compose() {
+    var args = arguments;
+    var start = args.length - 1;
+    return function() {
+      var i = start;
+      var result = args[start].apply(this, arguments);
+      while (i--) result = args[i].call(this, result);
+      return result;
+    };
+  }
+
+  // Returns a function that will only be executed on and after the Nth call.
+  function after(times, func) {
+    return function() {
+      if (--times < 1) {
+        return func.apply(this, arguments);
+      }
+    };
+  }
+
+  // Returns a function that will only be executed up to (but not including) the
+  // Nth call.
+  function before(times, func) {
+    var memo;
+    return function() {
+      if (--times > 0) {
+        memo = func.apply(this, arguments);
+      }
+      if (times <= 1) func = null;
+      return memo;
+    };
+  }
+
+  // Returns a function that will be executed at most one time, no matter how
+  // often you call it. Useful for lazy initialization.
+  var once = partial(before, 2);
+
+  // Returns the first key on an object that passes a truth test.
+  function findKey(obj, predicate, context) {
+    predicate = cb(predicate, context);
+    var _keys = keys(obj), key;
+    for (var i = 0, length = _keys.length; i < length; i++) {
+      key = _keys[i];
+      if (predicate(obj[key], key, obj)) return key;
+    }
+  }
+
+  // Internal function to generate `_.findIndex` and `_.findLastIndex`.
+  function createPredicateIndexFinder(dir) {
+    return function(array, predicate, context) {
+      predicate = cb(predicate, context);
+      var length = getLength(array);
+      var index = dir > 0 ? 0 : length - 1;
+      for (; index >= 0 && index < length; index += dir) {
+        if (predicate(array[index], index, array)) return index;
+      }
+      return -1;
+    };
+  }
+
+  // Returns the first index on an array-like that passes a truth test.
+  var findIndex = createPredicateIndexFinder(1);
+
+  // Returns the last index on an array-like that passes a truth test.
+  var findLastIndex = createPredicateIndexFinder(-1);
+
+  // Use a comparator function to figure out the smallest index at which
+  // an object should be inserted so as to maintain order. Uses binary search.
+  function sortedIndex(array, obj, iteratee, context) {
+    iteratee = cb(iteratee, context, 1);
+    var value = iteratee(obj);
+    var low = 0, high = getLength(array);
+    while (low < high) {
+      var mid = Math.floor((low + high) / 2);
+      if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;
+    }
+    return low;
+  }
+
+  // Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.
+  function createIndexFinder(dir, predicateFind, sortedIndex) {
+    return function(array, item, idx) {
+      var i = 0, length = getLength(array);
+      if (typeof idx == 'number') {
+        if (dir > 0) {
+          i = idx >= 0 ? idx : Math.max(idx + length, i);
+        } else {
+          length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;
+        }
+      } else if (sortedIndex && idx && length) {
+        idx = sortedIndex(array, item);
+        return array[idx] === item ? idx : -1;
+      }
+      if (item !== item) {
+        idx = predicateFind(slice.call(array, i, length), isNaN$1);
+        return idx >= 0 ? idx + i : -1;
+      }
+      for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {
+        if (array[idx] === item) return idx;
+      }
+      return -1;
+    };
+  }
+
+  // Return the position of the first occurrence of an item in an array,
+  // or -1 if the item is not included in the array.
+  // If the array is large and already in sort order, pass `true`
+  // for **isSorted** to use binary search.
+  var indexOf = createIndexFinder(1, findIndex, sortedIndex);
+
+  // Return the position of the last occurrence of an item in an array,
+  // or -1 if the item is not included in the array.
+  var lastIndexOf = createIndexFinder(-1, findLastIndex);
+
+  // Return the first value which passes a truth test.
+  function find(obj, predicate, context) {
+    var keyFinder = isArrayLike(obj) ? findIndex : findKey;
+    var key = keyFinder(obj, predicate, context);
+    if (key !== void 0 && key !== -1) return obj[key];
+  }
+
+  // Convenience version of a common use case of `_.find`: getting the first
+  // object containing specific `key:value` pairs.
+  function findWhere(obj, attrs) {
+    return find(obj, matcher(attrs));
+  }
+
+  // The cornerstone for collection functions, an `each`
+  // implementation, aka `forEach`.
+  // Handles raw objects in addition to array-likes. Treats all
+  // sparse array-likes as if they were dense.
+  function each(obj, iteratee, context) {
+    iteratee = optimizeCb(iteratee, context);
+    var i, length;
+    if (isArrayLike(obj)) {
+      for (i = 0, length = obj.length; i < length; i++) {
+        iteratee(obj[i], i, obj);
+      }
+    } else {
+      var _keys = keys(obj);
+      for (i = 0, length = _keys.length; i < length; i++) {
+        iteratee(obj[_keys[i]], _keys[i], obj);
+      }
+    }
+    return obj;
+  }
+
+  // Return the results of applying the iteratee to each element.
+  function map(obj, iteratee, context) {
+    iteratee = cb(iteratee, context);
+    var _keys = !isArrayLike(obj) && keys(obj),
+        length = (_keys || obj).length,
+        results = Array(length);
+    for (var index = 0; index < length; index++) {
+      var currentKey = _keys ? _keys[index] : index;
+      results[index] = iteratee(obj[currentKey], currentKey, obj);
+    }
+    return results;
+  }
+
+  // Internal helper to create a reducing function, iterating left or right.
+  function createReduce(dir) {
+    // Wrap code that reassigns argument variables in a separate function than
+    // the one that accesses `arguments.length` to avoid a perf hit. (#1991)
+    var reducer = function(obj, iteratee, memo, initial) {
+      var _keys = !isArrayLike(obj) && keys(obj),
+          length = (_keys || obj).length,
+          index = dir > 0 ? 0 : length - 1;
+      if (!initial) {
+        memo = obj[_keys ? _keys[index] : index];
+        index += dir;
+      }
+      for (; index >= 0 && index < length; index += dir) {
+        var currentKey = _keys ? _keys[index] : index;
+        memo = iteratee(memo, obj[currentKey], currentKey, obj);
+      }
+      return memo;
+    };
+
+    return function(obj, iteratee, memo, context) {
+      var initial = arguments.length >= 3;
+      return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);
+    };
+  }
+
+  // **Reduce** builds up a single result from a list of values, aka `inject`,
+  // or `foldl`.
+  var reduce = createReduce(1);
+
+  // The right-associative version of reduce, also known as `foldr`.
+  var reduceRight = createReduce(-1);
+
+  // Return all the elements that pass a truth test.
+  function filter(obj, predicate, context) {
+    var results = [];
+    predicate = cb(predicate, context);
+    each(obj, function(value, index, list) {
+      if (predicate(value, index, list)) results.push(value);
+    });
+    return results;
+  }
+
+  // Return all the elements for which a truth test fails.
+  function reject(obj, predicate, context) {
+    return filter(obj, negate(cb(predicate)), context);
+  }
+
+  // Determine whether all of the elements pass a truth test.
+  function every(obj, predicate, context) {
+    predicate = cb(predicate, context);
+    var _keys = !isArrayLike(obj) && keys(obj),
+        length = (_keys || obj).length;
+    for (var index = 0; index < length; index++) {
+      var currentKey = _keys ? _keys[index] : index;
+      if (!predicate(obj[currentKey], currentKey, obj)) return false;
+    }
+    return true;
+  }
+
+  // Determine if at least one element in the object passes a truth test.
+  function some(obj, predicate, context) {
+    predicate = cb(predicate, context);
+    var _keys = !isArrayLike(obj) && keys(obj),
+        length = (_keys || obj).length;
+    for (var index = 0; index < length; index++) {
+      var currentKey = _keys ? _keys[index] : index;
+      if (predicate(obj[currentKey], currentKey, obj)) return true;
+    }
+    return false;
+  }
+
+  // Determine if the array or object contains a given item (using `===`).
+  function contains(obj, item, fromIndex, guard) {
+    if (!isArrayLike(obj)) obj = values(obj);
+    if (typeof fromIndex != 'number' || guard) fromIndex = 0;
+    return indexOf(obj, item, fromIndex) >= 0;
+  }
+
+  // Invoke a method (with arguments) on every item in a collection.
+  var invoke = restArguments(function(obj, path, args) {
+    var contextPath, func;
+    if (isFunction$1(path)) {
+      func = path;
+    } else {
+      path = toPath(path);
+      contextPath = path.slice(0, -1);
+      path = path[path.length - 1];
+    }
+    return map(obj, function(context) {
+      var method = func;
+      if (!method) {
+        if (contextPath && contextPath.length) {
+          context = deepGet(context, contextPath);
+        }
+        if (context == null) return void 0;
+        method = context[path];
+      }
+      return method == null ? method : method.apply(context, args);
+    });
+  });
+
+  // Convenience version of a common use case of `_.map`: fetching a property.
+  function pluck(obj, key) {
+    return map(obj, property(key));
+  }
+
+  // Convenience version of a common use case of `_.filter`: selecting only
+  // objects containing specific `key:value` pairs.
+  function where(obj, attrs) {
+    return filter(obj, matcher(attrs));
+  }
+
+  // Return the maximum element (or element-based computation).
+  function max(obj, iteratee, context) {
+    var result = -Infinity, lastComputed = -Infinity,
+        value, computed;
+    if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {
+      obj = isArrayLike(obj) ? obj : values(obj);
+      for (var i = 0, length = obj.length; i < length; i++) {
+        value = obj[i];
+        if (value != null && value > result) {
+          result = value;
+        }
+      }
+    } else {
+      iteratee = cb(iteratee, context);
+      each(obj, function(v, index, list) {
+        computed = iteratee(v, index, list);
+        if (computed > lastComputed || computed === -Infinity && result === -Infinity) {
+          result = v;
+          lastComputed = computed;
+        }
+      });
+    }
+    return result;
+  }
+
+  // Return the minimum element (or element-based computation).
+  function min(obj, iteratee, context) {
+    var result = Infinity, lastComputed = Infinity,
+        value, computed;
+    if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {
+      obj = isArrayLike(obj) ? obj : values(obj);
+      for (var i = 0, length = obj.length; i < length; i++) {
+        value = obj[i];
+        if (value != null && value < result) {
+          result = value;
+        }
+      }
+    } else {
+      iteratee = cb(iteratee, context);
+      each(obj, function(v, index, list) {
+        computed = iteratee(v, index, list);
+        if (computed < lastComputed || computed === Infinity && result === Infinity) {
+          result = v;
+          lastComputed = computed;
+        }
+      });
+    }
+    return result;
+  }
+
+  // Sample **n** random values from a collection using the modern version of the
+  // [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).
+  // If **n** is not specified, returns a single random element.
+  // The internal `guard` argument allows it to work with `_.map`.
+  function sample(obj, n, guard) {
+    if (n == null || guard) {
+      if (!isArrayLike(obj)) obj = values(obj);
+      return obj[random(obj.length - 1)];
+    }
+    var sample = isArrayLike(obj) ? clone(obj) : values(obj);
+    var length = getLength(sample);
+    n = Math.max(Math.min(n, length), 0);
+    var last = length - 1;
+    for (var index = 0; index < n; index++) {
+      var rand = random(index, last);
+      var temp = sample[index];
+      sample[index] = sample[rand];
+      sample[rand] = temp;
+    }
+    return sample.slice(0, n);
+  }
+
+  // Shuffle a collection.
+  function shuffle(obj) {
+    return sample(obj, Infinity);
+  }
+
+  // Sort the object's values by a criterion produced by an iteratee.
+  function sortBy(obj, iteratee, context) {
+    var index = 0;
+    iteratee = cb(iteratee, context);
+    return pluck(map(obj, function(value, key, list) {
+      return {
+        value: value,
+        index: index++,
+        criteria: iteratee(value, key, list)
+      };
+    }).sort(function(left, right) {
+      var a = left.criteria;
+      var b = right.criteria;
+      if (a !== b) {
+        if (a > b || a === void 0) return 1;
+        if (a < b || b === void 0) return -1;
+      }
+      return left.index - right.index;
+    }), 'value');
+  }
+
+  // An internal function used for aggregate "group by" operations.
+  function group(behavior, partition) {
+    return function(obj, iteratee, context) {
+      var result = partition ? [[], []] : {};
+      iteratee = cb(iteratee, context);
+      each(obj, function(value, index) {
+        var key = iteratee(value, index, obj);
+        behavior(result, value, key);
+      });
+      return result;
+    };
+  }
+
+  // Groups the object's values by a criterion. Pass either a string attribute
+  // to group by, or a function that returns the criterion.
+  var groupBy = group(function(result, value, key) {
+    if (has$1(result, key)) result[key].push(value); else result[key] = [value];
+  });
+
+  // Indexes the object's values by a criterion, similar to `_.groupBy`, but for
+  // when you know that your index values will be unique.
+  var indexBy = group(function(result, value, key) {
+    result[key] = value;
+  });
+
+  // Counts instances of an object that group by a certain criterion. Pass
+  // either a string attribute to count by, or a function that returns the
+  // criterion.
+  var countBy = group(function(result, value, key) {
+    if (has$1(result, key)) result[key]++; else result[key] = 1;
+  });
+
+  // Split a collection into two arrays: one whose elements all pass the given
+  // truth test, and one whose elements all do not pass the truth test.
+  var partition = group(function(result, value, pass) {
+    result[pass ? 0 : 1].push(value);
+  }, true);
+
+  // Safely create a real, live array from anything iterable.
+  var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g;
+  function toArray(obj) {
+    if (!obj) return [];
+    if (isArray(obj)) return slice.call(obj);
+    if (isString(obj)) {
+      // Keep surrogate pair characters together.
+      return obj.match(reStrSymbol);
+    }
+    if (isArrayLike(obj)) return map(obj, identity);
+    return values(obj);
+  }
+
+  // Return the number of elements in a collection.
+  function size(obj) {
+    if (obj == null) return 0;
+    return isArrayLike(obj) ? obj.length : keys(obj).length;
+  }
+
+  // Internal `_.pick` helper function to determine whether `key` is an enumerable
+  // property name of `obj`.
+  function keyInObj(value, key, obj) {
+    return key in obj;
+  }
+
+  // Return a copy of the object only containing the allowed properties.
+  var pick = restArguments(function(obj, keys) {
+    var result = {}, iteratee = keys[0];
+    if (obj == null) return result;
+    if (isFunction$1(iteratee)) {
+      if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);
+      keys = allKeys(obj);
+    } else {
+      iteratee = keyInObj;
+      keys = flatten$1(keys, false, false);
+      obj = Object(obj);
+    }
+    for (var i = 0, length = keys.length; i < length; i++) {
+      var key = keys[i];
+      var value = obj[key];
+      if (iteratee(value, key, obj)) result[key] = value;
+    }
+    return result;
+  });
+
+  // Return a copy of the object without the disallowed properties.
+  var omit = restArguments(function(obj, keys) {
+    var iteratee = keys[0], context;
+    if (isFunction$1(iteratee)) {
+      iteratee = negate(iteratee);
+      if (keys.length > 1) context = keys[1];
+    } else {
+      keys = map(flatten$1(keys, false, false), String);
+      iteratee = function(value, key) {
+        return !contains(keys, key);
+      };
+    }
+    return pick(obj, iteratee, context);
+  });
+
+  // Returns everything but the last entry of the array. Especially useful on
+  // the arguments object. Passing **n** will return all the values in
+  // the array, excluding the last N.
+  function initial(array, n, guard) {
+    return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));
+  }
+
+  // Get the first element of an array. Passing **n** will return the first N
+  // values in the array. The **guard** check allows it to work with `_.map`.
+  function first(array, n, guard) {
+    if (array == null || array.length < 1) return n == null || guard ? void 0 : [];
+    if (n == null || guard) return array[0];
+    return initial(array, array.length - n);
+  }
+
+  // Returns everything but the first entry of the `array`. Especially useful on
+  // the `arguments` object. Passing an **n** will return the rest N values in the
+  // `array`.
+  function rest(array, n, guard) {
+    return slice.call(array, n == null || guard ? 1 : n);
+  }
+
+  // Get the last element of an array. Passing **n** will return the last N
+  // values in the array.
+  function last(array, n, guard) {
+    if (array == null || array.length < 1) return n == null || guard ? void 0 : [];
+    if (n == null || guard) return array[array.length - 1];
+    return rest(array, Math.max(0, array.length - n));
+  }
+
+  // Trim out all falsy values from an array.
+  function compact(array) {
+    return filter(array, Boolean);
+  }
+
+  // Flatten out an array, either recursively (by default), or up to `depth`.
+  // Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.
+  function flatten(array, depth) {
+    return flatten$1(array, depth, false);
+  }
+
+  // Take the difference between one array and a number of other arrays.
+  // Only the elements present in just the first array will remain.
+  var difference = restArguments(function(array, rest) {
+    rest = flatten$1(rest, true, true);
+    return filter(array, function(value){
+      return !contains(rest, value);
+    });
+  });
+
+  // Return a version of the array that does not contain the specified value(s).
+  var without = restArguments(function(array, otherArrays) {
+    return difference(array, otherArrays);
+  });
+
+  // Produce a duplicate-free version of the array. If the array has already
+  // been sorted, you have the option of using a faster algorithm.
+  // The faster algorithm will not work with an iteratee if the iteratee
+  // is not a one-to-one function, so providing an iteratee will disable
+  // the faster algorithm.
+  function uniq(array, isSorted, iteratee, context) {
+    if (!isBoolean(isSorted)) {
+      context = iteratee;
+      iteratee = isSorted;
+      isSorted = false;
+    }
+    if (iteratee != null) iteratee = cb(iteratee, context);
+    var result = [];
+    var seen = [];
+    for (var i = 0, length = getLength(array); i < length; i++) {
+      var value = array[i],
+          computed = iteratee ? iteratee(value, i, array) : value;
+      if (isSorted && !iteratee) {
+        if (!i || seen !== computed) result.push(value);
+        seen = computed;
+      } else if (iteratee) {
+        if (!contains(seen, computed)) {
+          seen.push(computed);
+          result.push(value);
+        }
+      } else if (!contains(result, value)) {
+        result.push(value);
+      }
+    }
+    return result;
+  }
+
+  // Produce an array that contains the union: each distinct element from all of
+  // the passed-in arrays.
+  var union = restArguments(function(arrays) {
+    return uniq(flatten$1(arrays, true, true));
+  });
+
+  // Produce an array that contains every item shared between all the
+  // passed-in arrays.
+  function intersection(array) {
+    var result = [];
+    var argsLength = arguments.length;
+    for (var i = 0, length = getLength(array); i < length; i++) {
+      var item = array[i];
+      if (contains(result, item)) continue;
+      var j;
+      for (j = 1; j < argsLength; j++) {
+        if (!contains(arguments[j], item)) break;
+      }
+      if (j === argsLength) result.push(item);
+    }
+    return result;
+  }
+
+  // Complement of zip. Unzip accepts an array of arrays and groups
+  // each array's elements on shared indices.
+  function unzip(array) {
+    var length = array && max(array, getLength).length || 0;
+    var result = Array(length);
+
+    for (var index = 0; index < length; index++) {
+      result[index] = pluck(array, index);
+    }
+    return result;
+  }
+
+  // Zip together multiple lists into a single array -- elements that share
+  // an index go together.
+  var zip = restArguments(unzip);
+
+  // Converts lists into objects. Pass either a single array of `[key, value]`
+  // pairs, or two parallel arrays of the same length -- one of keys, and one of
+  // the corresponding values. Passing by pairs is the reverse of `_.pairs`.
+  function object(list, values) {
+    var result = {};
+    for (var i = 0, length = getLength(list); i < length; i++) {
+      if (values) {
+        result[list[i]] = values[i];
+      } else {
+        result[list[i][0]] = list[i][1];
+      }
+    }
+    return result;
+  }
+
+  // Generate an integer Array containing an arithmetic progression. A port of
+  // the native Python `range()` function. See
+  // [the Python documentation](https://docs.python.org/library/functions.html#range).
+  function range(start, stop, step) {
+    if (stop == null) {
+      stop = start || 0;
+      start = 0;
+    }
+    if (!step) {
+      step = stop < start ? -1 : 1;
+    }
+
+    var length = Math.max(Math.ceil((stop - start) / step), 0);
+    var range = Array(length);
+
+    for (var idx = 0; idx < length; idx++, start += step) {
+      range[idx] = start;
+    }
+
+    return range;
+  }
+
+  // Chunk a single array into multiple arrays, each containing `count` or fewer
+  // items.
+  function chunk(array, count) {
+    if (count == null || count < 1) return [];
+    var result = [];
+    var i = 0, length = array.length;
+    while (i < length) {
+      result.push(slice.call(array, i, i += count));
+    }
+    return result;
+  }
+
+  // Helper function to continue chaining intermediate results.
+  function chainResult(instance, obj) {
+    return instance._chain ? _$1(obj).chain() : obj;
+  }
+
+  // Add your own custom functions to the Underscore object.
+  function mixin(obj) {
+    each(functions(obj), function(name) {
+      var func = _$1[name] = obj[name];
+      _$1.prototype[name] = function() {
+        var args = [this._wrapped];
+        push.apply(args, arguments);
+        return chainResult(this, func.apply(_$1, args));
+      };
+    });
+    return _$1;
+  }
+
+  // Add all mutator `Array` functions to the wrapper.
+  each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {
+    var method = ArrayProto[name];
+    _$1.prototype[name] = function() {
+      var obj = this._wrapped;
+      if (obj != null) {
+        method.apply(obj, arguments);
+        if ((name === 'shift' || name === 'splice') && obj.length === 0) {
+          delete obj[0];
+        }
+      }
+      return chainResult(this, obj);
+    };
+  });
+
+  // Add all accessor `Array` functions to the wrapper.
+  each(['concat', 'join', 'slice'], function(name) {
+    var method = ArrayProto[name];
+    _$1.prototype[name] = function() {
+      var obj = this._wrapped;
+      if (obj != null) obj = method.apply(obj, arguments);
+      return chainResult(this, obj);
+    };
+  });
+
+  // Named Exports
+
+  var allExports = {
+    __proto__: null,
+    VERSION: VERSION,
+    restArguments: restArguments,
+    isObject: isObject,
+    isNull: isNull,
+    isUndefined: isUndefined,
+    isBoolean: isBoolean,
+    isElement: isElement,
+    isString: isString,
+    isNumber: isNumber,
+    isDate: isDate,
+    isRegExp: isRegExp,
+    isError: isError,
+    isSymbol: isSymbol,
+    isArrayBuffer: isArrayBuffer,
+    isDataView: isDataView$1,
+    isArray: isArray,
+    isFunction: isFunction$1,
+    isArguments: isArguments$1,
+    isFinite: isFinite$1,
+    isNaN: isNaN$1,
+    isTypedArray: isTypedArray$1,
+    isEmpty: isEmpty,
+    isMatch: isMatch,
+    isEqual: isEqual,
+    isMap: isMap,
+    isWeakMap: isWeakMap,
+    isSet: isSet,
+    isWeakSet: isWeakSet,
+    keys: keys,
+    allKeys: allKeys,
+    values: values,
+    pairs: pairs,
+    invert: invert,
+    functions: functions,
+    methods: functions,
+    extend: extend,
+    extendOwn: extendOwn,
+    assign: extendOwn,
+    defaults: defaults,
+    create: create,
+    clone: clone,
+    tap: tap,
+    get: get,
+    has: has,
+    mapObject: mapObject,
+    identity: identity,
+    constant: constant,
+    noop: noop,
+    toPath: toPath$1,
+    property: property,
+    propertyOf: propertyOf,
+    matcher: matcher,
+    matches: matcher,
+    times: times,
+    random: random,
+    now: now,
+    escape: _escape,
+    unescape: _unescape,
+    templateSettings: templateSettings,
+    template: template,
+    result: result,
+    uniqueId: uniqueId,
+    chain: chain,
+    iteratee: iteratee,
+    partial: partial,
+    bind: bind,
+    bindAll: bindAll,
+    memoize: memoize,
+    delay: delay,
+    defer: defer,
+    throttle: throttle,
+    debounce: debounce,
+    wrap: wrap,
+    negate: negate,
+    compose: compose,
+    after: after,
+    before: before,
+    once: once,
+    findKey: findKey,
+    findIndex: findIndex,
+    findLastIndex: findLastIndex,
+    sortedIndex: sortedIndex,
+    indexOf: indexOf,
+    lastIndexOf: lastIndexOf,
+    find: find,
+    detect: find,
+    findWhere: findWhere,
+    each: each,
+    forEach: each,
+    map: map,
+    collect: map,
+    reduce: reduce,
+    foldl: reduce,
+    inject: reduce,
+    reduceRight: reduceRight,
+    foldr: reduceRight,
+    filter: filter,
+    select: filter,
+    reject: reject,
+    every: every,
+    all: every,
+    some: some,
+    any: some,
+    contains: contains,
+    includes: contains,
+    include: contains,
+    invoke: invoke,
+    pluck: pluck,
+    where: where,
+    max: max,
+    min: min,
+    shuffle: shuffle,
+    sample: sample,
+    sortBy: sortBy,
+    groupBy: groupBy,
+    indexBy: indexBy,
+    countBy: countBy,
+    partition: partition,
+    toArray: toArray,
+    size: size,
+    pick: pick,
+    omit: omit,
+    first: first,
+    head: first,
+    take: first,
+    initial: initial,
+    last: last,
+    rest: rest,
+    tail: rest,
+    drop: rest,
+    compact: compact,
+    flatten: flatten,
+    without: without,
+    uniq: uniq,
+    unique: uniq,
+    union: union,
+    intersection: intersection,
+    difference: difference,
+    unzip: unzip,
+    transpose: unzip,
+    zip: zip,
+    object: object,
+    range: range,
+    chunk: chunk,
+    mixin: mixin,
+    'default': _$1
+  };
+
+  // Default Export
+
+  // Add all of the Underscore functions to the wrapper object.
+  var _ = mixin(allExports);
+  // Legacy Node.js API.
+  _._ = _;
+
+  return _;
+
+})));
+//# sourceMappingURL=underscore-umd.js.map
diff --git a/docs/html/_static/underscore.js b/docs/html/_static/underscore.js
index 5b55f32..cf177d4 100644
--- a/docs/html/_static/underscore.js
+++ b/docs/html/_static/underscore.js
@@ -1,31 +1,6 @@
-// Underscore.js 1.3.1
-// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
-// Underscore is freely distributable under the MIT license.
-// Portions of Underscore are inspired or borrowed from Prototype,
-// Oliver Steele's Functional, and John Resig's Micro-Templating.
-// For all details and documentation:
-// http://documentcloud.github.com/underscore
-(function(){function q(a,c,d){if(a===c)return a!==0||1/a==1/c;if(a==null||c==null)return a===c;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(a.isEqual&&b.isFunction(a.isEqual))return a.isEqual(c);if(c.isEqual&&b.isFunction(c.isEqual))return c.isEqual(a);var e=l.call(a);if(e!=l.call(c))return false;switch(e){case "[object String]":return a==String(c);case "[object Number]":return a!=+a?c!=+c:a==0?1/a==1/c:a==+c;case "[object Date]":case "[object Boolean]":return+a==+c;case "[object RegExp]":return a.source==
-c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase}if(typeof a!="object"||typeof c!="object")return false;for(var f=d.length;f--;)if(d[f]==a)return true;d.push(a);var f=0,g=true;if(e=="[object Array]"){if(f=a.length,g=f==c.length)for(;f--;)if(!(g=f in a==f in c&&q(a[f],c[f],d)))break}else{if("constructor"in a!="constructor"in c||a.constructor!=c.constructor)return false;for(var h in a)if(b.has(a,h)&&(f++,!(g=b.has(c,h)&&q(a[h],c[h],d))))break;if(g){for(h in c)if(b.has(c,
-h)&&!f--)break;g=!f}}d.pop();return g}var r=this,G=r._,n={},k=Array.prototype,o=Object.prototype,i=k.slice,H=k.unshift,l=o.toString,I=o.hasOwnProperty,w=k.forEach,x=k.map,y=k.reduce,z=k.reduceRight,A=k.filter,B=k.every,C=k.some,p=k.indexOf,D=k.lastIndexOf,o=Array.isArray,J=Object.keys,s=Function.prototype.bind,b=function(a){return new m(a)};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports)exports=module.exports=b;exports._=b}else r._=b;b.VERSION="1.3.1";var j=b.each=
-b.forEach=function(a,c,d){if(a!=null)if(w&&a.forEach===w)a.forEach(c,d);else if(a.length===+a.length)for(var e=0,f=a.length;e<f;e++){if(e in a&&c.call(d,a[e],e,a)===n)break}else for(e in a)if(b.has(a,e)&&c.call(d,a[e],e,a)===n)break};b.map=b.collect=function(a,c,b){var e=[];if(a==null)return e;if(x&&a.map===x)return a.map(c,b);j(a,function(a,g,h){e[e.length]=c.call(b,a,g,h)});if(a.length===+a.length)e.length=a.length;return e};b.reduce=b.foldl=b.inject=function(a,c,d,e){var f=arguments.length>2;a==
-null&&(a=[]);if(y&&a.reduce===y)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(z&&a.reduceRight===z)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect=
-function(a,c,b){var e;E(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(A&&a.filter===A)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(B&&a.every===B)return a.every(c,b);j(a,function(a,g,h){if(!(e=
-e&&c.call(b,a,g,h)))return n});return e};var E=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(C&&a.some===C)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return n});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;return p&&a.indexOf===p?a.indexOf(c)!=-1:b=E(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck=
-function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b<e.computed&&(e={value:a,computed:b})});
-return e.value};b.shuffle=function(a){var b=[],d;j(a,function(a,f){f==0?b[0]=a:(d=Math.floor(Math.random()*(f+1)),b[f]=b[d],b[d]=a)});return b};b.sortBy=function(a,c,d){return b.pluck(b.map(a,function(a,b,g){return{value:a,criteria:c.call(d,a,b,g)}}).sort(function(a,b){var c=a.criteria,d=b.criteria;return c<d?-1:c>d?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a,
-c,d){d||(d=b.identity);for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?e=g+1:f=g}return e};b.toArray=function(a){return!a?[]:a.toArray?a.toArray():b.isArray(a)?i.call(a):b.isArguments(a)?i.call(a):b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=b.head=function(a,b,d){return b!=null&&!d?i.call(a,0,b):a[0]};b.initial=function(a,b,d){return i.call(a,0,a.length-(b==null||d?1:b))};b.last=function(a,b,d){return b!=null&&!d?i.call(a,Math.max(a.length-b,0)):a[a.length-1]};b.rest=
-b.tail=function(a,b,d){return i.call(a,b==null||d?1:b)};b.compact=function(a){return b.filter(a,function(a){return!!a})};b.flatten=function(a,c){return b.reduce(a,function(a,e){if(b.isArray(e))return a.concat(c?e:b.flatten(e));a[a.length]=e;return a},[])};b.without=function(a){return b.difference(a,i.call(arguments,1))};b.uniq=b.unique=function(a,c,d){var d=d?b.map(a,d):a,e=[];b.reduce(d,function(d,g,h){if(0==h||(c===true?b.last(d)!=g:!b.include(d,g)))d[d.length]=g,e[e.length]=a[h];return d},[]);
-return e};b.union=function(){return b.uniq(b.flatten(arguments,true))};b.intersection=b.intersect=function(a){var c=i.call(arguments,1);return b.filter(b.uniq(a),function(a){return b.every(c,function(c){return b.indexOf(c,a)>=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e<c;e++)d[e]=b.pluck(a,""+e);return d};b.indexOf=function(a,c,
-d){if(a==null)return-1;var e;if(d)return d=b.sortedIndex(a,c),a[d]===c?d:-1;if(p&&a.indexOf===p)return a.indexOf(c);for(d=0,e=a.length;d<e;d++)if(d in a&&a[d]===c)return d;return-1};b.lastIndexOf=function(a,b){if(a==null)return-1;if(D&&a.lastIndexOf===D)return a.lastIndexOf(b);for(var d=a.length;d--;)if(d in a&&a[d]===b)return d;return-1};b.range=function(a,b,d){arguments.length<=1&&(b=a||0,a=0);for(var d=arguments[2]||1,e=Math.max(Math.ceil((b-a)/d),0),f=0,g=Array(e);f<e;)g[f++]=a,a+=d;return g};
-var F=function(){};b.bind=function(a,c){var d,e;if(a.bind===s&&s)return s.apply(a,i.call(arguments,1));if(!b.isFunction(a))throw new TypeError;e=i.call(arguments,2);return d=function(){if(!(this instanceof d))return a.apply(c,e.concat(i.call(arguments)));F.prototype=a.prototype;var b=new F,g=a.apply(b,e.concat(i.call(arguments)));return Object(g)===g?g:b}};b.bindAll=function(a){var c=i.call(arguments,1);c.length==0&&(c=b.functions(a));j(c,function(c){a[c]=b.bind(a[c],a)});return a};b.memoize=function(a,
-c){var d={};c||(c=b.identity);return function(){var e=c.apply(this,arguments);return b.has(d,e)?d[e]:d[e]=a.apply(this,arguments)}};b.delay=function(a,b){var d=i.call(arguments,2);return setTimeout(function(){return a.apply(a,d)},b)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(i.call(arguments,1)))};b.throttle=function(a,c){var d,e,f,g,h,i=b.debounce(function(){h=g=false},c);return function(){d=this;e=arguments;var b;f||(f=setTimeout(function(){f=null;h&&a.apply(d,e);i()},c));g?h=true:
-a.apply(d,e);i();g=true}};b.debounce=function(a,b){var d;return function(){var e=this,f=arguments;clearTimeout(d);d=setTimeout(function(){d=null;a.apply(e,f)},b)}};b.once=function(a){var b=false,d;return function(){if(b)return d;b=true;return d=a.apply(this,arguments)}};b.wrap=function(a,b){return function(){var d=[a].concat(i.call(arguments,0));return b.apply(this,d)}};b.compose=function(){var a=arguments;return function(){for(var b=arguments,d=a.length-1;d>=0;d--)b=[a[d].apply(this,b)];return b[0]}};
-b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=J||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.defaults=function(a){j(i.call(arguments,
-1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return q(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=o||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)};
-b.isArguments=function(a){return l.call(a)=="[object Arguments]"};if(!b.isArguments(arguments))b.isArguments=function(a){return!(!a||!b.has(a,"callee"))};b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"};
-b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,b){return I.call(a,b)};b.noConflict=function(){r._=G;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e<a;e++)b.call(d,e)};b.escape=function(a){return(""+a).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;").replace(/\//g,"&#x2F;")};b.mixin=function(a){j(b.functions(a),
-function(c){K(c,b[c]=a[c])})};var L=0;b.uniqueId=function(a){var b=L++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var t=/.^/,u=function(a){return a.replace(/\\\\/g,"\\").replace(/\\'/g,"'")};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.escape||t,function(a,b){return"',_.escape("+
-u(b)+"),'"}).replace(d.interpolate||t,function(a,b){return"',"+u(b)+",'"}).replace(d.evaluate||t,function(a,b){return"');"+u(b).replace(/[\r\n\t]/g," ")+";__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var v=function(a,c){return c?b(a).chain():a},K=function(a,c){m.prototype[a]=
-function(){var a=i.call(arguments);H.call(a,this._wrapped);return v(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return v(d,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return v(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain=
-true;return this};m.prototype.value=function(){return this._wrapped}}).call(this);
+!function(n,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define("underscore",r):(n="undefined"!=typeof globalThis?globalThis:n||self,function(){var t=n._,e=n._=r();e.noConflict=function(){return n._=t,e}}())}(this,(function(){
+//     Underscore.js 1.13.1
+//     https://underscorejs.org
+//     (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors
+//     Underscore may be freely distributed under the MIT license.
+var n="1.13.1",r="object"==typeof self&&self.self===self&&self||"object"==typeof global&&global.global===global&&global||Function("return this")()||{},t=Array.prototype,e=Object.prototype,u="undefined"!=typeof Symbol?Symbol.prototype:null,o=t.push,i=t.slice,a=e.toString,f=e.hasOwnProperty,c="undefined"!=typeof ArrayBuffer,l="undefined"!=typeof DataView,s=Array.isArray,p=Object.keys,v=Object.create,h=c&&ArrayBuffer.isView,y=isNaN,d=isFinite,g=!{toString:null}.propertyIsEnumerable("toString"),b=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],m=Math.pow(2,53)-1;function j(n,r){return r=null==r?n.length-1:+r,function(){for(var t=Math.max(arguments.length-r,0),e=Array(t),u=0;u<t;u++)e[u]=arguments[u+r];switch(r){case 0:return n.call(this,e);case 1:return n.call(this,arguments[0],e);case 2:return n.call(this,arguments[0],arguments[1],e)}var o=Array(r+1);for(u=0;u<r;u++)o[u]=arguments[u];return o[r]=e,n.apply(this,o)}}function _(n){var r=typeof n;return"function"===r||"object"===r&&!!n}function w(n){return void 0===n}function A(n){return!0===n||!1===n||"[object Boolean]"===a.call(n)}function x(n){var r="[object "+n+"]";return function(n){return a.call(n)===r}}var S=x("String"),O=x("Number"),M=x("Date"),E=x("RegExp"),B=x("Error"),N=x("Symbol"),I=x("ArrayBuffer"),T=x("Function"),k=r.document&&r.document.childNodes;"function"!=typeof/./&&"object"!=typeof Int8Array&&"function"!=typeof k&&(T=function(n){return"function"==typeof n||!1});var D=T,R=x("Object"),F=l&&R(new DataView(new ArrayBuffer(8))),V="undefined"!=typeof Map&&R(new Map),P=x("DataView");var q=F?function(n){return null!=n&&D(n.getInt8)&&I(n.buffer)}:P,U=s||x("Array");function W(n,r){return null!=n&&f.call(n,r)}var z=x("Arguments");!function(){z(arguments)||(z=function(n){return W(n,"callee")})}();var L=z;function $(n){return O(n)&&y(n)}function C(n){return function(){return n}}function K(n){return function(r){var t=n(r);return"number"==typeof t&&t>=0&&t<=m}}function J(n){return function(r){return null==r?void 0:r[n]}}var G=J("byteLength"),H=K(G),Q=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;var X=c?function(n){return h?h(n)&&!q(n):H(n)&&Q.test(a.call(n))}:C(!1),Y=J("length");function Z(n,r){r=function(n){for(var r={},t=n.length,e=0;e<t;++e)r[n[e]]=!0;return{contains:function(n){return r[n]},push:function(t){return r[t]=!0,n.push(t)}}}(r);var t=b.length,u=n.constructor,o=D(u)&&u.prototype||e,i="constructor";for(W(n,i)&&!r.contains(i)&&r.push(i);t--;)(i=b[t])in n&&n[i]!==o[i]&&!r.contains(i)&&r.push(i)}function nn(n){if(!_(n))return[];if(p)return p(n);var r=[];for(var t in n)W(n,t)&&r.push(t);return g&&Z(n,r),r}function rn(n,r){var t=nn(r),e=t.length;if(null==n)return!e;for(var u=Object(n),o=0;o<e;o++){var i=t[o];if(r[i]!==u[i]||!(i in u))return!1}return!0}function tn(n){return n instanceof tn?n:this instanceof tn?void(this._wrapped=n):new tn(n)}function en(n){return new Uint8Array(n.buffer||n,n.byteOffset||0,G(n))}tn.VERSION=n,tn.prototype.value=function(){return this._wrapped},tn.prototype.valueOf=tn.prototype.toJSON=tn.prototype.value,tn.prototype.toString=function(){return String(this._wrapped)};var un="[object DataView]";function on(n,r,t,e){if(n===r)return 0!==n||1/n==1/r;if(null==n||null==r)return!1;if(n!=n)return r!=r;var o=typeof n;return("function"===o||"object"===o||"object"==typeof r)&&function n(r,t,e,o){r instanceof tn&&(r=r._wrapped);t instanceof tn&&(t=t._wrapped);var i=a.call(r);if(i!==a.call(t))return!1;if(F&&"[object Object]"==i&&q(r)){if(!q(t))return!1;i=un}switch(i){case"[object RegExp]":case"[object String]":return""+r==""+t;case"[object Number]":return+r!=+r?+t!=+t:0==+r?1/+r==1/t:+r==+t;case"[object Date]":case"[object Boolean]":return+r==+t;case"[object Symbol]":return u.valueOf.call(r)===u.valueOf.call(t);case"[object ArrayBuffer]":case un:return n(en(r),en(t),e,o)}var f="[object Array]"===i;if(!f&&X(r)){if(G(r)!==G(t))return!1;if(r.buffer===t.buffer&&r.byteOffset===t.byteOffset)return!0;f=!0}if(!f){if("object"!=typeof r||"object"!=typeof t)return!1;var c=r.constructor,l=t.constructor;if(c!==l&&!(D(c)&&c instanceof c&&D(l)&&l instanceof l)&&"constructor"in r&&"constructor"in t)return!1}o=o||[];var s=(e=e||[]).length;for(;s--;)if(e[s]===r)return o[s]===t;if(e.push(r),o.push(t),f){if((s=r.length)!==t.length)return!1;for(;s--;)if(!on(r[s],t[s],e,o))return!1}else{var p,v=nn(r);if(s=v.length,nn(t).length!==s)return!1;for(;s--;)if(p=v[s],!W(t,p)||!on(r[p],t[p],e,o))return!1}return e.pop(),o.pop(),!0}(n,r,t,e)}function an(n){if(!_(n))return[];var r=[];for(var t in n)r.push(t);return g&&Z(n,r),r}function fn(n){var r=Y(n);return function(t){if(null==t)return!1;var e=an(t);if(Y(e))return!1;for(var u=0;u<r;u++)if(!D(t[n[u]]))return!1;return n!==hn||!D(t[cn])}}var cn="forEach",ln="has",sn=["clear","delete"],pn=["get",ln,"set"],vn=sn.concat(cn,pn),hn=sn.concat(pn),yn=["add"].concat(sn,cn,ln),dn=V?fn(vn):x("Map"),gn=V?fn(hn):x("WeakMap"),bn=V?fn(yn):x("Set"),mn=x("WeakSet");function jn(n){for(var r=nn(n),t=r.length,e=Array(t),u=0;u<t;u++)e[u]=n[r[u]];return e}function _n(n){for(var r={},t=nn(n),e=0,u=t.length;e<u;e++)r[n[t[e]]]=t[e];return r}function wn(n){var r=[];for(var t in n)D(n[t])&&r.push(t);return r.sort()}function An(n,r){return function(t){var e=arguments.length;if(r&&(t=Object(t)),e<2||null==t)return t;for(var u=1;u<e;u++)for(var o=arguments[u],i=n(o),a=i.length,f=0;f<a;f++){var c=i[f];r&&void 0!==t[c]||(t[c]=o[c])}return t}}var xn=An(an),Sn=An(nn),On=An(an,!0);function Mn(n){if(!_(n))return{};if(v)return v(n);var r=function(){};r.prototype=n;var t=new r;return r.prototype=null,t}function En(n){return _(n)?U(n)?n.slice():xn({},n):n}function Bn(n){return U(n)?n:[n]}function Nn(n){return tn.toPath(n)}function In(n,r){for(var t=r.length,e=0;e<t;e++){if(null==n)return;n=n[r[e]]}return t?n:void 0}function Tn(n,r,t){var e=In(n,Nn(r));return w(e)?t:e}function kn(n){return n}function Dn(n){return n=Sn({},n),function(r){return rn(r,n)}}function Rn(n){return n=Nn(n),function(r){return In(r,n)}}function Fn(n,r,t){if(void 0===r)return n;switch(null==t?3:t){case 1:return function(t){return n.call(r,t)};case 3:return function(t,e,u){return n.call(r,t,e,u)};case 4:return function(t,e,u,o){return n.call(r,t,e,u,o)}}return function(){return n.apply(r,arguments)}}function Vn(n,r,t){return null==n?kn:D(n)?Fn(n,r,t):_(n)&&!U(n)?Dn(n):Rn(n)}function Pn(n,r){return Vn(n,r,1/0)}function qn(n,r,t){return tn.iteratee!==Pn?tn.iteratee(n,r):Vn(n,r,t)}function Un(){}function Wn(n,r){return null==r&&(r=n,n=0),n+Math.floor(Math.random()*(r-n+1))}tn.toPath=Bn,tn.iteratee=Pn;var zn=Date.now||function(){return(new Date).getTime()};function Ln(n){var r=function(r){return n[r]},t="(?:"+nn(n).join("|")+")",e=RegExp(t),u=RegExp(t,"g");return function(n){return n=null==n?"":""+n,e.test(n)?n.replace(u,r):n}}var $n={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},Cn=Ln($n),Kn=Ln(_n($n)),Jn=tn.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g},Gn=/(.)^/,Hn={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},Qn=/\\|'|\r|\n|\u2028|\u2029/g;function Xn(n){return"\\"+Hn[n]}var Yn=/^\s*(\w|\$)+\s*$/;var Zn=0;function nr(n,r,t,e,u){if(!(e instanceof r))return n.apply(t,u);var o=Mn(n.prototype),i=n.apply(o,u);return _(i)?i:o}var rr=j((function(n,r){var t=rr.placeholder,e=function(){for(var u=0,o=r.length,i=Array(o),a=0;a<o;a++)i[a]=r[a]===t?arguments[u++]:r[a];for(;u<arguments.length;)i.push(arguments[u++]);return nr(n,e,this,this,i)};return e}));rr.placeholder=tn;var tr=j((function(n,r,t){if(!D(n))throw new TypeError("Bind must be called on a function");var e=j((function(u){return nr(n,e,r,this,t.concat(u))}));return e})),er=K(Y);function ur(n,r,t,e){if(e=e||[],r||0===r){if(r<=0)return e.concat(n)}else r=1/0;for(var u=e.length,o=0,i=Y(n);o<i;o++){var a=n[o];if(er(a)&&(U(a)||L(a)))if(r>1)ur(a,r-1,t,e),u=e.length;else for(var f=0,c=a.length;f<c;)e[u++]=a[f++];else t||(e[u++]=a)}return e}var or=j((function(n,r){var t=(r=ur(r,!1,!1)).length;if(t<1)throw new Error("bindAll must be passed function names");for(;t--;){var e=r[t];n[e]=tr(n[e],n)}return n}));var ir=j((function(n,r,t){return setTimeout((function(){return n.apply(null,t)}),r)})),ar=rr(ir,tn,1);function fr(n){return function(){return!n.apply(this,arguments)}}function cr(n,r){var t;return function(){return--n>0&&(t=r.apply(this,arguments)),n<=1&&(r=null),t}}var lr=rr(cr,2);function sr(n,r,t){r=qn(r,t);for(var e,u=nn(n),o=0,i=u.length;o<i;o++)if(r(n[e=u[o]],e,n))return e}function pr(n){return function(r,t,e){t=qn(t,e);for(var u=Y(r),o=n>0?0:u-1;o>=0&&o<u;o+=n)if(t(r[o],o,r))return o;return-1}}var vr=pr(1),hr=pr(-1);function yr(n,r,t,e){for(var u=(t=qn(t,e,1))(r),o=0,i=Y(n);o<i;){var a=Math.floor((o+i)/2);t(n[a])<u?o=a+1:i=a}return o}function dr(n,r,t){return function(e,u,o){var a=0,f=Y(e);if("number"==typeof o)n>0?a=o>=0?o:Math.max(o+f,a):f=o>=0?Math.min(o+1,f):o+f+1;else if(t&&o&&f)return e[o=t(e,u)]===u?o:-1;if(u!=u)return(o=r(i.call(e,a,f),$))>=0?o+a:-1;for(o=n>0?a:f-1;o>=0&&o<f;o+=n)if(e[o]===u)return o;return-1}}var gr=dr(1,vr,yr),br=dr(-1,hr);function mr(n,r,t){var e=(er(n)?vr:sr)(n,r,t);if(void 0!==e&&-1!==e)return n[e]}function jr(n,r,t){var e,u;if(r=Fn(r,t),er(n))for(e=0,u=n.length;e<u;e++)r(n[e],e,n);else{var o=nn(n);for(e=0,u=o.length;e<u;e++)r(n[o[e]],o[e],n)}return n}function _r(n,r,t){r=qn(r,t);for(var e=!er(n)&&nn(n),u=(e||n).length,o=Array(u),i=0;i<u;i++){var a=e?e[i]:i;o[i]=r(n[a],a,n)}return o}function wr(n){var r=function(r,t,e,u){var o=!er(r)&&nn(r),i=(o||r).length,a=n>0?0:i-1;for(u||(e=r[o?o[a]:a],a+=n);a>=0&&a<i;a+=n){var f=o?o[a]:a;e=t(e,r[f],f,r)}return e};return function(n,t,e,u){var o=arguments.length>=3;return r(n,Fn(t,u,4),e,o)}}var Ar=wr(1),xr=wr(-1);function Sr(n,r,t){var e=[];return r=qn(r,t),jr(n,(function(n,t,u){r(n,t,u)&&e.push(n)})),e}function Or(n,r,t){r=qn(r,t);for(var e=!er(n)&&nn(n),u=(e||n).length,o=0;o<u;o++){var i=e?e[o]:o;if(!r(n[i],i,n))return!1}return!0}function Mr(n,r,t){r=qn(r,t);for(var e=!er(n)&&nn(n),u=(e||n).length,o=0;o<u;o++){var i=e?e[o]:o;if(r(n[i],i,n))return!0}return!1}function Er(n,r,t,e){return er(n)||(n=jn(n)),("number"!=typeof t||e)&&(t=0),gr(n,r,t)>=0}var Br=j((function(n,r,t){var e,u;return D(r)?u=r:(r=Nn(r),e=r.slice(0,-1),r=r[r.length-1]),_r(n,(function(n){var o=u;if(!o){if(e&&e.length&&(n=In(n,e)),null==n)return;o=n[r]}return null==o?o:o.apply(n,t)}))}));function Nr(n,r){return _r(n,Rn(r))}function Ir(n,r,t){var e,u,o=-1/0,i=-1/0;if(null==r||"number"==typeof r&&"object"!=typeof n[0]&&null!=n)for(var a=0,f=(n=er(n)?n:jn(n)).length;a<f;a++)null!=(e=n[a])&&e>o&&(o=e);else r=qn(r,t),jr(n,(function(n,t,e){((u=r(n,t,e))>i||u===-1/0&&o===-1/0)&&(o=n,i=u)}));return o}function Tr(n,r,t){if(null==r||t)return er(n)||(n=jn(n)),n[Wn(n.length-1)];var e=er(n)?En(n):jn(n),u=Y(e);r=Math.max(Math.min(r,u),0);for(var o=u-1,i=0;i<r;i++){var a=Wn(i,o),f=e[i];e[i]=e[a],e[a]=f}return e.slice(0,r)}function kr(n,r){return function(t,e,u){var o=r?[[],[]]:{};return e=qn(e,u),jr(t,(function(r,u){var i=e(r,u,t);n(o,r,i)})),o}}var Dr=kr((function(n,r,t){W(n,t)?n[t].push(r):n[t]=[r]})),Rr=kr((function(n,r,t){n[t]=r})),Fr=kr((function(n,r,t){W(n,t)?n[t]++:n[t]=1})),Vr=kr((function(n,r,t){n[t?0:1].push(r)}),!0),Pr=/[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g;function qr(n,r,t){return r in t}var Ur=j((function(n,r){var t={},e=r[0];if(null==n)return t;D(e)?(r.length>1&&(e=Fn(e,r[1])),r=an(n)):(e=qr,r=ur(r,!1,!1),n=Object(n));for(var u=0,o=r.length;u<o;u++){var i=r[u],a=n[i];e(a,i,n)&&(t[i]=a)}return t})),Wr=j((function(n,r){var t,e=r[0];return D(e)?(e=fr(e),r.length>1&&(t=r[1])):(r=_r(ur(r,!1,!1),String),e=function(n,t){return!Er(r,t)}),Ur(n,e,t)}));function zr(n,r,t){return i.call(n,0,Math.max(0,n.length-(null==r||t?1:r)))}function Lr(n,r,t){return null==n||n.length<1?null==r||t?void 0:[]:null==r||t?n[0]:zr(n,n.length-r)}function $r(n,r,t){return i.call(n,null==r||t?1:r)}var Cr=j((function(n,r){return r=ur(r,!0,!0),Sr(n,(function(n){return!Er(r,n)}))})),Kr=j((function(n,r){return Cr(n,r)}));function Jr(n,r,t,e){A(r)||(e=t,t=r,r=!1),null!=t&&(t=qn(t,e));for(var u=[],o=[],i=0,a=Y(n);i<a;i++){var f=n[i],c=t?t(f,i,n):f;r&&!t?(i&&o===c||u.push(f),o=c):t?Er(o,c)||(o.push(c),u.push(f)):Er(u,f)||u.push(f)}return u}var Gr=j((function(n){return Jr(ur(n,!0,!0))}));function Hr(n){for(var r=n&&Ir(n,Y).length||0,t=Array(r),e=0;e<r;e++)t[e]=Nr(n,e);return t}var Qr=j(Hr);function Xr(n,r){return n._chain?tn(r).chain():r}function Yr(n){return jr(wn(n),(function(r){var t=tn[r]=n[r];tn.prototype[r]=function(){var n=[this._wrapped];return o.apply(n,arguments),Xr(this,t.apply(tn,n))}})),tn}jr(["pop","push","reverse","shift","sort","splice","unshift"],(function(n){var r=t[n];tn.prototype[n]=function(){var t=this._wrapped;return null!=t&&(r.apply(t,arguments),"shift"!==n&&"splice"!==n||0!==t.length||delete t[0]),Xr(this,t)}})),jr(["concat","join","slice"],(function(n){var r=t[n];tn.prototype[n]=function(){var n=this._wrapped;return null!=n&&(n=r.apply(n,arguments)),Xr(this,n)}}));var Zr=Yr({__proto__:null,VERSION:n,restArguments:j,isObject:_,isNull:function(n){return null===n},isUndefined:w,isBoolean:A,isElement:function(n){return!(!n||1!==n.nodeType)},isString:S,isNumber:O,isDate:M,isRegExp:E,isError:B,isSymbol:N,isArrayBuffer:I,isDataView:q,isArray:U,isFunction:D,isArguments:L,isFinite:function(n){return!N(n)&&d(n)&&!isNaN(parseFloat(n))},isNaN:$,isTypedArray:X,isEmpty:function(n){if(null==n)return!0;var r=Y(n);return"number"==typeof r&&(U(n)||S(n)||L(n))?0===r:0===Y(nn(n))},isMatch:rn,isEqual:function(n,r){return on(n,r)},isMap:dn,isWeakMap:gn,isSet:bn,isWeakSet:mn,keys:nn,allKeys:an,values:jn,pairs:function(n){for(var r=nn(n),t=r.length,e=Array(t),u=0;u<t;u++)e[u]=[r[u],n[r[u]]];return e},invert:_n,functions:wn,methods:wn,extend:xn,extendOwn:Sn,assign:Sn,defaults:On,create:function(n,r){var t=Mn(n);return r&&Sn(t,r),t},clone:En,tap:function(n,r){return r(n),n},get:Tn,has:function(n,r){for(var t=(r=Nn(r)).length,e=0;e<t;e++){var u=r[e];if(!W(n,u))return!1;n=n[u]}return!!t},mapObject:function(n,r,t){r=qn(r,t);for(var e=nn(n),u=e.length,o={},i=0;i<u;i++){var a=e[i];o[a]=r(n[a],a,n)}return o},identity:kn,constant:C,noop:Un,toPath:Bn,property:Rn,propertyOf:function(n){return null==n?Un:function(r){return Tn(n,r)}},matcher:Dn,matches:Dn,times:function(n,r,t){var e=Array(Math.max(0,n));r=Fn(r,t,1);for(var u=0;u<n;u++)e[u]=r(u);return e},random:Wn,now:zn,escape:Cn,unescape:Kn,templateSettings:Jn,template:function(n,r,t){!r&&t&&(r=t),r=On({},r,tn.templateSettings);var e=RegExp([(r.escape||Gn).source,(r.interpolate||Gn).source,(r.evaluate||Gn).source].join("|")+"|$","g"),u=0,o="__p+='";n.replace(e,(function(r,t,e,i,a){return o+=n.slice(u,a).replace(Qn,Xn),u=a+r.length,t?o+="'+\n((__t=("+t+"))==null?'':_.escape(__t))+\n'":e?o+="'+\n((__t=("+e+"))==null?'':__t)+\n'":i&&(o+="';\n"+i+"\n__p+='"),r})),o+="';\n";var i,a=r.variable;if(a){if(!Yn.test(a))throw new Error("variable is not a bare identifier: "+a)}else o="with(obj||{}){\n"+o+"}\n",a="obj";o="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+o+"return __p;\n";try{i=new Function(a,"_",o)}catch(n){throw n.source=o,n}var f=function(n){return i.call(this,n,tn)};return f.source="function("+a+"){\n"+o+"}",f},result:function(n,r,t){var e=(r=Nn(r)).length;if(!e)return D(t)?t.call(n):t;for(var u=0;u<e;u++){var o=null==n?void 0:n[r[u]];void 0===o&&(o=t,u=e),n=D(o)?o.call(n):o}return n},uniqueId:function(n){var r=++Zn+"";return n?n+r:r},chain:function(n){var r=tn(n);return r._chain=!0,r},iteratee:Pn,partial:rr,bind:tr,bindAll:or,memoize:function(n,r){var t=function(e){var u=t.cache,o=""+(r?r.apply(this,arguments):e);return W(u,o)||(u[o]=n.apply(this,arguments)),u[o]};return t.cache={},t},delay:ir,defer:ar,throttle:function(n,r,t){var e,u,o,i,a=0;t||(t={});var f=function(){a=!1===t.leading?0:zn(),e=null,i=n.apply(u,o),e||(u=o=null)},c=function(){var c=zn();a||!1!==t.leading||(a=c);var l=r-(c-a);return u=this,o=arguments,l<=0||l>r?(e&&(clearTimeout(e),e=null),a=c,i=n.apply(u,o),e||(u=o=null)):e||!1===t.trailing||(e=setTimeout(f,l)),i};return c.cancel=function(){clearTimeout(e),a=0,e=u=o=null},c},debounce:function(n,r,t){var e,u,o,i,a,f=function(){var c=zn()-u;r>c?e=setTimeout(f,r-c):(e=null,t||(i=n.apply(a,o)),e||(o=a=null))},c=j((function(c){return a=this,o=c,u=zn(),e||(e=setTimeout(f,r),t&&(i=n.apply(a,o))),i}));return c.cancel=function(){clearTimeout(e),e=o=a=null},c},wrap:function(n,r){return rr(r,n)},negate:fr,compose:function(){var n=arguments,r=n.length-1;return function(){for(var t=r,e=n[r].apply(this,arguments);t--;)e=n[t].call(this,e);return e}},after:function(n,r){return function(){if(--n<1)return r.apply(this,arguments)}},before:cr,once:lr,findKey:sr,findIndex:vr,findLastIndex:hr,sortedIndex:yr,indexOf:gr,lastIndexOf:br,find:mr,detect:mr,findWhere:function(n,r){return mr(n,Dn(r))},each:jr,forEach:jr,map:_r,collect:_r,reduce:Ar,foldl:Ar,inject:Ar,reduceRight:xr,foldr:xr,filter:Sr,select:Sr,reject:function(n,r,t){return Sr(n,fr(qn(r)),t)},every:Or,all:Or,some:Mr,any:Mr,contains:Er,includes:Er,include:Er,invoke:Br,pluck:Nr,where:function(n,r){return Sr(n,Dn(r))},max:Ir,min:function(n,r,t){var e,u,o=1/0,i=1/0;if(null==r||"number"==typeof r&&"object"!=typeof n[0]&&null!=n)for(var a=0,f=(n=er(n)?n:jn(n)).length;a<f;a++)null!=(e=n[a])&&e<o&&(o=e);else r=qn(r,t),jr(n,(function(n,t,e){((u=r(n,t,e))<i||u===1/0&&o===1/0)&&(o=n,i=u)}));return o},shuffle:function(n){return Tr(n,1/0)},sample:Tr,sortBy:function(n,r,t){var e=0;return r=qn(r,t),Nr(_r(n,(function(n,t,u){return{value:n,index:e++,criteria:r(n,t,u)}})).sort((function(n,r){var t=n.criteria,e=r.criteria;if(t!==e){if(t>e||void 0===t)return 1;if(t<e||void 0===e)return-1}return n.index-r.index})),"value")},groupBy:Dr,indexBy:Rr,countBy:Fr,partition:Vr,toArray:function(n){return n?U(n)?i.call(n):S(n)?n.match(Pr):er(n)?_r(n,kn):jn(n):[]},size:function(n){return null==n?0:er(n)?n.length:nn(n).length},pick:Ur,omit:Wr,first:Lr,head:Lr,take:Lr,initial:zr,last:function(n,r,t){return null==n||n.length<1?null==r||t?void 0:[]:null==r||t?n[n.length-1]:$r(n,Math.max(0,n.length-r))},rest:$r,tail:$r,drop:$r,compact:function(n){return Sr(n,Boolean)},flatten:function(n,r){return ur(n,r,!1)},without:Kr,uniq:Jr,unique:Jr,union:Gr,intersection:function(n){for(var r=[],t=arguments.length,e=0,u=Y(n);e<u;e++){var o=n[e];if(!Er(r,o)){var i;for(i=1;i<t&&Er(arguments[i],o);i++);i===t&&r.push(o)}}return r},difference:Cr,unzip:Hr,transpose:Hr,zip:Qr,object:function(n,r){for(var t={},e=0,u=Y(n);e<u;e++)r?t[n[e]]=r[e]:t[n[e][0]]=n[e][1];return t},range:function(n,r,t){null==r&&(r=n||0,n=0),t||(t=r<n?-1:1);for(var e=Math.max(Math.ceil((r-n)/t),0),u=Array(e),o=0;o<e;o++,n+=t)u[o]=n;return u},chunk:function(n,r){if(null==r||r<1)return[];for(var t=[],e=0,u=n.length;e<u;)t.push(i.call(n,e,e+=r));return t},mixin:Yr,default:tn});return Zr._=Zr,Zr}));
\ No newline at end of file
diff --git a/docs/html/genindex.html b/docs/html/genindex.html
index a1b3c34..b9da7f6 100644
--- a/docs/html/genindex.html
+++ b/docs/html/genindex.html
@@ -5,24 +5,59 @@
   <head>
     <meta charset="utf-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>Index &#8212; nepali_datetime 1.0.6 documentation</title>
-    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-    <link rel="stylesheet" href="_static/pydoctheme.css" type="text/css" />
+    <title>Index &#8212; nepali_datetime 1.0.6 documentation</title><meta name="viewport" content="width=device-width, initial-scale=1.0">
     
-    <script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+    <link rel="stylesheet" type="text/css" href="_static/pygments.css" />
+    <link rel="stylesheet" type="text/css" href="_static/pydoctheme.css" />
+    
+    <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
     <script src="_static/jquery.js"></script>
     <script src="_static/underscore.js"></script>
     <script src="_static/doctools.js"></script>
     
     <link rel="index" title="Index" href="#" />
-    <link rel="search" title="Search" href="search.html" />
-    <link rel="shortcut icon" type="image/png" href="_static/py.png" />
-    
-    <script type="text/javascript" src="_static/copybutton.js"></script>
-    
-     
-
-  </head><body>  
+    <link rel="search" title="Search" href="search.html" /><link rel="shortcut icon" type="image/png" href="_static/py.svg" />
+            <script type="text/javascript" src="_static/copybutton.js"></script>
+            <script type="text/javascript" src="_static/menu.js"></script> 
+  </head>
+<body>
+<div class="mobile-nav">
+    <input type="checkbox" id="menuToggler" class="toggler__input" aria-controls="navigation"
+           aria-pressed="false" aria-expanded="false" role="button" aria-label="Menu" />
+    <label for="menuToggler" class="toggler__label">
+        <span></span>
+    </label>
+    <nav class="nav-content" role="navigation">
+         <a href="https://www.python.org/" class="nav-logo">
+             <img src="_static/py.svg" alt="Logo"/>
+         </a>
+        <div class="version_switcher_placeholder"></div>
+        <form id="searchbox" role="search" class="search" action="search.html" method="get">
+            <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="search-icon">
+                <path fill-rule="nonzero"
+                        d="M15.5 14h-.79l-.28-.27a6.5 6.5 0 001.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 00-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 005.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0 .41-.41.41-1.08 0-1.49L15.5 14zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z" fill="#444"></path>
+            </svg>
+            <input type="text" name="q" aria-label="Quick search"/>
+            <input type="submit" value="Go"/>
+        </form>
+    </nav>
+    <div class="menu-wrapper">
+        <nav class="menu" role="navigation" aria-label="main navigation">
+            <div class="language_switcher_placeholder"></div>
+<div id="searchbox" style="display: none" role="search">
+  <h3 id="searchlabel">Quick search</h3>
+    <div class="searchformwrapper">
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" aria-labelledby="searchlabel" />
+      <input type="submit" value="Go" />
+    </form>
+    </div>
+</div>
+<script>$('#searchbox').show(0);</script>
+        </nav>
+    </div>
+</div>
+  
     <div class="related" role="navigation" aria-label="related navigation">
       <h3>Navigation</h3>
       <ul>
@@ -32,29 +67,32 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="py-modindex.html" title="Python Module Index"
              >modules</a> |</li>
-    <li><img src="_static/py.png" alt=""
-             style="vertical-align: middle; margin-top: -1px"/></li>
-    <li><a href="https://www.python.org/">Python</a> &#187;</li>
-    
-    <a href="index.html">nepali_datetime 1.0.6 documentation</a> &#187;
-    
-
+          <li><img src="_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li>
+          <li><a href="https://www.python.org/">Python</a> &#187;</li>
+          <li class="switchers">
+            <div class="language_switcher_placeholder"></div>
+            <div class="version_switcher_placeholder"></div>
+          </li>
+          <li>
+              
+              <a href="index.html">nepali_datetime 1.0.6 documentation</a> &#187;
+              
+          </li>
         <li class="nav-item nav-item-this"><a href="">Index</a></li>
-    <li class="right">
-        
+                <li class="right">
+                    
 
-    <div class="inline-search" style="display: none" role="search">
+    <div class="inline-search" role="search">
         <form class="inline-search" action="search.html" method="get">
-          <input placeholder="Quick search" type="text" name="q" />
+          <input placeholder="Quick search" aria-label="Quick search" type="text" name="q" />
           <input type="submit" value="Go" />
           <input type="hidden" name="check_keywords" value="yes" />
           <input type="hidden" name="area" value="default" />
         </form>
     </div>
-    <script type="text/javascript">$('.inline-search').show(0);</script>
-         |
-    </li>
-
+                     |
+                </li>
+            
       </ul>
     </div>    
 
@@ -358,29 +396,32 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="py-modindex.html" title="Python Module Index"
              >modules</a> |</li>
-    <li><img src="_static/py.png" alt=""
-             style="vertical-align: middle; margin-top: -1px"/></li>
-    <li><a href="https://www.python.org/">Python</a> &#187;</li>
-    
-    <a href="index.html">nepali_datetime 1.0.6 documentation</a> &#187;
-    
-
+          <li><img src="_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li>
+          <li><a href="https://www.python.org/">Python</a> &#187;</li>
+          <li class="switchers">
+            <div class="language_switcher_placeholder"></div>
+            <div class="version_switcher_placeholder"></div>
+          </li>
+          <li>
+              
+              <a href="index.html">nepali_datetime 1.0.6 documentation</a> &#187;
+              
+          </li>
         <li class="nav-item nav-item-this"><a href="">Index</a></li>
-    <li class="right">
-        
+                <li class="right">
+                    
 
-    <div class="inline-search" style="display: none" role="search">
+    <div class="inline-search" role="search">
         <form class="inline-search" action="search.html" method="get">
-          <input placeholder="Quick search" type="text" name="q" />
+          <input placeholder="Quick search" aria-label="Quick search" type="text" name="q" />
           <input type="submit" value="Go" />
           <input type="hidden" name="check_keywords" value="yes" />
           <input type="hidden" name="area" value="default" />
         </form>
     </div>
-    <script type="text/javascript">$('.inline-search').show(0);</script>
-         |
-    </li>
-
+                     |
+                </li>
+            
       </ul>
     </div>  
     <div class="footer">
@@ -402,7 +443,7 @@ <h3>Navigation</h3>
     
     <br />
 
-    Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
+    Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 4.0.2.
     </div>
 
   </body>
diff --git a/docs/html/index.html b/docs/html/index.html
index e030c24..9420f84 100644
--- a/docs/html/index.html
+++ b/docs/html/index.html
@@ -4,25 +4,79 @@
 <html>
   <head>
     <meta charset="utf-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>nepali_datetime — Bikram Sambat Date and Nepal Time types &#8212; nepali_datetime 1.0.6 documentation</title>
-    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-    <link rel="stylesheet" href="_static/pydoctheme.css" type="text/css" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
+
+    <title>nepali_datetime — Bikram Sambat Date and Nepal Time types &#8212; nepali_datetime 1.0.6 documentation</title><meta name="viewport" content="width=device-width, initial-scale=1.0">
+    
+    <link rel="stylesheet" type="text/css" href="_static/pygments.css" />
+    <link rel="stylesheet" type="text/css" href="_static/pydoctheme.css" />
     
-    <script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+    <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
     <script src="_static/jquery.js"></script>
     <script src="_static/underscore.js"></script>
     <script src="_static/doctools.js"></script>
     
     <link rel="index" title="Index" href="genindex.html" />
-    <link rel="search" title="Search" href="search.html" />
-    <link rel="shortcut icon" type="image/png" href="_static/py.png" />
-    
-    <script type="text/javascript" src="_static/copybutton.js"></script>
-    
-     
+    <link rel="search" title="Search" href="search.html" /><link rel="shortcut icon" type="image/png" href="_static/py.svg" />
+            <script type="text/javascript" src="_static/copybutton.js"></script>
+            <script type="text/javascript" src="_static/menu.js"></script> 
+  </head>
+<body>
+<div class="mobile-nav">
+    <input type="checkbox" id="menuToggler" class="toggler__input" aria-controls="navigation"
+           aria-pressed="false" aria-expanded="false" role="button" aria-label="Menu" />
+    <label for="menuToggler" class="toggler__label">
+        <span></span>
+    </label>
+    <nav class="nav-content" role="navigation">
+         <a href="https://www.python.org/" class="nav-logo">
+             <img src="_static/py.svg" alt="Logo"/>
+         </a>
+        <div class="version_switcher_placeholder"></div>
+        <form id="searchbox" role="search" class="search" action="search.html" method="get">
+            <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="search-icon">
+                <path fill-rule="nonzero"
+                        d="M15.5 14h-.79l-.28-.27a6.5 6.5 0 001.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 00-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 005.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0 .41-.41.41-1.08 0-1.49L15.5 14zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z" fill="#444"></path>
+            </svg>
+            <input type="text" name="q" aria-label="Quick search"/>
+            <input type="submit" value="Go"/>
+        </form>
+    </nav>
+    <div class="menu-wrapper">
+        <nav class="menu" role="navigation" aria-label="main navigation">
+            <div class="language_switcher_placeholder"></div>
+  <h3><a href="#">Table of Contents</a></h3>
+  <ul>
+<li><a class="reference internal" href="#"><code class="xref py py-mod docutils literal notranslate"><span class="pre">nepali_datetime</span></code> — Bikram Sambat Date and Nepal Time types</a><ul>
+<li><a class="reference internal" href="#available-types">Available Types</a></li>
+<li><a class="reference internal" href="#nepali-datetime-date-objects"><code class="xref py py-class docutils literal notranslate"><span class="pre">nepali_datetime.date</span></code> Objects</a></li>
+<li><a class="reference internal" href="#nepali-datetime-datetime-objects"><code class="xref py py-class docutils literal notranslate"><span class="pre">nepali_datetime.datetime</span></code> Objects</a></li>
+<li><a class="reference internal" href="#strftime-and-strptime-behavior"><code class="xref py py-meth docutils literal notranslate"><span class="pre">strftime()</span></code> and <code class="xref py py-meth docutils literal notranslate"><span class="pre">strptime()</span></code> Behavior</a></li>
+</ul>
+</li>
+</ul>
 
-  </head><body>  
+  <div role="note" aria-label="source link">
+    <h3>This Page</h3>
+    <ul class="this-page-menu">
+      <li><a href="_sources/index.rst.txt"
+            rel="nofollow">Show Source</a></li>
+    </ul>
+   </div>
+<div id="searchbox" style="display: none" role="search">
+  <h3 id="searchlabel">Quick search</h3>
+    <div class="searchformwrapper">
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" aria-labelledby="searchlabel" />
+      <input type="submit" value="Go" />
+    </form>
+    </div>
+</div>
+<script>$('#searchbox').show(0);</script>
+        </nav>
+    </div>
+</div>
+  
     <div class="related" role="navigation" aria-label="related navigation">
       <h3>Navigation</h3>
       <ul>
@@ -32,29 +86,32 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="py-modindex.html" title="Python Module Index"
              >modules</a> |</li>
-    <li><img src="_static/py.png" alt=""
-             style="vertical-align: middle; margin-top: -1px"/></li>
-    <li><a href="https://www.python.org/">Python</a> &#187;</li>
-    
-    <a href="#">nepali_datetime 1.0.6 documentation</a> &#187;
-    
-
+          <li><img src="_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li>
+          <li><a href="https://www.python.org/">Python</a> &#187;</li>
+          <li class="switchers">
+            <div class="language_switcher_placeholder"></div>
+            <div class="version_switcher_placeholder"></div>
+          </li>
+          <li>
+              
+              <a href="#">nepali_datetime 1.0.6 documentation</a> &#187;
+              
+          </li>
         <li class="nav-item nav-item-this"><a href=""><code class="xref py py-mod docutils literal notranslate"><span class="pre">nepali_datetime</span></code> — Bikram Sambat Date and Nepal Time types</a></li>
-    <li class="right">
-        
+                <li class="right">
+                    
 
-    <div class="inline-search" style="display: none" role="search">
+    <div class="inline-search" role="search">
         <form class="inline-search" action="search.html" method="get">
-          <input placeholder="Quick search" type="text" name="q" />
+          <input placeholder="Quick search" aria-label="Quick search" type="text" name="q" />
           <input type="submit" value="Go" />
           <input type="hidden" name="check_keywords" value="yes" />
           <input type="hidden" name="area" value="default" />
         </form>
     </div>
-    <script type="text/javascript">$('.inline-search').show(0);</script>
-         |
-    </li>
-
+                     |
+                </li>
+            
       </ul>
     </div>    
 
@@ -63,62 +120,62 @@ <h3>Navigation</h3>
         <div class="bodywrapper">
           <div class="body" role="main">
             
-  <div class="section" id="module-nepali_datetime">
+  <section id="module-nepali_datetime">
 <span id="nepali-datetime-bikram-sambat-date-and-nepal-time-types"></span><h1><a class="reference internal" href="#module-nepali_datetime" title="nepali_datetime: Basic date and time types that operates on B.S ."><code class="xref py py-mod docutils literal notranslate"><span class="pre">nepali_datetime</span></code></a> — Bikram Sambat Date and Nepal Time types<a class="headerlink" href="#module-nepali_datetime" title="Permalink to this headline">¶</a></h1>
 <p>The <a class="reference internal" href="#module-nepali_datetime" title="nepali_datetime: Basic date and time types that operates on B.S ."><code class="xref py py-mod docutils literal notranslate"><span class="pre">nepali_datetime</span></code></a> module is highly motivated from the Python3’s
 <code class="xref py py-mod docutils literal notranslate"><span class="pre">datetime</span></code> module. The module supplies classes for manipulating
 Bikram Sambat dates and Nepal times in both simple and complex ways.</p>
 <p>The <a class="reference internal" href="#module-nepali_datetime" title="nepali_datetime: Basic date and time types that operates on B.S ."><code class="xref py py-mod docutils literal notranslate"><span class="pre">nepali_datetime</span></code></a> module exports the following constants:</p>
 <dl class="py data">
-<dt id="nepali_datetime.MINYEAR">
-<code class="sig-prename descclassname">nepali_datetime.</code><code class="sig-name descname">MINYEAR</code><a class="headerlink" href="#nepali_datetime.MINYEAR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.MINYEAR">
+<span class="sig-prename descclassname"><span class="pre">nepali_datetime.</span></span><span class="sig-name descname"><span class="pre">MINYEAR</span></span><a class="headerlink" href="#nepali_datetime.MINYEAR" title="Permalink to this definition">¶</a></dt>
 <dd><p>The smallest year number allowed in a <a class="reference internal" href="#nepali_datetime.date" title="nepali_datetime.date"><code class="xref py py-class docutils literal notranslate"><span class="pre">date</span></code></a> or <a class="reference internal" href="#nepali_datetime.datetime" title="nepali_datetime.datetime"><code class="xref py py-class docutils literal notranslate"><span class="pre">datetime</span></code></a> object. <a class="reference internal" href="#nepali_datetime.MINYEAR" title="nepali_datetime.MINYEAR"><code class="xref py py-const docutils literal notranslate"><span class="pre">MINYEAR</span></code></a> is <code class="docutils literal notranslate"><span class="pre">1975</span></code>.</p>
 </dd></dl>
 
 <dl class="py data">
-<dt id="nepali_datetime.MAXYEAR">
-<code class="sig-prename descclassname">nepali_datetime.</code><code class="sig-name descname">MAXYEAR</code><a class="headerlink" href="#nepali_datetime.MAXYEAR" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.MAXYEAR">
+<span class="sig-prename descclassname"><span class="pre">nepali_datetime.</span></span><span class="sig-name descname"><span class="pre">MAXYEAR</span></span><a class="headerlink" href="#nepali_datetime.MAXYEAR" title="Permalink to this definition">¶</a></dt>
 <dd><p>The largest year number allowed in a <a class="reference internal" href="#nepali_datetime.date" title="nepali_datetime.date"><code class="xref py py-class docutils literal notranslate"><span class="pre">date</span></code></a> or <a class="reference internal" href="#nepali_datetime.datetime" title="nepali_datetime.datetime"><code class="xref py py-class docutils literal notranslate"><span class="pre">datetime</span></code></a> object. <a class="reference internal" href="#nepali_datetime.MAXYEAR" title="nepali_datetime.MAXYEAR"><code class="xref py py-const docutils literal notranslate"><span class="pre">MAXYEAR</span></code></a> is <code class="docutils literal notranslate"><span class="pre">2100</span></code>.</p>
 </dd></dl>
 
 <dl class="py data">
-<dt id="nepali_datetime.NEPAL_TIME_UTC_OFFSET">
-<code class="sig-prename descclassname">nepali_datetime.</code><code class="sig-name descname">NEPAL_TIME_UTC_OFFSET</code><a class="headerlink" href="#nepali_datetime.NEPAL_TIME_UTC_OFFSET" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.NEPAL_TIME_UTC_OFFSET">
+<span class="sig-prename descclassname"><span class="pre">nepali_datetime.</span></span><span class="sig-name descname"><span class="pre">NEPAL_TIME_UTC_OFFSET</span></span><a class="headerlink" href="#nepali_datetime.NEPAL_TIME_UTC_OFFSET" title="Permalink to this definition">¶</a></dt>
 <dd><p>The UTC offset of Nepal time <code class="docutils literal notranslate"><span class="pre">+05:45</span></code>.</p>
 </dd></dl>
 
-<div class="section" id="available-types">
+<section id="available-types">
 <h2>Available Types<a class="headerlink" href="#available-types" title="Permalink to this headline">¶</a></h2>
 <dl class="py class">
-<dt>
-<em class="property">class </em><code class="sig-prename descclassname">nepali_datetime.</code><code class="sig-name descname">date</code></dt>
+<dt class="sig sig-object py">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">nepali_datetime.</span></span><span class="sig-name descname"><span class="pre">date</span></span></dt>
 <dd><p>An idealized naive date, assuming the current Gregorian calendar always was, and
 always will be, in effect. Attributes: <a class="reference internal" href="#nepali_datetime.date.year" title="nepali_datetime.date.year"><code class="xref py py-attr docutils literal notranslate"><span class="pre">year</span></code></a>, <a class="reference internal" href="#nepali_datetime.date.month" title="nepali_datetime.date.month"><code class="xref py py-attr docutils literal notranslate"><span class="pre">month</span></code></a>, and
 <a class="reference internal" href="#nepali_datetime.date.day" title="nepali_datetime.date.day"><code class="xref py py-attr docutils literal notranslate"><span class="pre">day</span></code></a>.</p>
 </dd></dl>
 
 <dl class="py class">
-<dt id="nepali_datetime.UTC0545">
-<em class="property">class </em><code class="sig-prename descclassname">nepali_datetime.</code><code class="sig-name descname">UTC0545</code><a class="headerlink" href="#nepali_datetime.UTC0545" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.UTC0545">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">nepali_datetime.</span></span><span class="sig-name descname"><span class="pre">UTC0545</span></span><a class="headerlink" href="#nepali_datetime.UTC0545" title="Permalink to this definition">¶</a></dt>
 <dd><p>A <code class="xref py py-class docutils literal notranslate"><span class="pre">tzinfo</span></code> subclass for Nepal timezone.</p>
 </dd></dl>
 
 <dl class="py class">
-<dt>
-<em class="property">class </em><code class="sig-prename descclassname">nepali_datetime.</code><code class="sig-name descname">datetime</code></dt>
+<dt class="sig sig-object py">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">nepali_datetime.</span></span><span class="sig-name descname"><span class="pre">datetime</span></span></dt>
 <dd><p>A combination of a date and a time. Attributes: <a class="reference internal" href="#nepali_datetime.datetime.year" title="nepali_datetime.datetime.year"><code class="xref py py-attr docutils literal notranslate"><span class="pre">year</span></code></a>, <a class="reference internal" href="#nepali_datetime.datetime.month" title="nepali_datetime.datetime.month"><code class="xref py py-attr docutils literal notranslate"><span class="pre">month</span></code></a>,
 <a class="reference internal" href="#nepali_datetime.datetime.day" title="nepali_datetime.datetime.day"><code class="xref py py-attr docutils literal notranslate"><span class="pre">day</span></code></a>, <a class="reference internal" href="#nepali_datetime.datetime.hour" title="nepali_datetime.datetime.hour"><code class="xref py py-attr docutils literal notranslate"><span class="pre">hour</span></code></a>, <a class="reference internal" href="#nepali_datetime.datetime.minute" title="nepali_datetime.datetime.minute"><code class="xref py py-attr docutils literal notranslate"><span class="pre">minute</span></code></a>, <a class="reference internal" href="#nepali_datetime.datetime.second" title="nepali_datetime.datetime.second"><code class="xref py py-attr docutils literal notranslate"><span class="pre">second</span></code></a>, <a class="reference internal" href="#nepali_datetime.datetime.microsecond" title="nepali_datetime.datetime.microsecond"><code class="xref py py-attr docutils literal notranslate"><span class="pre">microsecond</span></code></a>,
 and <a class="reference internal" href="#nepali_datetime.datetime.tzinfo" title="nepali_datetime.datetime.tzinfo"><code class="xref py py-attr docutils literal notranslate"><span class="pre">tzinfo</span></code></a>.</p>
 </dd></dl>
 
-</div>
-<div class="section" id="nepali-datetime-date-objects">
+</section>
+<section id="nepali-datetime-date-objects">
 <h2><a class="reference internal" href="#nepali_datetime.date" title="nepali_datetime.date"><code class="xref py py-class docutils literal notranslate"><span class="pre">nepali_datetime.date</span></code></a> Objects<a class="headerlink" href="#nepali-datetime-date-objects" title="Permalink to this headline">¶</a></h2>
 <p>A <a class="reference internal" href="#nepali_datetime.date" title="nepali_datetime.date"><code class="xref py py-class docutils literal notranslate"><span class="pre">date</span></code></a> object represents a date (year, month and day) in B.S calendar.  Baishak 1 of year 1975 is called day
 number 1, Baishak 2 of year 1975 is called day number 2, and so on.</p>
 <dl class="py class">
-<dt id="nepali_datetime.date">
-<em class="property">class </em><code class="sig-prename descclassname">nepali_datetime.</code><code class="sig-name descname">date</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">year</span></em>, <em class="sig-param"><span class="n">month</span></em>, <em class="sig-param"><span class="n">day</span></em><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.date" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.date">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">nepali_datetime.</span></span><span class="sig-name descname"><span class="pre">date</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">year</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">month</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">day</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.date" title="Permalink to this definition">¶</a></dt>
 <dd><p>All arguments are required.  Arguments may be integers, in the following
 ranges:</p>
 <ul class="simple">
@@ -131,14 +188,14 @@ <h2><a class="reference internal" href="#nepali_datetime.date" title="nepali_dat
 
 <p>Other constructors, all class methods:</p>
 <dl class="py method">
-<dt id="nepali_datetime.date.today">
-<em class="property">classmethod </em><code class="sig-prename descclassname">date.</code><code class="sig-name descname">today</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.date.today" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.date.today">
+<em class="property"><span class="pre">classmethod</span> </em><span class="sig-prename descclassname"><span class="pre">date.</span></span><span class="sig-name descname"><span class="pre">today</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.date.today" title="Permalink to this definition">¶</a></dt>
 <dd><p>Return the current B.S date.</p>
 </dd></dl>
 
 <dl class="py method">
-<dt id="nepali_datetime.date.from_datetime_date">
-<em class="property">classmethod </em><code class="sig-prename descclassname">date.</code><code class="sig-name descname">from_datetime_date</code><span class="sig-paren">(</span><em class="sig-param">datetime.date</em><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.date.from_datetime_date" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.date.from_datetime_date">
+<em class="property"><span class="pre">classmethod</span> </em><span class="sig-prename descclassname"><span class="pre">date.</span></span><span class="sig-name descname"><span class="pre">from_datetime_date</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="pre">datetime.date</span></em><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.date.from_datetime_date" title="Permalink to this definition">¶</a></dt>
 <dd><p>Return the converted <code class="xref py py-class docutils literal notranslate"><span class="pre">nepalidatetime.date</span></code> (B.S) object for the given <code class="docutils literal notranslate"><span class="pre">datetime.date</span></code> object.</p>
 <p>Example:</p>
 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">datetime</span>
@@ -152,40 +209,40 @@ <h2><a class="reference internal" href="#nepali_datetime.date" title="nepali_dat
 
 <p>Class attributes:</p>
 <dl class="py attribute">
-<dt id="nepali_datetime.date.min">
-<code class="sig-prename descclassname">date.</code><code class="sig-name descname">min</code><a class="headerlink" href="#nepali_datetime.date.min" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.date.min">
+<span class="sig-prename descclassname"><span class="pre">date.</span></span><span class="sig-name descname"><span class="pre">min</span></span><a class="headerlink" href="#nepali_datetime.date.min" title="Permalink to this definition">¶</a></dt>
 <dd><p>The earliest representable date, <code class="docutils literal notranslate"><span class="pre">date(MINYEAR,</span> <span class="pre">1,</span> <span class="pre">1)</span></code>.</p>
 </dd></dl>
 
 <dl class="py attribute">
-<dt id="nepali_datetime.date.max">
-<code class="sig-prename descclassname">date.</code><code class="sig-name descname">max</code><a class="headerlink" href="#nepali_datetime.date.max" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.date.max">
+<span class="sig-prename descclassname"><span class="pre">date.</span></span><span class="sig-name descname"><span class="pre">max</span></span><a class="headerlink" href="#nepali_datetime.date.max" title="Permalink to this definition">¶</a></dt>
 <dd><p>The latest representable date, <code class="docutils literal notranslate"><span class="pre">date(MAXYEAR,</span> <span class="pre">12,</span> <span class="pre">MAXYEAR_LAST_MONTHS_LAST_DAY)</span></code>.</p>
 </dd></dl>
 
 <dl class="py attribute">
-<dt id="nepali_datetime.date.resolution">
-<code class="sig-prename descclassname">date.</code><code class="sig-name descname">resolution</code><a class="headerlink" href="#nepali_datetime.date.resolution" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.date.resolution">
+<span class="sig-prename descclassname"><span class="pre">date.</span></span><span class="sig-name descname"><span class="pre">resolution</span></span><a class="headerlink" href="#nepali_datetime.date.resolution" title="Permalink to this definition">¶</a></dt>
 <dd><p>The smallest possible difference between non-equal date objects,
 <code class="docutils literal notranslate"><span class="pre">timedelta(days=1)</span></code>.</p>
 </dd></dl>
 
 <p>Instance attributes (read-only):</p>
 <dl class="py attribute">
-<dt id="nepali_datetime.date.year">
-<code class="sig-prename descclassname">date.</code><code class="sig-name descname">year</code><a class="headerlink" href="#nepali_datetime.date.year" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.date.year">
+<span class="sig-prename descclassname"><span class="pre">date.</span></span><span class="sig-name descname"><span class="pre">year</span></span><a class="headerlink" href="#nepali_datetime.date.year" title="Permalink to this definition">¶</a></dt>
 <dd><p>Between <a class="reference internal" href="#nepali_datetime.MINYEAR" title="nepali_datetime.MINYEAR"><code class="xref py py-const docutils literal notranslate"><span class="pre">MINYEAR</span></code></a> and <a class="reference internal" href="#nepali_datetime.MAXYEAR" title="nepali_datetime.MAXYEAR"><code class="xref py py-const docutils literal notranslate"><span class="pre">MAXYEAR</span></code></a> inclusive.</p>
 </dd></dl>
 
 <dl class="py attribute">
-<dt id="nepali_datetime.date.month">
-<code class="sig-prename descclassname">date.</code><code class="sig-name descname">month</code><a class="headerlink" href="#nepali_datetime.date.month" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.date.month">
+<span class="sig-prename descclassname"><span class="pre">date.</span></span><span class="sig-name descname"><span class="pre">month</span></span><a class="headerlink" href="#nepali_datetime.date.month" title="Permalink to this definition">¶</a></dt>
 <dd><p>Between 1 and 12 inclusive.</p>
 </dd></dl>
 
 <dl class="py attribute">
-<dt id="nepali_datetime.date.day">
-<code class="sig-prename descclassname">date.</code><code class="sig-name descname">day</code><a class="headerlink" href="#nepali_datetime.date.day" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.date.day">
+<span class="sig-prename descclassname"><span class="pre">date.</span></span><span class="sig-name descname"><span class="pre">day</span></span><a class="headerlink" href="#nepali_datetime.date.day" title="Permalink to this definition">¶</a></dt>
 <dd><p>Between 1 and the number of days in the given month of the given year.</p>
 </dd></dl>
 
@@ -243,16 +300,16 @@ <h2><a class="reference internal" href="#nepali_datetime.date" title="nepali_dat
 </ol>
 <p>Instance methods:</p>
 <dl class="py method">
-<dt id="nepali_datetime.date.replace">
-<code class="sig-prename descclassname">date.</code><code class="sig-name descname">replace</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">year</span></em>, <em class="sig-param"><span class="n">month</span></em>, <em class="sig-param"><span class="n">day</span></em><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.date.replace" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.date.replace">
+<span class="sig-prename descclassname"><span class="pre">date.</span></span><span class="sig-name descname"><span class="pre">replace</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">year</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">month</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">day</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.date.replace" title="Permalink to this definition">¶</a></dt>
 <dd><p>Return a date with the same value, except for those parameters given new
 values by whichever keyword arguments are specified.  For example, if <code class="docutils literal notranslate"><span class="pre">d</span> <span class="pre">==</span>
 <span class="pre">date(2002,</span> <span class="pre">12,</span> <span class="pre">30)</span></code>, then <code class="docutils literal notranslate"><span class="pre">d.replace(day=26)</span> <span class="pre">==</span> <span class="pre">date(2002,</span> <span class="pre">12,</span> <span class="pre">26)</span></code>.</p>
 </dd></dl>
 
 <dl class="py method">
-<dt id="nepali_datetime.date.timetuple">
-<code class="sig-prename descclassname">date.</code><code class="sig-name descname">timetuple</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.date.timetuple" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.date.timetuple">
+<span class="sig-prename descclassname"><span class="pre">date.</span></span><span class="sig-name descname"><span class="pre">timetuple</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.date.timetuple" title="Permalink to this definition">¶</a></dt>
 <dd><p>Return a <code class="xref py py-class docutils literal notranslate"><span class="pre">time.struct_time</span></code> such as returned by <code class="xref py py-func docutils literal notranslate"><span class="pre">time.localtime()</span></code>.
 The hours, minutes and seconds are 0, and the DST flag is -1. <code class="docutils literal notranslate"><span class="pre">d.timetuple()</span></code>
 is equivalent to <code class="docutils literal notranslate"><span class="pre">time.struct_time((d.year,</span> <span class="pre">d.month,</span> <span class="pre">d.day,</span> <span class="pre">0,</span> <span class="pre">0,</span> <span class="pre">0,</span>
@@ -262,15 +319,15 @@ <h2><a class="reference internal" href="#nepali_datetime.date" title="nepali_dat
 </dd></dl>
 
 <dl class="py method">
-<dt id="nepali_datetime.date.weekday">
-<code class="sig-prename descclassname">date.</code><code class="sig-name descname">weekday</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.date.weekday" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.date.weekday">
+<span class="sig-prename descclassname"><span class="pre">date.</span></span><span class="sig-name descname"><span class="pre">weekday</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.date.weekday" title="Permalink to this definition">¶</a></dt>
 <dd><p>Return the day of the week as an integer, where Sunday is 0 and Saturday is 6.
 For example, <code class="docutils literal notranslate"><span class="pre">date(2002,</span> <span class="pre">12,</span> <span class="pre">4).weekday()</span> <span class="pre">==</span> <span class="pre">0</span></code>, a Sunday.</p>
 </dd></dl>
 
 <dl class="py method">
-<dt id="nepali_datetime.date.to_datetime_date">
-<code class="sig-prename descclassname">date.</code><code class="sig-name descname">to_datetime_date</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.date.to_datetime_date" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.date.to_datetime_date">
+<span class="sig-prename descclassname"><span class="pre">date.</span></span><span class="sig-name descname"><span class="pre">to_datetime_date</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.date.to_datetime_date" title="Permalink to this definition">¶</a></dt>
 <dd><p>Return the converted <code class="docutils literal notranslate"><span class="pre">datetime.date</span></code> (A.D) object of the <a class="reference internal" href="#nepali_datetime.date" title="nepali_datetime.date"><code class="xref py py-class docutils literal notranslate"><span class="pre">nepali_datetime.date</span></code></a> object.</p>
 <p>Example:</p>
 <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">nepali_datetime</span>
@@ -282,21 +339,21 @@ <h2><a class="reference internal" href="#nepali_datetime.date" title="nepali_dat
 </dd></dl>
 
 <dl class="py method">
-<dt id="nepali_datetime.date.isoformat">
-<code class="sig-prename descclassname">date.</code><code class="sig-name descname">isoformat</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.date.isoformat" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.date.isoformat">
+<span class="sig-prename descclassname"><span class="pre">date.</span></span><span class="sig-name descname"><span class="pre">isoformat</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.date.isoformat" title="Permalink to this definition">¶</a></dt>
 <dd><p>Return a string representing the date in ISO 8601 format, ‘YYYY-MM-DD’.  For
 example, <code class="docutils literal notranslate"><span class="pre">date(2002,</span> <span class="pre">12,</span> <span class="pre">4).isoformat()</span> <span class="pre">==</span> <span class="pre">'2002-12-04'</span></code>.</p>
 </dd></dl>
 
 <dl class="py method">
-<dt id="nepali_datetime.date.__str__">
-<code class="sig-prename descclassname">date.</code><code class="sig-name descname">__str__</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.date.__str__" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.date.__str__">
+<span class="sig-prename descclassname"><span class="pre">date.</span></span><span class="sig-name descname"><span class="pre">__str__</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.date.__str__" title="Permalink to this definition">¶</a></dt>
 <dd><p>For a date <em>d</em>, <code class="docutils literal notranslate"><span class="pre">str(d)</span></code> is equivalent to <code class="docutils literal notranslate"><span class="pre">d.isoformat()</span></code>.</p>
 </dd></dl>
 
 <dl class="py method">
-<dt id="nepali_datetime.date.calendar">
-<code class="sig-prename descclassname">date.</code><code class="sig-name descname">calendar</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">justify</span><span class="o">=</span><span class="default_value">4</span></em><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.date.calendar" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.date.calendar">
+<span class="sig-prename descclassname"><span class="pre">date.</span></span><span class="sig-name descname"><span class="pre">calendar</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">justify</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">4</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.date.calendar" title="Permalink to this definition">¶</a></dt>
 <dd><p>Dispaly a B.S calendar for the date object’s month with the object’s day highlighted. Override
 default <code class="docutils literal notranslate"><span class="pre">justify=4</span></code> for wider view of calendar.</p>
 <p>Example:</p>
@@ -316,8 +373,8 @@ <h2><a class="reference internal" href="#nepali_datetime.date" title="nepali_dat
 </dd></dl>
 
 <dl class="py method">
-<dt id="nepali_datetime.date.ctime">
-<code class="sig-prename descclassname">date.</code><code class="sig-name descname">ctime</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.date.ctime" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.date.ctime">
+<span class="sig-prename descclassname"><span class="pre">date.</span></span><span class="sig-name descname"><span class="pre">ctime</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.date.ctime" title="Permalink to this definition">¶</a></dt>
 <dd><p>Return a string representing the date, for example <code class="docutils literal notranslate"><span class="pre">date(2002,</span> <span class="pre">12,</span>
 <span class="pre">4).ctime()</span> <span class="pre">==</span> <span class="pre">'Wed</span> <span class="pre">Cha</span> <span class="pre">4</span> <span class="pre">00:00:00</span> <span class="pre">2002'</span></code>. <code class="docutils literal notranslate"><span class="pre">d.ctime()</span></code> is equivalent to
 <code class="docutils literal notranslate"><span class="pre">time.ctime(time.mktime(d.timetuple()))</span></code> on platforms where the native C
@@ -326,8 +383,8 @@ <h2><a class="reference internal" href="#nepali_datetime.date" title="nepali_dat
 </dd></dl>
 
 <dl class="py method">
-<dt id="nepali_datetime.date.strftime">
-<code class="sig-prename descclassname">date.</code><code class="sig-name descname">strftime</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">format</span></em><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.date.strftime" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.date.strftime">
+<span class="sig-prename descclassname"><span class="pre">date.</span></span><span class="sig-name descname"><span class="pre">strftime</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">format</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.date.strftime" title="Permalink to this definition">¶</a></dt>
 <dd><p>Return a string representing the date, controlled by an explicit format string.
 Format codes referring to hours, minutes or seconds will see 0 values. For a
 complete list of formatting directives, see
@@ -335,8 +392,8 @@ <h2><a class="reference internal" href="#nepali_datetime.date" title="nepali_dat
 </dd></dl>
 
 <dl class="py method">
-<dt id="nepali_datetime.date.__format__">
-<code class="sig-prename descclassname">date.</code><code class="sig-name descname">__format__</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">format</span></em><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.date.__format__" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.date.__format__">
+<span class="sig-prename descclassname"><span class="pre">date.</span></span><span class="sig-name descname"><span class="pre">__format__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">format</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.date.__format__" title="Permalink to this definition">¶</a></dt>
 <dd><p>Same as <a class="reference internal" href="#nepali_datetime.date.strftime" title="nepali_datetime.date.strftime"><code class="xref py py-meth docutils literal notranslate"><span class="pre">date.strftime()</span></code></a>. This makes it possible to specify a format
 string for a <a class="reference internal" href="#nepali_datetime.date" title="nepali_datetime.date"><code class="xref py py-class docutils literal notranslate"><span class="pre">date</span></code></a> object when using <code class="xref py py-meth docutils literal notranslate"><span class="pre">str.format()</span></code>. For a
 complete list of formatting directives, see
@@ -376,8 +433,8 @@ <h2><a class="reference internal" href="#nepali_datetime.date" title="nepali_dat
 <span class="go">&#39;The day is 12, the month is Bhadau.&#39;</span>
 </pre></div>
 </div>
-</div>
-<div class="section" id="nepali-datetime-datetime-objects">
+</section>
+<section id="nepali-datetime-datetime-objects">
 <h2><a class="reference internal" href="#nepali_datetime.datetime" title="nepali_datetime.datetime"><code class="xref py py-class docutils literal notranslate"><span class="pre">nepali_datetime.datetime</span></code></a> Objects<a class="headerlink" href="#nepali-datetime-datetime-objects" title="Permalink to this headline">¶</a></h2>
 <p>A <a class="reference internal" href="#nepali_datetime.datetime" title="nepali_datetime.datetime"><code class="xref py py-class docutils literal notranslate"><span class="pre">datetime</span></code></a> object is a single object containing all the information
 from a <a class="reference internal" href="#nepali_datetime.date" title="nepali_datetime.date"><code class="xref py py-class docutils literal notranslate"><span class="pre">date</span></code></a> object and a <code class="xref py py-class docutils literal notranslate"><span class="pre">time</span></code> object.  Like a <a class="reference internal" href="#nepali_datetime.date" title="nepali_datetime.date"><code class="xref py py-class docutils literal notranslate"><span class="pre">date</span></code></a>
@@ -386,8 +443,8 @@ <h2><a class="reference internal" href="#nepali_datetime.datetime" title="nepali
 3600*24 seconds in every day.</p>
 <p>Constructor:</p>
 <dl class="py class">
-<dt id="nepali_datetime.datetime">
-<em class="property">class </em><code class="sig-prename descclassname">nepali_datetime.</code><code class="sig-name descname">datetime</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">year</span></em>, <em class="sig-param"><span class="n">month</span></em>, <em class="sig-param"><span class="n">day</span></em>, <em class="sig-param"><span class="n">hour</span><span class="o">=</span><span class="default_value">0</span></em>, <em class="sig-param"><span class="n">minute</span><span class="o">=</span><span class="default_value">0</span></em>, <em class="sig-param"><span class="n">second</span><span class="o">=</span><span class="default_value">0</span></em>, <em class="sig-param"><span class="n">microsecond</span><span class="o">=</span><span class="default_value">0</span></em>, <em class="sig-param"><span class="n">tzinfo</span><span class="o">=</span><span class="default_value">None</span></em><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.datetime" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.datetime">
+<em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">nepali_datetime.</span></span><span class="sig-name descname"><span class="pre">datetime</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">year</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">month</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">day</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">hour</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">minute</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">second</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">microsecond</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">tzinfo</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.datetime" title="Permalink to this definition">¶</a></dt>
 <dd><p>The year, month and day arguments are required.  <em>tzinfo</em> may be <code class="docutils literal notranslate"><span class="pre">None</span></code>, or an
 instance of a <a class="reference internal" href="#nepali_datetime.UTC0545" title="nepali_datetime.UTC0545"><code class="xref py py-class docutils literal notranslate"><span class="pre">UTC0545</span></code></a>.  The remaining arguments may be integers,
 in the following ranges:</p>
@@ -405,14 +462,14 @@ <h2><a class="reference internal" href="#nepali_datetime.datetime" title="nepali
 
 <p>Other constructors, all class methods:</p>
 <dl class="py method">
-<dt id="nepali_datetime.datetime.today">
-<em class="property">classmethod </em><code class="sig-prename descclassname">datetime.</code><code class="sig-name descname">today</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.datetime.today" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.datetime.today">
+<em class="property"><span class="pre">classmethod</span> </em><span class="sig-prename descclassname"><span class="pre">datetime.</span></span><span class="sig-name descname"><span class="pre">today</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.datetime.today" title="Permalink to this definition">¶</a></dt>
 <dd><p>Return the current B.S datetime, with <a class="reference internal" href="#nepali_datetime.datetime.tzinfo" title="nepali_datetime.datetime.tzinfo"><code class="xref py py-attr docutils literal notranslate"><span class="pre">tzinfo</span></code></a> as <a class="reference internal" href="#nepali_datetime.UTC0545" title="nepali_datetime.UTC0545"><code class="xref py py-class docutils literal notranslate"><span class="pre">UTC0545</span></code></a> instance.</p>
 </dd></dl>
 
 <dl class="py method">
-<dt id="nepali_datetime.datetime.now">
-<em class="property">classmethod </em><code class="sig-prename descclassname">datetime.</code><code class="sig-name descname">now</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.datetime.now" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.datetime.now">
+<em class="property"><span class="pre">classmethod</span> </em><span class="sig-prename descclassname"><span class="pre">datetime.</span></span><span class="sig-name descname"><span class="pre">now</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.datetime.now" title="Permalink to this definition">¶</a></dt>
 <dd><p>Return the current local date and time.  If optional argument <em>tz</em> is <code class="docutils literal notranslate"><span class="pre">None</span></code>
 or not specified, this is like <a class="reference internal" href="#nepali_datetime.datetime.today" title="nepali_datetime.datetime.today"><code class="xref py py-meth docutils literal notranslate"><span class="pre">today()</span></code></a>, but, if possible, supplies more
 precision than can be gotten from going through a <code class="xref py py-func docutils literal notranslate"><span class="pre">time.time()</span></code> timestamp
@@ -423,16 +480,16 @@ <h2><a class="reference internal" href="#nepali_datetime.datetime" title="nepali
 </dd></dl>
 
 <dl class="py method">
-<dt id="nepali_datetime.datetime.utcnow">
-<em class="property">classmethod </em><code class="sig-prename descclassname">datetime.</code><code class="sig-name descname">utcnow</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.datetime.utcnow" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.datetime.utcnow">
+<em class="property"><span class="pre">classmethod</span> </em><span class="sig-prename descclassname"><span class="pre">datetime.</span></span><span class="sig-name descname"><span class="pre">utcnow</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.datetime.utcnow" title="Permalink to this definition">¶</a></dt>
 <dd><p>Return the current UTC date and time, with <a class="reference internal" href="#nepali_datetime.datetime.tzinfo" title="nepali_datetime.datetime.tzinfo"><code class="xref py py-attr docutils literal notranslate"><span class="pre">tzinfo</span></code></a> <code class="docutils literal notranslate"><span class="pre">None</span></code>. This is like
 <a class="reference internal" href="#nepali_datetime.datetime.now" title="nepali_datetime.datetime.now"><code class="xref py py-meth docutils literal notranslate"><span class="pre">now()</span></code></a>, but returns the current UTC date and time, as a naive
 <a class="reference internal" href="#nepali_datetime.datetime" title="nepali_datetime.datetime"><code class="xref py py-class docutils literal notranslate"><span class="pre">datetime</span></code></a> object. See also <a class="reference internal" href="#nepali_datetime.datetime.now" title="nepali_datetime.datetime.now"><code class="xref py py-meth docutils literal notranslate"><span class="pre">now()</span></code></a>.</p>
 </dd></dl>
 
 <dl class="py method">
-<dt id="nepali_datetime.datetime.strptime">
-<em class="property">classmethod </em><code class="sig-prename descclassname">datetime.</code><code class="sig-name descname">strptime</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">date_string</span></em>, <em class="sig-param"><span class="n">format</span></em><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.datetime.strptime" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.datetime.strptime">
+<em class="property"><span class="pre">classmethod</span> </em><span class="sig-prename descclassname"><span class="pre">datetime.</span></span><span class="sig-name descname"><span class="pre">strptime</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">date_string</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">format</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.datetime.strptime" title="Permalink to this definition">¶</a></dt>
 <dd><p>Return a <a class="reference internal" href="#nepali_datetime.datetime" title="nepali_datetime.datetime"><code class="xref py py-class docutils literal notranslate"><span class="pre">datetime</span></code></a> corresponding to <em>date_string</em>, parsed according to
 <em>format</em>.  This is equivalent to <code class="docutils literal notranslate"><span class="pre">datetime(*(time.strptime(date_string,</span>
 <span class="pre">format)[0:6]))</span></code>. <code class="xref py py-exc docutils literal notranslate"><span class="pre">ValueError</span></code> is raised if the date_string and format
@@ -443,72 +500,72 @@ <h2><a class="reference internal" href="#nepali_datetime.datetime" title="nepali
 
 <p>Class attributes:</p>
 <dl class="py attribute">
-<dt id="nepali_datetime.datetime.min">
-<code class="sig-prename descclassname">datetime.</code><code class="sig-name descname">min</code><a class="headerlink" href="#nepali_datetime.datetime.min" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.datetime.min">
+<span class="sig-prename descclassname"><span class="pre">datetime.</span></span><span class="sig-name descname"><span class="pre">min</span></span><a class="headerlink" href="#nepali_datetime.datetime.min" title="Permalink to this definition">¶</a></dt>
 <dd><p>The earliest representable <a class="reference internal" href="#nepali_datetime.datetime" title="nepali_datetime.datetime"><code class="xref py py-class docutils literal notranslate"><span class="pre">datetime</span></code></a>, <code class="docutils literal notranslate"><span class="pre">datetime(MINYEAR,</span> <span class="pre">1,</span> <span class="pre">1,</span>
 <span class="pre">tzinfo=None)</span></code>.</p>
 </dd></dl>
 
 <dl class="py attribute">
-<dt id="nepali_datetime.datetime.max">
-<code class="sig-prename descclassname">datetime.</code><code class="sig-name descname">max</code><a class="headerlink" href="#nepali_datetime.datetime.max" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.datetime.max">
+<span class="sig-prename descclassname"><span class="pre">datetime.</span></span><span class="sig-name descname"><span class="pre">max</span></span><a class="headerlink" href="#nepali_datetime.datetime.max" title="Permalink to this definition">¶</a></dt>
 <dd><p>The latest representable <a class="reference internal" href="#nepali_datetime.datetime" title="nepali_datetime.datetime"><code class="xref py py-class docutils literal notranslate"><span class="pre">datetime</span></code></a>, <code class="docutils literal notranslate"><span class="pre">datetime(MAXYEAR,</span> <span class="pre">12,</span> <span class="pre">MAXYEAR_LAST_MONTHS_LAST_DAY,</span> <span class="pre">23,</span> <span class="pre">59,</span>
 <span class="pre">59,</span> <span class="pre">999999,</span> <span class="pre">tzinfo=None)</span></code>.</p>
 </dd></dl>
 
 <dl class="py attribute">
-<dt id="nepali_datetime.datetime.resolution">
-<code class="sig-prename descclassname">datetime.</code><code class="sig-name descname">resolution</code><a class="headerlink" href="#nepali_datetime.datetime.resolution" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.datetime.resolution">
+<span class="sig-prename descclassname"><span class="pre">datetime.</span></span><span class="sig-name descname"><span class="pre">resolution</span></span><a class="headerlink" href="#nepali_datetime.datetime.resolution" title="Permalink to this definition">¶</a></dt>
 <dd><p>The smallest possible difference between non-equal <a class="reference internal" href="#nepali_datetime.datetime" title="nepali_datetime.datetime"><code class="xref py py-class docutils literal notranslate"><span class="pre">datetime</span></code></a> objects,
 <code class="docutils literal notranslate"><span class="pre">timedelta(microseconds=1)</span></code>.</p>
 </dd></dl>
 
 <p>Instance attributes (read-only):</p>
 <dl class="py attribute">
-<dt id="nepali_datetime.datetime.year">
-<code class="sig-prename descclassname">datetime.</code><code class="sig-name descname">year</code><a class="headerlink" href="#nepali_datetime.datetime.year" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.datetime.year">
+<span class="sig-prename descclassname"><span class="pre">datetime.</span></span><span class="sig-name descname"><span class="pre">year</span></span><a class="headerlink" href="#nepali_datetime.datetime.year" title="Permalink to this definition">¶</a></dt>
 <dd><p>Between <a class="reference internal" href="#nepali_datetime.MINYEAR" title="nepali_datetime.MINYEAR"><code class="xref py py-const docutils literal notranslate"><span class="pre">MINYEAR</span></code></a> and <a class="reference internal" href="#nepali_datetime.MAXYEAR" title="nepali_datetime.MAXYEAR"><code class="xref py py-const docutils literal notranslate"><span class="pre">MAXYEAR</span></code></a> inclusive.</p>
 </dd></dl>
 
 <dl class="py attribute">
-<dt id="nepali_datetime.datetime.month">
-<code class="sig-prename descclassname">datetime.</code><code class="sig-name descname">month</code><a class="headerlink" href="#nepali_datetime.datetime.month" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.datetime.month">
+<span class="sig-prename descclassname"><span class="pre">datetime.</span></span><span class="sig-name descname"><span class="pre">month</span></span><a class="headerlink" href="#nepali_datetime.datetime.month" title="Permalink to this definition">¶</a></dt>
 <dd><p>Between 1 and 12 inclusive.</p>
 </dd></dl>
 
 <dl class="py attribute">
-<dt id="nepali_datetime.datetime.day">
-<code class="sig-prename descclassname">datetime.</code><code class="sig-name descname">day</code><a class="headerlink" href="#nepali_datetime.datetime.day" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.datetime.day">
+<span class="sig-prename descclassname"><span class="pre">datetime.</span></span><span class="sig-name descname"><span class="pre">day</span></span><a class="headerlink" href="#nepali_datetime.datetime.day" title="Permalink to this definition">¶</a></dt>
 <dd><p>Between 1 and the number of days in the given month of the given year.</p>
 </dd></dl>
 
 <dl class="py attribute">
-<dt id="nepali_datetime.datetime.hour">
-<code class="sig-prename descclassname">datetime.</code><code class="sig-name descname">hour</code><a class="headerlink" href="#nepali_datetime.datetime.hour" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.datetime.hour">
+<span class="sig-prename descclassname"><span class="pre">datetime.</span></span><span class="sig-name descname"><span class="pre">hour</span></span><a class="headerlink" href="#nepali_datetime.datetime.hour" title="Permalink to this definition">¶</a></dt>
 <dd><p>In <code class="docutils literal notranslate"><span class="pre">range(24)</span></code>.</p>
 </dd></dl>
 
 <dl class="py attribute">
-<dt id="nepali_datetime.datetime.minute">
-<code class="sig-prename descclassname">datetime.</code><code class="sig-name descname">minute</code><a class="headerlink" href="#nepali_datetime.datetime.minute" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.datetime.minute">
+<span class="sig-prename descclassname"><span class="pre">datetime.</span></span><span class="sig-name descname"><span class="pre">minute</span></span><a class="headerlink" href="#nepali_datetime.datetime.minute" title="Permalink to this definition">¶</a></dt>
 <dd><p>In <code class="docutils literal notranslate"><span class="pre">range(60)</span></code>.</p>
 </dd></dl>
 
 <dl class="py attribute">
-<dt id="nepali_datetime.datetime.second">
-<code class="sig-prename descclassname">datetime.</code><code class="sig-name descname">second</code><a class="headerlink" href="#nepali_datetime.datetime.second" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.datetime.second">
+<span class="sig-prename descclassname"><span class="pre">datetime.</span></span><span class="sig-name descname"><span class="pre">second</span></span><a class="headerlink" href="#nepali_datetime.datetime.second" title="Permalink to this definition">¶</a></dt>
 <dd><p>In <code class="docutils literal notranslate"><span class="pre">range(60)</span></code>.</p>
 </dd></dl>
 
 <dl class="py attribute">
-<dt id="nepali_datetime.datetime.microsecond">
-<code class="sig-prename descclassname">datetime.</code><code class="sig-name descname">microsecond</code><a class="headerlink" href="#nepali_datetime.datetime.microsecond" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.datetime.microsecond">
+<span class="sig-prename descclassname"><span class="pre">datetime.</span></span><span class="sig-name descname"><span class="pre">microsecond</span></span><a class="headerlink" href="#nepali_datetime.datetime.microsecond" title="Permalink to this definition">¶</a></dt>
 <dd><p>In <code class="docutils literal notranslate"><span class="pre">range(1000000)</span></code>.</p>
 </dd></dl>
 
 <dl class="py attribute">
-<dt id="nepali_datetime.datetime.tzinfo">
-<code class="sig-prename descclassname">datetime.</code><code class="sig-name descname">tzinfo</code><a class="headerlink" href="#nepali_datetime.datetime.tzinfo" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.datetime.tzinfo">
+<span class="sig-prename descclassname"><span class="pre">datetime.</span></span><span class="sig-name descname"><span class="pre">tzinfo</span></span><a class="headerlink" href="#nepali_datetime.datetime.tzinfo" title="Permalink to this definition">¶</a></dt>
 <dd><p>The object passed as the <em>tzinfo</em> argument to the <a class="reference internal" href="#nepali_datetime.datetime" title="nepali_datetime.datetime"><code class="xref py py-class docutils literal notranslate"><span class="pre">datetime</span></code></a> constructor,
 or <code class="docutils literal notranslate"><span class="pre">None</span></code> if none was passed.</p>
 </dd></dl>
@@ -579,28 +636,28 @@ <h2><a class="reference internal" href="#nepali_datetime.datetime" title="nepali
 </ol>
 <p>Instance methods:</p>
 <dl class="py method">
-<dt id="nepali_datetime.datetime.date">
-<code class="sig-prename descclassname">datetime.</code><code class="sig-name descname">date</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.datetime.date" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.datetime.date">
+<span class="sig-prename descclassname"><span class="pre">datetime.</span></span><span class="sig-name descname"><span class="pre">date</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.datetime.date" title="Permalink to this definition">¶</a></dt>
 <dd><p>Return <a class="reference internal" href="#nepali_datetime.date" title="nepali_datetime.date"><code class="xref py py-class docutils literal notranslate"><span class="pre">date</span></code></a> object with same year, month and day.</p>
 </dd></dl>
 
 <dl class="py method">
-<dt id="nepali_datetime.datetime.time">
-<code class="sig-prename descclassname">datetime.</code><code class="sig-name descname">time</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.datetime.time" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.datetime.time">
+<span class="sig-prename descclassname"><span class="pre">datetime.</span></span><span class="sig-name descname"><span class="pre">time</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.datetime.time" title="Permalink to this definition">¶</a></dt>
 <dd><p>Return <a class="reference internal" href="#nepali_datetime.datetime.time" title="nepali_datetime.datetime.time"><code class="xref py py-class docutils literal notranslate"><span class="pre">time</span></code></a> object with same hour, minute, second and microsecond.
 <a class="reference internal" href="#nepali_datetime.datetime.tzinfo" title="nepali_datetime.datetime.tzinfo"><code class="xref py py-attr docutils literal notranslate"><span class="pre">tzinfo</span></code></a> is <code class="docutils literal notranslate"><span class="pre">None</span></code>.  See also method <a class="reference internal" href="#nepali_datetime.datetime.timetz" title="nepali_datetime.datetime.timetz"><code class="xref py py-meth docutils literal notranslate"><span class="pre">timetz()</span></code></a>.</p>
 </dd></dl>
 
 <dl class="py method">
-<dt id="nepali_datetime.datetime.timetz">
-<code class="sig-prename descclassname">datetime.</code><code class="sig-name descname">timetz</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.datetime.timetz" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.datetime.timetz">
+<span class="sig-prename descclassname"><span class="pre">datetime.</span></span><span class="sig-name descname"><span class="pre">timetz</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.datetime.timetz" title="Permalink to this definition">¶</a></dt>
 <dd><p>Return <a class="reference internal" href="#nepali_datetime.datetime.time" title="nepali_datetime.datetime.time"><code class="xref py py-class docutils literal notranslate"><span class="pre">time</span></code></a> object with same hour, minute, second, microsecond, and
 tzinfo attributes.  See also method <a class="reference internal" href="#nepali_datetime.datetime.time" title="nepali_datetime.datetime.time"><code class="xref py py-meth docutils literal notranslate"><span class="pre">time()</span></code></a>.</p>
 </dd></dl>
 
 <dl class="py method">
-<dt id="nepali_datetime.datetime.replace">
-<code class="sig-prename descclassname">datetime.</code><code class="sig-name descname">replace</code><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param">year</em><span class="optional">[</span>, <em class="sig-param">month</em><span class="optional">[</span>, <em class="sig-param">day</em><span class="optional">[</span>, <em class="sig-param">hour</em><span class="optional">[</span>, <em class="sig-param">minute</em><span class="optional">[</span>, <em class="sig-param">second</em><span class="optional">[</span>, <em class="sig-param">microsecond</em><span class="optional">[</span>, <em class="sig-param">tzinfo</em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.datetime.replace" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.datetime.replace">
+<span class="sig-prename descclassname"><span class="pre">datetime.</span></span><span class="sig-name descname"><span class="pre">replace</span></span><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param"><span class="pre">year</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">month</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">day</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">hour</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">minute</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">second</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">microsecond</span></em><span class="optional">[</span>, <em class="sig-param"><span class="pre">tzinfo</span></em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.datetime.replace" title="Permalink to this definition">¶</a></dt>
 <dd><p>Return a datetime with the same attributes, except for those attributes given
 new values by whichever keyword arguments are specified.  Note that
 <code class="docutils literal notranslate"><span class="pre">tzinfo=None</span></code> can be specified to create a naive datetime from an aware
@@ -608,16 +665,16 @@ <h2><a class="reference internal" href="#nepali_datetime.datetime" title="nepali
 </dd></dl>
 
 <dl class="py method">
-<dt id="nepali_datetime.datetime.tzname">
-<code class="sig-prename descclassname">datetime.</code><code class="sig-name descname">tzname</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.datetime.tzname" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.datetime.tzname">
+<span class="sig-prename descclassname"><span class="pre">datetime.</span></span><span class="sig-name descname"><span class="pre">tzname</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.datetime.tzname" title="Permalink to this definition">¶</a></dt>
 <dd><p>If <a class="reference internal" href="#nepali_datetime.datetime.tzinfo" title="nepali_datetime.datetime.tzinfo"><code class="xref py py-attr docutils literal notranslate"><span class="pre">tzinfo</span></code></a> is <code class="docutils literal notranslate"><span class="pre">None</span></code>, returns <code class="docutils literal notranslate"><span class="pre">None</span></code>, else returns
 <code class="docutils literal notranslate"><span class="pre">self.tzinfo.tzname(self)</span></code>, raises an exception if the latter doesn’t return
 <code class="docutils literal notranslate"><span class="pre">None</span></code> or a string object,</p>
 </dd></dl>
 
 <dl class="py method">
-<dt id="nepali_datetime.datetime.timetuple">
-<code class="sig-prename descclassname">datetime.</code><code class="sig-name descname">timetuple</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.datetime.timetuple" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.datetime.timetuple">
+<span class="sig-prename descclassname"><span class="pre">datetime.</span></span><span class="sig-name descname"><span class="pre">timetuple</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.datetime.timetuple" title="Permalink to this definition">¶</a></dt>
 <dd><p>Return a <code class="xref py py-class docutils literal notranslate"><span class="pre">time.struct_time</span></code> such as returned by <code class="xref py py-func docutils literal notranslate"><span class="pre">time.localtime()</span></code>.
 <code class="docutils literal notranslate"><span class="pre">d.timetuple()</span></code> is equivalent to <code class="docutils literal notranslate"><span class="pre">time.struct_time((d.year,</span> <span class="pre">d.month,</span> <span class="pre">d.day,</span>
 <span class="pre">d.hour,</span> <span class="pre">d.minute,</span> <span class="pre">d.second,</span> <span class="pre">d.weekday(),</span> <span class="pre">yday,</span> <span class="pre">dst))</span></code>, where <code class="docutils literal notranslate"><span class="pre">yday</span> <span class="pre">=</span>
@@ -630,35 +687,35 @@ <h2><a class="reference internal" href="#nepali_datetime.datetime" title="nepali
 </dd></dl>
 
 <dl class="py method">
-<dt id="nepali_datetime.datetime.weekday">
-<code class="sig-prename descclassname">datetime.</code><code class="sig-name descname">weekday</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.datetime.weekday" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.datetime.weekday">
+<span class="sig-prename descclassname"><span class="pre">datetime.</span></span><span class="sig-name descname"><span class="pre">weekday</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.datetime.weekday" title="Permalink to this definition">¶</a></dt>
 <dd><p>Return the day of the week as an integer, where Sunday is 0 and Saturday is 6.
 The same as <code class="docutils literal notranslate"><span class="pre">self.date().weekday()</span></code>. See also <code class="xref py py-meth docutils literal notranslate"><span class="pre">isoweekday()</span></code>.</p>
 </dd></dl>
 
 <dl class="py method">
-<dt id="nepali_datetime.datetime.isoformat">
-<code class="sig-prename descclassname">datetime.</code><code class="sig-name descname">isoformat</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">sep</span><span class="o">=</span><span class="default_value">'T'</span></em><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.datetime.isoformat" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.datetime.isoformat">
+<span class="sig-prename descclassname"><span class="pre">datetime.</span></span><span class="sig-name descname"><span class="pre">isoformat</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">sep</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'T'</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.datetime.isoformat" title="Permalink to this definition">¶</a></dt>
 <dd></dd></dl>
 
 <dl class="py method">
-<dt id="nepali_datetime.datetime.__str__">
-<code class="sig-prename descclassname">datetime.</code><code class="sig-name descname">__str__</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.datetime.__str__" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.datetime.__str__">
+<span class="sig-prename descclassname"><span class="pre">datetime.</span></span><span class="sig-name descname"><span class="pre">__str__</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.datetime.__str__" title="Permalink to this definition">¶</a></dt>
 <dd><p>For a <a class="reference internal" href="#nepali_datetime.datetime" title="nepali_datetime.datetime"><code class="xref py py-class docutils literal notranslate"><span class="pre">datetime</span></code></a> instance <em>d</em>, <code class="docutils literal notranslate"><span class="pre">str(d)</span></code> is equivalent to
 <code class="docutils literal notranslate"><span class="pre">d.isoformat('</span> <span class="pre">')</span></code>.</p>
 </dd></dl>
 
 <dl class="py method">
-<dt id="nepali_datetime.datetime.strftime">
-<code class="sig-prename descclassname">datetime.</code><code class="sig-name descname">strftime</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">format</span></em><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.datetime.strftime" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.datetime.strftime">
+<span class="sig-prename descclassname"><span class="pre">datetime.</span></span><span class="sig-name descname"><span class="pre">strftime</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">format</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.datetime.strftime" title="Permalink to this definition">¶</a></dt>
 <dd><p>Return a string representing the date and time, controlled by an explicit format
 string.  For a complete list of formatting directives, see
 <a class="reference internal" href="#strftime-strptime-behavior"><span class="std std-ref">strftime() and strptime() Behavior</span></a>.</p>
 </dd></dl>
 
 <dl class="py method">
-<dt id="nepali_datetime.datetime.__format__">
-<code class="sig-prename descclassname">datetime.</code><code class="sig-name descname">__format__</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">format</span></em><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.datetime.__format__" title="Permalink to this definition">¶</a></dt>
+<dt class="sig sig-object py" id="nepali_datetime.datetime.__format__">
+<span class="sig-prename descclassname"><span class="pre">datetime.</span></span><span class="sig-name descname"><span class="pre">__format__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">format</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#nepali_datetime.datetime.__format__" title="Permalink to this definition">¶</a></dt>
 <dd><p>Same as <a class="reference internal" href="#nepali_datetime.datetime.strftime" title="nepali_datetime.datetime.strftime"><code class="xref py py-meth docutils literal notranslate"><span class="pre">datetime.strftime()</span></code></a>.  This makes it possible to specify a format
 string for a <a class="reference internal" href="#nepali_datetime.datetime" title="nepali_datetime.datetime"><code class="xref py py-class docutils literal notranslate"><span class="pre">datetime</span></code></a> object when using <code class="xref py py-meth docutils literal notranslate"><span class="pre">str.format()</span></code>.  For a
 complete list of formatting directives, see
@@ -688,8 +745,8 @@ <h2><a class="reference internal" href="#nepali_datetime.datetime" title="nepali
 <span class="go">&#39;The day is 21, the month is Falgun, the time is 04:30PM.&#39;</span>
 </pre></div>
 </div>
-</div>
-<div class="section" id="strftime-and-strptime-behavior">
+</section>
+<section id="strftime-and-strptime-behavior">
 <span id="strftime-strptime-behavior"></span><h2><code class="xref py py-meth docutils literal notranslate"><span class="pre">strftime()</span></code> and <code class="xref py py-meth docutils literal notranslate"><span class="pre">strptime()</span></code> Behavior<a class="headerlink" href="#strftime-and-strptime-behavior" title="Permalink to this headline">¶</a></h2>
 <p><a class="reference internal" href="#nepali_datetime.date" title="nepali_datetime.date"><code class="xref py py-class docutils literal notranslate"><span class="pre">date</span></code></a>, <a class="reference internal" href="#nepali_datetime.datetime" title="nepali_datetime.datetime"><code class="xref py py-class docutils literal notranslate"><span class="pre">datetime</span></code></a>, and <code class="xref py py-class docutils literal notranslate"><span class="pre">time</span></code> objects all support a
 <code class="docutils literal notranslate"><span class="pre">strftime(format)</span></code> method, to create a string representing the time under the
@@ -801,7 +858,7 @@ <h2><a class="reference internal" href="#nepali_datetime.datetime" title="nepali
 <td><p>Year without century as a
 zero-padded decimal number.</p></td>
 <td><p>00, 01, …, 99</p></td>
-<td></td>
+<td><p>(7)</p></td>
 </tr>
 <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">%k</span></code></p></td>
 <td><p>Year without century as a
@@ -831,12 +888,26 @@ <h2><a class="reference internal" href="#nepali_datetime.datetime" title="nepali
 <td><p>00, 01, …, 23</p></td>
 <td></td>
 </tr>
-<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">%I</span></code></p></td>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">%h</span></code></p></td>
+<td><p>Hour (24-hour clock) as a
+zero-padded decimal number
+in Nepali unicode.</p></td>
+<td><p>००, ०१, …, २३</p></td>
+<td></td>
+</tr>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">%I</span></code></p></td>
 <td><p>Hour (12-hour clock) as a
 zero-padded decimal number.</p></td>
 <td><p>01, 02, …, 12</p></td>
 <td></td>
 </tr>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">%i</span></code></p></td>
+<td><p>Hour (12-hour clock) as a
+zero-padded decimal number
+in Nepali unicode.</p></td>
+<td><p>०१, ०२, …, १२</p></td>
+<td></td>
+</tr>
 <tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">%p</span></code></p></td>
 <td><p>Locale’s equivalent of either
 AM or PM.</p></td>
@@ -849,12 +920,26 @@ <h2><a class="reference internal" href="#nepali_datetime.datetime" title="nepali
 <td><p>00, 01, …, 59</p></td>
 <td></td>
 </tr>
-<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">%S</span></code></p></td>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">%l</span></code></p></td>
+<td><p>Minute as a zero-padded
+decimal number in Nepali
+unicode.</p></td>
+<td><p>००, ०१, …, ५९</p></td>
+<td></td>
+</tr>
+<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">%S</span></code></p></td>
 <td><p>Second as a zero-padded
 decimal number.</p></td>
 <td><p>00, 01, …, 59</p></td>
 <td><p>(4)</p></td>
 </tr>
+<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">%s</span></code></p></td>
+<td><p>Second as a zero-padded
+decimal number in Nepali
+unicode.</p></td>
+<td><p>००, ०१, …, ५९</p></td>
+<td><p>(4)</p></td>
+</tr>
 <tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">%f</span></code></p></td>
 <td><p>Microsecond as a decimal
 number, zero-padded on the
@@ -916,9 +1001,13 @@ <h2><a class="reference internal" href="#nepali_datetime.datetime" title="nepali
 </dd>
 </dl>
 </li>
+<li><p>The year within century. When a century is not otherwise specified, values in
+the range [90,99] shall refer to years 1990 to 1999 inclusive, and values in
+the range [00,89] shall refer to years 2000 to 2089 inclusive; leading zeros
+shall be permitted but shall not be required.</p></li>
 </ol>
-</div>
-</div>
+</section>
+</section>
 
 
             <div class="clearer"></div>
@@ -968,29 +1057,32 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="py-modindex.html" title="Python Module Index"
              >modules</a> |</li>
-    <li><img src="_static/py.png" alt=""
-             style="vertical-align: middle; margin-top: -1px"/></li>
-    <li><a href="https://www.python.org/">Python</a> &#187;</li>
-    
-    <a href="#">nepali_datetime 1.0.6 documentation</a> &#187;
-    
-
+          <li><img src="_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li>
+          <li><a href="https://www.python.org/">Python</a> &#187;</li>
+          <li class="switchers">
+            <div class="language_switcher_placeholder"></div>
+            <div class="version_switcher_placeholder"></div>
+          </li>
+          <li>
+              
+              <a href="#">nepali_datetime 1.0.6 documentation</a> &#187;
+              
+          </li>
         <li class="nav-item nav-item-this"><a href=""><code class="xref py py-mod docutils literal notranslate"><span class="pre">nepali_datetime</span></code> — Bikram Sambat Date and Nepal Time types</a></li>
-    <li class="right">
-        
+                <li class="right">
+                    
 
-    <div class="inline-search" style="display: none" role="search">
+    <div class="inline-search" role="search">
         <form class="inline-search" action="search.html" method="get">
-          <input placeholder="Quick search" type="text" name="q" />
+          <input placeholder="Quick search" aria-label="Quick search" type="text" name="q" />
           <input type="submit" value="Go" />
           <input type="hidden" name="check_keywords" value="yes" />
           <input type="hidden" name="area" value="default" />
         </form>
     </div>
-    <script type="text/javascript">$('.inline-search').show(0);</script>
-         |
-    </li>
-
+                     |
+                </li>
+            
       </ul>
     </div>  
     <div class="footer">
@@ -1012,7 +1104,7 @@ <h3>Navigation</h3>
     
     <br />
 
-    Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
+    Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 4.0.2.
     </div>
 
   </body>
diff --git a/docs/html/py-modindex.html b/docs/html/py-modindex.html
index 193c949..afaf0a8 100644
--- a/docs/html/py-modindex.html
+++ b/docs/html/py-modindex.html
@@ -5,31 +5,66 @@
   <head>
     <meta charset="utf-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>Python Module Index &#8212; nepali_datetime 1.0.6 documentation</title>
-    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-    <link rel="stylesheet" href="_static/pydoctheme.css" type="text/css" />
+    <title>Python Module Index &#8212; nepali_datetime 1.0.6 documentation</title><meta name="viewport" content="width=device-width, initial-scale=1.0">
     
-    <script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+    <link rel="stylesheet" type="text/css" href="_static/pygments.css" />
+    <link rel="stylesheet" type="text/css" href="_static/pydoctheme.css" />
+    
+    <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
     <script src="_static/jquery.js"></script>
     <script src="_static/underscore.js"></script>
     <script src="_static/doctools.js"></script>
     
     <link rel="index" title="Index" href="genindex.html" />
     <link rel="search" title="Search" href="search.html" />
-
-    <link rel="shortcut icon" type="image/png" href="_static/py.png" />
-    
-    <script type="text/javascript" src="_static/copybutton.js"></script>
-    
-     
-
+<link rel="shortcut icon" type="image/png" href="_static/py.svg" />
+            <script type="text/javascript" src="_static/copybutton.js"></script>
+            <script type="text/javascript" src="_static/menu.js"></script> 
 
     <script>
       DOCUMENTATION_OPTIONS.COLLAPSE_INDEX = true;
     </script>
 
 
-  </head><body>  
+  </head>
+<body>
+<div class="mobile-nav">
+    <input type="checkbox" id="menuToggler" class="toggler__input" aria-controls="navigation"
+           aria-pressed="false" aria-expanded="false" role="button" aria-label="Menu" />
+    <label for="menuToggler" class="toggler__label">
+        <span></span>
+    </label>
+    <nav class="nav-content" role="navigation">
+         <a href="https://www.python.org/" class="nav-logo">
+             <img src="_static/py.svg" alt="Logo"/>
+         </a>
+        <div class="version_switcher_placeholder"></div>
+        <form id="searchbox" role="search" class="search" action="search.html" method="get">
+            <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="search-icon">
+                <path fill-rule="nonzero"
+                        d="M15.5 14h-.79l-.28-.27a6.5 6.5 0 001.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 00-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 005.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0 .41-.41.41-1.08 0-1.49L15.5 14zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z" fill="#444"></path>
+            </svg>
+            <input type="text" name="q" aria-label="Quick search"/>
+            <input type="submit" value="Go"/>
+        </form>
+    </nav>
+    <div class="menu-wrapper">
+        <nav class="menu" role="navigation" aria-label="main navigation">
+            <div class="language_switcher_placeholder"></div>
+<div id="searchbox" style="display: none" role="search">
+  <h3 id="searchlabel">Quick search</h3>
+    <div class="searchformwrapper">
+    <form class="search" action="search.html" method="get">
+      <input type="text" name="q" aria-labelledby="searchlabel" />
+      <input type="submit" value="Go" />
+    </form>
+    </div>
+</div>
+<script>$('#searchbox').show(0);</script>
+        </nav>
+    </div>
+</div>
+  
     <div class="related" role="navigation" aria-label="related navigation">
       <h3>Navigation</h3>
       <ul>
@@ -39,29 +74,32 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="#" title="Python Module Index"
              >modules</a> |</li>
-    <li><img src="_static/py.png" alt=""
-             style="vertical-align: middle; margin-top: -1px"/></li>
-    <li><a href="https://www.python.org/">Python</a> &#187;</li>
-    
-    <a href="index.html">nepali_datetime 1.0.6 documentation</a> &#187;
-    
-
+          <li><img src="_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li>
+          <li><a href="https://www.python.org/">Python</a> &#187;</li>
+          <li class="switchers">
+            <div class="language_switcher_placeholder"></div>
+            <div class="version_switcher_placeholder"></div>
+          </li>
+          <li>
+              
+              <a href="index.html">nepali_datetime 1.0.6 documentation</a> &#187;
+              
+          </li>
         <li class="nav-item nav-item-this"><a href="">Python Module Index</a></li>
-    <li class="right">
-        
+                <li class="right">
+                    
 
-    <div class="inline-search" style="display: none" role="search">
+    <div class="inline-search" role="search">
         <form class="inline-search" action="search.html" method="get">
-          <input placeholder="Quick search" type="text" name="q" />
+          <input placeholder="Quick search" aria-label="Quick search" type="text" name="q" />
           <input type="submit" value="Go" />
           <input type="hidden" name="check_keywords" value="yes" />
           <input type="hidden" name="area" value="default" />
         </form>
     </div>
-    <script type="text/javascript">$('.inline-search').show(0);</script>
-         |
-    </li>
-
+                     |
+                </li>
+            
       </ul>
     </div>    
 
@@ -118,29 +156,32 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="#" title="Python Module Index"
              >modules</a> |</li>
-    <li><img src="_static/py.png" alt=""
-             style="vertical-align: middle; margin-top: -1px"/></li>
-    <li><a href="https://www.python.org/">Python</a> &#187;</li>
-    
-    <a href="index.html">nepali_datetime 1.0.6 documentation</a> &#187;
-    
-
+          <li><img src="_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li>
+          <li><a href="https://www.python.org/">Python</a> &#187;</li>
+          <li class="switchers">
+            <div class="language_switcher_placeholder"></div>
+            <div class="version_switcher_placeholder"></div>
+          </li>
+          <li>
+              
+              <a href="index.html">nepali_datetime 1.0.6 documentation</a> &#187;
+              
+          </li>
         <li class="nav-item nav-item-this"><a href="">Python Module Index</a></li>
-    <li class="right">
-        
+                <li class="right">
+                    
 
-    <div class="inline-search" style="display: none" role="search">
+    <div class="inline-search" role="search">
         <form class="inline-search" action="search.html" method="get">
-          <input placeholder="Quick search" type="text" name="q" />
+          <input placeholder="Quick search" aria-label="Quick search" type="text" name="q" />
           <input type="submit" value="Go" />
           <input type="hidden" name="check_keywords" value="yes" />
           <input type="hidden" name="area" value="default" />
         </form>
     </div>
-    <script type="text/javascript">$('.inline-search').show(0);</script>
-         |
-    </li>
-
+                     |
+                </li>
+            
       </ul>
     </div>  
     <div class="footer">
@@ -162,7 +203,7 @@ <h3>Navigation</h3>
     
     <br />
 
-    Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
+    Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 4.0.2.
     </div>
 
   </body>
diff --git a/docs/html/search.html b/docs/html/search.html
index 913a01a..8766555 100644
--- a/docs/html/search.html
+++ b/docs/html/search.html
@@ -5,12 +5,13 @@
   <head>
     <meta charset="utf-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>Search &#8212; nepali_datetime 1.0.6 documentation</title>
-    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-    <link rel="stylesheet" href="_static/pydoctheme.css" type="text/css" />
+    <title>Search &#8212; nepali_datetime 1.0.6 documentation</title><meta name="viewport" content="width=device-width, initial-scale=1.0">
     
+    <link rel="stylesheet" type="text/css" href="_static/pygments.css" />
+    <link rel="stylesheet" type="text/css" href="_static/pydoctheme.css" />
     
-    <script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
+    
+    <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
     <script src="_static/jquery.js"></script>
     <script src="_static/underscore.js"></script>
     <script src="_static/doctools.js"></script>
@@ -20,15 +21,31 @@
     <link rel="index" title="Index" href="genindex.html" />
     <link rel="search" title="Search" href="#" />
   <script src="searchindex.js" defer></script>
-  
-    <link rel="shortcut icon" type="image/png" href="_static/py.png" />
-    
-    <script type="text/javascript" src="_static/copybutton.js"></script>
-    
-     
+  <link rel="shortcut icon" type="image/png" href="_static/py.svg" />
+            <script type="text/javascript" src="_static/copybutton.js"></script>
+            <script type="text/javascript" src="_static/menu.js"></script> 
 
-
-  </head><body>  
+  </head>
+<body>
+<div class="mobile-nav">
+    <input type="checkbox" id="menuToggler" class="toggler__input" aria-controls="navigation"
+           aria-pressed="false" aria-expanded="false" role="button" aria-label="Menu" />
+    <label for="menuToggler" class="toggler__label">
+        <span></span>
+    </label>
+    <nav class="nav-content" role="navigation">
+         <a href="https://www.python.org/" class="nav-logo">
+             <img src="_static/py.svg" alt="Logo"/>
+         </a>
+        <div class="version_switcher_placeholder"></div>
+    </nav>
+    <div class="menu-wrapper">
+        <nav class="menu" role="navigation" aria-label="main navigation">
+            <div class="language_switcher_placeholder"></div>
+        </nav>
+    </div>
+</div>
+  
     <div class="related" role="navigation" aria-label="related navigation">
       <h3>Navigation</h3>
       <ul>
@@ -38,15 +55,19 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="py-modindex.html" title="Python Module Index"
              >modules</a> |</li>
-    <li><img src="_static/py.png" alt=""
-             style="vertical-align: middle; margin-top: -1px"/></li>
-    <li><a href="https://www.python.org/">Python</a> &#187;</li>
-    
-    <a href="index.html">nepali_datetime 1.0.6 documentation</a> &#187;
-    
-
+          <li><img src="_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li>
+          <li><a href="https://www.python.org/">Python</a> &#187;</li>
+          <li class="switchers">
+            <div class="language_switcher_placeholder"></div>
+            <div class="version_switcher_placeholder"></div>
+          </li>
+          <li>
+              
+              <a href="index.html">nepali_datetime 1.0.6 documentation</a> &#187;
+              
+          </li>
         <li class="nav-item nav-item-this"><a href="">Search</a></li>
-
+            
       </ul>
     </div>    
 
@@ -56,6 +77,7 @@ <h3>Navigation</h3>
           <div class="body" role="main">
             
   <h1 id="search-documentation">Search</h1>
+  
   <div id="fallback" class="admonition warning">
   <script>$('#fallback').hide();</script>
   <p>
@@ -63,19 +85,26 @@ <h1 id="search-documentation">Search</h1>
     functionality.
   </p>
   </div>
+  
+  
   <p>
     Searching for multiple words only shows matches that contain
     all words.
   </p>
+  
+  
   <form action="" method="get">
     <input type="text" name="q" aria-labelledby="search-documentation" value="" />
     <input type="submit" value="search" />
     <span id="search-progress" style="padding-left: 10px"></span>
   </form>
   
+  
+  
   <div id="search-results">
   
   </div>
+  
 
             <div class="clearer"></div>
           </div>
@@ -96,15 +125,19 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="py-modindex.html" title="Python Module Index"
              >modules</a> |</li>
-    <li><img src="_static/py.png" alt=""
-             style="vertical-align: middle; margin-top: -1px"/></li>
-    <li><a href="https://www.python.org/">Python</a> &#187;</li>
-    
-    <a href="index.html">nepali_datetime 1.0.6 documentation</a> &#187;
-    
-
+          <li><img src="_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li>
+          <li><a href="https://www.python.org/">Python</a> &#187;</li>
+          <li class="switchers">
+            <div class="language_switcher_placeholder"></div>
+            <div class="version_switcher_placeholder"></div>
+          </li>
+          <li>
+              
+              <a href="index.html">nepali_datetime 1.0.6 documentation</a> &#187;
+              
+          </li>
         <li class="nav-item nav-item-this"><a href="">Search</a></li>
-
+            
       </ul>
     </div>  
     <div class="footer">
@@ -126,7 +159,7 @@ <h3>Navigation</h3>
     
     <br />
 
-    Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.4.1.
+    Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 4.0.2.
     </div>
 
   </body>
diff --git a/docs/html/searchindex.js b/docs/html/searchindex.js
index dc8cf9e..92ea8d4 100644
--- a/docs/html/searchindex.js
+++ b/docs/html/searchindex.js
@@ -1,1 +1,1 @@
-Search.setIndex({docnames:["index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,sphinx:56},filenames:["index.rst"],objects:{"":{nepali_datetime:[0,0,0,"-"]},"nepali_datetime.date":{__format__:[0,3,1,""],__str__:[0,3,1,""],calendar:[0,3,1,""],ctime:[0,3,1,""],day:[0,4,1,""],from_datetime_date:[0,3,1,""],isoformat:[0,3,1,""],max:[0,4,1,""],min:[0,4,1,""],month:[0,4,1,""],replace:[0,3,1,""],resolution:[0,4,1,""],strftime:[0,3,1,""],timetuple:[0,3,1,""],to_datetime_date:[0,3,1,""],today:[0,3,1,""],weekday:[0,3,1,""],year:[0,4,1,""]},"nepali_datetime.datetime":{__format__:[0,3,1,""],__str__:[0,3,1,""],date:[0,3,1,""],day:[0,4,1,""],hour:[0,4,1,""],isoformat:[0,3,1,""],max:[0,4,1,""],microsecond:[0,4,1,""],min:[0,4,1,""],minute:[0,4,1,""],month:[0,4,1,""],now:[0,3,1,""],replace:[0,3,1,""],resolution:[0,4,1,""],second:[0,4,1,""],strftime:[0,3,1,""],strptime:[0,3,1,""],time:[0,3,1,""],timetuple:[0,3,1,""],timetz:[0,3,1,""],today:[0,3,1,""],tzinfo:[0,4,1,""],tzname:[0,3,1,""],utcnow:[0,3,1,""],weekday:[0,3,1,""],year:[0,4,1,""]},nepali_datetime:{MAXYEAR:[0,1,1,""],MINYEAR:[0,1,1,""],NEPAL_TIME_UTC_OFFSET:[0,1,1,""],UTC0545:[0,2,1,""],date:[0,2,1,""],datetime:[0,2,1,""]}},objnames:{"0":["py","module","Python module"],"1":["py","data","Python data"],"2":["py","class","Python class"],"3":["py","method","Python method"],"4":["py","attribute","Python attribute"]},objtypes:{"0":"py:module","1":"py:data","2":"py:class","3":"py:method","4":"py:attribute"},terms:{"0000":0,"000000":0,"000001":0,"001":[],"002":[],"0330":0,"0400":0,"1000":0,"10000":0,"1000000":0,"10000th":0,"1030":0,"138":[],"138th":[],"1975":0,"1976":0,"1988":[],"1989":0,"1999":0,"1st":0,"2002":0,"2005":0,"2006":0,"2007":0,"2018":0,"2020":[],"2021":[],"2050":0,"2051":0,"2075":0,"2077":0,"2078":0,"2099":0,"2100":0,"303":0,"30pm":0,"325":[],"3600":0,"366":[],"79043":0,"79060":0,"8601":0,"9999":0,"999999":0,"\u0905\u0938":0,"\u0906\u0907\u0924\u092c":0,"\u0906\u0936":0,"\u0915":0,"\u0916":0,"\u0917":0,"\u0918":0,"\u091a":0,"\u091c":0,"\u0920":0,"\u0923":0,"\u0924":0,"\u0928":0,"\u092a":0,"\u092b":0,"\u092c":0,"\u092d\u0926":0,"\u092e":0,"\u092e\u092c":0,"\u0930":0,"\u0932":0,"\u0935":0,"\u0935\u0923":0,"\u0936":0,"\u0936\u0928":0,"\u0937":0,"\u0938":0,"\u0966\u0966":0,"\u0966\u0967":0,"\u0966\u0968":0,"\u0967\u0968":0,"\u0967\u096f\u096d\u096b":0,"\u0967\u096f\u096d\u096c":0,"\u0968\u0966\u0968\u0966":[],"\u0968\u0966\u0968\u0967":[],"\u0968\u0966\u096f\u096f":0,"\u0968\u0967\u0966\u0966":0,"\u0969\u0968":0,"\u096f\u096f":0,"case":0,"class":0,"default":0,"export":0,"function":0,"import":0,"new":0,"return":0,"true":0,For:0,Jes:0,The:0,Using:0,__format__:0,__str__:0,abbrevi:0,about:0,abs:0,accept:0,accord:0,across:[],act:0,added:0,addit:0,address:0,adjust:0,affect:0,after:0,afterward:0,all:0,allow:0,also:0,although:0,alwai:0,ani:[],anywai:0,appropri:[],argument:0,asa:[],ash:[],assum:0,assumpt:0,astimezon:[],attempt:0,attribut:0,awar:0,back:0,backward:0,bai:0,baishak:0,baishakh:0,base:0,becaus:0,behavior:[],between:0,bhadau:0,bhadra:[],bikram:[],both:0,broadli:0,calcul:[],calendar:0,call:0,can:0,cannot:0,care:0,centuri:0,cha:0,chaith:[],chaitra:0,chanc:0,chang:[],charact:0,classmethod:0,clock:0,code:0,combin:0,common:0,compar:0,comparand:0,comparison:0,complet:0,complex:0,comput:0,conform:0,consid:0,constant:0,constructor:0,consult:[],contain:0,control:0,convers:0,convert:0,correspond:0,could:[],count:0,creat:0,cst:0,ctime:0,current:0,dai:0,data:0,date1:0,date2:0,date_str:0,datetime1:0,datetime2:0,daylight:[],decim:0,def:[],defin:0,depend:0,determin:[],differ:0,digit:0,direct:0,dispali:0,document:[],doe:0,doesn:0,done:0,dst:0,dstoff:[],dston:[],dt1:[],dt2:[],dt3:[],durat:0,earliest:0,effect:0,either:0,els:0,empti:0,encod:[],end:[],equal:0,equival:0,est:0,eucjp:[],even:0,event:0,everi:0,exact:0,exactli:0,exampl:0,except:0,explicit:0,explicitli:0,extend:0,extens:0,falgun:0,fall:0,fals:0,field:0,fill:0,first:0,flag:0,fmt:0,follow:0,form:0,format:0,forward:0,fri:0,from:0,from_datetime_d:0,fromordin:0,fromtimestamp:0,fromutc:[],full:0,get:[],getlocal:[],gettimeofdai:0,give:0,given:0,gmt1:[],gmt2:[],gmt:0,going:0,gotten:0,gregorian:0,has:0,have:0,hhmm:0,highli:0,highlight:0,hook:0,hour:0,howev:0,ideal:0,ignor:0,implement:0,inclus:0,inform:0,input:0,instanc:0,instead:0,integ:0,invok:0,isn:0,iso:0,isocalendar:[],isoformat:0,isol:0,isoweekdai:0,ja_jp:[],januari:[],jestha:0,justifi:0,keyword:0,kind:0,larger:0,largest:0,last:[],latest:0,latter:0,leap:0,left:0,less:0,librari:[],like:0,list:0,liter:[],local:0,localtim:0,magh:0,mai:0,make:0,manipul:0,march:[],max:0,maxyear:0,maxyear_last_months_last_dai:0,mean:0,method:0,microsecond:0,min:0,minut:0,minyear:0,mix:0,mktime:0,modul:0,mon:0,mondai:0,month:0,more:0,motiv:0,move:0,must:0,my_birthdai:0,naiv:0,name:0,nativ:0,ndt:0,nepal:[],nepal_time_utc_offset:0,nepali:0,nepalidatetim:0,never:0,non:0,none:0,normal:0,note:0,notimpl:0,now:0,number:0,obtain:0,octob:[],offset:0,one:0,onli:0,oper:0,operand:0,option:0,order:0,ordin:[],other:0,otherwis:0,output:0,outsid:0,overflow:0,overflowerror:0,overrid:0,pad:0,paramet:0,pars:0,pass:0,platform:0,possibl:0,preced:0,precis:0,previou:[],print:[],produc:0,provid:0,python3:0,python:[],quit:0,rais:0,rang:0,read:0,refer:0,remain:0,remov:0,replac:0,repres:0,represent:0,requir:0,resolut:0,respect:0,restrict:0,result:0,right:0,sambat:[],same:0,sat:0,saturdai:0,save:[],scheme:0,second:0,see:0,self:0,sep:0,separ:0,set:0,should:0,simpl:0,sinc:[],singl:0,six:0,sji:[],smaller:0,smallest:0,speak:0,specifi:0,standard:0,start:0,stop:0,str:0,strftime:[],string:0,strptime:[],struct_tim:0,subclass:0,substitut:0,subtract:0,sun:0,sundai:0,suppli:0,support:0,taken:0,than:0,thei:0,them:0,therefor:0,thi:0,those:0,through:0,thu:0,time_to_birthdai:0,timedelta:0,timestamp:0,timetupl:0,timetz:0,timezon:0,tm_isdst:0,to_datetime_d:0,todai:0,toordin:0,top:[],transform:0,tue:0,tuesdai:0,tupl:0,typeerror:0,tzinfo:0,tzname:0,under:0,unicod:0,unless:0,unlik:0,use:[],used:0,using:0,utc0545:0,utc:0,utcfromtimestamp:[],utcnow:0,utcoffset:0,utctimetupl:[],utf:[],valu:0,valueerror:0,vari:0,variat:[],version:0,versu:0,view:0,wai:0,wed:0,week:0,weekdai:0,were:0,when:0,where:0,which:0,whichev:0,wider:0,width:0,within:0,without:0,word:0,work:0,would:0,ydai:0,year:0,your:[],yyyi:0,zero:0,zone:0},titles:["<code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">nepali_datetime</span></code> \u2014 Bikram Sambat Date and Nepal Time types"],titleterms:{avail:0,basic:[],behavior:0,bikram:0,date:0,datetim:0,nepal:0,nepali_d:[],nepali_datetim:0,object:0,oper:[],sambat:0,strftime:0,strptime:0,time:0,type:0,utc0545:[]}})
\ No newline at end of file
+Search.setIndex({docnames:["index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["index.rst"],objects:{"":{nepali_datetime:[0,0,0,"-"]},"nepali_datetime.date":{__format__:[0,3,1,""],__str__:[0,3,1,""],calendar:[0,3,1,""],ctime:[0,3,1,""],day:[0,4,1,""],from_datetime_date:[0,3,1,""],isoformat:[0,3,1,""],max:[0,4,1,""],min:[0,4,1,""],month:[0,4,1,""],replace:[0,3,1,""],resolution:[0,4,1,""],strftime:[0,3,1,""],timetuple:[0,3,1,""],to_datetime_date:[0,3,1,""],today:[0,3,1,""],weekday:[0,3,1,""],year:[0,4,1,""]},"nepali_datetime.datetime":{__format__:[0,3,1,""],__str__:[0,3,1,""],date:[0,3,1,""],day:[0,4,1,""],hour:[0,4,1,""],isoformat:[0,3,1,""],max:[0,4,1,""],microsecond:[0,4,1,""],min:[0,4,1,""],minute:[0,4,1,""],month:[0,4,1,""],now:[0,3,1,""],replace:[0,3,1,""],resolution:[0,4,1,""],second:[0,4,1,""],strftime:[0,3,1,""],strptime:[0,3,1,""],time:[0,3,1,""],timetuple:[0,3,1,""],timetz:[0,3,1,""],today:[0,3,1,""],tzinfo:[0,4,1,""],tzname:[0,3,1,""],utcnow:[0,3,1,""],weekday:[0,3,1,""],year:[0,4,1,""]},nepali_datetime:{MAXYEAR:[0,1,1,""],MINYEAR:[0,1,1,""],NEPAL_TIME_UTC_OFFSET:[0,1,1,""],UTC0545:[0,2,1,""],date:[0,2,1,""],datetime:[0,2,1,""]}},objnames:{"0":["py","module","Python module"],"1":["py","data","Python data"],"2":["py","class","Python class"],"3":["py","method","Python method"],"4":["py","attribute","Python attribute"]},objtypes:{"0":"py:module","1":"py:data","2":"py:class","3":"py:method","4":"py:attribute"},terms:{"0":0,"00":0,"0000":0,"000000":0,"000001":0,"01":0,"02":0,"0330":0,"04":0,"0400":0,"05":0,"06":0,"1":0,"10":0,"1000":0,"10000":0,"1000000":0,"10000th":0,"1030":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"1975":0,"1976":0,"1989":0,"1990":0,"1999":0,"1st":0,"2":0,"20":0,"2000":0,"2002":0,"2005":0,"2006":0,"2007":0,"2018":0,"2050":0,"2051":0,"2075":0,"2077":0,"2078":0,"2089":0,"2099":0,"21":0,"2100":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"3":0,"30":0,"303":0,"30pm":0,"32":0,"3600":0,"4":0,"43":0,"45":0,"5":0,"59":0,"6":0,"60":0,"7":0,"79043":0,"79060":0,"8":0,"8601":0,"89":0,"9":0,"90":0,"99":0,"9999":0,"999999":0,"\u0905\u0938":0,"\u0906\u0907\u0924\u092c":0,"\u0906\u0936":0,"\u0915":0,"\u0916":0,"\u0917":0,"\u0918":0,"\u091a":0,"\u091c":0,"\u0920":0,"\u0923":0,"\u0924":0,"\u0928":0,"\u092a":0,"\u092b":0,"\u092c":0,"\u092d\u0926":0,"\u092e":0,"\u092e\u092c":0,"\u0930":0,"\u0932":0,"\u0935":0,"\u0935\u0923":0,"\u0936":0,"\u0936\u0928":0,"\u0937":0,"\u0938":0,"\u0966\u0966":0,"\u0966\u0967":0,"\u0966\u0968":0,"\u0967\u0968":0,"\u0967\u096f\u096d\u096b":0,"\u0967\u096f\u096d\u096c":0,"\u0968\u0966\u096f\u096f":0,"\u0968\u0967\u0966\u0966":0,"\u0968\u0969":0,"\u0969\u0968":0,"\u096b\u096f":0,"\u096f\u096f":0,"case":0,"class":0,"default":0,"export":0,"function":0,"import":0,"new":0,"return":0,"true":0,A:0,As:0,For:0,If:0,In:0,No:0,The:0,__format__:0,__str__:0,ab:0,abbrevi:0,about:0,accept:0,accord:0,act:0,ad:0,addit:0,address:0,adjust:0,affect:0,after:0,afterward:0,all:0,allow:0,also:0,although:0,alwai:0,am:0,an:0,anywai:0,ar:0,argument:0,assum:0,assumpt:0,attempt:0,attribut:0,awar:0,b:0,back:0,backward:0,bai:0,baishak:0,baishakh:0,base:0,becaus:0,between:0,bhadau:0,both:0,broadli:0,c:0,calendar:0,call:0,can:0,cannot:0,care:0,centuri:0,cha:0,chaitra:0,chanc:0,charact:0,classmethod:0,clock:0,code:0,combin:0,common:0,compar:0,comparand:0,comparison:0,complet:0,complex:0,comput:0,conform:0,consid:0,constant:0,constructor:0,contain:0,control:0,convers:0,convert:0,correspond:0,count:0,creat:0,cst:0,ctime:0,current:0,d:0,dai:0,data:0,date1:0,date2:0,date_str:0,datetime1:0,datetime2:0,dd:0,decim:0,defin:0,depend:0,differ:0,digit:0,direct:0,dispali:0,doe:0,doesn:0,done:0,dst:0,dt:0,durat:0,earliest:0,effect:0,either:0,els:0,empti:0,equal:0,equival:0,est:0,even:0,event:0,everi:0,exact:0,exactli:0,exampl:0,except:0,explicit:0,explicitli:0,extend:0,extens:0,f:0,falgun:0,fall:0,fals:0,field:0,fill:0,first:0,flag:0,fmt:0,follow:0,form:0,format:0,forward:0,fri:0,from:0,from_datetime_d:0,fromordin:0,fromtimestamp:0,full:0,g:0,gettimeofdai:0,give:0,given:0,gmt:0,go:0,gotten:0,gregorian:0,h:0,ha:0,have:0,hh:0,hhmm:0,highli:0,highlight:0,hook:0,hour:0,howev:0,i:0,ideal:0,ignor:0,implement:0,inclus:0,inform:0,input:0,instanc:0,instead:0,integ:0,invok:0,isn:0,iso:0,isoformat:0,isol:0,isoweekdai:0,je:0,jestha:0,justifi:0,k:0,keyword:0,kind:0,l:0,larger:0,largest:0,latest:0,latter:0,lead:0,leap:0,left:0,less:0,like:0,list:0,local:0,localtim:0,m:0,magh:0,mai:0,make:0,manipul:0,max:0,maxyear:0,maxyear_last_months_last_dai:0,mean:0,method:0,microsecond:0,min:0,minut:0,minyear:0,mix:0,mktime:0,mm:0,modul:0,mon:0,mondai:0,month:0,more:0,motiv:0,move:0,must:0,my_birthdai:0,n:0,naiv:0,name:0,nativ:0,ndt:0,nepal_time_utc_offset:0,nepali:0,nepalidatetim:0,never:0,non:0,none:0,normal:0,note:0,notimpl:0,now:0,number:0,obtain:0,offset:0,one:0,onli:0,oper:0,operand:0,option:0,order:0,other:0,otherwis:0,output:0,outsid:0,overflow:0,overflowerror:0,overrid:0,p:0,pad:0,paramet:0,pars:0,pass:0,permit:0,platform:0,pm:0,possibl:0,preced:0,precis:0,produc:0,provid:0,python3:0,quit:0,rais:0,rang:0,re:0,read:0,refer:0,remain:0,remov:0,replac:0,repres:0,represent:0,requir:0,resolut:0,respect:0,restrict:0,result:0,right:0,s:0,same:0,sat:0,saturdai:0,scheme:0,second:0,see:0,self:0,sep:0,separ:0,set:0,shall:0,should:0,simpl:0,singl:0,six:0,smaller:0,smallest:0,so:0,speak:0,specifi:0,standard:0,start:0,stop:0,str:0,string:0,struct_tim:0,subclass:0,substitut:0,subtract:0,sun:0,sundai:0,suppli:0,support:0,t:0,taken:0,than:0,thei:0,them:0,therefor:0,thi:0,those:0,through:0,thu:0,time_to_birthdai:0,timedelta:0,timestamp:0,timetupl:0,timetz:0,timezon:0,tm_isdst:0,to_datetime_d:0,todai:0,toordin:0,transform:0,tue:0,tuesdai:0,tupl:0,typeerror:0,tz:0,tzinfo:0,tzname:0,under:0,unicod:0,unless:0,unlik:0,us:0,utc0545:0,utc:0,utcnow:0,utcoffset:0,valu:0,valueerror:0,vari:0,version:0,versu:0,view:0,w:0,wa:0,wai:0,wed:0,week:0,weekdai:0,were:0,when:0,where:0,which:0,whichev:0,wider:0,width:0,within:0,without:0,word:0,work:0,would:0,y:0,ydai:0,year:0,yyyi:0,z:0,zero:0,zone:0},titles:["<code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">nepali_datetime</span></code> \u2014 Bikram Sambat Date and Nepal Time types"],titleterms:{avail:0,behavior:0,bikram:0,date:0,datetim:0,nepal:0,nepali_datetim:0,object:0,sambat:0,strftime:0,strptime:0,time:0,type:0}})
\ No newline at end of file
diff --git a/docs/source/index.rst b/docs/source/index.rst
index 70fba15..fe26da3 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -660,7 +660,7 @@ Directives   Meaning                          Example                  Notes
 ``%n``       Month as a zero-padded           ०१, ०२,..., १२               
              decimal number.                            
 
-``%y``       Year without century as a        00, 01, ..., 99               
+``%y``       Year without century as a        00, 01, ..., 99          \(7)     
              zero-padded decimal number.
 
 ``%k``       Year without century as a        ००, ०१, ..., ९९               
@@ -676,19 +676,35 @@ Directives   Meaning                          Example                  Notes
 
 ``%H``       Hour (24-hour clock) as a        00, 01, ..., 23               
              zero-padded decimal number.
+
+``%h``       Hour (24-hour clock) as a        ००, ०१, ..., २३               
+             zero-padded decimal number
+             in Nepali unicode.
                      
 ``%I``       Hour (12-hour clock) as a        01, 02, ..., 12               
              zero-padded decimal number.                          
 
+``%i``       Hour (12-hour clock) as a        ०१, ०२, ..., १२               
+             zero-padded decimal number
+             in Nepali unicode.
+
 ``%p``       Locale's equivalent of either    AM, PM                   \(1)
              AM or PM.                                                     
 
 ``%M``       Minute as a zero-padded          00, 01, ..., 59               
              decimal number.                                               
 
+``%l``       Minute as a zero-padded          ००, ०१, ..., ५९               
+             decimal number in Nepali
+             unicode.                                               
+
 ``%S``       Second as a zero-padded          00, 01, ..., 59          \(4)  
              decimal number.                                               
 
+``%s``       Second as a zero-padded          ००, ०१, ..., ५९          \(4)  
+             decimal number in Nepali
+             unicode.                     
+
 ``%f``       Microsecond as a decimal         000000, 000001, ...,     \(5)  
              number, zero-padded on the       999999                        
              left.                                                         
@@ -753,3 +769,9 @@ Notes:
       When the ``%z`` directive is provided to the :meth:`strptime` method, an
       aware :class:`.datetime` object will be produced.  The ``tzinfo`` of the
       result will be set to a :class:`timezone` instance.
+
+(7)
+   The year within century. When a century is not otherwise specified, values in 
+   the range [90,99] shall refer to years 1990 to 1999 inclusive, and values in 
+   the range [00,89] shall refer to years 2000 to 2089 inclusive; leading zeros 
+   shall be permitted but shall not be required.
diff --git a/license.txt b/license.txt
index f7cd45a..46c9ca0 100644
--- a/license.txt
+++ b/license.txt
@@ -1,5 +1,5 @@
 The MIT License (MIT)
-Copyright © 2020 AMIT GARU
+Copyright © 2021 AMIT GARU
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the “Software”), to deal
diff --git a/nepali_datetime/__init__.py b/nepali_datetime/__init__.py
index 19bd9ff..9e06a29 100644
--- a/nepali_datetime/__init__.py
+++ b/nepali_datetime/__init__.py
@@ -5,7 +5,7 @@
 
 Supports >= Python3.5
 """
-__version__ = "1.0.6"
+__version__ = "1.0.7"
 
 __author__ = "Amit Garu <amitgaru2@gmail.com>"
 
@@ -30,7 +30,8 @@
 _DAYNAMES = (None, "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")
 _FULLDAYNAMES = (None, "Monday", "Tueday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday")
 _FULLDAYNAMES_NP = (None, "सोमबार", "मंगलबार", "बुधवार", "बिहिबार", "शुक्रबार", "शनिबार", "आइतबार")
-_DAY_NP = "०१२३४५६७८९"
+_DIGIT_NP = "०१२३४५६७८९"
+_EPOCH = _actual_datetime.datetime(1970, 1, 1, tzinfo=_actual_datetime.timezone.utc)
 
 _STRFTIME_CUSTOM_MAP = {
     'a': lambda o: '%s' % _DAYNAMES[(o.weekday() % 7) or 7],
@@ -38,21 +39,25 @@
     'G': lambda o: '%s' % _FULLDAYNAMES_NP[(o.weekday() % 7) or 7],
     'w': lambda o: '%d' % o.weekday(),
     'd': lambda o: '%02d' % o.day,
-    'D': lambda o: ''.join(_DAY_NP[int(i)] for i in '%02d' % o.day),
+    'D': lambda o: ''.join(_DIGIT_NP[int(i)] for i in '%02d' % o.day),
     'b': lambda o: '%s' % _MONTHNAMES[o.month],
     'B': lambda o: '%s' % _FULLMONTHNAMES[o.month],
     'N': lambda o: '%s' % _MONTHNAMES_NP[o.month],
     'm': lambda o: '%02d' % o.month,
-    'n': lambda o: ''.join(_DAY_NP[int(i)] for i in '%02d' % o.month),
+    'n': lambda o: ''.join(_DIGIT_NP[int(i)] for i in '%02d' % o.month),
     'y': lambda o: '%02d' % (o.year % 100),
     'Y': lambda o: '%d' % o.year,
-    'k': lambda o: ''.join(_DAY_NP[int(i)] for i in '%02d' % (o.year % 100)),
-    'K': lambda o: ''.join(_DAY_NP[int(i)] for i in '%d' % o.year),
+    'k': lambda o: ''.join(_DIGIT_NP[int(i)] for i in '%02d' % (o.year % 100)),
+    'K': lambda o: ''.join(_DIGIT_NP[int(i)] for i in '%d' % o.year),
     'H': lambda o: '%02d' % getattr(o, 'hour', 0),
+    'h': lambda o: ''.join(_DIGIT_NP[int(i)] for i in '%02d' % getattr(o, 'hour', 0)),
     'I': lambda o: '%02d' % (getattr(o, 'hour', 0) % 12,),
+    'i': lambda o: ''.join(_DIGIT_NP[int(i)] for i in '%02d' % (getattr(o, 'hour', 0) % 12,)),
     'p': lambda o: 'AM' if getattr(o, 'hour', 0) < 12 else 'PM',
     'M': lambda o: '%02d' % getattr(o, 'minute', 0),
+    'l': lambda o: ''.join(_DIGIT_NP[int(i)] for i in '%02d' % getattr(o, 'minute', 0)),
     'S': lambda o: '%02d' % getattr(o, 'second', 0),
+    's': lambda o: ''.join(_DIGIT_NP[int(i)] for i in '%02d' % getattr(o, 'second', 0)),
 }
 
 _CALENDAR = {}
@@ -297,8 +302,8 @@ def tzname(self, dt):
     def fromutc(self, dt):
         """datetime in UTC -> datetime in local time."""
 
-        if not isinstance(dt, datetime):
-            raise TypeError("fromutc() requires a nepali_datetime.datetime argument")
+        if not isinstance(dt, datetime) and not isinstance(dt, _actual_datetime.datetime):
+            raise TypeError("fromutc() requires a nepali_datetime.datetime or datetime.datetime argument")
         if dt.tzinfo is not self:
             raise ValueError("dt.tzinfo is not self")
 
@@ -712,9 +717,74 @@ def timetuple(self):
             dst
         )
 
+    @classmethod
+    def from_datetime_datetime(cls, from_datetime):
+        """Convert datetime.date to nepali_datetime.datetime (A.D datetime to B.S).
+
+        Parameters
+        ----------
+        from_date: datetime.datetime
+            The AD datetime object to be converted.
+
+        Returns
+        -------
+        nepali_datetime.datetime
+            The converted nepali_datetime.datetime object.
+        """
+        from_datetime = from_datetime.astimezone(UTC0545())
+        return cls.combine(cls.from_datetime_date(from_datetime.date()), from_datetime.time())
+
+    def to_datetime_datetime(self):
+        """Convert nepali_datetime.datetime to datetime.datetime (B.S datetime to A.D).
+
+        Returns
+        -------
+        datetime.datetime
+            The converted datetime.datetime object.
+        """
+        return _actual_datetime.datetime.fromtimestamp(self.timestamp())
+
+    def _mktime(self):
+        """Return integer POSIX timestamp."""
+        max_fold_seconds = 24 * 3600
+        t = (self - _EPOCH_BS) // _actual_datetime.timedelta(0, 1)
+
+        def local(u):
+            y, m, d, hh, mm, ss = _time.localtime(u)[:6]
+            return (datetime(y, m, d, hh, mm, ss) - _EPOCH_BS) // _actual_datetime.timedelta(0, 1)
+
+        # Our goal is to solve t = local(u) for u.
+        a = local(t) - t
+        u1 = t - a
+        t1 = local(u1)
+        if t1 == t:
+            # We found one solution, but it may not be the one we need.
+            # Look for an earlier solution (if `fold` is 0), or a
+            # later one (if `fold` is 1).
+            u2 = u1 + (-max_fold_seconds, max_fold_seconds)[self.fold]
+            b = local(u2) - u2
+            if a == b:
+                return u1
+        else:
+            b = t1 - u1
+            assert a != b
+        u2 = t - b
+        t2 = local(u2)
+        if t2 == t:
+            return u2
+        if t1 == t:
+            return u1
+        # We have found both offsets a and b, but neither t - a nor t - b is
+        # a solution.  This means t is in the gap.
+        return (max, min)[self.fold](u1, u2)
+
     def timestamp(self):
         """Return POSIX timestamp as float"""
-        return NotImplemented
+        if self._tzinfo is None:
+            s = self._mktime()
+            return s + self.microsecond / 1e6
+        else:
+            return (self - _EPOCH_BS).total_seconds()
 
     def utctimetuple(self):
         """Return UTC time tuple compatible with time.gmtime()."""
@@ -759,7 +829,27 @@ def replace(self, year=None, month=None, day=None, hour=None,
         return datetime(year, month, day, hour, minute, second, microsecond, tzinfo)
 
     def astimezone(self, tz=None):
-        return NotImplemented
+        if tz is None:
+            tz = UTC0545()
+        elif not isinstance(tz, _actual_datetime.tzinfo):
+            raise TypeError("tz argument must be an instance of tzinfo")
+
+        mytz = self.tzinfo
+        if mytz is None:
+            mytz = self._local_timezone()
+            myoffset = mytz.utcoffset(self)
+        else:
+            myoffset = mytz.utcoffset(self)
+            if myoffset is None:
+                mytz = self.replace(tzinfo=None)._local_timezone()
+                myoffset = mytz.utcoffset(self)
+
+        if tz is mytz:
+            return self
+
+        utc = (self - myoffset).replace(tzinfo=tz)
+
+        return tz.fromutc(utc)
 
     def ctime(self):
         """Return ctime() style string."""
@@ -995,3 +1085,5 @@ def __reduce__(self):
 datetime.min = datetime(1975, 1, 1)
 datetime.max = datetime(2100, 12, 30, 23, 59, 59, 999999)
 datetime.resolution = _actual_datetime.timedelta(microseconds=1)
+
+_EPOCH_BS = datetime.from_datetime_datetime(_actual_datetime.datetime(1970, 1, 1, tzinfo=_actual_datetime.timezone.utc))
diff --git a/nepali_datetime/_custom_strptime.py b/nepali_datetime/_custom_strptime.py
index cee18ba..ee0adfd 100644
--- a/nepali_datetime/_custom_strptime.py
+++ b/nepali_datetime/_custom_strptime.py
@@ -170,7 +170,7 @@ def _strptime(data_string, format="%a %b %d %H:%M:%S %Y"):
             # Open Group specification for strptime() states that a %y
             # value in the range of [00, 68] is in the century 2000, while
             # [69,99] is in the century 1900
-            if year <= 68:
+            if year <= 89:
                 year += 2000
             else:
                 year += 1900
diff --git a/setup.py b/setup.py
index 72710dc..80694f4 100644
--- a/setup.py
+++ b/setup.py
@@ -5,8 +5,8 @@
 
 setup(
     name="nepali-datetime",
-    version="1.0.6",
-    description="Datetime module that operates on Bikram Sambat date & Nepal time.",
+    version="1.0.7",
+    description="Datetime module that operates on top of Bikram Sambat Date & Nepal Time.",
     long_description=README,
     long_description_content_type="text/markdown",
     url="https://github.com/dxillar/nepali-datetime",


Test patch:
diff --git a/tests/test_methods.py b/tests/test_methods.py
index 2adf615..ab8e615 100644
--- a/tests/test_methods.py
+++ b/tests/test_methods.py
@@ -57,3 +57,8 @@ def test_utcnow(self):
         assert dt.day == utc_545.day
         assert dt.hour == utc_545.hour
         assert dt.minute == utc_545.minute
+
+    def test_timestamp(self):
+        dt = nepali_datetime.datetime(2078, 2, 23)
+        ad_dt = datetime.datetime(2021, 6, 6, tzinfo=nepali_datetime.UTC0545())
+        assert dt.timestamp() == ad_dt.timestamp()
diff --git a/tests/test_strftime_strptime.py b/tests/test_strftime_strptime.py
index b7e8c14..5b4f437 100644
--- a/tests/test_strftime_strptime.py
+++ b/tests/test_strftime_strptime.py
@@ -26,3 +26,8 @@ def test_strptime_date(self):
     def test_strptime_datetime(self):
         assert nepali_datetime.datetime.strptime("Asar 23 2025 10:00:00",
                                                  "%B %d %Y %H:%M:%S") == nepali_datetime.datetime(2025, 3, 23, 10, 0, 0)
+
+    def test_strptime_year_special_case(self):
+        assert nepali_datetime.datetime.strptime("89", "%y") == nepali_datetime.datetime(2089, 1, 1)
+        assert nepali_datetime.datetime.strptime("90", "%y") == nepali_datetime.datetime(1990, 1, 1)
+        assert nepali_datetime.datetime.strptime("00", "%y") == nepali_datetime.datetime(2000, 1, 1)