Team:Virtus-Parva Mexico/Team

From 2014.igem.org

(Difference between revisions)
(Prototype team page)
Line 1: Line 1:
{{CSS/Main}}
{{CSS/Main}}
-
 
<html>
<html>
-
<!--main content -->
 
-
<table width="70%" align="center">
 
 +
<!-- this section changes the default wiki template to a
 +
white full width background -->
-
<!--welcome box -->
+
<style>
-
<tr>
+
#contentSub, #footer-box, #catlinks, #search-controls, #p-logo, .printfooter, .firstHeading,.visualClear {display: none;} /*-- hides default wiki settings --*/
-
<td style="border:1px solid black;" colspan="3" align="center" height="150px" bgColor=#FF404B>
+
</style>
-
<h1 >WELCOME TO iGEM 2014! </h1>
+
-
<p>Your team has been approved and you are ready to start the iGEM season!
+
-
<br>On this page you can document your project, introduce your team members, document your progress <br> and share your iGEM experience with the rest of the world! </p>
+
-
<br>
+
-
<p style="color:#E7E7E7"> <a href="https://2014.igem.org/wiki/index.php?title=Team:Virtus-Parva_Mexico/Team&action=edit"style="color:#FFFFFF"> Click here  to edit this page!</a> </p>
+
-
</td>
+
-
</tr>
+
-
<tr> <td colspan="3"  height="5px"> </td></tr>
+
<!-- here ends the section that changes the default wiki
-
<!-- end welcome box -->
+
-
<tr>
+
-
<!--navigation menu -->
+
template to a white full width background -->
-
<td align="center" colspan="3">
+
-
<table  width="100%">
+
</html>
-
<tr heigth="15px"></tr>
+
-
<tr heigth="75px">  
+
 +
{{Team:VirtusParva/MainCss}}
-
<td style="border:1px solid black;" align="center" height ="45px" onMouseOver="this.bgColor='#d3d3d3'" onMouseOut="this.bgColor='#e7e7e7'" bgColor=#e7e7e7>
+
<html>
-
<a href="https://2014.igem.org/Team:Virtus-Parva_Mexico"style="color:#000000">Home </a> </td>
+
<!-- beginning of your page -->
-
<td style="border:1px solid black;" align="center" height ="45px" onMouseOver="this.bgColor='#d3d3d3'" onMouseOut="this.bgColor='#e7e7e7'" bgColor=#e7e7e7>
+
<body>
-
<a href="https://2014.igem.org/Team:Virtus-Parva_Mexico/Team"style="color:#000000"> Team </a> </td>
+
-
<td style="border:1px solid black;" align="center"  height ="45px"  onMouseOver="this.bgColor='#d3d3d3'" onMouseOut="this.bgColor='#e7e7e7'" bgColor=#e7e7e7>  
+
    <!-- Begin Cover -->
-
<a href="https://igem.org/Team.cgi?year=2014&team_name=Virtus-Parva_Mexico"style="color:#000000"> Official Team Profile </a></td>
+
    <div class="site-wrapper">
-
<td style="border:1px solid black" align="center"  height ="45px" onMouseOver="this.bgColor='#d3d3d3'" onMouseOut="this.bgColor='#e7e7e7'" bgColor=#e7e7e7> 
 
-
<a href="https://2014.igem.org/Team:Virtus-Parva_Mexico/Project"style="color:#000000"> Project</a></td>
 
-
<td style="border:1px solid black;" align="center" height ="45px" onMouseOver="this.bgColor='#d3d3d3'" onMouseOut="this.bgColor='#e7e7e7'" bgColor=#e7e7e7>  
+
        <nav class="navbar navbar-default navbar-fixed-top" role="banner">
-
<a href="https://2014.igem.org/Team:Virtus-Parva_Mexico/Parts"style="color:#000000"> Parts</a></td>
+
            <div class="container">
 +
                <div class="navbar-header">
 +
                    <button class="navbar-toggle" type="button" data-toggle="collapse" data-target=".navbar-collapse">
 +
                        <span class="sr-only">Toggle navigation</span>
 +
                        <span class="icon-bar"></span>
 +
                        <span class="icon-bar"></span>
 +
                        <span class="icon-bar"></span>
 +
                    </button>
 +
                    <a href="https://2014.igem.org/Team:Virtus-Parva_Mexico" class="navbar-brand">
 +
                        <img src="https://static.igem.org/mediawiki/2014/f/f6/Para_boton.jpg" alt="Virtus Parva Home" height="20px" width="150px"></a>
 +
                </div>
 +
                <nav class="collapse navbar-collapse" role="navigation">
 +
                    <ul class="nav navbar-nav">
 +
                        <li>
 +
                            <a href="https://2014.igem.org/Team:Virtus-Parva_Mexico/Project">Project</a>
 +
                        </li>
 +
                        <li>
 +
                            <a href="https://2014.igem.org/Team:Virtus-Parva_Mexico/Parts">Outcomes</a>
 +
                        </li>
 +
                        <li>
 +
                            <a href="https://2014.igem.org/Team:Virtus-Parva_Mexico/Team">Our Team</a>
 +
                        </li>
 +
                        <li>
 +
                            <a href="https://2014.igem.org/Team:Virtus-Parva_Mexico/Safety">Safety</a>
 +
                        </li>
 +
                        <li>
 +
                            <a href="https://2014.igem.org/Team:Virtus-Parva_Mexico/Attributions">Human Practices</a>
 +
                        </li>
 +
                    </ul>
 +
                </nav>
 +
            </div>
 +
        </nav>
-
<td style="border:1px solid black;" align="center" height ="45px" onMouseOver="this.bgColor='#d3d3d3'" onMouseOut="this.bgColor='#e7e7e7'" bgColor=#e7e7e7>  
+
    <div id="masthead">
-
<a href="https://2014.igem.org/Team:Virtus-Parva_Mexico/Modeling"style="color:#000000"> Modeling</a></td>
+
        <div class="container">
 +
            <div class="row">
 +
                <div class="col-md-7">
 +
                    <h1>Team
 +
         
 +
                        <p class="lead"><i>The Next Generation in Molecular Machinery</i>  
 +
</p>
 +
                    </h1>
 +
                </div>
-
<td style="border:1px solid black;" align="center" height ="45px" onMouseOver="this.bgColor='#d3d3d3'" onMouseOut="this.bgColor='#e7e7e7'" bgColor=#e7e7e7>
+
            </div>
-
<a href="https://2014.igem.org/Team:Virtus-Parva_Mexico/Notebook"style="color:#000000"> Notebook</a></td>
+
        </div>
 +
        <!--/container-->
 +
    </div>
 +
    <!--/masthead-->
-
<td style="border:1px solid black;" align="center" height ="45px" onMouseOver="this.bgColor='#d3d3d3'" onMouseOut="this.bgColor='#e7e7e7'" bgColor=#e7e7e7>  
+
    <!--main-->
-
<a href="https://2014.igem.org/Team:Virtus-Parva_Mexico/Safety"style=" color:#000000"> Safety </a></td>
+
    <div class="container">
 +
        <div class="row">
 +
            <!--left-->
 +
            <div class="col-md-3" id="leftCol">
 +
                <ul class="nav nav-stacked" id="sidebar">
 +
                    <li><a href="#sec1">Project Overview</a></li>
 +
                    <li><a href="#sec2">The Idea</a></li>
 +
                    <li><a href="#sec3">The Making</a></li>
 +
                </ul>
 +
            </div>
 +
            <!--/left-->
