text: (this.webpackJsonptagging_interface=this.webpackJsonptagging_interface||[]).push([[0],{146:function(e,t){e.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4goMAxI5sonxsgAACLtJREFUWMPtmHtwVNUdxz/n7t3dJLuJAUkkCiRgI6IG5ZFigtUi1VKiTIDOGKoyQwkyZIrWGUU67VBt2tEqoS2jDEWiSMVGmFGwyjCTgqJCHBJRNBCWh+S9m2ySzWafd/fuPf0jj0ayCQ/FznT8/XNnzvmd8/ue3+t8z4Xv5Xv5P5bVq1f/bwwbhkF1dTUAUkq7lHKKlHKWlPJOKeVdDofjxsH6NTU1l21LXO7CaDSqBIPBTTt37lx55swZAGbOnElubi6VlZXouh7RNG1bQUHBU9nZ2d0A+/fvZ+7cuVcWYCgUIiEhIenAgQMf7NixI9fr9WIymZBSkpycTE5ODhaLhZ6eHiZNmsSbb75JZmbmpg0bNjwjhGh3Op1kZGRcWQ86HI67y8vL9zc2Ng6Zk1KSlpaGz+cjFAqxaNEiSktLmTJlSteSJUvmLF68+Iuqqiry8vIuypZyqeCklNampqY3Ghoa4p9YCNxuN5qmIYTg1KlTTJ48mRMnTox+9dVXj61fv351Xl4eu3fv/nYBSikBcLvdO7ds2XLNiGERYuDrcDgoKSlB0zTq6+vZs2fPxhdeeOH5wsJCdu3adUG7posFJ4Sgs7Pzl2VlZU9kZWUJq9WK1+u9qIo/d+4cy5Yto6qqilAohMvlmr1q1SpjxYoVH34rHhRCIKWcXlFRUe52u5U77rgDVVW52LUej4cjR45QXFyM3+/H5XJRWVn59LPPPjv/GwM0DAMpZeKhQ4f27Nu3D8MwaGhowOl0nuflkUG2trbS3NxMaWkpmZmZ6LquuN3uuYsXL778Ku4PbV1d3fNlZWVP+v3+3rwwmdB1HSEEhiHRDYO0q5JweQIkmE0DORhvP7PZjN1u16SUrwWDwT8FAoHGt956a1gM6oXCEwqFpm7cuPFJn883YDgWi/WFHX44OYNfL8rFlGjB2xXgr29Xc6bVgxaJIoRAURSklB4hRIcQ4gNd17dv3rz5434bRUVF38iDSWVlZWerqqrGms3mrzdsLcqye6dyf172wCZCgDQMjnUn0xw009HeRnp6OtFo1FFYWHjjt37VPfbYY/e5XK7dQoj+apeA35qQGF56z9S0u2/NQOrGkHW6ruPJuIuwDhMmTEDXdcxmcyrgvVSAIxaJy+W6uQ9cE/AisFAIcdvjv1o5J3/q9XHBAZhVE5ZwO0IodHR04HA4ALz5+fmX7MFhc7AvN7YB/6ioqGgdPPe7tU+sUk0KxIYPjCpg/PhxdHR0xBobG1cBHD58+MqwmaKiIioqKgYqsfLTI6n5nD2SpJI9LNvBQk96Ls1tXVumTZu2cuvWrRQXF383dKtr4c+z7U+VnFCtLSoi/mUUiUZRLDfjSL56bs6kiQe+Uz7YAunmW6Z+mlZZMU62fTZ0GxlDj6bi+f2m49fs3ZuDEPJyASqXtchmC8VOO7yeR9Yg0iaeB85AjMnC/4ctGAcPJiOEbE5P5zsDqJfPIxYIG5hUQ/vgIOH9dYhRgwiobQze0u2E3/0XCDGhVU24cVx7+8DaKyr9BgIl069rHz+602mzSafNJn3rfivl2b1SHvunDG5/RTrtdtk/585OP9Sx9af3y7cLTZdjU71YYOryfQCJevm8B6U0toQPOUWsS0NGIhjtbgLuZoLdPuyOuv8yBwnGKEu+WYu9E+3WiL02v07GjHeQ/BtwqMv3NfXbGJVqx9Ptv/Qi6Qenl89bAGwiGrqOcTP45O+13LD/Y2LRKKGHl1BU8xFOl4cVaaMorm8f2PiwNHjYbHB6dDIpM9JJ/NkEMAmDmPQoQpxt6vS1eEJi7W3rPjp1njOGB9ivdPov88ekqtFrRyWZfoOgSEkaDbNKEFmzOd3YROSGbNKl5OT8Au7c/TYAP1FVtlmtmAArsCKsoQOvJVgJ6gbCpJD8wA8wz7oGoQoQAn9EkGyR7wl4XF2+7/SIRTL4BClmY29KgukzoYgi2vwc1ecgsmYDkD1hPA2PPooRiXDL5BvImTkTgFl9ZFZIaLaprCvNY01WKhogVAUE+N44RVd5Hb6wBW9njKRwJCID0YlCVRZdsIr7wjlGf2VelaqInHBMKj3eKB0balGf/jPdnZ0DunPWrqXZbkc4ndy3YAEADy5dCkKgAMc1nbpGH6PDMb7WCFUFajvhlU+5KqpBZ9iCFrspXN129UW1GWFW7o11hMfbNU1R3RGUU15kMMqYpiY+X79+QM+SmkqsoAC9poaCBQvIyspiSm4uAH6rwu2rckjxaNg6wwzp1IogctxD1BVESTET/qSNnm2OJc7EpKucNtvIAIMHWxtkUL+OgG4x6RHk2W6QoKoqKc89R31LSy+zVhQsq1cTaWlhdnY2Cxcu7CWFQtCtxdhR60Y92Y1FGWpGAiFVwfvyCTqfqSawtwGkHIcifpQRCAwP0Gm3Kb7XHct9rzvQjnWgt4bQvuwA0btpZmIi5x55BL1P/7bZs/nknnvg6FHWrFlDzOilYOYZadw+LR3bye5he4UOCJMY8GifLB85xBJVqMoM3Rkk8F49vtdPEvJG6Gd+UUVhQk0N7tragSXzyss5/vnnjB07FqmqKELwYWMPx6rbmNjnrXiixR8uuFAOCiB1gMMrgiBfp36JXi+nN2/ufch/tpfQR39DU+uJxgyE1Yo0IGfh9WRqBhYxfKsNA51De53ZabNlXQhg4vknHQzQpKqMeuklqt5/l5TqDaS2HWa65Qu+3PY4SnIqqklh08Em0uu6iZnEsDQqICXe+M34F3EB9lWPAqSdfx92DFKWwLUJScT+WII10do7JlTSPUc5cvwktbEw65behN068vUbAsYBcR4ODzhtNssQgH3VUxCv4szn5ZKuCEbXh4j23btC6gTTpjPrx/nYd+1m7cvHSewKY4z0j7Fv3ziSBYyP+2/mCYvlfcA2eMzf58WkITHSedHlowdBcMytXP9QGWbVRMakScx/aCXNfj/Br77CHgrFfcy7gbFCxAuxFdheFo06/wPG8+u7z0xHVgAAAABJRU5ErkJggg=="},153:function(e,t,a){e.exports=a(394)},158:function(e,t,a){},160:function(e,t,a){},191:function(e,t){},393:function(e,t,a){e.exports=a.p+"static/media/redcoat-1-grey.fd5c7c00.png"},394:function(e,t,a){"use strict";a.r(t);var n=a(0),s=a.n(n),i=a(22),r=a.n(i),o=(a(158),a(93)),l=a(5),c=a.n(l),d=a(7),u=a(29),p=a(1),m=a(2),g=a(4),h=a(3),b=(a(160),a(8)),f=a(15),y="/redcoat/";var v=function(e){var t=void 0;if(document.cookie&&""!==document.cookie)for(var a=document.cookie.split(";"),n=0;n<a.length;n++){var s=a[n].trim();if(s.substring(0,e.length+1)===e+"="){t=decodeURIComponent(s.substring(e.length+1));break}}return t};function k(){var e=Object(f.g)().pathname;return Object(n.useEffect)((function(){window.scrollTo(0,0)}),[e]),null}var w=a(25),E=a(146),j=a.n(E),x=a(17),N=a.n(x),C=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){var e=this.props.user;return e?s.a.createElement("div",{className:"circle-icon profile-icon "+(this.props.size||"small"),style:{background:e.profile_icon?e.profile_icon.background:"#ddd"}},s.a.createElement("i",{className:"profile-icon-i fa fa-"+(e.profile_icon?e.profile_icon.icon:"user"),style:{color:e.profile_icon?e.profile_icon.foreground:"#666"}})):s.a.createElement("div",{className:"circle-icon profile-icon "+(this.props.size||"small"),style:{background:"#ddd"}})}}]),a}(n.Component),O=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"componentDidUpdate",value:function(){N()("#invitations-menu > *").prop("onclick",null).off("click"),N()("#invitations-menu > *").click((function(e){N()("#invitations-button").focus()}))}},{key:"render",value:function(){var e=this;if(this.props.user&&this.props.user.project_invitations){var t,a=this.props.user.project_invitations,n=0,i=Object(w.a)(a);try{for(i.s();!(t=i.n()).done;){var r=t.value;r.accepted||r.declined||n++}}catch(o){i.e(o)}finally{i.f()}}return s.a.createElement("nav",{id:"navbar"},s.a.createElement("div",{className:"navbar-left"},s.a.createElement("div",{id:"logo"},s.a.createElement(b.b,{to:y},s.a.createElement("img",{src:j.a})," ",s.a.createElement("span",{className:"text"},"Redcoat"))),this.props.user&&s.a.createElement("div",{className:"dropdown-menu"},s.a.createElement("button",null,"Projects"),s.a.createElement("ul",{className:"dropdown-menu-items"},s.a.createElement("li",null,s.a.createElement(b.b,{to:y+"projects"},"Projects list")),s.a.createElement("li",null,s.a.createElement(b.b,{to:y+"projects/new"},"New project"))))),s.a.createElement("div",{className:"navbar-centre"}),s.a.createElement("div",{className:"navbar-right"},this.props.user&&s.a.createElement("div",{className:"dropdown-menu invitations"+(0===n?" inactive":""),id:"invitations-menu"},s.a.createElement("button",{id:"invitations-button"},s.a.createElement("i",{className:"fa fa-envelope"}),n>0&&s.a.createElement("span",{className:"invites-count",id:"invites-count"},n)),this.props.user.project_invitations&&a.length>0?s.a.createElement("ul",{className:"dropdown-menu-items"},a.map((function(t,a){return s.a.createElement("li",{key:a},s.a.createElement("span",{className:"invite"},s.a.createElement("span",{className:"link"},t.inviting_user_username)," has invited you to annotate ",s.a.createElement("span",{className:"link"},t.project_name),".",!t.accepted&&!t.declined&&!t.pending&&s.a.createElement("div",{className:"invite-form"},s.a.createElement("button",{className:"accept",onClick:function(){return e.props.acceptInvitation(a)}},"Accept"),s.a.createElement("button",{className:"decline",onClick:function(){return e.props.declineInvitation(a)}},"Decline")),t.pending&&s.a.createElement("div",{className:"invite-form-loading"},s.a.createElement("span",null,s.a.createElement("i",{className:"fa fa-cog fa-spin"}),"\xa0Loading...")),t.accepted&&s.a.createElement("div",{className:"invite-form-accepted"},s.a.createElement("span",null,s.a.createElement("i",{className:"fa fa-check"}),"\xa0Invitation accepted! ",s.a.createElement(b.b,{to:y+"projects/"+t.project_id+"/dashboard"},"(Go to project)"))),t.declined&&s.a.createElement("div",{className:"invite-form-declined"},s.a.createElement("span",null,s.a.createElement("i",{className:"fa fa-close"}),"\xa0Invitation declined."))))}))):s.a.createElement("ul",{className:"dropdown-menu-items"},s.a.createElement("li",null,s.a.createElement("span",{className:"invite"},"You have no active invitations.")))),this.props.user&&s.a.createElement("div",{className:"dropdown-menu"},s.a.createElement("button",{className:"flex"},s.a.createElement(C,{user:this.props.user}),s.a.createElement("span",null,"Logged in as ",this.props.user.username)),s.a.createElement("ul",{className:"dropdown-menu-items"},s.a.createElement("li",null,s.a.createElement(b.b,{to:y+"profile"},"Profile")),s.a.createElement("li",null,s.a.createElement(b.b,{to:y+"logout"},"Logout")))),!this.props.user&&s.a.createElement("div",{className:"dropdown-menu log-in"},s.a.createElement("button",null,"Not logged in\xa0\xa0",s.a.createElement("i",{className:"fa fa-xs fa-chevron-down"})),s.a.createElement("ul",{className:"dropdown-menu-items"},s.a.createElement("li",null,s.a.createElement(b.b,{to:y+"login"},"Login")),s.a.createElement("li",null,s.a.createElement(b.b,{to:y+"register"},"Register")))),!this.props.loading&&s.a.createElement("div",{className:"dropdown-menu short"},s.a.createElement(b.b,{to:y+"features"},"v2.0a"))),!this.props.loading&&s.a.createElement("header",{className:"decorative-bar"}))}}]),a}(n.Component),z=a(11),S=(a(165),a(147)),_=a(148),q=a.n(_),P=a(151),I=a(40),A=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement("li",{className:"new-category"},s.a.createElement("span",{className:"inner-container"},s.a.createElement("span",{className:"category-name"+(this.props.disabled?" disabled":""),onClick:this.props.newItem},s.a.createElement("i",{className:"fa fa-plus"}),"New Category")))}}]),a}(n.Component),T=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){var n;return Object(p.a)(this,a),(n=t.call(this,e)).state={isHovered:!1,name:""},n.nameInputRef=s.a.createRef(),n.changeNameTimeoutFn=null,n.nameCanUpdateTimeoutFn=null,n.nameCanUpdate=!0,n}return Object(m.a)(a,[{key:"componentDidMount",value:function(){0===this.props.item.name.length&&this.nameInputRef.current.focus(),this.setState({name:this.props.item.name.slice()})}},{key:"componentDidUpdate",value:function(e,t){e.item.name!==this.state.name&&t.name===this.state.name&&this.nameCanUpdate&&this.setState({name:this.props.item.name.slice()})}},{key:"componentWillUnmount",value:function(){this.changeNameTimeoutFn&&window.clearTimeout(this.changeNameTimeoutFn),this.nameCanUpdateTimeoutFn&&window.clearTimeout(this.nameCanUpdateTimeoutFn)}},{key:"setHovered",value:function(e){this.setState({isHovered:e})}},{key:"itemNameChange",value:function(e,t){var a=this,n=e.target.value;function s(){this.nameCanUpdate=!0}this.setState({name:n},(function(){a.changeNameTimeoutFn&&window.clearTimeout(a.changeNameTimeoutFn),a.changeNameTimeoutFn=window.setTimeout(a.props.itemNameChange,1e3,n,t),a.nameCanUpdate=!1,a.nameCanUpdateTimeoutFn&&window.clearTimeout(a.nameCanUpdateTimeoutFn),a.nameCanUpdateTimeoutFn=window.setTimeout(s.bind(a),1e3),a.props.userIsModifying()}))}},{key:"render",value:function(){var e=this,t=this.props.item,n=this.props.index,i=this.props.item.children,r=t.colorId,o=this.props.modifiable,l=this.props.path;if(this.props.colorByIndex&&(r=n),i)var c=s.a.createElement("ul",{className:this.props.open?"":"hidden"},i.map((function(t,n){return s.a.createElement(a,{key:n,item:t,open:e.props.openedItems.has(t.full_name),isTopLevelCategory:!1,path:e.props.path.concat([n]),openedItems:e.props.openedItems,onClick:e.props.onClick,hotkeyMap:e.props.hotkeyMap,hotkeyChain:e.props.hotkeyChain,applyTag:e.props.applyTag,colorByIndex:e.props.colorByIndex,modifiable:e.props.modifiable,itemNameChange:e.props.itemNameChange,itemDescChange:e.props.itemDescChange,deleteItem:e.props.deleteItem,newItem:e.props.newItem,userIsModifying:e.props.userIsModifying})})));else c="";if(this.props.hotkeyMap)var d=this.props.hotkeyMap.hasOwnProperty(this.props.item.full_name),u=d?this.props.hotkeyMap[this.props.item.full_name].join(""):"";else d=!1,u="";var p=s.a.createElement("span",{className:"inner-container"},s.a.createElement("span",{className:"left"},(i||o)&&s.a.createElement("span",{className:"open-button"+(i?"":" no-children-yet")+(t.name.length>0?"":" hidden"),onClick:function(){return e.props.onClick(t.full_name)}},s.a.createElement("i",{className:"fa fa-chevron-"+(this.props.open?"up":"down")})),s.a.createElement("span",{className:"category-name"+(d?" has-hotkey":"")+(o?" modifiable":"")+(this.props.hotkeyChain===u?" hotkey-active":""),"data-hotkey-id":u,onClick:this.props.applyTag?function(){return e.props.applyTag(e.props.item.full_name)}:null},o?s.a.createElement("input",{required:!0,onKeyDown:function(e){return 13==e.keyCode?e.preventDefault():""},className:0===this.state.name.length?"empty":this.props.errorEntityNames&&this.props.errorEntityNames.has(t.full_name)?" error":"",placeholder:"(no name)",ref:this.nameInputRef,maxLength:50,value:this.state.name,onChange:function(t){return e.itemNameChange(t,l)}}):t.name)),s.a.createElement("span",{className:"right"},s.a.createElement("span",{className:"description"+(o?" modifiable":"")},o?s.a.createElement("input",{maxLength:100,onKeyDown:function(e){return 13==e.keyCode?e.preventDefault():""},value:t.description||"",onChange:function(t){return e.props.itemDescChange(t,l)},placeholder:"(no description)"}):t.description||"")),o&&s.a.createElement("span",{className:"delete-button-container"},s.a.createElement("span",{className:"delete-button",onClick:function(){e.setHovered(!1),e.props.deleteItem(l)},onMouseEnter:function(){return e.setHovered(!0)},onMouseLeave:function(){return e.setHovered(!1)}},s.a.createElement("i",{className:"fa fa-trash"}))));return this.props.isTopLevelCategory?this.props.draggable?s.a.createElement(I.b,{key:t.id.toString(),draggableId:t.id.toString(),index:n},(function(t,a){return s.a.createElement("li",Object.assign({ref:t.innerRef},t.draggableProps,{className:"draggable "+(a.isDragging?"dragging":"not-dragging")+" color-"+(parseInt(r)%12+1)+(e.state.isHovered?" delete-hover":"")}),s.a.createElement("div",Object.assign({},t.dragHandleProps,{className:"drag-handle-container"}),s.a.createElement("span",{className:"drag-handle"})),p,c,e.props.open&&e.props.modifiable&&s.a.createElement("ul",null,s.a.createElement(A,{newItem:function(){return e.props.newItem(l)}})))})):s.a.createElement("li",{className:" color-"+(parseInt(r)%12+1)+(this.state.isHovered?" delete-hover":"")},p,c,this.props.open&&this.props.modifiable&&s.a.createElement("ul",null,s.a.createElement(A,{newItem:function(){return e.props.newItem(l)}}))):s.a.createElement("li",{className:this.state.isHovered?" delete-hover":""},p,c,this.props.open&&this.props.modifiable&&s.a.createElement("ul",null,s.a.createElement(A,{newItem:function(){return e.props.newItem(l)}})))}}]),a}(n.Component),M=function(e,t,a){var n=Array.from(e),s=n.splice(t,1),i=Object(P.a)(s,1)[0];return n.splice(a,0,i),n};function D(e,t){for(var a=new Array(e.length),n=0;n<t.length;n++)a[n]=e[t[n]];return a}function F(e){for(var t=new Array(e.length),a=0;a<t.length;a++)t[a]=a;return t}var R=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){var n;return Object(p.a)(this,a),(n=t.call(this,e)).state={itemOrder:[],orderedItems:[],openedItems:new Set,orderedByCookie:!1},n.onDragEnd=n.onDragEnd.bind(Object(u.a)(n)),n}return Object(m.a)(a,[{key:"componentDidUpdate",value:function(e,t){var a=F(this.props.items);if(!z.a.isEqual(e.items,this.props.items)){var n=this.props.items,s=this.state.orderedByCookie;this.props.itemOrder&&!s&&(this.props.itemOrder&&(a=this.props.itemOrder),n=D(this.props.items,a),s=!0),this.setState({orderedByCookie:s,openedItems:new Set,orderedItems:n,itemOrder:a})}}},{key:"componentWillMount",value:function(){var e=F(this.props.items);this.setState({openedItems:new Set,orderedItems:this.props.items,itemOrder:e})}},{key:"toggleCategory",value:function(e){var t=this.state.openedItems;t.has(e)?t.delete(e):t.add(e),this.setState({openedItems:t})}},{key:"onDragEnd",value:function(e){var t=this;if(e.destination){var a=M(this.state.itemOrder,e.source.index,e.destination.index),n=D(this.props.items,a);this.props.initHotkeyMap(n,(function(){t.setState({itemOrder:a,orderedItems:n},(function(){t.props.saveDragSettings&&t.props.saveDragSettings(a)}))}))}}},{key:"render",value:function(){var e=this,t=this.state.orderedItems,a=this.state.openedItems;return s.a.createElement("div",{id:"category-hierarchy-tree",className:(this.props.visible?"":"hidden")+(this.props.displayOnly?" display-only":"")+(this.props.tableForm?" table-form":"")},s.a.createElement(I.a,{onDragEnd:this.onDragEnd},s.a.createElement(I.c,{droppableId:"droppable"},(function(n,i){return s.a.createElement("ul",Object.assign({},n.droppableProps,{className:"draggable-list"+(i.isDraggingOver?" dragging":""),ref:n.innerRef}),e.props.displayOnly&&s.a.createElement("li",{className:"header-row"},s.a.createElement("span",{className:"inner-container"},s.a.createElement("span",{className:"category-name"},"Entity Class"),s.a.createElement("span",{className:"description"},"Description"))),t.map((function(t,n){return s.a.createElement(T,{key:n,item:t,index:n,onClick:e.toggleCategory.bind(e),open:a.has(t.name),openedItems:e.state.openedItems,hotkeyMap:e.props.hotkeyMap,hotkeyChain:e.props.hotkeyChain,isTopLevelCategory:!0,applyTag:e.props.applyTag,draggable:e.props.draggable,itemNameChange:e.props.itemNameChange,path:[n]})})),n.placeholder)}))))}}]),a}(n.Component),H=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){var n;return Object(p.a)(this,a),(n=t.call(this,e)).state={items:[],openedItems:new Set,errorEntityNames:new Set,userIsModifying:!1},n.userIsModifyingFn=null,n}return Object(m.a)(a,[{key:"componentDidMount",value:function(){this.setState({items:this.props.items})}},{key:"componentDidUpdate",value:function(e,t){!z.a.isEqual(this.props.items,this.state.items)&&z.a.isEqual(t.items,this.state.items)&&this.setState({items:this.props.items,openedItems:new Set,errorEntityNames:this.props.errorEntityNames}),this.props.errorEntityNames!==this.state.errorEntityNames&&this.setState({errorEntityNames:this.props.errorEntityNames})}},{key:"toggleCategory",value:function(e){var t=this.state.openedItems;t.has(e)?t.delete(e):t.add(e),this.setState({openedItems:t})}},{key:"onDragEnd",value:function(){var e=Object(d.a)(c.a.mark((function e(t){var a;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.destination){e.next=2;break}return e.abrupt("return");case 2:return this.state.items,a=M(this.state.items,t.source.index,t.destination.index),e.next=6,this.setState({items:a});case 6:this.props.updateHierarchy(this.state.items);case 7:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"newItem",value:function(e){var t=this,a=this.state.items;if(e.length>0){for(var n=a,s=0;s<e.length-1;s++){n=n[e[s]].children}var i=n[e[e.length-1]];i.children||(i.children=new Array);r={name:"",description:"",colorId:i.colorId,full_name:i.full_name+"/"};i.children.push(r)}else{var r={name:"",description:"",colorId:this.state.items.length+1,full_name:"",id:this.state.items.length+1};a.push(r)}this.setState({items:a},(function(){t.props.markModified(),console.log("created new item",t.state.items)}))}},{key:"userIsModifying",value:function(){var e=this;this.userIsModifyingFn&&window.clearTimeout(this.userIsModifyingFn),this.userIsModifyingFn=window.setTimeout(function(){var e=this;this.setState({userIsModifying:!1},(function(){e.props.userIsModifying(!1)}))}.bind(this),1e3),this.setState({userIsModifying:!0},(function(){e.props.userIsModifying(!0)}))}},{key:"itemNameChange",value:function(e,t){for(var a=this,n=performance.now(),s=e,i=this.state.items,r=i,o=0;o<t.length-1;o++){r=r[t[o]].children}var l=r[t[t.length-1]];l.name=s;var c=!1,d=this.state.openedItems;this.state.openedItems.has(l.full_name)&&(c=!0,d.delete(l.full_name));var u=l.full_name.split("/");u[u.length-1]=s,l.full_name=u.join("/"),c&&d.add(l.full_name),this.setState({items:i,openedItems:d},(function(){var e=performance.now();console.log(e-n),a.props.markModified()}))}},{key:"itemDescChange",value:function(e,t){for(var a=this,n=e.target.value,s=this.state.items,i=s,r=0;r<t.length-1;r++){i=i[t[r]].children}i[t[t.length-1]].description=n,this.setState({items:s},(function(){a.props.markModified()}))}},{key:"deleteItem",value:function(){var e=Object(d.a)(c.a.mark((function e(t){var a,n,s,i,r,o,l;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=this.state.items,n=a,t.length>1)for(s=0;s<t.length-1;s++)i=t[s],r=n[i],n=n[i].children;return o=this.state.openedItems,l=n[t[t.length-1]],o.delete(l.full_name),n.splice(t[t.length-1],1),0===n.length&&t.length>1&&delete r.children,e.next=10,this.setState({items:a,openedItems:o});case 10:this.props.markModified();case 11:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"render",value:function(){var e=this,t=this.state.items,a=this.state.openedItems;return s.a.createElement("div",{id:"category-hierarchy-tree",className:"table-form display-only"},s.a.createElement("ul",null,s.a.createElement("li",{className:"header-row"},s.a.createElement("span",{className:"inner-container"},s.a.createElement("span",{className:"left"},s.a.createElement("span",{className:"category-name"},"Entity Class")),s.a.createElement("span",{className:"right"},s.a.createElement("span",{className:"description"},"Description")),s.a.createElement("span",{className:"delete-button-container"},s.a.createElement("span",{className:"delete-button"}))))),s.a.createElement(I.a,{onDragEnd:this.onDragEnd.bind(this)},s.a.createElement(I.c,{droppableId:"droppable"},(function(n,i){return s.a.createElement("ul",Object.assign({className:"draggable-list reversed-stripes "+(e.props.limitHeight?"limit-height":"")+(i.isDraggingOver?" dragging":"")+(e.state.userIsModifying?" drag-disabled":"")},n.droppableProps,{ref:n.innerRef}),t.map((function(t,n){return s.a.createElement(T,{key:n,item:t,index:n,onClick:e.toggleCategory.bind(e),open:a.has(t.name),openedItems:e.state.openedItems,isTopLevelCategory:!0,draggable:!0,colorByIndex:!0,modifiable:!0,itemNameChange:e.itemNameChange.bind(e),itemDescChange:e.itemDescChange.bind(e),deleteItem:e.deleteItem.bind(e),newItem:e.newItem.bind(e),errorEntityNames:e.state.errorEntityNames,userIsModifying:e.userIsModifying.bind(e),path:[n]})})),n.placeholder,s.a.createElement(A,{newItem:function(){return e.newItem([])}}))}))))}}]),a}(n.Component),U=R,B=a(150),L=a.n(B);function W(e,t){return t[e.split("/").slice(0,1)[0]]}var G=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){var e=this,t=this.props.entityClass.split("/"),a=t.length>1?"/":"";return a+=t[t.length-1],s.a.createElement("span",{className:"label tag-"+this.props.colourIdx,onClick:function(t){e.props.deleteTag(e.props.entityClass)}},s.a.createElement("span",{className:"label-name"},a))}}]),a}(n.Component),V=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){var n;return Object(p.a)(this,a),(n=t.call(this,e)).state={selected:!1},n.wordInnerRef=s.a.createRef(),n}return Object(m.a)(a,[{key:"deleteTag",value:function(e){this.props.deleteTag(this.props.index,e)}},{key:"componentDidUpdate",value:function(e,t){}},{key:"getHighlightedWord",value:function(){var e=this.props.text,t=this.props.searchTermHighlighting;console.log(this.props.searchTermHighlighting,"<X");for(var a="",n=0;n<e.length;n++)n===t[0]&&(a+='<span class="search-highlight">'),a+=e[n],n===t[1]&&(a+="</span>");return L()(a)}},{key:"render",value:function(){var e=this,t=this.props.entityClasses.length>0,a=t?" tag "+("B"===this.props.bioTag?"tag-begin":"")+(this.props.isLastInSpan?" tag-end":""):"";if(t)var n=this.props.entityClasses.map((function(t,a){return s.a.createElement(G,{deleteTag:e.deleteTag.bind(e),key:a,bioTag:e.props.bioTag,entityClass:t,colourIdx:W(t,e.props.entityColourMap)})}));else n="";var i=this.props.text;this.props.searchTermHighlighting&&(i=this.getHighlightedWord());var r=t?" tag-"+W(this.props.entityClasses[0],this.props.entityColourMap):"";return s.a.createElement("span",{className:"word"+(this.props.selected?" selected":"")+(this.props.hasOOVHighlighting?" oov-highlight":"")+" "+a},s.a.createElement("span",{className:"word-inner"+r+(this.props.searchTermHighlighting?" search-highlight":""),ref:this.wordInnerRef,onMouseUp:function(){return e.props.updateSelections(e.props.index,"up")},onMouseDown:function(){return e.props.updateSelections(e.props.index,"down")}},i),n)}}]),a}(n.Component),Y=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){var n;return Object(p.a)(this,a),(n=t.call(this,e)).sentenceRef=s.a.createRef(),n}return Object(m.a)(a,[{key:"updateSelections",value:function(e,t){this.props.updateSelections(this.props.index,e,t)}},{key:"deleteTag",value:function(e,t){this.props.deleteTag(this.props.index,e,t)}},{key:"componentDidUpdate",value:function(e,t){if(this.props.selections&&0===e.selections.length&&this.props.selections.length>0){var a=this.sentenceRef.current,n=document.body.getBoundingClientRect(),s=a.getBoundingClientRect().top-n.top;window.scrollTo({top:s-200,left:0,behavior:"smooth"})}}},{key:"render",value:function(){var e=this,t=this.props.selections;function a(e){if(0===t.length)return!1;for(var a=0;a<t.length;a++){var n=t[a];if(!(n.wordEndIndex<0)&&(n.wordEndIndex>=e&&e>=n.wordStartIndex))return!0}return!1}return this.props.displayOnly?s.a.createElement("div",{className:"sentence-inner"+(this.props.displayOnly?" display-only":""),ref:this.sentenceRef},this.props.words.map((function(t,a){return s.a.createElement(V,{key:a,index:a,text:t,entityClasses:e.props.annotations[a].entityClasses||[],bioTag:e.props.annotations[a].bioTag,entityColourMap:e.props.entityColourMap,searchTermHighlighting:e.props.annotations[a].searchTermHighlighting,hasOOVHighlighting:e.props.annotations[a].hasOOVHighlighting,updateSelections:function(){return null},deleteTag:function(){return null},isLastInSpan:e.props.annotations[a].isLastInSpan()})}))):s.a.createElement("div",{className:"sentence-inner",ref:this.sentenceRef},this.props.words.map((function(t,n){return s.a.createElement(V,{key:n,index:n,text:t,selected:a(n),entityClasses:e.props.annotations[n].entityClasses||[],isLastInSpan:e.props.annotations[n].isLastInSpan(),bioTag:e.props.annotations[n].bioTag,updateSelections:e.updateSelections.bind(e),entityColourMap:e.props.entityColourMap,deleteTag:e.deleteTag.bind(e),searchTermHighlighting:e.props.annotations[n].searchTermHighlighting,hasOOVHighlighting:e.props.annotations[n].hasOOVHighlighting})})))}}]),a}(n.Component),K=a(209);var Q=function(e,t){return t&&t.no_hours?K(e,"dd mmm"):K(e,"dd mmm")+" at "+K(e,"h:MM tt")},J=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement("div",{className:"comment-box"},s.a.createElement("div",{className:"comment-left"},s.a.createElement("div",{className:"circle-icon profile-icon",style:{background:this.props.user_profile_icon.background}},s.a.createElement("i",{className:"profile-icon-i fa fa-"+this.props.user_profile_icon.icon,style:{color:this.props.user_profile_icon.foreground}}))),s.a.createElement("div",{className:"comment-right"},s.a.createElement("div",{className:"comment-author st"},this.props.author,s.a.createElement("span",{className:"comment-date st"},Q(this.props.created_at))),!this.props.hideDocumentString&&s.a.createElement("blockquote",{className:"comment-document st"},s.a.createElement("span",{className:"document-string"},this.props.document_string),s.a.createElement(b.b,{to:y+"projects/"+this.props.project_id+"/annotations/curation?docId="+this.props.document_id},s.a.createElement("i",{class:"fa fa-external-link"}))),s.a.createElement("div",{className:"comment-text st st-block"},this.props.text)))}}]),a}(n.Component),Z=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){var n;return Object(p.a)(this,a),(n=t.call(this,e)).state={comment:""},n.inputRef=s.a.createRef(),n}return Object(m.a)(a,[{key:"componentDidUpdate",value:function(e,t){e.open!=this.props.open&&this.props.open&&this.inputRef.current.focus()}},{key:"onSubmit",value:function(e){var t=this;e.preventDefault(),0!==this.state.comment.length&&this.props.submitComment(this.state.comment,(function(){t.setState({comment:""})}))}},{key:"setComment",value:function(e){this.setState({comment:e.target.value})}},{key:"render",value:function(){return s.a.createElement("form",{className:"comment-input-box",onSubmit:this.onSubmit.bind(this)},s.a.createElement("div",{className:"comment-box"},s.a.createElement("div",{className:"comment-left"},this.props.user_profile_icon&&s.a.createElement("div",{className:"circle-icon profile-icon",style:{background:this.props.user_profile_icon.background}},s.a.createElement("i",{className:"profile-icon-i fa fa-"+this.props.user_profile_icon.icon,style:{color:this.props.user_profile_icon.foreground}}))),s.a.createElement("div",{className:"comment-right margin-right"},s.a.createElement("div",{className:"comment-text"},s.a.createElement("textarea",{ref:this.inputRef,name:"comment-input",className:"comment-input",placeholder:"Write a comment...",onChange:this.setComment.bind(this),value:this.state.comment,maxlength:"10000"})))),s.a.createElement("div",{className:"submit-comment-wrapper"},s.a.createElement("button",{className:"submit-comment"},s.a.createElement("i",{class:"fa fa-send"}))))}}]),a}(n.Component),X=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){var e=" disabled";this.props.changesMade&&(e=""),this.props.recentlySaved&&(e=" recently-saved"),this.props.saving&&(e=" saving");var t="fa-save";this.props.recentlySaved&&(t="fa-check"),this.props.saving&&(t="fa-cog fa-spin");var a="Save";return this.props.recentlySaved&&(a="Saved"),this.props.saving&&(a="Saving"),s.a.createElement("button",{className:"save-button"+e,onClick:this.props.submitAnnotations},s.a.createElement("i",{className:"fa "+t}),a)}}]),a}(n.Component),$=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement("div",{id:"tagging-progress-bar",className:this.props.show?"show":"hide"},s.a.createElement("span",{className:"progress-bar"},s.a.createElement("span",{className:"inner",style:{width:(this.props.totalPagesAvailable-1)/this.props.totalPages*100+"%"}})))}}]),a}(n.Component),ee=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){var n;return Object(p.a)(this,a),(n=t.call(this,e)).state={value:""},n.inputRef=s.a.createRef(),n}return Object(m.a)(a,[{key:"updateValue",value:function(e){var t=e.target.value;0===t.trim().length&&(t=""),this.setState({value:t})}},{key:"submit",value:function(e){return this.props.searchDocuments(this.state.value),N()(this.inputRef.current).blur(),e.preventDefault(),null}},{key:"render",value:function(){var e=this;return s.a.createElement("form",{className:"search-container"+(this.props.inSearchMode?" active":""),onSubmit:this.submit.bind(this)},s.a.createElement("input",{ref:this.inputRef,className:"search-bar",id:"document-search-bar",placeholder:"Search...",value:this.state.value,onChange:function(t){return e.updateValue(t)}}),s.a.createElement("button",{className:"search-button"},s.a.createElement("i",{class:"fa fa-search"})))}}]),a}(n.Component),te=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){var n;return Object(p.a)(this,a),(n=t.call(this,e)).state={pageNumber:null,pageNumberError:!1},n.pageInputRef=s.a.createRef(),n}return Object(m.a)(a,[{key:"clearPageNumberInput",value:function(){var e=N()(this.pageInputRef.current);e.val(""),e.blur()}},{key:"goToPage",value:function(e){var t=this;return this.clearPageNumberInput(),""===this.state.pageNumber?(this.setState({pageNumber:this.props.pageNumber}),e.preventDefault(),null):this.state.pageNumber!==parseInt(this.state.pageNumber).toString()?(this.setState({pageNumber:this.props.totalPagesAvailable},(function(){t.props.goToPage(t.state.pageNumber)})),e.preventDefault(),null):(this.state.pageNumber<1?this.setState({pageNumber:1},(function(){t.props.goToPage(t.state.pageNumber)})):this.state.pageNumber>this.props.totalPagesAvailable?this.setState({pageNumber:this.props.totalPagesAvailable},(function(){t.props.goToPage(t.state.pageNumber)})):this.props.goToPage(this.state.pageNumber),e.preventDefault(),null)}},{key:"componentDidMount",value:function(){!this.state.pageNumber&&this.props.pageNumber&&this.setState({pageNumber:this.props.pageNumber})}},{key:"componentDidUpdate",value:function(e,t){this.props.pageNumber!==e.pageNumber&&this.setState({pageNumber:this.props.pageNumber})}},{key:"changePageNumber",value:function(e){this.setState({pageNumber:e.target.value})}},{key:"render",value:function(){var e=this,t=s.a.createElement("span",{className:"group-name"},s.a.createElement("span",null,"Page ",s.a.createElement("b",null,s.a.createElement("form",{onSubmit:this.goToPage.bind(this)},s.a.createElement("input",{id:"page-input",className:"page-input"+(this.state.pageNumberError?" error":""),placeholder:this.state.pageNumber,name:"page-input",onChange:function(t){return e.changePageNumber(t)},ref:this.pageInputRef})))," of ",s.a.createElement("b",null,this.props.totalPages))),a=this.props.totalPagesAvailable===this.props.pageNumber,n=this.props.changesMade?this.props.saving?"":"Changes not saved":this.props.lastModified?"Saved on "+Q(this.props.lastModified):"";return s.a.createElement("div",{id:"pagination",className:this.props.curationPage?"curation-page":""},s.a.createElement("div",{className:"page-button-container previous-page"},s.a.createElement("button",{className:1===this.props.pageNumber?" disabled":this.props.querying?"loading":"",onClick:this.props.loadPreviousPage},s.a.createElement("i",{className:"fa fa-chevron-left"}),"Prev")),s.a.createElement("div",{className:"filler-left"},s.a.createElement(ee,{inSearchMode:this.props.inSearchMode,searchDocuments:this.props.searchDocuments})),s.a.createElement("div",{className:"highlight-oov-container"},s.a.createElement("input",{type:"checkbox",checked:this.props.renderOOVHighlight,onClick:this.props.toggleOOVHighlight})," Highlight OOV"),s.a.createElement("div",{className:"current-page-container"+(this.props.showingProgressBar?" progress-bar-underneath":"")},t,this.props.showDocsPerPage&&s.a.createElement("div",{className:"docs-per-page-select-container"},s.a.createElement("label",null,"Per page:"),s.a.createElement("select",{className:"docs-per-page-select",onChange:function(t){e.props.setDocsPerPage(t),N()(t.target).blur()}},this.props.docsPerPageOptions.map((function(t,a){return s.a.createElement("option",{value:t,selected:t===e.props.docsPerPage},t)})))),this.props.showSortBy&&s.a.createElement("div",{className:"docs-per-page-select-container"},s.a.createElement("label",null,"Sort by:"),s.a.createElement("select",{className:"docs-per-page-select sort-by",onChange:function(t){e.props.setSortBy(t),N()(t.target).blur()}},this.props.sortByOptions.map((function(t,a){return s.a.createElement("option",{value:t,selected:t===e.props.sortBy},"Annotations"===t?"# Annotations":t)})))),s.a.createElement($,{show:this.props.showingProgressBar,totalPagesAvailable:this.props.totalPagesAvailable,totalPages:this.props.totalPages})),s.a.createElement("div",{className:"group-last-modified"},n),this.props.showSaveButton&&s.a.createElement("div",{className:"page-button-container "},s.a.createElement(X,{changesMade:this.props.changesMade,recentlySaved:this.props.recentlySaved,saving:this.props.saving,submitAnnotations:this.props.submitAnnotations})),s.a.createElement("div",{className:"page-button-container next-page",title:a&&!this.props.inSearchMode?"Finish annotating this page to move on to the next page.":""},s.a.createElement("button",{className:a?" disabled":this.props.querying?"loading":"",onClick:this.props.loadNextPage},"Next",s.a.createElement("i",{className:"fa fa-chevron-right"}))))}}]),a}(n.Component);var ae=function(e,t,a){var n="";if(a){var s=new Date;s.setTime(s.getTime()+24*a*60*60*1e3),n="; expires="+s.toUTCString()}document.cookie=e+"="+(t||"")+n+"; path=/"},ne=function(){function e(t,a){Object(p.a)(this,e),this.token=t,this.tokenIndex=a,this.bioTag="O",this.searchTermHighlighting=null,this.hasOOVHighlighting=!1}return Object(m.a)(e,[{key:"addLabel",value:function(e,t,a,n,s){void 0===this.entityClasses&&(this.entityClasses=new Array);var i=-1!==this.entityClasses.indexOf(t);return(this.bioTag!==e||this.spanText!==a||this.spanStartIdx!==n||this.spanEndIdx!==s||!i)&&(this.bioTag=e,this.spanText=a,this.spanStartIdx=n,this.spanEndIdx=s,i||this.entityClasses.push(t),!0)}},{key:"removeAllLabels",value:function(){delete this.entityClasses,delete this.spanText,delete this.spanStartIdx,delete this.spanEndIdx,this.bioTag="O"}},{key:"sameMention",value:function(e){return e.spanStartIdx===this.spanStartIdx&&e.spanEndIdx===this.spanEndIdx}},{key:"sameEntityClasses",value:function(e){return z.a.isEqual(this.entityClasses,e.entityClasses)}},{key:"removeLabel",value:function(e){var t=this.entityClasses.indexOf(e);-1!==t?(this.entityClasses.splice(t,1),0===this.entityClasses.length&&(this.bioTag="O",delete this.entityClasses,delete this.spanText,delete this.spanStartIdx,delete this.spanEndIdx)):console.log("Warning: tried to remove an entity class from an annotation that did not exist.")}},{key:"changeBioTag",value:function(e){this.bioTag=e}},{key:"hasLabel",value:function(){return"O"!==this.bioTag}},{key:"isLastInSpan",value:function(){return this.spanEndIdx===this.tokenIndex}},{key:"setSpanStartIdx",value:function(e){this.spanStartIdx=e}},{key:"setSpanEndIdx",value:function(e){this.spanEndIdx=e}},{key:"setSearchTermHighlighting",value:function(e,t){this.searchTermHighlighting=[e,t]}},{key:"setOOVHighlighting",value:function(){this.hasOOVHighlighting=!0}},{key:"prettyPrint",value:function(){console.log("Token:    ",this.token),console.log("BIO Tag:  ",this.bioTag),console.log("Span:     ",this.spanText),console.log("StartIdx: ",this.spanStartIdx),console.log("EndIdx: ",this.spanEndIdx),console.log("Classes:  \n",this.entityClasses),console.log("\n")}}]),e}(),se=new Set(["aa","aardvark","aargh","aback","abacus","abandon","abandoned","abandoning","abandonment","abandons","abba","abbey","abbot","abbots","abdomen","abdominal","abduct","abducted","abducting","abduction","abductions","aberration","abetted","abide","abiding","abigail","abilities","ability","ablaze","able","abnormal","abnormalities","abnormality","abnormally","aboard","abode","abolish","abominable","abomination","aboriginal","abort","abortion","abortions","abound","about","above","aboveboard","abrasive","abreast","abroad","abrupt","abruptly","abs","absconded","absence","absences","absent","absentee","absolute","absolutely","absolutes","absolution","absolved","absorb","absorbed","absorbent","absorbing","absorption","abstain","abstinence","abstract","absurd","absurdity","absurdly","abundance","abundant","abundantly","abuse","abused","abuser","abusing","abusive","abut","abysmal","academia","academic","academics","academy","accelerant","accelerate","accelerated","accelerating","acceleration","accent","accents","accept","acceptable","acceptance","accepted","accepting","accepts","access","accessible","accessing","accessories","accessory","accident","accidental","accidentally","accidently","accidents","acclaim","acclimate","acclimated","accolades","accommodate","accommodating","accommodation","accommodations","accompanied","accompany","accompanying","accomplice","accomplices","accomplish","accomplished","accomplishing","accomplishment","accomplishments","accord","accordance","accorded","according","accordingly","account","accountability","accountable","accountant","accountants","accounted","accounting","accounts","accoutrements","accumulate","accumulated","accumulation","accuracy","accurate","accurately","accursed","accusation","accusations","accuse","accused","accuser","accusers","accuses","accusing","accustomed","ace","aced","aces","acetate","ache","ached","aches","achieve","achieved","achievement","achieving","aching","achingly","acid","acids","acing","acknowledge","acknowledged","acknowledgement","acknowledges","acme","acne","acorn","acoustic","acoustics","acquaint","acquaintance","acquaintances","acquainted","acquire","acquired","acquisition","acquisitions","acquitted","acre","acres","acrobat","across","act","acted","actin","acting","action","actionable","actions","activate","activated","activating","activation","activators","active","actively","activists","activities","activity","actor","actors","actress","actresses","acts","actual","actuality","actualization","actually","actuarial","acupuncture","acupuncturist","acute","ad","adage","adamant","adapt","adaptable","adapted","adapting","add","added","addendum","addict","addicted","addiction","addictive","addicts","adding","addition","additional","additions","additives","addled","address","addressed","addresses","addressing","adds","adenoids","adept","adequate","adequately","adhere","adherence","adhesive","adjacent","adjective","adjectives","adjourn","adjourned","adjust","adjustable","adjusted","adjusting","adjustment","adjustments","adjutant","administer","administered","administering","administration","administrative","administrator","administrators","admirable","admirably","admiral","admiration","admire","admired","admirer","admirers","admires","admiring","admission","admissions","admit","admits","admittance","admitted","admittedly","admitting","admonish","admonished","admonition","ado","adobe","adolescence","adolescent","adolescents","adopt","adopted","adopting","adoption","adoptive","adorable","adoration","adore","adored","adores","adoring","adrenaline","adrenals","ads","adult","adultery","adults","advance","advanced","advancement","advancements","advances","advancing","advantage","advantageous","advantages","advent","adventure","adventurer","adventures","adventurous","adversaries","adversary","adverse","adversely","adversity","advert","advertise","advertised","advertisement","advertisers","advertises","advertising","advice","advisable","advise","advised","adviser","advises","advising","advisor","advocacy","advocate","advocating","aerial","aerobic","aerobics","aerodynamics","aeroplane","aerosol","aerospace","aesthetic","aesthetics","afar","affair","affairs","affect","affected","affecting","affection","affectionate","affectionately","affections","affects","affidavit","affidavits","affiliated","affiliates","affiliation","affinity","affirm","affirmative","affirming","afflicted","afford","afforded","affront","afloat","afoot","aforementioned","aforethought","afraid","aft","after","afterglow","afterlife","aftermath","afternoon","afternoons","afterthought","afterward","afterwards","ag","aga","again","against","age","aged","ageing","ageless","agencies","agency","agenda","agendas","agent","agents","ages","aggravate","aggravated","aggravating","aggravation","aggression","aggressive","aggressively","aggressor","agile","agility","agin","aging","agitate","agitated","agitation","agitators","ago","agonized","agonizing","agony","agree","agreeable","agreed","agreeing","agreement","agreements","agrees","agricultural","aground","ah","aha","ahead","ahem","ahold","ahoy","ai","aid","aide","aided","aides","aiding","aids","ail","ailing","ailment","ailments","ails","aim","aimed","aiming","aimless","aimlessly","aims","ain","air","airborne","aircraft","airfield","airhead","airing","airlift","airlifted","airline","airlines","airman","airmen","airplane","airplanes","airport","airports","airs","airspace","airstrip","airtight","airwaves","airway","airways","aisle","aisles","ajar","al","ala","alabaster","alameda","alamo","alan","alarm","alarmed","alarming","alarmist","alarms","alas","alaska","alastor","albacore","albatross","albino","album","albums","alcazar","alchemist","alchemy","alcohol","alcoholic","alcoholics","alcoholism","alcove","alderman","ale","alec","alert","alerted","alerting","alerts","ales","alexander","alfalfa","algae","algebra","algorithms","alias","aliases","alibi","alibis","alien","alienate","alienated","alienating","alienation","aliens","alight","aligning","alike","alimony","alive","all","allee","allegation","allegations","alleged","allegedly","allegiance","allegiances","alleging","alleluia","allergic","allergies","allergy","alleviate","alley","alleys","alliance","allies","alligator","alligators","alliteration","allotted","allow","allowable","allowance","allowed","allowing","allows","alluding","allure","alluring","ally","alma","almighty","almond","almonds","almost","aloe","aloft","aloha","alone","along","alongside","aloud","alpha","alphabet","alphabetically","alphabetized","alpine","already","alright","als","also","alt","altar","alter","alteration","alterations","altercation","altered","altering","alternate","alternates","alternating","alternative","alternatives","alternator","alters","although","altitude","alto","altogether","altruistic","aluminum","alumni","alumnus","always","am","ama","amah","amaretto","amassed","amateur","amateurs","amaze","amazed","amazes","amazing","amazingly","amazon","ambassador","amber","ambiance","ambience","ambient","ambiguity","ambiguous","ambition","ambitions","ambitious","ambivalence","ambivalent","ambrosia","ambulance","ambulances","ambush","ambushed","amen","amend","amended","amendment","amendments","amends","amenities","ami","amiable","amicable","amigo","amigos","amin","amino","amiss","ammo","ammonia","ammunition","amnesia","amniotic","among","amongst","amoral","amorous","amount","amounted","amounts","amp","amphetamines","ampicillin","ample","amply","ampule","amputate","amputated","amputation","amulet","amulets","amuse","amused","amusement","amuses","amusing","an","ana","anachronism","anaesthetic","anagram","anal","analogy","analyse","analysis","analyst","analysts","analyze","analyzed","analyzing","anaphylactic","anarchist","anarchists","anarchy","anatomically","anatomy","ancestor","ancestors","anchor","anchorage","anchoring","anchors","anchovies","ancient","ancients","and","android","ane","anecdote","anecdotes","anemia","anemic","anesthesia","anesthesiologist","anesthesiology","anesthetic","anesthetics","aneurysm","anew","angel","angels","angelus","anger","angina","angiogram","angioplasty","angle","angles","angling","angora","angrier","angrily","angry","angst","anguish","anguished","ani","animal","animals","animated","animation","animosity","anise","ankle","ankles","anna","annals","annex","annihilate","annihilated","annihilation","anniversary","announce","announced","announcement","announcements","announcer","announces","announcing","annoy","annoyance","annoyances","annoyed","annoying","annoyingly","annoys","annual","annually","annul","annulled","annulment","anoint","anointed","anomalies","anomaly","anon","anonymity","anonymous","anorexia","anorexic","another","answer","answered","answering","answers","ant","antacid","antagonism","antagonistic","antagonize","antagonizing","ante","antelope","antenna","antennae","anthem","anthology","anthrax","anthropologist","anthropologists","anthropology","anti","antibiotic","antibiotics","antibodies","antibody","anticipate","anticipated","anticipating","anticipation","antics","antidepressant","antidepressants","antidote","antihistamine","antihistamines","antiquated","antique","antiques","antiquing","antiquities","antiquity","antisocial","antivenin","antler","ants","antsy","anvil","anxiety","anxious","anxiously","any","anybody","anyhow","anymore","anyone","anyplace","anything","anytime","anyway","anyways","anywhere","apache","apart","apartheid","apartment","apartments","apathy","ape","apes","apex","aphrodisiac","apiece","aplastic","apocalypse","apocalyptic","apollo","apologetic","apologies","apologise","apologize","apologized","apologizes","apologizing","apology","apostle","apostles","apostrophe","appalled","appalling","apparatus","apparel","apparent","apparently","apparition","appeal","appealed","appealing","appeals","appear","appearance","appearances","appeared","appearing","appears","appease","appeased","appendage","appendages","appendectomy","appendicitis","appendix","appetite","appetites","appetizer","appetizers","appetizing","applaud","applauded","applauding","applause","apple","applejack","apples","applesauce","appliance","appliances","applicants","application","applications","applied","applies","apply","applying","appoint","appointed","appointing","appointment","appointments","appraisal","appraise","appreciate","appreciated","appreciates","appreciation","appreciative","apprehend","apprehended","apprehension","apprehensive","apprentice","apprised","approach","approached","approaches","approaching","appropriate","appropriately","appropriations","approval","approve","approved","approving","approximate","approximately","approximation","apricot","apron","aprons","apropos","aptitude","aptly","aqua","aquarium","aquatic","ar","arachnid","arachnids","arbitrary","arbitration","arbitrator","arbor","arboretum","arc","arcade","arch","archaic","arched","archenemy","archeological","archeology","archer","arches","architect","architects","architecture","archives","arctic","ardent","are","area","areas","arena","arf","argentine","argon","arguably","argue","argued","argues","arguing","argument","argumentative","arguments","argyle","aria","arid","ariel","aright","arise","arises","aristocratic","arithmetic","ark","arm","armaments","armed","armies","arming","armor","armored","armory","armour","armpits","arms","army","aroma","arose","around","arouse","aroused","arousing","arraigned","arraignment","arrange","arranged","arrangement","arrangements","arranging","array","arrears","arrest","arrested","arresting","arrests","arrhythmia","arrival","arrivals","arrive","arrived","arrives","arriving","arrogance","arrogant","arrow","arrowhead","arrows","arroyo","arse","arsenal","arsenic","arson","arsonist","art","arterial","arteries","artery","artful","arthritis","artichoke","artichokes","article","articles","articulate","artifact","artifacts","artificial","artillery","artist","artiste","artistic","artistry","artists","arts","artsy","artwork","arty","arugula","as","asbestos","ascension","ascot","ash","ashamed","ashes","ashore","ashram","ashtray","ashtrays","aside","asinine","ask","asked","askew","asking","asks","asleep","asparagus","aspect","aspects","aspen","asphalt","asphyxiation","aspirations","aspire","aspirin","aspirins","ass","assailant","assassin","assassinate","assassination","assassins","assault","assaulted","assaulting","assaults","assemble","assembled","assembler","assemblies","assembling","assembly","assertive","assertiveness","asses","assess","assessed","assessing","assessment","asset","assets","asshole","assholes","assign","assigned","assigning","assignment","assignments","assimilate","assimilated","assist","assistance","assistant","assistants","assisted","assisting","associate","associated","associates","associating","association","associations","assorted","assortment","assume","assumed","assumes","assuming","assumption","assumptions","assurance","assurances","assure","assured","assuredly","assures","assuring","asteroid","asteroids","asthma","astonished","astonishing","astonishment","astound","astounding","astral","astray","astronaut","astronauts","astronomer","astronomical","astronomy","astrophysics","astute","asunder","asylum","at","ate","atheists","athlete","athletes","athletic","atlas","atmosphere","atom","atomic","atonement","atop","atrium","atrocious","atrocities","atrophied","atropine","att","attaboy","attach","attache","attached","attachment","attachments","attack","attacked","attacker","attackers","attacking","attacks","attain","attained","attempt","attempted","attempting","attempts","attend","attendance","attendant","attendants","attended","attending","attends","attention","attentions","attentive","attest","attic","attired","attitude","attitudes","attorney","attorneys","attract","attracted","attracting","attraction","attractive","attracts","attribute","attributed","attributes","attuned","auction","auctioneer","auctioning","audacity","audible","audience","audiences","audio","audiotape","audit","audited","auditing","audition","auditioning","auditions","auditor","auditorium","auditory","auger","aught","augmentation","august","auk","auld","aunt","auntie","aunties","aunts","aura","auras","aurora","auspicious","authentic","authenticate","authenticated","authenticity","author","authoritative","authorities","authority","authorization","authorize","authorized","authorizing","authors","autism","autistic","auto","autobiographical","autograph","autographed","autographs","automated","automatic","automatically","automatics","automaton","automobile","automobiles","automotive","autonomous","autonomy","autopsies","autopsy","autumn","auxiliary","ava","availability","available","avalanche","avatar","avatars","ave","avenge","avenged","avenger","avengers","avenue","average","averages","averse","aversion","aviation","avid","avocado","avoid","avoidance","avoided","avoiding","avoids","aw","await","awaiting","awaits","awake","awaken","awakened","awakening","awakes","award","awarded","awards","aware","awareness","away","awe","awed","awesome","awful","awfully","awhile","awkward","awkwardly","awkwardness","awoke","awol","awry","ax","axe","axel","axis","axle","ay","aye","ba","baa","baba","babble","babbling","babe","babes","babies","baboon","baboons","babu","baby","babysitter","babysitters","bach","bachelor","bachelorette","bachelors","back","backbone","backdoor","backdrop","backed","backer","backfire","backfired","backfires","backfiring","backgammon","background","backhand","backing","backpack","backpacking","backpacks","backroom","backs","backseat","backside","backslide","backstabbing","backstage","backstreet","backstroke","backup","backups","backward","backwards","backyard","bacon","bacteria","bacterial","bad","badder","baddest","badge","badgered","badgering","badges","badly","badminton","badness","baffled","baffles","baffling","bag","bagel","bagels","baggage","bagged","baggies","bagging","baggy","bagman","bagpipes","bags","bah","bail","bailed","bailey","bailiff","bailiffs","bailing","bails","bait","baited","baiting","bake","baked","baker","bakeries","bakers","bakery","bakes","baking","baklava","balance","balanced","balances","balancing","balboa","balconies","balcony","bald","balding","baldness","bale","balk","ball","ballads","ballast","balled","baller","ballerina","ballet","ballgame","ballistic","ballistics","ballon","balloon","balloons","ballot","ballots","ballpark","ballplayer","ballplayers","ballpoint","ballroom","balls","ballsy","balm","balmoral","baloney","bam","bambino","bamboo","bamboozled","ban","banal","banality","banana","bananas","band","bandage","bandages","bandit","bandits","bands","bandwagon","bane","bang","banged","bangers","banging","bangles","bangs","banish","banished","banister","banjo","bank","bankbooks","banker","bankers","banking","bankroll","bankrolled","bankrupt","bankruptcy","bankrupted","banks","banned","banner","banners","banning","bannister","banquet","banshee","banter","banzai","baptism","baptist","baptists","baptize","baptized","bar","barb","barbarian","barbarians","barbaric","barbecue","barbecued","barbecues","barbed","barber","barbers","barbershop","barbs","bard","bare","bared","barefoot","barely","barf","barfed","barfing","bargain","bargained","bargaining","barge","barged","barges","barging","baring","barium","bark","barked","barkeep","barker","barking","barks","barley","barlow","barmaid","barman","barn","barnacle","barnyard","barometer","baron","baroness","baronet","baroque","barracks","barracuda","barrage","barre","barred","barrel","barreling","barrels","barren","barricade","barricaded","barricades","barrier","barring","barrio","barrister","barroom","barrow","bars","barstool","bartender","bartending","barter","base","baseball","based","baseless","baseman","basement","basements","bases","bash","bashed","bashful","bashing","basic","basically","basics","basil","basin","basis","bask","basket","basketball","basketballs","baskets","basking","bass","bassett","bassinet","bassoon","bastard","bastards","baste","bastille","bat","batch","bates","bath","bathe","bathed","bathing","bathrobe","bathrobes","bathroom","bathrooms","baths","bathtub","batman","baton","bats","batted","batter","battered","batteries","battering","battery","batting","battle","battlefield","battleground","battles","battleship","battling","batty","bauble","baubles","bawdy","bawl","bawling","bay","bayberry","bayonet","bayou","bays","bazaar","bazooka","be","beach","beaches","beacon","beaded","beads","beagle","beak","beakers","beam","beamed","beaming","beams","bean","beanbag","beanie","beans","bear","bearable","beard","bearded","beards","bearer","bearers","bearing","bearings","bears","beast","beastie","beasts","beat","beaten","beater","beating","beatings","beatnik","beats","beau","beaucoup","beauties","beautiful","beautifully","beauty","beaver","beavers","became","because","beck","beckons","becks","become","becomes","becoming","bed","bedbug","bedbugs","bedlam","bedpan","bedpans","bedridden","bedrock","bedroom","bedrooms","beds","bedside","bedspread","bedtime","bee","beech","beef","beefcake","beefed","beefs","beefy","been","beep","beeped","beeper","beepers","beeps","beer","beers","beery","bees","beeswax","beetle","beetles","beets","befall","befitting","before","beforehand","beg","began","begat","begets","beggar","beggars","begged","begging","begin","beginner","beginning","beginnings","begins","begrudge","begs","begun","behalf","behave","behaved","behaving","behavior","behavioral","behaviour","beheading","behind","behold","behooves","beige","being","beings","bel","belabor","belated","beleaguered","belie","belief","beliefs","believable","believe","believed","believer","believers","believes","believing","belittle","belive","bell","bellboy","belle","bellhops","bellies","belligerent","bellman","bells","belly","bellyaching","bellybutton","belong","belonged","belonging","belongings","belongs","beloved","below","belt","belted","belts","belvedere","ben","bench","benched","benches","benching","bend","bended","bender","bending","bends","bendy","bene","beneath","benedict","benefactor","benefactors","beneficial","benefit","benefited","benefits","benes","benevolence","benevolent","benign","benjamin","benjamins","bennet","benny","bent","benthic","bequest","berate","berating","bereavement","bereft","beret","berg","berlin","berries","berry","berserk","berserker","bertha","beryllium","beseech","beside","besides","besieged","besmirch","best","bested","bestow","bestowed","bestseller","bet","beta","beth","bethesda","betray","betrayal","betrayals","betrayed","betrayer","betraying","betrays","bets","better","betting","between","beverage","beware","bewitched","bey","beyond","bi","bialy","bias","biased","bib","bible","bibles","biblical","bibliography","bicentennial","bicker","bickering","bicuspids","bicycle","bicycles","bid","bidder","bidding","bide","biding","bids","biff","big","bigamist","bigamy","bigfoot","bigger","biggest","biggie","bighorn","bigmouth","bigness","bigot","bigotry","bijou","bike","biker","bikers","bikes","biking","bikini","bikinis","bilateral","bilge","bilingual","bill","billboard","billboards","billiard","billie","billing","billion","billionaire","billionaires","billions","bills","billy","bimbo","bimbos","bin","binary","bind","binder","binding","binds","binge","bingo","binoculars","bins","bio","biochemist","biochemistry","biographical","biographies","biography","biohazard","biological","biologically","biology","bionic","biopsy","bios","biotech","bipartisan","bipolar","birch","bird","birdcage","birdie","birdies","birds","birdseed","birth","birthday","birthdays","birthing","birthmark","birthplace","birthright","births","biscuit","biscuits","bishop","bishops","bison","bisque","bistro","bit","bitch","bitches","bitching","bitchy","bite","bites","biting","bits","bitsy","bitten","bitter","bitterness","bitty","biz","bizarre","blab","blabbermouth","blabbing","black","blackberry","blackbird","blackboard","blacked","blacking","blackjack","blackmail","blackmailed","blackmailer","blackmailing","blackness","blackout","blackouts","blacks","blacksmith","bladder","bladders","blade","blades","blah","blam","blame","blamed","blameless","blames","blaming","bland","blank","blanket","blankets","blankly","blanks","blaring","blarney","blasphemous","blasphemy","blast","blasted","blasters","blasting","blatant","blatantly","blather","blathering","blaze","blazer","blazers","blazes","blazing","bleach","bleached","bleachers","bleaching","bleak","bled","bleed","bleeder","bleeding","bleeds","bleep","blemish","blend","blended","blender","blending","blends","bless","blessed","blessing","blessings","blew","blight","blimey","blimp","blind","blinded","blinders","blindfold","blindfolded","blinding","blindly","blindness","blinds","blindsided","blink","blinked","blinking","blinks","blip","blips","bliss","blissful","blissfully","blisters","blithely","blithering","blitz","blizzard","bloated","blob","bloc","block","blockade","blockage","blockbusters","blocked","blockhead","blocking","blocks","bloke","blokes","blond","blonde","blondes","blonds","blood","blooded","bloodhound","bloodied","bloodless","bloodline","bloods","bloodshed","bloodshot","bloodstream","bloodsucker","bloodsucking","bloody","bloom","blooming","blooms","blossom","blossomed","blossoms","blot","blotchy","blotter","blotto","blouse","blow","blowed","blower","blowfish","blowhard","blowing","blowjob","blowjobs","blown","blowout","blows","blowtorch","blowup","blubber","blubbering","bludgeoned","blue","bluebells","blueberries","blueberry","bluepoint","blueprints","bluer","blues","bluest","bluff","bluffing","bluffs","blume","blunder","blundering","blunders","blunt","blur","blurb","blurred","blurry","blurt","blurted","blurting","blush","blushing","bluster","bo","boa","boar","board","boarded","boarder","boarding","boardinghouse","boardroom","boards","boardwalk","boast","boat","boathouse","boating","boatload","boatman","boats","bob","bobbin","bobbing","bobby","bobcat","bod","bodega","bodies","bodily","body","bodyguard","bodyguards","bogeyman","boggle","boggles","boggling","bogs","bogus","bohemian","boil","boiled","boiler","boilers","boiling","boils","bold","bolder","boldly","bollocks","bologna","bolster","bolt","bolted","bolts","bomb","bombarded","bombarding","bombed","bomber","bombers","bombing","bombings","bombs","bombshell","bonbon","bond","bondage","bonded","bonding","bonds","bondsman","bone","boned","bonehead","boneless","boner","boners","bones","bonfire","bong","bongo","bongos","boning","bonkers","bonnet","bonnie","bonus","bonuses","bony","boo","boob","boobies","boobs","booby","booger","boogey","boogeyman","boogie","book","bookcase","booked","bookends","booker","bookie","booking","bookish","bookkeeper","booklet","booklets","bookman","bookmark","books","bookshelf","bookshelves","bookstore","boom","boombox","boomer","boomerang","boon","boonies","boorish","boost","boosted","booster","boosters","boosts","boot","booted","booth","booths","booties","bootleg","boots","booty","booze","boozer","boozing","bop","bora","bordeaux","bordello","border","bordering","borderline","borders","bore","bored","boredom","boring","born","borrow","borrowed","borrowing","bosom","bosomy","boss","bossed","bosses","bossing","bossy","boston","bot","botanical","botany","botched","both","bother","bothered","bothering","bothers","bottle","bottled","bottles","bottling","bottom","bottomed","bottomless","bottoms","botulism","bought","boulder","boulevard","bounce","bounced","bouncer","bouncing","bouncy","bound","boundaries","boundary","bounds","bounty","bouquet","bouquets","bourbon","bourgeois","bourne","bout","boutique","boutiques","boutonniere","bouts","bow","bowed","bowel","bowels","bowers","bowery","bowing","bowl","bowled","bowler","bowline","bowling","bowls","bowman","bows","box","boxcar","boxed","boxer","boxers","boxes","boxing","boy","boycott","boyfriend","boyfriends","boyhood","boys","boysenberry","bozo","bozos","bra","brace","bracelet","bracelets","braces","bracing","bracken","bracket","brad","brag","braggart","bragged","bragging","brags","braid","braided","braiding","braille","brain","brained","brainiest","brains","brainstorm","brainstorming","brainwash","brainwashed","brainwashing","brake","brakes","bran","branch","branched","branches","branching","brand","brandies","brandy","bras","brash","brass","brassiere","brassieres","brat","brats","bratwurst","brava","bravado","brave","braved","bravely","braver","bravery","bravest","bravo","brawl","brays","brazen","brazil","breach","breached","bread","breadth","break","breakable","breakdown","breakdowns","breaker","breakfast","breaking","breakout","breaks","breakthrough","breakthroughs","breakup","breakups","breakwater","breast","breasted","breasts","breath","breathable","breathe","breathed","breather","breathes","breathing","breathless","breaths","breathtaking","bred","bree","breech","breed","breeding","breeds","breeze","breezing","breezy","bren","brent","brethren","brew","brewed","brewer","brewery","brewing","brews","briar","bribe","bribed","bribery","bribes","bribing","brick","bricked","bricks","bridal","bride","bridegroom","brides","bridesmaid","bridesmaids","bridge","bridges","brie","brief","briefcase","briefcases","briefed","briefing","briefings","briefly","briefs","brig","brigade","brigadier","bright","brighten","brighter","brightest","brightly","brill","brilliance","brilliant","brilliantly","brim","brin","bring","bringing","brings","brink","brioche","bris","brisket","briskly","bristol","brit","britches","britt","brittle","bro","broad","broadcast","broadcasting","broadcasts","broadening","broader","broads","broccoli","brochure","brochures","brock","broiled","broiler","broke","broken","brokenhearted","broker","brokerage","bronchial","bronco","bronze","bronzed","bronzing","brooch","brood","brooding","broody","brook","brooks","broom","brooms","broomstick","broomsticks","bros","broth","brothel","brother","brotherhood","brotherly","brothers","brought","brouhaha","brow","browbeat","browbeating","brown","brownie","brownies","browning","brownout","browns","brownstone","browse","browsing","brr","bruise","bruised","bruises","bruising","brumby","brunch","brunette","brunettes","brunt","brush","brushed","brushes","brushing","brutal","brutality","brutally","brute","bubbies","bubble","bubbles","bubbly","buck","buckaroo","bucket","buckets","buckeyes","buckle","buckled","buckling","bucko","bucks","buckshot","bud","buddies","budding","buddy","budge","budget","budgeted","budgets","budging","buds","buff","buffalo","buffer","buffet","buffoon","buffoons","buffs","buffy","bug","bugged","bugger","buggered","bugging","buggy","bugle","bugs","build","builder","building","buildings","builds","buildup","built","bulb","bulbous","bulbs","bulge","bulging","bulimic","bulk","bulky","bull","bulldog","bulldoze","bulldozers","bullet","bulletin","bulletins","bulletproof","bullets","bullheaded","bullied","bullies","bullion","bullpen","bulls","bullshit","bullshitting","bully","bum","bumble","bumbling","bummed","bummer","bummers","bumming","bump","bumped","bumper","bumping","bumpkins","bumps","bumpy","bums","bun","bunch","bunches","bundle","bundles","bungalow","bungalows","bungee","bungled","bunion","bunions","bunk","bunker","bunking","bunks","bunnies","bunny","buns","bunt","bunting","bura","burbs","burden","burdened","burdens","bureau","bureaucrat","bureaucrats","burgeoning","burger","burgers","burgess","burglar","burglaries","burglary","burgundy","burial","buried","buries","burke","burlap","burley","burly","burn","burned","burner","burning","burnout","burns","burnt","burp","burping","burrito","burritos","burro","burrows","burst","bursting","burton","bury","burying","bus","busboy","busboys","buses","bush","bushel","bushes","busier","busiest","business","businesses","businessman","businessmen","businesswoman","businesswomen","busload","bussing","bust","busted","buster","bustier","busting","bustle","bustling","busts","busty","busy","busybody","but","butch","butcher","butchered","butchers","butler","butlers","buts","butt","butted","butter","butterball","buttercup","butterflies","butterfly","buttering","butters","butterscotch","buttery","butting","buttocks","button","buttoned","buttoning","buttons","butts","buy","buyer","buyers","buying","buyout","buys","buzz","buzzard","buzzards","buzzed","buzzer","buzzes","buzzing","bwana","by","bye","byes","bygones","bylaws","byline","bypass","byproduct","bystander","bystanders","cab","caballero","cabaret","cabbage","cabdriver","cabernet","cabin","cabinet","cabinets","cabins","cable","cables","caboose","cabs","cacciatore","cache","cachet","cackle","cackling","cacophony","cactus","cad","cadavers","caddie","caddy","cadet","cadmium","caesar","cafe","cafeteria","caff","caffeinated","caffeine","cage","caged","cages","cagey","cahoots","cain","cake","cakes","cakewalk","calamitous","calamity","calcium","calculate","calculated","calculating","calculation","calculations","calculator","calculators","calculus","calendar","calendars","calender","calf","caliber","calibre","calico","call","called","caller","callers","calling","callous","calls","calm","calmed","calmer","calming","calmly","calms","calorie","calories","calves","calzone","calzones","cam","camcorder","came","camel","camels","camera","cameraman","cameras","camp","campaign","campaigned","campaigning","campaigns","camped","camper","campers","campfire","camping","campos","camps","campus","campuses","cams","camshaft","can","canal","canals","canape","canaries","canary","canasta","cancel","canceled","canceling","cancellation","cancellations","cancelled","cancels","cancer","cancers","candid","candidacy","candidate","candidates","candies","candle","candlelight","candlelit","candles","candlestick","candlesticks","candor","candy","cane","canine","canines","canisters","cannabis","canned","cannery","cannibal","cannibals","cannoli","cannon","cannonball","cannons","cannot","canoe","canoes","canopy","cans","cant","canteen","canter","canton","canvas","canvass","canyon","canyons","cap","capabilities","capable","capacity","cape","caper","capital","capitalism","capitalist","capitalists","capitalize","capitals","capitol","capo","capote","capper","capping","cappuccino","caprice","caps","capsize","capsized","capsule","capsules","captain","captains","captioning","captivated","captivating","captive","captives","captivity","capture","captured","capturing","car","caramba","caramel","carat","carats","carb","carbo","carbohydrates","carbon","carbs","carbuncle","carburetor","carcass","carcinogens","card","cardboard","cardiac","cardigan","cardinal","cardinals","cardiogram","cardiologist","cardiology","cardiovascular","cards","care","cared","career","careers","carefree","careful","carefully","caregiver","careless","carelessness","cares","caress","caretaker","cargo","caribou","caring","caritas","carjacking","carl","carlin","carmen","carmine","carney","carnie","carnival","carnivore","carnivorous","carol","carolers","caroling","carolling","carotid","carousel","carp","carpenter","carpentry","carpet","carpeting","carpool","carr","carriage","carriages","carried","carrier","carriers","carries","carrot","carrots","carry","carrying","cars","cart","carted","cartel","cartels","carter","cartilage","carting","cartographers","carton","cartons","cartoon","cartoonist","cartoons","cartouche","cartridge","carts","carve","carved","carvel","carver","carvers","carving","carvings","carwash","casa","casbah","cascade","case","cased","caseload","cases","cash","cashed","cashews","cashier","cashing","cashmere","casing","casings","casino","casinos","casitas","casket","caskets","casserole","cassette","cassettes","cast","caste","casting","castle","castles","castor","castrated","casts","casual","casually","casualties","casualty","cat","cataclysmic","catalog","cataloging","catalogue","catalyst","catapult","cataracts","catastrophe","catastrophic","catatonic","catch","catcher","catchers","catches","catching","catchy","categorically","categories","categorized","category","cater","caterer","caterers","catering","caterpillar","caterpillars","caters","caterwauling","cates","catfight","catharsis","cathartic","cathedral","catheter","catholic","cats","catsup","cattle","catty","catwalk","caucus","caught","cauldron","cauliflower","cause","caused","causes","causing","caution","cautionary","cautious","cautiously","cavalcade","cavalier","cavalry","cave","caved","caveman","cavern","caverns","caves","caviar","cavities","cavity","cayman","caymans","cease","ceased","cedar","cedars","cee","ceiling","celebrate","celebrated","celebrates","celebrating","celebration","celebrities","celebrity","celery","celeste","celibacy","celibate","cell","cellar","cellars","celled","cellist","cellmate","cellmates","cello","cells","cellular","cellulite","cement","cemeteries","cemetery","censor","censorship","censure","censured","census","cent","centennial","center","centered","centerfold","centerpiece","centerpieces","centers","centimeter","centimeters","central","centre","centred","cents","centuries","century","ceramic","cereal","cerebellum","cerebral","cerebrum","ceremonial","ceremonies","ceremony","certain","certainly","certainties","certainty","certifiable","certifiably","certificate","certificates","certification","certified","certify","cerulean","cervical","cessation","cesspool","chad","chaff","chafing","chagrined","chain","chained","chains","chainsaw","chainsaws","chair","chairman","chairs","chalet","chalk","chalkboard","chalked","challenge","challenged","challenger","challenges","challenging","chamber","chamberlain","chambers","chameleon","chamomile","champ","champagne","champion","champions","championship","championships","champs","chance","chancellor","chances","chandelier","chandeliers","chandler","chang","change","changed","changes","changing","channel","channeled","channels","chant","chanteuse","chanting","chants","chaos","chaotic","chap","chapel","chaperon","chaperone","chaperoned","chaperones","chaperoning","chaplain","chapman","chapped","chaps","chapter","chapters","character","characteristics","characterize","characterized","characterizing","characters","charade","charades","charcoal","chardonnay","charge","charged","charger","charges","charging","chariot","chariots","charismatic","charitable","charities","charity","charlatan","charley","charlie","charlies","charlotte","charm","charmed","charmer","charming","charmingly","charms","charred","chart","charted","charter","chartered","chartreuse","charts","chase","chased","chaser","chases","chasing","chasm","chassis","chastity","chat","chateau","chatted","chatter","chatterbox","chatting","chatty","chauffeur","chauvinistic","cheap","cheapen","cheaper","cheapest","cheat","cheated","cheater","cheaters","cheating","cheats","check","checkbook","checked","checker","checkered","checkers","checking","checkmate","checkout","checkpoints","checks","checkup","checkups","cheddar","cheek","cheekbones","cheeks","cheep","cheer","cheered","cheerful","cheering","cheerio","cheerleader","cheerleaders","cheerleading","cheers","cheery","cheese","cheeseburger","cheeseburgers","cheesecake","cheesed","cheeses","cheesy","cheetah","chef","chefs","chemical","chemically","chemicals","chemist","chemistry","chemo","chenille","cheque","cherish","cherished","cherries","cherry","cherub","chess","chessboard","chest","chestnut","chestnuts","chests","chesty","chevalier","chevron","chevy","chew","chewed","chewing","chewy","chez","chi","chic","chicano","chick","chickadee","chicken","chickened","chickening","chickenpox","chickens","chickenshit","chicks","chico","chief","chiefs","chiffon","chigger","chihuahua","child","childbirth","childhood","childhoods","childish","childlike","children","chile","chiles","chili","chill","chilled","chilling","chills","chilly","chime","chimera","chimney","chimp","chimpanzee","chimps","chin","china","chink","chinks","chino","chins","chip","chipmunk","chipped","chipper","chipping","chips","chiropractor","chirp","chirping","chirpy","chisel","chiseling","chit","chitchat","chivalrous","chlamydia","chloride","chlorine","chloroformed","chocolate","chocolates","chocolatey","choice","choices","choir","choirboy","choirs","choke","choked","choker","chokes","choking","cholera","cholesterol","cholinesterase","chomp","chompers","chomping","choose","choosers","chooses","choosing","choosy","chop","chopped","chopper","choppers","chopping","choppy","chops","chopsticks","chord","chords","chore","choreography","chores","chorus","chose","chosen","chow","chowder","christen","christened","christening","christie","christy","chrome","chromic","chromosomes","chronic","chronically","chronicle","chronology","chubby","chuck","chucked","chuckle","chuckles","chucks","chug","chugging","chum","chummy","chump","chumps","chums","chunk","chunks","chunky","church","churches","churn","chute","chutes","ciao","cicely","cider","cigar","cigarette","cigarettes","cigars","cinder","cinema","cinematic","cinnabar","cinnamon","cipher","circle","circled","circles","circling","circuit","circuited","circuitry","circuits","circular","circulate","circulated","circulation","circulatory","circumcision","circumference","circumstance","circumstances","circumstantial","circumvent","circus","cirrhosis","cissy","citation","citations","cite","cited","cities","citing","citizen","citizens","citizenship","citrus","city","citywide","civic","civics","civil","civilian","civilians","civilisation","civility","civilization","civilizations","civilized","civvies","clack","clad","claim","claimed","claiming","claims","clairvoyant","clam","clambake","clammed","clammy","clamoring","clamp","clamped","clamping","clams","clan","clandestine","clang","clanging","clanking","clap","clapped","clapper","clapping","clarence","clarification","clarify","clarifying","clarinet","clarity","clash","clashing","clasp","class","classes","classic","classical","classics","classier","classification","classified","classify","classless","classmate","classmates","classroom","classrooms","classy","clause","clauses","claustrophobia","claustrophobic","clavicle","claw","clawed","claws","clay","claymore","claymores","clean","cleaned","cleaner","cleaners","cleanest","cleaning","cleanliness","cleans","cleanse","cleansed","cleanser","cleanses","cleansing","cleanup","clear","clearance","clearances","cleared","clearer","clearing","clearly","clears","cleats","cleavage","cleave","clef","clemency","clement","clench","clergy","clergyman","clerical","clerk","clerks","clever","cleverly","cleverness","cliche","click","clicked","clicker","clicking","clicks","client","clientele","clients","cliff","cliffhanger","cliffs","climate","climax","climb","climbed","climbers","climbing","clinched","clincher","clinches","cling","clinging","clings","clingy","clinic","clinical","clinically","clinics","clink","clip","clipboard","clipped","clipper","clippers","clipping","clippings","clips","clique","clitoris","cloak","clobbered","clock","clocked","clocking","clocks","clockwise","clockwork","clod","clods","clogged","clogging","clogs","cloistered","clone","cloned","clones","clop","close","closed","closely","closeness","closer","closes","closest","closet","closeted","closets","closing","closure","clot","cloth","clothe","clothed","clothes","clothesline","clothing","cloths","clots","clotted","clotting","cloud","clouded","clouds","cloudy","clout","cloven","clover","cloverleaf","cloves","clown","clowning","clowns","club","clubbed","clubhouse","clubs","cluck","clucking","clue","clueless","clues","clump","clumps","clumsily","clumsiness","clumsy","clung","clunk","clunker","clunkers","clusters","clutch","clutched","clutches","clutter","cluttering","coach","coached","coaches","coaching","coal","coalition","coals","coarse","coast","coastal","coaster","coasters","coasting","coat","coating","coats","coattails","coax","coaxing","cob","cobb","cobbler","cobra","cobras","cobweb","cobwebs","coca","cocaine","cock","cockamamie","cocked","cockles","cockney","cockpit","cockroach","cockroaches","cocksucker","cocksuckers","cocktail","cocktails","cocky","coco","cocoa","coconut","coconuts","cocoon","cod","coddle","coddling","code","coded","codependent","codes","codicil","coding","coed","coeds","coerce","coerced","coercion","coexist","coffee","coffeehouse","coffees","coffers","coffin","coffins","cog","cognac","cognizant","coherent","cohesion","cohesive","coiffure","coil","coiled","coin","coincide","coincidence","coincidences","coincidental","coincidentally","coins","coitus","coke","cokes","col","cola","colchicine","cold","colder","coldest","coldly","coldness","colds","cole","coles","coleslaw","colic","colin","coliseum","colitis","collaborate","collaborated","collaborating","collaboration","collaborator","collage","collagen","collapse","collapsed","collapses","collapsing","collar","collarbone","collars","collateral","colleague","colleagues","collect","collected","collecting","collection","collections","collective","collectively","collector","collectors","collects","colleen","college","colleges","collide","collided","collie","collier","collins","collision","cologne","colon","colonel","colonels","colonial","colonials","colonies","colonists","colonization","colonized","colonnade","colony","color","colorado","colored","colorful","coloring","colors","colossal","colosseum","colour","coloured","colours","column","columnist","columnists","columns","coma","comas","comatose","comb","combat","combative","combination","combine","combined","combines","combing","combo","combust","combusted","combustible","combustion","come","comeback","comebacks","comedian","comedians","comedic","comedies","comedy","comer","comers","comes","comet","comeuppance","comfort","comfortable","comfortably","comforted","comforter","comforting","comforts","comfy","comic","comical","comics","coming","comma","command","commandant","commander","commanders","commanding","commandment","commandments","commando","commandos","commands","commemorating","commence","commencing","commendable","commendation","commensurate","comment","commentaries","commentary","commentator","commented","commenting","comments","commerce","commercial","commercialism","commercially","commercials","commie","commies","commiserate","commissary","commission","commissioned","commissioner","commissioners","commit","commitment","commitments","commits","committed","committee","committees","committing","commode","commodities","commodity","common","commoner","commonly","commonplace","commonwealth","commotion","communal","commune","communicate","communicated","communicating","communication","communications","communicator","communing","communion","communique","communism","communist","communists","communities","community","commute","commuted","comp","compact","compactor","compadre","companies","companion","companions","companionship","company","comparable","comparative","comparatively","compare","compared","compares","comparing","comparison","compartment","compartments","compass","compassion","compassionate","compatibility","compatible","compel","compelled","compelling","compels","compensate","compensated","compensation","compete","competence","competent","competing","competition","competitions","competitive","competitiveness","competitor","competitors","compilation","compiling","complacency","complacent","complain","complained","complaining","complains","complaint","complaints","complete","completed","completely","completes","completing","completion","complex","complexion","complexities","complexity","compliant","complicate","complicated","complicates","complicating","complication","complications","compliment","complimentary","compliments","comply","component","components","composed","composer","composers","composite","composition","compost","composure","compound","compounds","comprehend","comprehending","comprehension","comprehensive","compressed","compression","compressions","compressor","comprise","comprised","compromise","compromised","compromises","compromising","compulsion","compulsive","compulsively","compulsory","compute","computer","computerized","computers","comrade","comrades","con","conceal","concealed","concealer","concealing","concealment","concede","conceding","conceited","conceivable","conceivably","conceive","conceived","conceiving","concentrate","concentrated","concentrating","concentration","concentric","concept","conception","concepts","concern","concerned","concerning","concerns","concert","concerts","concession","concessions","concierge","concise","conclave","conclude","concluded","concludes","concluding","conclusion","conclusions","conclusive","conclusively","concocted","concocting","concoction","concord","concourse","concrete","concur","concurrently","concussion","concussions","condemn","condemnation","condemned","condemning","condensation","condensed","condescending","condiment","condition","conditioned","conditioner","conditioners","conditioning","conditions","condo","condolences","condom","condominium","condoms","condone","condoned","condoning","condor","condos","conducive","conduct","conducted","conducting","conductor","conducts","cone","cones","coney","confederacy","confederate","confederates","confederation","confer","conference","conferences","conferred","conferring","confess","confessed","confessing","confession","confessional","confessions","confessor","confetti","confidant","confidante","confide","confided","confidence","confidences","confident","confidential","confidentiality","confidentially","confides","confiding","configuration","confine","confined","confinement","confining","confirm","confirmation","confirmed","confirming","confirms","confiscated","confiscating","confit","conflict","conflicted","conflicting","conflicts","confluence","conform","conformity","confound","confront","confrontation","confrontations","confronted","confronting","confronts","confuse","confused","confusing","confusion","congenial","congeniality","congestion","congrats","congratulate","congratulated","congratulating","congratulations","congregation","congress","congressional","congressman","congresswoman","conjecture","conjugal","conjugate","conjunction","conjure","conjured","conjures","conjuring","conk","conked","conn","connect","connected","connecting","connection","connections","connects","conned","conner","conning","conniption","conniving","connoisseur","conquer","conquered","conquering","conquers","conquest","cons","conscience","conscientious","conscious","consciously","consciousness","consecrated","consecutive","consensual","consensus","consent","consented","consenting","consequence","consequences","consequently","conservation","conservative","conservatory","conserve","consider","considerable","considerably","considerate","consideration","considered","considering","considers","consigliere","consisted","consistent","consistently","consists","consolation","console","consoled","consolidate","consolidated","consoling","consort","consorting","consortium","conspicuous","conspiracies","conspiracy","conspirator","conspirators","conspire","conspired","conspiring","constable","constant","constantly","constellation","constipation","constituents","constitute","constitutes","constitution","constitutional","constitutionally","constraints","constrictor","construct","constructed","construction","constructive","construed","consul","consulate","consult","consultant","consultation","consultations","consulted","consulting","consults","consume","consumed","consumer","consumers","consumes","consuming","consummate","consummated","consumption","contact","contacted","contacting","contacts","contagious","contain","contained","container","containers","containing","containment","contains","contaminate","contaminated","contaminating","contamination","contemplate","contemplated","contemplating","contemporary","contempt","contender","contenders","content","contented","contention","contentment","contents","contest","contestant","contestants","contesting","context","continent","continental","continents","contingencies","contingency","continually","continuance","continuation","continue","continued","continues","continuing","continuity","continuous","continuously","continuum","contortionist","contours","contra","contraband","contraceptives","contract","contracted","contraction","contractions","contractor","contracts","contradict","contradicted","contradicting","contradiction","contradictory","contraption","contrary","contrast","contribute","contributed","contributes","contributing","contribution","contributions","contributor","contributors","contrite","contrived","control","controlled","controller","controlling","controls","controversial","controversy","contusion","contusions","convene","convened","convenes","convenience","convenient","conveniently","convent","convention","conventional","converge","converging","conversation","conversational","conversationalist","conversations","converse","conversion","convert","converted","convertible","convertibles","converting","convey","conveyor","convict","convicted","conviction","convictions","convince","convinced","convinces","convincing","convoy","convulsing","coo","cooing","cook","cookbook","cookbooks","cooked","cooker","cookie","cookies","cooking","cooks","cool","coolant","cooled","cooler","coolers","coolest","cooling","coolly","coolness","cools","coon","coop","cooped","cooper","cooperate","cooperated","cooperating","cooperation","cooperative","coopers","coordinate","coordinated","coordinates","coordinating","coordinator","coot","cooties","cop","copacetic","cope","copied","copier","copies","copilot","coping","copiously","copper","copperhead","coppers","copping","cops","copter","copy","copycat","copying","copyright","cor","coral","cord","cordial","cordless","cordon","cordoned","cords","corduroy","core","coriander","cork","corker","corks","corkscrew","corky","corn","cornball","corned","corner","cornered","cornering","corners","cornerstone","cornfield","cornflakes","cornucopia","corny","corollary","corona","coronary","coronation","coroner","coroners","corporal","corporate","corporation","corporations","corporeal","corps","corpse","corpses","corral","correct","corrected","correcting","correction","correctional","corrections","corrective","correctly","correlation","correspond","corresponded","correspondence","correspondent","correspondents","corresponding","corresponds","corridor","corroborate","corroboration","corrupt","corrupted","corrupting","corruption","corsage","corset","cortex","cory","cos","cosign","cosmetic","cosmetics","cosmic","cosmically","cosmology","cosmopolitan","cosmos","cost","costa","costing","costly","costs","costume","costumes","cosy","cot","cotillion","cots","cottage","cottages","cotton","couch","cougar","cougars","cough","coughing","coughs","could","council","councillor","councilors","counsel","counseling","counselling","counsellor","counselor","counselors","count","countdown","counted","countenance","counter","counterattack","counterfeit","counterfeiting","countermeasures","counteroffer","counterpart","counterproductive","countess","counties","counting","countless","countries","country","countrymen","countryside","counts","county","coup","coupe","couple","couples","coupling","coupon","coupons","courage","courageous","courier","couriers","course","courses","coursing","court","courted","courteous","courtesy","courthouse","courting","courtroom","courtrooms","courts","courtship","courtside","courtyard","cousin","cousins","couture","cove","coven","covenant","cover","coverage","coveralls","covered","covering","covers","covert","coverup","covet","coveted","coveting","cow","coward","cowardice","cowardly","cowards","cowboy","cowboys","cowed","cower","cowering","cowgirl","coworker","cows","cox","coy","coyote","coyotes","coz","cozier","cozy","cozying","crab","crabby","crabgrass","crabs","crack","cracked","cracker","crackerjack","crackers","cracking","crackling","crackpot","cracks","cradle","craft","crafted","crafting","crafts","craftsmanship","craftsmen","crafty","cram","crammed","cramming","cramp","cramped","cramping","cramps","cranberry","crane","cranes","cranial","cranium","crank","cranking","cranks","cranky","cranny","crap","crapped","crapper","crapping","crappy","craps","crash","crashed","crasher","crashers","crashes","crashing","crass","crate","crated","crater","crates","crave","craves","craving","crawl","crawled","crawlers","crawling","crawls","crawly","crayons","craze","crazed","crazier","craziest","craziness","crazy","creak","creaky","cream","creamed","creamer","creaming","creamy","crease","creased","creases","create","created","creates","creating","creation","creations","creative","creatively","creativity","creator","creature","creatures","credence","credentials","credenza","credibility","credible","credit","credited","credits","credo","creed","creeds","creek","creep","creepers","creeping","creeps","creepy","cremated","cremation","crematorium","creme","crepe","crepes","crept","crescent","crest","crested","cretins","crevasse","crew","crewman","crews","crib","cribbage","cribs","crick","cricket","cried","crier","cries","crikey","crime","crimes","criminal","criminalistics","criminally","criminals","criminology","crimp","crimson","cringe","cripes","cripple","crippled","cripples","cris","crises","crisis","crisp","crisps","crispy","criteria","criterion","critic","critical","critically","criticism","criticize","criticized","criticizing","critics","critter","critters","croak","croaker","croc","crock","crocket","crocodile","crocodiles","croft","croissants","cronies","crook","crooked","crooks","croon","crop","cropped","crops","croquet","cross","crossbow","crossed","crosses","crossfire","crosshairs","crossing","crossroads","crossword","crotch","crouch","crouched","crouching","croupier","croutons","crow","crowbar","crowd","crowded","crowding","crowds","crowed","crowing","crown","crowned","crowning","crowns","crows","crucial","crucible","crucified","crucifix","crucifixion","crucify","crud","cruddy","crude","crudely","cruel","cruelly","cruelty","cruise","cruised","cruiser","cruisers","cruises","cruising","crumb","crumble","crumbled","crumbles","crumbling","crumbs","crummy","crumpets","crumpled","crunch","crunched","crunches","crunchy","crusade","crusader","crusades","crush","crushed","crusher","crushes","crushing","crust","crusts","crusty","crutch","crutches","crux","cry","crying","cryogenic","crypt","cryptic","crypto","crypts","crystal","crystals","cub","cubbies","cubby","cube","cubed","cubes","cubic","cubicle","cubs","cuckoo","cucumber","cud","cuddle","cuddled","cuddles","cuddly","cuddy","cue","cued","cuff","cuffed","cuffing","cuffs","cuisine","culinary","culminating","culmination","culottes","culpa","culpability","culpable","cult","cultivate","cultivated","cultivating","cultural","culturally","culture","cultured","cultures","cum","cumin","cummerbund","cumulative","cuneiform","cunning","cunt","cunts","cup","cupboard","cupboards","cupcake","cupcakes","cupid","cuppa","cups","cur","curacao","curate","curator","curb","curd","curdle","cure","cured","cures","curfew","curfews","curie","curing","curiosity","curious","curiously","curl","curled","curlers","curling","curly","curmudgeon","curran","currency","current","currently","currents","curriculum","curry","curse","cursed","curses","cursing","cursive","cursory","curt","curtain","curtains","curtsy","curvaceous","curve","curveball","curves","cushion","cushions","cushy","cusp","cuss","cussing","custard","custodial","custodian","custody","custom","customarily","customary","customer","customers","customs","cut","cutaway","cutbacks","cute","cuteness","cuter","cutest","cutesy","cuticle","cuticles","cutie","cutlass","cutler","cutlery","cutoff","cutoffs","cutout","cuts","cutter","cutters","cutthroat","cutting","cyanide","cybernetic","cyberspace","cyborg","cycle","cycles","cyclone","cyclops","cyclotron","cylinder","cylinders","cymbal","cynic","cynical","cynicism","cynics","cypher","cypress","cyprus","cyst","cystic","dab","dabble","dabbled","dabbling","dad","daddies","daddy","dads","daffodils","daffy","daft","dag","dagger","dago","dah","dahl","dahlia","dailies","daily","dainty","daiquiri","dairy","dais","daisies","daisy","dale","dalliance","dally","dallying","dalton","dam","damage","damaged","damages","damaging","dame","damn","damnable","damned","damnedest","damning","damp","dampened","dampener","damper","damsel","damsels","dance","danced","dancer","dancers","dances","dancing","dandelion","dandelions","dandruff","dandy","dang","danger","dangerous","dangerously","dangers","dangle","dangled","dangling","danish","daphne","dapper","dare","dared","daredevil","dares","daring","dark","darken","darkened","darker","darkest","darkness","darkroom","darks","darling","darlings","darn","darndest","darned","dart","darts","dash","dashboard","dashed","dasher","dashing","data","database","databases","date","dated","dateless","dateline","dater","dates","dating","dato","daughter","daughters","daunting","dauphin","davenport","davy","dawdling","dawn","dawned","dawning","day","daybreak","daydream","daydreaming","daylight","daylights","days","daytime","daze","dazzle","dazzled","dazzling","de","deacon","dead","deadbeat","deadbeats","deader","deadlier","deadliest","deadline","deadlines","deadlock","deadly","deaf","deafening","deal","dealer","dealers","dealership","dealing","dealings","deals","dealt","dean","dear","dearest","dearie","dearly","dears","death","deathbed","deathly","deaths","deb","debacle","debatable","debate","debated","debates","debating","debilitating","debit","debonair","debrief","debriefed","debriefing","debris","debt","debts","debut","debutante","debutantes","decade","decadence","decadent","decades","decaf","decanter","decapitate","decapitated","decapitation","decay","decaying","deceased","deceit","deceitful","deceive","deceived","deceiving","decency","decent","deception","deceptions","deceptive","deceptively","decibel","decibels","decide","decided","decides","deciding","decipher","deciphering","decision","decisions","decisive","deck","decked","decker","decks","declaration","declare","declared","declaring","decline","declined","declining","deco","decoded","decoder","decompose","decomposed","decomposing","decompress","deconstruction","decontamination","decor","decorate","decorated","decorating","decoration","decorations","decorative","decorator","decorators","decorum","decoupage","decoy","decoys","decreased","decree","decrypted","decryption","dedicate","dedicated","dedicating","dedication","deduce","deduct","deducted","deductible","deduction","deductions","dee","deed","deeded","deeds","deejay","deem","deemed","deep","deeper","deepest","deeply","deer","deets","defaced","defacing","default","defeat","defeated","defeats","defect","defected","defective","defector","defects","defence","defend","defendant","defendants","defended","defender","defending","defense","defenseless","defenses","defensive","deferred","defiance","defiant","defiantly","defibrillator","deficiencies","deficiency","deficient","deficit","defied","defies","define","defined","defining","definite","definitely","definition","definitions","definitive","definitively","deflate","deflated","deflecting","deflection","deflower","deformity","defraud","defrost","deft","deftly","defuse","defused","defy","defying","degenerate","degeneration","degenerative","degradation","degrade","degraded","degrading","degree","degrees","dehydrated","dehydration","deigned","deities","deity","deke","del","delay","delayed","delaying","delays","delectable","delegate","delegates","delegation","delete","deleted","deli","deliberate","deliberately","deliberation","deliberations","delicacy","delicate","delicately","delicates","delicious","delight","delighted","delightful","delightfully","delights","delinquency","delinquent","delirious","delirium","deliver","delivered","deliveries","delivering","delivers","delivery","dell","delly","delta","deltas","delude","deluded","deluding","deluge","delusion","delusional","delusions","deluxe","delve","delving","demand","demanded","demanding","demands","demean","demeaning","demented","dementia","demerits","demise","demo","democracy","democrat","democratic","democrats","demographic","demographics","demolish","demolition","demolitions","demon","demonic","demonology","demons","demonstrate","demonstrated","demonstrates","demonstration","demonstrations","demonstrators","demoted","demur","demure","den","denial","denied","denies","denning","denominational","denominations","denominators","denounce","denouncing","dense","density","dent","dental","dentist","dentists","dents","dentures","deny","denying","deodorant","depart","departed","departing","department","departmental","departments","departure","depend","dependable","dependant","depended","dependency","dependent","depending","depends","depict","depicted","depicting","depiction","depicts","deplete","deplorable","deplore","deploy","deployed","deport","deported","depose","deposed","deposing","deposit","deposited","deposition","depositions","depository","deposits","depot","depraved","deprecating","depress","depressed","depressing","depression","depressor","depressors","deprivation","deprive","deprived","depriving","depth","depths","deputies","deputized","deputy","derail","derailing","deranged","derby","derelict","derision","derivative","derive","derives","dermatologist","derogatory","derrick","derriere","derris","descend","descendants","descending","descends","descent","describe","described","describes","describing","description","descriptive","desecrate","desecrated","desecration","desert","deserted","deserter","deserting","deserts","deserve","deserved","deserves","deserving","design","designate","designated","designation","designed","designer","designers","designing","designs","desirable","desire","desired","desires","desist","desk","desks","desktop","desolate","despair","desperado","desperate","desperately","desperation","despicable","despise","despised","despises","despising","despite","despondent","dessert","desserts","destabilize","destination","destinations","destined","destiny","destitute","destroy","destroyed","destroyer","destroyers","destroying","destroys","destruct","destructing","destruction","destructive","destructs","detach","detached","detachment","detail","detailed","detailing","details","detain","detained","detaining","detect","detected","detecting","detection","detective","detectives","detector","detectors","detente","detention","detergent","deteriorated","deterioration","determination","determine","determined","determines","determining","deterrent","detest","detestable","detests","detonate","detonated","detonates","detonating","detonation","detonator","detonators","detour","detours","detoxing","detract","detrimental","deuce","deuces","devastate","devastated","devastating","devastatingly","devastation","develop","developed","developer","developing","development","developments","develops","deviants","deviated","deviation","device","devices","devil","deviled","devilishly","devils","devious","devise","devised","devon","devote","devoted","devoting","devotion","devour","devoured","devouring","devours","dew","dewars","dewy","dex","dey","diabetes","diabetic","diabetics","diabolical","diagnose","diagnosed","diagnoses","diagnosis","diagnostic","diagnostician","diagonal","diagram","dial","dialect","dialed","dialing","dialogue","dials","dialysis","diameter","diamond","diamonds","diaper","diapers","diaphragm","diaphragms","diaries","diarrhea","diary","diathesis","diatribes","diazepam","dibs","dice","diced","dicey","dick","dickens","dickie","dicking","dicks","dicky","dictate","dictated","dictates","dictating","dictation","dictator","dictators","dictatorship","dictatorships","dictionary","did","diddling","diddly","die","died","dies","diesel","diet","dieter","dieting","diets","differ","difference","differences","different","differential","differently","differs","difficult","difficulties","difficulty","diffuse","diffusion","dig","digest","digested","digesting","digestion","digestive","digger","diggers","digging","digit","digital","digitally","digits","dignified","dignify","dignitaries","dignity","digress","digs","dike","dilated","dilation","dildo","dilemma","dilettante","diligence","diligent","diligently","dill","dills","dilly","dilute","diluted","dim","dime","dimension","dimensional","dimensions","dimes","diminish","diminished","diminutive","dimly","dimmer","dimming","dimple","dimpled","dimwit","dine","dined","diner","dinero","diners","ding","dinged","dingle","dingo","dings","dingy","dining","dink","dinks","dinky","dinner","dinners","dinnertime","dinning","dinosaur","dinosaurs","dioxide","dip","diphtheria","diploma","diplomas","diplomatic","dipped","dipping","dips","dipstick","dire","direct","directed","directing","direction","directions","directive","directly","director","directorate","directors","directory","dirk","dirt","dirtiest","dirty","dis","disabilities","disability","disable","disabled","disabling","disadvantage","disagree","disagreed","disagreeing","disagreement","disagreements","disagrees","disallowed","disappear","disappearance","disappearances","disappeared","disappearing","disappears","disappoint","disappointed","disappointing","disappointment","disappointments","disappoints","disapproval","disapprove","disapproved","disapproves","disapproving","disarm","disarmed","disarming","disarray","disassembled","disaster","disasters","disastrous","disbarred","disbelief","disc","discarded","discerning","discharge","discharged","disciples","disciplinary","discipline","disciplined","disciplines","disciplining","disclose","disclosed","disclosure","disco","discoloration","discolored","discomfort","disconnect","disconnected","discontent","discontinue","discontinued","discord","discotheque","discount","discounting","discounts","discourage","discouraged","discourse","discourteous","discover","discovered","discoveries","discovering","discovers","discovery","discredit","discreet","discreetly","discrepancies","discrepancy","discrete","discretion","discriminate","discriminated","discriminating","discrimination","discs","discus","discuss","discussed","discusses","discussing","discussion","discussions","disdain","disease","diseased","diseases","disfigured","disfiguring","disgrace","disgraced","disgruntled","disguise","disguised","disguises","disgust","disgusted","disgusting","disgustingly","dish","disheartening","dishes","disheveled","dishonest","dishonor","dishonorable","dishwasher","disillusioned","disillusionment","disinfect","disinfectant","disinformation","disingenuous","disinherit","disinherited","disintegrate","disintegrated","disk","disks","dislike","dislocated","dislodge","dislodged","disloyal","dismal","dismantle","dismantled","dismantling","dismay","dismember","dismemberment","dismiss","dismissal","dismissed","dismissing","dismissive","dismount","disobedience","disobey","disobeyed","disobeying","disorder","disorders","disorganized","disorientation","disoriented","disorienting","disown","disowned","disparaging","disparity","dispatch","dispatched","dispatcher","dispatches","dispensary","dispensation","dispense","dispensed","dispenser","dispensers","dispensing","disperse","displace","displaced","displacement","display","displayed","displaying","displays","displeased","displeasure","disposable","disposal","dispose","disposing","disposition","disproportionate","disprove","dispute","disputes","disputing","disqualified","disqualify","disregard","disregarded","disrespect","disrespected","disrespectful","disrespecting","disrupt","disrupted","disrupting","disruptions","disruptive","disrupts","dissatisfied","dissect","dissected","dissection","dissed","dissent","dissertation","disservice","dissident","dissing","dissipate","dissipated","dissolve","dissolved","dissolves","dissolving","dissuade","distance","distances","distancing","distant","distaste","distasteful","distended","distillery","distinct","distinction","distinctions","distinctive","distinctly","distinguish","distinguished","distinguishing","distort","distorted","distortion","distortions","distract","distracted","distracting","distraction","distractions","distraught","distress","distressed","distressing","distribute","distributed","distributing","distribution","distributor","distributors","district","districts","distrust","distrustful","disturb","disturbance","disturbances","disturbed","disturbing","dit","ditch","ditched","ditches","ditching","ditsy","ditto","ditty","ditz","diuretic","diuretics","diva","divas","dive","diver","divers","diversion","diversionary","diversions","divert","diverted","diverting","dives","divest","divide","divided","dividends","divine","diving","divining","divinity","division","divisional","divisions","divorce","divorced","divorcee","divorces","divorcing","divulged","divvy","dizziness","dizzy","dizzying","do","dobbin","dobbins","dobson","doc","dock","docked","docking","docks","docs","doctor","doctored","doctors","doctrine","document","documentaries","documentary","documented","documents","dodge","dodgeball","dodged","dodger","dodgers","dodging","dodgy","doe","doer","does","dog","dogged","doggie","doggies","doggone","doggy","doghouse","dogs","dogwood","doily","doing","dojo","dol","dolce","dole","doling","doll","dollar","dollars","dolled","dollhouse","dollop","dolls","dolly","dolphin","dolphins","dolt","dom","domain","dome","domes","domestic","domesticated","domesticity","domicile","dominance","dominant","dominate","dominates","dominating","domination","dominick","dominion","dominoes","don","donate","donated","donating","donation","donations","done","dong","dongs","donkey","donkeys","donna","donor","donors","donut","donuts","doodle","doodles","doofus","doohickey","doom","doomed","doomsday","door","doorbell","doorknob","doorknobs","doorman","doormat","doornail","doors","doorstep","doorway","doozy","dopamine","dope","dopes","dopey","doping","doppelganger","dorado","dork","dorky","dorm","dormant","dormitory","dorms","dorsal","dory","dos","dosage","dosages","dose","dosed","doses","dossier","dost","dot","dote","dotes","doth","dots","dotted","dotty","double","doubled","doubles","doubly","doubt","doubted","doubtful","doubting","doubts","douche","dough","doughnut","doughnuts","dour","doused","dove","doves","dowager","dowdy","down","downed","downer","downfall","downgraded","downhill","downing","download","downloaded","downpour","downright","downriver","downs","downside","downsize","downsizing","downstairs","downstream","downtown","downtrodden","downward","downy","dowser","doze","dozed","dozen","dozens","dozer","dozing","drab","draft","drafted","drafting","drafts","drafty","drag","dragged","dragging","dragon","dragonfly","dragons","dragoons","drags","drain","drainage","drained","draining","drainpipe","drake","drama","dramas","dramatic","dramatically","drank","drape","draped","drapes","drastic","drastically","draw","drawback","drawer","drawers","drawing","drawings","drawn","draws","drawstring","dread","dreaded","dreadful","dreading","dream","dreamed","dreamer","dreamers","dreaming","dreamless","dreams","dreamt","dreamy","dreary","dreck","dredge","dredged","dredging","dregs","dreidel","dress","dressed","dresser","dresses","dressing","dressings","dressy","drew","dribble","dribbles","dribbling","dried","drier","dries","drift","drifted","drifter","drifting","driftwood","drill","drilled","drilling","drink","drinker","drinkers","drinking","drinks","drip","dripped","dripping","drippy","drips","drive","drivel","driven","driver","drivers","drives","driveway","driveways","driving","droll","drone","drones","drool","drooled","drooling","drools","droop","droopy","drop","dropout","dropped","dropper","dropping","droppings","drops","drosophila","drought","drove","droves","drown","drowned","drowning","drowsy","drudge","drug","drugged","drugging","druggist","drugs","drugstore","drum","drummed","drummer","drumming","drums","drumstick","drumsticks","drunk","drunkard","drunken","drunks","druthers","dry","dryer","dryers","drying","drywall","dual","duality","dub","dubbed","dubious","duce","duchess","duck","ducked","ducking","duckling","ducks","ducky","duct","ducts","dud","dude","dudes","duds","due","duel","dueling","dues","duet","duff","duffel","duffle","dug","dugout","dui","duke","dukes","dulcet","dull","dullard","dulled","dullest","dullness","duly","dumb","dumber","dumbest","dumdum","dummies","dummkopf","dummy","dump","dumped","dumper","dumping","dumpling","dumplings","dumps","dun","dunes","dung","dungeon","dunk","dunked","dunking","dunks","duo","duped","duplex","duplicate","durable","duration","duress","during","durned","dusk","dusky","dust","dusted","dusting","dusty","dutch","duties","dutiful","duty","duvet","dwarf","dwarfs","dwarves","dweeb","dwell","dweller","dwellers","dwelling","dwells","dwindling","dye","dyed","dyeing","dyer","dying","dyke","dykes","dynamic","dynamics","dynamite","dynamo","dynasty","dysentery","dysfunction","dysfunctional","each","eager","eagerly","eagle","eagles","ear","earful","earl","earlier","earliest","earlobe","earlobes","early","earmarked","earmarks","earn","earned","earnest","earning","earns","earphones","earpiece","earplugs","earring","earrings","ears","earshot","earth","earthlings","earthly","earthquake","earthquakes","earthy","earwig","ease","easel","eases","easier","easiest","easily","easing","east","eastbound","easter","eastern","easy","easygoing","eat","eaten","eater","eaters","eating","eats","eaves","eavesdrop","eavesdropped","eavesdropping","ebb","ebony","eccentric","eccentricities","echelon","echo","echoes","eclectic","eclipse","ecological","economic","economical","economically","economics","economy","ecosystem","ecstasy","ecstatic","ectopic","ectoplasm","ecumenical","eczema","ed","eddy","edema","edge","edged","edges","edgewise","edging","edgy","edible","edict","edit","edited","editing","edition","editor","editorial","editorials","editors","edits","educate","educated","educating","education","educational","educator","educators","eel","eels","eerie","eerily","effacing","effect","effected","effecting","effective","effectively","effectiveness","effects","effeminate","efficiency","efficient","efficiently","effort","effortless","efforts","egg","egghead","egging","eggnog","eggplant","eggs","eggshell","eggshells","ego","egocentric","egomaniac","egomaniacal","egos","egotistical","egregious","egyptian","eh","eight","eighteen","eighteenth","eighth","eighties","eights","eighty","einstein","either","ejaculate","eject","ejection","eking","el","elaborate","elapsed","elastic","elated","elbow","elbows","elder","elderly","elders","eldest","elect","elected","electing","election","elections","elective","electoral","electorate","electric","electrical","electrician","electricians","electricity","electrified","electro","electrocute","electrocuted","electrodes","electrolyte","electrolytes","electronic","electronically","electronics","electrons","electroshock","elegance","elegant","element","elemental","elementary","elements","elephant","elephants","elevate","elevated","elevates","elevation","elevator","elevators","eleven","eleventh","elf","elicit","eligible","eliminate","eliminated","eliminates","eliminating","elimination","elite","elitist","elixir","elk","elks","ell","elliptical","elm","elms","elope","eloped","eloping","eloquence","eloquent","eloquently","else","elsewhere","elude","eluded","eludes","elusive","elves","em","emanates","emancipated","emancipation","embalmed","embalming","embankment","embark","embarked","embarking","embarrass","embarrassed","embarrasses","embarrassing","embarrassingly","embarrassment","embassies","embassy","embedded","embellished","ember","embezzle","embezzled","embezzlement","embezzler","embezzling","embittered","emblem","embodied","embody","embossed","embrace","embraced","embraces","embracing","embroidered","embroiled","embryo","emerald","emeralds","emerge","emerged","emergencies","emergency","emerges","emery","eminence","eminent","eminently","emission","emissions","emit","emotion","emotional","emotionally","emotions","empathic","empathy","emperor","emperors","emphasis","emphasize","emphasized","emphatic","emphatically","empire","empirical","employ","employed","employee","employees","employer","employers","employing","employment","emporium","empowered","empowerment","empress","emptied","empties","emptiness","empty","emptying","ems","emulating","en","enable","enabled","enables","enabling","enact","enacted","enamel","enamored","encephalitis","enchant","enchanted","enchanting","enchantment","encinas","enclosed","encoded","encore","encounter","encountered","encounters","encourage","encouraged","encouragement","encourages","encouraging","encrusted","encrypted","encryption","encyclopedia","encyclopedias","end","endanger","endangered","endangering","endangerment","endear","endearing","endeavor","endeavors","endeavour","ended","ending","endings","endive","endless","endlessly","endorphins","endorse","endorsement","endorsements","endorsing","endowment","ends","endurance","endure","endured","enduring","enema","enemies","enemy","energized","energy","enforce","enforced","enforcement","enforcer","enforcing","eng","engage","engaged","engagement","engagements","engages","engaging","engine","engineer","engineered","engineering","engineers","engines","english","engraved","engraving","engrossed","engrossing","engulfed","enhance","enhanced","enhancements","enhancer","enhances","enigma","enjoy","enjoyable","enjoyed","enjoying","enjoyment","enjoys","enlarged","enlighten","enlightened","enlightenment","enlist","enlisted","enlisting","ennui","enormity","enormous","enormously","enough","enquiries","enrage","enraged","enrich","enriched","enriching","enrolled","enrolling","enrollment","ensconced","ensemble","ensign","enslave","enslaved","ensue","ensued","ensuing","ensure","ensuring","entail","entails","entanglements","enter","entered","entering","enterprise","enterprises","enterprising","enters","entertain","entertained","entertainer","entertaining","entertainment","enthralled","enthused","enthusiasm","enthusiast","enthusiastic","entice","enticed","entire","entirely","entirety","entities","entitle","entitled","entitles","entity","entomologist","entomology","entourage","entrails","entrance","entrances","entrapment","entree","entrenched","entrepreneur","entrepreneurial","entries","entrust","entrusted","entry","entwined","envelope","envelopes","envied","envious","environment","environmental","environmentalist","envision","envisioned","envoy","envy","enzyme","ephemeral","epic","epidemic","epidural","epilepsy","epileptic","epinephrine","epiphany","episode","episodes","epizootics","epoxy","epsilon","equal","equality","equally","equals","equation","equator","equestrian","equilibrium","equinox","equipment","equipped","equitable","equity","equivalent","er","era","erase","erased","eraser","erasers","erases","erasing","ere","erect","erection","ergo","erica","erode","eroding","erogenous","eros","erosion","erotic","err","errand","errands","errant","erratic","erratically","erred","erroneous","error","errors","ers","erupt","eruption","es","escalated","escalating","escalator","escapade","escapades","escape","escaped","escapee","escapes","escaping","escargot","escort","escorted","escorts","esophagus","esoteric","especially","espionage","espresso","espressos","ess","essay","essays","essence","essential","essentially","establish","established","establishes","establishing","establishment","establishments","estate","esteem","esteemed","ester","estimate","estimated","estimates","estimating","estimation","estranged","estrogen","et","eta","etcetera","etched","eternal","eternally","eternity","eth","ethanol","ether","ethic","ethical","ethically","ethics","ethnic","ethnicity","ethyl","etiquette","eucalyptus","eugenia","eulogy","eunuch","euphemism","euphemisms","euphoric","euro","euros","euthanasia","evacuate","evacuated","evacuating","evacuation","evade","evaluate","evaluated","evaluating","evaluation","evaluations","evangelical","evaporate","evaporated","evasions","evasive","eve","even","evening","evenings","evenly","evens","event","eventful","events","eventual","eventuality","eventually","ever","everglades","everlasting","every","everybody","everyday","everyman","everyone","everything","everywhere","eves","evict","evicted","evidence","evidenced","evident","evidently","evil","evils","eviscerate","eviscerated","evocative","evoked","evolution","evolutionary","evolve","evolved","evolving","ewe","ex","exacerbate","exact","exacting","exactly","exaggerate","exaggerated","exaggerating","exaggeration","exalted","exam","examination","examine","examined","examiner","examining","example","examples","exams","exasperated","exasperating","exceed","exceeded","exceeding","exceedingly","exceeds","excel","excellence","excellency","excellent","excels","except","excepted","exception","exceptional","exceptionally","exceptions","excess","excesses","excessive","excessively","exchange","exchanged","exchanges","exchanging","excite","excited","excitement","excites","exciting","exclamation","excluded","excludes","excluding","exclusion","exclusive","exclusively","excommunicated","excruciating","exculpatory","excursion","excursions","excuse","excused","excuses","excusing","execs","execute","executed","executing","execution","executioner","executions","executive","executives","executor","exemplary","exempt","exemption","exemptions","exercise","exercises","exercising","exerting","exertion","exes","exfoliate","exhale","exhaust","exhausted","exhausting","exhaustion","exhaustive","exhausts","exhibit","exhibited","exhibiting","exhibition","exhibits","exhilarated","exhilarating","exhilaration","exhumation","exhume","exhumed","exigent","exile","exiled","exiles","exist","existed","existence","existent","existential","existentialist","existing","exists","exit","exited","exiting","exits","exodus","exonerate","exonerated","exorbitant","exorcise","exorcism","exorcist","exotic","expand","expanded","expanding","expands","expansion","expect","expectancy","expectation","expectations","expected","expecting","expects","expedient","expedite","expedited","expedition","expel","expelled","expelling","expendable","expenditure","expenditures","expense","expenses","expensive","experience","experienced","experiences","experiencing","experiment","experimental","experimentation","experimented","experimenting","experiments","expert","expertise","experts","expiration","expired","expires","explain","explained","explaining","explains","explanation","explanations","explanatory","explicit","explicitly","explode","exploded","explodes","exploding","exploit","exploitation","exploited","exploiting","exploration","exploratory","explore","explored","explorer","explorers","exploring","explosion","explosions","explosive","explosives","exponential","export","exporter","exporting","exports","expose","exposed","exposes","exposing","exposure","express","expressed","expresses","expressing","expression","expressions","expressive","expressly","expulsion","expunged","exquisite","exquisitely","extend","extended","extending","extension","extensions","extensive","extent","extenuating","exterior","exterminate","exterminated","exterminating","extermination","exterminator","external","extinct","extinction","extinguish","extinguished","extinguisher","extort","extorted","extorting","extortion","extortionist","extra","extract","extracted","extracting","extraction","extracts","extracurricular","extracurriculars","extradite","extradited","extradition","extramarital","extraordinaire","extraordinarily","extraordinary","extras","extraterrestrial","extraterrestrials","extravagant","extravaganza","extreme","extremely","extremes","extremism","extremists","extremities","extricate","eye","eyeball","eyeballs","eyebrow","eyebrows","eyed","eyeful","eyeing","eyelash","eyelashes","eyelids","eyeliner","eyes","eyesight","eyesore","eyewitness","eyewitnesses","eyre","fa","fable","fabled","fabric","fabricate","fabricated","fabrication","fabulous","fabulously","face","faced","facedown","faceless","faces","facet","facetious","facets","facial","facials","facilitate","facilitated","facilities","facility","facing","fact","factions","factoid","factor","factories","factoring","factors","factory","facts","factual","faculties","faculty","fad","fade","faded","fades","fading","fads","fag","faggot","faggots","faggy","fags","fail","failed","failing","failings","fails","failure","failures","faint","fainted","fainter","faintest","fainting","fair","fairer","fairest","fairgrounds","fairies","fairly","fairness","fairway","fairy","faith","faithful","faithfulness","faithless","fajita","fake","faked","faking","falafel","falcon","fall","fallacy","fallback","fallen","fallible","falling","fallout","fallow","falls","false","falsely","falsify","faltered","fame","famed","familial","familiar","familiarize","familiars","families","family","famine","famished","famous","famously","fan","fanatic","fanaticism","fanatics","fancied","fanciful","fancy","fanfare","fang","fangs","fanning","fanny","fans","fantabulous","fantasies","fantasize","fantasized","fantasizing","fantastic","fantastically","fantasy","fantasyland","far","faraway","farce","fare","fared","farewell","farewells","farina","farm","farmer","farmers","farmhouse","farmland","farms","farrow","fart","farted","farther","farthing","farts","fascinate","fascinated","fascinating","fascination","fascism","fascist","fashion","fashionably","fashioned","fashions","fast","fastball","fasten","fastened","faster","fastest","fasting","fat","fatal","fatalities","fatality","fate","fates","father","fathered","fatherhood","fathering","fatherly","fathers","fathom","fatigue","fatigues","fatso","fatten","fattening","fattest","fatty","faucet","faucets","fault","faults","faulty","faun","fauna","faux","fave","favor","favorable","favorably","favored","favorite","favorites","favoritism","favors","favour","favours","fawning","fax","faxed","faxes","fay","fear","feared","fearful","fearing","fearless","fears","fearsome","feasible","feast","feasting","feat","feather","feathering","feathers","feats","feature","featured","features","featuring","feces","feckless","fed","federal","federation","fedora","feds","fee","feeble","feed","feedback","feeder","feeders","feeding","feeds","feel","feelers","feeling","feelings","feels","fees","feet","feign","feisty","felicity","feline","fell","fella","fellah","fellahs","fellas","fellatio","feller","fellers","felling","fellow","fellows","fellowship","felon","felonies","felonious","felons","felony","felt","female","females","feminine","feminist","feminists","femme","femmes","femur","fen","fence","fences","fencing","fend","fender","fenders","fending","fer","ferment","fern","ferret","ferrets","ferry","fertile","fertility","fertilization","fertilize","fertilizer","fervent","fervor","fess","fester","festering","festival","festivals","festive","festivities","feta","fetal","fetch","fetched","fetish","fetus","fetuses","feud","feudal","feuds","fever","feverish","few","fewer","fey","fez","fiance","fiancee","fiasco","fib","fibber","fibbing","fiber","fiberglass","fibers","fibre","fibrosis","fickle","fiction","fictional","ficus","fiddle","fiddler","fiddling","fidelity","fido","fiefdom","field","fielder","fielding","fields","fieldstone","fiend","fiendish","fiends","fierce","fiercest","fiery","fiesta","fife","fifteen","fifteenth","fifth","fifths","fifties","fiftieth","fifty","fig","fight","fighter","fighters","fighting","fights","figment","figurative","figuratively","figure","figured","figurehead","figures","figurines","figuring","file","filed","files","filet","filibuster","filing","fill","filled","filler","fillets","filling","fillings","fills","filly","film","filmed","filming","filmmaker","filmmakers","filmmaking","films","filter","filtered","filters","filth","filthy","filtration","fin","finagle","final","finale","finalist","finalists","finality","finalize","finalized","finalizing","finally","finals","finance","financed","finances","financial","financially","financing","finch","find","finder","finders","finding","findings","finds","fine","fined","finer","fines","finesse","finessed","finest","finger","fingered","fingernail","fingernails","fingerprint","fingerprints","fingers","fingertips","finish","finished","finishes","finishing","fink","fins","fir","fire","firearms","fireball","fireballs","firebird","firebug","firecracker","firecrackers","fired","firefight","firefighters","fireflies","firehouse","firelight","fireman","firemen","fireplace","fireplaces","firepower","fireproof","fires","firestorm","firewater","firewood","fireworks","firing","firm","firmer","firmly","firms","firs","first","firstborn","firsthand","firstly","fish","fished","fisher","fisherman","fishermen","fishes","fishing","fishnet","fishy","fission","fist","fisted","fistfight","fistful","fists","fit","fitch","fitness","fits","fitted","fitter","fittest","fitting","fittings","five","fiver","fives","fix","fixable","fixated","fixating","fixation","fixed","fixer","fixes","fixing","fixings","fixture","fixtures","fizz","fizzle","fizzled","flack","flag","flagged","flagging","flags","flagship","flail","flailing","flair","flak","flake","flaked","flakes","flaky","flame","flamenco","flamer","flames","flaming","flammable","flan","flank","flanking","flanks","flannel","flap","flapjacks","flapped","flapping","flaps","flare","flared","flares","flaring","flash","flashback","flashbacks","flashed","flashes","flashing","flashlight","flashlights","flashy","flask","flat","flatbed","flats","flattened","flatter","flattered","flatterer","flattering","flatters","flattery","flatulence","flatware","flaunt","flaunting","flavor","flavored","flavors","flavour","flavours","flaw","flawed","flawless","flawlessly","flaws","flay","flayed","flea","fleabag","fleas","flecks","fled","fledged","fledgling","flee","fleece","fleeing","fleet","fleeting","flesh","fleshy","fletcher","flew","flex","flexibility","flexible","flexing","flick","flicked","flicker","flickering","flicking","flicks","flier","fliers","flies","flight","flights","flighty","flimsy","flinch","flinching","fling","flinging","flint","flip","flipped","flipper","flippers","flipping","flips","flirt","flirtatious","flirted","flirting","float","floated","floater","floating","floats","flock","floe","flog","flogged","flogging","flood","flooded","floodgates","flooding","floods","floor","floorboard","floorboards","floored","floors","floozy","flop","flopped","flopping","floppy","flops","flora","floral","florence","florin","florist","florists","floss","flossing","flotation","flounder","floundering","flour","flourished","flow","flower","flowering","flowers","flowing","flown","flows","flu","flue","fluff","fluffed","fluffing","fluffy","fluid","fluids","fluke","flung","flunk","flunked","flunkies","flunking","flunky","fluorescent","flurries","flurry","flush","flushed","flustered","flute","flutes","fluttering","flux","fly","flyboy","flyer","flyers","flying","foal","foam","foaming","foamy","fob","focal","focus","focused","focuses","focusing","focussed","focussing","fodder","foe","fog","fogged","foggiest","foibles","foil","foiled","foisting","fold","folded","folder","folding","folds","foliage","folk","folklore","folks","folksy","follicle","follow","followed","follower","followers","following","follows","folly","fond","fonder","fondest","fondle","fondled","fondling","fondue","font","food","foods","fool","fooled","foolhardy","fooling","foolish","foolishness","foolproof","fools","foot","footage","football","footed","footer","foothold","footing","footman","footnote","footnotes","footprints","footsies","footsteps","footstool","footwear","footwork","fop","for","forage","foraging","foray","forbade","forbid","forbidden","forbidding","forbids","force","forced","forceful","forceps","forces","forcibly","forcing","ford","fore","forearm","foreclosed","foreclosure","forefathers","forego","foregone","forehead","foreign","foreigners","foreman","foremost","forensic","forensics","foreplay","foresaw","foresee","foreseeable","foresight","foreskin","forest","forester","forestry","forests","forethought","foretold","forever","foreword","forfeit","forfeited","forfeits","forgave","forge","forged","forger","forgeries","forgery","forget","forgetful","forgets","forgettable","forgetting","forging","forgive","forgiven","forgiveness","forgives","forgiving","forgo","forgot","forgotten","fork","forked","forklift","forks","form","formal","formaldehyde","formality","formally","format","formation","formations","formed","former","formerly","formidable","forming","forms","formula","formulas","formulate","formulating","fornicating","fornication","forsake","forsaken","forsaking","fort","forte","forth","forthcoming","forthright","forthwith","forties","fortieth","fortified","fortitude","fortnight","fortress","fortuitous","fortunate","fortunately","fortune","fortunes","fortuneteller","forty","forum","forward","forwarded","forwarding","fosse","fossil","fossilized","foster","fostered","fought","foul","fouled","found","foundation","foundations","founded","founder","founding","fountain","fountainhead","fountains","four","fours","foursome","fourteen","fourteenth","fourth","fowl","fowler","fox","foxes","foxhole","foxholes","foxy","foyer","fraction","fractions","fracture","fractured","fractures","fragile","fragment","fragments","fragrance","frail","frailty","frame","framed","framers","frames","framework","framing","franc","franchise","franchises","francs","frank","frankfurter","franklin","frankly","franks","frantic","frantically","frat","fraternal","fraternities","fraternity","fraternization","fraternizing","fraud","frauds","fraught","fraulein","fray","frayed","frazzled","freak","freaked","freaking","freakish","freaks","freaky","freckle","freckling","free","freebie","freed","freedman","freedom","freedoms","freeing","freelance","freelancer","freelancing","freeloader","freeloading","freely","freeman","freer","frees","freeway","freeways","freeze","freezer","freezers","freezes","freezing","freight","freighter","french","frenzy","frequencies","frequency","frequent","frequently","fresh","freshen","freshener","freshening","fresher","freshest","freshly","freshman","freshmen","freshness","freshwater","fret","fretting","friction","fridge","fried","friend","friendless","friendlier","friendliest","friendly","friends","friendship","friendships","fries","frigate","frigging","fright","frighten","frightened","frightening","frightens","frightful","frightfully","frigid","frills","fringe","fringes","frisk","frisky","fritter","fritters","fritz","frivolous","frizzy","fro","frog","frogs","frolic","from","front","frontal","frontier","frontiers","fronting","fronts","frost","frostbite","frosting","frosty","froufrou","frown","froze","frozen","frugal","fruit","fruitcake","fruitful","fruition","fruitless","fruits","fruity","frustrated","frustrates","frustrating","frustration","fry","fryer","frying","fuchsia","fuck","fucked","fucker","fuckers","fucking","fucks","fuckup","fudge","fudged","fudging","fuel","fueled","fueling","fuels","fugitive","fugitives","fugu","fugue","fuhrer","fulcrum","fulfil","fulfill","fulfilled","fulfilling","fulfillment","full","fuller","fullest","fully","fumble","fumbling","fumes","fumigated","fumigating","fumigation","fun","function","functional","functioning","functions","fund","fundamental","fundamentalist","fundamentally","funded","funding","fundraiser","fundraisers","fundraising","funds","funeral","funerals","fungal","fungi","fungus","funk","funky","funnier","funnies","funniest","funny","fur","furious","furiously","furlong","furnace","furnished","furniture","furrowed","furry","furs","further","furthering","furthermore","furthest","furtive","fury","fuse","fused","fuses","fusilli","fusion","fuss","fussing","fussy","futile","futility","futon","future","futures","futuristic","fuzz","fuzzy","gabbing","gabby","gaby","gadget","gaff","gag","gaga","gage","gagged","gagging","gaggle","gags","gaiety","gain","gained","gainful","gainfully","gaining","gains","gal","gala","galactic","galaxy","gale","galilee","gall","gallant","gallbladder","galleries","gallery","galling","gallivanting","gallon","gallons","galloping","gallows","galore","galoshes","gals","galvanized","gambit","gamble","gambler","gambling","game","gamer","games","gamma","gammy","gams","gamut","gander","gang","ganged","ganging","gangland","gangly","gangrene","gangs","gangster","gangsters","gangway","ganja","gap","gaps","gar","garage","garages","garb","garbage","garcon","garden","gardener","gardeners","gardenias","gardening","gardens","gargantuan","gargling","gargoyle","gargoyles","garibaldi","garish","garland","garlic","garment","garments","garner","garnet","garnish","garrison","garter","garters","garth","gas","gasbag","gases","gasket","gaslight","gasoline","gasp","gasped","gasping","gassed","gasses","gassy","gastric","gat","gate","gated","gatehouse","gatekeeper","gates","gateway","gather","gathered","gathering","gatherings","gathers","gator","gaudy","gauge","gauging","gault","gauntlet","gauze","gave","gavel","gawk","gawking","gay","gayest","gayness","gays","gaze","gazebo","gazed","gazelle","gazpacho","gear","geared","gearing","gears","gearshift","gecko","ged","gee","geek","geeks","geeky","gees","geese","geez","geezer","geezers","geishas","gel","gelatin","gelato","gels","gem","gemma","gems","gen","gendarme","gender","gene","genealogy","general","generally","generals","generate","generated","generates","generating","generation","generations","generator","generators","generic","generosity","generous","generously","genes","genesis","genetic","genetically","geneticist","genetics","geneva","genie","genital","genitals","genius","geniuses","genoa","genome","genre","gentle","gentleman","gentlemanly","gentlemen","gentler","gently","gents","genuine","genuinely","genus","geographic","geographical","geographically","geography","geological","geologist","geologists","geology","geometric","geometry","geopolitical","geosynchronous","gerbil","gerbils","geriatric","geriatrics","germ","german","germans","germs","gestapo","gestating","gestation","gesture","gestures","get","getaway","gets","getter","getting","getup","geyser","ghastly","ghetto","ghettos","ghost","ghosts","ghoul","ghoulish","giant","giants","gib","gibberish","gibbons","giblets","gibson","giddy","giddyup","gift","gifted","gifts","gig","gigantic","giggle","giggles","giggling","giggly","gigolo","gigs","gilbert","gilded","gill","gills","gimbal","gimlet","gimme","gimmicks","gimmie","gimp","gin","ginger","gingerbread","ginny","ginseng","giraffe","giraffes","girl","girlfriend","girlfriends","girlie","girls","girly","girth","gist","git","give","giveaway","given","givens","giver","givers","gives","giving","gizmo","gizmos","gizzard","glaciers","glad","glade","glades","gladiator","gladiators","gladly","gladstone","glamor","glamorous","glamour","glance","glanced","glances","gland","glands","glare","glares","glaring","glass","glasses","glassware","glassy","glaucoma","glaze","glazed","glazer","gleam","gleaming","glee","glen","glengarry","glib","glide","gliders","gliding","glimmer","glimpse","glimpsed","glint","glitch","glitches","glitter","glittering","gloat","gloating","global","globe","globes","gloom","gloomy","glop","gloria","glorified","glorious","gloriously","glory","gloss","glossy","glove","glover","gloves","glow","glowing","glucose","glue","glued","glues","gluing","glum","glutton","gluttony","glycerin","gnat","gnats","gnaw","gnawing","gnome","gnomes","go","goa","goad","goading","goal","goalie","goals","goat","goatee","goats","gob","gobble","gobbledegook","gobbledygook","gobbles","goblet","goblin","goblins","gobs","god","goddam","goddamn","goddamned","goddaughter","goddess","goddesses","godfather","godforsaken","godlike","godliness","godly","godmother","gods","godsend","godson","goers","goes","gofer","goggle","goggles","going","goiter","gold","golden","goldenrod","goldfish","golf","golfers","golfing","golly","gondola","gone","goner","goners","gong","gonorrhea","gonzo","goo","goober","goobers","good","goodbye","goodbyes","goodie","goodies","goodly","goodman","goodness","goods","goodwill","goody","gooey","goof","goofball","goofing","goofy","googly","goon","gooney","goonie","goonies","goons","goopy","goose","gopher","gor","gore","gorge","gorgeous","gorilla","gory","gosh","gospel","gossip","gossiping","gossips","got","gothic","gotten","gouge","gouged","gouging","goulash","gourd","gourmet","gout","governed","governess","governing","government","governmental","governments","governor","gown","gowns","grab","grabbed","grabbing","grabby","grabs","grace","graced","graceful","gracefully","graces","gracing","gracious","graciously","grad","grade","graded","grader","graders","grades","grading","gradually","graduate","graduated","graduates","graduating","graduation","graffiti","grafts","graham","grail","grain","grainy","gram","grammar","gramps","grams","gran","grand","grandad","grandbaby","grandchild","grandchildren","granddad","granddaddy","granddaughter","granddaughters","grander","grandeur","grandfather","grandfathers","grandkid","grandkids","grandma","grandmother","grandmothers","grandpa","grandparent","grandparents","grandson","grandstand","grange","granger","granite","granny","granola","grant","granted","granting","grants","grape","grapefruit","grapes","grapevine","graphic","graphics","graphite","graphs","grasp","grasped","grasping","grass","grasshopper","grassy","grate","grated","grateful","gratification","gratified","gratifying","gratitude","gratuitous","gratuity","grave","gravel","gravely","graves","gravest","graveyard","graveyards","gravity","gravy","gray","grazed","grazing","grease","greaseball","greased","greasing","greasy","great","greater","greatest","greatly","greatness","greed","greedy","greek","green","greener","greenhouse","greens","greet","greeting","greetings","greets","gremlin","grenade","grenades","grew","grey","greyhound","grid","griddle","gridlock","grief","grievance","grieve","grieves","grieving","griff","griffin","griffins","grift","grifters","grill","grilled","grilling","grills","grim","grime","grimes","grin","grind","grinder","grinding","grinds","grindstone","gringo","grinning","grins","grip","gripe","gripes","griping","gripping","grips","grisly","gristle","grits","grizzly","groaning","grocer","groceries","grocery","grog","groggy","groin","groom","groomed","groomer","grooming","grooms","groomsmen","groove","groovy","grope","groped","groping","gross","grossed","grosser","grosses","grossing","grossly","grotesque","grouch","grouchy","ground","groundbreaking","grounded","groundhog","grounding","groundless","grounds","groundskeeper","groundwork","group","groupie","groupies","grouping","groups","grouse","grove","grovel","groveling","groves","grow","growers","growing","growl","grown","grownup","grownups","grows","growth","grub","grubbing","grubby","grubs","grudge","grudges","grudging","gruel","gruesome","grumbling","grumpy","grunge","grungy","grunt","guacamole","guarantee","guaranteed","guaranteeing","guarantees","guard","guarded","guardian","guardians","guardianship","guarding","guardrail","guards","guava","guerilla","guerillas","guerrilla","guerrillas","guess","guessed","guesses","guessing","guest","guesthouse","guests","guff","guidance","guide","guided","guidelines","guides","guiding","guild","guilder","guillotine","guilt","guilty","guinea","guineas","guitar","guitarist","guitars","gulag","gulch","gulf","gull","gullible","gum","gumption","gums","gumshoe","gun","gunfire","gunk","gunman","gunmen","gunned","gunner","gunnery","gunning","gunpoint","gunpowder","guns","gunshot","gunshots","gurgling","gurney","guru","gush","gusher","gushing","gushy","gusto","gut","gutless","guts","gutter","gutters","gutting","guy","guys","guzzling","gym","gyms","gynecologist","gypped","gypsies","gypsy","ha","haberdashery","habit","habitat","habits","hack","hacked","hacker","hackers","hacking","hackman","hacks","hacksaw","had","hades","hadj","hag","haggis","haggling","hags","hah","haha","hail","hailed","hailing","hails","hair","hairball","hairbrush","haircut","haircuts","hairdo","hairdresser","hairdressers","haired","hairless","hairline","hairnet","hairpin","hairs","hairstyles","hairy","hale","half","halfback","halfway","halibut","halitosis","hall","hallelujah","hallmark","hallo","hallowed","halls","hallucinate","hallucinating","hallucination","hallucinations","hallucinogen","hallway","hallways","halo","halothane","halt","halter","halves","ham","hamburg","hamburger","hamburgers","hamlet","hammer","hammered","hammering","hammers","hammock","hamper","hams","hamster","hamsters","hamstring","hand","handbag","handbags","handball","handbasket","handbook","handcuffed","handcuffs","handed","handful","handgun","handguns","handheld","handicap","handicapped","handing","handkerchief","handle","handled","handler","handles","handling","handoff","handout","handouts","handprint","handrail","hands","handshake","handsome","handsomely","handsomest","handstand","handwriting","handy","handyman","hang","hanged","hanger","hangers","hanging","hangman","hangnail","hangout","hangouts","hangover","hangovers","hangs","hank","hankering","hankie","hanks","hanky","hansom","hap","happen","happened","happening","happenings","happens","happier","happiest","happily","happiness","happy","haps","harass","harassed","harassing","harassment","harbor","harboring","harbors","harbour","harbouring","hard","hardball","harden","hardened","hardens","harder","hardest","hardly","hardship","hardware","hardwired","hardworking","hardy","hare","harem","harlot","harm","harmed","harmful","harming","harmless","harmonious","harmony","harms","harness","harnessed","harp","harper","harpies","harping","harpoons","harps","harpy","harridan","harriers","harrowing","harry","harsh","harshly","hart","harts","harvest","has","hash","hassle","hassled","hassling","hast","haste","hasten","hastened","hastily","hasty","hat","hatch","hatchback","hatched","hatches","hatchet","hate","hated","hateful","hater","hates","hath","hating","hatred","hats","hatter","haughty","haul","hauled","hauling","hauls","haunt","haunted","haunting","haunts","haute","have","haven","having","havoc","haw","hawk","hawker","hawking","hawks","hay","haycock","hayloft","hayseed","haystack","hayward","haywire","hazard","hazardous","hazards","haze","hazel","hazelnut","hazing","hazy","he","head","headache","headaches","headband","headboard","headdress","headed","header","headfirst","headgear","headhunter","heading","headless","headlights","headline","headliner","headlines","headlining","headlock","headlong","headmaster","headphones","headpiece","headquarters","heads","headset","headsets","headstone","headway","heady","heal","healed","healer","healers","healing","heals","health","healthier","healthiest","healthy","heap","heaped","heaping","heaps","hear","heard","hearing","hearings","hears","hearsay","hearse","heart","heartache","heartbeat","heartbeats","heartbreak","heartbreaker","heartbreaking","heartbroken","heartburn","hearted","heartfelt","heartland","heartless","hearts","heartsick","heartthrob","heartwarming","hearty","heat","heated","heater","heath","heathen","heathens","heather","heating","heats","heave","heaved","heaven","heavenly","heavens","heavier","heaviest","heavily","heaving","heavy","heavyset","heavyweight","heck","heckle","heckled","heckles","heckling","hectic","hector","hedge","hedges","hedging","heed","heel","heeled","heels","heft","hefty","heh","heifer","heigh","height","heighten","heightened","heights","heil","heinie","heinous","heir","heiress","heirloom","heirlooms","heirs","heist","held","helicopter","helicopters","helipad","helix","hell","hellbent","heller","hellfire","hellhole","hellhound","hellish","hello","hells","helluva","helm","helmet","helmets","helms","helo","help","helped","helper","helpers","helpful","helping","helpless","helplessly","helplessness","helps","hem","hemisphere","hemline","hemlines","hemlock","hemoglobin","hemolytic","hemorrhaging","hemorrhoid","hemorrhoids","hemp","hen","hence","henchman","henchmen","henhouse","henry","hens","hep","hepatitis","her","herald","herb","herbal","herbs","hercules","herd","herding","herds","here","hereafter","hereby","hereditary","herein","heresy","heritage","hermaphrodite","hernia","hernias","herniated","hero","heroes","heroic","heroics","heroin","heroine","herpes","herring","hers","herself","hertz","hesitant","hesitate","hesitated","hesitates","hesitating","hesitation","hessian","hetero","heterosexual","hex","hexes","hey","heyday","hi","hiatus","hibernating","hibernation","hibiscus","hic","hiccup","hiccups","hick","hickey","hickory","hicks","hid","hidden","hide","hideaway","hideous","hideously","hideout","hides","hiding","hierarchy","hieroglyphs","high","highball","higher","highest","highland","highlands","highlight","highlighted","highlighters","highlights","highly","highness","highs","hightail","highway","highways","hijacking","hijinks","hike","hiked","hiker","hikers","hiking","hilarious","hilarity","hill","hillbillies","hillbilly","hillcrest","hills","hillside","hilltop","hilt","him","himself","hind","hindrance","hindsight","hinges","hint","hinted","hinting","hints","hip","hippest","hippie","hippies","hippo","hippopotamus","hippos","hips","hire","hired","hires","hiring","his","hiss","hissed","hisself","hisses","hissing","historian","historic","historical","historically","histories","history","hit","hitch","hitched","hitchhike","hitchhiker","hitchhikers","hitchhiking","hitching","hits","hitter","hitters","hitting","hive","hives","hm","hmm","ho","hoagie","hoarding","hoarse","hoax","hoaxes","hob","hobbies","hobbit","hobbits","hobble","hobbling","hobby","hobo","hoboes","hock","hockey","hocking","hocks","hocus","hoe","hoedown","hoes","hog","hogan","hogging","hogs","hogwash","hoist","hoisted","hoisting","hokey","hold","holden","holder","holders","holding","holdings","holds","holdup","hole","holed","holes","holiday","holidays","holier","holies","holiest","holiness","holing","holland","hollandaise","holler","hollering","hollers","hollow","hollowed","holly","holocaust","hologram","holographic","holster","holt","holy","homage","hombre","hombres","home","homebody","homeboy","homeboys","homecoming","homegrown","homeless","homely","homemade","homemaker","homeopathic","homeowners","homer","homeroom","homers","homes","homesick","homestead","hometown","homework","homey","homicidal","homicide","homicides","homily","homing","homo","homophobia","homophobic","homos","homosexual","homosexuality","homosexuals","hon","honda","honed","honest","honestly","honesty","honey","honeymoon","honeymooners","honeymooning","honeymoons","honeysuckle","hong","honk","honks","honky","honor","honorable","honorably","honorary","honored","honoring","honors","honour","honourable","honouring","honours","hooch","hood","hooded","hoodlums","hoodwinked","hoof","hook","hooked","hooker","hookers","hooking","hooks","hookup","hooky","hooligan","hooligans","hoop","hoopla","hoops","hooray","hoosegow","hoot","hootenanny","hooter","hooters","hooves","hop","hope","hoped","hopeful","hopefully","hopeless","hopelessly","hopelessness","hopes","hoping","hopped","hopper","hopping","hoppy","hops","hora","horde","hordes","horizon","horizons","horizontal","hormonal","hormone","hormones","horn","horned","hornet","hornets","horns","horny","horoscope","horoscopes","horrendous","horrible","horribly","horrid","horrific","horrified","horrifying","horror","horrors","horse","horseback","horsehair","horseman","horsemen","horsepower","horseradish","horses","horseshit","horsey","horsing","horticulture","hose","hosed","hoses","hosing","hospice","hospitable","hospital","hospitality","hospitalized","hospitals","host","hostage","hostages","hosted","hostel","hostess","hostile","hostiles","hostilities","hostility","hosting","hosts","hot","hotbed","hotcakes","hotdog","hotdogs","hotel","hotels","hothead","hotheaded","hothouse","hotline","hots","hotshot","hotter","hottest","hound","hounded","hounding","hounds","hour","hourglass","hourly","hours","house","housebroken","housecleaning","housed","houseguest","houseguests","household","households","housekeeper","housekeeping","houseman","houses","housewarming","housewife","housewives","housing","hovel","hover","hovercraft","hovering","how","howdy","howe","however","howl","howling","hows","hoy","hub","hubbub","hubby","hubcaps","hubris","huck","huckleberry","huckster","huddle","huddled","hue","huffed","huffing","huffy","hug","huge","hugest","hugged","hugger","huggers","hugging","hugs","huh","hula","hulk","hulking","hull","hullo","hum","human","humane","humanitarian","humanity","humankind","humanly","humanoid","humans","humble","humbled","humbling","humbly","humbug","humdinger","humid","humidifier","humidity","humidor","humiliate","humiliated","humiliates","humiliating","humiliation","humiliations","humility","hummed","hummer","humming","hummus","humor","humored","humoring","humorless","humour","hump","humpback","humped","humph","humping","humps","hums","humus","hun","hunch","hunchback","hunched","hunches","hundred","hundreds","hundredth","hung","hunger","hungover","hungry","hunh","hunk","hunker","hunks","hunky","huns","hunt","hunted","hunter","hunters","hunting","hup","hurdles","hurl","hurley","hurling","hurrah","hurray","hurricane","hurricanes","hurried","hurry","hurrying","hurst","hurt","hurtful","hurting","hurtling","hurts","husband","husbands","hush","hushed","husk","huskies","husks","husky","hussy","hustle","hustler","hut","hutch","huts","huzzah","hybrid","hybrids","hydra","hydrate","hydrated","hydraulic","hydraulics","hydrochloride","hydrogen","hydrolase","hyenas","hygiene","hygienic","hygienist","hymn","hymns","hype","hyped","hyper","hyperactive","hyperbole","hyperspace","hypertension","hyperventilate","hyperventilating","hyphen","hypnosis","hypnotic","hypnotize","hypnotized","hypo","hypochondriac","hypocrisy","hypocrite","hypocrites","hypocritical","hypodermic","hypotensive","hypotenuse","hypothermia","hypothetical","hypothetically","hysterectomy","hysteria","hysteric","hysterical","hysterically","hysterics","iambic","ibuprofen","ice","iceberg","icebergs","icebox","icebreaker","iced","icehouse","iceman","ich","icicle","icicles","icing","ick","icky","icon","icons","icy","id","idea","ideal","idealist","idealistic","idealized","ideally","ideals","ideas","identical","identifiable","identification","identified","identifies","identify","identifying","identities","identity","ideology","idiocy","idiom","idiosyncrasies","idiot","idiotic","idiots","idle","idling","idly","idol","idolized","idols","idyllic","if","iff","iffy","ifs","igloo","igneous","ignite","ignited","ignition","ignoramus","ignorance","ignorant","ignore","ignored","ignores","ignoring","iguana","iguanas","iliad","ilk","ill","illegal","illegally","illegals","illegible","illegitimate","illicit","illness","illnesses","illogical","ills","illuminate","illuminating","illumination","illusion","illusions","illustrate","illustrated","illustrates","illustration","illustrious","image","imagery","images","imaginable","imaginary","imagination","imaginations","imaginative","imagine","imagined","imagines","imagining","imam","imbecile","imbeciles","imbecilic","imbedded","imbued","imitate","imitating","imitation","immaculate","immaterial","immature","immaturity","immediate","immediately","immense","immensely","immerse","immersion","immigrants","immigration","imminent","immobile","immobilize","immodest","immoral","immortal","immortality","immortalized","immune","immunity","immutable","imp","impact","impacted","impacts","impaired","impala","impale","impaled","impart","impartial","impassioned","impatience","impatient","impeach","impeached","impeccable","impediment","impediments","impeding","impending","impenetrable","imperative","imperfect","imperfection","imperfections","imperial","imperialist","impersonal","impersonate","impersonated","impersonating","impersonator","impertinent","impervious","impetuous","implant","implanted","implants","implausible","implement","implemented","implicate","implicated","implicates","implicating","implication","implications","implicitly","implied","implies","imploding","implore","imply","implying","impolite","import","importance","important","importantly","imported","importer","importing","imports","impose","imposed","imposing","imposition","impossibility","impossible","impossibly","imposter","impostor","impotence","impotent","impound","impounded","impractical","impregnated","impress","impressed","impressing","impression","impressionable","impressionists","impressions","impressive","imprint","imprisoned","imprisonment","impromptu","improper","improperly","impropriety","improve","improved","improvement","improvements","improves","improving","improvise","improvised","improvising","impudence","impudent","impulse","impulses","impulsive","impulsively","impunity","in","inability","inaccessible","inaccuracies","inaccurate","inactive","inadequacy","inadequate","inadmissible","inadvertently","inappropriate","inappropriately","inaugural","inbound","inbred","inbreeding","incantation","incantations","incapable","incapacitate","incapacitated","incarcerate","incarcerated","incarceration","incarnation","incase","incendiary","incense","incensed","incentive","incentives","inception","incessantly","incest","incestuous","inch","inches","incidence","incident","incidental","incidentally","incidents","incinerate","incinerated","incinerator","incision","incite","inclined","include","included","includes","including","incognito","incoherent","income","incoming","incommunicado","incomparable","incompatible","incompetence","incompetent","incomplete","incomprehensible","inconceivable","inconsiderate","inconsistencies","inconsistent","inconsolable","inconspicuous","inconvenience","inconveniencing","inconvenient","incorporate","incorrect","incorrectly","incorrigible","increase","increased","increases","increasing","increasingly","incredible","incredibly","increments","incriminate","incriminating","incrimination","incubation","incubator","incubators","incur","incurred","indebted","indecent","indecision","indeed","indefensible","indefinite","indefinitely","indelicate","indentured","independence","independent","indescribable","indestructible","indeterminate","index","indicate","indicated","indicates","indicating","indication","indications","indicative","indicator","indicators","indict","indicted","indictment","indictments","indie","indies","indifference","indifferent","indigenous","indigestion","indignant","indignation","indignities","indigo","indirectly","indiscreet","indiscretion","indiscretions","indispensable","indistinguishable","individual","individuality","individually","individuals","indoor","indoors","induce","induced","inducement","inducing","induction","indulge","indulged","indulgence","indulgent","indulging","industrial","industrialist","industries","industrious","industry","inedible","ineffective","inefficient","inept","inevitability","inevitable","inevitably","inexcusable","inexpensive","inexperience","inexperienced","inexplicable","infallible","infamous","infamy","infant","infantile","infantry","infants","infarction","infatuated","infatuation","infect","infected","infecting","infection","infections","infectious","infects","inference","inferior","inferiority","infernal","inferno","infertile","infestation","infested","infidelities","infidelity","infighting","infiltrate","infiltrated","infiltration","infinite","infinitely","infinity","infirmary","inflame","inflamed","inflammation","inflammatory","inflate","inflated","inflating","inflation","inflexible","inflict","inflicted","inflicting","infliction","influence","influenced","influences","influencing","influential","influenza","influx","info","infomercial","inform","informal","informant","information","informational","informed","informer","informing","informs","infra","infraction","infrared","infrastructure","infuriate","infuriates","infuriating","infused","ingenious","ingenue","ingest","ingested","ingles","ingrates","ingratitude","ingredient","ingredients","inhabit","inhabitants","inhalation","inhale","inhaled","inhaler","inhaling","inherently","inherit","inheritance","inherited","inheriting","inherits","inhibitor","inhibitors","inhuman","inhumane","initial","initially","initials","initiate","initiated","initiating","initiation","initiative","initiatives","inject","injected","injection","injections","injector","injunction","injure","injured","injuries","injury","injustice","ink","inkling","inlaid","inland","inmate","inmates","inn","innards","inner","innermost","inning","innings","innkeeper","innocence","innocent","innocently","innocents","innocuous","innovation","innovative","innuendo","innuendoes","inopportune","input","inquest","inquiries","inquiry","inquisition","inquisitor","inroads","ins","insane","insanely","insanity","insatiable","inscription","inscrutable","insect","insects","insecure","insecurities","insecurity","inseminated","insensitive","insensitivity","inseparable","insert","insertion","inside","insider","insides","insidious","insight","insightful","insights","insignia","insignificant","insincere","insinuated","insinuating","insinuations","insipid","insist","insisted","insistence","insistent","insisting","insists","insolence","insolent","insomnia","inspect","inspected","inspecting","inspection","inspections","inspector","inspectors","inspiration","inspirational","inspire","inspired","inspires","inspiring","install","installation","installed","installing","installment","installments","instance","instances","instant","instantaneous","instantly","instead","instep","instigated","instigator","instill","instilled","instinct","instinctively","instincts","institute","instituted","institution","institutional","institutionalized","institutions","instruct","instructed","instructing","instruction","instructions","instructor","instructors","instrument","instruments","insufferable","insufficient","insulated","insulation","insulin","insult","insulted","insulting","insults","insurance","insure","insured","insuring","insurmountable","insurrection","intact","intake","integral","integrate","integrated","integration","integrity","intellect","intellectual","intellectually","intellectuals","intelligence","intelligent","intelligently","intend","intended","intending","intends","intense","intensely","intensity","intensive","intent","intention","intentional","intentionally","intentions","intently","inter","interact","interacting","interaction","interactive","intercede","intercept","intercepted","intercepting","interchangeable","intercom","intercourse","interest","interested","interesting","interests","interface","interfacing","interfere","interfered","interference","interferes","interfering","interior","interject","interlude","intermediary","intermediate","intermission","intermittent","intern","internal","internally","international","internationally","interning","internist","internment","interns","internship","interplanetary","interpret","interpretation","interpreted","interpreter","interpreting","interpretive","interracial","interrogate","interrogated","interrogating","interrogation","interrogations","interrupt","interrupted","interrupting","interruption","interruptions","interrupts","intersection","interstate","interstellar","intertwined","intervene","intervened","intervening","intervention","interview","interviewed","interviewer","interviewing","interviews","intestinal","intestines","intimacy","intimate","intimated","intimately","intimidate","intimidated","intimidating","into","intolerable","intolerant","intoxicated","intoxicating","intoxication","intravenous","intravenously","intrigue","intrigued","intrigues","intriguing","intro","introduce","introduced","introduces","introducing","introduction","introductions","introductory","intros","intrude","intruded","intruder","intruders","intruding","intrusion","intubate","intuition","intuitive","inundated","invade","invaded","invaders","invading","invalid","invalidate","invaluable","invasion","invasive","invent","invented","invention","inventions","inventive","inventory","inverted","invest","invested","investigate","investigated","investigates","investigating","investigation","investigations","investigative","investigator","investigators","investing","investment","investments","investors","invigorated","invigorating","invincible","invisibility","invisible","invitation","invitations","invite","invited","invites","inviting","invoice","invoices","invoke","invoked","involve","involved","involvement","involves","involving","ion","ions","ipecac","iris","iron","ironclad","ironed","ironic","ironically","ironies","ironing","irons","irony","irrational","irrationally","irregular","irregularities","irrelevant","irreparable","irreplaceable","irresistible","irresponsibility","irresponsible","irrevocably","irrigate","irrigation","irritable","irritate","irritated","irritating","irritation","is","island","islanders","islands","isolate","isolated","isolation","isotopes","issue","issued","issues","issuing","it","itch","itches","itching","itchy","item","items","itinerary","its","itself","ivories","ivory","ivy","jab","jabber","jabbering","jabot","jabs","jack","jackal","jackals","jackass","jackasses","jacked","jackers","jacket","jackets","jacking","jackpot","jacks","jade","jaded","jag","jagger","jags","jaguar","jaguars","jail","jailbird","jailbreak","jailed","jailhouse","jake","jalopy","jam","jamboree","jammed","jammer","jammies","jamming","jams","jane","janitor","janitorial","janitors","japan","jar","jargon","jarring","jars","jasmine","jasper","jaundice","jaunt","java","javelin","jaw","jawbone","jawed","jaws","jay","jaywalking","jazz","jazzed","jealous","jealousy","jean","jeans","jeep","jeepers","jeeps","jeez","jefe","jell","jellies","jelly","jellybean","jellyfish","jenny","jeopardize","jeopardized","jeopardizing","jeopardy","jerk","jerked","jerkin","jerking","jerks","jerky","jerries","jerry","jersey","jerseys","jess","jesse","jest","jester","jesuit","jesuits","jet","jets","jettison","jew","jewel","jeweler","jewelers","jewellery","jewelry","jewels","jews","jezebel","jib","jiff","jiffy","jig","jiggle","jiggling","jiggly","jigsaw","jihad","jill","jilted","jiminy","jimmies","jimmy","jin","jingle","jingles","jingling","jinx","jitters","jittery","jo","job","jobless","jobs","jock","jockey","jockeys","jocks","jockstrap","joe","joes","joey","jog","jogger","jogging","john","johnny","johns","join","joined","joiner","joining","joins","joint","joints","joke","joked","joker","jokers","jokes","joking","jollies","jolly","jolt","jones","jordan","joseph","josh","jot","jotted","journal","journalism","journalist","journalistic","journalists","journals","journey","journeyed","journeys","joust","joy","joyful","joyous","joys","joystick","jubilee","judas","judge","judged","judgement","judges","judging","judgment","judgmental","judgments","judicial","judiciary","judo","jug","juggernaut","juggle","juggling","jughead","jugs","jugular","juice","juiced","juices","juicy","jujitsu","juke","jukebox","julep","jumble","jumbled","jumbo","jump","jumped","jumper","jumpers","jumping","jumps","jumpsuit","jumpy","junction","juncture","jungle","jungles","junior","juniors","juniper","junk","junkie","junkies","junky","junkyard","juries","jurisdiction","juror","jurors","jury","jus","just","justice","justifiable","justification","justified","justifies","justify","jut","juvenile","ka","kabob","kahuna","kaiser","kale","kaleidoscope","kane","kangaroo","kaon","kappa","kaput","karaoke","karat","karate","karma","kasha","kashmir","kat","kay","kayak","kayaking","keel","keeled","keen","keep","keeper","keepers","keeping","keeps","keg","kegs","keister","kelly","kelp","kelson","ken","kendo","keno","kent","kept","kern","kerosene","kerry","ketch","ketchup","kettle","key","keyboard","keyboards","keycard","keyhole","keynote","keys","keystone","khaki","khakis","khan","kibble","kibosh","kick","kickback","kickbacks","kickboxing","kicked","kicker","kicking","kicks","kicky","kid","kidder","kiddie","kiddies","kidding","kiddo","kidnap","kidnapped","kidnapper","kidnappers","kidnapping","kidnaps","kidney","kidneys","kids","kielbasa","kill","killed","killer","killers","killing","killings","killjoy","kills","kiln","kilo","kilometer","kilometers","kilos","kilt","kilter","kimono","kin","kind","kinder","kindergarten","kindergartners","kindest","kindling","kindly","kindness","kinds","king","kingdom","kingdoms","kingpin","kings","kink","kinky","kins","kinship","kiosk","kip","kirk","kismet","kiss","kissable","kissed","kisser","kisses","kissing","kissy","kit","kitchen","kite","kites","kitten","kittens","kitties","kitty","kiwi","klutz","klutzy","knack","knapsack","knee","kneecap","kneecaps","kneed","kneel","kneeling","knees","knelt","knew","knickers","knickknacks","knife","knifed","knight","knights","knit","knitted","knitting","knives","knob","knobby","knobs","knock","knockdown","knocked","knocker","knockers","knocking","knockoff","knockout","knocks","knoll","knot","knots","knotted","know","knowing","knowingly","knowledge","knowledgeable","known","knows","knuckle","knucklehead","knuckles","koala","kobo","koi","kooks","kooky","kosher","koss","kraft","kremlin","kris","kroner","kudos","la","lab","label","labeled","labelled","labels","labor","laboratories","laboratory","labored","laborers","labour","labrador","labs","labyrinth","lac","lace","laced","lacerated","laceration","lacerations","laces","lacey","lack","lacked","lackeys","lacking","lackluster","lacks","lacquer","lacrosse","lactic","lactose","lacy","lad","ladder","ladders","laddies","laden","ladies","ladle","lads","lady","ladyship","lag","lager","lagging","lagoon","laid","lair","laird","lake","laker","lakers","lakes","lakeshore","lakeside","lam","lama","lamb","lambda","lambert","lambs","lame","lameness","lament","laminated","lamp","lamppost","lamps","lance","lancer","land","landed","lander","landers","landfall","landfill","landing","landings","landlady","landlord","landlords","landmark","landmarks","lands","landscape","landscapes","landscaping","landslide","lane","lanes","lang","langley","language","languages","languishing","lanky","lantern","lanyard","lap","lapdog","lapel","lapping","laps","lapse","lapsed","lapses","laptop","laptops","lar","larceny","larch","lard","large","largely","larger","largest","lark","lars","larvae","larval","laryngitis","las","lasagna","lasagne","lascivious","laser","lasers","lash","lashed","lashes","lashing","lass","lassie","lasso","last","lasted","lasting","lasts","latch","latched","late","lately","latent","later","latest","latex","lathe","lather","latino","latitude","latrine","latte","latter","lattes","laugh","laughable","laughed","laughing","laughingstock","laughs","laughter","launch","launched","launcher","launches","launching","launder","laundered","laundering","laundry","laura","laureate","laurel","lava","lavender","lavish","lavished","law","lawful","lawfully","lawman","lawmen","lawn","lawnmower","lawns","laws","lawsuit","lawsuits","lawyer","lawyered","lawyers","lax","laxative","laxatives","lay","layaway","layer","layers","laying","layman","layout","lays","lazar","laziness","lazy","lead","leader","leaders","leadership","leading","leads","leaf","leaflets","leafs","leafy","league","leagues","leak","leaked","leaking","leaks","leaky","lean","leaned","leaning","leans","leap","leaping","leaps","leapt","lear","learn","learned","learner","learning","learns","learnt","leary","lease","leased","leash","least","leather","leave","leaver","leaves","leaving","lech","lecture","lectured","lectures","lecturing","led","lederhosen","ledge","ledger","ledgers","lee","leech","leeches","leering","leery","leeway","left","leftover","leftovers","lefts","lefty","leg","legacy","legal","legalities","legality","legalizing","legally","legend","legendary","legends","legged","leggy","legion","legions","legislate","legislation","legislative","legislature","legit","legitimacy","legitimate","legs","legwork","lei","leisure","leisurely","lemmings","lemon","lemonade","lemony","lemur","lend","lending","length","lengths","leniency","leno","lens","lenses","lent","lentils","leopard","leopards","leotard","leotards","leper","lepers","leprechaun","lesbian","lesbians","lesions","less","lessee","lessen","lesser","lesson","lessons","lest","let","lethal","lets","letter","letterhead","lettering","letterman","letters","letting","lettuce","leukemia","levee","level","levelheaded","levels","lever","leverage","leveraged","levitate","levitation","levity","levy","lewd","lewis","lex","lez","li","liability","liable","liaison","liane","liar","liars","libation","libel","liberal","liberals","liberated","liberating","liberation","liberties","liberty","libido","librarian","libraries","library","lice","licence","license","licensed","licenses","licensing","lichen","lick","licked","licker","licking","licks","licorice","lid","lido","lidocaine","lids","lie","lied","liege","lien","lier","lies","lieu","lieutenant","lieutenants","life","lifeboats","lifeguard","lifeless","lifelike","lifeline","lifelong","lifer","lifers","lifesaver","lifestyle","lifetime","lifetimes","lift","lifted","lifting","liftoff","lifts","ligament","ligature","light","lighted","lighten","lightened","lightening","lighter","lighters","lightheaded","lighthearted","lighthouse","lighting","lightly","lightness","lightning","lights","like","liked","likelihood","likely","likeness","likes","likewise","liking","lilac","lilacs","lilies","lily","lima","limb","limber","limbo","limbs","lime","limelight","limerick","limes","limestone","limey","limit","limitation","limitations","limited","limitless","limits","limo","limos","limousine","limousines","limp","limping","limps","lin","line","lineage","linear","linebacker","lined","linen","linens","liner","liners","lines","lineup","ling","linger","lingerie","lingering","lingers","lingo","linguistic","lining","link","linked","linking","links","linoleum","lint","lion","lions","lip","liposuction","lipped","lippy","lips","lipstick","liquefy","liquid","liquidate","liquidated","liquidation","liquor","liquored","lira","lis","list","listed","listen","listened","listener","listeners","listening","listens","listing","lists","lit","litany","lite","liter","literacy","literal","literally","literary","literate","literature","liters","lithium","litigation","litigious","litter","littered","littering","little","littlest","live","lived","livelihood","lively","liven","liver","livers","lives","livestock","livid","living","lizard","lizards","llama","lo","load","loaded","loading","loads","loaf","loafers","loan","loaned","loaning","loans","loath","loathe","loathed","loathes","loathing","lob","lobby","lobbying","lobbyist","lobe","lobes","lobotomy","lobster","lobsters","loca","local","locale","localized","locally","locals","locate","located","locating","location","locations","locator","loch","lock","lockdown","locked","locker","lockers","locket","locking","locks","locksmith","lockup","loco","locomotive","locust","locusts","lode","lodge","lodged","lodging","lodgings","loft","lofty","log","logan","logged","logger","logic","logical","logically","logistics","logo","logs","loin","loins","loitering","lollipop","lollipops","lolly","lone","lonelier","loneliest","loneliness","lonely","loner","loners","lonesome","long","longer","longest","longevity","longing","longitude","longs","longtime","loo","loofah","look","looked","looker","looking","lookout","lookouts","looks","loom","looming","loon","looney","loons","loony","loop","looped","loophole","loopholes","loops","loos","loose","loosely","loosen","loosened","loosening","looser","loosing","loot","looting","lop","lopped","lopper","lopsided","loran","lord","lording","lords","lordship","lore","lorry","lose","loser","losers","loses","losing","loss","losses","lost","lot","lothario","lotion","lots","lotte","lottery","lotto","loud","louden","louder","loudest","loudly","louie","louis","lounge","lounging","louse","lousy","lout","louvre","lovable","love","loveable","lovebirds","loved","loveless","lovelier","lovelies","loveliest","lovelorn","lovely","lovemaking","lover","lovers","loves","lovesick","loving","lovingly","low","lowdown","lowe","lower","lowered","lowering","lowers","lowery","lowest","lowlife","lowlifes","lowly","lows","lox","loyal","loyalties","loyalty","lozenges","luau","lube","lubricant","lubricants","lubrication","luce","lucid","lucifer","luck","lucked","luckier","luckiest","luckily","lucky","lucrative","ludicrous","lug","luge","luggage","lukewarm","lull","lullaby","lulu","lum","lumbar","lumber","lumbering","lumberjack","luminous","lump","lumpectomy","lumps","lumpy","luna","lunacy","lunar","lunatic","lunatics","lunch","luncheon","lunches","lunching","lunchroom","lunchtime","lung","lunge","lunged","lungs","lupus","lurch","lure","lured","lures","luring","lurk","lurking","lurks","luscious","lush","lust","luster","lusting","lusts","lutz","luv","lux","luxuries","luxury","lye","lying","lymph","lymphoma","lynch","lynched","lynching","lynx","lyrical","lyrics","ma","mac","macadamia","macaroni","macaroons","macaws","mace","mach","mache","machete","machinations","machine","machinery","machines","machismo","macho","mack","mad","madam","madame","madden","maddening","madder","made","madeleine","mademoiselle","madly","madman","madmen","madness","madonna","madre","madrigal","madwoman","mae","maestro","mafia","mag","magazine","magazines","magdalene","maggot","maggots","magic","magical","magically","magician","magicians","magistrate","magnet","magnetic","magnetism","magnets","magnificence","magnificent","magnificently","magnify","magnitude","magnolia","magnum","mags","maharajah","mahatma","maid","maiden","maidens","maids","mail","mailbox","mailboxes","mailed","mailer","mailing","mailman","mails","maim","maimed","maiming","main","mainframe","mainland","mainline","mainly","maintain","maintained","maintaining","maintains","maintenance","majestic","majesty","major","majored","majoring","majority","majors","make","makeover","makeovers","maker","makers","makes","makeshift","makeup","making","makings","malaria","male","males","malevolent","malfeasance","malfunction","malfunctioning","malfunctions","malice","malicious","maliciously","malign","malignant","mall","mallard","mallet","malls","malnourished","malpractice","malt","mama","mamie","mamma","mammals","man","manage","managed","management","manager","managerial","managers","manages","managing","manatee","manatees","mandarin","mandate","mandates","mandatory","mandrake","maneuver","maneuvered","maneuvering","maneuvers","manger","mangled","mangoes","mangos","mangy","manhandle","manhandled","manhattan","manhole","manhood","manhunt","maniac","maniacal","maniacs","manic","manicure","manicured","manicures","manifest","manifestations","manifested","manifesting","manifesto","manifests","manifold","manila","manipulate","manipulated","manipulates","manipulating","manipulation","manipulations","manipulative","manipulator","mankind","manly","manna","mannequin","mannequins","manner","mannered","manners","manning","mano","manor","manpower","mansion","mansions","manslaughter","mantel","manticore","mantis","mantle","mantra","manual","manually","manufacture","manufactured","manufacturer","manufactures","manufacturing","manure","manuscript","manuscripts","many","map","maple","mapped","mapping","maps","mar","marathon","marble","marbles","marc","marcel","march","marched","marches","marching","mare","margarita","margaritas","marge","margin","marginal","marginally","margins","maria","mariachi","marigold","marijuana","marina","marinate","marine","mariner","mariners","marines","marital","maritime","mark","marked","marker","markers","market","marketing","marketplace","markets","marking","markings","marks","marksmanship","marlin","marmalade","maroon","marooned","marquee","marquis","marriage","marriages","married","marries","marrow","marry","marrying","mars","marsh","marshal","marshall","marshmallow","marshmallows","mart","marten","martial","martin","martini","martinis","martins","martyr","martyrs","marvel","marveling","marvellous","marvelous","marzipan","mas","mascara","mascot","mascots","masculine","masculinity","mash","mashed","mask","masked","masking","masks","mason","masons","masquerade","masquerading","mass","massa","massacre","massacred","massacres","massage","massaged","massager","massages","massaging","masses","masseur","masseuse","massive","massively","mastectomy","master","mastered","mastermind","masterminded","masterpiece","masterpieces","masters","mastery","masturbated","masturbating","masturbation","mat","matador","match","matchbook","matched","matches","matching","matchmaker","matchmaking","mate","mated","material","materialistic","materialize","materialized","materials","maternal","maternity","mates","matey","math","mathematically","mathematician","mathematicians","mathematics","matinee","mating","matriarch","matrimonial","matrimony","matrix","matron","mats","matt","matted","matter","mattered","matters","mattress","mattresses","mature","matured","maturity","matzah","matzoh","maudlin","maul","mauled","mausoleum","maverick","mavis","maw","max","maxi","maxim","maximize","maximum","maxwell","may","maya","mayan","maybe","maybes","mayday","mayflower","mayflowers","mayhem","mayo","mayonnaise","mayor","mayoral","mayors","maze","me","mead","meadow","meadows","meager","meal","meals","mealy","mean","meaner","meanest","meanie","meaning","meaningful","meaningless","meanings","meanness","means","meant","meantime","meanwhile","measles","measly","measure","measured","measurements","measures","measuring","meat","meatball","meatballs","meathead","meatloaf","meats","meaty","mecca","mechanic","mechanical","mechanics","mechanism","mechanisms","med","medal","medals","meddle","meddled","meddlesome","meddling","medevac","media","mediator","medic","medicaid","medical","medically","medicare","medicate","medicating","medication","medications","medicine","medicines","medics","medieval","medina","mediocre","mediocrity","meditate","meditating","meditation","mediterranean","medium","medley","medusa","meet","meeting","meetings","meets","megaphone","mel","melancholy","melding","mellow","mellowed","mellowing","melodrama","melodramatic","melody","melon","melons","melt","meltdown","melted","melting","melts","member","members","membership","membrane","membranes","memento","mementos","memo","memoirs","memorabilia","memorable","memorial","memories","memorize","memorized","memorizing","memory","memos","men","menace","menacing","menage","menagerie","mend","mended","mending","menial","meningitis","menopausal","menopause","menorah","mensa","menstrual","mental","mentality","mentally","mention","mentioned","mentioning","mentions","mentor","menu","menus","meow","mercenaries","mercenary","mercer","merchandise","merchandising","merchant","merciful","mercilessly","mercury","mercy","mere","merely","merger","mergers","merging","meridian","meringue","merit","merits","merl","merle","merlot","mermaid","mermaids","merman","merrier","merrily","merry","mesa","mescaline","mesh","mesmerized","mesmerizing","mesquite","mess","message","messages","messed","messenger","messengers","messes","messier","messing","messy","met","meta","metabolic","metal","metallic","metals","metamorphosis","metaphor","metaphorical","metaphorically","metaphors","metaphysics","meteor","meteorite","meteors","meter","meters","meth","methadone","method","methodical","methodology","methods","meticulous","meticulously","metric","metro","metropolitan","mettle","mew","mezzanine","mi","mice","mick","mickey","micro","microbes","microchips","microfilm","microphone","microphones","microscope","microscopic","microwave","mid","middies","middle","middleman","middleweight","midge","midget","midgets","midland","midlife","midnight","midst","midterm","midterms","midtown","midway","midwestern","midwife","midwives","miffed","miggs","might","mightier","mighty","mignon","migraine","migrate","migration","mike","mikes","mil","mild","mildew","mildly","mile","mileage","miles","milestone","militant","militants","military","militia","milk","milked","milking","milkman","milky","mill","millennia","millennium","miller","millet","milligram","milligrams","millimeter","milling","million","millionaire","millionaires","millions","millisecond","mills","milo","milt","mime","mimes","mimic","mimicking","mimosas","mina","mince","mincemeat","mind","minded","mindful","minding","mindless","minds","mindset","mine","mined","minefield","miner","mineral","minerals","miners","mines","mingle","mini","miniature","minimal","minimalist","minimize","minimum","minimums","mining","minion","minions","miniscule","minister","ministers","ministry","minivan","mink","minks","minnow","minor","minorities","minority","minors","minstrel","mint","mints","minty","minus","minuscule","minuses","minute","minutes","miracle","miracles","miraculous","miraculously","mirage","mirror","mirrors","mirth","mis","misbehave","miscalculated","miscalculation","miscarriage","miscarry","miscellaneous","mischief","miscommunication","misconception","misconceptions","misconstrued","miscreant","misdeeds","misdemeanors","miserable","miserably","misery","misfit","misfits","misfortune","misgivings","misguided","mishandled","mishap","misheard","misinformed","misinterpret","misinterpretation","misinterpreted","misinterpreting","misjudged","mislead","misleading","misled","mismatched","misnomer","misogynistic","misplace","misplaced","misprint","misread","misreading","miss","missed","misses","missile","missiles","missing","mission","missionaries","missionary","missions","missis","misspelled","misspent","misspoke","missus","missy","mist","mistake","mistaken","mistakes","mister","mistletoe","mistook","mistreated","mistress","mistresses","mistrial","mistrust","misty","misunderstand","misunderstanding","misunderstandings","misunderstood","misuse","mite","mites","mitt","mitten","mittens","mitts","mitzvah","mix","mixed","mixer","mixers","mixes","mixing","mixture","mixup","mm","mo","moan","moaning","moans","moat","mob","mobile","mobility","mobilize","mobs","mobster","mocha","mock","mocked","mockery","mocking","mocks","mod","mode","model","modeled","modeling","modelling","models","modem","moderately","moderation","moderator","modern","modest","modesty","modicum","modification","modifications","modified","module","modus","mohair","mohel","moil","moist","moisture","moisturize","moisturizer","mojo","mol","molars","molasses","mold","molded","molding","moldings","molds","moldy","mole","molecular","molecule","molecules","moles","molest","molestation","molested","molester","molesting","moll","mollie","mollusk","molly","moloch","molten","molto","moly","mom","moment","momentarily","momentary","momento","moments","momentum","momma","mommies","mommy","moms","mon","monarchs","monarchy","monastery","monde","mondo","monetary","money","moneybags","moneymaker","moneys","monger","mongoloid","mongoose","mongrel","moniker","monitor","monitored","monitoring","monitors","monk","monkey","monkeys","monks","mono","monogamous","monogamy","monogrammed","monologue","monopolizing","monopoly","monoxide","monsieur","monsignor","monsoon","monster","monsters","monstrous","montage","monte","month","monthly","months","monument","monumental","monumentally","moo","mooch","moocher","mood","moods","moody","moola","moon","moonbeams","moonlight","moonlighting","moonlit","moons","moors","moose","moot","mop","mope","moped","mopes","mopey","moping","mopped","mopping","mops","mor","moral","morale","morales","morality","morally","morals","morbid","more","morello","moreover","morgan","morgue","morgues","morn","morning","mornings","morocco","moron","moronic","morons","morph","morphine","morris","morrow","morse","morsel","mort","mortal","mortality","mortals","mortar","mortars","mortgage","mortgages","mortified","mortifying","mortuary","mosey","mosque","mosquito","mosquitoes","mosquitos","moss","most","mostly","mote","motel","motels","moth","mothballs","mother","motherfucker","motherfuckers","motherfucking","motherhood","mothering","motherless","mothers","moths","motif","motion","motions","motivate","motivated","motivates","motivation","motivational","motivations","motive","motives","motley","motor","motorbike","motorcade","motorcycle","motorcycles","motorized","motors","motto","mould","moulin","mound","mounds","mount","mountain","mountaineer","mountains","mountainside","mountaintop","mounted","mounting","mourn","mourned","mourners","mourning","mouse","mousey","mousse","moustache","mousy","mouth","mouthed","mouthful","mouthing","mouthpiece","mouths","mouthwash","mouthy","move","moved","movement","movements","movers","moves","movie","movies","moving","mow","mowed","mower","mowers","mowing","moxie","mu","much","muchacho","muchachos","muck","muckraker","mucous","mucus","mud","muddle","muddy","muff","muffin","muffins","muffled","muffler","mug","mugged","mugger","muggers","mugging","muggings","muggy","mugs","mulberry","mulch","mule","mules","muley","mulled","muller","mullet","mulligan","mulling","multimedia","multimillion","multinational","multiple","multiples","multiplex","multiplication","multiplied","multiply","multitude","mum","mumble","mumbled","mumbles","mumbling","mummies","mummy","mumps","mums","munch","munching","munchkin","munchkins","mundane","munitions","mural","murals","murder","murdered","murderer","murderers","murderess","murdering","murderous","murders","murky","murmur","murphy","muscle","muscled","muscles","muscular","muse","muses","museum","museums","mush","mushroom","mushrooms","mushy","music","musical","musicals","musician","musicians","musing","musket","musketeer","musketeers","muskie","muskrat","muss","mussels","must","mustache","mustang","mustangs","mustard","muster","mutant","mutants","mutated","mutating","mute","mutilate","mutilated","mutilation","mutiny","mutt","mutton","mutual","mutually","muumuu","muzzle","my","myriad","myrtle","myself","mysteries","mysterious","mysteriously","mystery","mystic","mystical","mysticism","mystified","mystifying","myth","mythic","mythical","mythological","mythology","myths","na","nacho","nachos","nada","nag","nagged","nagging","nah","nail","nailed","nailing","nails","naive","naivete","naked","nam","name","named","nameless","namely","names","namesake","nametag","naming","nan","nana","nance","nancy","nannies","nanny","nanosecond","nanotechnology","nap","napalm","naphthalene","napkin","napkins","napoleon","napping","nappy","naps","narc","narcissism","narcissist","narcissistic","narcolepsy","narcotic","narcotics","narrative","narrator","narrow","narrowed","narrowing","narrowly","narrows","narwhal","nary","nasal","nastiest","nasty","nation","national","nationally","nationals","nations","native","natives","nativity","natty","natural","naturally","nature","natured","naught","naughty","nausea","nauseated","nauseating","nauseous","nautical","nautilus","naval","navigate","navigating","navigation","navigational","navigator","navy","naw","nay","nazi","nazis","ne","near","nearby","nearest","nearly","neat","neatly","neatness","nebula","necessarily","necessary","necessity","neck","necking","necklace","necklaces","neckline","necks","necromancer","necrosis","nectar","nee","need","needed","neediness","needing","needle","needlepoint","needles","needless","needlessly","needs","needy","nefarious","negate","negative","negatively","negatives","negativity","neglect","neglected","neglectful","neglecting","negligee","negligence","negligent","negligible","negotiable","negotiate","negotiated","negotiating","negotiation","negotiations","negotiator","neighbor","neighborhood","neighborhoods","neighboring","neighborly","neighbors","neighbour","neighbours","neither","nellie","nelly","nelson","neon","neonatal","nephew","nephews","nepotism","nerd","nerds","nerdy","nerve","nerves","nervous","nervously","nervousness","ness","nest","net","nether","network","networking","networks","neural","neurological","neurologist","neurology","neuroses","neurosis","neurosurgeon","neurosurgery","neurotic","neutered","neutral","neutralize","neutralized","neutron","neve","never","nevermore","nevertheless","new","newborn","newborns","newcomer","newcomers","newest","newfound","newly","newlywed","newlyweds","news","newscast","newsletter","newsman","newspaper","newspapers","newsroom","newsstand","newsstands","newt","newton","next","nexus","nibble","nibbling","nice","nicely","nicer","nicest","niceties","niche","nick","nicked","nickel","nickels","nickname","nicknamed","nicknames","nicks","nicotine","niece","nieces","nifty","nigger","niggers","nigh","night","nightcap","nightclub","nightfall","nightgown","nighthawk","nightingale","nightlife","nightly","nightmare","nightmares","nightmarish","nights","nightstand","nightstick","nighttime","nighty","nihilist","nil","nimrod","nine","nines","nineteen","nineteenth","nineties","ninety","ninja","ninny","ninth","nip","nipped","nipper","nipping","nipple","nipples","nippy","nirvana","nite","nitrogen","nitroglycerin","nitrous","nitty","nitwit","nix","nixed","no","nobility","noble","nobleman","nobodies","nobody","nocturnal","nod","nodded","nodding","node","nodes","nods","nodules","noel","noggin","noh","noir","noise","noises","noisy","nomad","nomadic","nomads","nome","nominal","nominate","nominated","nominating","nomination","nominations","nominee","nominees","nonchalant","none","nonetheless","nonexistent","nonissue","nonnegotiable","nonsense","nonsensical","nonstop","nonviolent","noo","noodle","noodles","noon","noose","nope","nor","nordic","norland","norm","normal","normalcy","normally","north","northeast","northeastern","norther","northern","northwest","northwestern","nos","nose","nosebleeds","nosed","nosedive","noses","nosey","nosh","nosing","nostalgia","nostalgic","nostril","nostrils","nosy","not","notable","notably","notary","notation","notch","notches","note","notebook","noted","notepad","notes","nothing","nothings","notice","noticeable","noticeably","noticed","notices","noticing","notification","notified","notify","noting","notion","notions","notorious","notoriously","notwithstanding","nougat","noun","nourish","nourishing","nourishment","nous","nouveau","nova","novel","novelist","novels","novelty","novocaine","now","nowadays","nowhere","noxious","nozzle","nu","nuance","nuances","nub","nubile","nuclear","nude","nudes","nudge","nudie","nudist","nudity","nuggets","nuisance","nuke","nuked","nukes","null","numb","number","numbered","numbers","numbing","numbness","numerous","nun","nunnery","nuns","nuptial","nuptials","nurse","nursed","nursery","nurses","nursing","nurtured","nurturing","nut","nutcase","nutcracker","nuthouse","nutmeg","nutrition","nutritional","nutritionist","nutritious","nuts","nutshell","nuttier","nutty","nylon","nylons","nymph","nympho","nymphomaniac","oaf","oak","oaks","oar","oars","oasis","oath","oaths","oatmeal","oats","obese","obey","obeyed","obeying","obi","obits","obituary","object","objected","objecting","objection","objectionable","objections","objective","objectives","objectivity","objects","obligated","obligation","obligations","obligatory","oblige","obliged","oblique","obliterate","obliterated","oblivion","oblivious","obnoxious","oboe","obscene","obscenities","obscenity","obscure","obscured","obscurity","observable","observant","observation","observations","observatory","observe","observed","observer","observers","observing","obsess","obsessed","obsessing","obsession","obsessions","obsessive","obsessively","obsolete","obstacle","obstacles","obstetrician","obstinate","obstructed","obstruction","obtain","obtained","obtuse","obvious","obviously","occasion","occasional","occasionally","occasions","occult","occupancy","occupant","occupants","occupation","occupational","occupations","occupied","occupy","occupying","occur","occurred","occurrence","occurrences","occurs","ocean","oceanographic","oceans","octane","octopus","od","odd","oddball","oddest","oddly","odds","ode","odious","odor","odorless","odyssey","oedipal","of","off","offbeat","offence","offend","offended","offender","offenders","offending","offends","offense","offensive","offer","offered","offering","offerings","offers","office","officer","officers","offices","official","officially","officials","officiate","offing","offs","offset","offshore","offspring","often","oftentimes","ogle","ogling","ogre","ogres","oh","ohm","oho","oil","oiled","oils","oily","oink","ointment","okay","okayed","okeydokey","okra","old","olden","older","oldest","oldie","olds","ole","olfactory","olive","olives","om","omega","omelet","omelette","omelettes","omen","omens","ominous","omitted","omnipotent","on","onboard","once","oncology","oncoming","one","ones","oneself","ongoing","onion","onions","only","onstage","onto","onward","oodles","ooh","oomph","oops","ooze","oozing","op","opal","open","opened","opener","openers","opening","openings","openly","openness","opens","opera","operas","operate","operated","operates","operating","operation","operational","operations","operative","operatives","operator","opinion","opinionated","opinions","opium","opponent","opponents","opportune","opportunist","opportunities","opportunity","opposable","oppose","opposed","opposing","opposite","opposites","opposition","oppress","oppression","oppressive","ops","opted","optic","optimism","optimist","optimistic","optimum","option","optional","options","optometrist","opus","or","oracle","oracles","oral","orally","orange","oranges","orator","orb","orbed","orbing","orbit","orbital","orbiting","orbs","orchard","orchestra","orchestrate","orchestrated","orchestrating","ordeal","order","ordered","ordering","orderlies","orderly","orders","ordinance","ordinarily","ordinary","ordinate","ordinates","ordnance","ore","oregano","organ","organic","organisation","organise","organised","organism","organisms","organization","organizations","organize","organized","organizer","organizing","organs","orgasm","orgasmic","orgasms","orgies","orgy","oriental","orientation","oriented","orienteering","origami","origin","original","originality","originally","originals","originating","origins","orioles","ornament","ornamental","ornaments","ornate","ornery","orphan","orphanage","orphaned","orphans","ort","orthodontist","orthodox","orthopedic","os","ose","ostensibly","ostracized","ostrich","other","others","otherwise","otherworldly","otter","otto","ottoman","ouch","ought","ounce","ounces","our","ours","ourselves","out","outage","outback","outbid","outbound","outbreak","outburst","outcast","outcasts","outcome","outdated","outdid","outdo","outdone","outdoor","outdoors","outdoorsy","outer","outfield","outfit","outfits","outfitted","outgoing","outgrew","outgrow","outgrown","outhouse","outing","outlander","outlandish","outlast","outlaw","outlawed","outlaws","outlet","outlets","outline","outlined","outlines","outlive","outlived","outlook","outnumber","outnumbered","outpatient","outpost","outpouring","outrage","outraged","outrageous","outrageously","outrank","outright","outrun","outs","outset","outside","outsider","outsiders","outskirts","outsmarted","outspoken","outstanding","outvoted","outward","outweigh","outwit","outwitted","oval","ovarian","ovaries","ovation","oven","over","overachiever","overactive","overall","overalls","overanxious","overbearing","overbite","overblown","overboard","overcame","overcast","overcharge","overcome","overcoming","overcompensating","overcooked","overcrowded","overdid","overdo","overdone","overdose","overdosed","overdressed","overdrive","overdue","overestimate","overestimated","overexcited","overflow","overflowing","overgrown","overhaul","overhead","overhear","overheard","overhearing","overheated","overheating","overjoyed","overkill","overlap","overlapping","overload","overlook","overlooked","overlooking","overly","overnight","overnights","overpaid","overpass","overpower","overpriced","overprotective","overqualified","overrated","overreact","overreacted","overreacting","overreaction","override","overrule","overruled","overrun","overseas","oversee","overseeing","oversensitive","oversight","oversized","oversleep","overslept","overstating","overstay","overstayed","overstep","overstepping","overstress","overtaken","overthink","overtime","overtired","overtures","overturned","overview","overweight","overwhelm","overwhelmed","overwhelming","overwhelmingly","overwhelms","overworked","overwrought","ovulating","ow","owe","owed","owes","owing","owl","owls","own","owned","owner","owners","ownership","owning","owns","ox","oxen","oxford","oxygen","oxymoron","oy","oyez","oyster","oysters","ozone","pa","pac","pace","paced","pacemaker","pacer","paces","pachyderm","pacific","pacifier","pacifist","pacing","pack","package","packages","packed","packer","packet","packets","packing","packs","pact","pad","padded","padding","paddle","paddles","paddling","paddock","paddy","padlock","padre","pads","paella","pagan","page","pageant","paged","pager","pagers","pages","paging","pah","paid","pail","pain","pained","painful","painfully","painkiller","painkillers","painless","pains","paint","paintbrush","painted","painter","painters","painting","paintings","paints","pair","paired","pairs","paisley","pajama","pajamas","pal","palace","palaces","pale","paleontologist","paleontology","paler","pales","palette","palm","palmer","palms","palomino","palp","palpable","palpitations","pals","palsy","paltry","pam","pamper","pampered","pampering","pampers","pamphlet","pamphlets","pan","panache","panama","pancake","pancakes","pancreatic","panda","pandering","pandora","pane","panel","panels","panhandle","panic","panicked","panicking","panicky","panics","panned","pans","pansy","pant","pantaloons","pantheon","panther","panties","panting","pantry","pants","panty","pantyhose","pap","papa","paparazzi","papayas","paper","paperback","paperboy","papers","paperweight","paperwork","pappy","paprika","par","para","parable","parabolic","parachute","parachutes","parachuting","parade","paradigm","parading","paradise","paradox","paragon","paragraph","paragraphs","parakeet","paralegal","parallel","parallels","paralysis","paralyze","paralyzed","paralyzing","paramedic","paramedics","parameters","paramilitary","paramour","paranoia","paranoid","paranormal","paraphernalia","parasailing","parasite","parasites","parasitic","paratrooper","paratroopers","parchment","pardner","pardon","pardoned","pardons","pare","parent","parental","parenthood","parenting","parents","parfait","paris","parish","parishioner","parishioners","park","parka","parked","parker","parking","parks","parkway","parliament","parliamentary","parlor","parlors","parlour","parody","parole","paroled","parrot","parrots","parsley","parsons","part","parted","partial","partially","participant","participants","participate","participated","participating","participation","particle","particles","particular","particularly","particulars","partied","parties","parting","partisan","partly","partner","partnered","partners","partnership","partnerships","parton","partridge","parts","party","partying","pas","pass","passable","passage","passages","passageway","passageways","passed","passenger","passengers","passer","passes","passing","passion","passionate","passionately","passions","passive","passkey","passport","passports","password","past","pasta","paste","pasted","pastels","pasties","pastime","pastor","pastrami","pastry","pasts","pasture","pastures","pat","patch","patched","patches","patching","patchouli","pate","patent","patented","patently","patents","paternal","paternity","path","pathetic","pathetically","pathogen","pathological","pathologically","pathologist","pathology","pathos","paths","pathways","patience","patient","patiently","patients","patio","patois","patriarch","patriot","patriotic","patriots","patrol","patrolled","patrolling","patrolman","patrolmen","patron","patronize","patronized","patronizing","patrons","patsy","patten","patter","pattern","patterns","patties","patting","patty","pause","pauses","pave","paved","pavement","pavilion","paving","paw","pawing","pawn","pawning","pawnshop","paws","pax","pay","payable","payback","paycheck","paychecks","payday","paying","payload","payment","payments","payoff","payoffs","payroll","pays","pe","pea","peace","peaceful","peacefully","peacemaker","peacetime","peach","peaches","peachy","peak","peaked","peaks","peanut","peanuts","pear","pearl","pearls","pearly","peas","peasant","peat","pebble","pecan","pecans","peck","pecked","pecker","peckers","pecking","peckish","pecks","pecs","peculiar","pedal","pedaling","pedals","peddle","peddler","peddling","pedestal","pedestrian","pedestrians","pediatric","pediatrician","pediatrics","pedicure","pedicures","pedigree","pedophile","pedro","pee","peed","peeing","peek","peeked","peeking","peeks","peel","peeled","peeling","peels","peep","peepers","peeping","peeps","peer","peering","peerless","peers","pees","peeved","peg","pegged","peignoir","pele","pellet","pellets","pelt","pelting","pelts","pelvic","pemmican","pen","penal","penalize","penalized","penalty","penance","pence","pencil","pencils","pendant","pending","penetrate","penetrated","penetrating","penetration","penguin","penguins","penicillin","peninsula","penis","penises","penitentiary","pennant","penne","penned","pennies","penniless","penny","pens","pension","pensioners","pensions","pentagon","pentagram","penthouse","peon","people","peoples","pep","pepper","peppermint","pepperoni","peppers","per","perceive","perceived","percent","percentage","percentages","percentile","perception","perceptions","perceptive","perch","perchance","perched","percolating","perennial","perfect","perfecting","perfection","perfectionist","perfectly","perfecto","perform","performance","performances","performed","performer","performers","performing","performs","perfume","perfumed","perfumes","perhaps","peril","perils","perimeter","perimeters","period","periodic","periods","peripheral","periphery","periscope","perish","perishable","perished","perjure","perjured","perjury","perk","perks","perky","perm","permanent","permanently","permissible","permission","permit","permits","permitted","permitting","peroxide","perpetrate","perpetrated","perpetrator","perpetrators","perpetual","perpetuating","perry","persecute","persecuted","persecuting","persist","persistence","persistent","persists","persnickety","person","persona","personable","personal","personalities","personality","personalize","personalized","personally","personals","personified","personnel","persons","perspective","perspectives","perspiration","persuade","persuaded","persuasion","persuasive","pertaining","pertains","pertinent","perturbed","peruse","perverse","perversion","pervert","perverted","perverts","pesky","pesos","pessimist","pessimistic","pest","pester","pestering","pesticides","pestilence","pesto","pests","pet","petal","petals","peter","peters","petit","petite","petition","petitioner","petitioning","petrified","petrol","petroleum","pets","petticoat","petting","petty","pew","pewter","pfft","phantom","phantoms","pharaoh","pharaohs","pharmaceutical","pharmaceuticals","pharmacist","pharmacy","phase","phased","phases","phasing","pheasant","pheasants","phenomena","phenomenal","phenomenally","phenomenon","pheromones","phew","phi","philandering","philanthropist","philharmonic","philosopher","philosophers","philosophical","philosophies","philosophy","phobia","phobias","phobic","phoebe","phoenix","phone","phoned","phones","phoney","phonies","phony","phooey","phosphate","phosphorous","photo","photocopy","photogenic","photograph","photographed","photographer","photographers","photographic","photographing","photographs","photography","photos","phrase","phrases","physic","physical","physically","physicals","physician","physicist","physicists","physics","physiological","physiologically","physiology","physique","pi","pianist","piano","pianos","piazza","pic","pick","picked","picker","picket","picketing","picking","pickings","pickle","pickled","pickles","pickpocket","pickpockets","picks","pickup","pickups","picky","picnic","picnics","picture","pictured","pictures","picturing","piddles","piddling","pie","piece","pieced","pieces","piecing","pied","pier","pierce","pierced","piercing","pies","piffle","pig","pigeon","pigeons","piggies","piggy","piggyback","pigheaded","piglet","pigs","pigskin","pigsty","pigtails","pike","pilar","pile","piled","piles","pilgrim","pilgrimage","pilgrims","piling","pill","pillage","pillar","pillars","pillow","pillows","pills","pilot","pilots","pimp","pimped","pimping","pimple","pimples","pimply","pin","pina","pinafore","pinata","pinball","pinch","pinched","pinches","pinching","pincushion","pine","pineapple","pineapples","pinecone","pines","ping","pinhead","pinheads","pining","pink","pinkie","pinks","pinky","pinned","pinning","pinochle","pinot","pinpoint","pinpointed","pins","pint","pinto","pints","pioneer","pious","pip","pipe","pipeline","piper","pipes","piping","piqued","piranhas","pirate","pirated","pirates","pis","piss","pissant","pissed","pisses","pissing","pistachio","pistachios","pistol","pistols","piston","pistons","pit","pitch","pitched","pitcher","pitchers","pitches","pitchfork","pitching","pitfalls","pithy","pitied","pitiful","pits","pittance","pitted","pitting","pity","pitying","pivot","pivotal","pixels","pixie","pixies","pixilated","pizza","pizzas","placate","place","placebos","placed","placement","places","placid","placing","plague","plagued","plagues","plaguing","plaid","plain","plainclothes","plainly","plains","plaintiff","plaintiffs","plait","plan","plane","planes","planet","planetarium","planetary","planets","planing","plank","plankton","planned","planner","planners","planning","plans","plant","plantation","plantations","planted","planting","plants","plaque","plasma","plaster","plastered","plastic","plate","plateau","plateaued","plated","platelets","plates","platform","platforms","plating","platinum","platitudes","platonic","platoon","platter","platters","platypus","plausible","play","playa","playbook","playboy","playboys","played","player","players","playful","playground","playgrounds","playhouse","playing","playmate","playoffs","playroom","plays","plaything","playthings","playtime","playwright","plaza","plea","plead","pleaded","pleading","pleadings","pleads","pleas","pleasant","pleasantly","pleasantries","please","pleased","pleaser","pleases","pleasing","pleasure","pleasures","pleasuring","pled","pledge","pledged","pledges","pledging","plenty","plethora","pliers","plight","plop","plot","plots","plotted","plotting","plow","plowed","plowing","ploy","pluck","plucked","plucking","plucky","plug","plugged","plugging","plugs","plum","plumber","plumbers","plumbing","plummet","plummeted","plummeting","plump","plums","plunder","plunge","plunging","plural","plus","pluses","plush","plutonium","pneumonia","poach","poached","poacher","poachers","poaching","pocket","pocketbook","pocketed","pocketful","pockets","pod","podiatrist","podiatry","podium","pods","poem","poems","poet","poetic","poetry","poets","poi","poignant","point","pointe","pointed","pointer","pointers","pointing","pointless","points","pointy","poise","poised","poison","poisoned","poisoning","poisonous","poisons","poke","poked","poker","pokes","pokey","poking","polar","polarity","pole","polecat","poles","police","policeman","policemen","policies","policing","policy","polio","polish","polished","polishing","polite","politely","political","politically","politician","politicians","politics","polka","poll","pollack","pollard","polled","pollen","polling","pollock","polls","pollute","polluting","pollution","polo","poltergeist","poltergeists","poly","polyester","polygraph","polymerization","pom","pomegranate","pompoms","pompous","poncho","pond","ponder","ponds","pong","ponies","pontoon","pony","ponytail","pooch","poodle","poodles","poof","poofs","poofy","pooh","pool","pooling","pools","poolside","poop","pooped","poor","poorer","poorest","poorhouse","poorly","pop","popcorn","pope","poppa","popped","popper","poppers","poppet","poppies","popping","poppy","poppycock","pops","popular","popularity","populated","population","populations","porcelain","porch","porcupine","pore","pores","poring","pork","porky","porn","porno","pornographers","pornographic","pornography","pornos","porridge","port","portable","portal","portals","portent","porter","porterhouse","portfolio","portion","portions","portrait","portraits","portray","portrayal","portrayed","portrays","ports","pose","posed","poser","poses","posies","posing","position","positioned","positioning","positions","positive","positively","positives","posse","posses","possess","possessed","possesses","possessing","possession","possessions","possessive","possibilities","possibility","possible","possibly","possum","post","postage","postal","postcard","postcards","posted","poster","posterior","posters","posting","postman","postmark","postmaster","postmortem","postpartum","postpone","postponed","postponement","postponing","posts","posttraumatic","posture","pot","potassium","potato","potatoes","potency","potent","potential","potentially","pothead","pothole","potholes","potion","potions","pots","potsie","potted","potter","pottery","potting","potty","pouch","poultry","pounce","pound","pounder","pounding","pounds","pour","poured","pouring","pours","pout","pouting","poverty","pow","powder","powdered","powders","power","powered","powerful","powerhouse","powering","powerless","powers","pox","practical","practicality","practically","practice","practiced","practices","practicing","practise","practising","practitioner","praetorians","pragmatic","pragmatist","prairie","praise","praised","praises","praising","pralines","pram","prance","prancer","prancing","prank","pranks","prankster","prattling","pray","prayed","prayer","prayers","praying","prays","preach","preached","preacher","preachers","preaching","preachy","preamble","precaution","precautionary","precautions","preceded","precedence","precedent","precedents","preceding","precinct","precious","precipice","precise","precisely","precision","precludes","precocious","preconceived","predator","predators","predatory","predecessor","predecessors","predicament","predict","predictable","predicted","predicting","predictions","predisposed","predisposition","prednisone","preeclampsia","preemptive","preface","prefer","preferable","preferably","preference","preferences","preferred","prefers","prefix","pregnancies","pregnancy","pregnant","prehistoric","prejudice","prejudiced","prejudicial","prelim","preliminary","prelude","premarital","premature","prematurely","premed","premeditated","premier","premiere","premise","premises","premium","premiums","premonition","premonitions","prenatal","preoccupied","prep","preparation","preparations","prepare","prepared","preparing","preposterous","prepped","preppie","prepping","preppy","prerequisite","prerogative","preschool","prescribe","prescribed","prescribes","prescribing","prescription","prescriptions","presence","present","presentable","presentation","presented","presenting","presently","presents","preservation","preservatives","preserve","preserved","preserver","preserves","presets","preside","presided","presidency","president","presidential","presidents","presiding","press","pressed","presses","pressing","pressman","pressure","pressured","pressures","pressuring","prestige","prestigious","presto","presumably","presume","presumed","presuming","presumptuous","pretend","pretended","pretending","pretends","pretense","pretenses","pretentious","pretext","pretrial","prettier","prettiest","pretty","pretzel","pretzels","prevail","prevailed","prevails","prevent","preventative","prevented","preventing","prevention","preventive","prevents","preview","previous","previously","prey","preyed","preying","preys","price","priced","priceless","prices","pricey","prick","pricked","prickly","pricks","pride","prided","priest","priesthood","priests","prim","prima","primal","primaries","primarily","primary","primate","primates","prime","primed","primer","primitive","primo","primordial","primping","prince","princely","princes","princess","princesses","principal","principals","principle","principles","print","printed","printer","printers","printing","prints","prior","priorities","prioritize","prioritizing","priority","priors","prison","prisoner","prisoners","prisons","priss","prissy","privacy","private","privately","privilege","privileged","privileges","privy","prize","prized","prizes","pro","proactive","probability","probable","probably","probate","probation","probationary","probe","probes","problem","problematic","problems","procedural","procedure","procedures","proceed","proceeded","proceeding","proceedings","proceeds","process","processed","processes","processing","procession","processional","processors","proclaimed","proclivities","procrastinate","procrastinating","procrastination","procreate","proctologist","procure","procured","prod","prodded","prodding","prodigal","produce","produced","producer","producers","produces","producing","product","production","productions","productive","productivity","products","prof","profanity","profess","professed","profession","professional","professionalism","professionally","professionals","professor","professors","profile","profiles","profiling","profit","profitable","profits","profound","profoundly","profusely","progeny","prognosis","program","programme","programmed","programmer","programming","programs","progress","progressed","progresses","progressing","progression","progressive","prohibit","prohibited","prohibition","prohibits","project","projected","projectile","projecting","projection","projections","projector","projects","proliferation","prolong","prolonged","prom","promenade","prominent","promiscuous","promise","promised","promises","promising","promo","promote","promoted","promotes","promoting","promotion","promotions","prompt","prompter","prompting","promptly","proms","prone","pronounce","pronounced","pronouns","pronto","pronunciation","proof","proofed","proofing","proofs","prop","propaganda","propane","propelled","propellers","propensity","proper","properly","properties","property","prophecies","prophecy","prophesied","prophet","prophets","prophylactic","proportion","proportional","proportioned","proportions","proposal","proposals","propose","proposed","proposes","proposing","proposition","propositioning","propped","propping","proprietary","proprietor","propriety","props","propulsion","pros","prosciutto","prose","prosecute","prosecuted","prosecuting","prosecution","prosecutor","prosecutorial","prosecutors","prospect","prospective","prospector","prospects","prosper","prosperity","prostate","prosthetic","prostitute","prostitutes","prostitution","protect","protected","protecting","protection","protections","protective","protector","protectors","protects","protein","protest","protestant","protestants","protested","protesters","protesting","protestors","protests","proteus","protocol","protocols","protons","prototype","prototypes","protracted","protruding","proud","prouder","proudest","proudly","prove","proved","proven","provenance","proverb","proverbial","proves","provide","provided","providence","provider","provides","providing","provinces","proving","provision","provisional","provisions","provocation","provocations","provocative","provoke","provoked","provoking","provolone","prowess","prowl","prowler","proximity","proxy","prude","prudence","prudent","prudes","prune","prunes","pruning","pry","prying","psalm","pseudo","psi","psst","psych","psyche","psyched","psychiatric","psychiatrist","psychiatrists","psychiatry","psychic","psychically","psycho","psychoanalysis","psychoanalyze","psychobabble","psychological","psychologically","psychologist","psychologists","psychology","psychopath","psychopathic","psychopaths","psychos","psychosis","psychosomatic","psychotherapist","psychotherapy","psychotic","psychotics","pub","puberty","pubes","pubescent","pubic","public","publically","publication","publications","publicist","publicity","publicly","publish","published","publisher","publishers","publishing","puce","puck","pucker","pudding","puddle","puddles","puff","puffed","puffing","puffs","puffy","pug","puke","puking","pull","pulled","puller","pulling","pulls","pulmonary","pulp","pulpit","pulsating","pulse","pulses","pummel","pump","pumped","pumping","pumpkin","pumps","pun","punch","punched","punches","punching","punchy","punctual","punctuality","punctuation","puncture","punctured","pungent","punish","punished","punishes","punishing","punishment","punishments","punitive","punk","punks","punky","puns","punt","punters","puny","pup","pupil","pupils","puppet","puppeteer","puppets","puppies","puppy","purblind","purchase","purchased","purchases","purchasing","pure","puree","purely","purer","purest","purgatory","purge","purged","purging","purification","puritan","puritanical","puritans","purity","purple","purpose","purposefully","purposely","purposes","purr","purse","pursuant","pursue","pursued","pursuing","pursuit","pursuits","purview","pus","push","pushed","pusher","pushers","pushes","pushing","pushover","pushy","puss","pussies","pussy","pussycat","put","putrid","puts","putter","putting","putty","puzzle","puzzled","puzzles","puzzling","pygmies","pygmy","pyjamas","pyramid","pyramids","pyre","pyromaniac","pyrotechnics","quack","quacks","quad","quadrant","quahog","quaint","quake","quaker","quaking","qualifications","qualified","qualifies","qualify","qualifying","qualities","quality","qualms","quandary","quantities","quantity","quantum","quarantine","quarantined","quark","quarrel","quarreled","quarry","quart","quarter","quarterback","quarterbacks","quarters","quartet","queasy","queen","queens","queer","queers","quell","queller","query","quest","question","questionable","questioned","questioning","questionnaire","questions","queue","quibble","quiche","quick","quicker","quickest","quickie","quickly","quicksand","quid","quiet","quieter","quietly","quilt","quilting","quilts","quince","quinine","quintessential","quintet","quints","quintuplets","quirk","quirks","quirky","quit","quite","quits","quitter","quitters","quitting","quiver","quivering","quixote","quiz","quizmaster","quizzes","quota","quotation","quote","quoted","quotes","quoth","quoting","rabbi","rabbit","rabbits","rabble","rabid","rabies","raccoons","race","raced","racer","races","racetrack","racial","racing","racism","racist","rack","racked","racket","racketeer","racketeering","racking","racks","racquet","racquetball","racy","radar","radial","radiance","radiant","radiating","radiation","radiator","radical","radically","radio","radioactive","radioed","radiologist","radiology","radios","radish","radishes","radius","raffle","raft","rafting","rag","rage","rages","ragged","raggedy","ragging","raging","rags","ragtime","rah","raid","raided","raider","raiders","raiding","raids","rail","railing","railroad","railroading","railroads","rails","rain","rainbow","raincoat","rained","rainier","raining","rains","rainstorm","rainy","raise","raised","raiser","raisers","raises","raisin","raising","raisins","rajah","rake","raked","rallied","rally","rallying","ralph","ram","ramble","rambling","rambunctious","ramifications","rammed","ramp","rampage","ramrod","ramus","ran","ranch","rancher","ranchers","rancho","rancid","rand","random","randomly","randy","rang","range","ranger","rangers","ranges","ranging","rank","ranking","rankings","ranks","ransack","ransom","rant","ranting","rants","rap","rape","raped","rapes","rapid","rapidly","rapids","raping","rapist","rapists","rappers","raptor","raptors","rapture","rare","rarely","rarest","raring","rarity","rascals","rash","rashes","rashly","raspberry","rat","rate","rated","rates","rath","rather","rathole","rating","ratings","ratio","ration","rational","rationalize","rationalizing","rationally","rations","rats","ratted","ratting","rattle","rattled","rattles","rattlesnake","rattlesnakes","rattling","ratty","ravage","rave","raved","raven","ravenous","ravens","ravine","raving","ravings","ravish","ravishing","raw","rawhide","ray","rayed","rays","razor","razors","re","reach","reached","reaches","reaching","reacquaint","reacquainted","react","reacted","reacting","reaction","reactionary","reactions","reactive","reactor","reactors","reacts","read","reader","readers","readily","reading","readings","readout","reads","ready","real","realise","realised","realises","realism","realist","realistic","realistically","realities","reality","realization","realize","realized","realizes","realizing","really","realm","realms","realty","ream","reamed","reap","reaper","reapers","reappear","reappeared","reappears","rear","reared","rearing","rearrange","rearranging","rears","reason","reasonable","reasonably","reasoned","reasoning","reasons","reassemble","reassign","reassigned","reassigning","reassignment","reassurance","reassure","reassuring","reattach","rebate","rebel","rebelling","rebellion","rebellious","rebels","rebirth","reboot","reborn","rebound","rebounds","rebuild","rebuilding","rebuilt","rebuttal","rec","recall","recalled","recalling","recant","recanted","recanting","recap","recapture","recaptured","receding","receipt","receipts","receive","received","receiver","receives","receiving","recent","recently","reception","receptionist","receptive","recess","recession","recharge","recheck","rechecked","recipe","recipes","recipient","reciprocal","recital","recitals","recitation","recite","reciting","reckless","recklessly","recklessness","reckon","reckoned","reckoning","reclaim","reclaiming","recliner","reclining","reclusive","recognise","recognised","recognition","recognizable","recognizance","recognize","recognized","recognizes","recognizing","recollection","recombinant","recommend","recommendation","recommendations","recommended","recommending","recommends","recon","reconcile","reconciled","reconciliation","reconciling","reconnaissance","reconnect","reconnected","reconnecting","reconsider","reconsidered","reconstruct","reconvene","record","recorded","recorder","recorders","recording","recordings","records","recount","recourse","recover","recovered","recovering","recovers","recovery","recreate","recreated","recreating","recreation","recreational","recrimination","recriminations","recruit","recruited","recruiter","recruiting","recruits","rectal","rectangle","rectify","rectory","rectum","recuperate","recuperating","recurring","recuse","recycle","recycles","recycling","red","reddish","redecorate","redecorating","redeem","redeeming","redefine","redemption","redevelopment","redhead","redheads","redial","redid","redirect","redneck","rednecks","redo","redone","redress","reds","redskins","reduce","reduced","reduces","reducing","reduction","redundancies","redundancy","redundant","redwood","ree","reed","reef","reefer","reefs","reek","reeking","reeks","reel","reelected","reelection","reeled","reeling","reels","reenter","reevaluate","reeve","reeves","refer","referee","reference","referenced","references","referencing","referendum","referendums","referral","referrals","referred","referring","refers","refill","refills","refined","refinement","refinery","refining","reflect","reflected","reflecting","reflection","reflective","reflects","reflex","reflexes","refocus","reform","reformed","reforms","refrain","refresh","refreshed","refreshing","refreshments","refrigerated","refrigerator","refrigerators","refueling","refuge","refugee","refugees","refund","refundable","refusal","refuse","refused","refuses","refusing","refute","regain","regained","regaining","regal","regard","regarded","regarding","regardless","regards","regatta","regency","regenerate","regenerated","regeneration","regent","reggae","regime","regimen","regiment","regimental","regimes","regina","region","regional","regionals","register","registered","registering","registrar","registration","registry","regret","regrets","regrettable","regrettably","regretted","regretting","regroup","regular","regularity","regularly","regulars","regulate","regulated","regulation","regulations","regurgitate","rehab","rehabilitate","rehabilitated","rehabilitation","rehash","rehashing","rehearsal","rehearsals","rehearse","rehearsed","rehearsing","reheat","reign","reigning","reigns","reimburse","reimbursed","rein","reincarnated","reindeer","reinforced","reinforcement","reinforcements","reinstate","reinstated","reinstatement","reinstating","reinvent","reinvented","reinventing","reiterate","reject","rejected","rejecting","rejection","rejections","rejects","rejoice","rejoicing","rejuvenate","rejuvenated","rejuvenating","rekindle","rekindled","relapse","relapsing","relate","related","relates","relating","relation","relations","relationship","relationships","relative","relatively","relatives","relativity","relax","relaxants","relaxation","relaxed","relaxes","relaxing","relay","release","released","releases","releasing","relegated","relentless","relentlessly","relevance","relevant","reliability","reliable","reliance","relic","relics","relief","relies","relieve","relieved","relieving","religion","religious","religiously","relinquish","relinquishing","relish","relive","reliving","reload","relocate","relocation","reluctant","reluctantly","rely","relying","rem","remain","remainder","remained","remaining","remains","remake","remark","remarkable","remarkably","remarked","remarks","remarried","remarry","rematch","remedial","remedied","remedies","remedy","remember","remembered","remembering","remembers","remembrance","remind","reminded","reminder","reminders","reminding","reminds","reminisce","remission","remitting","remnants","remodeled","remodelling","remorse","remote","remotely","removal","remove","removed","remover","removes","removing","renaissance","renal","rename","render","rendered","renders","rendezvous","renegade","renege","reneging","renegotiate","renew","renewal","renewed","renewing","renounce","renovate","renovating","renovation","renovations","renown","renowned","rent","rental","rentals","rented","renting","rents","reopen","reopened","reopening","reorganize","reorganizing","rep","repaid","repaint","repair","repaired","repairing","repairman","repairs","reparations","repartee","repay","repayment","repeal","repeat","repeated","repeatedly","repeating","repellent","repent","repentance","repercussions","repertoire","repetition","repetitious","repetitive","rephrase","replace","replaceable","replaced","replacement","replacements","replacing","replay","replaying","replenish","replica","replicate","replicating","replied","replies","reply","report","reported","reportedly","reporter","reporters","reporting","reports","repository","repossess","represent","representation","representations","representative","representatives","represented","representing","represents","repress","repressed","repression","reprieve","reprimand","reprimanded","reprisal","reprisals","reproach","reprobate","reproduction","reproductive","reprogram","reprogramming","reps","reptile","reptiles","reptilian","republic","republican","republicans","repugnant","repulsive","reputation","repute","reputed","request","requested","requesting","requests","requiem","require","required","requirement","requirements","requires","requiring","requisite","requisition","requisitions","reread","reroute","rerouted","reruns","res","reschedule","rescheduled","rescinded","rescue","rescued","rescuer","rescuers","rescues","rescuing","research","researcher","researchers","researching","reseda","resemblance","resemble","resembles","resembling","resent","resented","resentful","resenting","resentment","resentments","resents","reservation","reservations","reserve","reserved","reserves","reserving","reset","resetting","reshoot","reshoots","residence","residences","residency","resident","residents","resides","residing","residual","residue","resign","resignation","resigned","resigning","resilient","resin","resist","resistance","resistant","resisted","resisting","resolute","resolution","resolve","resolved","resolving","resonance","resort","resorted","resorts","resource","resourceful","resources","respect","respectability","respectable","respected","respectful","respectfully","respecting","respectively","respects","respiration","respirations","respirator","respiratory","respond","responded","responding","responds","response","responses","responsibilities","responsibility","responsible","responsibly","responsive","rest","restart","restaurant","restaurants","restaurateur","rested","restful","resting","restitution","restless","restorative","restore","restored","restoring","restrain","restraining","restraint","restraints","restrict","restricted","restriction","restrictions","restroom","restrooms","restructuring","rests","result","resulted","resulting","results","resume","resumed","resumes","resurfaced","resurrection","retail","retailers","retain","retained","retainer","retaining","retake","retaliate","retaliated","retaliating","retaliatory","retard","retarded","retest","rethink","rethinking","rethought","retina","retinal","retinas","retire","retired","retirement","retiring","retort","retract","retractable","retraction","retreat","retreated","retreating","retreats","retribution","retrieval","retrieve","retrieved","retrieving","retro","retrofit","retrograde","return","returned","returning","returns","reunion","reunions","reunite","reunited","reuniting","rev","revamp","reveal","revealed","revealing","reveals","revelation","revelations","reveling","revels","revenge","revenue","revenues","revere","revered","reverence","reverend","reverently","reversal","reverse","reversed","reversible","revert","reverts","review","reviewed","reviewer","reviewing","reviews","revise","revised","revising","revisions","revisit","revival","revive","revived","reviving","revoke","revoked","revoking","revolting","revolution","revolutionaries","revolutionary","revolutionize","revolutions","revolve","revolved","revolver","revolves","revolving","revulsion","reward","rewarded","rewarding","rewards","rewind","rewrite","rewrites","rewriting","rewritten","rewrote","rex","rhetorical","rhinestone","rhinestones","rhino","rhinoceros","rhyme","rhymed","rhymes","rhythm","rhythms","rialto","rib","ribbed","ribbon","ribbons","ribs","rice","rich","richer","riches","richest","rick","rickety","rickey","ricks","rickshaw","ricochet","rid","riddance","ridden","ridding","riddle","riddled","riddler","riddles","ride","rider","riders","rides","ridge","ridicule","ridiculed","ridiculous","ridiculously","riding","rife","riff","rifle","rifles","rifling","rift","rig","rigged","rigging","right","righteous","righteousness","rightful","rightfully","rightly","righto","rights","righty","rigid","rigor","rigorous","rigs","rile","riled","riley","rim","rin","ring","ringer","ringers","ringing","rings","ringside","rink","rinse","rinsing","rioja","riot","rioting","riots","rip","ripe","ripped","ripper","ripping","ripple","ripples","rippling","rips","rise","risen","rises","rising","risk","risked","risking","risks","risky","risotto","rite","rites","ritter","ritual","ritualistic","rituals","ritz","ritzy","rival","rivalry","rivals","river","riverbank","rivers","riverside","riveted","riveting","riviera","roach","road","roadblock","roadblocks","roadhouse","roadie","roadies","roads","roadster","roadway","roam","roaming","roar","roaring","roast","roasted","roasting","roasts","rob","robbed","robber","robberies","robbers","robbery","robbin","robbing","robbins","robe","robes","robin","robins","robot","robotic","robots","robs","robust","rock","rocked","rocker","rockers","rocket","rockets","rocking","rocks","rocky","rod","rode","rodent","rodents","rodeo","rodman","rods","roger","rogers","rogue","rogues","role","roles","rolf","roll","rolled","roller","rollers","rolling","rolls","rom","roman","romance","romances","romancing","romantic","romantically","romanticize","romeo","romp","romper","romping","roof","roofer","roofs","rooftop","rooftops","rook","rookie","rookies","room","roomful","roomie","rooming","roommate","roommates","rooms","roomy","roost","rooster","roosters","root","rooted","rooting","roots","rope","roped","ropes","roscoe","rose","rosebud","rosebuds","rosebush","rosemary","roses","rosin","roster","rosy","rot","rotary","rotate","rotated","rotates","rotating","rotation","rotisserie","roto","rots","rotted","rotten","rotting","rotunda","rouge","rough","roughage","rougher","roughing","roughly","roughnecks","roughriders","roulette","round","roundabout","rounded","rounding","rounds","rouse","rousing","roust","rousted","route","routed","router","routes","routine","routinely","routines","routing","rover","roving","row","rowan","rowboat","rowdy","rowing","rows","royal","royally","royals","royalties","royalty","rub","rubbed","rubber","rubbers","rubbing","rubbish","rubble","rube","rubes","rubies","rubs","ruby","ruckus","rudder","rude","rudely","rudeness","ruder","rudimentary","rue","ruff","ruffians","ruffle","ruffled","ruffles","rug","rugby","rugged","ruin","ruined","ruining","ruins","rule","ruled","ruler","rulers","rules","ruling","rum","rumba","rumble","rumbling","rumblings","rummaging","rummy","rumor","rumored","rumors","rumour","rumours","rump","rumpled","rumpus","run","runaround","runaway","runaways","rundown","rune","runes","rung","runner","runners","running","runny","runoff","runs","runt","runway","rupture","ruptured","rural","ruse","rush","rushed","rushes","rushing","rust","rusted","rustle","rusty","rut","ruth","ruthless","ruthlessly","rutting","rya","rye","sabbath","sabbatical","sabe","saber","sabers","sabin","sable","sabotage","sabotaged","sabotaging","sac","saccharine","sack","sacks","sacrament","sacred","sacrifice","sacrificed","sacrifices","sacrificial","sacrificing","sacrilege","sad","saddened","sadder","saddest","saddle","saddled","sade","sadist","sadistic","sadly","sadness","safari","safe","safeguard","safeguards","safely","safer","safes","safest","safety","saffron","saga","sage","sagging","sahib","said","sail","sailboat","sailboats","sailed","sailing","sailor","sailors","sails","saint","saintly","saints","saith","sake","sakes","saki","sal","salaam","salad","salads","salamander","salami","salaries","salary","sale","sales","salesman","salesmen","salesperson","saleswoman","salient","salina","salinas","saline","saliva","sally","salmon","salmonella","salon","saloon","salsa","salt","salted","saltines","saltwater","salty","salutations","salute","saluted","saluting","salvage","salvaged","salvaging","salvation","samaritan","same","sample","sampled","samples","sampling","samurai","sanatorium","sanctimonious","sanction","sanctioned","sanctity","sanctuary","sanctum","sand","sandal","sandals","sandalwood","sandbag","sandbar","sandbox","sanded","sanders","sanding","sandman","sandpaper","sands","sandstorm","sandwich","sandwiches","sandy","sane","sanest","sang","sangria","sanitarium","sanitary","sanitation","sanity","sank","sans","santo","santos","sap","sapiens","sapphire","sapphires","sappy","saps","saran","sarcasm","sarcastic","sarcoidosis","sarcophagus","sardine","sardines","sarge","sark","sashimi","sassy","sat","satanic","satchel","satellite","satellites","satin","satire","satisfaction","satisfactory","satisfied","satisfies","satisfy","satisfying","saturated","saturation","satyr","sauce","saucer","saucers","sauerkraut","saul","sauna","sausage","sausages","savage","savagely","savages","savannah","save","saved","saver","saves","savin","saving","savings","savior","saviour","savor","savored","savoring","savour","savvy","saw","sawdust","sawed","sawing","saws","sawyer","sax","saxophone","say","sayer","saying","sayings","sayonara","says","scab","scabby","scabs","scag","scald","scalding","scale","scaled","scales","scallions","scallop","scallops","scalp","scalped","scalpel","scalper","scalping","scam","scammed","scamming","scamp","scampered","scampi","scams","scan","scandal","scanned","scanner","scanners","scanning","scans","scant","scapegoat","scar","scarce","scarcely","scare","scarecrow","scared","scares","scarf","scarfing","scarier","scariest","scaring","scarlet","scarred","scars","scarves","scary","scat","scatter","scattered","scattering","scavenger","scavenging","scenario","scenarios","scene","scenery","scenes","scenic","scent","scented","scents","scepter","schedule","scheduled","schedules","scheduling","schematics","scheme","schemed","schemes","scheming","schiller","schizo","schizoid","schizophrenia","schizophrenic","schlep","schmo","schmooze","schmoozing","schmuck","schnapps","schnauzer","schnitzel","schnoz","scholar","scholarly","scholarship","scholarships","school","schoolboy","schooled","schoolgirl","schooling","schools","schoolteacher","schoolwork","schooner","science","sciences","scientific","scientist","scientists","scintillating","scissor","scissors","scoff","scolded","scolding","scoliosis","scone","scones","scoop","scooped","scooping","scoops","scoot","scooter","scope","scopes","scoping","scorch","scorched","scorcher","scorching","score","scoreboard","scored","scores","scoring","scorned","scorpion","scorpions","scot","scotch","scotches","scotia","scots","scottie","scoundrel","scoundrels","scoured","scourge","scout","scouted","scouting","scouts","scow","scrabble","scram","scramble","scrambled","scrambler","scrambling","scrap","scrapbook","scrape","scraped","scrapes","scraping","scrapings","scrapped","scrappy","scraps","scratch","scratched","scratches","scratching","scratchy","scrawny","scream","screamed","screamer","screaming","screams","screech","screeching","screen","screened","screening","screens","screw","screwball","screwdriver","screwed","screwing","screws","screwup","screwups","screwy","scribble","scribbled","scribbling","script","scripted","scripts","scripture","scriptures","scroll","scrolls","scrooge","scrotum","scrounge","scrounging","scrub","scrubbed","scrubbing","scrubs","scrunch","scruples","scrutinized","scrutiny","scry","scuba","scud","scuff","scuffle","scullery","sculptor","sculpture","sculptures","scum","scumbag","scumbags","scummy","scurry","scurrying","scurvy","scuttled","scuzzy","sea","seaboard","seafood","seagull","seal","sealed","sealing","seals","seam","seaman","seamen","seamless","seams","seamstress","seaplane","sear","search","searched","searches","searching","seared","sears","seas","seascape","seashell","seashells","season","seasonal","seasoned","seasons","seat","seated","seating","seats","seaweed","sec","secluded","seclusion","second","secondary","seconded","secondly","seconds","secrecy","secret","secretarial","secretaries","secretary","secretive","secretly","secrets","section","sections","sector","sectors","secure","secured","securely","securing","securities","security","sedan","sedate","sedated","sedation","sedative","sedatives","seduce","seduced","seduces","seducing","seduction","seductive","see","seed","seeds","seedy","seeing","seek","seeker","seekers","seeking","seeks","seem","seemed","seemingly","seems","seen","seep","seeping","seer","sees","seesaw","seg","segment","segments","segue","seismic","seize","seized","seizes","seizing","seizure","seizures","seldom","select","selected","selecting","selection","selections","selective","selectman","self","selfish","selfishly","selfishness","selfless","selflessness","sell","seller","selling","sells","seltzer","selves","semantics","semblance","semen","semester","semi","semiautomatic","seminal","seminar","seminars","seminary","semple","sen","senate","senator","senators","send","sender","sending","sendoff","sends","senile","senility","senior","seniors","senor","senora","senorita","sensation","sensational","sense","sensed","senseless","senses","sensibilities","sensibility","sensible","sensing","sensitive","sensitivity","sensor","sensors","sensory","sensual","sensuous","sent","sentence","sentenced","sentences","sentencing","sentient","sentiment","sentimental","sentiments","sentinel","sentinels","sentry","separate","separated","separately","separates","separating","separation","seppuku","septic","septum","sequel","sequence","sequences","sequencing","sequestered","sequined","sequins","ser","sera","serenade","serene","serenity","serge","sergeant","serial","series","serious","seriously","seriousness","sermon","sermons","serotonin","serpent","serum","servant","servants","serve","served","server","servers","serves","service","serviced","services","servicing","serving","servings","servitude","sesame","session","sessions","sesterces","set","setback","setbacks","sets","setting","settings","settle","settled","settlement","settlements","settles","settling","setup","seven","sevens","seventeen","seventeenth","seventh","seventies","seventy","sever","several","severance","severe","severed","severely","severity","sew","sewage","sewed","sewer","sewers","sewing","sewn","sex","sexes","sexier","sexiest","sexism","sexist","sexless","sexual","sexuality","sexually","sexy","sh","sha","shabbily","shabby","shack","shackle","shackled","shackles","shad","shade","shades","shading","shadow","shadowing","shadows","shadowy","shady","shaft","shafted","shag","shagged","shagging","shaggy","shah","shake","shaken","shaker","shakers","shakes","shaking","shaky","shale","shall","shallow","shallows","shalom","shalt","sham","shaman","shambles","shame","shamed","shameful","shameless","shaming","shampoo","shamrock","shanghai","shanghaied","shank","shanks","shape","shaped","shapely","shapes","shaping","shards","share","shared","shareholder","shares","sharing","shark","sharking","sharks","sharp","sharpened","sharpener","sharpening","sharpens","sharper","sharpest","sharply","sharpshooters","shat","shatter","shattered","shattering","shave","shaved","shaven","shaver","shaves","shaving","shaw","shawl","shawn","shay","she","shea","shear","shebang","shed","shedding","sheds","sheen","sheeny","sheep","sheepskin","sheer","sheet","sheets","sheila","sheldrake","shelf","shell","shelled","shellfish","shelling","shells","shelly","shelter","sheltered","shelters","shelve","shelves","shenanigans","shepherd","shepherds","sheriff","sherlock","sherry","shes","shh","shield","shielded","shields","shift","shifted","shifter","shifting","shifts","shifty","shill","shillings","shimmer","shimmering","shimmy","shin","shindig","shine","shines","shingle","shingles","shining","shins","shiny","ship","shipment","shipments","shipped","shipping","ships","shipshape","shipwreck","shipwrecked","shipyard","shirking","shirt","shirtless","shirts","shit","shithead","shits","shitting","shitty","shiv","shiva","shiver","shivering","shivers","shoal","shock","shocked","shocker","shocking","shockingly","shocks","shoddy","shoe","shoehorn","shoelace","shoelaces","shoemaker","shoes","shone","shoo","shook","shoot","shooter","shooters","shooting","shootings","shootout","shoots","shop","shopkeeper","shoplifter","shoplifters","shoplifting","shopped","shopper","shopping","shops","shore","shoreline","shores","short","shortage","shortcake","shortcomings","shortcut","shorted","shorten","shorter","shortest","shorthand","shorthanded","shortly","shortness","shorts","shortsighted","shortstop","shorty","shot","shotgun","shotguns","shots","should","shoulder","shoulders","shout","shouted","shouting","shouts","shove","shoved","shovel","shoveled","shoveling","shovels","shoves","shoving","show","showbiz","showcase","showdown","showed","shower","showered","showering","showers","showgirl","showing","shown","showoff","showroom","shows","showstopper","showy","shrapnel","shred","shredded","shredder","shreds","shrew","shrewd","shriek","shrieking","shrimp","shrine","shrink","shrinkage","shrinking","shrinks","shrivel","shriveled","shroud","shrouds","shrub","shrubbery","shrubs","shrug","shrugged","shrugging","shrugs","shrunk","shrunken","shtick","shuck","shucks","shuffle","shuffled","shuffling","shun","shunned","shunt","shush","shushing","shut","shutdown","shuts","shutters","shutting","shuttle","shuttles","shy","shylock","shyness","si","sibling","siblings","sic","sicced","sick","sicken","sickened","sickening","sickens","sicker","sickest","sickly","sickness","sicko","sickos","side","sidebar","sideboard","sideburns","sidecar","sided","sidekick","sidekicks","sideline","sidelines","sides","sideshow","sidetracked","sidewalk","sidewalks","sideways","sidewinder","siding","sidle","siege","sierra","siesta","sift","sifting","sigh","sighing","sighs","sight","sighted","sighting","sightings","sightless","sights","sigma","sign","signal","signaled","signaling","signals","signature","signatures","signed","significance","significant","significantly","signifies","signify","signifying","signing","signor","signora","signore","signs","sikes","silence","silenced","silences","silent","silicone","silk","silken","silks","silky","sill","silliest","silliness","silly","silva","silver","silverware","silvery","sim","similar","similarities","similarity","similarly","simmer","simony","simp","simple","simpler","simplest","simpleton","simpletons","simplicity","simplify","simplistic","simply","sims","simulate","simulated","simulates","simulation","simulations","simulator","simultaneously","sin","since","sincere","sincerely","sincerest","sincerity","sine","sinful","sing","singe","singed","singer","singers","singing","single","singles","singleton","singling","sings","sinister","sink","sinker","sinking","sinks","sinned","sinner","sinners","sins","sinus","sinuses","sip","siphoning","sipped","sipping","sir","sire","siree","siren","sirens","sirloin","sirree","sirs","sis","sissies","sissy","sister","sisterhood","sisters","sit","sitcom","sitcoms","site","sites","sits","sitter","sitters","sitting","situated","situation","situations","six","sixes","sixpence","sixteen","sixteenth","sixth","sixties","sixty","sizable","size","sizeable","sized","sizes","sizing","sizzle","sizzling","skag","skate","skateboard","skateboards","skated","skater","skaters","skates","skating","skedaddle","skeeters","skeletal","skeleton","skeletons","skeptic","skeptical","skepticism","sketch","sketches","sketching","sketchy","skewed","skewer","skewered","ski","skid","skidded","skids","skied","skier","skies","skiff","skiing","skill","skilled","skillet","skillful","skills","skim","skimmed","skimming","skimp","skimpy","skin","skinned","skinner","skinny","skins","skip","skipped","skipper","skipping","skirmish","skirmishes","skirt","skirts","skis","skit","skittish","skittles","skivvies","skulk","skull","skulls","skunk","sky","skylight","skyrocket","skyscraper","skyscrapers","slack","slacker","slackers","slacks","slam","slammed","slammer","slamming","slams","slander","slanderous","slang","slant","slanted","slap","slapped","slapping","slaps","slash","slashed","slasher","slashing","slate","slated","slater","slaughter","slaughtered","slaughterhouse","slaughtering","slave","slaved","slavery","slaves","slaw","slay","slayed","slayer","slayers","slaying","sleaze","sleazebag","sleazeball","sleazy","sled","sledding","sledge","sledgehammer","sleek","sleep","sleeper","sleepers","sleeping","sleepless","sleepover","sleepovers","sleeps","sleepwalk","sleepwalking","sleepy","sleepyhead","sleet","sleeve","sleeves","sleigh","sleight","slender","slept","sleuth","slew","slice","sliced","slicer","slices","slick","slicker","slid","slide","slider","slides","sliding","slight","slighted","slightest","slightly","slim","slime","slimmer","slimming","slimy","sling","slinging","slings","slingshot","slink","slinking","slinky","slip","slipped","slipper","slippers","slippery","slipping","slips","slit","slither","slithered","slithering","sliver","slob","slobbering","slogan","slogans","slop","slope","slopes","sloppy","sloshed","slot","slots","slouch","slough","slow","slowed","slower","slowest","slowing","slowly","sludge","slug","slugged","slugger","slugging","sluggish","slugs","slum","slumber","slumlord","slumming","slumped","slung","slur","slurp","slurping","slush","slut","sluts","slutty","sly","smack","smacked","smackers","smacks","small","smaller","smallest","smart","smartass","smarter","smartest","smarts","smarty","smash","smashed","smashes","smashing","smear","smeared","smearing","smears","smell","smelled","smelling","smells","smelly","smelt","smidgen","smile","smiled","smiles","smiley","smiling","smirk","smirking","smite","smith","smithereens","smithers","smitten","smock","smog","smoke","smoked","smoker","smokers","smokes","smokey","smoking","smoky","smoldering","smooch","smooching","smoochy","smooth","smoother","smoothest","smoothie","smoothly","smorgasbord","smother","smothered","smothering","smudge","smudged","smug","smuggle","smuggled","smuggler","smugglers","smuggling","smugness","snack","snacking","snacks","snag","snagged","snagging","snags","snails","snake","snakebite","snakes","snakeskin","snap","snapped","snapper","snapping","snappy","snaps","snapshot","snapshots","snarky","snarl","snarling","snatch","snatched","snatcher","snatchers","snatches","snatching","snazzy","sneak","sneaked","sneaker","sneakers","sneaking","sneaks","sneaky","sneer","sneeze","sneezed","sneezing","snicker","snickering","snickers","snide","sniff","sniffed","sniffing","sniffles","sniffling","snifter","snip","snipe","sniper","snipers","sniping","snit","snitch","snitches","snivelling","snob","snobby","snook","snoop","snooping","snoopy","snooty","snooze","snore","snores","snoring","snorkel","snorkeling","snort","snorted","snorting","snot","snotty","snout","snow","snowball","snowballed","snowballing","snowballs","snowbank","snowboard","snowed","snowflake","snowflakes","snowing","snowman","snowmen","snowmobile","snowmobiles","snowstorm","snowy","snub","snubbed","snuck","snuff","snug","snuggle","snuggled","snuggles","snuggling","so","soak","soaked","soaking","soap","soapbox","soaps","soapy","soar","soared","soaring","soars","sob","sobbing","sober","sobered","sobering","soberly","sobriety","sobs","soccer","sociable","social","socialism","socialite","socialize","socialized","socializing","socially","society","sociology","sociopath","sociopathic","sock","socked","socket","sockets","socks","sod","soda","sodas","sodding","sodium","sodomy","sofa","sofas","soft","softball","soften","softener","softening","softer","softest","softly","softness","software","softy","soggy","soil","soiled","soiree","sol","solace","solar","solarium","sold","soldier","soldiers","sole","solely","solemn","solenoid","soles","solicit","solicitation","solicited","soliciting","solicitor","solid","solidify","solitaire","solitary","solitude","solo","solution","solutions","solve","solved","solvent","solves","solving","somber","some","somebody","someday","somehow","someone","someplace","somerset","something","sometime","sometimes","someway","somewhat","somewhere","somewheres","son","sonar","sonata","song","songs","songwriter","sonics","sonnet","sonnets","sonny","sonogram","sons","sook","soon","sooner","soonest","soot","soothe","soothes","soothing","soothsayer","sop","sophisticated","sophistication","sophomore","soprano","sopranos","sorbet","sorcerers","sorcery","sordid","sore","sorel","sores","sororities","sorority","sorrel","sorrow","sorrows","sorry","sort","sorted","sorting","sorts","sos","sot","souffle","sought","soul","soulful","soulless","souls","sound","sounded","sounding","soundly","soundproof","sounds","soundstage","soup","soups","soupy","sour","source","sources","sourpuss","sous","souse","south","southbound","southeast","southern","southwest","souvenir","souvenirs","souvlaki","sovereign","sovereignty","soviet","soviets","sow","sowing","sown","sox","soy","soybean","spa","space","spacecraft","spaced","spaces","spaceship","spacey","spacing","spackle","spade","spades","spaghetti","span","spandex","spaniel","spank","spanked","spanking","spans","spar","spare","spared","spareribs","sparing","spark","sparked","sparkle","sparklers","sparkles","sparkling","sparkly","sparks","sparky","sparring","sparrow","spartan","spas","spasm","spasms","spastic","spat","spate","spatial","spatula","spawn","spawned","spaz","speak","speakeasy","speaker","speakerphone","speakers","speaking","speaks","spear","spears","special","specialise","specialist","specialists","specialize","specialized","specializes","specializing","specially","specials","specialties","specialty","species","specific","specifically","specifications","specifics","specified","specify","specimen","specimens","speck","specs","spectacle","spectacles","spectacular","spectacularly","spectator","spectators","specter","spectra","spectral","spectre","spectrum","speculate","speculating","speculation","speculations","speculative","speech","speeches","speechless","speed","speedboat","speedily","speeding","speedo","speedometer","speedos","speeds","speedway","speedy","spell","spelled","speller","spelling","spells","spelt","spence","spencer","spencers","spend","spender","spending","spends","spent","sperm","spew","spewing","sphere","sphinx","spic","spice","spices","spicy","spider","spiders","spied","spiel","spies","spike","spiked","spikes","spikey","spiking","spiky","spill","spilled","spilling","spills","spin","spinach","spinal","spindly","spine","spineless","spinner","spinning","spins","spinster","spiny","spiral","spiraling","spirals","spirit","spirited","spirits","spiritual","spirituality","spit","spite","spiteful","spitfire","spits","spitting","spitz","splash","splashing","splashy","splat","splatter","spleen","splendid","splendidly","splendor","spliced","splicing","splint","splinter","splinters","split","splits","splitting","splurge","spoil","spoiled","spoiler","spoiling","spoils","spoilsport","spoke","spoken","spokes","spokesman","spokesperson","sponge","sponges","sponsor","sponsored","sponsoring","sponsors","sponsorship","spontaneity","spontaneous","spontaneously","spook","spooked","spooking","spooks","spooky","spool","spoon","spoonful","spooning","spoons","spores","sport","sporting","sports","sportsmanship","sportswear","sporty","spot","spotless","spotlight","spotlights","spots","spotted","spotter","spotters","spotting","spotty","spouse","spouting","sprain","sprained","sprang","sprawled","spray","sprayed","spraying","sprays","spread","spreading","spreads","spreadsheet","spreadsheets","spree","sprightly","spring","springer","springing","springs","springtime","sprinkle","sprinkled","sprinkler","sprinklers","sprinkles","sprint","sprints","sprite","spritzer","sprouted","sprouting","sprouts","spruce","sprung","spry","spud","spun","spunk","spunky","spur","spurred","spurs","spurt","sputnik","spy","spying","squabble","squad","squadron","squads","squall","squalor","squander","squandered","square","squared","squarely","squares","squaring","squash","squashed","squashing","squat","squatter","squatters","squatting","squaw","squawk","squawking","squeak","squeaking","squeaks","squeaky","squeal","squealed","squeegee","squeeze","squeezed","squeezes","squeezing","squid","squiggle","squiggly","squinting","squire","squirm","squirrel","squirrels","squirt","squirts","squish","squished","squishing","sri","stab","stabbed","stabbing","stability","stabilize","stabilized","stabilizing","stable","stables","stack","stacked","stacks","stadium","staff","staffed","staffer","staffers","stag","stage","staged","stages","stagger","staggered","staggering","staggeringly","staging","stagnant","stain","stained","stainless","stains","stair","staircase","stairs","stairway","stairwell","stake","staked","stakeout","stakeouts","stakes","staking","stale","stalemate","stalk","stalked","stalker","stalkers","stalking","stalks","stall","stalled","stalling","stallion","stamina","stammering","stamp","stamped","stampede","stamper","stamps","stance","stand","standard","standardized","standards","standby","standing","standish","standoff","standpoint","stands","standstill","standup","stang","stanza","staple","stapled","stapler","star","starboard","stardom","stardust","stare","stared","stares","staring","stark","starlet","starlets","starling","starred","starring","starry","stars","starship","start","started","starter","starters","starting","startle","startled","startling","starts","startup","starvation","starve","starved","starving","stash","stashed","stasis","stat","state","stated","statehood","stately","statement","statements","stateroom","states","stateside","statesmen","statewide","static","stating","station","stationary","stationed","stationery","stations","statistic","statistical","statistically","statistics","stats","statuary","statue","statues","stature","status","statute","statutes","staunch","stave","stay","stayed","staying","stays","stead","steadfast","steadily","steady","steak","steaks","steal","stealer","stealing","steals","stealth","stealthy","steam","steamed","steamer","steaming","steamroll","steamroller","steamy","steed","steel","steely","steep","steer","steerage","steered","steering","stein","stella","stellar","stem","stemmed","stems","stench","steno","stenographer","step","stepfather","stepmother","steppe","stepped","stepping","steps","stepson","stereo","stereotype","stereotypes","sterile","sterilize","sterilized","sterling","stern","sterner","steroid","steroids","stethoscope","stew","stewardess","stewardesses","stewards","stewed","stick","sticker","stickers","sticking","stickler","sticks","stickup","sticky","stiff","stiffer","stifle","stifler","stifling","stigma","stigmata","stiles","stiletto","stilettos","still","stillness","stills","stilts","stimulated","stimulating","stimulation","stimuli","stimulus","sting","stinger","stinging","stingray","stings","stingy","stink","stinking","stinks","stinky","stint","stipulate","stipulated","stipulates","stipulation","stir","stirred","stirring","stirs","stitch","stitched","stitches","stitching","stock","stockbroker","stockbrokers","stocked","stockholder","stockholders","stocking","stockings","stockpile","stocks","stocky","stodgy","stoic","stoke","stoked","stokes","stole","stolen","stomach","stomachache","stomachs","stomp","stomped","stomper","stomping","stone","stoned","stoner","stones","stonewalled","stoney","stony","stood","stooge","stool","stoolie","stools","stoop","stooped","stooping","stop","stopped","stopping","stops","stopwatch","storage","store","stored","storeroom","stores","stories","storing","stork","storm","stormed","storming","storms","stormy","story","storybook","stove","stow","stowaway","stowaways","stowed","straddle","straddling","straight","straightaway","straighten","straightened","straightening","straightforward","straights","strain","strained","straining","strains","strait","straitjacket","straits","strand","stranded","strange","strangely","strangeness","stranger","strangers","strangest","strangle","strangled","stranglehold","strangler","strangling","strangulation","strap","strapless","strapped","strapping","straps","strategic","strategically","strategies","strategist","strategize","strategizing","strategy","straw","strawberries","strawberry","straws","stray","streak","streaks","stream","streaming","streamlined","streams","street","streetcar","streetlights","streets","streetwalker","strength","strengthen","strengths","strenuous","strenuously","strep","stress","stressed","stresses","stressful","stressing","stretch","stretched","stretcher","stretches","stretching","strewn","stricken","strict","strictly","stride","strides","strife","strike","strikes","striking","strikingly","string","stringing","strings","strip","stripe","striped","stripes","striping","stripped","stripper","strippers","stripping","strips","striptease","strive","striving","strobe","stroke","strokes","stroll","stroller","strolling","strolls","strong","strongbox","stronger","strongest","stronghold","strongly","struck","structural","structure","structured","struggle","struggled","struggles","struggling","strummer","strumpet","strung","strut","struts","strutting","strychnine","stub","stubbed","stubble","stubborn","stubs","stuck","stud","studded","student","students","studied","studies","studio","studios","studious","studly","studs","study","studying","stuff","stuffed","stuffing","stuffs","stuffy","stumble","stumbled","stumbles","stumbling","stump","stumped","stumper","stumps","stun","stung","stunk","stunned","stunning","stunningly","stunt","stunted","stuntman","stunts","stupendous","stupid","stupider","stupidest","stupidity","stupidly","stupor","sturdy","sturgeon","stutter","stuttering","sty","style","styled","styles","stylings","stylish","stylist","stymied","suave","sub","subatomic","subbasement","subbing","subcommittee","subconscious","subconsciously","subdued","subdural","subject","subjected","subjecting","subjective","subjects","subjugation","sublet","subletting","sublevel","sublimating","sublime","submarine","submarines","submersible","submissive","submit","submitted","submitting","subordinate","subpoena","subpoenaed","subpoenas","subscription","subscriptions","subsequently","subservient","subsided","subsidiary","subsidies","subsidize","subsidy","substance","substances","substantial","substantially","substantiate","substantive","substation","substitute","substituting","subterfuge","subterranean","subtext","subtitle","subtitled","subtitles","subtle","subtlety","subtly","suburb","suburban","suburbia","suburbs","subversive","subvert","subway","subways","subzero","succeed","succeeded","succeeds","success","successes","successful","successfully","succession","succinct","succotash","succubus","succulent","succumb","succumbed","such","suck","sucked","sucker","suckered","suckers","sucking","sucks","suction","sudden","suddenly","suds","sue","sued","suede","sues","suffer","suffered","suffering","suffers","suffice","sufficient","sufficiently","suffocate","suffocated","suffocating","suffocation","sugar","sugarcoat","sugarplum","sugars","sugary","suggest","suggested","suggesting","suggestion","suggestions","suggestive","suggests","suicidal","suicide","suicides","suing","suit","suitable","suitcase","suitcases","suite","suited","suites","suitor","suitors","suits","sulfur","sulk","sulking","sullen","sultan","sultry","sum","summarily","summarize","summary","summation","summed","summer","summers","summertime","summit","summon","summoned","summoning","summons","sumo","sump","sumptuous","sums","sun","sunbathing","sunblock","sunburn","sundae","sundaes","sundown","sundress","sunflower","sunflowers","sung","sunglasses","sunk","sunken","sunless","sunlight","sunning","sunny","sunrise","sunroom","sunscreen","sunset","sunsets","sunshine","sunspots","sunstroke","suntan","sup","super","superb","supercollider","superego","superficial","superfluous","superhero","superheroes","superintendent","superior","superiors","superman","supermarket","supermarkets","supermodel","supernatural","supernova","superpower","superpowers","superstar","superstars","superstition","superstitious","supervise","supervised","supervising","supervision","supervisor","superwoman","supper","suppertime","supple","supplement","supplements","supplied","supplier","supplies","supply","support","supported","supporter","supporting","supportive","supports","suppose","supposed","supposedly","supposition","suppress","suppressed","suppression","supremacy","supreme","supremely","sure","surely","surf","surface","surfaced","surfaces","surfboard","surfed","surfer","surfers","surfing","surge","surgeon","surgeons","surgeries","surgery","surgical","surgically","surging","surly","surname","surpass","surpassed","surplus","surprise","surprised","surprises","surprising","surprisingly","surreal","surrender","surrendered","surrendering","surrogate","surround","surrounded","surrounding","surroundings","surrounds","surveillance","survey","survival","survive","survived","survives","surviving","survivor","survivors","susceptible","sushi","suspect","suspected","suspects","suspend","suspended","suspenders","suspending","suspense","suspension","suspicion","suspicions","suspicious","suss","sustain","sustained","sustaining","sustenance","sutra","sutures","swab","swabs","swaddling","swallow","swallowed","swallowing","swallows","swam","swami","swamp","swamped","swamps","swan","swank","swanky","swans","swap","swapped","swapping","swarm","swarming","swastika","swat","swatch","swatches","swatting","sway","swayed","swaying","swear","swearing","swears","sweat","sweater","sweaters","sweating","sweatpants","sweats","sweatshirt","sweatshirts","sweatshop","sweatshops","sweaty","swede","swedes","sweep","sweeper","sweeping","sweeps","sweepstakes","sweet","sweetbreads","sweeter","sweetest","sweetheart","sweethearts","sweetie","sweetly","sweetness","sweets","swell","swelled","swelling","swells","sweltering","swept","swerve","swerving","swift","swig","swill","swilling","swim","swimmer","swimmers","swimming","swimmingly","swims","swimsuit","swimsuits","swindled","swine","swing","swingers","swinging","swings","swipe","swiped","swiping","swirl","swirling","swirly","swiss","switch","switchblade","switched","switcheroo","switches","switching","switchman","swivel","swizzle","swollen","swooning","swoop","swooped","swooping","swoops","sword","swordfish","swords","swore","sworn","swung","sycamore","sycophant","sykes","syllable","syllabus","symbiote","symbiotic","symbol","symbolic","symbolically","symbolism","symbolize","symbolizes","symbols","symmetrical","sympathetic","sympathies","sympathize","sympathy","symphony","symptom","symptomatic","symptoms","synagogue","synapses","synaptic","sync","synch","synchronicity","synchronize","synchronized","syndicate","syndicated","syndrome","syne","synergy","synonymous","synthesis","synthesize","synthetic","syphilis","syphon","syringe","syrup","system","systematic","systematically","systemic","systems","systolic","ta","tab","tabby","table","tableau","tablecloth","tablecloths","tables","tablespoon","tablet","tabloid","tabloids","tabs","tach","tachycardia","tacit","tack","tacked","tackle","tackled","tackles","tackling","tacks","tacky","taco","tacos","tact","tactful","tactic","tactical","tactics","tactile","tad","tadpole","tae","taffeta","taffy","tag","tagged","tagging","tags","tail","tailed","tailing","tailor","tailored","tailors","tails","tailspin","taint","tainted","taj","take","takedown","taken","takeoff","takeout","takeover","taker","takers","takes","takin","taking","talcum","tale","talent","talented","talentless","talents","tales","talisman","talk","talkative","talked","talker","talkie","talking","talks","talky","tall","taller","tallest","tallied","tally","talons","tamales","tambourine","tame","tammy","tamper","tampered","tampering","tampon","tampons","tan","tandem","tangent","tangerine","tangible","tangle","tangled","tangling","tango","tank","tanked","tanker","tankers","tanking","tanks","tanned","tanner","tanning","tantric","tantrum","tantrums","tap","tapas","tape","taped","tapered","tapes","tapeworm","taping","tapioca","tapped","tapping","tar","tarantulas","tardiness","tardy","target","targeted","targeting","targets","tarmac","tarnish","tarnished","tarot","tarp","tarragon","tarred","tart","tartar","tarts","tarzan","tas","task","tasks","tassels","taste","tasted","tasteful","tastes","tasting","tasty","tat","tate","tater","tattered","tattle","tattoo","tattooed","tattoos","tau","taught","taunt","taunted","taunting","taunts","taut","tavern","tawdry","tax","taxed","taxes","taxi","taxicab","taxidermist","taxing","taxis","taxpayer","taxpayers","tea","teach","teacher","teachers","teaches","teaching","teacup","teal","team","teamed","teaming","teammate","teammates","teams","teamsters","teamwork","teapot","tear","tearful","tearing","tears","teary","teas","tease","teased","teasing","teaspoon","teaspoons","technical","technicalities","technicality","technically","technician","technicians","technique","techniques","technological","technologically","technologies","technology","ted","teddy","tedious","tee","teed","teeming","teen","teenage","teenaged","teenager","teenagers","teens","teensy","teeny","teenybopper","teetering","teeth","telegram","telegrams","telegraph","telekinesis","telekinetic","telemarketing","telemetry","telepathic","telepathically","telepathy","telephone","telephones","teleport","teleportation","telescope","telescopic","telethon","televised","television","telex","tell","teller","tellers","telling","tells","telly","temp","temper","temperament","temperamental","temperature","temperatures","tempered","tempers","tempest","temple","tempo","temporarily","temporary","temps","tempt","temptation","temptations","tempted","tempting","temptress","ten","tenacious","tenacity","tenant","tenants","tend","tended","tendencies","tendency","tender","tenderness","tending","tendon","tendonitis","tendons","tends","tenement","tenets","tenner","tennis","tenor","tenors","tens","tense","tension","tensions","tent","tentative","tenth","tenths","tents","tenuous","tenure","tepid","tequila","teriyaki","term","terminal","terminate","terminated","terminating","termination","terminator","terminology","terminus","termites","terms","terra","terrace","terraforming","terrain","terrestrial","terrible","terribly","terrific","terrifically","terrified","terrifies","terrify","terrifying","territorial","territories","territory","terror","terrorism","terrorist","terrorists","terrorize","terrorized","terrorizing","terrors","terry","test","testament","tested","testicle","testicles","testicular","testified","testifies","testify","testifying","testimonies","testimony","testing","testosterone","tests","testy","tet","tetanus","tether","tetherball","texas","text","textbook","textbooks","textile","textiles","texts","texture","than","thank","thanked","thankful","thankfully","thanking","thankless","thanks","thanksgiving","thanksgivings","that","thataway","thatcher","thaw","thawed","thawing","the","theater","theaters","theatre","theatres","theatrical","theatrics","thee","theft","thefts","their","theirs","them","theme","themed","themes","themselves","then","theologian","theological","theology","theorem","theoretical","theoretically","theories","theory","therapeutic","therapist","therapists","therapy","there","thereafter","thereby","therefore","therein","thereof","theres","thermal","thermometer","thermonuclear","thermos","thermostat","thesaurus","these","theses","thesis","thespian","theta","they","thick","thickening","thickens","thicker","thief","thieves","thigh","thighs","thin","thine","thing","things","think","thinkers","thinking","thinks","thinly","thinner","thinners","thinning","thins","third","thirds","thirst","thirsty","thirteen","thirteenth","thirties","thirtieth","thirty","this","thistle","tho","thong","thongs","thoracic","thoracotomy","thorn","thorns","thorough","thoroughly","thorpe","those","thou","though","thought","thoughtful","thoughtfully","thoughtless","thoughts","thousand","thousands","thrall","thrash","thrashing","thread","threads","thready","threat","threaten","threatened","threatening","threatens","threats","three","threesome","threshold","threw","thrice","thrift","thrill","thrilled","thriller","thrilling","thrills","thrive","thrives","thriving","throat","throats","throbbing","throne","thrones","throttle","through","throughout","throughway","throw","thrower","throwers","throwing","thrown","throws","thru","thrust","thrusters","thrusts","thruway","thug","thugs","thumb","thumbing","thumbprint","thumbs","thump","thumping","thunder","thunderbird","thunderbolt","thundering","thunderstorm","thus","thusly","thy","thyme","thyroid","thyself","ti","tiara","tibia","tic","tick","ticked","ticker","ticket","ticketed","tickets","ticking","tickle","tickles","tickling","ticklish","ticks","tidal","tidbits","tide","tides","tidings","tidy","tidying","tie","tied","tier","ties","tiff","tiffany","tiger","tigers","tight","tighten","tightened","tightening","tightens","tighter","tightly","tightness","tightrope","tights","tiki","til","tile","tiles","till","tiller","tilt","tilted","timber","timbers","timbre","time","timed","timeless","timeline","timely","timer","timers","times","timetable","timid","timing","timothy","timpani","tin","tinfoil","ting","tingle","tingling","tingly","tiniest","tinkered","tinkering","tinkle","tins","tinsel","tinted","tiny","tip","tipped","tipper","tippers","tipping","tippy","tips","tipsy","tiptoe","tiptoeing","tiramisu","tire","tired","tireless","tires","tiresome","tiring","tis","tissue","tissues","tit","titan","titanic","titanium","titans","title","titles","tits","titties","titty","tizzy","to","toad","toast","toasted","toaster","toasting","toasts","toasty","tobacco","toby","tod","today","toddle","toddler","toddlers","toddy","toe","toed","toenail","toenails","toes","toffee","tofu","toga","together","togetherness","toilet","toilets","toiling","toke","token","tokens","told","tolerable","tolerance","tolerant","tolerate","tolerated","toll","toller","tolls","tom","tomahawk","tomato","tomatoes","tomb","tombs","tombstone","tomcat","tome","tomfoolery","tommy","tomorrow","tomorrows","toms","ton","tone","toned","toner","tones","tong","tongs","tongue","tongues","tonic","tonics","tonight","tonnage","tons","tonsil","tonsils","tony","too","took","tool","toolbox","tools","toon","toons","toot","tooth","toothache","toothbrush","toothbrushes","toothed","toothpaste","toothpick","toothpicks","toots","top","topaz","topes","topic","topical","topics","topless","topnotch","topped","topping","toppings","topple","tops","topside","tor","torah","torch","torched","torches","torching","tore","torment","tormented","tormenting","torn","tornado","toro","torpedo","torpedoed","torpedoes","torque","torrent","torrid","torso","tortillas","tortious","tortoise","torture","tortured","tortures","torturing","torturous","tory","tosh","toss","tossed","tosses","tossing","total","totaled","totalled","totally","totals","tote","totem","toting","tots","touch","touchdown","touchdowns","touche","touched","touches","touching","touchstone","touchy","tough","toughen","tougher","toughest","toughness","toupee","tour","toured","touring","tourism","tourist","tourists","tournament","tournaments","tours","tow","toward","towards","towed","towel","towels","tower","towers","town","townhouse","townie","townies","towns","townsfolk","townspeople","toxic","toxicity","toxicology","toxin","toxins","toxoplasmosis","toy","toyed","toying","toys","trace","traced","tracer","traces","tracing","track","tracked","tracker","trackers","tracking","tracks","traction","tractor","tractors","trade","traded","trademark","tradeoff","trader","trades","trading","tradition","traditional","traditionally","traditions","traffic","trafficker","trafficking","tragedies","tragedy","tragic","tragically","trail","trailer","trailers","trailing","trails","train","trained","trainee","trainees","trainer","training","trains","traipse","traipsing","trait","traitor","traitors","traits","trajectory","tram","tramp","trample","trampling","tramps","trance","tranquil","tranquility","tranquilizer","trans","transaction","transactions","transatlantic","transcendent","transcends","transcript","transcripts","transfer","transference","transferred","transferring","transfers","transform","transformation","transformed","transfusion","transfusions","transgenic","transgression","transgressions","transient","transistor","transit","transition","transitional","translate","translated","translating","translation","translator","translators","transmission","transmissions","transmit","transmitted","transmitter","transmitters","transparent","transpired","transplant","transponder","transport","transportation","transported","transporting","transports","transsexual","transvestite","transvestites","trap","trapeze","trapped","trapper","trapping","trappings","traps","trash","trashed","trashes","trashing","trashy","trattoria","trauma","traumas","traumatic","traumatized","traumatizing","travel","traveled","traveler","travelers","traveling","travelled","traveller","travellers","travelling","travels","traverse","travesty","trawler","tray","trays","treacherous","treachery","tread","treadmill","treads","treason","treasure","treasured","treasurer","treasures","treasury","treat","treatable","treated","treaters","treaties","treating","treatment","treatments","treats","treaty","tree","trees","trek","trellis","tremble","trembling","tremendous","tremendously","tremor","tremors","trench","trenches","trend","trends","trendy","trespass","trespassed","trespasser","trespassers","trespassing","trey","triad","trial","trials","triangle","triangular","tribal","tribe","tribulations","tribunal","tribune","tribute","triceps","trick","tricked","trickery","trickier","tricking","trickle","tricks","trickster","tricky","tricycle","trident","tried","tries","trifecta","trifle","trifled","trifling","trig","trigger","triggered","triggering","triggers","trigonometry","trillion","trilogy","trim","trimester","trimmed","trimmers","trimmings","trinity","trinket","trinkets","trio","trip","tripe","triple","tripled","triplets","triplicate","tripped","tripping","trippy","trips","trite","triumph","triumphed","triumphs","trivial","troll","trolling","trollop","trolls","trombone","troop","trooper","troopers","troops","trophies","trophy","tropic","tropical","tropics","trot","trotting","troubadour","trouble","troubled","troublemaker","troublemakers","troubles","troublesome","troubling","troupe","trouper","trouser","trousers","trout","trove","troy","truant","truce","truck","truckers","truckload","trucks","true","truer","truest","truffle","truffles","truly","trump","trumpet","trumpets","trumps","trunk","trunks","truss","trussed","trust","trusted","trustee","trustees","trusting","trusts","trustworthy","trusty","truth","truthful","truthfully","truths","try","trying","tryout","tryouts","tsk","tsunami","tub","tuba","tubby","tube","tubers","tubes","tubing","tubs","tuck","tucked","tucker","tucking","tug","tuition","tularemia","tulip","tulle","tumble","tumbler","tumbling","tummy","tumor","tumors","tuna","tundra","tune","tuned","tunes","tung","tunic","tuning","tunnel","tunnels","turban","turbine","turbo","turbulence","turbulent","turd","turds","turf","turk","turkey","turkeys","turks","turmoil","turn","turnaround","turncoat","turndown","turned","turner","turning","turnips","turnout","turnpike","turns","turquoise","turret","turtle","turtleneck","turtles","tush","tushie","tushy","tusk","tussle","tut","tutor","tutoring","tutors","tutti","tutu","tux","tuxedo","tuxedos","tuxes","twain","twas","twat","tweak","tweaked","tweaking","tweed","tweedle","tween","tweet","tweeze","twelfth","twelve","twenties","twentieth","twenty","twerp","twice","twig","twigs","twilight","twin","twine","twinge","twinkle","twins","twirl","twist","twisted","twister","twisting","twists","twisty","twit","twitch","twitching","twitchy","twits","two","twos","twosome","tycoon","tying","tykes","type","typed","types","typewriter","typhoid","typical","typically","typing","typist","typo","tyranny","tyrant","tyrants","tyre","tyres","ubiquitous","ugh","uglies","ugliest","ugliness","ugly","uh","ulcer","ulcers","ulterior","ultimate","ultimately","ultimatum","ultimatums","ultra","ultrasound","um","umbilical","umbrella","umm","ump","umpire","umpteenth","un","unable","unacceptable","unadvisedly","unaffected","unanimous","unanimously","unannounced","unanswered","unappealing","unappreciated","unarmed","unattached","unattainable","unattended","unattractive","unauthorized","unavailable","unavoidable","unaware","unbalanced","unbearable","unbearably","unbeatable","unbecoming","unbeknownst","unbelievable","unbelievably","unblemished","unborn","unbreakable","unbroken","unburden","unbuttoned","uncalled","uncanny","uncaring","uncertain","uncertainty","unchanged","uncharacteristic","uncharacteristically","uncivilized","unclaimed","uncle","unclear","unclench","uncles","uncomfortable","uncommon","uncomplicated","uncompromising","unconcerned","unconditional","unconscionable","unconscious","unconsciously","unconsciousness","unconstitutional","uncontrollable","uncontrollably","uncontrolled","unconventional","uncool","uncooperative","uncover","uncovered","uncovering","uncuff","uncut","undead","undecided","undeniably","under","underage","undercover","undercurrent","undercut","underdeveloped","underdog","underestimate","underestimated","underestimating","undergarment","undergarments","undergo","undergoing","undergone","undergrad","undergraduate","underground","underhanded","underline","underlined","underlings","underlying","undermine","undermined","undermines","undermining","underneath","underpaid","underpants","underpass","underprivileged","undershirt","understand","understandable","understandably","understanding","understands","understatement","understood","understudy","undertake","undertaken","undertaking","undertow","underwater","underway","underwear","underworld","undeserving","undesirable","undetectable","undetected","undies","undisciplined","undisclosed","undiscovered","undisputed","undivided","undo","undoing","undone","undoubtedly","undress","undressed","undressing","undue","unduly","undying","unearth","unearthed","uneasy","uneducated","unemployable","unemployed","unemployment","unencumbered","unending","unequivocally","unethical","uneventful","unexpected","unexpectedly","unexplained","unexplored","unexpressed","unfair","unfairly","unfairness","unfaithful","unfamiliar","unfathomable","unfinished","unfit","unflattering","unfold","unfolding","unfolds","unforeseen","unforgettable","unforgivable","unforgiving","unfortunate","unfortunately","unfounded","unfreeze","unfreezing","unfriendly","unfulfilled","unfunny","ungodly","ungrateful","unguarded","unhand","unhappily","unhappiness","unhappy","unharmed","unhealthy","unheard","unhinged","unholy","unhook","unhooked","unicorn","unicycle","unidentified","unified","uniform","uniformity","uniforms","unimaginative","unimportant","unimpressed","uninformed","uninhibited","uninspired","uninsured","unintelligible","unintentionally","uninteresting","uninterrupted","uninvited","uninvolved","union","unions","unique","unisex","unit","unite","united","units","unity","universal","universally","universe","universes","universities","university","unjustly","unknown","unknowns","unlawful","unleaded","unleash","unleashed","unless","unlikable","unlike","unlikely","unlimited","unlisted","unload","unloading","unlock","unlocked","unlocking","unlocks","unlovable","unloved","unlucky","unmanned","unmarked","unmarried","unmentionable","unmentionables","unmistakable","unmitigated","unnatural","unnecessary","unnerve","unnerved","unofficial","unopened","unorthodox","unpack","unpacked","unpacking","unpaid","unparalleled","unplanned","unpleasant","unpleasantness","unplug","unplugged","unpopular","unprecedented","unpredictable","unprepared","unprincipled","unprofessional","unprotected","unprovoked","unpunished","unqualified","unquenchable","unquote","unravel","unraveled","unraveling","unreachable","unreal","unrealistic","unreasonable","unrelated","unreliable","unresolved","unresponsive","unrest","unruly","uns","unsafe","unsaid","unsanitary","unsatisfactory","unsatisfied","unsatisfying","unsavory","unscathed","unscheduled","unscrupulous","unseal","unsealed","unseasonably","unseat","unseemly","unseen","unselfish","unsettled","unsettling","unshakable","unsigned","unsolved","unspeakable","unspeakably","unspoiled","unspoken","unstable","unstoppable","unstuck","unsubstantiated","unsuccessful","unsuitable","unsung","unsupervised","unsure","unsuspecting","untamed","untangle","untapped","untenable","unthinkable","untie","untied","until","untimely","unto","untouchable","untouched","untoward","untraceable","untrained","untreated","untrue","untrustworthy","unusual","unusually","unveil","unveiling","unwanted","unwarranted","unwashed","unwelcome","unwieldy","unwilling","unwind","unwise","unwitting","unwittingly","unworthy","unwrap","unwrapping","unwritten","unzip","up","upbeat","upbringing","upchuck","upcoming","update","updated","updates","updating","upfront","upgrade","upgraded","upgrades","upgrading","upheaval","upheld","uphill","uphold","upholstery","upkeep","uplifting","uplink","upload","uploading","upon","upped","upper","uppers","upping","uppity","upright","uprising","uproar","uproot","uprooted","ups","upscale","upset","upsets","upsetting","upshot","upside","upstage","upstaged","upstairs","upstanding","upstart","upstate","uptake","uptight","uptown","upward","upwards","uranium","urban","urchin","urethra","urge","urged","urgency","urgent","urgently","urges","urging","urinal","urinary","urinate","urinating","urination","urine","urn","urns","urologist","us","usable","use","used","useful","usefulness","useless","user","users","uses","usher","ushering","ushers","using","usual","usually","utensils","uterine","uterus","utilities","utility","utilize","utmost","utopia","utter","utterly","vacancies","vacant","vacate","vacated","vacation","vacationing","vacations","vaccinated","vaccination","vaccine","vacuum","vacuumed","vacuuming","vagabond","vagina","vaginas","vague","vaguely","vaguest","vail","vain","valentine","valentines","valet","valiant","valid","validate","validated","validity","valise","valley","valor","valuable","valuables","value","valued","values","valve","valves","vamoose","vamp","vampire","vampires","vamps","van","vandalism","vandalized","vandals","vanilla","vanish","vanished","vanishes","vanishing","vanity","vanquish","vanquished","vanquishing","vantage","vapid","vaporize","vaporized","variable","variables","variance","variant","variations","varicose","varied","varies","variety","various","varnish","varsity","vary","vascular","vase","vasectomy","vast","vastly","vat","vault","veal","vector","vee","veer","veered","veering","veg","vegan","vegetable","vegetables","vegetarian","vegetarians","vegetative","veggies","vehicle","vehicles","vehicular","veil","veiled","veils","vein","veins","velocity","velvet","vendetta","vendettas","vending","vendor","vendors","veneer","venerable","venereal","venetian","vengeance","vengeful","venison","venom","venomous","vent","vented","ventilate","ventilated","ventilation","ventilator","venting","ventricle","ventricular","ventriloquism","ventriloquist","vents","venture","ventures","venue","venues","vera","veracity","veranda","verbal","verbally","verbatim","verbs","verdict","verge","verger","verification","verified","verify","verily","veritable","veritas","vermeil","vermin","vermouth","vernacular","veronica","versatile","verse","versed","version","versions","versus","vertebrae","vertical","vertically","vertigo","very","vespers","vessel","vessels","vest","vesta","vested","vestibule","vestigial","vests","vet","veteran","veterans","veterinarian","veterinary","veto","vetoed","vets","vetted","via","viable","vial","vials","vibe","vibes","vibrant","vibrating","vibrations","vibrator","vicar","vicariously","vice","viceroy","vicinity","vicious","viciousness","victim","victimless","victims","victor","victoria","victories","victorious","victory","video","videos","videotape","videotaped","videotapes","vie","view","viewed","viewer","viewers","viewing","viewpoint","views","vig","vigil","vigilance","vigilant","vigilante","vigor","vigorously","viking","vile","vill","villa","village","villagers","villages","villain","villains","villas","vindicated","vindication","vindictive","vindictiveness","vine","vinegar","vineyards","vino","vintage","vinyl","viola","violate","violated","violates","violating","violation","violations","violence","violent","violently","violet","violets","violin","violinist","violins","viper","vipers","viral","virgin","virginal","virginity","virgins","virile","virtual","virtually","virtue","virtuoso","virtuous","virulent","virus","viruses","vis","visa","visage","visas","visceral","viscount","viscous","visibility","visible","vision","visions","visit","visitation","visited","visiting","visitor","visitors","visits","visor","vista","visual","visualize","visualizing","visually","visuals","vital","vitality","vitally","vitals","vitamin","vitamins","viva","vivacious","vive","vivid","vixen","vixens","vocabulary","vocal","vocalist","vocals","vocation","vocational","vodka","vogue","voice","voiced","voices","voicing","void","voila","volant","volatile","volcanic","volcano","volcanoes","volition","volleyball","volt","voltage","volts","volume","volumes","voluntarily","voluntary","volunteer","volunteered","volunteering","volunteers","vomit","vomiting","voodoo","vortex","vote","voted","voter","voters","votes","voting","vouch","vouched","vouching","vow","vowed","vowel","vowels","vows","voyage","voyeur","vroom","vulgar","vulnerability","vulnerable","vulture","vultures","vying","wack","wacko","wackos","wacky","wad","waddle","wade","wading","waffle","waffles","wag","wage","wager","wages","wagging","waging","wagon","wagons","wahoo","waif","wail","wailing","waist","waistband","wait","waited","waiter","waiters","waiting","waitress","waitressed","waitresses","waitressing","waits","waive","waived","waiver","wake","waken","wakes","waking","walk","walked","walker","walking","walks","wall","walla","wallaby","walled","wallet","wallets","walling","wallop","wallow","wallowing","wallpaper","walls","wally","walnut","waltz","waltzing","wampum","wan","wand","wander","wandered","wanderer","wandering","wangler","waning","want","wanted","wanting","wanton","wants","war","ward","warden","wardrobe","ware","warehouse","warehouses","wares","warfare","warfarin","warhead","warheads","warlock","warlocks","warlord","warm","warmed","warmer","warmest","warming","warms","warmth","warn","warned","warner","warning","warnings","warp","warpath","warped","warrant","warranted","warrants","warren","warring","warrior","warriors","wars","warsaw","wart","wartime","warts","wary","was","wash","washcloth","washed","washer","washes","washing","washout","washroom","washrooms","washy","wasp","wasps","waste","wastebasket","wasted","wasteful","wastes","wasting","watch","watched","watcher","watchers","watches","watchful","watching","watchman","water","waterbed","watered","waterfall","waterfront","watering","waterloo","watermelon","waterproof","waters","waterworks","watery","watt","watts","wave","waved","wavelength","wavelengths","wavered","waves","waving","wavy","wax","waxed","waxes","waxing","waxy","way","ways","wayside","wayward","we","weak","weaken","weakened","weakening","weaker","weakest","weakling","weakness","weaknesses","wealth","wealthiest","wealthy","wean","weaning","weapon","weapons","wear","wearer","wearing","wears","weary","weasel","weasels","weather","weathered","weatherman","weathers","weave","weaver","web","webbing","weber","webs","webster","wed","wedded","wedding","weddings","wedge","wedges","wedgie","wedgies","wedlock","weds","wee","weed","weeds","week","weekend","weekends","weekly","weeks","weenie","weenies","weensy","weeny","weep","weeping","weepy","weevil","weigh","weighed","weighing","weighs","weight","weighted","weightless","weights","weiner","weir","weird","weirder","weirdest","weirdly","weirdness","weirdo","weirdoes","weirdos","welch","welcome","welcomed","welcomes","welcoming","weld","welded","welder","welding","welfare","well","welling","wellness","wells","welsh","welt","welts","wench","went","wept","were","werewolf","werewolves","west","westbound","western","westerns","westward","wet","wetlands","wets","wetter","wetting","wha","whack","whacked","whacko","whale","whales","wham","whammo","whammy","wharf","wharves","what","whatchamacallit","whatever","whatnot","whats","whatsoever","wheat","whee","wheel","wheelchair","wheelchairs","wheeler","wheeling","wheels","wheeze","wheezing","when","whence","whenever","where","whereabouts","whereas","wherefore","wherein","whereof","wherever","whet","whether","whew","whey","which","whichever","whiff","while","whilst","whim","whimper","whimpering","whims","whimsical","whimsy","whine","whiner","whining","whiny","whip","whiplash","whipped","whipper","whipping","whirl","whirling","whirlwind","whisk","whisked","whisker","whiskey","whisking","whisky","whisper","whispered","whispering","whispers","whistle","whistler","whistles","whistling","whit","white","whiteness","whiter","whites","whitey","whittle","whittled","whittling","whiz","who","whoa","whodunit","whoever","whole","wholeheartedly","wholesale","wholesaler","wholesome","wholly","whom","whomever","whoop","whoopee","whooping","whoops","whoosh","whopper","whopping","whore","whores","whose","why","whys","wick","wicked","wickedness","wide","widen","widening","wider","widow","widowed","widower","widows","width","wield","wielding","wiener","wieners","wife","wig","wigged","wiggle","wiggled","wiggles","wiggling","wiggly","wiggy","wigs","wild","wildcat","wildcats","wilder","wilderness","wildest","wildfire","wildlife","wildly","will","willed","willful","willfully","willies","willing","willingly","willingness","willow","willows","willpower","wills","willy","wilt","wily","wimp","wimps","wimpy","win","winch","wind","windbag","windbreaker","winded","windfall","winding","windjammer","windmills","window","windows","windowsill","windpipe","winds","windshield","windsurfing","windward","windy","wine","winery","wing","winged","winger","winging","wingman","wings","wining","wink","winking","winkle","winks","winner","winners","winning","winnings","winos","wins","winter","winters","wipe","wiped","wiper","wipers","wipes","wiping","wire","wired","wireless","wires","wiretap","wiretaps","wiring","wisdom","wise","wiseass","wisecracks","wised","wisely","wiser","wisest","wish","wished","wishes","wishful","wishing","wit","witch","witchcraft","witches","witching","witchy","with","withdraw","withdrawal","withdrawals","withdrawing","withdrawn","withdraws","withdrew","wither","withered","withering","withers","withheld","withhold","withholding","within","without","withstand","withstanding","witless","witness","witnessed","witnesses","witnessing","wits","witty","wives","wizard","wo","wobble","woe","woes","wok","woke","woken","wolf","wolfram","wolves","woman","womanhood","womanizer","womanizing","womanly","womb","women","won","wonder","wondered","wonderful","wonderfully","wondering","wonderland","wonders","wondrous","wonky","wont","woo","wood","woodchuck","wooded","wooden","woodland","woodpecker","woods","woodshed","woodsy","woodwork","woody","wooed","woof","wooing","wool","woolly","woops","woozy","wop","wops","word","worded","wording","words","wore","work","workable","workaholic","workday","worked","worker","workers","working","workings","workload","workman","workmen","workout","workplace","works","workshop","workstation","workup","world","worldly","worlds","worldwide","worm","wormed","wormhole","worming","worms","worn","worried","worrier","worries","worrisome","worry","worrying","worrywart","worse","worsened","worship","worshiped","worshipped","worshippers","worshipping","worships","worst","worth","worthless","worthwhile","worthy","would","wound","wounded","wounding","wounds","woven","wow","wowed","wracked","wracking","wraith","wrangle","wrangler","wrap","wrapped","wrapper","wrappers","wrapping","wraps","wrath","wreak","wreaked","wreaking","wreaks","wreaths","wreck","wreckage","wrecked","wrecker","wrecking","wrecks","wrench","wrenched","wrestle","wrestler","wrestling","wretch","wretched","wriggle","wright","wring","wringer","wringing","wrinkle","wrinkled","wrinkles","wrinkly","wrist","wrists","writ","write","writer","writers","writes","writhing","writing","writings","written","wrong","wronged","wrongful","wrongfully","wrongs","wrote","wrought","wrung","wry","wuss","wussies","wussy","wuthering","wynn","xerox","ya","yacht","yachts","yah","yahoo","yak","yakking","yam","yammer","yammering","yams","yang","yank","yanked","yanking","yanks","yap","yapping","yard","yards","yardstick","yarn","yaw","yawn","yawning","yay","ye","yea","yeah","year","yearbook","yearbooks","yearned","yearning","yearnings","yearns","years","yeast","yech","yeh","yell","yelled","yeller","yelling","yellow","yells","yen","yep","yes","yesterday","yesterdays","yet","yeti","yield","yielding","yields","yikes","yin","yipe","yippee","yippie","yo","yodel","yoga","yoghurt","yogi","yogurt","yoke","yokel","yokels","yolk","yom","yon","yonkers","yore","you","young","younger","youngest","youngster","youngsters","your","yours","yourself","yourselves","youse","youth","youthful","youths","yuan","yuck","yuk","yuletide","yum","yummy","yup","yuppie","yuppies","zag","zander","zany","zap","zapped","zeal","zebra","zebras","zed","zee","zephyr","zephyrs","zeppelin","zero","zeroed","zeroes","zeros","zest","zesty","zeta","zig","zillion","zillions","zinfandel","zing","zip","zipped","zipper","zipping","zippy","zit","zits","zlotys","zodiac","zombie","zombies","zone","zoned","zones","zoning","zonked","zoo","zoom","zooming"]);var ie=function(e,t,a,n){console.log(a,"<SEARCHTERM"),console.log(e),console.log(t),console.log("---"),console.log(se);var s=new Array;if(n){for(var i in t)s.push(e[0]);e=s}if(a)var r=a.split(" ");var o=new Array(e.length);for(var l in e){o[l]=new Array(e[l].length);var c=0;for(var d in e[l]){o[l][d]=new ne(e[l][d],parseInt(d));var u=e[l][d];if(se.has(u)||o[l][d].setOOVHighlighting(),a){var p=u.indexOf(r[c]);p>=0?(o[l][d].setSearchTermHighlighting(p,p+r[c].length-1),c++):c=0}}}if(!t)return o;for(var l in t)if(t[l])for(var m in t[l].mentions){var g=t[l].mentions[m],h=g.start,b=g.end;for(var f in g.labels)for(var y=g.labels[f],v=h;v<b;v++){var k=v===h?"B":"I";o[l][v].addLabel(k,y,e[l].slice(h,b).join(" "),h,b-1)}}return o},re=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement("main",{class:"error-page"},s.a.createElement("h1",null,"403: Access denied."),s.a.createElement("p",null,"You do not have permission to access the requested page."))}}]),a}(n.Component),oe=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement("main",{class:"error-page"},s.a.createElement("h1",null,"404: Page not found."),s.a.createElement("p",null,"The page you were looking for does not exist."))}}]),a}(n.Component),le=a(10),ce="https://nlp-tlp.org/redcoat/api/",de=v("csrf-token"),ue=a(210),pe={GET:{method:"GET",headers:{Accept:"application/json","Content-Type":"application/json"},credentials:"include"},POST:{method:"POST",headers:{"csrf-token":de,Accept:"application/json"},dataType:"json",body:null}};function me(){return(me=Object(d.a)(c.a.mark((function e(t,a,n){var s,i,r,o,l,d,u,p,m,g=arguments;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(s=g.length>3&&void 0!==g[3]?g[3]:null,i=g.length>4&&void 0!==g[4]&&g[4],g.length>5&&void 0!==g[5]?g[5]:0,r=g.length>6&&void 0!==g[6]&&g[6],o=g.length>7&&void 0!==g[7]?g[7]:null,l=Object(le.a)({},pe[a]),"POST"!==a){e.next=10;break}if(s){e.next=9;break}throw new Error("Cannot POST without post body");case 9:i?(l.body=s,delete l.headers,l.headers={"csrf-token":de}):(l.body=JSON.stringify(s),l.headers["Content-Type"]="application/json");case 10:return e.next=12,fetch(ce+t,l);case 12:if(d=e.sent,console.log(d,"<resp"),200===d.status){e.next=18;break}return u=parseInt(d.status),n(u),e.abrupt("return",Promise.resolve(new Error(u)));case 18:return e.next=20,d.text();case 20:if(p=e.sent,!r){e.next=24;break}return ue(p,o),e.abrupt("return",Promise.resolve());case 24:return console.log(p),e.prev=25,m=JSON.parse(p),e.abrupt("return",Promise.resolve(m));case 30:return e.prev=30,e.t0=e.catch(25),console.log(e.t0),n(500),e.abrupt("return",Promise.reject(new Error(500)));case 35:case"end":return e.stop()}}),e,null,[[25,30]])})))).apply(this,arguments)}var ge=function(e,t,a){return me.apply(this,arguments)};a(211);var he=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){var e=this,t=this.props.docIdx,a=this.props.value;return s.a.createElement("span",{className:"confidence-button conf-"+a+(this.props.checked?" checked":""),onClick:function(){return e.props.updateConfidence(t,a)},title:"Assign a "+a+" confidence to this document."})}}]),a}(n.Component),be=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement("div",{className:"confidence-buttons"},s.a.createElement(he,Object.assign({value:"low",checked:"low"===this.props.confidence},this.props)),s.a.createElement(he,Object.assign({value:"medium",checked:"medium"===this.props.confidence},this.props)),s.a.createElement(he,Object.assign({value:"high",checked:"high"===this.props.confidence},this.props)))}}]),a}(n.Component),fe=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement("div",{className:"document-container header"},s.a.createElement("div",{className:"document header"},s.a.createElement("div",{className:"sentence-index"}),s.a.createElement("div",{className:"sentence"},"Document"),s.a.createElement("div",{className:"confidence-buttons"},"Confidence")))}}]),a}(n.Component),ye=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){var n;return Object(p.a)(this,a),(n=t.call(this,e)).state={commentsOpen:!1},n.sentenceRef=s.a.createRef(),n.documentUnderneathRef=s.a.createRef(),n.commentBoxRef=s.a.createRef(),n}return Object(m.a)(a,[{key:"componentDidUpdate",value:function(e,t){!z.a.isEqual(e.words,this.props.words)&&this.state.commentsOpen&&this.setState({commentsOpen:!1})}},{key:"toggleOpenComments",value:function(){this.setState({commentsOpen:!this.state.commentsOpen},(function(){}))}},{key:"saveToPng",value:function(){var e=this,t=this.sentenceRef.current;q.a.toBlob(t,{bgcolor:"#fefefe"}).then((function(t){Object(S.saveAs)(t,"document-"+e.props.index+".png")}))}},{key:"submitComment",value:function(e,t){var a=this;this.props.submitComment(e,this.props.index,(function(){t(),a.commentBoxRef.current.scrollTop=a.commentBoxRef.current.scrollHeight}))}},{key:"render",value:function(){return s.a.createElement("div",{className:"document-container"+(this.props.confidence?" conf conf-"+this.props.confidence:"")},s.a.createElement("div",{className:"document-wrapper"},s.a.createElement("div",{className:"document"},s.a.createElement("div",{className:"sentence-index"},s.a.createElement("span",{className:"inner"},this.props.displayIndex)),s.a.createElement("div",{className:"sentence",ref:this.sentenceRef},s.a.createElement(Y,{index:this.props.index,words:this.props.words,annotations:this.props.annotations,selections:this.props.selections,updateSelections:this.props.updateSelections,entityColourMap:this.props.entityColourMap,deleteTag:this.props.deleteTag})),s.a.createElement(be,{docIdx:this.props.index,confidence:this.props.confidence,updateConfidence:this.props.updateConfidence})),s.a.createElement("div",{className:"document document-underneath"+(this.state.commentsOpen?" open":"")+(this.props.comments.length>0?" has-comment":""),ref:this.documentUnderneathRef},s.a.createElement("div",{className:"sentence-index"}),s.a.createElement("div",{className:"sentence"},s.a.createElement("div",{className:"bottom-buttons"},s.a.createElement("div",{className:"open-comments-button"+(this.props.comments.length>0?" has-comment":"")},s.a.createElement("span",{className:"inner",onClick:this.toggleOpenComments.bind(this)},s.a.createElement("i",{className:"fa fa-comment"}),s.a.createElement("span",{className:"num-comments"},this.props.comments.length,this.props.comments.length>0?" comment"+(this.props.comments.length>1?"s":""):""))),s.a.createElement("div",{className:"save-to-png",onClick:this.saveToPng.bind(this),title:"Click to download a .png file of this document"},s.a.createElement("span",{className:"inner"},s.a.createElement("i",{className:"fa fa-download"})))),this.props.user&&s.a.createElement("div",{className:"comments-wrapper"},s.a.createElement("div",{className:"comments-inner"},s.a.createElement("div",{className:"comments-even-more-inner",ref:this.commentBoxRef},this.props.comments.map((function(e,t){return s.a.createElement(J,Object.assign({key:t,index:t},e,{hideDocumentString:!0}))}))),s.a.createElement(Z,{open:this.state.commentsOpen,user_profile_icon:this.props.user.profile_icon,submitComment:this.submitComment.bind(this)})))),s.a.createElement("div",{className:"confidence-buttons"}))))}}]),a}(n.Component);function ve(e){if(e.hasChildNodes())return e.firstChild;for(;e&&!e.nextSibling;)e=e.parentNode;return e?e.nextSibling:null}var ke=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){var e=this.props.entityClass;return void 0===e&&(e="(not a valid class)"),s.a.createElement("div",{className:"hotkey-info"+(0===this.props.chain.length?" hidden":"")},s.a.createElement("span",{className:"chain"},this.props.chain),": ",s.a.createElement("span",null,e))}}]),a}(n.Component);var we=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){var n;return Object(p.a)(this,a),(n=t.call(this,e))._isMounted=!1,n.state={visible:!0,querying:!1,wikipediaSummary:null,wikipediaReadMoreUrl:null},n}return Object(m.a)(a,[{key:"queryWikipedia",value:function(){var e=this;if(!this.state.querying){var t=this.props.tokens;this.setState({querying:!0},(function(){var a,n,s,i=e;s=function(e,s,r){if(i._isMounted){var o=t;s?(e.toLowerCase()!==t.toLowerCase()&&(o=e),a=s+"...",n=r):(n=null,a=null),i.setState({wikipediaTitle:o,wikipediaSummary:a,wikipediaReadMoreUrl:n,querying:!1})}},N.a.ajax({url:"https://en.wikipedia.org/w/api.php",data:{action:"query",list:"search",srsearch:t,format:"json"},dataType:"jsonp",success:function(e){!function(e,t){try{t(e.query.search[0].title,e.query.search[0].snippet.replace(/<\/?[^>]+(>|$)/g,""),"https://en.wikipedia.org/wiki/"+e.query.search[0].title.replace(/ /g,"_"))}catch(a){t()}}(e,s)}})}))}}},{key:"componentDidMount",value:function(){this._isMounted=!0}},{key:"componentWillUnmount",value:function(){this._isMounted=!1}},{key:"toggleVisibility",value:function(){this.setState({visible:!this.state.visible})}},{key:"componentDidUpdate",value:function(e,t){e.tokens!==this.props.tokens&&this.queryWikipedia()}},{key:"render",value:function(){if(!this.state.querying&&this.state.wikipediaTitle&&this.state.wikipediaTitle!==this.props.tokens)var e=s.a.createElement("span",{className:"different"},"[",this.state.wikipediaTitle,"] ");else e="";var t=this.state.wikipediaSummary?this.state.wikipediaSummary:"(no Wikipedia entry)";return this.props.tokens||(t="Select one or more words to automatically look them up on Wikipedia."),this.state.querying&&(t=s.a.createElement("span",null,s.a.createElement("i",{className:"fa fa-spin fa-cog"}),"\xa0\xa0Loading...")),s.a.createElement("div",{className:"tokens-info"},s.a.createElement("div",{id:"wikipedia-summary-container",className:this.state.visible?"show":"hidden"},s.a.createElement("p",{className:"tokens"},this.props.tokens||"Wikipedia lookup"),s.a.createElement("p",{className:"summary"},e,t),s.a.createElement("span",{className:"more show"},(this.state.querying||!this.props.tokens)&&s.a.createElement("span",{className:"left",style:{color:"rgba(0, 0, 0, 0)"}},"."),!this.state.querying&&this.props.tokens&&s.a.createElement("span",{className:"left"},"Results from Wikipedia"),s.a.createElement("span",{className:"right"},!this.state.querying&&this.props.tokens&&s.a.createElement("a",{id:"ec-read-more",href:this.state.wikipediaReadMoreUrl,target:"_blank"},"Read more ",s.a.createElement("i",{className:"fa fa-sm fa-external-link"}))))),s.a.createElement("button",{id:"wikipedia-hide-show",className:this.state.visible?"up":"down",onClick:this.toggleVisibility.bind(this)},"Show"))}}]),a}(n.Component),Ee=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){var n;return Object(p.a)(this,a),(n=t.call(this,e)).state={documentGroupAnnotationId:null,documents:[],documentIds:[],documentAnnotationIds:[],categoryHierarchy:{children:[]},annotations:[],confidences:[],comments:[],selections:n.getEmptySelectionsArray(10),currentSelection:n.getEmptyCurrentSelection(),mostRecentSelectionText:null,hotkeyMap:{},reverseHotkeyMap:{},terminalHotkeys:new Set,hotkeyChain:[],hotkeyBindingFn:null,hotkeyTimeoutFn:null,holdingCtrl:!1,holdingShift:!1,entityColourMap:{},docGroupLastModified:null,pageNumber:-1,totalPagesAvailable:-1,changesMade:!1,recentlySaved:!1,selectionChangeFn:null,windowMouseUpFn:null,loading:{querying:!0,saving:!1,firstLoad:!0},showingProgressBar:!1,searchTerm:null,docsPerPage:10,taggingCompletePage:!1,savedCategoryHierarchyOrder:null,renderOOVHighlight:!0},n}return Object(m.a)(a,[{key:"selectionChange",value:function(e,t){if(!(this.state.currentSelection.wordStartIndex<0)){var a=window.getSelection&&window.getSelection();if(a&&a.rangeCount>0){var n=function(e){var t=e.startContainer,a=e.endContainer;if(t==a)return[t.parentNode];for(var n=[];t&&t!=a;)n.push(t=ve(t));for(t=e.startContainer;t&&t!=e.commonAncestorContainer;)n.unshift(t),t=t.parentNode;return n}(a.getRangeAt(0));t.removeClass("highlighted"),N()(n).find(".word-inner").addClass("highlighted")}}}},{key:"windowMouseUp",value:function(e,t){if(!(e.target.classList.contains("page-input")||e.target.classList.contains("comment-input")||e.target.classList.contains("search-bar"))&&(t.removeClass("highlighted"),!(this.state.currentSelection.wordStartIndex<0)&&!e.target.classList.contains("word-inner"))){var a=this.state.currentSelection.sentenceIndex;this.updateSelections(a,this.state.documents[a].length-1,"up")}}},{key:"initMouseEvents",value:function(){var e=this,t=N()(".word-inner");document.removeEventListener("selectionchange",this.state.selectionChangeFn),window.removeEventListener("mouseup",this.state.windowMouseUpFn),this.setState({selectionChangeFn:function(a){return e.selectionChange(a,t)},windowMouseUpFn:function(a){return e.windowMouseUp(a,t)}},(function(){document.addEventListener("selectionchange",e.state.selectionChangeFn),window.addEventListener("mouseup",e.state.windowMouseUpFn)}))}},{key:"initKeybinds",value:function(){var e=this;document.addEventListener("keydown",(function(t){switch(t.key){case"Shift":e.state.holdingShift||e.setState({holdingShift:!0});break;case"Control":e.state.holdingCtrl||e.setState({holdingCtrl:!0});break;case"ArrowLeft":t.preventDefault(),e.moveSelectionHorizontally("left");break;case"ArrowUp":t.preventDefault(),e.moveSelectionVertically("up");break;case"ArrowRight":t.preventDefault(),e.moveSelectionHorizontally("right");break;case"ArrowDown":t.preventDefault(),e.moveSelectionVertically("down")}})),document.addEventListener("keyup",(function(t){switch(t.key){case"Shift":e.state.holdingShift&&e.setState({holdingShift:!1});break;case"Control":e.state.holdingCtrl&&e.setState({holdingCtrl:!1})}}));var t=this;window.onblur=function(){t.setState({holdingShift:!1,holdingCtrl:!1})}}},{key:"hotkeyTimeout",value:function(){var e=this.state.hotkeyChain.join(""),t=this.state.reverseHotkeyMap[e];void 0!==t&&this.applyTag(t),window.clearTimeout(this.state.hotkeyTimeoutFn),this.setState({hotkeyTimeoutFn:null,hotkeyChain:[]})}},{key:"bindHotkeys",value:function(e,t){var a=this;if(!(e.keyCode<49||e.keyCode>57)){var n=e.keyCode-48;if(!N()("#page-input").is(":focus")&&!N()("textarea").is(":focus")){var s=Array.prototype.concat(this.state.hotkeyChain,n);this.setState({hotkeyChain:s},(function(){if(window.clearTimeout(a.state.hotkeyTimeoutFn),a.state.terminalHotkeys.has(s.join("")))a.hotkeyTimeout();else{var e=window.setTimeout((function(){return a.hotkeyTimeout()}),333);a.setState({hotkeyTimeoutFn:e})}}))}}}},{key:"setupHotkeyKeybinds",value:function(){var e=this;console.log("Setting up hotkey keybinds..."),console.log(this.state.reverseHotkeyMap),document.removeEventListener("keydown",this.state.hotkeyBindingFn);var t=function(t){return e.bindHotkeys(t,e.state.hotkeyMap)};document.addEventListener("keydown",t),this.setState({hotkeyBindingFn:t})}},{key:"initHotkeyMap",value:function(e,t){var a=this;console.log("Setting up hotkey map...");var n=function e(t,a,n,s,i,r){if(r||(n[t.full_name]=s),t.children)for(var o=0;o<Math.min(9,t.children.length);o++)e(t.children[o],o+1,n,Array.prototype.concat(s,o+1),i);else i.add(s.join(""));return{hotkeyMap:n,terminalHotkeys:i}}({children:e},0,[],[],new Set,!0),s=n.hotkeyMap,i=n.terminalHotkeys,r=function(e){var t={};for(var a in e){t[e[a].join("")]=a}return t}(s);this.setState({hotkeyMap:s,reverseHotkeyMap:r,terminalHotkeys:i},(function(){a.setupHotkeyKeybinds(),t&&t()}))}},{key:"initConfidencesArray",value:function(e){return new Array(e.length)}},{key:"initEntityColourMap",value:function(e){var t={};for(var a in e){var n=e[a];t[n.name]=n.colorId%12+1}return t}},{key:"justifyWords",value:function(){N()(".word-inner").each((function(e,t){var a=t.offsetWidth,n=25*Math.ceil(a/25);N()(t).css("min-width",n+"px")}))}},{key:"clearWordJustification",value:function(){N()(".word:not(.tag) .word-inner").each((function(e,t){N()(t).css("min-width","auto")}))}},{key:"loadNextPage",value:function(){if(!this.state.loading.querying){var e=this.state.pageNumber+1;e!==this.state.totalPagesAvailable||this.state.searchTerm?this.queryAPI(!1,e):this.queryAPI(!1)}}},{key:"goToPage",value:function(e){this.state.loading.querying||(console.log(e),this.state.searchTerm?this.queryAPI(!1,e):e===this.state.totalPagesAvailable?this.queryAPI(!1):this.queryAPI(!1,e))}},{key:"loadPreviousPage",value:function(){this.queryAPI(!1,this.state.pageNumber-1)}},{key:"searchDocuments",value:function(e){var t=this;this.setState({searchTerm:e},(function(){e?t.queryAPI(!1,1):t.queryAPI(!1)}))}},{key:"setDocsPerPage",value:function(e){var t=this,a=e.target.value,n=this.state.pageNumber,s=this.state.docsPerPage,i=Math.min(this.state.totalPagesAvailable+1,Math.floor(n/a*s));i===this.state.totalPagesAvailable+1&&(i=null),this.setState({docsPerPage:a},(function(){t.queryAPI(!1,i)}))}},{key:"queryAPI",value:function(){var e=Object(d.a)(c.a.mark((function e(t,a){var n,s,i,r;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s=this.state.searchTerm,n=a?"getDocumentGroup?pageNumber="+a+"&perPage="+this.state.docsPerPage:"getDocumentGroup?pageNumber=latest&perPage="+this.state.docsPerPage,s&&(n+="&searchTerm="+s),e.next=5,this.setState({loading:{querying:!0,saving:!1,firstLoad:t}});case 5:return e.next=7,ge("projects/"+this.props.project_id+"/tagging/"+n,"GET",this.props.setErrorCode);case 7:if(!(i=e.sent).tagging_complete){e.next=12;break}return this.setState({taggingCompletePage:!0,pageNumber:i.pageNumber,totalPages:i.totalPages,totalPagesAvailable:i.totalPagesAvailable+1,changesMade:!1,recentlySaved:!1,loading:{querying:!1,saving:!1}}),console.log(i),e.abrupt("return");case 12:try{r=v("hierarchy-order-"+this.props.project_id).split(",")}catch(o){r=null}return console.log(r),e.next=16,this.setState({data:i,documents:i.documents,documentIds:i.documentIds,documentAnnotationIds:i.documentAnnotationIds?i.documentAnnotationIds:null,confidences:this.initConfidencesArray(i.documents),annotations:ie(i.documents,i.automaticAnnotations,this.state.searchTerm),comments:i.comments,categoryHierarchy:i.categoryHierarchy,entityColourMap:this.initEntityColourMap(i.categoryHierarchy.children),selections:this.getEmptySelectionsArray(i.documents.length),mostRecentSelectionText:null,pageNumber:i.pageNumber,totalPages:i.totalPages,totalPagesAvailable:i.totalPagesAvailable,docGroupLastModified:i.lastModified,documentGroupAnnotationId:i.documentGroupAnnotationId,changesMade:!1,recentlySaved:!1,loading:{querying:!1,saving:!1},taggingCompletePage:!1,savedCategoryHierarchyOrder:r});case 16:i.projectTitle&&i.projectAuthor&&this.props.setProject(i.projectTitle,i.projectAuthor),t&&(this.initKeybinds(),this.initHotkeyMap(this.state.categoryHierarchy.children)),this.initMouseEvents(),this.clearWordJustification(),this.justifyWords(),this.selectFirstWord(),window.scrollTo(0,0);case 23:case"end":return e.stop()}}),e,this)})));return function(t,a){return e.apply(this,arguments)}}()},{key:"annotationsToJSON",value:function(){var e=this.state.annotations,t=[];for(var a in e){var n=[];for(var s in e[a]){var i=e[a][s];i.entityClasses?n.push([i.bioTag+"-",i.entityClasses]):n.push([""])}t.push(n)}return t}},{key:"submitAnnotations",value:function(){var e=Object(d.a)(c.a.mark((function e(){var t,a,n,s,i,r=this;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.state.recentlySaved){e.next=2;break}return e.abrupt("return");case 2:return t=this.annotationsToJSON(),a={documentIds:this.state.documentIds,documentAnnotationIds:this.state.documentAnnotationIds,labels:t},this.setState({loading:{querying:!1,saving:!0}}),e.next=7,ge("projects/"+this.props.project_id+"/tagging/submitAnnotations","POST",this.props.setErrorCode,a);case 7:n=e.sent,s=n.documentAnnotationIds,console.log("Submitted annotations OK"),this.state.pageNumber!==this.state.totalPagesAvailable||this.state.searchTerm?i=this.state.totalPagesAvailable:(i=this.state.totalPagesAvailable+1,this.setState({showingProgressBar:!0},(function(){window.setTimeout((function(){return r.setState({showingProgressBar:!1})}),3e3)}))),this.setState({docGroupLastModified:Date.now(),totalPagesAvailable:i,documentAnnotationIds:s,changesMade:!1,recentlySaved:!0,loading:{querying:!1,saving:!1}});case 12:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}()},{key:"componentDidMount",value:function(){this.queryAPI(!0)}},{key:"getEmptyCurrentSelection",value:function(){return{wordStartIndex:-1,wordEndIndex:-1,sentenceIndex:-1}}},{key:"moveSelectionVertically",value:function(e){console.log("Moving",e);for(var t,a=this.state.selections,n=this.getEmptySelectionsArray(),s=0;s<a.length;s++)for(var i=0;i<a[s].length;i++){a[s][i];if("up"===e){var r=-1;0===s&&(r=0)}else if("down"===e){r=1;s===a.length-1&&(r=0)}n[s+r]=[{wordStartIndex:0,wordEndIndex:0}],t=this.state.documents[s+r].slice(0,1).join(" ")}this.setState({selections:n,mostRecentSelectionText:t})}},{key:"moveSelectionHorizontally",value:function(e){console.log("Moving",e);for(var t,a=this.state.selections,n=0;n<a.length;n++)for(var s=0;s<a[n].length;s++){var i=a[n][s];"left"===e?this.state.holdingShift?i.wordEndIndex>i.wordStartIndex?i.wordEndIndex--:i.wordStartIndex=Math.max(i.wordStartIndex-1,0):(i.wordStartIndex=Math.max(i.wordStartIndex-1,0),i.wordEndIndex=i.wordStartIndex):"right"===e&&(this.state.holdingShift||(i.wordStartIndex=Math.min(this.state.documents[n].length-1,i.wordEndIndex+1)),i.wordEndIndex=Math.min(this.state.documents[n].length-1,i.wordEndIndex+1)),t=this.state.documents[n].slice(i.wordStartIndex,i.wordEndIndex+1).join(" ")}this.setState({selections:a,mostRecentSelectionText:t})}},{key:"getEmptySelectionsArray",value:function(e){if(!e)e=this.state.documents.length;for(var t=new Array(e),a=0;a<t.length;a++)t[a]=new Array;return t}},{key:"selectFirstWord",value:function(){var e=this.state.selections;0!==e.length&&(e[0].push({wordStartIndex:0,wordEndIndex:0}),this.setState({selections:e,mostRecentSelectionText:this.state.documents.length>0?this.state.documents[0][0]:""}))}},{key:"clearSelections",value:function(){this.setState({currentSelection:this.getEmptyCurrentSelection(),selections:this.getEmptySelectionsArray()})}},{key:"updateSelections",value:function(e,t,a){var n,s,i=this.state.selections,r=this.state.currentSelection;if("down"===a)this.state.holdingCtrl||(i=this.getEmptySelectionsArray()),s=-1,r={sentenceIndex:e,wordStartIndex:n=t};else if("up"===a){if(-1===r.wordStartIndex)return void this.clearSelections();if(n=r.wordStartIndex,r.sentenceIndex!==e&&(n=0),s=t,t<n){var o=n;n=t,s=o}r=this.getEmptyCurrentSelection(),i[e].push({wordStartIndex:n,wordEndIndex:s});var l=this.state.documents[e].slice(n,s+1).join(" ");window.getSelection?window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&window.getSelection().removeAllRanges():document.selection&&document.selection.empty()}this.setState({currentSelection:r,selections:i,mostRecentSelectionText:l||this.state.mostRecentSelectionText})}},{key:"applyTag",value:function(e){var t=this,a=this.state.selections,n=this.state.documents,s=this.state.annotations;for(var i in a)for(var r in a[i]){for(var o=a[i][r],l=o.wordStartIndex,c=o.wordEndIndex,d=s[i][l].spanStartIdx,u=s[i][l].spanEndIdx,p=!1,m=l+1;m<=c;m++){var g=s[i][m];if(d!==g.spanStartIdx||u!==g.spanEndIdx){p=!0;break}}if(p){for(m=l;m<=c;m++){(f=s[i][m]).removeAllLabels()}for(var h in s[i]){(f=s[i][h]).spanEndIdx>=l&&f.spanStartIdx<=l&&f.setSpanEndIdx(l-1),f.spanStartIdx<=c&&(f.setSpanStartIdx(c+1),f.tokenIndex===c+1&&f.changeBioTag("B"))}}for(var b in s[i].slice(0,l)){(f=s[i][b]).spanStartIdx<l&&f.spanEndIdx>=c&&f.setSpanEndIdx(l-1)}for(var b in s[i].slice(c+1,s[i].length)){var f;(f=s[i][parseInt(b)+c+1]).spanStartIdx<=l&&f.spanEndIdx>=c&&(f.setSpanStartIdx(c+1),"0"===b&&f.changeBioTag("B"))}var y=!1;for(m=l;m<=c;m++){var v=m===l?"B":"I",k=n[i].slice(l,c+1).join(" ");y=s[i][m].addLabel(v,e,k,l,c)}y&&this.captureEvent("Applied label",parseInt(i),l,c,e)}this.setState({annotations:s},(function(){t.justifyWords()}))}},{key:"deleteTag",value:function(e,t,a){var n=this.state.annotations,s=n[e][t],i=s.spanStartIdx,r=s.spanEndIdx;for(var o in this.captureEvent("Deleted label",e,i,r,a),n[e]){var l=n[e][o];l.spanStartIdx===i&&l.spanEndIdx===r&&l.removeLabel(a)}this.setState({annotations:n})}},{key:"updateConfidence",value:function(e,t){var a=this.state.confidences;a[e]===t?a[e]=void 0:a[e]=t,this.setState({confidences:a})}},{key:"toggleOOVHighlight",value:function(){this.setState({renderOOVHighlight:!this.state.renderOOVHighlight})}},{key:"submitComment",value:function(){var e=Object(d.a)(c.a.mark((function e(t,a,n){var s,i,r;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return console.log("Message:",t,"Document index",a),s={text:t,documentId:this.state.documentIds[a]},console.log(this.state.documentIds[a],"xzzz"),e.next=5,ge("projects/"+this.props.project_id+"/comments/submit","POST",this.props.setErrorCode,s);case 5:i=e.sent,console.log("Submitted comment OK"),(r=this.state.comments)[a].push(i.comment),this.setState({comments:r},n);case 10:case"end":return e.stop()}}),e,this)})));return function(t,a,n){return e.apply(this,arguments)}}()},{key:"captureEvent",value:function(e,t,a,n,s){this.state.documents[t].slice(a,n+1).join(" ");"Applied label"!==e&&"Deleted label"!==e||this.setState({changesMade:!0,recentlySaved:!1})}},{key:"saveDragSettings",value:function(e){console.log(e),ae("hierarchy-order-"+this.props.project_id,e,1e4)}},{key:"render",value:function(){var e=this,t=this.state.taggingCompletePage;return s.a.createElement("div",null,!this.state.error&&s.a.createElement("div",{id:"tagging-interface",className:(this.state.loading.querying?"loading":"")+(t?" tagging-complete-page":"")},s.a.createElement("div",{id:"tagging-container",className:this.state.renderOOVHighlight?"render-oov-highlight":""},t&&s.a.createElement(je,null),s.a.createElement("div",{id:"sentence-tagging"},this.state.loading.firstLoad&&s.a.createElement("div",{className:"loading-message"},s.a.createElement("i",{className:"fa fa-cog fa-spin"}),"Loading..."),s.a.createElement(te,{showingProgressBar:this.state.showingProgressBar,pageNumber:this.state.pageNumber,totalPages:this.state.totalPages,totalPagesAvailable:this.state.totalPagesAvailable,lastModified:this.state.docGroupLastModified,recentlySaved:this.state.recentlySaved,changesMade:this.state.changesMade,querying:this.state.loading.querying,saving:this.state.loading.saving,inSearchMode:this.state.searchTerm,showDocsPerPage:!0,docsPerPage:this.state.docsPerPage,docsPerPageOptions:[1,3,5,10,15,20],showSaveButton:!0,searchDocuments:this.searchDocuments.bind(this),submitAnnotations:this.submitAnnotations.bind(this),loadPreviousPage:this.loadPreviousPage.bind(this),loadNextPage:this.loadNextPage.bind(this),goToPage:this.goToPage.bind(this),setDocsPerPage:this.setDocsPerPage.bind(this),renderOOVHighlight:this.state.renderOOVHighlight,toggleOOVHighlight:this.toggleOOVHighlight.bind(this)}),s.a.createElement(fe,null),this.state.documents.map((function(t,a){return s.a.createElement(ye,{key:a,index:a,displayIndex:(e.state.pageNumber-1)*e.state.docsPerPage+a+1,words:t,annotations:e.state.annotations[a],comments:e.state.comments[a],confidence:e.state.confidences[a],selections:e.state.selections[a],updateSelections:e.updateSelections.bind(e),updateConfidence:e.updateConfidence.bind(e),entityColourMap:e.state.entityColourMap,deleteTag:e.deleteTag.bind(e),submitComment:e.submitComment.bind(e),user:e.props.user})})),!this.state.loading.querying&&0===this.state.documents.length&&!this.state.taggingCompletePage&&s.a.createElement("div",{className:"loading-message no-results-found"},"No results found."))),s.a.createElement("div",{id:"tagging-menu"},s.a.createElement("div",{className:"project-card"},s.a.createElement("div",null,s.a.createElement("div",{className:"project-name"+(this.props.projectTitle?"":" st"),style:{display:"block"}},s.a.createElement(b.b,{to:y+"projects/"+this.props.project_id+"/dashboard"},this.props.projectTitle?this.props.projectTitle:"xxxxxxxx")),s.a.createElement("div",{className:"project-creator"+(this.props.projectAuthor?"":" st"),style:{display:"block"}},"Created by ",s.a.createElement("span",{className:"creator-name"},this.props.projectAuthor?this.props.projectAuthor:"xxxxxxxx")))),s.a.createElement(we,{tokens:this.state.mostRecentSelectionText}),s.a.createElement(ke,{chain:this.state.hotkeyChain,entityClass:this.state.reverseHotkeyMap[this.state.hotkeyChain.join("")]}),s.a.createElement(U,{items:this.state.categoryHierarchy.children,hotkeyMap:this.state.hotkeyMap,hotkeyChain:this.state.hotkeyChain.join(""),initHotkeyMap:this.initHotkeyMap.bind(this),applyTag:this.applyTag.bind(this),visible:!t,draggable:!0,itemOrder:this.state.savedCategoryHierarchyOrder,saveDragSettings:this.saveDragSettings.bind(this)}))))}}]),a}(n.Component),je=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement("div",{id:"tagging-complete-message"},s.a.createElement("span",{class:"tagging-complete-text"},s.a.createElement("h2",null,"Annotation complete!"),s.a.createElement("p",null,"Thank you for your participation in this project.")))}}]),a}(n.Component),xe=Ee,Ne=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement("article",{className:"features-list"},s.a.createElement("h2",null,"Version 2.0 alpha - List of features (3 October 2020)"),s.a.createElement("p",null,"Redcoat underwent a significant revision for Version 2.0, bringing a wide array of new features including:"),s.a.createElement("ul",null,s.a.createElement("li",null,s.a.createElement("b",null,"Overall"),s.a.createElement("ul",null,s.a.createElement("li",null,"The front-end has been completely rebuilt in React. Redcoat now feels significantly more responsive as a result."))),s.a.createElement("li",null,s.a.createElement("b",null,"Project dashboard"),s.a.createElement("ul",null,s.a.createElement("li",null,s.a.createElement("b",null,"Key information"),": The dashboard now shows key information at the top such as number of annotations, average agreement score, and average time per doc (which is still a work in progress)."),s.a.createElement("li",null,s.a.createElement("b",null,"Entity frequencies"),": A chart showing the number of mentions of each entity, which dynamically updates as annotators annotate the project."),s.a.createElement("li",null,s.a.createElement("b",null,"Activity"),": A chart showing the activity of each annotator."),s.a.createElement("li",null,s.a.createElement("b",null,"Annotations/document"),": A waffle chart showing the number of times each document has been annotated."),s.a.createElement("li",null,s.a.createElement("b",null,"Comments"),": A list of all comments made about the project, with links to the corresponding documents in the new Curation Interface."))),s.a.createElement("li",null,s.a.createElement("b",null,"Curation interface"),s.a.createElement("ul",null,s.a.createElement("li",null,"The curation interface visualises all of the annotations made by each annotator and allows each annotator to comment on each doc using the comments window on the right."),s.a.createElement("li",null,"The compiled labels are displayed at the bottom of the annotators' annotations when more than one user has annotated the document."),s.a.createElement("li",null,"Documents can be searched and sorted in a similar manner to the annotation interface."))),s.a.createElement("li",null,s.a.createElement("b",null,"Annotation interface"),s.a.createElement("ul",null,s.a.createElement("li",null,"Annotators may navigate back to previous documents and update them as necessary."),s.a.createElement("li",null,"Annotators can search for specific documents via the search field at the top."),s.a.createElement("li",null,"Annotators can choose the number of documents per page - it is no longer fixed at 10."),s.a.createElement("li",null,"The categories in the category hierarchy can be dragged and dropped so that annotators can essentially rebind the hotkeys for each category when desired."),s.a.createElement("li",null,"Multiple tokens can be selected at once by holding Ctrl."),s.a.createElement("li",null,"Users can write comments on any document (visible by anyone also annotating the project) via the comments button at the bottom of each document."),s.a.createElement("li",null,"Users may specify their confidence via the Confidence buttons on the right (still a work in progress)."),s.a.createElement("li",null,"There is a screenshot button at the bottom of each document which automatically saves a screenshot of the doc to a .png file."),s.a.createElement("li",null,"The save button has been moved to the top."),s.a.createElement("li",null,"The overall design of the interface has changed significantly to make it feel more polished."))),s.a.createElement("li",null,s.a.createElement("b",null,"Projects page"),s.a.createElement("ul",null,s.a.createElement("li",null,"The projects page has also changed in appearance, and now has a more streamlined look."),s.a.createElement("li",null,"There are fewer controls over searching/filtering etc - those may be implemented again later."))),s.a.createElement("li",null,s.a.createElement("b",null,"User profile"),s.a.createElement("ul",null,s.a.createElement("li",null,"There is now a User profile page."),s.a.createElement("li",null,"Users may customise their profile icon - the background, foreground and icon can be changed. These icons will appear on any comments the user makes on any projects."))),s.a.createElement("li",null,s.a.createElement("b",null,"New project form"),s.a.createElement("ul",null,s.a.createElement("li",null,"The new project form is also remade in React - it is now based on form pages rather than one continuous form so the process of creating a new project is much better."))),s.a.createElement("li",null,s.a.createElement("b",null,"Other changes"),s.a.createElement("ul",null,s.a.createElement("li",null,"Annotator agreement is now calculated whenever a document annotation is saved. The agreement metric is a jaccard-based similarity metric that incorporates both token similarity and span similarity (will be discussed in a future paper).")))),s.a.createElement("h2",null,"Version 1.0 - List of features (5 April 2019)"),s.a.createElement("p",null,"Below is a list of features that are currently present in Redcoat."),s.a.createElement("ul",null,s.a.createElement("li",null," Project Setup page",s.a.createElement("ul",null,s.a.createElement("li",null,"Create annotation projects for Entity Recognition on the Setup Project page"),s.a.createElement("li",null,"Automatic tokenisation of data, with summary of number of tokens/documents"),s.a.createElement("li",null,"Create a concept hierarchy via an interactive tree, or alternatively via text input"),s.a.createElement("li",null,"Multiple built-in hierarchies: NER, FIGER, Mining"),s.a.createElement("li",null,"New project and associated data is persistent across refreshes"))),s.a.createElement("li",null,"Projects page",s.a.createElement("ul",null,s.a.createElement("li",null,"Sort, search, and filter projects"),s.a.createElement("li",null,"Detailed project summary"))),s.a.createElement("li",null,"Annotation interface",s.a.createElement("ul",null,s.a.createElement("li",null,"Annotate projects via an intuitive user interface"),s.a.createElement("li",null,"Keyboard support on the annotation interface (hotkeys, selection with arrow keys)"),s.a.createElement("li",null,"Wikipedia summary of words in the annotation interface"),s.a.createElement("li",null,"Search/filter category hierarchy to quickly find the relevant entity category ")))),s.a.createElement("h3",null,"Attributions"),s.a.createElement("p",null,"The pencil icon on the tagging interface was made by ",s.a.createElement("a",{href:"https://www.flaticon.com/authors/icongeek26",title:"Icongeek26"},"Icongeek26")," from ",s.a.createElement("a",{href:"https://www.flaticon.com/",title:"Flaticon"},"www.flaticon.com"),"."),s.a.createElement("p",null,"The Krippendorff Alpha agreement metric calculation was found on GitHub: ",s.a.createElement("a",{href:"https://github.com/tanbt/krippendorff-alpha"},"https://github.com/tanbt/krippendorff-alpha"),"."))}}]),a}(n.Component),Ce=a(37),Oe=(n.Component,function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){var n;return Object(p.a)(this,a),(n=t.call(this,e)).state={data:{projects:n.getDummyProjects(),numUserInvolvedIn:null,numCreatedByUser:null,numDocGroupsAnnotated:0,totalDocGroups:1},view:"All projects",loading:!0},n}return Object(m.a)(a,[{key:"getDummyProjects",value:function(){function e(e,t){for(var a="",n=e+Math.floor(Math.random()*(t-e)),s=0;s<n;s++)a+="x";return a}for(var t=[],a=0;a<10;a++)t.push({name:e(5,20),description:Math.random()<.5?null:e(20,50),total_users:0,created_at:null,icon_name:""});return t}},{key:"componentWillMount",value:function(){var e=Object(d.a)(c.a.mark((function e(){var t;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.props.setProject(null,null),e.next=3,ge("projects/","GET",this.props.setErrorCode,1);case 3:t=e.sent,this.setState({data:t,loading:!1});case 5:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}()},{key:"setView",value:function(e){var t=this;this.setState({view:e,loading:!0},(function(){window.setTimeout((function(){t.setState({loading:!1})}),100)}))}},{key:"render",value:function(){var e=this;return s.a.createElement("div",{id:"projects-table-wrapper"},s.a.createElement("div",{id:"projects-table-header"},s.a.createElement("div",{className:"row-button"+("All projects"===this.state.view?" active":""),onClick:function(){return e.setView("All projects")}},"All projects ",s.a.createElement("span",{className:"counter"},this.state.data.numUserInvolvedIn)),s.a.createElement("div",{className:"row-button"+("Your projects"===this.state.view?" active":""),onClick:function(){return e.setView("Your projects")}},"Your projects ",s.a.createElement("span",{className:"counter"},this.state.data.numCreatedByUser))),s.a.createElement("div",{id:"projects-table",className:this.state.loading?"loading":""},this.state.data.projects.filter((function(t){return"Your projects"!==e.state.view||t.userIsCreator})).map((function(t,a){return s.a.createElement("div",{className:"row",index:a},s.a.createElement("div",{className:"col-name-desc"},s.a.createElement("div",{className:"projects-table-pie"},e.state.loading&&s.a.createElement(Ce.PieChart,{data:[{value:0,color:"rgb(109, 201, 34)"},{value:1,color:"rgba(0, 0, 0, 0)"}],background:"#d5d5d5",lineWidth:18,startAngle:270}),!e.state.loading&&s.a.createElement(Ce.PieChart,{data:[{value:t.numDocGroupsAnnotated,color:"rgb(109, 201, 34)"},{value:t.totalDocGroups-t.numDocGroupsAnnotated,color:"rgba(0, 0, 0, 0)"}],background:"#d5d5d5",animate:!0,animationDuration:500,lineWidth:18,startAngle:270})),s.a.createElement("div",{className:"name-desc-row"},s.a.createElement("div",{className:"project-name"},s.a.createElement(b.b,{to:y+"projects/"+t._id+"/dashboard"},t.name)),t.description&&s.a.createElement("div",{className:"project-description"},t.description),s.a.createElement("div",{className:"project-creator"},"Created by ",s.a.createElement("span",{className:"creator-name"},t.creator)))),s.a.createElement("div",{className:"col-date"},s.a.createElement("span",{className:"project-created-at"},"Created on ",Q(t.created_at))),s.a.createElement("div",{className:"col-stats"},s.a.createElement("span",{className:"project-total-comments",title:"This project has "+t.total_comments+" comments."},s.a.createElement("i",{class:"fa fa-comment"})," ",s.a.createElement("span",{className:"comment-count"},t.total_comments)),s.a.createElement("span",{className:"project-total-users",title:"This project has "+t.total_users+" users."},s.a.createElement("i",{class:"fa fa-user"})," ",s.a.createElement("span",{className:"user-count"},t.total_users))))}))))}}]),a}(n.Component)),ze=a(64),Se=a(397),_e=a(396),qe=a(38);a(286);var Pe=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){return console.log(this.props.data,this.props.loading,"xxx"),s.a.createElement("main",{className:"project-page"},s.a.createElement("h2",null,"Entity Hierarchy"),s.a.createElement("div",{className:"category-hierarchy-wrapper"},this.props.loading&&function(){var e=new Array(15).fill(0);function t(e,t){for(var a="",n=0;n<e+Math.floor(Math.random()*t);n++)a+="x";return a}return s.a.createElement("table",{className:"project-page-table"},s.a.createElement("tbody",null,e.map((function(e,a){return s.a.createElement("tr",null,s.a.createElement("td",null,s.a.createElement("span",{className:"inner"},s.a.createElement("span",{className:"st"},t(30,70)))),s.a.createElement("td",null,s.a.createElement("span",{className:"inner"},s.a.createElement("span",{className:"st"},t(30,70)))))}))))}(),!this.props.loading&&s.a.createElement(U,{items:this.props.data.children,visible:!0,draggable:!1,displayOnly:!0,tableForm:!0})))}}]),a}(n.Component);var Ie=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){return console.log(this.props.data.pending_invitations),s.a.createElement("table",{className:"project-page-table"},s.a.createElement("tbody",null,this.props.data.active_users.length>0&&s.a.createElement("tr",null,s.a.createElement("td",{colspan:"2"},s.a.createElement("span",{className:"inner row-divider"},"Active"))),this.props.data.active_users.map((function(e,t){return s.a.createElement("tr",null,s.a.createElement("td",null,s.a.createElement("span",{className:"inner"},s.a.createElement(C,{user:e}),s.a.createElement("span",null,e.email," (",e.username,")"))))})),this.props.data.pending_invitations.length>0&&s.a.createElement("tr",null,s.a.createElement("td",{colspan:"2"},s.a.createElement("span",{className:"inner row-divider"},"Pending invitations"))),this.props.data.pending_invitations.map((function(e,t){return s.a.createElement("tr",null,s.a.createElement("td",null,s.a.createElement("span",{className:"inner"},s.a.createElement(C,{user:e.profile_icon?e:null}),s.a.createElement("span",null,e.email," ",e.username?"("+e.username+")":""))))}))))}}]),a}(n.Component),Ae=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement("main",{className:"project-page"},s.a.createElement("h2",null,"Annotators"),s.a.createElement("div",{className:"wrapper"},this.props.loading&&function(){var e=new Array(15).fill(0);function t(e,t){for(var a="",n=0;n<e+Math.floor(Math.random()*t);n++)a+="x";return a}return s.a.createElement("table",{className:"project-page-table"},s.a.createElement("tbody",null,e.map((function(e,a){return s.a.createElement("tr",null,s.a.createElement("td",null,s.a.createElement("span",{className:"inner"},s.a.createElement("span",{className:"st"},t(30,70)))),s.a.createElement("td",null,s.a.createElement("span",{className:"inner"},s.a.createElement("span",{className:"st"},t(30,70)))))}))))}(),!this.props.loading&&s.a.createElement(Ie,{data:this.props.data})))}}]),a}(n.Component),Te=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"componentDidMount",value:function(){this.props.clearErrorCode()}},{key:"render",value:function(){return s.a.createElement(f.a,{to:y+"login"})}}]),a}(n.Component),Me=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){var n;return Object(p.a)(this,a),(n=t.call(this,e)).state={documentId:null,documents:[],annotations:[],compiledAnnotation:null,comments:[],annotatorAgreement:null,pageNumber:1,totalPages:1,recentlySaved:!1,changesMade:!1,searchTerm:null,sortBy:"Annotations",documentIdQuery:null,entityColourMap:{},loading:{querying:!0,saving:!1}},n.commentBoxRef=s.a.createRef(),n._isMounted=!1,n.refreshDataFn=null,n}return Object(m.a)(a,[{key:"componentWillMount",value:function(){this._isMounted=!0,this.props.documentIdQuery?this.setState({documentIdQuery:this.props.documentIdQuery},this.queryAPI):(console.log("Loading state:",this.props.prevState),this.props.prevState?this.setState(this.props.prevState):this.queryAPI())}},{key:"componentDidMount",value:function(){}},{key:"componentWillUnmount",value:function(){this._isMounted=!1}},{key:"componentDidUpdate",value:function(e,t){z.a.isEqual(t,this.state)||(console.log("state updated"),this.props.saveState(this.state))}},{key:"queryAPI",value:function(){var e=Object(d.a)(c.a.mark((function e(){var t,a,n=this;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._isMounted){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,this.setState({loading:{querying:!0,saving:!1}});case 4:return t="projects/"+this.props.project_id+"/curation?pageNumber="+this.state.pageNumber+"&sortBy="+this.state.sortBy,this.state.searchTerm&&(t+="&searchTerm="+this.state.searchTerm),this.state.documentIdQuery&&(t+="&documentId="+this.state.documentIdQuery),e.next=9,ge(t,"GET",this.props.setErrorCode);case 9:a=e.sent,this.setState({documentId:a.documentId,tokens:a.tokens,annotations:ie([a.tokens],a.annotations,this.state.searchTerm,!0),compiledAnnotation:a.compiledAnnotation?ie([a.tokens],[a.compiledAnnotation],this.state.searchTerm,!0)[0]:null,comments:a.comments,users:a.users,saveTimes:a.saveTimes,documentIdQuery:null,annotatorAgreement:a.annotatorAgreement,entityColourMap:this.initEntityColourMap(a.categoryHierarchy.children),pageNumber:a.pageNumber,totalPages:a.totalPages,loading:{querying:!1,saving:!1}},(function(){n.refreshDataFn&&window.clearTimeout(n.refreshDataFn),n.refreshDataFn=window.setTimeout(n.queryAPI.bind(n),3e3)}));case 11:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}()},{key:"searchDocuments",value:function(e){this.setState({pageNumber:1,searchTerm:e},this.queryAPI)}},{key:"submitAnnotations",value:function(){return null}},{key:"loadPreviousPage",value:function(){this.state.loading.querying||1!==this.state.pageNumber&&this.setState({pageNumber:this.state.pageNumber-1},this.queryAPI)}},{key:"loadNextPage",value:function(){this.state.loading.querying||this.state.pageNumber>=this.state.totalPages||this.setState({pageNumber:this.state.pageNumber+1},this.queryAPI)}},{key:"goToPage",value:function(e){this.state.loading.querying||e<1||e>this.state.totalPages||this.setState({pageNumber:e},this.queryAPI)}},{key:"setSortBy",value:function(e){var t=e.target.value;this.setState({sortBy:t},this.queryAPI)}},{key:"initEntityColourMap",value:function(e){var t={};for(var a in e){var n=e[a];t[n.name]=n.colorId+1}return t}},{key:"submitComment",value:function(){var e=Object(d.a)(c.a.mark((function e(t,a){var n,s,i,r;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=this,console.log("Message:",t),v("csrf-token"),s={text:t,documentId:this.state.documentId},e.next=6,ge("projects/"+this.props.project_id+"/comments/submit","POST",this.props.setErrorCode,s);case 6:i=e.sent,(r=this.state.comments).push(i.comment),this.setState({comments:r},(function(){a(),n.commentBoxRef.current.scrollTop=n.commentBoxRef.current.scrollHeight}));case 10:case"end":return e.stop()}}),e,this)})));return function(t,a){return e.apply(this,arguments)}}()},{key:"render",value:function(){var e=this;return s.a.createElement("div",{id:"tagging-interface"},s.a.createElement("div",{id:"sentence-tagging",className:"curation-page"},s.a.createElement(te,{pageNumber:this.state.pageNumber,totalPages:this.state.totalPages,totalPagesAvailable:this.state.totalPages,recentlySaved:this.state.recentlySaved,changesMade:this.state.changesMade,querying:this.state.loading.querying,saving:this.state.loading.saving,inSearchMode:this.state.searchTerm,showSortBy:!0,sortBy:this.state.sortBy,sortByOptions:["Annotations","Agreement","Document Index"],setSortBy:this.setSortBy.bind(this),searchDocuments:this.searchDocuments.bind(this),submitAnnotations:this.submitAnnotations.bind(this),loadPreviousPage:this.loadPreviousPage.bind(this),loadNextPage:this.loadNextPage.bind(this),goToPage:this.goToPage.bind(this),curationPage:!0}),!this.state.loading.querying&&!this.state.tokens&&s.a.createElement("div",{className:"loading-message no-results-found"},"No results found."),s.a.createElement("div",{className:"curation-interface-inner"},s.a.createElement("div",{className:"document-window",id:"sentence-tagging"},s.a.createElement("div",{className:"agreement-score"},s.a.createElement("span",{className:"name"},"Agreement:"),null!==this.state.annotatorAgreement&&s.a.createElement("span",{className:"value"},(100*this.state.annotatorAgreement).toFixed(2),"%"),null===this.state.annotatorAgreement&&s.a.createElement("span",{className:"value na"},"N/A")),this.state.annotations.map((function(t,a){return s.a.createElement(De,{user:e.state.users[a]||null,index:a,tokens:e.state.tokens,annotations:e.state.annotations[a],entityColourMap:e.state.entityColourMap,displayOnly:!0,saveTime:e.state.saveTimes[a]||null})})),this.state.compiledAnnotation&&s.a.createElement("div",{className:"divider"},s.a.createElement("span",null)),this.state.compiledAnnotation&&s.a.createElement(De,{specialName:"Compiled labels",specialDescription:"These labels are automatically compiled from the annotations above.",tokens:this.state.tokens,annotations:this.state.compiledAnnotation,entityColourMap:this.state.entityColourMap,displayOnly:!0})),s.a.createElement("div",{className:"comments-pane"},s.a.createElement("div",{className:"comments-wrapper"},this.props.user&&this.state.comments&&s.a.createElement("div",{className:"comments-inner"},s.a.createElement("h3",{className:0===this.state.comments.length?"hidden":""},"Comments ",this.state.comments.length>0&&"("+this.state.comments.length+")"),0===this.state.comments.length&&s.a.createElement("div",{className:"no-comments-yet"},"No comments yet."),s.a.createElement("div",{className:"comments-even-more-inner",ref:this.commentBoxRef},this.state.comments.map((function(e,t){return s.a.createElement(J,Object.assign({index:t},e,{hideDocumentString:!0}))}))),s.a.createElement(Z,{user_profile_icon:this.props.user.profile_icon,submitComment:this.submitComment.bind(this)})))))))}}]),a}(n.Component),De=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement("div",{className:"document-container"},s.a.createElement("div",{className:"document-wrapper"},s.a.createElement("div",{className:"curation-document"+(this.props.specialName||this.props.user?"":" not-yet-annotated")},!this.props.user&&!this.props.specialName&&s.a.createElement("div",{className:"user-col"}),!this.props.specialName&&this.props.user&&s.a.createElement("div",{className:"user-col"},s.a.createElement(C,{user:this.props.user}),s.a.createElement("div",null,s.a.createElement("div",{className:"username"},this.props.user&&this.props.user.username),s.a.createElement("div",{className:"save-time",style:{display:"none"}},Q(this.props.saveTime,{no_hours:!0})))),this.props.specialName&&s.a.createElement("div",{className:"user-col"},s.a.createElement("div",null,s.a.createElement("div",{className:"username"},s.a.createElement("em",null,this.props.specialName),s.a.createElement("i",{class:"fa fa-info-circle",title:this.props.specialDescription})))),s.a.createElement("div",{className:"sentence display-only"},s.a.createElement(Y,{index:this.props.index,words:this.props.tokens,annotations:this.props.annotations,entityColourMap:this.props.entityColourMap,displayOnly:!0})))))}}]),a}(n.Component),Fe=Me,Re=a(287);qe.defaults.global.defaultFontFamily="Open Sans",qe.defaults.global.animation.duration=500;var He=["#36A2EB","#FF6384","#6dc922","#B4436C","#FFCE56","#F78154","#5FAD56","#4D9078","#586BA4","#324376","#F5DD90","#6665DD","#7B4B94"],Ue=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"downloadAnnotationsOfUser",value:function(){var e=Object(d.a)(c.a.mark((function e(t){var a;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a="projects/"+this.props.project_id+"/download_annotations/"+t._id,e.next=3,ge(a,"GET",this.props.setErrorCode,null,!1,0,!0,"annotations-"+t.username+".json");case 3:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"downloadCombinedAnnotations",value:function(){var e=Object(d.a)(c.a.mark((function e(){var t;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t="projects/"+this.props.project_id+"/download_combined_annotations",e.next=3,ge(t,"GET",this.props.setErrorCode,null,!1,0,!0,"annotations-combined.json");case 3:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}()},{key:"render",value:function(){var e=this;return s.a.createElement("main",{className:"project-page"},s.a.createElement("h2",null,"Annotations"),s.a.createElement("div",{className:"combined-annotations-download-box"},0===this.props.data.combined_annotations_available?s.a.createElement("div",null,"There are not yet any annotations available for download."):s.a.createElement("div",null,s.a.createElement("strong",null,this.props.data.combined_annotations_available," "),"\xa0annotations are ready for download. ",s.a.createElement("button",{className:"annotate-button",onClick:function(){return e.downloadCombinedAnnotations()}},s.a.createElement("i",{className:"fa fa-download"}),"Download all"))),s.a.createElement("div",{className:"annotations-table-container"},s.a.createElement("table",{id:"annotations-table",className:"project-page-table annotations-table"},s.a.createElement("thead",null,s.a.createElement("tr",null,s.a.createElement("th",null,"Annotator"),s.a.createElement("th",null,"# Annotations"),s.a.createElement("th",null))),s.a.createElement("tbody",null,this.props.data.users.map((function(t,a){return s.a.createElement("tr",null,s.a.createElement("td",null,s.a.createElement("div",{className:"user-row"},s.a.createElement(C,{user:t}),t.username)),s.a.createElement("td",null,t.num_annotations),s.a.createElement("td",null,s.a.createElement("button",{className:"annotate-button"+(0===t.num_annotations?" disabled":""),onClick:function(){return e.downloadAnnotationsOfUser(t)}},s.a.createElement("i",{className:"fa fa-download"}),"Download")))}))))))}}]),a}(n.Component),Be=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){var e=this.props.data.length-1,t=this.props.data.reduce((function(e,t){return e+t}),0),a=Math.min(100,t)/t,n=[],i=-1,r=0;for(var o in this.props.data){var l=this.props.data[o],c=Math.floor(l*a);n.push(s.a.createElement("span",{style:{top:19*Math.ceil(r/10)+"px"},className:"waffle-chart-tooltip tooltip-"+(1===i?"right":"left")},s.a.createElement("b",{style:{background:"rgba(54, 162, 235,"+Math.max(.1,(e-o)/e)+")"}},e-o===0?"Not yet annotated":e-o+" annotation"+(e-o===1?"":"s")),s.a.createElement("span",{className:"num-docs"},this.props.data[o]," docs"))),i*=-1,Math.floor(c/10)+1,r+=c}return s.a.createElement("div",{className:"waffle-chart-container"},s.a.createElement("div",{className:"waffle-chart-legend"},s.a.createElement("span",null,e),s.a.createElement("div",{className:"waffle-chart-legend-inner"}),s.a.createElement("span",null,"0")),s.a.createElement("div",{className:"waffle-chart",id:"annotations-per-doc-chart"},s.a.createElement("div",{className:"waffle-chart-squares"},this.props.data.map((function(t,n){var i=e-n;return new Array(Math.floor(t*a)).fill(0).map((function(t,a){return s.a.createElement("div",{className:"waffle-square",style:{background:"rgba(54, 162, 235,"+Math.max(.1,i/e)+")"}},i)}))}))),s.a.createElement("div",{className:"waffle-chart-info"},"1 square = ~",Math.ceil(1/a)," documents"),s.a.createElement("div",{className:"waffle-chart-tooltips"},n)))}}]),a}(n.Component);function Le(e){return e.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")}function We(e){for(var t in e.datasets){var a=parseInt(t)%He.length;e.datasets[t]=Object.assign({},e.datasets[t],Object(ze.a)({fill:!1,lineTension:.1,backgroundColor:He[a],borderColor:He[a],borderCapStyle:"square",borderDash:[],borderDashOffset:0,borderJoinStyle:"bevel",pointBorderColor:He[a],pointBackgroundColor:He[a],pointBorderWidth:3,pointHoverRadius:6,pointHoverBackgroundColor:He[a],pointHoverBorderColor:"rgba(220,220,220,1)",pointHoverBorderWidth:2,pointRadius:1,pointHitRadius:10},"lineTension",0))}return e}function Ge(e,t){return[Math.max(e[0]-t,0),Math.max(e[1]-t,0),Math.max(e[2]-t,0)]}String.prototype.convertToRGB=function(){if(6!=this.length)throw"Only six-digit hex colors are allowed.";var e=this.match(/.{1,2}/g);return[parseInt(e[0],16),parseInt(e[1],16),parseInt(e[2],16)]};var Ve=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){var n;return Object(p.a)(this,a),(n=t.call(this,e)).state={data:[],multicolour:!1},n}return Object(m.a)(a,[{key:"getColouredData",value:function(e,t){var a=["#99FFCC","#FFCCCC","#CCCCFF","#CCFF99","#CCFFCC","#CCFFFF","#FFCC99","#FFCCFF","#FFFF99","#FFFFCC","#CCCC99","#fbafff"];console.log(e.entityClasses,"<<");var n=e;if(n.entityClasses.datasets[0].borderWidth=1,t)for(var s in n.entityClasses.datasets[0].backgroundColor=[],n.entityClasses.datasets[0].borderColor=[],e.entityClasses.labels){var i=e.entityClasses.labels[s],r=e.colourIndexes[i];console.log(r,i);var o=a[r%a.length];console.log(o);var l=o.slice(1,7).convertToRGB();n.entityClasses.datasets[0].backgroundColor.push("rgba("+l[0]+", "+l[1]+", "+l[2]+", 1)");var c=Ge(l,50);n.entityClasses.datasets[0].borderColor.push("rgba("+c[0]+", "+c[1]+", "+c[2]+", 1)")}else n.entityClasses.datasets[0].backgroundColor="rgba(54, 162, 235, 0.6)",n.entityClasses.datasets[0].borderColor="rgba(54, 162, 235, 0.6)";return n}},{key:"componentWillMount",value:function(){this.setState({data:this.getColouredData(this.props.data,this.props.multicolour),multicolour:this.props.multicolour})}},{key:"shouldComponentUpdate",value:function(e,t){return this.state.multicolour!==t.multicolour||e.multicolour!==this.props.multicolour}},{key:"componentDidUpdate",value:function(e,t){var a=this.props.multicolour;this.setState({multicolour:a,data:this.getColouredData(this.state.data,a)})}},{key:"render",value:function(){return s.a.createElement(qe.Bar,{data:this.state.data.entityClasses,height:230,options:{plugins:{datalabels:{display:!0,color:"rgba(0, 0, 0, 0.8)",anchor:"end",align:"start",offset:-20}},layout:{padding:{top:15}},responsive:!0,maintainAspectRatio:!1,legend:{display:!1},scales:{yAxes:[{ticks:{beginAtZero:!0,precision:0},scaleLabel:{display:!0,labelString:"Frequency"}}]}}})}}]),a}(n.Component),Ye=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){var n;return Object(p.a)(this,a),(n=t.call(this,e)).state={data:[]},n}return Object(m.a)(a,[{key:"componentWillMount",value:function(){console.log(this.props.data),this.setState({data:this.props.data,cumulative:this.props.cumulative})}},{key:"processActivityChartData",value:function(e){Object.assign({},this.props.data.datasets);if(console.log("cumu",e),e){console.log(this.props.data.activityChartData,"<<");var t=function(e){for(var t=[],a=0;a<e.length;a++){for(var n={label:e[a].label,data:new Array(e[a].data.length).fill(0)},s=0,i=e[a].data.length-1;i>=0;i--)s+=e[a].data[i],n.data[i]=s;console.log(n,">>"),t.push(n)}return t}(this.props.data.datasets),a=We({labels:Object.assign([],this.props.data.labels),datasets:t});return console.log(a,"<<<"),a}return this.props.data}},{key:"shouldComponentUpdate",value:function(e,t){return this.state.cumulative!==t.cumulative||e.cumulative!==this.props.cumulative}},{key:"componentDidUpdate",value:function(e,t){var a=this.props.cumulative;this.setState({cumulative:a,data:this.processActivityChartData(a)})}},{key:"render",value:function(){return console.log("rerendering",this.props.cumulative),s.a.createElement(qe.Line,{data:this.state.data,height:230,redraw:!0,options:{plugins:{datalabels:{display:!1}},responsive:!0,maintainAspectRatio:!1,scales:{xAxes:[{type:"time",time:{unit:"day"},ticks:{max:new Date}}],yAxes:[{ticks:{beginAtZero:!0,precision:0},scaleLabel:{display:!0,labelString:"Annotations"}}]}}})}}]),a}(n.Component),Ke=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){var n;return Object(p.a)(this,a),(n=t.call(this,e)).state={entityChartMulticolour:!1,activityChartCumulative:!1},n}return Object(m.a)(a,[{key:"toggleEntityChartColours",value:function(){this.setState({entityChartMulticolour:!this.state.entityChartMulticolour})}},{key:"toggleActivityChartCumulative",value:function(){this.setState({activityChartCumulative:!this.state.activityChartCumulative})}},{key:"render",value:function(){var e=this;return s.a.createElement("div",{id:"project-dashboard",className:"padded "+(this.props.loading?"loading":"")},s.a.createElement("div",{className:"dashboard-top-row"},s.a.createElement("div",{className:"dashboard-key-items"},s.a.createElement("div",{className:"dashboard-item"},s.a.createElement("div",{className:"flex-wrapper"},s.a.createElement("div",null,s.a.createElement("div",{className:"name"},"# Annotated"),s.a.createElement("div",{className:"value"},s.a.createElement("span",{class:"st st-darker"},Le(this.props.data.numDocGroupsAnnotated)," / ",Le(this.props.data.totalDocGroups)))),s.a.createElement("div",{class:"pieChart"},s.a.createElement("span",{className:"pie-chart-value"},s.a.createElement("span",{className:"inner st st-darker"},(100*this.props.data.numDocGroupsAnnotated/this.props.data.totalDocGroups).toFixed(0),"%")),this.props.loading&&s.a.createElement(Ce.PieChart,{data:[{value:0,color:"rgb(109, 201, 34)"},{value:1,color:"rgba(0, 0, 0, 0)"}],background:"#d5d5d5",lineWidth:18,startAngle:270}),!this.props.loading&&s.a.createElement(Ce.PieChart,{data:[{value:this.props.data.numDocGroupsAnnotated,color:"rgb(109, 201, 34)"},{value:this.props.data.totalDocGroups-this.props.data.numDocGroupsAnnotated,color:"rgba(0, 0, 0, 0)"}],background:"#d5d5d5",animate:!0,animationDuration:500,lineWidth:18,startAngle:270})))),s.a.createElement("div",{className:"dashboard-item"},s.a.createElement("div",{className:"name"},"Avg. agreement",s.a.createElement("span",{className:"information",title:"Average agreement is only calculated for documents with more than one annotation."},s.a.createElement("i",{class:"fa fa-info-circle"}))),s.a.createElement("div",{className:"value"},s.a.createElement("span",{class:"st st-darker"}," ",this.props.data.avgAgreement?Math.round(100*this.props.data.avgAgreement)+"%":"--"," "))),s.a.createElement("div",{className:"dashboard-item"},s.a.createElement("div",{className:"name"},"Avg. time per document"),s.a.createElement("div",{className:"value"},s.a.createElement("span",{class:"st st-darker"},this.props.data.avgTimePerDocument," seconds")))),s.a.createElement(b.b,{to:y+"projects/"+this.props.project_id+"/tagging",className:"annotate-button"},s.a.createElement("i",{class:"fa fa-pencil"}),"Annotate",s.a.createElement("div",{className:"subtitle"},this.props.data.userDocsAnnotated,"/",this.props.data.userAnnotationsRequired," complete"))),s.a.createElement("div",{className:"dashboard-white-boxes"},s.a.createElement("div",{className:"dashboard-wrapper-item col-60"},s.a.createElement("div",{className:"dashboard-item col-100"},s.a.createElement("div",{className:"inner"},s.a.createElement("div",{className:"dashboard-flex-header"},s.a.createElement("h3",null,"Entity frequencies"),this.props.data.entityChartData&&s.a.createElement("div",{onClick:this.toggleEntityChartColours.bind(this),className:"chart-option"+(this.state.entityChartMulticolour?" active":"")},s.a.createElement("span",{className:"checkbox"}),s.a.createElement("span",null,"Colour by class"))),s.a.createElement("div",null,this.props.loading&&s.a.createElement("div",{className:"chart-placeholder"},s.a.createElement("i",{class:"fa fa-cog fa-spin"}),"Loading..."),!this.props.loading&&!this.props.data.entityChartData&&s.a.createElement("div",{className:"chart-placeholder chart-not-available"},"This project does not have any annotations yet."),!this.props.loading&&this.props.data.entityChartData&&s.a.createElement(Ve,{data:this.props.data.entityChartData,multicolour:this.state.entityChartMulticolour})))),s.a.createElement("div",{className:"dashboard-item col-60"},s.a.createElement("div",{className:"inner"},s.a.createElement("div",{className:"dashboard-flex-header"},s.a.createElement("h3",null,"Activity"),this.props.data.activityChartData&&s.a.createElement("div",{onClick:this.toggleActivityChartCumulative.bind(this),className:"chart-option"+(this.state.activityChartCumulative?" active":"")},s.a.createElement("span",{className:"checkbox"}),s.a.createElement("span",null,"Cumulative"))),s.a.createElement("div",null,this.props.loading&&s.a.createElement("div",{className:"chart-placeholder"},s.a.createElement("i",{class:"fa fa-cog fa-spin"}),"Loading..."),!this.props.loading&&!this.props.data.activityChartData&&s.a.createElement("div",{className:"chart-placeholder chart-not-available"},"This project does not have any activity yet."),!this.props.loading&&this.props.data.activityChartData&&s.a.createElement(Ye,{data:this.props.data.activityChartData,cumulative:this.state.activityChartCumulative})))),s.a.createElement("div",{className:"dashboard-item col-40"},s.a.createElement("div",{className:"inner"},s.a.createElement("h3",null,"Annotations/document"),this.props.loading&&s.a.createElement("div",{className:"chart-placeholder"},s.a.createElement("i",{class:"fa fa-cog fa-spin"}),"Loading..."),!this.props.loading&&s.a.createElement(Be,{data:this.props.data.annotationsChartData})))),s.a.createElement("div",{className:"dashboard-item col-40 double-height"},s.a.createElement("div",{className:"inner"},s.a.createElement("h3",null,"Comments"),s.a.createElement("div",{className:"comments-wrapper"+(0===this.props.data.comments.length?" no-comments":"")},0===this.props.data.comments.length&&s.a.createElement("div",{className:"no-comments"},"This project does not have any comments yet."),this.props.data.comments.map((function(t,a){return s.a.createElement(J,Object.assign({index:a},t,{project_id:e.props.project_id}))})))))))}}]),a}(n.Component),Qe=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){var e=window.location.pathname,t=e.slice(y.length-1,e.length),a=t.split("/").slice(3,t.split("/").length);return console.log(a),s.a.createElement("nav",{id:"project-view-sidenav"},s.a.createElement("div",{className:"project-card"},s.a.createElement("div",{className:"project-title-creator"},s.a.createElement("div",{className:"project-name"+(this.props.projectTitle?"":" st"),style:{display:"block"}},s.a.createElement(b.b,{to:y+"projects/"+this.props.project_id+"/dashboard"},this.props.projectTitle?this.props.projectTitle:"xxxxxxxx")),s.a.createElement("div",{className:"project-creator"+(this.props.projectAuthor?"":" st"),style:{display:"block"}},"Created by ",s.a.createElement("span",{className:"creator-name"},this.props.projectAuthor?this.props.projectAuthor:"xxxxxxxx")))),s.a.createElement("ul",{className:"sidenav-items"},s.a.createElement(Ze,{project_id:this.props.project_id,view:a,name:"Dashboard",icon:"bar-chart"}),s.a.createElement(Ze,{project_id:this.props.project_id,view:a,name:"Entity Hierarchy",icon:"sitemap"}),s.a.createElement(Je,{project_id:this.props.project_id,view:a,name:"Annotations",menuItems:[{name:"Curation",icon:"gavel"},{name:"Download",icon:"download"}],icon:"list-alt"}),s.a.createElement(Ze,{project_id:this.props.project_id,view:a,name:"Annotators",icon:"user"}),s.a.createElement(Ze,{project_id:this.props.project_id,view:a,name:"Settings",icon:"wrench"})))}}]),a}(n.Component),Je=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){var e=this,t=this.props.name.replace(" ","-").toLowerCase();console.log(this.props.view,t);var a=this.props.menuItems[0].name.replace(" ","-").toLowerCase(),n=this.props.view[0]===t;return s.a.createElement("li",{className:"submenu-header"+(this.props.view[0]===t?" active":"")},s.a.createElement(b.b,{to:y+"projects/"+this.props.project_id+"/"+t+"/"+a},s.a.createElement("i",{className:"fa fa-"+this.props.icon}),this.props.name),s.a.createElement("ul",{className:"submenu"+(n?" open":"")},this.props.menuItems.map((function(a,n){return s.a.createElement(Ze,{project_id:e.props.project_id,view:e.props.view,name:a.name,parentPath:t,icon:a.icon})}))))}}]),a}(n.Component),Ze=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){var e=this.props.name.replace(" ","-").toLowerCase();return this.props.parentPath&&(e=this.props.parentPath+"/"+e),s.a.createElement("li",{className:this.props.view.join("/")===e?"active":""},s.a.createElement(b.b,{to:y+"projects/"+this.props.project_id+"/"+e},s.a.createElement("i",{className:"fa fa-"+this.props.icon}),this.props.name))}}]),a}(n.Component),Xe=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement("main",null,"This page is still a work in progress!")}}]),a}(n.Component),$e=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){var n;return Object(p.a)(this,a),(n=t.call(this,e)).state={loading:!0,error:null,data:{dashboard:{userDocsAnnotated:0,userAnnotationsRequired:0,numDocGroupsAnnotated:999,totalDocGroups:9999,avgAgreement:.5,avgTimePerDocument:15,comments:[{author:"Mr Pingu",date:"4 Sept",text:"Noot noot! I don't know what this is",document_string:"one two three four five six seven ",user_profile_icon:{foreground:"#eee",background:"#eee",icon:"fa-user"}},{author:"Mrs Pingu",date:"3 Sept",text:"This doesn't make sense",document_string:"one two three four five six seven one two three four five six seven one two three four five six seven ",user_profile_icon:{foreground:"#eee",background:"#eee",icon:"fa-user"}},{author:"Michael",date:"1 Sept",text:"Not sure what a flange is",document_string:"one two three four five six seven one two three four five six seven ",user_profile_icon:{foreground:"#eee",background:"#eee",icon:"fa-user"}},{author:"Michael",date:"1 Sept",text:"I sure hope these never get rendered",document_string:"one two three four five six seven ",user_profile_icon:{foreground:"#eee",background:"#eee",icon:"fa-user"}},{author:"Borat",date:"1 Sept",text:"very nice",document_string:"one two three four five six seven one two three four five six seven ",user_profile_icon:{foreground:"#eee",background:"#eee",icon:"fa-user"}}]},categoryHierarchy:{children:[]}}},n.curationInterfaceState=null,n}return Object(m.a)(a,[{key:"componentWillMount",value:function(){var e=Object(d.a)(c.a.mark((function e(){var t,a,n=this;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=this,e.prev=1,e.next=4,ge("projects/"+this.props.project_id,"GET",this.props.setErrorCode,555);case 4:(a=e.sent).dashboard.activityChartData&&(a.dashboard.activityChartData=We(a.dashboard.activityChartData)),t.setState({loading:!1,data:a},(function(){n.props.setProject(a.project_name,a.project_author)})),e.next=12;break;case 9:e.prev=9,e.t0=e.catch(1),console.log(e.t0);case 12:case"end":return e.stop()}}),e,this,[[1,9]])})));return function(){return e.apply(this,arguments)}}()},{key:"setCurationInterfaceData",value:function(e){console.log("saving state",e),this.curationInterfaceState=e}},{key:"render",value:function(){var e=this,t=this.props.location;console.log("Rendering project view",this.curationInterfaceState);var a=Re.parse(t.search).docId;return s.a.createElement("div",{id:"project-view",className:this.state.loading?"loading":""},s.a.createElement(Qe,{project_id:this.props.project_id,projectTitle:this.props.projectTitle,projectAuthor:this.props.projectAuthor}),s.a.createElement("div",{className:"project-view-wrapper"},s.a.createElement(Se.a,{className:"transition-group"},s.a.createElement(_e.a,{key:t.key,timeout:{enter:400,exit:400},classNames:"fade"},s.a.createElement("section",{className:"route-section"+(this.state.loading?"":" loaded")},s.a.createElement(f.d,{location:t},s.a.createElement(f.b,{path:y+"projects/:id/dashboard",render:function(){return s.a.createElement(Ke,{loading:e.state.loading,data:e.state.data.dashboard,project_id:e.props.project_id})}}),s.a.createElement(f.b,{path:y+"projects/:id/annotations/curation",render:function(){return s.a.createElement(Fe,{user:e.props.user,project_id:e.props.project_id,prevState:e.curationInterfaceState,saveState:e.setCurationInterfaceData.bind(e),loading:e.state.loading,documentIdQuery:a,setErrorCode:e.props.setErrorCode})}}),s.a.createElement(f.b,{path:y+"projects/:id/annotations/download",render:function(){return s.a.createElement(Ue,{user:e.props.user,project_id:e.props.project_id,data:e.state.data.annotationsTable?e.state.data.annotationsTable:{users:[],num_combined_available:0},setErrorCode:e.props.setErrorCode})}}),s.a.createElement(f.b,{path:y+"projects/:id/entity-hierarchy",render:function(){return s.a.createElement(Pe,{loading:e.state.loading,data:e.state.data.categoryHierarchy,colourIndexes:e.state.data.dashboard.entityChartData?e.state.data.dashboard.entityChartData.colourIndexes:null})}}),s.a.createElement(f.b,{path:y+"projects/:id/annotators",render:function(){return s.a.createElement(Ae,{data:e.state.data.invitationsTable?e.state.data.invitationsTable:{},loading:e.state.loading})}}),s.a.createElement(f.b,{path:y+"projects/:id/settings",render:function(){return s.a.createElement(Xe,e.state)}}),s.a.createElement(f.b,{render:function(){return s.a.createElement(oe,null)}})))))))}}]),a}(n.Component),et=Object(f.h)($e),tt=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){var n;return Object(p.a)(this,a),(n=t.call(this,e)).state={email:"",password:"",error:null,errorMessage:null},n}return Object(m.a)(a,[{key:"handleUsernameChange",value:function(e){this.setState({email:e.target.value})}},{key:"handlePasswordChange",value:function(e){this.setState({password:e.target.value})}},{key:"submitForm",value:function(){var e=Object(d.a)(c.a.mark((function e(t){var a,n;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t.preventDefault(),a={email:this.state.email,password:this.state.password},e.next=4,this.setState({errorMessage:null,loading:!0});case 4:return e.next=6,ge("users/login","POST",this.props.setErrorCode,a);case 6:n=e.sent,console.log("D:",n),n.error?this.setState({errorMessage:n.error,password:"",loading:!1}):this.props.setUserData(n);case 9:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"render",value:function(){return s.a.createElement("div",{class:"user-form form-box"+(this.state.loading?" loading":"")},s.a.createElement("div",{class:"header"},s.a.createElement("h1",null,"Login")),s.a.createElement("div",{class:"body"},s.a.createElement("div",{className:"loading-message"},s.a.createElement("i",{className:"fa fa-spinner fa-spin"}),"Loading..."),this.state.errorMessage&&s.a.createElement("div",{className:"error-message"},s.a.createElement("span",{className:"error"},"Error: "),this.state.errorMessage,"."),s.a.createElement("form",{onSubmit:this.submitForm.bind(this),method:"post"},s.a.createElement("div",null,s.a.createElement("label",null,"Username or email"),s.a.createElement("input",{type:"text",name:"email",autoFocus:"autofocus",required:"required",placeholder:"Username or email",value:this.state.email,onChange:this.handleUsernameChange.bind(this)})),s.a.createElement("div",null,s.a.createElement("label",null,"Password"),s.a.createElement("input",{type:"password",name:"password",required:"required",placeholder:"Password",value:this.state.password,onChange:this.handlePasswordChange.bind(this)})),s.a.createElement(b.b,{class:"forgot-password-link",to:y+"forgot_password"},"Forgot password?"),s.a.createElement("div",{class:"buttons"},s.a.createElement("div",null,s.a.createElement(b.b,{class:"back-button",to:y},s.a.createElement("i",{class:"fa fa-chevron-left"}),"\xa0\xa0 Back")),s.a.createElement("div",null,s.a.createElement("input",{type:"submit",value:"Login"}))))))}}]),a}(n.Component),at=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){var n;return Object(p.a)(this,a),(n=t.call(this,e)).state={username:"",password:"",passwordConfirmation:"",email:"",success:!1,errorMessage:null,loading:!1},n}return Object(m.a)(a,[{key:"handleUsernameChange",value:function(e){this.setState({username:e.target.value})}},{key:"handleEmailChange",value:function(e){this.setState({email:e.target.value})}},{key:"handlePasswordChange",value:function(e){this.setState({password:e.target.value})}},{key:"handlePasswordConfirmationChange",value:function(e){this.setState({passwordConfirmation:e.target.value})}},{key:"submitForm",value:function(){var e=Object(d.a)(c.a.mark((function e(t){var a,n;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.preventDefault(),this.state.password===this.state.passwordConfirmation){e.next=4;break}return this.setState({errorMessage:"Password and password confirmation do not match."}),e.abrupt("return");case 4:return a={username:this.state.username,email:this.state.email,password:this.state.password},e.next=7,this.setState({errorMessage:null,loading:!0});case 7:return e.next=9,ge("users/register","POST",this.props.setErrorCode,a);case 9:n=e.sent,console.log("D:",n),n.error?this.setState({errorMessage:n.error,password:"",passwordConfirmation:"",loading:!1}):this.setState({success:!0,loading:!1});case 12:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"render",value:function(){return this.state.success?s.a.createElement(f.a,{to:y+"projects"}):s.a.createElement("div",{class:"user-form form-box"+(this.state.loading?" loading":"")},s.a.createElement("div",{class:"header"},s.a.createElement("h1",null,"Register")),s.a.createElement("div",{class:"body"},s.a.createElement("div",{className:"loading-message"},s.a.createElement("i",{className:"fa fa-spinner fa-spin"}),"Loading..."),this.state.errorMessage&&s.a.createElement("div",{className:"error-message"},s.a.createElement("span",{className:"error"},"Error: "),this.state.errorMessage,"."),s.a.createElement("div",{className:"loading-message"},s.a.createElement("i",{className:"fa fa-spinner fa-spin"}),"Loading..."),s.a.createElement("form",{onSubmit:this.submitForm.bind(this)},s.a.createElement("div",null,s.a.createElement("label",null,"Username"),s.a.createElement("input",{onChange:this.handleUsernameChange.bind(this),value:this.state.username,type:"text",name:"username",autoFocus:"autofocus",placeholder:"Username",required:"required"})),s.a.createElement("div",null,s.a.createElement("label",null,"Email"),s.a.createElement("input",{onChange:this.handleEmailChange.bind(this),type:"email",name:"email",placeholder:"Email",required:"required"})),s.a.createElement("div",null,s.a.createElement("label",null,"Password"),s.a.createElement("input",{id:"input-password",type:"password",name:"password",required:"required",value:this.state.password,onChange:this.handlePasswordChange.bind(this)}),s.a.createElement("label",null,"Password confirmation"),s.a.createElement("input",{id:"input-password-confirmation",type:"password",name:"password",required:"required",value:this.state.passwordConfirmation,onChange:this.handlePasswordConfirmationChange.bind(this)})),s.a.createElement("div",{class:"buttons"},s.a.createElement("div",null,s.a.createElement(b.b,{class:"back-button",to:y},s.a.createElement("i",{class:"fa fa-chevron-left"}),"\xa0\xa0 Back")),s.a.createElement("div",null,s.a.createElement("input",{type:"submit",value:"Register"}))))))}}]),a}(n.Component),nt=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){var n;return Object(p.a)(this,a),(n=t.call(this,e)).state={loading:!1,errorMessage:null,email:"",success:!1},n}return Object(m.a)(a,[{key:"handleEmailChange",value:function(e){this.setState({email:e.target.value})}},{key:"submitForm",value:function(){var e=Object(d.a)(c.a.mark((function e(t){var a,n;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t.preventDefault(),a={email:this.state.email},e.next=4,this.setState({errorMessage:null,loading:!0});case 4:return e.next=6,ge("users/forgot_password","POST",this.props.setErrorCode,a);case 6:n=e.sent,console.log("D:",n),n.error?this.setState({errorMessage:n.error,password:"",loading:!1}):this.setState({success:!0,loading:!1});case 9:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"render",value:function(){return s.a.createElement("div",{class:"user-form form-box"+(this.state.loading?" loading":"")},s.a.createElement("div",{class:"header"},s.a.createElement("h1",null,"Forgot Password")),s.a.createElement("div",{class:"body"},s.a.createElement("div",{className:"loading-message"},s.a.createElement("i",{className:"fa fa-spinner fa-spin"}),"Loading..."),this.state.errorMessage&&s.a.createElement("div",{className:"error-message"},s.a.createElement("span",{className:"error"},"Error: "),this.state.errorMessage,"."),this.state.success?s.a.createElement("div",null,s.a.createElement("div",{className:"form-notice form-success"},"An email has been sent to your email address with instructions on how to reset your password."),s.a.createElement("div",{class:"buttons"},s.a.createElement(b.b,{class:"back-button",to:y+"login"},s.a.createElement("i",{class:"fa fa-chevron-left"}),"\xa0\xa0 Back"))):s.a.createElement("form",{onSubmit:this.submitForm.bind(this)},s.a.createElement("div",null,s.a.createElement("label",null,"Email address"),s.a.createElement("input",{type:"email",name:"email",autoFocus:"autofocus",required:"required",placeholder:"Username or email",value:this.state.email,onChange:this.handleEmailChange.bind(this)})),s.a.createElement("div",{class:"buttons"},s.a.createElement("div",null,s.a.createElement(b.b,{class:"back-button",to:y+"login"},s.a.createElement("i",{class:"fa fa-chevron-left"}),"\xa0\xa0 Back")),s.a.createElement("div",null,s.a.createElement("input",{type:"submit",value:"Reset password"}))))))}}]),a}(n.Component),st=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){var n;return Object(p.a)(this,a),(n=t.call(this,e)).state={loading:!1,errorMessage:null,password:"",passwordConfirmation:"",success:!1},n}return Object(m.a)(a,[{key:"handlePasswordChange",value:function(e){this.setState({password:e.target.value})}},{key:"handlePasswordConfirmationChange",value:function(e){this.setState({passwordConfirmation:e.target.value})}},{key:"submitForm",value:function(){var e=Object(d.a)(c.a.mark((function e(t){var a,n;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.preventDefault(),this.state.password===this.state.passwordConfirmation){e.next=4;break}return this.setState({errorMessage:"Password and password confirmation do not match."}),e.abrupt("return");case 4:return a={password:this.state.password},e.next=7,this.setState({errorMessage:null,loading:!0});case 7:return e.next=9,ge("users/reset_password/"+this.props.token,"POST",this.props.setErrorCode,a);case 9:n=e.sent,console.log("D:",n),n.error?this.setState({errorMessage:n.error,password:"",loading:!1}):this.setState({success:!0,loading:!1});case 12:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"render",value:function(){return s.a.createElement("div",{class:"user-form form-box"+(this.state.loading?" loading":"")},s.a.createElement("div",{class:"header"},s.a.createElement("h1",null,"Reset Password")),s.a.createElement("div",{class:"body"},s.a.createElement("div",{className:"loading-message"},s.a.createElement("i",{className:"fa fa-spinner fa-spin"}),"Loading..."),this.state.errorMessage&&s.a.createElement("div",{className:"error-message"},s.a.createElement("span",{className:"error"},"Error: "),this.state.errorMessage,"."),this.state.success?s.a.createElement("div",null,s.a.createElement("div",{className:"form-notice form-success"},"Your password has been reset."),s.a.createElement("div",{class:"buttons"},s.a.createElement(b.b,{class:"back-button",to:y+"login"},s.a.createElement("i",{class:"fa fa-chevron-left"}),"\xa0\xa0 Login"))):s.a.createElement("form",{onSubmit:this.submitForm.bind(this)},s.a.createElement("div",null,s.a.createElement("label",null,"Password"),s.a.createElement("input",{id:"input-password",type:"password",name:"password",autoFocus:"autofocus",required:"required",value:this.state.password,onChange:this.handlePasswordChange.bind(this)})),s.a.createElement("div",null,s.a.createElement("label",null,"Password confirmation"),s.a.createElement("input",{id:"input-password-confirmation",type:"password",name:"password",required:"required",value:this.state.passwordConfirmation,onChange:this.handlePasswordConfirmationChange.bind(this)})),s.a.createElement("div",{class:"buttons"},s.a.createElement("div",null,s.a.createElement(b.b,{class:"back-button",to:y+"login"},s.a.createElement("i",{class:"fa fa-chevron-left"}),"\xa0\xa0 Back")),s.a.createElement("div",null,s.a.createElement("input",{type:"submit",value:"Reset password"}))))))}}]),a}(n.Component),it="Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc,".split(". ");function rt(){for(var e=[],t=0;t<200;t++)e.push(it[Math.floor(Math.random()*it.length)]+". ");return e.join("")}var ot=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){var n;return Object(p.a)(this,a),(n=t.call(this,e)).state={characters:rt()},n.characterChangeFn=null,n}return Object(m.a)(a,[{key:"changeCharacters",value:function(){this.setState({characters:rt()})}},{key:"componentWillUnmount",value:function(){window.clearInterval(this.characterChangeFn)}},{key:"componentWillMount",value:function(){this.characterChangeFn=window.setInterval(this.changeCharacters.bind(this),1e3)}},{key:"render",value:function(){return s.a.createElement("div",{className:"letters-background"},this.state.characters)}}]),a}(n.Component),lt=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement("div",{className:"homepage-main"},s.a.createElement("h1",{id:"h1-welcome","data-content":"Redcoat"},"Redcoat"),s.a.createElement("h2",{id:"h2-byline","data-content":"Collaborative Annotation Tool"},"Collaborative Annotation Tool"),s.a.createElement("div",{class:"buttons"},s.a.createElement(b.b,{to:y+"register"},s.a.createElement("div",{class:"button",id:"register-button"},s.a.createElement("h2",null,"Register"))),s.a.createElement(b.b,{to:y+"login"},s.a.createElement("div",{class:"button",id:"login-button"},s.a.createElement("h2",null,"Login")))))}}]),a}(n.Component),ct=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){var e=this,t=this.props.location;return s.a.createElement("section",{id:"welcome"},s.a.createElement(ot,null),s.a.createElement(Se.a,{className:"transition-group"},s.a.createElement(_e.a,{key:t.key,timeout:{enter:400,exit:400},classNames:"fade"},s.a.createElement("section",{className:"route-section homepage-route-section"},s.a.createElement(f.d,{location:t},s.a.createElement(f.b,{path:y+"login",render:function(){return s.a.createElement(tt,{setErrorCode:e.props.setErrorCode,setUserData:e.props.setUserData})}}),s.a.createElement(f.b,{path:y+"register",render:function(){return s.a.createElement(at,{setErrorCode:e.props.setErrorCode})}}),s.a.createElement(f.b,{path:y+"forgot_password",render:function(){return s.a.createElement(nt,{setErrorCode:e.props.setErrorCode})}}),s.a.createElement(f.b,{path:y+"reset_password/:id",render:function(t){return s.a.createElement(st,{token:t.match.params.id,setErrorCode:e.props.setErrorCode})}}),s.a.createElement(f.b,{exact:!0,path:y+"reset_password",render:function(){return s.a.createElement(f.a,{to:y})}}),s.a.createElement(f.b,{path:y,component:lt}))))))}}]),a}(n.Component),dt=Object(f.h)(ct),ut=a(90),pt=a.n(ut),mt=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement("span",{className:"form-help",onClick:this.props.onClick},s.a.createElement("i",{className:"fa fa-info-circle fa-xxs"}),s.a.createElement("span",{className:"info"},"Info"))}}]),a}(n.Component),gt=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){var n;return Object(p.a)(this,a),(n=t.call(this,e)).state={file:null,filename:null,errorCleared:!1},n}return Object(m.a)(a,[{key:"componentDidUpdate",value:function(e,t){z.a.isEqual(t.filename,this.state.filename)||this.props.updateFile(this.state.file),e.hasError!==this.props.hasError&&this.props.hasError&&this.setState({errorCleared:!1})}},{key:"updateFile",value:function(){var e=Object(d.a)(c.a.mark((function e(t){var a=this;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(console.log(t.target.files[0]),t.target.files[0]){e.next=3;break}return e.abrupt("return");case 3:this.setState({file:t.target.files[0],filename:t.target.files[0].name,errorCleared:!0},(function(){a.props.updateFile(a.state.file)}));case 4:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"render",value:function(){var e=this;return s.a.createElement("div",{className:"upload-form-container"},s.a.createElement("div",{className:"upload-form "+(this.props.file_metadata?"saved":"")+(this.props.hasError&&!this.state.errorCleared?"error":"")},s.a.createElement("input",{required:!this.props.file_metadata,type:"file",id:"upload-dataset",name:"upload-dataset",onChange:function(t){return e.updateFile(t)}}),s.a.createElement("label",{htmlFor:"upload-dataset"},this.props.saving?s.a.createElement("span",{className:"center"},s.a.createElement("i",{className:"form-icon fa fa-cog fa-spin"}),"Uploading..."):this.props.hasError&&!this.state.errorCleared?s.a.createElement("span",{className:"center"},s.a.createElement("i",{className:"form-icon fa fa-times"}),"An error occurred while uploading",s.a.createElement("br",null),s.a.createElement("em",null,this.state.filename),"."):this.props.file_metadata?s.a.createElement("span",null,s.a.createElement("span",{className:"center"},s.a.createElement("em",null,this.props.file_metadata[0][1])," uploaded successfully."),s.a.createElement("table",{className:"file-metadata"},s.a.createElement("tbody",null,this.props.file_metadata.slice(1,this.props.file_metadata.length).map((function(e,t){return s.a.createElement("tr",{key:t},s.a.createElement("td",null,e[0],":"),s.a.createElement("td",null,e[1]))}))))):this.state.filename?s.a.createElement("span",null,s.a.createElement("i",{className:"form-icon fa fa-check"}),"Ready to upload ",s.a.createElement("em",null,this.state.filename),"."):s.a.createElement("span",null,s.a.createElement("i",{className:"form-icon fa fa-upload"}),"Click here to upload a ",this.props.name?this.props.name:"dataset","."))))}}]),a}(n.Component),ht=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){var n;return Object(p.a)(this,a),(n=t.call(this,e)).state={data:{project_name:"",project_description:"",dataset:null}},n}return Object(m.a)(a,[{key:"componentDidMount",value:function(){this.setState({data:this.props.data})}},{key:"componentDidUpdate",value:function(e,t){z.a.isEqual(this.props.data,this.state.data)||z.a.isEqual(t.data,this.state.data)||this.props.updateFormPageData(this.state.data,{reset_form:!1})}},{key:"updateProjectName",value:function(e){var t=e.target.value;0===t.trim().length&&(t=""),this.setState({data:Object(le.a)(Object(le.a)({},this.state.data),{},{project_name:t})})}},{key:"updateProjectDescription",value:function(e){var t=e.target.value;0===t.trim().length&&(t=""),this.setState({data:Object(le.a)(Object(le.a)({},this.state.data),{},{project_description:t})})}},{key:"updateDataset",value:function(e){var t=this;this.setState({data:Object(le.a)(Object(le.a)({},this.state.data),{},{dataset:e})},(function(){console.log("changed"),t.props.updateFormPageData(t.state.data,{reset_form:!0})}))}},{key:"render",value:function(){var e=this,t=s.a.createElement("div",null,s.a.createElement("h2",null,"Data"),s.a.createElement("p",null,"Please upload your data using the form. The data may be in one of two formats: "),s.a.createElement("ul",null,s.a.createElement("li",null,s.a.createElement("b",null,"Raw data"),": The dataset must be saved as a .txt file. Each token within your data must be separated by a space, and each document must be on a new line."),s.a.createElement("li",null,"(Coming soon): ",s.a.createElement("b",null,"Already labelled data"),": The dataset must be saved as a .json file, in the same format as Redcoat annotation files.")));return s.a.createElement("div",null,s.a.createElement("div",{className:"flex-columns flex-columns-2"},s.a.createElement("div",{className:"flex-column"},s.a.createElement("h2",null,"Project details"),s.a.createElement("div",{className:"form-group"+(this.props.errorPaths.has("project_name")?" error":"")},s.a.createElement("label",null,"Project name"),s.a.createElement("input",{required:!0,onKeyDown:function(e){return 13==e.keyCode?e.preventDefault():""},maxLength:100,placeholder:"Project name",value:this.state.data.project_name||"",onChange:function(t){return e.updateProjectName(t)}})),s.a.createElement("div",{className:"form-group"+(this.props.errorPaths.has("project_description")?" error":"")},s.a.createElement("label",null,"Project description (optional)"),s.a.createElement("textarea",{maxLength:1e3,placeholder:"Project description",value:this.state.data.project_description||"",onChange:function(t){return e.updateProjectDescription(t)}}))),s.a.createElement("div",{className:"flex-column"},s.a.createElement("h2",null,"Data ",s.a.createElement(mt,{onClick:function(){return e.props.toggleFormHelp(t)}})),s.a.createElement(gt,{saving:this.props.saving&&!this.props.data.file_metadata,hasError:this.props.errorPaths&&this.props.errorPaths.has("dataset"),updateFile:this.updateDataset.bind(this),file_metadata:this.props.data.file_metadata}))))}}]),a}(n.Component),bt=[{name:"Named Entity Recognition (NER)",entities:["Person","Organisation","Location","Miscellaneous"]},{name:"Fine-grained Entity Recognition (FIGER)",entities:["person","person/actor","person/architect","person/artist","person/athlete","person/author","person/coach","person/director","person/doctor","person/engineer","person/monarch","person/musician","person/politician","person/religious_leader","person/soldier","person/terrorist","organization","organization/airline","organization/company","organization/educational_institution","organization/fraternity_sorority","organization/sports_league","organization/sports_team","organization/terrorist_organisation","organization/government_agency","organization/government","organization/political_party","organization/educational_department","organization/military","organization/news_agency","location","location/city","location/country","location/county","location/province","location/railway","location/road","location/bridge","location/body_of_water","location/island","location/mountain","location/glacier","location/astral_body","location/cemetary","location/park","product","product/engine","product/airplane","product/car","product/ship","product/spacecraft","product/train","product/camera","product/mobile_phone","product/computer","product/software","product/game","product/instrument","product/weapon","art","art/film","art/play","art/written_work","art/newspaper","art/music","event","event/attack","event/election","event/protest","event/military_conflict","event/natural_disaster","event/sports_event","event/terrorist_attack","event/building","event/airport","event/dam","event/hospital","event/hotel","event/library","event/power_station","event/restaurant","event/sports_facility","event/theater","time","color","award","educational_degree","title","law","ethnicity","language","religion","god","chemical_thing","biological_thing","medical_treatment","disease","symptom","drug","body_part","living_thing","animal","food","website","broadcast_network","broadcast_program","tv_channel","currency","stock_exchange","algorithm","programming_language","transit_system","transit_line"]},{name:"Maintenance work orders",entities:["Item","Activity","Location","Time","Attribute","Cardinality","Agent","Consumable","Observation","Observation/Observed_state","Observation/Quantitative","Observation/Qualitative","Specifier","Event","Unsure","Typo","Abbreviation"],descriptions:{Item:"A maintainable item",Consumable:"Entities that are replaced and not repaired. & oil, grease, bolts, water, filters, gasket",Activity:"An action done by an agent","Observation/Observed_state":"The state of an item - must be discrete (in that state or not) and unambiguous","Observation/Qualitative":"An imprecise measure","Observation/Quantitative":"A precise measure (include units if available)",Location:"Where an item is, either absolutely or relative to another item",Specifier:"An adjective that specifies an item, i.e. could differentiate it from other items",Attribute:"An attribute of an item. It is specific to an item. The attribute is not a value",Agent:"A person, organisation, or individual",Cardinality:"Numerical values or terms describing members of a set",Time:"When an activity occurs, either absolutely or relative in time to another activity",Event:"A point in time that describes a state transition. No agent is specifically identified",Typo:"A spelling error or typo",Unsure:"Use this tag when not sure what something is",Abbreviation:"An abbreviated term"}},{name:"Maintenance work orders (v2)",entities:["Item","Activity","Location","Location/Absolute_loc","Location/Relative_loc","Time","Attribute","Attribute/Attribute_desc","Attribute/Attribute_value","Cardinality","Agent","Consumable_or_commodity","Consumable_or_commodity/Consumable","Consumable_or_commodity/Commodity","Consumable_or_commodity/Waste_biproduct","Negation","Observed_state","Action","Action/Function","Action/Malfunction","Specifier","Identifier","Identifier/Item_ID","Identifier/Make","Unsure","Typo","Abbreviation","Noise"]},{name:"Mining accidents",entities:["accident_cause","accident_cause/bodily_contact","accident_cause/caught_between","accident_cause/fall","accident_cause/fall/fall_from_heights","accident_cause/fall/fall_from_vehicle","accident_cause/over_exertion","accident_cause/recurrence","accident_cause/stepping","accident_cause/struck_by_object","accident_cause/trip_and_fall","accident_cause/vehicle_related","activity","activity/driving","activity/running","activity/walking","age_group","age_group/age_15_24","age_group/age_25_34","age_group/age_35_44","age_group/age_45_54","age_group/age_55_64","age_group/age_65_100","body_part","body_part/arm","body_part/arm/elbow","body_part/arm/elbow/left_elbow","body_part/arm/elbow/right_elbow","body_part/arm/hand","body_part/arm/hand/fingers","body_part/arm/hand/left_hand","body_part/arm/hand/right_hand","body_part/arm/hand/thumb","body_part/arm/hand/thumb/left_thumb","body_part/arm/hand/thumb/right_thumb","body_part/arm/left_arm","body_part/arm/right_arm","body_part/arm/shoulder","body_part/arm/shoulder/left_shoulder","body_part/arm/shoulder/right_shoulder","body_part/arm/wrist","body_part/arm/wrist/left_wrist","body_part/arm/wrist/right_wrist","body_part/back","body_part/back/lower_back","body_part/back/upper_back","body_part/body","body_part/body/chest","body_part/body/stomach","body_part/body/torso","body_part/groin","body_part/head","body_part/head/ear","body_part/head/ear/left_ear","body_part/head/ear/right_ear","body_part/head/eye","body_part/head/eye/left_eye","body_part/head/eye/right_eye","body_part/head/mouth","body_part/head/nose","body_part/leg","body_part/leg/ankle","body_part/leg/ankle/left_ankle","body_part/leg/ankle/right_ankle","body_part/leg/calf","body_part/leg/calf/left_calf","body_part/leg/calf/right_calf","body_part/leg/foot","body_part/leg/foot/left_foot","body_part/leg/foot/right_foot","body_part/leg/foot/toes","body_part/leg/knee","body_part/leg/knee/left_knee","body_part/leg/knee/right_knee","body_part/leg/left_leg","body_part/leg/right_leg","body_part/leg/thigh","body_part/leg/thigh/left_thigh","body_part/leg/thigh/right_thigh","body_part/neck","equipment","equipment/bund_wall","equipment/cage","equipment/cables","equipment/catenery_cable","equipment/chock","equipment/chute","equipment/filter","equipment/headframe","equipment/jumbo","equipment/mechanical_equipment","equipment/mechanical_equipment/auger","equipment/mechanical_equipment/cavity_monitoring_system","equipment/mechanical_equipment/conveyor","equipment/mechanical_equipment/crusher","equipment/mechanical_equipment/pump","equipment/mechanical_equipment/pump/sump_pump","equipment/mechanical_equipment/skip","equipment/personal_protective_equipment","equipment/pipe","gender","gender/female","gender/male","injury","injury/amputation","injury/bite","injury/bruises","injury/bruises/contusion","injury/burn","injury/burn/electric_burn","injury/burn/thermal_burn","injury/chemical_effect","injury/crush_injury","injury/dislocation","injury/dislocation/displacement","injury/fracture","injury/fracture/break","injury/laceration","injury/loss_of_conciousness","injury/multiple_injuries","injury/muscle","injury/muscle/sprain","injury/muscle/strain","injury/puncture","injury/splinter","injury/unspecified_injuries","location","location/camp_medical_centre","location/kitchen","location/office","person","person/blast_guard","person/blaster","person/boilermaker","person/chef","person/contractor","person/driller","person/driver","person/electrical_worker","person/employee","person/fitter","person/individual","person/injured_person","person/maintainer","person/offsider","person/operator","person/personnel","person/process_worker","person/service_crew","person/spotter","person/supervisor","person/telehandler","person/underground_operator","person/worker","severity","severity/minor","severity/serious","severity/fatal","severity/ndi","vehicle","vehicle/light_vehicle","vehicle/light_vehicle/car","vehicle/light_vehicle/forklift","vehicle/light_vehicle/man_car","vehicle/light_vehicle/mine_car","vehicle/light_vehicle/ute","vehicle/light_vehicle/golf_buggy","vehicle/heavy_vehicle","vehicle/heavy_vehicle/bogger","vehicle/heavy_vehicle/continuous_miner","vehicle/heavy_vehicle/dozer","vehicle/heavy_vehicle/dump_truck","vehicle/heavy_vehicle/excavator","vehicle/heavy_vehicle/haul_truck","vehicle/heavy_vehicle/scraper","vehicle/heavy_vehicle/grader","unspecified_category"]}],ft=a(49),yt=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){var n;return Object(p.a)(this,a),(n=t.call(this,e)).state={data:{entity_hierarchy:[],hierarchy_preset:"None"},loading:!1,preset_is_modified:!1},n.selectLabelRef=s.a.createRef(),n.selectRef=s.a.createRef(),n}return Object(m.a)(a,[{key:"componentDidMount",value:function(){this.setState({data:this.props.data})}},{key:"componentDidMount",value:function(){this.setState({data:this.props.data,preset_is_modified:this.props.data.hierarchy_preset.indexOf("(modified)")>0})}},{key:"componentDidUpdate",value:function(e,t){z.a.isEqual(this.props.data,this.state.data)||z.a.isEqual(t.data,this.state.data)||this.props.updateFormPageData(this.state.data,{reset_form:!1})}},{key:"markModified",value:function(){var e=Object(d.a)(c.a.mark((function e(){return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.state.preset_is_modified){e.next=3;break}return this.props.markModified(),e.abrupt("return");case 3:return e.next=5,this.setState({data:Object(le.a)(Object(le.a)({},this.state.data),{},{hierarchy_preset:"None"===this.state.data.hierarchy_preset?"Custom":this.state.data.hierarchy_preset+(this.state.data.hierarchy_preset.endsWith(" (modified)")?"":" (modified)")}),preset_is_modified:!0});case 5:return e.abrupt("return",Promise.resolve());case 6:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}()},{key:"updateHierarchy",value:function(){var e=Object(d.a)(c.a.mark((function e(t){return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return console.log(t[0],"X"),e.next=3,this.setState({data:Object(le.a)(Object(le.a)({},this.state.data),{},{entity_hierarchy:t})});case 3:return e.next=5,this.markModified();case 5:console.log(this.state.data.hierarchy_preset),this.props.updateFormPageData(this.state.data);case 7:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"changePreset",value:function(e){var t=this;var a=e.target.value;this.setState({loading:!0},(function(e){var n=function(e){if("None"===e)return{name:"None",entities:new Array,hierarchy:[],descriptions:{}};console.log(e,"X");var t,a=Object(w.a)(bt);try{for(a.s();!(t=a.n()).done;){var n=t.value;if(n.name===e)return{name:n.name,entities:n.entities,hierarchy:Object(ft.txt2json)(Object(ft.slash2txt)(n.entities),n.entities,n.descriptions).children,descriptions:n.descriptions||{}}}}catch(s){a.e(s)}finally{a.f()}}(a);console.log(n.entities),console.log(n.hierarchy),t.selectRef.current.blur(),t.setState({data:{entity_hierarchy:n.hierarchy,hierarchy_preset:n.name},loading:!1,preset_is_modified:!1},(function(){t.props.updateFormPageData(t.state.data),window.scrollTo({top:t.selectLabelRef.current.offsetTop+140,left:0,behavior:"smooth"})}))}))}},{key:"render",value:function(){var e=this,t=s.a.createElement("div",null,s.a.createElement("h2",null,"Entity Hierarchy"),s.a.createElement("p",null,"Please define your entity hierarchy."),s.a.createElement("p",null,"You may create new categories by entering them in the form below. You may also select from a list of presets, such as the standard 4-class Named Entity Recognition model."));function a(e){return e.name}var n=function(e){var t=new Set;if(!e)return t;var a,n=Object(w.a)(e);try{for(n.s();!(a=n.n()).done;){var s,i=a.value.message.match(/\((".*)"\)/g)[0]||"";t.add(i.slice(2,i.length-2))}}catch(s){n.e(s)}finally{n.f()}return t}(this.props.errors);return s.a.createElement("div",null,s.a.createElement("h2",null,"Entity Hierarchy ",s.a.createElement(mt,{onClick:function(){return e.props.toggleFormHelp(t)}})),!this.props.loading&&s.a.createElement("div",{className:"form-group no-padding"},s.a.createElement("label",{ref:this.selectLabelRef},"Preset"),s.a.createElement("select",{onChange:function(t){return e.changePreset(t)},ref:this.selectRef,value:this.state.data.hierarchy_preset},s.a.createElement("option",{value:"None"},"None"),bt.map((function(e,t){return s.a.createElement("option",{value:a(e),key:t},a(e)," ")})),this.state.preset_is_modified&&s.a.createElement("option",{value:this.state.data.hierarchy_preset},this.state.data.hierarchy_preset))),s.a.createElement("div",{className:"category-hierarchy-wrapper min-height"},!this.props.loading&&!this.state.loading&&s.a.createElement(H,{items:this.state.data.entity_hierarchy||[],preset:this.state.selectedPreset,visible:!0,limitHeight:!0,updateHierarchy:this.updateHierarchy.bind(this),markModified:this.markModified.bind(this),errorEntityNames:n,userIsModifying:this.props.userIsModifying})))}}]),a}(n.Component),vt=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){var n;return Object(p.a)(this,a),(n=t.call(this,e)).state={data:{use_automatic_tagging:"not-defined",dataset:null}},n.selectRef=s.a.createRef(),n}return Object(m.a)(a,[{key:"componentDidMount",value:function(){this.setState({data:this.props.data})}},{key:"componentDidUpdate",value:function(e,t){z.a.isEqual(this.props.data,this.state.data)||z.a.isEqual(t.data,this.state.data)&&(!this.state.data.dataset||z.a.isEqual(t.data.dataset.name,this.state.data.dataset.name))||(console.log("changed"),this.props.updateFormPageData(this.state.data,{reset_form:!0}))}},{key:"updateUseAutomaticTagging",value:function(e){var t=e.target.value;this.selectRef.current.blur(),this.setState({data:Object(le.a)(Object(le.a)({},this.state.data),{},{use_automatic_tagging:t})})}},{key:"updateDataset",value:function(e){var t=this;this.setState({data:Object(le.a)(Object(le.a)({},this.state.data),{},{dataset:e})},(function(){console.log("changed"),t.props.updateFormPageData(t.state.data,{reset_form:!0})}))}},{key:"render",value:function(){var e=this,t=s.a.createElement("div",null,s.a.createElement("h2",null,"Automatic Tagging"),s.a.createElement("p",null,"Redcoat can automatically annotate terms according to a dictionary, helping to save annotation time. These annotations can be adjusted by your annotators when necessary."),s.a.createElement("p",null,"To use automatic tagging, you can upload a CSV file where each row is a (term, entity type), e.g."),s.a.createElement("code",null,"car,Vehicle",s.a.createElement("br",null),"running around,Activity",s.a.createElement("br",null),"left leg,Body_part/Leg",s.a.createElement("br",null)),s.a.createElement("p",null,'In the example above, "car" will be automatically labelled as a Vehicle, "running around" as an Activity, and "left leg" as a Body_part/Leg.'),s.a.createElement("p",null,"Note that the entity types must appear in your entity hierarchy, which is defined on the previous page."));return s.a.createElement("div",null,s.a.createElement("h2",null,"Automatic Tagging ",s.a.createElement(mt,{onClick:function(){return e.props.toggleFormHelp(t)}})),s.a.createElement("div",{className:"form-group"},s.a.createElement("label",{htmlFor:"use-automatic-tagging"},"Use automatic tagging?"),s.a.createElement("select",{name:"use-automatic-tagging",onChange:this.updateUseAutomaticTagging.bind(this),id:"use-automatic-tagging",value:this.state.data.use_automatic_tagging,ref:this.selectRef},s.a.createElement("option",{disabled:!0,hidden:!0,value:"not-defined"},"Click to select"),s.a.createElement("option",{value:"yes"},"Yes"),s.a.createElement("option",{value:"no"},"No"))),s.a.createElement("div",{className:"form-group"},"yes"===this.state.data.use_automatic_tagging&&s.a.createElement(gt,{saving:this.props.saving&&!this.props.data.file_metadata,hasError:this.props.errorPaths&&this.props.errorPaths.has("automatic_tagging"),updateFile:this.updateDataset.bind(this),file_metadata:this.props.data.file_metadata,name:"dictionary"})))}}]),a}(n.Component),kt=a(92);var wt=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){var e=this.props.user;return s.a.createElement("span",{className:"user-details"},s.a.createElement(C,{user:e.is_registered?e:null}),s.a.createElement("span",null,s.a.createElement("div",{className:"annotator-username"},e.is_registered?e.username:e.email),s.a.createElement("div",{className:"annotator-registration-date"},e.is_registered?"Joined on "+Q(e.created_at,{no_hours:!0}):"Not yet registered")))}}]),a}(n.Component),Et=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){var n;return Object(p.a)(this,a),(n=t.call(this,e)).state={data:{users:[]},loading:!0,showingSuggestions:!1,userSearchResults:null,userSuggestions:[],searchTerm:""},n}return Object(m.a)(a,[{key:"componentDidMount",value:function(){var e=Object(d.a)(c.a.mark((function e(){var t;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return console.log("x",this.props.data),e.next=3,this.setState({data:this.props.data});case 3:t=this.props.data.suggested_users,this.setState({loading:!1,data:this.props.data,userSuggestions:t,userSearchResults:t.length>0?t:null,showingSuggestions:t.length>0}),this.props.updateFormPageData(this.state.data);case 6:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}()},{key:"queryAPI",value:function(){var e=Object(d.a)(c.a.mark((function e(){var t,a,n,s;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.setState({loading:!0});case 2:if(0!==this.state.searchTerm.length){e.next=5;break}return this.setState({loading:!1,userSearchResults:this.state.userSuggestions.length>0?this.state.userSuggestions:null,showingSuggestions:this.state.userSuggestions.length>0}),e.abrupt("return");case 5:return t=this.state.searchTerm,a=(i=t).indexOf("@")>0&&2===i.split("@").length,e.next=9,ge("projects/new/searchUsers?searchTerm="+t+"&isEmail="+a,"GET",this.props.setErrorCode,!1,!1,200);case 9:n=e.sent,s=n.users,a&&0===n.users.length&&(s=[{is_registered:!1,email:t}]),this.setState({loading:!1,userSearchResults:s,showingSuggestions:!1});case 13:case"end":return e.stop()}var i}),e,this)})));return function(){return e.apply(this,arguments)}}()},{key:"changeSearchTerm",value:function(e){var t=e.target.value;this.setState({searchTerm:t})}},{key:"submitViaEnter",value:function(e){console.log(e,"EEE"),e.preventDefault(),this.queryAPI()}},{key:"onKeyDown",value:function(e){13===e.keyCode&&(e.preventDefault(),this.queryAPI())}},{key:"alreadyAddedUser",value:function(e){var t,a=Object(w.a)(this.state.data.users);try{for(a.s();!(t=a.n()).done;){var n=t.value;if(e.username&&n.username===e.username)return!0;if(e.email&&n.email===e.email)return!0}}catch(s){a.e(s)}finally{a.f()}return!1}},{key:"removeUser",value:function(e){var t=this,a=Object(kt.a)(this.state.data.users);a.splice(e,1),this.setState({data:Object(le.a)(Object(le.a)({},this.state.data),{},{users:a})},(function(){return t.props.updateFormPageData(t.state.data)}))}},{key:"addUser",value:function(e){var t=this,a=Object(kt.a)(this.state.data.users);return a.push(e),this.setState({data:Object(le.a)(Object(le.a)({},this.state.data),{},{users:a})},(function(){return t.props.updateFormPageData(t.state.data)})),null}},{key:"deleteHighlightRow",value:function(e){document.getElementById("annotator-num-"+e).classList.add("delete-hover")}},{key:"removeHighlightRow",value:function(){var e,t=document.getElementsByClassName("annotator"),a=Object(w.a)(t);try{for(a.s();!(e=a.n()).done;){e.value.classList.remove("delete-hover")}}catch(n){a.e(n)}finally{a.f()}}},{key:"render",value:function(){var e=this,t=s.a.createElement("div",null,s.a.createElement("h2",null,"Annotators"),s.a.createElement("p",null,"Please specify the annotators of this project."),s.a.createElement("p",null,'You can search for annotators by username via the left-side window. Click "add" to add them to this project. An invitation to join your project will be sent to them once the project is created.'),s.a.createElement("p",null,"You can also enter an email address into the search bar. If no account with the email address exists, you can still them as an annotator - Redcoat will send them an invitation to register and join your project once your project has been created."),s.a.createElement("p",null,"If no search term has been entered, Redcoat will suggest annotators for you based on your recent projects."),s.a.createElement("p",null,"You can remove annotators using the trash icon in the right-side window. At present you cannot remove yourself from the annotation task."));return s.a.createElement("div",null,s.a.createElement("h2",null,"Annotators ",s.a.createElement(mt,{onClick:function(){return e.props.toggleFormHelp(t)}})),s.a.createElement("div",{className:"flex-columns flex-columns-2"},s.a.createElement("div",{className:"flex-column flex-column-33"+(this.state.loading?" loading-prevent-action":"")},s.a.createElement("div",{className:"annotators-box"},s.a.createElement("div",{className:"annotators-box-header"},"Annotator lookup"),s.a.createElement("div",{className:"annotators-box-body"},s.a.createElement("div",{className:"input-row"},s.a.createElement("input",{id:"annotator-name",placeholder:"Username or email address",value:this.state.searchTerm,onKeyDown:function(t){return e.onKeyDown(t)},onChange:this.changeSearchTerm.bind(this)}),s.a.createElement("button",{onClick:this.queryAPI.bind(this),className:"annotate-button",type:"button"},s.a.createElement("i",{className:"fa fa-search"}),"Search")),s.a.createElement("div",{className:"annotators-box-list search-results"},null===this.state.userSearchResults&&s.a.createElement("div",{className:"not-searched-yet"},"Enter a username or email address above to search for annotators."),this.state.userSearchResults&&0===this.state.userSearchResults.length&&s.a.createElement("div",{className:"no-search-results"},"No results found."),this.state.userSearchResults&&this.state.userSearchResults.length>0&&s.a.createElement("div",{className:"search-results-found"},this.state.showingSuggestions?s.a.createElement("h4",null,"Suggestions (",this.state.userSearchResults.length,")"):s.a.createElement("h4",null,"Search results (",this.state.userSearchResults.length,")"),this.state.userSearchResults.map((function(t,a){return s.a.createElement("div",{className:"annotator search-result"},s.a.createElement(wt,{user:t}),e.alreadyAddedUser(t)?s.a.createElement("div",{className:"annotate-button user-added"},"Added",s.a.createElement("i",{className:"right fa fa-check"})):s.a.createElement("div",{className:"annotate-button",onClick:e.addUser.bind(e,t)},"Add ",s.a.createElement("i",{className:"right fa fa-chevron-right"})))}))))))),s.a.createElement("div",{className:"flex-column flex-column-66"},s.a.createElement("div",{className:"annotators-box"},s.a.createElement("div",{className:"annotators-box-header"},"Annotators to invite"),s.a.createElement("div",{className:"annotators-box-body"},s.a.createElement("div",{className:"annotators-box-list "},this.state.data.users.map((function(t,a){return s.a.createElement("div",{className:"annotator",id:"annotator-num-"+a},s.a.createElement(wt,{user:t}),a>0&&s.a.createElement("span",{className:"delete-button-container"},s.a.createElement("span",{className:"delete-button",onClick:e.removeUser.bind(e,a),onMouseEnter:function(){return e.deleteHighlightRow(a)},onMouseLeave:e.removeHighlightRow},s.a.createElement("i",{className:"fa fa-trash"}))))}))))))))}}]),a}(n.Component),jt=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){var n;return Object(p.a)(this,a),(n=t.call(this,e)).state={data:{hierarchy_permissions:""}},n}return Object(m.a)(a,[{key:"componentDidMount",value:function(){this.setState({data:this.props.data})}},{key:"changeOverlap",value:function(){var e=Object(d.a)(c.a.mark((function e(t){var a;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.target.value,e.next=3,this.setState({data:Object(le.a)(Object(le.a)({},this.state.data),{},{overlap:a})});case 3:this.props.updateFormPageData(this.state.data);case 4:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"setPermissions",value:function(){var e=Object(d.a)(c.a.mark((function e(t){var a;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=t.target.value,e.next=3,this.setState({data:Object(le.a)(Object(le.a)({},this.state.data),{},{hierarchy_permissions:a})});case 3:this.props.updateFormPageData(this.state.data);case 4:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"render",value:function(){var e=this,t=s.a.createElement("div",null,s.a.createElement("h2",null,"Project Options"),s.a.createElement("p",null,"Please specify the options of this project."),s.a.createElement("ul",null,s.a.createElement("li",null,s.a.createElement("b",null,"Hierarchy permissions"),": If allowed, your annotators will be able to add categories as they appear, or delete ones that aren not relevant. This option is useful if you aren't sure whether your category hierarchy covers every possible category in your dataset. "),s.a.createElement("li",null,s.a.createElement("b",null,"Overlap"),': The number of times each document will be annotated. More overlap can result in a more robust set of results, but requires longer annotation time. You can mark your project as "complete" at any time.'))),a=this.state.data.overlap,n=this.state.data.num_users;return s.a.createElement("div",null,s.a.createElement("h2",null,"Project Options ",s.a.createElement(mt,{onClick:function(){return e.props.toggleFormHelp(t)}})),s.a.createElement("div",{className:"form-group"},s.a.createElement("label",null,"To what extent should annotators be able to modify the category hierarchy?"),s.a.createElement("select",{value:this.state.data.hierarchy_permissions,required:!0,onChange:function(t){return e.setPermissions(t)}},s.a.createElement("option",{disabled:!0,hidden:!0,value:""},"Click to select"),s.a.createElement("option",{value:"no_modification"},"No modifications allowed."),s.a.createElement("option",{value:"create_edit_only"},"Annotators can create new categories."),s.a.createElement("option",{value:"full_permission"},"Annotators can create, delete and rename categories."))),s.a.createElement("div",{className:"form-group",style:{"margin-top":"40px"}},s.a.createElement("label",null,"How many times should a document be annotated before annotation is considered complete?"),s.a.createElement("div",{className:"input-range-group"+(1===n?" disabled":"")},1===n&&s.a.createElement("div",{className:"disabled-message"},s.a.createElement("span",{className:"inapplicable"},"This option is inapplicable because you are the only annotator.")),s.a.createElement("div",{className:"inner"},s.a.createElement("div",{className:"input-range-summary"},s.a.createElement("p",null,s.a.createElement("span",{className:"num"},a)," annotation",a>1?"s":"","/document",s.a.createElement("br",null)),s.a.createElement("p",{className:"small"},"Each annotator labels approximately ",s.a.createElement("span",{className:"avg"},(1/n*a*100).toFixed(2)),"% of the corpus.")),s.a.createElement("div",{class:"input-range-container"},s.a.createElement("div",{class:"left"},"1"),s.a.createElement("input",{id:"input-overlap",name:"input-overlap",type:"range",min:"1",max:n,onChange:function(t){return e.changeOverlap(t)},value:a,onKeyDown:function(e){return 13==e.keyCode?e.preventDefault():""}}),s.a.createElement("div",{class:"right"},n))))))}}]),a}(n.Component);pt.a.setAppElement("body");var xt=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement("div",null,s.a.createElement("h2",null,s.a.createElement("span",{className:"st st-darker"},"Empty form hello")),"entity_hierarchy"===this.props.page&&s.a.createElement("div",null,s.a.createElement("div",{className:"form-group no-padding"},s.a.createElement("label",null,s.a.createElement("span",{className:"st st-darker"},"Preset")),s.a.createElement("select",{className:"st"},s.a.createElement("option",null,"Hello"))),s.a.createElement("div",{className:"category-hierarchy-wrapper"},function(){var e=new Array(15).fill(0);function t(e,t){for(var a="",n=0;n<e+Math.floor(Math.random()*t);n++)a+="x";return a}return s.a.createElement("table",{className:"project-page-table"},s.a.createElement("tbody",null,e.map((function(e,a){return s.a.createElement("tr",null,s.a.createElement("td",null,s.a.createElement("span",{className:"inner"},s.a.createElement("span",{className:"st"},t(30,70)))),s.a.createElement("td",null,s.a.createElement("span",{className:"inner"},s.a.createElement("span",{className:"st"},t(30,70)))))}))))}())))}}]),a}(n.Component),Nt=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement("div",{onClick:this.props.gotoFormPage,className:"item "+(this.props.active?"active":"")+(this.props.ready?"":" disabled")},s.a.createElement("div",{className:"inner"},this.props.name,"saved"===this.props.pageProgress&&s.a.createElement("i",{className:"fa fa-check"}),"error"===this.props.pageProgress&&s.a.createElement("i",{className:"fa fa-times"}),"requires_attention"===this.props.pageProgress&&s.a.createElement("i",{className:"fa fa-warning"})))}}]),a}(n.Component);function Ct(e){if(!e)return new Set;var t,a=new Set,n=Object(w.a)(e);try{for(n.s();!(t=n.n()).done;){var s=t.value;a.add(s.path)}}catch(i){n.e(i)}finally{n.f()}return a}var Ot=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){var n;Object(p.a)(this,a),(n=t.call(this,e)).ref=s.a.createRef();var i=function(){return{loading:this.state.loading,saving:this.state.saving,toggleFormHelp:this.toggleFormHelp.bind(this),errors:this.state.formErrors,errorPaths:Ct(this.state.formErrors),data:this.state.data,markModified:this.markModified.bind(this),updateFormPageData:this.updateFormPageData.bind(this),userIsModifying:this.userIsModifying.bind(this)}}.bind(Object(u.a)(n));return n.formPages=[{name:"Project details & data",pathname:"project_details",component:function(){return s.a.createElement(ht,i())}},{name:"Entity hierarchy",pathname:"entity_hierarchy",component:function(){return s.a.createElement(yt,Object.assign({hierarchyPresets:["Named Entity Recognition (NER)","Fine-grained Entity Recognition (FIGER)","Maintenance"]},i()))}},{name:"Automatic tagging",pathname:"automatic_tagging",component:function(){return s.a.createElement(vt,i())}},{name:"Annotators",pathname:"annotators",component:function(){return s.a.createElement(Et,i())}},{name:"Project options",pathname:"project_options",component:function(){return s.a.createElement(jt,i())}}],n.formPageDependencies={entity_hierarchy:["automatic_tagging",2],project_details:["project_options",4],annotators:["project_options",4]},n.state={data:{},currentFormPageIndex:null,formErrors:null,formErrorShake:!1,loading:!0,saving:!1,wasModified:!1,isSaved:!1,formHelpContent:null,verifyFormPageChange:!1,nextPageAfterVerification:0,verifySubmitNewProjectForm:!1,creatingNewProject:!1,creatingNewProjectErrors:null,creatingNewProjectSuccess:!1,newlyCreatedProjectId:null,userIsModifying:!1,formPageProgress:["not_started","not_started","not_started","not_started","not_started"]},n}return Object(m.a)(a,[{key:"componentDidMount",value:function(){this.queryAPI(!0)}},{key:"markModified",value:function(){this.setState({wasModified:!0,isSaved:!1})}},{key:"userIsModifying",value:function(e){this.setState({userIsModifying:e})}},{key:"updateFormPageData",value:function(){var e=Object(d.a)(c.a.mark((function e(t,a){var n=this;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!a||!a.reset_form){e.next=4;break}return e.next=3,this.setState({data:Object(le.a)(Object(le.a)({},t),{},{file_metadata:null}),wasModified:!0,isSaved:!1},(function(){console.log(n.state.data,"<data")}));case 3:return e.abrupt("return");case 4:this.setState({data:t,wasModified:!0,isSaved:!1},(function(){console.log(n.state.data)}));case 5:case"end":return e.stop()}}),e,this)})));return function(t,a){return e.apply(this,arguments)}}()},{key:"queryAPI",value:function(){var e=Object(d.a)(c.a.mark((function e(t){var a,n,s,i,r,o;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.setState({loading:!0,data:{}});case 2:return a=t?"":"?formPage="+this.getFormPagePathname(),e.next=5,ge("projects/new/get"+a,"GET",this.props.setErrorCode,!1,!1,t?0:555);case 5:if(n=e.sent,s=this.state.formPageProgress,!t){e.next=19;break}i=n.latest_form_page,r=0;case 10:if(!(r<this.formPages.length)){e.next=17;break}if(this.formPages[r].pathname!==i){e.next=14;break}return o=r,e.abrupt("break",17);case 14:r++,e.next=10;break;case 17:e.next=20;break;case 19:o=this.state.currentFormPageIndex;case 20:s=n.form_page_progress,console.log(n,"RES"),this.setState({data:n.data,isSaved:n.is_saved,currentFormPageIndex:o,wasModified:!1,loading:!1,formPageProgress:s});case 23:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"componentDidUpdate",value:function(e){this.props.location!==e.location&&this.updateCurrentFormPageIndex()}},{key:"toggleFormHelp",value:function(e){this.setState({formHelpContent:e})}},{key:"getFormPagePathname",value:function(){return this.formPages[this.state.currentFormPageIndex].pathname}},{key:"submitFormPage",value:function(){var e=Object(d.a)(c.a.mark((function e(t){var a,n,s,i,r;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t.preventDefault(),console.log("Submitting"),e.next=4,this.setState({saving:!0});case 4:if(this.getFormPagePathname(),a=this.state.data,n="projects/new/submit?formPage=",console.log("THIS STATE DATA IS ",a),0!==this.state.currentFormPageIndex){e.next=21;break}return e.next=11,ge(n+"project_details","POST",this.props.setErrorCode,a);case 11:if((s=e.sent).errors||this.state.data.file_metadata){e.next=19;break}return console.log(a.dataset,"xxxx"),(i=new FormData).append("file",a.dataset),e.next=18,ge(n+"dataset","POST",this.props.setErrorCode,i,!0);case 18:s=e.sent;case 19:e.next=52;break;case 21:if(1!==this.state.currentFormPageIndex){e.next=28;break}return a={entity_hierarchy:Object(ft.json2slash)({children:a.entity_hierarchy}),hierarchy_preset:a.hierarchy_preset},e.next=25,ge(n+"entity_hierarchy","POST",this.props.setErrorCode,a);case 25:s=e.sent,e.next=52;break;case 28:if(2!==this.state.currentFormPageIndex){e.next=42;break}if("yes"!==a.use_automatic_tagging){e.next=37;break}return(i=new FormData).append("file",a.dataset),e.next=34,ge(n+"automatic_tagging","POST",this.props.setErrorCode,i,!0);case 34:s=e.sent,e.next=40;break;case 37:return e.next=39,ge(n+"automatic_tagging","POST",this.props.setErrorCode,{clear_automatic_tagging:!0});case 39:s=e.sent;case 40:e.next=52;break;case 42:if(3!==this.state.currentFormPageIndex){e.next=48;break}return e.next=45,ge(n+"annotators","POST",this.props.setErrorCode,a);case 45:s=e.sent,e.next=52;break;case 48:if(4!==this.state.currentFormPageIndex){e.next=52;break}return e.next=51,ge(n+"project_options","POST",this.props.setErrorCode,a);case 51:s=e.sent;case 52:if(console.log("Response: ",s),!s.errors){e.next=57;break}this.renderWithErrors(s),e.next=60;break;case 57:return r=this.state.data,s.file_metadata&&(r.file_metadata=s.file_metadata),e.abrupt("return",this.setState({data:r,formErrors:null,isSaved:!0,saving:!1,formPageProgress:s.form_page_progress}));case 60:return e.abrupt("return",null);case 61:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"renderWithErrors",value:function(e){console.log("Response",e);var t=e.errors,a=e.form_page_progress;console.log(a,"XX"),this.setState({formErrors:t,isModified:!1,isSaved:!1,saving:!1,formPageProgress:a},(function(){window.scrollTo({top:0,left:0,behavior:"smooth"})}))}},{key:"gotoPrevFormPage",value:function(){var e=Object(d.a)(c.a.mark((function e(){var t;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(0!==this.state.currentFormPageIndex){e.next=2;break}return e.abrupt("return");case 2:t=this.state.currentFormPageIndex-1,this.gotoFormPage(t);case 4:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}()},{key:"gotoNextFormPage",value:function(){var e=Object(d.a)(c.a.mark((function e(){var t;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.state.currentFormPageIndex!==this.formPages.length-1){e.next=2;break}return e.abrupt("return");case 2:t=this.state.currentFormPageIndex+1,this.gotoFormPage(t);case 4:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}()},{key:"handleCloseModal",value:function(){this.state.creatingNewProject||this.setState({formHelpContent:null})}},{key:"gotoFormPage",value:function(){var e=Object(d.a)(c.a.mark((function e(t){return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.setState({currentFormPageIndex:t,loading:!0,isSaved:!1,formErrors:null,verifyFormPageChange:!1});case 2:this.queryAPI(),window.scrollTo({top:0,left:0});case 4:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"verifyFormPageChange",value:function(e){var t=this.state.wasModified,a=this.state.isSaved;t&&!a?this.setState({verifyFormPageChange:!0,nextPageAfterVerification:e}):this.gotoFormPage(e)}},{key:"verifySubmitNewProjectForm",value:function(){this.setState({creatingNewProjectErrors:null,verifySubmitNewProjectForm:!0})}},{key:"submitNewProjectForm",value:function(){var e=Object(d.a)(c.a.mark((function e(){var t;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return console.log("SUBMITTING"),e.next=3,this.setState({creatingNewProject:!0});case 3:return e.next=5,ge("projects/new/submitFinal","POST",this.props.setErrorCode,{},!1,1e3);case 5:if(!(t=e.sent).errors){e.next=10;break}return console.log(t),this.setState({creatingNewProjectErrors:t.errors}),e.abrupt("return");case 10:this.setState({newlyCreatedProjectId:t.project_id,creatingNewProjectSuccess:!0,creatingNewProjectErrors:null,creatingNewProject:!1,verifySubmitNewProjectForm:!1});case 11:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}()},{key:"shakeForm",value:function(){var e=Object(d.a)(c.a.mark((function e(){var t=this;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.state.isSaved){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,this.setState({formErrorShake:!0});case 4:window.setTimeout((function(){return t.setState({formErrorShake:!1})}),500);case 5:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}()},{key:"renderFormPage",value:function(e){return void 0===this.formPages[e]?s.a.createElement(xt,null):this.formPages[e].component()}},{key:"checkFormIsComplete",value:function(){console.log(this.state.formPageProgress);var e,t=Object(w.a)(this.state.formPageProgress);try{for(t.s();!(e=t.n()).done;){if("saved"!==e.value)return!1}}catch(a){t.e(a)}finally{t.f()}return!0}},{key:"render",value:function(){var e=this,t=this.checkFormIsComplete(),a=this.state.currentFormPageIndex===this.formPages.length-1;if(this.state.currentFormPageIndex)var n=this.getFormPagePathname();return this.state.creatingNewProjectSuccess?s.a.createElement(f.a,{to:y+"projects/"+this.state.newlyCreatedProjectId+"/dashboard"}):s.a.createElement("form",{id:"new-project-form",className:(this.state.formErrors?"errors":"")+(this.state.formErrorShake?"shake":"")+(this.state.saving?" saving":"")+(this.state.loading?" loading":""),ref:this.ref,onSubmit:this.state.isSaved?null:function(t){return e.submitFormPage(t)}},s.a.createElement(pt.a,{isOpen:!!(this.state.formHelpContent||this.state.verifyFormPageChange||this.state.verifySubmitNewProjectForm),contentLabel:"Hello there",onRequestClose:this.handleCloseModal.bind(this),className:"modal"+(this.state.verifyFormPageChange||this.state.verifySubmitNewProjectForm?" verify-back":""),overlayClassName:"modal-overlay",app:this.ref},this.state.verifyFormPageChange?s.a.createElement("div",null,s.a.createElement("p",null,"You have unsaved changes. ",this.state.nextPageAfterVerification===this.state.currentFormPage-1?"Are you sure you want to go back to the previous page?":"Are you sure you want to jump to this page?"),s.a.createElement("div",{className:"verify-back-row"},s.a.createElement("button",{className:"annotate-button grey-button",onClick:function(){return e.setState({verifyFormPageChange:!1})}},"No"),s.a.createElement("button",{className:"annotate-button",onClick:function(){return e.gotoFormPage(e.state.nextPageAfterVerification)}},"Yes"))):this.state.verifySubmitNewProjectForm?this.state.creatingNewProject?s.a.createElement("div",null,!this.state.creatingNewProjectErrors&&s.a.createElement("div",{className:"creating-new-project"},s.a.createElement("i",{className:"fa fa-cog fa-spin"}),"Creating new project..."),this.state.creatingNewProjectErrors&&s.a.createElement("div",null,s.a.createElement("div",{className:"form-notice form-errors"},s.a.createElement("i",{className:"fa fa-times"}),"An unexpected error occured:",s.a.createElement("ul",null,this.state.creatingNewProjectErrors.map((function(e,t){return s.a.createElement("li",null,e.message||JSON.stringify(e))})))),s.a.createElement("button",{className:"annotate-button grey-button",onClick:function(){return e.setState({creatingNewProjectErrors:null,creatingNewProject:!1,verifySubmitNewProjectForm:!1})}},s.a.createElement("i",{className:"fa fa-chevron-left"}),"Back"))):s.a.createElement("div",null,s.a.createElement("p",null,"Are you ready to create the project?"),s.a.createElement("div",{className:"verify-back-row"},s.a.createElement("button",{className:"annotate-button grey-button",onClick:function(){return e.setState({verifySubmitNewProjectForm:!1})}},"No"),s.a.createElement("button",{className:"annotate-button gold-stripey-button",onClick:function(){return e.submitNewProjectForm()}},"Create Project"))):this.state.formHelpContent),s.a.createElement("header",{className:"bg-header"},s.a.createElement("div",{id:"header-project-details",className:"title"},s.a.createElement("h1",null,"New project"))),s.a.createElement("header",{className:"new-project-header"},s.a.createElement("div",{className:"container flex-container"},this.formPages.map((function(t,a){return s.a.createElement(Nt,{name:t.name,gotoFormPage:e.verifyFormPageChange.bind(e,a),pathname:t.pathname,key:a,pageProgress:e.state.formPageProgress[a],active:a===e.state.currentFormPageIndex,ready:"not_started"!==e.state.formPageProgress[a]})})))),s.a.createElement("main",{className:"container new-project"},s.a.createElement("div",{className:"new-project-form-body"},s.a.createElement(Se.a,{className:"transition-group"},s.a.createElement(_e.a,{key:this.state.currentFormPageIndex,timeout:{enter:400,exit:400},classNames:"fade"},s.a.createElement("section",{className:"route-section"},s.a.createElement("div",{className:"form-notice form-loading "+(this.state.loading?"":"hidden")},s.a.createElement("i",{className:"fa fa-cog fa-spin"}),"Loading..."),s.a.createElement("div",{className:"form-notice form-success "+(this.state.isSaved?"":"hidden")},s.a.createElement("i",{className:"fa fa-check"}),"This page is saved."),s.a.createElement("div",{className:"form-notice form-warning "+(this.state.loading||"requires_attention"!==this.state.formPageProgress[this.state.currentFormPageIndex]?"hidden":"")},s.a.createElement("i",{className:"fa fa-warning"}),"This form was reset by a previous form. Please fill it in again to continue."),s.a.createElement("div",{className:"form-notice small-margin-top form-warning "+(this.state.isSaved&&this.formPageDependencies[n]&&"saved"===this.state.formPageProgress[this.formPageDependencies[n][1]]?"":"hidden")},s.a.createElement("i",{className:"fa fa-warning"}),"Modifying the form below will reset the ",n&&this.formPageDependencies[n]&&this.formPageDependencies[n][0]&&this.formPageDependencies[n][0].replace("_"," ")," form."),s.a.createElement("div",{className:"form-notice form-errors "+(this.state.formErrors?"":"hidden")},s.a.createElement("i",{className:"fa fa-times"}),"Please fix the following errors before saving:",s.a.createElement("ul",null,this.state.formErrors&&this.state.formErrors.map((function(e,t){return s.a.createElement("li",{key:t},e.message)})),!this.state.formErrors&&s.a.createElement("li",null))),!this.state.loading&&this.renderFormPage(this.state.currentFormPageIndex),this.state.loading&&s.a.createElement(xt,{page:n})))))),s.a.createElement("div",{className:"new-project-submit-row"+(this.state.userIsModifying?" disabled":"")},s.a.createElement("div",{className:"container"},s.a.createElement("button",{type:"button",onClick:function(){return e.verifyFormPageChange(e.state.currentFormPageIndex-1)},className:"annotate-button new-project-button grey-button"+(0===this.state.currentFormPageIndex?" disabled":"")},s.a.createElement("i",{className:"fa fa-chevron-left"}),"Back"),s.a.createElement("div",{className:"buttons-right"},s.a.createElement("button",{type:this.state.isSaved?"button":"submit",className:"annotate-button new-project-button "+(this.state.wasModified||this.state.isSaved?"":"disabled")+(this.state.isSaved?" saved":"")+(this.state.saving?" saving":""),onClick:function(){return e.shakeForm()}},s.a.createElement("i",{className:"fa fa-"+(this.state.isSaved?"check":this.state.saving?"cog fa-spin":"save")}),this.state.saving?"Saving":"Save"+(this.state.isSaved?"d":"")),a?s.a.createElement("button",{type:"button",onClick:function(){return e.verifySubmitNewProjectForm()},className:"annotate-button new-project-button gold-stripey-button "+(this.state.isSaved&&t?"":"disabled")},"Create Project"):s.a.createElement("button",{type:"button",onClick:function(){return e.verifyFormPageChange(e.state.currentFormPageIndex+1)},className:"annotate-button new-project-button "+(this.state.isSaved?"":"disabled")},"Next",s.a.createElement("i",{className:"fa fa-chevron-right after"}))))))}}]),a}(n.Component),zt=a(91),St=["user","anchor","automobile","asterisk","bath","battery","binoculars","bicycle","bomb","bullhorn","child","cubes","female","diamond","cogs","coffee","fax","flag","fire-extinguisher","flash","fire","male","heart","gift","globe","legal","leaf","microphone","paw","rocket","magnet","star","space-shuttle","trophy","umbrella"],_t=["#f44336","#e91e63","#9c27b0","#673ab7","#3f51b5","#2196f3","#03a9f4","#00bcd4","#009688","#4caf50","#8bc34a","#cddc39","#ffeb3b","#ffc107","#ff9800","#ff5722","#795548","#eee","#ccc","#aaa","#888","#444","#222"],qt=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){var n;return Object(p.a)(this,a),(n=t.call(this,e)).state={user:{profile_icon:{foreground:"#aaa",background:"#eee",icon:"user"}}},n}return Object(m.a)(a,[{key:"componentDidUpdate",value:function(e,t){z.a.isEqual(e.user,this.props.user)||z.a.isEqual(this.props.user,this.state.user)||(console.log("sidsp"),this.setState({user:this.props.user}))}},{key:"componentWillMount",value:function(){this.props.user&&this.setState({user:this.props.user})}},{key:"saveChanges",value:function(){var e=Object(d.a)(c.a.mark((function e(){var t,a,n;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=this,console.log("saving"),a=this.state.user.profile_icon,e.next=5,this.setState({saving:!0});case 5:return e.next=7,ge("users/set_profile_icon","POST",this.props.setErrorCode,a);case 7:n=e.sent,t.props.setUserProfileIcon(n.profile_icon),this.setState({saving:!1});case 10:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}()},{key:"handleForegroundColourChange",value:function(e){var t=this.state.user;t.profile_icon.foreground=e.hex,this.setState({user:t})}},{key:"handleBackgroundColourChange",value:function(e){console.log("hello");var t=this.state.user;t.profile_icon.background=e.hex,this.setState({user:t})}},{key:"setIcon",value:function(e){var t=this;if(-1!==St.indexOf(e)){var a=this.state.user;a.profile_icon.icon=e,this.setState({user:a},(function(){console.log(t.state.user.profile_icon.icon)}))}}},{key:"render",value:function(){var e=this;return s.a.createElement("div",{id:"user-profile-page"},s.a.createElement("section",{className:"form-section"},s.a.createElement("h3",null,"Profile icon"),s.a.createElement("div",{className:"flex-columns align-center"},s.a.createElement("div",{className:"flex-column"},s.a.createElement("div",{className:"profile-icon-preview"},s.a.createElement("div",{className:"circle-icon profile-icon extra-large box-shadow",style:{background:this.state.user.profile_icon.background}},s.a.createElement("i",{className:"profile-icon-i fa fa-"+this.state.user.profile_icon.icon,style:{color:this.state.user.profile_icon.foreground}})))),s.a.createElement("div",{className:"flex-column vertical-align-top"},s.a.createElement("h4",null,"Foreground colour"),s.a.createElement(zt.TwitterPicker,{colors:_t,color:this.state.user.profile_icon.foreground,onChangeComplete:this.handleForegroundColourChange.bind(this)}),s.a.createElement("h4",null,"Background colour"),s.a.createElement(zt.TwitterPicker,{colors:_t,color:this.state.user.profile_icon.background,onChangeComplete:this.handleBackgroundColourChange.bind(this)})),s.a.createElement("div",{className:"flex-column vertical-align-top"},s.a.createElement("h4",null,"Icon"),s.a.createElement("div",{className:"icon-options"},St.map((function(t,a){return s.a.createElement("div",{onClick:function(){return e.setIcon(t)},className:"icon-option"+(t===e.state.user.profile_icon.icon?" active":"")},s.a.createElement("i",{class:"fa fa-"+t}))}))))),s.a.createElement("div",{className:"form-save-row"},s.a.createElement("a",{className:"annotate-button submit-button",onClick:this.saveChanges.bind(this)},s.a.createElement("i",{class:"fa fa-save"}),"Save"))))}}]),a}(n.Component),Pt=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement("main",{class:"error-page"},s.a.createElement("h1",null,"500: Internal server error."),s.a.createElement("p",null,"An unexpected error has occurred."))}}]),a}(n.Component),It=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"componentDidUpdate",value:function(e){this.props.location.pathname!==e.location.pathname&&(console.log("clearing"),this.props.clearErrorCode())}},{key:"render",value:function(){return s.a.createElement("div",null)}}]),a}(n.Component),At=Object(f.h)(It),Tt=(a(393),function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement("div",null,s.a.createElement("header",{className:"bg-header"},s.a.createElement("div",{id:"header-project-details",className:"title"},s.a.createElement("h1",null,this.props.pageTitle))),s.a.createElement("main",{className:"container"},this.props.pageComponent))}}]),a}(n.Component)),Mt=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement("div",null,s.a.createElement("header",{className:"bg-header"},s.a.createElement("div",{id:"header-project-details",className:"title"},s.a.createElement("h1",null,this.props.pageTitle),s.a.createElement("div",{class:"right"},s.a.createElement(b.b,{className:"button",to:y+"projects/new"},s.a.createElement("i",{class:"fa fa-plus-circle"}),"New project")))),s.a.createElement("main",{className:"container"},this.props.pageComponent))}}]),a}(n.Component),Dt=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement("div",null,this.props.pageComponent)}}]),a}(n.Component),Ft=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement("div",{className:"loading-screen"+(this.props.fadingOut?" fading-out":"")},s.a.createElement("div",{className:"background background-under"}),s.a.createElement("div",{className:"background background-over"}),s.a.createElement("span",null,s.a.createElement("i",{className:"fa fa-cog fa-spin"}),"Loading..."))}}]),a}(n.Component),Rt=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement("div",null,this.props.pageComponent)}}]),a}(n.Component),Ht=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"render",value:function(){return s.a.createElement("footer",null,s.a.createElement("div",{className:"footer-logo"}),s.a.createElement("h2",null,"Redcoat"),s.a.createElement("p",null,"Built by the NLP-TLP team at UWA."))}}]),a}(n.Component),Ut=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){return Object(p.a)(this,a),t.call(this,e)}return Object(m.a)(a,[{key:"componentWillMount",value:function(){this.props.logout()}},{key:"render",value:function(){return s.a.createElement(f.a,{to:y})}}]),a}(n.Component),Bt=function(e){Object(g.a)(a,e);var t=Object(h.a)(a);function a(e){var n;return Object(p.a)(this,a),(n=t.call(this,e)).state={pageTitle:"Redcoat",username:null,projectTitle:null,projectAuthor:null,setProject:n.setProject.bind(Object(u.a)(n)),loading:!0,loadingFadeOut:!1,loggingOut:!1,user:null,errorCode:null},n}return Object(m.a)(a,[{key:"clearErrorCode",value:function(){this.setState({errorCode:null})}},{key:"setErrorCode",value:function(e){var t=this;this.setState({errorCode:e,user:401===e?null:this.state.user},(function(){console.log(t.state.user,t.state.errorCode)}))}},{key:"setProject",value:function(e,t){this.setState({projectTitle:e,projectAuthor:t})}},{key:"getUserData",value:function(){var e=Object(d.a)(c.a.mark((function e(){var t,a=this;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,ge("users/userData","GET",this.setErrorCode.bind(this),555);case 2:return t=e.sent,e.next=5,this.setState({user:t.user,loading:!1,loadingFadeOut:!0});case 5:window.setTimeout((function(){return a.setState({loadingFadeOut:!1})}),500);case 6:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}()},{key:"setUserData",value:function(e){this.setState({user:e})}},{key:"logout",value:function(){var e=Object(d.a)(c.a.mark((function e(){return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.state.user){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,this.setState({user:null});case 4:return e.next=6,ge("users/logout","GET",this.setErrorCode.bind(this));case 6:e.sent,this.setState({user:null});case 8:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}()},{key:"setUserProfileIcon",value:function(e){var t=this.state.user;t.profile_icon=e,console.log(e),this.setState({user:t})}},{key:"acceptInvitation",value:function(){var e=Object(d.a)(c.a.mark((function e(t){var a,n;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return console.log("accept"),(a=this.state.user.project_invitations)[t].pending=!0,e.next=5,this.setState({invitations:a});case 5:return n=a[t]._id,e.next=8,ge("projects/invitations/"+n+"/accept","POST",this.setErrorCode,{},null,555);case 8:e.sent,a[t].accepted=!0,a[t].pending=!1,this.setState({invitations:a});case 12:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"declineInvitation",value:function(){var e=Object(d.a)(c.a.mark((function e(t){var a,n;return c.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return console.log("decline"),(a=this.state.user.project_invitations)[t].pending=!0,e.next=5,this.setState({invitations:a});case 5:return n=a[t]._id,e.next=8,ge("http://localhost:3000/api/projects/invitations/"+n+"/decline","POST",this.setErrorCode,{},null,555);case 8:e.sent,a[t].declined=!0,a[t].pending=!1,this.setState({invitations:a});case 12:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}()},{key:"componentWillMount",value:function(){this.getUserData()}},{key:"render",value:function(){var e=this;return s.a.createElement("div",{id:"app",className:(this.state.loading?"loading":"")+(this.state.loggingOut?" logging-out":"")},s.a.createElement(b.a,null,s.a.createElement(k,null),s.a.createElement(At,{clearErrorCode:this.clearErrorCode.bind(this)}),(this.state.loading||this.state.loadingFadeOut)&&s.a.createElement(Ft,{fadingOut:this.state.loadingFadeOut}),!this.state.loading&&s.a.createElement("div",{className:"fade-in"},s.a.createElement(O,{user:this.state.user,loading:this.state.loading,acceptInvitation:this.acceptInvitation.bind(this),declineInvitation:this.declineInvitation.bind(this)}),!this.state.errorCode&&s.a.createElement(f.d,null,s.a.createElement(Lt,{user:this.state.user,path:y+"projects/:id/tagging",render:function(t){return s.a.createElement(Dt,Object.assign({},e.state,{pageComponent:s.a.createElement(xe,{projectTitle:e.state.projectTitle,projectAuthor:e.state.projectAuthor,setProject:e.setProject.bind(e),project_id:t.match.params.id,user:e.state.user,setErrorCode:e.setErrorCode.bind(e)})}))}}),s.a.createElement(Lt,{user:this.state.user,path:y+"projects/new",render:function(){return s.a.createElement(Ot,{setErrorCode:e.setErrorCode.bind(e)})}}),s.a.createElement(Lt,{user:this.state.user,path:y+"projects/:id",render:function(t){return s.a.createElement(Rt,Object.assign({},e.state,{pageTitle:"Project View",pageComponent:s.a.createElement(et,{project_id:t.match.params.id,setProject:e.setProject.bind(e),projectTitle:e.state.projectTitle,projectAuthor:e.state.projectAuthor,user:e.state.user,setErrorCode:e.setErrorCode.bind(e)})}))}}),s.a.createElement(Lt,{user:this.state.user,path:y+"projects",render:function(){return s.a.createElement(Mt,Object.assign({},e.state,{pageTitle:"Projects",pageComponent:s.a.createElement(Oe,{setProject:e.setProject.bind(e),setErrorCode:e.setErrorCode.bind(e)})}))}}),s.a.createElement(Lt,{user:this.state.user,path:y+"profile",render:function(){return s.a.createElement(Tt,Object.assign({},e.state,{pageTitle:"User Profile",pageComponent:s.a.createElement(qt,{user:e.state.user,setUserProfileIcon:e.setUserProfileIcon.bind(e),setErrorCode:e.setErrorCode.bind(e)})}))}}),s.a.createElement(f.b,{path:y+"features",component:function(){return s.a.createElement(Tt,Object.assign({},e.state,{pageTitle:"Features",pageComponent:s.a.createElement(Ne,null)}))}}),s.a.createElement(f.b,{path:y+"logout",render:function(){return s.a.createElement(Ut,{logout:e.logout.bind(e)})}}),s.a.createElement(f.b,{path:y,render:function(){return e.state.user&&!e.state.loggingOut?s.a.createElement(f.a,{to:y+"projects"}):s.a.createElement(dt,{setUserData:e.setUserData.bind(e),setErrorCode:e.setErrorCode.bind(e)})}}),s.a.createElement(f.b,{render:function(){return s.a.createElement(Tt,Object.assign({},e.state,{pageTitle:"",pageComponent:s.a.createElement(oe,null)}))}})," />"),401===this.state.errorCode&&s.a.createElement(Te,{clearErrorCode:this.clearErrorCode.bind(this)}),403===this.state.errorCode&&s.a.createElement(re,null),404===this.state.errorCode&&s.a.createElement(oe,null),500===this.state.errorCode&&s.a.createElement(Pt,null))),!this.state.loading&&s.a.createElement(Ht,null))}}]),a}(n.Component),Lt=function(e){e.component;var t=Object(o.a)(e,["component"]);return s.a.createElement(f.b,Object.assign({},t,{render:function(e){t.user,Object(o.a)(t,["user"]);return t.user?t.render(e):s.a.createElement(f.a,{to:y+"login"})}}))},Wt=Bt;Boolean("localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));r.a.render(s.a.createElement(s.a.StrictMode,null,s.a.createElement(Wt,null)),document.getElementById("root")),"serviceWorker"in navigator&&navigator.serviceWorker.ready.then((function(e){e.unregister()})).catch((function(e){console.error(e.message)}))},49:function(e,t){var a=function e(t){if(0==t.children.length)delete t.children;else for(var a in t.children)e(t.children[a])};e.exports.slash2txt=function(e){for(var t=[],a=0;a<e.length;a++)t.push(e[a].replace(/[^\/]*\//g," "));return t.join("\n")},e.exports.txt2json=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},s="name",i=e.split("\n"),r=0,o={children:[]};o[""+s]="entity";for(var l=[],c=o,d=-1,u=0;u<i.length;u++){var p=i[u].trim(),m=i[u].search(/\S/)+1;if(1==m&&d++,m<r)l=l.slice(0,m);else if(m==r+1)l.push(c);else if(m>r+1)return new Error("Unparsable tree.");r=m,(c={id:u,children:[],colorId:d})[s]=p,c.full_name=t[u],n[t[u]]&&(c.description=n[t[u]]),l.length>0&&l[l.length-1].children.push(c)}return a(o),o},e.exports.json2slash=function(e){return function(e){for(var t=e.split("\n"),a=[],n=1,s=[],i="",r=0;r<t.length;r++){var o=t[r].replace(/\s/g,"").replace(/\//g,"|"),l=t[r].search(/\S/)+1;l<n?s=s.slice(0,l-1):l==n+1&&s.push(i),n=l,i=o,a.push(s.join("/")+(s.length>0?"/":"")+o)}return a}(function(e){var t=[],a=1;function n(e){t.push(new Array(a).join(" ")+e.name.replace(/\|/,"/")),e.children?(a++,e.children.forEach(n),a--):e._children&&(a++,e._children.forEach(n),a--)}return e.children?e.children.forEach(n):e._children&&e._children.forEach(n),t.join("\n")}(e))}}},[[153,1,2]]]);
  //# sourceMappingURL=main.cc2b6fa0.chunk.js.map