(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{170:function(t,e,n){},248:function(t,e,n){"use strict";var r=n(170);n.n(r).a},358:function(t,e,n){"use strict";n.r(e);n(46),n(45);var r=n(5),o=(n(62),n(198)),c=n.n(o),l=(navigator.languages&&navigator.languages[0]||navigator.language||navigator.userLanguage).toLowerCase().split(/[_-]+/)[0],v={layout:"sidebar",head:function(){return{title:this.post.title}},asyncData:function(){var t=Object(r.a)(regeneratorRuntime.mark(function t(e){var n,r;return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(n=e.params,r=e.payload,t.t1=r,t.t1){t.next=9;break}if(t.t2=n.name,!t.t2){t.next=8;break}return t.next=7,c.a.get("".concat("/","unide/files/posts/").concat(n.name,".json"));case 7:t.t2=t.sent.data;case 8:t.t1=t.t2;case 9:if(t.t0=t.t1,t.t0){t.next=12;break}t.t0={};case 12:return t.t3=t.t0,t.abrupt("return",{post:t.t3});case 14:case"end":return t.stop()}},t)}));return function(e){return t.apply(this,arguments)}}(),filters:{timeStamp:function(t){var e=(t=t instanceof Date?t:new Date(t)).getHours()&&t.getMinutes();return Intl.DateTimeFormat(l,{hour12:!1,year:"2-digit",month:"2-digit",day:"2-digit",hour:e?"numeric":void 0,minute:e?"2-digit":void 0}).format(t)}}},f=(n(248),n(2)),component=Object(f.a)(v,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"article"},[t.post.title?n("h1",{staticClass:"title is-3"},[t._v("\n    "+t._s(t.post.title)+"\n  ")]):t._e(),t._v(" "),t.post.title&&t.post.date?n("h2",{staticClass:"subtitle is-6"},[n("i",{staticClass:"fa fa-calendar"}),t._v("  \n    "+t._s(t._f("timeStamp")(t.post.date))+"\n  ")]):t._e(),t._v(" "),n("div",{staticClass:"content"},[n("div",{domProps:{innerHTML:t._s(t.post.content)}})]),t._v(" "),n("div",{staticClass:"columns pageNav"},[t.post.prev?n("div",{staticClass:"column"},[n("nuxt-link",{staticClass:"button is-fullwidth",attrs:{to:t.post.prev.url}},[n("span",{staticClass:"icon"},[n("i",{staticClass:"fa fa-chevron-left"})]),t._v(" "),n("span",[t._v(t._s(t.post.prev.title))])])],1):t._e(),t._v(" "),t.post.next?n("div",{staticClass:"column"},[n("nuxt-link",{staticClass:"button is-fullwidth",attrs:{to:t.post.next.url}},[n("span",[t._v(t._s(t.post.next.title))]),t._v(" "),n("span",{staticClass:"icon"},[n("i",{staticClass:"fa fa-chevron-right"})])])],1):t._e()])])},[],!1,null,null,null);e.default=component.exports}}]);