-
<td style="border:1px solid black;" align="center"  height ="45px" onMouseOver="this.bgColor='#d3d3d3'" onMouseOut="this.bgColor='#e7e7e7'" bgColor=#e7e7e7>  
+
            <!--right-->
-
<a href="https://2014.igem.org/Team:Virtus-Parva_Mexico/Attributions"style="color:#000000"> Attributions </a></td>
+
            <div class="col-md-9">
 +
                <!-- Inicia Seccion 1 -->
 +
                <h2 id="sec1">What is it that we do?</h2>
 +
                <div class="well">
 +
                  <p>The Bio-NEMS drill is a</p>
 +
                </div>
 +
                <div class="row">
 +
                    <!-- Inicia Subseccion 1 -->
 +
                    <div class="col-md-12">
 +
                        <div class="panel panel-default">
 +
                            <div class="panel-heading">
 +
                                <h3>Project Overview</h3>
 +
                            </div>
 +
                            <div class="panel-body">
 +
                                Virtus-Parva is a team of Nanotechnology students who aim to create a better world through love,sympathy and endearment… and through the design and development of a novel technology based on micrometric “drills” to attack pathogen agents.
 +
<br>
 +
<br>
 +
First and foremost, we studied different procedures in order to synthesize the strongest and smallest magnetite particles we could make. Magnetite is a molecule that derives from iron, and has observable magnetic properties. Because we wanted to put together magnetite and DNA, we had to make them compatible, task we accomplished by functionalizing it with amino groups, that would allow it to form peptide bonds with our protein, HU. At the same time, our biology team was busy extracting, purifying and transforming E. Coli DNA to work with. This protein, HU, is a histone-like protein normally aids DNA into supercoiling around histones; the “Magnetic-Protein” complex we created mimics the nucleosome in DNA supercoiling process. This allows us to have a DNA “chromatin” with a magnetic core.
 +
<br>
 +
<br>
 +
Combining magnetite, DNA and HU protein, we are building magnetic-core machines, which can be controlled through external electrical impulses. Because of the shape of our system, it is possible for it to have linear movement depending on the frequency applied to it, which has the potential to be incorporated into the medical sector as a pathogen-targeted therapy. This was our original idea and module one of our project.
 +
<br>
 +
<br>
 +
As we were transforming our E. coli cells, we noticed it wasn’t as fast and efficient as we had hoped, which is how we came up with module two of the project. Quite simply, we wanted to take advantage of the shape of our system and its mobility thanks to magnetism in order to make a more efficient transformation. We were able to verify our method was more efficient by making cells express GFP and RFP, which can then be quantified with optic instruments.
-
<td align ="center"> <a href="https://2014.igem.org/Main_Page"> <img src="https://static.igem.org/mediawiki/igem.org/6/60/Igemlogo_300px.png" width="55px"></a> </td>
+
                            </div>
-
</tr>
+
                        </div>
-
</table>
+
                    </div>
 +
                    <!-- Fin Subseccion 1 -->
-
<!--end navigation menu -->
+
                    </div>
-
</tr>
+
-
</tr>
+
-
</td>
+
-
<tr> <td colspan="3"  height="15px"> </td></tr>
+
                <hr>
-
<tr><td bgColor="#e7e7e7" colspan="3" height="1px"> </tr>
+
                <!-- Fin Seccion 1 -->
-
<tr> <td colspan="3"  height="5px"> </td></tr>
+
-
<tr><td > <h3> Team Information</h3></td>
 
-
<td ></td >
 
-
<td > <h3> Upload pictures of your team!</h3></td>
 
-
</tr>
 
-
<tr>
+
                <!-- Inicia Seccion 2 -->
-
<td width="45%"  valign="top">
+
                <h2 id="sec2">The Idea</h2>
-
<p>
+
                <p>
-
You can write a background of your team here. Give us a background of your team, the members, etc. Or tell us more about something of your choosing.</p>
+
                    The basis for these “drills” will be NEMS, nano electro-mechanical systems, technology.<br> We took a survey to fellow iGEMers and external people in order to find out how many people knew about the existence of NEMS and if they knew how they worked. Turns out only 36% of survey takers had heard of the term before and of those, only 28% knew what it was!<br><br> Given these statistics, it became part of our project to teach newer generations about our subject.  
-
<p>
+
-
You can look at what other teams did to get some inspiration! Here are a few examples:</p>
+
-
<ul>
+
-
<li><a href="https://2013.igem.org/Team:Evry/Team">2013 Evry</a></li>
+
-
<li><a href="https://2013.igem.org/Team:Cornell/team">2013 Cornell</a></li>
+
-
<li><a href="https://2013.igem.org/Team:UANL_Mty-Mexico/Team">2013 UANL Mty-Mexico</a></li>
+
-
<li><a href="https://2013.igem.org/Team:Korea_U_Seoul/Team/Korea_University">2013 Korea U Seoul</a></li>
+
-
</ul>
+
                </p>
 +
                <div class="row">
 +
                    <div class="col-md-6">
 +
                        <div class="panel panel-default">
 +
                            <div class="panel-heading">
 +
                                <h3>NEMS</h3>
 +
                            </div>
 +
                            <div class="panel-body">
 +
                                NEMS are nanometric electromechanical systems. In this case we take as basis the structure of a resonator which are engineered to make a conversión between energy, such as electric, magnetic, or vibrational into mechanical response.
 +
<br>
 +
<br>
 +
How exactly do NEMS come into play in our project?
 +
<br>
 +
<br>
 +
Well, by combining an inorganically synthesized nanoparticle, called magnetite and DNA into what we call BioNEMS drill.
 +
                            </div>
 +
                        </div>
 +
                    </div>
 +
                    <div class="col-md-6">
 +
                        <div class="panel panel-default">
 +
                            <div class="panel-heading">
 +
                                <h3>DNA Coiling into Chromosomes</h3>
 +
                            </div>
 +
                            <div class="panel-body">
 +
                                Contenido subtitulo 2
 +
                            </div>
 +
                        </div>
 +
                    </div>
 +
                </div>
 +
                <hr>
 +
                <!-- Fin Seccion 2 -->
-
 
+
                <!-- Inicia Seccion 3 -->
-
</td>
+
                <h2 id="sec3">The Making</h2>
-
<td></td>
+
                <p>
-
<td width="45%"  valign="top">  
+
                    Descripcion general de Seccion 3
-
<p> We provide a server where you can upload images for your wiki!</p>
+
                </p>
-
<p> Add pictures of your team members, advisors, instructors, lab, institution and everything you wish to show! </p>
+
                <div class="row">
-
<a href="https://2014.igem.org/Special:Upload"><img src="" width="100px" height="100px"> </a> <a href="https://2014.igem.org/Special:Upload"><img src="" width="100px" height="100px"> </a>
+
                    <div class="col-md-6">
