solid-panes 3.5.28-alpha → 3.5.29-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -2
- package/lib/RDFXMLPane.js +6 -8
- package/lib/RDFXMLPane.js.map +1 -1
- package/lib/argument/argumentPane.js +10 -11
- package/lib/argument/argumentPane.js.map +1 -1
- package/lib/attach/attachPane.js +47 -85
- package/lib/attach/attachPane.js.map +1 -1
- package/lib/audio/audioPane.js +11 -36
- package/lib/audio/audioPane.js.map +1 -1
- package/lib/classInstancePane.js +11 -20
- package/lib/classInstancePane.js.map +1 -1
- package/lib/dashboard/basicPreferences.js +3 -53
- package/lib/dashboard/basicPreferences.js.map +1 -1
- package/lib/dashboard/dashboardPane.js +2 -18
- package/lib/dashboard/dashboardPane.js.map +1 -1
- package/lib/dashboard/homepage.js +1 -19
- package/lib/dashboard/homepage.js.map +1 -1
- package/lib/dataContentPane.js +15 -58
- package/lib/dataContentPane.js.map +1 -1
- package/lib/defaultPane.js +13 -21
- package/lib/defaultPane.js.map +1 -1
- package/lib/dokieli/dokieliPane.js +19 -28
- package/lib/dokieli/dokieliPane.js.map +1 -1
- package/lib/dokieli/new.js.map +1 -1
- package/lib/form/pane.js +26 -40
- package/lib/form/pane.js.map +1 -1
- package/lib/home/homePane.js +7 -23
- package/lib/home/homePane.js.map +1 -1
- package/lib/humanReadablePane.js +14 -28
- package/lib/humanReadablePane.js.map +1 -1
- package/lib/imagePane.js +9 -13
- package/lib/imagePane.js.map +1 -1
- package/lib/index.js +4 -18
- package/lib/index.js.map +1 -1
- package/lib/internal/internalPane.js +10 -41
- package/lib/internal/internalPane.js.map +1 -1
- package/lib/mainPage/footer.js +0 -4
- package/lib/mainPage/footer.js.map +1 -1
- package/lib/mainPage/header.js +2 -28
- package/lib/mainPage/header.js.map +1 -1
- package/lib/mainPage/index.js +1 -12
- package/lib/mainPage/index.js.map +1 -1
- package/lib/microblogPane/microblogPane.js +100 -237
- package/lib/microblogPane/microblogPane.js.map +1 -1
- package/lib/n3Pane.js +2 -7
- package/lib/n3Pane.js.map +1 -1
- package/lib/outline/context.js +0 -2
- package/lib/outline/context.js.map +1 -1
- package/lib/outline/licenseOptions.js +9 -25
- package/lib/outline/licenseOptions.js.map +1 -1
- package/lib/outline/manager.js +178 -580
- package/lib/outline/manager.js.map +1 -1
- package/lib/outline/manager.test.js +1 -11
- package/lib/outline/manager.test.js.map +1 -1
- package/lib/outline/outlineIcons.js +30 -25
- package/lib/outline/outlineIcons.js.map +1 -1
- package/lib/outline/propertyViews.js +0 -10
- package/lib/outline/propertyViews.js.map +1 -1
- package/lib/outline/propertyViews.test.js +1 -3
- package/lib/outline/propertyViews.test.js.map +1 -1
- package/lib/outline/queryByExample.js +24 -76
- package/lib/outline/queryByExample.js.map +1 -1
- package/lib/outline/userInput.js +214 -454
- package/lib/outline/userInput.js.map +1 -1
- package/lib/outline/viewAsImage.js +0 -6
- package/lib/outline/viewAsImage.js.map +1 -1
- package/lib/outline/viewAsMbox.js +3 -4
- package/lib/outline/viewAsMbox.js.map +1 -1
- package/lib/pad/padPane.js +45 -93
- package/lib/pad/padPane.js.map +1 -1
- package/lib/playlist/playlistPane.js +3 -20
- package/lib/playlist/playlistPane.js.map +1 -1
- package/lib/profile/editProfile.view.js +7 -24
- package/lib/profile/editProfile.view.js.map +1 -1
- package/lib/profile/profile.dom.js +0 -3
- package/lib/profile/profile.dom.js.map +1 -1
- package/lib/registerPanes.js +29 -27
- package/lib/registerPanes.js.map +1 -1
- package/lib/schedule/formsForSchedule.js.map +1 -1
- package/lib/schedule/schedulePane.js +62 -122
- package/lib/schedule/schedulePane.js.map +1 -1
- package/lib/sharing/sharingPane.js +2 -10
- package/lib/sharing/sharingPane.js.map +1 -1
- package/lib/slideshow/slideshowPane.js +9 -14
- package/lib/slideshow/slideshowPane.js.map +1 -1
- package/lib/socialPane.js +43 -124
- package/lib/socialPane.js.map +1 -1
- package/lib/tabbed/tabbedPane.js +1 -15
- package/lib/tabbed/tabbedPane.js.map +1 -1
- package/lib/tableViewPane.js +4 -7
- package/lib/tableViewPane.js.map +1 -1
- package/lib/test-import-export/common.js +2 -1
- package/lib/test-import-export/common.js.map +1 -1
- package/lib/test-import-export/edit-importer.js +7 -9
- package/lib/test-import-export/edit-importer.js.map +1 -1
- package/lib/transaction/pane.js +31 -90
- package/lib/transaction/pane.js.map +1 -1
- package/lib/transaction/period.js +20 -71
- package/lib/transaction/period.js.map +1 -1
- package/lib/trip/tripPane.js +30 -34
- package/lib/trip/tripPane.js.map +1 -1
- package/lib/trustedApplications/trustedApplications.dom.js +8 -34
- package/lib/trustedApplications/trustedApplications.dom.js.map +1 -1
- package/lib/trustedApplications/trustedApplications.test.js +3 -8
- package/lib/trustedApplications/trustedApplications.test.js.map +1 -1
- package/lib/trustedApplications/trustedApplications.utils.js +0 -10
- package/lib/trustedApplications/trustedApplications.utils.js.map +1 -1
- package/lib/trustedApplications/trustedApplications.view.js +1 -22
- package/lib/trustedApplications/trustedApplications.view.js.map +1 -1
- package/lib/ui/pane.js +22 -28
- package/lib/ui/pane.js.map +1 -1
- package/lib/versionInfo.d.ts +2 -0
- package/lib/versionInfo.d.ts.map +1 -1
- package/lib/versionInfo.js +18 -16
- package/lib/versionInfo.js.map +1 -1
- package/lib/video/videoPane.js +2 -5
- package/lib/video/videoPane.js.map +1 -1
- package/package.json +24 -24
- package/src/versionInfo.ts +18 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"microblogPane.js","names":["module","exports","icon","UI","icons","originalIconBase","name","label","subject","store","whether","ns","rdf","foaf","render","s","doc","SIOC","Namespace","SIOCt","FOAF","terms","RDF","kb","charCount","sf","fetcher","sparqlUpdater","updater","FollowList","user","userlist","uris","myFollows","each","sym","mf","add","any","uri","prototype","push","selectUser","length","Favorites","favorites","favoritesURI","split","created","c","favs","f","favorited","post","callback","batch","Statement","insert_statement","a","success","predicate","object","why","remove","delete_statement","Microblog","theUser","authn","currentUser","theAccount","preferences","get","getUser","User","avatar","id","getPost","Post","postLink","Date","anyValue","h","getHours","m","getMinutes","mo","da","ds","getDay","getDate","getMonth","getFullYear","date","mentions","message","String","creator","gen_random_uri","base","uriNonce","Math","floor","random","statusUpdate","statusMsg","replyTo","meta","myUserURI","getMyURI","myUser","newPost","microlist","micro","microlistelement","r","recipients","mblogs","mbl","replyBatch","b","me","console","log","myMicroblog","generateNewMB","loc","host","rememberMicroblog","set","cbgenUserMB","d","alert","triple","genUserMB","mb","myFavorites","myFollowList","Pane","microblogPane","TabManager","tablist","tabView","createElement","className","create","caption","view","isDefault","tab","innerHTML","change","addEventListener","evt","target","appendChild","getTabView","getElementById","replace","accounts","account","Ifollow","resourceType","thisIsMe","meUri","Tab","notify","messageString","xmsg","setTimeout","removeChild","header","that","lsFollowUser","username","mbconfirmFollow","_msg","followMe","removeMany","xfollowButton","disabled","followButtonLabel","doFollow","value","mbCancelNewMB","_evt","xupdateContainer","childNodes","xcreateNewMB","lsCreateNewMB","xcmb","xcmbName","xcmbId","xcmbAvatar","workspace","xcmbWritable","focus","mbSubmitPost","cbconfirmSubmit","responseText","xupdateSubmit","xupdateStatus","mbLetterCount","insertBefore","generatePost","words","mbUpdateWithReplies","xinReplyToContainer","word","match","atUser","recipient","xrecipients","xrecipientsSubmit","type","parentNode","recipChoice","recip","choice","toLowerCase","xupdateStatusCounter","style","color","xviewReply","headerContainer","xnotify","createTextNode","cols","xnewUser","subheaderContainer","creators","src","userName","setAttribute","xtabsList","_me","viewPost","i","xcloseContainer","xcloseButton","xpost","uholdsaccount","undefined","xuname","href","xunameText","xuavatar","xpostContent","postText","xpostLink","tags","mention","lookUpThing","postTags","postFunction","p","pop","t","person","replacePerson","RegExp","inReplyTo","xreplyTo","theReply","reply","genReplyTo","mbReplyTo","xconfirmDeletionDialog","mbDeletePost","lsconfirmNo","lsconfirmYes","reallyDelete","keyCode","confirmyes","confirmno","mbconfirmDeletePost","deleteThisNode","deleteMe","deleteContainerOf","deleteContainer","statementsMatching","getAttribute","batch_delete_statement","themaker","xreplyButton","xdeleteButton","mbFavorite","nid","favpost","xfavorite","cbFavorite","_c","_d","generatePostList","gmbPosts","postList","postlist","datelist","postDate","sort","reverse","followsView","getFollowed","userid","follow","fol","xfollows","creatorFollows","xfollowsList","thisPerson","streamView","postContainer","mbPosts","follows","smicroblogs","smb","concat","notificationsView","postNotificationContainer","postMentionContainer","mbnPosts","mbmPosts","microblogs","mbm","postNotificationList","postMentionList","build","microblogpane","ppane"],"sources":["../../src/microblogPane/microblogPane.js"],"sourcesContent":["/*\n Microblog pane\n Charles McKenzie <charles2@mit.edu>\n*/\n/* global alert */\nimport { authn, store } from 'solid-logic'\nimport * as UI from 'solid-ui'\n\nmodule.exports = {\n icon: UI.icons.originalIconBase + 'microblog/microblog.png',\n name: 'microblogPane',\n label: function (subject) {\n if (store.whether(subject, UI.ns.rdf('type'), UI.ns.foaf('Person'))) {\n return 'Microblog'\n } else {\n return null\n }\n },\n render: function (s, doc) {\n //* **********************************************\n // NAMESPACES SECTION\n //* **********************************************\n const SIOC = UI.rdf.Namespace('http://rdfs.org/sioc/ns#')\n const SIOCt = UI.rdf.Namespace('http://rdfs.org/sioc/types#')\n const FOAF = UI.rdf.Namespace('http://xmlns.com/foaf/0.1/')\n const terms = UI.rdf.Namespace('http://purl.org/dc/terms/')\n const RDF = UI.ns.rdf\n\n const kb = store\n const charCount = 140\n const sf = store.fetcher\n //* **********************************************\n // BACK END\n //* **********************************************\n const sparqlUpdater = kb.updater\n // ----------------------------------------------\n // FOLLOW LIST\n // store the URIs of followed users for\n // dereferencing the @replies\n // ----------------------------------------------\n const FollowList = function (user) {\n this.userlist = {}\n this.uris = {}\n const myFollows = kb.each(kb.sym(user), SIOC('follows'))\n for (const mf in myFollows) {\n this.add(kb.any(myFollows[mf], SIOC('id')), myFollows[mf].uri)\n }\n }\n FollowList.prototype.add = function (user, uri) {\n // add a user to the follows store\n if (this.userlist[user]) {\n if (!(uri in this.uris)) {\n this.userlist[user].push(uri)\n this.uris[uri] = ''\n }\n } else {\n this.userlist[user] = [uri]\n }\n }\n FollowList.prototype.selectUser = function (user) {\n // check if a user is in the follows list.\n if (this.userlist[user]) {\n return [this.userlist[user].length === 1, this.userlist[user]]\n } else {\n // user does not follow any users with this nick\n return [false, []]\n }\n }\n // ----------------------------------------------\n // FAVORITES\n // controls the list of favorites.\n // constructor expects a user as uri.\n // ----------------------------------------------\n const Favorites = function (user) {\n this.favorites = {}\n this.favoritesURI = ''\n if (!user) {\n // TODO is this even useful?\n return\n }\n this.user = user.split('#')[0]\n const created = kb.each(kb.sym(user), SIOC('creator_of'))\n for (const c in created) {\n if (kb.whether(created[c], RDF('type'), SIOCt('FavouriteThings'))) {\n this.favoritesURI = created[c]\n const favs = kb.each(created[c], SIOC('container_of'))\n for (const f in favs) {\n this.favorites[favs[f]] = ''\n }\n break\n }\n }\n }\n Favorites.prototype.favorited = function (post) {\n /* Favorited- returns true if the post is a favorite\n false otherwise */\n return kb.sym(post) in this.favorites\n }\n Favorites.prototype.add = function (post, callback) {\n const batch = new UI.rdf.Statement(\n this.favoritesURI,\n SIOC('container_of'),\n kb.sym(post),\n kb.sym(this.user)\n )\n sparqlUpdater.insert_statement(batch, function (a, success, c) {\n if (success) {\n kb.add(batch.subject, batch.predicate, batch.object, batch.why)\n }\n callback(a, success, c)\n })\n }\n Favorites.prototype.remove = function (post, callback) {\n const batch = new UI.rdf.Statement(\n this.favoritesURI,\n SIOC('container_of'),\n kb.sym(post),\n kb.sym(this.user)\n )\n sparqlUpdater.delete_statement(batch, function (a, success, c) {\n if (success) {\n kb.add(batch.subject, batch.predicate, batch.object, batch.why)\n }\n callback(a, success, c)\n })\n }\n // ----------------------------------------------\n // MICROBLOG\n // store the uri's of followed users for\n // dereferencing the @replies.\n // ----------------------------------------------\n const Microblog = function (kb) {\n this.kb = kb\n\n // attempt to fetch user account from local preferences if just\n // in case the user's foaf was not writable. add it to the store\n // this will probably need to change.\n const theUser = authn.currentUser()\n\n if (theUser) {\n let theAccount = UI.preferences.get('acct')\n\n if (theAccount) {\n theAccount = kb.sym(theAccount)\n }\n\n if (theUser && theAccount) {\n kb.add(\n theUser,\n FOAF('holdsAccount'),\n theAccount,\n theUser.uri.split('#')[0]\n )\n }\n }\n }\n Microblog.prototype.getUser = function (uri) {\n const User = {}\n User.name = kb.any(uri, SIOC('name')) ? kb.any(uri, SIOC('name')) : ''\n User.avatar = kb.any(uri, SIOC('avatar'))\n ? kb.any(uri, SIOC('avatar'))\n : ''\n User.id = kb.any(uri, SIOC('id'))\n User.sym = uri\n return User\n }\n\n Microblog.prototype.getPost = function (uri) {\n const Post = {}\n // date ----------\n let postLink = new Date(kb.anyValue(uri, terms('created')))\n let h = postLink.getHours()\n const a = h > 12 ? ' PM' : ' AM'\n h = h > 12 ? h - 12 : h\n let m = postLink.getMinutes()\n m = m < 10 ? '0' + m : m\n const mo = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec'\n ]\n const da = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\n const ds =\n da[postLink.getDay()] +\n ' ' +\n postLink.getDate() +\n ' ' +\n mo[postLink.getMonth()] +\n ' ' +\n postLink.getFullYear()\n postLink = h + ':' + m + a + ' on ' + ds\n Post.date = postLink\n // ---------\n Post.mentions = ''\n Post.message = String(kb.any(uri, SIOC('content')))\n Post.creator = kb.any(uri, SIOC('has_creator'))\n Post.uri = ''\n return Post\n }\n Microblog.prototype.gen_random_uri = function (base) {\n // generate random uri\n const uriNonce = base + '#n' + Math.floor(Math.random() * 10e9)\n return kb.sym(uriNonce)\n }\n Microblog.prototype.statusUpdate = function (\n statusMsg,\n callback,\n replyTo,\n meta\n ) {\n const myUserURI = this.getMyURI()\n const myUser = kb.sym(myUserURI.split('#')[0])\n const newPost = this.gen_random_uri(myUser.uri)\n const microlist = kb.each(kb.sym(myUserURI), SIOC('creator_of'))\n let micro\n for (const microlistelement in microlist) {\n if (\n kb.whether(\n microlist[microlistelement],\n RDF('type'),\n SIOCt('Microblog')\n ) &&\n !kb.whether(\n microlist[microlistelement],\n SIOC('topic'),\n kb.sym(this.getMyURI())\n )\n ) {\n micro = microlist[microlistelement]\n break\n }\n }\n\n // generate new post\n const batch = [\n new UI.rdf.Statement(\n newPost,\n RDF('type'),\n SIOCt('MicroblogPost'),\n myUser\n ),\n new UI.rdf.Statement(\n newPost,\n SIOC('has_creator'),\n kb.sym(myUserURI),\n myUser\n ),\n new UI.rdf.Statement(newPost, SIOC('content'), statusMsg, myUser),\n new UI.rdf.Statement(newPost, terms('created'), new Date(), myUser),\n new UI.rdf.Statement(micro, SIOC('container_of'), newPost, myUser)\n ]\n\n // message replies\n if (replyTo) {\n batch.push(\n new UI.rdf.Statement(\n newPost,\n SIOC('reply_of'),\n kb.sym(replyTo),\n myUser\n )\n )\n }\n\n // @replies, #hashtags, !groupReplies\n for (const r in meta.recipients) {\n batch.push(\n new UI.rdf.Statement(\n newPost,\n SIOC('topic'),\n kb.sym(meta.recipients[r]),\n myUser\n )\n )\n batch.push(\n new UI.rdf.Statement(kb.any(), SIOC('container_of'), newPost, myUser)\n )\n const mblogs = kb.each(kb.sym(meta.recipients[r]), SIOC('creator_of'))\n for (const mbl in mblogs) {\n if (\n kb.whether(mblogs[mbl], SIOC('topic'), kb.sym(meta.recipients[r]))\n ) {\n const replyBatch = new UI.rdf.Statement(\n mblogs[mbl],\n SIOC('container_of'),\n newPost,\n kb.sym(meta.recipients[r].split('#')[0])\n )\n sparqlUpdater.insert_statement(replyBatch)\n }\n }\n }\n\n sparqlUpdater.insert_statement(batch, function (a, b, c) {\n callback(a, b, c, batch)\n })\n }\n Microblog.prototype.getMyURI = function () {\n const me = authn.currentUser()\n console.log(me)\n const myMicroblog = kb.any(kb.sym(me), FOAF('holdsAccount'))\n console.log('\\n\\n' + myMicroblog)\n return myMicroblog ? myMicroblog.uri : false\n }\n Microblog.prototype.generateNewMB = function (id, name, avatar, loc) {\n const host = loc + '/' + id\n const rememberMicroblog = function () {\n UI.preferences.set('acct', host + '#' + id)\n }\n const cbgenUserMB = function (a, success, c, d) {\n if (success) {\n alert(\n 'Microblog generated at ' +\n host +\n '#' +\n id +\n 'please add <b>' +\n host +\n '</b> to your foaf.'\n )\n // mbCancelNewMB() @@TBD\n // assume the foaf is not writable and store the microblog to the\n // preferences for later retrieval.\n // this will probably need to change.\n rememberMicroblog()\n for (const triple in d) {\n kb.add(\n d[triple].subject,\n d[triple].predicate,\n d[triple].object,\n d[triple].why\n )\n }\n }\n }\n\n const genUserMB = [\n // user\n new UI.rdf.Statement(\n kb.sym(host + '#' + id),\n RDF('type'),\n SIOC('User'),\n kb.sym(host)\n ),\n new UI.rdf.Statement(\n kb.sym(host + '#' + id),\n SIOC('creator_of'),\n kb.sym(host + '#mb'),\n kb.sym(host)\n ),\n new UI.rdf.Statement(\n kb.sym(host + '#' + id),\n SIOC('creator_of'),\n kb.sym(host + '#mbn'),\n kb.sym(host)\n ),\n new UI.rdf.Statement(\n kb.sym(host + '#' + id),\n SIOC('creator_of'),\n kb.sym(host + '#fav'),\n kb.sym(host)\n ),\n new UI.rdf.Statement(\n kb.sym(host + '#' + id),\n SIOC('name'),\n name,\n kb.sym(host)\n ),\n new UI.rdf.Statement(\n kb.sym(host + '#' + id),\n SIOC('id'),\n id,\n kb.sym(host)\n ),\n new UI.rdf.Statement(\n kb.sym(host + '#' + id),\n RDF('label'),\n id,\n kb.sym(host)\n ),\n new UI.rdf.Statement(\n s,\n FOAF('holdsAccount'),\n kb.sym(host + '#' + id),\n kb.sym(host)\n ),\n // microblog\n new UI.rdf.Statement(\n kb.sym(host + '#mb'),\n RDF('type'),\n SIOCt('Microblog'),\n kb.sym(host)\n ),\n new UI.rdf.Statement(\n kb.sym(host + '#mb'),\n SIOC('has_creator'),\n kb.sym(host + '#' + id),\n kb.sym(host)\n ),\n // notification microblog\n new UI.rdf.Statement(\n kb.sym(host + '#mbn'),\n RDF('type'),\n SIOCt('Microblog'),\n kb.sym(host)\n ),\n new UI.rdf.Statement(\n kb.sym(host + '#mbn'),\n SIOC('topic'),\n kb.sym(host + '#' + id),\n kb.sym(host)\n ),\n new UI.rdf.Statement(\n kb.sym(host + '#mbn'),\n SIOC('has_creator'),\n kb.sym(host + '#' + id),\n kb.sym(host)\n ),\n // favorites container\n new UI.rdf.Statement(\n kb.sym(host + '#fav'),\n RDF('type'),\n SIOCt('FavouriteThings'),\n kb.sym(host)\n ),\n new UI.rdf.Statement(\n kb.sym(host + '#fav'),\n SIOC('has_creator'),\n kb.sym(host + '#' + id),\n kb.sym(host)\n )\n ]\n if (avatar) {\n // avatar optional\n genUserMB.push(\n new UI.rdf.Statement(\n kb.sym(host + '#' + id),\n SIOC('avatar'),\n kb.sym(avatar),\n kb.sym(host)\n )\n )\n }\n sparqlUpdater.insert_statement(genUserMB, cbgenUserMB)\n }\n const mb = new Microblog(kb)\n const myFavorites = new Favorites(mb.getMyURI())\n const myFollowList = new FollowList(mb.getMyURI())\n\n //* **********************************************\n // FRONT END FUNCTIONALITY\n //* **********************************************\n // ----------------------------------------------\n // PANE\n // User Interface for the Microblog Pane\n // ----------------------------------------------\n const Pane = function (s, doc, microblogPane) {\n const TabManager = function (doc) {\n this.tablist = {}\n this.doc = doc\n this.tabView = doc.createElement('ul')\n this.tabView.className = 'tabslist'\n }\n TabManager.prototype.create = function (id, caption, view, isDefault) {\n const tab = this.doc.createElement('li')\n tab.innerHTML = caption\n if (isDefault) {\n tab.className = 'active'\n }\n tab.id = id\n const change = this.change\n const tablist = this.tablist\n tab.addEventListener(\n 'click',\n function (evt) {\n change(evt.target.id, tablist, doc)\n },\n false\n )\n\n this.tablist[id] = { view: view.id, tab: tab }\n this.tabView.appendChild(tab)\n }\n TabManager.prototype.getTabView = function () {\n return this.tabView\n }\n TabManager.prototype.change = function (id, tablist, doc) {\n for (const tab in tablist) {\n if (tab === id) {\n tablist[id].tab.className = 'active'\n doc.getElementById(tablist[id].view).className += ' active'\n } else {\n const view = doc.getElementById(tablist[tab].view)\n view.className = view.className.replace(/\\w*active\\w*/, '')\n tablist[tab].tab.className = tablist[id].tab.className.replace(\n /\\w*active\\w*/,\n ''\n )\n }\n }\n }\n this.microblogPane = microblogPane\n const accounts = kb.each(s, FOAF('holdsAccount'))\n let account\n for (const a in accounts) {\n if (\n kb.whether(accounts[a], RDF('type'), SIOC('User')) &&\n kb.whether(\n kb.any(accounts[a], SIOC('creator_of')),\n RDF('type'),\n SIOCt('Microblog')\n )\n ) {\n account = accounts[a]\n break\n }\n }\n this.Ifollow = kb.whether(kb.sym(mb.getMyURI()), SIOC('follows'), account)\n const resourceType = kb.any(s, RDF('type'))\n if (\n resourceType.uri === SIOCt('Microblog').uri ||\n resourceType.uri === SIOCt('MicroblogPost').uri\n ) {\n this.thisIsMe = kb.any(s, SIOC('has_creator')).uri === mb.getMyURI()\n } else if (resourceType.uri === SIOC('User').uri) {\n this.thisIsMe = s.uri === mb.getMyURI()\n } else if (resourceType.uri === FOAF('Person').uri) {\n const me = authn.currentUser()\n const meUri = me && me.uri\n this.thisIsMe = s.uri === meUri\n } else {\n this.thisIsMe = false\n }\n\n this.Tab = new TabManager(doc)\n }\n\n Pane.prototype.notify = function (messageString) {\n const xmsg = doc.createElement('li')\n xmsg.className = 'notify'\n xmsg.innerHTML = messageString\n doc.getElementById('notify-container').appendChild(xmsg)\n setTimeout(function () {\n doc.getElementById('notify-container').removeChild(xmsg)\n // delete xmsg;\n }, 4000)\n }\n\n Pane.prototype.header = function (s, doc) {\n const that = this\n function lsFollowUser () {\n const myUser = kb.sym(mb.getMyURI())\n // var Ifollow = that.Ifollow\n const username = that.creator.name\n const mbconfirmFollow = function (uri, success, _msg) {\n if (success === true) {\n if (!that.Ifollow) {\n // prevent duplicate entries from being added to kb (because that was happening)\n if (\n !kb.whether(\n followMe.subject,\n followMe.predicate,\n followMe.object,\n followMe.why\n )\n ) {\n kb.add(\n followMe.subject,\n followMe.predicate,\n followMe.object,\n followMe.why\n )\n }\n } else {\n kb.removeMany(\n followMe.subject,\n followMe.predicate,\n followMe.object,\n followMe.why\n )\n }\n console.log(that.Ifollow)\n that.Ifollow = !that.Ifollow\n xfollowButton.disabled = false\n console.log(that.Ifollow)\n const followButtonLabel = that.Ifollow ? 'Unfollow ' : 'Follow '\n const doFollow = that.Ifollow ? 'now follow ' : 'no longer follow '\n xfollowButton.value = followButtonLabel + username\n that.notify('You ' + doFollow + username + '.')\n }\n }\n const followMe = new UI.rdf.Statement(\n myUser,\n SIOC('follows'),\n that.creator.sym,\n myUser\n )\n xfollowButton.disabled = true\n xfollowButton.value = 'Updating...'\n if (!that.Ifollow) {\n sparqlUpdater.insert_statement(followMe, mbconfirmFollow)\n } else {\n sparqlUpdater.delete_statement(followMe, mbconfirmFollow)\n }\n }\n const notify = function (messageString) {\n const xmsg = doc.createElement('li')\n xmsg.className = 'notify'\n xmsg.innerHTML = messageString\n doc.getElementById('notify-container').appendChild(xmsg)\n setTimeout(function () {\n doc.getElementById('notify-container').removeChild(xmsg)\n // delete xmsg;\n }, 4000)\n }\n const mbCancelNewMB = function (_evt) {\n xupdateContainer.removeChild(\n xupdateContainer.childNodes[xupdateContainer.childNodes.length - 1]\n )\n xcreateNewMB.disabled = false\n }\n const lsCreateNewMB = function (_evt) {\n // disable the create new microblog button.\n // then prefills the information.\n xcreateNewMB.disabled = true\n const xcmb = doc.createElement('div')\n const xcmbName = doc.createElement('input')\n if (kb.whether(s, FOAF('name'))) {\n // handle use of FOAF:NAME\n xcmbName.value = kb.any(s, FOAF('name'))\n } else {\n // handle use of family and given name\n xcmbName.value = kb.any(s, FOAF('givenname'))\n ? kb.any(s, FOAF('givenname')) + ' '\n : ''\n xcmbName.value += kb.any(s, FOAF('family_name'))\n ? kb.any(s, FOAF('givenname'))\n : ''\n xcmbName.value =\n kb.any(s, FOAF('givenname')) + ' ' + kb.any(s, FOAF('family_name'))\n }\n const xcmbId = doc.createElement('input')\n xcmbId.value = kb.any(s, FOAF('nick')) ? kb.any(s, FOAF('nick')) : ''\n const xcmbAvatar = doc.createElement('input')\n if (kb.whether(s, FOAF('img'))) {\n // handle use of img\n xcmbAvatar.value = kb.any(s, FOAF('img')).uri\n } else {\n // otherwise try depiction\n xcmbAvatar.value = kb.any(s, FOAF('depiction'))\n ? kb.any(s, FOAF('depiction')).uri\n : ''\n }\n let workspace\n // = kb.any(s,WORKSPACE) //TODO - ADD URI FOR WORKSPACE DEFINITION\n const xcmbWritable = doc.createElement('input')\n xcmbWritable.value =\n workspace || 'http://dig.csail.mit.edu/2007/wiki/sandbox' // @@@\n xcmb.innerHTML = `\n <form class =\"createNewMB\" id=\"createNewMB\">\n <p id=\"xcmbname\"><span class=\"\">Name: </span></p>\n <p id=\"xcmbid\">Id: </p>\n <p id=\"xcmbavatar\">Avatar: </p>\n <p id=\"xcmbwritable\">Host my microblog at: </p>\n <input type=\"button\" id=\"mbCancel\" value=\"Cancel\" />\n <input type=\"submit\" id=\"mbCreate\" value=\"Create!\" />\n </form>\n `\n xupdateContainer.appendChild(xcmb)\n doc.getElementById('xcmbname').appendChild(xcmbName)\n doc.getElementById('xcmbid').appendChild(xcmbId)\n doc.getElementById('xcmbavatar').appendChild(xcmbAvatar)\n doc.getElementById('xcmbwritable').appendChild(xcmbWritable)\n doc\n .getElementById('mbCancel')\n .addEventListener('click', mbCancelNewMB, false)\n doc.getElementById('createNewMB').addEventListener(\n 'submit',\n function () {\n mb.generateNewMB(\n xcmbId.value,\n xcmbName.value,\n xcmbAvatar.value,\n xcmbWritable.value\n )\n },\n false\n )\n xcmbName.focus()\n }\n const mbSubmitPost = function () {\n const meta = {\n recipients: []\n }\n // user has selected a microblog to post to\n if (mb.getMyURI()) {\n // let myUser = kb.sym(mb.getMyURI())\n // submission callback\n const cbconfirmSubmit = function (uri, success, responseText, d) {\n if (success === true) {\n for (const triple in d) {\n kb.add(\n d[triple].subject,\n d[triple].predicate,\n d[triple].object,\n d[triple].why\n )\n }\n xupdateSubmit.disabled = false\n xupdateStatus.value = ''\n mbLetterCount()\n notify('Microblog Updated.')\n if (that.thisIsMe) {\n doc\n .getElementById('postNotificationList')\n .insertBefore(\n that.generatePost(d[0].subject),\n doc.getElementById('postNotificationList').childNodes[0]\n )\n }\n } else {\n notify('There was a problem submitting your post.')\n }\n }\n const words = xupdateStatus.value.split(' ')\n const mbUpdateWithReplies = function () {\n xupdateSubmit.disabled = true\n xupdateSubmit.value = 'Updating...'\n mb.statusUpdate(\n xupdateStatus.value,\n cbconfirmSubmit,\n xinReplyToContainer.value,\n meta\n )\n }\n for (const word in words) {\n if (words[word].match(/@\\w+/)) {\n const atUser = words[word].replace(/\\W/g, '')\n const recipient = myFollowList.selectUser(atUser)\n if (recipient[0] === true) {\n meta.recipients.push(recipient[1][0])\n } else if (recipient[1].length > 1) {\n // if multiple users allow the user to choose\n const xrecipients = doc.createElement('select')\n const xrecipientsSubmit = doc.createElement('input')\n xrecipientsSubmit.type = 'button'\n xrecipientsSubmit.value = 'Continue'\n xrecipientsSubmit.addEventListener(\n 'click',\n function () {\n meta.recipients.push(recipient[1][xrecipients.value])\n mbUpdateWithReplies()\n xrecipients.parentNode.removeChild(xrecipientsSubmit)\n xrecipients.parentNode.removeChild(xrecipients)\n },\n false\n )\n const recipChoice = function (recip, c) {\n const name = kb.any(kb.sym(recip), SIOC('name'))\n const choice = doc.createElement('option')\n choice.value = c\n choice.innerHTML = name\n return choice\n }\n for (const r in recipient[1]) {\n xrecipients.appendChild(recipChoice(recipient[1][r], r))\n }\n xupdateContainer.appendChild(xrecipients)\n xupdateContainer.appendChild(xrecipientsSubmit)\n return\n } else {\n // no users known or self reference.\n if (\n String(\n kb.any(kb.sym(mb.getMyURI()), SIOC('id'))\n ).toLowerCase() === atUser.toLowerCase()\n ) {\n meta.recipients.push(mb.getMyURI())\n } else {\n notify(\n 'You do not follow ' +\n atUser +\n '. Try following ' +\n atUser +\n ' before mentioning them.'\n )\n return\n }\n }\n }\n /* else if(words[word].match(/\\#\\w+/)){\n //hashtag\n } else if(words[word].match(/\\!\\w+/)){\n //usergroup\n } */\n }\n mbUpdateWithReplies()\n } else {\n notify('Please set your microblog first.')\n }\n }\n const mbLetterCount = function () {\n xupdateStatusCounter.innerHTML = charCount - xupdateStatus.value.length\n xupdateStatusCounter.style.color =\n charCount - xupdateStatus.value.length < 0 ? '#c33' : ''\n if (xupdateStatus.value.length === 0) {\n xinReplyToContainer.value = ''\n xupdateSubmit.value = 'Send'\n }\n }\n // reply viewer\n const xviewReply = doc.createElement('ul')\n xviewReply.className = 'replyView'\n xviewReply.addEventListener(\n 'click',\n function () {\n xviewReply.className = 'replyView'\n },\n false\n )\n this.xviewReply = xviewReply\n const headerContainer = doc.createElement('div')\n headerContainer.className = 'header-container'\n\n // ---create status update box---\n const xnotify = doc.createElement('ul')\n xnotify.id = 'notify-container'\n xnotify.className = 'notify-container'\n this.xnotify = xnotify\n const xupdateContainer = doc.createElement('form')\n xupdateContainer.className = 'update-container'\n xupdateContainer.innerHTML = '<h3>What are you up to?</h3>'\n let xinReplyToContainer\n let xupdateStatus\n let xupdateStatusCounter\n let xupdateSubmit\n let xcreateNewMB\n if (mb.getMyURI()) {\n xinReplyToContainer = doc.createElement('input')\n xinReplyToContainer.id = 'xinReplyToContainer'\n xinReplyToContainer.type = 'hidden'\n\n xupdateStatus = doc.createElement('textarea')\n xupdateStatus.id = 'xupdateStatus'\n\n xupdateStatusCounter = doc.createElement('span')\n xupdateStatusCounter.appendChild(doc.createTextNode(charCount))\n xupdateStatus.cols = 30\n xupdateStatus.addEventListener('keyup', mbLetterCount, false)\n xupdateStatus.addEventListener('focus', mbLetterCount, false)\n\n xupdateSubmit = doc.createElement('input')\n xupdateSubmit.id = 'xupdateSubmit'\n xupdateSubmit.type = 'submit'\n xupdateSubmit.value = 'Send'\n\n xupdateContainer.appendChild(xinReplyToContainer)\n xupdateContainer.appendChild(xupdateStatusCounter)\n xupdateContainer.appendChild(xupdateStatus)\n xupdateContainer.appendChild(xupdateSubmit)\n xupdateContainer.addEventListener('submit', mbSubmitPost, false)\n } else {\n const xnewUser = doc.createTextNode(\n \"Hi, it looks like you don't have a microblog, \" +\n ' would you like to create one? '\n )\n xcreateNewMB = doc.createElement('input')\n xcreateNewMB.type = 'button'\n xcreateNewMB.value = 'Create a new Microblog'\n xcreateNewMB.addEventListener('click', lsCreateNewMB, false)\n xupdateContainer.appendChild(xnewUser)\n xupdateContainer.appendChild(xcreateNewMB)\n }\n\n headerContainer.appendChild(xupdateContainer)\n\n const subheaderContainer = doc.createElement('div')\n subheaderContainer.className = 'subheader-container'\n\n // user header\n // this.creator\n const creators = kb.each(s, FOAF('holdsAccount'))\n let creator\n for (const c in creators) {\n if (\n kb.whether(creators[c], RDF('type'), SIOC('User')) &&\n kb.whether(\n kb.any(creators[c], SIOC('creator_of')),\n RDF('type'),\n SIOCt('Microblog')\n )\n ) {\n creator = creators[c]\n // var mb = kb.sym(creator.uri.split(\"#\")[0]);\n // store.fetcher.refresh(mb);\n break\n // TODO add support for more than one microblog in same foaf\n }\n }\n let xfollowButton\n if (creator) {\n this.creator = mb.getUser(creator)\n // ---display avatar, if available ---\n if (this.creator.avatar !== '') {\n const avatar = doc.createElement('img')\n avatar.src = this.creator.avatar.uri\n subheaderContainer.appendChild(avatar)\n }\n // ---generate name ---\n const userName = doc.createElement('h1')\n userName.className = 'fn'\n userName.appendChild(\n doc.createTextNode(this.creator.name + ' (' + this.creator.id + ')')\n )\n subheaderContainer.appendChild(userName)\n // ---display follow button---\n if (!this.thisIsMe && mb.getMyURI()) {\n xfollowButton = doc.createElement('input')\n xfollowButton.setAttribute('type', 'button')\n const followButtonLabel = this.Ifollow ? 'Unfollow ' : 'Follow '\n xfollowButton.value = followButtonLabel + this.creator.name\n xfollowButton.addEventListener('click', lsFollowUser, false)\n subheaderContainer.appendChild(xfollowButton)\n }\n // user header end\n // header tabs\n const xtabsList = this.Tab.getTabView()\n headerContainer.appendChild(subheaderContainer)\n headerContainer.appendChild(xtabsList)\n }\n return headerContainer\n }\n Pane.prototype.generatePost = function (post, _me) {\n /*\n generatePost - Creates and formats microblog posts\n post - symbol of the uri the post in question\n */\n const that = this\n const viewPost = function (uris) {\n const xviewReply = that.xviewReply\n for (let i = 0; i < xviewReply.childNodes.length; i++) {\n xviewReply.removeChild(xviewReply.childNodes[0])\n }\n const xcloseContainer = doc.createElement('li')\n xcloseContainer.className = 'closeContainer'\n const xcloseButton = doc.createElement('span')\n xcloseButton.innerHTML = '×'\n xcloseButton.className = 'closeButton'\n xcloseContainer.appendChild(xcloseButton)\n xviewReply.appendChild(xcloseContainer)\n for (const uri in uris) {\n xviewReply.appendChild(\n that.generatePost(kb.sym(uris[uri]), this.thisIsMe, 'view')\n )\n }\n xviewReply.className = 'replyView-active'\n that.microblogPane.appendChild(xviewReply)\n }\n // container for post\n const xpost = doc.createElement('li')\n xpost.className = 'post'\n xpost.setAttribute('id', String(post.uri).split('#')[1])\n const Post = mb.getPost(post)\n // username text\n // var uname = kb.any(kb.any(post, SIOC('has_creator')), SIOC('id'))\n const uholdsaccount = kb.any(\n undefined,\n FOAF('holdsAccount'),\n kb.any(post, SIOC('has_creator'))\n )\n const xuname = doc.createElement('a')\n xuname.href = uholdsaccount.uri\n xuname.className = 'userLink'\n const xunameText = doc.createTextNode(mb.getUser(Post.creator).id)\n xuname.appendChild(xunameText)\n // user image\n const xuavatar = doc.createElement('img')\n xuavatar.src = mb.getUser(Post.creator).avatar.uri\n xuavatar.className = 'postAvatar'\n // post content\n const xpostContent = doc.createElement('blockquote')\n let postText = Post.message\n // post date\n const xpostLink = doc.createElement('a')\n xpostLink.className = 'postLink'\n xpostLink.addEventListener(\n 'click',\n function () {\n viewPost([post.uri])\n },\n false\n )\n xpostLink.id = 'post_' + String(post.uri).split('#')[1]\n xpostLink.setAttribute('content', post.uri)\n xpostLink.setAttribute('property', 'permalink')\n const postLink = doc.createTextNode(\n Post.date ? Post.date : 'post date unknown'\n )\n xpostLink.appendChild(postLink)\n\n // LINK META DATA (MENTIONS, HASHTAGS, GROUPS)\n const mentions = kb.each(post, SIOC('topic'))\n const tags = {}\n\n for (const mention in mentions) {\n sf.lookUpThing(mentions[mention])\n const id = kb.any(mentions[mention], SIOC('id'))\n tags['@' + id] = mentions[mention]\n }\n const postTags = postText.match(/(@|#|!)\\w+/g)\n const postFunction = function () {\n const p = postTags.pop()\n return tags[p]\n ? kb.any(undefined, FOAF('holdsAccount'), tags[p]).uri\n : p\n }\n for (const t in tags) {\n const person = t.replace(/@/, '')\n const replacePerson = RegExp('(@|!|#)(' + person + ')')\n postText = postText.replace(\n replacePerson,\n '$1<a href=\"' + postFunction() + '\">$2</a>'\n )\n }\n xpostContent.innerHTML = postText\n\n // in reply to logic\n // This has the potential to support a post that replies to many messages.\n const inReplyTo = kb.each(post, SIOC('reply_of'))\n const xreplyTo = doc.createElement('span')\n let theReply\n for (const reply in inReplyTo) {\n theReply = String(inReplyTo[reply]).replace(/<|>/g, '')\n const genReplyTo = function () {\n const reply = doc.createElement('a')\n reply.innerHTML = ', <b>in reply to</b>'\n reply.addEventListener(\n 'click',\n function () {\n viewPost([post.uri, theReply])\n return false\n },\n false\n )\n return reply\n }\n xreplyTo.appendChild(genReplyTo())\n }\n\n // END LINK META DATA\n // add the reply to and delete buttons to the interface\n const mbReplyTo = function () {\n const id = mb.getUser(Post.creator).id\n const xupdateStatus = doc.getElementById('xupdateStatus')\n const xinReplyToContainer = doc.getElementById('xinReplyToContainer')\n const xupdateSubmit = doc.getElementById('xupdateSubmit')\n xupdateStatus.value = '@' + id + ' '\n xupdateStatus.focus()\n xinReplyToContainer.value = post.uri\n xupdateSubmit.value = 'Reply'\n }\n let xconfirmDeletionDialog\n const mbDeletePost = function (evt) {\n const lsconfirmNo = function () {\n doc\n .getElementById('notify-container')\n .removeChild(xconfirmDeletionDialog)\n evt.target.disabled = false\n }\n const lsconfirmYes = function () {\n reallyDelete()\n doc\n .getElementById('notify-container')\n .removeChild(xconfirmDeletionDialog)\n }\n evt.target.disabled = true\n xconfirmDeletionDialog = doc.createElement('li')\n xconfirmDeletionDialog.className = 'notify conf'\n xconfirmDeletionDialog.innerHTML +=\n '<p>Are you sure you want to delete this post?</p>'\n xconfirmDeletionDialog.addEventListener(\n 'keyup',\n function (evt) {\n if (evt.keyCode === 27) {\n lsconfirmNo()\n }\n },\n false\n )\n const confirmyes = doc.createElement('input')\n confirmyes.type = 'button'\n confirmyes.className = 'confirm'\n confirmyes.value = 'Delete'\n confirmyes.addEventListener('click', lsconfirmYes, false)\n const confirmno = doc.createElement('input')\n confirmno.type = 'button'\n confirmno.className = 'confirm'\n confirmno.value = 'Cancel'\n confirmno.addEventListener('click', lsconfirmNo, false)\n xconfirmDeletionDialog.appendChild(confirmno)\n xconfirmDeletionDialog.appendChild(confirmyes)\n doc\n .getElementById('notify-container')\n .appendChild(xconfirmDeletionDialog)\n confirmno.focus()\n\n const reallyDelete = function () {\n // callback after deletion\n const mbconfirmDeletePost = function (a, success) {\n if (success) {\n that.notify('Post deleted.')\n // update the ui to reflect model changes.\n const deleteThisNode = evt.target.parentNode\n deleteThisNode.parentNode.removeChild(deleteThisNode)\n kb.removeMany(deleteMe)\n } else {\n that.notify('Oops, there was a problem, please try again')\n evt.target.disabled = true\n }\n }\n // delete references to post\n const deleteContainerOf = function (a, success) {\n if (success) {\n const deleteContainer = kb.statementsMatching(\n undefined,\n SIOC('container_of'),\n kb.sym(\n doc\n .getElementById('post_' + evt.target.parentNode.id)\n .getAttribute('content')\n )\n )\n sparqlUpdater.batch_delete_statement(\n deleteContainer,\n mbconfirmDeletePost\n )\n } else {\n that.notify('Oops, there was a problem, please try again')\n evt.target.disabled = false\n }\n }\n // delete attributes of post\n evt.target.disabled = true\n const deleteMe = kb.statementsMatching(\n kb.sym(\n doc\n .getElementById('post_' + evt.target.parentNode.id)\n .getAttribute('content')\n )\n )\n sparqlUpdater.batch_delete_statement(deleteMe, deleteContainerOf)\n }\n }\n let themaker\n let xreplyButton\n let xdeleteButton\n if (mb.getMyURI()) {\n // If the microblog in question does not belong to the user,\n // display the delete post and reply to post buttons.\n themaker = kb.any(post, SIOC('has_creator'))\n if (mb.getMyURI() !== themaker.uri) {\n xreplyButton = doc.createElement('input')\n xreplyButton.type = 'button'\n xreplyButton.value = 'reply'\n xreplyButton.className = 'reply'\n xreplyButton.addEventListener('click', mbReplyTo, false)\n } else {\n xdeleteButton = doc.createElement('input')\n xdeleteButton.type = 'button'\n xdeleteButton.value = 'Delete'\n xdeleteButton.className = 'reply'\n xdeleteButton.addEventListener('click', mbDeletePost, false)\n }\n }\n\n const mbFavorite = function (evt) {\n const nid = evt.target.parentNode.id\n const favpost = doc.getElementById('post_' + nid).getAttribute('content')\n xfavorite.className += ' ing'\n const cbFavorite = function (a, success, _c, _d) {\n if (success) {\n xfavorite.className =\n xfavorite.className.split(' ')[1] === 'ed'\n ? 'favorit'\n : 'favorit ed'\n }\n }\n if (!myFavorites.favorited(favpost)) {\n myFavorites.add(favpost, cbFavorite)\n } else {\n myFavorites.remove(favpost, cbFavorite)\n }\n }\n const xfavorite = doc.createElement('a')\n xfavorite.innerHTML = '★'\n xfavorite.addEventListener('click', mbFavorite, false)\n if (myFavorites.favorited(post.uri)) {\n xfavorite.className = 'favorit ed'\n } else {\n xfavorite.className = 'favorit'\n }\n // build\n xpost.appendChild(xuavatar)\n xpost.appendChild(xpostContent)\n if (mb.getMyURI()) {\n xpost.appendChild(xfavorite)\n if (mb.getMyURI() !== themaker.uri) {\n xpost.appendChild(xreplyButton)\n } else {\n xpost.appendChild(xdeleteButton)\n }\n }\n xpost.appendChild(xuname)\n xpost.appendChild(xpostLink)\n if (inReplyTo !== '') {\n xpost.appendChild(xreplyTo)\n }\n return xpost\n }\n Pane.prototype.generatePostList = function (gmbPosts) {\n /*\n generatePostList - Generate the posts and\n display their results on the interface.\n */\n const postList = doc.createElement('ul')\n const postlist = {}\n const datelist = []\n for (const post in gmbPosts) {\n const postDate = kb.any(gmbPosts[post], terms('created'))\n if (postDate) {\n datelist.push(postDate)\n postlist[postDate] = this.generatePost(gmbPosts[post], this.thisIsMe)\n }\n }\n datelist.sort().reverse()\n for (const d in datelist) {\n postList.appendChild(postlist[datelist[d]])\n }\n return postList\n }\n Pane.prototype.followsView = function () {\n const getFollowed = function (user) {\n let userid = kb.any(user, SIOC('id'))\n const follow = doc.createElement('li')\n follow.className = 'follow'\n userid = userid || user.uri\n let fol = kb.any(undefined, FOAF('holdsAccount'), user)\n fol = fol ? fol.uri : user.uri\n follow.innerHTML = '<a href=\"' + fol + '\">' + userid + '</a>'\n return follow\n }\n const xfollows = doc.createElement('div')\n xfollows.id = 'xfollows'\n xfollows.className = 'followlist-container view-container'\n if (this.creator && kb.whether(this.creator.sym, SIOC('follows'))) {\n const creatorFollows = kb.each(this.creator.sym, SIOC('follows'))\n const xfollowsList = doc.createElement('ul')\n for (const thisPerson in creatorFollows) {\n xfollowsList.appendChild(getFollowed(creatorFollows[thisPerson]))\n }\n xfollows.appendChild(xfollowsList)\n }\n this.Tab.create('tab-follows', 'Follows', xfollows, false)\n return xfollows\n }\n Pane.prototype.streamView = function (s, doc) {\n const postContainer = doc.createElement('div')\n postContainer.id = 'postContainer'\n postContainer.className = 'post-container view-container active'\n let mbPosts = []\n if (kb.whether(s, FOAF('name')) && kb.whether(s, FOAF('holdsAccount'))) {\n sf.lookUpThing(kb.any(s, FOAF('holdsAccount')))\n const follows = kb.each(kb.any(s, FOAF('holdsAccount')), SIOC('follows'))\n for (const f in follows) {\n sf.lookUpThing(follows[f])\n // look up people user follows\n const smicroblogs = kb.each(follows[f], SIOC('creator_of'))\n // get the follows microblogs\n for (const smb in smicroblogs) {\n sf.lookUpThing(smicroblogs[smb])\n if (kb.whether(smicroblogs[smb], SIOC('topic'), follows[f])) {\n continue\n } else {\n mbPosts = mbPosts.concat(\n kb.each(smicroblogs[smb], SIOC('container_of'))\n )\n }\n }\n }\n }\n if (mbPosts.length > 0) {\n const postList = this.generatePostList(mbPosts)\n // generate stream\n postList.id = 'postList'\n postList.className = 'postList'\n postContainer.appendChild(postList)\n }\n this.Tab.create('tab-stream', 'By Follows', postContainer, true)\n return postContainer\n }\n Pane.prototype.notificationsView = function (s, doc) {\n const postNotificationContainer = doc.createElement('div')\n postNotificationContainer.id = 'postNotificationContainer'\n postNotificationContainer.className =\n 'notification-container view-container'\n const postMentionContainer = doc.createElement('div')\n postMentionContainer.id = 'postMentionContainer'\n postMentionContainer.className = 'mention-container view-container'\n let mbnPosts = []\n let mbmPosts = []\n // get mbs that I am the creator of.\n const theUser = kb.any(s, FOAF('holdsAccount'))\n const user = kb.any(theUser, SIOC('id'))\n const microblogs = kb.each(theUser, SIOC('creator_of'))\n for (const mbm in microblogs) {\n sf.lookUpThing(microblogs[mbm])\n if (kb.whether(microblogs[mbm], SIOC('topic'), theUser)) {\n mbmPosts = mbmPosts.concat(\n kb.each(microblogs[mbm], SIOC('container_of'))\n )\n } else {\n if (kb.whether(microblogs[mbm], RDF('type'), SIOCt('Microblog'))) {\n mbnPosts = mbnPosts.concat(\n kb.each(microblogs[mbm], SIOC('container_of'))\n )\n }\n }\n }\n const postNotificationList = this.generatePostList(mbnPosts)\n postNotificationList.id = 'postNotificationList'\n postNotificationList.className = 'postList'\n postNotificationContainer.appendChild(postNotificationList)\n\n const postMentionList = this.generatePostList(mbmPosts)\n postMentionList.id = 'postMentionList'\n postMentionList.className = 'postList'\n postMentionContainer.appendChild(postMentionList)\n this.postMentionContainer = postMentionContainer\n this.postNotificationContainer = postNotificationContainer\n this.Tab.create(\n 'tab-by-user',\n 'By ' + user,\n postNotificationContainer,\n false\n )\n this.Tab.create('tab-at-user', '@' + user, postMentionContainer, false)\n }\n Pane.prototype.build = function () {\n const microblogPane = this.microblogPane\n this.headerContainer = this.header(s, doc)\n this.postContainer = this.streamView(s, doc)\n this.notificationsView(s, doc)\n this.xfollows = this.followsView()\n microblogPane.className = 'ppane'\n microblogPane.appendChild(this.xviewReply)\n microblogPane.appendChild(this.xnotify)\n microblogPane.appendChild(this.headerContainer)\n if (this.xfollows !== undefined) {\n microblogPane.appendChild(this.xfollows)\n }\n microblogPane.appendChild(this.postContainer)\n microblogPane.appendChild(this.postNotificationContainer)\n microblogPane.appendChild(this.postMentionContainer)\n }\n\n const microblogpane = doc.createElement('div')\n // var getusersfollows = function(uri){\n // var follows = new Object();\n // var followsa = {follows:0, matches:0};\n // var accounts = kb.each(s, FOAF(\"holdsAccount\"));\n // //get all of the accounts that a person holds\n // for (var acct in accounts){\n // var account = accounts[acct].uri;\n // var act = kb.each(kb.sym(account),SIOC(\"follows\"));\n // for (var a in act){\n // var thisuri = act[a].uri.split(\"#\")[0];\n // if (!follows[thisuri]){followsa.follows+=1;}\n // follows[thisuri] =true;\n // }\n // }\n //\n // var buildPaneUI = function(uri){\n // followsa.matches = (follows[uri]) ? followsa.matches+1: followsa.matches;\n // console.log(follows.toSource());\n // if(followsa.follows == followsa.matches ){\n const ppane = new Pane(s, doc, microblogpane)\n ppane.build()\n // return false;\n // }\n // else{\n // return true;\n // }\n // }\n // sf.addCallback('done',buildPaneUI);\n // sf.addCallback('fail',buildPaneUI);\n // //fetch each of the followers\n // for (var f in follows){\n // sf.refresh(kb.sym(f));\n // }\n // }(s);\n return microblogpane\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"microblogPane.js","names":["module","exports","icon","UI","icons","originalIconBase","name","label","subject","store","whether","ns","rdf","foaf","render","s","doc","SIOC","Namespace","SIOCt","FOAF","terms","RDF","kb","charCount","sf","fetcher","sparqlUpdater","updater","FollowList","user","userlist","uris","myFollows","each","sym","mf","add","any","uri","prototype","push","selectUser","length","Favorites","favorites","favoritesURI","split","created","c","favs","f","favorited","post","callback","batch","Statement","insert_statement","a","success","predicate","object","why","remove","delete_statement","Microblog","theUser","authn","currentUser","theAccount","preferences","get","getUser","User","avatar","id","getPost","Post","postLink","Date","anyValue","h","getHours","m","getMinutes","mo","da","ds","getDay","getDate","getMonth","getFullYear","date","mentions","message","String","creator","gen_random_uri","base","uriNonce","Math","floor","random","statusUpdate","statusMsg","replyTo","meta","myUserURI","getMyURI","myUser","newPost","microlist","micro","microlistelement","r","recipients","mblogs","mbl","replyBatch","b","me","console","log","myMicroblog","generateNewMB","loc","host","rememberMicroblog","set","cbgenUserMB","d","alert","triple","genUserMB","mb","myFavorites","myFollowList","Pane","microblogPane","TabManager","tablist","tabView","createElement","className","create","caption","view","isDefault","tab","innerHTML","change","addEventListener","evt","target","appendChild","getTabView","getElementById","replace","accounts","account","Ifollow","resourceType","thisIsMe","meUri","Tab","notify","messageString","xmsg","setTimeout","removeChild","header","that","lsFollowUser","username","mbconfirmFollow","_msg","followMe","removeMany","xfollowButton","disabled","followButtonLabel","doFollow","value","mbCancelNewMB","_evt","xupdateContainer","childNodes","xcreateNewMB","lsCreateNewMB","xcmb","xcmbName","xcmbId","xcmbAvatar","workspace","xcmbWritable","focus","mbSubmitPost","cbconfirmSubmit","responseText","xupdateSubmit","xupdateStatus","mbLetterCount","insertBefore","generatePost","words","mbUpdateWithReplies","xinReplyToContainer","word","match","atUser","recipient","xrecipients","xrecipientsSubmit","type","parentNode","recipChoice","recip","choice","toLowerCase","xupdateStatusCounter","style","color","xviewReply","headerContainer","xnotify","createTextNode","cols","xnewUser","subheaderContainer","creators","src","userName","setAttribute","xtabsList","_me","viewPost","i","xcloseContainer","xcloseButton","xpost","uholdsaccount","undefined","xuname","href","xunameText","xuavatar","xpostContent","postText","xpostLink","tags","mention","lookUpThing","postTags","postFunction","p","pop","t","person","replacePerson","RegExp","inReplyTo","xreplyTo","theReply","reply","genReplyTo","mbReplyTo","xconfirmDeletionDialog","mbDeletePost","lsconfirmNo","lsconfirmYes","reallyDelete","keyCode","confirmyes","confirmno","mbconfirmDeletePost","deleteThisNode","deleteMe","deleteContainerOf","deleteContainer","statementsMatching","getAttribute","batch_delete_statement","themaker","xreplyButton","xdeleteButton","mbFavorite","nid","favpost","xfavorite","cbFavorite","_c","_d","generatePostList","gmbPosts","postList","postlist","datelist","postDate","sort","reverse","followsView","getFollowed","userid","follow","fol","xfollows","creatorFollows","xfollowsList","thisPerson","streamView","postContainer","mbPosts","follows","smicroblogs","smb","concat","notificationsView","postNotificationContainer","postMentionContainer","mbnPosts","mbmPosts","microblogs","mbm","postNotificationList","postMentionList","build","microblogpane","ppane"],"sources":["../../src/microblogPane/microblogPane.js"],"sourcesContent":["/*\n Microblog pane\n Charles McKenzie <charles2@mit.edu>\n*/\n/* global alert */\nimport { authn, store } from 'solid-logic'\nimport * as UI from 'solid-ui'\n\nmodule.exports = {\n icon: UI.icons.originalIconBase + 'microblog/microblog.png',\n name: 'microblogPane',\n label: function (subject) {\n if (store.whether(subject, UI.ns.rdf('type'), UI.ns.foaf('Person'))) {\n return 'Microblog'\n } else {\n return null\n }\n },\n render: function (s, doc) {\n //* **********************************************\n // NAMESPACES SECTION\n //* **********************************************\n const SIOC = UI.rdf.Namespace('http://rdfs.org/sioc/ns#')\n const SIOCt = UI.rdf.Namespace('http://rdfs.org/sioc/types#')\n const FOAF = UI.rdf.Namespace('http://xmlns.com/foaf/0.1/')\n const terms = UI.rdf.Namespace('http://purl.org/dc/terms/')\n const RDF = UI.ns.rdf\n\n const kb = store\n const charCount = 140\n const sf = store.fetcher\n //* **********************************************\n // BACK END\n //* **********************************************\n const sparqlUpdater = kb.updater\n // ----------------------------------------------\n // FOLLOW LIST\n // store the URIs of followed users for\n // dereferencing the @replies\n // ----------------------------------------------\n const FollowList = function (user) {\n this.userlist = {}\n this.uris = {}\n const myFollows = kb.each(kb.sym(user), SIOC('follows'))\n for (const mf in myFollows) {\n this.add(kb.any(myFollows[mf], SIOC('id')), myFollows[mf].uri)\n }\n }\n FollowList.prototype.add = function (user, uri) {\n // add a user to the follows store\n if (this.userlist[user]) {\n if (!(uri in this.uris)) {\n this.userlist[user].push(uri)\n this.uris[uri] = ''\n }\n } else {\n this.userlist[user] = [uri]\n }\n }\n FollowList.prototype.selectUser = function (user) {\n // check if a user is in the follows list.\n if (this.userlist[user]) {\n return [this.userlist[user].length === 1, this.userlist[user]]\n } else {\n // user does not follow any users with this nick\n return [false, []]\n }\n }\n // ----------------------------------------------\n // FAVORITES\n // controls the list of favorites.\n // constructor expects a user as uri.\n // ----------------------------------------------\n const Favorites = function (user) {\n this.favorites = {}\n this.favoritesURI = ''\n if (!user) {\n // TODO is this even useful?\n return\n }\n this.user = user.split('#')[0]\n const created = kb.each(kb.sym(user), SIOC('creator_of'))\n for (const c in created) {\n if (kb.whether(created[c], RDF('type'), SIOCt('FavouriteThings'))) {\n this.favoritesURI = created[c]\n const favs = kb.each(created[c], SIOC('container_of'))\n for (const f in favs) {\n this.favorites[favs[f]] = ''\n }\n break\n }\n }\n }\n Favorites.prototype.favorited = function (post) {\n /* Favorited- returns true if the post is a favorite\n false otherwise */\n return kb.sym(post) in this.favorites\n }\n Favorites.prototype.add = function (post, callback) {\n const batch = new UI.rdf.Statement(\n this.favoritesURI,\n SIOC('container_of'),\n kb.sym(post),\n kb.sym(this.user)\n )\n sparqlUpdater.insert_statement(batch, function (a, success, c) {\n if (success) {\n kb.add(batch.subject, batch.predicate, batch.object, batch.why)\n }\n callback(a, success, c)\n })\n }\n Favorites.prototype.remove = function (post, callback) {\n const batch = new UI.rdf.Statement(\n this.favoritesURI,\n SIOC('container_of'),\n kb.sym(post),\n kb.sym(this.user)\n )\n sparqlUpdater.delete_statement(batch, function (a, success, c) {\n if (success) {\n kb.add(batch.subject, batch.predicate, batch.object, batch.why)\n }\n callback(a, success, c)\n })\n }\n // ----------------------------------------------\n // MICROBLOG\n // store the uri's of followed users for\n // dereferencing the @replies.\n // ----------------------------------------------\n const Microblog = function (kb) {\n this.kb = kb\n\n // attempt to fetch user account from local preferences if just\n // in case the user's foaf was not writable. add it to the store\n // this will probably need to change.\n const theUser = authn.currentUser()\n\n if (theUser) {\n let theAccount = UI.preferences.get('acct')\n\n if (theAccount) {\n theAccount = kb.sym(theAccount)\n }\n\n if (theUser && theAccount) {\n kb.add(\n theUser,\n FOAF('holdsAccount'),\n theAccount,\n theUser.uri.split('#')[0]\n )\n }\n }\n }\n Microblog.prototype.getUser = function (uri) {\n const User = {}\n User.name = kb.any(uri, SIOC('name')) ? kb.any(uri, SIOC('name')) : ''\n User.avatar = kb.any(uri, SIOC('avatar'))\n ? kb.any(uri, SIOC('avatar'))\n : ''\n User.id = kb.any(uri, SIOC('id'))\n User.sym = uri\n return User\n }\n\n Microblog.prototype.getPost = function (uri) {\n const Post = {}\n // date ----------\n let postLink = new Date(kb.anyValue(uri, terms('created')))\n let h = postLink.getHours()\n const a = h > 12 ? ' PM' : ' AM'\n h = h > 12 ? h - 12 : h\n let m = postLink.getMinutes()\n m = m < 10 ? '0' + m : m\n const mo = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec'\n ]\n const da = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\n const ds =\n da[postLink.getDay()] +\n ' ' +\n postLink.getDate() +\n ' ' +\n mo[postLink.getMonth()] +\n ' ' +\n postLink.getFullYear()\n postLink = h + ':' + m + a + ' on ' + ds\n Post.date = postLink\n // ---------\n Post.mentions = ''\n Post.message = String(kb.any(uri, SIOC('content')))\n Post.creator = kb.any(uri, SIOC('has_creator'))\n Post.uri = ''\n return Post\n }\n Microblog.prototype.gen_random_uri = function (base) {\n // generate random uri\n const uriNonce = base + '#n' + Math.floor(Math.random() * 10e9)\n return kb.sym(uriNonce)\n }\n Microblog.prototype.statusUpdate = function (\n statusMsg,\n callback,\n replyTo,\n meta\n ) {\n const myUserURI = this.getMyURI()\n const myUser = kb.sym(myUserURI.split('#')[0])\n const newPost = this.gen_random_uri(myUser.uri)\n const microlist = kb.each(kb.sym(myUserURI), SIOC('creator_of'))\n let micro\n for (const microlistelement in microlist) {\n if (\n kb.whether(\n microlist[microlistelement],\n RDF('type'),\n SIOCt('Microblog')\n ) &&\n !kb.whether(\n microlist[microlistelement],\n SIOC('topic'),\n kb.sym(this.getMyURI())\n )\n ) {\n micro = microlist[microlistelement]\n break\n }\n }\n\n // generate new post\n const batch = [\n new UI.rdf.Statement(\n newPost,\n RDF('type'),\n SIOCt('MicroblogPost'),\n myUser\n ),\n new UI.rdf.Statement(\n newPost,\n SIOC('has_creator'),\n kb.sym(myUserURI),\n myUser\n ),\n new UI.rdf.Statement(newPost, SIOC('content'), statusMsg, myUser),\n new UI.rdf.Statement(newPost, terms('created'), new Date(), myUser),\n new UI.rdf.Statement(micro, SIOC('container_of'), newPost, myUser)\n ]\n\n // message replies\n if (replyTo) {\n batch.push(\n new UI.rdf.Statement(\n newPost,\n SIOC('reply_of'),\n kb.sym(replyTo),\n myUser\n )\n )\n }\n\n // @replies, #hashtags, !groupReplies\n for (const r in meta.recipients) {\n batch.push(\n new UI.rdf.Statement(\n newPost,\n SIOC('topic'),\n kb.sym(meta.recipients[r]),\n myUser\n )\n )\n batch.push(\n new UI.rdf.Statement(kb.any(), SIOC('container_of'), newPost, myUser)\n )\n const mblogs = kb.each(kb.sym(meta.recipients[r]), SIOC('creator_of'))\n for (const mbl in mblogs) {\n if (\n kb.whether(mblogs[mbl], SIOC('topic'), kb.sym(meta.recipients[r]))\n ) {\n const replyBatch = new UI.rdf.Statement(\n mblogs[mbl],\n SIOC('container_of'),\n newPost,\n kb.sym(meta.recipients[r].split('#')[0])\n )\n sparqlUpdater.insert_statement(replyBatch)\n }\n }\n }\n\n sparqlUpdater.insert_statement(batch, function (a, b, c) {\n callback(a, b, c, batch)\n })\n }\n Microblog.prototype.getMyURI = function () {\n const me = authn.currentUser()\n console.log(me)\n const myMicroblog = kb.any(kb.sym(me), FOAF('holdsAccount'))\n console.log('\\n\\n' + myMicroblog)\n return myMicroblog ? myMicroblog.uri : false\n }\n Microblog.prototype.generateNewMB = function (id, name, avatar, loc) {\n const host = loc + '/' + id\n const rememberMicroblog = function () {\n UI.preferences.set('acct', host + '#' + id)\n }\n const cbgenUserMB = function (a, success, c, d) {\n if (success) {\n alert(\n 'Microblog generated at ' +\n host +\n '#' +\n id +\n 'please add <b>' +\n host +\n '</b> to your foaf.'\n )\n // mbCancelNewMB() @@TBD\n // assume the foaf is not writable and store the microblog to the\n // preferences for later retrieval.\n // this will probably need to change.\n rememberMicroblog()\n for (const triple in d) {\n kb.add(\n d[triple].subject,\n d[triple].predicate,\n d[triple].object,\n d[triple].why\n )\n }\n }\n }\n\n const genUserMB = [\n // user\n new UI.rdf.Statement(\n kb.sym(host + '#' + id),\n RDF('type'),\n SIOC('User'),\n kb.sym(host)\n ),\n new UI.rdf.Statement(\n kb.sym(host + '#' + id),\n SIOC('creator_of'),\n kb.sym(host + '#mb'),\n kb.sym(host)\n ),\n new UI.rdf.Statement(\n kb.sym(host + '#' + id),\n SIOC('creator_of'),\n kb.sym(host + '#mbn'),\n kb.sym(host)\n ),\n new UI.rdf.Statement(\n kb.sym(host + '#' + id),\n SIOC('creator_of'),\n kb.sym(host + '#fav'),\n kb.sym(host)\n ),\n new UI.rdf.Statement(\n kb.sym(host + '#' + id),\n SIOC('name'),\n name,\n kb.sym(host)\n ),\n new UI.rdf.Statement(\n kb.sym(host + '#' + id),\n SIOC('id'),\n id,\n kb.sym(host)\n ),\n new UI.rdf.Statement(\n kb.sym(host + '#' + id),\n RDF('label'),\n id,\n kb.sym(host)\n ),\n new UI.rdf.Statement(\n s,\n FOAF('holdsAccount'),\n kb.sym(host + '#' + id),\n kb.sym(host)\n ),\n // microblog\n new UI.rdf.Statement(\n kb.sym(host + '#mb'),\n RDF('type'),\n SIOCt('Microblog'),\n kb.sym(host)\n ),\n new UI.rdf.Statement(\n kb.sym(host + '#mb'),\n SIOC('has_creator'),\n kb.sym(host + '#' + id),\n kb.sym(host)\n ),\n // notification microblog\n new UI.rdf.Statement(\n kb.sym(host + '#mbn'),\n RDF('type'),\n SIOCt('Microblog'),\n kb.sym(host)\n ),\n new UI.rdf.Statement(\n kb.sym(host + '#mbn'),\n SIOC('topic'),\n kb.sym(host + '#' + id),\n kb.sym(host)\n ),\n new UI.rdf.Statement(\n kb.sym(host + '#mbn'),\n SIOC('has_creator'),\n kb.sym(host + '#' + id),\n kb.sym(host)\n ),\n // favorites container\n new UI.rdf.Statement(\n kb.sym(host + '#fav'),\n RDF('type'),\n SIOCt('FavouriteThings'),\n kb.sym(host)\n ),\n new UI.rdf.Statement(\n kb.sym(host + '#fav'),\n SIOC('has_creator'),\n kb.sym(host + '#' + id),\n kb.sym(host)\n )\n ]\n if (avatar) {\n // avatar optional\n genUserMB.push(\n new UI.rdf.Statement(\n kb.sym(host + '#' + id),\n SIOC('avatar'),\n kb.sym(avatar),\n kb.sym(host)\n )\n )\n }\n sparqlUpdater.insert_statement(genUserMB, cbgenUserMB)\n }\n const mb = new Microblog(kb)\n const myFavorites = new Favorites(mb.getMyURI())\n const myFollowList = new FollowList(mb.getMyURI())\n\n //* **********************************************\n // FRONT END FUNCTIONALITY\n //* **********************************************\n // ----------------------------------------------\n // PANE\n // User Interface for the Microblog Pane\n // ----------------------------------------------\n const Pane = function (s, doc, microblogPane) {\n const TabManager = function (doc) {\n this.tablist = {}\n this.doc = doc\n this.tabView = doc.createElement('ul')\n this.tabView.className = 'tabslist'\n }\n TabManager.prototype.create = function (id, caption, view, isDefault) {\n const tab = this.doc.createElement('li')\n tab.innerHTML = caption\n if (isDefault) {\n tab.className = 'active'\n }\n tab.id = id\n const change = this.change\n const tablist = this.tablist\n tab.addEventListener(\n 'click',\n function (evt) {\n change(evt.target.id, tablist, doc)\n },\n false\n )\n\n this.tablist[id] = { view: view.id, tab: tab }\n this.tabView.appendChild(tab)\n }\n TabManager.prototype.getTabView = function () {\n return this.tabView\n }\n TabManager.prototype.change = function (id, tablist, doc) {\n for (const tab in tablist) {\n if (tab === id) {\n tablist[id].tab.className = 'active'\n doc.getElementById(tablist[id].view).className += ' active'\n } else {\n const view = doc.getElementById(tablist[tab].view)\n view.className = view.className.replace(/\\w*active\\w*/, '')\n tablist[tab].tab.className = tablist[id].tab.className.replace(\n /\\w*active\\w*/,\n ''\n )\n }\n }\n }\n this.microblogPane = microblogPane\n const accounts = kb.each(s, FOAF('holdsAccount'))\n let account\n for (const a in accounts) {\n if (\n kb.whether(accounts[a], RDF('type'), SIOC('User')) &&\n kb.whether(\n kb.any(accounts[a], SIOC('creator_of')),\n RDF('type'),\n SIOCt('Microblog')\n )\n ) {\n account = accounts[a]\n break\n }\n }\n this.Ifollow = kb.whether(kb.sym(mb.getMyURI()), SIOC('follows'), account)\n const resourceType = kb.any(s, RDF('type'))\n if (\n resourceType.uri === SIOCt('Microblog').uri ||\n resourceType.uri === SIOCt('MicroblogPost').uri\n ) {\n this.thisIsMe = kb.any(s, SIOC('has_creator')).uri === mb.getMyURI()\n } else if (resourceType.uri === SIOC('User').uri) {\n this.thisIsMe = s.uri === mb.getMyURI()\n } else if (resourceType.uri === FOAF('Person').uri) {\n const me = authn.currentUser()\n const meUri = me && me.uri\n this.thisIsMe = s.uri === meUri\n } else {\n this.thisIsMe = false\n }\n\n this.Tab = new TabManager(doc)\n }\n\n Pane.prototype.notify = function (messageString) {\n const xmsg = doc.createElement('li')\n xmsg.className = 'notify'\n xmsg.innerHTML = messageString\n doc.getElementById('notify-container').appendChild(xmsg)\n setTimeout(function () {\n doc.getElementById('notify-container').removeChild(xmsg)\n // delete xmsg;\n }, 4000)\n }\n\n Pane.prototype.header = function (s, doc) {\n const that = this\n function lsFollowUser () {\n const myUser = kb.sym(mb.getMyURI())\n // var Ifollow = that.Ifollow\n const username = that.creator.name\n const mbconfirmFollow = function (uri, success, _msg) {\n if (success === true) {\n if (!that.Ifollow) {\n // prevent duplicate entries from being added to kb (because that was happening)\n if (\n !kb.whether(\n followMe.subject,\n followMe.predicate,\n followMe.object,\n followMe.why\n )\n ) {\n kb.add(\n followMe.subject,\n followMe.predicate,\n followMe.object,\n followMe.why\n )\n }\n } else {\n kb.removeMany(\n followMe.subject,\n followMe.predicate,\n followMe.object,\n followMe.why\n )\n }\n console.log(that.Ifollow)\n that.Ifollow = !that.Ifollow\n xfollowButton.disabled = false\n console.log(that.Ifollow)\n const followButtonLabel = that.Ifollow ? 'Unfollow ' : 'Follow '\n const doFollow = that.Ifollow ? 'now follow ' : 'no longer follow '\n xfollowButton.value = followButtonLabel + username\n that.notify('You ' + doFollow + username + '.')\n }\n }\n const followMe = new UI.rdf.Statement(\n myUser,\n SIOC('follows'),\n that.creator.sym,\n myUser\n )\n xfollowButton.disabled = true\n xfollowButton.value = 'Updating...'\n if (!that.Ifollow) {\n sparqlUpdater.insert_statement(followMe, mbconfirmFollow)\n } else {\n sparqlUpdater.delete_statement(followMe, mbconfirmFollow)\n }\n }\n const notify = function (messageString) {\n const xmsg = doc.createElement('li')\n xmsg.className = 'notify'\n xmsg.innerHTML = messageString\n doc.getElementById('notify-container').appendChild(xmsg)\n setTimeout(function () {\n doc.getElementById('notify-container').removeChild(xmsg)\n // delete xmsg;\n }, 4000)\n }\n const mbCancelNewMB = function (_evt) {\n xupdateContainer.removeChild(\n xupdateContainer.childNodes[xupdateContainer.childNodes.length - 1]\n )\n xcreateNewMB.disabled = false\n }\n const lsCreateNewMB = function (_evt) {\n // disable the create new microblog button.\n // then prefills the information.\n xcreateNewMB.disabled = true\n const xcmb = doc.createElement('div')\n const xcmbName = doc.createElement('input')\n if (kb.whether(s, FOAF('name'))) {\n // handle use of FOAF:NAME\n xcmbName.value = kb.any(s, FOAF('name'))\n } else {\n // handle use of family and given name\n xcmbName.value = kb.any(s, FOAF('givenname'))\n ? kb.any(s, FOAF('givenname')) + ' '\n : ''\n xcmbName.value += kb.any(s, FOAF('family_name'))\n ? kb.any(s, FOAF('givenname'))\n : ''\n xcmbName.value =\n kb.any(s, FOAF('givenname')) + ' ' + kb.any(s, FOAF('family_name'))\n }\n const xcmbId = doc.createElement('input')\n xcmbId.value = kb.any(s, FOAF('nick')) ? kb.any(s, FOAF('nick')) : ''\n const xcmbAvatar = doc.createElement('input')\n if (kb.whether(s, FOAF('img'))) {\n // handle use of img\n xcmbAvatar.value = kb.any(s, FOAF('img')).uri\n } else {\n // otherwise try depiction\n xcmbAvatar.value = kb.any(s, FOAF('depiction'))\n ? kb.any(s, FOAF('depiction')).uri\n : ''\n }\n let workspace\n // = kb.any(s,WORKSPACE) //TODO - ADD URI FOR WORKSPACE DEFINITION\n const xcmbWritable = doc.createElement('input')\n xcmbWritable.value =\n workspace || 'http://dig.csail.mit.edu/2007/wiki/sandbox' // @@@\n xcmb.innerHTML = `\n <form class =\"createNewMB\" id=\"createNewMB\">\n <p id=\"xcmbname\"><span class=\"\">Name: </span></p>\n <p id=\"xcmbid\">Id: </p>\n <p id=\"xcmbavatar\">Avatar: </p>\n <p id=\"xcmbwritable\">Host my microblog at: </p>\n <input type=\"button\" id=\"mbCancel\" value=\"Cancel\" />\n <input type=\"submit\" id=\"mbCreate\" value=\"Create!\" />\n </form>\n `\n xupdateContainer.appendChild(xcmb)\n doc.getElementById('xcmbname').appendChild(xcmbName)\n doc.getElementById('xcmbid').appendChild(xcmbId)\n doc.getElementById('xcmbavatar').appendChild(xcmbAvatar)\n doc.getElementById('xcmbwritable').appendChild(xcmbWritable)\n doc\n .getElementById('mbCancel')\n .addEventListener('click', mbCancelNewMB, false)\n doc.getElementById('createNewMB').addEventListener(\n 'submit',\n function () {\n mb.generateNewMB(\n xcmbId.value,\n xcmbName.value,\n xcmbAvatar.value,\n xcmbWritable.value\n )\n },\n false\n )\n xcmbName.focus()\n }\n const mbSubmitPost = function () {\n const meta = {\n recipients: []\n }\n // user has selected a microblog to post to\n if (mb.getMyURI()) {\n // let myUser = kb.sym(mb.getMyURI())\n // submission callback\n const cbconfirmSubmit = function (uri, success, responseText, d) {\n if (success === true) {\n for (const triple in d) {\n kb.add(\n d[triple].subject,\n d[triple].predicate,\n d[triple].object,\n d[triple].why\n )\n }\n xupdateSubmit.disabled = false\n xupdateStatus.value = ''\n mbLetterCount()\n notify('Microblog Updated.')\n if (that.thisIsMe) {\n doc\n .getElementById('postNotificationList')\n .insertBefore(\n that.generatePost(d[0].subject),\n doc.getElementById('postNotificationList').childNodes[0]\n )\n }\n } else {\n notify('There was a problem submitting your post.')\n }\n }\n const words = xupdateStatus.value.split(' ')\n const mbUpdateWithReplies = function () {\n xupdateSubmit.disabled = true\n xupdateSubmit.value = 'Updating...'\n mb.statusUpdate(\n xupdateStatus.value,\n cbconfirmSubmit,\n xinReplyToContainer.value,\n meta\n )\n }\n for (const word in words) {\n if (words[word].match(/@\\w+/)) {\n const atUser = words[word].replace(/\\W/g, '')\n const recipient = myFollowList.selectUser(atUser)\n if (recipient[0] === true) {\n meta.recipients.push(recipient[1][0])\n } else if (recipient[1].length > 1) {\n // if multiple users allow the user to choose\n const xrecipients = doc.createElement('select')\n const xrecipientsSubmit = doc.createElement('input')\n xrecipientsSubmit.type = 'button'\n xrecipientsSubmit.value = 'Continue'\n xrecipientsSubmit.addEventListener(\n 'click',\n function () {\n meta.recipients.push(recipient[1][xrecipients.value])\n mbUpdateWithReplies()\n xrecipients.parentNode.removeChild(xrecipientsSubmit)\n xrecipients.parentNode.removeChild(xrecipients)\n },\n false\n )\n const recipChoice = function (recip, c) {\n const name = kb.any(kb.sym(recip), SIOC('name'))\n const choice = doc.createElement('option')\n choice.value = c\n choice.innerHTML = name\n return choice\n }\n for (const r in recipient[1]) {\n xrecipients.appendChild(recipChoice(recipient[1][r], r))\n }\n xupdateContainer.appendChild(xrecipients)\n xupdateContainer.appendChild(xrecipientsSubmit)\n return\n } else {\n // no users known or self reference.\n if (\n String(\n kb.any(kb.sym(mb.getMyURI()), SIOC('id'))\n ).toLowerCase() === atUser.toLowerCase()\n ) {\n meta.recipients.push(mb.getMyURI())\n } else {\n notify(\n 'You do not follow ' +\n atUser +\n '. Try following ' +\n atUser +\n ' before mentioning them.'\n )\n return\n }\n }\n }\n /* else if(words[word].match(/\\#\\w+/)){\n //hashtag\n } else if(words[word].match(/\\!\\w+/)){\n //usergroup\n } */\n }\n mbUpdateWithReplies()\n } else {\n notify('Please set your microblog first.')\n }\n }\n const mbLetterCount = function () {\n xupdateStatusCounter.innerHTML = charCount - xupdateStatus.value.length\n xupdateStatusCounter.style.color =\n charCount - xupdateStatus.value.length < 0 ? '#c33' : ''\n if (xupdateStatus.value.length === 0) {\n xinReplyToContainer.value = ''\n xupdateSubmit.value = 'Send'\n }\n }\n // reply viewer\n const xviewReply = doc.createElement('ul')\n xviewReply.className = 'replyView'\n xviewReply.addEventListener(\n 'click',\n function () {\n xviewReply.className = 'replyView'\n },\n false\n )\n this.xviewReply = xviewReply\n const headerContainer = doc.createElement('div')\n headerContainer.className = 'header-container'\n\n // ---create status update box---\n const xnotify = doc.createElement('ul')\n xnotify.id = 'notify-container'\n xnotify.className = 'notify-container'\n this.xnotify = xnotify\n const xupdateContainer = doc.createElement('form')\n xupdateContainer.className = 'update-container'\n xupdateContainer.innerHTML = '<h3>What are you up to?</h3>'\n let xinReplyToContainer\n let xupdateStatus\n let xupdateStatusCounter\n let xupdateSubmit\n let xcreateNewMB\n if (mb.getMyURI()) {\n xinReplyToContainer = doc.createElement('input')\n xinReplyToContainer.id = 'xinReplyToContainer'\n xinReplyToContainer.type = 'hidden'\n\n xupdateStatus = doc.createElement('textarea')\n xupdateStatus.id = 'xupdateStatus'\n\n xupdateStatusCounter = doc.createElement('span')\n xupdateStatusCounter.appendChild(doc.createTextNode(charCount))\n xupdateStatus.cols = 30\n xupdateStatus.addEventListener('keyup', mbLetterCount, false)\n xupdateStatus.addEventListener('focus', mbLetterCount, false)\n\n xupdateSubmit = doc.createElement('input')\n xupdateSubmit.id = 'xupdateSubmit'\n xupdateSubmit.type = 'submit'\n xupdateSubmit.value = 'Send'\n\n xupdateContainer.appendChild(xinReplyToContainer)\n xupdateContainer.appendChild(xupdateStatusCounter)\n xupdateContainer.appendChild(xupdateStatus)\n xupdateContainer.appendChild(xupdateSubmit)\n xupdateContainer.addEventListener('submit', mbSubmitPost, false)\n } else {\n const xnewUser = doc.createTextNode(\n \"Hi, it looks like you don't have a microblog, \" +\n ' would you like to create one? '\n )\n xcreateNewMB = doc.createElement('input')\n xcreateNewMB.type = 'button'\n xcreateNewMB.value = 'Create a new Microblog'\n xcreateNewMB.addEventListener('click', lsCreateNewMB, false)\n xupdateContainer.appendChild(xnewUser)\n xupdateContainer.appendChild(xcreateNewMB)\n }\n\n headerContainer.appendChild(xupdateContainer)\n\n const subheaderContainer = doc.createElement('div')\n subheaderContainer.className = 'subheader-container'\n\n // user header\n // this.creator\n const creators = kb.each(s, FOAF('holdsAccount'))\n let creator\n for (const c in creators) {\n if (\n kb.whether(creators[c], RDF('type'), SIOC('User')) &&\n kb.whether(\n kb.any(creators[c], SIOC('creator_of')),\n RDF('type'),\n SIOCt('Microblog')\n )\n ) {\n creator = creators[c]\n // var mb = kb.sym(creator.uri.split(\"#\")[0]);\n // store.fetcher.refresh(mb);\n break\n // TODO add support for more than one microblog in same foaf\n }\n }\n let xfollowButton\n if (creator) {\n this.creator = mb.getUser(creator)\n // ---display avatar, if available ---\n if (this.creator.avatar !== '') {\n const avatar = doc.createElement('img')\n avatar.src = this.creator.avatar.uri\n subheaderContainer.appendChild(avatar)\n }\n // ---generate name ---\n const userName = doc.createElement('h1')\n userName.className = 'fn'\n userName.appendChild(\n doc.createTextNode(this.creator.name + ' (' + this.creator.id + ')')\n )\n subheaderContainer.appendChild(userName)\n // ---display follow button---\n if (!this.thisIsMe && mb.getMyURI()) {\n xfollowButton = doc.createElement('input')\n xfollowButton.setAttribute('type', 'button')\n const followButtonLabel = this.Ifollow ? 'Unfollow ' : 'Follow '\n xfollowButton.value = followButtonLabel + this.creator.name\n xfollowButton.addEventListener('click', lsFollowUser, false)\n subheaderContainer.appendChild(xfollowButton)\n }\n // user header end\n // header tabs\n const xtabsList = this.Tab.getTabView()\n headerContainer.appendChild(subheaderContainer)\n headerContainer.appendChild(xtabsList)\n }\n return headerContainer\n }\n Pane.prototype.generatePost = function (post, _me) {\n /*\n generatePost - Creates and formats microblog posts\n post - symbol of the uri the post in question\n */\n const that = this\n const viewPost = function (uris) {\n const xviewReply = that.xviewReply\n for (let i = 0; i < xviewReply.childNodes.length; i++) {\n xviewReply.removeChild(xviewReply.childNodes[0])\n }\n const xcloseContainer = doc.createElement('li')\n xcloseContainer.className = 'closeContainer'\n const xcloseButton = doc.createElement('span')\n xcloseButton.innerHTML = '×'\n xcloseButton.className = 'closeButton'\n xcloseContainer.appendChild(xcloseButton)\n xviewReply.appendChild(xcloseContainer)\n for (const uri in uris) {\n xviewReply.appendChild(\n that.generatePost(kb.sym(uris[uri]), this.thisIsMe, 'view')\n )\n }\n xviewReply.className = 'replyView-active'\n that.microblogPane.appendChild(xviewReply)\n }\n // container for post\n const xpost = doc.createElement('li')\n xpost.className = 'post'\n xpost.setAttribute('id', String(post.uri).split('#')[1])\n const Post = mb.getPost(post)\n // username text\n // var uname = kb.any(kb.any(post, SIOC('has_creator')), SIOC('id'))\n const uholdsaccount = kb.any(\n undefined,\n FOAF('holdsAccount'),\n kb.any(post, SIOC('has_creator'))\n )\n const xuname = doc.createElement('a')\n xuname.href = uholdsaccount.uri\n xuname.className = 'userLink'\n const xunameText = doc.createTextNode(mb.getUser(Post.creator).id)\n xuname.appendChild(xunameText)\n // user image\n const xuavatar = doc.createElement('img')\n xuavatar.src = mb.getUser(Post.creator).avatar.uri\n xuavatar.className = 'postAvatar'\n // post content\n const xpostContent = doc.createElement('blockquote')\n let postText = Post.message\n // post date\n const xpostLink = doc.createElement('a')\n xpostLink.className = 'postLink'\n xpostLink.addEventListener(\n 'click',\n function () {\n viewPost([post.uri])\n },\n false\n )\n xpostLink.id = 'post_' + String(post.uri).split('#')[1]\n xpostLink.setAttribute('content', post.uri)\n xpostLink.setAttribute('property', 'permalink')\n const postLink = doc.createTextNode(\n Post.date ? Post.date : 'post date unknown'\n )\n xpostLink.appendChild(postLink)\n\n // LINK META DATA (MENTIONS, HASHTAGS, GROUPS)\n const mentions = kb.each(post, SIOC('topic'))\n const tags = {}\n\n for (const mention in mentions) {\n sf.lookUpThing(mentions[mention])\n const id = kb.any(mentions[mention], SIOC('id'))\n tags['@' + id] = mentions[mention]\n }\n const postTags = postText.match(/(@|#|!)\\w+/g)\n const postFunction = function () {\n const p = postTags.pop()\n return tags[p]\n ? kb.any(undefined, FOAF('holdsAccount'), tags[p]).uri\n : p\n }\n for (const t in tags) {\n const person = t.replace(/@/, '')\n const replacePerson = RegExp('(@|!|#)(' + person + ')')\n postText = postText.replace(\n replacePerson,\n '$1<a href=\"' + postFunction() + '\">$2</a>'\n )\n }\n xpostContent.innerHTML = postText\n\n // in reply to logic\n // This has the potential to support a post that replies to many messages.\n const inReplyTo = kb.each(post, SIOC('reply_of'))\n const xreplyTo = doc.createElement('span')\n let theReply\n for (const reply in inReplyTo) {\n theReply = String(inReplyTo[reply]).replace(/<|>/g, '')\n const genReplyTo = function () {\n const reply = doc.createElement('a')\n reply.innerHTML = ', <b>in reply to</b>'\n reply.addEventListener(\n 'click',\n function () {\n viewPost([post.uri, theReply])\n return false\n },\n false\n )\n return reply\n }\n xreplyTo.appendChild(genReplyTo())\n }\n\n // END LINK META DATA\n // add the reply to and delete buttons to the interface\n const mbReplyTo = function () {\n const id = mb.getUser(Post.creator).id\n const xupdateStatus = doc.getElementById('xupdateStatus')\n const xinReplyToContainer = doc.getElementById('xinReplyToContainer')\n const xupdateSubmit = doc.getElementById('xupdateSubmit')\n xupdateStatus.value = '@' + id + ' '\n xupdateStatus.focus()\n xinReplyToContainer.value = post.uri\n xupdateSubmit.value = 'Reply'\n }\n let xconfirmDeletionDialog\n const mbDeletePost = function (evt) {\n const lsconfirmNo = function () {\n doc\n .getElementById('notify-container')\n .removeChild(xconfirmDeletionDialog)\n evt.target.disabled = false\n }\n const lsconfirmYes = function () {\n reallyDelete()\n doc\n .getElementById('notify-container')\n .removeChild(xconfirmDeletionDialog)\n }\n evt.target.disabled = true\n xconfirmDeletionDialog = doc.createElement('li')\n xconfirmDeletionDialog.className = 'notify conf'\n xconfirmDeletionDialog.innerHTML +=\n '<p>Are you sure you want to delete this post?</p>'\n xconfirmDeletionDialog.addEventListener(\n 'keyup',\n function (evt) {\n if (evt.keyCode === 27) {\n lsconfirmNo()\n }\n },\n false\n )\n const confirmyes = doc.createElement('input')\n confirmyes.type = 'button'\n confirmyes.className = 'confirm'\n confirmyes.value = 'Delete'\n confirmyes.addEventListener('click', lsconfirmYes, false)\n const confirmno = doc.createElement('input')\n confirmno.type = 'button'\n confirmno.className = 'confirm'\n confirmno.value = 'Cancel'\n confirmno.addEventListener('click', lsconfirmNo, false)\n xconfirmDeletionDialog.appendChild(confirmno)\n xconfirmDeletionDialog.appendChild(confirmyes)\n doc\n .getElementById('notify-container')\n .appendChild(xconfirmDeletionDialog)\n confirmno.focus()\n\n const reallyDelete = function () {\n // callback after deletion\n const mbconfirmDeletePost = function (a, success) {\n if (success) {\n that.notify('Post deleted.')\n // update the ui to reflect model changes.\n const deleteThisNode = evt.target.parentNode\n deleteThisNode.parentNode.removeChild(deleteThisNode)\n kb.removeMany(deleteMe)\n } else {\n that.notify('Oops, there was a problem, please try again')\n evt.target.disabled = true\n }\n }\n // delete references to post\n const deleteContainerOf = function (a, success) {\n if (success) {\n const deleteContainer = kb.statementsMatching(\n undefined,\n SIOC('container_of'),\n kb.sym(\n doc\n .getElementById('post_' + evt.target.parentNode.id)\n .getAttribute('content')\n )\n )\n sparqlUpdater.batch_delete_statement(\n deleteContainer,\n mbconfirmDeletePost\n )\n } else {\n that.notify('Oops, there was a problem, please try again')\n evt.target.disabled = false\n }\n }\n // delete attributes of post\n evt.target.disabled = true\n const deleteMe = kb.statementsMatching(\n kb.sym(\n doc\n .getElementById('post_' + evt.target.parentNode.id)\n .getAttribute('content')\n )\n )\n sparqlUpdater.batch_delete_statement(deleteMe, deleteContainerOf)\n }\n }\n let themaker\n let xreplyButton\n let xdeleteButton\n if (mb.getMyURI()) {\n // If the microblog in question does not belong to the user,\n // display the delete post and reply to post buttons.\n themaker = kb.any(post, SIOC('has_creator'))\n if (mb.getMyURI() !== themaker.uri) {\n xreplyButton = doc.createElement('input')\n xreplyButton.type = 'button'\n xreplyButton.value = 'reply'\n xreplyButton.className = 'reply'\n xreplyButton.addEventListener('click', mbReplyTo, false)\n } else {\n xdeleteButton = doc.createElement('input')\n xdeleteButton.type = 'button'\n xdeleteButton.value = 'Delete'\n xdeleteButton.className = 'reply'\n xdeleteButton.addEventListener('click', mbDeletePost, false)\n }\n }\n\n const mbFavorite = function (evt) {\n const nid = evt.target.parentNode.id\n const favpost = doc.getElementById('post_' + nid).getAttribute('content')\n xfavorite.className += ' ing'\n const cbFavorite = function (a, success, _c, _d) {\n if (success) {\n xfavorite.className =\n xfavorite.className.split(' ')[1] === 'ed'\n ? 'favorit'\n : 'favorit ed'\n }\n }\n if (!myFavorites.favorited(favpost)) {\n myFavorites.add(favpost, cbFavorite)\n } else {\n myFavorites.remove(favpost, cbFavorite)\n }\n }\n const xfavorite = doc.createElement('a')\n xfavorite.innerHTML = '★'\n xfavorite.addEventListener('click', mbFavorite, false)\n if (myFavorites.favorited(post.uri)) {\n xfavorite.className = 'favorit ed'\n } else {\n xfavorite.className = 'favorit'\n }\n // build\n xpost.appendChild(xuavatar)\n xpost.appendChild(xpostContent)\n if (mb.getMyURI()) {\n xpost.appendChild(xfavorite)\n if (mb.getMyURI() !== themaker.uri) {\n xpost.appendChild(xreplyButton)\n } else {\n xpost.appendChild(xdeleteButton)\n }\n }\n xpost.appendChild(xuname)\n xpost.appendChild(xpostLink)\n if (inReplyTo !== '') {\n xpost.appendChild(xreplyTo)\n }\n return xpost\n }\n Pane.prototype.generatePostList = function (gmbPosts) {\n /*\n generatePostList - Generate the posts and\n display their results on the interface.\n */\n const postList = doc.createElement('ul')\n const postlist = {}\n const datelist = []\n for (const post in gmbPosts) {\n const postDate = kb.any(gmbPosts[post], terms('created'))\n if (postDate) {\n datelist.push(postDate)\n postlist[postDate] = this.generatePost(gmbPosts[post], this.thisIsMe)\n }\n }\n datelist.sort().reverse()\n for (const d in datelist) {\n postList.appendChild(postlist[datelist[d]])\n }\n return postList\n }\n Pane.prototype.followsView = function () {\n const getFollowed = function (user) {\n let userid = kb.any(user, SIOC('id'))\n const follow = doc.createElement('li')\n follow.className = 'follow'\n userid = userid || user.uri\n let fol = kb.any(undefined, FOAF('holdsAccount'), user)\n fol = fol ? fol.uri : user.uri\n follow.innerHTML = '<a href=\"' + fol + '\">' + userid + '</a>'\n return follow\n }\n const xfollows = doc.createElement('div')\n xfollows.id = 'xfollows'\n xfollows.className = 'followlist-container view-container'\n if (this.creator && kb.whether(this.creator.sym, SIOC('follows'))) {\n const creatorFollows = kb.each(this.creator.sym, SIOC('follows'))\n const xfollowsList = doc.createElement('ul')\n for (const thisPerson in creatorFollows) {\n xfollowsList.appendChild(getFollowed(creatorFollows[thisPerson]))\n }\n xfollows.appendChild(xfollowsList)\n }\n this.Tab.create('tab-follows', 'Follows', xfollows, false)\n return xfollows\n }\n Pane.prototype.streamView = function (s, doc) {\n const postContainer = doc.createElement('div')\n postContainer.id = 'postContainer'\n postContainer.className = 'post-container view-container active'\n let mbPosts = []\n if (kb.whether(s, FOAF('name')) && kb.whether(s, FOAF('holdsAccount'))) {\n sf.lookUpThing(kb.any(s, FOAF('holdsAccount')))\n const follows = kb.each(kb.any(s, FOAF('holdsAccount')), SIOC('follows'))\n for (const f in follows) {\n sf.lookUpThing(follows[f])\n // look up people user follows\n const smicroblogs = kb.each(follows[f], SIOC('creator_of'))\n // get the follows microblogs\n for (const smb in smicroblogs) {\n sf.lookUpThing(smicroblogs[smb])\n if (kb.whether(smicroblogs[smb], SIOC('topic'), follows[f])) {\n continue\n } else {\n mbPosts = mbPosts.concat(\n kb.each(smicroblogs[smb], SIOC('container_of'))\n )\n }\n }\n }\n }\n if (mbPosts.length > 0) {\n const postList = this.generatePostList(mbPosts)\n // generate stream\n postList.id = 'postList'\n postList.className = 'postList'\n postContainer.appendChild(postList)\n }\n this.Tab.create('tab-stream', 'By Follows', postContainer, true)\n return postContainer\n }\n Pane.prototype.notificationsView = function (s, doc) {\n const postNotificationContainer = doc.createElement('div')\n postNotificationContainer.id = 'postNotificationContainer'\n postNotificationContainer.className =\n 'notification-container view-container'\n const postMentionContainer = doc.createElement('div')\n postMentionContainer.id = 'postMentionContainer'\n postMentionContainer.className = 'mention-container view-container'\n let mbnPosts = []\n let mbmPosts = []\n // get mbs that I am the creator of.\n const theUser = kb.any(s, FOAF('holdsAccount'))\n const user = kb.any(theUser, SIOC('id'))\n const microblogs = kb.each(theUser, SIOC('creator_of'))\n for (const mbm in microblogs) {\n sf.lookUpThing(microblogs[mbm])\n if (kb.whether(microblogs[mbm], SIOC('topic'), theUser)) {\n mbmPosts = mbmPosts.concat(\n kb.each(microblogs[mbm], SIOC('container_of'))\n )\n } else {\n if (kb.whether(microblogs[mbm], RDF('type'), SIOCt('Microblog'))) {\n mbnPosts = mbnPosts.concat(\n kb.each(microblogs[mbm], SIOC('container_of'))\n )\n }\n }\n }\n const postNotificationList = this.generatePostList(mbnPosts)\n postNotificationList.id = 'postNotificationList'\n postNotificationList.className = 'postList'\n postNotificationContainer.appendChild(postNotificationList)\n\n const postMentionList = this.generatePostList(mbmPosts)\n postMentionList.id = 'postMentionList'\n postMentionList.className = 'postList'\n postMentionContainer.appendChild(postMentionList)\n this.postMentionContainer = postMentionContainer\n this.postNotificationContainer = postNotificationContainer\n this.Tab.create(\n 'tab-by-user',\n 'By ' + user,\n postNotificationContainer,\n false\n )\n this.Tab.create('tab-at-user', '@' + user, postMentionContainer, false)\n }\n Pane.prototype.build = function () {\n const microblogPane = this.microblogPane\n this.headerContainer = this.header(s, doc)\n this.postContainer = this.streamView(s, doc)\n this.notificationsView(s, doc)\n this.xfollows = this.followsView()\n microblogPane.className = 'ppane'\n microblogPane.appendChild(this.xviewReply)\n microblogPane.appendChild(this.xnotify)\n microblogPane.appendChild(this.headerContainer)\n if (this.xfollows !== undefined) {\n microblogPane.appendChild(this.xfollows)\n }\n microblogPane.appendChild(this.postContainer)\n microblogPane.appendChild(this.postNotificationContainer)\n microblogPane.appendChild(this.postMentionContainer)\n }\n\n const microblogpane = doc.createElement('div')\n // var getusersfollows = function(uri){\n // var follows = new Object();\n // var followsa = {follows:0, matches:0};\n // var accounts = kb.each(s, FOAF(\"holdsAccount\"));\n // //get all of the accounts that a person holds\n // for (var acct in accounts){\n // var account = accounts[acct].uri;\n // var act = kb.each(kb.sym(account),SIOC(\"follows\"));\n // for (var a in act){\n // var thisuri = act[a].uri.split(\"#\")[0];\n // if (!follows[thisuri]){followsa.follows+=1;}\n // follows[thisuri] =true;\n // }\n // }\n //\n // var buildPaneUI = function(uri){\n // followsa.matches = (follows[uri]) ? followsa.matches+1: followsa.matches;\n // console.log(follows.toSource());\n // if(followsa.follows == followsa.matches ){\n const ppane = new Pane(s, doc, microblogpane)\n ppane.build()\n // return false;\n // }\n // else{\n // return true;\n // }\n // }\n // sf.addCallback('done',buildPaneUI);\n // sf.addCallback('fail',buildPaneUI);\n // //fetch each of the followers\n // for (var f in follows){\n // sf.refresh(kb.sym(f));\n // }\n // }(s);\n return microblogpane\n }\n}\n"],"mappings":";;AAKA;AACA;AAA8B;AAAA;AAAA;AAE9BA,MAAM,CAACC,OAAO,GAAG;EACfC,IAAI,EAAEC,EAAE,CAACC,KAAK,CAACC,gBAAgB,GAAG,yBAAyB;EAC3DC,IAAI,EAAE,eAAe;EACrBC,KAAK,EAAE,eAAUC,OAAO,EAAE;IACxB,IAAIC,iBAAK,CAACC,OAAO,CAACF,OAAO,EAAEL,EAAE,CAACQ,EAAE,CAACC,GAAG,CAAC,MAAM,CAAC,EAAET,EAAE,CAACQ,EAAE,CAACE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE;MACnE,OAAO,WAAW;IACpB,CAAC,MAAM;MACL,OAAO,IAAI;IACb;EACF,CAAC;EACDC,MAAM,EAAE,gBAAUC,CAAC,EAAEC,GAAG,EAAE;IACxB;IACA;IACA;IACA,IAAMC,IAAI,GAAGd,EAAE,CAACS,GAAG,CAACM,SAAS,CAAC,0BAA0B,CAAC;IACzD,IAAMC,KAAK,GAAGhB,EAAE,CAACS,GAAG,CAACM,SAAS,CAAC,6BAA6B,CAAC;IAC7D,IAAME,IAAI,GAAGjB,EAAE,CAACS,GAAG,CAACM,SAAS,CAAC,4BAA4B,CAAC;IAC3D,IAAMG,KAAK,GAAGlB,EAAE,CAACS,GAAG,CAACM,SAAS,CAAC,2BAA2B,CAAC;IAC3D,IAAMI,GAAG,GAAGnB,EAAE,CAACQ,EAAE,CAACC,GAAG;IAErB,IAAMW,EAAE,GAAGd,iBAAK;IAChB,IAAMe,SAAS,GAAG,GAAG;IACrB,IAAMC,EAAE,GAAGhB,iBAAK,CAACiB,OAAO;IACxB;IACA;IACA;IACA,IAAMC,aAAa,GAAGJ,EAAE,CAACK,OAAO;IAChC;IACA;IACA;IACA;IACA;IACA,IAAMC,UAAU,GAAG,SAAbA,UAAU,CAAaC,IAAI,EAAE;MACjC,IAAI,CAACC,QAAQ,GAAG,CAAC,CAAC;MAClB,IAAI,CAACC,IAAI,GAAG,CAAC,CAAC;MACd,IAAMC,SAAS,GAAGV,EAAE,CAACW,IAAI,CAACX,EAAE,CAACY,GAAG,CAACL,IAAI,CAAC,EAAEb,IAAI,CAAC,SAAS,CAAC,CAAC;MACxD,KAAK,IAAMmB,EAAE,IAAIH,SAAS,EAAE;QAC1B,IAAI,CAACI,GAAG,CAACd,EAAE,CAACe,GAAG,CAACL,SAAS,CAACG,EAAE,CAAC,EAAEnB,IAAI,CAAC,IAAI,CAAC,CAAC,EAAEgB,SAAS,CAACG,EAAE,CAAC,CAACG,GAAG,CAAC;MAChE;IACF,CAAC;IACDV,UAAU,CAACW,SAAS,CAACH,GAAG,GAAG,UAAUP,IAAI,EAAES,GAAG,EAAE;MAC9C;MACA,IAAI,IAAI,CAACR,QAAQ,CAACD,IAAI,CAAC,EAAE;QACvB,IAAI,EAAES,GAAG,IAAI,IAAI,CAACP,IAAI,CAAC,EAAE;UACvB,IAAI,CAACD,QAAQ,CAACD,IAAI,CAAC,CAACW,IAAI,CAACF,GAAG,CAAC;UAC7B,IAAI,CAACP,IAAI,CAACO,GAAG,CAAC,GAAG,EAAE;QACrB;MACF,CAAC,MAAM;QACL,IAAI,CAACR,QAAQ,CAACD,IAAI,CAAC,GAAG,CAACS,GAAG,CAAC;MAC7B;IACF,CAAC;IACDV,UAAU,CAACW,SAAS,CAACE,UAAU,GAAG,UAAUZ,IAAI,EAAE;MAChD;MACA,IAAI,IAAI,CAACC,QAAQ,CAACD,IAAI,CAAC,EAAE;QACvB,OAAO,CAAC,IAAI,CAACC,QAAQ,CAACD,IAAI,CAAC,CAACa,MAAM,KAAK,CAAC,EAAE,IAAI,CAACZ,QAAQ,CAACD,IAAI,CAAC,CAAC;MAChE,CAAC,MAAM;QACL;QACA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;MACpB;IACF,CAAC;IACD;IACA;IACA;IACA;IACA;IACA,IAAMc,SAAS,GAAG,SAAZA,SAAS,CAAad,IAAI,EAAE;MAChC,IAAI,CAACe,SAAS,GAAG,CAAC,CAAC;MACnB,IAAI,CAACC,YAAY,GAAG,EAAE;MACtB,IAAI,CAAChB,IAAI,EAAE;QACT;QACA;MACF;MACA,IAAI,CAACA,IAAI,GAAGA,IAAI,CAACiB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MAC9B,IAAMC,OAAO,GAAGzB,EAAE,CAACW,IAAI,CAACX,EAAE,CAACY,GAAG,CAACL,IAAI,CAAC,EAAEb,IAAI,CAAC,YAAY,CAAC,CAAC;MACzD,KAAK,IAAMgC,CAAC,IAAID,OAAO,EAAE;QACvB,IAAIzB,EAAE,CAACb,OAAO,CAACsC,OAAO,CAACC,CAAC,CAAC,EAAE3B,GAAG,CAAC,MAAM,CAAC,EAAEH,KAAK,CAAC,iBAAiB,CAAC,CAAC,EAAE;UACjE,IAAI,CAAC2B,YAAY,GAAGE,OAAO,CAACC,CAAC,CAAC;UAC9B,IAAMC,IAAI,GAAG3B,EAAE,CAACW,IAAI,CAACc,OAAO,CAACC,CAAC,CAAC,EAAEhC,IAAI,CAAC,cAAc,CAAC,CAAC;UACtD,KAAK,IAAMkC,CAAC,IAAID,IAAI,EAAE;YACpB,IAAI,CAACL,SAAS,CAACK,IAAI,CAACC,CAAC,CAAC,CAAC,GAAG,EAAE;UAC9B;UACA;QACF;MACF;IACF,CAAC;IACDP,SAAS,CAACJ,SAAS,CAACY,SAAS,GAAG,UAAUC,IAAI,EAAE;MAC9C;AACN;MACM,OAAO9B,EAAE,CAACY,GAAG,CAACkB,IAAI,CAAC,IAAI,IAAI,CAACR,SAAS;IACvC,CAAC;IACDD,SAAS,CAACJ,SAAS,CAACH,GAAG,GAAG,UAAUgB,IAAI,EAAEC,QAAQ,EAAE;MAClD,IAAMC,KAAK,GAAG,IAAIpD,EAAE,CAACS,GAAG,CAAC4C,SAAS,CAChC,IAAI,CAACV,YAAY,EACjB7B,IAAI,CAAC,cAAc,CAAC,EACpBM,EAAE,CAACY,GAAG,CAACkB,IAAI,CAAC,EACZ9B,EAAE,CAACY,GAAG,CAAC,IAAI,CAACL,IAAI,CAAC,CAClB;MACDH,aAAa,CAAC8B,gBAAgB,CAACF,KAAK,EAAE,UAAUG,CAAC,EAAEC,OAAO,EAAEV,CAAC,EAAE;QAC7D,IAAIU,OAAO,EAAE;UACXpC,EAAE,CAACc,GAAG,CAACkB,KAAK,CAAC/C,OAAO,EAAE+C,KAAK,CAACK,SAAS,EAAEL,KAAK,CAACM,MAAM,EAAEN,KAAK,CAACO,GAAG,CAAC;QACjE;QACAR,QAAQ,CAACI,CAAC,EAAEC,OAAO,EAAEV,CAAC,CAAC;MACzB,CAAC,CAAC;IACJ,CAAC;IACDL,SAAS,CAACJ,SAAS,CAACuB,MAAM,GAAG,UAAUV,IAAI,EAAEC,QAAQ,EAAE;MACrD,IAAMC,KAAK,GAAG,IAAIpD,EAAE,CAACS,GAAG,CAAC4C,SAAS,CAChC,IAAI,CAACV,YAAY,EACjB7B,IAAI,CAAC,cAAc,CAAC,EACpBM,EAAE,CAACY,GAAG,CAACkB,IAAI,CAAC,EACZ9B,EAAE,CAACY,GAAG,CAAC,IAAI,CAACL,IAAI,CAAC,CAClB;MACDH,aAAa,CAACqC,gBAAgB,CAACT,KAAK,EAAE,UAAUG,CAAC,EAAEC,OAAO,EAAEV,CAAC,EAAE;QAC7D,IAAIU,OAAO,EAAE;UACXpC,EAAE,CAACc,GAAG,CAACkB,KAAK,CAAC/C,OAAO,EAAE+C,KAAK,CAACK,SAAS,EAAEL,KAAK,CAACM,MAAM,EAAEN,KAAK,CAACO,GAAG,CAAC;QACjE;QACAR,QAAQ,CAACI,CAAC,EAAEC,OAAO,EAAEV,CAAC,CAAC;MACzB,CAAC,CAAC;IACJ,CAAC;IACD;IACA;IACA;IACA;IACA;IACA,IAAMgB,SAAS,GAAG,SAAZA,SAAS,CAAa1C,EAAE,EAAE;MAC9B,IAAI,CAACA,EAAE,GAAGA,EAAE;;MAEZ;MACA;MACA;MACA,IAAM2C,OAAO,GAAGC,iBAAK,CAACC,WAAW,EAAE;MAEnC,IAAIF,OAAO,EAAE;QACX,IAAIG,UAAU,GAAGlE,EAAE,CAACmE,WAAW,CAACC,GAAG,CAAC,MAAM,CAAC;QAE3C,IAAIF,UAAU,EAAE;UACdA,UAAU,GAAG9C,EAAE,CAACY,GAAG,CAACkC,UAAU,CAAC;QACjC;QAEA,IAAIH,OAAO,IAAIG,UAAU,EAAE;UACzB9C,EAAE,CAACc,GAAG,CACJ6B,OAAO,EACP9C,IAAI,CAAC,cAAc,CAAC,EACpBiD,UAAU,EACVH,OAAO,CAAC3B,GAAG,CAACQ,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAC1B;QACH;MACF;IACF,CAAC;IACDkB,SAAS,CAACzB,SAAS,CAACgC,OAAO,GAAG,UAAUjC,GAAG,EAAE;MAC3C,IAAMkC,IAAI,GAAG,CAAC,CAAC;MACfA,IAAI,CAACnE,IAAI,GAAGiB,EAAE,CAACe,GAAG,CAACC,GAAG,EAAEtB,IAAI,CAAC,MAAM,CAAC,CAAC,GAAGM,EAAE,CAACe,GAAG,CAACC,GAAG,EAAEtB,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE;MACtEwD,IAAI,CAACC,MAAM,GAAGnD,EAAE,CAACe,GAAG,CAACC,GAAG,EAAEtB,IAAI,CAAC,QAAQ,CAAC,CAAC,GACrCM,EAAE,CAACe,GAAG,CAACC,GAAG,EAAEtB,IAAI,CAAC,QAAQ,CAAC,CAAC,GAC3B,EAAE;MACNwD,IAAI,CAACE,EAAE,GAAGpD,EAAE,CAACe,GAAG,CAACC,GAAG,EAAEtB,IAAI,CAAC,IAAI,CAAC,CAAC;MACjCwD,IAAI,CAACtC,GAAG,GAAGI,GAAG;MACd,OAAOkC,IAAI;IACb,CAAC;IAEDR,SAAS,CAACzB,SAAS,CAACoC,OAAO,GAAG,UAAUrC,GAAG,EAAE;MAC3C,IAAMsC,IAAI,GAAG,CAAC,CAAC;MACf;MACA,IAAIC,QAAQ,GAAG,IAAIC,IAAI,CAACxD,EAAE,CAACyD,QAAQ,CAACzC,GAAG,EAAElB,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;MAC3D,IAAI4D,CAAC,GAAGH,QAAQ,CAACI,QAAQ,EAAE;MAC3B,IAAMxB,CAAC,GAAGuB,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,KAAK;MAChCA,CAAC,GAAGA,CAAC,GAAG,EAAE,GAAGA,CAAC,GAAG,EAAE,GAAGA,CAAC;MACvB,IAAIE,CAAC,GAAGL,QAAQ,CAACM,UAAU,EAAE;MAC7BD,CAAC,GAAGA,CAAC,GAAG,EAAE,GAAG,GAAG,GAAGA,CAAC,GAAGA,CAAC;MACxB,IAAME,EAAE,GAAG,CACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,CACN;MACD,IAAMC,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;MAC5D,IAAMC,EAAE,GACND,EAAE,CAACR,QAAQ,CAACU,MAAM,EAAE,CAAC,GACrB,GAAG,GACHV,QAAQ,CAACW,OAAO,EAAE,GAClB,GAAG,GACHJ,EAAE,CAACP,QAAQ,CAACY,QAAQ,EAAE,CAAC,GACvB,GAAG,GACHZ,QAAQ,CAACa,WAAW,EAAE;MACxBb,QAAQ,GAAGG,CAAC,GAAG,GAAG,GAAGE,CAAC,GAAGzB,CAAC,GAAG,MAAM,GAAG6B,EAAE;MACxCV,IAAI,CAACe,IAAI,GAAGd,QAAQ;MACpB;MACAD,IAAI,CAACgB,QAAQ,GAAG,EAAE;MAClBhB,IAAI,CAACiB,OAAO,GAAGC,MAAM,CAACxE,EAAE,CAACe,GAAG,CAACC,GAAG,EAAEtB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;MACnD4D,IAAI,CAACmB,OAAO,GAAGzE,EAAE,CAACe,GAAG,CAACC,GAAG,EAAEtB,IAAI,CAAC,aAAa,CAAC,CAAC;MAC/C4D,IAAI,CAACtC,GAAG,GAAG,EAAE;MACb,OAAOsC,IAAI;IACb,CAAC;IACDZ,SAAS,CAACzB,SAAS,CAACyD,cAAc,GAAG,UAAUC,IAAI,EAAE;MACnD;MACA,IAAMC,QAAQ,GAAGD,IAAI,GAAG,IAAI,GAAGE,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,EAAE,GAAG,IAAI,CAAC;MAC/D,OAAO/E,EAAE,CAACY,GAAG,CAACgE,QAAQ,CAAC;IACzB,CAAC;IACDlC,SAAS,CAACzB,SAAS,CAAC+D,YAAY,GAAG,UACjCC,SAAS,EACTlD,QAAQ,EACRmD,OAAO,EACPC,IAAI,EACJ;MACA,IAAMC,SAAS,GAAG,IAAI,CAACC,QAAQ,EAAE;MACjC,IAAMC,MAAM,GAAGtF,EAAE,CAACY,GAAG,CAACwE,SAAS,CAAC5D,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MAC9C,IAAM+D,OAAO,GAAG,IAAI,CAACb,cAAc,CAACY,MAAM,CAACtE,GAAG,CAAC;MAC/C,IAAMwE,SAAS,GAAGxF,EAAE,CAACW,IAAI,CAACX,EAAE,CAACY,GAAG,CAACwE,SAAS,CAAC,EAAE1F,IAAI,CAAC,YAAY,CAAC,CAAC;MAChE,IAAI+F,KAAK;MACT,KAAK,IAAMC,gBAAgB,IAAIF,SAAS,EAAE;QACxC,IACExF,EAAE,CAACb,OAAO,CACRqG,SAAS,CAACE,gBAAgB,CAAC,EAC3B3F,GAAG,CAAC,MAAM,CAAC,EACXH,KAAK,CAAC,WAAW,CAAC,CACnB,IACD,CAACI,EAAE,CAACb,OAAO,CACTqG,SAAS,CAACE,gBAAgB,CAAC,EAC3BhG,IAAI,CAAC,OAAO,CAAC,EACbM,EAAE,CAACY,GAAG,CAAC,IAAI,CAACyE,QAAQ,EAAE,CAAC,CACxB,EACD;UACAI,KAAK,GAAGD,SAAS,CAACE,gBAAgB,CAAC;UACnC;QACF;MACF;;MAEA;MACA,IAAM1D,KAAK,GAAG,CACZ,IAAIpD,EAAE,CAACS,GAAG,CAAC4C,SAAS,CAClBsD,OAAO,EACPxF,GAAG,CAAC,MAAM,CAAC,EACXH,KAAK,CAAC,eAAe,CAAC,EACtB0F,MAAM,CACP,EACD,IAAI1G,EAAE,CAACS,GAAG,CAAC4C,SAAS,CAClBsD,OAAO,EACP7F,IAAI,CAAC,aAAa,CAAC,EACnBM,EAAE,CAACY,GAAG,CAACwE,SAAS,CAAC,EACjBE,MAAM,CACP,EACD,IAAI1G,EAAE,CAACS,GAAG,CAAC4C,SAAS,CAACsD,OAAO,EAAE7F,IAAI,CAAC,SAAS,CAAC,EAAEuF,SAAS,EAAEK,MAAM,CAAC,EACjE,IAAI1G,EAAE,CAACS,GAAG,CAAC4C,SAAS,CAACsD,OAAO,EAAEzF,KAAK,CAAC,SAAS,CAAC,EAAE,IAAI0D,IAAI,EAAE,EAAE8B,MAAM,CAAC,EACnE,IAAI1G,EAAE,CAACS,GAAG,CAAC4C,SAAS,CAACwD,KAAK,EAAE/F,IAAI,CAAC,cAAc,CAAC,EAAE6F,OAAO,EAAED,MAAM,CAAC,CACnE;;MAED;MACA,IAAIJ,OAAO,EAAE;QACXlD,KAAK,CAACd,IAAI,CACR,IAAItC,EAAE,CAACS,GAAG,CAAC4C,SAAS,CAClBsD,OAAO,EACP7F,IAAI,CAAC,UAAU,CAAC,EAChBM,EAAE,CAACY,GAAG,CAACsE,OAAO,CAAC,EACfI,MAAM,CACP,CACF;MACH;;MAEA;MACA,KAAK,IAAMK,CAAC,IAAIR,IAAI,CAACS,UAAU,EAAE;QAC/B5D,KAAK,CAACd,IAAI,CACR,IAAItC,EAAE,CAACS,GAAG,CAAC4C,SAAS,CAClBsD,OAAO,EACP7F,IAAI,CAAC,OAAO,CAAC,EACbM,EAAE,CAACY,GAAG,CAACuE,IAAI,CAACS,UAAU,CAACD,CAAC,CAAC,CAAC,EAC1BL,MAAM,CACP,CACF;QACDtD,KAAK,CAACd,IAAI,CACR,IAAItC,EAAE,CAACS,GAAG,CAAC4C,SAAS,CAACjC,EAAE,CAACe,GAAG,EAAE,EAAErB,IAAI,CAAC,cAAc,CAAC,EAAE6F,OAAO,EAAED,MAAM,CAAC,CACtE;QACD,IAAMO,MAAM,GAAG7F,EAAE,CAACW,IAAI,CAACX,EAAE,CAACY,GAAG,CAACuE,IAAI,CAACS,UAAU,CAACD,CAAC,CAAC,CAAC,EAAEjG,IAAI,CAAC,YAAY,CAAC,CAAC;QACtE,KAAK,IAAMoG,GAAG,IAAID,MAAM,EAAE;UACxB,IACE7F,EAAE,CAACb,OAAO,CAAC0G,MAAM,CAACC,GAAG,CAAC,EAAEpG,IAAI,CAAC,OAAO,CAAC,EAAEM,EAAE,CAACY,GAAG,CAACuE,IAAI,CAACS,UAAU,CAACD,CAAC,CAAC,CAAC,CAAC,EAClE;YACA,IAAMI,UAAU,GAAG,IAAInH,EAAE,CAACS,GAAG,CAAC4C,SAAS,CACrC4D,MAAM,CAACC,GAAG,CAAC,EACXpG,IAAI,CAAC,cAAc,CAAC,EACpB6F,OAAO,EACPvF,EAAE,CAACY,GAAG,CAACuE,IAAI,CAACS,UAAU,CAACD,CAAC,CAAC,CAACnE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CACzC;YACDpB,aAAa,CAAC8B,gBAAgB,CAAC6D,UAAU,CAAC;UAC5C;QACF;MACF;MAEA3F,aAAa,CAAC8B,gBAAgB,CAACF,KAAK,EAAE,UAAUG,CAAC,EAAE6D,CAAC,EAAEtE,CAAC,EAAE;QACvDK,QAAQ,CAACI,CAAC,EAAE6D,CAAC,EAAEtE,CAAC,EAAEM,KAAK,CAAC;MAC1B,CAAC,CAAC;IACJ,CAAC;IACDU,SAAS,CAACzB,SAAS,CAACoE,QAAQ,GAAG,YAAY;MACzC,IAAMY,EAAE,GAAGrD,iBAAK,CAACC,WAAW,EAAE;MAC9BqD,OAAO,CAACC,GAAG,CAACF,EAAE,CAAC;MACf,IAAMG,WAAW,GAAGpG,EAAE,CAACe,GAAG,CAACf,EAAE,CAACY,GAAG,CAACqF,EAAE,CAAC,EAAEpG,IAAI,CAAC,cAAc,CAAC,CAAC;MAC5DqG,OAAO,CAACC,GAAG,CAAC,MAAM,GAAGC,WAAW,CAAC;MACjC,OAAOA,WAAW,GAAGA,WAAW,CAACpF,GAAG,GAAG,KAAK;IAC9C,CAAC;IACD0B,SAAS,CAACzB,SAAS,CAACoF,aAAa,GAAG,UAAUjD,EAAE,EAAErE,IAAI,EAAEoE,MAAM,EAAEmD,GAAG,EAAE;MACnE,IAAMC,IAAI,GAAGD,GAAG,GAAG,GAAG,GAAGlD,EAAE;MAC3B,IAAMoD,iBAAiB,GAAG,SAApBA,iBAAiB,GAAe;QACpC5H,EAAE,CAACmE,WAAW,CAAC0D,GAAG,CAAC,MAAM,EAAEF,IAAI,GAAG,GAAG,GAAGnD,EAAE,CAAC;MAC7C,CAAC;MACD,IAAMsD,WAAW,GAAG,SAAdA,WAAW,CAAavE,CAAC,EAAEC,OAAO,EAAEV,CAAC,EAAEiF,CAAC,EAAE;QAC9C,IAAIvE,OAAO,EAAE;UACXwE,KAAK,CACH,yBAAyB,GACvBL,IAAI,GACJ,GAAG,GACHnD,EAAE,GACF,gBAAgB,GAChBmD,IAAI,GACJ,oBAAoB,CACvB;UACD;UACA;UACA;UACA;UACAC,iBAAiB,EAAE;UACnB,KAAK,IAAMK,MAAM,IAAIF,CAAC,EAAE;YACtB3G,EAAE,CAACc,GAAG,CACJ6F,CAAC,CAACE,MAAM,CAAC,CAAC5H,OAAO,EACjB0H,CAAC,CAACE,MAAM,CAAC,CAACxE,SAAS,EACnBsE,CAAC,CAACE,MAAM,CAAC,CAACvE,MAAM,EAChBqE,CAAC,CAACE,MAAM,CAAC,CAACtE,GAAG,CACd;UACH;QACF;MACF,CAAC;MAED,IAAMuE,SAAS,GAAG;MAChB;MACA,IAAIlI,EAAE,CAACS,GAAG,CAAC4C,SAAS,CAClBjC,EAAE,CAACY,GAAG,CAAC2F,IAAI,GAAG,GAAG,GAAGnD,EAAE,CAAC,EACvBrD,GAAG,CAAC,MAAM,CAAC,EACXL,IAAI,CAAC,MAAM,CAAC,EACZM,EAAE,CAACY,GAAG,CAAC2F,IAAI,CAAC,CACb,EACD,IAAI3H,EAAE,CAACS,GAAG,CAAC4C,SAAS,CAClBjC,EAAE,CAACY,GAAG,CAAC2F,IAAI,GAAG,GAAG,GAAGnD,EAAE,CAAC,EACvB1D,IAAI,CAAC,YAAY,CAAC,EAClBM,EAAE,CAACY,GAAG,CAAC2F,IAAI,GAAG,KAAK,CAAC,EACpBvG,EAAE,CAACY,GAAG,CAAC2F,IAAI,CAAC,CACb,EACD,IAAI3H,EAAE,CAACS,GAAG,CAAC4C,SAAS,CAClBjC,EAAE,CAACY,GAAG,CAAC2F,IAAI,GAAG,GAAG,GAAGnD,EAAE,CAAC,EACvB1D,IAAI,CAAC,YAAY,CAAC,EAClBM,EAAE,CAACY,GAAG,CAAC2F,IAAI,GAAG,MAAM,CAAC,EACrBvG,EAAE,CAACY,GAAG,CAAC2F,IAAI,CAAC,CACb,EACD,IAAI3H,EAAE,CAACS,GAAG,CAAC4C,SAAS,CAClBjC,EAAE,CAACY,GAAG,CAAC2F,IAAI,GAAG,GAAG,GAAGnD,EAAE,CAAC,EACvB1D,IAAI,CAAC,YAAY,CAAC,EAClBM,EAAE,CAACY,GAAG,CAAC2F,IAAI,GAAG,MAAM,CAAC,EACrBvG,EAAE,CAACY,GAAG,CAAC2F,IAAI,CAAC,CACb,EACD,IAAI3H,EAAE,CAACS,GAAG,CAAC4C,SAAS,CAClBjC,EAAE,CAACY,GAAG,CAAC2F,IAAI,GAAG,GAAG,GAAGnD,EAAE,CAAC,EACvB1D,IAAI,CAAC,MAAM,CAAC,EACZX,IAAI,EACJiB,EAAE,CAACY,GAAG,CAAC2F,IAAI,CAAC,CACb,EACD,IAAI3H,EAAE,CAACS,GAAG,CAAC4C,SAAS,CAClBjC,EAAE,CAACY,GAAG,CAAC2F,IAAI,GAAG,GAAG,GAAGnD,EAAE,CAAC,EACvB1D,IAAI,CAAC,IAAI,CAAC,EACV0D,EAAE,EACFpD,EAAE,CAACY,GAAG,CAAC2F,IAAI,CAAC,CACb,EACD,IAAI3H,EAAE,CAACS,GAAG,CAAC4C,SAAS,CAClBjC,EAAE,CAACY,GAAG,CAAC2F,IAAI,GAAG,GAAG,GAAGnD,EAAE,CAAC,EACvBrD,GAAG,CAAC,OAAO,CAAC,EACZqD,EAAE,EACFpD,EAAE,CAACY,GAAG,CAAC2F,IAAI,CAAC,CACb,EACD,IAAI3H,EAAE,CAACS,GAAG,CAAC4C,SAAS,CAClBzC,CAAC,EACDK,IAAI,CAAC,cAAc,CAAC,EACpBG,EAAE,CAACY,GAAG,CAAC2F,IAAI,GAAG,GAAG,GAAGnD,EAAE,CAAC,EACvBpD,EAAE,CAACY,GAAG,CAAC2F,IAAI,CAAC,CACb;MACD;MACA,IAAI3H,EAAE,CAACS,GAAG,CAAC4C,SAAS,CAClBjC,EAAE,CAACY,GAAG,CAAC2F,IAAI,GAAG,KAAK,CAAC,EACpBxG,GAAG,CAAC,MAAM,CAAC,EACXH,KAAK,CAAC,WAAW,CAAC,EAClBI,EAAE,CAACY,GAAG,CAAC2F,IAAI,CAAC,CACb,EACD,IAAI3H,EAAE,CAACS,GAAG,CAAC4C,SAAS,CAClBjC,EAAE,CAACY,GAAG,CAAC2F,IAAI,GAAG,KAAK,CAAC,EACpB7G,IAAI,CAAC,aAAa,CAAC,EACnBM,EAAE,CAACY,GAAG,CAAC2F,IAAI,GAAG,GAAG,GAAGnD,EAAE,CAAC,EACvBpD,EAAE,CAACY,GAAG,CAAC2F,IAAI,CAAC,CACb;MACD;MACA,IAAI3H,EAAE,CAACS,GAAG,CAAC4C,SAAS,CAClBjC,EAAE,CAACY,GAAG,CAAC2F,IAAI,GAAG,MAAM,CAAC,EACrBxG,GAAG,CAAC,MAAM,CAAC,EACXH,KAAK,CAAC,WAAW,CAAC,EAClBI,EAAE,CAACY,GAAG,CAAC2F,IAAI,CAAC,CACb,EACD,IAAI3H,EAAE,CAACS,GAAG,CAAC4C,SAAS,CAClBjC,EAAE,CAACY,GAAG,CAAC2F,IAAI,GAAG,MAAM,CAAC,EACrB7G,IAAI,CAAC,OAAO,CAAC,EACbM,EAAE,CAACY,GAAG,CAAC2F,IAAI,GAAG,GAAG,GAAGnD,EAAE,CAAC,EACvBpD,EAAE,CAACY,GAAG,CAAC2F,IAAI,CAAC,CACb,EACD,IAAI3H,EAAE,CAACS,GAAG,CAAC4C,SAAS,CAClBjC,EAAE,CAACY,GAAG,CAAC2F,IAAI,GAAG,MAAM,CAAC,EACrB7G,IAAI,CAAC,aAAa,CAAC,EACnBM,EAAE,CAACY,GAAG,CAAC2F,IAAI,GAAG,GAAG,GAAGnD,EAAE,CAAC,EACvBpD,EAAE,CAACY,GAAG,CAAC2F,IAAI,CAAC,CACb;MACD;MACA,IAAI3H,EAAE,CAACS,GAAG,CAAC4C,SAAS,CAClBjC,EAAE,CAACY,GAAG,CAAC2F,IAAI,GAAG,MAAM,CAAC,EACrBxG,GAAG,CAAC,MAAM,CAAC,EACXH,KAAK,CAAC,iBAAiB,CAAC,EACxBI,EAAE,CAACY,GAAG,CAAC2F,IAAI,CAAC,CACb,EACD,IAAI3H,EAAE,CAACS,GAAG,CAAC4C,SAAS,CAClBjC,EAAE,CAACY,GAAG,CAAC2F,IAAI,GAAG,MAAM,CAAC,EACrB7G,IAAI,CAAC,aAAa,CAAC,EACnBM,EAAE,CAACY,GAAG,CAAC2F,IAAI,GAAG,GAAG,GAAGnD,EAAE,CAAC,EACvBpD,EAAE,CAACY,GAAG,CAAC2F,IAAI,CAAC,CACb,CACF;MACD,IAAIpD,MAAM,EAAE;QACV;QACA2D,SAAS,CAAC5F,IAAI,CACZ,IAAItC,EAAE,CAACS,GAAG,CAAC4C,SAAS,CAClBjC,EAAE,CAACY,GAAG,CAAC2F,IAAI,GAAG,GAAG,GAAGnD,EAAE,CAAC,EACvB1D,IAAI,CAAC,QAAQ,CAAC,EACdM,EAAE,CAACY,GAAG,CAACuC,MAAM,CAAC,EACdnD,EAAE,CAACY,GAAG,CAAC2F,IAAI,CAAC,CACb,CACF;MACH;MACAnG,aAAa,CAAC8B,gBAAgB,CAAC4E,SAAS,EAAEJ,WAAW,CAAC;IACxD,CAAC;IACD,IAAMK,EAAE,GAAG,IAAIrE,SAAS,CAAC1C,EAAE,CAAC;IAC5B,IAAMgH,WAAW,GAAG,IAAI3F,SAAS,CAAC0F,EAAE,CAAC1B,QAAQ,EAAE,CAAC;IAChD,IAAM4B,YAAY,GAAG,IAAI3G,UAAU,CAACyG,EAAE,CAAC1B,QAAQ,EAAE,CAAC;;IAElD;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAM6B,IAAI,GAAG,SAAPA,IAAI,CAAa1H,CAAC,EAAEC,GAAG,EAAE0H,aAAa,EAAE;MAC5C,IAAMC,UAAU,GAAG,SAAbA,UAAU,CAAa3H,GAAG,EAAE;QAChC,IAAI,CAAC4H,OAAO,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC5H,GAAG,GAAGA,GAAG;QACd,IAAI,CAAC6H,OAAO,GAAG7H,GAAG,CAAC8H,aAAa,CAAC,IAAI,CAAC;QACtC,IAAI,CAACD,OAAO,CAACE,SAAS,GAAG,UAAU;MACrC,CAAC;MACDJ,UAAU,CAACnG,SAAS,CAACwG,MAAM,GAAG,UAAUrE,EAAE,EAAEsE,OAAO,EAAEC,IAAI,EAAEC,SAAS,EAAE;QACpE,IAAMC,GAAG,GAAG,IAAI,CAACpI,GAAG,CAAC8H,aAAa,CAAC,IAAI,CAAC;QACxCM,GAAG,CAACC,SAAS,GAAGJ,OAAO;QACvB,IAAIE,SAAS,EAAE;UACbC,GAAG,CAACL,SAAS,GAAG,QAAQ;QAC1B;QACAK,GAAG,CAACzE,EAAE,GAAGA,EAAE;QACX,IAAM2E,MAAM,GAAG,IAAI,CAACA,MAAM;QAC1B,IAAMV,OAAO,GAAG,IAAI,CAACA,OAAO;QAC5BQ,GAAG,CAACG,gBAAgB,CAClB,OAAO,EACP,UAAUC,GAAG,EAAE;UACbF,MAAM,CAACE,GAAG,CAACC,MAAM,CAAC9E,EAAE,EAAEiE,OAAO,EAAE5H,GAAG,CAAC;QACrC,CAAC,EACD,KAAK,CACN;QAED,IAAI,CAAC4H,OAAO,CAACjE,EAAE,CAAC,GAAG;UAAEuE,IAAI,EAAEA,IAAI,CAACvE,EAAE;UAAEyE,GAAG,EAAEA;QAAI,CAAC;QAC9C,IAAI,CAACP,OAAO,CAACa,WAAW,CAACN,GAAG,CAAC;MAC/B,CAAC;MACDT,UAAU,CAACnG,SAAS,CAACmH,UAAU,GAAG,YAAY;QAC5C,OAAO,IAAI,CAACd,OAAO;MACrB,CAAC;MACDF,UAAU,CAACnG,SAAS,CAAC8G,MAAM,GAAG,UAAU3E,EAAE,EAAEiE,OAAO,EAAE5H,GAAG,EAAE;QACxD,KAAK,IAAMoI,GAAG,IAAIR,OAAO,EAAE;UACzB,IAAIQ,GAAG,KAAKzE,EAAE,EAAE;YACdiE,OAAO,CAACjE,EAAE,CAAC,CAACyE,GAAG,CAACL,SAAS,GAAG,QAAQ;YACpC/H,GAAG,CAAC4I,cAAc,CAAChB,OAAO,CAACjE,EAAE,CAAC,CAACuE,IAAI,CAAC,CAACH,SAAS,IAAI,SAAS;UAC7D,CAAC,MAAM;YACL,IAAMG,IAAI,GAAGlI,GAAG,CAAC4I,cAAc,CAAChB,OAAO,CAACQ,GAAG,CAAC,CAACF,IAAI,CAAC;YAClDA,IAAI,CAACH,SAAS,GAAGG,IAAI,CAACH,SAAS,CAACc,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;YAC3DjB,OAAO,CAACQ,GAAG,CAAC,CAACA,GAAG,CAACL,SAAS,GAAGH,OAAO,CAACjE,EAAE,CAAC,CAACyE,GAAG,CAACL,SAAS,CAACc,OAAO,CAC5D,cAAc,EACd,EAAE,CACH;UACH;QACF;MACF,CAAC;MACD,IAAI,CAACnB,aAAa,GAAGA,aAAa;MAClC,IAAMoB,QAAQ,GAAGvI,EAAE,CAACW,IAAI,CAACnB,CAAC,EAAEK,IAAI,CAAC,cAAc,CAAC,CAAC;MACjD,IAAI2I,OAAO;MACX,KAAK,IAAMrG,CAAC,IAAIoG,QAAQ,EAAE;QACxB,IACEvI,EAAE,CAACb,OAAO,CAACoJ,QAAQ,CAACpG,CAAC,CAAC,EAAEpC,GAAG,CAAC,MAAM,CAAC,EAAEL,IAAI,CAAC,MAAM,CAAC,CAAC,IAClDM,EAAE,CAACb,OAAO,CACRa,EAAE,CAACe,GAAG,CAACwH,QAAQ,CAACpG,CAAC,CAAC,EAAEzC,IAAI,CAAC,YAAY,CAAC,CAAC,EACvCK,GAAG,CAAC,MAAM,CAAC,EACXH,KAAK,CAAC,WAAW,CAAC,CACnB,EACD;UACA4I,OAAO,GAAGD,QAAQ,CAACpG,CAAC,CAAC;UACrB;QACF;MACF;MACA,IAAI,CAACsG,OAAO,GAAGzI,EAAE,CAACb,OAAO,CAACa,EAAE,CAACY,GAAG,CAACmG,EAAE,CAAC1B,QAAQ,EAAE,CAAC,EAAE3F,IAAI,CAAC,SAAS,CAAC,EAAE8I,OAAO,CAAC;MAC1E,IAAME,YAAY,GAAG1I,EAAE,CAACe,GAAG,CAACvB,CAAC,EAAEO,GAAG,CAAC,MAAM,CAAC,CAAC;MAC3C,IACE2I,YAAY,CAAC1H,GAAG,KAAKpB,KAAK,CAAC,WAAW,CAAC,CAACoB,GAAG,IAC3C0H,YAAY,CAAC1H,GAAG,KAAKpB,KAAK,CAAC,eAAe,CAAC,CAACoB,GAAG,EAC/C;QACA,IAAI,CAAC2H,QAAQ,GAAG3I,EAAE,CAACe,GAAG,CAACvB,CAAC,EAAEE,IAAI,CAAC,aAAa,CAAC,CAAC,CAACsB,GAAG,KAAK+F,EAAE,CAAC1B,QAAQ,EAAE;MACtE,CAAC,MAAM,IAAIqD,YAAY,CAAC1H,GAAG,KAAKtB,IAAI,CAAC,MAAM,CAAC,CAACsB,GAAG,EAAE;QAChD,IAAI,CAAC2H,QAAQ,GAAGnJ,CAAC,CAACwB,GAAG,KAAK+F,EAAE,CAAC1B,QAAQ,EAAE;MACzC,CAAC,MAAM,IAAIqD,YAAY,CAAC1H,GAAG,KAAKnB,IAAI,CAAC,QAAQ,CAAC,CAACmB,GAAG,EAAE;QAClD,IAAMiF,EAAE,GAAGrD,iBAAK,CAACC,WAAW,EAAE;QAC9B,IAAM+F,KAAK,GAAG3C,EAAE,IAAIA,EAAE,CAACjF,GAAG;QAC1B,IAAI,CAAC2H,QAAQ,GAAGnJ,CAAC,CAACwB,GAAG,KAAK4H,KAAK;MACjC,CAAC,MAAM;QACL,IAAI,CAACD,QAAQ,GAAG,KAAK;MACvB;MAEA,IAAI,CAACE,GAAG,GAAG,IAAIzB,UAAU,CAAC3H,GAAG,CAAC;IAChC,CAAC;IAEDyH,IAAI,CAACjG,SAAS,CAAC6H,MAAM,GAAG,UAAUC,aAAa,EAAE;MAC/C,IAAMC,IAAI,GAAGvJ,GAAG,CAAC8H,aAAa,CAAC,IAAI,CAAC;MACpCyB,IAAI,CAACxB,SAAS,GAAG,QAAQ;MACzBwB,IAAI,CAAClB,SAAS,GAAGiB,aAAa;MAC9BtJ,GAAG,CAAC4I,cAAc,CAAC,kBAAkB,CAAC,CAACF,WAAW,CAACa,IAAI,CAAC;MACxDC,UAAU,CAAC,YAAY;QACrBxJ,GAAG,CAAC4I,cAAc,CAAC,kBAAkB,CAAC,CAACa,WAAW,CAACF,IAAI,CAAC;QACxD;MACF,CAAC,EAAE,IAAI,CAAC;IACV,CAAC;IAED9B,IAAI,CAACjG,SAAS,CAACkI,MAAM,GAAG,UAAU3J,CAAC,EAAEC,GAAG,EAAE;MACxC,IAAM2J,IAAI,GAAG,IAAI;MACjB,SAASC,YAAY,GAAI;QACvB,IAAM/D,MAAM,GAAGtF,EAAE,CAACY,GAAG,CAACmG,EAAE,CAAC1B,QAAQ,EAAE,CAAC;QACpC;QACA,IAAMiE,QAAQ,GAAGF,IAAI,CAAC3E,OAAO,CAAC1F,IAAI;QAClC,IAAMwK,eAAe,GAAG,SAAlBA,eAAe,CAAavI,GAAG,EAAEoB,OAAO,EAAEoH,IAAI,EAAE;UACpD,IAAIpH,OAAO,KAAK,IAAI,EAAE;YACpB,IAAI,CAACgH,IAAI,CAACX,OAAO,EAAE;cACjB;cACA,IACE,CAACzI,EAAE,CAACb,OAAO,CACTsK,QAAQ,CAACxK,OAAO,EAChBwK,QAAQ,CAACpH,SAAS,EAClBoH,QAAQ,CAACnH,MAAM,EACfmH,QAAQ,CAAClH,GAAG,CACb,EACD;gBACAvC,EAAE,CAACc,GAAG,CACJ2I,QAAQ,CAACxK,OAAO,EAChBwK,QAAQ,CAACpH,SAAS,EAClBoH,QAAQ,CAACnH,MAAM,EACfmH,QAAQ,CAAClH,GAAG,CACb;cACH;YACF,CAAC,MAAM;cACLvC,EAAE,CAAC0J,UAAU,CACXD,QAAQ,CAACxK,OAAO,EAChBwK,QAAQ,CAACpH,SAAS,EAClBoH,QAAQ,CAACnH,MAAM,EACfmH,QAAQ,CAAClH,GAAG,CACb;YACH;YACA2D,OAAO,CAACC,GAAG,CAACiD,IAAI,CAACX,OAAO,CAAC;YACzBW,IAAI,CAACX,OAAO,GAAG,CAACW,IAAI,CAACX,OAAO;YAC5BkB,aAAa,CAACC,QAAQ,GAAG,KAAK;YAC9B1D,OAAO,CAACC,GAAG,CAACiD,IAAI,CAACX,OAAO,CAAC;YACzB,IAAMoB,iBAAiB,GAAGT,IAAI,CAACX,OAAO,GAAG,WAAW,GAAG,SAAS;YAChE,IAAMqB,QAAQ,GAAGV,IAAI,CAACX,OAAO,GAAG,aAAa,GAAG,mBAAmB;YACnEkB,aAAa,CAACI,KAAK,GAAGF,iBAAiB,GAAGP,QAAQ;YAClDF,IAAI,CAACN,MAAM,CAAC,MAAM,GAAGgB,QAAQ,GAAGR,QAAQ,GAAG,GAAG,CAAC;UACjD;QACF,CAAC;QACD,IAAMG,QAAQ,GAAG,IAAI7K,EAAE,CAACS,GAAG,CAAC4C,SAAS,CACnCqD,MAAM,EACN5F,IAAI,CAAC,SAAS,CAAC,EACf0J,IAAI,CAAC3E,OAAO,CAAC7D,GAAG,EAChB0E,MAAM,CACP;QACDqE,aAAa,CAACC,QAAQ,GAAG,IAAI;QAC7BD,aAAa,CAACI,KAAK,GAAG,aAAa;QACnC,IAAI,CAACX,IAAI,CAACX,OAAO,EAAE;UACjBrI,aAAa,CAAC8B,gBAAgB,CAACuH,QAAQ,EAAEF,eAAe,CAAC;QAC3D,CAAC,MAAM;UACLnJ,aAAa,CAACqC,gBAAgB,CAACgH,QAAQ,EAAEF,eAAe,CAAC;QAC3D;MACF;MACA,IAAMT,MAAM,GAAG,SAATA,MAAM,CAAaC,aAAa,EAAE;QACtC,IAAMC,IAAI,GAAGvJ,GAAG,CAAC8H,aAAa,CAAC,IAAI,CAAC;QACpCyB,IAAI,CAACxB,SAAS,GAAG,QAAQ;QACzBwB,IAAI,CAAClB,SAAS,GAAGiB,aAAa;QAC9BtJ,GAAG,CAAC4I,cAAc,CAAC,kBAAkB,CAAC,CAACF,WAAW,CAACa,IAAI,CAAC;QACxDC,UAAU,CAAC,YAAY;UACrBxJ,GAAG,CAAC4I,cAAc,CAAC,kBAAkB,CAAC,CAACa,WAAW,CAACF,IAAI,CAAC;UACxD;QACF,CAAC,EAAE,IAAI,CAAC;MACV,CAAC;MACD,IAAMgB,aAAa,GAAG,SAAhBA,aAAa,CAAaC,IAAI,EAAE;QACpCC,gBAAgB,CAAChB,WAAW,CAC1BgB,gBAAgB,CAACC,UAAU,CAACD,gBAAgB,CAACC,UAAU,CAAC/I,MAAM,GAAG,CAAC,CAAC,CACpE;QACDgJ,YAAY,CAACR,QAAQ,GAAG,KAAK;MAC/B,CAAC;MACD,IAAMS,aAAa,GAAG,SAAhBA,aAAa,CAAaJ,IAAI,EAAE;QACpC;QACA;QACAG,YAAY,CAACR,QAAQ,GAAG,IAAI;QAC5B,IAAMU,IAAI,GAAG7K,GAAG,CAAC8H,aAAa,CAAC,KAAK,CAAC;QACrC,IAAMgD,QAAQ,GAAG9K,GAAG,CAAC8H,aAAa,CAAC,OAAO,CAAC;QAC3C,IAAIvH,EAAE,CAACb,OAAO,CAACK,CAAC,EAAEK,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE;UAC/B;UACA0K,QAAQ,CAACR,KAAK,GAAG/J,EAAE,CAACe,GAAG,CAACvB,CAAC,EAAEK,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC,MAAM;UACL;UACA0K,QAAQ,CAACR,KAAK,GAAG/J,EAAE,CAACe,GAAG,CAACvB,CAAC,EAAEK,IAAI,CAAC,WAAW,CAAC,CAAC,GACzCG,EAAE,CAACe,GAAG,CAACvB,CAAC,EAAEK,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,GAAG,GAClC,EAAE;UACN0K,QAAQ,CAACR,KAAK,IAAI/J,EAAE,CAACe,GAAG,CAACvB,CAAC,EAAEK,IAAI,CAAC,aAAa,CAAC,CAAC,GAC5CG,EAAE,CAACe,GAAG,CAACvB,CAAC,EAAEK,IAAI,CAAC,WAAW,CAAC,CAAC,GAC5B,EAAE;UACN0K,QAAQ,CAACR,KAAK,GACZ/J,EAAE,CAACe,GAAG,CAACvB,CAAC,EAAEK,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,GAAG,GAAGG,EAAE,CAACe,GAAG,CAACvB,CAAC,EAAEK,IAAI,CAAC,aAAa,CAAC,CAAC;QACvE;QACA,IAAM2K,MAAM,GAAG/K,GAAG,CAAC8H,aAAa,CAAC,OAAO,CAAC;QACzCiD,MAAM,CAACT,KAAK,GAAG/J,EAAE,CAACe,GAAG,CAACvB,CAAC,EAAEK,IAAI,CAAC,MAAM,CAAC,CAAC,GAAGG,EAAE,CAACe,GAAG,CAACvB,CAAC,EAAEK,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE;QACrE,IAAM4K,UAAU,GAAGhL,GAAG,CAAC8H,aAAa,CAAC,OAAO,CAAC;QAC7C,IAAIvH,EAAE,CAACb,OAAO,CAACK,CAAC,EAAEK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;UAC9B;UACA4K,UAAU,CAACV,KAAK,GAAG/J,EAAE,CAACe,GAAG,CAACvB,CAAC,EAAEK,IAAI,CAAC,KAAK,CAAC,CAAC,CAACmB,GAAG;QAC/C,CAAC,MAAM;UACL;UACAyJ,UAAU,CAACV,KAAK,GAAG/J,EAAE,CAACe,GAAG,CAACvB,CAAC,EAAEK,IAAI,CAAC,WAAW,CAAC,CAAC,GAC3CG,EAAE,CAACe,GAAG,CAACvB,CAAC,EAAEK,IAAI,CAAC,WAAW,CAAC,CAAC,CAACmB,GAAG,GAChC,EAAE;QACR;QACA,IAAI0J,SAAS;QACb;QACA,IAAMC,YAAY,GAAGlL,GAAG,CAAC8H,aAAa,CAAC,OAAO,CAAC;QAC/CoD,YAAY,CAACZ,KAAK,GAChBW,SAAS,IAAI,4CAA4C,EAAC;QAC5DJ,IAAI,CAACxC,SAAS,mlBASG;QACjBoC,gBAAgB,CAAC/B,WAAW,CAACmC,IAAI,CAAC;QAClC7K,GAAG,CAAC4I,cAAc,CAAC,UAAU,CAAC,CAACF,WAAW,CAACoC,QAAQ,CAAC;QACpD9K,GAAG,CAAC4I,cAAc,CAAC,QAAQ,CAAC,CAACF,WAAW,CAACqC,MAAM,CAAC;QAChD/K,GAAG,CAAC4I,cAAc,CAAC,YAAY,CAAC,CAACF,WAAW,CAACsC,UAAU,CAAC;QACxDhL,GAAG,CAAC4I,cAAc,CAAC,cAAc,CAAC,CAACF,WAAW,CAACwC,YAAY,CAAC;QAC5DlL,GAAG,CACA4I,cAAc,CAAC,UAAU,CAAC,CAC1BL,gBAAgB,CAAC,OAAO,EAAEgC,aAAa,EAAE,KAAK,CAAC;QAClDvK,GAAG,CAAC4I,cAAc,CAAC,aAAa,CAAC,CAACL,gBAAgB,CAChD,QAAQ,EACR,YAAY;UACVjB,EAAE,CAACV,aAAa,CACdmE,MAAM,CAACT,KAAK,EACZQ,QAAQ,CAACR,KAAK,EACdU,UAAU,CAACV,KAAK,EAChBY,YAAY,CAACZ,KAAK,CACnB;QACH,CAAC,EACD,KAAK,CACN;QACDQ,QAAQ,CAACK,KAAK,EAAE;MAClB,CAAC;MACD,IAAMC,YAAY,GAAG,SAAfA,YAAY,GAAe;QAC/B,IAAM1F,IAAI,GAAG;UACXS,UAAU,EAAE;QACd,CAAC;QACD;QACA,IAAImB,EAAE,CAAC1B,QAAQ,EAAE,EAAE;UAAA;YACjB;YACA;YACA,IAAMyF,eAAe,GAAG,SAAlBA,eAAe,CAAa9J,GAAG,EAAEoB,OAAO,EAAE2I,YAAY,EAAEpE,CAAC,EAAE;cAC/D,IAAIvE,OAAO,KAAK,IAAI,EAAE;gBACpB,KAAK,IAAMyE,MAAM,IAAIF,CAAC,EAAE;kBACtB3G,EAAE,CAACc,GAAG,CACJ6F,CAAC,CAACE,MAAM,CAAC,CAAC5H,OAAO,EACjB0H,CAAC,CAACE,MAAM,CAAC,CAACxE,SAAS,EACnBsE,CAAC,CAACE,MAAM,CAAC,CAACvE,MAAM,EAChBqE,CAAC,CAACE,MAAM,CAAC,CAACtE,GAAG,CACd;gBACH;gBACAyI,aAAa,CAACpB,QAAQ,GAAG,KAAK;gBAC9BqB,aAAa,CAAClB,KAAK,GAAG,EAAE;gBACxBmB,aAAa,EAAE;gBACfpC,MAAM,CAAC,oBAAoB,CAAC;gBAC5B,IAAIM,IAAI,CAACT,QAAQ,EAAE;kBACjBlJ,GAAG,CACA4I,cAAc,CAAC,sBAAsB,CAAC,CACtC8C,YAAY,CACX/B,IAAI,CAACgC,YAAY,CAACzE,CAAC,CAAC,CAAC,CAAC,CAAC1H,OAAO,CAAC,EAC/BQ,GAAG,CAAC4I,cAAc,CAAC,sBAAsB,CAAC,CAAC8B,UAAU,CAAC,CAAC,CAAC,CACzD;gBACL;cACF,CAAC,MAAM;gBACLrB,MAAM,CAAC,2CAA2C,CAAC;cACrD;YACF,CAAC;YACD,IAAMuC,KAAK,GAAGJ,aAAa,CAAClB,KAAK,CAACvI,KAAK,CAAC,GAAG,CAAC;YAC5C,IAAM8J,mBAAmB,GAAG,SAAtBA,mBAAmB,GAAe;cACtCN,aAAa,CAACpB,QAAQ,GAAG,IAAI;cAC7BoB,aAAa,CAACjB,KAAK,GAAG,aAAa;cACnChD,EAAE,CAAC/B,YAAY,CACbiG,aAAa,CAAClB,KAAK,EACnBe,eAAe,EACfS,mBAAmB,CAACxB,KAAK,EACzB5E,IAAI,CACL;YACH,CAAC;YACD,KAAK,IAAMqG,IAAI,IAAIH,KAAK,EAAE;cACxB,IAAIA,KAAK,CAACG,IAAI,CAAC,CAACC,KAAK,CAAC,MAAM,CAAC,EAAE;gBAAA;kBAC7B,IAAMC,MAAM,GAAGL,KAAK,CAACG,IAAI,CAAC,CAAClD,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;kBAC7C,IAAMqD,SAAS,GAAG1E,YAAY,CAAC9F,UAAU,CAACuK,MAAM,CAAC;kBACjD,IAAIC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;oBACzBxG,IAAI,CAACS,UAAU,CAAC1E,IAAI,CAACyK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;kBACvC,CAAC,MAAM,IAAIA,SAAS,CAAC,CAAC,CAAC,CAACvK,MAAM,GAAG,CAAC,EAAE;oBAClC;oBACA,IAAMwK,WAAW,GAAGnM,GAAG,CAAC8H,aAAa,CAAC,QAAQ,CAAC;oBAC/C,IAAMsE,iBAAiB,GAAGpM,GAAG,CAAC8H,aAAa,CAAC,OAAO,CAAC;oBACpDsE,iBAAiB,CAACC,IAAI,GAAG,QAAQ;oBACjCD,iBAAiB,CAAC9B,KAAK,GAAG,UAAU;oBACpC8B,iBAAiB,CAAC7D,gBAAgB,CAChC,OAAO,EACP,YAAY;sBACV7C,IAAI,CAACS,UAAU,CAAC1E,IAAI,CAACyK,SAAS,CAAC,CAAC,CAAC,CAACC,WAAW,CAAC7B,KAAK,CAAC,CAAC;sBACrDuB,mBAAmB,EAAE;sBACrBM,WAAW,CAACG,UAAU,CAAC7C,WAAW,CAAC2C,iBAAiB,CAAC;sBACrDD,WAAW,CAACG,UAAU,CAAC7C,WAAW,CAAC0C,WAAW,CAAC;oBACjD,CAAC,EACD,KAAK,CACN;oBACD,IAAMI,WAAW,GAAG,SAAdA,WAAW,CAAaC,KAAK,EAAEvK,CAAC,EAAE;sBACtC,IAAM3C,IAAI,GAAGiB,EAAE,CAACe,GAAG,CAACf,EAAE,CAACY,GAAG,CAACqL,KAAK,CAAC,EAAEvM,IAAI,CAAC,MAAM,CAAC,CAAC;sBAChD,IAAMwM,MAAM,GAAGzM,GAAG,CAAC8H,aAAa,CAAC,QAAQ,CAAC;sBAC1C2E,MAAM,CAACnC,KAAK,GAAGrI,CAAC;sBAChBwK,MAAM,CAACpE,SAAS,GAAG/I,IAAI;sBACvB,OAAOmN,MAAM;oBACf,CAAC;oBACD,KAAK,IAAMvG,CAAC,IAAIgG,SAAS,CAAC,CAAC,CAAC,EAAE;sBAC5BC,WAAW,CAACzD,WAAW,CAAC6D,WAAW,CAACL,SAAS,CAAC,CAAC,CAAC,CAAChG,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC;oBAC1D;oBACAuE,gBAAgB,CAAC/B,WAAW,CAACyD,WAAW,CAAC;oBACzC1B,gBAAgB,CAAC/B,WAAW,CAAC0D,iBAAiB,CAAC;oBAC/C;sBAAA;wBAAA;sBAAA;oBAAA;kBACF,CAAC,MAAM;oBACL;oBACA,IACErH,MAAM,CACJxE,EAAE,CAACe,GAAG,CAACf,EAAE,CAACY,GAAG,CAACmG,EAAE,CAAC1B,QAAQ,EAAE,CAAC,EAAE3F,IAAI,CAAC,IAAI,CAAC,CAAC,CAC1C,CAACyM,WAAW,EAAE,KAAKT,MAAM,CAACS,WAAW,EAAE,EACxC;sBACAhH,IAAI,CAACS,UAAU,CAAC1E,IAAI,CAAC6F,EAAE,CAAC1B,QAAQ,EAAE,CAAC;oBACrC,CAAC,MAAM;sBACLyD,MAAM,CACJ,oBAAoB,GAClB4C,MAAM,GACN,kBAAkB,GAClBA,MAAM,GACN,0BAA0B,CAC7B;sBACD;wBAAA;0BAAA;wBAAA;sBAAA;oBACF;kBACF;gBAAC;gBAAA;cACH;cACA;AACZ;AACA;AACA;AACA;YACU;;YACAJ,mBAAmB,EAAE;UAAA;UAAA;QACvB,CAAC,MAAM;UACLxC,MAAM,CAAC,kCAAkC,CAAC;QAC5C;MACF,CAAC;MACD,IAAMoC,aAAa,GAAG,SAAhBA,aAAa,GAAe;QAChCkB,oBAAoB,CAACtE,SAAS,GAAG7H,SAAS,GAAGgL,aAAa,CAAClB,KAAK,CAAC3I,MAAM;QACvEgL,oBAAoB,CAACC,KAAK,CAACC,KAAK,GAC9BrM,SAAS,GAAGgL,aAAa,CAAClB,KAAK,CAAC3I,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,EAAE;QAC1D,IAAI6J,aAAa,CAAClB,KAAK,CAAC3I,MAAM,KAAK,CAAC,EAAE;UACpCmK,mBAAmB,CAACxB,KAAK,GAAG,EAAE;UAC9BiB,aAAa,CAACjB,KAAK,GAAG,MAAM;QAC9B;MACF,CAAC;MACD;MACA,IAAMwC,UAAU,GAAG9M,GAAG,CAAC8H,aAAa,CAAC,IAAI,CAAC;MAC1CgF,UAAU,CAAC/E,SAAS,GAAG,WAAW;MAClC+E,UAAU,CAACvE,gBAAgB,CACzB,OAAO,EACP,YAAY;QACVuE,UAAU,CAAC/E,SAAS,GAAG,WAAW;MACpC,CAAC,EACD,KAAK,CACN;MACD,IAAI,CAAC+E,UAAU,GAAGA,UAAU;MAC5B,IAAMC,eAAe,GAAG/M,GAAG,CAAC8H,aAAa,CAAC,KAAK,CAAC;MAChDiF,eAAe,CAAChF,SAAS,GAAG,kBAAkB;;MAE9C;MACA,IAAMiF,OAAO,GAAGhN,GAAG,CAAC8H,aAAa,CAAC,IAAI,CAAC;MACvCkF,OAAO,CAACrJ,EAAE,GAAG,kBAAkB;MAC/BqJ,OAAO,CAACjF,SAAS,GAAG,kBAAkB;MACtC,IAAI,CAACiF,OAAO,GAAGA,OAAO;MACtB,IAAMvC,gBAAgB,GAAGzK,GAAG,CAAC8H,aAAa,CAAC,MAAM,CAAC;MAClD2C,gBAAgB,CAAC1C,SAAS,GAAG,kBAAkB;MAC/C0C,gBAAgB,CAACpC,SAAS,GAAG,8BAA8B;MAC3D,IAAIyD,mBAAmB;MACvB,IAAIN,aAAa;MACjB,IAAImB,oBAAoB;MACxB,IAAIpB,aAAa;MACjB,IAAIZ,YAAY;MAChB,IAAIrD,EAAE,CAAC1B,QAAQ,EAAE,EAAE;QACjBkG,mBAAmB,GAAG9L,GAAG,CAAC8H,aAAa,CAAC,OAAO,CAAC;QAChDgE,mBAAmB,CAACnI,EAAE,GAAG,qBAAqB;QAC9CmI,mBAAmB,CAACO,IAAI,GAAG,QAAQ;QAEnCb,aAAa,GAAGxL,GAAG,CAAC8H,aAAa,CAAC,UAAU,CAAC;QAC7C0D,aAAa,CAAC7H,EAAE,GAAG,eAAe;QAElCgJ,oBAAoB,GAAG3M,GAAG,CAAC8H,aAAa,CAAC,MAAM,CAAC;QAChD6E,oBAAoB,CAACjE,WAAW,CAAC1I,GAAG,CAACiN,cAAc,CAACzM,SAAS,CAAC,CAAC;QAC/DgL,aAAa,CAAC0B,IAAI,GAAG,EAAE;QACvB1B,aAAa,CAACjD,gBAAgB,CAAC,OAAO,EAAEkD,aAAa,EAAE,KAAK,CAAC;QAC7DD,aAAa,CAACjD,gBAAgB,CAAC,OAAO,EAAEkD,aAAa,EAAE,KAAK,CAAC;QAE7DF,aAAa,GAAGvL,GAAG,CAAC8H,aAAa,CAAC,OAAO,CAAC;QAC1CyD,aAAa,CAAC5H,EAAE,GAAG,eAAe;QAClC4H,aAAa,CAACc,IAAI,GAAG,QAAQ;QAC7Bd,aAAa,CAACjB,KAAK,GAAG,MAAM;QAE5BG,gBAAgB,CAAC/B,WAAW,CAACoD,mBAAmB,CAAC;QACjDrB,gBAAgB,CAAC/B,WAAW,CAACiE,oBAAoB,CAAC;QAClDlC,gBAAgB,CAAC/B,WAAW,CAAC8C,aAAa,CAAC;QAC3Cf,gBAAgB,CAAC/B,WAAW,CAAC6C,aAAa,CAAC;QAC3Cd,gBAAgB,CAAClC,gBAAgB,CAAC,QAAQ,EAAE6C,YAAY,EAAE,KAAK,CAAC;MAClE,CAAC,MAAM;QACL,IAAM+B,QAAQ,GAAGnN,GAAG,CAACiN,cAAc,CACjC,gDAAgD,GAC9C,iCAAiC,CACpC;QACDtC,YAAY,GAAG3K,GAAG,CAAC8H,aAAa,CAAC,OAAO,CAAC;QACzC6C,YAAY,CAAC0B,IAAI,GAAG,QAAQ;QAC5B1B,YAAY,CAACL,KAAK,GAAG,wBAAwB;QAC7CK,YAAY,CAACpC,gBAAgB,CAAC,OAAO,EAAEqC,aAAa,EAAE,KAAK,CAAC;QAC5DH,gBAAgB,CAAC/B,WAAW,CAACyE,QAAQ,CAAC;QACtC1C,gBAAgB,CAAC/B,WAAW,CAACiC,YAAY,CAAC;MAC5C;MAEAoC,eAAe,CAACrE,WAAW,CAAC+B,gBAAgB,CAAC;MAE7C,IAAM2C,kBAAkB,GAAGpN,GAAG,CAAC8H,aAAa,CAAC,KAAK,CAAC;MACnDsF,kBAAkB,CAACrF,SAAS,GAAG,qBAAqB;;MAEpD;MACA;MACA,IAAMsF,QAAQ,GAAG9M,EAAE,CAACW,IAAI,CAACnB,CAAC,EAAEK,IAAI,CAAC,cAAc,CAAC,CAAC;MACjD,IAAI4E,OAAO;MACX,KAAK,IAAM/C,CAAC,IAAIoL,QAAQ,EAAE;QACxB,IACE9M,EAAE,CAACb,OAAO,CAAC2N,QAAQ,CAACpL,CAAC,CAAC,EAAE3B,GAAG,CAAC,MAAM,CAAC,EAAEL,IAAI,CAAC,MAAM,CAAC,CAAC,IAClDM,EAAE,CAACb,OAAO,CACRa,EAAE,CAACe,GAAG,CAAC+L,QAAQ,CAACpL,CAAC,CAAC,EAAEhC,IAAI,CAAC,YAAY,CAAC,CAAC,EACvCK,GAAG,CAAC,MAAM,CAAC,EACXH,KAAK,CAAC,WAAW,CAAC,CACnB,EACD;UACA6E,OAAO,GAAGqI,QAAQ,CAACpL,CAAC,CAAC;UACrB;UACA;UACA;UACA;QACF;MACF;;MACA,IAAIiI,aAAa;MACjB,IAAIlF,OAAO,EAAE;QACX,IAAI,CAACA,OAAO,GAAGsC,EAAE,CAAC9D,OAAO,CAACwB,OAAO,CAAC;QAClC;QACA,IAAI,IAAI,CAACA,OAAO,CAACtB,MAAM,KAAK,EAAE,EAAE;UAC9B,IAAMA,MAAM,GAAG1D,GAAG,CAAC8H,aAAa,CAAC,KAAK,CAAC;UACvCpE,MAAM,CAAC4J,GAAG,GAAG,IAAI,CAACtI,OAAO,CAACtB,MAAM,CAACnC,GAAG;UACpC6L,kBAAkB,CAAC1E,WAAW,CAAChF,MAAM,CAAC;QACxC;QACA;QACA,IAAM6J,QAAQ,GAAGvN,GAAG,CAAC8H,aAAa,CAAC,IAAI,CAAC;QACxCyF,QAAQ,CAACxF,SAAS,GAAG,IAAI;QACzBwF,QAAQ,CAAC7E,WAAW,CAClB1I,GAAG,CAACiN,cAAc,CAAC,IAAI,CAACjI,OAAO,CAAC1F,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC0F,OAAO,CAACrB,EAAE,GAAG,GAAG,CAAC,CACrE;QACDyJ,kBAAkB,CAAC1E,WAAW,CAAC6E,QAAQ,CAAC;QACxC;QACA,IAAI,CAAC,IAAI,CAACrE,QAAQ,IAAI5B,EAAE,CAAC1B,QAAQ,EAAE,EAAE;UACnCsE,aAAa,GAAGlK,GAAG,CAAC8H,aAAa,CAAC,OAAO,CAAC;UAC1CoC,aAAa,CAACsD,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;UAC5C,IAAMpD,iBAAiB,GAAG,IAAI,CAACpB,OAAO,GAAG,WAAW,GAAG,SAAS;UAChEkB,aAAa,CAACI,KAAK,GAAGF,iBAAiB,GAAG,IAAI,CAACpF,OAAO,CAAC1F,IAAI;UAC3D4K,aAAa,CAAC3B,gBAAgB,CAAC,OAAO,EAAEqB,YAAY,EAAE,KAAK,CAAC;UAC5DwD,kBAAkB,CAAC1E,WAAW,CAACwB,aAAa,CAAC;QAC/C;QACA;QACA;QACA,IAAMuD,SAAS,GAAG,IAAI,CAACrE,GAAG,CAACT,UAAU,EAAE;QACvCoE,eAAe,CAACrE,WAAW,CAAC0E,kBAAkB,CAAC;QAC/CL,eAAe,CAACrE,WAAW,CAAC+E,SAAS,CAAC;MACxC;MACA,OAAOV,eAAe;IACxB,CAAC;IACDtF,IAAI,CAACjG,SAAS,CAACmK,YAAY,GAAG,UAAUtJ,IAAI,EAAEqL,GAAG,EAAE;MACjD;AACN;AACA;AACA;MACM,IAAM/D,IAAI,GAAG,IAAI;MACjB,IAAMgE,QAAQ,GAAG,SAAXA,QAAQ,CAAa3M,IAAI,EAAE;QAC/B,IAAM8L,UAAU,GAAGnD,IAAI,CAACmD,UAAU;QAClC,KAAK,IAAIc,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGd,UAAU,CAACpC,UAAU,CAAC/I,MAAM,EAAEiM,CAAC,EAAE,EAAE;UACrDd,UAAU,CAACrD,WAAW,CAACqD,UAAU,CAACpC,UAAU,CAAC,CAAC,CAAC,CAAC;QAClD;QACA,IAAMmD,eAAe,GAAG7N,GAAG,CAAC8H,aAAa,CAAC,IAAI,CAAC;QAC/C+F,eAAe,CAAC9F,SAAS,GAAG,gBAAgB;QAC5C,IAAM+F,YAAY,GAAG9N,GAAG,CAAC8H,aAAa,CAAC,MAAM,CAAC;QAC9CgG,YAAY,CAACzF,SAAS,GAAG,QAAQ;QACjCyF,YAAY,CAAC/F,SAAS,GAAG,aAAa;QACtC8F,eAAe,CAACnF,WAAW,CAACoF,YAAY,CAAC;QACzChB,UAAU,CAACpE,WAAW,CAACmF,eAAe,CAAC;QACvC,KAAK,IAAMtM,GAAG,IAAIP,IAAI,EAAE;UACtB8L,UAAU,CAACpE,WAAW,CACpBiB,IAAI,CAACgC,YAAY,CAACpL,EAAE,CAACY,GAAG,CAACH,IAAI,CAACO,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC2H,QAAQ,EAAE,MAAM,CAAC,CAC5D;QACH;QACA4D,UAAU,CAAC/E,SAAS,GAAG,kBAAkB;QACzC4B,IAAI,CAACjC,aAAa,CAACgB,WAAW,CAACoE,UAAU,CAAC;MAC5C,CAAC;MACD;MACA,IAAMiB,KAAK,GAAG/N,GAAG,CAAC8H,aAAa,CAAC,IAAI,CAAC;MACrCiG,KAAK,CAAChG,SAAS,GAAG,MAAM;MACxBgG,KAAK,CAACP,YAAY,CAAC,IAAI,EAAEzI,MAAM,CAAC1C,IAAI,CAACd,GAAG,CAAC,CAACQ,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MACxD,IAAM8B,IAAI,GAAGyD,EAAE,CAAC1D,OAAO,CAACvB,IAAI,CAAC;MAC7B;MACA;MACA,IAAM2L,aAAa,GAAGzN,EAAE,CAACe,GAAG,CAC1B2M,SAAS,EACT7N,IAAI,CAAC,cAAc,CAAC,EACpBG,EAAE,CAACe,GAAG,CAACe,IAAI,EAAEpC,IAAI,CAAC,aAAa,CAAC,CAAC,CAClC;MACD,IAAMiO,MAAM,GAAGlO,GAAG,CAAC8H,aAAa,CAAC,GAAG,CAAC;MACrCoG,MAAM,CAACC,IAAI,GAAGH,aAAa,CAACzM,GAAG;MAC/B2M,MAAM,CAACnG,SAAS,GAAG,UAAU;MAC7B,IAAMqG,UAAU,GAAGpO,GAAG,CAACiN,cAAc,CAAC3F,EAAE,CAAC9D,OAAO,CAACK,IAAI,CAACmB,OAAO,CAAC,CAACrB,EAAE,CAAC;MAClEuK,MAAM,CAACxF,WAAW,CAAC0F,UAAU,CAAC;MAC9B;MACA,IAAMC,QAAQ,GAAGrO,GAAG,CAAC8H,aAAa,CAAC,KAAK,CAAC;MACzCuG,QAAQ,CAACf,GAAG,GAAGhG,EAAE,CAAC9D,OAAO,CAACK,IAAI,CAACmB,OAAO,CAAC,CAACtB,MAAM,CAACnC,GAAG;MAClD8M,QAAQ,CAACtG,SAAS,GAAG,YAAY;MACjC;MACA,IAAMuG,YAAY,GAAGtO,GAAG,CAAC8H,aAAa,CAAC,YAAY,CAAC;MACpD,IAAIyG,QAAQ,GAAG1K,IAAI,CAACiB,OAAO;MAC3B;MACA,IAAM0J,SAAS,GAAGxO,GAAG,CAAC8H,aAAa,CAAC,GAAG,CAAC;MACxC0G,SAAS,CAACzG,SAAS,GAAG,UAAU;MAChCyG,SAAS,CAACjG,gBAAgB,CACxB,OAAO,EACP,YAAY;QACVoF,QAAQ,CAAC,CAACtL,IAAI,CAACd,GAAG,CAAC,CAAC;MACtB,CAAC,EACD,KAAK,CACN;MACDiN,SAAS,CAAC7K,EAAE,GAAG,OAAO,GAAGoB,MAAM,CAAC1C,IAAI,CAACd,GAAG,CAAC,CAACQ,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MACvDyM,SAAS,CAAChB,YAAY,CAAC,SAAS,EAAEnL,IAAI,CAACd,GAAG,CAAC;MAC3CiN,SAAS,CAAChB,YAAY,CAAC,UAAU,EAAE,WAAW,CAAC;MAC/C,IAAM1J,QAAQ,GAAG9D,GAAG,CAACiN,cAAc,CACjCpJ,IAAI,CAACe,IAAI,GAAGf,IAAI,CAACe,IAAI,GAAG,mBAAmB,CAC5C;MACD4J,SAAS,CAAC9F,WAAW,CAAC5E,QAAQ,CAAC;;MAE/B;MACA,IAAMe,QAAQ,GAAGtE,EAAE,CAACW,IAAI,CAACmB,IAAI,EAAEpC,IAAI,CAAC,OAAO,CAAC,CAAC;MAC7C,IAAMwO,IAAI,GAAG,CAAC,CAAC;MAEf,KAAK,IAAMC,OAAO,IAAI7J,QAAQ,EAAE;QAC9BpE,EAAE,CAACkO,WAAW,CAAC9J,QAAQ,CAAC6J,OAAO,CAAC,CAAC;QACjC,IAAM/K,EAAE,GAAGpD,EAAE,CAACe,GAAG,CAACuD,QAAQ,CAAC6J,OAAO,CAAC,EAAEzO,IAAI,CAAC,IAAI,CAAC,CAAC;QAChDwO,IAAI,CAAC,GAAG,GAAG9K,EAAE,CAAC,GAAGkB,QAAQ,CAAC6J,OAAO,CAAC;MACpC;MACA,IAAME,QAAQ,GAAGL,QAAQ,CAACvC,KAAK,CAAC,aAAa,CAAC;MAC9C,IAAM6C,YAAY,GAAG,SAAfA,YAAY,GAAe;QAC/B,IAAMC,CAAC,GAAGF,QAAQ,CAACG,GAAG,EAAE;QACxB,OAAON,IAAI,CAACK,CAAC,CAAC,GACVvO,EAAE,CAACe,GAAG,CAAC2M,SAAS,EAAE7N,IAAI,CAAC,cAAc,CAAC,EAAEqO,IAAI,CAACK,CAAC,CAAC,CAAC,CAACvN,GAAG,GACpDuN,CAAC;MACP,CAAC;MACD,KAAK,IAAME,CAAC,IAAIP,IAAI,EAAE;QACpB,IAAMQ,MAAM,GAAGD,CAAC,CAACnG,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;QACjC,IAAMqG,aAAa,GAAGC,MAAM,CAAC,UAAU,GAAGF,MAAM,GAAG,GAAG,CAAC;QACvDV,QAAQ,GAAGA,QAAQ,CAAC1F,OAAO,CACzBqG,aAAa,EACb,aAAa,GAAGL,YAAY,EAAE,GAAG,UAAU,CAC5C;MACH;MACAP,YAAY,CAACjG,SAAS,GAAGkG,QAAQ;;MAEjC;MACA;MACA,IAAMa,SAAS,GAAG7O,EAAE,CAACW,IAAI,CAACmB,IAAI,EAAEpC,IAAI,CAAC,UAAU,CAAC,CAAC;MACjD,IAAMoP,QAAQ,GAAGrP,GAAG,CAAC8H,aAAa,CAAC,MAAM,CAAC;MAC1C,IAAIwH,QAAQ;MACZ,KAAK,IAAMC,KAAK,IAAIH,SAAS,EAAE;QAC7BE,QAAQ,GAAGvK,MAAM,CAACqK,SAAS,CAACG,KAAK,CAAC,CAAC,CAAC1G,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QACvD,IAAM2G,UAAU,GAAG,SAAbA,UAAU,GAAe;UAC7B,IAAMD,KAAK,GAAGvP,GAAG,CAAC8H,aAAa,CAAC,GAAG,CAAC;UACpCyH,KAAK,CAAClH,SAAS,GAAG,sBAAsB;UACxCkH,KAAK,CAAChH,gBAAgB,CACpB,OAAO,EACP,YAAY;YACVoF,QAAQ,CAAC,CAACtL,IAAI,CAACd,GAAG,EAAE+N,QAAQ,CAAC,CAAC;YAC9B,OAAO,KAAK;UACd,CAAC,EACD,KAAK,CACN;UACD,OAAOC,KAAK;QACd,CAAC;QACDF,QAAQ,CAAC3G,WAAW,CAAC8G,UAAU,EAAE,CAAC;MACpC;;MAEA;MACA;MACA,IAAMC,SAAS,GAAG,SAAZA,SAAS,GAAe;QAC5B,IAAM9L,EAAE,GAAG2D,EAAE,CAAC9D,OAAO,CAACK,IAAI,CAACmB,OAAO,CAAC,CAACrB,EAAE;QACtC,IAAM6H,aAAa,GAAGxL,GAAG,CAAC4I,cAAc,CAAC,eAAe,CAAC;QACzD,IAAMkD,mBAAmB,GAAG9L,GAAG,CAAC4I,cAAc,CAAC,qBAAqB,CAAC;QACrE,IAAM2C,aAAa,GAAGvL,GAAG,CAAC4I,cAAc,CAAC,eAAe,CAAC;QACzD4C,aAAa,CAAClB,KAAK,GAAG,GAAG,GAAG3G,EAAE,GAAG,GAAG;QACpC6H,aAAa,CAACL,KAAK,EAAE;QACrBW,mBAAmB,CAACxB,KAAK,GAAGjI,IAAI,CAACd,GAAG;QACpCgK,aAAa,CAACjB,KAAK,GAAG,OAAO;MAC/B,CAAC;MACD,IAAIoF,sBAAsB;MAC1B,IAAMC,YAAY,GAAG,SAAfA,YAAY,CAAanH,GAAG,EAAE;QAClC,IAAMoH,WAAW,GAAG,SAAdA,WAAW,GAAe;UAC9B5P,GAAG,CACA4I,cAAc,CAAC,kBAAkB,CAAC,CAClCa,WAAW,CAACiG,sBAAsB,CAAC;UACtClH,GAAG,CAACC,MAAM,CAAC0B,QAAQ,GAAG,KAAK;QAC7B,CAAC;QACD,IAAM0F,YAAY,GAAG,SAAfA,YAAY,GAAe;UAC/BC,YAAY,EAAE;UACd9P,GAAG,CACA4I,cAAc,CAAC,kBAAkB,CAAC,CAClCa,WAAW,CAACiG,sBAAsB,CAAC;QACxC,CAAC;QACDlH,GAAG,CAACC,MAAM,CAAC0B,QAAQ,GAAG,IAAI;QAC1BuF,sBAAsB,GAAG1P,GAAG,CAAC8H,aAAa,CAAC,IAAI,CAAC;QAChD4H,sBAAsB,CAAC3H,SAAS,GAAG,aAAa;QAChD2H,sBAAsB,CAACrH,SAAS,IAC9B,mDAAmD;QACrDqH,sBAAsB,CAACnH,gBAAgB,CACrC,OAAO,EACP,UAAUC,GAAG,EAAE;UACb,IAAIA,GAAG,CAACuH,OAAO,KAAK,EAAE,EAAE;YACtBH,WAAW,EAAE;UACf;QACF,CAAC,EACD,KAAK,CACN;QACD,IAAMI,UAAU,GAAGhQ,GAAG,CAAC8H,aAAa,CAAC,OAAO,CAAC;QAC7CkI,UAAU,CAAC3D,IAAI,GAAG,QAAQ;QAC1B2D,UAAU,CAACjI,SAAS,GAAG,SAAS;QAChCiI,UAAU,CAAC1F,KAAK,GAAG,QAAQ;QAC3B0F,UAAU,CAACzH,gBAAgB,CAAC,OAAO,EAAEsH,YAAY,EAAE,KAAK,CAAC;QACzD,IAAMI,SAAS,GAAGjQ,GAAG,CAAC8H,aAAa,CAAC,OAAO,CAAC;QAC5CmI,SAAS,CAAC5D,IAAI,GAAG,QAAQ;QACzB4D,SAAS,CAAClI,SAAS,GAAG,SAAS;QAC/BkI,SAAS,CAAC3F,KAAK,GAAG,QAAQ;QAC1B2F,SAAS,CAAC1H,gBAAgB,CAAC,OAAO,EAAEqH,WAAW,EAAE,KAAK,CAAC;QACvDF,sBAAsB,CAAChH,WAAW,CAACuH,SAAS,CAAC;QAC7CP,sBAAsB,CAAChH,WAAW,CAACsH,UAAU,CAAC;QAC9ChQ,GAAG,CACA4I,cAAc,CAAC,kBAAkB,CAAC,CAClCF,WAAW,CAACgH,sBAAsB,CAAC;QACtCO,SAAS,CAAC9E,KAAK,EAAE;QAEjB,IAAM2E,YAAY,GAAG,SAAfA,YAAY,GAAe;UAC/B;UACA,IAAMI,mBAAmB,GAAG,SAAtBA,mBAAmB,CAAaxN,CAAC,EAAEC,OAAO,EAAE;YAChD,IAAIA,OAAO,EAAE;cACXgH,IAAI,CAACN,MAAM,CAAC,eAAe,CAAC;cAC5B;cACA,IAAM8G,cAAc,GAAG3H,GAAG,CAACC,MAAM,CAAC6D,UAAU;cAC5C6D,cAAc,CAAC7D,UAAU,CAAC7C,WAAW,CAAC0G,cAAc,CAAC;cACrD5P,EAAE,CAAC0J,UAAU,CAACmG,QAAQ,CAAC;YACzB,CAAC,MAAM;cACLzG,IAAI,CAACN,MAAM,CAAC,6CAA6C,CAAC;cAC1Db,GAAG,CAACC,MAAM,CAAC0B,QAAQ,GAAG,IAAI;YAC5B;UACF,CAAC;UACD;UACA,IAAMkG,iBAAiB,GAAG,SAApBA,iBAAiB,CAAa3N,CAAC,EAAEC,OAAO,EAAE;YAC9C,IAAIA,OAAO,EAAE;cACX,IAAM2N,eAAe,GAAG/P,EAAE,CAACgQ,kBAAkB,CAC3CtC,SAAS,EACThO,IAAI,CAAC,cAAc,CAAC,EACpBM,EAAE,CAACY,GAAG,CACJnB,GAAG,CACA4I,cAAc,CAAC,OAAO,GAAGJ,GAAG,CAACC,MAAM,CAAC6D,UAAU,CAAC3I,EAAE,CAAC,CAClD6M,YAAY,CAAC,SAAS,CAAC,CAC3B,CACF;cACD7P,aAAa,CAAC8P,sBAAsB,CAClCH,eAAe,EACfJ,mBAAmB,CACpB;YACH,CAAC,MAAM;cACLvG,IAAI,CAACN,MAAM,CAAC,6CAA6C,CAAC;cAC1Db,GAAG,CAACC,MAAM,CAAC0B,QAAQ,GAAG,KAAK;YAC7B;UACF,CAAC;UACD;UACA3B,GAAG,CAACC,MAAM,CAAC0B,QAAQ,GAAG,IAAI;UAC1B,IAAMiG,QAAQ,GAAG7P,EAAE,CAACgQ,kBAAkB,CACpChQ,EAAE,CAACY,GAAG,CACJnB,GAAG,CACA4I,cAAc,CAAC,OAAO,GAAGJ,GAAG,CAACC,MAAM,CAAC6D,UAAU,CAAC3I,EAAE,CAAC,CAClD6M,YAAY,CAAC,SAAS,CAAC,CAC3B,CACF;UACD7P,aAAa,CAAC8P,sBAAsB,CAACL,QAAQ,EAAEC,iBAAiB,CAAC;QACnE,CAAC;MACH,CAAC;MACD,IAAIK,QAAQ;MACZ,IAAIC,YAAY;MAChB,IAAIC,aAAa;MACjB,IAAItJ,EAAE,CAAC1B,QAAQ,EAAE,EAAE;QACjB;QACA;QACA8K,QAAQ,GAAGnQ,EAAE,CAACe,GAAG,CAACe,IAAI,EAAEpC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5C,IAAIqH,EAAE,CAAC1B,QAAQ,EAAE,KAAK8K,QAAQ,CAACnP,GAAG,EAAE;UAClCoP,YAAY,GAAG3Q,GAAG,CAAC8H,aAAa,CAAC,OAAO,CAAC;UACzC6I,YAAY,CAACtE,IAAI,GAAG,QAAQ;UAC5BsE,YAAY,CAACrG,KAAK,GAAG,OAAO;UAC5BqG,YAAY,CAAC5I,SAAS,GAAG,OAAO;UAChC4I,YAAY,CAACpI,gBAAgB,CAAC,OAAO,EAAEkH,SAAS,EAAE,KAAK,CAAC;QAC1D,CAAC,MAAM;UACLmB,aAAa,GAAG5Q,GAAG,CAAC8H,aAAa,CAAC,OAAO,CAAC;UAC1C8I,aAAa,CAACvE,IAAI,GAAG,QAAQ;UAC7BuE,aAAa,CAACtG,KAAK,GAAG,QAAQ;UAC9BsG,aAAa,CAAC7I,SAAS,GAAG,OAAO;UACjC6I,aAAa,CAACrI,gBAAgB,CAAC,OAAO,EAAEoH,YAAY,EAAE,KAAK,CAAC;QAC9D;MACF;MAEA,IAAMkB,UAAU,GAAG,SAAbA,UAAU,CAAarI,GAAG,EAAE;QAChC,IAAMsI,GAAG,GAAGtI,GAAG,CAACC,MAAM,CAAC6D,UAAU,CAAC3I,EAAE;QACpC,IAAMoN,OAAO,GAAG/Q,GAAG,CAAC4I,cAAc,CAAC,OAAO,GAAGkI,GAAG,CAAC,CAACN,YAAY,CAAC,SAAS,CAAC;QACzEQ,SAAS,CAACjJ,SAAS,IAAI,MAAM;QAC7B,IAAMkJ,UAAU,GAAG,SAAbA,UAAU,CAAavO,CAAC,EAAEC,OAAO,EAAEuO,EAAE,EAAEC,EAAE,EAAE;UAC/C,IAAIxO,OAAO,EAAE;YACXqO,SAAS,CAACjJ,SAAS,GACjBiJ,SAAS,CAACjJ,SAAS,CAAChG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GACtC,SAAS,GACT,YAAY;UACpB;QACF,CAAC;QACD,IAAI,CAACwF,WAAW,CAACnF,SAAS,CAAC2O,OAAO,CAAC,EAAE;UACnCxJ,WAAW,CAAClG,GAAG,CAAC0P,OAAO,EAAEE,UAAU,CAAC;QACtC,CAAC,MAAM;UACL1J,WAAW,CAACxE,MAAM,CAACgO,OAAO,EAAEE,UAAU,CAAC;QACzC;MACF,CAAC;MACD,IAAMD,SAAS,GAAGhR,GAAG,CAAC8H,aAAa,CAAC,GAAG,CAAC;MACxCkJ,SAAS,CAAC3I,SAAS,GAAG,SAAS;MAC/B2I,SAAS,CAACzI,gBAAgB,CAAC,OAAO,EAAEsI,UAAU,EAAE,KAAK,CAAC;MACtD,IAAItJ,WAAW,CAACnF,SAAS,CAACC,IAAI,CAACd,GAAG,CAAC,EAAE;QACnCyP,SAAS,CAACjJ,SAAS,GAAG,YAAY;MACpC,CAAC,MAAM;QACLiJ,SAAS,CAACjJ,SAAS,GAAG,SAAS;MACjC;MACA;MACAgG,KAAK,CAACrF,WAAW,CAAC2F,QAAQ,CAAC;MAC3BN,KAAK,CAACrF,WAAW,CAAC4F,YAAY,CAAC;MAC/B,IAAIhH,EAAE,CAAC1B,QAAQ,EAAE,EAAE;QACjBmI,KAAK,CAACrF,WAAW,CAACsI,SAAS,CAAC;QAC5B,IAAI1J,EAAE,CAAC1B,QAAQ,EAAE,KAAK8K,QAAQ,CAACnP,GAAG,EAAE;UAClCwM,KAAK,CAACrF,WAAW,CAACiI,YAAY,CAAC;QACjC,CAAC,MAAM;UACL5C,KAAK,CAACrF,WAAW,CAACkI,aAAa,CAAC;QAClC;MACF;MACA7C,KAAK,CAACrF,WAAW,CAACwF,MAAM,CAAC;MACzBH,KAAK,CAACrF,WAAW,CAAC8F,SAAS,CAAC;MAC5B,IAAIY,SAAS,KAAK,EAAE,EAAE;QACpBrB,KAAK,CAACrF,WAAW,CAAC2G,QAAQ,CAAC;MAC7B;MACA,OAAOtB,KAAK;IACd,CAAC;IACDtG,IAAI,CAACjG,SAAS,CAAC4P,gBAAgB,GAAG,UAAUC,QAAQ,EAAE;MACpD;AACN;AACA;AACA;MACM,IAAMC,QAAQ,GAAGtR,GAAG,CAAC8H,aAAa,CAAC,IAAI,CAAC;MACxC,IAAMyJ,QAAQ,GAAG,CAAC,CAAC;MACnB,IAAMC,QAAQ,GAAG,EAAE;MACnB,KAAK,IAAMnP,IAAI,IAAIgP,QAAQ,EAAE;QAC3B,IAAMI,QAAQ,GAAGlR,EAAE,CAACe,GAAG,CAAC+P,QAAQ,CAAChP,IAAI,CAAC,EAAEhC,KAAK,CAAC,SAAS,CAAC,CAAC;QACzD,IAAIoR,QAAQ,EAAE;UACZD,QAAQ,CAAC/P,IAAI,CAACgQ,QAAQ,CAAC;UACvBF,QAAQ,CAACE,QAAQ,CAAC,GAAG,IAAI,CAAC9F,YAAY,CAAC0F,QAAQ,CAAChP,IAAI,CAAC,EAAE,IAAI,CAAC6G,QAAQ,CAAC;QACvE;MACF;MACAsI,QAAQ,CAACE,IAAI,EAAE,CAACC,OAAO,EAAE;MACzB,KAAK,IAAMzK,CAAC,IAAIsK,QAAQ,EAAE;QACxBF,QAAQ,CAAC5I,WAAW,CAAC6I,QAAQ,CAACC,QAAQ,CAACtK,CAAC,CAAC,CAAC,CAAC;MAC7C;MACA,OAAOoK,QAAQ;IACjB,CAAC;IACD7J,IAAI,CAACjG,SAAS,CAACoQ,WAAW,GAAG,YAAY;MACvC,IAAMC,WAAW,GAAG,SAAdA,WAAW,CAAa/Q,IAAI,EAAE;QAClC,IAAIgR,MAAM,GAAGvR,EAAE,CAACe,GAAG,CAACR,IAAI,EAAEb,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,IAAM8R,MAAM,GAAG/R,GAAG,CAAC8H,aAAa,CAAC,IAAI,CAAC;QACtCiK,MAAM,CAAChK,SAAS,GAAG,QAAQ;QAC3B+J,MAAM,GAAGA,MAAM,IAAIhR,IAAI,CAACS,GAAG;QAC3B,IAAIyQ,GAAG,GAAGzR,EAAE,CAACe,GAAG,CAAC2M,SAAS,EAAE7N,IAAI,CAAC,cAAc,CAAC,EAAEU,IAAI,CAAC;QACvDkR,GAAG,GAAGA,GAAG,GAAGA,GAAG,CAACzQ,GAAG,GAAGT,IAAI,CAACS,GAAG;QAC9BwQ,MAAM,CAAC1J,SAAS,GAAG,WAAW,GAAG2J,GAAG,GAAG,IAAI,GAAGF,MAAM,GAAG,MAAM;QAC7D,OAAOC,MAAM;MACf,CAAC;MACD,IAAME,QAAQ,GAAGjS,GAAG,CAAC8H,aAAa,CAAC,KAAK,CAAC;MACzCmK,QAAQ,CAACtO,EAAE,GAAG,UAAU;MACxBsO,QAAQ,CAAClK,SAAS,GAAG,qCAAqC;MAC1D,IAAI,IAAI,CAAC/C,OAAO,IAAIzE,EAAE,CAACb,OAAO,CAAC,IAAI,CAACsF,OAAO,CAAC7D,GAAG,EAAElB,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE;QACjE,IAAMiS,cAAc,GAAG3R,EAAE,CAACW,IAAI,CAAC,IAAI,CAAC8D,OAAO,CAAC7D,GAAG,EAAElB,IAAI,CAAC,SAAS,CAAC,CAAC;QACjE,IAAMkS,YAAY,GAAGnS,GAAG,CAAC8H,aAAa,CAAC,IAAI,CAAC;QAC5C,KAAK,IAAMsK,UAAU,IAAIF,cAAc,EAAE;UACvCC,YAAY,CAACzJ,WAAW,CAACmJ,WAAW,CAACK,cAAc,CAACE,UAAU,CAAC,CAAC,CAAC;QACnE;QACAH,QAAQ,CAACvJ,WAAW,CAACyJ,YAAY,CAAC;MACpC;MACA,IAAI,CAAC/I,GAAG,CAACpB,MAAM,CAAC,aAAa,EAAE,SAAS,EAAEiK,QAAQ,EAAE,KAAK,CAAC;MAC1D,OAAOA,QAAQ;IACjB,CAAC;IACDxK,IAAI,CAACjG,SAAS,CAAC6Q,UAAU,GAAG,UAAUtS,CAAC,EAAEC,GAAG,EAAE;MAC5C,IAAMsS,aAAa,GAAGtS,GAAG,CAAC8H,aAAa,CAAC,KAAK,CAAC;MAC9CwK,aAAa,CAAC3O,EAAE,GAAG,eAAe;MAClC2O,aAAa,CAACvK,SAAS,GAAG,sCAAsC;MAChE,IAAIwK,OAAO,GAAG,EAAE;MAChB,IAAIhS,EAAE,CAACb,OAAO,CAACK,CAAC,EAAEK,IAAI,CAAC,MAAM,CAAC,CAAC,IAAIG,EAAE,CAACb,OAAO,CAACK,CAAC,EAAEK,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE;QACtEK,EAAE,CAACkO,WAAW,CAACpO,EAAE,CAACe,GAAG,CAACvB,CAAC,EAAEK,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QAC/C,IAAMoS,OAAO,GAAGjS,EAAE,CAACW,IAAI,CAACX,EAAE,CAACe,GAAG,CAACvB,CAAC,EAAEK,IAAI,CAAC,cAAc,CAAC,CAAC,EAAEH,IAAI,CAAC,SAAS,CAAC,CAAC;QACzE,KAAK,IAAMkC,CAAC,IAAIqQ,OAAO,EAAE;UACvB/R,EAAE,CAACkO,WAAW,CAAC6D,OAAO,CAACrQ,CAAC,CAAC,CAAC;UAC1B;UACA,IAAMsQ,WAAW,GAAGlS,EAAE,CAACW,IAAI,CAACsR,OAAO,CAACrQ,CAAC,CAAC,EAAElC,IAAI,CAAC,YAAY,CAAC,CAAC;UAC3D;UACA,KAAK,IAAMyS,GAAG,IAAID,WAAW,EAAE;YAC7BhS,EAAE,CAACkO,WAAW,CAAC8D,WAAW,CAACC,GAAG,CAAC,CAAC;YAChC,IAAInS,EAAE,CAACb,OAAO,CAAC+S,WAAW,CAACC,GAAG,CAAC,EAAEzS,IAAI,CAAC,OAAO,CAAC,EAAEuS,OAAO,CAACrQ,CAAC,CAAC,CAAC,EAAE;cAC3D;YACF,CAAC,MAAM;cACLoQ,OAAO,GAAGA,OAAO,CAACI,MAAM,CACtBpS,EAAE,CAACW,IAAI,CAACuR,WAAW,CAACC,GAAG,CAAC,EAAEzS,IAAI,CAAC,cAAc,CAAC,CAAC,CAChD;YACH;UACF;QACF;MACF;MACA,IAAIsS,OAAO,CAAC5Q,MAAM,GAAG,CAAC,EAAE;QACtB,IAAM2P,QAAQ,GAAG,IAAI,CAACF,gBAAgB,CAACmB,OAAO,CAAC;QAC/C;QACAjB,QAAQ,CAAC3N,EAAE,GAAG,UAAU;QACxB2N,QAAQ,CAACvJ,SAAS,GAAG,UAAU;QAC/BuK,aAAa,CAAC5J,WAAW,CAAC4I,QAAQ,CAAC;MACrC;MACA,IAAI,CAAClI,GAAG,CAACpB,MAAM,CAAC,YAAY,EAAE,YAAY,EAAEsK,aAAa,EAAE,IAAI,CAAC;MAChE,OAAOA,aAAa;IACtB,CAAC;IACD7K,IAAI,CAACjG,SAAS,CAACoR,iBAAiB,GAAG,UAAU7S,CAAC,EAAEC,GAAG,EAAE;MACnD,IAAM6S,yBAAyB,GAAG7S,GAAG,CAAC8H,aAAa,CAAC,KAAK,CAAC;MAC1D+K,yBAAyB,CAAClP,EAAE,GAAG,2BAA2B;MAC1DkP,yBAAyB,CAAC9K,SAAS,GACjC,uCAAuC;MACzC,IAAM+K,oBAAoB,GAAG9S,GAAG,CAAC8H,aAAa,CAAC,KAAK,CAAC;MACrDgL,oBAAoB,CAACnP,EAAE,GAAG,sBAAsB;MAChDmP,oBAAoB,CAAC/K,SAAS,GAAG,kCAAkC;MACnE,IAAIgL,QAAQ,GAAG,EAAE;MACjB,IAAIC,QAAQ,GAAG,EAAE;MACjB;MACA,IAAM9P,OAAO,GAAG3C,EAAE,CAACe,GAAG,CAACvB,CAAC,EAAEK,IAAI,CAAC,cAAc,CAAC,CAAC;MAC/C,IAAMU,IAAI,GAAGP,EAAE,CAACe,GAAG,CAAC4B,OAAO,EAAEjD,IAAI,CAAC,IAAI,CAAC,CAAC;MACxC,IAAMgT,UAAU,GAAG1S,EAAE,CAACW,IAAI,CAACgC,OAAO,EAAEjD,IAAI,CAAC,YAAY,CAAC,CAAC;MACvD,KAAK,IAAMiT,GAAG,IAAID,UAAU,EAAE;QAC5BxS,EAAE,CAACkO,WAAW,CAACsE,UAAU,CAACC,GAAG,CAAC,CAAC;QAC/B,IAAI3S,EAAE,CAACb,OAAO,CAACuT,UAAU,CAACC,GAAG,CAAC,EAAEjT,IAAI,CAAC,OAAO,CAAC,EAAEiD,OAAO,CAAC,EAAE;UACvD8P,QAAQ,GAAGA,QAAQ,CAACL,MAAM,CACxBpS,EAAE,CAACW,IAAI,CAAC+R,UAAU,CAACC,GAAG,CAAC,EAAEjT,IAAI,CAAC,cAAc,CAAC,CAAC,CAC/C;QACH,CAAC,MAAM;UACL,IAAIM,EAAE,CAACb,OAAO,CAACuT,UAAU,CAACC,GAAG,CAAC,EAAE5S,GAAG,CAAC,MAAM,CAAC,EAAEH,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE;YAChE4S,QAAQ,GAAGA,QAAQ,CAACJ,MAAM,CACxBpS,EAAE,CAACW,IAAI,CAAC+R,UAAU,CAACC,GAAG,CAAC,EAAEjT,IAAI,CAAC,cAAc,CAAC,CAAC,CAC/C;UACH;QACF;MACF;MACA,IAAMkT,oBAAoB,GAAG,IAAI,CAAC/B,gBAAgB,CAAC2B,QAAQ,CAAC;MAC5DI,oBAAoB,CAACxP,EAAE,GAAG,sBAAsB;MAChDwP,oBAAoB,CAACpL,SAAS,GAAG,UAAU;MAC3C8K,yBAAyB,CAACnK,WAAW,CAACyK,oBAAoB,CAAC;MAE3D,IAAMC,eAAe,GAAG,IAAI,CAAChC,gBAAgB,CAAC4B,QAAQ,CAAC;MACvDI,eAAe,CAACzP,EAAE,GAAG,iBAAiB;MACtCyP,eAAe,CAACrL,SAAS,GAAG,UAAU;MACtC+K,oBAAoB,CAACpK,WAAW,CAAC0K,eAAe,CAAC;MACjD,IAAI,CAACN,oBAAoB,GAAGA,oBAAoB;MAChD,IAAI,CAACD,yBAAyB,GAAGA,yBAAyB;MAC1D,IAAI,CAACzJ,GAAG,CAACpB,MAAM,CACb,aAAa,EACb,KAAK,GAAGlH,IAAI,EACZ+R,yBAAyB,EACzB,KAAK,CACN;MACD,IAAI,CAACzJ,GAAG,CAACpB,MAAM,CAAC,aAAa,EAAE,GAAG,GAAGlH,IAAI,EAAEgS,oBAAoB,EAAE,KAAK,CAAC;IACzE,CAAC;IACDrL,IAAI,CAACjG,SAAS,CAAC6R,KAAK,GAAG,YAAY;MACjC,IAAM3L,aAAa,GAAG,IAAI,CAACA,aAAa;MACxC,IAAI,CAACqF,eAAe,GAAG,IAAI,CAACrD,MAAM,CAAC3J,CAAC,EAAEC,GAAG,CAAC;MAC1C,IAAI,CAACsS,aAAa,GAAG,IAAI,CAACD,UAAU,CAACtS,CAAC,EAAEC,GAAG,CAAC;MAC5C,IAAI,CAAC4S,iBAAiB,CAAC7S,CAAC,EAAEC,GAAG,CAAC;MAC9B,IAAI,CAACiS,QAAQ,GAAG,IAAI,CAACL,WAAW,EAAE;MAClClK,aAAa,CAACK,SAAS,GAAG,OAAO;MACjCL,aAAa,CAACgB,WAAW,CAAC,IAAI,CAACoE,UAAU,CAAC;MAC1CpF,aAAa,CAACgB,WAAW,CAAC,IAAI,CAACsE,OAAO,CAAC;MACvCtF,aAAa,CAACgB,WAAW,CAAC,IAAI,CAACqE,eAAe,CAAC;MAC/C,IAAI,IAAI,CAACkF,QAAQ,KAAKhE,SAAS,EAAE;QAC/BvG,aAAa,CAACgB,WAAW,CAAC,IAAI,CAACuJ,QAAQ,CAAC;MAC1C;MACAvK,aAAa,CAACgB,WAAW,CAAC,IAAI,CAAC4J,aAAa,CAAC;MAC7C5K,aAAa,CAACgB,WAAW,CAAC,IAAI,CAACmK,yBAAyB,CAAC;MACzDnL,aAAa,CAACgB,WAAW,CAAC,IAAI,CAACoK,oBAAoB,CAAC;IACtD,CAAC;IAED,IAAMQ,aAAa,GAAGtT,GAAG,CAAC8H,aAAa,CAAC,KAAK,CAAC;IAC9C;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAMyL,KAAK,GAAG,IAAI9L,IAAI,CAAC1H,CAAC,EAAEC,GAAG,EAAEsT,aAAa,CAAC;IAC7CC,KAAK,CAACF,KAAK,EAAE;IACb;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,OAAOC,aAAa;EACtB;AACF,CAAC"}
|
package/lib/n3Pane.js
CHANGED
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
** in generated N3 syntax.
|
|
8
8
|
*/
|
|
9
9
|
var UI = require('solid-ui');
|
|
10
|
-
|
|
11
10
|
var ns = UI.ns;
|
|
12
11
|
module.exports = {
|
|
13
12
|
icon: UI.icons.originalIconBase + 'w3c/n3_smaller.png',
|
|
@@ -15,11 +14,9 @@ module.exports = {
|
|
|
15
14
|
audience: [ns.solid('Developer')],
|
|
16
15
|
label: function label(subject, context) {
|
|
17
16
|
var store = context.session.store;
|
|
18
|
-
|
|
19
17
|
if ('http://www.w3.org/2007/ont/link#ProtocolEvent' in store.findTypeURIs(subject)) {
|
|
20
18
|
return null;
|
|
21
19
|
}
|
|
22
|
-
|
|
23
20
|
var n = store.statementsMatching(undefined, undefined, undefined, subject).length;
|
|
24
21
|
if (n === 0) return null;
|
|
25
22
|
return 'Data (' + n + ') as N3';
|
|
@@ -28,12 +25,11 @@ module.exports = {
|
|
|
28
25
|
var myDocument = context.dom;
|
|
29
26
|
var kb = context.session.store;
|
|
30
27
|
var div = myDocument.createElement('div');
|
|
31
|
-
div.setAttribute('class', 'n3Pane');
|
|
28
|
+
div.setAttribute('class', 'n3Pane');
|
|
29
|
+
// Because of smushing etc, this will not be a copy of the original source
|
|
32
30
|
// We could instead either fetch and re-parse the source,
|
|
33
31
|
// or we could keep all the pre-smushed triples.
|
|
34
|
-
|
|
35
32
|
var sts = kb.statementsMatching(undefined, undefined, undefined, subject); // @@ slow with current store!
|
|
36
|
-
|
|
37
33
|
/*
|
|
38
34
|
var kludge = kb.formula([]) // No features
|
|
39
35
|
for (var i=0; i< sts.length; i++) {
|
|
@@ -41,7 +37,6 @@ module.exports = {
|
|
|
41
37
|
kludge.add(s.subject, s.predicate, s.object)
|
|
42
38
|
}
|
|
43
39
|
*/
|
|
44
|
-
|
|
45
40
|
var sz = UI.rdf.Serializer(kb);
|
|
46
41
|
sz.suggestNamespaces(kb.namespaces);
|
|
47
42
|
sz.setBase(subject.uri);
|
package/lib/n3Pane.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"n3Pane.js","names":["UI","require","ns","module","exports","icon","icons","originalIconBase","name","audience","solid","label","subject","context","store","session","findTypeURIs","n","statementsMatching","undefined","length","render","myDocument","dom","kb","div","createElement","setAttribute","sts","sz","rdf","Serializer","suggestNamespaces","namespaces","setBase","uri","str","statementsToN3","pre","appendChild","createTextNode"],"sources":["../src/n3Pane.js"],"sourcesContent":["/* Notation3 content Pane\n **\n ** This pane shows the content of a particular RDF resource\n ** or at least the RDF semantics we attribute to that resource,\n ** in generated N3 syntax.\n */\nconst UI = require('solid-ui')\nconst ns = UI.ns\n\nmodule.exports = {\n icon: UI.icons.originalIconBase + 'w3c/n3_smaller.png',\n\n name: 'n3',\n\n audience: [ns.solid('Developer')],\n\n label: function (subject, context) {\n const store = context.session.store\n if (\n 'http://www.w3.org/2007/ont/link#ProtocolEvent' in\n store.findTypeURIs(subject)\n ) {\n return null\n }\n const n = store.statementsMatching(undefined, undefined, undefined, subject)\n .length\n if (n === 0) return null\n return 'Data (' + n + ') as N3'\n },\n\n render: function (subject, context) {\n const myDocument = context.dom\n const kb = context.session.store\n const div = myDocument.createElement('div')\n div.setAttribute('class', 'n3Pane')\n // Because of smushing etc, this will not be a copy of the original source\n // We could instead either fetch and re-parse the source,\n // or we could keep all the pre-smushed triples.\n const sts = kb.statementsMatching(undefined, undefined, undefined, subject) // @@ slow with current store!\n /*\n var kludge = kb.formula([]) // No features\n for (var i=0; i< sts.length; i++) {\n s = sts[i]\n kludge.add(s.subject, s.predicate, s.object)\n }\n */\n const sz = UI.rdf.Serializer(kb)\n sz.suggestNamespaces(kb.namespaces)\n sz.setBase(subject.uri)\n const str = sz.statementsToN3(sts)\n const pre = myDocument.createElement('PRE')\n pre.appendChild(myDocument.createTextNode(str))\n div.appendChild(pre)\n return div\n }\n}\n"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMA,EAAE,GAAGC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"n3Pane.js","names":["UI","require","ns","module","exports","icon","icons","originalIconBase","name","audience","solid","label","subject","context","store","session","findTypeURIs","n","statementsMatching","undefined","length","render","myDocument","dom","kb","div","createElement","setAttribute","sts","sz","rdf","Serializer","suggestNamespaces","namespaces","setBase","uri","str","statementsToN3","pre","appendChild","createTextNode"],"sources":["../src/n3Pane.js"],"sourcesContent":["/* Notation3 content Pane\n **\n ** This pane shows the content of a particular RDF resource\n ** or at least the RDF semantics we attribute to that resource,\n ** in generated N3 syntax.\n */\nconst UI = require('solid-ui')\nconst ns = UI.ns\n\nmodule.exports = {\n icon: UI.icons.originalIconBase + 'w3c/n3_smaller.png',\n\n name: 'n3',\n\n audience: [ns.solid('Developer')],\n\n label: function (subject, context) {\n const store = context.session.store\n if (\n 'http://www.w3.org/2007/ont/link#ProtocolEvent' in\n store.findTypeURIs(subject)\n ) {\n return null\n }\n const n = store.statementsMatching(undefined, undefined, undefined, subject)\n .length\n if (n === 0) return null\n return 'Data (' + n + ') as N3'\n },\n\n render: function (subject, context) {\n const myDocument = context.dom\n const kb = context.session.store\n const div = myDocument.createElement('div')\n div.setAttribute('class', 'n3Pane')\n // Because of smushing etc, this will not be a copy of the original source\n // We could instead either fetch and re-parse the source,\n // or we could keep all the pre-smushed triples.\n const sts = kb.statementsMatching(undefined, undefined, undefined, subject) // @@ slow with current store!\n /*\n var kludge = kb.formula([]) // No features\n for (var i=0; i< sts.length; i++) {\n s = sts[i]\n kludge.add(s.subject, s.predicate, s.object)\n }\n */\n const sz = UI.rdf.Serializer(kb)\n sz.suggestNamespaces(kb.namespaces)\n sz.setBase(subject.uri)\n const str = sz.statementsToN3(sts)\n const pre = myDocument.createElement('PRE')\n pre.appendChild(myDocument.createTextNode(str))\n div.appendChild(pre)\n return div\n }\n}\n"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMA,EAAE,GAAGC,OAAO,CAAC,UAAU,CAAC;AAC9B,IAAMC,EAAE,GAAGF,EAAE,CAACE,EAAE;AAEhBC,MAAM,CAACC,OAAO,GAAG;EACfC,IAAI,EAAEL,EAAE,CAACM,KAAK,CAACC,gBAAgB,GAAG,oBAAoB;EAEtDC,IAAI,EAAE,IAAI;EAEVC,QAAQ,EAAE,CAACP,EAAE,CAACQ,KAAK,CAAC,WAAW,CAAC,CAAC;EAEjCC,KAAK,EAAE,eAAUC,OAAO,EAAEC,OAAO,EAAE;IACjC,IAAMC,KAAK,GAAGD,OAAO,CAACE,OAAO,CAACD,KAAK;IACnC,IACE,+CAA+C,IAC/CA,KAAK,CAACE,YAAY,CAACJ,OAAO,CAAC,EAC3B;MACA,OAAO,IAAI;IACb;IACA,IAAMK,CAAC,GAAGH,KAAK,CAACI,kBAAkB,CAACC,SAAS,EAAEA,SAAS,EAAEA,SAAS,EAAEP,OAAO,CAAC,CACzEQ,MAAM;IACT,IAAIH,CAAC,KAAK,CAAC,EAAE,OAAO,IAAI;IACxB,OAAO,QAAQ,GAAGA,CAAC,GAAG,SAAS;EACjC,CAAC;EAEDI,MAAM,EAAE,gBAAUT,OAAO,EAAEC,OAAO,EAAE;IAClC,IAAMS,UAAU,GAAGT,OAAO,CAACU,GAAG;IAC9B,IAAMC,EAAE,GAAGX,OAAO,CAACE,OAAO,CAACD,KAAK;IAChC,IAAMW,GAAG,GAAGH,UAAU,CAACI,aAAa,CAAC,KAAK,CAAC;IAC3CD,GAAG,CAACE,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC;IACnC;IACA;IACA;IACA,IAAMC,GAAG,GAAGJ,EAAE,CAACN,kBAAkB,CAACC,SAAS,EAAEA,SAAS,EAAEA,SAAS,EAAEP,OAAO,CAAC,EAAC;IAC5E;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,IAAMiB,EAAE,GAAG7B,EAAE,CAAC8B,GAAG,CAACC,UAAU,CAACP,EAAE,CAAC;IAChCK,EAAE,CAACG,iBAAiB,CAACR,EAAE,CAACS,UAAU,CAAC;IACnCJ,EAAE,CAACK,OAAO,CAACtB,OAAO,CAACuB,GAAG,CAAC;IACvB,IAAMC,GAAG,GAAGP,EAAE,CAACQ,cAAc,CAACT,GAAG,CAAC;IAClC,IAAMU,GAAG,GAAGhB,UAAU,CAACI,aAAa,CAAC,KAAK,CAAC;IAC3CY,GAAG,CAACC,WAAW,CAACjB,UAAU,CAACkB,cAAc,CAACJ,GAAG,CAAC,CAAC;IAC/CX,GAAG,CAACc,WAAW,CAACD,GAAG,CAAC;IACpB,OAAOb,GAAG;EACZ;AACF,CAAC"}
|
package/lib/outline/context.js
CHANGED