-
</a> <a href="https://2014.igem.org/Special:Upload"><img src="" width="100px" height="100px">  </a>
+
                        <div class="panel panel-default">
 +
                            <div class="panel-heading">
 +
                                <h3>Inorganic Section</h3>
 +
                            </div>
 +
                            <div class="panel-body">
 +
                                The first part of the synthesis of our magnetite was trying out different methods and characterizing them, to note which method had given us the smallest size nanoparticles. Our first method was synthesis by coprecipitation, of which we prepared nine samples with different concentrations of iron(II) chloride and ammonium hydroxide; from this method we consistently obtained nanoparticles rounding 0.9 to 1nm. Our following method was very similar, but included water in the synthesis: the size of our particles would vary greatly, from 3.89 micrometers to 171 nanometers in size.  
<br>
<br>
-
<a href="https://2014.igem.org/Special:Upload">Click here to upload! </a>
+
<br>
-
</td>
+
After choosing the best method possible, it was time to silanize our magnetite in order for it to be biocompatible with DNA and be able to tie them together. In order for the silanization to take place, we used a solution of TEOS (tetraethoxysilane) dispersed in a medium of water and propanol and dripped this mix slowly onto our magnetite. Just like when we synthesized our particles, we tested different concentrations of TEOS and magnetite, as well as different addition rates in order to observe which combination would give us the smallest possible nanoparticles.
-
 
+
<br>
 +
<br>
 +
Our results were then characterized by DLS (dynamic light scattering), for which we observed a peak at 39 nm, once coated with TEOS, the peak was moved toward 60 and 80 nm. We also ran our two samples in the IR, comparing the spectra of the pure magnetite and silanized magnetite, we were able to distinguish a peak at 990.2 cm^-1 corresponding to a Si-O bond, confirming the correct silanization of the magnetite. 
 +
                            </div>
 +
                        </div>
 +
                    </div>
 +
                    <div class="col-md-6">
 +
                        <div class="panel panel-default">
 +
                            <div class="panel-heading">
 +
                                <h3>Biological Section</h3>
 +
                            </div>
 +
                            <div class="panel-body">
 +
                                Soon..
 +
                            </div>
 +
                        </div>
 +
                    </div>
 +
                </div>
-
</tr>
+
                <hr>
 +
                <!-- Fin Seccion 3 -->
 +
            </div>
 +
            <!--/right-->
 +
        </div>
 +
        <!--/row-->
 +
    </div>
 +
    <!--/container-->
-
<tr><td > <h3> Tips for the Team Page </h3></td>
 
-
<td ></td >
 
-
<td > </td>
 
-
</tr>
 
-
<tr>
+
    <!-- script references -->
-
<td width="45%"  valign="top">
+
    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
-
<p>What should this page contain?</p>
+
-
<ul>
+
-
<li> Include pictures of your teammates, don’t forget instructors and advisors! </li>
+
-
<li> You can add a small biography or a few words from each team member, tell us what you like, and what motivates to participate in iGEM. </li>
+
-
<li>Take team pictures! Show us your school, your lab and little bit of your city.</li>
+
-
<li>Remember that image galleries can help you showcase many pictures while saving space </li>
+
-
</ul>
+
-
</td>
+
    <script lang="JavaScript">
 +
        if ("undefined" == typeof jQuery) throw new Error("Bootstrap's JavaScript requires jQuery"); +function (a) { "use strict"; function b() { var a = document.createElement("bootstrap"), b = { WebkitTransition: "webkitTransitionEnd", MozTransition: "transitionend", OTransition: "oTransitionEnd otransitionend", transition: "transitionend" }; for (var c in b) if (void 0 !== a.style[c]) return { end: b[c] }; return !1 } a.fn.emulateTransitionEnd = function (b) { var c = !1, d = this; a(this).one(a.support.transition.end, function () { c = !0 }); var e = function () { c || a(d).trigger(a.support.transition.end) }; return setTimeout(e, b), this }, a(function () { a.support.transition = b() }) }(jQuery), +function (a) { "use strict"; var b = '[data-dismiss="alert"]', c = function (c) { a(c).on("click", b, this.close) }; c.prototype.close = function (b) { function c() { f.trigger("closed.bs.alert").remove() } var d = a(this), e = d.attr("data-target"); e || (e = d.attr("href"), e = e && e.replace(/.*(?=#[^\s]*$)/, "")); var f = a(e); b && b.preventDefault(), f.length || (f = d.hasClass("alert") ? d : d.parent()), f.trigger(b = a.Event("close.bs.alert")), b.isDefaultPrevented() || (f.removeClass("in"), a.support.transition && f.hasClass("fade") ? f.one(a.support.transition.end, c).emulateTransitionEnd(150) : c()) }; var d = a.fn.alert; a.fn.alert = function (b) { return this.each(function () { var d = a(this), e = d.data("bs.alert"); e || d.data("bs.alert", e = new c(this)), "string" == typeof b && e[b].call(d) }) }, a.fn.alert.Constructor = c, a.fn.alert.noConflict = function () { return a.fn.alert = d, this }, a(document).on("click.bs.alert.data-api", b, c.prototype.close) }(jQuery), +function (a) { "use strict"; var b = function (c, d) { this.$element = a(c), this.options = a.extend({}, b.DEFAULTS, d), this.isLoading = !1 }; b.DEFAULTS = { loadingText: "loading..." }, b.prototype.setState = function (b) { var c = "disabled", d = this.$element, e = d.is("input") ? "val" : "html", f = d.data(); b += "Text", f.resetText || d.data("resetText", d[e]()), d[e](f[b] || this.options[b]), setTimeout(a.proxy(function () { "loadingText" == b ? (this.isLoading = !0, d.addClass(c).attr(c, c)) : this.isLoading && (this.isLoading = !1, d.removeClass(c).removeAttr(c)) }, this), 0) }, b.prototype.toggle = function () { var a = !0, b = this.$element.closest('[data-toggle="buttons"]'); if (b.length) { var c = this.$element.find("input"); "radio" == c.prop("type") && (c.prop("checked") && this.$element.hasClass("active") ? a = !1 : b.find(".active").removeClass("active")), a && c.prop("checked", !this.$element.hasClass("active")).trigger("change") } a && this.$element.toggleClass("active") }; var c = a.fn.button; a.fn.button = function (c) { return this.each(function () { var d = a(this), e = d.data("bs.button"), f = "object" == typeof c && c; e || d.data("bs.button", e = new b(this, f)), "toggle" == c ? e.toggle() : c && e.setState(c) }) }, a.fn.button.Constructor = b, a.fn.button.noConflict = function () { return a.fn.button = c, this }, a(document).on("click.bs.button.data-api", "[data-toggle^=button]", function (b) { var c = a(b.target); c.hasClass("btn") || (c = c.closest(".btn")), c.button("toggle"), b.preventDefault() }) }(jQuery), +function (a) { "use strict"; var b = function (b, c) { this.$element = a(b), this.$indicators = this.$element.find(".carousel-indicators"), this.options = c, this.paused = this.sliding = this.interval = this.$active = this.$items = null, "hover" == this.options.pause && this.$element.on("mouseenter", a.proxy(this.pause, this)).on("mouseleave", a.proxy(this.cycle, this)) }; b.DEFAULTS = { interval: 5e3, pause: "hover", wrap: !0 }, b.prototype.cycle = function (b) { return b || (this.paused = !1), this.interval && clearInterval(this.interval), this.options.interval && !this.paused && (this.interval = setInterval(a.proxy(this.next, this), this.options.interval)), this }, b.prototype.getActiveIndex = function () { return this.$active = this.$element.find(".item.active"), this.$items = this.$active.parent().children(), this.$items.index(this.$active) }, b.prototype.to = function (b) { var c = this, d = this.getActiveIndex(); return b > this.$items.length - 1 || 0 > b ? void 0 : this.sliding ? this.$element.one("slid.bs.carousel", function () { c.to(b) }) : d == b ? this.pause().cycle() : this.slide(b > d ? "next" : "prev", a(this.$items[b])) }, b.prototype.pause = function (b) { return b || (this.paused = !0), this.$element.find(".next, .prev").length && a.support.transition && (this.$element.trigger(a.support.transition.end), this.cycle(!0)), this.interval = clearInterval(this.interval), this }, b.prototype.next = function () { return this.sliding ? void 0 : this.slide("next") }, b.prototype.prev = function () { return this.sliding ? void 0 : this.slide("prev") }, b.prototype.slide = function (b, c) { var d = this.$element.find(".item.active"), e = c || d[b](), f = this.interval, g = "next" == b ? "left" : "right", h = "next" == b ? "first" : "last", i = this; if (!e.length) { if (!this.options.wrap) return; e = this.$element.find(".item")[h]() } if (e.hasClass("active")) return this.sliding = !1; var j = a.Event("slide.bs.carousel", { relatedTarget: e[0], direction: g }); return this.$element.trigger(j), j.isDefaultPrevented() ? void 0 : (this.sliding = !0, f && this.pause(), this.$indicators.length && (this.$indicators.find(".active").removeClass("active"), this.$element.one("slid.bs.carousel", function () { var b = a(i.$indicators.children()[i.getActiveIndex()]); b && b.addClass("active") })), a.support.transition && this.$element.hasClass("slide") ? (e.addClass(b), e[0].offsetWidth, d.addClass(g), e.addClass(g), d.one(a.support.transition.end, function () { e.removeClass([b, g].join(" ")).addClass("active"), d.removeClass(["active", g].join(" ")), i.sliding = !1, setTimeout(function () { i.$element.trigger("slid.bs.carousel") }, 0) }).emulateTransitionEnd(1e3 * d.css("transition-duration").slice(0, -1))) : (d.removeClass("active"), e.addClass("active"), this.sliding = !1, this.$element.trigger("slid.bs.carousel")), f && this.cycle(), this) }; var c = a.fn.carousel; a.fn.carousel = function (c) { return this.each(function () { var d = a(this), e = d.data("bs.carousel"), f = a.extend({}, b.DEFAULTS, d.data(), "object" == typeof c && c), g = "string" == typeof c ? c : f.slide; e || d.data("bs.carousel", e = new b(this, f)), "number" == typeof c ? e.to(c) : g ? e[g]() : f.interval && e.pause().cycle() }) }, a.fn.carousel.Constructor = b, a.fn.carousel.noConflict = function () { return a.fn.carousel = c, this }, a(document).on("click.bs.carousel.data-api", "[data-slide], [data-slide-to]", function (b) { var c, d = a(this), e = a(d.attr("data-target") || (c = d.attr("href")) && c.replace(/.*(?=#[^\s]+$)/, "")), f = a.extend({}, e.data(), d.data()), g = d.attr("data-slide-to"); g && (f.interval = !1), e.carousel(f), (g = d.attr("data-slide-to")) && e.data("bs.carousel").to(g), b.preventDefault() }), a(window).on("load", function () { a('[data-ride="carousel"]').each(function () { var b = a(this); b.carousel(b.data()) }) }) }(jQuery), +function (a) { "use strict"; var b = function (c, d) { this.$element = a(c), this.options = a.extend({}, b.DEFAULTS, d), this.transitioning = null, this.options.parent && (this.$parent = a(this.options.parent)), this.options.toggle && this.toggle() }; b.DEFAULTS = { toggle: !0 }, b.prototype.dimension = function () { var a = this.$element.hasClass("width"); return a ? "width" : "height" }, b.prototype.show = function () { if (!this.transitioning && !this.$element.hasClass("in")) { var b = a.Event("show.bs.collapse"); if (this.$element.trigger(b), !b.isDefaultPrevented()) { var c = this.$parent && this.$parent.find("> .panel > .in"); if (c && c.length) { var d = c.data("bs.collapse"); if (d && d.transitioning) return; c.collapse("hide"), d || c.data("bs.collapse", null) } var e = this.dimension(); this.$element.removeClass("collapse").addClass("collapsing")[e](0), this.transitioning = 1; var f = function () { this.$element.removeClass("collapsing").addClass("collapse in")[e]("auto"), this.transitioning = 0, this.$element.trigger("shown.bs.collapse") }; if (!a.support.transition) return f.call(this); var g = a.camelCase(["scroll", e].join("-")); this.$element.one(a.support.transition.end, a.proxy(f, this)).emulateTransitionEnd(350)[e](this.$element[0][g]) } } }, b.prototype.hide = function () { if (!this.transitioning && this.$element.hasClass("in")) { var b = a.Event("hide.bs.collapse"); if (this.$element.trigger(b), !b.isDefaultPrevented()) { var c = this.dimension(); this.$element[c](this.$element[c]())[0].offsetHeight, this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"), this.transitioning = 1; var d = function () { this.transitioning = 0, this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse") }; return a.support.transition ? void this.$element[c](0).one(a.support.transition.end, a.proxy(d, this)).emulateTransitionEnd(350) : d.call(this) } } }, b.prototype.toggle = function () { this[this.$element.hasClass("in") ? "hide" : "show"]() }; var c = a.fn.collapse; a.fn.collapse = function (c) { return this.each(function () { var d = a(this), e = d.data("bs.collapse"), f = a.extend({}, b.DEFAULTS, d.data(), "object" == typeof c && c); !e && f.toggle && "show" == c && (c = !c), e || d.data("bs.collapse", e = new b(this, f)), "string" == typeof c && e[c]() }) }, a.fn.collapse.Constructor = b, a.fn.collapse.noConflict = function () { return a.fn.collapse = c, this }, a(document).on("click.bs.collapse.data-api", "[data-toggle=collapse]", function (b) { var c, d = a(this), e = d.attr("data-target") || b.preventDefault() || (c = d.attr("href")) && c.replace(/.*(?=#[^\s]+$)/, ""), f = a(e), g = f.data("bs.collapse"), h = g ? "toggle" : d.data(), i = d.attr("data-parent"), j = i && a(i); g && g.transitioning || (j && j.find('[data-toggle=collapse][data-parent="' + i + '"]').not(d).addClass("collapsed"), d[f.hasClass("in") ? "addClass" : "removeClass"]("collapsed")), f.collapse(h) }) }(jQuery), +function (a) { "use strict"; function b(b) { a(d).remove(), a(e).each(function () { var d = c(a(this)), e = { relatedTarget: this }; d.hasClass("open") && (d.trigger(b = a.Event("hide.bs.dropdown", e)), b.isDefaultPrevented() || d.removeClass("open").trigger("hidden.bs.dropdown", e)) }) } function c(b) { var c = b.attr("data-target"); c || (c = b.attr("href"), c = c && /#[A-Za-z]/.test(c) && c.replace(/.*(?=#[^\s]*$)/, "")); var d = c && a(c); return d && d.length ? d : b.parent() } var d = ".dropdown-backdrop", e = "[data-toggle=dropdown]", f = function (b) { a(b).on("click.bs.dropdown", this.toggle) }; f.prototype.toggle = function (d) { var e = a(this); if (!e.is(".disabled, :disabled")) { var f = c(e), g = f.hasClass("open"); if (b(), !g) { "ontouchstart" in document.documentElement && !f.closest(".navbar-nav").length && a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click", b); var h = { relatedTarget: this }; if (f.trigger(d = a.Event("show.bs.dropdown", h)), d.isDefaultPrevented()) return; f.toggleClass("open").trigger("shown.bs.dropdown", h), e.focus() } return !1 } }, f.prototype.keydown = function (b) { if (/(38|40|27)/.test(b.keyCode)) { var d = a(this); if (b.preventDefault(), b.stopPropagation(), !d.is(".disabled, :disabled")) { var f = c(d), g = f.hasClass("open"); if (!g || g && 27 == b.keyCode) return 27 == b.which && f.find(e).focus(), d.click(); var h = " li:not(.divider):visible a", i = f.find("[role=menu]" + h + ", [role=listbox]" + h); if (i.length) { var j = i.index(i.filter(":focus")); 38 == b.keyCode && j > 0 && j--, 40 == b.keyCode && j < i.length - 1 && j++, ~j || (j = 0), i.eq(j).focus() } } } }; var g = a.fn.dropdown; a.fn.dropdown = function (b) { return this.each(function () { var c = a(this), d = c.data("bs.dropdown"); d || c.data("bs.dropdown", d = new f(this)), "string" == typeof b && d[b].call(c) }) }, a.fn.dropdown.Constructor = f, a.fn.dropdown.noConflict = function () { return a.fn.dropdown = g, this }, a(document).on("click.bs.dropdown.data-api", b).on("click.bs.dropdown.data-api", ".dropdown form", function (a) { a.stopPropagation() }).on("click.bs.dropdown.data-api", e, f.prototype.toggle).on("keydown.bs.dropdown.data-api", e + ", [role=menu], [role=listbox]", f.prototype.keydown) }(jQuery), +function (a) { "use strict"; var b = function (b, c) { this.options = c, this.$element = a(b), this.$backdrop = this.isShown = null, this.options.remote && this.$element.find(".modal-content").load(this.options.remote, a.proxy(function () { this.$element.trigger("loaded.bs.modal") }, this)) }; b.DEFAULTS = { backdrop: !0, keyboard: !0, show: !0 }, b.prototype.toggle = function (a) { return this[this.isShown ? "hide" : "show"](a) }, b.prototype.show = function (b) { var c = this, d = a.Event("show.bs.modal", { relatedTarget: b }); this.$element.trigger(d), this.isShown || d.isDefaultPrevented() || (this.isShown = !0, this.escape(), this.$element.on("click.dismiss.bs.modal", '[data-dismiss="modal"]', a.proxy(this.hide, this)), this.backdrop(function () { var d = a.support.transition && c.$element.hasClass("fade"); c.$element.parent().length || c.$element.appendTo(document.body), c.$element.show().scrollTop(0), d && c.$element[0].offsetWidth, c.$element.addClass("in").attr("aria-hidden", !1), c.enforceFocus(); var e = a.Event("shown.bs.modal", { relatedTarget: b }); d ? c.$element.find(".modal-dialog").one(a.support.transition.end, function () { c.$element.focus().trigger(e) }).emulateTransitionEnd(300) : c.$element.focus().trigger(e) })) }, b.prototype.hide = function (b) { b && b.preventDefault(), b = a.Event("hide.bs.modal"), this.$element.trigger(b), this.isShown && !b.isDefaultPrevented() && (this.isShown = !1, this.escape(), a(document).off("focusin.bs.modal"), this.$element.removeClass("in").attr("aria-hidden", !0).off("click.dismiss.bs.modal"), a.support.transition && this.$element.hasClass("fade") ? this.$element.one(a.support.transition.end, a.proxy(this.hideModal, this)).emulateTransitionEnd(300) : this.hideModal()) }, b.prototype.enforceFocus = function () { a(document).off("focusin.bs.modal").on("focusin.bs.modal", a.proxy(function (a) { this.$element[0] === a.target || this.$element.has(a.target).length || this.$element.focus() }, this)) }, b.prototype.escape = function () { this.isShown && this.options.keyboard ? this.$element.on("keyup.dismiss.bs.modal", a.proxy(function (a) { 27 == a.which && this.hide() }, this)) : this.isShown || this.$element.off("keyup.dismiss.bs.modal") }, b.prototype.hideModal = function () { var a = this; this.$element.hide(), this.backdrop(function () { a.removeBackdrop(), a.$element.trigger("hidden.bs.modal") }) }, b.prototype.removeBackdrop = function () { this.$backdrop && this.$backdrop.remove(), this.$backdrop = null }, b.prototype.backdrop = function (b) { var c = this.$element.hasClass("fade") ? "fade" : ""; if (this.isShown && this.options.backdrop) { var d = a.support.transition && c; if (this.$backdrop = a('<div class="modal-backdrop ' + c + '" />').appendTo(document.body), this.$element.on("click.dismiss.bs.modal", a.proxy(function (a) { a.target === a.currentTarget && ("static" == this.options.backdrop ? this.$element[0].focus.call(this.$element[0]) : this.hide.call(this)) }, this)), d && this.$backdrop[0].offsetWidth, this.$backdrop.addClass("in"), !b) return; d ? this.$backdrop.one(a.support.transition.end, b).emulateTransitionEnd(150) : b() } else !this.isShown && this.$backdrop ? (this.$backdrop.removeClass("in"), a.support.transition && this.$element.hasClass("fade") ? this.$backdrop.one(a.support.transition.end, b).emulateTransitionEnd(150) : b()) : b && b() }; var c = a.fn.modal; a.fn.modal = function (c, d) { return this.each(function () { var e = a(this), f = e.data("bs.modal"), g = a.extend({}, b.DEFAULTS, e.data(), "object" == typeof c && c); f || e.data("bs.modal", f = new b(this, g)), "string" == typeof c ? f[c](d) : g.show && f.show(d) }) }, a.fn.modal.Constructor = b, a.fn.modal.noConflict = function () { return a.fn.modal = c, this }, a(document).on("click.bs.modal.data-api", '[data-toggle="modal"]', function (b) { var c = a(this), d = c.attr("href"), e = a(c.attr("data-target") || d && d.replace(/.*(?=#[^\s]+$)/, "")), f = e.data("bs.modal") ? "toggle" : a.extend({ remote: !/#/.test(d) && d }, e.data(), c.data()); c.is("a") && b.preventDefault(), e.modal(f, this).one("hide", function () { c.is(":visible") && c.focus() }) }), a(document).on("show.bs.modal", ".modal", function () { a(document.body).addClass("modal-open") }).on("hidden.bs.modal", ".modal", function () { a(document.body).removeClass("modal-open") }) }(jQuery), +function (a) { "use strict"; var b = function (a, b) { this.type = this.options = this.enabled = this.timeout = this.hoverState = this.$element = null, this.init("tooltip", a, b) }; b.DEFAULTS = { animation: !0, placement: "top", selector: !1, template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>', trigger: "hover focus", title: "", delay: 0, html: !1, container: !1 }, b.prototype.init = function (b, c, d) { this.enabled = !0, this.type = b, this.$element = a(c), this.options = this.getOptions(d); for (var e = this.options.trigger.split(" "), f = e.length; f--;) { var g = e[f]; if ("click" == g) this.$element.on("click." + this.type, this.options.selector, a.proxy(this.toggle, this)); else if ("manual" != g) { var h = "hover" == g ? "mouseenter" : "focusin", i = "hover" == g ? "mouseleave" : "focusout"; this.$element.on(h + "." + this.type, this.options.selector, a.proxy(this.enter, this)), this.$element.on(i + "." + this.type, this.options.selector, a.proxy(this.leave, this)) } } this.options.selector ? this._options = a.extend({}, this.options, { trigger: "manual", selector: "" }) : this.fixTitle() }, b.prototype.getDefaults = function () { return b.DEFAULTS }, b.prototype.getOptions = function (b) { return b = a.extend({}, this.getDefaults(), this.$element.data(), b), b.delay && "number" == typeof b.delay && (b.delay = { show: b.delay, hide: b.delay }), b }, b.prototype.getDelegateOptions = function () { var b = {}, c = this.getDefaults(); return this._options && a.each(this._options, function (a, d) { c[a] != d && (b[a] = d) }), b }, b.prototype.enter = function (b) { var c = b instanceof this.constructor ? b : a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs." + this.type); return clearTimeout(c.timeout), c.hoverState = "in", c.options.delay && c.options.delay.show ? void (c.timeout = setTimeout(function () { "in" == c.hoverState && c.show() }, c.options.delay.show)) : c.show() }, b.prototype.leave = function (b) { var c = b instanceof this.constructor ? b : a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs." + this.type); return clearTimeout(c.timeout), c.hoverState = "out", c.options.delay && c.options.delay.hide ? void (c.timeout = setTimeout(function () { "out" == c.hoverState && c.hide() }, c.options.delay.hide)) : c.hide() }, b.prototype.show = function () { var b = a.Event("show.bs." + this.type); if (this.hasContent() && this.enabled) { if (this.$element.trigger(b), b.isDefaultPrevented()) return; var c = this, d = this.tip(); this.setContent(), this.options.animation && d.addClass("fade"); var e = "function" == typeof this.options.placement ? this.options.placement.call(this, d[0], this.$element[0]) : this.options.placement, f = /\s?auto?\s?/i, g = f.test(e); g && (e = e.replace(f, "") || "top"), d.detach().css({ top: 0, left: 0, display: "block" }).addClass(e), this.options.container ? d.appendTo(this.options.container) : d.insertAfter(this.$element); var h = this.getPosition(), i = d[0].offsetWidth, j = d[0].offsetHeight; if (g) { var k = this.$element.parent(), l = e, m = document.documentElement.scrollTop || document.body.scrollTop, n = "body" == this.options.container ? window.innerWidth : k.outerWidth(), o = "body" == this.options.container ? window.innerHeight : k.outerHeight(), p = "body" == this.options.container ? 0 : k.offset().left; e = "bottom" == e && h.top + h.height + j - m > o ? "top" : "top" == e && h.top - m - j < 0 ? "bottom" : "right" == e && h.right + i > n ? "left" : "left" == e && h.left - i < p ? "right" : e, d.removeClass(l).addClass(e) } var q = this.getCalculatedOffset(e, h, i, j); this.applyPlacement(q, e), this.hoverState = null; var r = function () { c.$element.trigger("shown.bs." + c.type) }; a.support.transition && this.$tip.hasClass("fade") ? d.one(a.support.transition.end, r).emulateTransitionEnd(150) : r() } }, b.prototype.applyPlacement = function (b, c) { var d, e = this.tip(), f = e[0].offsetWidth, g = e[0].offsetHeight, h = parseInt(e.css("margin-top"), 10), i = parseInt(e.css("margin-left"), 10); isNaN(h) && (h = 0), isNaN(i) && (i = 0), b.top = b.top + h, b.left = b.left + i, a.offset.setOffset(e[0], a.extend({ using: function (a) { e.css({ top: Math.round(a.top), left: Math.round(a.left) }) } }, b), 0), e.addClass("in"); var j = e[0].offsetWidth, k = e[0].offsetHeight; if ("top" == c && k != g && (d = !0, b.top = b.top + g - k), /bottom|top/.test(c)) { var l = 0; b.left < 0 && (l = -2 * b.left, b.left = 0, e.offset(b), j = e[0].offsetWidth, k = e[0].offsetHeight), this.replaceArrow(l - f + j, j, "left") } else this.replaceArrow(k - g, k, "top"); d && e.offset(b) }, b.prototype.replaceArrow = function (a, b, c) { this.arrow().css(c, a ? 50 * (1 - a / b) + "%" : "") }, b.prototype.setContent = function () { var a = this.tip(), b = this.getTitle(); a.find(".tooltip-inner")[this.options.html ? "html" : "text"](b), a.removeClass("fade in top bottom left right") }, b.prototype.hide = function () { function b() { "in" != c.hoverState && d.detach(), c.$element.trigger("hidden.bs." + c.type) } var c = this, d = this.tip(), e = a.Event("hide.bs." + this.type); return this.$element.trigger(e), e.isDefaultPrevented() ? void 0 : (d.removeClass("in"), a.support.transition && this.$tip.hasClass("fade") ? d.one(a.support.transition.end, b).emulateTransitionEnd(150) : b(), this.hoverState = null, this) }, b.prototype.fixTitle = function () { var a = this.$element; (a.attr("title") || "string" != typeof a.attr("data-original-title")) && a.attr("data-original-title", a.attr("title") || "").attr("title", "") }, b.prototype.hasContent = function () { return this.getTitle() }, b.prototype.getPosition = function () { var b = this.$element[0]; return a.extend({}, "function" == typeof b.getBoundingClientRect ? b.getBoundingClientRect() : { width: b.offsetWidth, height: b.offsetHeight }, this.$element.offset()) }, b.prototype.getCalculatedOffset = function (a, b, c, d) { return "bottom" == a ? { top: b.top + b.height, left: b.left + b.width / 2 - c / 2 } : "top" == a ? { top: b.top - d, left: b.left + b.width / 2 - c / 2 } : "left" == a ? { top: b.top + b.height / 2 - d / 2, left: b.left - c } : { top: b.top + b.height / 2 - d / 2, left: b.left + b.width } }, b.prototype.getTitle = function () { var a, b = this.$element, c = this.options; return a = b.attr("data-original-title") || ("function" == typeof c.title ? c.title.call(b[0]) : c.title) }, b.prototype.tip = function () { return this.$tip = this.$tip || a(this.options.template) }, b.prototype.arrow = function () { return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow") }, b.prototype.validate = function () { this.$element[0].parentNode || (this.hide(), this.$element = null, this.options = null) }, b.prototype.enable = function () { this.enabled = !0 }, b.prototype.disable = function () { this.enabled = !1 }, b.prototype.toggleEnabled = function () { this.enabled = !this.enabled }, b.prototype.toggle = function (b) { var c = b ? a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs." + this.type) : this; c.tip().hasClass("in") ? c.leave(c) : c.enter(c) }, b.prototype.destroy = function () { clearTimeout(this.timeout), this.hide().$element.off("." + this.type).removeData("bs." + this.type) }; var c = a.fn.tooltip; a.fn.tooltip = function (c) { return this.each(function () { var d = a(this), e = d.data("bs.tooltip"), f = "object" == typeof c && c; (e || "destroy" != c) && (e || d.data("bs.tooltip", e = new b(this, f)), "string" == typeof c && e[c]()) }) }, a.fn.tooltip.Constructor = b, a.fn.tooltip.noConflict = function () { return a.fn.tooltip = c, this } }(jQuery), +function (a) { "use strict"; var b = function (a, b) { this.init("popover", a, b) }; if (!a.fn.tooltip) throw new Error("Popover requires tooltip.js"); b.DEFAULTS = a.extend({}, a.fn.tooltip.Constructor.DEFAULTS, { placement: "right", trigger: "click", content: "", template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>' }), b.prototype = a.extend({}, a.fn.tooltip.Constructor.prototype), b.prototype.constructor = b, b.prototype.getDefaults = function () { return b.DEFAULTS }, b.prototype.setContent = function () { var a = this.tip(), b = this.getTitle(), c = this.getContent(); a.find(".popover-title")[this.options.html ? "html" : "text"](b), a.find(".popover-content")[this.options.html ? "string" == typeof c ? "html" : "append" : "text"](c), a.removeClass("fade top bottom left right in"), a.find(".popover-title").html() || a.find(".popover-title").hide() }, b.prototype.hasContent = function () { return this.getTitle() || this.getContent() }, b.prototype.getContent = function () { var a = this.$element, b = this.options; return a.attr("data-content") || ("function" == typeof b.content ? b.content.call(a[0]) : b.content) }, b.prototype.arrow = function () { return this.$arrow = this.$arrow || this.tip().find(".arrow") }, b.prototype.tip = function () { return this.$tip || (this.$tip = a(this.options.template)), this.$tip }; var c = a.fn.popover; a.fn.popover = function (c) { return this.each(function () { var d = a(this), e = d.data("bs.popover"), f = "object" == typeof c && c; (e || "destroy" != c) && (e || d.data("bs.popover", e = new b(this, f)), "string" == typeof c && e[c]()) }) }, a.fn.popover.Constructor = b, a.fn.popover.noConflict = function () { return a.fn.popover = c, this } }(jQuery), +function (a) { "use strict"; function b(c, d) { var e, f = a.proxy(this.process, this); this.$element = a(a(c).is("body") ? window : c), this.$body = a("body"), this.$scrollElement = this.$element.on("scroll.bs.scroll-spy.data-api", f), this.options = a.extend({}, b.DEFAULTS, d), this.selector = (this.options.target || (e = a(c).attr("href")) && e.replace(/.*(?=#[^\s]+$)/, "") || "") + " .nav li > a", this.offsets = a([]), this.targets = a([]), this.activeTarget = null, this.refresh(), this.process() } b.DEFAULTS = { offset: 10 }, b.prototype.refresh = function () { var b = this.$element[0] == window ? "offset" : "position"; this.offsets = a([]), this.targets = a([]); { var c = this; this.$body.find(this.selector).map(function () { var d = a(this), e = d.data("target") || d.attr("href"), f = /^#./.test(e) && a(e); return f && f.length && f.is(":visible") && [[f[b]().top + (!a.isWindow(c.$scrollElement.get(0)) && c.$scrollElement.scrollTop()), e]] || null }).sort(function (a, b) { return a[0] - b[0] }).each(function () { c.offsets.push(this[0]), c.targets.push(this[1]) }) } }, b.prototype.process = function () { var a, b = this.$scrollElement.scrollTop() + this.options.offset, c = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight, d = c - this.$scrollElement.height(), e = this.offsets, f = this.targets, g = this.activeTarget; if (b >= d) return g != (a = f.last()[0]) && this.activate(a); if (g && b <= e[0]) return g != (a = f[0]) && this.activate(a); for (a = e.length; a--;) g != f[a] && b >= e[a] && (!e[a + 1] || b <= e[a + 1]) && this.activate(f[a]) }, b.prototype.activate = function (b) { this.activeTarget = b, a(this.selector).parentsUntil(this.options.target, ".active").removeClass("active"); var c = this.selector + '[data-target="' + b + '"],' + this.selector + '[href="' + b + '"]', d = a(c).parents("li").addClass("active"); d.parent(".dropdown-menu").length && (d = d.closest("li.dropdown").addClass("active")), d.trigger("activate.bs.scrollspy") }; var c = a.fn.scrollspy; a.fn.scrollspy = function (c) { return this.each(function () { var d = a(this), e = d.data("bs.scrollspy"), f = "object" == typeof c && c; e || d.data("bs.scrollspy", e = new b(this, f)), "string" == typeof c && e[c]() }) }, a.fn.scrollspy.Constructor = b, a.fn.scrollspy.noConflict = function () { return a.fn.scrollspy = c, this }, a(window).on("load", function () { a('[data-spy="scroll"]').each(function () { var b = a(this); b.scrollspy(b.data()) }) }) }(jQuery), +function (a) { "use strict"; var b = function (b) { this.element = a(b) }; b.prototype.show = function () { var b = this.element, c = b.closest("ul:not(.dropdown-menu)"), d = b.data("target"); if (d || (d = b.attr("href"), d = d && d.replace(/.*(?=#[^\s]*$)/, "")), !b.parent("li").hasClass("active")) { var e = c.find(".active:last a")[0], f = a.Event("show.bs.tab", { relatedTarget: e }); if (b.trigger(f), !f.isDefaultPrevented()) { var g = a(d); this.activate(b.parent("li"), c), this.activate(g, g.parent(), function () { b.trigger({ type: "shown.bs.tab", relatedTarget: e }) }) } } }, b.prototype.activate = function (b, c, d) { function e() { f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"), b.addClass("active"), g ? (b[0].offsetWidth, b.addClass("in")) : b.removeClass("fade"), b.parent(".dropdown-menu") && b.closest("li.dropdown").addClass("active"), d && d() } var f = c.find("> .active"), g = d && a.support.transition && f.hasClass("fade"); g ? f.one(a.support.transition.end, e).emulateTransitionEnd(150) : e(), f.removeClass("in") }; var c = a.fn.tab; a.fn.tab = function (c) { return this.each(function () { var d = a(this), e = d.data("bs.tab"); e || d.data("bs.tab", e = new b(this)), "string" == typeof c && e[c]() }) }, a.fn.tab.Constructor = b, a.fn.tab.noConflict = function () { return a.fn.tab = c, this }, a(document).on("click.bs.tab.data-api", '[data-toggle="tab"], [data-toggle="pill"]', function (b) { b.preventDefault(), a(this).tab("show") }) }(jQuery), +function (a) { "use strict"; var b = function (c, d) { this.options = a.extend({}, b.DEFAULTS, d), this.$window = a(window).on("scroll.bs.affix.data-api", a.proxy(this.checkPosition, this)).on("click.bs.affix.data-api", a.proxy(this.checkPositionWithEventLoop, this)), this.$element = a(c), this.affixed = this.unpin = this.pinnedOffset = null, this.checkPosition() }; b.RESET = "affix affix-top affix-bottom", b.DEFAULTS = { offset: 0 }, b.prototype.getPinnedOffset = function () { if (this.pinnedOffset) return this.pinnedOffset; this.$element.removeClass(b.RESET).addClass("affix"); var a = this.$window.scrollTop(), c = this.$element.offset(); return this.pinnedOffset = c.top - a }, b.prototype.checkPositionWithEventLoop = function () { setTimeout(a.proxy(this.checkPosition, this), 1) }, b.prototype.checkPosition = function () { if (this.$element.is(":visible")) { var c = a(document).height(), d = this.$window.scrollTop(), e = this.$element.offset(), f = this.options.offset, g = f.top, h = f.bottom; "top" == this.affixed && (e.top += d), "object" != typeof f && (h = g = f), "function" == typeof g && (g = f.top(this.$element)), "function" == typeof h && (h = f.bottom(this.$element)); var i = null != this.unpin && d + this.unpin <= e.top ? !1 : null != h && e.top + this.$element.height() >= c - h ? "bottom" : null != g && g >= d ? "top" : !1; if (this.affixed !== i) { this.unpin && this.$element.css("top", ""); var j = "affix" + (i ? "-" + i : ""), k = a.Event(j + ".bs.affix"); this.$element.trigger(k), k.isDefaultPrevented() || (this.affixed = i, this.unpin = "bottom" == i ? this.getPinnedOffset() : null, this.$element.removeClass(b.RESET).addClass(j).trigger(a.Event(j.replace("affix", "affixed"))), "bottom" == i && this.$element.offset({ top: c - h - this.$element.height() })) } } }; var c = a.fn.affix; a.fn.affix = function (c) { return this.each(function () { var d = a(this), e = d.data("bs.affix"), f = "object" == typeof c && c; e || d.data("bs.affix", e = new b(this, f)), "string" == typeof c && e[c]() }) }, a.fn.affix.Constructor = b, a.fn.affix.noConflict = function () { return a.fn.affix = c, this }, a(window).on("load", function () { a('[data-spy="affix"]').each(function () { var b = a(this), c = b.data(); c.offset = c.offset || {}, c.offsetBottom && (c.offset.bottom = c.offsetBottom), c.offsetTop && (c.offset.top = c.offsetTop), b.affix(c) }) }) }(jQuery);
 +
    </script>
 +
    <script lang="JavaScript">
-
<td></td>
+
        $(document).ready(function () {/* activate sidebar */
-
<td width="45%"  valign="top"> </td>
+
            $('#sidebar').affix({
 +
                offset: {
 +
                    top: 235
 +
                }
 +
            });
-
</tr>
+
            /* activate scrollspy menu */
 +
            var $body = $(document.body);
 +
            var navHeight = $('.navbar').outerHeight(true) + 10;
 +
            $body.scrollspy({
 +
                target: '#leftCol',
 +
                offset: navHeight
 +
            });
-
</table>
+
            /* smooth scrolling sections */
 +
            $('a[href*=#]:not([href=#])').click(function () {
 +
                if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
 +
                    var target = $(this.hash);
 +
                    target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
 +
                    if (target.length) {
 +
                        $('html,body').animate({
 +
                            scrollTop: target.offset().top - 50
 +
                        }, 1000);
 +
                        return false;
 +
                    }
 +
                }
 +
            });
 +
        });
 +
    </script>
 +
</body>
</html>
</html>

Revision as of 00:01, 13 October 2014

Team

The Next Generation in Molecular Machinery

What is it that we do?

The Bio-NEMS drill is a

Project Overview

Virtus-Parva is a team of Nanotechnology students who aim to create a better world through love,sympathy and endearment… and through the design and development of a novel technology based on micrometric “drills” to attack pathogen agents.

First and foremost, we studied different procedures in order to synthesize the strongest and smallest magnetite particles we could make. Magnetite is a molecule that derives from iron, and has observable magnetic properties. Because we wanted to put together magnetite and DNA, we had to make them compatible, task we accomplished by functionalizing it with amino groups, that would allow it to form peptide bonds with our protein, HU. At the same time, our biology team was busy extracting, purifying and transforming E. Coli DNA to work with. This protein, HU, is a histone-like protein normally aids DNA into supercoiling around histones; the “Magnetic-Protein” complex we created mimics the nucleosome in DNA supercoiling process. This allows us to have a DNA “chromatin” with a magnetic core.

Combining magnetite, DNA and HU protein, we are building magnetic-core machines, which can be controlled through external electrical impulses. Because of the shape of our system, it is possible for it to have linear movement depending on the frequency applied to it, which has the potential to be incorporated into the medical sector as a pathogen-targeted therapy. This was our original idea and module one of our project.

As we were transforming our E. coli cells, we noticed it wasn’t as fast and efficient as we had hoped, which is how we came up with module two of the project. Quite simply, we wanted to take advantage of the shape of our system and its mobility thanks to magnetism in order to make a more efficient transformation. We were able to verify our method was more efficient by making cells express GFP and RFP, which can then be quantified with optic instruments.

The Idea

The basis for these “drills” will be NEMS, nano electro-mechanical systems, technology.
We took a survey to fellow iGEMers and external people in order to find out how many people knew about the existence of NEMS and if they knew how they worked. Turns out only 36% of survey takers had heard of the term before and of those, only 28% knew what it was!

Given these statistics, it became part of our project to teach newer generations about our subject.

NEMS

NEMS are nanometric electromechanical systems. In this case we take as basis the structure of a resonator which are engineered to make a conversión between energy, such as electric, magnetic, or vibrational into mechanical response.

How exactly do NEMS come into play in our project?

Well, by combining an inorganically synthesized nanoparticle, called magnetite and DNA into what we call BioNEMS drill.

DNA Coiling into Chromosomes

Contenido subtitulo 2

The Making

Descripcion general de Seccion 3

Inorganic Section

The first part of the synthesis of our magnetite was trying out different methods and characterizing them, to note which method had given us the smallest size nanoparticles. Our first method was synthesis by coprecipitation, of which we prepared nine samples with different concentrations of iron(II) chloride and ammonium hydroxide; from this method we consistently obtained nanoparticles rounding 0.9 to 1nm. Our following method was very similar, but included water in the synthesis: the size of our particles would vary greatly, from 3.89 micrometers to 171 nanometers in size.

After choosing the best method possible, it was time to silanize our magnetite in order for it to be biocompatible with DNA and be able to tie them together. In order for the silanization to take place, we used a solution of TEOS (tetraethoxysilane) dispersed in a medium of water and propanol and dripped this mix slowly onto our magnetite. Just like when we synthesized our particles, we tested different concentrations of TEOS and magnetite, as well as different addition rates in order to observe which combination would give us the smallest possible nanoparticles.

Our results were then characterized by DLS (dynamic light scattering), for which we observed a peak at 39 nm, once coated with TEOS, the peak was moved toward 60 and 80 nm. We also ran our two samples in the IR, comparing the spectra of the pure magnetite and silanized magnetite, we were able to distinguish a peak at 990.2 cm^-1 corresponding to a Si-O bond, confirming the correct silanization of the magnetite.

Biological Section

Soon..