{"version":3,"file":"student--FXJNxfz.js","sources":["../../../app/frontend/layouts/student/types/StudentTopNav__Types/StudentTopNav__NavLink.bs.js","../../../app/frontend/layouts/student/components/StudentTopNav__DropDown.bs.js","../../../app/frontend/layouts/student/components/StudentTopNav__UserControls.bs.js","../../../app/frontend/layouts/student/StudentTopNav.bs.js","../../../app/frontend/packs/StudentTopNavPack.bs.js","../../../app/frontend/packs/ConvertMarkdownPack.bs.js","../../../app/frontend/psj/home/index.js","../../../app/frontend/users/home/types/UsersDashboard__Course.bs.js","../../../app/frontend/users/home/types/UsersDashboard__Standing.bs.js","../../../app/frontend/users/home/types/UsersDashboard__Community.bs.js","../../../app/frontend/users/home/types/UsersDashboard__IssuedCertificate.bs.js","../../../app/frontend/users/home/components/UsersDashboard__Root.bs.js","../../../app/frontend/packs/UsersDashboardPack.bs.js","../../../app/frontend/users/images/permanent-delete.svg","../../../app/frontend/users/UsersDeleteAccount.bs.js","../../../app/frontend/packs/UsersDeleteAccountPack.bs.js","../../../app/frontend/shared/types/TopicCategory.bs.js","../../../app/frontend/communities/types/CommunitiesShow__TopicParticipant.bs.js","../../../app/frontend/communities/types/CommunitiesShow__Topic.bs.js","../../../app/frontend/communities/types/CommunitiesShow__Target.bs.js","../../../app/frontend/communities/types/CommunitiesShow__Topics.bs.js","../../../app/frontend/communities/components/CommunitiesShow__Participants.bs.js","../../../app/frontend/communities/CommunitiesShow__Root.bs.js","../../../app/frontend/packs/CommunitiesShowPack.bs.js","../../../app/frontend/shared/components/Radio.bs.js","../../../app/frontend/shared/utils/Locale.bs.js","../../../node_modules/zxcvbn/lib/frequency_lists.js","../../../node_modules/zxcvbn/lib/adjacency_graphs.js","../../../node_modules/zxcvbn/lib/scoring.js","../../../node_modules/zxcvbn/lib/matching.js","../../../node_modules/zxcvbn/lib/time_estimates.js","../../../node_modules/zxcvbn/lib/feedback.js","../../../node_modules/zxcvbn/lib/main.js","../../../app/frontend/shared/Zxcvbn.bs.js","../../../app/frontend/shared/components/ConfirmWindow.bs.js","../../../app/frontend/users/UserEdit.bs.js","../../../app/frontend/packs/UserEditPack.bs.js","../../../app/frontend/topics/types/TopicsShow__Post.bs.js","../../../app/frontend/topics/types/TopicsShow__Topic.bs.js","../../../app/frontend/topics/components/TopicsShow__UserShow.bs.js","../../../app/frontend/topics/components/TopicsShow__PostReply.bs.js","../../../app/frontend/topics/components/TopicsShow__PostEditor.bs.js","../../../app/frontend/topics/components/TopicsShow__LikeManager.bs.js","../../../app/frontend/topics/components/TopicsShow__PostShow.bs.js","../../../app/frontend/topics/types/TopicsShow__Community.bs.js","../../../app/frontend/topics/types/TopicsShow__LinkedTarget.bs.js","../../../app/frontend/topics/components/TopicsShow__SubscriptionManager.bs.js","../../../app/frontend/topics/TopicsShow__Root.bs.js","../../../app/frontend/packs/TopicsShowPack.bs.js","../../../app/frontend/communities/types/CommunitiesNewTopic__TopicSuggestion.bs.js","../../../app/frontend/communities/CommunitiesNewTopic__Root.bs.js","../../../app/frontend/packs/CommunitiesNewTopicPack.bs.js","../../../app/frontend/courses/curricula/images/level-lock.svg","../../../app/frontend/courses/curricula/types/CoursesCurriculum__Level.bs.js","../../../app/frontend/courses/curricula/images/level-empty.svg","../../../app/frontend/courses/curricula/types/CoursesCurriculum__Course.bs.js","../../../app/frontend/courses/curricula/types/CoursesCurriculum__Target.bs.js","../../../app/frontend/courses/review/types/SubmissionChecklistItem.bs.js","../../../app/frontend/courses/curricula/types/CoursesCurriculum__Submission.bs.js","../../../app/frontend/courses/curricula/types/CoursesCurriculum__QuizQuestion.bs.js","../../../app/frontend/courses/curricula/types/CoursesCurriculum__Grade.bs.js","../../../app/frontend/courses/curricula/types/CoursesCurriculum__Feedback.bs.js","../../../app/frontend/courses/curricula/types/CoursesCurriculum__Reaction.bs.js","../../../app/frontend/courses/curricula/types/CoursesCurriculum__Community.bs.js","../../../app/frontend/courses/curricula/types/CoursesCurriculum__User.bs.js","../../../app/frontend/courses/curricula/types/CoursesCurriculum__ModerationReport.bs.js","../../../app/frontend/courses/curricula/types/CoursesCurriculum__SubmissionComment.bs.js","../../../app/frontend/courses/curricula/types/CoursesCurriculum__TargetDetails.bs.js","../../../app/frontend/courses/curricula/components/CoursesCurriculum__Quiz.bs.js","../../../app/frontend/courses/curricula/components/CoursesCurriculum__Learn.bs.js","../../../app/frontend/courses/curricula/components/CoursesCurriculum__Discuss.bs.js","../../../app/frontend/courses/curricula/types/CoursesCurriculum__CurrentUser.bs.js","../../../app/frontend/courses/curricula/types/CoursesCurriculum__Student.bs.js","../../../app/frontend/courses/curricula/types/CoursesCurriculum__TargetGroup.bs.js","../../../app/frontend/courses/curricula/types/CoursesCurriculum__LatestSubmission.bs.js","../../../app/frontend/courses/curricula/types/CoursesCurriculum__TargetStatus.bs.js","../../../app/frontend/courses/curricula/images/no-peer-submissions.svg","../../../app/frontend/courses/review/components/SubmissionChecklistItemShow.bs.js","../../../app/frontend/courses/review/components/SubmissionChecklistShow.bs.js","../../../node_modules/rescript/lib/es6/belt_internalAVLtree.js","../../../node_modules/rescript/lib/es6/belt_internalMapString.js","../../../node_modules/rescript/lib/es6/belt_MapString.js","../../../app/frontend/courses/curricula/components/CoursesCurriculum__ReactionButton.bs.js","../../../app/frontend/courses/curricula/components/CoursesCurriculum__Reactions.bs.js","../../../app/frontend/courses/curricula/components/CoursesCurriculum__ModerationReportButton.bs.js","../../../app/frontend/courses/curricula/components/CoursesCurriculum__SubmissionCommentShow.bs.js","../../../app/frontend/courses/curricula/components/CoursesCurriculum__SubmissionComments.bs.js","../../../app/frontend/courses/curricula/types/CoursesCurriculum__DiscussionSubmission.bs.js","../../../app/frontend/courses/curricula/components/CoursesCurriculum__DiscussSubmission.bs.js","../../../app/frontend/courses/curricula/types/CoursesCurriculum__ChecklistItem.bs.js","../../../node_modules/rescript/lib/es6/random.js","../../../app/frontend/courses/curricula/components/CoursesCurriculum__FileForm.bs.js","../../../node_modules/blob-polyfill/Blob.js","../../../node_modules/file-saver/dist/FileSaver.min.js","../../../app/frontend/courses/curricula/components/CoursesCurriculum__AudioNavigator.js","../../../app/frontend/courses/curricula/components/CoursesCurriculum__AudioRecorder.bs.js","../../../app/frontend/courses/curricula/components/CoursesCurriculum__SubmissionItem.bs.js","../../../app/frontend/courses/curricula/components/CoursesCurriculum__SubmissionBuilder.bs.js","../../../app/frontend/courses/curricula/images/assignment-discussion-icon.svg","../../../app/frontend/courses/curricula/components/CoursesCurriculum__CompletionInstructions.bs.js","../../../app/frontend/courses/curricula/types/CoursesCurriculum__Coach.bs.js","../../../app/frontend/courses/curricula/types/CoursesCurriculum__Grading.bs.js","../../../app/frontend/courses/curricula/components/CoursesCurriculum__GradeBar.bs.js","../../../app/frontend/courses/curricula/components/CoursesCurriculum__UndoButton.bs.js","../../../app/frontend/courses/curricula/components/CoursesCurriculum__SubmissionsAndFeedback.bs.js","../../../app/frontend/courses/curricula/components/CoursesCurriculum__Overlay.bs.js","../../../app/frontend/courses/curricula/components/CoursesCurriculum__LevelSelector.bs.js","../../../app/frontend/courses/curricula/images/access-ended.svg","../../../app/frontend/courses/curricula/images/course-ended.svg","../../../app/frontend/courses/curricula/images/preview-mode.svg","../../../app/frontend/courses/curricula/images/course-complete.svg","../../../app/frontend/courses/curricula/types/CoursesCurriculum__Notice.bs.js","../../../app/frontend/courses/curricula/components/CoursesCurriculum__NoticeManager.bs.js","../../../app/frontend/courses/curricula/components/CoursesCurriculum.bs.js","../../../app/frontend/packs/CoursesCurriculumPack.bs.js","../../../app/frontend/courses/report/types/CoursesReport__Coach.bs.js","../../../app/frontend/courses/report/types/CoursesReport__EvaluationCriterion.bs.js","../../../app/frontend/courses/report/types/CoursesReport__StudentOverview.bs.js","../../../app/frontend/courses/students/components/CoursesStudents__PersonalCoaches.bs.js","../../../app/frontend/courses/report/types/CoursesReport__MilestoneCompletionStatus.bs.js","../../../app/frontend/courses/report/components/CoursesReport__Overview.bs.js","../../../app/frontend/courses/report/types/CoursesReport__Submission.bs.js","../../../app/frontend/courses/report/types/CoursesReport__Submissions.bs.js","../../../app/frontend/courses/report/components/CoursesReport__SubmissionsList.bs.js","../../../app/frontend/courses/report/components/CoursesReport__Root.bs.js","../../../app/frontend/packs/CoursesReportPack.bs.js","../../../app/frontend/issued_certificates/images/graduate-icon.svg","../../../app/frontend/issued_certificates/VerifyCertificate__Root.bs.js","../../../app/frontend/packs/IssuedCertificatesVerifyPack.bs.js","../../../app/frontend/faculty/types/CoachesIndex__Coach.bs.js","../../../app/frontend/faculty/types/CoachesIndex__Course.bs.js","../../../app/frontend/faculty/CoachesIndex__Root.bs.js","../../../app/frontend/packs/CoachesIndexPack.bs.js","../../../app/frontend/users/images/set-new-password-icon.svg","../../../app/frontend/users/UserSessionResetPassword.bs.js","../../../app/frontend/packs/UserSessionResetPasswordPack.bs.js","../../../app/frontend/courses/review/types/CoursesReview__Filter.bs.js","../../../app/frontend/courses/review/types/CoursesReview__TargetInfo.bs.js","../../../app/frontend/courses/review/images/pending-empty.svg","../../../app/frontend/courses/review/types/CoursesReview__Grade.bs.js","../../../app/frontend/courses/review/types/CoursesReview__Feedback.bs.js","../../../app/frontend/courses/review/types/CoursesReview__OverlaySubmission.bs.js","../../../app/frontend/courses/review/types/CoursesReview__IndexSubmission.bs.js","../../../app/frontend/courses/shared/images/reviewed-empty.svg","../../../app/frontend/courses/review/components/CoursesReview__SubmissionCard.bs.js","../../../app/frontend/courses/review/CoursesReview__Root.bs.js","../../../app/frontend/courses/review/types/CoursesReview__Student.bs.js","../../../app/frontend/courses/review/types/CoursesReview__Reviewer.bs.js","../../../app/frontend/courses/review/types/CoursesReview__SubmissionMeta.bs.js","../../../app/frontend/courses/review/types/CoursesReview__SubmissionReport.bs.js","../../../app/frontend/courses/review/types/CoursesReview__ReviewChecklistResult.bs.js","../../../app/frontend/courses/review/types/CoursesReview__ReviewChecklistItem.bs.js","../../../app/frontend/courses/review/types/CoursesReview__SubmissionDetails.bs.js","../../../app/frontend/courses/review/components/CoursesReview__ChecklistShow.bs.js","../../../app/frontend/courses/review/components/CoursesReview__ChecklistEditor.bs.js","../../../app/frontend/courses/review/components/CoursesReview__Checklist.bs.js","../../../app/frontend/courses/review/components/CoursesReview__ReviewerManager.bs.js","../../../app/frontend/courses/review/components/CoursesReview__SubmissionInfoCard.bs.js","../../../app/frontend/courses/review/components/CoursesReview__SubmissionReportShow.bs.js","../../../app/frontend/courses/review/components/CoursesReview__Editor.bs.js","../../../app/frontend/courses/review/components/CoursesReview__SubmissionsRoot.bs.js","../../../app/frontend/shared/types/UserDetails.bs.js","../../../app/frontend/courses/students/types/CoursesStudents__CoachNote.bs.js","../../../app/frontend/courses/students/components/CoursesStudents__CoachNoteShow.bs.js","../../../app/frontend/courses/students/components/CoursesStudents__CoachNotes.bs.js","../../../app/frontend/courses/students/types/CoursesStudents__StudentInfo.bs.js","../../../app/frontend/courses/students/types/CoursesStudents__EvaluationCriterion.bs.js","../../../app/frontend/courses/students/types/CoursesStudents__StudentDetails.bs.js","../../../app/frontend/courses/students/types/CoursesStudents__Submission.bs.js","../../../app/frontend/courses/students/components/CoursesStudents__SubmissionsList.bs.js","../../../app/frontend/courses/students/types/CoursesStudents__MilestonesCompletionStatus.bs.js","../../../app/frontend/courses/students/components/CoursesStudents__StudentOverlay.bs.js","../../../app/frontend/layouts/app_router/AppRouter.bs.js","../../../app/frontend/packs/AppRouterPack.bs.js"],"sourcesContent":["// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Json_decode from \"../../../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\n\nfunction title(t) {\n return t.title;\n}\n\nfunction url(t) {\n return t.url;\n}\n\nfunction local(t) {\n return t.local;\n}\n\nfunction decode(json) {\n return {\n title: Json_decode.field(\"title\", Json_decode.string, json),\n url: Json_decode.field(\"url\", Json_decode.string, json),\n local: Json_decode.field(\"local\", Json_decode.bool, json)\n };\n}\n\nexport {\n title ,\n url ,\n local ,\n decode ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as Curry from \"../../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as Js_array from \"../../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as StudentTopNav__NavLink from \"../types/StudentTopNav__Types/StudentTopNav__NavLink.bs.js\";\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.StudentTopNav__DropDown\";\n\nfunction t(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nfunction handleToggle(setLinksVisible, param) {\n return Curry._1(setLinksVisible, (function (linksVisible) {\n return !linksVisible;\n }));\n}\n\nfunction additionalLinks(linksVisible, links) {\n if (linksVisible) {\n return React.createElement(\"div\", {\n className: \"dropdown__list dropdown__list-right bg-white shadow-lg rounded mt-3 border absolute max-w-min z-50\"\n }, Js_array.mapi((function (link, index) {\n return React.createElement(\"div\", {\n key: String(index),\n className: \"\"\n }, React.createElement(\"a\", {\n className: \"cursor-pointer block p-3 text-xs font-medium text-gray-900 border-b border-gray-50 bg-white hover:text-primary-500 hover:bg-gray-50 focus:outline-none focus:text-primary-500 focus:bg-gray-50\",\n href: StudentTopNav__NavLink.url(link),\n rel: \"noopener\",\n target: \"_blank\"\n }, StudentTopNav__NavLink.title(link)));\n }), links));\n } else {\n return null;\n }\n}\n\nfunction StudentTopNav__DropDown(Props) {\n var links = Props.links;\n var match = React.useState(function () {\n return false;\n });\n var setLinksVisible = match[1];\n if (links.length !== 0) {\n return React.createElement(\"button\", {\n key: \"more-links\",\n className: \"whitespace-nowrap ms-2 font-medium text-sm p-4 md:px-3 md:py-2 cursor-pointer relative rounded-lg text-gray-900 hover:bg-gray-50 hover:text-primary-500 focus:outline-none focus:bg-gray-50 focus:text-primary-500\",\n title: t(undefined, undefined, \"show_links\"),\n onClick: (function (param) {\n return Curry._1(setLinksVisible, (function (linksVisible) {\n return !linksVisible;\n }));\n })\n }, React.createElement(\"span\", undefined, t(undefined, undefined, \"more\")), React.createElement(\"i\", {\n className: \"fas fa-caret-down ms-2\"\n }), additionalLinks(match[0], links));\n } else {\n return null;\n }\n}\n\nvar make = StudentTopNav__DropDown;\n\nexport {\n str ,\n t ,\n handleToggle ,\n additionalLinks ,\n make ,\n}\n/* I18n Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as User from \"../../../shared/types/User.bs.js\";\nimport * as React from \"react\";\nimport * as Avatar from \"../../../shared/Avatar.bs.js\";\nimport * as FaIcon from \"../../../shared/components/FaIcon.bs.js\";\nimport * as Dropdown from \"../../../shared/components/Dropdown.bs.js\";\nimport * as Belt_Option from \"../../../../../node_modules/rescript/lib/es6/belt_Option.js\";\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.StudentTopNav__UserControls\";\n\nfunction t(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nfunction showLink(icon, text, href) {\n return React.createElement(\"div\", {\n key: href,\n className: \"whitespace-nowrap\"\n }, React.createElement(\"a\", {\n className: \"cursor-pointer block p-3 text-xs font-semibold text-gray-900 border-b border-gray-50 bg-white hover:text-primary-500 hover:bg-gray-50\",\n href: href,\n rel: \"nofollow\"\n }, React.createElement(FaIcon.make, {\n classes: \"fas fw fa-\" + icon\n }), React.createElement(\"span\", {\n className: \"ps-2 \"\n }, text)));\n}\n\nfunction links(param) {\n return [\n showLink(\"edit\", t(undefined, undefined, \"edit_profile\"), \"/user/edit\"),\n showLink(\"power-off\", t(undefined, undefined, \"sign_out\"), \"/users/sign_out\")\n ];\n}\n\nfunction selected(user) {\n return React.createElement(\"button\", {\n className: \"md:ms-2 h-10 w-10 rounded-full border-2 border-gray-300 hover:border-primary-500 focus:outline-none focus:border-primary-500 \",\n title: t(undefined, undefined, \"user_controls\")\n }, Belt_Option.mapWithDefault(user, React.createElement(Avatar.make, {\n name: \"Unknown User\",\n className: \"inline-block object-contain rounded-full text-tiny\"\n }), (function (u) {\n return Belt_Option.mapWithDefault(User.avatarUrl(u), React.createElement(Avatar.make, {\n name: User.name(u),\n className: \"inline-block object-contain rounded-full text-tiny\"\n }), (function (src) {\n return React.createElement(\"img\", {\n className: \"inline-block object-contain rounded-full text-tiny\",\n alt: User.name(u),\n src: src\n });\n }));\n })));\n}\n\nfunction StudentTopNav__UserControls(Props) {\n var user = Props.user;\n return React.createElement(Dropdown.make, {\n selected: selected(user),\n contents: links(undefined),\n right: true\n });\n}\n\nvar make = StudentTopNav__UserControls;\n\nexport {\n str ,\n t ,\n showLink ,\n links ,\n selected ,\n make ,\n}\n/* I18n Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../shared/utils/I18n.bs.js\";\nimport * as $$Array from \"../../../../node_modules/rescript/lib/es6/array.js\";\nimport * as Curry from \"../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as FaIcon from \"../../shared/components/FaIcon.bs.js\";\nimport * as Js_array from \"../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as ReactUtils from \"../../shared/utils/ReactUtils.bs.js\";\nimport * as Caml_option from \"../../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as Notifications__Root from \"../../notifications/Notifications__Root.bs.js\";\nimport * as StudentTopNav__NavLink from \"./types/StudentTopNav__Types/StudentTopNav__NavLink.bs.js\";\nimport * as StudentTopNav__DropDown from \"./components/StudentTopNav__DropDown.bs.js\";\nimport * as StudentTopNav__UserControls from \"./components/StudentTopNav__UserControls.bs.js\";\n\nimport \"./StudentTopNav.css\"\n;\n\nvar partial_arg = \"components.StudentTopNav\";\n\nfunction t(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nfunction str(prim) {\n return prim;\n}\n\nfunction headerLink(key, link) {\n var tmp = {\n className: \"whitespace-nowrap no-underline bg-gray-50 md:bg-white hover:bg-gray-50 text-gray-900 rounded-lg hover:text-primary-500 w-full p-4 md:px-3 md:py-2 focus:outline-none focus:bg-gray-50 focus:text-primary-500\",\n href: StudentTopNav__NavLink.url(link)\n };\n var tmp$1 = StudentTopNav__NavLink.local(link) ? undefined : \"noopener\";\n if (tmp$1 !== undefined) {\n tmp.rel = Caml_option.valFromOption(tmp$1);\n }\n var tmp$2 = StudentTopNav__NavLink.local(link) ? undefined : \"_blank\";\n if (tmp$2 !== undefined) {\n tmp.target = Caml_option.valFromOption(tmp$2);\n }\n return React.createElement(\"div\", {\n key: key,\n className: \"md:ms-2 text-sm font-medium text-center cursor-default flex w-1/2 sm:w-1/3 md:w-auto justify-center border-e border-b md:border-0\"\n }, React.createElement(\"a\", tmp, StudentTopNav__NavLink.title(link)));\n}\n\nfunction signOutLink(param) {\n return React.createElement(\"div\", {\n key: \"Logout-button\",\n className: \"md:ms-2 text-sm font-semibold cursor-default flex w-1/2 sm:w-1/3 md:w-auto justify-center border-e border-b md:border-0\"\n }, React.createElement(\"div\", {\n className: \"flex items-center justify-center\"\n }, React.createElement(\"a\", {\n className: \"border border-primary-500 rounded px-2 py-1 text-primary-500 text-xs md:text-sm md:leading-normal m-4 md:m-0 no-underline font-semibold\",\n href: \"/users/sign_out\",\n rel: \"nofollow\"\n }, React.createElement(FaIcon.make, {\n classes: \"fas fa-power-off\"\n }), React.createElement(\"span\", {\n className: \"ms-2\"\n }, t(undefined, undefined, \"sign_out\")))));\n}\n\nfunction editProfileLink(param) {\n return React.createElement(\"div\", {\n key: \"edit-profile-button\",\n className: \"md:ms-2 text-sm font-medium text-center cursor-default flex w-1/2 sm:w-1/3 md:w-auto justify-center border-e border-b md:border-0\"\n }, React.createElement(\"a\", {\n className: \"whitespace-nowrap no-underline bg-gray-50 md:bg-white hover:bg-gray-50 text-gray-900 rounded-lg hover:text-primary-500 w-full p-4 md:px-3 md:py-2 focus:outline-none focus:bg-gray-50 focus:text-primary-500\",\n href: \"/user/edit\",\n rel: \"nofollow\"\n }, React.createElement(\"span\", {\n className: \"ms-2\"\n }, t(undefined, undefined, \"edit_profile\"))));\n}\n\nfunction signInLink(param) {\n return React.createElement(\"div\", {\n key: \"SignIn-button\",\n className: \"md:ms-2 text-sm font-semibold cursor-default flex w-1/2 sm:w-1/3 md:w-auto justify-center border-e border-b md:border-0\"\n }, React.createElement(\"div\", {\n className: \"flex items-center justify-center\"\n }, React.createElement(\"a\", {\n className: \"border border-primary-500 rounded px-2 py-1 text-primary-500 text-xs md:text-sm md:leading-normal m-4 md:m-0 no-underline font-semibold\",\n href: \"/users/sign_in\"\n }, React.createElement(FaIcon.make, {\n classes: \"fas fa-power-off\"\n }), React.createElement(\"span\", {\n className: \"ms-2\"\n }, t(undefined, undefined, \"sign_in\")))));\n}\n\nfunction notificationButton(hasNotifications) {\n return React.createElement(Notifications__Root.make, {\n wrapperClasses: \"relative md:ms-1 pt-1 md:pt-0 text-sm font-semibold cursor-default flex w-8 h-8 md:w-9 md:h-9 justify-center items-center rounded-lg hover:bg-gray-50\",\n buttonClasses: \"font-semibold text-gray-900 hover:text-primary-500 w-full flex items-center justify-center focus:text-primary-500 \",\n iconClasses: \"student-navbar__notifications-unread-bullet\",\n hasNotifications: hasNotifications,\n key: \"notifications-button\"\n });\n}\n\nfunction isMobile(param) {\n return window.innerWidth < 768;\n}\n\nfunction headerLinks(links, isLoggedIn, user, hasNotifications) {\n var match = $$Array.to_list(links);\n var match$1 = window.innerWidth < 768;\n var match$2;\n if (match$1) {\n match$2 = [\n $$Array.of_list(match),\n []\n ];\n } else if (match) {\n var match$3 = match.tl;\n if (match$3) {\n var match$4 = match$3.tl;\n if (match$4) {\n var match$5 = match$4.tl;\n if (match$5) {\n var match$6 = match$5.tl;\n match$2 = match$6 ? [\n [\n match.hd,\n match$3.hd,\n match$4.hd\n ],\n Js_array.concat($$Array.of_list(match$6.tl), [\n match$5.hd,\n match$6.hd\n ])\n ] : [\n $$Array.of_list(match),\n []\n ];\n } else {\n match$2 = [\n $$Array.of_list(match),\n []\n ];\n }\n } else {\n match$2 = [\n $$Array.of_list(match),\n []\n ];\n }\n } else {\n match$2 = [\n $$Array.of_list(match),\n []\n ];\n }\n } else {\n match$2 = [\n $$Array.of_list(match),\n []\n ];\n }\n var match$7 = window.innerWidth < 768;\n return Js_array.concat([isLoggedIn ? (\n match$7 ? signOutLink(undefined) : React.createElement(StudentTopNav__UserControls.make, {\n user: user,\n key: \"user-controls\"\n })\n ) : signInLink(undefined)], Js_array.concat([ReactUtils.nullUnless(editProfileLink(undefined), isLoggedIn && window.innerWidth < 768)], Js_array.concat([ReactUtils.nullUnless(notificationButton(hasNotifications), isLoggedIn && window.innerWidth >= 768)], Js_array.concat([React.createElement(StudentTopNav__DropDown.make, {\n links: match$2[1],\n key: \"more-links\"\n })], Js_array.mapi((function (l, index) {\n return headerLink(String(index), l);\n }), match$2[0])))));\n}\n\nfunction renderLogo(logoUrl, schoolName, additionalClasses) {\n if (logoUrl !== undefined) {\n return React.createElement(\"img\", {\n className: \"h-8 md:h-10 object-contain flex text-sm items-center \" + additionalClasses,\n alt: \"Logo of \" + schoolName,\n src: logoUrl\n });\n } else {\n return React.createElement(\"div\", {\n className: \"p-2 rounded-lg bg-white text-gray-900 hover:bg-gray-50 hover:text-primary-600 \" + additionalClasses\n }, React.createElement(\"span\", {\n className: \"text-xl font-bold leading-tight\"\n }, schoolName));\n }\n}\n\nfunction StudentTopNav(Props) {\n var schoolName = Props.schoolName;\n var logoOnLightBgUrl = Props.logoOnLightBgUrl;\n var logoOnDarkBgUrl = Props.logoOnDarkBgUrl;\n var links = Props.links;\n var isLoggedIn = Props.isLoggedIn;\n var currentUser = Props.currentUser;\n var hasNotifications = Props.hasNotifications;\n var match = React.useState(function () {\n return window.innerWidth < 768;\n });\n var toggleMenuHidden = match[1];\n var menuHidden = match[0];\n React.useEffect(function () {\n var resizeCB = function (param) {\n Curry._1(toggleMenuHidden, (function (param) {\n return window.innerWidth < 768;\n }));\n };\n window.addEventListener(\"resize\", resizeCB);\n });\n return React.createElement(\"div\", {\n className: \"border-b\"\n }, React.createElement(\"div\", {\n className: \"mx-auto p-4\"\n }, React.createElement(\"nav\", {\n className: \"flex justify-between items-center\"\n }, React.createElement(\"div\", {\n className: \"flex w-full items-center justify-between\"\n }, React.createElement(\"a\", {\n className: \"max-w-sm focus:outline-none\",\n href: isLoggedIn ? \"/dashboard\" : \"/\"\n }, renderLogo(logoOnLightBgUrl, schoolName, \"logo_on_light_bg\"), renderLogo(logoOnDarkBgUrl, schoolName, \"logo_on_dark_bg\")), ReactUtils.nullUnless(React.createElement(\"div\", {\n className: \"flex items-center space-x-2\"\n }, ReactUtils.nullUnless(notificationButton(hasNotifications), isLoggedIn), React.createElement(\"div\", {\n onClick: (function (param) {\n Curry._1(toggleMenuHidden, (function (menuHidden) {\n return !menuHidden;\n }));\n })\n }, React.createElement(\"div\", {\n className: \"student-navbar__menu-btn cursor-pointer hover:bg-gray-50 w-8 h-8 text-center relative focus:outline-none rounded-lg \" + (\n menuHidden ? \"\" : \"open\"\n )\n }, React.createElement(\"span\", {\n className: \"student-navbar__menu-icon\"\n }, React.createElement(\"span\", {\n className: \"student-navbar__menu-icon-bar\"\n }))))), window.innerWidth < 768)), !menuHidden && window.innerWidth >= 768 ? React.createElement(\"div\", {\n className: \"student-navbar__links-container flex justify-end items-center w-3/5 lg:w-3/4 flex-nowrap shrink-0\"\n }, headerLinks(links, isLoggedIn, currentUser, hasNotifications)) : null)), window.innerWidth < 768 && !menuHidden ? React.createElement(\"div\", {\n className: \"student-navbar__links-container flex flex-row border-t w-full flex-wrap shadow-lg\"\n }, headerLinks(links, isLoggedIn, currentUser, hasNotifications)) : null);\n}\n\nvar make = StudentTopNav;\n\nexport {\n t ,\n str ,\n headerLink ,\n signOutLink ,\n editProfileLink ,\n signInLink ,\n notificationButton ,\n isMobile ,\n headerLinks ,\n renderLogo ,\n make ,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as User from \"../shared/types/User.bs.js\";\nimport * as React from \"react\";\nimport * as DomUtils from \"../shared/utils/DomUtils.bs.js\";\nimport * as ReactDom from \"react-dom\";\nimport * as Caml_option from \"../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as Json_decode from \"../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\nimport * as StudentTopNav from \"../layouts/student/StudentTopNav.bs.js\";\nimport * as StudentTopNav__NavLink from \"../layouts/student/types/StudentTopNav__Types/StudentTopNav__NavLink.bs.js\";\n\nfunction decodeProps(json) {\n return [\n Json_decode.field(\"schoolName\", Json_decode.string, json),\n Caml_option.null_to_opt(Json_decode.field(\"logoOnLightBgUrl\", (function (param) {\n return Json_decode.nullable(Json_decode.string, param);\n }), json)),\n Caml_option.null_to_opt(Json_decode.field(\"logoOnDarkBgUrl\", (function (param) {\n return Json_decode.nullable(Json_decode.string, param);\n }), json)),\n Json_decode.field(\"links\", (function (param) {\n return Json_decode.array(StudentTopNav__NavLink.decode, param);\n }), json),\n Json_decode.field(\"isLoggedIn\", Json_decode.bool, json),\n Json_decode.field(\"currentUser\", (function (param) {\n return Json_decode.optional(User.decode, param);\n }), json),\n Json_decode.field(\"hasNotifications\", Json_decode.bool, json)\n ];\n}\n\nvar element = document.querySelector(\"#student-top-nav\");\n\nif (!(element == null)) {\n var match = decodeProps(DomUtils.parseJSONTag(\"student-top-nav-props\", undefined));\n ReactDom.render(React.createElement(StudentTopNav.make, {\n schoolName: match[0],\n logoOnLightBgUrl: match[1],\n logoOnDarkBgUrl: match[2],\n links: match[3],\n isLoggedIn: match[4],\n currentUser: match[5],\n hasNotifications: match[6]\n }), element);\n}\n\nexport {\n decodeProps ,\n}\n/* element Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Json from \"../../../node_modules/@glennsl/bs-json/src/Json.bs.js\";\nimport * as $$Array from \"../../../node_modules/rescript/lib/es6/array.js\";\nimport * as React from \"react\";\nimport * as ReactDom from \"react-dom\";\nimport * as Json_decode from \"../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\nimport * as MarkdownBlock from \"../shared/components/MarkdownBlock.bs.js\";\nimport * as Caml_exceptions from \"../../../node_modules/rescript/lib/es6/caml_exceptions.js\";\n\nvar RootAttributeMissing = /* @__PURE__ */Caml_exceptions.create(\"ConvertMarkdownPack.RootAttributeMissing\");\n\nvar InvalidProfile = /* @__PURE__ */Caml_exceptions.create(\"ConvertMarkdownPack.InvalidProfile\");\n\nfunction decodeProps(json) {\n return {\n markdown: Json_decode.field(\"markdown\", Json_decode.string, json),\n profile: Json_decode.field(\"profile\", Json_decode.string, json)\n };\n}\n\nfunction parseElement(element, attribute) {\n var props = element.getAttribute(attribute);\n var tmp;\n if (props == null) {\n throw {\n RE_EXN_ID: RootAttributeMissing,\n _1: attribute,\n Error: new Error()\n };\n }\n tmp = props;\n return decodeProps(Json.parseOrRaise(tmp));\n}\n\nfunction profileType(profile) {\n switch (profile) {\n case \"areaOfText\" :\n return /* AreaOfText */1;\n case \"permissive\" :\n return /* Permissive */0;\n default:\n throw {\n RE_EXN_ID: InvalidProfile,\n _1: profile,\n Error: new Error()\n };\n }\n}\n\nfunction parseMarkdown(attributeNameOpt, attributeOpt, param) {\n var attributeName = attributeNameOpt !== undefined ? attributeNameOpt : \"convert-markdown\";\n var attribute = attributeOpt !== undefined ? attributeOpt : \"data-json-props\";\n return $$Array.map((function (element) {\n var props = parseElement(element, attribute);\n ReactDom.render(React.createElement(MarkdownBlock.make, {\n markdown: props.markdown,\n className: \"leading-normal text-sm\",\n profile: profileType(props.profile)\n }), element);\n }), Array.prototype.slice.call(document.getElementsByClassName(attributeName)));\n}\n\nparseMarkdown(undefined, undefined, undefined);\n\nexport {\n RootAttributeMissing ,\n InvalidProfile ,\n decodeProps ,\n parseElement ,\n profileType ,\n parseMarkdown ,\n}\n/* Not a pure module */\n","import \"~/home/assets/index.css\";\nimport { parseMarkdown } from \"~/packs/ConvertMarkdownPack.bs.js\";\nimport { match } from \"~/shared/utils/Psj.bs.js\";\n\nmatch(true, \"home#index\", () => {\n parseMarkdown();\n});\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Caml_option from \"../../../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as Json_decode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\n\nfunction name(t) {\n return t.name;\n}\n\nfunction id(t) {\n return t.id;\n}\n\nfunction review(t) {\n return t.review;\n}\n\nfunction author(t) {\n return t.author;\n}\n\nfunction description(t) {\n return t.description;\n}\n\nfunction exited(t) {\n return t.exited;\n}\n\nfunction thumbnailUrl(t) {\n return t.thumbnailUrl;\n}\n\nfunction linkedCommunities(t) {\n return t.linkedCommunities;\n}\n\nfunction accessEnded(t) {\n return t.accessEnded;\n}\n\nfunction ended(t) {\n return t.ended;\n}\n\nfunction enableLeaderboard(t) {\n return t.enableLeaderboard;\n}\n\nfunction decode(json) {\n return {\n id: Json_decode.field(\"id\", Json_decode.string, json),\n name: Json_decode.field(\"name\", Json_decode.string, json),\n review: Json_decode.field(\"review\", Json_decode.bool, json),\n author: Json_decode.field(\"author\", Json_decode.bool, json),\n enableLeaderboard: Json_decode.field(\"enableLeaderboard\", Json_decode.bool, json),\n description: Json_decode.field(\"description\", Json_decode.string, json),\n exited: Json_decode.field(\"exited\", Json_decode.bool, json),\n thumbnailUrl: Caml_option.null_to_opt(Json_decode.field(\"thumbnailUrl\", (function (param) {\n return Json_decode.nullable(Json_decode.string, param);\n }), json)),\n linkedCommunities: Json_decode.field(\"linkedCommunities\", (function (param) {\n return Json_decode.array(Json_decode.string, param);\n }), json),\n accessEnded: Json_decode.field(\"accessEnded\", Json_decode.bool, json),\n ended: Json_decode.field(\"ended\", Json_decode.bool, json)\n };\n}\n\nexport {\n name ,\n id ,\n review ,\n author ,\n description ,\n exited ,\n thumbnailUrl ,\n linkedCommunities ,\n accessEnded ,\n ended ,\n enableLeaderboard ,\n decode ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Json_decode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\n\nfunction name(t) {\n return t.name;\n}\n\nfunction color(t) {\n return t.color;\n}\n\nfunction decode(json) {\n return {\n name: Json_decode.field(\"name\", Json_decode.string, json),\n color: Json_decode.field(\"color\", Json_decode.string, json)\n };\n}\n\nexport {\n name ,\n color ,\n decode ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Json_decode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\nimport * as StringUtils from \"../../../shared/utils/StringUtils.bs.js\";\n\nfunction name(t) {\n return t.name;\n}\n\nfunction id(t) {\n return t.id;\n}\n\nfunction decode(json) {\n return {\n id: Json_decode.field(\"id\", Json_decode.string, json),\n name: Json_decode.field(\"name\", Json_decode.string, json)\n };\n}\n\nfunction path(t) {\n return \"/communities/\" + (t.id + (\"/\" + StringUtils.parameterize(t.name)));\n}\n\nexport {\n name ,\n id ,\n decode ,\n path ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as DateFns from \"../../../shared/utils/DateFns.bs.js\";\nimport * as Json_decode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\n\nfunction id(t) {\n return t.id;\n}\n\nfunction serialNumber(t) {\n return t.serialNumber;\n}\n\nfunction createdAt(t) {\n return t.createdAt;\n}\n\nfunction courseName(t) {\n return t.courseName;\n}\n\nfunction decode(json) {\n return {\n id: Json_decode.field(\"id\", Json_decode.string, json),\n serialNumber: Json_decode.field(\"serialNumber\", Json_decode.string, json),\n createdAt: Json_decode.field(\"createdAt\", DateFns.decodeISO, json),\n courseName: Json_decode.field(\"courseName\", Json_decode.string, json)\n };\n}\n\nexport {\n id ,\n serialNumber ,\n createdAt ,\n courseName ,\n decode ,\n}\n/* DateFns Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as Curry from \"../../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as Avatar from \"../../../shared/Avatar.bs.js\";\nimport * as FaIcon from \"../../../shared/components/FaIcon.bs.js\";\nimport * as PfIcon from \"../../../packages/pf-icon/src/PfIcon.bs.js\";\nimport * as DateFns from \"../../../shared/utils/DateFns.bs.js\";\nimport * as Js_array from \"../../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as ArrayUtils from \"../../../shared/utils/ArrayUtils.bs.js\";\nimport * as ReactUtils from \"../../../shared/utils/ReactUtils.bs.js\";\nimport * as Belt_Option from \"../../../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as StandingShield from \"../../../shared/components/StandingShield.bs.js\";\nimport * as UsersDashboard__Course from \"../types/UsersDashboard__Course.bs.js\";\nimport * as UsersDashboard__Standing from \"../types/UsersDashboard__Standing.bs.js\";\nimport * as UsersDashboard__Community from \"../types/UsersDashboard__Community.bs.js\";\nimport * as UsersDashboard__IssuedCertificate from \"../types/UsersDashboard__IssuedCertificate.bs.js\";\n\nimport \"./UserDashboard__Root.css\"\n;\n\nvar partial_arg = \"components.UsersDashboard__Root\";\n\nfunction t(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nfunction str(prim) {\n return prim;\n}\n\nfunction headerSection(userName, preferredName, userTitle, avatarUrl, showUserEdit, standing) {\n var name = Belt_Option.getWithDefault(preferredName, userName);\n return React.createElement(\"div\", {\n className: \"max-w-5xl mx-auto pt-12 flex flex-col md:flex-row items-start justify-start md:justify-between px-3 lg:px-0 gap-1\"\n }, React.createElement(\"div\", {\n className: \"flex items-center justify-center gap-2\"\n }, avatarUrl !== undefined ? React.createElement(\"img\", {\n className: \"w-16 h-16 rounded-full border border-gray-300 overflow-hidden shrink-0\",\n src: avatarUrl\n }) : React.createElement(Avatar.make, {\n name: name,\n className: \"w-16 h-16 border border-gray-300 rounded-full overflow-hidden shrink-0\"\n }), React.createElement(\"div\", {\n className: \"text-sm flex flex-col justify-center\"\n }, React.createElement(\"div\", {\n className: \"text-black font-bold flex items-center justify-start\"\n }, name, ReactUtils.nullUnless(React.createElement(\"a\", {\n className: \"hidden md:block ms-2 text-primary-400 font-medium text-xs hover:text-primary-500 rounded-full border px-3 py-1 bg-primary-50 hover:bg-primary-100\",\n href: \"/user/edit\"\n }, React.createElement(\"span\", undefined, t(undefined, undefined, \"edit_profile\"))), showUserEdit)), React.createElement(\"div\", {\n className: \"text-gray-600 inline-block\"\n }, userTitle))), standing !== undefined ? React.createElement(\"div\", {\n className: \"flex flex-row-reverse md:flex-row items-center justify-start md:justify-start gap-2\"\n }, React.createElement(\"div\", {\n className: \"text-left rtl:text-right rtl:md:text-left md:text-right\"\n }, React.createElement(\"p\", {\n className: \"font-semibold text-sm\",\n style: {\n color: UsersDashboard__Standing.color(standing)\n }\n }, UsersDashboard__Standing.name(standing)), React.createElement(\"a\", {\n className: \"text-sm text-primary-500 hover:text-primary-700 hover:underline transition\",\n href: \"/user/standing\"\n }, I18n.ts(undefined, undefined, \"view_standing\"))), React.createElement(\"div\", {\n className: \"w-16 h-16 flex items-center justify-center border border-gray-300 rounded-full\",\n id: \"standing_shield\"\n }, React.createElement(StandingShield.make, {\n color: UsersDashboard__Standing.color(standing),\n sizeClass: \"w-12 h-12\"\n }))) : null);\n}\n\nfunction navButtonClasses(selected) {\n return \"font-semibold border-b-2 text-sm py-4 me-6 hover:text-primary-500 hover:border-gray-300 focus:border-gray-300 focus:text-primary-500 focus:outline-none \" + (\n selected ? \"text-primary-500 border-primary-500\" : \"border-transparent\"\n );\n}\n\nfunction navSection(view, setView, communities, issuedCertificates) {\n return React.createElement(\"div\", {\n className: \"border-b mt-6\"\n }, React.createElement(\"div\", {\n className: \"flex max-w-5xl mx-auto px-3 lg:px-0\",\n role: \"tablist\"\n }, React.createElement(\"button\", {\n \"aria-selected\": view === /* ShowCourses */0,\n className: navButtonClasses(view === /* ShowCourses */0),\n role: \"tab\",\n onClick: (function (param) {\n Curry._1(setView, (function (param) {\n return /* ShowCourses */0;\n }));\n })\n }, React.createElement(\"i\", {\n className: \"fas fa-book text-xs md:text-sm me-2\"\n }), React.createElement(\"span\", undefined, t(undefined, undefined, \"my_courses\"))), ReactUtils.nullUnless(React.createElement(\"button\", {\n \"aria-selected\": view === /* ShowCommunities */1,\n className: navButtonClasses(view === /* ShowCommunities */1),\n role: \"tab\",\n onClick: (function (param) {\n Curry._1(setView, (function (param) {\n return /* ShowCommunities */1;\n }));\n })\n }, React.createElement(\"i\", {\n className: \"fas fa-users text-xs md:text-sm me-2\"\n }), React.createElement(\"span\", undefined, t(undefined, undefined, \"communities\"))), ArrayUtils.isNotEmpty(communities)), ReactUtils.nullUnless(React.createElement(\"button\", {\n \"aria-selected\": view === /* ShowCertificates */2,\n className: navButtonClasses(view === /* ShowCertificates */2),\n role: \"tab\",\n onClick: (function (param) {\n Curry._1(setView, (function (param) {\n return /* ShowCertificates */2;\n }));\n })\n }, React.createElement(\"i\", {\n className: \"fas fa-certificate text-xs md:text-sm me-2\"\n }), React.createElement(\"span\", undefined, t(undefined, undefined, \"certificates\"))), ArrayUtils.isNotEmpty(issuedCertificates))));\n}\n\nfunction courseLink(href, title, icon) {\n return React.createElement(\"a\", {\n key: href,\n className: \"px-2 py-1 me-2 mt-2 rounded text-sm bg-gray-50 text-gray-500 hover:bg-gray-50 hover:text-primary-500 focus:outline-none focus:bg-gray-50 focus:text-primary-500\",\n href: href\n }, React.createElement(\"i\", {\n className: icon\n }), React.createElement(\"span\", {\n className: \"font-medium ms-2\"\n }, title));\n}\n\nfunction ctaButton(title, href) {\n return React.createElement(\"a\", {\n className: \"w-full bg-primary-50 mt-4 px-6 py-4 flex text-sm font-semibold justify-between items-center cursor-pointer text-primary-500 hover:bg-primary-100 focus:outline-none focus:bg-primary-100\",\n href: href\n }, React.createElement(\"span\", undefined, React.createElement(\"i\", {\n className: \"fas fa-book\"\n }), React.createElement(\"span\", {\n className: \"ms-2\"\n }, title)), React.createElement(\"i\", {\n className: \"fas fa-arrow-right rtl:rotate-180\"\n }));\n}\n\nfunction ctaText(message, icon) {\n return React.createElement(\"div\", {\n className: \"w-full bg-red-100 text-red-600 mt-4 px-6 py-4 flex text-sm font-semibold justify-center items-center \"\n }, React.createElement(\"span\", undefined, React.createElement(\"i\", {\n className: icon\n }), React.createElement(\"span\", {\n className: \"ms-2\"\n }, message)));\n}\n\nfunction studentLink(courseId, suffix) {\n return \"/courses/\" + (courseId + (\"/\" + suffix));\n}\n\nfunction callToAction(course, currentSchoolAdmin) {\n if (currentSchoolAdmin) {\n return \"ViewCourse\";\n } else if (UsersDashboard__Course.author(course)) {\n return \"EditCourse\";\n } else if (UsersDashboard__Course.review(course)) {\n return \"ReviewSubmissions\";\n } else if (UsersDashboard__Course.exited(course)) {\n return \"DroppedOut\";\n } else if (UsersDashboard__Course.ended(course)) {\n return \"CourseEnded\";\n } else if (UsersDashboard__Course.accessEnded(course)) {\n return \"AccessEnded\";\n } else {\n return \"ViewCourse\";\n }\n}\n\nfunction ctaFooter(course, currentSchoolAdmin) {\n var courseId = UsersDashboard__Course.id(course);\n var match = callToAction(course, currentSchoolAdmin);\n if (match === \"ReviewSubmissions\") {\n return ctaButton(t(undefined, undefined, \"cta.review_submissions\"), studentLink(courseId, \"review\"));\n } else if (match === \"ViewCourse\") {\n return ctaButton(t(undefined, undefined, \"cta.view_course\"), studentLink(courseId, \"curriculum\"));\n } else if (match === \"EditCourse\") {\n return ctaButton(t(undefined, undefined, \"cta.edit_curriculum\"), \"/school/courses/\" + (courseId + \"/curriculum\"));\n } else if (match === \"CourseEnded\") {\n return ctaText(t(undefined, undefined, \"cta.course_ended\"), \"fas fa-history\");\n } else if (match === \"DroppedOut\") {\n return ctaText(t(undefined, undefined, \"cta.dropped_out\"), \"fas fa-user-slash\");\n } else {\n return ctaText(t(undefined, undefined, \"cta.access_ended\"), \"fas fa-history\");\n }\n}\n\nfunction communityLinks(communityIds, communities) {\n return Js_array.map((function (id) {\n var community = Js_array.find((function (c) {\n return UsersDashboard__Community.id(c) === id;\n }), communities);\n if (community !== undefined) {\n return React.createElement(\"a\", {\n key: UsersDashboard__Community.id(community),\n className: \"px-2 py-1 me-2 mt-2 rounded text-sm bg-gray-50 text-gray-500 hover:bg-gray-50 hover:text-primary-500 focus:outline-none focus:bg-gray-50 focus:text-primary-500\",\n href: UsersDashboard__Community.path(community)\n }, React.createElement(\"i\", {\n className: \"fas fa-users\"\n }), React.createElement(\"span\", {\n className: \"font-medium ms-2\"\n }, UsersDashboard__Community.name(community)));\n } else {\n return null;\n }\n }), communityIds);\n}\n\nfunction courseLinks(course, currentSchoolAdmin, communities) {\n var courseId = UsersDashboard__Course.id(course);\n var cta = callToAction(course, currentSchoolAdmin);\n return React.createElement(\"div\", {\n className: \"flex flex-wrap px-4 mt-2\"\n }, ReactUtils.nullUnless(courseLink(\"/school/courses/\" + (courseId + \"/curriculum\"), t(undefined, undefined, \"cta.edit_curriculum\"), \"fas fa-check-square\"), UsersDashboard__Course.author(course) && cta !== \"EditCourse\"), ReactUtils.nullUnless(courseLink(studentLink(courseId, \"curriculum\"), t(undefined, undefined, \"cta.view_curriculum\"), \"fas fa-book\"), cta !== \"ViewCourse\"), ReactUtils.nullUnless(courseLink(studentLink(courseId, \"leaderboard\"), t(undefined, undefined, \"cta.leaderboard\"), \"fas fa-calendar-alt\"), UsersDashboard__Course.enableLeaderboard(course)), ReactUtils.nullUnless(courseLink(studentLink(courseId, \"review\"), t(undefined, undefined, \"cta.review_submissions\"), \"fas fa-check-square\"), UsersDashboard__Course.review(course) && cta !== \"ReviewSubmissions\"), ReactUtils.nullUnless(courseLink(studentLink(courseId, \"cohorts\"), t(undefined, undefined, \"cta.my_cohorts\"), \"fas fa-user-friends\"), UsersDashboard__Course.review(course)), communityLinks(UsersDashboard__Course.linkedCommunities(course), communities));\n}\n\nfunction coursesSection(courses, communities, currentSchoolAdmin) {\n return React.createElement(\"div\", {\n className: \"w-full max-w-5xl mx-auto\"\n }, ReactUtils.nullUnless(React.createElement(\"div\", {\n className: \"flex flex-col mx-auto bg-white rounded-md border p-6 justify-center items-center mt-4\"\n }, React.createElement(FaIcon.make, {\n classes: \"fas fa-book text-5xl text-gray-400\"\n }), React.createElement(\"h4\", {\n className: \"mt-3 text-base md:text-lg text-center font-semibold\"\n }, t(undefined, undefined, \"empty_courses\"))), ArrayUtils.isEmpty(courses)), React.createElement(\"div\", {\n className: \"flex flex-wrap flex-1 lg:-mx-5\"\n }, Js_array.map((function (course) {\n var url = UsersDashboard__Course.thumbnailUrl(course);\n return React.createElement(\"div\", {\n key: UsersDashboard__Course.id(course),\n \"aria-label\": UsersDashboard__Course.name(course),\n className: \"w-full px-3 lg:px-5 md:w-1/2 mt-6 md:mt-10\"\n }, React.createElement(\"div\", {\n key: UsersDashboard__Course.id(course),\n className: \"overflow-hidden shadow bg-white rounded-lg flex flex-col justify-between h-full\"\n }, React.createElement(\"div\", undefined, React.createElement(\"div\", {\n className: \"relative\"\n }, React.createElement(\"div\", {\n className: \"relative pb-1/2 bg-gray-800\"\n }, url !== undefined ? React.createElement(\"img\", {\n className: \"absolute h-full w-full object-cover\",\n src: url\n }) : React.createElement(\"div\", {\n className: \"user-dashboard-course__cover absolute h-full w-full svg-bg-pattern-1\"\n }))), React.createElement(\"div\", {\n key: UsersDashboard__Course.id(course),\n className: \"flex gap-2 border-b border-gray-200\"\n }, React.createElement(\"div\", {\n className: \"block h-min ms-6 pt-3 pb-2 px-2 bg-primary-100 rounded-b-full\"\n }, React.createElement(PfIcon.make, {\n className: \"if i-book-solid if-fw text-primary-400\"\n })), React.createElement(\"h4\", {\n className: \"w-full text-black font-semibold leading-tight pe-6 py-3 text-lg md:text-xl\"\n }, UsersDashboard__Course.name(course))), React.createElement(\"div\", {\n className: \"user-dashboard-course__description text-sm px-6 pt-3 w-full leading-relaxed\"\n }, UsersDashboard__Course.description(course)), UsersDashboard__Course.exited(course) && !UsersDashboard__Course.review(course) && !UsersDashboard__Course.author(course) ? React.createElement(\"div\", {\n className: \"text-sm py-4 bg-red-100 rounded mt-2 px-6\"\n }, t(undefined, undefined, \"course_locked_message\")) : React.createElement(\"div\", undefined, courseLinks(course, currentSchoolAdmin, communities))), React.createElement(\"div\", undefined, ctaFooter(course, currentSchoolAdmin))));\n }), courses)));\n}\n\nfunction communitiesSection(communities) {\n return React.createElement(\"div\", {\n className: \"w-full max-w-5xl mx-auto\"\n }, React.createElement(\"div\", {\n className: \"flex flex-wrap flex-1 lg:-mx-5\"\n }, Js_array.map((function (community) {\n return React.createElement(\"div\", {\n key: UsersDashboard__Community.id(community),\n className: \"flex w-full px-3 lg:px-5 md:w-1/2 mt-6 md:mt-10\"\n }, React.createElement(\"a\", {\n className: \"w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\",\n href: UsersDashboard__Community.path(community)\n }, React.createElement(\"div\", {\n className: \"user-dashboard-community__cover flex w-full bg-gray-600 h-40 svg-bg-pattern-5 items-center justify-center p-4\"\n }), React.createElement(\"div\", {\n className: \"w-full flex justify-between items-center flex-wrap px-4 pt-2 pb-4\"\n }, React.createElement(\"h4\", {\n className: \"font-bold text-sm pt-2 leading-tight\"\n }, UsersDashboard__Community.name(community)), React.createElement(\"div\", {\n className: \"btn btn-small btn-primary-ghost mt-2\"\n }, t(undefined, undefined, \"cta.visit_community\")))));\n }), communities)));\n}\n\nfunction certificatesSection(issuedCertificates) {\n return React.createElement(\"div\", {\n className: \"w-full max-w-5xl mx-auto\"\n }, React.createElement(\"div\", {\n className: \"flex flex-wrap flex-1 lg:-mx-5\"\n }, Js_array.map((function (issuedCertificate) {\n return React.createElement(\"div\", {\n key: UsersDashboard__IssuedCertificate.id(issuedCertificate),\n className: \"flex w-full px-3 lg:px-5 md:w-1/2 mt-6 md:mt-10\"\n }, React.createElement(\"a\", {\n className: \"w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\",\n href: \"/c/\" + UsersDashboard__IssuedCertificate.serialNumber(issuedCertificate)\n }, React.createElement(\"div\", {\n className: \"user-dashboard-community__cover flex w-full bg-gray-600 h-40 svg-bg-pattern-5 items-center justify-center p-4\"\n }), React.createElement(\"div\", {\n className: \"w-full flex justify-between items-center flex-wrap px-4 pt-2 pb-4\"\n }, React.createElement(\"div\", undefined, React.createElement(\"h4\", {\n className: \"font-bold text-sm pt-2 leading-tight\"\n }, UsersDashboard__IssuedCertificate.courseName(issuedCertificate)), React.createElement(\"div\", {\n className: \"text-xs\"\n }, React.createElement(\"span\", undefined, t(undefined, undefined, \"issued_on\")), React.createElement(\"span\", {\n className: \"ms-1\"\n }, DateFns.formatPreset(UsersDashboard__IssuedCertificate.createdAt(issuedCertificate), true, true, undefined, undefined)))), React.createElement(\"div\", {\n className: \"btn btn-small btn-primary-ghost mt-2\"\n }, t(undefined, undefined, \"cta.view_certificate\")))));\n }), issuedCertificates)));\n}\n\nfunction UsersDashboard__Root(Props) {\n var currentSchoolAdmin = Props.currentSchoolAdmin;\n var courses = Props.courses;\n var communities = Props.communities;\n var showUserEdit = Props.showUserEdit;\n var userName = Props.userName;\n var preferredName = Props.preferredName;\n var userTitle = Props.userTitle;\n var avatarUrl = Props.avatarUrl;\n var issuedCertificates = Props.issuedCertificates;\n var standing = Props.standing;\n var match = React.useState(function () {\n return /* ShowCourses */0;\n });\n var view = match[0];\n var tmp;\n switch (view) {\n case /* ShowCourses */0 :\n tmp = coursesSection(courses, communities, currentSchoolAdmin);\n break;\n case /* ShowCommunities */1 :\n tmp = communitiesSection(communities);\n break;\n case /* ShowCertificates */2 :\n tmp = certificatesSection(issuedCertificates);\n break;\n \n }\n return React.createElement(\"div\", {\n className: \"bg-gray-50 h-full\"\n }, React.createElement(\"div\", {\n className: \"bg-white\"\n }, headerSection(userName, preferredName, userTitle, avatarUrl, showUserEdit, standing), navSection(view, match[1], communities, issuedCertificates)), React.createElement(\"div\", {\n className: \"pb-8\"\n }, tmp));\n}\n\nvar make = UsersDashboard__Root;\n\nexport {\n t ,\n str ,\n headerSection ,\n navButtonClasses ,\n navSection ,\n courseLink ,\n ctaButton ,\n ctaText ,\n studentLink ,\n callToAction ,\n ctaFooter ,\n communityLinks ,\n courseLinks ,\n coursesSection ,\n communitiesSection ,\n certificatesSection ,\n make ,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Psj from \"../shared/utils/Psj.bs.js\";\nimport * as React from \"react\";\nimport * as DomUtils from \"../shared/utils/DomUtils.bs.js\";\nimport * as ReactDom from \"react-dom\";\nimport * as Caml_option from \"../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as Json_decode from \"../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\nimport * as UsersDashboard__Root from \"../users/home/components/UsersDashboard__Root.bs.js\";\nimport * as UsersDashboard__Course from \"../users/home/types/UsersDashboard__Course.bs.js\";\nimport * as UsersDashboard__Standing from \"../users/home/types/UsersDashboard__Standing.bs.js\";\nimport * as UsersDashboard__Community from \"../users/home/types/UsersDashboard__Community.bs.js\";\nimport * as UsersDashboard__IssuedCertificate from \"../users/home/types/UsersDashboard__IssuedCertificate.bs.js\";\n\nfunction decodeProps(json) {\n return [\n Json_decode.field(\"currentSchoolAdmin\", Json_decode.bool, json),\n Json_decode.field(\"courses\", (function (param) {\n return Json_decode.array(UsersDashboard__Course.decode, param);\n }), json),\n Json_decode.field(\"communities\", (function (param) {\n return Json_decode.array(UsersDashboard__Community.decode, param);\n }), json),\n Json_decode.field(\"showUserEdit\", Json_decode.bool, json),\n Json_decode.field(\"userName\", Json_decode.string, json),\n Caml_option.null_to_opt(Json_decode.field(\"preferredName\", (function (param) {\n return Json_decode.nullable(Json_decode.string, param);\n }), json)),\n Json_decode.field(\"userTitle\", Json_decode.string, json),\n Json_decode.optional((function (param) {\n return Json_decode.field(\"avatarUrl\", Json_decode.string, param);\n }), json),\n Json_decode.field(\"issuedCertificates\", (function (param) {\n return Json_decode.array(UsersDashboard__IssuedCertificate.decode, param);\n }), json),\n Json_decode.optional((function (param) {\n return Json_decode.field(\"standing\", UsersDashboard__Standing.decode, param);\n }), json)\n ];\n}\n\nPsj.match(undefined, \"users#dashboard\", (function (param) {\n var match = decodeProps(DomUtils.parseJSONTag(\"users-dashboard-data\", undefined));\n var element = document.querySelector(\"#users-dashboard\");\n if (!(element == null)) {\n ReactDom.render(React.createElement(UsersDashboard__Root.make, {\n currentSchoolAdmin: match[0],\n courses: match[1],\n communities: match[2],\n showUserEdit: match[3],\n userName: match[4],\n preferredName: match[5],\n userTitle: match[6],\n avatarUrl: match[7],\n issuedCertificates: match[8],\n standing: match[9]\n }), element);\n return ;\n }\n \n }));\n\nexport {\n decodeProps ,\n}\n/* Not a pure module */\n","export default \"__VITE_ASSET__TY3xtlF2__\"","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../shared/utils/I18n.bs.js\";\nimport * as Curry from \"../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as DomUtils from \"../shared/utils/DomUtils.bs.js\";\nimport * as Js_promise from \"../../../node_modules/rescript/lib/es6/js_promise.js\";\nimport * as GraphqlQuery from \"../shared/utils/GraphqlQuery.bs.js\";\nimport PermanentDeleteSvg from \"./images/permanent-delete.svg\";\n\nvar permanentDeleteIcon = PermanentDeleteSvg;\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.UsersDeleteAccount\";\n\nfunction t(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nvar partial_arg$1 = \"shared\";\n\nfunction ts(param, param$1, param$2) {\n return I18n.t(partial_arg$1, param, param$1, param$2);\n}\n\nvar Raw = {};\n\nvar query = \"mutation DeleteAccountMutation($token: String!) {\\ndeleteAccount(token: $token) {\\nsuccess \\n}\\n\\n}\\n\";\n\nfunction parse(value) {\n var value$1 = value.deleteAccount;\n return {\n deleteAccount: {\n success: value$1.success\n }\n };\n}\n\nfunction serialize(value) {\n var value$1 = value.deleteAccount;\n var value$2 = value$1.success;\n var deleteAccount = {\n success: value$2\n };\n return {\n deleteAccount: deleteAccount\n };\n}\n\nfunction serializeVariables(inp) {\n return {\n token: inp.token\n };\n}\n\nfunction makeVariables(token, param) {\n return {\n token: token\n };\n}\n\nvar DeleteAccountQuery_inner = {\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables\n};\n\nvar include = GraphqlQuery.Extender({\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar $$fetch = include.$$fetch;\n\nvar DeleteAccountQuery_Graphql_error = include.Graphql_error;\n\nvar DeleteAccountQuery_decodeNotification = include.decodeNotification;\n\nvar DeleteAccountQuery_decodeObject = include.decodeObject;\n\nvar DeleteAccountQuery_decodeNotifications = include.decodeNotifications;\n\nvar DeleteAccountQuery_decodeErrors = include.decodeErrors;\n\nvar DeleteAccountQuery_flashNotifications = include.flashNotifications;\n\nvar DeleteAccountQuery_sendQuery = include.sendQuery;\n\nvar DeleteAccountQuery_query = include.query;\n\nvar DeleteAccountQuery_make = include.make;\n\nvar DeleteAccountQuery = {\n DeleteAccountQuery_inner: DeleteAccountQuery_inner,\n Raw: Raw,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables,\n Graphql_error: DeleteAccountQuery_Graphql_error,\n decodeNotification: DeleteAccountQuery_decodeNotification,\n decodeObject: DeleteAccountQuery_decodeObject,\n decodeNotifications: DeleteAccountQuery_decodeNotifications,\n decodeErrors: DeleteAccountQuery_decodeErrors,\n flashNotifications: DeleteAccountQuery_flashNotifications,\n sendQuery: DeleteAccountQuery_sendQuery,\n query: DeleteAccountQuery_query,\n $$fetch: $$fetch,\n make: DeleteAccountQuery_make\n};\n\nfunction deleteAccount(token, setState, $$event) {\n $$event.preventDefault();\n Curry._1(setState, (function (param) {\n return /* Deleting */1;\n }));\n Js_promise.$$catch((function (param) {\n return Promise.resolve(undefined);\n }), Js_promise.then_((function (result) {\n if (result.deleteAccount.success) {\n Curry._1(setState, (function (param) {\n return /* Deleted */2;\n }));\n setTimeout((function (param) {\n DomUtils.redirect(\"/users/sign_out\");\n }), 5000);\n }\n return Promise.resolve(undefined);\n }), Curry._3($$fetch, undefined, undefined, {\n token: token\n })));\n}\n\nfunction UsersDeleteAccount(Props) {\n var token = Props.token;\n var match = React.useState(function () {\n return /* Waiting */0;\n });\n var setState = match[1];\n var tmp;\n switch (match[0]) {\n case /* Waiting */0 :\n tmp = React.createElement(\"div\", {\n className: \"flex flex-col items-center justify-center text-center max-w-sm mx-auto\"\n }, React.createElement(\"h3\", undefined, t(undefined, undefined, \"head\")), React.createElement(\"p\", {\n className: \"mt-1\"\n }, t(undefined, undefined, \"click_button_below\")), React.createElement(\"div\", {\n className: \"flex mt-4 justify-center\"\n }, React.createElement(\"a\", {\n className: \"btn btn-default me-2\",\n href: \"/dashboard\"\n }, t(undefined, undefined, \"cancel\")), React.createElement(\"button\", {\n className: \"btn btn-danger\",\n onClick: (function (param) {\n return deleteAccount(token, setState, param);\n })\n }, t(undefined, undefined, \"delete_account\"))));\n break;\n case /* Deleting */1 :\n tmp = React.createElement(\"div\", {\n className: \"text-center max-w-sm mx-auto font-semibold text-red-600\"\n }, React.createElement(\"p\", undefined, t(undefined, undefined, \"please_wait\")), React.createElement(\"i\", {\n className: \"my-3 text-3xl fa fa-spinner fa-pulse\"\n }), React.createElement(\"p\", undefined, t(undefined, undefined, \"queuing_deletion\")));\n break;\n case /* Deleted */2 :\n tmp = React.createElement(\"div\", {\n className: \"text-center max-w-sm mx-auto font-semibold text-red-600\"\n }, React.createElement(\"p\", undefined, t(undefined, undefined, \"deletion_progresss\")), React.createElement(\"i\", {\n className: \"my-3 text-3xl fa fa-spinner fa-pulse\"\n }), React.createElement(\"p\", undefined, t(undefined, undefined, \"signed_out_notified\")));\n break;\n \n }\n return React.createElement(\"div\", {\n className: \"m-6\"\n }, React.createElement(\"div\", {\n className: \"w-64 h-64 mx-auto\"\n }, React.createElement(\"img\", {\n className: \"object-contain mx-auto\",\n src: permanentDeleteIcon\n })), tmp);\n}\n\nvar make = UsersDeleteAccount;\n\nexport {\n permanentDeleteIcon ,\n str ,\n t ,\n ts ,\n DeleteAccountQuery ,\n deleteAccount ,\n make ,\n}\n/* permanentDeleteIcon Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Psj from \"../shared/utils/Psj.bs.js\";\nimport * as React from \"react\";\nimport * as DomUtils from \"../shared/utils/DomUtils.bs.js\";\nimport * as ReactDom from \"react-dom\";\nimport * as Json_decode from \"../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\nimport * as UsersDeleteAccount from \"../users/UsersDeleteAccount.bs.js\";\n\nfunction decodeProps(json) {\n return Json_decode.field(\"token\", Json_decode.string, json);\n}\n\nPsj.match(undefined, \"users#delete_account\", (function (param) {\n var json = DomUtils.parseJSONTag(\"user-delete-account__props\", undefined);\n var token = Json_decode.field(\"token\", Json_decode.string, json);\n var root = document.querySelector(\"#react-root\");\n if (!(root == null)) {\n ReactDom.render(React.createElement(UsersDeleteAccount.make, {\n token: token\n }), root);\n return ;\n }\n \n }));\n\nexport {\n decodeProps ,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Json_decode from \"../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\nimport * as StringUtils from \"../utils/StringUtils.bs.js\";\n\nfunction id(t) {\n return t.id;\n}\n\nfunction name(t) {\n return t.name;\n}\n\nfunction decode(json) {\n return {\n id: Json_decode.field(\"id\", Json_decode.string, json),\n name: Json_decode.field(\"name\", Json_decode.string, json)\n };\n}\n\nfunction color(t) {\n return StringUtils.toColor(t.name);\n}\n\nexport {\n id ,\n name ,\n decode ,\n color ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\n\nfunction id(t) {\n return t.id;\n}\n\nfunction name(t) {\n return t.name;\n}\n\nfunction avatarUrl(t) {\n return t.avatarUrl;\n}\n\nfunction make(id, name, avatarUrl) {\n return {\n id: id,\n name: name,\n avatarUrl: avatarUrl\n };\n}\n\nfunction makeFromJs(jsObject) {\n return {\n id: jsObject.id,\n name: jsObject.name,\n avatarUrl: jsObject.avatarUrl\n };\n}\n\nexport {\n id ,\n name ,\n avatarUrl ,\n make ,\n makeFromJs ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as DateFns from \"../../shared/utils/DateFns.bs.js\";\nimport * as Js_array from \"../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as Belt_Option from \"../../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as CommunitiesShow__TopicParticipant from \"./CommunitiesShow__TopicParticipant.bs.js\";\n\nfunction id(t) {\n return t.id;\n}\n\nfunction title(t) {\n return t.title;\n}\n\nfunction solved(t) {\n return t.solved;\n}\n\nfunction views(t) {\n return t.views;\n}\n\nfunction lastActivityAt(t) {\n return t.lastActivityAt;\n}\n\nfunction liveRepliesCount(t) {\n return t.liveRepliesCount;\n}\n\nfunction likesCount(t) {\n return t.likesCount;\n}\n\nfunction topicCategoryId(t) {\n return t.topicCategoryId;\n}\n\nfunction creatorName(t) {\n return t.creatorName;\n}\n\nfunction createdAt(t) {\n return t.createdAt;\n}\n\nfunction participants(t) {\n return t.participants;\n}\n\nfunction participantsCount(t) {\n return t.participantsCount;\n}\n\nfunction make(id, title, lastActivityAt, liveRepliesCount, likesCount, views, topicCategoryId, creatorName, createdAt, solved, participantsCount, participants) {\n return {\n id: id,\n title: title,\n lastActivityAt: lastActivityAt,\n liveRepliesCount: liveRepliesCount,\n likesCount: likesCount,\n views: views,\n topicCategoryId: topicCategoryId,\n creatorName: creatorName,\n createdAt: createdAt,\n solved: solved,\n participantsCount: participantsCount,\n participants: participants\n };\n}\n\nfunction makeFromJS(topicData) {\n return make(topicData.id, topicData.title, Belt_Option.map(topicData.lastActivityAt, DateFns.decodeISO), topicData.liveRepliesCount, topicData.likesCount, topicData.views, topicData.topicCategoryId, Belt_Option.map(topicData.creator, (function (creator) {\n return creator.name;\n })), DateFns.decodeISO(topicData.createdAt), topicData.solved, topicData.participantsCount, Js_array.map(CommunitiesShow__TopicParticipant.makeFromJs, topicData.participants));\n}\n\nexport {\n id ,\n title ,\n solved ,\n views ,\n lastActivityAt ,\n liveRepliesCount ,\n likesCount ,\n topicCategoryId ,\n creatorName ,\n createdAt ,\n participants ,\n participantsCount ,\n make ,\n makeFromJS ,\n}\n/* DateFns Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Json_decode from \"../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\n\nfunction id(t) {\n return t.id;\n}\n\nfunction title(t) {\n return t.title;\n}\n\nfunction decode(json) {\n return {\n id: Json_decode.field(\"id\", Json_decode.string, json),\n title: Json_decode.field(\"title\", Json_decode.string, json)\n };\n}\n\nexport {\n id ,\n title ,\n decode ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\n\nfunction toArray(t) {\n if (typeof t === \"number\") {\n return [];\n } else {\n return t._0;\n }\n}\n\nexport {\n toArray ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as $$Array from \"../../../../node_modules/rescript/lib/es6/array.js\";\nimport * as React from \"react\";\nimport * as Avatar from \"../../shared/Avatar.bs.js\";\nimport * as Tooltip from \"../../shared/components/Tooltip.bs.js\";\nimport * as CommunitiesShow__TopicParticipant from \"../types/CommunitiesShow__TopicParticipant.bs.js\";\n\nfunction str(prim) {\n return prim;\n}\n\nfunction avatarClasses(size) {\n var mdSize = size[1];\n var defaultSize = size[0];\n return \"w-\" + (defaultSize + (\" h-\" + (defaultSize + (\" md:w-\" + (mdSize + (\" md:h-\" + (mdSize + \" text-xs border border-gray-300 rounded-full overflow-hidden shrink-0 object-cover\")))))));\n}\n\nfunction avatar(sizeOpt, avatarUrl, name) {\n var size = sizeOpt !== undefined ? sizeOpt : [\n \"8\",\n \"10\"\n ];\n if (avatarUrl !== undefined) {\n return React.createElement(\"img\", {\n className: avatarClasses(size),\n src: avatarUrl\n });\n } else {\n return React.createElement(Avatar.make, {\n name: name,\n className: avatarClasses(size)\n });\n }\n}\n\nfunction CommunitiesShow__Participants(Props) {\n var tooltipPositionOpt = Props.tooltipPosition;\n var defaultAvatarSizeOpt = Props.defaultAvatarSize;\n var mdAvatarSizeOpt = Props.mdAvatarSize;\n var title = Props.title;\n var className = Props.className;\n var participants = Props.participants;\n var participantsCount = Props.participantsCount;\n var tooltipPosition = tooltipPositionOpt !== undefined ? tooltipPositionOpt : \"Top\";\n var defaultAvatarSize = defaultAvatarSizeOpt !== undefined ? defaultAvatarSizeOpt : \"6\";\n var mdAvatarSize = mdAvatarSizeOpt !== undefined ? mdAvatarSizeOpt : \"8\";\n var otherParticipantsCount = participantsCount - participants.length | 0;\n return React.createElement(\"div\", {\n className: className\n }, React.createElement(\"div\", {\n className: \"text-xs\"\n }, title), React.createElement(\"div\", {\n className: \"inline-flex\"\n }, $$Array.map((function (participant) {\n return React.createElement(Tooltip.make, {\n tip: CommunitiesShow__TopicParticipant.name(participant),\n className: \"-me-1\",\n position: tooltipPosition,\n children: avatar([\n defaultAvatarSize,\n mdAvatarSize\n ], CommunitiesShow__TopicParticipant.avatarUrl(participant), CommunitiesShow__TopicParticipant.name(participant)),\n key: CommunitiesShow__TopicParticipant.id(participant)\n });\n }), participants), otherParticipantsCount > 0 ? React.createElement(Avatar.make, {\n colors: [\n \"#EEE\",\n \"#000\"\n ],\n name: \"+ \" + String(otherParticipantsCount),\n className: avatarClasses([\n defaultAvatarSize,\n mdAvatarSize\n ])\n }) : null));\n}\n\nvar make = CommunitiesShow__Participants;\n\nexport {\n str ,\n avatarClasses ,\n avatar ,\n make ,\n}\n/* react Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../shared/utils/I18n.bs.js\";\nimport * as $$Array from \"../../../node_modules/rescript/lib/es6/array.js\";\nimport * as Curry from \"../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as FaIcon from \"../shared/components/FaIcon.bs.js\";\nimport * as PfIcon from \"../packages/pf-icon/src/PfIcon.bs.js\";\nimport * as Sorter from \"../shared/components/Sorter.bs.js\";\nimport * as $$String from \"../../../node_modules/rescript/lib/es6/string.js\";\nimport * as DateFns from \"../shared/utils/DateFns.bs.js\";\nimport * as Js_dict from \"../../../node_modules/rescript/lib/es6/js_dict.js\";\nimport * as Dropdown from \"../shared/components/Dropdown.bs.js\";\nimport * as Js_array from \"../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as ArrayUtils from \"../shared/utils/ArrayUtils.bs.js\";\nimport * as Js_promise from \"../../../node_modules/rescript/lib/es6/js_promise.js\";\nimport * as ReactUtils from \"../shared/utils/ReactUtils.bs.js\";\nimport * as Belt_Option from \"../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as Caml_option from \"../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as OptionUtils from \"../shared/utils/OptionUtils.bs.js\";\nimport * as StringUtils from \"../shared/utils/StringUtils.bs.js\";\nimport * as GraphqlQuery from \"../shared/utils/GraphqlQuery.bs.js\";\nimport * as TopicCategory from \"../shared/types/TopicCategory.bs.js\";\nimport * as LoadingSpinner from \"../shared/components/LoadingSpinner.bs.js\";\nimport * as SkeletonLoading from \"../shared/components/SkeletonLoading.bs.js\";\nimport * as MultiselectDropdown from \"../packages/multiselect-dropdown/src/components/MultiselectDropdown.bs.js\";\nimport * as RescriptReactRouter from \"../../../node_modules/@rescript/react/src/RescriptReactRouter.bs.js\";\nimport * as CommunitiesShow__Topic from \"./types/CommunitiesShow__Topic.bs.js\";\nimport * as CommunitiesShow__Target from \"./types/CommunitiesShow__Target.bs.js\";\nimport * as CommunitiesShow__Topics from \"./types/CommunitiesShow__Topics.bs.js\";\nimport * as CommunitiesShow__Participants from \"./components/CommunitiesShow__Participants.bs.js\";\n\nimport \"./CommunitiesShow__Root.css\"\n;\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.CommunitiesShow__Root\";\n\nfunction t(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nfunction getSearch(search) {\n return search._0;\n}\n\nfunction searchBy(search) {\n if (search.TAG === /* SearchContent */0) {\n return \"content\";\n } else {\n return \"title\";\n }\n}\n\nfunction reducer(state, action) {\n if (typeof action === \"number\") {\n if (action === /* BeginLoadingMore */0) {\n return {\n loading: /* LoadingMore */2,\n topics: state.topics,\n filterString: state.filterString,\n totalTopicsCount: state.totalTopicsCount\n };\n } else {\n return {\n loading: /* Reloading */1,\n topics: state.topics,\n filterString: state.filterString,\n totalTopicsCount: state.totalTopicsCount\n };\n }\n }\n if (action.TAG === /* UpdateFilterString */0) {\n return {\n loading: state.loading,\n topics: state.topics,\n filterString: action._0,\n totalTopicsCount: state.totalTopicsCount\n };\n }\n var newTopics = action._2;\n var endCursor = action._0;\n var match = state.loading;\n var updatedTopics = match >= 2 ? $$Array.append(CommunitiesShow__Topics.toArray(state.topics), newTopics) : newTopics;\n return {\n loading: /* NotLoading */0,\n topics: action._1 && endCursor !== undefined ? ({\n TAG: /* PartiallyLoaded */0,\n _0: updatedTopics,\n _1: endCursor\n }) : ({\n TAG: /* FullyLoaded */1,\n _0: updatedTopics\n }),\n filterString: state.filterString,\n totalTopicsCount: action._3\n };\n}\n\nvar Raw = {};\n\nvar query = \"query TopicsFromCommunitiesShowRootQuery($communityId: ID!, $topicCategoryId: ID, $targetId: ID, $resolution: TopicResolutionFilter!, $searchFilter: CommunitySearchFilter, $after: String, $sortCriterion: TopicSortCriterion!, $sortDirection: SortDirection!) {\\ntopics(communityId: $communityId, topicCategoryId: $topicCategoryId, targetId: $targetId, search: $searchFilter, resolution: $resolution, sortDirection: $sortDirection, sortCriterion: $sortCriterion, first: 10, after: $after) {\\nnodes {\\nid \\nlastActivityAt \\ncreatedAt \\ncreator {\\nname \\n}\\n\\nlikesCount \\nliveRepliesCount \\nviews \\ntitle \\nsolved \\ntopicCategoryId \\nparticipantsCount \\nparticipants {\\nid \\nname \\navatarUrl \\n}\\n\\n}\\n\\npageInfo {\\nendCursor \\nhasNextPage \\n}\\n\\ntotalCount \\n}\\n\\n}\\n\";\n\nfunction parse(value) {\n var value$1 = value.topics;\n var value$2 = value$1.nodes;\n var value$3 = value$1.pageInfo;\n var value$4 = value$3.endCursor;\n return {\n topics: {\n nodes: Js_array.map((function (value) {\n var value$1 = value.lastActivityAt;\n var value$2 = value.creator;\n var value$3 = value.topicCategoryId;\n var value$4 = value.participants;\n return {\n id: value.id,\n lastActivityAt: !(value$1 == null) ? Caml_option.some(value$1) : undefined,\n createdAt: value.createdAt,\n creator: !(value$2 == null) ? ({\n name: value$2.name\n }) : undefined,\n likesCount: value.likesCount,\n liveRepliesCount: value.liveRepliesCount,\n views: value.views,\n title: value.title,\n solved: value.solved,\n topicCategoryId: !(value$3 == null) ? value$3 : undefined,\n participantsCount: value.participantsCount,\n participants: Js_array.map((function (value) {\n var value$1 = value.avatarUrl;\n return {\n id: value.id,\n name: value.name,\n avatarUrl: !(value$1 == null) ? value$1 : undefined\n };\n }), value$4)\n };\n }), value$2),\n pageInfo: {\n endCursor: !(value$4 == null) ? value$4 : undefined,\n hasNextPage: value$3.hasNextPage\n },\n totalCount: value$1.totalCount\n }\n };\n}\n\nfunction serialize(value) {\n var value$1 = value.topics;\n var value$2 = value$1.totalCount;\n var value$3 = value$1.pageInfo;\n var value$4 = value$3.hasNextPage;\n var value$5 = value$3.endCursor;\n var endCursor = value$5 !== undefined ? value$5 : null;\n var pageInfo = {\n endCursor: endCursor,\n hasNextPage: value$4\n };\n var value$6 = value$1.nodes;\n var nodes = Js_array.map((function (value) {\n var value$1 = value.participants;\n var participants = Js_array.map((function (value) {\n var value$1 = value.avatarUrl;\n var avatarUrl = value$1 !== undefined ? value$1 : null;\n var value$2 = value.name;\n var value$3 = value.id;\n return {\n id: value$3,\n name: value$2,\n avatarUrl: avatarUrl\n };\n }), value$1);\n var value$2 = value.participantsCount;\n var value$3 = value.topicCategoryId;\n var topicCategoryId = value$3 !== undefined ? value$3 : null;\n var value$4 = value.solved;\n var value$5 = value.title;\n var value$6 = value.views;\n var value$7 = value.liveRepliesCount;\n var value$8 = value.likesCount;\n var value$9 = value.creator;\n var creator;\n if (value$9 !== undefined) {\n var value$10 = value$9.name;\n creator = {\n name: value$10\n };\n } else {\n creator = null;\n }\n var value$11 = value.createdAt;\n var value$12 = value.lastActivityAt;\n var lastActivityAt = value$12 !== undefined ? Caml_option.valFromOption(value$12) : null;\n var value$13 = value.id;\n return {\n id: value$13,\n lastActivityAt: lastActivityAt,\n createdAt: value$11,\n creator: creator,\n likesCount: value$8,\n liveRepliesCount: value$7,\n views: value$6,\n title: value$5,\n solved: value$4,\n topicCategoryId: topicCategoryId,\n participantsCount: value$2,\n participants: participants\n };\n }), value$6);\n var topics = {\n nodes: nodes,\n pageInfo: pageInfo,\n totalCount: value$2\n };\n return {\n topics: topics\n };\n}\n\nfunction serializeInputObjectCommunitySearchFilter(inp) {\n var a = inp.searchBy;\n return {\n search: inp.search,\n searchBy: a === \"content\" ? \"content\" : \"title\"\n };\n}\n\nfunction serializeVariables(inp) {\n var a = inp.topicCategoryId;\n var a$1 = inp.targetId;\n var a$2 = inp.resolution;\n var a$3 = inp.searchFilter;\n var a$4 = inp.after;\n var a$5 = inp.sortCriterion;\n var a$6 = inp.sortDirection;\n return {\n communityId: inp.communityId,\n topicCategoryId: a !== undefined ? a : undefined,\n targetId: a$1 !== undefined ? a$1 : undefined,\n resolution: a$2 === \"Unsolved\" ? \"Unsolved\" : (\n a$2 === \"Unselected\" ? \"Unselected\" : \"Solved\"\n ),\n searchFilter: a$3 !== undefined ? serializeInputObjectCommunitySearchFilter(a$3) : undefined,\n after: a$4 !== undefined ? a$4 : undefined,\n sortCriterion: a$5 === \"CreatedAt\" ? \"CreatedAt\" : (\n a$5 === \"LastActivityAt\" ? \"LastActivityAt\" : \"Views\"\n ),\n sortDirection: a$6 === \"Descending\" ? \"Descending\" : \"Ascending\"\n };\n}\n\nfunction makeVariables(communityId, topicCategoryId, targetId, resolution, searchFilter, after, sortCriterion, sortDirection, param) {\n return {\n communityId: communityId,\n topicCategoryId: topicCategoryId,\n targetId: targetId,\n resolution: resolution,\n searchFilter: searchFilter,\n after: after,\n sortCriterion: sortCriterion,\n sortDirection: sortDirection\n };\n}\n\nfunction makeInputObjectCommunitySearchFilter(search, searchBy, param) {\n return {\n search: search,\n searchBy: searchBy\n };\n}\n\nvar TopicsQuery_inner = {\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n serializeInputObjectCommunitySearchFilter: serializeInputObjectCommunitySearchFilter,\n makeVariables: makeVariables,\n makeInputObjectCommunitySearchFilter: makeInputObjectCommunitySearchFilter\n};\n\nvar include = GraphqlQuery.Extender({\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar make = include.make;\n\nvar TopicsQuery_Graphql_error = include.Graphql_error;\n\nvar TopicsQuery_decodeNotification = include.decodeNotification;\n\nvar TopicsQuery_decodeObject = include.decodeObject;\n\nvar TopicsQuery_decodeNotifications = include.decodeNotifications;\n\nvar TopicsQuery_decodeErrors = include.decodeErrors;\n\nvar TopicsQuery_flashNotifications = include.flashNotifications;\n\nvar TopicsQuery_sendQuery = include.sendQuery;\n\nvar TopicsQuery_query = include.query;\n\nvar TopicsQuery_fetch = include.$$fetch;\n\nvar TopicsQuery = {\n TopicsQuery_inner: TopicsQuery_inner,\n Raw: Raw,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n serializeInputObjectCommunitySearchFilter: serializeInputObjectCommunitySearchFilter,\n makeVariables: makeVariables,\n makeInputObjectCommunitySearchFilter: makeInputObjectCommunitySearchFilter,\n Graphql_error: TopicsQuery_Graphql_error,\n decodeNotification: TopicsQuery_decodeNotification,\n decodeObject: TopicsQuery_decodeObject,\n decodeNotifications: TopicsQuery_decodeNotifications,\n decodeErrors: TopicsQuery_decodeErrors,\n flashNotifications: TopicsQuery_flashNotifications,\n sendQuery: TopicsQuery_sendQuery,\n query: TopicsQuery_query,\n $$fetch: TopicsQuery_fetch,\n make: make\n};\n\nfunction getTopics(send, communityId, cursor, filter) {\n var topicCategoryId = OptionUtils.map(TopicCategory.id, filter.topicCategory);\n var targetId = OptionUtils.map(CommunitiesShow__Target.id, filter.target);\n var searchFilter = Belt_Option.map(filter.search, (function (search) {\n if (search.TAG === /* SearchContent */0) {\n return {\n search: search._0,\n searchBy: \"content\"\n };\n } else {\n return {\n search: search._0,\n searchBy: \"title\"\n };\n }\n }));\n var variables = makeVariables(communityId, topicCategoryId, targetId, filter.solution, searchFilter, cursor, filter.sortCriterion, filter.sortDirection, undefined);\n Js_promise.then_((function (response) {\n var newTopics = Js_array.map(CommunitiesShow__Topic.makeFromJS, response.topics.nodes);\n Curry._1(send, {\n TAG: /* LoadTopics */1,\n _0: response.topics.pageInfo.endCursor,\n _1: response.topics.pageInfo.hasNextPage,\n _2: newTopics,\n _3: response.topics.totalCount\n });\n return Promise.resolve(undefined);\n }), Curry._3(make, undefined, undefined, variables));\n}\n\nfunction reloadTopics(communityId, filter, send) {\n Curry._1(send, /* BeginReloading */1);\n getTopics(send, communityId, undefined, filter);\n}\n\nfunction computeInitialState(param) {\n return {\n loading: /* NotLoading */0,\n topics: /* Unloaded */0,\n filterString: \"\",\n totalTopicsCount: 0\n };\n}\n\nfunction filterToQueryString(filter) {\n var match = filter.sortCriterion;\n var sortCriterion = match === \"CreatedAt\" ? \"CreatedAt\" : (\n match === \"LastActivityAt\" ? \"LastActivityAt\" : \"Views\"\n );\n var match$1 = filter.sortDirection;\n var sortDirection = match$1 === \"Descending\" ? \"Descending\" : \"Ascending\";\n var filterDict = Js_dict.fromArray([\n [\n \"sortCriterion\",\n sortCriterion\n ],\n [\n \"sortDirection\",\n sortDirection\n ]\n ]);\n Belt_Option.forEach(filter.search, (function (search) {\n filterDict[\"search\"] = search._0;\n filterDict[\"searchBy\"] = searchBy(search);\n }));\n Belt_Option.forEach(filter.topicCategory, (function (tc) {\n filterDict[\"topicCategory\"] = TopicCategory.id(tc);\n }));\n var match$2 = filter.solution;\n if (match$2 === \"Unsolved\") {\n filterDict[\"solution\"] = \"Unsolved\";\n } else if (match$2 === \"Unselected\") {\n \n } else {\n filterDict[\"solution\"] = \"Solved\";\n }\n return new URLSearchParams(filterDict).toString();\n}\n\nfunction updateParams(filter) {\n RescriptReactRouter.push(\"?\" + filterToQueryString(filter));\n}\n\nfunction topicsList(topicCategories, topics) {\n if (ArrayUtils.isEmpty(topics)) {\n return React.createElement(\"div\", {\n className: \"flex flex-col mx-auto bg-white rounded-md border p-6 justify-center items-center\"\n }, React.createElement(FaIcon.make, {\n classes: \"fas fa-comments text-5xl text-gray-400\"\n }), React.createElement(\"h4\", {\n className: \"mt-3 text-base md:text-lg text-center font-semibold\"\n }, t(undefined, undefined, \"empty_topics\")));\n } else {\n return Js_array.map((function (topic) {\n var name = CommunitiesShow__Topic.creatorName(topic);\n var date = CommunitiesShow__Topic.lastActivityAt(topic);\n var id = CommunitiesShow__Topic.topicCategoryId(topic);\n var tmp;\n if (id !== undefined) {\n var topicCategory = ArrayUtils.unsafeFind((function (c) {\n return TopicCategory.id(c) === id;\n }), t(undefined, undefined, \"unable_find_id\") + id, topicCategories);\n var match = StringUtils.toColor(TopicCategory.name(topicCategory));\n var style = {\n backgroundColor: match[0]\n };\n tmp = React.createElement(\"span\", {\n className: \"flex items-center text-xs font-semibold py-1 me-2\"\n }, React.createElement(\"div\", {\n className: \"w-3 h-3 rounded\",\n style: style\n }), React.createElement(\"span\", {\n className: \"ms-1\"\n }, TopicCategory.name(topicCategory)));\n } else {\n tmp = null;\n }\n return React.createElement(\"a\", {\n key: CommunitiesShow__Topic.id(topic),\n \"aria-label\": \"Topic \" + CommunitiesShow__Topic.id(topic),\n className: \"block\",\n href: \"/topics/\" + CommunitiesShow__Topic.id(topic)\n }, React.createElement(\"div\", {\n className: \"flex items-center border border-transparent hover:bg-gray-50 hover:text-primary-500 hover:border-primary-400\"\n }, React.createElement(\"div\", {\n className: \"flex-1\"\n }, React.createElement(\"div\", {\n className: \"cursor-pointer no-underline flex flex-col p-4 md:px-6 md:py-5\"\n }, React.createElement(\"span\", {\n className: \"block\"\n }, React.createElement(\"h4\", {\n className: \"community-topic__title text-base font-semibold inline-block break-words leading-snug\"\n }, CommunitiesShow__Topic.title(topic)), React.createElement(\"span\", {\n className: \"block text-xs text-gray-800 pt-1\"\n }, React.createElement(\"span\", undefined, t(undefined, undefined, \"topic_posted_by_text\")), React.createElement(\"span\", {\n className: \"font-semibold me-2\"\n }, name !== undefined ? \" \" + (name + \" \") : \"Unknown \"), React.createElement(\"span\", {\n className: \"hidden md:inline-block md:me-2\"\n }, \"on \" + DateFns.formatPreset(CommunitiesShow__Topic.createdAt(topic), undefined, true, undefined, undefined)), React.createElement(\"span\", {\n className: \"inline-block md:mt-0 md:px-2 md:border-s border-gray-300\"\n }, date !== undefined ? React.createElement(\"span\", undefined, React.createElement(\"span\", {\n className: \"hidden md:inline-block\"\n }, t(undefined, undefined, \"topic_last_updated_text\")), \" \" + DateFns.formatDistanceToNowStrict(Caml_option.valFromOption(date), true, undefined, undefined, undefined)) : null))), React.createElement(\"span\", {\n className: \"flex flex-row flex-wrap mt-2 items-center\"\n }, React.createElement(\"span\", {\n \"aria-label\": \"Likes\",\n className: \"flex text-center items-center me-2 py-1 px-2 rounded bg-gray-50\"\n }, React.createElement(\"i\", {\n className: \"far fa-thumbs-up text-sm text-gray-600 me-1\"\n }), React.createElement(\"p\", {\n className: \"text-xs font-semibold\"\n }, React.createElement(\"span\", {\n className: \"ms-1 hidden md:inline\"\n }, t(undefined, CommunitiesShow__Topic.likesCount(topic), \"topic_stats_likes\")))), React.createElement(\"span\", {\n \"aria-label\": \"Replies\",\n className: \"flex justify-between text-center items-center me-2 py-1 px-2 rounded bg-gray-50\"\n }, React.createElement(\"i\", {\n className: \"far fa-comment-dots text-sm text-gray-600 me-1\"\n }), React.createElement(\"p\", {\n className: \"text-xs font-semibold\"\n }, React.createElement(\"span\", {\n className: \"ms-1 hidden md:inline\"\n }, t(undefined, CommunitiesShow__Topic.liveRepliesCount(topic), \"topic_stats_replies\")))), React.createElement(\"span\", {\n \"aria-label\": \"Views\",\n className: \"flex justify-between text-center items-center me-2 py-1 px-2 rounded bg-gray-50\"\n }, React.createElement(\"i\", {\n className: \"far fa-eye text-sm text-gray-600 me-1\"\n }), React.createElement(\"p\", {\n className: \"text-xs font-semibold\"\n }, React.createElement(\"span\", {\n className: \"ms-1 hidden md:inline\"\n }, t(undefined, CommunitiesShow__Topic.views(topic), \"topic_stats_views\")))), tmp, ReactUtils.nullUnless(React.createElement(\"span\", {\n \"aria-label\": \"Solved status icon\",\n className: \"flex items-center justify-center w-5 h-5 bg-green-200 text-green-800 rounded-full\"\n }, React.createElement(PfIcon.make, {\n className: \"if i-check-solid text-xs\"\n })), CommunitiesShow__Topic.solved(topic))))), React.createElement(\"div\", {\n className: \"md:w-1/5\"\n }, React.createElement(CommunitiesShow__Participants.make, {\n title: null,\n className: \"flex shrink-0 items-center justify-end pe-4 md:pe-6\",\n participants: CommunitiesShow__Topic.participants(topic),\n participantsCount: CommunitiesShow__Topic.participantsCount(topic)\n }))));\n }), topics);\n }\n}\n\nfunction topicsLoadedData(totalTopicsCount, loadedTopicsCount) {\n return React.createElement(\"div\", {\n className: \"inline-block mt-2 mx-auto bg-gray-50 text-gray-800 text-xs p-2 text-center rounded font-semibold\"\n }, totalTopicsCount === loadedTopicsCount ? t([[\n \"total_topics\",\n String(totalTopicsCount)\n ]], undefined, \"topics_fully_loaded_text\") : t([\n [\n \"total_topics\",\n String(totalTopicsCount)\n ],\n [\n \"loaded_topics_count\",\n String(loadedTopicsCount)\n ]\n ], undefined, \"topics_partially_loaded_text\"));\n}\n\nfunction label(t) {\n switch (t.TAG | 0) {\n case /* TopicCategory */0 :\n return \"Category\";\n case /* Solution */1 :\n return \"Solution\";\n case /* Search */2 :\n if (t._0.TAG === /* SearchContent */0) {\n return \"Search by content\";\n } else {\n return \"Search by title\";\n }\n \n }\n}\n\nfunction value(t) {\n switch (t.TAG | 0) {\n case /* TopicCategory */0 :\n return TopicCategory.name(t._0);\n case /* Solution */1 :\n if (t._0) {\n return \"Solved\";\n } else {\n return \"Unsolved\";\n }\n case /* Search */2 :\n return t._0._0;\n \n }\n}\n\nfunction searchString(t) {\n switch (t.TAG | 0) {\n case /* TopicCategory */0 :\n return \"category \" + TopicCategory.name(t._0);\n case /* Solution */1 :\n return \"solution solved unsolved\";\n case /* Search */2 :\n return t._0._0;\n \n }\n}\n\nfunction color(t) {\n switch (t.TAG | 0) {\n case /* TopicCategory */0 :\n return \"orange\";\n case /* Solution */1 :\n return \"green\";\n case /* Search */2 :\n return \"gray\";\n \n }\n}\n\nfunction topicCategory(topicCategory$1) {\n return {\n TAG: /* TopicCategory */0,\n _0: topicCategory$1\n };\n}\n\nfunction search(search$1) {\n return {\n TAG: /* Search */2,\n _0: search$1\n };\n}\n\nfunction solution(on) {\n return {\n TAG: /* Solution */1,\n _0: on\n };\n}\n\nvar Selectable = {\n label: label,\n value: value,\n searchString: searchString,\n color: color,\n topicCategory: topicCategory,\n search: search,\n solution: solution\n};\n\nvar Multiselect = MultiselectDropdown.Make(Selectable);\n\nfunction unselected(topicCategories, filter, state) {\n var unselectedCategories = $$Array.map(topicCategory, Js_array.filter((function (category) {\n return OptionUtils.mapWithDefault((function (selectedCategory) {\n return TopicCategory.id(category) !== TopicCategory.id(selectedCategory);\n }), true, filter.topicCategory);\n }), topicCategories));\n var trimmedFilterString = $$String.trim(state.filterString);\n var search = trimmedFilterString === \"\" ? [] : [\n {\n TAG: /* Search */2,\n _0: {\n TAG: /* SearchContent */0,\n _0: trimmedFilterString\n }\n },\n {\n TAG: /* Search */2,\n _0: {\n TAG: /* SearchTitle */1,\n _0: trimmedFilterString\n }\n }\n ];\n var match = filter.solution;\n var hasSolution = match === \"Unsolved\" ? [{\n TAG: /* Solution */1,\n _0: true\n }] : (\n match === \"Unselected\" ? [\n {\n TAG: /* Solution */1,\n _0: true\n },\n {\n TAG: /* Solution */1,\n _0: false\n }\n ] : [{\n TAG: /* Solution */1,\n _0: false\n }]\n );\n return Js_array.concat(hasSolution, Js_array.concat(search, unselectedCategories));\n}\n\nfunction selected(filter) {\n var selectedCategory = OptionUtils.mapWithDefault((function (selectedCategory) {\n return [{\n TAG: /* TopicCategory */0,\n _0: selectedCategory\n }];\n }), [], filter.topicCategory);\n var selectedSearchString = OptionUtils.mapWithDefault((function (search) {\n return [{\n TAG: /* Search */2,\n _0: search\n }];\n }), [], filter.search);\n var match = filter.solution;\n var selectedSolutionFilter = match === \"Unsolved\" ? [{\n TAG: /* Solution */1,\n _0: false\n }] : (\n match === \"Unselected\" ? [] : [{\n TAG: /* Solution */1,\n _0: true\n }]\n );\n return Js_array.concat(selectedSolutionFilter, Js_array.concat(selectedSearchString, selectedCategory));\n}\n\nfunction onSelectFilter(filter, send, selectable) {\n switch (selectable.TAG | 0) {\n case /* TopicCategory */0 :\n updateParams({\n topicCategory: selectable._0,\n solution: filter.solution,\n search: filter.search,\n target: filter.target,\n sortCriterion: filter.sortCriterion,\n sortDirection: filter.sortDirection\n });\n break;\n case /* Solution */1 :\n var solution = selectable._0 ? \"Solved\" : \"Unsolved\";\n updateParams({\n topicCategory: filter.topicCategory,\n solution: solution,\n search: filter.search,\n target: filter.target,\n sortCriterion: filter.sortCriterion,\n sortDirection: filter.sortDirection\n });\n break;\n case /* Search */2 :\n updateParams({\n topicCategory: filter.topicCategory,\n solution: filter.solution,\n search: selectable._0,\n target: filter.target,\n sortCriterion: filter.sortCriterion,\n sortDirection: filter.sortDirection\n });\n break;\n \n }\n return Curry._1(send, {\n TAG: /* UpdateFilterString */0,\n _0: \"\"\n });\n}\n\nfunction onDeselectFilter(filter, selectable) {\n switch (selectable.TAG | 0) {\n case /* TopicCategory */0 :\n return updateParams({\n topicCategory: undefined,\n solution: filter.solution,\n search: filter.search,\n target: filter.target,\n sortCriterion: filter.sortCriterion,\n sortDirection: filter.sortDirection\n });\n case /* Solution */1 :\n return updateParams({\n topicCategory: filter.topicCategory,\n solution: \"Unselected\",\n search: filter.search,\n target: filter.target,\n sortCriterion: filter.sortCriterion,\n sortDirection: filter.sortDirection\n });\n case /* Search */2 :\n return updateParams({\n topicCategory: filter.topicCategory,\n solution: filter.solution,\n search: undefined,\n target: filter.target,\n sortCriterion: filter.sortCriterion,\n sortDirection: filter.sortDirection\n });\n \n }\n}\n\nfunction filterPlaceholder(filter, topicCategories) {\n var match = filter.topicCategory;\n var match$1 = filter.search;\n if (match !== undefined || match$1 !== undefined) {\n return \"\";\n } else if (ArrayUtils.isEmpty(topicCategories)) {\n return t(undefined, undefined, \"filter_input_placeholder_default\");\n } else {\n return t(undefined, undefined, \"filter_input_placeholder_categories\");\n }\n}\n\nfunction categoryDropdownSelected(topicCategory) {\n var tmp;\n if (topicCategory !== undefined) {\n var match = TopicCategory.color(topicCategory);\n var style = {\n backgroundColor: match[0]\n };\n tmp = React.createElement(\"div\", {\n className: \"inline-flex items-center\"\n }, React.createElement(\"div\", {\n className: \"h-3 w-3 border\",\n style: style\n }), React.createElement(\"span\", {\n className: \"ms-2\"\n }, TopicCategory.name(topicCategory)));\n } else {\n tmp = t(undefined, undefined, \"all_categories_button\");\n }\n return React.createElement(\"div\", {\n \"aria-label\": \"Selected category filter\",\n className: \"text-sm bg-white border border-gray-300 rounded py-1 md:py-2 px-3 focus:outline-none focus:bg-white focus:border-primary-300 cursor-pointer\"\n }, tmp, React.createElement(FaIcon.make, {\n classes: \"ms-4 fas fa-caret-down\"\n }));\n}\n\nfunction categoryDropdownContents(availableTopicCategories, filter) {\n var selectableTopicCategories = Belt_Option.mapWithDefault(filter.topicCategory, availableTopicCategories, (function (topicCategory) {\n return Js_array.filter((function (availableTopicCategory) {\n return TopicCategory.id(availableTopicCategory) !== TopicCategory.id(topicCategory);\n }), availableTopicCategories);\n }));\n return Js_array.map((function (topicCategory) {\n var match = TopicCategory.color(topicCategory);\n var style = {\n backgroundColor: match[0]\n };\n var categoryName = TopicCategory.name(topicCategory);\n return React.createElement(\"div\", {\n \"aria-label\": \"Select category \" + categoryName,\n className: \"ps-3 pe-4 py-2 font-normal flex items-center\",\n onClick: (function (param) {\n updateParams({\n topicCategory: topicCategory,\n solution: filter.solution,\n search: filter.search,\n target: filter.target,\n sortCriterion: filter.sortCriterion,\n sortDirection: filter.sortDirection\n });\n })\n }, React.createElement(\"div\", {\n className: \"w-3 h-3 rounded\",\n style: style\n }), React.createElement(\"span\", {\n className: \"ms-1\"\n }, categoryName));\n }), selectableTopicCategories);\n}\n\nfunction criterion(c) {\n if (c === \"CreatedAt\") {\n return t(undefined, undefined, \"sort_criterion_posted_at\");\n } else if (c === \"LastActivityAt\") {\n return t(undefined, undefined, \"sort_criterion_last_activity\");\n } else {\n return t(undefined, undefined, \"sort_criterion_views\");\n }\n}\n\nfunction criterionType(_t) {\n return \"Number\";\n}\n\nvar Sortable = {\n criterion: criterion,\n criterionType: criterionType\n};\n\nvar TopicsSorter = Sorter.Make(Sortable);\n\nfunction topicsSorter(filter) {\n return React.createElement(\"div\", {\n \"aria-label\": \"Change topics sorting\",\n className: \"shrink-0\"\n }, React.createElement(\"label\", {\n className: \"block text-tiny font-semibold uppercase pb-1\"\n }, t(undefined, undefined, \"sort_criterion_input_label\")), React.createElement(TopicsSorter.make, {\n criteria: [\n \"CreatedAt\",\n \"LastActivityAt\",\n \"Views\"\n ],\n selectedCriterion: filter.sortCriterion,\n direction: filter.sortDirection,\n onDirectionChange: (function (sortDirection) {\n updateParams({\n topicCategory: filter.topicCategory,\n solution: filter.solution,\n search: filter.search,\n target: filter.target,\n sortCriterion: filter.sortCriterion,\n sortDirection: sortDirection\n });\n }),\n onCriterionChange: (function (sortCriterion) {\n updateParams({\n topicCategory: filter.topicCategory,\n solution: filter.solution,\n search: filter.search,\n target: filter.target,\n sortCriterion: sortCriterion,\n sortDirection: filter.sortDirection\n });\n })\n }));\n}\n\nfunction filterFromQueryParams(search, target, topicCategories) {\n var params = new URLSearchParams(search);\n var criterion = params.get(\"solution\");\n var criterion$1 = params.get(\"sortCriterion\");\n var direction = params.get(\"sortDirection\");\n return {\n topicCategory: Belt_Option.flatMap(Caml_option.nullable_to_opt(params.get(\"topicCategory\")), (function (cat) {\n return Js_array.find((function (c) {\n return TopicCategory.id(c) === cat;\n }), topicCategories);\n })),\n solution: (criterion == null) ? \"Unselected\" : (\n criterion === \"Solved\" ? \"Solved\" : (\n criterion === \"Unsolved\" ? \"Unsolved\" : \"Unselected\"\n )\n ),\n search: Belt_Option.map(Caml_option.nullable_to_opt(params.get(\"search\")), (function (searchString) {\n var match = params.get(\"searchBy\");\n if (match == null) {\n return {\n TAG: /* SearchTitle */1,\n _0: searchString\n };\n }\n switch (match) {\n case \"content\" :\n return {\n TAG: /* SearchContent */0,\n _0: searchString\n };\n case \"title\" :\n return {\n TAG: /* SearchTitle */1,\n _0: searchString\n };\n default:\n return {\n TAG: /* SearchTitle */1,\n _0: searchString\n };\n }\n })),\n target: target,\n sortCriterion: (criterion$1 == null) ? \"CreatedAt\" : (\n criterion$1 === \"LastActivityAt\" ? \"LastActivityAt\" : (\n criterion$1 === \"Views\" ? \"Views\" : \"CreatedAt\"\n )\n ),\n sortDirection: !(direction == null) && !(direction === \"Descending\" || direction !== \"Ascending\") ? \"Ascending\" : \"Descending\"\n };\n}\n\nfunction CommunitiesShow__Root(Props) {\n var communityId = Props.communityId;\n var target = Props.target;\n var topicCategories = Props.topicCategories;\n var match = React.useReducer(reducer, {\n loading: /* NotLoading */0,\n topics: /* Unloaded */0,\n filterString: \"\",\n totalTopicsCount: 0\n });\n var send = match[1];\n var state = match[0];\n var url = RescriptReactRouter.useUrl(undefined, undefined);\n var filter = filterFromQueryParams(url.search, target, topicCategories);\n React.useEffect((function () {\n reloadTopics(communityId, filter, send);\n }), [url]);\n var topics = state.topics;\n var tmp;\n if (typeof topics === \"number\") {\n tmp = SkeletonLoading.multiple(10, SkeletonLoading.card(undefined, undefined));\n } else if (topics.TAG === /* PartiallyLoaded */0) {\n var cursor = topics._1;\n var topics$1 = topics._0;\n var match$1 = state.loading;\n var tmp$1;\n switch (match$1) {\n case /* NotLoading */0 :\n tmp$1 = React.createElement(\"button\", {\n className: \"btn btn-primary-ghost cursor-pointer w-full mt-4\",\n onClick: (function (param) {\n Curry._1(send, /* BeginLoadingMore */0);\n getTopics(send, communityId, cursor, filter);\n })\n }, t(undefined, undefined, \"button_load_more\"));\n break;\n case /* Reloading */1 :\n tmp$1 = null;\n break;\n case /* LoadingMore */2 :\n tmp$1 = SkeletonLoading.multiple(3, SkeletonLoading.card(undefined, undefined));\n break;\n \n }\n tmp = React.createElement(\"div\", undefined, React.createElement(\"div\", {\n className: \"shadow bg-white rounded-lg divide-y\"\n }, topicsList(topicCategories, topics$1)), React.createElement(\"div\", {\n className: \"text-center\"\n }, topicsLoadedData(state.totalTopicsCount, topics$1.length)), tmp$1);\n } else {\n var topics$2 = topics._0;\n tmp = React.createElement(\"div\", undefined, React.createElement(\"div\", {\n className: \"shadow bg-white rounded-lg divide-y\"\n }, topicsList(topicCategories, topics$2)), React.createElement(\"div\", {\n className: \"text-center\"\n }, topicsLoadedData(state.totalTopicsCount, topics$2.length)));\n }\n var match$2 = state.topics;\n var tmp$2;\n if (typeof match$2 === \"number\") {\n tmp$2 = null;\n } else {\n var match$3 = state.loading;\n var loading = match$3 === 1;\n tmp$2 = React.createElement(LoadingSpinner.make, {\n loading: loading\n });\n }\n return React.createElement(\"div\", {\n className: \"flex-1 flex flex-col\"\n }, target !== undefined ? React.createElement(\"div\", {\n className: \"max-w-3xl w-full mt-5 mx-auto px-3 md:px-0\"\n }, React.createElement(\"div\", {\n className: \"flex py-4 px-4 md:px-6 w-full bg-yellow-100 border border-dashed border-yellow-400 rounded justify-between items-center\"\n }, React.createElement(\"p\", {\n className: \"w-3/5 md:w-4/5 font-semibold text-sm\"\n }, \"Target: \" + CommunitiesShow__Target.title(target)), React.createElement(\"a\", {\n className: \"no-underline bg-yellow-100 border border-yellow-400 px-3 py-2 hover:bg-yellow-200 rounded-lg cursor-pointer text-xs font-semibold\",\n href: \"/communities/\" + communityId\n }, \"Clear Filter\"))) : null, React.createElement(\"div\", {\n className: \"mt-5 flex flex-col flex-1 \"\n }, React.createElement(\"div\", {\n className: \"w-full sticky top-0 z-30 bg-gray-50 py-2\"\n }, React.createElement(\"div\", {\n className: \"max-w-3xl w-full mx-auto relative px-3 md:px-6\"\n }, React.createElement(\"div\", {\n className: \"pb-3 flex justify-between\"\n }, ReactUtils.nullIf(React.createElement(Dropdown.make, {\n selected: categoryDropdownSelected(filter.topicCategory),\n contents: categoryDropdownContents(topicCategories, filter),\n className: \"\"\n }), ArrayUtils.isEmpty(topicCategories)), React.createElement(\"div\", {\n className: \"\"\n })), React.createElement(\"div\", {\n className: \"flex w-full items-start flex-wrap space-y-3 md:space-y-0\"\n }, React.createElement(\"div\", {\n className: \"flex-1 pe-2\"\n }, React.createElement(\"label\", {\n className: \"block text-tiny font-semibold uppercase pb-1 ps-px\"\n }, t(undefined, undefined, \"filter_input_label\")), React.createElement(Multiselect.make, {\n id: \"filter\",\n placeholder: filterPlaceholder(filter, topicCategories),\n onChange: (function (filterString) {\n Curry._1(send, {\n TAG: /* UpdateFilterString */0,\n _0: filterString\n });\n }),\n value: state.filterString,\n unselected: unselected(topicCategories, filter, state),\n selected: selected(filter),\n onSelect: (function (param) {\n return onSelectFilter(filter, send, param);\n }),\n onDeselect: (function (param) {\n return onDeselectFilter(filter, param);\n })\n })), topicsSorter(filter)))), React.createElement(\"div\", {\n className: \"max-w-3xl w-full mx-auto relative px-3 md:px-6 pb-4\"\n }, React.createElement(\"div\", {\n className: \"community-topic__list-container my-4\",\n id: \"topics\"\n }, tmp)), tmp$2));\n}\n\nvar make$1 = CommunitiesShow__Root;\n\nexport {\n str ,\n t ,\n getSearch ,\n searchBy ,\n reducer ,\n TopicsQuery ,\n getTopics ,\n reloadTopics ,\n computeInitialState ,\n filterToQueryString ,\n updateParams ,\n topicsList ,\n topicsLoadedData ,\n Selectable ,\n Multiselect ,\n unselected ,\n selected ,\n onSelectFilter ,\n onDeselectFilter ,\n filterPlaceholder ,\n categoryDropdownSelected ,\n categoryDropdownContents ,\n Sortable ,\n TopicsSorter ,\n topicsSorter ,\n filterFromQueryParams ,\n make$1 as make,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Psj from \"../shared/utils/Psj.bs.js\";\nimport * as React from \"react\";\nimport * as DomUtils from \"../shared/utils/DomUtils.bs.js\";\nimport * as ReactDom from \"react-dom\";\nimport * as Json_decode from \"../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\nimport * as TopicCategory from \"../shared/types/TopicCategory.bs.js\";\nimport * as CommunitiesShow__Root from \"../communities/CommunitiesShow__Root.bs.js\";\nimport * as CommunitiesShow__Target from \"../communities/types/CommunitiesShow__Target.bs.js\";\n\nfunction decodeProps(json) {\n return [\n Json_decode.field(\"communityId\", Json_decode.string, json),\n Json_decode.optional((function (param) {\n return Json_decode.field(\"target\", CommunitiesShow__Target.decode, param);\n }), json),\n Json_decode.field(\"topicCategories\", (function (param) {\n return Json_decode.array(TopicCategory.decode, param);\n }), json)\n ];\n}\n\nPsj.match(undefined, \"communities#show\", (function (param) {\n var match = decodeProps(DomUtils.parseJSONTag(undefined, undefined));\n var root = document.querySelector(\"#react-root\");\n if (!(root == null)) {\n ReactDom.render(React.createElement(CommunitiesShow__Root.make, {\n communityId: match[0],\n target: match[1],\n topicCategories: match[2]\n }), root);\n return ;\n }\n \n }));\n\nexport {\n decodeProps ,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as React from \"react\";\n\nimport \"./Radio.css\"\n;\n\nfunction str(prim) {\n return prim;\n}\n\nfunction Radio(Props) {\n var id = Props.id;\n var label = Props.label;\n var onChange = Props.onChange;\n var checkedOpt = Props.checked;\n var checked = checkedOpt !== undefined ? checkedOpt : false;\n return React.createElement(\"div\", {\n className: \"relative\"\n }, React.createElement(\"input\", {\n className: \"w-0 h-0 absolute radio-input focus:outline-none\",\n id: id,\n checked: checked,\n type: \"radio\",\n onChange: onChange\n }), React.createElement(\"label\", {\n className: \"radio-label flex items-center\",\n htmlFor: id\n }, React.createElement(\"span\", undefined, React.createElement(\"svg\", {\n className: \"fill-white\",\n height: \"14px\",\n width: \"14px\",\n viewBox: \"0 0 14 14\"\n }, React.createElement(\"circle\", {\n cx: \"8\",\n cy: \"8\",\n r: \"3\"\n }))), React.createElement(\"span\", {\n className: \"text-sm flex-1 me-3 font-semibold leading-loose\"\n }, label)));\n}\n\nvar make = Radio;\n\nexport {\n str ,\n make ,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\n\nfunction toLanguageName(inputLanguage, outputLanguage) {\n var intlDisplayNames = new Intl.DisplayNames([outputLanguage], {\n type: \"language\"\n });\n return intlDisplayNames.of(inputLanguage);\n}\n\nfunction humanize(languageCode) {\n if (languageCode.startsWith(\"en\")) {\n return toLanguageName(languageCode, languageCode);\n } else {\n return toLanguageName(languageCode, \"en\") + \" - \" + toLanguageName(languageCode, languageCode);\n }\n}\n\nexport {\n toLanguageName ,\n humanize ,\n}\n/* No side effect */\n","// Generated by CoffeeScript 1.10.0\nvar frequency_lists;\n\nfrequency_lists = {\n passwords: \"123456,password,12345678,qwerty,123456789,12345,1234,111111,1234567,dragon,123123,baseball,abc123,football,monkey,letmein,shadow,master,696969,mustang,666666,qwertyuiop,123321,1234567890,pussy,superman,654321,1qaz2wsx,7777777,fuckyou,qazwsx,jordan,123qwe,000000,killer,trustno1,hunter,harley,zxcvbnm,asdfgh,buster,batman,soccer,tigger,charlie,sunshine,iloveyou,fuckme,ranger,hockey,computer,starwars,asshole,pepper,klaster,112233,zxcvbn,freedom,princess,maggie,pass,ginger,11111111,131313,fuck,love,cheese,159753,summer,chelsea,dallas,biteme,matrix,yankees,6969,corvette,austin,access,thunder,merlin,secret,diamond,hello,hammer,fucker,1234qwer,silver,gfhjkm,internet,samantha,golfer,scooter,test,orange,cookie,q1w2e3r4t5,maverick,sparky,phoenix,mickey,bigdog,snoopy,guitar,whatever,chicken,camaro,mercedes,peanut,ferrari,falcon,cowboy,welcome,sexy,samsung,steelers,smokey,dakota,arsenal,boomer,eagles,tigers,marina,nascar,booboo,gateway,yellow,porsche,monster,spider,diablo,hannah,bulldog,junior,london,purple,compaq,lakers,iceman,qwer1234,hardcore,cowboys,money,banana,ncc1701,boston,tennis,q1w2e3r4,coffee,scooby,123654,nikita,yamaha,mother,barney,brandy,chester,fuckoff,oliver,player,forever,rangers,midnight,chicago,bigdaddy,redsox,angel,badboy,fender,jasper,slayer,rabbit,natasha,marine,bigdick,wizard,marlboro,raiders,prince,casper,fishing,flower,jasmine,iwantu,panties,adidas,winter,winner,gandalf,password1,enter,ghbdtn,1q2w3e4r,golden,cocacola,jordan23,winston,madison,angels,panther,blowme,sexsex,bigtits,spanky,bitch,sophie,asdfasdf,horny,thx1138,toyota,tiger,dick,canada,12344321,blowjob,8675309,muffin,liverpoo,apples,qwerty123,passw0rd,abcd1234,pokemon,123abc,slipknot,qazxsw,123456a,scorpion,qwaszx,butter,startrek,rainbow,asdfghjkl,razz,newyork,redskins,gemini,cameron,qazwsxedc,florida,liverpool,turtle,sierra,viking,booger,butthead,doctor,rocket,159357,dolphins,captain,bandit,jaguar,packers,pookie,peaches,789456,asdf,dolphin,helpme,blue,theman,maxwell,qwertyui,shithead,lovers,maddog,giants,nirvana,metallic,hotdog,rosebud,mountain,warrior,stupid,elephant,suckit,success,bond007,jackass,alexis,porn,lucky,scorpio,samson,q1w2e3,azerty,rush2112,driver,freddy,1q2w3e4r5t,sydney,gators,dexter,red123,123456q,12345a,bubba,creative,voodoo,golf,trouble,america,nissan,gunner,garfield,bullshit,asdfghjk,5150,fucking,apollo,1qazxsw2,2112,eminem,legend,airborne,bear,beavis,apple,brooklyn,godzilla,skippy,4815162342,buddy,qwert,kitten,magic,shelby,beaver,phantom,asdasd,xavier,braves,darkness,blink182,copper,platinum,qweqwe,tomcat,01012011,girls,bigboy,102030,animal,police,online,11223344,voyager,lifehack,12qwaszx,fish,sniper,315475,trinity,blazer,heaven,lover,snowball,playboy,loveme,bubbles,hooters,cricket,willow,donkey,topgun,nintendo,saturn,destiny,pakistan,pumpkin,digital,sergey,redwings,explorer,tits,private,runner,therock,guinness,lasvegas,beatles,789456123,fire,cassie,christin,qwerty1,celtic,asdf1234,andrey,broncos,007007,babygirl,eclipse,fluffy,cartman,michigan,carolina,testing,alexande,birdie,pantera,cherry,vampire,mexico,dickhead,buffalo,genius,montana,beer,minecraft,maximus,flyers,lovely,stalker,metallica,doggie,snickers,speedy,bronco,lol123,paradise,yankee,horses,magnum,dreams,147258369,lacrosse,ou812,goober,enigma,qwertyu,scotty,pimpin,bollocks,surfer,cock,poohbear,genesis,star,asd123,qweasdzxc,racing,hello1,hawaii,eagle1,viper,poopoo,einstein,boobies,12345q,bitches,drowssap,simple,badger,alaska,action,jester,drummer,111222,spitfire,forest,maryjane,champion,diesel,svetlana,friday,hotrod,147258,chevy,lucky1,westside,security,google,badass,tester,shorty,thumper,hitman,mozart,zaq12wsx,boobs,reddog,010203,lizard,a123456,123456789a,ruslan,eagle,1232323q,scarface,qwerty12,147852,a12345,buddha,porno,420420,spirit,money1,stargate,qwe123,naruto,mercury,liberty,12345qwert,semperfi,suzuki,popcorn,spooky,marley,scotland,kitty,cherokee,vikings,simpsons,rascal,qweasd,hummer,loveyou,michael1,patches,russia,jupiter,penguin,passion,cumshot,vfhbyf,honda,vladimir,sandman,passport,raider,bastard,123789,infinity,assman,bulldogs,fantasy,sucker,1234554321,horney,domino,budlight,disney,ironman,usuckballz1,softball,brutus,redrum,bigred,mnbvcxz,fktrcfylh,karina,marines,digger,kawasaki,cougar,fireman,oksana,monday,cunt,justice,nigger,super,wildcats,tinker,logitech,dancer,swordfis,avalon,everton,alexandr,motorola,patriots,hentai,madonna,pussy1,ducati,colorado,connor,juventus,galore,smooth,freeuser,warcraft,boogie,titanic,wolverin,elizabet,arizona,valentin,saints,asdfg,accord,test123,password123,christ,yfnfif,stinky,slut,spiderma,naughty,chopper,hello123,ncc1701d,extreme,skyline,poop,zombie,pearljam,123qweasd,froggy,awesome,vision,pirate,fylhtq,dreamer,bullet,predator,empire,123123a,kirill,charlie1,panthers,penis,skipper,nemesis,rasdzv3,peekaboo,rolltide,cardinal,psycho,danger,mookie,happy1,wanker,chevelle,manutd,goblue,9379992,hobbes,vegeta,fyfcnfcbz,852456,picard,159951,windows,loverboy,victory,vfrcbv,bambam,serega,123654789,turkey,tweety,galina,hiphop,rooster,changeme,berlin,taurus,suckme,polina,electric,avatar,134679,maksim,raptor,alpha1,hendrix,newport,bigcock,brazil,spring,a1b2c3,madmax,alpha,britney,sublime,darkside,bigman,wolfpack,classic,hercules,ronaldo,letmein1,1q2w3e,741852963,spiderman,blizzard,123456789q,cheyenne,cjkysirj,tiger1,wombat,bubba1,pandora,zxc123,holiday,wildcat,devils,horse,alabama,147852369,caesar,12312,buddy1,bondage,pussycat,pickle,shaggy,catch22,leather,chronic,a1b2c3d4,admin,qqq111,qaz123,airplane,kodiak,freepass,billybob,sunset,katana,phpbb,chocolat,snowman,angel1,stingray,firebird,wolves,zeppelin,detroit,pontiac,gundam,panzer,vagina,outlaw,redhead,tarheels,greenday,nastya,01011980,hardon,engineer,dragon1,hellfire,serenity,cobra,fireball,lickme,darkstar,1029384756,01011,mustang1,flash,124578,strike,beauty,pavilion,01012000,bobafett,dbrnjhbz,bigmac,bowling,chris1,ytrewq,natali,pyramid,rulez,welcome1,dodgers,apache,swimming,whynot,teens,trooper,fuckit,defender,precious,135790,packard,weasel,popeye,lucifer,cancer,icecream,142536,raven,swordfish,presario,viktor,rockstar,blonde,james1,wutang,spike,pimp,atlanta,airforce,thailand,casino,lennon,mouse,741852,hacker,bluebird,hawkeye,456123,theone,catfish,sailor,goldfish,nfnmzyf,tattoo,pervert,barbie,maxima,nipples,machine,trucks,wrangler,rocks,tornado,lights,cadillac,bubble,pegasus,madman,longhorn,browns,target,666999,eatme,qazwsx123,microsoft,dilbert,christia,baller,lesbian,shooter,xfiles,seattle,qazqaz,cthutq,amateur,prelude,corona,freaky,malibu,123qweasdzxc,assassin,246810,atlantis,integra,pussies,iloveu,lonewolf,dragons,monkey1,unicorn,software,bobcat,stealth,peewee,openup,753951,srinivas,zaqwsx,valentina,shotgun,trigger,veronika,bruins,coyote,babydoll,joker,dollar,lestat,rocky1,hottie,random,butterfly,wordpass,smiley,sweety,snake,chipper,woody,samurai,devildog,gizmo,maddie,soso123aljg,mistress,freedom1,flipper,express,hjvfirf,moose,cessna,piglet,polaris,teacher,montreal,cookies,wolfgang,scully,fatboy,wicked,balls,tickle,bunny,dfvgbh,foobar,transam,pepsi,fetish,oicu812,basketba,toshiba,hotstuff,sunday,booty,gambit,31415926,impala,stephani,jessica1,hooker,lancer,knicks,shamrock,fuckyou2,stinger,314159,redneck,deftones,squirt,siemens,blaster,trucker,subaru,renegade,ibanez,manson,swinger,reaper,blondie,mylove,galaxy,blahblah,enterpri,travel,1234abcd,babylon5,indiana,skeeter,master1,sugar,ficken,smoke,bigone,sweetpea,fucked,trfnthbyf,marino,escort,smitty,bigfoot,babes,larisa,trumpet,spartan,valera,babylon,asdfghj,yankees1,bigboobs,stormy,mister,hamlet,aardvark,butterfl,marathon,paladin,cavalier,manchester,skater,indigo,hornet,buckeyes,01011990,indians,karate,hesoyam,toronto,diamonds,chiefs,buckeye,1qaz2wsx3edc,highland,hotsex,charger,redman,passwor,maiden,drpepper,storm,pornstar,garden,12345678910,pencil,sherlock,timber,thuglife,insane,pizza,jungle,jesus1,aragorn,1a2b3c,hamster,david1,triumph,techno,lollol,pioneer,catdog,321654,fktrctq,morpheus,141627,pascal,shadow1,hobbit,wetpussy,erotic,consumer,blabla,justme,stones,chrissy,spartak,goforit,burger,pitbull,adgjmptw,italia,barcelona,hunting,colors,kissme,virgin,overlord,pebbles,sundance,emerald,doggy,racecar,irina,element,1478963,zipper,alpine,basket,goddess,poison,nipple,sakura,chichi,huskers,13579,pussys,q12345,ultimate,ncc1701e,blackie,nicola,rommel,matthew1,caserta,omega,geronimo,sammy1,trojan,123qwe123,philips,nugget,tarzan,chicks,aleksandr,bassman,trixie,portugal,anakin,dodger,bomber,superfly,madness,q1w2e3r4t5y6,loser,123asd,fatcat,ybrbnf,soldier,warlock,wrinkle1,desire,sexual,babe,seminole,alejandr,951753,11235813,westham,andrei,concrete,access14,weed,letmein2,ladybug,naked,christop,trombone,tintin,bluesky,rhbcnbyf,qazxswedc,onelove,cdtnkfyf,whore,vfvjxrf,titans,stallion,truck,hansolo,blue22,smiles,beagle,panama,kingkong,flatron,inferno,mongoose,connect,poiuyt,snatch,qawsed,juice,blessed,rocker,snakes,turbo,bluemoon,sex4me,finger,jamaica,a1234567,mulder,beetle,fuckyou1,passat,immortal,plastic,123454321,anthony1,whiskey,dietcoke,suck,spunky,magic1,monitor,cactus,exigen,planet,ripper,teen,spyder,apple1,nolimit,hollywoo,sluts,sticky,trunks,1234321,14789632,pickles,sailing,bonehead,ghbdtnbr,delta,charlott,rubber,911911,112358,molly1,yomama,hongkong,jumper,william1,ilovesex,faster,unreal,cumming,memphis,1123581321,nylons,legion,sebastia,shalom,pentium,geheim,werewolf,funtime,ferret,orion,curious,555666,niners,cantona,sprite,philly,pirates,abgrtyu,lollipop,eternity,boeing,super123,sweets,cooldude,tottenha,green1,jackoff,stocking,7895123,moomoo,martini,biscuit,drizzt,colt45,fossil,makaveli,snapper,satan666,maniac,salmon,patriot,verbatim,nasty,shasta,asdzxc,shaved,blackcat,raistlin,qwerty12345,punkrock,cjkywt,01012010,4128,waterloo,crimson,twister,oxford,musicman,seinfeld,biggie,condor,ravens,megadeth,wolfman,cosmos,sharks,banshee,keeper,foxtrot,gn56gn56,skywalke,velvet,black1,sesame,dogs,squirrel,privet,sunrise,wolverine,sucks,legolas,grendel,ghost,cats,carrot,frosty,lvbnhbq,blades,stardust,frog,qazwsxed,121314,coolio,brownie,groovy,twilight,daytona,vanhalen,pikachu,peanuts,licker,hershey,jericho,intrepid,ninja,1234567a,zaq123,lobster,goblin,punisher,strider,shogun,kansas,amadeus,seven7,jason1,neptune,showtime,muscle,oldman,ekaterina,rfrfirf,getsome,showme,111222333,obiwan,skittles,danni,tanker,maestro,tarheel,anubis,hannibal,anal,newlife,gothic,shark,fighter,blue123,blues,123456z,princes,slick,chaos,thunder1,sabine,1q2w3e4r5t6y,python,test1,mirage,devil,clover,tequila,chelsea1,surfing,delete,potato,chubby,panasonic,sandiego,portland,baggins,fusion,sooners,blackdog,buttons,californ,moscow,playtime,mature,1a2b3c4d,dagger,dima,stimpy,asdf123,gangster,warriors,iverson,chargers,byteme,swallow,liquid,lucky7,dingdong,nymets,cracker,mushroom,456852,crusader,bigguy,miami,dkflbvbh,bugger,nimrod,tazman,stranger,newpass,doodle,powder,gotcha,guardian,dublin,slapshot,septembe,147896325,pepsi1,milano,grizzly,woody1,knights,photos,2468,nookie,charly,rammstein,brasil,123321123,scruffy,munchkin,poopie,123098,kittycat,latino,walnut,1701,thegame,viper1,1passwor,kolobok,picasso,robert1,barcelon,bananas,trance,auburn,coltrane,eatshit,goodluck,starcraft,wheels,parrot,postal,blade,wisdom,pink,gorilla,katerina,pass123,andrew1,shaney14,dumbass,osiris,fuck_inside,oakland,discover,ranger1,spanking,lonestar,bingo,meridian,ping,heather1,dookie,stonecol,megaman,192837465,rjntyjr,ledzep,lowrider,25802580,richard1,firefly,griffey,racerx,paradox,ghjcnj,gangsta,zaq1xsw2,tacobell,weezer,sirius,halflife,buffett,shiloh,123698745,vertigo,sergei,aliens,sobaka,keyboard,kangaroo,sinner,soccer1,0.0.000,bonjour,socrates,chucky,hotboy,sprint,0007,sarah1,scarlet,celica,shazam,formula1,sommer,trebor,qwerasdf,jeep,mailcreated5240,bollox,asshole1,fuckface,honda1,rebels,vacation,lexmark,penguins,12369874,ragnarok,formula,258456,tempest,vfhecz,tacoma,qwertz,colombia,flames,rockon,duck,prodigy,wookie,dodgeram,mustangs,123qaz,sithlord,smoker,server,bang,incubus,scoobydo,oblivion,molson,kitkat,titleist,rescue,zxcv1234,carpet,1122,bigballs,tardis,jimbob,xanadu,blueeyes,shaman,mersedes,pooper,pussy69,golfing,hearts,mallard,12312312,kenwood,patrick1,dogg,cowboys1,oracle,123zxc,nuttertools,102938,topper,1122334455,shemale,sleepy,gremlin,yourmom,123987,gateway1,printer,monkeys,peterpan,mikey,kingston,cooler,analsex,jimbo,pa55word,asterix,freckles,birdman,frank1,defiant,aussie,stud,blondes,tatyana,445566,aspirine,mariners,jackal,deadhead,katrin,anime,rootbeer,frogger,polo,scooter1,hallo,noodles,thomas1,parola,shaolin,celine,11112222,plymouth,creampie,justdoit,ohyeah,fatass,assfuck,amazon,1234567q,kisses,magnus,camel,nopass,bosco,987456,6751520,harley1,putter,champs,massive,spidey,lightnin,camelot,letsgo,gizmodo,aezakmi,bones,caliente,12121,goodtime,thankyou,raiders1,brucelee,redalert,aquarius,456654,catherin,smokin,pooh,mypass,astros,roller,porkchop,sapphire,qwert123,kevin1,a1s2d3f4,beckham,atomic,rusty1,vanilla,qazwsxedcrfv,hunter1,kaktus,cxfcnmt,blacky,753159,elvis1,aggies,blackjac,bangkok,scream,123321q,iforgot,power1,kasper,abc12,buster1,slappy,shitty,veritas,chevrole,amber1,01012001,vader,amsterdam,jammer,primus,spectrum,eduard,granny,horny1,sasha1,clancy,usa123,satan,diamond1,hitler,avenger,1221,spankme,123456qwerty,simba,smudge,scrappy,labrador,john316,syracuse,front242,falcons,husker,candyman,commando,gator,pacman,delta1,pancho,krishna,fatman,clitoris,pineappl,lesbians,8j4ye3uz,barkley,vulcan,punkin,boner,celtics,monopoly,flyboy,romashka,hamburg,123456aa,lick,gangbang,223344,area51,spartans,aaa111,tricky,snuggles,drago,homerun,vectra,homer1,hermes,topcat,cuddles,infiniti,1234567890q,cosworth,goose,phoenix1,killer1,ivanov,bossman,qawsedrf,peugeot,exigent,doberman,durango,brandon1,plumber,telefon,horndog,laguna,rbhbkk,dawg,webmaster,breeze,beast,porsche9,beefcake,leopard,redbull,oscar1,topdog,godsmack,theking,pics,omega1,speaker,viktoria,fuckers,bowler,starbuck,gjkbyf,valhalla,anarchy,blacks,herbie,kingpin,starfish,nokia,loveit,achilles,906090,labtec,ncc1701a,fitness,jordan1,brando,arsenal1,bull,kicker,napass,desert,sailboat,bohica,tractor,hidden,muppet,jackson1,jimmy1,terminator,phillies,pa55w0rd,terror,farside,swingers,legacy,frontier,butthole,doughboy,jrcfyf,tuesday,sabbath,daniel1,nebraska,homers,qwertyuio,azamat,fallen,agent007,striker,camels,iguana,looker,pinkfloy,moloko,qwerty123456,dannyboy,luckydog,789654,pistol,whocares,charmed,skiing,select,franky,puppy,daniil,vladik,vette,vfrcbvrf,ihateyou,nevada,moneys,vkontakte,mandingo,puppies,666777,mystic,zidane,kotenok,dilligaf,budman,bunghole,zvezda,123457,triton,golfball,technics,trojans,panda,laptop,rookie,01011991,15426378,aberdeen,gustav,jethro,enterprise,igor,stripper,filter,hurrican,rfnthbyf,lespaul,gizmo1,butch,132435,dthjybrf,1366613,excalibu,963852,nofear,momoney,possum,cutter,oilers,moocow,cupcake,gbpltw,batman1,splash,svetik,super1,soleil,bogdan,melissa1,vipers,babyboy,tdutybq,lancelot,ccbill,keystone,passwort,flamingo,firefox,dogman,vortex,rebel,noodle,raven1,zaphod,killme,pokemon1,coolman,danila,designer,skinny,kamikaze,deadman,gopher,doobie,warhammer,deeznuts,freaks,engage,chevy1,steve1,apollo13,poncho,hammers,azsxdc,dracula,000007,sassy,bitch1,boots,deskjet,12332,macdaddy,mighty,rangers1,manchest,sterlin,casey1,meatball,mailman,sinatra,cthulhu,summer1,bubbas,cartoon,bicycle,eatpussy,truelove,sentinel,tolkien,breast,capone,lickit,summit,123456k,peter1,daisy1,kitty1,123456789z,crazy1,jamesbon,texas1,sexygirl,362436,sonic,billyboy,redhot,microsof,microlab,daddy1,rockets,iloveyo,fernand,gordon24,danie,cutlass,polska,star69,titties,pantyhos,01011985,thekid,aikido,gofish,mayday,1234qwe,coke,anfield,sony,lansing,smut,scotch,sexx,catman,73501505,hustler,saun,dfkthbz,passwor1,jenny1,azsxdcfv,cheers,irish1,gabrie,tinman,orioles,1225,charlton,fortuna,01011970,airbus,rustam,xtreme,bigmoney,zxcasd,retard,grumpy,huskies,boxing,4runner,kelly1,ultima,warlord,fordf150,oranges,rotten,asdfjkl,superstar,denali,sultan,bikini,saratoga,thor,figaro,sixers,wildfire,vladislav,128500,sparta,mayhem,greenbay,chewie,music1,number1,cancun,fabie,mellon,poiuytrewq,cloud9,crunch,bigtime,chicken1,piccolo,bigbird,321654987,billy1,mojo,01011981,maradona,sandro,chester1,bizkit,rjirfrgbde,789123,rightnow,jasmine1,hyperion,treasure,meatloaf,armani,rovers,jarhead,01011986,cruise,coconut,dragoon,utopia,davids,cosmo,rfhbyf,reebok,1066,charli,giorgi,sticks,sayang,pass1234,exodus,anaconda,zaqxsw,illini,woofwoof,emily1,sandy1,packer,poontang,govols,jedi,tomato,beaner,cooter,creamy,lionking,happy123,albatros,poodle,kenworth,dinosaur,greens,goku,happyday,eeyore,tsunami,cabbage,holyshit,turkey50,memorex,chaser,bogart,orgasm,tommy1,volley,whisper,knopka,ericsson,walleye,321123,pepper1,katie1,chickens,tyler1,corrado,twisted,100000,zorro,clemson,zxcasdqwe,tootsie,milana,zenith,fktrcfylhf,shania,frisco,polniypizdec0211,crazybab,junebug,fugazi,rereirf,vfvekz,1001,sausage,vfczyz,koshka,clapton,justin1,anhyeuem,condom,fubar,hardrock,skywalker,tundra,cocks,gringo,150781,canon,vitalik,aspire,stocks,samsung1,applepie,abc12345,arjay,gandalf1,boob,pillow,sparkle,gmoney,rockhard,lucky13,samiam,everest,hellyeah,bigsexy,skorpion,rfrnec,hedgehog,australi,candle,slacker,dicks,voyeur,jazzman,america1,bobby1,br0d3r,wolfie,vfksirf,1qa2ws3ed,13243546,fright,yosemite,temp,karolina,fart,barsik,surf,cheetah,baddog,deniska,starship,bootie,milena,hithere,kume,greatone,dildo,50cent,0.0.0.000,albion,amanda1,midget,lion,maxell,football1,cyclone,freeporn,nikola,bonsai,kenshin,slider,balloon,roadkill,killbill,222333,jerkoff,78945612,dinamo,tekken,rambler,goliath,cinnamon,malaka,backdoor,fiesta,packers1,rastaman,fletch,sojdlg123aljg,stefano,artemis,calico,nyjets,damnit,robotech,duchess,rctybz,hooter,keywest,18436572,hal9000,mechanic,pingpong,operator,presto,sword,rasputin,spank,bristol,faggot,shado,963852741,amsterda,321456,wibble,carrera,alibaba,majestic,ramses,duster,route66,trident,clipper,steeler,wrestlin,divine,kipper,gotohell,kingfish,snake1,passwords,buttman,pompey,viagra,zxcvbnm1,spurs,332211,slutty,lineage2,oleg,macross,pooter,brian1,qwert1,charles1,slave,jokers,yzerman,swimmer,ne1469,nwo4life,solnce,seamus,lolipop,pupsik,moose1,ivanova,secret1,matador,love69,420247,ktyjxrf,subway,cinder,vermont,pussie,chico,florian,magick,guiness,allsop,ghetto,flash1,a123456789,typhoon,dfkthf,depeche,skydive,dammit,seeker,fuckthis,crysis,kcj9wx5n,umbrella,r2d2c3po,123123q,snoopdog,critter,theboss,ding,162534,splinter,kinky,cyclops,jayhawk,456321,caramel,qwer123,underdog,caveman,onlyme,grapes,feather,hotshot,fuckher,renault,george1,sex123,pippen,000001,789987,floppy,cunts,megapass,1000,pornos,usmc,kickass,great1,quattro,135246,wassup,helloo,p0015123,nicole1,chivas,shannon1,bullseye,java,fishes,blackhaw,jamesbond,tunafish,juggalo,dkflbckfd,123789456,dallas1,translator,122333,beanie,alucard,gfhjkm123,supersta,magicman,ashley1,cohiba,xbox360,caligula,12131415,facial,7753191,dfktynbyf,cobra1,cigars,fang,klingon,bob123,safari,looser,10203,deepthroat,malina,200000,tazmania,gonzo,goalie,jacob1,monaco,cruiser,misfit,vh5150,tommyboy,marino13,yousuck,sharky,vfhufhbnf,horizon,absolut,brighton,123456r,death1,kungfu,maxx,forfun,mamapapa,enter1,budweise,banker,getmoney,kostya,qazwsx12,bigbear,vector,fallout,nudist,gunners,royals,chainsaw,scania,trader,blueboy,walrus,eastside,kahuna,qwerty1234,love123,steph,01011989,cypress,champ,undertaker,ybrjkfq,europa,snowboar,sabres,moneyman,chrisbln,minime,nipper,groucho,whitey,viewsonic,penthous,wolf359,fabric,flounder,coolguy,whitesox,passme,smegma,skidoo,thanatos,fucku2,snapple,dalejr,mondeo,thesims,mybaby,panasoni,sinbad,thecat,topher,frodo,sneakers,q123456,z1x2c3,alfa,chicago1,taylor1,ghjcnjnfr,cat123,olivier,cyber,titanium,0420,madison1,jabroni,dang,hambone,intruder,holly1,gargoyle,sadie1,static,poseidon,studly,newcastl,sexxxx,poppy,johannes,danzig,beastie,musica,buckshot,sunnyday,adonis,bluedog,bonkers,2128506,chrono,compute,spawn,01011988,turbo1,smelly,wapbbs,goldstar,ferrari1,778899,quantum,pisces,boomboom,gunnar,1024,test1234,florida1,nike,superman1,multiplelo,custom,motherlode,1qwerty,westwood,usnavy,apple123,daewoo,korn,stereo,sasuke,sunflowe,watcher,dharma,555777,mouse1,assholes,babyblue,123qwerty,marius,walmart,snoop,starfire,tigger1,paintbal,knickers,aaliyah,lokomotiv,theend,winston1,sapper,rover,erotica,scanner,racer,zeus,sexy69,doogie,bayern,joshua1,newbie,scott1,losers,droopy,outkast,martin1,dodge1,wasser,ufkbyf,rjycnfynby,thirteen,12345z,112211,hotred,deejay,hotpussy,192837,jessic,philippe,scout,panther1,cubbies,havefun,magpie,fghtkm,avalanch,newyork1,pudding,leonid,harry1,cbr600,audia4,bimmer,fucku,01011984,idontknow,vfvfgfgf,1357,aleksey,builder,01011987,zerocool,godfather,mylife,donuts,allmine,redfish,777888,sascha,nitram,bounce,333666,smokes,1x2zkg8w,rodman,stunner,zxasqw12,hoosier,hairy,beretta,insert,123456s,rtyuehe,francesc,tights,cheese1,micron,quartz,hockey1,gegcbr,searay,jewels,bogey,paintball,celeron,padres,bing,syncmaster,ziggy,simon1,beaches,prissy,diehard,orange1,mittens,aleksandra,queens,02071986,biggles,thongs,southpark,artur,twinkle,gretzky,rabota,cambiami,monalisa,gollum,chuckles,spike1,gladiator,whisky,spongebob,sexy1,03082006,mazafaka,meathead,4121,ou8122,barefoot,12345678q,cfitymrf,bigass,a1s2d3,kosmos,blessing,titty,clevelan,terrapin,ginger1,johnboy,maggot,clarinet,deeznutz,336699,stumpy,stoney,footbal,traveler,volvo,bucket,snapon,pianoman,hawkeyes,futbol,casanova,tango,goodboy,scuba,honey1,sexyman,warthog,mustard,abc1234,nickel,10203040,meowmeow,1012,boricua,prophet,sauron,12qwas,reefer,andromeda,crystal1,joker1,90210,goofy,loco,lovesex,triangle,whatsup,mellow,bengals,monster1,maste,01011910,lover1,love1,123aaa,sunshin,smeghead,hokies,sting,welder,rambo,cerberus,bunny1,rockford,monke,1q2w3e4r5,goldwing,gabriell,buzzard,crjhgbjy,james007,rainman,groove,tiberius,purdue,nokia6300,hayabusa,shou,jagger,diver,zigzag,poochie,usarmy,phish,redwood,redwing,12345679,salamander,silver1,abcd123,sputnik,boobie,ripple,eternal,12qw34er,thegreat,allstar,slinky,gesperrt,mishka,whiskers,pinhead,overkill,sweet1,rhfcjnrf,montgom240,sersolution,jamie1,starman,proxy,swords,nikolay,bacardi,rasta,badgirl,rebecca1,wildman,penny1,spaceman,1007,10101,logan1,hacked,bulldog1,helmet,windsor,buffy1,runescape,trapper,123451,banane,dbrnjh,ripken,12345qwe,frisky,shun,fester,oasis,lightning,ib6ub9,cicero,kool,pony,thedog,784512,01011992,megatron,illusion,edward1,napster,11223,squash,roadking,woohoo,19411945,hoosiers,01091989,tracker,bagira,midway,leavemealone,br549,14725836,235689,menace,rachel1,feng,laser,stoned,realmadrid,787898,balloons,tinkerbell,5551212,maria1,pobeda,heineken,sonics,moonlight,optimus,comet,orchid,02071982,jaybird,kashmir,12345678a,chuang,chunky,peach,mortgage,rulezzz,saleen,chuckie,zippy,fishing1,gsxr750,doghouse,maxim,reader,shai,buddah,benfica,chou,salomon,meister,eraser,blackbir,bigmike,starter,pissing,angus,deluxe,eagles1,hardcock,135792468,mian,seahawks,godfathe,bookworm,gregor,intel,talisman,blackjack,babyface,hawaiian,dogfood,zhong,01011975,sancho,ludmila,medusa,mortimer,123456654321,roadrunn,just4me,stalin,01011993,handyman,alphabet,pizzas,calgary,clouds,password2,cgfhnfr,f**k,cubswin,gong,lexus,max123,xxx123,digital1,gfhjkm1,7779311,missy1,michae,beautifu,gator1,1005,pacers,buddie,chinook,heckfy,dutchess,sally1,breasts,beowulf,darkman,jenn,tiffany1,zhei,quan,qazwsx1,satana,shang,idontkno,smiths,puddin,nasty1,teddybea,valkyrie,passwd,chao,boxster,killers,yoda,cheater,inuyasha,beast1,wareagle,foryou,dragonball,mermaid,bhbirf,teddy1,dolphin1,misty1,delphi,gromit,sponge,qazzaq,fytxrf,gameover,diao,sergi,beamer,beemer,kittykat,rancid,manowar,adam12,diggler,assword,austin1,wishbone,gonavy,sparky1,fisting,thedude,sinister,1213,venera,novell,salsero,jayden,fuckoff1,linda1,vedder,02021987,1pussy,redline,lust,jktymrf,02011985,dfcbkbq,dragon12,chrome,gamecube,titten,cong,bella1,leng,02081988,eureka,bitchass,147369,banner,lakota,123321a,mustafa,preacher,hotbox,02041986,z1x2c3v4,playstation,01011977,claymore,electra,checkers,zheng,qing,armagedon,02051986,wrestle,svoboda,bulls,nimbus,alenka,madina,newpass6,onetime,aa123456,bartman,02091987,silverad,electron,12345t,devil666,oliver1,skylar,rhtdtlrj,gobucks,johann,12011987,milkman,02101985,camper,thunderb,bigbutt,jammin,davide,cheeks,goaway,lighter,claudi,thumbs,pissoff,ghostrider,cocaine,teng,squall,lotus,hootie,blackout,doitnow,subzero,02031986,marine1,02021988,pothead,123456qw,skate,1369,peng,antoni,neng,miao,bcfields,1492,marika,794613,musashi,tulips,nong,piao,chai,ruan,southpar,02061985,nude,mandarin,654123,ninjas,cannabis,jetski,xerxes,zhuang,kleopatra,dickie,bilbo,pinky,morgan1,1020,1017,dieter,baseball1,tottenham,quest,yfnfkmz,dirtbike,1234567890a,mango,jackson5,ipswich,iamgod,02011987,tdutybz,modena,qiao,slippery,qweasd123,bluefish,samtron,toon,111333,iscool,02091986,petrov,fuzzy,zhou,1357924680,mollydog,deng,02021986,1236987,pheonix,zhun,ghblehjr,othello,starcraf,000111,sanfran,a11111,cameltoe,badman,vasilisa,jiang,1qaz2ws,luan,sveta,12qw12,akira,chuai,369963,cheech,beatle,pickup,paloma,01011983,caravan,elizaveta,gawker,banzai,pussey,mullet,seng,bingo1,bearcat,flexible,farscape,borussia,zhuai,templar,guitar1,toolman,yfcntymrf,chloe1,xiang,slave1,guai,nuggets,02081984,mantis,slim,scorpio1,fyutkbyf,thedoors,02081987,02061986,123qq123,zappa,fergie,7ugd5hip2j,huai,asdfzxcv,sunflower,pussyman,deadpool,bigtit,01011982,love12,lassie,skyler,gatorade,carpedie,jockey,mancity,spectre,02021984,cameron1,artemka,reng,02031984,iomega,jing,moritz,spice,rhino,spinner,heater,zhai,hover,talon,grease,qiong,corleone,ltybcrf,tian,cowboy1,hippie,chimera,ting,alex123,02021985,mickey1,corsair,sonoma,aaron1,xxxpass,bacchus,webmaste,chuo,xyz123,chrysler,spurs1,artem,shei,cosmic,01020304,deutsch,gabriel1,123455,oceans,987456321,binladen,latinas,a12345678,speedo,buttercu,02081989,21031988,merlot,millwall,ceng,kotaku,jiong,dragonba,2580,stonecold,snuffy,01011999,02011986,hellos,blaze,maggie1,slapper,istanbul,bonjovi,babylove,mazda,bullfrog,phoeni,meng,porsche1,nomore,02061989,bobdylan,capslock,orion1,zaraza,teddybear,ntktajy,myname,rong,wraith,mets,niao,02041984,smokie,chevrolet,dialog,gfhjkmgfhjkm,dotcom,vadim,monarch,athlon,mikey1,hamish,pian,liang,coolness,chui,thoma,ramones,ciccio,chippy,eddie1,house1,ning,marker,cougars,jackpot,barbados,reds,pdtplf,knockers,cobalt,amateurs,dipshit,napoli,kilroy,pulsar,jayhawks,daemon,alexey,weng,shuang,9293709b13,shiner,eldorado,soulmate,mclaren,golfer1,andromed,duan,50spanks,sexyboy,dogshit,02021983,shuo,kakashka,syzygy,111111a,yeahbaby,qiang,netscape,fulham,120676,gooner,zhui,rainbow6,laurent,dog123,halifax,freeway,carlitos,147963,eastwood,microphone,monkey12,1123,persik,coldbeer,geng,nuan,danny1,fgtkmcby,entropy,gadget,just4fun,sophi,baggio,carlito,1234567891,02021989,02041983,specialk,piramida,suan,bigblue,salasana,hopeful,mephisto,bailey1,hack,annie1,generic,violetta,spencer1,arcadia,02051983,hondas,9562876,trainer,jones1,smashing,liao,159632,iceberg,rebel1,snooker,temp123,zang,matteo,fastball,q2w3e4r5,bamboo,fuckyo,shutup,astro,buddyboy,nikitos,redbird,maxxxx,shitface,02031987,kuai,kissmyass,sahara,radiohea,1234asdf,wildcard,maxwell1,patric,plasma,heynow,bruno1,shao,bigfish,misfits,sassy1,sheng,02011988,02081986,testpass,nanook,cygnus,licking,slavik,pringles,xing,1022,ninja1,submit,dundee,tiburon,pinkfloyd,yummy,shuai,guang,chopin,obelix,insomnia,stroker,1a2s3d4f,1223,playboy1,lazarus,jorda,spider1,homerj,sleeper,02041982,darklord,cang,02041988,02041987,tripod,magician,jelly,telephon,15975,vsjasnel12,pasword,iverson3,pavlov,homeboy,gamecock,amigo,brodie,budapest,yjdsqgfhjkm,reckless,02011980,pang,tiger123,2469,mason1,orient,01011979,zong,cdtnbr,maksimka,1011,bushido,taxman,giorgio,sphinx,kazantip,02101984,concorde,verizon,lovebug,georg,sam123,seadoo,qazwsxedc123,jiao,jezebel,pharmacy,abnormal,jellybea,maxime,puffy,islander,bunnies,jiggaman,drakon,010180,pluto,zhjckfd,12365,classics,crusher,mordor,hooligan,strawberry,02081985,scrabble,hawaii50,1224,wg8e3wjf,cthtuf,premium,arrow,123456qwe,mazda626,ramrod,tootie,rhjrjlbk,ghost1,1211,bounty,niang,02071984,goat,killer12,sweetnes,porno1,masamune,426hemi,corolla,mariposa,hjccbz,doomsday,bummer,blue12,zhao,bird33,excalibur,samsun,kirsty,buttfuck,kfhbcf,zhuo,marcello,ozzy,02021982,dynamite,655321,master12,123465,lollypop,stepan,1qa2ws,spiker,goirish,callum,michael2,moonbeam,attila,henry1,lindros,andrea1,sporty,lantern,12365478,nextel,violin,volcom,998877,water1,imation,inspiron,dynamo,citadel,placebo,clowns,tiao,02061988,tripper,dabears,haggis,merlin1,02031985,anthrax,amerika,iloveme,vsegda,burrito,bombers,snowboard,forsaken,katarina,a1a2a3,woofer,tigger2,fullmoon,tiger2,spock,hannah1,snoopy1,sexxxy,sausages,stanislav,cobain,robotics,exotic,green123,mobydick,senators,pumpkins,fergus,asddsa,147741,258852,windsurf,reddevil,vfitymrf,nevermind,nang,woodland,4417,mick,shui,q1q2q3,wingman,69696,superb,zuan,ganesh,pecker,zephyr,anastasiya,icu812,larry1,02081982,broker,zalupa,mihail,vfibyf,dogger,7007,paddle,varvara,schalke,1z2x3c,presiden,yankees2,tuning,poopy,02051982,concord,vanguard,stiffy,rjhjktdf,felix1,wrench,firewall,boxer,bubba69,popper,02011984,temppass,gobears,cuan,tipper,fuckme1,kamila,thong,puss,bigcat,drummer1,02031982,sowhat,digimon,tigers1,rang,jingle,bian,uranus,soprano,mandy1,dusty1,fandango,aloha,pumpkin1,postman,02061980,dogcat,bombay,pussy123,onetwo,highheel,pippo,julie1,laura1,pepito,beng,smokey1,stylus,stratus,reload,duckie,karen1,jimbo1,225588,369258,krusty,snappy,asdf12,electro,111qqq,kuang,fishin,clit,abstr,christma,qqqqq1,1234560,carnage,guyver,boxers,kittens,zeng,1000000,qwerty11,toaster,cramps,yugioh,02061987,icehouse,zxcvbnm123,pineapple,namaste,harrypotter,mygirl,falcon1,earnhard,fender1,spikes,nutmeg,01081989,dogboy,02091983,369852,softail,mypassword,prowler,bigboss,1112,harvest,heng,jubilee,killjoy,basset,keng,zaqxswcde,redsox1,biao,titan,misfit99,robot,wifey,kidrock,02101987,gameboy,enrico,1z2x3c4v,broncos1,arrows,havana,banger,cookie1,chriss,123qw,platypus,cindy1,lumber,pinball,foxy,london1,1023,05051987,02041985,password12,superma,longbow,radiohead,nigga,12051988,spongebo,qwert12345,abrakadabra,dodgers1,02101989,chillin,niceguy,pistons,hookup,santafe,bigben,jets,1013,vikings1,mankind,viktoriya,beardog,hammer1,02071980,reddwarf,magelan,longjohn,jennife,gilles,carmex2,02071987,stasik,bumper,doofus,slamdunk,pixies,garion,steffi,alessandro,beerman,niceass,warrior1,honolulu,134679852,visa,johndeer,mother1,windmill,boozer,oatmeal,aptiva,busty,delight,tasty,slick1,bergkamp,badgers,guitars,puffin,02091981,nikki1,irishman,miller1,zildjian,123000,airwolf,magnet,anai,install,02041981,02061983,astra,romans,megan1,mudvayne,freebird,muscles,dogbert,02091980,02091984,snowflak,01011900,mang,joseph1,nygiants,playstat,junior1,vjcrdf,qwer12,webhompas,giraffe,pelican,jefferso,comanche,bruiser,monkeybo,kjkszpj,123456l,micro,albany,02051987,angel123,epsilon,aladin,death666,hounddog,josephin,altima,chilly,02071988,78945,ultra,02041979,gasman,thisisit,pavel,idunno,kimmie,05051985,paulie,ballin,medion,moondog,manolo,pallmall,climber,fishbone,genesis1,153624,toffee,tbone,clippers,krypton,jerry1,picturs,compass,111111q,02051988,1121,02081977,sairam,getout,333777,cobras,22041987,bigblock,severin,booster,norwich,whiteout,ctrhtn,123456m,02061984,hewlett,shocker,fuckinside,02031981,chase1,white1,versace,123456789s,basebal,iloveyou2,bluebell,08031986,anthon,stubby,foreve,undertak,werder,saiyan,mama123,medic,chipmunk,mike123,mazdarx7,qwe123qwe,bowwow,kjrjvjnbd,celeb,choochoo,demo,lovelife,02051984,colnago,lithium,02051989,15051981,zzzxxx,welcom,anastasi,fidelio,franc,26061987,roadster,stone55,drifter,hookem,hellboy,1234qw,cbr900rr,sinned,good123654,storm1,gypsy,zebra,zachary1,toejam,buceta,02021979,testing1,redfox,lineage,mike1,highbury,koroleva,nathan1,washingt,02061982,02091985,vintage,redbaron,dalshe,mykids,11051987,macbeth,julien,james123,krasotka,111000,10011986,987123,pipeline,tatarin,sensei,codered,komodo,frogman,7894561230,nascar24,juicy,01031988,redrose,mydick,pigeon,tkbpfdtnf,smirnoff,1215,spam,winner1,flyfish,moskva,81fukkc,21031987,olesya,starligh,summer99,13041988,fishhead,freesex,super12,06061986,azazel,scoobydoo,02021981,cabron,yogibear,sheba1,konstantin,tranny,chilli,terminat,ghbywtccf,slowhand,soccer12,cricket1,fuckhead,1002,seagull,achtung,blam,bigbob,bdsm,nostromo,survivor,cnfybckfd,lemonade,boomer1,rainbow1,rober,irinka,cocksuck,peaches1,itsme,sugar1,zodiac,upyours,dinara,135791,sunny1,chiara,johnson1,02041989,solitude,habibi,sushi,markiz,smoke1,rockies,catwoman,johnny1,qwerty7,bearcats,username,01011978,wanderer,ohshit,02101986,sigma,stephen1,paradigm,02011989,flanker,sanity,jsbach,spotty,bologna,fantasia,chevys,borabora,cocker,74108520,123ewq,12021988,01061990,gtnhjdbx,02071981,01011960,sundevil,3000gt,mustang6,gagging,maggi,armstron,yfnfkb,13041987,revolver,02021976,trouble1,madcat,jeremy1,jackass1,volkswag,30051985,corndog,pool6123,marines1,03041991,pizza1,piggy,sissy,02031979,sunfire,angelus,undead,24061986,14061991,wildbill,shinobi,45m2do5bs,123qwer,21011989,cleopatr,lasvega,hornets,amorcit,11081989,coventry,nirvana1,destin,sidekick,20061988,02081983,gbhfvblf,sneaky,bmw325,22021989,nfytxrf,sekret,kalina,zanzibar,hotone,qazws,wasabi,heidi1,highlander,blues1,hitachi,paolo,23041987,slayer1,simba1,02011981,tinkerbe,kieran,01121986,172839,boiler,1125,bluesman,waffle,asdfgh01,threesom,conan,1102,reflex,18011987,nautilus,everlast,fatty,vader1,01071986,cyborg,ghbdtn123,birddog,rubble,02071983,suckers,02021973,skyhawk,12qw12qw,dakota1,joebob,nokia6233,woodie,longdong,lamer,troll,ghjcnjgfhjkm,420000,boating,nitro,armada,messiah,1031,penguin1,02091989,americ,02071989,redeye,asdqwe123,07071987,monty1,goten,spikey,sonata,635241,tokiohotel,sonyericsson,citroen,compaq1,1812,umpire,belmont,jonny,pantera1,nudes,palmtree,14111986,fenway,bighead,razor,gryphon,andyod22,aaaaa1,taco,10031988,enterme,malachi,dogface,reptile,01041985,dindom,handball,marseille,candy1,19101987,torino,tigge,matthias,viewsoni,13031987,stinker,evangelion,24011985,123456123,rampage,sandrine,02081980,thecrow,astral,28041987,sprinter,private1,seabee,shibby,02101988,25081988,fearless,junkie,01091987,aramis,antelope,draven,fuck1,mazda6,eggman,02021990,barselona,buddy123,19061987,fyfnjkbq,nancy1,12121990,10071987,sluggo,kille,hotties,irishka,zxcasdqwe123,shamus,fairlane,honeybee,soccer10,13061986,fantomas,17051988,10051987,20111986,gladiato,karachi,gambler,gordo,01011995,biatch,matthe,25800852,papito,excite,buffalo1,bobdole,cheshire,player1,28021992,thewho,10101986,pinky1,mentor,tomahawk,brown1,03041986,bismillah,bigpoppa,ijrjkfl,01121988,runaway,08121986,skibum,studman,helper,squeak,holycow,manfred,harlem,glock,gideon,987321,14021985,yellow1,wizard1,margarit,success1,medved,sf49ers,lambda,pasadena,johngalt,quasar,1776,02031980,coldplay,amand,playa,bigpimp,04041991,capricorn,elefant,sweetness,bruce1,luca,dominik,10011990,biker,09051945,datsun,elcamino,trinitro,malice,audi,voyager1,02101983,joe123,carpente,spartan1,mario1,glamour,diaper,12121985,22011988,winter1,asimov,callisto,nikolai,pebble,02101981,vendetta,david123,boytoy,11061985,02031989,iloveyou1,stupid1,cayman,casper1,zippo,yamahar1,wildwood,foxylady,calibra,02041980,27061988,dungeon,leedsutd,30041986,11051990,bestbuy,antares,dominion,24680,01061986,skillet,enforcer,derparol,01041988,196969,29071983,f00tball,purple1,mingus,25031987,21031990,remingto,giggles,klaste,3x7pxr,01011994,coolcat,29051989,megane,20031987,02051980,04041988,synergy,0000007,macman,iforget,adgjmp,vjqgfhjkm,28011987,rfvfcenhf,16051989,25121987,16051987,rogue,mamamia,08051990,20091991,1210,carnival,bolitas,paris1,dmitriy,dimas,05051989,papillon,knuckles,29011985,hola,tophat,28021990,100500,cutiepie,devo,415263,ducks,ghjuhfvvf,asdqwe,22021986,freefall,parol,02011983,zarina,buste,vitamin,warez,bigones,17061988,baritone,jamess,twiggy,mischief,bitchy,hetfield,1003,dontknow,grinch,sasha_007,18061990,12031985,12031987,calimero,224466,letmei,15011987,acmilan,alexandre,02031977,08081988,whiteboy,21051991,barney1,02071978,money123,18091985,bigdawg,02031988,cygnusx1,zoloto,31011987,firefigh,blowfish,screamer,lfybbk,20051988,chelse,11121986,01031989,harddick,sexylady,30031988,02041974,auditt,pizdec,kojak,kfgjxrf,20091988,123456ru,wp2003wp,1204,15051990,slugger,kordell1,03031986,swinging,01011974,02071979,rockie,dimples,1234123,1dragon,trucking,rusty2,roger1,marijuana,kerouac,02051978,08031985,paco,thecure,keepout,kernel,noname123,13121985,francisc,bozo,02011982,22071986,02101979,obsidian,12345qw,spud,tabasco,02051985,jaguars,dfktynby,kokomo,popova,notused,sevens,4200,magneto,02051976,roswell,15101986,21101986,lakeside,bigbang,aspen,little1,14021986,loki,suckmydick,strawber,carlos1,nokian73,dirty1,joshu,25091987,16121987,02041975,advent,17011987,slimshady,whistler,10101990,stryker,22031984,15021985,01031985,blueball,26031988,ksusha,bahamut,robocop,w_pass,chris123,impreza,prozac,bookie,bricks,13021990,alice1,cassandr,11111q,john123,4ever,korova,02051973,142857,25041988,paramedi,eclipse1,salope,07091990,1124,darkangel,23021986,999666,nomad,02051981,smackdow,01021990,yoyoma,argentin,moonligh,57chevy,bootys,hardone,capricor,galant,spanker,dkflbr,24111989,magpies,krolik,21051988,cevthrb,cheddar,22041988,bigbooty,scuba1,qwedsa,duffman,bukkake,acura,johncena,sexxy,p@ssw0rd,258369,cherries,12345s,asgard,leopold,fuck123,mopar,lalakers,dogpound,matrix1,crusty,spanner,kestrel,fenris,universa,peachy,assasin,lemmein,eggplant,hejsan,canucks,wendy1,doggy1,aikman,tupac,turnip,godlike,fussball,golden1,19283746,april1,django,petrova,captain1,vincent1,ratman,taekwondo,chocha,serpent,perfect1,capetown,vampir,amore,gymnast,timeout,nbvjatq,blue32,ksenia,k.lvbkf,nazgul,budweiser,clutch,mariya,sylveste,02051972,beaker,cartman1,q11111,sexxx,forever1,loser1,marseill,magellan,vehpbr,sexgod,jktxrf,hallo123,132456,liverpool1,southpaw,seneca,camden,357159,camero,tenchi,johndoe,145236,roofer,741963,vlad,02041978,fktyrf,zxcv123,wingnut,wolfpac,notebook,pufunga7782,brandy1,biteme1,goodgirl,redhat,02031978,challeng,millenium,hoops,maveric,noname,angus1,gaell,onion,olympus,sabrina1,ricard,sixpack,gratis,gagged,camaross,hotgirls,flasher,02051977,bubba123,goldfing,moonshin,gerrard,volkov,sonyfuck,mandrake,258963,tracer,lakers1,asians,susan1,money12,helmut,boater,diablo2,1234zxcv,dogwood,bubbles1,happy2,randy1,aries,beach1,marcius2,navigator,goodie,hellokitty,fkbyjxrf,earthlink,lookout,jumbo,opendoor,stanley1,marie1,12345m,07071977,ashle,wormix,murzik,02081976,lakewood,bluejays,loveya,commande,gateway2,peppe,01011976,7896321,goth,oreo,slammer,rasmus,faith1,knight1,stone1,redskin,ironmaiden,gotmilk,destiny1,dejavu,1master,midnite,timosha,espresso,delfin,toriamos,oberon,ceasar,markie,1a2s3d,ghhh47hj7649,vjkjrj,daddyo,dougie,disco,auggie,lekker,therock1,ou8123,start1,noway,p4ssw0rd,shadow12,333444,saigon,2fast4u,capecod,23skidoo,qazxcv,beater,bremen,aaasss,roadrunner,peace1,12345qwer,02071975,platon,bordeaux,vbkfirf,135798642,test12,supernov,beatles1,qwert40,optimist,vanessa1,prince1,ilovegod,nightwish,natasha1,alchemy,bimbo,blue99,patches1,gsxr1000,richar,hattrick,hott,solaris,proton,nevets,enternow,beavis1,amigos,159357a,ambers,lenochka,147896,suckdick,shag,intercourse,blue1234,spiral,02061977,tosser,ilove,02031975,cowgirl,canuck,q2w3e4,munch,spoons,waterboy,123567,evgeniy,savior,zasada,redcar,mamacita,terefon,globus,doggies,htubcnhfwbz,1008,cuervo,suslik,azertyui,limewire,houston1,stratfor,steaua,coors,tennis1,12345qwerty,stigmata,derf,klondike,patrici,marijuan,hardball,odyssey,nineinch,boston1,pass1,beezer,sandr,charon,power123,a1234,vauxhall,875421,awesome1,reggae,boulder,funstuff,iriska,krokodil,rfntymrf,sterva,champ1,bball,peeper,m123456,toolbox,cabernet,sheepdog,magic32,pigpen,02041977,holein1,lhfrjy,banan,dabomb,natalie1,jennaj,montana1,joecool,funky,steven1,ringo,junio,sammy123,qqqwww,baltimor,footjob,geezer,357951,mash4077,cashmone,pancake,monic,grandam,bongo,yessir,gocubs,nastia,vancouve,barley,dragon69,watford,ilikepie,02071976,laddie,123456789m,hairball,toonarmy,pimpdadd,cvthnm,hunte,davinci,lback,sophie1,firenze,q1234567,admin1,bonanza,elway7,daman,strap,azert,wxcvbn,afrika,theforce,123456t,idefix,wolfen,houdini,scheisse,default,beech,maserati,02061976,sigmachi,dylan1,bigdicks,eskimo,mizzou,02101976,riccardo,egghead,111777,kronos,ghbrjk,chaos1,jomama,rfhnjirf,rodeo,dolemite,cafc91,nittany,pathfind,mikael,password9,vqsablpzla,purpl,gabber,modelsne,myxworld,hellsing,punker,rocknrol,fishon,fuck69,02041976,lolol,twinkie,tripleh,cirrus,redbone,killer123,biggun,allegro,gthcbr,smith1,wanking,bootsy,barry1,mohawk,koolaid,5329,futurama,samoht,klizma,996633,lobo,honeys,peanut1,556677,zxasqw,joemama,javelin,samm,223322,sandra1,flicks,montag,nataly,3006,tasha1,1235789,dogbone,poker1,p0o9i8u7,goodday,smoothie,toocool,max333,metroid,archange,vagabond,billabon,22061941,tyson1,02031973,darkange,skateboard,evolutio,morrowind,wizards,frodo1,rockin,cumslut,plastics,zaqwsxcde,5201314,doit,outback,bumble,dominiqu,persona,nevermore,alinka,02021971,forgetit,sexo,all4one,c2h5oh,petunia,sheeba,kenny1,elisabet,aolsucks,woodstoc,pumper,02011975,fabio,granada,scrapper,123459,minimoni,q123456789,breaker,1004,02091976,ncc74656,slimshad,friendster,austin31,wiseguy,donner,dilbert1,132465,blackbird,buffet,jellybean,barfly,behappy,01011971,carebear,fireblad,02051975,boxcar,cheeky,kiteboy,hello12,panda1,elvisp,opennow,doktor,alex12,02101977,pornking,flamengo,02091975,snowbird,lonesome,robin1,11111a,weed420,baracuda,bleach,12345abc,nokia1,metall,singapor,mariner,herewego,dingo,tycoon,cubs,blunts,proview,123456789d,kamasutra,lagnaf,vipergts,navyseal,starwar,masterbate,wildone,peterbil,cucumber,butkus,123qwert,climax,deniro,gotribe,cement,scooby1,summer69,harrier,shodan,newyear,02091977,starwars1,romeo1,sedona,harald,doubled,sasha123,bigguns,salami,awnyce,kiwi,homemade,pimping,azzer,bradley1,warhamme,linkin,dudeman,qwe321,pinnacle,maxdog,flipflop,lfitymrf,fucker1,acidburn,esquire,sperma,fellatio,jeepster,thedon,sexybitch,pookey,spliff,widget,vfntvfnbrf,trinity1,mutant,samuel1,meliss,gohome,1q2q3q,mercede,comein,grin,cartoons,paragon,henrik,rainyday,pacino,senna,bigdog1,alleycat,12345qaz,narnia,mustang2,tanya1,gianni,apollo11,wetter,clovis,escalade,rainbows,freddy1,smart1,daisydog,s123456,cocksucker,pushkin,lefty,sambo,fyutkjxtr,hiziad,boyz,whiplash,orchard,newark,adrenalin,1598753,bootsie,chelle,trustme,chewy,golfgti,tuscl,ambrosia,5wr2i7h8,penetration,shonuf,jughead,payday,stickman,gotham,kolokol,johnny5,kolbasa,stang,puppydog,charisma,gators1,mone,jakarta,draco,nightmar,01011973,inlove,laetitia,02091973,tarpon,nautica,meadow,0192837465,luckyone,14881488,chessie,goldeney,tarakan,69camaro,bungle,wordup,interne,fuckme2,515000,dragonfl,sprout,02081974,gerbil,bandit1,02071971,melanie1,phialpha,camber,kathy1,adriano,gonzo1,10293847,bigjohn,bismarck,7777777a,scamper,12348765,rabbits,222777,bynthytn,dima123,alexander1,mallorca,dragster,favorite6,beethove,burner,cooper1,fosters,hello2,normandy,777999,sebring,1michael,lauren1,blake1,killa,02091971,nounours,trumpet1,thumper1,playball,xantia,rugby1,rocknroll,guillaum,angela1,strelok,prosper,buttercup,masterp,dbnfkbr,cambridg,venom,treefrog,lumina,1234566,supra,sexybabe,freee,shen,frogs,driller,pavement,grace1,dicky,checker,smackdown,pandas,cannibal,asdffdsa,blue42,zyjxrf,nthvbyfnjh,melrose,neon,jabber,gamma,369258147,aprilia,atticus,benessere,catcher,skipper1,azertyuiop,sixty9,thierry,treetop,jello,melons,123456789qwe,tantra,buzzer,catnip,bouncer,computer1,sexyone,ananas,young1,olenka,sexman,mooses,kittys,sephiroth,contra,hallowee,skylark,sparkles,777333,1qazxsw23edc,lucas1,q1w2e3r,gofast,hannes,amethyst,ploppy,flower2,hotass,amatory,volleyba,dixie1,bettyboo,ticklish,02061974,frenchy,phish1,murphy1,trustno,02061972,leinad,mynameis,spooge,jupiter1,hyundai,frosch,junkmail,abacab,marbles,32167,casio,sunshine1,wayne1,longhair,caster,snicker,02101973,gannibal,skinhead,hansol,gatsby,segblue2,montecar,plato,gumby,kaboom,matty,bosco1,888999,jazzy,panter,jesus123,charlie2,giulia,candyass,sex69,travis1,farmboy,special1,02041973,letsdoit,password01,allison1,abcdefg1,notredam,ilikeit,789654123,liberty1,rugger,uptown,alcatraz,123456w,airman,007bond,navajo,kenobi,terrier,stayout,grisha,frankie1,fluff,1qazzaq1,1234561,virginie,1234568,tango1,werdna,octopus,fitter,dfcbkbcf,blacklab,115599,montrose,allen1,supernova,frederik,ilovepussy,justice1,radeon,playboy2,blubber,sliver,swoosh,motocros,lockdown,pearls,thebear,istheman,pinetree,biit,1234rewq,rustydog,tampabay,titts,babycake,jehovah,vampire1,streaming,collie,camil,fidelity,calvin1,stitch,gatit,restart,puppy1,budgie,grunt,capitals,hiking,dreamcas,zorro1,321678,riffraff,makaka,playmate,napalm,rollin,amstel,zxcvb123,samanth,rumble,fuckme69,jimmys,951357,pizzaman,1234567899,tralala,delpiero,alexi,yamato,itisme,1million,vfndtq,kahlua,londo,wonderboy,carrots,tazz,ratboy,rfgecnf,02081973,nico,fujitsu,tujhrf,sergbest,blobby,02051970,sonic1,1357911,smirnov,video1,panhead,bucky,02031974,44332211,duffer,cashmoney,left4dead,bagpuss,salman,01011972,titfuck,66613666,england1,malish,dresden,lemans,darina,zapper,123456as,123456qqq,met2002,02041972,redstar,blue23,1234509876,pajero,booyah,please1,tetsuo,semper,finder,hanuman,sunlight,123456n,02061971,treble,cupoi,password99,dimitri,3ip76k2,popcorn1,lol12345,stellar,nympho,shark1,keith1,saskia,bigtruck,revoluti,rambo1,asd222,feelgood,phat,gogators,bismark,cola,puck,furball,burnout,slonik,bowtie,mommy1,icecube,fabienn,mouser,papamama,rolex,giants1,blue11,trooper1,momdad,iklo,morten,rhubarb,gareth,123456d,blitz,canada1,r2d2,brest,tigercat,usmarine,lilbit,benny1,azrael,lebowski,12345r,madagaskar,begemot,loverman,dragonballz,italiano,mazda3,naughty1,onions,diver1,cyrano,capcom,asdfg123,forlife,fisherman,weare138,requiem,mufasa,alpha123,piercing,hellas,abracadabra,duckman,caracas,macintos,02011971,jordan2,crescent,fduecn,hogtied,eatmenow,ramjet,18121812,kicksass,whatthe,discus,rfhfvtkmrf,rufus1,sqdwfe,mantle,vegitto,trek,dan123,paladin1,rudeboy,liliya,lunchbox,riversid,acapulco,libero,dnsadm,maison,toomuch,boobear,hemlock,sextoy,pugsley,misiek,athome,migue,altoids,marcin,123450,rhfcfdbwf,jeter2,rhinos,rjhjkm,mercury1,ronaldinho,shampoo,makayla,kamilla,masterbating,tennesse,holger,john1,matchbox,hores,poptart,parlament,goodyear,asdfgh1,02081970,hardwood,alain,erection,hfytnrb,highlife,implants,benjami,dipper,jeeper,bendover,supersonic,babybear,laserjet,gotenks,bama,natedogg,aol123,pokemo,rabbit1,raduga,sopranos,cashflow,menthol,pharao,hacking,334455,ghjcnbnenrf,lizzy,muffin1,pooky,penis1,flyer,gramma,dipset,becca,ireland1,diana1,donjuan,pong,ziggy1,alterego,simple1,cbr900,logger,111555,claudia1,cantona7,matisse,ljxtymrf,victori,harle,mamas,encore,mangos,iceman1,diamon,alexxx,tiamat,5000,desktop,mafia,smurf,princesa,shojou,blueberr,welkom,maximka,123890,123q123,tammy1,bobmarley,clips,demon666,ismail,termite,laser1,missie,altair,donna1,bauhaus,trinitron,mogwai,flyers88,juniper,nokia5800,boroda,jingles,qwerasdfzxcv,shakur,777666,legos,mallrats,1qazxsw,goldeneye,tamerlan,julia1,backbone,spleen,49ers,shady,darkone,medic1,justi,giggle,cloudy,aisan,douche,parkour,bluejay,huskers1,redwine,1qw23er4,satchmo,1231234,nineball,stewart1,ballsack,probes,kappa,amiga,flipper1,dortmund,963258,trigun,1237895,homepage,blinky,screwy,gizzmo,belkin,chemist,coolhand,chachi,braves1,thebest,greedisgood,pro100,banana1,101091m,123456g,wonderfu,barefeet,8inches,1111qqqq,kcchiefs,qweasdzxc123,metal1,jennifer1,xian,asdasd123,pollux,cheerleaers,fruity,mustang5,turbos,shopper,photon,espana,hillbill,oyster,macaroni,gigabyte,jesper,motown,tuxedo,buster12,triplex,cyclones,estrell,mortis,holla,456987,fiddle,sapphic,jurassic,thebeast,ghjcnjq,baura,spock1,metallica1,karaoke,nemrac58,love1234,02031970,flvbybcnhfnjh,frisbee,diva,ajax,feathers,flower1,soccer11,allday,mierda,pearl1,amature,marauder,333555,redheads,womans,egorka,godbless,159263,nimitz,aaaa1111,sashka,madcow,socce,greywolf,baboon,pimpdaddy,123456789r,reloaded,lancia,rfhfylfi,dicker,placid,grimace,22446688,olemiss,whores,culinary,wannabe,maxi,1234567aa,amelie,riley1,trample,phantom1,baberuth,bramble,asdfqwer,vides,4you,abc123456,taichi,aztnm,smother,outsider,hakr,blackhawk,bigblack,girlie,spook,valeriya,gianluca,freedo,1q2q3q4q,handbag,lavalamp,cumm,pertinant,whatup,nokia123,redlight,patrik,111aaa,poppy1,dfytxrf,aviator,sweeps,kristin1,cypher,elway,yinyang,access1,poophead,tucson,noles1,monterey,waterfal,dank,dougal,918273,suede,minnesot,legman,bukowski,ganja,mammoth,riverrat,asswipe,daredevi,lian,arizona1,kamikadze,alex1234,smile1,angel2,55bgates,bellagio,0001,wanrltw,stiletto,lipton,arsena,biohazard,bbking,chappy,tetris,as123456,darthvad,lilwayne,nopassword,7412369,123456789987654321,natchez,glitter,14785236,mytime,rubicon,moto,pyon,wazzup,tbird,shane1,nightowl,getoff,beckham7,trueblue,hotgirl,nevermin,deathnote,13131,taffy,bigal,copenhag,apricot,gallaries,dtkjcbgtl,totoro,onlyone,civicsi,jesse1,baby123,sierra1,festus,abacus,sickboy,fishtank,fungus,charle,golfpro,teensex,mario66,seaside,aleksei,rosewood,blackberry,1020304050,bedlam,schumi,deerhunt,contour,darkelf,surveyor,deltas,pitchers,741258963,dipstick,funny1,lizzard,112233445566,jupiter2,softtail,titman,greenman,z1x2c3v4b5,smartass,12345677,notnow,myworld,nascar1,chewbacc,nosferatu,downhill,dallas22,kuan,blazers,whales,soldat,craving,powerman,yfcntyf,hotrats,cfvceyu,qweasdzx,princess1,feline,qqwwee,chitown,1234qaz,mastermind,114477,dingbat,care1839,standby,kismet,atreides,dogmeat,icarus,monkeyboy,alex1,mouses,nicetits,sealteam,chopper1,crispy,winter99,rrpass1,myporn,myspace1,corazo,topolino,ass123,lawman,muffy,orgy,1love,passord,hooyah,ekmzyf,pretzel,amonra,nestle,01011950,jimbeam,happyman,z12345,stonewal,helios,manunited,harcore,dick1,gaymen,2hot4u,light1,qwerty13,kakashi,pjkjnj,alcatel,taylo,allah,buddydog,ltkmaby,mongo,blonds,start123,audia6,123456v,civilwar,bellaco,turtles,mustan,deadspin,aaa123,fynjirf,lucky123,tortoise,amor,summe,waterski,zulu,drag0n,dtxyjcnm,gizmos,strife,interacial,pusyy,goose1,bear1,equinox,matri,jaguar1,tobydog,sammys,nachos,traktor,bryan1,morgoth,444555,dasani,miami1,mashka,xxxxxx1,ownage,nightwin,hotlips,passmast,cool123,skolko,eldiablo,manu,1357908642,screwyou,badabing,foreplay,hydro,kubrick,seductive,demon1,comeon,galileo,aladdin,metoo,happines,902100,mizuno,caddy,bizzare,girls1,redone,ohmygod,sable,bonovox,girlies,hamper,opus,gizmodo1,aaabbb,pizzahut,999888,rocky2,anton1,kikimora,peavey,ocelot,a1a2a3a4,2wsx3edc,jackie1,solace,sprocket,galary,chuck1,volvo1,shurik,poop123,locutus,virago,wdtnjxtr,tequier,bisexual,doodles,makeitso,fishy,789632145,nothing1,fishcake,sentry,libertad,oaktree,fivestar,adidas1,vegitta,mississi,spiffy,carme,neutron,vantage,agassi,boners,123456789v,hilltop,taipan,barrage,kenneth1,fister,martian,willem,lfybkf,bluestar,moonman,ntktdbpjh,paperino,bikers,daffy,benji,quake,dragonfly,suckcock,danilka,lapochka,belinea,calypso,asshol,camero1,abraxas,mike1234,womam,q1q2q3q4q5,youknow,maxpower,pic\\'s,audi80,sonora,raymond1,tickler,tadpole,belair,crazyman,finalfantasy,999000,jonatha,paisley,kissmyas,morgana,monste,mantra,spunk,magic123,jonesy,mark1,alessand,741258,baddest,ghbdtnrfrltkf,zxccxz,tictac,augustin,racers,7grout,foxfire,99762000,openit,nathanie,1z2x3c4v5b,seadog,gangbanged,lovehate,hondacbr,harpoon,mamochka,fisherma,bismilla,locust,wally1,spiderman1,saffron,utjhubq,123456987,20spanks,safeway,pisser,bdfyjd,kristen1,bigdick1,magenta,vfhujif,anfisa,friday13,qaz123wsx,0987654321q,tyrant,guan,meggie,kontol,nurlan,ayanami,rocket1,yaroslav,websol76,mutley,hugoboss,websolutions,elpaso,gagarin,badboys,sephirot,918273645,newuser,qian,edcrfv,booger1,852258,lockout,timoxa94,mazda323,firedog,sokolova,skydiver,jesus777,1234567890z,soulfly,canary,malinka,guillerm,hookers,dogfart,surfer1,osprey,india123,rhjkbr,stoppedby,nokia5530,123456789o,blue1,werter,divers,3000,123456f,alpina,cali,whoknows,godspeed,986532,foreskin,fuzzy1,heyyou,didier,slapnuts,fresno,rosebud1,sandman1,bears1,blade1,honeybun,queen1,baronn,pakista,philipp,9111961,topsecret,sniper1,214365,slipper,letsfuck,pippen33,godawgs,mousey,qw123456,scrotum,loveis,lighthou,bp2002,nancy123,jeffrey1,susieq,buddy2,ralphie,trout1,willi,antonov,sluttey,rehbwf,marty1,darian,losangeles,letme1n,12345d,pusssy,godiva,ender,golfnut,leonidas,a1b2c3d4e5,puffer,general1,wizzard,lehjxrf,racer1,bigbucks,cool12,buddys,zinger,esprit,vbienrf,josep,tickling,froggie,987654321a,895623,daddys,crumbs,gucci,mikkel,opiate,tracy1,christophe,came11,777555,petrovich,humbug,dirtydog,allstate,horatio,wachtwoord,creepers,squirts,rotary,bigd,georgia1,fujifilm,2sweet,dasha,yorkie,slimjim,wiccan,kenzie,system1,skunk,b12345,getit,pommes,daredevil,sugars,bucker,piston,lionheart,1bitch,515051,catfight,recon,icecold,fantom,vodafone,kontakt,boris1,vfcnth,canine,01011961,valleywa,faraon,chickenwing101,qq123456,livewire,livelife,roosters,jeepers,ilya1234,coochie,pavlik,dewalt,dfhdfhf,architec,blackops,1qaz2wsx3edc4rfv,rhfcjnf,wsxedc,teaser,sebora,25252,rhino1,ankara,swifty,decimal,redleg,shanno,nermal,candies,smirnova,dragon01,photo1,ranetki,a1s2d3f4g5,axio,wertzu,maurizio,6uldv8,zxcvasdf,punkass,flowe,graywolf,peddler,3rjs1la7qe,mpegs,seawolf,ladyboy,pianos,piggies,vixen,alexus,orpheus,gdtrfb,z123456,macgyver,hugetits,ralph1,flathead,maurici,mailru,goofball,nissan1,nikon,stopit,odin,big1,smooch,reboot,famil,bullit,anthony7,gerhard,methos,124038,morena,eagle2,jessica2,zebras,getlost,gfynthf,123581321,sarajevo,indon,comets,tatjana,rfgbnjirf,joystick,batman12,123456c,sabre,beerme,victory1,kitties,1475369,badboy1,booboo1,comcast,slava,squid,saxophon,lionhear,qaywsx,bustle,nastena,roadway,loader,hillside,starlight,24681012,niggers,access99,bazooka,molly123,blackice,bandi,cocacol,nfhfrfy,timur,muschi,horse1,quant4307s,squerting,oscars,mygirls,flashman,tangerin,goofy1,p0o9i8,housewifes,newness,monkey69,escorpio,password11,hippo,warcraft3,qazxsw123,qpalzm,ribbit,ghbdtndctv,bogota,star123,258000,lincoln1,bigjim,lacoste,firestorm,legenda,indain,ludacris,milamber,1009,evangeli,letmesee,a111111,hooters1,bigred1,shaker,husky,a4tech,cnfkrth,argyle,rjhjdf,nataha,0o9i8u7y,gibson1,sooners1,glendale,archery,hoochie,stooge,aaaaaa1,scorpions,school1,vegas1,rapier,mike23,bassoon,groupd2013,macaco,baker1,labia,freewill,santiag,silverado,butch1,vflfufcrfh,monica1,rugrat,cornhole,aerosmit,bionicle,gfgfvfvf,daniel12,virgo,fmale,favorite2,detroit1,pokey,shredder,baggies,wednesda,cosmo1,mimosa,sparhawk,firehawk,romario,911turbo,funtimes,fhntvrf,nexus6,159753456,timothy1,bajingan,terry1,frenchie,raiden,1mustang,babemagnet,74123698,nadejda,truffles,rapture,douglas1,lamborghini,motocross,rjcvjc,748596,skeeter1,dante1,angel666,telecom,carsten,pietro,bmw318,astro1,carpediem,samir,orang,helium,scirocco,fuzzball,rushmore,rebelz,hotspur,lacrimosa,chevys10,madonna1,domenico,yfnfirf,jachin,shelby1,bloke,dawgs,dunhill,atlanta1,service1,mikado,devilman,angelit,reznor,euphoria,lesbain,checkmat,browndog,phreak,blaze1,crash1,farida,mutter,luckyme,horsemen,vgirl,jediknig,asdas,cesare,allnight,rockey,starlite,truck1,passfan,close-up,samue,cazzo,wrinkles,homely,eatme1,sexpot,snapshot,dima1995,asthma,thetruth,ducky,blender,priyanka,gaucho,dutchman,sizzle,kakarot,651550,passcode,justinbieber,666333,elodie,sanjay,110442,alex01,lotus1,2300mj,lakshmi,zoomer,quake3,12349876,teapot,12345687,ramada,pennywis,striper,pilot1,chingon,optima,nudity,ethan1,euclid,beeline,loyola,biguns,zaq12345,bravo1,disney1,buffa,assmunch,vivid,6661313,wellingt,aqwzsx,madala11,9874123,sigmar,pictere,tiptop,bettyboop,dinero,tahiti,gregory1,bionic,speed1,fubar1,lexus1,denis1,hawthorn,saxman,suntzu,bernhard,dominika,camaro1,hunter12,balboa,bmw2002,seville,diablo1,vfhbyjxrf,1234abc,carling,lockerroom,punani,darth,baron1,vaness,1password,libido,picher,232425,karamba,futyn007,daydream,11001001,dragon123,friends1,bopper,rocky123,chooch,asslover,shimmer,riddler,openme,tugboat,sexy123,midori,gulnara,christo,swatch,laker,offroad,puddles,hackers,mannheim,manager1,horseman,roman1,dancer1,komputer,pictuers,nokia5130,ejaculation,lioness,123456y,evilone,nastenka,pushok,javie,lilman,3141592,mjolnir,toulouse,pussy2,bigworm,smoke420,fullback,extensa,dreamcast,belize,delboy,willie1,casablanca,csyjxtr,ricky1,bonghit,salvator,basher,pussylover,rosie1,963258741,vivitron,cobra427,meonly,armageddon,myfriend,zardoz,qwedsazxc,kraken,fzappa,starfox,333999,illmatic,capoeira,weenie,ramzes,freedom2,toasty,pupkin,shinigami,fhvfutljy,nocturne,churchil,thumbnils,tailgate,neworder,sexymama,goarmy,cerebus,michelle1,vbifyz,surfsup,earthlin,dabulls,basketbal,aligator,mojojojo,saibaba,welcome2,wifes,wdtnjr,12345w,slasher,papabear,terran,footman,hocke,153759,texans,tom123,sfgiants,billabong,aassdd,monolith,xxx777,l3tm31n,ticktock,newone,hellno,japanees,contortionist,admin123,scout1,alabama1,divx1,rochard,privat,radar1,bigdad,fhctybq,tortuga,citrus,avanti,fantasy1,woodstock,s12345,fireman1,embalmer,woodwork,bonzai,konyor,newstart,jigga,panorama,goats,smithy,rugrats,hotmama,daedalus,nonstop,fruitbat,lisenok,quaker,violator,12345123,my3sons,cajun,fraggle,gayboy,oldfart,vulva,knickerless,orgasms,undertow,binky,litle,kfcnjxrf,masturbation,bunnie,alexis1,planner,transexual,sparty,leeloo,monies,fozzie,stinger1,landrove,anakonda,scoobie,yamaha1,henti,star12,rfhlbyfk,beyonce,catfood,cjytxrf,zealots,strat,fordtruc,archangel,silvi,sativa,boogers,miles1,bigjoe,tulip,petite,greentea,shitter,jonboy,voltron,morticia,evanescence,3edc4rfv,longshot,windows1,serge,aabbcc,starbucks,sinful,drywall,prelude1,www123,camel1,homebrew,marlins,123412,letmeinn,domini,swampy,plokij,fordf350,webcam,michele1,bolivi,27731828,wingzero,qawsedrftg,shinji,sverige,jasper1,piper1,cummer,iiyama,gocats,amour,alfarome,jumanji,mike69,fantasti,1monkey,w00t88,shawn1,lorien,1a2s3d4f5g,koleso,murph,natascha,sunkist,kennwort,emine,grinder,m12345,q1q2q3q4,cheeba,money2,qazwsxedc1,diamante,prosto,pdiddy,stinky1,gabby1,luckys,franci,pornographic,moochie,gfhjdjp,samdog,empire1,comicbookdb,emili,motdepasse,iphone,braveheart,reeses,nebula,sanjose,bubba2,kickflip,arcangel,superbow,porsche911,xyzzy,nigger1,dagobert,devil1,alatam,monkey2,barbara1,12345v,vfpfafrf,alessio,babemagn,aceman,arrakis,kavkaz,987789,jasons,berserk,sublime1,rogue1,myspace,buckwhea,csyekz,pussy4me,vette1,boots1,boingo,arnaud,budlite,redstorm,paramore,becky1,imtheman,chango,marley1,milkyway,666555,giveme,mahalo,lux2000,lucian,paddy,praxis,shimano,bigpenis,creeper,newproject2004,rammstei,j3qq4h7h2v,hfljcnm,lambchop,anthony2,bugman,gfhjkm12,dreamer1,stooges,cybersex,diamant,cowboyup,maximus1,sentra,615243,goethe,manhatta,fastcar,selmer,1213141516,yfnfitymrf,denni,chewey,yankee1,elektra,123456789p,trousers,fishface,topspin,orwell,vorona,sodapop,motherfu,ibilltes,forall,kookie,ronald1,balrog,maximilian,mypasswo,sonny1,zzxxcc,tkfkdg,magoo,mdogg,heeled,gitara,lesbos,marajade,tippy,morozova,enter123,lesbean,pounded,asd456,fialka,scarab,sharpie,spanky1,gstring,sachin,12345asd,princeto,hellohel,ursitesux,billows,1234kekc,kombat,cashew,duracell,kseniya,sevenof9,kostik,arthur1,corvet07,rdfhnbhf,songoku,tiberian,needforspeed,1qwert,dropkick,kevin123,panache,libra,a123456a,kjiflm,vfhnsirf,cntgfy,iamcool,narut,buffer,sk8ordie,urlaub,fireblade,blanked,marishka,gemini1,altec,gorillaz,chief1,revival47,ironman1,space1,ramstein,doorknob,devilmaycry,nemesis1,sosiska,pennstat,monday1,pioner,shevchenko,detectiv,evildead,blessed1,aggie,coffees,tical,scotts,bullwink,marsel,krypto,adrock,rjitxrf,asmodeus,rapunzel,theboys,hotdogs,deepthro,maxpayne,veronic,fyyeirf,otter,cheste,abbey1,thanos,bedrock,bartok,google1,xxxzzz,rodent,montecarlo,hernande,mikayla,123456789l,bravehea,12locked,ltymub,pegasus1,ameteur,saltydog,faisal,milfnew,momsuck,everques,ytngfhjkz,m0nkey,businessbabe,cooki,custard,123456ab,lbvjxrf,outlaws,753357,qwerty78,udacha,insider,chees,fuckmehard,shotokan,katya,seahorse,vtldtlm,turtle1,mike12,beebop,heathe,everton1,darknes,barnie,rbcekz,alisher,toohot,theduke,555222,reddog1,breezy,bulldawg,monkeyman,baylee,losangel,mastermi,apollo1,aurelie,zxcvb12345,cayenne,bastet,wsxzaq,geibcnbr,yello,fucmy69,redwall,ladybird,bitchs,cccccc1,rktjgfnhf,ghjdthrf,quest1,oedipus,linus,impalass,fartman,12345k,fokker,159753a,optiplex,bbbbbb1,realtor,slipkno,santacru,rowdy,jelena,smeller,3984240,ddddd1,sexyme,janet1,3698741,eatme69,cazzone,today1,poobear,ignatius,master123,newpass1,heather2,snoopdogg,blondinka,pass12,honeydew,fuckthat,890098890,lovem,goldrush,gecko,biker1,llama,pendejo,avalanche,fremont,snowman1,gandolf,chowder,1a2b3c4d5e,flyguy,magadan,1fuck,pingvin,nokia5230,ab1234,lothar,lasers,bignuts,renee1,royboy,skynet,12340987,1122334,dragrace,lovely1,22334455,booter,12345612,corvett,123456qq,capital1,videoes,funtik,wyvern,flange,sammydog,hulkster,13245768,not4you,vorlon,omegared,l58jkdjp!,filippo,123mudar,samadams,petrus,chris12,charlie123,123456789123,icetea,sunderla,adrian1,123qweas,kazanova,aslan,monkey123,fktyeirf,goodsex,123ab,lbtest,banaan,bluenose,837519,asd12345,waffenss,whateve,1a2a3a4a,trailers,vfhbirf,bhbcrf,klaatu,turk182,monsoon,beachbum,sunbeam,succes,clyde1,viking1,rawhide,bubblegum,princ,mackenzi,hershey1,222555,dima55,niggaz,manatee,aquila,anechka,pamel,bugsbunn,lovel,sestra,newport1,althor,hornyman,wakeup,zzz111,phishy,cerber,torrent,thething,solnishko,babel,buckeye1,peanu,ethernet,uncencored,baraka,665544,chris2,rb26dett,willy1,choppers,texaco,biggirl,123456b,anna2614,sukebe,caralho,callofduty,rt6ytere,jesus7,angel12,1money,timelord,allblack,pavlova,romanov,tequiero,yitbos,lookup,bulls23,snowflake,dickweed,barks,lever,irisha,firestar,fred1234,ghjnjnbg,danman,gatito,betty1,milhouse,kbctyjr,masterbaiting,delsol,papit,doggys,123698741,bdfyjdf,invictus,bloods,kayla1,yourmama,apple2,angelok,bigboy1,pontiac1,verygood,yeshua,twins2,porn4me,141516,rasta69,james2,bosshog,candys,adventur,stripe,djkjlz,dokken,austin316,skins,hogwarts,vbhevbh,navigato,desperado,xxx666,cneltyn,vasiliy,hazmat,daytek,eightbal,fred1,four20,74227422,fabia,aerosmith,manue,wingchun,boohoo,hombre,sanity72,goatboy,fuckm,partizan,avrora,utahjazz,submarin,pussyeat,heinlein,control1,costaric,smarty,chuan,triplets,snowy,snafu,teacher1,vangogh,vandal,evergree,cochise,qwerty99,pyramid1,saab900,sniffer,qaz741,lebron23,mark123,wolvie,blackbelt,yoshi,feeder,janeway,nutella,fuking,asscock,deepak,poppie,bigshow,housewife,grils,tonto,cynthia1,temptress,irakli,belle1,russell1,manders,frank123,seabass,gforce,songbird,zippy1,naught,brenda1,chewy1,hotshit,topaz,43046721,girfriend,marinka,jakester,thatsme,planeta,falstaff,patrizia,reborn,riptide,cherry1,shuan,nogard,chino,oasis1,qwaszx12,goodlife,davis1,1911a1,harrys,shitfuck,12345678900,russian7,007700,bulls1,porshe,danil,dolphi,river1,sabaka,gobigred,deborah1,volkswagen,miamo,alkaline,muffdive,1letmein,fkbyrf,goodguy,hallo1,nirvan,ozzie,cannonda,cvbhyjdf,marmite,germany1,joeblow,radio1,love11,raindrop,159852,jacko,newday,fathead,elvis123,caspe,citibank,sports1,deuce,boxter,fakepass,golfman,snowdog,birthday4,nonmembe,niklas,parsifal,krasota,theshit,1235813,maganda,nikita1,omicron,cassie1,columbo,buick,sigma1,thistle,bassin,rickster,apteka,sienna,skulls,miamor,coolgirl,gravis,1qazxc,virgini,hunter2,akasha,batma,motorcyc,bambino,tenerife,fordf250,zhuan,iloveporn,markiza,hotbabes,becool,fynjybyf,wapapapa,forme,mamont,pizda,dragonz,sharon1,scrooge,mrbill,pfloyd,leeroy,natedog,ishmael,777111,tecumseh,carajo,nfy.irf,0000000000o,blackcock,fedorov,antigone,feanor,novikova,bobert,peregrin,spartan117,pumkin,rayman,manuals,tooltime,555333,bonethug,marina1,bonnie1,tonyhawk,laracroft,mahalkita,18273645,terriers,gamer,hoser,littlema,molotok,glennwei,lemon1,caboose,tater,12345654321,brians,fritz1,mistral,jigsaw,fuckshit,hornyguy,southside,edthom,antonio1,bobmarle,pitures,ilikesex,crafty,nexus,boarder,fulcrum,astonvil,yanks1,yngwie,account1,zooropa,hotlegs,sammi,gumbo,rover1,perkele,maurolarastefy,lampard,357753,barracud,dmband,abcxyz,pathfinder,335577,yuliya,micky,jayman,asdfg12345,1596321,halcyon,rerfhtre,feniks,zaxscd,gotyoass,jaycee,samson1,jamesb,vibrate,grandpri,camino,colossus,davidb,mamo4ka,nicky1,homer123,pinguin,watermelon,shadow01,lasttime,glider,823762,helen1,pyramids,tulane,osama,rostov,john12,scoote,bhbyrf,gohan,galeries,joyful,bigpussy,tonka,mowgli,astalavista,zzz123,leafs,dalejr8,unicorn1,777000,primal,bigmama,okmijn,killzone,qaz12345,snookie,zxcvvcxz,davidc,epson,rockman,ceaser,beanbag,katten,3151020,duckhunt,segreto,matros,ragnar,699669,sexsexse,123123z,fuckyeah,bigbutts,gbcmrf,element1,marketin,saratov,elbereth,blaster1,yamahar6,grime,masha,juneau,1230123,pappy,lindsay1,mooner,seattle1,katzen,lucent,polly1,lagwagon,pixie,misiaczek,666666a,smokedog,lakers24,eyeball,ironhors,ametuer,volkodav,vepsrf,kimmy,gumby1,poi098,ovation,1q2w3,drinker,penetrating,summertime,1dallas,prima,modles,takamine,hardwork,macintosh,tahoe,passthie,chiks,sundown,flowers1,boromir,music123,phaedrus,albert1,joung,malakas,gulliver,parker1,balder,sonne,jessie1,domainlock2005,express1,vfkbyf,youandme,raketa,koala,dhjnvytyjub,nhfrnjh,testibil,ybrbnjc,987654321q,axeman,pintail,pokemon123,dogggg,shandy,thesaint,11122233,x72jhhu3z,theclash,raptors,zappa1,djdjxrf,hell666,friday1,vivaldi,pluto1,lance1,guesswho,jeadmi,corgan,skillz,skippy1,mango1,gymnastic,satori,362514,theedge,cxfcnkbdfz,sparkey,deicide,bagels,lololol,lemmings,r4e3w2q1,silve,staind,schnuffi,dazzle,basebal1,leroy1,bilbo1,luckie,qwerty2,goodfell,hermione,peaceout,davidoff,yesterda,killah,flippy,chrisb,zelda1,headless,muttley,fuckof,tittys,catdaddy,photog,beeker,reaver,ram1500,yorktown,bolero,tryagain,arman,chicco,learjet,alexei,jenna1,go2hell,12s3t4p55,momsanaladventure,mustang9,protoss,rooter,ginola,dingo1,mojave,erica1,1qazse4,marvin1,redwolf,sunbird,dangerou,maciek,girsl,hawks1,packard1,excellen,dashka,soleda,toonces,acetate,nacked,jbond007,alligator,debbie1,wellhung,monkeyma,supers,rigger,larsson,vaseline,rjnzhf,maripos,123456asd,cbr600rr,doggydog,cronic,jason123,trekker,flipmode,druid,sonyvaio,dodges,mayfair,mystuff,fun4me,samanta,sofiya,magics,1ranger,arcane,sixtynin,222444,omerta,luscious,gbyudby,bobcats,envision,chance1,seaweed,holdem,tomate,mensch,slicer,acura1,goochi,qweewq,punter,repoman,tomboy,never1,cortina,gomets,147896321,369852147,dogma,bhjxrf,loglatin,eragon,strato,gazelle,growler,885522,klaudia,payton34,fuckem,butchie,scorpi,lugano,123456789k,nichola,chipper1,spide,uhbujhbq,rsalinas,vfylfhby,longhorns,bugatti,everquest,!qaz2wsx,blackass,999111,snakeman,p455w0rd,fanatic,family1,pfqxbr,777vlad,mysecret,marat,phoenix2,october1,genghis,panties1,cooker,citron,ace123,1234569,gramps,blackcoc,kodiak1,hickory,ivanhoe,blackboy,escher,sincity,beaks,meandyou,spaniel,canon1,timmy1,lancaste,polaroid,edinburg,fuckedup,hotman,cueball,golfclub,gopack,bookcase,worldcup,dkflbvbhjdbx,twostep,17171717aa,letsplay,zolushka,stella1,pfkegf,kingtut,67camaro,barracuda,wiggles,gjhjkm,prancer,patata,kjifhf,theman1,romanova,sexyass,copper1,dobber,sokolov,pomidor,algernon,cadman,amoremio,william2,silly1,bobbys,hercule,hd764nw5d7e1vb1,defcon,deutschland,robinhood,alfalfa,machoman,lesbens,pandora1,easypay,tomservo,nadezhda,goonies,saab9000,jordyn,f15eagle,dbrecz,12qwerty,greatsex,thrawn,blunted,baywatch,doggystyle,loloxx,chevy2,january1,kodak,bushel,78963214,ub6ib9,zz8807zpl,briefs,hawker,224488,first1,bonzo,brent1,erasure,69213124,sidewind,soccer13,622521,mentos,kolibri,onepiece,united1,ponyboy,keksa12,wayer,mypussy,andrej,mischa,mille,bruno123,garter,bigpun,talgat,familia,jazzy1,mustang8,newjob,747400,bobber,blackbel,hatteras,ginge,asdfjkl;,camelot1,blue44,rebbyt34,ebony1,vegas123,myboys,aleksander,ijrjkflrf,lopata,pilsner,lotus123,m0nk3y,andreev,freiheit,balls1,drjynfrnt,mazda1,waterpolo,shibumi,852963,123bbb,cezer121,blondie1,volkova,rattler,kleenex,ben123,sanane,happydog,satellit,qazplm,qazwsxedcrfvtgb,meowmix,badguy,facefuck,spice1,blondy,major1,25000,anna123,654321a,sober1,deathrow,patterso,china1,naruto1,hawkeye1,waldo1,butchy,crayon,5tgb6yhn,klopik,crocodil,mothra,imhorny,pookie1,splatter,slippy,lizard1,router,buratino,yahweh,123698,dragon11,123qwe456,peepers,trucker1,ganjaman,1hxboqg2,cheyanne,storys,sebastie,zztop,maddison,4rfv3edc,darthvader,jeffro,iloveit,victor1,hotty,delphin,lifeisgood,gooseman,shifty,insertions,dude123,abrupt,123masha,boogaloo,chronos,stamford,pimpster,kthjxrf,getmein,amidala,flubber,fettish,grapeape,dantes,oralsex,jack1,foxcg33,winchest,francis1,getin,archon,cliffy,blueman,1basebal,sport1,emmitt22,porn123,bignasty,morga,123hfjdk147,ferrar,juanito,fabiol,caseydog,steveo,peternorth,paroll,kimchi,bootleg,gaijin,secre,acacia,eatme2,amarillo,monkey11,rfhfgep,tylers,a1a2a3a4a5,sweetass,blower,rodina,babushka,camilo,cimbom,tiffan,vfnbkmlf,ohbaby,gotigers,lindsey1,dragon13,romulus,qazxsw12,zxcvbn1,dropdead,hitman47,snuggle,eleven11,bloopers,357mag,avangard,bmw320,ginscoot,dshade,masterkey,voodoo1,rootedit,caramba,leahcim,hannover,8phrowz622,tim123,cassius,000000a,angelito,zzzzz1,badkarma,star1,malaga,glenwood,footlove,golf1,summer12,helpme1,fastcars,titan1,police1,polinka,k.jdm,marusya,augusto,shiraz,pantyhose,donald1,blaise,arabella,brigada,c3por2d2,peter01,marco1,hellow,dillweed,uzumymw,geraldin,loveyou2,toyota1,088011,gophers,indy500,slainte,5hsu75kpot,teejay,renat,racoon,sabrin,angie1,shiznit,harpua,sexyred,latex,tucker1,alexandru,wahoo,teamwork,deepblue,goodison,rundmc,r2d2c3p0,puppys,samba,ayrton,boobed,999777,topsecre,blowme1,123321z,loudog,random1,pantie,drevil,mandolin,121212q,hottub,brother1,failsafe,spade1,matvey,open1234,carmen1,priscill,schatzi,kajak,gooddog,trojans1,gordon1,kayak,calamity,argent,ufhvjybz,seviyi,penfold,assface,dildos,hawkwind,crowbar,yanks,ruffles,rastus,luv2epus,open123,aquafina,dawns,jared1,teufel,12345c,vwgolf,pepsi123,amores,passwerd,01478520,boliva,smutty,headshot,password3,davidd,zydfhm,gbgbcmrf,pornpass,insertion,ceckbr,test2,car123,checkit,dbnfkbq,niggas,nyyankee,muskrat,nbuhtyjr,gunner1,ocean1,fabienne,chrissy1,wendys,loveme89,batgirl,cerveza,igorek,steel1,ragman,boris123,novifarm,sexy12,qwerty777,mike01,giveitup,123456abc,fuckall,crevice,hackerz,gspot,eight8,assassins,texass,swallows,123458,baldur,moonshine,labatt,modem,sydney1,voland,dbnfkz,hotchick,jacker,princessa,dawgs1,holiday1,booper,reliant,miranda1,jamaica1,andre1,badnaamhere,barnaby,tiger7,david12,margaux,corsica,085tzzqi,universi,thewall,nevermor,martin6,qwerty77,cipher,apples1,0102030405,seraphim,black123,imzadi,gandon,ducati99,1shadow,dkflbvbhjdyf,44magnum,bigbad,feedme,samantha1,ultraman,redneck1,jackdog,usmc0311,fresh1,monique1,tigre,alphaman,cool1,greyhoun,indycar,crunchy,55chevy,carefree,willow1,063dyjuy,xrated,assclown,federica,hilfiger,trivia,bronco1,mamita,100200300,simcity,lexingky,akatsuki,retsam,johndeere,abudfv,raster,elgato,businka,satanas,mattingl,redwing1,shamil,patate,mannn,moonstar,evil666,b123456,bowl300,tanechka,34523452,carthage,babygir,santino,bondarenko,jesuss,chico1,numlock,shyguy,sound1,kirby1,needit,mostwanted,427900,funky1,steve123,passions,anduril,kermit1,prospero,lusty,barakuda,dream1,broodwar,porky,christy1,mahal,yyyyyy1,allan1,1sexy,flintsto,capri,cumeater,heretic,robert2,hippos,blindax,marykay,collecti,kasumi,1qaz!qaz,112233q,123258,chemistr,coolboy,0o9i8u,kabuki,righton,tigress,nessie,sergej,andrew12,yfafyz,ytrhjvfyn,angel7,victo,mobbdeep,lemming,transfor,1725782,myhouse,aeynbr,muskie,leno4ka,westham1,cvbhyjd,daffodil,pussylicker,pamela1,stuffer,warehous,tinker1,2w3e4r,pluton,louise1,polarbea,253634,prime1,anatoliy,januar,wysiwyg,cobraya,ralphy,whaler,xterra,cableguy,112233a,porn69,jamesd,aqualung,jimmy123,lumpy,luckyman,kingsize,golfing1,alpha7,leeds1,marigold,lol1234,teabag,alex11,10sne1,saopaulo,shanny,roland1,basser,3216732167,carol1,year2005,morozov,saturn1,joseluis,bushed,redrock,memnoch,lalaland,indiana1,lovegod,gulnaz,buffalos,loveyou1,anteater,pattaya,jaydee,redshift,bartek,summerti,coffee1,ricochet,incest,schastie,rakkaus,h2opolo,suikoden,perro,dance1,loveme1,whoopass,vladvlad,boober,flyers1,alessia,gfcgjhn,pipers,papaya,gunsling,coolone,blackie1,gonads,gfhjkzytn,foxhound,qwert12,gangrel,ghjvtntq,bluedevi,mywife,summer01,hangman,licorice,patter,vfr750,thorsten,515253,ninguna,dakine,strange1,mexic,vergeten,12345432,8phrowz624,stampede,floyd1,sailfish,raziel,ananda,giacomo,freeme,crfprf,74185296,allstars,master01,solrac,gfnhbjn,bayliner,bmw525,3465xxx,catter,single1,michael3,pentium4,nitrox,mapet123456,halibut,killroy,xxxxx1,phillip1,poopsie,arsenalfc,buffys,kosova,all4me,32165498,arslan,opensesame,brutis,charles2,pochta,nadegda,backspac,mustang0,invis,gogeta,654321q,adam25,niceday,truckin,gfdkbr,biceps,sceptre,bigdave,lauras,user345,sandys,shabba,ratdog,cristiano,natha,march13,gumball,getsdown,wasdwasd,redhead1,dddddd1,longlegs,13572468,starsky,ducksoup,bunnys,omsairam,whoami,fred123,danmark,flapper,swanky,lakings,yfhenj,asterios,rainier,searcher,dapper,ltdjxrf,horsey,seahawk,shroom,tkfkdgo,aquaman,tashkent,number9,messi10,1asshole,milenium,illumina,vegita,jodeci,buster01,bareback,goldfinger,fire1,33rjhjds,sabian,thinkpad,smooth1,sully,bonghits,sushi1,magnavox,colombi,voiture,limpone,oldone,aruba,rooster1,zhenya,nomar5,touchdow,limpbizkit,rhfcfdxbr,baphomet,afrodita,bball1,madiso,ladles,lovefeet,matthew2,theworld,thunderbird,dolly1,123rrr,forklift,alfons,berkut,speedy1,saphire,oilman,creatine,pussylov,bastard1,456258,wicked1,filimon,skyline1,fucing,yfnfkbz,hot123,abdulla,nippon,nolimits,billiard,booty1,buttplug,westlife,coolbean,aloha1,lopas,asasin,1212121,october2,whodat,good4u,d12345,kostas,ilya1992,regal,pioneer1,volodya,focus1,bastos,nbvjif,fenix,anita1,vadimka,nickle,jesusc,123321456,teste,christ1,essendon,evgenii,celticfc,adam1,forumwp,lovesme,26exkp,chillout,burly,thelast1,marcus1,metalgear,test11,ronaldo7,socrate,world1,franki,mommie,vicecity,postov1000,charlie3,oldschool,333221,legoland,antoshka,counterstrike,buggy,mustang3,123454,qwertzui,toons,chesty,bigtoe,tigger12,limpopo,rerehepf,diddle,nokia3250,solidsnake,conan1,rockroll,963369,titanic1,qwezxc,cloggy,prashant,katharin,maxfli,takashi,cumonme,michael9,mymother,pennstate,khalid,48151623,fightclub,showboat,mateusz,elrond,teenie,arrow1,mammamia,dustydog,dominator,erasmus,zxcvb1,1a2a3a,bones1,dennis1,galaxie,pleaseme,whatever1,junkyard,galadriel,charlies,2wsxzaq1,crimson1,behemoth,teres,master11,fairway,shady1,pass99,1batman,joshua12,baraban,apelsin,mousepad,melon,twodogs,123321qwe,metalica,ryjgrf,pipiska,rerfhfxf,lugnut,cretin,iloveu2,powerade,aaaaaaa1,omanko,kovalenko,isabe,chobits,151nxjmt,shadow11,zcxfcnkbdf,gy3yt2rgls,vfhbyrf,159753123,bladerunner,goodone,wonton,doodie,333666999,fuckyou123,kitty123,chisox,orlando1,skateboa,red12345,destroye,snoogans,satan1,juancarlo,goheels,jetson,scottt,fuckup,aleksa,gfhfljrc,passfind,oscar123,derrick1,hateme,viper123,pieman,audi100,tuffy,andover,shooter1,10000,makarov,grant1,nighthaw,13576479,browneye,batigol,nfvfhf,chocolate1,7hrdnw23,petter,bantam,morlii,jediknight,brenden,argonaut,goodstuf,wisconsi,315920,abigail1,dirtbag,splurge,k123456,lucky777,valdepen,gsxr600,322223,ghjnjrjk,zaq1xsw2cde3,schwanz,walter1,letmein22,nomads,124356,codeblue,nokian70,fucke,footbal1,agyvorc,aztecs,passw0r,smuggles,femmes,ballgag,krasnodar,tamuna,schule,sixtynine,empires,erfolg,dvader,ladygaga,elite1,venezuel,nitrous,kochamcie,olivia1,trustn01,arioch,sting1,131415,tristar,555000,maroon,135799,marsik,555556,fomoco,natalka,cwoui,tartan,davecole,nosferat,hotsauce,dmitry,horus,dimasik,skazka,boss302,bluebear,vesper,ultras,tarantul,asd123asd,azteca,theflash,8ball,1footbal,titlover,lucas123,number6,sampson1,789852,party1,dragon99,adonai,carwash,metropol,psychnau,vthctltc,hounds,firework,blink18,145632,wildcat1,satchel,rice80,ghtktcnm,sailor1,cubano,anderso,rocks1,mike11,famili,dfghjc,besiktas,roygbiv,nikko,bethan,minotaur,rakesh,orange12,hfleuf,jackel,myangel,favorite7,1478520,asssss,agnieszka,haley1,raisin,htubyf,1buster,cfiekz,derevo,1a2a3a4a5a,baltika,raffles,scruffy1,clitlick,louis1,buddha1,fy.nrf,walker1,makoto,shadow2,redbeard,vfvfvskfhfve,mycock,sandydog,lineman,network1,favorite8,longdick,mustangg,mavericks,indica,1killer,cisco1,angelofwar,blue69,brianna1,bubbaa,slayer666,level42,baldrick,brutus1,lowdown,haribo,lovesexy,500000,thissuck,picker,stephy,1fuckme,characte,telecast,1bigdog,repytwjdf,thematrix,hammerhe,chucha,ganesha,gunsmoke,georgi,sheltie,1harley,knulla,sallas,westie,dragon7,conker,crappie,margosha,lisboa,3e2w1q,shrike,grifter,ghjcnjghjcnj,asdfg1,mnbvcxz1,myszka,posture,boggie,rocketman,flhtyfkby,twiztid,vostok,pi314159,force1,televizor,gtkmvtym,samhain,imcool,jadzia,dreamers,strannik,k2trix,steelhea,nikitin,commodor,brian123,chocobo,whopper,ibilljpf,megafon,ararat,thomas12,ghbrjkbcn,q1234567890,hibernia,kings1,jim123,redfive,68camaro,iawgk2,xavier1,1234567u,d123456,ndirish,airborn,halfmoon,fluffy1,ranchero,sneaker,soccer2,passion1,cowman,birthday1,johnn,razzle,glock17,wsxqaz,nubian,lucky2,jelly1,henderso,eric1,123123e,boscoe01,fuck0ff,simpson1,sassie,rjyjgkz,nascar3,watashi,loredana,janus,wilso,conman,david2,mothe,iloveher,snikers,davidj,fkmnthyfnbdf,mettss,ratfink,123456h,lostsoul,sweet16,brabus,wobble,petra1,fuckfest,otters,sable1,svetka,spartacu,bigstick,milashka,1lover,pasport,champagn,papichul,hrvatska,hondacivic,kevins,tacit,moneybag,gohogs,rasta1,246813579,ytyfdbcnm,gubber,darkmoon,vitaliy,233223,playboys,tristan1,joyce1,oriflame,mugwump,access2,autocad,thematri,qweqwe123,lolwut,ibill01,multisyn,1233211,pelikan,rob123,chacal,1234432,griffon,pooch,dagestan,geisha,satriani,anjali,rocketma,gixxer,pendrago,vincen,hellokit,killyou,ruger,doodah,bumblebe,badlands,galactic,emachines,foghorn,jackso,jerem,avgust,frontera,123369,daisymae,hornyboy,welcome123,tigger01,diabl,angel13,interex,iwantsex,rockydog,kukolka,sawdust,online1,3234412,bigpapa,jewboy,3263827,dave123,riches,333222,tony1,toggle,farter,124816,tities,balle,brasilia,southsid,micke,ghbdtn12,patit,ctdfcnjgjkm,olds442,zzzzzz1,nelso,gremlins,gypsy1,carter1,slut69,farcry,7415963,michael8,birdie1,charl,123456789abc,100001,aztec,sinjin,bigpimpi,closeup,atlas1,nvidia,doggone,classic1,manana,malcolm1,rfkbyf,hotbabe,rajesh,dimebag,ganjubas,rodion,jagr68,seren,syrinx,funnyman,karapuz,123456789n,bloomin,admin18533362,biggdogg,ocarina,poopy1,hellome,internet1,booties,blowjobs,matt1,donkey1,swede,1jennife,evgeniya,lfhbyf,coach1,444777,green12,patryk,pinewood,justin12,271828,89600506779,notredame,tuborg,lemond,sk8ter,million1,wowser,pablo1,st0n3,jeeves,funhouse,hiroshi,gobucs,angeleye,bereza,winter12,catalin,qazedc,andros,ramazan,vampyre,sweethea,imperium,murat,jamest,flossy,sandeep,morgen,salamandra,bigdogg,stroller,njdevils,nutsack,vittorio,%%passwo,playful,rjyatnrf,tookie,ubnfhf,michi,777444,shadow13,devils1,radiance,toshiba1,beluga,amormi,dandfa,trust1,killemall,smallville,polgara,billyb,landscap,steves,exploite,zamboni,damage11,dzxtckfd,trader12,pokey1,kobe08,damager,egorov,dragon88,ckfdbr,lisa69,blade2,audis4,nelson1,nibbles,23176djivanfros,mutabor,artofwar,matvei,metal666,hrfzlz,schwinn,poohbea,seven77,thinker,123456789qwerty,sobriety,jakers,karamelka,vbkfyf,volodin,iddqd,dale03,roberto1,lizaveta,qqqqqq1,cathy1,08154711,davidm,quixote,bluenote,tazdevil,katrina1,bigfoot1,bublik,marma,olechka,fatpussy,marduk,arina,nonrev67,qqqq1111,camill,wtpfhm,truffle,fairview,mashina,voltaire,qazxswedcvfr,dickface,grassy,lapdance,bosstone,crazy8,yackwin,mobil,danielit,mounta1n,player69,bluegill,mewtwo,reverb,cnthdf,pablito,a123321,elena1,warcraft1,orland,ilovemyself,rfntyjr,joyride,schoo,dthjxrf,thetachi,goodtimes,blacksun,humpty,chewbacca,guyute,123xyz,lexicon,blue45,qwe789,galatasaray,centrino,hendrix1,deimos,saturn5,craig1,vlad1996,sarah123,tupelo,ljrnjh,hotwife,bingos,1231231,nicholas1,flamer,pusher,1233210,heart1,hun999,jiggy,giddyup,oktober,123456zxc,budda,galahad,glamur,samwise,oneton,bugsbunny,dominic1,scooby2,freetime,internat,159753852,sc00ter,wantit,mazinger,inflames,laracrof,greedo,014789,godofwar,repytwjd,water123,fishnet,venus1,wallace1,tenpin,paula1,1475963,mania,novikov,qwertyasdfgh,goldmine,homies,777888999,8balls,holeinon,paper1,samael,013579,mansur,nikit,ak1234,blueline,polska1,hotcock,laredo,windstar,vbkbwbz,raider1,newworld,lfybkrf,catfish1,shorty1,piranha,treacle,royale,2234562,smurfs,minion,cadence,flapjack,123456p,sydne,135531,robinhoo,nasdaq,decatur,cyberonline,newage,gemstone,jabba,touchme,hooch,pigdog,indahous,fonzie,zebra1,juggle,patrick2,nihongo,hitomi,oldnavy,qwerfdsa,ukraina,shakti,allure,kingrich,diane1,canad,piramide,hottie1,clarion,college1,5641110,connect1,therion,clubber,velcro,dave1,astra1,13579-,astroboy,skittle,isgreat,photoes,cvzefh1gkc,001100,2cool4u,7555545,ginger12,2wsxcde3,camaro69,invader,domenow,asd1234,colgate,qwertasdfg,jack123,pass01,maxman,bronte,whkzyc,peter123,bogie,yecgaa,abc321,1qay2wsx,enfield,camaroz2,trashman,bonefish,system32,azsxdcfvgb,peterose,iwantyou,dick69,temp1234,blastoff,capa200,connie1,blazin,12233445,sexybaby,123456j,brentfor,pheasant,hommer,jerryg,thunders,august1,lager,kapusta,boobs1,nokia5300,rocco1,xytfu7,stars1,tugger,123sas,blingbling,1bubba,0wnsyo0,1george,baile,richard2,habana,1diamond,sensatio,1golfer,maverick1,1chris,clinton1,michael7,dragons1,sunrise1,pissant,fatim,mopar1,levani,rostik,pizzapie,987412365,oceans11,748159263,cum4me,palmetto,4r3e2w1q,paige1,muncher,arsehole,kratos,gaffer,banderas,billys,prakash,crabby,bungie,silver12,caddis,spawn1,xboxlive,sylvania,littlebi,524645,futura,valdemar,isacs155,prettygirl,big123,555444,slimer,chicke,newstyle,skypilot,sailormoon,fatluvr69,jetaime,sitruc,jesuschrist,sameer,bear12,hellion,yendor,country1,etnies,conejo,jedimast,darkknight,toobad,yxcvbn,snooks,porn4life,calvary,alfaromeo,ghostman,yannick,fnkfynblf,vatoloco,homebase,5550666,barret,1111111111zz,odysseus,edwardss,favre4,jerrys,crybaby,xsw21qaz,firestor,spanks,indians1,squish,kingair,babycakes,haters,sarahs,212223,teddyb,xfactor,cumload,rhapsody,death123,three3,raccoon,thomas2,slayer66,1q2q3q4q5q,thebes,mysterio,thirdeye,orkiox.,nodoubt,bugsy,schweiz,dima1996,angels1,darkwing,jeronimo,moonpie,ronaldo9,peaches2,mack10,manish,denise1,fellowes,carioca,taylor12,epaulson,makemoney,oc247ngucz,kochanie,3edcvfr4,vulture,1qw23e,1234567z,munchie,picard1,xthtgfirf,sportste,psycho1,tahoe1,creativ,perils,slurred,hermit,scoob,diesel1,cards1,wipeout,weeble,integra1,out3xf,powerpc,chrism,kalle,ariadne,kailua,phatty,dexter1,fordman,bungalow,paul123,compa,train1,thejoker,jys6wz,pussyeater,eatmee,sludge,dominus,denisa,tagheuer,yxcvbnm,bill1,ghfdlf,300zx,nikita123,carcass,semaj,ramone,muenchen,animal1,greeny,annemari,dbrf134,jeepcj7,mollys,garten,sashok,ironmaid,coyotes,astoria,george12,westcoast,primetim,123456o,panchito,rafae,japan1,framer,auralo,tooshort,egorova,qwerty22,callme,medicina,warhawk,w1w2w3w4,cristia,merli,alex22,kawaii,chatte,wargames,utvols,muaddib,trinket,andreas1,jjjjj1,cleric,scooters,cuntlick,gggggg1,slipknot1,235711,handcuff,stussy,guess1,leiceste,ppppp1,passe,lovegun,chevyman,hugecock,driver1,buttsex,psychnaut1,cyber1,black2,alpha12,melbourn,man123,metalman,yjdsqujl,blondi,bungee,freak1,stomper,caitlin1,nikitina,flyaway,prikol,begood,desperad,aurelius,john1234,whosyourdaddy,slimed123,bretagne,den123,hotwheel,king123,roodypoo,izzicam,save13tx,warpten,nokia3310,samolet,ready1,coopers,scott123,bonito,1aaaaa,yomomma,dawg1,rache,itworks,asecret,fencer,451236,polka,olivetti,sysadmin,zepplin,sanjuan,479373,lickem,hondacrx,pulamea,future1,naked1,sexyguy,w4g8at,lollol1,declan,runner1,rumple,daddy123,4snz9g,grandprix,calcio,whatthefuck,nagrom,asslick,pennst,negrit,squiggy,1223334444,police22,giovann,toronto1,tweet,yardbird,seagate,truckers,554455,scimitar,pescator,slydog,gaysex,dogfish,fuck777,12332112,qazxswed,morkovka,daniela1,imback,horny69,789123456,123456789w,jimmy2,bagger,ilove69,nikolaus,atdhfkm,rebirth,1111aaaa,pervasive,gjgeufq,dte4uw,gfhnbpfy,skeletor,whitney1,walkman,delorean,disco1,555888,as1234,ishikawa,fuck12,reaper1,dmitrii,bigshot,morrisse,purgen,qwer4321,itachi,willys,123123qwe,kisska,roma123,trafford,sk84life,326159487,pedros,idiom,plover,bebop,159875321,jailbird,arrowhea,qwaszx123,zaxscdvf,catlover,bakers,13579246,bones69,vermont1,helloyou,simeon,chevyz71,funguy,stargaze,parolparol,steph1,bubby,apathy,poppet,laxman,kelly123,goodnews,741236,boner1,gaetano,astonvilla,virtua,luckyboy,rocheste,hello2u,elohim,trigger1,cstrike,pepsicola,miroslav,96385274,fistfuck,cheval,magyar,svetlanka,lbfyjxrf,mamedov,123123123q,ronaldo1,scotty1,1nicole,pittbull,fredd,bbbbb1,dagwood,gfhkfvtyn,ghblehrb,logan5,1jordan,sexbomb,omega2,montauk,258741,dtythf,gibbon,winamp,thebomb,millerli,852654,gemin,baldy,halflife2,dragon22,mulberry,morrigan,hotel6,zorglub,surfin,951159,excell,arhangel,emachine,moses1,968574,reklama,bulldog2,cuties,barca,twingo,saber,elite11,redtruck,casablan,ashish,moneyy,pepper12,cnhtktw,rjcnbr,arschloch,phenix,cachorro,sunita,madoka,joselui,adams1,mymoney,hemicuda,fyutkjr,jake12,chicas,eeeee1,sonnyboy,smarties,birdy,kitten1,cnfcbr,island1,kurosaki,taekwond,konfetka,bennett1,omega3,jackson2,fresca,minako,octavian,kban667,feyenoord,muaythai,jakedog,fktrcfylhjdyf,1357911q,phuket,sexslave,fktrcfylhjdbx,asdfjk,89015173454,qwerty00,kindbud,eltoro,sex6969,nyknicks,12344321q,caballo,evenflow,hoddle,love22,metro1,mahalko,lawdog,tightass,manitou,buckie,whiskey1,anton123,335533,password4,primo,ramair,timbo,brayden,stewie,pedro1,yorkshir,ganster,hellothe,tippy1,direwolf,genesi,rodrig,enkeli,vaz21099,sorcerer,winky,oneshot,boggle,serebro,badger1,japanes,comicbook,kamehame,alcat,denis123,echo45,sexboy,gr8ful,hondo,voetbal,blue33,2112rush,geneviev,danni1,moosey,polkmn,matthew7,ironhead,hot2trot,ashley12,sweeper,imogen,blue21,retep,stealth1,guitarra,bernard1,tatian,frankfur,vfnhbwf,slacking,haha123,963741,asdasdas,katenok,airforce1,123456789qaz,shotgun1,12qwasz,reggie1,sharo,976431,pacifica,dhip6a,neptun,kardon,spooky1,beaut,555555a,toosweet,tiedup,11121314,startac,lover69,rediska,pirata,vfhrbp,1234qwerty,energize,hansolo1,playbo,larry123,oemdlg,cnjvfnjkju,a123123,alexan,gohawks,antonius,fcbayern,mambo,yummy1,kremlin,ellen1,tremere,vfiekz,bellevue,charlie9,izabella,malishka,fermat,rotterda,dawggy,becket,chasey,kramer1,21125150,lolit,cabrio,schlong,arisha,verity,3some,favorit,maricon,travelle,hotpants,red1234,garrett1,home123,knarf,seven777,figment,asdewq,canseco,good2go,warhol,thomas01,pionee,al9agd,panacea,chevy454,brazzers,oriole,azerty123,finalfan,patricio,northsta,rebelde,bulldo,stallone,boogie1,7uftyx,cfhfnjd,compusa,cornholi,config,deere,hoopster,sepultura,grasshop,babygurl,lesbo,diceman,proverbs,reddragon,nurbek,tigerwoo,superdup,buzzsaw,kakaroto,golgo13,edwar,123qaz123,butter1,sssss1,texas2,respekt,ou812ic,123456qaz,55555a,doctor1,mcgwire,maria123,aol999,cinders,aa1234,joness,ghbrjkmyj,makemone,sammyboy,567765,380zliki,theraven,testme,mylene,elvira26,indiglo,tiramisu,shannara,baby1,123666,gfhreh,papercut,johnmish,orange8,bogey1,mustang7,bagpipes,dimarik,vsijyjr,4637324,ravage,cogito,seven11,natashka,warzone,hr3ytm,4free,bigdee,000006,243462536,bigboi,123333,trouts,sandy123,szevasz,monica2,guderian,newlife1,ratchet,r12345,razorbac,12345i,piazza31,oddjob,beauty1,fffff1,anklet,nodrog,pepit,olivi,puravida,robert12,transam1,portman,bubbadog,steelers1,wilson1,eightball,mexico1,superboy,4rfv5tgb,mzepab,samurai1,fuckslut,colleen1,girdle,vfrcbvec,q1w2e3r4t,soldier1,19844891,alyssa1,a12345a,fidelis,skelter,nolove,mickeymouse,frehley,password69,watermel,aliska,soccer15,12345e,ladybug1,abulafia,adagio,tigerlil,takehana,hecate,bootneck,junfan,arigato,wonkette,bobby123,trustnoone,phantasm,132465798,brianjo,w12345,t34vfrc1991,deadeye,1robert,1daddy,adida,check1,grimlock,muffi,airwalk,prizrak,onclick,longbeac,ernie1,eadgbe,moore1,geniu,shadow123,bugaga,jonathan1,cjrjkjdf,orlova,buldog,talon1,westport,aenima,541233432442,barsuk,chicago2,kellys,hellbent,toughguy,iskander,skoal,whatisit,jake123,scooter2,fgjrfkbgcbc,ghandi,love13,adelphia,vjhrjdrf,adrenali,niunia,jemoeder,rainbo,all4u8,anime1,freedom7,seraph,789321,tommys,antman,firetruc,neogeo,natas,bmwm3,froggy1,paul1,mamit,bayview,gateways,kusanagi,ihateu,frederi,rock1,centurion,grizli,biggin,fish1,stalker1,3girls,ilovepor,klootzak,lollo,redsox04,kirill123,jake1,pampers,vasya,hammers1,teacup,towing,celtic1,ishtar,yingyang,4904s677075,dahc1,patriot1,patrick9,redbirds,doremi,rebecc,yoohoo,makarova,epiphone,rfgbnfy,milesd,blister,chelseafc,katana1,blackrose,1james,primrose,shock5,hard1,scooby12,c6h12o6,dustoff,boing,chisel,kamil,1william,defiant1,tyvugq,mp8o6d,aaa340,nafets,sonnet,flyhigh,242526,crewcom,love23,strike1,stairway,katusha,salamand,cupcake1,password0,007james,sunnie,multisync,harley01,tequila1,fred12,driver8,q8zo8wzq,hunter01,mozzer,temporar,eatmeraw,mrbrownxx,kailey,sycamore,flogger,tincup,rahasia,ganymede,bandera,slinger,1111122222,vander,woodys,1cowboy,khaled,jamies,london12,babyboo,tzpvaw,diogenes,budice,mavrick,135797531,cheeta,macros,squonk,blackber,topfuel,apache1,falcon16,darkjedi,cheeze,vfhvtkfl,sparco,change1,gfhfif,freestyl,kukuruza,loveme2,12345f,kozlov,sherpa,marbella,44445555,bocephus,1winner,alvar,hollydog,gonefish,iwantin,barman,godislove,amanda18,rfpfynbg,eugen,abcdef1,redhawk,thelema,spoonman,baller1,harry123,475869,tigerman,cdtnjxrf,marillio,scribble,elnino,carguy,hardhead,l2g7k3,troopers,selen,dragon76,antigua,ewtosi,ulysse,astana,paroli,cristo,carmex,marjan,bassfish,letitbe,kasparov,jay123,19933991,blue13,eyecandy,scribe,mylord,ukflbjkec,ellie1,beaver1,destro,neuken,halfpint,ameli,lilly1,satanic,xngwoj,12345trewq,asdf1,bulldogg,asakura,jesucrist,flipside,packers4,biggy,kadett,biteme69,bobdog,silverfo,saint1,bobbo,packman,knowledg,foolio,fussbal,12345g,kozerog,westcoas,minidisc,nbvcxw,martini1,alastair,rasengan,superbee,memento,porker,lena123,florenc,kakadu,bmw123,getalife,bigsky,monkee,people1,schlampe,red321,memyself,0147896325,12345678900987654321,soccer14,realdeal,gfgjxrf,bella123,juggs,doritos,celtics1,peterbilt,ghbdtnbrb,gnusmas,xcountry,ghbdtn1,batman99,deusex,gtnhjdf,blablabl,juster,marimba,love2,rerjkrf,alhambra,micros,siemens1,assmaste,moonie,dashadasha,atybrc,eeeeee1,wildrose,blue55,davidl,xrp23q,skyblue,leo123,ggggg1,bestfriend,franny,1234rmvb,fun123,rules1,sebastien,chester2,hakeem,winston2,fartripper,atlant,07831505,iluvsex,q1a2z3,larrys,009900,ghjkju,capitan,rider1,qazxsw21,belochka,andy123,hellya,chicca,maximal,juergen,password1234,howard1,quetzal,daniel123,qpwoeiruty,123555,bharat,ferrari3,numbnuts,savant,ladydog,phipsi,lovepussy,etoile,power2,mitten,britneys,chilidog,08522580,2fchbg,kinky1,bluerose,loulo,ricardo1,doqvq3,kswbdu,013cpfza,timoha,ghbdtnghbdtn,3stooges,gearhead,browns1,g00ber,super7,greenbud,kitty2,pootie,toolshed,gamers,coffe,ibill123,freelove,anasazi,sister1,jigger,natash,stacy1,weronika,luzern,soccer7,hoopla,dmoney,valerie1,canes,razdvatri,washere,greenwoo,rfhjkbyf,anselm,pkxe62,maribe,daniel2,maxim1,faceoff,carbine,xtkjdtr,buddy12,stratos,jumpman,buttocks,aqswdefr,pepsis,sonechka,steeler1,lanman,nietzsch,ballz,biscuit1,wrxsti,goodfood,juventu,federic,mattman,vika123,strelec,jledfyxbr,sideshow,4life,fredderf,bigwilly,12347890,12345671,sharik,bmw325i,fylhtqrf,dannon4,marky,mrhappy,drdoom,maddog1,pompier,cerbera,goobers,howler,jenny69,evely,letitrid,cthuttdyf,felip,shizzle,golf12,t123456,yamah,bluearmy,squishy,roxan,10inches,dollface,babygirl1,blacksta,kaneda,lexingto,canadien,222888,kukushka,sistema,224422,shadow69,ppspankp,mellons,barbie1,free4all,alfa156,lostone,2w3e4r5t,painkiller,robbie1,binger,8dihc6,jaspe,rellik,quark,sogood,hoopstar,number2,snowy1,dad2ownu,cresta,qwe123asd,hjvfyjdf,gibsonsg,qbg26i,dockers,grunge,duckling,lfiekz,cuntsoup,kasia1,1tigger,woaini,reksio,tmoney,firefighter,neuron,audia3,woogie,powerboo,powermac,fatcock,12345666,upnfmc,lustful,porn1,gotlove,amylee,kbytqrf,11924704,25251325,sarasota,sexme,ozzie1,berliner,nigga1,guatemal,seagulls,iloveyou!,chicken2,qwerty21,010203040506,1pillow,libby1,vodoley,backlash,piglets,teiubesc,019283,vonnegut,perico,thunde,buckey,gtxtymrf,manunite,iiiii1,lost4815162342,madonn,270873_,britney1,kevlar,piano1,boondock,colt1911,salamat,doma77ns,anuradha,cnhjqrf,rottweil,newmoon,topgun1,mauser,fightclu,birthday21,reviewpa,herons,aassddff,lakers32,melissa2,vredina,jiujitsu,mgoblue,shakey,moss84,12345zxcvb,funsex,benji1,garci,113322,chipie,windex,nokia5310,pwxd5x,bluemax,cosita,chalupa,trotsky,new123,g3ujwg,newguy,canabis,gnaget,happydays,felixx,1patrick,cumface,sparkie,kozlova,123234,newports,broncos7,golf18,recycle,hahah,harrypot,cachondo,open4me,miria,guessit,pepsione,knocker,usmc1775,countach,playe,wiking,landrover,cracksevi,drumline,a7777777,smile123,manzana,panty,liberta,pimp69,dolfan,quality1,schnee,superson,elaine22,webhompass,mrbrownx,deepsea,4wheel,mamasita,rockport,rollie,myhome,jordan12,kfvgjxrf,hockey12,seagrave,ford1,chelsea2,samsara,marissa1,lamesa,mobil1,piotrek,tommygun,yyyyy1,wesley1,billy123,homersim,julies,amanda12,shaka,maldini,suzenet,springst,iiiiii1,yakuza,111111aa,westwind,helpdesk,annamari,bringit,hopefull,hhhhhhh1,saywhat,mazdarx8,bulova,jennife1,baikal,gfhjkmxbr,victoria1,gizmo123,alex99,defjam,2girls,sandrock,positivo,shingo,syncmast,opensesa,silicone,fuckina,senna1,karlos,duffbeer,montagne,gehrig,thetick,pepino,hamburge,paramedic,scamp,smokeweed,fabregas,phantoms,venom121293,2583458,badone,porno69,manwhore,vfvf123,notagain,vbktyf,rfnthbyrf,wildblue,kelly001,dragon66,camell,curtis1,frolova,1212123,dothedew,tyler123,reddrago,planetx,promethe,gigolo,1001001,thisone,eugeni,blackshe,cruzazul,incognito,puller,joonas,quick1,spirit1,gazza,zealot,gordito,hotrod1,mitch1,pollito,hellcat,mythos,duluth,383pdjvl,easy123,hermos,binkie,its420,lovecraf,darien,romina,doraemon,19877891,syclone,hadoken,transpor,ichiro,intell,gargamel,dragon2,wavpzt,557744,rjw7x4,jennys,kickit,rjynfrn,likeit,555111,corvus,nec3520,133113,mookie1,bochum,samsung2,locoman0,154ugeiu,vfvfbgfgf,135792,[start],tenni,20001,vestax,hufmqw,neveragain,wizkid,kjgfnf,nokia6303,tristen,saltanat,louie1,gandalf2,sinfonia,alpha3,tolstoy,ford150,f00bar,1hello,alici,lol12,riker1,hellou,333888,1hunter,qw1234,vibrator,mets86,43211234,gonzale,cookies1,sissy1,john11,bubber,blue01,cup2006,gtkmvtyb,nazareth,heybaby,suresh,teddie,mozilla,rodeo1,madhouse,gamera,123123321,naresh,dominos,foxtrot1,taras,powerup,kipling,jasonb,fidget,galena,meatman,alpacino,bookmark,farting,humper,titsnass,gorgon,castaway,dianka,anutka,gecko1,fucklove,connery,wings1,erika1,peoria,moneymaker,ichabod,heaven1,paperboy,phaser,breakers,nurse1,westbrom,alex13,brendan1,123asd123,almera,grubber,clarkie,thisisme,welkom01,51051051051,crypto,freenet,pflybwf,black12,testme2,changeit,autobahn,attica,chaoss,denver1,tercel,gnasher23,master2,vasilii,sherman1,gomer,bigbuck,derek1,qwerzxcv,jumble,dragon23,art131313,numark,beasty,cxfcnmttcnm,updown,starion,glist,sxhq65,ranger99,monkey7,shifter,wolves1,4r5t6y,phone1,favorite5,skytommy,abracada,1martin,102030405060,gatech,giulio,blacktop,cheer1,africa1,grizzly1,inkjet,shemales,durango1,booner,11223344q,supergirl,vanyarespekt,dickless,srilanka,weaponx,6string,nashvill,spicey,boxer1,fabien,2sexy2ho,bowhunt,jerrylee,acrobat,tawnee,ulisse,nolimit8,l8g3bkde,pershing,gordo1,allover,gobrowns,123432,123444,321456987,spoon1,hhhhh1,sailing1,gardenia,teache,sexmachine,tratata,pirate1,niceone,jimbos,314159265,qsdfgh,bobbyy,ccccc1,carla1,vjkjltw,savana,biotech,frigid,123456789g,dragon10,yesiam,alpha06,oakwood,tooter,winsto,radioman,vavilon,asnaeb,google123,nariman,kellyb,dthyjcnm,password6,parol1,golf72,skate1,lthtdj,1234567890s,kennet,rossia,lindas,nataliya,perfecto,eminem1,kitana,aragorn1,rexona,arsenalf,planot,coope,testing123,timex,blackbox,bullhead,barbarian,dreamon,polaris1,cfvjktn,frdfhbev,gametime,slipknot666,nomad1,hfgcjlbz,happy69,fiddler,brazil1,joeboy,indianali,113355,obelisk,telemark,ghostrid,preston1,anonim,wellcome,verizon1,sayangku,censor,timeport,dummies,adult1,nbnfybr,donger,thales,iamgay,sexy1234,deadlift,pidaras,doroga,123qwe321,portuga,asdfgh12,happys,cadr14nu,pi3141,maksik,dribble,cortland,darken,stepanova,bommel,tropic,sochi2014,bluegras,shahid,merhaba,nacho,2580456,orange44,kongen,3cudjz,78girl,my3kids,marcopol,deadmeat,gabbie,saruman,jeepman,freddie1,katie123,master99,ronal,ballbag,centauri,killer7,xqgann,pinecone,jdeere,geirby,aceshigh,55832811,pepsimax,rayden,razor1,tallyho,ewelina,coldfire,florid,glotest,999333,sevenup,bluefin,limaperu,apostol,bobbins,charmed1,michelin,sundin,centaur,alphaone,christof,trial1,lions1,45645,just4you,starflee,vicki1,cougar1,green2,jellyfis,batman69,games1,hihje863,crazyzil,w0rm1,oklick,dogbite,yssup,sunstar,paprika,postov10,124578963,x24ik3,kanada,buckster,iloveamy,bear123,smiler,nx74205,ohiostat,spacey,bigbill,doudo,nikolaeva,hcleeb,sex666,mindy1,buster11,deacons,boness,njkcnsq,candy2,cracker1,turkey1,qwertyu1,gogreen,tazzzz,edgewise,ranger01,qwerty6,blazer1,arian,letmeinnow,cigar1,jjjjjj1,grigio,frien,tenchu,f9lmwd,imissyou,filipp,heathers,coolie,salem1,woodduck,scubadiv,123kat,raffaele,nikolaev,dapzu455,skooter,9inches,lthgfhjkm,gr8one,ffffff1,zujlrf,amanda69,gldmeo,m5wkqf,rfrltkf,televisi,bonjou,paleale,stuff1,cumalot,fuckmenow,climb7,mark1234,t26gn4,oneeye,george2,utyyflbq,hunting1,tracy71,ready2go,hotguy,accessno,charger1,rudedog,kmfdm,goober1,sweetie1,wtpmjgda,dimensio,ollie1,pickles1,hellraiser,mustdie,123zzz,99887766,stepanov,verdun,tokenbad,anatol,bartende,cidkid86,onkelz,timmie,mooseman,patch1,12345678c,marta1,dummy1,bethany1,myfamily,history1,178500,lsutiger,phydeaux,moren,dbrnjhjdbx,gnbxrf,uniden,drummers,abpbrf,godboy,daisy123,hogan1,ratpack,irland,tangerine,greddy,flore,sqrunch,billyjoe,q55555,clemson1,98745632,marios,ishot,angelin,access12,naruto12,lolly,scxakv,austin12,sallad,cool99,rockit,mongo1,mark22,ghbynth,ariadna,senha,docto,tyler2,mobius,hammarby,192168,anna12,claire1,pxx3eftp,secreto,greeneye,stjabn,baguvix,satana666,rhbcnbyjxrf,dallastx,garfiel,michaelj,1summer,montan,1234ab,filbert,squids,fastback,lyudmila,chucho,eagleone,kimberle,ar3yuk3,jake01,nokids,soccer22,1066ad,ballon,cheeto,review69,madeira,taylor2,sunny123,chubbs,lakeland,striker1,porche,qwertyu8,digiview,go1234,ferari,lovetits,aditya,minnow,green3,matman,cellphon,fortytwo,minni,pucara,69a20a,roman123,fuente,12e3e456,paul12,jacky,demian,littleman,jadakiss,vlad1997,franca,282860,midian,nunzio,xaccess2,colibri,jessica0,revilo,654456,harvey1,wolf1,macarena,corey1,husky1,arsen,milleniu,852147,crowes,redcat,combat123654,hugger,psalms,quixtar,ilovemom,toyot,ballss,ilovekim,serdar,james23,avenger1,serendip,malamute,nalgas,teflon,shagger,letmein6,vyjujnjxbt,assa1234,student1,dixiedog,gznybwf13,fuckass,aq1sw2de3,robroy,hosehead,sosa21,123345,ias100,teddy123,poppin,dgl70460,zanoza,farhan,quicksilver,1701d,tajmahal,depechemode,paulchen,angler,tommy2,recoil,megamanx,scarecro,nicole2,152535,rfvtgb,skunky,fatty1,saturno,wormwood,milwauke,udbwsk,sexlover,stefa,7bgiqk,gfnhbr,omar10,bratan,lbyfvj,slyfox,forest1,jambo,william3,tempus,solitari,lucydog,murzilka,qweasdzxc1,vehpbkrf,12312345,fixit,woobie,andre123,123456789x,lifter,zinaida,soccer17,andone,foxbat,torsten,apple12,teleport,123456i,leglover,bigcocks,vologda,dodger1,martyn,d6o8pm,naciona,eagleeye,maria6,rimshot,bentley1,octagon,barbos,masaki,gremio,siemen,s1107d,mujeres,bigtits1,cherr,saints1,mrpink,simran,ghzybr,ferrari2,secret12,tornado1,kocham,picolo,deneme,onelove1,rolan,fenster,1fuckyou,cabbie,pegaso,nastyboy,password5,aidana,mine2306,mike13,wetone,tigger69,ytreza,bondage1,myass,golova,tolik,happyboy,poilkj,nimda2k,rammer,rubies,hardcore1,jetset,hoops1,jlaudio,misskitt,1charlie,google12,theone1,phred,porsch,aalborg,luft4,charlie5,password7,gnosis,djgabbab,1daniel,vinny,borris,cumulus,member1,trogdor,darthmau,andrew2,ktjybl,relisys,kriste,rasta220,chgobndg,weener,qwerty66,fritter,followme,freeman1,ballen,blood1,peache,mariso,trevor1,biotch,gtfullam,chamonix,friendste,alligato,misha1,1soccer,18821221,venkat,superd,molotov,bongos,mpower,acun3t1x,dfcmrf,h4x3d,rfhfufylf,tigran,booyaa,plastic1,monstr,rfnhby,lookatme,anabolic,tiesto,simon123,soulman,canes1,skyking,tomcat1,madona,bassline,dasha123,tarheel1,dutch1,xsw23edc,qwerty123456789,imperator,slaveboy,bateau,paypal,house123,pentax,wolf666,drgonzo,perros,digger1,juninho,hellomoto,bladerun,zzzzzzz1,keebler,take8422,fffffff1,ginuwine,israe,caesar1,crack1,precious1,garand,magda1,zigazaga,321ewq,johnpaul,mama1234,iceman69,sanjeev,treeman,elric,rebell,1thunder,cochon,deamon,zoltan,straycat,uhbyuj,luvfur,mugsy,primer,wonder1,teetime,candycan,pfchfytw,fromage,gitler,salvatio,piggy1,23049307,zafira,chicky,sergeev,katze,bangers,andriy,jailbait,vaz2107,ghbhjlf,dbjktnnf,aqswde,zaratustra,asroma,1pepper,alyss,kkkkk1,ryan1,radish,cozumel,waterpol,pentium1,rosebowl,farmall,steinway,dbrekz,baranov,jkmuf,another1,chinacat,qqqqqqq1,hadrian,devilmaycry4,ratbag,teddy2,love21,pullings,packrat,robyn1,boobo,qw12er34,tribe1,rosey,celestia,nikkie,fortune12,olga123,danthema,gameon,vfrfhjys,dilshod,henry14,jenova,redblue,chimaera,pennywise,sokrates,danimal,qqaazz,fuaqz4,killer2,198200,tbone1,kolyan,wabbit,lewis1,maxtor,egoist,asdfas,spyglass,omegas,jack12,nikitka,esperanz,doozer,matematika,wwwww1,ssssss1,poiu0987,suchka,courtney1,gungho,alpha2,fktyjxrf,summer06,bud420,devildriver,heavyd,saracen,foucault,choclate,rjdfktyrj,goblue1,monaro,jmoney,dcpugh,efbcapa201,qqh92r,pepsicol,bbb747,ch5nmk,honeyb,beszoptad,tweeter,intheass,iseedeadpeople,123dan,89231243658s,farside1,findme,smiley1,55556666,sartre,ytcnjh,kacper,costarica,134679258,mikeys,nolimit9,vova123,withyou,5rxypn,love143,freebie,rescue1,203040,michael6,12monkey,redgreen,steff,itstime,naveen,good12345,acidrain,1dawg,miramar,playas,daddio,orion2,852741,studmuff,kobe24,senha123,stephe,mehmet,allalone,scarface1,helloworld,smith123,blueyes,vitali,memphis1,mybitch,colin1,159874,1dick,podaria,d6wnro,brahms,f3gh65,dfcbkmtd,xxxman,corran,ugejvp,qcfmtz,marusia,totem,arachnid,matrix2,antonell,fgntrf,zemfira,christos,surfing1,naruto123,plato1,56qhxs,madzia,vanille,043aaa,asq321,mutton,ohiostate,golde,cdznjckfd,rhfcysq,green5,elephan,superdog,jacqueli,bollock,lolitas,nick12,1orange,maplelea,july23,argento,waldorf,wolfer,pokemon12,zxcvbnmm,flicka,drexel,outlawz,harrie,atrain,juice2,falcons1,charlie6,19391945,tower1,dragon21,hotdamn,dirtyboy,love4ever,1ginger,thunder2,virgo1,alien1,bubblegu,4wwvte,123456789qqq,realtime,studio54,passss,vasilek,awsome,giorgia,bigbass,2002tii,sunghile,mosdef,simbas,count0,uwrl7c,summer05,lhepmz,ranger21,sugarbea,principe,5550123,tatanka,9638v,cheerios,majere,nomercy,jamesbond007,bh90210,7550055,jobber,karaganda,pongo,trickle,defamer,6chid8,1q2a3z,tuscan,nick123,.adgjm,loveyo,hobbes1,note1234,shootme,171819,loveporn,9788960,monty123,fabrice,macduff,monkey13,shadowfa,tweeker,hanna1,madball,telnet,loveu2,qwedcxzas,thatsit,vfhcbr,ptfe3xxp,gblfhfcs,ddddddd1,hakkinen,liverune,deathsta,misty123,suka123,recon1,inferno1,232629,polecat,sanibel,grouch,hitech,hamradio,rkfdbfnehf,vandam,nadin,fastlane,shlong,iddqdidkfa,ledzeppelin,sexyfeet,098123,stacey1,negras,roofing,lucifer1,ikarus,tgbyhn,melnik,barbaria,montego,twisted1,bigal1,jiggle,darkwolf,acerview,silvio,treetops,bishop1,iwanna,pornsite,happyme,gfccdjhl,114411,veritech,batterse,casey123,yhntgb,mailto,milli,guster,q12345678,coronet,sleuth,fuckmeha,armadill,kroshka,geordie,lastochka,pynchon,killall,tommy123,sasha1996,godslove,hikaru,clticic,cornbrea,vfkmdbyf,passmaster,123123123a,souris,nailer,diabolo,skipjack,martin12,hinata,mof6681,brookie,dogfight,johnso,karpov,326598,rfvbrflpt,travesti,caballer,galaxy1,wotan,antoha,art123,xakep1234,ricflair,pervert1,p00kie,ambulanc,santosh,berserker,larry33,bitch123,a987654321,dogstar,angel22,cjcbcrf,redhouse,toodles,gold123,hotspot,kennedy1,glock21,chosen1,schneide,mainman,taffy1,3ki42x,4zqauf,ranger2,4meonly,year2000,121212a,kfylsi,netzwerk,diese,picasso1,rerecz,225522,dastan,swimmer1,brooke1,blackbea,oneway,ruslana,dont4get,phidelt,chrisp,gjyxbr,xwing,kickme,shimmy,kimmy1,4815162342lost,qwerty5,fcporto,jazzbo,mierd,252627,basses,sr20det,00133,florin,howdy1,kryten,goshen,koufax,cichlid,imhotep,andyman,wrest666,saveme,dutchy,anonymou,semprini,siempre,mocha1,forest11,wildroid,aspen1,sesam,kfgekz,cbhbec,a55555,sigmanu,slash1,giggs11,vatech,marias,candy123,jericho1,kingme,123a123,drakula,cdjkjxm,mercur,oneman,hoseman,plumper,ilovehim,lancers,sergey1,takeshi,goodtogo,cranberr,ghjcnj123,harvick,qazxs,1972chev,horsesho,freedom3,letmein7,saitek,anguss,vfvfgfgfz,300000,elektro,toonporn,999111999q,mamuka,q9umoz,edelweis,subwoofer,bayside,disturbe,volition,lucky3,12345678z,3mpz4r,march1,atlantida,strekoza,seagrams,090909t,yy5rbfsc,jack1234,sammy12,sampras,mark12,eintrach,chaucer,lllll1,nochance,whitepower,197000,lbvekz,passer,torana,12345as,pallas,koolio,12qw34,nokia8800,findout,1thomas,mmmmm1,654987,mihaela,chinaman,superduper,donnas,ringo1,jeroen,gfdkjdf,professo,cdtnrf,tranmere,tanstaaf,himera,ukflbfnjh,667788,alex32,joschi,w123456,okidoki,flatline,papercli,super8,doris1,2good4u,4z34l0ts,pedigree,freeride,gsxr1100,wulfgar,benjie,ferdinan,king1,charlie7,djdxbr,fhntvbq,ripcurl,2wsx1qaz,kingsx,desade,sn00py,loveboat,rottie,evgesha,4money,dolittle,adgjmpt,buzzers,brett1,makita,123123qweqwe,rusalka,sluts1,123456e,jameson1,bigbaby,1z2z3z,ckjybr,love4u,fucker69,erhfbyf,jeanluc,farhad,fishfood,merkin,giant1,golf69,rfnfcnhjaf,camera1,stromb,smoothy,774411,nylon,juice1,rfn.irf,newyor,123456789t,marmot,star11,jennyff,jester1,hisashi,kumquat,alex777,helicopt,merkur,dehpye,cummin,zsmj2v,kristjan,april12,englan,honeypot,badgirls,uzumaki,keines,p12345,guita,quake1,duncan1,juicer,milkbone,hurtme,123456789b,qq123456789,schwein,p3wqaw,54132442,qwertyytrewq,andreeva,ruffryde,punkie,abfkrf,kristinka,anna1987,ooooo1,335533aa,umberto,amber123,456123789,456789123,beelch,manta,peeker,1112131415,3141592654,gipper,wrinkle5,katies,asd123456,james11,78n3s5af,michael0,daboss,jimmyb,hotdog1,david69,852123,blazed,sickan,eljefe,2n6wvq,gobills,rfhfcm,squeaker,cabowabo,luebri,karups,test01,melkor,angel777,smallvil,modano,olorin,4rkpkt,leslie1,koffie,shadows1,littleon,amiga1,topeka,summer20,asterix1,pitstop,aloysius,k12345,magazin,joker69,panocha,pass1word,1233214,ironpony,368ejhih,88keys,pizza123,sonali,57np39,quake2,1234567890qw,1020304,sword1,fynjif,abcde123,dfktyjr,rockys,grendel1,harley12,kokakola,super2,azathoth,lisa123,shelley1,girlss,ibragim,seven1,jeff24,1bigdick,dragan,autobot,t4nvp7,omega123,900000,hecnfv,889988,nitro1,doggie1,fatjoe,811pahc,tommyt,savage1,pallino,smitty1,jg3h4hfn,jamielee,1qazwsx,zx123456,machine1,asdfgh123,guinnes,789520,sharkman,jochen,legend1,sonic2,extreme1,dima12,photoman,123459876,nokian95,775533,vaz2109,april10,becks,repmvf,pooker,qwer12345,themaster,nabeel,monkey10,gogetit,hockey99,bbbbbbb1,zinedine,dolphin2,anelka,1superma,winter01,muggsy,horny2,669966,kuleshov,jesusis,calavera,bullet1,87t5hdf,sleepers,winkie,vespa,lightsab,carine,magister,1spider,shitbird,salavat,becca1,wc18c2,shirak,galactus,zaskar,barkley1,reshma,dogbreat,fullsail,asasa,boeder,12345ta,zxcvbnm12,lepton,elfquest,tony123,vkaxcs,savatage,sevilia1,badkitty,munkey,pebbles1,diciembr,qapmoc,gabriel2,1qa2ws3e,cbcmrb,welldone,nfyufh,kaizen,jack11,manisha,grommit,g12345,maverik,chessman,heythere,mixail,jjjjjjj1,sylvia1,fairmont,harve,skully,global1,youwish,pikachu1,badcat,zombie1,49527843,ultra1,redrider,offsprin,lovebird,153426,stymie,aq1sw2,sorrento,0000001,r3ady41t,webster1,95175,adam123,coonass,159487,slut1,gerasim,monkey99,slutwife,159963,1pass1page,hobiecat,bigtymer,all4you,maggie2,olamide,comcast1,infinit,bailee,vasileva,.ktxrf,asdfghjkl1,12345678912,setter,fuckyou7,nnagqx,lifesuck,draken,austi,feb2000,cable1,1234qwerasdf,hax0red,zxcv12,vlad7788,nosaj,lenovo,underpar,huskies1,lovegirl,feynman,suerte,babaloo,alskdjfhg,oldsmobi,bomber1,redrover,pupuce,methodman,phenom,cutegirl,countyli,gretsch,godisgood,bysunsu,hardhat,mironova,123qwe456rty,rusty123,salut,187211,555666777,11111z,mahesh,rjntyjxtr,br00klyn,dunce1,timebomb,bovine,makelove,littlee,shaven,rizwan,patrick7,42042042,bobbijo,rustem,buttmunc,dongle,tiger69,bluecat,blackhol,shirin,peaces,cherub,cubase,longwood,lotus7,gwju3g,bruin,pzaiu8,green11,uyxnyd,seventee,dragon5,tinkerbel,bluess,bomba,fedorova,joshua2,bodyshop,peluche,gbpacker,shelly1,d1i2m3a4,ghtpbltyn,talons,sergeevna,misato,chrisc,sexmeup,brend,olddog,davros,hazelnut,bridget1,hzze929b,readme,brethart,wild1,ghbdtnbr1,nortel,kinger,royal1,bucky1,allah1,drakkar,emyeuanh,gallaghe,hardtime,jocker,tanman,flavio,abcdef123,leviatha,squid1,skeet,sexse,123456x,mom4u4mm,lilred,djljktq,ocean11,cadaver,baxter1,808state,fighton,primavera,1andrew,moogle,limabean,goddess1,vitalya,blue56,258025,bullride,cicci,1234567d,connor1,gsxr11,oliveoil,leonard1,legsex,gavrik,rjnjgtc,mexicano,2bad4u,goodfellas,ornw6d,mancheste,hawkmoon,zlzfrh,schorsch,g9zns4,bashful,rossi46,stephie,rfhfntkm,sellout,123fuck,stewar1,solnze,00007,thor5200,compaq12,didit,bigdeal,hjlbyf,zebulon,wpf8eu,kamran,emanuele,197500,carvin,ozlq6qwm,3syqo15hil,pennys,epvjb6,asdfghjkl123,198000,nfbcbz,jazzer,asfnhg66,zoloft,albundy,aeiou,getlaid,planet1,gjkbyjxrf,alex2000,brianb,moveon,maggie11,eieio,vcradq,shaggy1,novartis,cocoloco,dunamis,554uzpad,sundrop,1qwertyu,alfie,feliks,briand,123www,red456,addams,fhntv1998,goodhead,theway,javaman,angel01,stratoca,lonsdale,15987532,bigpimpin,skater1,issue43,muffie,yasmina,slowride,crm114,sanity729,himmel,carolcox,bustanut,parabola,masterlo,computador,crackhea,dynastar,rockbott,doggysty,wantsome,bigten,gaelle,juicy1,alaska1,etower,sixnine,suntan,froggies,nokia7610,hunter11,njnets,alicante,buttons1,diosesamo,elizabeth1,chiron,trustnoo,amatuers,tinytim,mechta,sammy2,cthulu,trs8f7,poonam,m6cjy69u35,cookie12,blue25,jordans,santa1,kalinka,mikey123,lebedeva,12345689,kissss,queenbee,vjybnjh,ghostdog,cuckold,bearshare,rjcntyrj,alinochka,ghjcnjrdfibyj,aggie1,teens1,3qvqod,dauren,tonino,hpk2qc,iqzzt580,bears85,nascar88,theboy,njqcw4,masyanya,pn5jvw,intranet,lollone,shadow99,00096462,techie,cvtifhbrb,redeemed,gocanes,62717315,topman,intj3a,cobrajet,antivirus,whyme,berserke,ikilz083,airedale,brandon2,hopkig,johanna1,danil8098,gojira,arthu,vision1,pendragon,milen,chrissie,vampiro,mudder,chris22,blowme69,omega7,surfers,goterps,italy1,baseba11,diego1,gnatsum,birdies,semenov,joker123,zenit2011,wojtek,cab4ma99,watchmen,damia,forgotte,fdm7ed,strummer,freelanc,cingular,orange77,mcdonalds,vjhjpjdf,kariya,tombston,starlet,hawaii1,dantheman,megabyte,nbvjirf,anjing,ybrjkftdbx,hotmom,kazbek,pacific1,sashimi,asd12,coorslig,yvtte545,kitte,elysium,klimenko,cobblers,kamehameha,only4me,redriver,triforce,sidorov,vittoria,fredi,dank420,m1234567,fallout2,989244342a,crazy123,crapola,servus,volvos,1scooter,griffin1,autopass,ownzyou,deviant,george01,2kgwai,boeing74,simhrq,hermosa,hardcor,griffy,rolex1,hackme,cuddles1,master3,bujhtr,aaron123,popolo,blader,1sexyred,gerry1,cronos,ffvdj474,yeehaw,bob1234,carlos2,mike77,buckwheat,ramesh,acls2h,monster2,montess,11qq22ww,lazer,zx123456789,chimpy,masterch,sargon,lochness,archana,1234qwert,hbxfhl,sarahb,altoid,zxcvbn12,dakot,caterham,dolomite,chazz,r29hqq,longone,pericles,grand1,sherbert,eagle3,pudge,irontree,synapse,boome,nogood,summer2,pooki,gangsta1,mahalkit,elenka,lbhtrnjh,dukedog,19922991,hopkins1,evgenia,domino1,x123456,manny1,tabbycat,drake1,jerico,drahcir,kelly2,708090a,facesit,11c645df,mac123,boodog,kalani,hiphop1,critters,hellothere,tbirds,valerka,551scasi,love777,paloalto,mrbrown,duke3d,killa1,arcturus,spider12,dizzy1,smudger,goddog,75395,spammy,1357997531,78678,datalife,zxcvbn123,1122112211,london22,23dp4x,rxmtkp,biggirls,ownsu,lzbs2twz,sharps,geryfe,237081a,golakers,nemesi,sasha1995,pretty1,mittens1,d1lakiss,speedrac,gfhjkmm,sabbat,hellrais,159753258,qwertyuiop123,playgirl,crippler,salma,strat1,celest,hello5,omega5,cheese12,ndeyl5,edward12,soccer3,cheerio,davido,vfrcbr,gjhjctyjr,boscoe,inessa,shithole,ibill,qwepoi,201jedlz,asdlkj,davidk,spawn2,ariel1,michael4,jamie123,romantik,micro1,pittsbur,canibus,katja,muhtar,thomas123,studboy,masahiro,rebrov,patrick8,hotboys,sarge1,1hammer,nnnnn1,eistee,datalore,jackdani,sasha2010,mwq6qlzo,cmfnpu,klausi,cnhjbntkm,andrzej,ilovejen,lindaa,hunter123,vvvvv1,novembe,hamster1,x35v8l,lacey1,1silver,iluvporn,valter,herson,alexsandr,cojones,backhoe,womens,777angel,beatit,klingon1,ta8g4w,luisito,benedikt,maxwel,inspecto,zaq12ws,wladimir,bobbyd,peterj,asdfg12,hellspawn,bitch69,nick1234,golfer23,sony123,jello1,killie,chubby1,kodaira52,yanochka,buckfast,morris1,roaddogg,snakeeye,sex1234,mike22,mmouse,fucker11,dantist,brittan,vfrfhjdf,doc123,plokijuh,emerald1,batman01,serafim,elementa,soccer9,footlong,cthuttdbx,hapkido,eagle123,getsmart,getiton,batman2,masons,mastiff,098890,cfvfhf,james7,azalea,sherif,saun24865709,123red,cnhtrjpf,martina1,pupper,michael5,alan12,shakir,devin1,ha8fyp,palom,mamulya,trippy,deerhunter,happyone,monkey77,3mta3,123456789f,crownvic,teodor,natusik,0137485,vovchik,strutter,triumph1,cvetok,moremone,sonnen,screwbal,akira1,sexnow,pernille,independ,poopies,samapi,kbcbxrf,master22,swetlana,urchin,viper2,magica,slurpee,postit,gilgames,kissarmy,clubpenguin,limpbizk,timber1,celin,lilkim,fuckhard,lonely1,mom123,goodwood,extasy,sdsadee23,foxglove,malibog,clark1,casey2,shell1,odense,balefire,dcunited,cubbie,pierr,solei,161718,bowling1,areyukesc,batboy,r123456,1pionee,marmelad,maynard1,cn42qj,cfvehfq,heathrow,qazxcvbn,connecti,secret123,newfie,xzsawq21,tubitzen,nikusha,enigma1,yfcnz123,1austin,michaelc,splunge,wanger,phantom2,jason2,pain4me,primetime21,babes1,liberte,sugarray,undergro,zonker,labatts,djhjyf,watch1,eagle5,madison2,cntgfirf,sasha2,masterca,fiction7,slick50,bruins1,sagitari,12481632,peniss,insuranc,2b8riedt,12346789,mrclean,ssptx452,tissot,q1w2e3r4t5y6u7,avatar1,comet1,spacer,vbrjkf,pass11,wanker1,14vbqk9p,noshit,money4me,sayana,fish1234,seaways,pipper,romeo123,karens,wardog,ab123456,gorilla1,andrey123,lifesucks,jamesr,4wcqjn,bearman,glock22,matt11,dflbvrf,barbi,maine1,dima1997,sunnyboy,6bjvpe,bangkok1,666666q,rafiki,letmein0,0raziel0,dalla,london99,wildthin,patrycja,skydog,qcactw,tmjxn151,yqlgr667,jimmyd,stripclub,deadwood,863abgsg,horses1,qn632o,scatman,sonia1,subrosa,woland,kolya,charlie4,moleman,j12345,summer11,angel11,blasen,sandal,mynewpas,retlaw,cambria,mustang4,nohack04,kimber45,fatdog,maiden1,bigload,necron,dupont24,ghost123,turbo2,.ktymrf,radagast,balzac,vsevolod,pankaj,argentum,2bigtits,mamabear,bumblebee,mercury7,maddie1,chomper,jq24nc,snooky,pussylic,1lovers,taltos,warchild,diablo66,jojo12,sumerki,aventura,gagger,annelies,drumset,cumshots,azimut,123580,clambake,bmw540,birthday54,psswrd,paganini,wildwest,filibert,teaseme,1test,scampi,thunder5,antosha,purple12,supersex,hhhhhh1,brujah,111222333a,13579a,bvgthfnjh,4506802a,killians,choco,qqqwwweee,raygun,1grand,koetsu13,sharp1,mimi92139,fastfood,idontcare,bluered,chochoz,4z3al0ts,target1,sheffiel,labrat,stalingrad,147123,cubfan,corvett1,holden1,snapper1,4071505,amadeo,pollo,desperados,lovestory,marcopolo,mumbles,familyguy,kimchee,marcio,support1,tekila,shygirl1,trekkie,submissi,ilaria,salam,loveu,wildstar,master69,sales1,netware,homer2,arseniy,gerrity1,raspberr,atreyu,stick1,aldric,tennis12,matahari,alohomora,dicanio,michae1,michaeld,666111,luvbug,boyscout,esmerald,mjordan,admiral1,steamboa,616913,ybhdfyf,557711,555999,sunray,apokalipsis,theroc,bmw330,buzzy,chicos,lenusik,shadowma,eagles05,444222,peartree,qqq123,sandmann,spring1,430799,phatass,andi03,binky1,arsch,bamba,kenny123,fabolous,loser123,poop12,maman,phobos,tecate,myxworld4,metros,cocorico,nokia6120,johnny69,hater,spanked,313233,markos,love2011,mozart1,viktoriy,reccos,331234,hornyone,vitesse,1um83z,55555q,proline,v12345,skaven,alizee,bimini,fenerbahce,543216,zaqqaz,poi123,stabilo,brownie1,1qwerty1,dinesh,baggins1,1234567t,davidkin,friend1,lietuva,octopuss,spooks,12345qq,myshit,buttface,paradoxx,pop123,golfin,sweet69,rfghbp,sambuca,kayak1,bogus1,girlz,dallas12,millers,123456zx,operatio,pravda,eternal1,chase123,moroni,proust,blueduck,harris1,redbarch,996699,1010101,mouche,millenni,1123456,score1,1234565,1234576,eae21157,dave12,pussyy,gfif1991,1598741,hoppy,darrian,snoogins,fartface,ichbins,vfkbyrf,rusrap,2741001,fyfrjylf,aprils,favre,thisis,bannana,serval,wiggum,satsuma,matt123,ivan123,gulmira,123zxc123,oscar2,acces,annie2,dragon0,emiliano,allthat,pajaro,amandine,rawiswar,sinead,tassie,karma1,piggys,nokias,orions,origami,type40,mondo,ferrets,monker,biteme2,gauntlet,arkham,ascona,ingram01,klem1,quicksil,bingo123,blue66,plazma,onfire,shortie,spjfet,123963,thered,fire777,lobito,vball,1chicken,moosehea,elefante,babe23,jesus12,parallax,elfstone,number5,shrooms,freya,hacker1,roxette,snoops,number7,fellini,dtlmvf,chigger,mission1,mitsubis,kannan,whitedog,james01,ghjgecr,rfnfgekmnf,everythi,getnaked,prettybo,sylvan,chiller,carrera4,cowbo,biochem,azbuka,qwertyuiop1,midnight1,informat,audio1,alfred1,0range,sucker1,scott2,russland,1eagle,torben,djkrjlfd,rocky6,maddy1,bonobo,portos,chrissi,xjznq5,dexte,vdlxuc,teardrop,pktmxr,iamtheone,danijela,eyphed,suzuki1,etvww4,redtail,ranger11,mowerman,asshole2,coolkid,adriana1,bootcamp,longcut,evets,npyxr5,bighurt,bassman1,stryder,giblet,nastja,blackadd,topflite,wizar,cumnow,technolo,bassboat,bullitt,kugm7b,maksimus,wankers,mine12,sunfish,pimpin1,shearer9,user1,vjzgjxnf,tycobb,80070633pc,stanly,vitaly,shirley1,cinzia,carolyn1,angeliqu,teamo,qdarcv,aa123321,ragdoll,bonit,ladyluck,wiggly,vitara,jetbalance,12345600,ozzman,dima12345,mybuddy,shilo,satan66,erebus,warrio,090808qwe,stupi,bigdan,paul1234,chiapet,brooks1,philly1,dually,gowest,farmer1,1qa2ws3ed4rf,alberto1,beachboy,barne,aa12345,aliyah,radman,benson1,dfkthbq,highball,bonou2,i81u812,workit,darter,redhook,csfbr5yy,buttlove,episode1,ewyuza,porthos,lalal,abcd12,papero,toosexy,keeper1,silver7,jujitsu,corset,pilot123,simonsay,pinggolf,katerinka,kender,drunk1,fylhjvtlf,rashmi,nighthawk,maggy,juggernaut,larryb,cabibble,fyabcf,247365,gangstar,jaybee,verycool,123456789qw,forbidde,prufrock,12345zxc,malaika,blackbur,docker,filipe,koshechka,gemma1,djamaal,dfcbkmtdf,gangst,9988aa,ducks1,pthrfkj,puertorico,muppets,griffins,whippet,sauber,timofey,larinso,123456789zxc,quicken,qsefth,liteon,headcase,bigdadd,zxc321,maniak,jamesc,bassmast,bigdogs,1girls,123xxx,trajan,lerochka,noggin,mtndew,04975756,domin,wer123,fumanchu,lambada,thankgod,june22,kayaking,patchy,summer10,timepass,poiu1234,kondor,kakka,lament,zidane10,686xqxfg,l8v53x,caveman1,nfvthkfy,holymoly,pepita,alex1996,mifune,fighter1,asslicker,jack22,abc123abc,zaxxon,midnigh,winni,psalm23,punky,monkey22,password13,mymusic,justyna,annushka,lucky5,briann,495rus19,withlove,almaz,supergir,miata,bingbong,bradpitt,kamasutr,yfgjktjy,vanman,pegleg,amsterdam1,123a321,letmein9,shivan,korona,bmw520,annette1,scotsman,gandal,welcome12,sc00by,qpwoei,fred69,m1sf1t,hamburg1,1access,dfkmrbhbz,excalibe,boobies1,fuckhole,karamel,starfuck,star99,breakfas,georgiy,ywvxpz,smasher,fatcat1,allanon,12345n,coondog,whacko,avalon1,scythe,saab93,timon,khorne,atlast,nemisis,brady12,blenheim,52678677,mick7278,9skw5g,fleetwoo,ruger1,kissass,pussy7,scruff,12345l,bigfun,vpmfsz,yxkck878,evgeny,55667788,lickher,foothill,alesis,poppies,77777778,californi,mannie,bartjek,qhxbij,thehulk,xirt2k,angelo4ek,rfkmrekznjh,tinhorse,1david,sparky12,night1,luojianhua,bobble,nederland,rosemari,travi,minou,ciscokid,beehive,565hlgqo,alpine1,samsung123,trainman,xpress,logistic,vw198m2n,hanter,zaqwsx123,qwasz,mariachi,paska,kmg365,kaulitz,sasha12,north1,polarbear,mighty1,makeksa11,123456781,one4all,gladston,notoriou,polniypizdec110211,gosia,grandad,xholes,timofei,invalidp,speaker1,zaharov,maggiema,loislane,gonoles,br5499,discgolf,kaskad,snooper,newman1,belial,demigod,vicky1,pridurok,alex1990,tardis1,cruzer,hornie,sacramen,babycat,burunduk,mark69,oakland1,me1234,gmctruck,extacy,sexdog,putang,poppen,billyd,1qaz2w,loveable,gimlet,azwebitalia,ragtop,198500,qweas,mirela,rock123,11bravo,sprewell,tigrenok,jaredleto,vfhbif,blue2,rimjob,catwalk,sigsauer,loqse,doromich,jack01,lasombra,jonny5,newpassword,profesor,garcia1,123as123,croucher,demeter,4_life,rfhfvtkm,superman2,rogues,assword1,russia1,jeff1,mydream,z123456789,rascal1,darre,kimberl,pickle1,ztmfcq,ponchik,lovesporn,hikari,gsgba368,pornoman,chbjun,choppy,diggity,nightwolf,viktori,camar,vfhecmrf,alisa1,minstrel,wishmaster,mulder1,aleks,gogirl,gracelan,8womys,highwind,solstice,dbrnjhjdyf,nightman,pimmel,beertje,ms6nud,wwfwcw,fx3tuo,poopface,asshat,dirtyd,jiminy,luv2fuck,ptybnxtvgbjy,dragnet,pornogra,10inch,scarlet1,guido1,raintree,v123456,1aaaaaaa,maxim1935,hotwater,gadzooks,playaz,harri,brando1,defcon1,ivanna,123654a,arsenal2,candela,nt5d27,jaime1,duke1,burton1,allstar1,dragos,newpoint,albacore,1236987z,verygoodbot,1wildcat,fishy1,ptktysq,chris11,puschel,itdxtyrj,7kbe9d,serpico,jazzie,1zzzzz,kindbuds,wenef45313,1compute,tatung,sardor,gfyfcjybr,test99,toucan,meteora,lysander,asscrack,jowgnx,hevnm4,suckthis,masha123,karinka,marit,oqglh565,dragon00,vvvbbb,cheburashka,vfrfrf,downlow,unforgiven,p3e85tr,kim123,sillyboy,gold1,golfvr6,quicksan,irochka,froglegs,shortsto,caleb1,tishka,bigtitts,smurfy,bosto,dropzone,nocode,jazzbass,digdug,green7,saltlake,therat,dmitriev,lunita,deaddog,summer0,1212qq,bobbyg,mty3rh,isaac1,gusher,helloman,sugarbear,corvair,extrem,teatime,tujazopi,titanik,efyreg,jo9k2jw2,counchac,tivoli,utjvtnhbz,bebit,jacob6,clayton1,incubus1,flash123,squirter,dima2010,cock1,rawks,komatsu,forty2,98741236,cajun1,madelein,mudhoney,magomed,q111111,qaswed,consense,12345b,bakayaro,silencer,zoinks,bigdic,werwolf,pinkpuss,96321478,alfie1,ali123,sarit,minette,musics,chato,iaapptfcor,cobaka,strumpf,datnigga,sonic123,yfnecbr,vjzctvmz,pasta1,tribbles,crasher,htlbcrf,1tiger,shock123,bearshar,syphon,a654321,cubbies1,jlhanes,eyespy,fucktheworld,carrie1,bmw325is,suzuk,mander,dorina,mithril,hondo1,vfhnbyb,sachem,newton1,12345x,7777755102q,230857z,xxxsex,scubapro,hayastan,spankit,delasoul,searock6,fallout3,nilrem,24681357,pashka,voluntee,pharoh,willo,india1,badboy69,roflmao,gunslinger,lovergir,mama12,melange,640xwfkv,chaton,darkknig,bigman1,aabbccdd,harleyd,birdhouse,giggsy,hiawatha,tiberium,joker7,hello1234,sloopy,tm371855,greendog,solar1,bignose,djohn11,espanol,oswego,iridium,kavitha,pavell,mirjam,cyjdsvujljv,alpha5,deluge,hamme,luntik,turismo,stasya,kjkbnf,caeser,schnecke,tweety1,tralfaz,lambrett,prodigy1,trstno1,pimpshit,werty1,karman,bigboob,pastel,blackmen,matthew8,moomin,q1w2e,gilly,primaver,jimmyg,house2,elviss,15975321,1jessica,monaliza,salt55,vfylfhbyrf,harley11,tickleme,murder1,nurgle,kickass1,theresa1,fordtruck,pargolf,managua,inkognito,sherry1,gotit,friedric,metro2033,slk230,freeport,cigarett,492529,vfhctkm,thebeach,twocats,bakugan,yzerman1,charlieb,motoko,skiman,1234567w,pussy3,love77,asenna,buffie,260zntpc,kinkos,access20,mallard1,fuckyou69,monami,rrrrr1,bigdog69,mikola,1boomer,godzila,ginger2,dima2000,skorpion39,dima1234,hawkdog79,warrior2,ltleirf,supra1,jerusale,monkey01,333z333,666888,kelsey1,w8gkz2x1,fdfnfh,msnxbi,qwe123rty,mach1,monkey3,123456789qq,c123456,nezabudka,barclays,nisse,dasha1,12345678987654321,dima1993,oldspice,frank2,rabbitt,prettyboy,ov3ajy,iamthema,kawasak,banjo1,gtivr6,collants,gondor,hibees,cowboys2,codfish,buster2,purzel,rubyred,kayaker,bikerboy,qguvyt,masher,sseexx,kenshiro,moonglow,semenova,rosari,eduard1,deltaforce,grouper,bongo1,tempgod,1taylor,goldsink,qazxsw1,1jesus,m69fg2w,maximili,marysia,husker1,kokanee,sideout,googl,south1,plumber1,trillian,00001,1357900,farkle,1xxxxx,pascha,emanuela,bagheera,hound1,mylov,newjersey,swampfox,sakic19,torey,geforce,wu4etd,conrail,pigman,martin2,ber02,nascar2,angel69,barty,kitsune,cornet,yes90125,goomba,daking,anthea,sivart,weather1,ndaswf,scoubidou,masterchief,rectum,3364068,oranges1,copter,1samanth,eddies,mimoza,ahfywbz,celtic88,86mets,applemac,amanda11,taliesin,1angel,imhere,london11,bandit12,killer666,beer1,06225930,psylocke,james69,schumach,24pnz6kc,endymion,wookie1,poiu123,birdland,smoochie,lastone,rclaki,olive1,pirat,thunder7,chris69,rocko,151617,djg4bb4b,lapper,ajcuivd289,colole57,shadow7,dallas21,ajtdmw,executiv,dickies,omegaman,jason12,newhaven,aaaaaas,pmdmscts,s456123789,beatri,applesauce,levelone,strapon,benladen,creaven,ttttt1,saab95,f123456,pitbul,54321a,sex12345,robert3,atilla,mevefalkcakk,1johnny,veedub,lilleke,nitsuj,5t6y7u8i,teddys,bluefox,nascar20,vwjetta,buffy123,playstation3,loverr,qweasd12,lover2,telekom,benjamin1,alemania,neutrino,rockz,valjean,testicle,trinity3,realty,firestarter,794613852,ardvark,guadalup,philmont,arnold1,holas,zw6syj,birthday299,dover1,sexxy1,gojets,741236985,cance,blue77,xzibit,qwerty88,komarova,qweszxc,footer,rainger,silverst,ghjcnb,catmando,tatooine,31217221027711,amalgam,69dude,qwerty321,roscoe1,74185,cubby,alfa147,perry1,darock,katmandu,darknight,knicks1,freestuff,45454,kidman,4tlved,axlrose,cutie1,quantum1,joseph10,ichigo,pentium3,rfhectkm,rowdy1,woodsink,justforfun,sveta123,pornografia,mrbean,bigpig,tujheirf,delta9,portsmou,hotbod,kartal,10111213,fkbyf001,pavel1,pistons1,necromancer,verga,c7lrwu,doober,thegame1,hatesyou,sexisfun,1melissa,tuczno18,bowhunte,gobama,scorch,campeon,bruce2,fudge1,herpderp,bacon1,redsky,blackeye,19966991,19992000,ripken8,masturba,34524815,primax,paulina1,vp6y38,427cobra,4dwvjj,dracon,fkg7h4f3v6,longview,arakis,panama1,honda2,lkjhgfdsaz,razors,steels,fqkw5m,dionysus,mariajos,soroka,enriqu,nissa,barolo,king1234,hshfd4n279,holland1,flyer1,tbones,343104ky,modems,tk421,ybrbnrf,pikapp,sureshot,wooddoor,florida2,mrbungle,vecmrf,catsdogs,axolotl,nowayout,francoi,chris21,toenail,hartland,asdjkl,nikkii,onlyyou,buckskin,fnord,flutie,holen1,rincewind,lefty1,ducky1,199000,fvthbrf,redskin1,ryno23,lostlove,19mtpgam19,abercrom,benhur,jordan11,roflcopter,ranma,phillesh,avondale,igromania,p4ssword,jenny123,tttttt1,spycams,cardigan,2112yyz,sleepy1,paris123,mopars,lakers34,hustler1,james99,matrix3,popimp,12pack,eggbert,medvedev,testit,performa,logitec,marija,sexybeast,supermanboy,iwantit,rjktcj,jeffer,svarog,halo123,whdbtp,nokia3230,heyjoe,marilyn1,speeder,ibxnsm,prostock,bennyboy,charmin,codydog,parol999,ford9402,jimmer,crayola,159357258,alex77,joey1,cayuga,phish420,poligon,specops,tarasova,caramelo,draconis,dimon,cyzkhw,june29,getbent,1guitar,jimjam,dictiona,shammy,flotsam,0okm9ijn,crapper,technic,fwsadn,rhfdxtyrj,zaq11qaz,anfield1,159753q,curious1,hip-hop,1iiiii,gfhjkm2,cocteau,liveevil,friskie,crackhead,b1afra,elektrik,lancer1,b0ll0cks,jasond,z1234567,tempest1,alakazam,asdfasd,duffy1,oneday,dinkle,qazedctgb,kasimir,happy7,salama,hondaciv,nadezda,andretti,cannondale,sparticu,znbvjd,blueice,money01,finster,eldar,moosie,pappa,delta123,neruda,bmw330ci,jeanpaul,malibu1,alevtina,sobeit,travolta,fullmetal,enamorad,mausi,boston12,greggy,smurf1,ratrace,ichiban,ilovepus,davidg,wolf69,villa1,cocopuff,football12,starfury,zxc12345,forfree,fairfiel,dreams1,tayson,mike2,dogday,hej123,oldtimer,sanpedro,clicker,mollycat,roadstar,golfe,lvbnhbq1,topdevice,a1b2c,sevastopol,calli,milosc,fire911,pink123,team3x,nolimit5,snickers1,annies,09877890,jewel1,steve69,justin11,autechre,killerbe,browncow,slava1,christer,fantomen,redcloud,elenberg,beautiful1,passw0rd1,nazira,advantag,cockring,chaka,rjpzdrf,99941,az123456,biohazar,energie,bubble1,bmw323,tellme,printer1,glavine,1starwar,coolbeans,april17,carly1,quagmire,admin2,djkujuhfl,pontoon,texmex,carlos12,thermo,vaz2106,nougat,bob666,1hockey,1john,cricke,qwerty10,twinz,totalwar,underwoo,tijger,lildevil,123q321,germania,freddd,1scott,beefy,5t4r3e2w1q,fishbait,nobby,hogger,dnstuff,jimmyc,redknapp,flame1,tinfloor,balla,nfnfhby,yukon1,vixens,batata,danny123,1zxcvbnm,gaetan,homewood,greats,tester1,green99,1fucker,sc0tland,starss,glori,arnhem,goatman,1234asd,supertra,bill123,elguapo,sexylegs,jackryan,usmc69,innow,roaddog,alukard,winter11,crawler,gogiants,rvd420,alessandr,homegrow,gobbler,esteba,valeriy,happy12,1joshua,hawking,sicnarf,waynes,iamhappy,bayadera,august2,sashas,gotti,dragonfire,pencil1,halogen,borisov,bassingw,15975346,zachar,sweetp,soccer99,sky123,flipyou,spots3,xakepy,cyclops1,dragon77,rattolo58,motorhea,piligrim,helloween,dmb2010,supermen,shad0w,eatcum,sandokan,pinga,ufkfrnbrf,roksana,amista,pusser,sony1234,azerty1,1qasw2,ghbdt,q1w2e3r4t5y6u7i8,ktutylf,brehznev,zaebali,shitass,creosote,gjrtvjy,14938685,naughtyboy,pedro123,21crack,maurice1,joesakic,nicolas1,matthew9,lbyfhf,elocin,hfcgbplzq,pepper123,tiktak,mycroft,ryan11,firefly1,arriva,cyecvevhbr,loreal,peedee,jessica8,lisa01,anamari,pionex,ipanema,airbag,frfltvbz,123456789aa,epwr49,casper12,sweethear,sanandreas,wuschel,cocodog,france1,119911,redroses,erevan,xtvgbjy,bigfella,geneve,volvo850,evermore,amy123,moxie,celebs,geeman,underwor,haslo1,joy123,hallow,chelsea0,12435687,abarth,12332145,tazman1,roshan,yummie,genius1,chrisd,ilovelife,seventy7,qaz1wsx2,rocket88,gaurav,bobbyboy,tauchen,roberts1,locksmit,masterof,www111,d9ungl,volvos40,asdasd1,golfers,jillian1,7xm5rq,arwpls4u,gbhcf2,elloco,football2,muerte,bob101,sabbath1,strider1,killer66,notyou,lawnboy,de7mdf,johnnyb,voodoo2,sashaa,homedepo,bravos,nihao123,braindea,weedhead,rajeev,artem1,camille1,rockss,bobbyb,aniston,frnhbcf,oakridge,biscayne,cxfcnm,dressage,jesus3,kellyann,king69,juillet,holliste,h00ters,ripoff,123645,1999ar,eric12,123777,tommi,dick12,bilder,chris99,rulezz,getpaid,chicubs,ender1,byajhvfnbrf,milkshak,sk8board,freakshow,antonella,monolit,shelb,hannah01,masters1,pitbull1,1matthew,luvpussy,agbdlcid,panther2,alphas,euskadi,8318131,ronnie1,7558795,sweetgirl,cookie59,sequoia,5552555,ktyxbr,4500455,money7,severus,shinobu,dbityrf,phisig,rogue2,fractal,redfred,sebastian1,nelli,b00mer,cyberman,zqjphsyf6ctifgu,oldsmobile,redeemer,pimpi,lovehurts,1slayer,black13,rtynfdh,airmax,g00gle,1panther,artemon,nopasswo,fuck1234,luke1,trinit,666000,ziadma,oscardog,davex,hazel1,isgood,demond,james5,construc,555551,january2,m1911a1,flameboy,merda,nathan12,nicklaus,dukester,hello99,scorpio7,leviathan,dfcbktr,pourquoi,vfrcbv123,shlomo,rfcgth,rocky3,ignatz,ajhneyf,roger123,squeek,4815162342a,biskit,mossimo,soccer21,gridlock,lunker,popstar,ghhh47hj764,chutney,nitehawk,vortec,gamma1,codeman,dragula,kappasig,rainbow2,milehigh,blueballs,ou8124me,rulesyou,collingw,mystere,aster,astrovan,firetruck,fische,crawfish,hornydog,morebeer,tigerpaw,radost,144000,1chance,1234567890qwe,gracie1,myopia,oxnard,seminoles,evgeni,edvard,partytim,domani,tuffy1,jaimatadi,blackmag,kzueirf,peternor,mathew1,maggie12,henrys,k1234567,fasted,pozitiv,cfdtkbq,jessica7,goleafs,bandito,girl78,sharingan,skyhigh,bigrob,zorros,poopers,oldschoo,pentium2,gripper,norcal,kimba,artiller,moneymak,00197400,272829,shadow1212,thebull,handbags,all4u2c,bigman2,civics,godisgoo,section8,bandaid,suzanne1,zorba,159123,racecars,i62gbq,rambo123,ironroad,johnson2,knobby,twinboys,sausage1,kelly69,enter2,rhjirf,yessss,james12,anguilla,boutit,iggypop,vovochka,06060,budwiser,romuald,meditate,good1,sandrin,herkules,lakers8,honeybea,11111111a,miche,rangers9,lobster1,seiko,belova,midcon,mackdadd,bigdaddy1,daddie,sepultur,freddy12,damon1,stormy1,hockey2,bailey12,hedimaptfcor,dcowboys,sadiedog,thuggin,horny123,josie1,nikki2,beaver69,peewee1,mateus,viktorija,barrys,cubswin1,matt1234,timoxa,rileydog,sicilia,luckycat,candybar,julian1,abc456,pussylip,phase1,acadia,catty,246800,evertonf,bojangle,qzwxec,nikolaj,fabrizi,kagome,noncapa0,marle,popol,hahaha1,cossie,carla10,diggers,spankey,sangeeta,cucciolo,breezer,starwar1,cornholio,rastafari,spring99,yyyyyyy1,webstar,72d5tn,sasha1234,inhouse,gobuffs,civic1,redstone,234523,minnie1,rivaldo,angel5,sti2000,xenocide,11qq11,1phoenix,herman1,holly123,tallguy,sharks1,madri,superbad,ronin,jalal123,hardbody,1234567r,assman1,vivahate,buddylee,38972091,bonds25,40028922,qrhmis,wp2005,ceejay,pepper01,51842543,redrum1,renton,varadero,tvxtjk7r,vetteman,djhvbrc,curly1,fruitcak,jessicas,maduro,popmart,acuari,dirkpitt,buick1,bergerac,golfcart,pdtpljxrf,hooch1,dudelove,d9ebk7,123452000,afdjhbn,greener,123455432,parachut,mookie12,123456780,jeepcj5,potatoe,sanya,qwerty2010,waqw3p,gotika,freaky1,chihuahu,buccanee,ecstacy,crazyboy,slickric,blue88,fktdnbyf,2004rj,delta4,333222111,calient,ptbdhw,1bailey,blitz1,sheila1,master23,hoagie,pyf8ah,orbita,daveyboy,prono1,delta2,heman,1horny,tyrik123,ostrov,md2020,herve,rockfish,el546218,rfhbyjxrf,chessmaster,redmoon,lenny1,215487,tomat,guppy,amekpass,amoeba,my3girls,nottingh,kavita,natalia1,puccini,fabiana,8letters,romeos,netgear,casper2,taters,gowings,iforgot1,pokesmot,pollit,lawrun,petey1,rosebuds,007jr,gthtcnhjqrf,k9dls02a,neener,azertyu,duke11,manyak,tiger01,petros,supermar,mangas,twisty,spotter,takagi,dlanod,qcmfd454,tusymo,zz123456,chach,navyblue,gilbert1,2kash6zq,avemaria,1hxboqg2s,viviane,lhbjkjubz2957704,nowwowtg,1a2b3c4,m0rn3,kqigb7,superpuper,juehtw,gethigh,theclown,makeme,pradeep,sergik,deion21,nurik,devo2706,nbvibt,roman222,kalima,nevaeh,martin7,anathema,florian1,tamwsn3sja,dinmamma,133159,123654q,slicks,pnp0c08,yojimbo,skipp,kiran,pussyfuck,teengirl,apples12,myballs,angeli,1234a,125678,opelastra,blind1,armagedd,fish123,pitufo,chelseaf,thedevil,nugget1,cunt69,beetle1,carter15,apolon,collant,password00,fishboy,djkrjdf,deftone,celti,three11,cyrus1,lefthand,skoal1,ferndale,aries1,fred01,roberta1,chucks,cornbread,lloyd1,icecrea,cisco123,newjerse,vfhrbpf,passio,volcom1,rikimaru,yeah11,djembe,facile,a1l2e3x4,batman7,nurbol,lorenzo1,monica69,blowjob1,998899,spank1,233391,n123456,1bear,bellsout,999998,celtic67,sabre1,putas,y9enkj,alfabeta,heatwave,honey123,hard4u,insane1,xthysq,magnum1,lightsaber,123qweqwe,fisher1,pixie1,precios,benfic,thegirls,bootsman,4321rewq,nabokov,hightime,djghjc,1chelsea,junglist,august16,t3fkvkmj,1232123,lsdlsd12,chuckie1,pescado,granit,toogood,cathouse,natedawg,bmw530,123kid,hajime,198400,engine1,wessonnn,kingdom1,novembre,1rocks,kingfisher,qwerty89,jordan22,zasranec,megat,sucess,installutil,fetish01,yanshi1982,1313666,1314520,clemence,wargod,time1,newzealand,snaker,13324124,cfrehf,hepcat,mazahaka,bigjay,denisov,eastwest,1yellow,mistydog,cheetos,1596357,ginger11,mavrik,bubby1,bhbyf,pyramide,giusepp,luthien,honda250,andrewjackie,kentavr,lampoon,zaq123wsx,sonicx,davidh,1ccccc,gorodok,windsong,programm,blunt420,vlad1995,zxcvfdsa,tarasov,mrskin,sachas,mercedes1,koteczek,rawdog,honeybear,stuart1,kaktys,richard7,55555n,azalia,hockey10,scouter,francy,1xxxxxx,julie456,tequilla,penis123,schmoe,tigerwoods,1ferrari,popov,snowdrop,matthieu,smolensk,cornflak,jordan01,love2000,23wesdxc,kswiss,anna2000,geniusnet,baby2000,33ds5x,waverly,onlyone4,networkingpe,raven123,blesse,gocards,wow123,pjflkork,juicey,poorboy,freeee,billybo,shaheen,zxcvbnm.,berlit,truth1,gepard,ludovic,gunther1,bobby2,bob12345,sunmoon,septembr,bigmac1,bcnjhbz,seaking,all4u,12qw34er56ty,bassie,nokia5228,7355608,sylwia,charvel,billgate,davion,chablis,catsmeow,kjiflrf,amylynn,rfvbkkf,mizredhe,handjob,jasper12,erbol,solara,bagpipe,biffer,notime,erlan,8543852,sugaree,oshkosh,fedora,bangbus,5lyedn,longball,teresa1,bootyman,aleksand,qazwsxedc12,nujbhc,tifosi,zpxvwy,lights1,slowpoke,tiger12,kstate,password10,alex69,collins1,9632147,doglover,baseball2,security1,grunts,orange2,godloves,213qwe879,julieb,1qazxsw23edcvfr4,noidea,8uiazp,betsy1,junior2,parol123,123456zz,piehonkii,kanker,bunky,hingis,reese1,qaz123456,sidewinder,tonedup,footsie,blackpoo,jalapeno,mummy1,always1,josh1,rockyboy,plucky,chicag,nadroj,blarney,blood123,wheaties,packer1,ravens1,mrjones,gfhjkm007,anna2010,awatar,guitar12,hashish,scale1,tomwaits,amrita,fantasma,rfpfym,pass2,tigris,bigair,slicker,sylvi,shilpa,cindylou,archie1,bitches1,poppys,ontime,horney1,camaroz28,alladin,bujhm,cq2kph,alina1,wvj5np,1211123a,tetons,scorelan,concordi,morgan2,awacs,shanty,tomcat14,andrew123,bear69,vitae,fred99,chingy,octane,belgario,fatdaddy,rhodan,password23,sexxes,boomtown,joshua01,war3demo,my2kids,buck1,hot4you,monamour,12345aa,yumiko,parool,carlton1,neverland,rose12,right1,sociald,grouse,brandon0,cat222,alex00,civicex,bintang,malkav,arschloc,dodgeviper,qwerty666,goduke,dante123,boss1,ontheroc,corpsman,love14,uiegu451,hardtail,irondoor,ghjrehfnehf,36460341,konijn,h2slca,kondom25,123456ss,cfytxrf,btnjey,nando,freemail,comander,natas666,siouxsie,hummer1,biomed,dimsum,yankees0,diablo666,lesbian1,pot420,jasonm,glock23,jennyb,itsmine,lena2010,whattheh,beandip,abaddon,kishore,signup,apogee,biteme12,suzieq,vgfun4,iseeyou,rifleman,qwerta,4pussy,hawkman,guest1,june17,dicksuck,bootay,cash12,bassale,ktybyuhfl,leetch,nescafe,7ovtgimc,clapton1,auror,boonie,tracker1,john69,bellas,cabinboy,yonkers,silky1,ladyffesta,drache,kamil1,davidp,bad123,snoopy12,sanche,werthvfy,achille,nefertiti,gerald1,slage33,warszawa,macsan26,mason123,kotopes,welcome8,nascar99,kiril,77778888,hairy1,monito,comicsans,81726354,killabee,arclight,yuo67,feelme,86753099,nnssnn,monday12,88351132,88889999,websters,subito,asdf12345,vaz2108,zvbxrpl,159753456852,rezeda,multimed,noaccess,henrique,tascam,captiva,zadrot,hateyou,sophie12,123123456,snoop1,charlie8,birmingh,hardline,libert,azsxdcf,89172735872,rjpthju,bondar,philips1,olegnaruto,myword,yakman,stardog,banana12,1234567890w,farout,annick,duke01,rfj422,billard,glock19,shaolin1,master10,cinderel,deltaone,manning1,biggreen,sidney1,patty1,goforit1,766rglqy,sevendus,aristotl,armagedo,blumen,gfhfyjz,kazakov,lekbyxxx,accord1,idiota,soccer16,texas123,victoire,ololo,chris01,bobbbb,299792458,eeeeeee1,confiden,07070,clarks,techno1,kayley,stang1,wwwwww1,uuuuu1,neverdie,jasonr,cavscout,481516234,mylove1,shaitan,1qazxcvb,barbaros,123456782000,123wer,thissucks,7seven,227722,faerie,hayduke,dbacks,snorkel,zmxncbv,tiger99,unknown1,melmac,polo1234,sssssss1,1fire,369147,bandung,bluejean,nivram,stanle,ctcnhf,soccer20,blingbli,dirtball,alex2112,183461,skylin,boobman,geronto,brittany1,yyz2112,gizmo69,ktrcec,dakota12,chiken,sexy11,vg08k714,bernadet,1bulldog,beachs,hollyb,maryjoy,margo1,danielle1,chakra,alexand,hullcity,matrix12,sarenna,pablos,antler,supercar,chomsky,german1,airjordan,545ettvy,camaron,flight1,netvideo,tootall,valheru,481516,1234as,skimmer,redcross,inuyash,uthvfy,1012nw,edoardo,bjhgfi,golf11,9379992a,lagarto,socball,boopie,krazy,.adgjmptw,gaydar,kovalev,geddylee,firstone,turbodog,loveee,135711,badbo,trapdoor,opopop11,danny2,max2000,526452,kerry1,leapfrog,daisy2,134kzbip,1andrea,playa1,peekab00,heskey,pirrello,gsewfmck,dimon4ik,puppie,chelios,554433,hypnodanny,fantik,yhwnqc,ghbdtngjrf,anchorag,buffett1,fanta,sappho,024680,vialli,chiva,lucylu,hashem,exbntkm,thema,23jordan,jake11,wildside,smartie,emerica,2wj2k9oj,ventrue,timoth,lamers,baerchen,suspende,boobis,denman85,1adam12,otello,king12,dzakuni,qsawbbs,isgay,porno123,jam123,daytona1,tazzie,bunny123,amaterasu,jeffre,crocus,mastercard,bitchedup,chicago7,aynrand,intel1,tamila,alianza,mulch,merlin12,rose123,alcapone,mircea,loveher,joseph12,chelsea6,dorothy1,wolfgar,unlimite,arturik,qwerty3,paddy1,piramid,linda123,cooool,millie1,warlock1,forgotit,tort02,ilikeyou,avensis,loveislife,dumbass1,clint1,2110se,drlove,olesia,kalinina,sergey123,123423,alicia1,markova,tri5a3,media1,willia1,xxxxxxx1,beercan,smk7366,jesusislord,motherfuck,smacker,birthday5,jbaby,harley2,hyper1,a9387670a,honey2,corvet,gjmptw,rjhjkmbien,apollon,madhuri,3a5irt,cessna17,saluki,digweed,tamia1,yja3vo,cfvlehfr,1111111q,martyna,stimpy1,anjana,yankeemp,jupiler,idkfa,1blue,fromv,afric,3xbobobo,liverp00l,nikon1,amadeus1,acer123,napoleo,david7,vbhjckfdf,mojo69,percy1,pirates1,grunt1,alenushka,finbar,zsxdcf,mandy123,1fred,timewarp,747bbb,druids,julia123,123321qq,spacebar,dreads,fcbarcelona,angela12,anima,christopher1,stargazer,123123s,hockey11,brewski,marlbor,blinker,motorhead,damngood,werthrf,letmein3,moremoney,killer99,anneke,eatit,pilatus,andrew01,fiona1,maitai,blucher,zxgdqn,e5pftu,nagual,panic1,andron,openwide,alphabeta,alison1,chelsea8,fende,mmm666,1shot2,a19l1980,123456@,1black,m1chael,vagner,realgood,maxxx,vekmnbr,stifler,2509mmh,tarkan,sherzod,1234567b,gunners1,artem2010,shooby,sammie1,p123456,piggie,abcde12345,nokia6230,moldir,piter,1qaz3edc,frequenc,acuransx,1star,nikeair,alex21,dapimp,ranjan,ilovegirls,anastasiy,berbatov,manso,21436587,leafs1,106666,angelochek,ingodwetrust,123456aaa,deano,korsar,pipetka,thunder9,minka,himura,installdevic,1qqqqq,digitalprodu,suckmeoff,plonker,headers,vlasov,ktr1996,windsor1,mishanya,garfield1,korvin,littlebit,azaz09,vandamme,scripto,s4114d,passward,britt1,r1chard,ferrari5,running1,7xswzaq,falcon2,pepper76,trademan,ea53g5,graham1,volvos80,reanimator,micasa,1234554321q,kairat,escorpion,sanek94,karolina1,kolovrat,karen2,1qaz@wsx,racing1,splooge,sarah2,deadman1,creed1,nooner,minicoop,oceane,room112,charme,12345ab,summer00,wetcunt,drewman,nastyman,redfire,appels,merlin69,dolfin,bornfree,diskette,ohwell,12345678qwe,jasont,madcap,cobra2,dolemit1,whatthehell,juanit,voldemar,rocke,bianc,elendil,vtufgjkbc,hotwheels,spanis,sukram,pokerface,k1ller,freakout,dontae,realmadri,drumss,gorams,258789,snakey,jasonn,whitewolf,befree,johnny99,pooka,theghost,kennys,vfvektxrf,toby1,jumpman23,deadlock,barbwire,stellina,alexa1,dalamar,mustanggt,northwes,tesoro,chameleo,sigtau,satoshi,george11,hotcum,cornell1,golfer12,geek01d,trololo,kellym,megapolis,pepsi2,hea666,monkfish,blue52,sarajane,bowler1,skeets,ddgirls,hfccbz,bailey01,isabella1,dreday,moose123,baobab,crushme,000009,veryhot,roadie,meanone,mike18,henriett,dohcvtec,moulin,gulnur,adastra,angel9,western1,natura,sweetpe,dtnfkm,marsbar,daisys,frogger1,virus1,redwood1,streetball,fridolin,d78unhxq,midas,michelob,cantik,sk2000,kikker,macanudo,rambone,fizzle,20000,peanuts1,cowpie,stone32,astaroth,dakota01,redso,mustard1,sexylove,giantess,teaparty,bobbin,beerbong,monet1,charles3,anniedog,anna1988,cameleon,longbeach,tamere,qpful542,mesquite,waldemar,12345zx,iamhere,lowboy,canard,granp,daisymay,love33,moosejaw,nivek,ninjaman,shrike01,aaa777,88002000600,vodolei,bambush,falcor,harley69,alphaomega,severine,grappler,bosox,twogirls,gatorman,vettes,buttmunch,chyna,excelsio,crayfish,birillo,megumi,lsia9dnb9y,littlebo,stevek,hiroyuki,firehous,master5,briley2,gangste,chrisk,camaleon,bulle,troyboy,froinlaven,mybutt,sandhya,rapala,jagged,crazycat,lucky12,jetman,wavmanuk,1heather,beegee,negril,mario123,funtime1,conehead,abigai,mhorgan,patagoni,travel1,backspace,frenchfr,mudcat,dashenka,baseball3,rustys,741852kk,dickme,baller23,griffey1,suckmycock,fuhrfzgc,jenny2,spuds,berlin1,justfun,icewind,bumerang,pavlusha,minecraft123,shasta1,ranger12,123400,twisters,buthead,miked,finance1,dignity7,hello9,lvjdp383,jgthfnjh,dalmatio,paparoach,miller31,2bornot2b,fathe,monterre,theblues,satans,schaap,jasmine2,sibelius,manon,heslo,jcnhjd,shane123,natasha2,pierrot,bluecar,iloveass,harriso,red12,london20,job314,beholder,reddawg,fuckyou!,pussylick,bologna1,austintx,ole4ka,blotto,onering,jearly,balbes,lightbul,bighorn,crossfir,lee123,prapor,1ashley,gfhjkm22,wwe123,09090,sexsite,marina123,jagua,witch1,schmoo,parkview,dragon3,chilango,ultimo,abramova,nautique,2bornot2,duende,1arthur,nightwing,surfboar,quant4307,15s9pu03,karina1,shitball,walleye1,wildman1,whytesha,1morgan,my2girls,polic,baranova,berezuckiy,kkkkkk1,forzima,fornow,qwerty02,gokart,suckit69,davidlee,whatnow,edgard,tits1,bayshore,36987412,ghbphfr,daddyy,explore1,zoidberg,5qnzjx,morgane,danilov,blacksex,mickey12,balsam,83y6pv,sarahc,slaye,all4u2,slayer69,nadia1,rlzwp503,4cranker,kaylie,numberon,teremok,wolf12,deeppurple,goodbeer,aaa555,66669999,whatif,harmony1,ue8fpw,3tmnej,254xtpss,dusty197,wcksdypk,zerkalo,dfnheirf,motorol,digita,whoareyou,darksoul,manics,rounders,killer11,d2000lb,cegthgfhjkm,catdog1,beograd,pepsico,julius1,123654987,softbal,killer23,weasel1,lifeson,q123456q,444555666,bunches,andy1,darby1,service01,bear11,jordan123,amega,duncan21,yensid,lerxst,rassvet,bronco2,fortis,pornlove,paiste,198900,asdflkjh,1236547890,futur,eugene1,winnipeg261,fk8bhydb,seanjohn,brimston,matthe1,bitchedu,crisco,302731,roxydog,woodlawn,volgograd,ace1210,boy4u2ownnyc,laura123,pronger,parker12,z123456z,andrew13,longlife,sarang,drogba,gobruins,soccer4,holida,espace,almira,murmansk,green22,safina,wm00022,1chevy,schlumpf,doroth,ulises,golf99,hellyes,detlef,mydog,erkina,bastardo,mashenka,sucram,wehttam,generic1,195000,spaceboy,lopas123,scammer,skynyrd,daddy2,titani,ficker,cr250r,kbnthfnehf,takedown,sticky1,davidruiz,desant,nremtp,painter1,bogies,agamemno,kansas1,smallfry,archi,2b4dnvsx,1player,saddie,peapod,6458zn7a,qvw6n2,gfxqx686,twice2,sh4d0w3d,mayfly,375125,phitau,yqmbevgk,89211375759,kumar1,pfhfpf,toyboy,way2go,7pvn4t,pass69,chipster,spoony,buddycat,diamond3,rincewin,hobie,david01,billbo,hxp4life,matild,pokemon2,dimochka,clown1,148888,jenmt3,cuxldv,cqnwhy,cde34rfv,simone1,verynice,toobig,pasha123,mike00,maria2,lolpop,firewire,dragon9,martesana,a1234567890,birthday3,providen,kiska,pitbulls,556655,misawa,damned69,martin11,goldorak,gunship,glory1,winxclub,sixgun,splodge,agent1,splitter,dome69,ifghjb,eliza1,snaiper,wutang36,phoenix7,666425,arshavin,paulaner,namron,m69fg1w,qwert1234,terrys,zesyrmvu,joeman,scoots,dwml9f,625vrobg,sally123,gostoso,symow8,pelota,c43qpul5rz,majinbuu,lithium1,bigstuff,horndog1,kipelov,kringle,1beavis,loshara,octobe,jmzacf,12342000,qw12qw,runescape1,chargers1,krokus,piknik,jessy,778811,gjvbljh,474jdvff,pleaser,misskitty,breaker1,7f4df451,dayan,twinky,yakumo,chippers,matia,tanith,len2ski1,manni,nichol1,f00b4r,nokia3110,standart,123456789i,shami,steffie,larrywn,chucker,john99,chamois,jjjkkk,penmouse,ktnj2010,gooners,hemmelig,rodney1,merlin01,bearcat1,1yyyyy,159753z,1fffff,1ddddd,thomas11,gjkbyrf,ivanka,f1f2f3,petrovna,phunky,conair,brian2,creative1,klipsch,vbitymrf,freek,breitlin,cecili,westwing,gohabsgo,tippmann,1steve,quattro6,fatbob,sp00ky,rastas,1123581,redsea,rfnmrf,jerky1,1aaaaaa,spk666,simba123,qwert54321,123abcd,beavis69,fyfyfc,starr1,1236547,peanutbutter,sintra,12345abcde,1357246,abcde1,climbon,755dfx,mermaids,monte1,serkan,geilesau,777win,jasonc,parkside,imagine1,rockhead,producti,playhard,principa,spammer,gagher,escada,tsv1860,dbyjuhfl,cruiser1,kennyg,montgome,2481632,pompano,cum123,angel6,sooty,bear01,april6,bodyhamm,pugsly,getrich,mikes,pelusa,fosgate,jasonp,rostislav,kimberly1,128mo,dallas11,gooner1,manuel1,cocacola1,imesh,5782790,password8,daboys,1jones,intheend,e3w2q1,whisper1,madone,pjcgujrat,1p2o3i,jamesp,felicida,nemrac,phikap,firecat,jrcfyjxrf,matt12,bigfan,doedel,005500,jasonx,1234567k,badfish,goosey,utjuhfabz,wilco,artem123,igor123,spike123,jor23dan,dga9la,v2jmsz,morgan12,avery1,dogstyle,natasa,221195ws,twopac,oktober7,karthik,poop1,mightymo,davidr,zermatt,jehova,aezakmi1,dimwit,monkey5,serega123,qwerty111,blabl,casey22,boy123,1clutch,asdfjkl1,hariom,bruce10,jeep95,1smith,sm9934,karishma,bazzzz,aristo,669e53e1,nesterov,kill666,fihdfv,1abc2,anna1,silver11,mojoman,telefono,goeagles,sd3lpgdr,rfhfynby,melinda1,llcoolj,idteul,bigchief,rocky13,timberwo,ballers,gatekeep,kashif,hardass,anastasija,max777,vfuyjkbz,riesling,agent99,kappas,dalglish,tincan,orange3,turtoise,abkbvjy,mike24,hugedick,alabala,geolog,aziza,devilboy,habanero,waheguru,funboy,freedom5,natwest,seashore,impaler,qwaszx1,pastas,bmw535,tecktonik,mika00,jobsearc,pinche,puntang,aw96b6,1corvett,skorpio,foundati,zzr1100,gembird,vfnhjcrby,soccer18,vaz2110,peterp,archer1,cross1,samedi,dima1992,hunter99,lipper,hotbody,zhjckfdf,ducati1,trailer1,04325956,cheryl1,benetton,kononenko,sloneczko,rfgtkmrf,nashua,balalaika,ampere,eliston,dorsai,digge,flyrod,oxymoron,minolta,ironmike,majortom,karimov,fortun,putaria,an83546921an13,blade123,franchis,mxaigtg5,dynxyu,devlt4,brasi,terces,wqmfuh,nqdgxz,dale88,minchia,seeyou,housepen,1apple,1buddy,mariusz,bighouse,tango2,flimflam,nicola1,qwertyasd,tomek1,shumaher,kartoshka,bassss,canaries,redman1,123456789as,preciosa,allblacks,navidad,tommaso,beaudog,forrest1,green23,ryjgjxrf,go4it,ironman2,badnews,butterba,1grizzly,isaeva,rembrand,toront,1richard,bigjon,yfltymrf,1kitty,4ng62t,littlejo,wolfdog,ctvtyjd,spain1,megryan,tatertot,raven69,4809594q,tapout,stuntman,a131313,lagers,hotstuf,lfdbl11,stanley2,advokat,boloto,7894561,dooker,adxel187,cleodog,4play,0p9o8i,masterb,bimota,charlee,toystory,6820055,6666667,crevette,6031769,corsa,bingoo,dima1990,tennis11,samuri,avocado,melissa6,unicor,habari,metart,needsex,cockman,hernan,3891576,3334444,amigo1,gobuffs2,mike21,allianz,2835493,179355,midgard,joey123,oneluv,ellis1,towncar,shonuff,scouse,tool69,thomas19,chorizo,jblaze,lisa1,dima1999,sophia1,anna1989,vfvekbxrf,krasavica,redlegs,jason25,tbontb,katrine,eumesmo,vfhufhbnrf,1654321,asdfghj1,motdepas,booga,doogle,1453145,byron1,158272,kardinal,tanne,fallen1,abcd12345,ufyljy,n12345,kucing,burberry,bodger,1234578,februar,1234512,nekkid,prober,harrison1,idlewild,rfnz90,foiegras,pussy21,bigstud,denzel,tiffany2,bigwill,1234567890zzz,hello69,compute1,viper9,hellspaw,trythis,gococks,dogballs,delfi,lupine,millenia,newdelhi,charlest,basspro,1mike,joeblack,975310,1rosebud,batman11,misterio,fucknut,charlie0,august11,juancho,ilonka,jigei743ks,adam1234,889900,goonie,alicat,ggggggg1,1zzzzzzz,sexywife,northstar,chris23,888111,containe,trojan1,jason5,graikos,1ggggg,1eeeee,tigers01,indigo1,hotmale,jacob123,mishima,richard3,cjxb2014,coco123,meagain,thaman,wallst,edgewood,bundas,1power,matilda1,maradon,hookedup,jemima,r3vi3wpass,2004-10-,mudman,taz123,xswzaq,emerson1,anna21,warlord1,toering,pelle,tgwdvu,masterb8,wallstre,moppel,priora,ghjcnjrdfif,yoland,12332100,1j9e7f6f,jazzzz,yesman,brianm,42qwerty42,12345698,darkmanx,nirmal,john31,bb123456,neuspeed,billgates,moguls,fj1200,hbhlair,shaun1,ghbdfn,305pwzlr,nbu3cd,susanb,pimpdad,mangust6403,joedog,dawidek,gigante,708090,703751,700007,ikalcr,tbivbn,697769,marvi,iyaayas,karen123,jimmyboy,dozer1,e6z8jh,bigtime1,getdown,kevin12,brookly,zjduc3,nolan1,cobber,yr8wdxcq,liebe,m1garand,blah123,616879,action1,600000,sumitomo,albcaz,asian1,557799,dave69,556699,sasa123,streaker,michel1,karate1,buddy7,daulet,koks888,roadtrip,wapiti,oldguy,illini1,1234qq,mrspock,kwiatek,buterfly,august31,jibxhq,jackin,taxicab,tristram,talisker,446655,444666,chrisa,freespace,vfhbfyyf,chevell,444333,notyours,442244,christian1,seemore,sniper12,marlin1,joker666,multik,devilish,crf450,cdfoli,eastern1,asshead,duhast,voyager2,cyberia,1wizard,cybernet,iloveme1,veterok,karandash,392781,looksee,diddy,diabolic,foofight,missey,herbert1,bmw318i,premier1,zsfmpv,eric1234,dun6sm,fuck11,345543,spudman,lurker,bitem,lizzy1,ironsink,minami,339311,s7fhs127,sterne,332233,plankton,galax,azuywe,changepa,august25,mouse123,sikici,killer69,xswqaz,quovadis,gnomik,033028pw,777777a,barrakuda,spawn666,goodgod,slurp,morbius,yelnats,cujo31,norman1,fastone,earwig,aureli,wordlife,bnfkbz,yasmi,austin123,timberla,missy2,legalize,netcom,liljon,takeit,georgin,987654321z,warbird,vitalina,all4u3,mmmmmm1,bichon,ellobo,wahoos,fcazmj,aksarben,lodoss,satnam,vasili,197800,maarten,sam138989,0u812,ankita,walte,prince12,anvils,bestia,hoschi,198300,univer,jack10,ktyecbr,gr00vy,hokie,wolfman1,fuckwit,geyser,emmanue,ybrjkftd,qwerty33,karat,dblock,avocat,bobbym,womersle,1please,nostra,dayana,billyray,alternat,iloveu1,qwerty69,rammstein1,mystikal,winne,drawde,executor,craxxxs,ghjcnjnf,999888777,welshman,access123,963214785,951753852,babe69,fvcnthlfv,****me,666999666,testing2,199200,nintendo64,oscarr,guido8,zhanna,gumshoe,jbird,159357456,pasca,123452345,satan6,mithrand,fhbirf,aa1111aa,viggen,ficktjuv,radial9,davids1,rainbow7,futuro,hipho,platin,poppy123,rhenjq,fulle,rosit,chicano,scrumpy,lumpy1,seifer,uvmrysez,autumn1,xenon,susie1,7u8i9o0p,gamer1,sirene,muffy1,monkeys1,kalinin,olcrackmaster,hotmove,uconn,gshock,merson,lthtdyz,pizzaboy,peggy1,pistache,pinto1,fishka,ladydi,pandor,baileys,hungwell,redboy,rookie1,amanda01,passwrd,clean1,matty1,tarkus,jabba1,bobster,beer30,solomon1,moneymon,sesamo,fred11,sunnysid,jasmine5,thebears,putamadre,workhard,flashbac,counter1,liefde,magnat,corky1,green6,abramov,lordik,univers,shortys,david3,vip123,gnarly,1234567s,billy2,honkey,deathstar,grimmy,govinda,direktor,12345678s,linus1,shoppin,rekbrjdf,santeria,prett,berty75,mohican,daftpunk,uekmyfhf,chupa,strats,ironbird,giants56,salisbur,koldun,summer04,pondscum,jimmyj,miata1,george3,redshoes,weezie,bartman1,0p9o8i7u,s1lver,dorkus,125478,omega9,sexisgood,mancow,patric1,jetta1,074401,ghjuhtcc,gfhjk,bibble,terry2,123213,medicin,rebel2,hen3ry,4freedom,aldrin,lovesyou,browny,renwod,winnie1,belladon,1house,tyghbn,blessme,rfhfrfnbwf,haylee,deepdive,booya,phantasy,gansta,cock69,4mnveh,gazza1,redapple,structur,anakin1,manolito,steve01,poolman,chloe123,vlad1998,qazwsxe,pushit,random123,ontherocks,o236nq,brain1,dimedrol,agape,rovnogod,1balls,knigh,alliso,love01,wolf01,flintstone,beernuts,tuffguy,isengard,highfive,alex23,casper99,rubina,getreal,chinita,italian1,airsoft,qwerty23,muffdiver,willi1,grace123,orioles1,redbull1,chino1,ziggy123,breadman,estefan,ljcneg,gotoit,logan123,wideglid,mancity1,treess,qwe123456,kazumi,qweasdqwe,oddworld,naveed,protos,towson,a801016,godislov,at_asp,bambam1,soccer5,dark123,67vette,carlos123,hoser1,scouser,wesdxc,pelus,dragon25,pflhjn,abdula,1freedom,policema,tarkin,eduardo1,mackdad,gfhjkm11,lfplhfgthvf,adilet,zzzzxxxx,childre,samarkand,cegthgegth,shama,fresher,silvestr,greaser,allout,plmokn,sexdrive,nintendo1,fantasy7,oleander,fe126fd,crumpet,pingzing,dionis,hipster,yfcnz,requin,calliope,jerome1,housecat,abc123456789,doghot,snake123,augus,brillig,chronic1,gfhjkbot,expediti,noisette,master7,caliban,whitetai,favorite3,lisamari,educatio,ghjhjr,saber1,zcegth,1958proman,vtkrbq,milkdud,imajica,thehip,bailey10,hockey19,dkflbdjcnjr,j123456,bernar,aeiouy,gamlet,deltachi,endzone,conni,bcgfybz,brandi1,auckland2010,7653ajl1,mardigra,testuser,bunko18,camaro67,36936,greenie,454dfmcq,6xe8j2z4,mrgreen,ranger5,headhunt,banshee1,moonunit,zyltrc,hello3,pussyboy,stoopid,tigger11,yellow12,drums1,blue02,kils123,junkman,banyan,jimmyjam,tbbucs,sportster,badass1,joshie,braves10,lajolla,1amanda,antani,78787,antero,19216801,chich,rhett32,sarahm,beloit,sucker69,corkey,nicosnn,rccola,caracol,daffyduc,bunny2,mantas,monkies,hedonist,cacapipi,ashton1,sid123,19899891,patche,greekgod,cbr1000,leader1,19977991,ettore,chongo,113311,picass,cfif123,rhtfnbd,frances1,andy12,minnette,bigboy12,green69,alices,babcia,partyboy,javabean,freehand,qawsed123,xxx111,harold1,passwo,jonny1,kappa1,w2dlww3v5p,1merlin,222999,tomjones,jakeman,franken,markhegarty,john01,carole1,daveman,caseys,apeman,mookey,moon123,claret,titans1,residentevil,campari,curitiba,dovetail,aerostar,jackdaniels,basenji,zaq12w,glencoe,biglove,goober12,ncc170,far7766,monkey21,eclipse9,1234567v,vanechka,aristote,grumble,belgorod,abhishek,neworleans,pazzword,dummie,sashadog,diablo11,mst3000,koala1,maureen1,jake99,isaiah1,funkster,gillian1,ekaterina20,chibears,astra123,4me2no,winte,skippe,necro,windows9,vinograd,demolay,vika2010,quiksilver,19371ayj,dollar1,shecky,qzwxecrv,butterfly1,merrill1,scoreland,1crazy,megastar,mandragora,track1,dedhed,jacob2,newhope,qawsedrftgyh,shack1,samvel,gatita,shyster,clara1,telstar,office1,crickett,truls,nirmala,joselito,chrisl,lesnik,aaaabbbb,austin01,leto2010,bubbie,aaa12345,widder,234432,salinger,mrsmith,qazsedcft,newshoes,skunks,yt1300,bmw316,arbeit,smoove,123321qweewq,123qazwsx,22221111,seesaw,0987654321a,peach1,1029384756q,sereda,gerrard8,shit123,batcave,energy1,peterb,mytruck,peter12,alesya,tomato1,spirou,laputaxx,magoo1,omgkremidia,knight12,norton1,vladislava,shaddy,austin11,jlbyjxrf,kbdthgekm,punheta,fetish69,exploiter,roger2,manstein,gtnhjd,32615948worms,dogbreath,ujkjdjkjvrf,vodka1,ripcord,fatrat,kotek1,tiziana,larrybir,thunder3,nbvfnb,9kyq6fge,remembe,likemike,gavin1,shinigam,yfcnfcmz,13245678,jabbar,vampyr,ane4ka,lollipo,ashwin,scuderia,limpdick,deagle,3247562,vishenka,fdhjhf,alex02,volvov70,mandys,bioshock,caraca,tombraider,matrix69,jeff123,13579135,parazit,black3,noway1,diablos,hitmen,garden1,aminor,decembe,august12,b00ger,006900,452073t,schach,hitman1,mariner1,vbnmrf,paint1,742617000027,bitchboy,pfqxjyjr,5681392,marryher,sinnet,malik1,muffin12,aninha,piolin,lady12,traffic1,cbvjyf,6345789,june21,ivan2010,ryan123,honda99,gunny,coorslight,asd321,hunter69,7224763,sonofgod,dolphins1,1dolphin,pavlenko,woodwind,lovelov,pinkpant,gblfhfcbyf,hotel1,justinbiebe,vinter,jeff1234,mydogs,1pizza,boats1,parrothe,shawshan,brooklyn1,cbrown,1rocky,hemi426,dragon64,redwings1,porsches,ghostly,hubbahub,buttnut,b929ezzh,sorokina,flashg,fritos,b7mguk,metatron,treehous,vorpal,8902792,marcu,free123,labamba,chiefs1,zxc123zxc,keli_14,hotti,1steeler,money4,rakker,foxwoods,free1,ahjkjd,sidorova,snowwhit,neptune1,mrlover,trader1,nudelamb,baloo,power7,deltasig,bills1,trevo,7gorwell,nokia6630,nokia5320,madhatte,1cowboys,manga1,namtab,sanjar,fanny1,birdman1,adv12775,carlo1,dude1998,babyhuey,nicole11,madmike,ubvyfpbz,qawsedr,lifetec,skyhook,stalker123,toolong,robertso,ripazha,zippy123,1111111a,manol,dirtyman,analslut,jason3,dutches,minhasenha,cerise,fenrir,jayjay1,flatbush,franka,bhbyjxrf,26429vadim,lawntrax,198700,fritzy,nikhil,ripper1,harami,truckman,nemvxyheqdd5oqxyxyzi,gkfytnf,bugaboo,cableman,hairpie,xplorer,movado,hotsex69,mordred,ohyeah1,patrick3,frolov,katieh,4311111q,mochaj,presari,bigdo,753951852,freedom4,kapitan,tomas1,135795,sweet123,pokers,shagme,tane4ka,sentinal,ufgyndmv,jonnyb,skate123,123456798,123456788,very1,gerrit,damocles,dollarbi,caroline1,lloyds,pizdets,flatland,92702689,dave13,meoff,ajnjuhfabz,achmed,madison9,744744z,amonte,avrillavigne,elaine1,norma1,asseater,everlong,buddy23,cmgang1,trash1,mitsu,flyman,ulugbek,june27,magistr,fittan,sebora64,dingos,sleipnir,caterpil,cindys,212121qaz,partys,dialer,gjytltkmybr,qweqaz,janvier,rocawear,lostboy,aileron,sweety1,everest1,pornman,boombox,potter1,blackdic,44448888,eric123,112233aa,2502557i,novass,nanotech,yourname,x12345,indian1,15975300,1234567l,carla51,chicago0,coleta,cxzdsaewq,qqwweerr,marwan,deltic,hollys,qwerasd,pon32029,rainmake,nathan0,matveeva,legioner,kevink,riven,tombraid,blitzen,a54321,jackyl,chinese1,shalimar,oleg1995,beaches1,tommylee,eknock,berli,monkey23,badbob,pugwash,likewhoa,jesus2,yujyd360,belmar,shadow22,utfp5e,angelo1,minimax,pooder,cocoa1,moresex,tortue,lesbia,panthe,snoopy2,drumnbass,alway,gmcz71,6jhwmqku,leppard,dinsdale,blair1,boriqua,money111,virtuagirl,267605,rattlesn,1sunshin,monica12,veritas1,newmexic,millertime,turandot,rfvxfnrf,jaydog,kakawka,bowhunter,booboo12,deerpark,erreway,taylorma,rfkbybyf,wooglin,weegee,rexdog,iamhorny,cazzo1,vhou812,bacardi1,dctktyyfz,godpasi,peanut12,bertha1,fuckyoubitch,ghosty,altavista,jertoot,smokeit,ghjcnbvtyz,fhnehxbr,rolsen,qazxcdews,maddmaxx,redrocke,qazokm,spencer2,thekiller,asdf11,123sex,tupac1,p1234567,dbrown,1biteme,tgo4466,316769,sunghi,shakespe,frosty1,gucci1,arcana,bandit01,lyubov,poochy,dartmout,magpies1,sunnyd,mouseman,summer07,chester7,shalini,danbury,pigboy,dave99,deniss,harryb,ashley11,pppppp1,01081988m,balloon1,tkachenko,bucks1,master77,pussyca,tricky1,zzxxccvv,zoulou,doomer,mukesh,iluv69,supermax,todays,thefox,don123,dontask,diplom,piglett,shiney,fahbrf,qaz12wsx,temitope,reggin,project1,buffy2,inside1,lbpfqyth,vanilla1,lovecock,u4slpwra,fylh.irf,123211,7ertu3ds,necroman,chalky,artist1,simpso,4x7wjr,chaos666,lazyacres,harley99,ch33s3,marusa,eagle7,dilligas,computadora,lucky69,denwer,nissan350z,unforgiv,oddball,schalke0,aztec1,borisova,branden1,parkave,marie123,germa,lafayett,878kckxy,405060,cheeseca,bigwave,fred22,andreea,poulet,mercutio,psycholo,andrew88,o4izdmxu,sanctuar,newhome,milion,suckmydi,rjvgm.nth,warior,goodgame,1qwertyuiop,6339cndh,scorpio2,macker,southbay,crabcake,toadie,paperclip,fatkid,maddo,cliff1,rastafar,maries,twins1,geujdrf,anjela,wc4fun,dolina,mpetroff,rollout,zydeco,shadow3,pumpki,steeda,volvo240,terras,blowjo,blue2000,incognit,badmojo,gambit1,zhukov,station1,aaronb,graci,duke123,clipper1,qazxsw2,ledzeppe,kukareku,sexkitte,cinco,007008,lakers12,a1234b,acmilan1,afhfjy,starrr,slutty3,phoneman,kostyan,bonzo1,sintesi07,ersatz,cloud1,nephilim,nascar03,rey619,kairos,123456789e,hardon1,boeing1,juliya,hfccdtn,vgfun8,polizei,456838,keithb,minouche,ariston,savag,213141,clarkken,microwav,london2,santacla,campeo,qr5mx7,464811,mynuts,bombo,1mickey,lucky8,danger1,ironside,carter12,wyatt1,borntorun,iloveyou123,jose1,pancake1,tadmichaels,monsta,jugger,hunnie,triste,heat7777,ilovejesus,queeny,luckycharm,lieben,gordolee85,jtkirk,forever21,jetlag,skylane,taucher,neworlea,holera,000005,anhnhoem,melissa7,mumdad,massimiliano,dima1994,nigel1,madison3,slicky,shokolad,serenit,jmh1978,soccer123,chris3,drwho,rfpzdrf,1qasw23ed,free4me,wonka,sasquatc,sanan,maytag,verochka,bankone,molly12,monopoli,xfqybr,lamborgini,gondolin,candycane,needsome,jb007,scottie1,brigit,0147258369,kalamazo,lololyo123,bill1234,ilovejes,lol123123,popkorn,april13,567rntvm,downunde,charle1,angelbab,guildwars,homeworld,qazxcvbnm,superma1,dupa123,kryptoni,happyy,artyom,stormie,cool11,calvin69,saphir,konovalov,jansport,october8,liebling,druuna,susans,megans,tujhjdf,wmegrfux,jumbo1,ljb4dt7n,012345678910,kolesnik,speculum,at4gftlw,kurgan,93pn75,cahek0980,dallas01,godswill,fhifdby,chelsea4,jump23,barsoom,catinhat,urlacher,angel99,vidadi1,678910,lickme69,topaz1,westend,loveone,c12345,gold12,alex1959,mamon,barney12,1maggie,alex12345,lp2568cskt,s1234567,gjikbdctyf,anthony0,browns99,chips1,sunking,widespre,lalala1,tdutif,fucklife,master00,alino4ka,stakan,blonde1,phoebus,tenore,bvgthbz,brunos,suzjv8,uvdwgt,revenant,1banana,veroniqu,sexfun,sp1der,4g3izhox,isakov,shiva1,scooba,bluefire,wizard12,dimitris,funbags,perseus,hoodoo,keving,malboro,157953,a32tv8ls,latics,animate,mossad,yejntb,karting,qmpq39zr,busdrive,jtuac3my,jkne9y,sr20dett,4gxrzemq,keylargo,741147,rfktylfhm,toast1,skins1,xcalibur,gattone,seether,kameron,glock9mm,julio1,delenn,gameday,tommyd,str8edge,bulls123,66699,carlsberg,woodbird,adnama,45auto,codyman,truck2,1w2w3w4w,pvjegu,method1,luetdi,41d8cd98f00b,bankai,5432112345,94rwpe,reneee,chrisx,melvins,775577,sam2000,scrappy1,rachid,grizzley,margare,morgan01,winstons,gevorg,gonzal,crawdad,gfhfdjp,babilon,noneya,pussy11,barbell,easyride,c00li0,777771,311music,karla1,golions,19866891,peejay,leadfoot,hfvbkm,kr9z40sy,cobra123,isotwe,grizz,sallys,****you,aaa123a,dembel,foxs14,hillcres,webman,mudshark,alfredo1,weeded,lester1,hovepark,ratface,000777fffa,huskie,wildthing,elbarto,waikiki,masami,call911,goose2,regin,dovajb,agricola,cjytxrj,andy11,penny123,family01,a121212,1braves,upupa68,happy100,824655,cjlove,firsttim,kalel,redhair,dfhtymt,sliders,bananna,loverbo,fifa2008,crouton,chevy350,panties2,kolya1,alyona,hagrid,spagetti,q2w3e4r,867530,narkoman,nhfdvfnjkju123,1ccccccc,napolean,0072563,allay,w8sted,wigwam,jamesk,state1,parovoz,beach69,kevinb,rossella,logitech1,celula,gnocca,canucks1,loginova,marlboro1,aaaa1,kalleanka,mester,mishutka,milenko,alibek,jersey1,peterc,1mouse,nedved,blackone,ghfplybr,682regkh,beejay,newburgh,ruffian,clarets,noreaga,xenophon,hummerh2,tenshi,smeagol,soloyo,vfhnby,ereiamjh,ewq321,goomie,sportin,cellphone,sonnie,jetblack,saudan,gblfhfc,matheus,uhfvjnf,alicja,jayman1,devon1,hexagon,bailey2,vtufajy,yankees7,salty1,908070,killemal,gammas,eurocard,sydney12,tuesday1,antietam,wayfarer,beast666,19952009sa,aq12ws,eveli,hockey21,haloreach,dontcare,xxxx1,andrea11,karlmarx,jelszo,tylerb,protools,timberwolf,ruffneck,pololo,1bbbbb,waleed,sasami,twinss,fairlady,illuminati,alex007,sucks1,homerjay,scooter7,tarbaby,barmaley,amistad,vanes,randers,tigers12,dreamer2,goleafsg,googie,bernie1,as12345,godeep,james3,phanto,gwbush,cumlover,2196dc,studioworks,995511,golf56,titova,kaleka,itali,socks1,kurwamac,daisuke,hevonen,woody123,daisie,wouter,henry123,gostosa,guppie,porpoise,iamsexy,276115,paula123,1020315,38gjgeuftd,rjrfrjkf,knotty,idiot1,sasha12345,matrix13,securit,radical1,ag764ks,jsmith,coolguy1,secretar,juanas,sasha1988,itout,00000001,tiger11,1butthea,putain,cavalo,basia1,kobebryant,1232323,12345asdfg,sunsh1ne,cyfqgth,tomkat,dorota,dashit,pelmen,5t6y7u,whipit,smokeone,helloall,bonjour1,snowshoe,nilknarf,x1x2x3,lammas,1234599,lol123456,atombomb,ironchef,noclue,alekseev,gwbush1,silver2,12345678m,yesican,fahjlbnf,chapstic,alex95,open1,tiger200,lisichka,pogiako,cbr929,searchin,tanya123,alex1973,phil413,alex1991,dominati,geckos,freddi,silenthill,egroeg,vorobey,antoxa,dark666,shkola,apple22,rebellio,shamanking,7f8srt,cumsucker,partagas,bill99,22223333,arnster55,fucknuts,proxima,silversi,goblues,parcells,vfrcbvjdf,piloto,avocet,emily2,1597530,miniskir,himitsu,pepper2,juiceman,venom1,bogdana,jujube,quatro,botafogo,mama2010,junior12,derrickh,asdfrewq,miller2,chitarra,silverfox,napol,prestigio,devil123,mm111qm,ara123,max33484,sex2000,primo1,sephan,anyuta,alena2010,viborg,verysexy,hibiscus,terps,josefin,oxcart,spooker,speciali,raffaello,partyon,vfhvtkflrf,strela,a123456z,worksuck,glasss,lomonosov,dusty123,dukeblue,1winter,sergeeva,lala123,john22,cmc09,sobolev,bettylou,dannyb,gjkrjdybr,hagakure,iecnhbr,awsedr,pmdmsctsk,costco,alekseeva,fktrcttd,bazuka,flyingv,garuda,buffy16,gutierre,beer12,stomatolog,ernies,palmeiras,golf123,love269,n.kmgfy,gjkysqgbpltw,youare,joeboo,baksik,lifeguar,111a111,nascar8,mindgame,dude1,neopets,frdfkfyu,june24,phoenix8,penelopa,merlin99,mercenar,badluck,mishel,bookert,deadsexy,power9,chinchil,1234567m,alex10,skunk1,rfhkcjy,sammycat,wright1,randy2,marakesh,temppassword,elmer251,mooki,patrick0,bonoedge,1tits,chiar,kylie1,graffix,milkman1,cornel,mrkitty,nicole12,ticketmaster,beatles4,number20,ffff1,terps1,superfre,yfdbufnjh,jake1234,flblfc,1111qq,zanuda,jmol01,wpoolejr,polopol,nicolett,omega13,cannonba,123456789.,sandy69,ribeye,bo243ns,marilena,bogdan123,milla,redskins1,19733791,alias1,movie1,ducat,marzena,shadowru,56565,coolman1,pornlover,teepee,spiff,nafanya,gateway3,fuckyou0,hasher,34778,booboo69,staticx,hang10,qq12345,garnier,bosco123,1234567qw,carson1,samso,1xrg4kcq,cbr929rr,allan123,motorbik,andrew22,pussy101,miroslava,cytujdbr,camp0017,cobweb,snusmumrik,salmon1,cindy2,aliya,serendipity,co437at,tincouch,timmy123,hunter22,st1100,vvvvvv1,blanka,krondor,sweeti,nenit,kuzmich,gustavo1,bmw320i,alex2010,trees1,kyliem,essayons,april26,kumari,sprin,fajita,appletre,fghbjhb,1green,katieb,steven2,corrado1,satelite,1michell,123456789c,cfkfvfylhf,acurarsx,slut543,inhere,bob2000,pouncer,k123456789,fishie,aliso,audia8,bluetick,soccer69,jordan99,fromhell,mammoth1,fighting54,mike25,pepper11,extra1,worldwid,chaise,vfr800,sordfish,almat,nofate,listopad,hellgate,dctvghbdf,jeremia,qantas,lokiju,honker,sprint1,maral,triniti,compaq3,sixsix6,married1,loveman,juggalo1,repvtyrj,zxcasdqw,123445,whore1,123678,monkey6,west123,warcraf,pwnage,mystery1,creamyou,ant123,rehjgfnrf,corona1,coleman1,steve121,alderaan,barnaul,celeste1,junebug1,bombshel,gretzky9,tankist,targa,cachou,vaz2101,playgolf,boneyard,strateg,romawka,iforgotit,pullup,garbage1,irock,archmage,shaft1,oceano,sadies,alvin1,135135ab,psalm69,lmfao,ranger02,zaharova,33334444,perkman,realman,salguod,cmoney,astonmartin,glock1,greyfox,viper99,helpm,blackdick,46775575,family5,shazbot,dewey1,qwertyas,shivani,black22,mailman1,greenday1,57392632,red007,stanky,sanchez1,tysons,daruma,altosax,krayzie,85852008,1forever,98798798,irock.,123456654,142536789,ford22,brick1,michela,preciou,crazy4u,01telemike01,nolife,concac,safety1,annie123,brunswic,destini,123456qwer,madison0,snowball1,137946,1133557799,jarule,scout2,songohan,thedead,00009999,murphy01,spycam,hirsute,aurinko,associat,1miller,baklan,hermes1,2183rm,martie,kangoo,shweta,yvonne1,westsid,jackpot1,rotciv,maratik,fabrika,claude1,nursultan,noentry,ytnhjufnm,electra1,ghjcnjnfr1,puneet,smokey01,integrit,bugeye,trouble2,14071789,paul01,omgwtf,dmh415,ekilpool,yourmom1,moimeme,sparky11,boludo,ruslan123,kissme1,demetrio,appelsin,asshole3,raiders2,bunns,fynjybj,billygoa,p030710p$e4o,macdonal,248ujnfk,acorns,schmidt1,sparrow1,vinbylrj,weasle,jerom,ycwvrxxh,skywalk,gerlinde,solidus,postal1,poochie1,1charles,rhianna,terorist,rehnrf,omgwtfbbq,assfucke,deadend,zidan,jimboy,vengence,maroon5,7452tr,dalejr88,sombra,anatole,elodi,amazonas,147789,q12345q,gawker1,juanma,kassidy,greek1,bruces,bilbob,mike44,0o9i8u7y6t,kaligula,agentx,familie,anders1,pimpjuice,0128um,birthday10,lawncare,hownow,grandorgue,juggerna,scarfac,kensai,swatteam,123four,motorbike,repytxbr,other1,celicagt,pleomax,gen0303,godisgreat,icepick,lucifer666,heavy1,tea4two,forsure,02020,shortdog,webhead,chris13,palenque,3techsrl,knights1,orenburg,prong,nomarg,wutang1,80637852730,laika,iamfree,12345670,pillow1,12343412,bigears,peterg,stunna,rocky5,12123434,damir,feuerwehr,7418529630,danone,yanina,valenci,andy69,111222q,silvia1,1jjjjj,loveforever,passwo1,stratocaster,8928190a,motorolla,lateralu,ujujkm,chubba,ujkjdf,signon,123456789zx,serdce,stevo,wifey200,ololo123,popeye1,1pass,central1,melena,luxor,nemezida,poker123,ilovemusic,qaz1234,noodles1,lakeshow,amarill,ginseng,billiam,trento,321cba,fatback,soccer33,master13,marie2,newcar,bigtop,dark1,camron,nosgoth,155555,biglou,redbud,jordan7,159789,diversio,actros,dazed,drizzit,hjcnjd,wiktoria,justic,gooses,luzifer,darren1,chynna,tanuki,11335577,icculus,boobss,biggi,firstson,ceisi123,gatewa,hrothgar,jarhead1,happyjoy,felipe1,bebop1,medman,athena1,boneman,keiths,djljgfl,dicklick,russ120,mylady,zxcdsa,rock12,bluesea,kayaks,provista,luckies,smile4me,bootycal,enduro,123123f,heartbre,ern3sto,apple13,bigpappa,fy.njxrf,bigtom,cool69,perrito,quiet1,puszek,cious,cruella,temp1,david26,alemap,aa123123,teddies,tricolor,smokey12,kikiriki,mickey01,robert01,super5,ranman,stevenso,deliciou,money777,degauss,mozar,susanne1,asdasd12,shitbag,mommy123,wrestle1,imfree,fuckyou12,barbaris,florent,ujhijr,f8yruxoj,tefjps,anemone,toltec,2gether,left4dead2,ximen,gfkmvf,dunca,emilys,diana123,16473a,mark01,bigbro,annarbor,nikita2000,11aa11,tigres,llllll1,loser2,fbi11213,jupite,qwaszxqw,macabre,123ert,rev2000,mooooo,klapaucius,bagel1,chiquit,iyaoyas,bear101,irocz28,vfktymrfz,smokey2,love99,rfhnbyf,dracul,keith123,slicko,peacock1,orgasmic,thesnake,solder,wetass,doofer,david5,rhfcyjlfh,swanny,tammys,turkiye,tubaman,estefani,firehose,funnyguy,servo,grace17,pippa1,arbiter,jimmy69,nfymrf,asdf67nm,rjcnzy,demon123,thicknes,sexysex,kristall,michail,encarta,banderos,minty,marchenko,de1987ma,mo5kva,aircav,naomi1,bonni,tatoo,cronaldo,49ers1,mama1963,1truck,telecaster,punksnotdead,erotik,1eagles,1fender,luv269,acdeehan,tanner1,freema,1q3e5t7u,linksys,tiger6,megaman1,neophyte,australia1,mydaddy,1jeffrey,fgdfgdfg,gfgekz,1986irachka,keyman,m0b1l3,dfcz123,mikeyg,playstation2,abc125,slacker1,110491g,lordsoth,bhavani,ssecca,dctvghbdtn,niblick,hondacar,baby01,worldcom,4034407,51094didi,3657549,3630000,3578951,sweetpussy,majick,supercoo,robert11,abacabb,panda123,gfhjkm13,ford4x4,zippo1,lapin,1726354,lovesong,dude11,moebius,paravoz,1357642,matkhau,solnyshko,daniel4,multiplelog,starik,martusia,iamtheman,greentre,jetblue,motorrad,vfrcbvev,redoak,dogma1,gnorman,komlos,tonka1,1010220,666satan,losenord,lateralus,absinthe,command1,jigga1,iiiiiii1,pants1,jungfrau,926337,ufhhbgjnnth,yamakasi,888555,sunny7,gemini69,alone1,zxcvbnmz,cabezon,skyblues,zxc1234,456123a,zero00,caseih,azzurra,legolas1,menudo,murcielago,785612,779977,benidorm,viperman,dima1985,piglet1,hemligt,hotfeet,7elephants,hardup,gamess,a000000,267ksyjf,kaitlynn,sharkie,sisyphus,yellow22,667766,redvette,666420,mets69,ac2zxdty,hxxrvwcy,cdavis,alan1,noddy,579300,druss,eatshit1,555123,appleseed,simpleplan,kazak,526282,fynfyfyfhbde,birthday6,dragon6,1pookie,bluedevils,omg123,hj8z6e,x5dxwp,455445,batman23,termin,chrisbrown,animals1,lucky9,443322,kzktxrf,takayuki,fermer,assembler,zomu9q,sissyboy,sergant,felina,nokia6230i,eminem12,croco,hunt4red,festina,darknigh,cptnz062,ndshnx4s,twizzler,wnmaz7sd,aamaax,gfhfcjkmrf,alabama123,barrynov,happy5,punt0it,durandal,8xuuobe4,cmu9ggzh,bruno12,316497,crazyfrog,vfvfktyf,apple3,kasey1,mackdaddy,anthon1,sunnys,angel3,cribbage,moon1,donal,bryce1,pandabear,mwss474,whitesta,freaker,197100,bitche,p2ssw0rd,turnb,tiktonik,moonlite,ferret1,jackas,ferrum,bearclaw,liberty2,1diablo,caribe,snakeeyes,janbam,azonic,rainmaker,vetalik,bigeasy,baby1234,sureno13,blink1,kluivert,calbears,lavanda,198600,dhtlbyf,medvedeva,fox123,whirling,bonscott,freedom9,october3,manoman,segredo,cerulean,robinso,bsmith,flatus,dannon,password21,rrrrrr1,callista,romai,rainman1,trantor,mickeymo,bulldog7,g123456,pavlin,pass22,snowie,hookah,7ofnine,bubba22,cabible,nicerack,moomoo1,summer98,yoyo123,milan1,lieve27,mustang69,jackster,exocet,nadege,qaz12,bahama,watson1,libras,eclipse2,bahram,bapezm,up9x8rww,ghjcnjz,themaste,deflep27,ghost16,gattaca,fotograf,junior123,gilber,gbjyth,8vjzus,rosco1,begonia,aldebara,flower12,novastar,buzzman,manchild,lopez1,mama11,william7,yfcnz1,blackstar,spurs123,moom4242,1amber,iownyou,tightend,07931505,paquito,1johnson,smokepot,pi31415,snowmass,ayacdc,jessicam,giuliana,5tgbnhy6,harlee,giuli,bigwig,tentacle,scoubidou2,benelli,vasilina,nimda,284655,jaihind,lero4ka,1tommy,reggi,ididit,jlbyjxtcndj,mike26,qbert,wweraw,lukasz,loosee123,palantir,flint1,mapper,baldie,saturne,virgin1,meeeee,elkcit,iloveme2,blue15,themoon,radmir,number3,shyanne,missle,hannelor,jasmina,karin1,lewie622,ghjcnjqgfhjkm,blasters,oiseau,sheela,grinders,panget,rapido,positiv,twink,fltkbyf,kzsfj874,daniel01,enjoyit,nofags,doodad,rustler,squealer,fortunat,peace123,khushi,devils2,7inches,candlebo,topdawg,armen,soundman,zxcqweasd,april7,gazeta,netman,hoppers,bear99,ghbjhbntn,mantle7,bigbo,harpo,jgordon,bullshi,vinny1,krishn,star22,thunderc,galinka,phish123,tintable,nightcrawler,tigerboy,rbhgbx,messi,basilisk,masha1998,nina123,yomamma,kayla123,geemoney,0000000000d,motoman,a3jtni,ser123,owen10,italien,vintelok,12345rewq,nightime,jeepin,ch1tt1ck,mxyzptlk,bandido,ohboy,doctorj,hussar,superted,parfilev,grundle,1jack,livestrong,chrisj,matthew3,access22,moikka,fatone,miguelit,trivium,glenn1,smooches,heiko,dezember,spaghett,stason,molokai,bossdog,guitarma,waderh,boriska,photosho,path13,hfrtnf,audre,junior24,monkey24,silke,vaz21093,bigblue1,trident1,candide,arcanum,klinker,orange99,bengals1,rosebu,mjujuj,nallepuh,mtwapa1a,ranger69,level1,bissjop,leica,1tiffany,rutabega,elvis77,kellie1,sameas,barada,karabas,frank12,queenb,toutoune,surfcity,samanth1,monitor1,littledo,kazakova,fodase,mistral1,april22,carlit,shakal,batman123,fuckoff2,alpha01,5544332211,buddy3,towtruck,kenwood1,vfiekmrf,jkl123,pypsik,ranger75,sitges,toyman,bartek1,ladygirl,booman,boeing77,installsqlst,222666,gosling,bigmack,223311,bogos,kevin2,gomez1,xohzi3g4,kfnju842,klubnika,cubalibr,123456789101,kenpo,0147852369,raptor1,tallulah,boobys,jjones,1q2s3c,moogie,vid2600,almas,wombat1,extra300,xfiles1,green77,sexsex1,heyjude,sammyy,missy123,maiyeuem,nccpl25282,thicluv,sissie,raven3,fldjrfn,buster22,broncos2,laurab,letmein4,harrydog,solovey,fishlips,asdf4321,ford123,superjet,norwegen,movieman,psw333333,intoit,postbank,deepwate,ola123,geolog323,murphys,eshort,a3eilm2s2y,kimota,belous,saurus,123321qaz,i81b4u,aaa12,monkey20,buckwild,byabybnb,mapleleafs,yfcnzyfcnz,baby69,summer03,twista,246890,246824,ltcnhjth,z1z2z3,monika1,sad123,uto29321,bathory,villan,funkey,poptarts,spam967888,705499fh,sebast,porn1234,earn381,1porsche,whatthef,123456789y,polo12,brillo,soreilly,waters1,eudora,allochka,is_a_bot,winter00,bassplay,531879fiz,onemore,bjarne,red911,kot123,artur1,qazxdr,c0rvette,diamond7,matematica,klesko,beaver12,2enter,seashell,panam,chaching,edward2,browni,xenogear,cornfed,aniram,chicco22,darwin1,ancella2,sophie2,vika1998,anneli,shawn41,babie,resolute,pandora2,william8,twoone,coors1,jesusis1,teh012,cheerlea,renfield,tessa1,anna1986,madness1,bkmlfh,19719870,liebherr,ck6znp42,gary123,123654z,alsscan,eyedoc,matrix7,metalgea,chinito,4iter,falcon11,7jokx7b9du,bigfeet,tassadar,retnuh,muscle1,klimova,darion,batistuta,bigsur,1herbier,noonie,ghjrehjh,karimova,faustus,snowwhite,1manager,dasboot,michael12,analfuck,inbed,dwdrums,jaysoncj,maranell,bsheep75,164379,rolodex,166666,rrrrrrr1,almaz666,167943,russel1,negrito,alianz,goodpussy,veronik,1w2q3r4e,efremov,emb377,sdpass,william6,alanfahy,nastya1995,panther5,automag,123qwe12,vfvf2011,fishe,1peanut,speedie,qazwsx1234,pass999,171204j,ketamine,sheena1,energizer,usethis1,123abc123,buster21,thechamp,flvbhfk,frank69,chane,hopeful1,claybird,pander,anusha,bigmaxxx,faktor,housebed,dimidrol,bigball,shashi,derby1,fredy,dervish,bootycall,80988218126,killerb,cheese2,pariss,mymail,dell123,catbert,christa1,chevytru,gjgjdf,00998877,overdriv,ratten,golf01,nyyanks,dinamite,bloembol,gismo,magnus1,march2,twinkles,ryan22,duckey,118a105b,kitcat,brielle,poussin,lanzarot,youngone,ssvegeta,hero63,battle1,kiler,fktrcfylh1,newera,vika1996,dynomite,oooppp,beer4me,foodie,ljhjuf,sonshine,godess,doug1,constanc,thinkbig,steve2,damnyou,autogod,www333,kyle1,ranger7,roller1,harry2,dustin1,hopalong,tkachuk,b00bies,bill2,deep111,stuffit,fire69,redfish1,andrei123,graphix,1fishing,kimbo1,mlesp31,ifufkbyf,gurkan,44556,emily123,busman,and123,8546404,paladine,1world,bulgakov,4294967296,bball23,1wwwww,mycats,elain,delta6,36363,emilyb,color1,6060842,cdtnkfyrf,hedonism,gfgfrfhkj,5551298,scubad,gostate,sillyme,hdbiker,beardown,fishers,sektor,00000007,newbaby,rapid1,braves95,gator2,nigge,anthony3,sammmy,oou812,heffer,phishin,roxanne1,yourass,hornet1,albator,2521659,underwat,tanusha,dianas,3f3fpht7op,dragon20,bilbobag,cheroke,radiatio,dwarf1,majik,33st33,dochka,garibald,robinh,sham69,temp01,wakeboar,violet1,1w2w3w,registr,tonite,maranello,1593570,parolamea,galatasara,loranthos,1472583,asmodean,1362840,scylla,doneit,jokerr,porkypig,kungen,mercator,koolhaas,come2me,debbie69,calbear,liverpoolfc,yankees4,12344321a,kennyb,madma,85200258,dustin23,thomas13,tooling,mikasa,mistic,crfnbyf,112233445,sofia1,heinz57,colts1,price1,snowey,joakim,mark11,963147,cnhfcnm,kzinti,1bbbbbbb,rubberdu,donthate,rupert1,sasha1992,regis1,nbuhbwf,fanboy,sundial,sooner1,wayout,vjnjhjkf,deskpro,arkangel,willie12,mikeyb,celtic1888,luis1,buddy01,duane1,grandma1,aolcom,weeman,172839456,basshead,hornball,magnu,pagedown,molly2,131517,rfvtgbyhn,astonmar,mistery,madalina,cash1,1happy,shenlong,matrix01,nazarova,369874125,800500,webguy,rse2540,ashley2,briank,789551,786110,chunli,j0nathan,greshnik,courtne,suckmyco,mjollnir,789632147,asdfg1234,754321,odelay,ranma12,zebedee,artem777,bmw318is,butt1,rambler1,yankees9,alabam,5w76rnqp,rosies,mafioso,studio1,babyruth,tranzit,magical123,gfhjkm135,12345$,soboleva,709394,ubique,drizzt1,elmers,teamster,pokemons,1472583690,1597532486,shockers,merckx,melanie2,ttocs,clarisse,earth1,dennys,slobber,flagman,farfalla,troika,4fa82hyx,hakan,x4ww5qdr,cumsuck,leather1,forum1,july20,barbel,zodiak,samuel12,ford01,rushfan,bugsy1,invest1,tumadre,screwme,a666666,money5,henry8,tiddles,sailaway,starburs,100years,killer01,comando,hiromi,ranetka,thordog,blackhole,palmeira,verboten,solidsna,q1w1e1,humme,kevinc,gbrfxe,gevaudan,hannah11,peter2,vangar,sharky7,talktome,jesse123,chuchi,pammy,!qazxsw2,siesta,twenty1,wetwilly,477041,natural1,sun123,daniel3,intersta,shithead1,hellyea,bonethugs,solitair,bubbles2,father1,nick01,444000,adidas12,dripik,cameron2,442200,a7nz8546,respublika,fkojn6gb,428054,snoppy,rulez1,haslo,rachael1,purple01,zldej102,ab12cd34,cytuehjxrf,madhu,astroman,preteen,handsoff,mrblonde,biggio,testin,vfdhif,twolves,unclesam,asmara,kpydskcw,lg2wmgvr,grolsch,biarritz,feather1,williamm,s62i93,bone1,penske,337733,336633,taurus1,334433,billet,diamondd,333000,nukem,fishhook,godogs,thehun,lena1982,blue00,smelly1,unb4g9ty,65pjv22,applegat,mikehunt,giancarlo,krillin,felix123,december1,soapy,46doris,nicole23,bigsexy1,justin10,pingu,bambou,falcon12,dgthtl,1surfer,qwerty01,estrellit,nfqcjy,easygo,konica,qazqwe,1234567890m,stingers,nonrev,3e4r5t,champio,bbbbbb99,196400,allen123,seppel,simba2,rockme,zebra3,tekken3,endgame,sandy2,197300,fitte,monkey00,eldritch,littleone,rfyfgkz,1member,66chevy,oohrah,cormac,hpmrbm41,197600,grayfox,elvis69,celebrit,maxwell7,rodders,krist,1camaro,broken1,kendall1,silkcut,katenka,angrick,maruni,17071994a,tktyf,kruemel,snuffles,iro4ka,baby12,alexis01,marryme,vlad1994,forward1,culero,badaboom,malvin,hardtoon,hatelove,molley,knopo4ka,duchess1,mensuck,cba321,kickbutt,zastava,wayner,fuckyou6,eddie123,cjkysir,john33,dragonfi,cody1,jabell,cjhjrf,badseed,sweden1,marihuana,brownlov,elland,nike1234,kwiettie,jonnyboy,togepi,billyk,robert123,bb334,florenci,ssgoku,198910,bristol1,bob007,allister,yjdujhjl,gauloise,198920,bellaboo,9lives,aguilas,wltfg4ta,foxyroxy,rocket69,fifty50,babalu,master21,malinois,kaluga,gogosox,obsessio,yeahrigh,panthers1,capstan,liza2000,leigh1,paintball1,blueskie,cbr600f3,bagdad,jose98,mandreki,shark01,wonderbo,muledeer,xsvnd4b2,hangten,200001,grenden,anaell,apa195,model1,245lufpq,zip100,ghjcgtrn,wert1234,misty2,charro,juanjose,fkbcrf,frostbit,badminto,buddyy,1doctor,vanya,archibal,parviz,spunky1,footboy,dm6tzsgp,legola,samadhi,poopee,ytdxz2ca,hallowboy,dposton,gautie,theworm,guilherme,dopehead,iluvtits,bobbob1,ranger6,worldwar,lowkey,chewbaca,oooooo99,ducttape,dedalus,celular,8i9o0p,borisenko,taylor01,111111z,arlingto,p3nnywiz,rdgpl3ds,boobless,kcmfwesg,blacksab,mother2,markus1,leachim,secret2,s123456789,1derful,espero,russell2,tazzer,marykate,freakme,mollyb,lindros8,james00,gofaster,stokrotka,kilbosik,aquamann,pawel1,shedevil,mousie,slot2009,october6,146969,mm259up,brewcrew,choucho,uliana,sexfiend,fktirf,pantss,vladimi,starz,sheeps,12341234q,bigun,tiggers,crjhjcnm,libtech,pudge1,home12,zircon,klaus1,jerry2,pink1,lingus,monkey66,dumass,polopolo09,feuerweh,rjyatnf,chessy,beefer,shamen,poohbear1,4jjcho,bennevis,fatgirls,ujnbrf,cdexswzaq,9noize9,rich123,nomoney,racecar1,hacke,clahay,acuario,getsum,hondacrv,william0,cheyenn,techdeck,atljhjdf,wtcacq,suger,fallenangel,bammer,tranquil,carla123,relayer,lespaul1,portvale,idontno,bycnbnen,trooper2,gennadiy,pompon,billbob,amazonka,akitas,chinatow,atkbrc,busters,fitness1,cateye,selfok2013,1murphy,fullhous,mucker,bajskorv,nectarin,littlebitch,love24,feyenoor,bigal37,lambo1,pussybitch,icecube1,biged,kyocera,ltybcjdf,boodle,theking1,gotrice,sunset1,abm1224,fromme,sexsells,inheat,kenya1,swinger1,aphrodit,kurtcobain,rhind101,poidog,poiulkjh,kuzmina,beantown,tony88,stuttgar,drumer,joaqui,messenge,motorman,amber2,nicegirl,rachel69,andreia,faith123,studmuffin,jaiden,red111,vtkmybr,gamecocks,gumper,bosshogg,4me2know,tokyo1,kleaner,roadhog,fuckmeno,phoenix3,seeme,buttnutt,boner69,andreyka,myheart,katerin,rugburn,jvtuepip,dc3ubn,chile1,ashley69,happy99,swissair,balls2,fylhttdf,jimboo,55555d,mickey11,voronin,m7hsqstm,stufff,merete,weihnachte,dowjones,baloo1,freeones,bears34,auburn1,beverl,timberland,1elvis,guinness1,bombadil,flatron1,logging7,telefoon,merl1n,masha1,andrei1,cowabung,yousuck1,1matrix,peopl,asd123qwe,sweett,mirror1,torrente,joker12,diamond6,jackaroo,00000a,millerlite,ironhorse,2twins,stryke,gggg1,zzzxxxccc,roosevel,8363eddy,angel21,depeche1,d0ct0r,blue14,areyou,veloce,grendal,frederiksberg,cbcntvf,cb207sl,sasha2000,was.here,fritzz,rosedale,spinoza,cokeisit,gandalf3,skidmark,ashley01,12345j,1234567890qaz,sexxxxxx,beagles,lennart,12345789,pass10,politic,max007,gcheckou,12345611,tiffy,lightman,mushin,velosiped,brucewayne,gauthie,elena123,greenegg,h2oski,clocker,nitemare,123321s,megiddo,cassidy1,david13,boywonde,flori,peggy12,pgszt6md,batterie,redlands,scooter6,bckhere,trueno,bailey11,maxwell2,bandana,timoth1,startnow,ducati74,tiern,maxine1,blackmetal,suzyq,balla007,phatfarm,kirsten1,titmouse,benhogan,culito,forbin,chess1,warren1,panman,mickey7,24lover,dascha,speed2,redlion,andrew10,johnwayn,nike23,chacha1,bendog,bullyboy,goldtree,spookie,tigger99,1cookie,poutine,cyclone1,woodpony,camaleun,bluesky1,dfadan,eagles20,lovergirl,peepshow,mine1,dima1989,rjdfkmxer,11111aaaaa,machina,august17,1hhhhh,0773417k,1monster,freaksho,jazzmin,davidw,kurupt,chumly,huggies,sashenka,ccccccc1,bridge1,giggalo,cincinna,pistol1,hello22,david77,lightfoo,lucky6,jimmy12,261397,lisa12,tabaluga,mysite,belo4ka,greenn,eagle99,punkrawk,salvado,slick123,wichsen,knight99,dummys,fefolico,contrera,kalle1,anna1984,delray,robert99,garena,pretende,racefan,alons,serenada,ludmilla,cnhtkjr,l0swf9gx,hankster,dfktynbyrf,sheep1,john23,cv141ab,kalyani,944turbo,crystal2,blackfly,zrjdktdf,eus1sue1,mario5,riverplate,harddriv,melissa3,elliott1,sexybitc,cnhfyybr,jimdavis,bollix,beta1,amberlee,skywalk1,natala,1blood,brattax,shitty1,gb15kv99,ronjon,rothmans,thedoc,joey21,hotboi,firedawg,bimbo38,jibber,aftermat,nomar,01478963,phishing,domodo,anna13,materia,martha1,budman1,gunblade,exclusiv,sasha1997,anastas,rebecca2,fackyou,kallisti,fuckmyass,norseman,ipswich1,151500,1edward,intelinside,darcy1,bcrich,yjdjcnbf,failte,buzzzz,cream1,tatiana1,7eleven,green8,153351,1a2s3d4f5g6h,154263,milano1,bambi1,bruins77,rugby2,jamal1,bolita,sundaypunch,bubba12,realmadr,vfyxtcnth,iwojima,notlob,black666,valkiria,nexus1,millerti,birthday100,swiss1,appollo,gefest,greeneyes,celebrat,tigerr,slava123,izumrud,bubbabub,legoman,joesmith,katya123,sweetdream,john44,wwwwwww1,oooooo1,socal,lovespor,s5r8ed67s,258147,heidis,cowboy22,wachovia,michaelb,qwe1234567,i12345,255225,goldie1,alfa155,45colt,safeu851,antonova,longtong,1sparky,gfvznm,busen,hjlbjy,whateva,rocky4,cokeman,joshua3,kekskek1,sirocco,jagman,123456qwert,phinupi,thomas10,loller,sakur,vika2011,fullred,mariska,azucar,ncstate,glenn74,halima,aleshka,ilovemylife,verlaat,baggie,scoubidou6,phatboy,jbruton,scoop1,barney11,blindman,def456,maximus2,master55,nestea,11223355,diego123,sexpistols,sniffy,philip1,f12345,prisonbreak,nokia2700,ajnjuhfa,yankees3,colfax,ak470000,mtnman,bdfyeirf,fotball,ichbin,trebla,ilusha,riobravo,beaner1,thoradin,polkaudi,kurosawa,honda123,ladybu,valerik,poltava,saviola,fuckyouguys,754740g0,anallove,microlab1,juris01,ncc1864,garfild,shania1,qagsud,makarenko,cindy69,lebedev,andrew11,johnnybo,groovy1,booster1,sanders1,tommyb,johnson4,kd189nlcih,hondaman,vlasova,chick1,sokada,sevisgur,bear2327,chacho,sexmania,roma1993,hjcnbckfd,valley1,howdie,tuppence,jimandanne,strike3,y4kuz4,nhfnfnf,tsubasa,19955991,scabby,quincunx,dima1998,uuuuuu1,logica,skinner1,pinguino,lisa1234,xpressmusic,getfucked,qqqq1,bbbb1,matulino,ulyana,upsman,johnsmith,123579,co2000,spanner1,todiefor,mangoes,isabel1,123852,negra,snowdon,nikki123,bronx1,booom,ram2500,chuck123,fireboy,creek1,batman13,princesse,az12345,maksat,1knight,28infern,241455,r7112s,muselman,mets1986,katydid,vlad777,playme,kmfdm1,asssex,1prince,iop890,bigbroth,mollymoo,waitron,lizottes,125412,juggler,quinta,0sister0,zanardi,nata123,heckfyxbr,22q04w90e,engine2,nikita95,zamira,hammer22,lutscher,carolina1,zz6319,sanman,vfuflfy,buster99,rossco,kourniko,aggarwal,tattoo1,janice1,finger1,125521,19911992,shdwlnds,rudenko,vfvfgfgf123,galatea,monkeybu,juhani,premiumcash,classact,devilmay,helpme2,knuddel,hardpack,ramil,perrit,basil1,zombie13,stockcar,tos8217,honeypie,nowayman,alphadog,melon1,talula,125689,tiribon12,tornike,haribol,telefone,tiger22,sucka,lfytxrf,chicken123,muggins,a23456,b1234567,lytdybr,otter1,pippa,vasilisk,cooking1,helter,78978,bestboy,viper7,ahmed1,whitewol,mommys,apple5,shazam1,chelsea7,kumiko,masterma,rallye,bushmast,jkz123,entrar,andrew6,nathan01,alaric,tavasz,heimdall,gravy1,jimmy99,cthlwt,powerr,gthtrhtcnjr,canesfan,sasha11,ybrbnf_25,august9,brucie,artichok,arnie1,superdude,tarelka,mickey22,dooper,luners,holeshot,good123,gettysbu,bicho,hammer99,divine5,1zxcvbn,stronzo,q22222,disne,bmw750il,godhead,hallodu,aerith,nastik,differen,cestmoi,amber69,5string,pornosta,dirtygirl,ginger123,formel1,scott12,honda200,hotspurs,johnatha,firstone123,lexmark1,msconfig,karlmasc,l123456,123qweasdzx,baldman,sungod,furka,retsub,9811020,ryder1,tcglyued,astron,lbvfcbr,minddoc,dirt49,baseball12,tbear,simpl,schuey,artimus,bikman,plat1num,quantex,gotyou,hailey1,justin01,ellada,8481068,000002,manimal,dthjybxrf,buck123,dick123,6969696,nospam,strong1,kodeord,bama12,123321w,superman123,gladiolus,nintend,5792076,dreamgirl,spankme1,gautam,arianna1,titti,tetas,cool1234,belladog,importan,4206969,87e5nclizry,teufelo7,doller,yfl.irf,quaresma,3440172,melis,bradle,nnmaster,fast1,iverso,blargh,lucas12,chrisg,iamsam,123321az,tomjerry,kawika,2597174,standrew,billyg,muskan,gizmodo2,rz93qpmq,870621345,sathya,qmezrxg4,januari,marthe,moom4261,cum2me,hkger286,lou1988,suckit1,croaker,klaudia1,753951456,aidan1,fsunoles,romanenko,abbydog,isthebes,akshay,corgi,fuck666,walkman555,ranger98,scorpian,hardwareid,bluedragon,fastman,2305822q,iddqdiddqd,1597532,gopokes,zvfrfcb,w1234567,sputnik1,tr1993,pa$$w0rd,2i5fdruv,havvoc,1357913,1313131,bnm123,cowd00d,flexscan,thesims2,boogiema,bigsexxy,powerstr,ngc4565,joshman,babyboy1,123jlb,funfunfu,qwe456,honor1,puttana,bobbyj,daniel21,pussy12,shmuck,1232580,123578951,maxthedo,hithere1,bond0007,gehenna,nomames,blueone,r1234567,bwana,gatinho,1011111,torrents,cinta,123451234,tiger25,money69,edibey,pointman,mmcm19,wales1,caffreys,phaedra,bloodlus,321ret32,rufuss,tarbit,joanna1,102030405,stickboy,lotrfotr34,jamshid,mclarenf1,ataman,99ford,yarrak,logan2,ironlung,pushistik,dragoon1,unclebob,tigereye,pinokio,tylerj,mermaid1,stevie1,jaylen,888777,ramana,roman777,brandon7,17711771s,thiago,luigi1,edgar1,brucey,videogam,classi,birder,faramir,twiddle,cubalibre,grizzy,fucky,jjvwd4,august15,idinahui,ranita,nikita1998,123342,w1w2w3,78621323,4cancel,789963,(null,vassago,jaydog472,123452,timt42,canada99,123589,rebenok,htyfnf,785001,osipov,maks123,neverwinter,love2010,777222,67390436,eleanor1,bykemo,aquemini,frogg,roboto,thorny,shipmate,logcabin,66005918,nokian,gonzos,louisian,1abcdefg,triathlo,ilovemar,couger,letmeino,supera,runvs,fibonacci,muttly,58565254,5thgbqi,vfnehsv,electr,jose12,artemis1,newlove,thd1shr,hawkey,grigoryan,saisha,tosca,redder,lifesux,temple1,bunnyman,thekids,sabbeth,tarzan1,182838,158uefas,dell50,1super,666222,47ds8x,jackhamm,mineonly,rfnfhbyf,048ro,665259,kristina1,bombero,52545856,secure1,bigloser,peterk,alex2,51525354,anarchy1,superx,teenslut,money23,sigmapi,sanfrancisco,acme34,private5,eclips,qwerttrewq,axelle,kokain,hardguy,peter69,jesuschr,dyanna,dude69,sarah69,toyota91,amberr,45645645,bugmenot,bigted,44556677,556644,wwr8x9pu,alphaome,harley13,kolia123,wejrpfpu,revelati,nairda,sodoff,cityboy,pinkpussy,dkalis,miami305,wow12345,triplet,tannenbau,asdfasdf1,darkhors,527952,retired1,soxfan,nfyz123,37583867,goddes,515069,gxlmxbewym,1warrior,36925814,dmb2011,topten,karpova,89876065093rax,naturals,gateway9,cepseoun,turbot,493949,cock22,italia1,sasafras,gopnik,stalke,1qazxdr5,wm2006,ace1062,alieva,blue28,aracel,sandia,motoguzz,terri1,emmajane,conej,recoba,alex1995,jerkyboy,cowboy12,arenrone,precisio,31415927,scsa316,panzer1,studly1,powerhou,bensam,mashoutq,billee,eeyore1,reape,thebeatl,rul3z,montesa,doodle1,cvzefh1gk,424365,a159753,zimmerma,gumdrop,ashaman,grimreap,icandoit,borodina,branca,dima2009,keywest1,vaders,bubluk,diavolo,assss,goleta,eatass,napster1,382436,369741,5411pimo,lenchik,pikach,gilgamesh,kalimera,singer1,gordon2,rjycnbnewbz,maulwurf,joker13,2much4u,bond00,alice123,robotec,fuckgirl,zgjybz,redhorse,margaret1,brady1,pumpkin2,chinky,fourplay,1booger,roisin,1brandon,sandan,blackheart,cheez,blackfin,cntgfyjdf,mymoney1,09080706,goodboss,sebring1,rose1,kensingt,bigboner,marcus12,ym3cautj,struppi,thestone,lovebugs,stater,silver99,forest99,qazwsx12345,vasile,longboar,mkonji,huligan,rhfcbdfz,airmail,porn11,1ooooo,sofun,snake2,msouthwa,dougla,1iceman,shahrukh,sharona,dragon666,france98,196800,196820,ps253535,zjses9evpa,sniper01,design1,konfeta,jack99,drum66,good4you,station2,brucew,regedit,school12,mvtnr765,pub113,fantas,tiburon1,king99,ghjcnjgbpltw,checkito,308win,1ladybug,corneliu,svetasveta,197430,icicle,imaccess,ou81269,jjjdsl,brandon6,bimbo1,smokee,piccolo1,3611jcmg,children2,cookie2,conor1,darth1,margera,aoi856,paully,ou812345,sklave,eklhigcz,30624700,amazing1,wahooo,seau55,1beer,apples2,chulo,dolphin9,heather6,198206,198207,hergood,miracle1,njhyflj,4real,milka,silverfi,fabfive,spring12,ermine,mammy,jumpjet,adilbek,toscana,caustic,hotlove,sammy69,lolita1,byoung,whipme,barney01,mistys,tree1,buster3,kaylin,gfccgjhn,132333,aishiteru,pangaea,fathead1,smurph,198701,ryslan,gasto,xexeylhf,anisimov,chevyss,saskatoo,brandy12,tweaker,irish123,music2,denny1,palpatin,outlaw1,lovesuck,woman1,mrpibb,diadora,hfnfneq,poulette,harlock,mclaren1,cooper12,newpass3,bobby12,rfgecnfcerf,alskdjfh,mini14,dukers,raffael,199103,cleo123,1234567qwertyu,mossberg,scoopy,dctulf,starline,hjvjxrf,misfits1,rangers2,bilbos,blackhea,pappnase,atwork,purple2,daywalker,summoner,1jjjjjjj,swansong,chris10,laluna,12345qqq,charly1,lionsden,money99,silver33,hoghead,bdaddy,199430,saisg002,nosaints,tirpitz,1gggggg,jason13,kingss,ernest1,0cdh0v99ue,pkunzip,arowana,spiri,deskjet1,armine,lances,magic2,thetaxi,14159265,cacique,14142135,orange10,richard0,backdraf,255ooo,humtum,kohsamui,c43dae874d,wrestling1,cbhtym,sorento,megha,pepsiman,qweqwe12,bliss7,mario64,korolev,balls123,schlange,gordit,optiquest,fatdick,fish99,richy,nottoday,dianne1,armyof1,1234qwerasdfzxcv,bbonds,aekara,lidiya,baddog1,yellow5,funkie,ryan01,greentree,gcheckout,marshal1,liliput,000000z,rfhbyrf,gtogto43,rumpole,tarado,marcelit,aqwzsxedc,kenshin1,sassydog,system12,belly1,zilla,kissfan,tools1,desember,donsdad,nick11,scorpio6,poopoo1,toto99,steph123,dogfuck,rocket21,thx113,dude12,sanek,sommar,smacky,pimpsta,letmego,k1200rs,lytghjgtnhjdcr,abigale,buddog,deles,baseball9,roofus,carlsbad,hamzah,hereiam,genial,schoolgirlie,yfz450,breads,piesek,washear,chimay,apocalyp,nicole18,gfgf1234,gobulls,dnevnik,wonderwall,beer1234,1moose,beer69,maryann1,adpass,mike34,birdcage,hottuna,gigant,penquin,praveen,donna123,123lol123,thesame,fregat,adidas11,selrahc,pandoras,test3,chasmo,111222333000,pecos,daniel11,ingersol,shana1,mama12345,cessna15,myhero,1simpson,nazarenko,cognit,seattle2,irina1,azfpc310,rfycthdf,hardy1,jazmyn,sl1200,hotlanta,jason22,kumar123,sujatha,fsd9shtyu,highjump,changer,entertai,kolding,mrbig,sayuri,eagle21,qwertzu,jorge1,0101dd,bigdong,ou812a,sinatra1,htcnjhfy,oleg123,videoman,pbyfblf,tv612se,bigbird1,kenaidog,gunite,silverma,ardmore,123123qq,hotbot,cascada,cbr600f4,harakiri,chico123,boscos,aaron12,glasgow1,kmn5hc,lanfear,1light,liveoak,fizika,ybrjkftdyf,surfside,intermilan,multipas,redcard,72chevy,balata,coolio1,schroede,kanat,testerer,camion,kierra,hejmeddig,antonio2,tornados,isidor,pinkey,n8skfswa,ginny1,houndog,1bill,chris25,hastur,1marine,greatdan,french1,hatman,123qqq,z1z2z3z4,kicker1,katiedog,usopen,smith22,mrmagoo,1234512i,assa123,7seven7,monster7,june12,bpvtyf,149521,guenter,alex1985,voronina,mbkugegs,zaqwsxcderfv,rusty5,mystic1,master0,abcdef12,jndfkb,r4zpm3,cheesey,skripka,blackwhite,sharon69,dro8smwq,lektor,techman,boognish,deidara,heckfyf,quietkey,authcode,monkey4,jayboy,pinkerto,merengue,chulita,bushwick,turambar,kittykit,joseph2,dad123,kristo,pepote,scheiss,hambone1,bigballa,restaura,tequil,111luzer,euro2000,motox,denhaag,chelsi,flaco1,preeti,lillo,1001sin,passw,august24,beatoff,555555d,willis1,kissthis,qwertyz,rvgmw2gl,iloveboobies,timati,kimbo,msinfo,dewdrop,sdbaker,fcc5nky2,messiah1,catboy,small1,chode,beastie1,star77,hvidovre,short1,xavie,dagobah,alex1987,papageno,dakota2,toonami,fuerte,jesus33,lawina,souppp,dirtybir,chrish,naturist,channel1,peyote,flibble,gutentag,lactate,killem,zucchero,robinho,ditka,grumpy1,avr7000,boxxer,topcop,berry1,mypass1,beverly1,deuce1,9638527410,cthuttdf,kzkmrf,lovethem,band1t,cantona1,purple11,apples123,wonderwo,123a456,fuzzie,lucky99,dancer2,hoddling,rockcity,winner12,spooty,mansfiel,aimee1,287hf71h,rudiger,culebra,god123,agent86,daniel0,bunky1,notmine,9ball,goofus,puffy1,xyh28af4,kulikov,bankshot,vurdf5i2,kevinm,ercole,sexygirls,razvan,october7,goater,lollie,raissa,thefrog,mdmaiwa3,mascha,jesussaves,union1,anthony9,crossroa,brother2,areyuke,rodman91,toonsex,dopeman,gericom,vaz2115,cockgobbler,12356789,12345699,signatur,alexandra1,coolwhip,erwin1,awdrgyjilp,pens66,ghjrjgtyrj,linkinpark,emergenc,psych0,blood666,bootmort,wetworks,piroca,johnd,iamthe1,supermario,homer69,flameon,image1,bebert,fylhtq1,annapoli,apple11,hockey22,10048,indahouse,mykiss,1penguin,markp,misha123,foghat,march11,hank1,santorin,defcon4,tampico,vbnhjafy,robert22,bunkie,athlon64,sex777,nextdoor,koskesh,lolnoob,seemnemaailm,black23,march15,yeehaa,chiqui,teagan,siegheil,monday2,cornhusk,mamusia,chilis,sthgrtst,feldspar,scottm,pugdog,rfghjy,micmac,gtnhjdyf,terminato,1jackson,kakosja,bogomol,123321aa,rkbvtyrj,tresor,tigertig,fuckitall,vbkkbjy,caramon,zxc12,balin,dildo1,soccer09,avata,abby123,cheetah1,marquise,jennyc,hondavfr,tinti,anna1985,dennis2,jorel,mayflowe,icema,hal2000,nikkis,bigmouth,greenery,nurjan,leonov,liberty7,fafnir,larionov,sat321321,byteme1,nausicaa,hjvfynbrf,everto,zebra123,sergio1,titone,wisdom1,kahala,104328q,marcin1,salima,pcitra,1nnnnn,nalini,galvesto,neeraj,rick1,squeeky,agnes1,jitterbu,agshar,maria12,0112358,traxxas,stivone,prophet1,bananza,sommer1,canoneos,hotfun,redsox11,1bigmac,dctdjkjl,legion1,everclea,valenok,black9,danny001,roxie1,1theman,mudslide,july16,lechef,chula,glamis,emilka,canbeef,ioanna,cactus1,rockshox,im2cool,ninja9,thvfrjdf,june28,milo17,missyou,micky1,nbibyf,nokiaa,goldi,mattias,fuckthem,asdzxc123,ironfist,junior01,nesta,crazzy,killswit,hygge,zantac,kazama,melvin1,allston,maandag,hiccup,prototyp,specboot,dwl610,hello6,159456,baldhead,redwhite,calpoly,whitetail,agile1,cousteau,matt01,aust1n,malcolmx,gjlfhjr,semperf1,ferarri,a1b2c3d,vangelis,mkvdari,bettis36,andzia,comand,tazzman,morgaine,pepluv,anna1990,inandout,anetka,anna1997,wallpape,moonrake,huntress,hogtie,cameron7,sammy7,singe11,clownboy,newzeala,wilmar,safrane,rebeld,poopi,granat,hammertime,nermin,11251422,xyzzy1,bogeys,jkmxbr,fktrcfyl,11223311,nfyrbcn,11223300,powerpla,zoedog,ybrbnbyf,zaphod42,tarawa,jxfhjdfirf,dude1234,g5wks9,goobe,czekolada,blackros,amaranth,medical1,thereds,julija,nhecsyfujkjdt,promopas,buddy4,marmalad,weihnachten,tronic,letici,passthief,67mustan,ds7zamnw,morri,w8woord,cheops,pinarell,sonofsam,av473dv,sf161pn,5c92v5h6,purple13,tango123,plant1,1baby,xufrgemw,fitta,1rangers,spawns,kenned,taratata,19944991,11111118,coronas,4ebouux8,roadrash,corvette1,dfyjdf846,marley12,qwaszxerdfcv,68stang,67stang,racin,ellehcim,sofiko,nicetry,seabass1,jazzman1,zaqwsx1,laz2937,uuuuuuu1,vlad123,rafale,j1234567,223366,nnnnnn1,226622,junkfood,asilas,cer980,daddymac,persepho,neelam,00700,shithappens,255555,qwertyy,xbox36,19755791,qweasd1,bearcub,jerryb,a1b1c1,polkaudio,basketball1,456rty,1loveyou,marcus2,mama1961,palace1,transcend,shuriken,sudhakar,teenlove,anabelle,matrix99,pogoda,notme,bartend,jordana,nihaoma,ataris,littlegi,ferraris,redarmy,giallo,fastdraw,accountbloc,peludo,pornostar,pinoyako,cindee,glassjaw,dameon,johnnyd,finnland,saudade,losbravo,slonko,toplay,smalltit,nicksfun,stockhol,penpal,caraj,divedeep,cannibus,poppydog,pass88,viktory,walhalla,arisia,lucozade,goldenbo,tigers11,caball,ownage123,tonna,handy1,johny,capital5,faith2,stillher,brandan,pooky1,antananarivu,hotdick,1justin,lacrimos,goathead,bobrik,cgtwbfkbcn,maywood,kamilek,gbplf123,gulnar,beanhead,vfvjyn,shash,viper69,ttttttt1,hondacr,kanako,muffer,dukies,justin123,agapov58,mushka,bad11bad,muleman,jojo123,andreika,makeit,vanill,boomers,bigals,merlin11,quacker,aurelien,spartak1922,ligeti,diana2,lawnmowe,fortune1,awesom,rockyy,anna1994,oinker,love88,eastbay,ab55484,poker0,ozzy666,papasmurf,antihero,photogra,ktm250,painkill,jegr2d2,p3orion,canman,dextur,qwest123,samboy,yomismo,sierra01,herber,vfrcbvvfrcbv,gloria1,llama1,pie123,bobbyjoe,buzzkill,skidrow,grabber,phili,javier1,9379992q,geroin,oleg1994,sovereig,rollover,zaq12qaz,battery1,killer13,alina123,groucho1,mario12,peter22,butterbean,elise1,lucycat,neo123,ferdi,golfer01,randie,gfhfyjbr,ventura1,chelsea3,pinoy,mtgox,yrrim7,shoeman,mirko,ffggyyo,65mustan,ufdibyjd,john55,suckfuck,greatgoo,fvfnjhb,mmmnnn,love20,1bullshi,sucesso,easy1234,robin123,rockets1,diamondb,wolfee,nothing0,joker777,glasnost,richar1,guille,sayan,koresh,goshawk,alexx,batman21,a123456b,hball,243122,rockandr,coolfool,isaia,mary1,yjdbrjdf,lolopc,cleocat,cimbo,lovehina,8vfhnf,passking,bonapart,diamond2,bigboys,kreator,ctvtyjdf,sassy123,shellac,table54781,nedkelly,philbert,sux2bu,nomis,sparky99,python1,littlebear,numpty,silmaril,sweeet,jamesw,cbufhtnf,peggysue,wodahs,luvsex,wizardry,venom123,love4you,bama1,samat,reviewpass,ned467,cjkjdtq,mamula,gijoe,amersham,devochka,redhill,gisel,preggo,polock,cando,rewster,greenlantern,panasonik,dave1234,mikeee,1carlos,miledi,darkness1,p0o9i8u7y6,kathryn1,happyguy,dcp500,assmaster,sambuka,sailormo,antonio3,logans,18254288,nokiax2,qwertzuiop,zavilov,totti,xenon1,edward11,targa1,something1,tony_t,q1w2e3r4t5y6u7i8o9p0,02551670,vladimir1,monkeybutt,greenda,neel21,craiger,saveliy,dei008,honda450,fylhtq95,spike2,fjnq8915,passwordstandard,vova12345,talonesi,richi,gigemags,pierre1,westin,trevoga,dorothee,bastogne,25563o,brandon3,truegrit,krimml,iamgreat,servis,a112233,paulinka,azimuth,corperfmonsy,358hkyp,homerun1,dogbert1,eatmyass,cottage1,savina,baseball7,bigtex,gimmesum,asdcxz,lennon1,a159357,1bastard,413276191q,pngfilt,pchealth,netsnip,bodiroga,1matt,webtvs,ravers,adapters,siddis,mashamasha,coffee2,myhoney,anna1982,marcia1,fairchil,maniek,iloveluc,batmonh,wildon,bowie1,netnwlnk,fancy1,tom204,olga1976,vfif123,queens1,ajax01,lovess,mockba,icam4usb,triada,odinthor,rstlne,exciter,sundog,anchorat,girls69,nfnmzyrf,soloma,gti16v,shadowman,ottom,rataros,tonchin,vishal,chicken0,pornlo,christiaan,volante,likesit,mariupol,runfast,gbpltw123,missys,villevalo,kbpjxrf,ghibli,calla,cessna172,kinglear,dell11,swift1,walera,1cricket,pussy5,turbo911,tucke,maprchem56458,rosehill,thekiwi1,ygfxbkgt,mandarinka,98xa29,magnit,cjfrf,paswoord,grandam1,shenmue,leedsuni,hatrick,zagadka,angeldog,michaell,dance123,koichi,bballs,29palms,xanth,228822,ppppppp1,1kkkkk,1lllll,mynewbots,spurss,madmax1,224455,city1,mmmmmmm1,nnnnnnn1,biedronka,thebeatles,elessar,f14tomcat,jordan18,bobo123,ayi000,tedbear,86chevyx,user123,bobolink,maktub,elmer1,flyfishi,franco1,gandalf0,traxdata,david21,enlighte,dmitrij,beckys,1giants,flippe,12345678w,jossie,rugbyman,snowcat,rapeme,peanut11,gemeni,udders,techn9ne,armani1,chappie,war123,vakantie,maddawg,sewanee,jake5253,tautt1,anthony5,letterma,jimbo2,kmdtyjr,hextall,jessica6,amiga500,hotcunt,phoenix9,veronda,saqartvelo,scubas,sixer3,williamj,nightfal,shihan,melnikova,kosssss,handily,killer77,jhrl0821,march17,rushman,6gcf636i,metoyou,irina123,mine11,primus1,formatters,matthew5,infotech,gangster1,jordan45,moose69,kompas,motoxxx,greatwhi,cobra12,kirpich,weezer1,hello23,montse,tracy123,connecte,cjymrf,hemingwa,azreal,gundam00,mobila,boxman,slayers1,ravshan,june26,fktrcfylhjd,bermuda1,tylerd,maersk,qazwsx11,eybdthcbntn,ash123,camelo,kat123,backd00r,cheyenne1,1king,jerkin,tnt123,trabant,warhammer40k,rambos,punto,home77,pedrito,1frank,brille,guitarman,george13,rakas,tgbxtcrbq,flute1,bananas1,lovezp1314,thespot,postie,buster69,sexytime,twistys,zacharia,sportage,toccata,denver7,terry123,bogdanova,devil69,higgins1,whatluck,pele10,kkk666,jeffery1,1qayxsw2,riptide1,chevy11,munchy,lazer1,hooker1,ghfgjh,vergesse,playgrou,4077mash,gusev,humpin,oneputt,hydepark,monster9,tiger8,tangsoo,guy123,hesoyam1,uhtqneyu,thanku,lomond,ortezza,kronik,geetha,rabbit66,killas,qazxswe,alabaste,1234567890qwerty,capone1,andrea12,geral,beatbox,slutfuck,booyaka,jasmine7,ostsee,maestro1,beatme,tracey1,buster123,donaldduck,ironfish,happy6,konnichi,gintonic,momoney1,dugan1,today2,enkidu,destiny2,trim7gun,katuha,fractals,morganstanley,polkadot,gotime,prince11,204060,fifa2010,bobbyt,seemee,amanda10,airbrush,bigtitty,heidie,layla1,cotton1,5speed,fyfnjkmtdyf,flynavy,joxury8f,meeko,akuma,dudley1,flyboy1,moondog1,trotters,mariami,signin,chinna,legs11,pussy4,1s1h1e1f1,felici,optimus1,iluvu,marlins1,gavaec,balance1,glock40,london01,kokot,southwes,comfort1,sammy11,rockbottom,brianc,litebeer,homero,chopsuey,greenlan,charit,freecell,hampster,smalldog,viper12,blofeld,1234567890987654321,realsex,romann,cartman2,cjdthitycndj,nelly1,bmw528,zwezda,masterba,jeep99,turtl,america2,sunburst,sanyco,auntjudy,125wm,blue10,qwsazx,cartma,toby12,robbob,red222,ilovecock,losfix16,1explore,helge,vaz2114,whynotme,baba123,mugen,1qazwsxedc,albertjr,0101198,sextime,supras,nicolas2,wantsex,pussy6,checkm8,winam,24gordon,misterme,curlew,gbljhfcs,medtech,franzi,butthea,voivod,blackhat,egoiste,pjkeirf,maddog69,pakalolo,hockey4,igor1234,rouges,snowhite,homefree,sexfreak,acer12,dsmith,blessyou,199410,vfrcbvjd,falco02,belinda1,yaglasph,april21,groundho,jasmin1,nevergiveup,elvir,gborv526,c00kie,emma01,awesome2,larina,mike12345,maximu,anupam,bltynbabrfwbz,tanushka,sukkel,raptor22,josh12,schalke04,cosmodog,fuckyou8,busybee,198800,bijoux,frame1,blackmor,giveit,issmall,bear13,123-123,bladez,littlegirl,ultra123,fletch1,flashnet,loploprock,rkelly,12step,lukas1,littlewhore,cuntfinger,stinkyfinger,laurenc,198020,n7td4bjl,jackie69,camel123,ben1234,1gateway,adelheid,fatmike,thuglove,zzaaqq,chivas1,4815162342q,mamadou,nadano,james22,benwin,andrea99,rjirf,michou,abkbgg,d50gnn,aaazzz,a123654,blankman,booboo11,medicus,bigbone,197200,justine1,bendix,morphius,njhvjp,44mag,zsecyus56,goodbye1,nokiadermo,a333444,waratsea,4rzp8ab7,fevral,brillian,kirbys,minim,erathia,grazia,zxcvb1234,dukey,snaggle,poppi,hymen,1video,dune2000,jpthjdf,cvbn123,zcxfcnkbdfz,astonv,ginnie,316271,engine3,pr1ncess,64chevy,glass1,laotzu,hollyy,comicbooks,assasins,nuaddn9561,scottsda,hfcnfvfy,accobra,7777777z,werty123,metalhead,romanson,redsand,365214,shalo,arsenii,1989cc,sissi,duramax,382563,petera,414243,mamapap,jollymon,field1,fatgirl,janets,trompete,matchbox20,rambo2,nepenthe,441232,qwertyuiop10,bozo123,phezc419hv,romantika,lifestyl,pengui,decembre,demon6,panther6,444888,scanman,ghjcnjabkz,pachanga,buzzword,indianer,spiderman3,tony12,startre,frog1,fyutk,483422,tupacshakur,albert12,1drummer,bmw328i,green17,aerdna,invisibl,summer13,calimer,mustaine,lgnu9d,morefun,hesoyam123,escort1,scrapland,stargat,barabbas,dead13,545645,mexicali,sierr,gfhfpbn,gonchar,moonstafa,searock,counte,foster1,jayhawk1,floren,maremma,nastya2010,softball1,adaptec,halloo,barrabas,zxcasd123,hunny,mariana1,kafedra,freedom0,green420,vlad1234,method7,665566,tooting,hallo12,davinchi,conducto,medias,666444,invernes,madhatter,456asd,12345678i,687887,le33px,spring00,help123,bellybut,billy5,vitalik1,river123,gorila,bendis,power666,747200,footslav,acehigh,qazxswedc123,q1a1z1,richard9,peterburg,tabletop,gavrilov,123qwe1,kolosov,fredrau,run4fun,789056,jkbvgbflf,chitra,87654321q,steve22,wideopen,access88,surfe,tdfyutkbjy,impossib,kevin69,880888,cantina,887766,wxcvb,dontforg,qwer1209,asslicke,mamma123,indig,arkasha,scrapp,morelia,vehxbr,jones2,scratch1,cody11,cassie12,gerbera,dontgotm,underhil,maks2010,hollywood1,hanibal,elena2010,jason11,1010321,stewar,elaman,fireplug,goodby,sacrific,babyphat,bobcat12,bruce123,1233215,tony45,tiburo,love15,bmw750,wallstreet,2h0t4me,1346795,lamerz,munkee,134679q,granvill,1512198,armastus,aiden1,pipeutvj,g1234567,angeleyes,usmc1,102030q,putangina,brandnew,shadowfax,eagles12,1falcon,brianw,lokomoti,2022958,scooper,pegas,jabroni1,2121212,buffal,siffredi,wewiz,twotone,rosebudd,nightwis,carpet1,mickey2,2525252,sleddog,red333,jamesm,2797349,jeff12,onizuka,felixxxx,rf6666,fine1,ohlala,forplay,chicago5,muncho,scooby11,ptichka,johnnn,19851985p,dogphil3650,totenkopf,monitor2,macross7,3816778,dudder,semaj1,bounder,racerx1,5556633,7085506,ofclr278,brody1,7506751,nantucke,hedj2n4q,drew1,aessedai,trekbike,pussykat,samatron,imani,9124852,wiley1,dukenukem,iampurehaha2,9556035,obvious1,mccool24,apache64,kravchenko,justforf,basura,jamese,s0ccer,safado,darksta,surfer69,damian1,gjpbnbd,gunny1,wolley,sananton,zxcvbn123456,odt4p6sv8,sergei1,modem1,mansikka,zzzz1,rifraf,dima777,mary69,looking4,donttell,red100,ninjutsu,uaeuaeman,bigbri,brasco,queenas8151,demetri,angel007,bubbl,kolort,conny,antonia1,avtoritet,kaka22,kailayu,sassy2,wrongway,chevy3,1nascar,patriots1,chrisrey,mike99,sexy22,chkdsk,sd3utre7,padawan,a6pihd,doming,mesohorny,tamada,donatello,emma22,eather,susan69,pinky123,stud69,fatbitch,pilsbury,thc420,lovepuss,1creativ,golf1234,hurryup,1honda,huskerdu,marino1,gowron,girl1,fucktoy,gtnhjpfdjlcr,dkjfghdk,pinkfl,loreli,7777777s,donkeykong,rockytop,staples1,sone4ka,xxxjay,flywheel,toppdogg,bigbubba,aaa123456,2letmein,shavkat,paule,dlanor,adamas,0147852,aassaa,dixon1,bmw328,mother12,ilikepussy,holly2,tsmith,excaliber,fhutynbyf,nicole3,tulipan,emanue,flyvholm,currahee,godsgift,antonioj,torito,dinky1,sanna,yfcnzvjz,june14,anime123,123321456654,hanswurst,bandman,hello101,xxxyyy,chevy69,technica,tagada,arnol,v00d00,lilone,filles,drumandbass,dinamit,a1234a,eatmeat,elway07,inout,james6,dawid1,thewolf,diapason,yodaddy,qscwdv,fuckit1,liljoe,sloeber,simbacat,sascha1,qwe1234,1badger,prisca,angel17,gravedig,jakeyboy,longboard,truskawka,golfer11,pyramid7,highspee,pistola,theriver,hammer69,1packers,dannyd,alfonse,qwertgfdsa,11119999,basket1,ghjtrn,saralee,12inches,paolo1,zse4xdr5,taproot,sophieh6,grizzlie,hockey69,danang,biggums,hotbitch,5alive,beloved1,bluewave,dimon95,koketka,multiscan,littleb,leghorn,poker2,delite,skyfir,bigjake,persona1,amberdog,hannah12,derren,ziffle,1sarah,1assword,sparky01,seymur,tomtom1,123321qw,goskins,soccer19,luvbekki,bumhole,2balls,1muffin,borodin,monkey9,yfeiybrb,1alex,betmen,freder,nigger123,azizbek,gjkzrjdf,lilmike,1bigdadd,1rock,taganrog,snappy1,andrey1,kolonka,bunyan,gomango,vivia,clarkkent,satur,gaudeamus,mantaray,1month,whitehea,fargus,andrew99,ray123,redhawks,liza2009,qw12345,den12345,vfhnsyjdf,147258369a,mazepa,newyorke,1arsenal,hondas2000,demona,fordgt,steve12,birthday2,12457896,dickster,edcwsxqaz,sahalin,pantyman,skinny1,hubertus,cumshot1,chiro,kappaman,mark3434,canada12,lichking,bonkers1,ivan1985,sybase,valmet,doors1,deedlit,kyjelly,bdfysx,ford11,throatfuck,backwood,fylhsq,lalit,boss429,kotova,bricky,steveh,joshua19,kissa,imladris,star1234,lubimka,partyman,crazyd,tobias1,ilike69,imhome,whome,fourstar,scanner1,ujhjl312,anatoli,85bears,jimbo69,5678ytr,potapova,nokia7070,sunday1,kalleank,1996gta,refinnej,july1,molodec,nothanks,enigm,12play,sugardog,nhfkbdfkb,larousse,cannon1,144444,qazxcdew,stimorol,jhereg,spawn7,143000,fearme,hambur,merlin21,dobie,is3yeusc,partner1,dekal,varsha,478jfszk,flavi,hippo1,9hmlpyjd,july21,7imjfstw,lexxus,truelov,nokia5200,carlos6,anais,mudbone,anahit,taylorc,tashas,larkspur,animal2000,nibiru,jan123,miyvarxar,deflep,dolore,communit,ifoptfcor,laura2,anadrol,mamaliga,mitzi1,blue92,april15,matveev,kajlas,wowlook1,1flowers,shadow14,alucard1,1golf,bantha,scotlan,singapur,mark13,manchester1,telus01,superdav,jackoff1,madnes,bullnuts,world123,clitty,palmer1,david10,spider10,sargsyan,rattlers,david4,windows2,sony12,visigoth,qqqaaa,penfloor,cabledog,camilla1,natasha123,eagleman,softcore,bobrov,dietmar,divad,sss123,d1234567,tlbyjhju,1q1q1q1,paraiso,dav123,lfiekmrf,drachen,lzhan16889,tplate,gfghbrf,casio1,123boots1,123test,sys64738,heavymetal,andiamo,meduza,soarer,coco12,negrita,amigas,heavymet,bespin,1asdfghj,wharfrat,wetsex,tight1,janus1,sword123,ladeda,dragon98,austin2,atep1,jungle1,12345abcd,lexus300,pheonix1,alex1974,123qw123,137955,bigtim,shadow88,igor1994,goodjob,arzen,champ123,121ebay,changeme1,brooksie,frogman1,buldozer,morrowin,achim,trish1,lasse,festiva,bubbaman,scottb,kramit,august22,tyson123,passsword,oompah,al123456,fucking1,green45,noodle1,looking1,ashlynn,al1716,stang50,coco11,greese,bob111,brennan1,jasonj,1cherry,1q2345,1xxxxxxx,fifa2011,brondby,zachar1,satyam,easy1,magic7,1rainbow,cheezit,1eeeeeee,ashley123,assass1,amanda123,jerbear,1bbbbbb,azerty12,15975391,654321z,twinturb,onlyone1,denis1988,6846kg3r,jumbos,pennydog,dandelion,haileris,epervier,snoopy69,afrodite,oldpussy,green55,poopypan,verymuch,katyusha,recon7,mine69,tangos,contro,blowme2,jade1,skydive1,fiveiron,dimo4ka,bokser,stargirl,fordfocus,tigers2,platina,baseball11,raque,pimper,jawbreak,buster88,walter34,chucko,penchair,horizon1,thecure1,scc1975,adrianna1,kareta,duke12,krille,dumbfuck,cunt1,aldebaran,laverda,harumi,knopfler,pongo1,pfhbyf,dogman1,rossigno,1hardon,scarlets,nuggets1,ibelieve,akinfeev,xfhkbr,athene,falcon69,happie,billly,nitsua,fiocco,qwerty09,gizmo2,slava2,125690,doggy123,craigs,vader123,silkeborg,124365,peterm,123978,krakatoa,123699,123592,kgvebmqy,pensacol,d1d2d3,snowstor,goldenboy,gfg65h7,ev700,church1,orange11,g0dz1ll4,chester3,acheron,cynthi,hotshot1,jesuschris,motdepass,zymurgy,one2one,fietsbel,harryp,wisper,pookster,nn527hp,dolla,milkmaid,rustyboy,terrell1,epsilon1,lillian1,dale3,crhbgrf,maxsim,selecta,mamada,fatman1,ufkjxrf,shinchan,fuckuall,women1,000008,bossss,greta1,rbhjxrf,mamasboy,purple69,felicidade,sexy21,cathay,hunglow,splatt,kahless,shopping1,1gandalf,themis,delta7,moon69,blue24,parliame,mamma1,miyuki,2500hd,jackmeof,razer,rocker1,juvis123,noremac,boing747,9z5ve9rrcz,icewater,titania,alley1,moparman,christo1,oliver2,vinicius,tigerfan,chevyy,joshua99,doda99,matrixx,ekbnrf,jackfrost,viper01,kasia,cnfhsq,triton1,ssbt8ae2,rugby8,ramman,1lucky,barabash,ghtlfntkm,junaid,apeshit,enfant,kenpo1,shit12,007000,marge1,shadow10,qwerty789,richard8,vbitkm,lostboys,jesus4me,richard4,hifive,kolawole,damilola,prisma,paranoya,prince2,lisaann,happyness,cardss,methodma,supercop,a8kd47v5,gamgee,polly123,irene1,number8,hoyasaxa,1digital,matthew0,dclxvi,lisica,roy123,2468013579,sparda,queball,vaffanculo,pass1wor,repmvbx,999666333,freedom8,botanik,777555333,marcos1,lubimaya,flash2,einstei,08080,123456789j,159951159,159357123,carrot1,alina1995,sanjos,dilara,mustang67,wisteria,jhnjgtl12,98766789,darksun,arxangel,87062134,creativ1,malyshka,fuckthemall,barsic,rocksta,2big4u,5nizza,genesis2,romance1,ofcourse,1horse,latenite,cubana,sactown,789456123a,milliona,61808861,57699434,imperia,bubba11,yellow3,change12,55495746,flappy,jimbo123,19372846,19380018,cutlass1,craig123,klepto,beagle1,solus,51502112,pasha1,19822891,46466452,19855891,petshop,nikolaevna,119966,nokia6131,evenpar,hoosier1,contrasena,jawa350,gonzo123,mouse2,115511,eetfuk,gfhfvgfvgfv,1crystal,sofaking,coyote1,kwiatuszek,fhrflbq,valeria1,anthro,0123654789,alltheway,zoltar,maasikas,wildchil,fredonia,earlgrey,gtnhjczy,matrix123,solid1,slavko,12monkeys,fjdksl,inter1,nokia6500,59382113kevinp,spuddy,cachero,coorslit,password!,kiba1z,karizma,vova1994,chicony,english1,bondra12,1rocket,hunden,jimbob1,zpflhjn1,th0mas,deuce22,meatwad,fatfree,congas,sambora,cooper2,janne,clancy1,stonie,busta,kamaz,speedy2,jasmine3,fahayek,arsenal0,beerss,trixie1,boobs69,luansantana,toadman,control2,ewing33,maxcat,mama1964,diamond4,tabaco,joshua0,piper2,music101,guybrush,reynald,pincher,katiebug,starrs,pimphard,frontosa,alex97,cootie,clockwor,belluno,skyeseth,booty69,chaparra,boochie,green4,bobcat1,havok,saraann,pipeman,aekdb,jumpshot,wintermu,chaika,1chester,rjnjatq,emokid,reset1,regal1,j0shua,134679a,asmodey,sarahh,zapidoo,ciccione,sosexy,beckham23,hornets1,alex1971,delerium,manageme,connor11,1rabbit,sane4ek,caseyboy,cbljhjdf,redsox20,tttttt99,haustool,ander,pantera6,passwd1,journey1,9988776655,blue135,writerspace,xiaoyua123,justice2,niagra,cassis,scorpius,bpgjldsgjldthnf,gamemaster,bloody1,retrac,stabbin,toybox,fight1,ytpyf.,glasha,va2001,taylor11,shameles,ladylove,10078,karmann,rodeos,eintritt,lanesra,tobasco,jnrhjqcz,navyman,pablit,leshka,jessica3,123vika,alena1,platinu,ilford,storm7,undernet,sasha777,1legend,anna2002,kanmax1994,porkpie,thunder0,gundog,pallina,easypass,duck1,supermom,roach1,twincam,14028,tiziano,qwerty32,123654789a,evropa,shampoo1,yfxfkmybr,cubby1,tsunami1,fktrcttdf,yasacrac,17098,happyhap,bullrun,rodder,oaktown,holde,isbest,taylor9,reeper,hammer11,julias,rolltide1,compaq123,fourx4,subzero1,hockey9,7mary3,busines,ybrbnjcbr,wagoneer,danniash,portishead,digitex,alex1981,david11,infidel,1snoopy,free30,jaden,tonto1,redcar27,footie,moskwa,thomas21,hammer12,burzum,cosmo123,50000,burltree,54343,54354,vwpassat,jack5225,cougars1,burlpony,blackhorse,alegna,petert,katemoss,ram123,nels0n,ferrina,angel77,cstock,1christi,dave55,abc123a,alex1975,av626ss,flipoff,folgore,max1998,science1,si711ne,yams7,wifey1,sveiks,cabin1,volodia,ox3ford,cartagen,platini,picture1,sparkle1,tiedomi,service321,wooody,christi1,gnasher,brunob,hammie,iraffert,bot2010,dtcyeirf,1234567890p,cooper11,alcoholi,savchenko,adam01,chelsea5,niewiem,icebear,lllooottt,ilovedick,sweetpus,money8,cookie13,rfnthbyf1988,booboo2,angus123,blockbus,david9,chica1,nazaret,samsung9,smile4u,daystar,skinnass,john10,thegirl,sexybeas,wasdwasd1,sigge1,1qa2ws3ed4rf5tg,czarny,ripley1,chris5,ashley19,anitha,pokerman,prevert,trfnthby,tony69,georgia2,stoppedb,qwertyuiop12345,miniclip,franky1,durdom,cabbages,1234567890o,delta5,liudmila,nhfycajhvths,court1,josiew,abcd1,doghead,diman,masiania,songline,boogle,triston,deepika,sexy4me,grapple,spacebal,ebonee,winter0,smokewee,nargiza,dragonla,sassys,andy2000,menards,yoshio,massive1,suckmy1k,passat99,sexybo,nastya1996,isdead,stratcat,hokuto,infix,pidoras,daffyduck,cumhard,baldeagl,kerberos,yardman,shibainu,guitare,cqub6553,tommyy,bk.irf,bigfoo,hecto,july27,james4,biggus,esbjerg,isgod,1irish,phenmarr,jamaic,roma1990,diamond0,yjdbrjd,girls4me,tampa1,kabuto,vaduz,hanse,spieng,dianochka,csm101,lorna1,ogoshi,plhy6hql,2wsx4rfv,cameron0,adebayo,oleg1996,sharipov,bouboule,hollister1,frogss,yeababy,kablam,adelante,memem,howies,thering,cecilia1,onetwo12,ojp123456,jordan9,msorcloledbr,neveraga,evh5150,redwin,1august,canno,1mercede,moody1,mudbug,chessmas,tiikeri,stickdaddy77,alex15,kvartira,7654321a,lollol123,qwaszxedc,algore,solana,vfhbyfvfhbyf,blue72,misha1111,smoke20,junior13,mogli,threee,shannon2,fuckmylife,kevinh,saransk,karenw,isolde,sekirarr,orion123,thomas0,debra1,laketaho,alondra,curiva,jazz1234,1tigers,jambos,lickme2,suomi,gandalf7,028526,zygote,brett123,br1ttany,supafly,159000,kingrat,luton1,cool-ca,bocman,thomasd,skiller,katter,mama777,chanc,tomass,1rachel,oldno7,rfpfyjdf,bigkev,yelrah,primas,osito,kipper1,msvcr71,bigboy11,thesun,noskcaj,chicc,sonja1,lozinka,mobile1,1vader,ummagumma,waves1,punter12,tubgtn,server1,irina1991,magic69,dak001,pandemonium,dead1,berlingo,cherrypi,1montana,lohotron,chicklet,asdfgh123456,stepside,ikmvw103,icebaby,trillium,1sucks,ukrnet,glock9,ab12345,thepower,robert8,thugstools,hockey13,buffon,livefree,sexpics,dessar,ja0000,rosenrot,james10,1fish,svoloch,mykitty,muffin11,evbukb,shwing,artem1992,andrey1992,sheldon1,passpage,nikita99,fubar123,vannasx,eight888,marial,max2010,express2,violentj,2ykn5ccf,spartan11,brenda69,jackiech,abagail,robin2,grass1,andy76,bell1,taison,superme,vika1995,xtr451,fred20,89032073168,denis1984,2000jeep,weetabix,199020,daxter,tevion,panther8,h9iymxmc,bigrig,kalambur,tsalagi,12213443,racecar02,jeffrey4,nataxa,bigsam,purgator,acuracl,troutbum,potsmoke,jimmyz,manutd1,nytimes,pureevil,bearss,cool22,dragonage,nodnarb,dbrbyu,4seasons,freude,elric1,werule,hockey14,12758698,corkie,yeahright,blademan,tafkap,clave,liziko,hofner,jeffhardy,nurich,runne,stanisla,lucy1,monk3y,forzaroma,eric99,bonaire,blackwoo,fengshui,1qaz0okm,newmoney,pimpin69,07078,anonymer,laptop1,cherry12,ace111,salsa1,wilbur1,doom12,diablo23,jgtxzbhr,under1,honda01,breadfan,megan2,juancarlos,stratus1,ackbar,love5683,happytim,lambert1,cbljhtyrj,komarov,spam69,nfhtkrf,brownn,sarmat,ifiksr,spike69,hoangen,angelz,economia,tanzen,avogadro,1vampire,spanners,mazdarx,queequeg,oriana,hershil,sulaco,joseph11,8seconds,aquariu,cumberla,heather9,anthony8,burton12,crystal0,maria3,qazwsxc,snow123,notgood,198520,raindog,heehaw,consulta,dasein,miller01,cthulhu1,dukenuke,iubire,baytown,hatebree,198505,sistem,lena12,welcome01,maraca,middleto,sindhu,mitsou,phoenix5,vovan,donaldo,dylandog,domovoy,lauren12,byrjuybnj,123llll,stillers,sanchin,tulpan,smallvill,1mmmmm,patti1,folgers,mike31,colts18,123456rrr,njkmrjz,phoenix0,biene,ironcity,kasperok,password22,fitnes,matthew6,spotligh,bujhm123,tommycat,hazel5,guitar11,145678,vfcmrf,compass1,willee,1barney,jack2000,littleminge,shemp,derrek,xxx12345,littlefuck,spuds1,karolinka,camneely,qwertyu123,142500,brandon00,munson15,falcon3,passssap,z3cn2erv,goahead,baggio10,141592,denali1,37kazoo,copernic,123456789asd,orange88,bravada,rush211,197700,pablo123,uptheass,samsam1,demoman,mattylad10,heydude,mister2,werken,13467985,marantz,a22222,f1f2f3f4,fm12mn12,gerasimova,burrito1,sony1,glenny,baldeagle,rmfidd,fenomen,verbati,forgetme,5element,wer138,chanel1,ooicu812,10293847qp,minicooper,chispa,myturn,deisel,vthrehbq,boredboi4u,filatova,anabe,poiuyt1,barmalei,yyyy1,fourkids,naumenko,bangbros,pornclub,okaykk,euclid90,warrior3,kornet,palevo,patatina,gocart,antanta,jed1054,clock1,111111w,dewars,mankind1,peugeot406,liten,tahira,howlin,naumov,rmracing,corone,cunthole,passit,rock69,jaguarxj,bumsen,197101,sweet2,197010,whitecat,sawadee,money100,yfhrjnbrb,andyboy,9085603566,trace1,fagget,robot1,angel20,6yhn7ujm,specialinsta,kareena,newblood,chingada,boobies2,bugger1,squad51,133andre,call06,ashes1,ilovelucy,success2,kotton,cavalla,philou,deebee,theband,nine09,artefact,196100,kkkkkkk1,nikolay9,onelov,basia,emilyann,sadman,fkrjujkbr,teamomuch,david777,padrino,money21,firdaus,orion3,chevy01,albatro,erdfcv,2legit,sarah7,torock,kevinn,holio,soloy,enron714,starfleet,qwer11,neverman,doctorwh,lucy11,dino12,trinity7,seatleon,o123456,pimpman,1asdfgh,snakebit,chancho,prorok,bleacher,ramire,darkseed,warhorse,michael123,1spanky,1hotdog,34erdfcv,n0th1ng,dimanche,repmvbyf,michaeljackson,login1,icequeen,toshiro,sperme,racer2,veget,birthday26,daniel9,lbvekmrf,charlus,bryan123,wspanic,schreibe,1andonly,dgoins,kewell,apollo12,egypt1,fernie,tiger21,aa123456789,blowj,spandau,bisquit,12345678d,deadmau5,fredie,311420,happyface,samant,gruppa,filmstar,andrew17,bakesale,sexy01,justlook,cbarkley,paul11,bloodred,rideme,birdbath,nfkbcvfy,jaxson,sirius1,kristof,virgos,nimrod1,hardc0re,killerbee,1abcdef,pitcher1,justonce,vlada,dakota99,vespucci,wpass,outside1,puertori,rfvbkf,teamlosi,vgfun2,porol777,empire11,20091989q,jasong,webuivalidat,escrima,lakers08,trigger2,addpass,342500,mongini,dfhtybr,horndogg,palermo1,136900,babyblu,alla98,dasha2010,jkelly,kernow,yfnecz,rockhopper,toeman,tlaloc,silver77,dave01,kevinr,1234567887654321,135642,me2you,8096468644q,remmus,spider7,jamesa,jilly,samba1,drongo,770129ji,supercat,juntas,tema1234,esthe,1234567892000,drew11,qazqaz123,beegees,blome,rattrace,howhigh,tallboy,rufus2,sunny2,sou812,miller12,indiana7,irnbru,patch123,letmeon,welcome5,nabisco,9hotpoin,hpvteb,lovinit,stormin,assmonke,trill,atlanti,money1234,cubsfan,mello1,stars2,ueptkm,agate,dannym88,lover123,wordz,worldnet,julemand,chaser1,s12345678,pissword,cinemax,woodchuc,point1,hotchkis,packers2,bananana,kalender,420666,penguin8,awo8rx3wa8t,hoppie,metlife,ilovemyfamily,weihnachtsbau,pudding1,luckystr,scully1,fatboy1,amizade,dedham,jahbless,blaat,surrende,****er,1panties,bigasses,ghjuhfvbcn,asshole123,dfktyrb,likeme,nickers,plastik,hektor,deeman,muchacha,cerebro,santana5,testdrive,dracula1,canalc,l1750sq,savannah1,murena,1inside,pokemon00,1iiiiiii,jordan20,sexual1,mailliw,calipso,014702580369,1zzzzzz,1jjjjjj,break1,15253545,yomama1,katinka,kevin11,1ffffff,martijn,sslazio,daniel5,porno2,nosmas,leolion,jscript,15975312,pundai,kelli1,kkkddd,obafgkm,marmaris,lilmama,london123,rfhfnt,elgordo,talk87,daniel7,thesims3,444111,bishkek,afrika2002,toby22,1speedy,daishi,2children,afroman,qqqqwwww,oldskool,hawai,v55555,syndicat,pukimak,fanatik,tiger5,parker01,bri5kev6,timexx,wartburg,love55,ecosse,yelena03,madinina,highway1,uhfdbwfgf,karuna,buhjvfybz,wallie,46and2,khalif,europ,qaz123wsx456,bobbybob,wolfone,falloutboy,manning18,scuba10,schnuff,ihateyou1,lindam,sara123,popcor,fallengun,divine1,montblanc,qwerty8,rooney10,roadrage,bertie1,latinus,lexusis,rhfvfnjhcr,opelgt,hitme,agatka,1yamaha,dmfxhkju,imaloser,michell1,sb211st,silver22,lockedup,andrew9,monica01,sassycat,dsobwick,tinroof,ctrhtnyj,bultaco,rhfcyjzhcr,aaaassss,14ss88,joanne1,momanddad,ahjkjdf,yelhsa,zipdrive,telescop,500600,1sexsex,facial1,motaro,511647,stoner1,temujin,elephant1,greatman,honey69,kociak,ukqmwhj6,altezza,cumquat,zippos,kontiki,123max,altec1,bibigon,tontos,qazsew,nopasaran,militar,supratt,oglala,kobayash,agathe,yawetag,dogs1,cfiekmrf,megan123,jamesdea,porosenok,tiger23,berger1,hello11,seemann,stunner1,walker2,imissu,jabari,minfd,lollol12,hjvfy,1-oct,stjohns,2278124q,123456789qwer,alex1983,glowworm,chicho,mallards,bluedevil,explorer1,543211,casita,1time,lachesis,alex1982,airborn1,dubesor,changa,lizzie1,captaink,socool,bidule,march23,1861brr,k.ljxrf,watchout,fotze,1brian,keksa2,aaaa1122,matrim,providian,privado,dreame,merry1,aregdone,davidt,nounour,twenty2,play2win,artcast2,zontik,552255,shit1,sluggy,552861,dr8350,brooze,alpha69,thunder6,kamelia2011,caleb123,mmxxmm,jamesh,lfybkjd,125267,125000,124536,bliss1,dddsss,indonesi,bob69,123888,tgkbxfgy,gerar,themack,hijodeputa,good4now,ddd123,clk430,kalash,tolkien1,132forever,blackb,whatis,s1s2s3s4,lolkin09,yamahar,48n25rcc,djtiesto,111222333444555,bigbull,blade55,coolbree,kelse,ichwill,yamaha12,sakic,bebeto,katoom,donke,sahar,wahine,645202,god666,berni,starwood,june15,sonoio,time123,llbean,deadsoul,lazarev,cdtnf,ksyusha,madarchod,technik,jamesy,4speed,tenorsax,legshow,yoshi1,chrisbl,44e3ebda,trafalga,heather7,serafima,favorite4,havefun1,wolve,55555r,james13,nosredna,bodean,jlettier,borracho,mickael,marinus,brutu,sweet666,kiborg,rollrock,jackson6,macross1,ousooner,9085084232,takeme,123qwaszx,firedept,vfrfhjd,jackfros,123456789000,briane,cookie11,baby22,bobby18,gromova,systemofadown,martin01,silver01,pimaou,darthmaul,hijinx,commo,chech,skyman,sunse,2vrd6,vladimirovna,uthvfybz,nicole01,kreker,bobo1,v123456789,erxtgb,meetoo,drakcap,vfvf12,misiek1,butane,network2,flyers99,riogrand,jennyk,e12345,spinne,avalon11,lovejone,studen,maint,porsche2,qwerty100,chamberl,bluedog1,sungam,just4u,andrew23,summer22,ludic,musiclover,aguil,beardog1,libertin,pippo1,joselit,patito,bigberth,digler,sydnee,jockstra,poopo,jas4an,nastya123,profil,fuesse,default1,titan2,mendoz,kpcofgs,anamika,brillo021,bomberman,guitar69,latching,69pussy,blues2,phelge,ninja123,m7n56xo,qwertasd,alex1976,cunningh,estrela,gladbach,marillion,mike2000,258046,bypop,muffinman,kd5396b,zeratul,djkxbwf,john77,sigma2,1linda,selur,reppep,quartz1,teen1,freeclus,spook1,kudos4ever,clitring,sexiness,blumpkin,macbook,tileman,centra,escaflowne,pentable,shant,grappa,zverev,1albert,lommerse,coffee11,777123,polkilo,muppet1,alex74,lkjhgfdsazx,olesica,april14,ba25547,souths,jasmi,arashi,smile2,2401pedro,mybabe,alex111,quintain,pimp1,tdeir8b2,makenna,122333444455555,%e2%82%ac,tootsie1,pass111,zaqxsw123,gkfdfybt,cnfnbcnbrf,usermane,iloveyou12,hard69,osasuna,firegod,arvind,babochka,kiss123,cookie123,julie123,kamakazi,dylan2,223355,tanguy,nbhtqa,tigger13,tubby1,makavel,asdflkj,sambo1,mononoke,mickeys,gayguy,win123,green33,wcrfxtvgbjy,bigsmall,1newlife,clove,babyfac,bigwaves,mama1970,shockwav,1friday,bassey,yarddog,codered1,victory7,bigrick,kracker,gulfstre,chris200,sunbanna,bertuzzi,begemotik,kuolema,pondus,destinee,123456789zz,abiodun,flopsy,amadeusptfcor,geronim,yggdrasi,contex,daniel6,suck1,adonis1,moorea,el345612,f22raptor,moviebuf,raunchy,6043dkf,zxcvbnm123456789,eric11,deadmoin,ratiug,nosliw,fannies,danno,888889,blank1,mikey2,gullit,thor99,mamiya,ollieb,thoth,dagger1,websolutionssu,bonker,prive,1346798520,03038,q1234q,mommy2,contax,zhipo,gwendoli,gothic1,1234562000,lovedick,gibso,digital2,space199,b26354,987654123,golive,serious1,pivkoo,better1,824358553,794613258,nata1980,logout,fishpond,buttss,squidly,good4me,redsox19,jhonny,zse45rdx,matrixxx,honey12,ramina,213546879,motzart,fall99,newspape,killit,gimpy,photowiz,olesja,thebus,marco123,147852963,bedbug,147369258,hellbound,gjgjxrf,123987456,lovehurt,five55,hammer01,1234554321a,alina2011,peppino,ang238,questor,112358132,alina1994,alina1998,money77,bobjones,aigerim,cressida,madalena,420smoke,tinchair,raven13,mooser,mauric,lovebu,adidas69,krypton1,1111112,loveline,divin,voshod,michaelm,cocotte,gbkbuhbv,76689295,kellyj,rhonda1,sweetu70,steamforums,geeque,nothere,124c41,quixotic,steam181,1169900,rfcgthcrbq,rfvbkm,sexstuff,1231230,djctvm,rockstar1,fulhamfc,bhecbr,rfntyf,quiksilv,56836803,jedimaster,pangit,gfhjkm777,tocool,1237654,stella12,55378008,19216811,potte,fender12,mortalkombat,ball1,nudegirl,palace22,rattrap,debeers,lickpussy,jimmy6,not4u2c,wert12,bigjuggs,sadomaso,1357924,312mas,laser123,arminia,branford,coastie,mrmojo,19801982,scott11,banaan123,ingres,300zxtt,hooters6,sweeties,19821983,19831985,19833891,sinnfein,welcome4,winner69,killerman,tachyon,tigre1,nymets1,kangol,martinet,sooty1,19921993,789qwe,harsingh,1597535,thecount,phantom3,36985214,lukas123,117711,pakistan1,madmax11,willow01,19932916,fucker12,flhrci,opelagila,theword,ashley24,tigger3,crazyj,rapide,deadfish,allana,31359092,sasha1993,sanders2,discman,zaq!2wsx,boilerma,mickey69,jamesg,babybo,jackson9,orion7,alina2010,indien,breeze1,atease,warspite,bazongaz,1celtic,asguard,mygal,fitzgera,1secret,duke33,cyklone,dipascuc,potapov,1escobar2,c0l0rad0,kki177hk,1little,macondo,victoriya,peter7,red666,winston6,kl?benhavn,muneca,jackme,jennan,happylife,am4h39d8nh,bodybuil,201980,dutchie,biggame,lapo4ka,rauchen,black10,flaquit,water12,31021364,command2,lainth88,mazdamx5,typhon,colin123,rcfhlfc,qwaszx11,g0away,ramir,diesirae,hacked1,cessna1,woodfish,enigma2,pqnr67w5,odgez8j3,grisou,hiheels,5gtgiaxm,2580258,ohotnik,transits,quackers,serjik,makenzie,mdmgatew,bryana,superman12,melly,lokit,thegod,slickone,fun4all,netpass,penhorse,1cooper,nsync,asdasd22,otherside,honeydog,herbie1,chiphi,proghouse,l0nd0n,shagg,select1,frost1996,casper123,countr,magichat,greatzyo,jyothi,3bears,thefly,nikkita,fgjcnjk,nitros,hornys,san123,lightspe,maslova,kimber1,newyork2,spammm,mikejone,pumpk1n,bruiser1,bacons,prelude9,boodie,dragon4,kenneth2,love98,power5,yodude,pumba,thinline,blue30,sexxybj,2dumb2live,matt21,forsale,1carolin,innova,ilikeporn,rbgtkjd,a1s2d3f,wu9942,ruffus,blackboo,qwerty999,draco1,marcelin,hideki,gendalf,trevon,saraha,cartmen,yjhbkmcr,time2go,fanclub,ladder1,chinni,6942987,united99,lindac,quadra,paolit,mainstre,beano002,lincoln7,bellend,anomie,8520456,bangalor,goodstuff,chernov,stepashka,gulla,mike007,frasse,harley03,omnislash,8538622,maryjan,sasha2011,gineok,8807031,hornier,gopinath,princesit,bdr529,godown,bosslady,hakaone,1qwe2,madman1,joshua11,lovegame,bayamon,jedi01,stupid12,sport123,aaa666,tony44,collect1,charliem,chimaira,cx18ka,trrim777,chuckd,thedream,redsox99,goodmorning,delta88,iloveyou11,newlife2,figvam,chicago3,jasonk,12qwer,9875321,lestat1,satcom,conditio,capri50,sayaka,9933162,trunks1,chinga,snooch,alexand1,findus,poekie,cfdbyf,kevind,mike1969,fire13,leftie,bigtuna,chinnu,silence1,celos1,blackdra,alex24,gfgfif,2boobs,happy8,enolagay,sataniv1993,turner1,dylans,peugeo,sasha1994,hoppel,conno,moonshot,santa234,meister1,008800,hanako,tree123,qweras,gfitymrf,reggie31,august29,supert,joshua10,akademia,gbljhfc,zorro123,nathalia,redsox12,hfpdjl,mishmash,nokiae51,nyyankees,tu190022,strongbo,none1,not4u2no,katie2,popart,harlequi,santan,michal1,1therock,screwu,csyekmrf,olemiss1,tyrese,hoople,sunshin1,cucina,starbase,topshelf,fostex,california1,castle1,symantec,pippolo,babare,turntabl,1angela,moo123,ipvteb,gogolf,alex88,cycle1,maxie1,phase2,selhurst,furnitur,samfox,fromvermine,shaq34,gators96,captain2,delonge,tomatoe,bisous,zxcvbnma,glacius,pineapple1,cannelle,ganibal,mko09ijn,paraklast1974,hobbes12,petty43,artema,junior8,mylover,1234567890d,fatal1ty,prostreet,peruan,10020,nadya,caution1,marocas,chanel5,summer08,metal123,111lox,scrapy,thatguy,eddie666,washingto,yannis,minnesota_hp,lucky4,playboy6,naumova,azzurro,patat,dale33,pa55wd,speedster,zemanova,saraht,newto,tony22,qscesz,arkady,1oliver,death6,vkfwx046,antiflag,stangs,jzf7qf2e,brianp,fozzy,cody123,startrek1,yoda123,murciela,trabajo,lvbnhbtdf,canario,fliper,adroit,henry5,goducks,papirus,alskdj,soccer6,88mike,gogetter,tanelorn,donking,marky1,leedsu,badmofo,al1916,wetdog,akmaral,pallet,april24,killer00,nesterova,rugby123,coffee12,browseui,ralliart,paigow,calgary1,armyman,vtldtltd,frodo2,frxtgb,iambigal,benno,jaytee,2hot4you,askar,bigtee,brentwoo,palladin,eddie2,al1916w,horosho,entrada,ilovetits,venture1,dragon19,jayde,chuvak,jamesl,fzr600,brandon8,vjqvbh,snowbal,snatch1,bg6njokf,pudder,karolin,candoo,pfuflrf,satchel1,manteca,khongbiet,critter1,partridg,skyclad,bigdon,ginger69,brave1,anthony4,spinnake,chinadol,passout,cochino,nipples1,15058,lopesk,sixflags,lloo999,parkhead,breakdance,cia123,fidodido,yuitre12,fooey,artem1995,gayathri,medin,nondriversig,l12345,bravo7,happy13,kazuya,camster,alex1998,luckyy,zipcode,dizzle,boating1,opusone,newpassw,movies23,kamikazi,zapato,bart316,cowboys0,corsair1,kingshit,hotdog12,rolyat,h200svrm,qwerty4,boofer,rhtyltkm,chris999,vaz21074,simferopol,pitboss,love3,britania,tanyshka,brause,123qwerty123,abeille,moscow1,ilkaev,manut,process1,inetcfg,dragon05,fortknox,castill,rynner,mrmike,koalas,jeebus,stockpor,longman,juanpabl,caiman,roleplay,jeremi,26058,prodojo,002200,magical1,black5,bvlgari,doogie1,cbhtqa,mahina,a1s2d3f4g5h6,jblpro,usmc01,bismilah,guitar01,april9,santana1,1234aa,monkey14,sorokin,evan1,doohan,animalsex,pfqxtyjr,dimitry,catchme,chello,silverch,glock45,dogleg,litespee,nirvana9,peyton18,alydar,warhamer,iluvme,sig229,minotavr,lobzik,jack23,bushwack,onlin,football123,joshua5,federov,winter2,bigmax,fufnfrhbcnb,hfpldfnhb,1dakota,f56307,chipmonk,4nick8,praline,vbhjh123,king11,22tango,gemini12,street1,77879,doodlebu,homyak,165432,chuluthu,trixi,karlito,salom,reisen,cdtnkzxjr,pookie11,tremendo,shazaam,welcome0,00000ty,peewee51,pizzle,gilead,bydand,sarvar,upskirt,legends1,freeway1,teenfuck,ranger9,darkfire,dfymrf,hunt0802,justme1,buffy1ma,1harry,671fsa75yt,burrfoot,budster,pa437tu,jimmyp,alina2006,malacon,charlize,elway1,free12,summer02,gadina,manara,gomer1,1cassie,sanja,kisulya,money3,pujols,ford50,midiland,turga,orange6,demetriu,freakboy,orosie1,radio123,open12,vfufpby,mustek,chris33,animes,meiling,nthtvjr,jasmine9,gfdkjd,oligarh,marimar,chicago9,.kzirf,bugssgub,samuraix,jackie01,pimpjuic,macdad,cagiva,vernost,willyboy,fynjyjdf,tabby1,privet123,torres9,retype,blueroom,raven11,q12we3,alex1989,bringiton,ridered,kareltje,ow8jtcs8t,ciccia,goniners,countryb,24688642,covingto,24861793,beyblade,vikin,badboyz,wlafiga,walstib,mirand,needajob,chloes,balaton,kbpfdtnf,freyja,bond9007,gabriel12,stormbri,hollage,love4eve,fenomeno,darknite,dragstar,kyle123,milfhunter,ma123123123,samia,ghislain,enrique1,ferien12,xjy6721,natalie2,reglisse,wilson2,wesker,rosebud7,amazon1,robertr,roykeane,xtcnth,mamatata,crazyc,mikie,savanah,blowjob69,jackie2,forty1,1coffee,fhbyjxrf,bubbah,goteam,hackedit,risky1,logoff,h397pnvr,buck13,robert23,bronc,st123st,godflesh,pornog,iamking,cisco69,septiembr,dale38,zhongguo,tibbar,panther9,buffa1,bigjohn1,mypuppy,vehvfycr,april16,shippo,fire1234,green15,q123123,gungadin,steveg,olivier1,chinaski,magnoli,faithy,storm12,toadfrog,paul99,78791,august20,automati,squirtle,cheezy,positano,burbon,nunya,llebpmac,kimmi,turtle2,alan123,prokuror,violin1,durex,pussygal,visionar,trick1,chicken6,29024,plowboy,rfybreks,imbue,sasha13,wagner1,vitalogy,cfymrf,thepro,26028,gorbunov,dvdcom,letmein5,duder,fastfun,pronin,libra1,conner1,harley20,stinker1,20068,20038,amitech,syoung,dugway,18068,welcome7,jimmypag,anastaci,kafka1,pfhfnecnhf,catsss,campus100,shamal,nacho1,fire12,vikings2,brasil1,rangerover,mohamma,peresvet,14058,cocomo,aliona,14038,qwaser,vikes,cbkmdf,skyblue1,ou81234,goodlove,dfkmltvfh,108888,roamer,pinky2,static1,zxcv4321,barmen,rock22,shelby2,morgans,1junior,pasword1,logjam,fifty5,nhfrnjhbcn,chaddy,philli,nemesis2,ingenier,djkrjd,ranger3,aikman8,knothead,daddy69,love007,vsythb,ford350,tiger00,renrut,owen11,energy12,march14,alena123,robert19,carisma,orange22,murphy11,podarok,prozak,kfgeirf,wolf13,lydia1,shazza,parasha,akimov,tobbie,pilote,heather4,baster,leones,gznfxjr,megama,987654321g,bullgod,boxster1,minkey,wombats,vergil,colegiata,lincol,smoothe,pride1,carwash1,latrell,bowling3,fylhtq123,pickwick,eider,bubblebox,bunnies1,loquit,slipper1,nutsac,purina,xtutdfhf,plokiju,1qazxs,uhjpysq,zxcvbasdfg,enjoy1,1pumpkin,phantom7,mama22,swordsma,wonderbr,dogdays,milker,u23456,silvan,dfkthbr,slagelse,yeahman,twothree,boston11,wolf100,dannyg,troll1,fynjy123,ghbcnfd,bftest,ballsdeep,bobbyorr,alphasig,cccdemo,fire123,norwest,claire2,august10,lth1108,problemas,sapito,alex06,1rusty,maccom,goirish1,ohyes,bxdumb,nabila,boobear1,rabbit69,princip,alexsander,travail,chantal1,dogggy,greenpea,diablo69,alex2009,bergen09,petticoa,classe,ceilidh,vlad2011,kamakiri,lucidity,qaz321,chileno,cexfhf,99ranger,mcitra,estoppel,volvos60,carter80,webpass,temp12,touareg,fcgbhby,bubba8,sunitha,200190ru,bitch2,shadow23,iluvit,nicole0,ruben1,nikki69,butttt,shocker1,souschef,lopotok01,kantot,corsano,cfnfyf,riverat,makalu,swapna,all4u9,cdtnkfy,ntktgepbr,ronaldo99,thomasj,bmw540i,chrisw,boomba,open321,z1x2c3v4b5n6m7,gaviota,iceman44,frosya,chris100,chris24,cosette,clearwat,micael,boogyman,pussy9,camus1,chumpy,heccrbq,konoplya,chester8,scooter5,ghjgfufylf,giotto,koolkat,zero000,bonita1,ckflrbq,j1964,mandog,18n28n24a,renob,head1,shergar,ringo123,tanita,sex4free,johnny12,halberd,reddevils,biolog,dillinge,fatb0y,c00per,hyperlit,wallace2,spears1,vitamine,buheirf,sloboda,alkash,mooman,marion1,arsenal7,sunder,nokia5610,edifier,pippone,fyfnjkmtdbx,fujimo,pepsi12,kulikova,bolat,duetto,daimon,maddog01,timoshka,ezmoney,desdemon,chesters,aiden,hugues,patrick5,aikman08,robert4,roenick,nyranger,writer1,36169544,foxmulder,118801,kutter,shashank,jamjar,118811,119955,aspirina,dinkus,1sailor,nalgene,19891959,snarf,allie1,cracky,resipsa,45678912,kemerovo,19841989,netware1,alhimik,19801984,nicole123,19761977,51501984,malaka1,montella,peachfuz,jethro1,cypress1,henkie,holdon,esmith,55443322,1friend,quique,bandicoot,statistika,great123,death13,ucht36,master4,67899876,bobsmith,nikko1,jr1234,hillary1,78978978,rsturbo,lzlzdfcz,bloodlust,shadow00,skagen,bambina,yummies,88887777,91328378,matthew4,itdoes,98256518,102938475,alina2002,123123789,fubared,dannys,123456321,nikifor,suck69,newmexico,scubaman,rhbcnb,fifnfy,puffdadd,159357852,dtheyxbr,theman22,212009164,prohor,shirle,nji90okm,newmedia,goose5,roma1995,letssee,iceman11,aksana,wirenut,pimpdady,1212312121,tamplier,pelican1,domodedovo,1928374655,fiction6,duckpond,ybrecz,thwack,onetwo34,gunsmith,murphydo,fallout1,spectre1,jabberwo,jgjesq,turbo6,bobo12,redryder,blackpus,elena1971,danilova,antoin,bobo1234,bobob,bobbobbo,dean1,222222a,jesusgod,matt23,musical1,darkmage,loppol,werrew,josepha,rebel12,toshka,gadfly,hawkwood,alina12,dnomyar,sexaddict,dangit,cool23,yocrack,archimed,farouk,nhfkzkz,lindalou,111zzzzz,ghjatccjh,wethepeople,m123456789,wowsers,kbkbxrf,bulldog5,m_roesel,sissinit,yamoon6,123ewqasd,dangel,miruvor79,kaytee,falcon7,bandit11,dotnet,dannii,arsenal9,miatamx5,1trouble,strip4me,dogpile,sexyred1,rjdfktdf,google10,shortman,crystal7,awesome123,cowdog,haruka,birthday28,jitter,diabolik,boomer12,dknight,bluewate,hockey123,crm0624,blueboys,willy123,jumpup,google2,cobra777,llabesab,vicelord,hopper1,gerryber,remmah,j10e5d4,qqqqqqw,agusti,fre_ak8yj,nahlik,redrobin,scott3,epson1,dumpy,bundao,aniolek,hola123,jergens,itsasecret,maxsam,bluelight,mountai1,bongwater,1london,pepper14,freeuse,dereks,qweqw,fordgt40,rfhfdfy,raider12,hunnybun,compac,splicer,megamon,tuffgong,gymnast1,butter11,modaddy,wapbbs_1,dandelio,soccer77,ghjnbdjcnjzybt,123xyi2,fishead,x002tp00,whodaman,555aaa,oussama,brunodog,technici,pmtgjnbl,qcxdw8ry,schweden,redsox3,throbber,collecto,japan10,dbm123dm,hellhoun,tech1,deadzone,kahlan,wolf123,dethklok,xzsawq,bigguy1,cybrthc,chandle,buck01,qq123123,secreta,williams1,c32649135,delta12,flash33,123joker,spacejam,polopo,holycrap,daman1,tummybed,financia,nusrat,euroline,magicone,jimkirk,ameritec,daniel26,sevenn,topazz,kingpins,dima1991,macdog,spencer5,oi812,geoffre,music11,baffle,123569,usagi,cassiope,polla,lilcrowe,thecakeisalie,vbhjndjhtw,vthokies,oldmans,sophie01,ghoster,penny2,129834,locutus1,meesha,magik,jerry69,daddysgirl,irondesk,andrey12,jasmine123,vepsrfyn,likesdick,1accord,jetboat,grafix,tomuch,showit,protozoa,mosias98,taburetka,blaze420,esenin,anal69,zhv84kv,puissant,charles0,aishwarya,babylon6,bitter1,lenina,raleigh1,lechat,access01,kamilka,fynjy,sparkplu,daisy3112,choppe,zootsuit,1234567j,rubyrose,gorilla9,nightshade,alternativa,cghfdjxybr,snuggles1,10121v,vova1992,leonardo1,dave2,matthewd,vfhfnbr,1986mets,nobull,bacall,mexican1,juanjo,mafia1,boomer22,soylent,edwards1,jordan10,blackwid,alex86,gemini13,lunar2,dctvcjcfnm,malaki,plugger,eagles11,snafu2,1shelly,cintaku,hannah22,tbird1,maks5843,irish88,homer22,amarok,fktrcfylhjdf,lincoln2,acess,gre69kik,need4speed,hightech,core2duo,blunt1,ublhjgjybrf,dragon33,1autopas,autopas1,wwww1,15935746,daniel20,2500aa,massim,1ggggggg,96ford,hardcor1,cobra5,blackdragon,vovan_lt,orochimaru,hjlbntkb,qwertyuiop12,tallen,paradoks,frozenfish,ghjuhfvvbcn,gerri1,nuggett,camilit,doright,trans1,serena1,catch2,bkmyeh,fireston,afhvfwtdn,purple3,figure8,fuckya,scamp1,laranja,ontheoutside,louis123,yellow7,moonwalk,mercury2,tolkein,raide,amenra,a13579,dranreb,5150vh,harish,tracksta,sexking,ozzmosis,katiee,alomar,matrix19,headroom,jahlove,ringding,apollo8,132546,132613,12345672000,saretta,135798,136666,thomas7,136913,onetwothree,hockey33,calida,nefertit,bitwise,tailhook,boop4,kfgecbr,bujhmbujhm,metal69,thedark,meteoro,felicia1,house12,tinuviel,istina,vaz2105,pimp13,toolfan,nina1,tuesday2,maxmotives,lgkp500,locksley,treech,darling1,kurama,aminka,ramin,redhed,dazzler,jager1,stpiliot,cardman,rfvtym,cheeser,14314314,paramoun,samcat,plumpy,stiffie,vsajyjr,panatha,qqq777,car12345,098poi,asdzx,keegan1,furelise,kalifornia,vbhjckfd,beast123,zcfvfzkexifz,harry5,1birdie,96328i,escola,extra330,henry12,gfhfyjqz,14u2nv,max1234,templar1,1dave,02588520,catrin,pangolin,marhaba,latin1,amorcito,dave22,escape1,advance1,yasuhiro,grepw,meetme,orange01,ernes,erdna,zsergn,nautica1,justinb,soundwav,miasma,greg78,nadine1,sexmad,lovebaby,promo1,excel1,babys,dragonma,camry1,sonnenschein,farooq,wazzkaprivet,magal,katinas,elvis99,redsox24,rooney1,chiefy,peggys,aliev,pilsung,mudhen,dontdoit,dennis12,supercal,energia,ballsout,funone,claudiu,brown2,amoco,dabl1125,philos,gjdtkbntkm,servette,13571113,whizzer,nollie,13467982,upiter,12string,bluejay1,silkie,william4,kosta1,143333,connor12,sustanon,06068,corporat,ssnake,laurita,king10,tahoes,arsenal123,sapato,charless,jeanmarc,levent,algerie,marine21,jettas,winsome,dctvgbplf,1701ab,xxxp455w0rd5,lllllll1,ooooooo1,monalis,koufax32,anastasya,debugger,sarita2,jason69,ufkxjyjr,gjlcnfdf,1jerry,daniel10,balinor,sexkitten,death2,qwertasdfgzxcvb,s9te949f,vegeta1,sysman,maxxam,dimabilan,mooose,ilovetit,june23,illest,doesit,mamou,abby12,longjump,transalp,moderato,littleguy,magritte,dilnoza,hawaiiguy,winbig,nemiroff,kokaine,admira,myemail,dream2,browneyes,destiny7,dragonss,suckme1,asa123,andranik,suckem,fleshbot,dandie,timmys,scitra,timdog,hasbeen,guesss,smellyfe,arachne,deutschl,harley88,birthday27,nobody1,papasmur,home1,jonass,bunia3,epatb1,embalm,vfvekmrf,apacer,12345656,estreet,weihnachtsbaum,mrwhite,admin12,kristie1,kelebek,yoda69,socken,tima123,bayern1,fktrcfylth,tamiya,99strenght,andy01,denis2011,19delta,stokecit,aotearoa,stalker2,nicnac,conrad1,popey,agusta,bowl36,1bigfish,mossyoak,1stunner,getinnow,jessejames,gkfnjy,drako,1nissan,egor123,hotness,1hawaii,zxc123456,cantstop,1peaches,madlen,west1234,jeter1,markis,judit,attack1,artemi,silver69,153246,crazy2,green9,yoshimi,1vette,chief123,jasper2,1sierra,twentyon,drstrang,aspirant,yannic,jenna123,bongtoke,slurpy,1sugar,civic97,rusty21,shineon,james19,anna12345,wonderwoman,1kevin,karol1,kanabis,wert21,fktif6115,evil1,kakaha,54gv768,826248s,tyrone1,1winston,sugar2,falcon01,adelya,mopar440,zasxcd,leecher,kinkysex,mercede1,travka,11234567,rebon,geekboy\".split(\",\"),\n english_wikipedia: \"the,of,and,in,was,is,for,as,on,with,by,he,at,from,his,an,were,are,which,doc,https,also,or,has,had,first,one,their,its,after,new,who,they,two,her,she,been,other,when,time,during,there,into,school,more,may,years,over,only,year,most,would,world,city,some,where,between,later,three,state,such,then,national,used,made,known,under,many,university,united,while,part,season,team,these,american,than,film,second,born,south,became,states,war,through,being,including,both,before,north,high,however,people,family,early,history,album,area,them,series,against,until,since,district,county,name,work,life,group,music,following,number,company,several,four,called,played,released,career,league,game,government,house,each,based,day,same,won,use,station,club,international,town,located,population,general,college,east,found,age,march,end,september,began,home,public,church,line,june,river,member,system,place,century,band,july,york,january,october,song,august,best,former,british,party,named,held,village,show,local,november,took,service,december,built,another,major,within,along,members,five,single,due,although,small,old,left,final,large,include,building,served,president,received,games,death,february,main,third,set,children,own,order,species,park,law,air,published,road,died,book,men,women,army,often,according,education,central,country,division,english,top,included,development,french,community,among,water,play,side,list,times,near,late,form,original,different,center,power,led,students,german,moved,court,six,land,council,island,u.s.,record,million,research,art,established,award,street,military,television,given,region,support,western,production,non,political,point,cup,period,business,title,started,various,election,using,england,role,produced,become,program,works,field,total,office,class,written,association,radio,union,level,championship,director,few,force,created,department,founded,services,married,though,per,n't,site,open,act,short,society,version,royal,present,northern,worked,professional,full,returned,joined,story,france,european,currently,language,social,california,india,days,design,st.,further,round,australia,wrote,san,project,control,southern,railway,board,popular,continued,free,battle,considered,video,common,position,living,half,playing,recorded,red,post,described,average,records,special,modern,appeared,announced,areas,rock,release,elected,others,example,term,opened,similar,formed,route,census,current,schools,originally,lake,developed,race,himself,forces,addition,information,upon,province,match,event,songs,result,events,win,eastern,track,lead,teams,science,human,construction,minister,germany,awards,available,throughout,training,style,body,museum,australian,health,seven,signed,chief,eventually,appointed,sea,centre,debut,tour,points,media,light,range,character,across,features,families,largest,indian,network,less,performance,players,refer,europe,sold,festival,usually,taken,despite,designed,committee,process,return,official,episode,institute,stage,followed,performed,japanese,personal,thus,arts,space,low,months,includes,china,study,middle,magazine,leading,japan,groups,aircraft,featured,federal,civil,rights,model,coach,canadian,books,remained,eight,type,independent,completed,capital,academy,instead,kingdom,organization,countries,studies,competition,sports,size,above,section,finished,gold,involved,reported,management,systems,industry,directed,market,fourth,movement,technology,bank,ground,campaign,base,lower,sent,rather,added,provided,coast,grand,historic,valley,conference,bridge,winning,approximately,films,chinese,awarded,degree,russian,shows,native,female,replaced,municipality,square,studio,medical,data,african,successful,mid,bay,attack,previous,operations,spanish,theatre,student,republic,beginning,provide,ship,primary,owned,writing,tournament,culture,introduced,texas,related,natural,parts,governor,reached,ireland,units,senior,decided,italian,whose,higher,africa,standard,income,professor,placed,regional,los,buildings,championships,active,novel,energy,generally,interest,via,economic,previously,stated,itself,channel,below,operation,leader,traditional,trade,structure,limited,runs,prior,regular,famous,saint,navy,foreign,listed,artist,catholic,airport,results,parliament,collection,unit,officer,goal,attended,command,staff,commission,lived,location,plays,commercial,places,foundation,significant,older,medal,self,scored,companies,highway,activities,programs,wide,musical,notable,library,numerous,paris,towards,individual,allowed,plant,property,annual,contract,whom,highest,initially,required,earlier,assembly,artists,rural,seat,practice,defeated,ended,soviet,length,spent,manager,press,associated,author,issues,additional,characters,lord,zealand,policy,engine,township,noted,historical,complete,financial,religious,mission,contains,nine,recent,represented,pennsylvania,administration,opening,secretary,lines,report,executive,youth,closed,theory,writer,italy,angeles,appearance,feature,queen,launched,legal,terms,entered,issue,edition,singer,greek,majority,background,source,anti,cultural,complex,changes,recording,stadium,islands,operated,particularly,basketball,month,uses,port,castle,mostly,names,fort,selected,increased,status,earth,subsequently,pacific,cover,variety,certain,goals,remains,upper,congress,becoming,studied,irish,nature,particular,loss,caused,chart,dr.,forced,create,era,retired,material,review,rate,singles,referred,larger,individuals,shown,provides,products,speed,democratic,poland,parish,olympics,cities,themselves,temple,wing,genus,households,serving,cost,wales,stations,passed,supported,view,cases,forms,actor,male,matches,males,stars,tracks,females,administrative,median,effect,biography,train,engineering,camp,offered,chairman,houses,mainly,19th,surface,therefore,nearly,score,ancient,subject,prime,seasons,claimed,experience,specific,jewish,failed,overall,believed,plot,troops,greater,spain,consists,broadcast,heavy,increase,raised,separate,campus,1980s,appears,presented,lies,composed,recently,influence,fifth,nations,creek,references,elections,britain,double,cast,meaning,earned,carried,producer,latter,housing,brothers,attempt,article,response,border,remaining,nearby,direct,ships,value,workers,politician,academic,label,1970s,commander,rule,fellow,residents,authority,editor,transport,dutch,projects,responsible,covered,territory,flight,races,defense,tower,emperor,albums,facilities,daily,stories,assistant,managed,primarily,quality,function,proposed,distribution,conditions,prize,journal,code,vice,newspaper,corps,highly,constructed,mayor,critical,secondary,corporation,rugby,regiment,ohio,appearances,serve,allow,nation,multiple,discovered,directly,scene,levels,growth,elements,acquired,1990s,officers,physical,20th,latin,host,jersey,graduated,arrived,issued,literature,metal,estate,vote,immediately,quickly,asian,competed,extended,produce,urban,1960s,promoted,contemporary,global,formerly,appear,industrial,types,opera,ministry,soldiers,commonly,mass,formation,smaller,typically,drama,shortly,density,senate,effects,iran,polish,prominent,naval,settlement,divided,basis,republican,languages,distance,treatment,continue,product,mile,sources,footballer,format,clubs,leadership,initial,offers,operating,avenue,officially,columbia,grade,squadron,fleet,percent,farm,leaders,agreement,likely,equipment,website,mount,grew,method,transferred,intended,renamed,iron,asia,reserve,capacity,politics,widely,activity,advanced,relations,scottish,dedicated,crew,founder,episodes,lack,amount,build,efforts,concept,follows,ordered,leaves,positive,economy,entertainment,affairs,memorial,ability,illinois,communities,color,text,railroad,scientific,focus,comedy,serves,exchange,environment,cars,direction,organized,firm,description,agency,analysis,purpose,destroyed,reception,planned,revealed,infantry,architecture,growing,featuring,household,candidate,removed,situated,models,knowledge,solo,technical,organizations,assigned,conducted,participated,largely,purchased,register,gained,combined,headquarters,adopted,potential,protection,scale,approach,spread,independence,mountains,titled,geography,applied,safety,mixed,accepted,continues,captured,rail,defeat,principal,recognized,lieutenant,mentioned,semi,owner,joint,liberal,actress,traffic,creation,basic,notes,unique,supreme,declared,simply,plants,sales,massachusetts,designated,parties,jazz,compared,becomes,resources,titles,concert,learning,remain,teaching,versions,content,alongside,revolution,sons,block,premier,impact,champions,districts,generation,estimated,volume,image,sites,account,roles,sport,quarter,providing,zone,yard,scoring,classes,presence,performances,representatives,hosted,split,taught,origin,olympic,claims,critics,facility,occurred,suffered,municipal,damage,defined,resulted,respectively,expanded,platform,draft,opposition,expected,educational,ontario,climate,reports,atlantic,surrounding,performing,reduced,ranked,allows,birth,nominated,younger,newly,kong,positions,theater,philadelphia,heritage,finals,disease,sixth,laws,reviews,constitution,tradition,swedish,theme,fiction,rome,medicine,trains,resulting,existing,deputy,environmental,labour,classical,develop,fans,granted,receive,alternative,begins,nuclear,fame,buried,connected,identified,palace,falls,letters,combat,sciences,effort,villages,inspired,regions,towns,conservative,chosen,animals,labor,attacks,materials,yards,steel,representative,orchestra,peak,entitled,officials,returning,reference,northwest,imperial,convention,examples,ocean,publication,painting,subsequent,frequently,religion,brigade,fully,sides,acts,cemetery,relatively,oldest,suggested,succeeded,achieved,application,programme,cells,votes,promotion,graduate,armed,supply,flying,communist,figures,literary,netherlands,korea,worldwide,citizens,1950s,faculty,draw,stock,seats,occupied,methods,unknown,articles,claim,holds,authorities,audience,sweden,interview,obtained,covers,settled,transfer,marked,allowing,funding,challenge,southeast,unlike,crown,rise,portion,transportation,sector,phase,properties,edge,tropical,standards,institutions,philosophy,legislative,hills,brand,fund,conflict,unable,founding,refused,attempts,metres,permanent,starring,applications,creating,effective,aired,extensive,employed,enemy,expansion,billboard,rank,battalion,multi,vehicle,fought,alliance,category,perform,federation,poetry,bronze,bands,entry,vehicles,bureau,maximum,billion,trees,intelligence,greatest,screen,refers,commissioned,gallery,injury,confirmed,setting,treaty,adult,americans,broadcasting,supporting,pilot,mobile,writers,programming,existence,squad,minnesota,copies,korean,provincial,sets,defence,offices,agricultural,internal,core,northeast,retirement,factory,actions,prevent,communications,ending,weekly,containing,functions,attempted,interior,weight,bowl,recognition,incorporated,increasing,ultimately,documentary,derived,attacked,lyrics,mexican,external,churches,centuries,metropolitan,selling,opposed,personnel,mill,visited,presidential,roads,pieces,norwegian,controlled,18th,rear,influenced,wrestling,weapons,launch,composer,locations,developing,circuit,specifically,studios,shared,canal,wisconsin,publishing,approved,domestic,consisted,determined,comic,establishment,exhibition,southwest,fuel,electronic,cape,converted,educated,melbourne,hits,wins,producing,norway,slightly,occur,surname,identity,represent,constituency,funds,proved,links,structures,athletic,birds,contest,users,poet,institution,display,receiving,rare,contained,guns,motion,piano,temperature,publications,passenger,contributed,toward,cathedral,inhabitants,architect,exist,athletics,muslim,courses,abandoned,signal,successfully,disambiguation,tennessee,dynasty,heavily,maryland,jews,representing,budget,weather,missouri,introduction,faced,pair,chapel,reform,height,vietnam,occurs,motor,cambridge,lands,focused,sought,patients,shape,invasion,chemical,importance,communication,selection,regarding,homes,voivodeship,maintained,borough,failure,aged,passing,agriculture,oregon,teachers,flow,philippines,trail,seventh,portuguese,resistance,reaching,negative,fashion,scheduled,downtown,universities,trained,skills,scenes,views,notably,typical,incident,candidates,engines,decades,composition,commune,chain,inc.,austria,sale,values,employees,chamber,regarded,winners,registered,task,investment,colonial,swiss,user,entirely,flag,stores,closely,entrance,laid,journalist,coal,equal,causes,turkish,quebec,techniques,promote,junction,easily,dates,kentucky,singapore,residence,violence,advance,survey,humans,expressed,passes,streets,distinguished,qualified,folk,establish,egypt,artillery,visual,improved,actual,finishing,medium,protein,switzerland,productions,operate,poverty,neighborhood,organisation,consisting,consecutive,sections,partnership,extension,reaction,factor,costs,bodies,device,ethnic,racial,flat,objects,chapter,improve,musicians,courts,controversy,membership,merged,wars,expedition,interests,arab,comics,gain,describes,mining,bachelor,crisis,joining,decade,1930s,distributed,habitat,routes,arena,cycle,divisions,briefly,vocals,directors,degrees,object,recordings,installed,adjacent,demand,voted,causing,businesses,ruled,grounds,starred,drawn,opposite,stands,formal,operates,persons,counties,compete,wave,israeli,ncaa,resigned,brief,greece,combination,demographics,historian,contain,commonwealth,musician,collected,argued,louisiana,session,cabinet,parliamentary,electoral,loan,profit,regularly,conservation,islamic,purchase,17th,charts,residential,earliest,designs,paintings,survived,moth,items,goods,grey,anniversary,criticism,images,discovery,observed,underground,progress,additionally,participate,thousands,reduce,elementary,owners,stating,iraq,resolution,capture,tank,rooms,hollywood,finance,queensland,reign,maintain,iowa,landing,broad,outstanding,circle,path,manufacturing,assistance,sequence,gmina,crossing,leads,universal,shaped,kings,attached,medieval,ages,metro,colony,affected,scholars,oklahoma,coastal,soundtrack,painted,attend,definition,meanwhile,purposes,trophy,require,marketing,popularity,cable,mathematics,mississippi,represents,scheme,appeal,distinct,factors,acid,subjects,roughly,terminal,economics,senator,diocese,prix,contrast,argentina,czech,wings,relief,stages,duties,16th,novels,accused,whilst,equivalent,charged,measure,documents,couples,request,danish,defensive,guide,devices,statistics,credited,tries,passengers,allied,frame,puerto,peninsula,concluded,instruments,wounded,differences,associate,forests,afterwards,replace,requirements,aviation,solution,offensive,ownership,inner,legislation,hungarian,contributions,actors,translated,denmark,steam,depending,aspects,assumed,injured,severe,admitted,determine,shore,technique,arrival,measures,translation,debuted,delivered,returns,rejected,separated,visitors,damaged,storage,accompanied,markets,industries,losses,gulf,charter,strategy,corporate,socialist,somewhat,significantly,physics,mounted,satellite,experienced,constant,relative,pattern,restored,belgium,connecticut,partners,harvard,retained,networks,protected,mode,artistic,parallel,collaboration,debate,involving,journey,linked,salt,authors,components,context,occupation,requires,occasionally,policies,tamil,ottoman,revolutionary,hungary,poem,versus,gardens,amongst,audio,makeup,frequency,meters,orthodox,continuing,suggests,legislature,coalition,guitarist,eighth,classification,practices,soil,tokyo,instance,limit,coverage,considerable,ranking,colleges,cavalry,centers,daughters,twin,equipped,broadway,narrow,hosts,rates,domain,boundary,arranged,12th,whereas,brazilian,forming,rating,strategic,competitions,trading,covering,baltimore,commissioner,infrastructure,origins,replacement,praised,disc,collections,expression,ukraine,driven,edited,austrian,solar,ensure,premiered,successor,wooden,operational,hispanic,concerns,rapid,prisoners,childhood,meets,influential,tunnel,employment,tribe,qualifying,adapted,temporary,celebrated,appearing,increasingly,depression,adults,cinema,entering,laboratory,script,flows,romania,accounts,fictional,pittsburgh,achieve,monastery,franchise,formally,tools,newspapers,revival,sponsored,processes,vienna,springs,missions,classified,13th,annually,branches,lakes,gender,manner,advertising,normally,maintenance,adding,characteristics,integrated,decline,modified,strongly,critic,victims,malaysia,arkansas,nazi,restoration,powered,monument,hundreds,depth,15th,controversial,admiral,criticized,brick,honorary,initiative,output,visiting,birmingham,progressive,existed,carbon,1920s,credits,colour,rising,hence,defeating,superior,filmed,listing,column,surrounded,orleans,principles,territories,struck,participation,indonesia,movements,index,commerce,conduct,constitutional,spiritual,ambassador,vocal,completion,edinburgh,residing,tourism,finland,bears,medals,resident,themes,visible,indigenous,involvement,basin,electrical,ukrainian,concerts,boats,styles,processing,rival,drawing,vessels,experimental,declined,touring,supporters,compilation,coaching,cited,dated,roots,string,explained,transit,traditionally,poems,minimum,representation,14th,releases,effectively,architectural,triple,indicated,greatly,elevation,clinical,printed,10th,proposal,peaked,producers,romanized,rapidly,stream,innings,meetings,counter,householder,honour,lasted,agencies,document,exists,surviving,experiences,honors,landscape,hurricane,harbor,panel,competing,profile,vessel,farmers,lists,revenue,exception,customers,11th,participants,wildlife,utah,bible,gradually,preserved,replacing,symphony,begun,longest,siege,provinces,mechanical,genre,transmission,agents,executed,videos,benefits,funded,rated,instrumental,ninth,similarly,dominated,destruction,passage,technologies,thereafter,outer,facing,affiliated,opportunities,instrument,governments,scholar,evolution,channels,shares,sessions,widespread,occasions,engineers,scientists,signing,battery,competitive,alleged,eliminated,supplies,judges,hampshire,regime,portrayed,penalty,taiwan,denied,submarine,scholarship,substantial,transition,victorian,http,nevertheless,filed,supports,continental,tribes,ratio,doubles,useful,honours,blocks,principle,retail,departure,ranks,patrol,yorkshire,vancouver,inter,extent,afghanistan,strip,railways,component,organ,symbol,categories,encouraged,abroad,civilian,periods,traveled,writes,struggle,immediate,recommended,adaptation,egyptian,graduating,assault,drums,nomination,historically,voting,allies,detailed,achievement,percentage,arabic,assist,frequent,toured,apply,and/or,intersection,maine,touchdown,throne,produces,contribution,emerged,obtain,archbishop,seek,researchers,remainder,populations,clan,finnish,overseas,fifa,licensed,chemistry,festivals,mediterranean,injuries,animated,seeking,publisher,volumes,limits,venue,jerusalem,generated,trials,islam,youngest,ruling,glasgow,germans,songwriter,persian,municipalities,donated,viewed,belgian,cooperation,posted,tech,dual,volunteer,settlers,commanded,claiming,approval,delhi,usage,terminus,partly,electricity,locally,editions,premiere,absence,belief,traditions,statue,indicate,manor,stable,attributed,possession,managing,viewers,chile,overview,seed,regulations,essential,minority,cargo,segment,endemic,forum,deaths,monthly,playoffs,erected,practical,machines,suburb,relation,mrs.,descent,indoor,continuous,characterized,solutions,caribbean,rebuilt,serbian,summary,contested,psychology,pitch,attending,muhammad,tenure,drivers,diameter,assets,venture,punk,airlines,concentration,athletes,volunteers,pages,mines,influences,sculpture,protest,ferry,behalf,drafted,apparent,furthermore,ranging,romanian,democracy,lanka,significance,linear,d.c.,certified,voters,recovered,tours,demolished,boundaries,assisted,identify,grades,elsewhere,mechanism,1940s,reportedly,aimed,conversion,suspended,photography,departments,beijing,locomotives,publicly,dispute,magazines,resort,conventional,platforms,internationally,capita,settlements,dramatic,derby,establishing,involves,statistical,implementation,immigrants,exposed,diverse,layer,vast,ceased,connections,belonged,interstate,uefa,organised,abuse,deployed,cattle,partially,filming,mainstream,reduction,automatic,rarely,subsidiary,decides,merger,comprehensive,displayed,amendment,guinea,exclusively,manhattan,concerning,commons,radical,serbia,baptist,buses,initiated,portrait,harbour,choir,citizen,sole,unsuccessful,manufactured,enforcement,connecting,increases,patterns,sacred,muslims,clothing,hindu,unincorporated,sentenced,advisory,tanks,campaigns,fled,repeated,remote,rebellion,implemented,texts,fitted,tribute,writings,sufficient,ministers,21st,devoted,jurisdiction,coaches,interpretation,pole,businessman,peru,sporting,prices,cuba,relocated,opponent,arrangement,elite,manufacturer,responded,suitable,distinction,calendar,dominant,tourist,earning,prefecture,ties,preparation,anglo,pursue,worship,archaeological,chancellor,bangladesh,scores,traded,lowest,horror,outdoor,biology,commented,specialized,loop,arriving,farming,housed,historians,'the,patent,pupils,christianity,opponents,athens,northwestern,maps,promoting,reveals,flights,exclusive,lions,norfolk,hebrew,extensively,eldest,shops,acquisition,virtual,renowned,margin,ongoing,essentially,iranian,alternate,sailed,reporting,conclusion,originated,temperatures,exposure,secured,landed,rifle,framework,identical,martial,focuses,topics,ballet,fighters,belonging,wealthy,negotiations,evolved,bases,oriented,acres,democrat,heights,restricted,vary,graduation,aftermath,chess,illness,participating,vertical,collective,immigration,demonstrated,leaf,completing,organic,missile,leeds,eligible,grammar,confederate,improvement,congressional,wealth,cincinnati,spaces,indicates,corresponding,reaches,repair,isolated,taxes,congregation,ratings,leagues,diplomatic,submitted,winds,awareness,photographs,maritime,nigeria,accessible,animation,restaurants,philippine,inaugural,dismissed,armenian,illustrated,reservoir,speakers,programmes,resource,genetic,interviews,camps,regulation,computers,preferred,travelled,comparison,distinctive,recreation,requested,southeastern,dependent,brisbane,breeding,playoff,expand,bonus,gauge,departed,qualification,inspiration,shipping,slaves,variations,shield,theories,munich,recognised,emphasis,favour,variable,seeds,undergraduate,territorial,intellectual,qualify,mini,banned,pointed,democrats,assessment,judicial,examination,attempting,objective,partial,characteristic,hardware,pradesh,execution,ottawa,metre,drum,exhibitions,withdrew,attendance,phrase,journalism,logo,measured,error,christians,trio,protestant,theology,respective,atmosphere,buddhist,substitute,curriculum,fundamental,outbreak,rabbi,intermediate,designation,globe,liberation,simultaneously,diseases,experiments,locomotive,difficulties,mainland,nepal,relegated,contributing,database,developments,veteran,carries,ranges,instruction,lodge,protests,obama,newcastle,experiment,physician,describing,challenges,corruption,delaware,adventures,ensemble,succession,renaissance,tenth,altitude,receives,approached,crosses,syria,croatia,warsaw,professionals,improvements,worn,airline,compound,permitted,preservation,reducing,printing,scientist,activist,comprises,sized,societies,enters,ruler,gospel,earthquake,extend,autonomous,croatian,serial,decorated,relevant,ideal,grows,grass,tier,towers,wider,welfare,columns,alumni,descendants,interface,reserves,banking,colonies,manufacturers,magnetic,closure,pitched,vocalist,preserve,enrolled,cancelled,equation,2000s,nickname,bulgaria,heroes,exile,mathematical,demands,input,structural,tube,stem,approaches,argentine,axis,manuscript,inherited,depicted,targets,visits,veterans,regard,removal,efficiency,organisations,concepts,lebanon,manga,petersburg,rally,supplied,amounts,yale,tournaments,broadcasts,signals,pilots,azerbaijan,architects,enzyme,literacy,declaration,placing,batting,incumbent,bulgarian,consistent,poll,defended,landmark,southwestern,raid,resignation,travels,casualties,prestigious,namely,aims,recipient,warfare,readers,collapse,coached,controls,volleyball,coup,lesser,verse,pairs,exhibited,proteins,molecular,abilities,integration,consist,aspect,advocate,administered,governing,hospitals,commenced,coins,lords,variation,resumed,canton,artificial,elevated,palm,difficulty,civic,efficient,northeastern,inducted,radiation,affiliate,boards,stakes,byzantine,consumption,freight,interaction,oblast,numbered,seminary,contracts,extinct,predecessor,bearing,cultures,functional,neighboring,revised,cylinder,grants,narrative,reforms,athlete,tales,reflect,presidency,compositions,specialist,cricketer,founders,sequel,widow,disbanded,associations,backed,thereby,pitcher,commanding,boulevard,singers,crops,militia,reviewed,centres,waves,consequently,fortress,tributary,portions,bombing,excellence,nest,payment,mars,plaza,unity,victories,scotia,farms,nominations,variant,attacking,suspension,installation,graphics,estates,comments,acoustic,destination,venues,surrender,retreat,libraries,quarterback,customs,berkeley,collaborated,gathered,syndrome,dialogue,recruited,shanghai,neighbouring,psychological,saudi,moderate,exhibit,innovation,depot,binding,brunswick,situations,certificate,actively,shakespeare,editorial,presentation,ports,relay,nationalist,methodist,archives,experts,maintains,collegiate,bishops,maintaining,temporarily,embassy,essex,wellington,connects,reformed,bengal,recalled,inches,doctrine,deemed,legendary,reconstruction,statements,palestinian,meter,achievements,riders,interchange,spots,auto,accurate,chorus,dissolved,missionary,thai,operators,e.g.,generations,failing,delayed,cork,nashville,perceived,venezuela,cult,emerging,tomb,abolished,documented,gaining,canyon,episcopal,stored,assists,compiled,kerala,kilometers,mosque,grammy,theorem,unions,segments,glacier,arrives,theatrical,circulation,conferences,chapters,displays,circular,authored,conductor,fewer,dimensional,nationwide,liga,yugoslavia,peer,vietnamese,fellowship,armies,regardless,relating,dynamic,politicians,mixture,serie,somerset,imprisoned,posts,beliefs,beta,layout,independently,electronics,provisions,fastest,logic,headquartered,creates,challenged,beaten,appeals,plains,protocol,graphic,accommodate,iraqi,midfielder,span,commentary,freestyle,reflected,palestine,lighting,burial,virtually,backing,prague,tribal,heir,identification,prototype,criteria,dame,arch,tissue,footage,extending,procedures,predominantly,updated,rhythm,preliminary,cafe,disorder,prevented,suburbs,discontinued,retiring,oral,followers,extends,massacre,journalists,conquest,larvae,pronounced,behaviour,diversity,sustained,addressed,geographic,restrictions,voiced,milwaukee,dialect,quoted,grid,nationally,nearest,roster,twentieth,separation,indies,manages,citing,intervention,guidance,severely,migration,artwork,focusing,rivals,trustees,varied,enabled,committees,centered,skating,slavery,cardinals,forcing,tasks,auckland,youtube,argues,colored,advisor,mumbai,requiring,theological,registration,refugees,nineteenth,survivors,runners,colleagues,priests,contribute,variants,workshop,concentrated,creator,lectures,temples,exploration,requirement,interactive,navigation,companion,perth,allegedly,releasing,citizenship,observation,stationed,ph.d.,sheep,breed,discovers,encourage,kilometres,journals,performers,isle,saskatchewan,hybrid,hotels,lancashire,dubbed,airfield,anchor,suburban,theoretical,sussex,anglican,stockholm,permanently,upcoming,privately,receiver,optical,highways,congo,colours,aggregate,authorized,repeatedly,varies,fluid,innovative,transformed,praise,convoy,demanded,discography,attraction,export,audiences,ordained,enlisted,occasional,westminster,syrian,heavyweight,bosnia,consultant,eventual,improving,aires,wickets,epic,reactions,scandal,i.e.,discrimination,buenos,patron,investors,conjunction,testament,construct,encountered,celebrity,expanding,georgian,brands,retain,underwent,algorithm,foods,provision,orbit,transformation,associates,tactical,compact,varieties,stability,refuge,gathering,moreover,manila,configuration,gameplay,discipline,entity,comprising,composers,skill,monitoring,ruins,museums,sustainable,aerial,altered,codes,voyage,friedrich,conflicts,storyline,travelling,conducting,merit,indicating,referendum,currency,encounter,particles,automobile,workshops,acclaimed,inhabited,doctorate,cuban,phenomenon,dome,enrollment,tobacco,governance,trend,equally,manufacture,hydrogen,grande,compensation,download,pianist,grain,shifted,neutral,evaluation,define,cycling,seized,array,relatives,motors,firms,varying,automatically,restore,nicknamed,findings,governed,investigate,manitoba,administrator,vital,integral,indonesian,confusion,publishers,enable,geographical,inland,naming,civilians,reconnaissance,indianapolis,lecturer,deer,tourists,exterior,rhode,bassist,symbols,scope,ammunition,yuan,poets,punjab,nursing,cent,developers,estimates,presbyterian,nasa,holdings,generate,renewed,computing,cyprus,arabia,duration,compounds,gastropod,permit,valid,touchdowns,facade,interactions,mineral,practiced,allegations,consequence,goalkeeper,baronet,copyright,uprising,carved,targeted,competitors,mentions,sanctuary,fees,pursued,tampa,chronicle,capabilities,specified,specimens,toll,accounting,limestone,staged,upgraded,philosophical,streams,guild,revolt,rainfall,supporter,princeton,terrain,hometown,probability,assembled,paulo,surrey,voltage,developer,destroyer,floors,lineup,curve,prevention,potentially,onwards,trips,imposed,hosting,striking,strict,admission,apartments,solely,utility,proceeded,observations,euro,incidents,vinyl,profession,haven,distant,expelled,rivalry,runway,torpedo,zones,shrine,dimensions,investigations,lithuania,idaho,pursuit,copenhagen,considerably,locality,wireless,decrease,genes,thermal,deposits,hindi,habitats,withdrawn,biblical,monuments,casting,plateau,thesis,managers,flooding,assassination,acknowledged,interim,inscription,guided,pastor,finale,insects,transported,activists,marshal,intensity,airing,cardiff,proposals,lifestyle,prey,herald,capitol,aboriginal,measuring,lasting,interpreted,occurring,desired,drawings,healthcare,panels,elimination,oslo,ghana,blog,sabha,intent,superintendent,governors,bankruptcy,p.m.,equity,disk,layers,slovenia,prussia,quartet,mechanics,graduates,politically,monks,screenplay,nato,absorbed,topped,petition,bold,morocco,exhibits,canterbury,publish,rankings,crater,dominican,enhanced,planes,lutheran,governmental,joins,collecting,brussels,unified,streak,strategies,flagship,surfaces,oval,archive,etymology,imprisonment,instructor,noting,remix,opposing,servant,rotation,width,trans,maker,synthesis,excess,tactics,snail,ltd.,lighthouse,sequences,cornwall,plantation,mythology,performs,foundations,populated,horizontal,speedway,activated,performer,diving,conceived,edmonton,subtropical,environments,prompted,semifinals,caps,bulk,treasury,recreational,telegraph,continent,portraits,relegation,catholics,graph,velocity,rulers,endangered,secular,observer,learns,inquiry,idol,dictionary,certification,estimate,cluster,armenia,observatory,revived,nadu,consumers,hypothesis,manuscripts,contents,arguments,editing,trails,arctic,essays,belfast,acquire,promotional,undertaken,corridor,proceedings,antarctic,millennium,labels,delegates,vegetation,acclaim,directing,substance,outcome,diploma,philosopher,malta,albanian,vicinity,degc,legends,regiments,consent,terrorist,scattered,presidents,gravity,orientation,deployment,duchy,refuses,estonia,crowned,separately,renovation,rises,wilderness,objectives,agreements,empress,slopes,inclusion,equality,decree,ballot,criticised,rochester,recurring,struggled,disabled,henri,poles,prussian,convert,bacteria,poorly,sudan,geological,wyoming,consistently,minimal,withdrawal,interviewed,proximity,repairs,initiatives,pakistani,republicans,propaganda,viii,abstract,commercially,availability,mechanisms,naples,discussions,underlying,lens,proclaimed,advised,spelling,auxiliary,attract,lithuanian,editors,o'brien,accordance,measurement,novelist,ussr,formats,councils,contestants,indie,facebook,parishes,barrier,battalions,sponsor,consulting,terrorism,implement,uganda,crucial,unclear,notion,distinguish,collector,attractions,filipino,ecology,investments,capability,renovated,iceland,albania,accredited,scouts,armor,sculptor,cognitive,errors,gaming,condemned,successive,consolidated,baroque,entries,regulatory,reserved,treasurer,variables,arose,technological,rounded,provider,rhine,agrees,accuracy,genera,decreased,frankfurt,ecuador,edges,particle,rendered,calculated,careers,faction,rifles,americas,gaelic,portsmouth,resides,merchants,fiscal,premises,coin,draws,presenter,acceptance,ceremonies,pollution,consensus,membrane,brigadier,nonetheless,genres,supervision,predicted,magnitude,finite,differ,ancestry,vale,delegation,removing,proceeds,placement,emigrated,siblings,molecules,payments,considers,demonstration,proportion,newer,valve,achieving,confederation,continuously,luxury,notre,introducing,coordinates,charitable,squadrons,disorders,geometry,winnipeg,ulster,loans,longtime,receptor,preceding,belgrade,mandate,wrestler,neighbourhood,factories,buddhism,imported,sectors,protagonist,steep,elaborate,prohibited,artifacts,prizes,pupil,cooperative,sovereign,subspecies,carriers,allmusic,nationals,settings,autobiography,neighborhoods,analog,facilitate,voluntary,jointly,newfoundland,organizing,raids,exercises,nobel,machinery,baltic,crop,granite,dense,websites,mandatory,seeks,surrendered,anthology,comedian,bombs,slot,synopsis,critically,arcade,marking,equations,halls,indo,inaugurated,embarked,speeds,clause,invention,premiership,likewise,presenting,demonstrate,designers,organize,examined,km/h,bavaria,troop,referee,detection,zurich,prairie,rapper,wingspan,eurovision,luxembourg,slovakia,inception,disputed,mammals,entrepreneur,makers,evangelical,yield,clergy,trademark,defunct,allocated,depicting,volcanic,batted,conquered,sculptures,providers,reflects,armoured,locals,walt,herzegovina,contracted,entities,sponsorship,prominence,flowing,ethiopia,marketed,corporations,withdraw,carnegie,induced,investigated,portfolio,flowering,opinions,viewing,classroom,donations,bounded,perception,leicester,fruits,charleston,academics,statute,complaints,smallest,deceased,petroleum,resolved,commanders,algebra,southampton,modes,cultivation,transmitter,spelled,obtaining,sizes,acre,pageant,bats,abbreviated,correspondence,barracks,feast,tackles,raja,derives,geology,disputes,translations,counted,constantinople,seating,macedonia,preventing,accommodation,homeland,explored,invaded,provisional,transform,sphere,unsuccessfully,missionaries,conservatives,highlights,traces,organisms,openly,dancers,fossils,absent,monarchy,combining,lanes,stint,dynamics,chains,missiles,screening,module,tribune,generating,miners,nottingham,seoul,unofficial,owing,linking,rehabilitation,citation,louisville,mollusk,depicts,differential,zimbabwe,kosovo,recommendations,responses,pottery,scorer,aided,exceptions,dialects,telecommunications,defines,elderly,lunar,coupled,flown,25th,espn,formula_1,bordered,fragments,guidelines,gymnasium,valued,complexity,papal,presumably,maternal,challenging,reunited,advancing,comprised,uncertain,favorable,twelfth,correspondent,nobility,livestock,expressway,chilean,tide,researcher,emissions,profits,lengths,accompanying,witnessed,itunes,drainage,slope,reinforced,feminist,sanskrit,develops,physicians,outlets,isbn,coordinator,averaged,termed,occupy,diagnosed,yearly,humanitarian,prospect,spacecraft,stems,enacted,linux,ancestors,karnataka,constitute,immigrant,thriller,ecclesiastical,generals,celebrations,enhance,heating,advocated,evident,advances,bombardment,watershed,shuttle,wicket,twitter,adds,branded,teaches,schemes,pension,advocacy,conservatory,cairo,varsity,freshwater,providence,seemingly,shells,cuisine,specially,peaks,intensive,publishes,trilogy,skilled,nacional,unemployment,destinations,parameters,verses,trafficking,determination,infinite,savings,alignment,linguistic,countryside,dissolution,measurements,advantages,licence,subfamily,highlands,modest,regent,algeria,crest,teachings,knockout,brewery,combine,conventions,descended,chassis,primitive,fiji,explicitly,cumberland,uruguay,laboratories,bypass,elect,informal,preceded,holocaust,tackle,minneapolis,quantity,securities,console,doctoral,religions,commissioners,expertise,unveiled,precise,diplomat,standings,infant,disciplines,sicily,endorsed,systematic,charted,armored,mild,lateral,townships,hurling,prolific,invested,wartime,compatible,galleries,moist,battlefield,decoration,convent,tubes,terrestrial,nominee,requests,delegate,leased,dubai,polar,applying,addresses,munster,sings,commercials,teamed,dances,eleventh,midland,cedar,flee,sandstone,snails,inspection,divide,asset,themed,comparable,paramount,dairy,archaeology,intact,institutes,rectangular,instances,phases,reflecting,substantially,applies,vacant,lacked,copa,coloured,encounters,sponsors,encoded,possess,revenues,ucla,chaired,a.m.,enabling,playwright,stoke,sociology,tibetan,frames,motto,financing,illustrations,gibraltar,chateau,bolivia,transmitted,enclosed,persuaded,urged,folded,suffolk,regulated,bros.,submarines,myth,oriental,malaysian,effectiveness,narrowly,acute,sunk,replied,utilized,tasmania,consortium,quantities,gains,parkway,enlarged,sided,employers,adequate,accordingly,assumption,ballad,mascot,distances,peaking,saxony,projected,affiliation,limitations,metals,guatemala,scots,theaters,kindergarten,verb,employer,differs,discharge,controller,seasonal,marching,guru,campuses,avoided,vatican,maori,excessive,chartered,modifications,caves,monetary,sacramento,mixing,institutional,celebrities,irrigation,shapes,broadcaster,anthem,attributes,demolition,offshore,specification,surveys,yugoslav,contributor,auditorium,lebanese,capturing,airports,classrooms,chennai,paths,tendency,determining,lacking,upgrade,sailors,detected,kingdoms,sovereignty,freely,decorative,momentum,scholarly,georges,gandhi,speculation,transactions,undertook,interact,similarities,cove,teammate,constituted,painters,tends,madagascar,partnerships,afghan,personalities,attained,rebounds,masses,synagogue,reopened,asylum,embedded,imaging,catalogue,defenders,taxonomy,fiber,afterward,appealed,communists,lisbon,rica,judaism,adviser,batsman,ecological,commands,lgbt,cooling,accessed,wards,shiva,employs,thirds,scenic,worcester,tallest,contestant,humanities,economist,textile,constituencies,motorway,tram,percussion,cloth,leisure,1880s,baden,flags,resemble,riots,coined,sitcom,composite,implies,daytime,tanzania,penalties,optional,competitor,excluded,steering,reversed,autonomy,reviewer,breakthrough,professionally,damages,pomeranian,deputies,valleys,ventures,highlighted,electorate,mapping,shortened,executives,tertiary,specimen,launching,bibliography,sank,pursuing,binary,descendant,marched,natives,ideology,turks,adolf,archdiocese,tribunal,exceptional,nigerian,preference,fails,loading,comeback,vacuum,favored,alter,remnants,consecrated,spectators,trends,patriarch,feedback,paved,sentences,councillor,astronomy,advocates,broader,commentator,commissions,identifying,revealing,theatres,incomplete,enables,constituent,reformation,tract,haiti,atmospheric,screened,explosive,czechoslovakia,acids,symbolic,subdivision,liberals,incorporate,challenger,erie,filmmaker,laps,kazakhstan,organizational,evolutionary,chemicals,dedication,riverside,fauna,moths,maharashtra,annexed,gen.,resembles,underwater,garnered,timeline,remake,suited,educator,hectares,automotive,feared,latvia,finalist,narrator,portable,airways,plaque,designing,villagers,licensing,flank,statues,struggles,deutsche,migrated,cellular,jacksonville,wimbledon,defining,highlight,preparatory,planets,cologne,employ,frequencies,detachment,readily,libya,resign,halt,helicopters,reef,landmarks,collaborative,irregular,retaining,helsinki,folklore,weakened,viscount,interred,professors,memorable,mega,repertoire,rowing,dorsal,albeit,progressed,operative,coronation,liner,telugu,domains,philharmonic,detect,bengali,synthetic,tensions,atlas,dramatically,paralympics,xbox,shire,kiev,lengthy,sued,notorious,seas,screenwriter,transfers,aquatic,pioneers,unesco,radius,abundant,tunnels,syndicated,inventor,accreditation,janeiro,exeter,ceremonial,omaha,cadet,predators,resided,prose,slavic,precision,abbot,deity,engaging,cambodia,estonian,compliance,demonstrations,protesters,reactor,commodore,successes,chronicles,mare,extant,listings,minerals,tonnes,parody,cultivated,traders,pioneering,supplement,slovak,preparations,collision,partnered,vocational,atoms,malayalam,welcomed,documentation,curved,functioning,presently,formations,incorporates,nazis,botanical,nucleus,ethical,greeks,metric,automated,whereby,stance,europeans,duet,disability,purchasing,email,telescope,displaced,sodium,comparative,processor,inning,precipitation,aesthetic,import,coordination,feud,alternatively,mobility,tibet,regained,succeeding,hierarchy,apostolic,catalog,reproduction,inscriptions,vicar,clusters,posthumously,rican,loosely,additions,photographic,nowadays,selective,derivative,keyboards,guides,collectively,affecting,combines,operas,networking,decisive,terminated,continuity,finishes,ancestor,consul,heated,simulation,leipzig,incorporating,georgetown,formula_2,circa,forestry,portrayal,councillors,advancement,complained,forewings,confined,transaction,definitions,reduces,televised,1890s,rapids,phenomena,belarus,alps,landscapes,quarterly,specifications,commemorate,continuation,isolation,antenna,downstream,patents,ensuing,tended,saga,lifelong,columnist,labeled,gymnastics,papua,anticipated,demise,encompasses,madras,antarctica,interval,icon,rams,midlands,ingredients,priory,strengthen,rouge,explicit,gaza,aging,securing,anthropology,listeners,adaptations,underway,vista,malay,fortified,lightweight,violations,concerto,financed,jesuit,observers,trustee,descriptions,nordic,resistant,opted,accepts,prohibition,andhra,inflation,negro,wholly,imagery,spur,instructed,gloucester,cycles,middlesex,destroyers,statewide,evacuated,hyderabad,peasants,mice,shipyard,coordinate,pitching,colombian,exploring,numbering,compression,countess,hiatus,exceed,raced,archipelago,traits,soils,o'connor,vowel,android,facto,angola,amino,holders,logistics,circuits,emergence,kuwait,partition,emeritus,outcomes,submission,promotes,barack,negotiated,loaned,stripped,50th,excavations,treatments,fierce,participant,exports,decommissioned,cameo,remarked,residences,fuselage,mound,undergo,quarry,node,midwest,specializing,occupies,etc.,showcase,molecule,offs,modules,salon,exposition,revision,peers,positioned,hunters,competes,algorithms,reside,zagreb,calcium,uranium,silicon,airs,counterpart,outlet,collectors,sufficiently,canberra,inmates,anatomy,ensuring,curves,aviv,firearms,basque,volcano,thrust,sheikh,extensions,installations,aluminum,darker,sacked,emphasized,aligned,asserted,pseudonym,spanning,decorations,eighteenth,orbital,spatial,subdivided,notation,decay,macedonian,amended,declining,cyclist,feat,unusually,commuter,birthplace,latitude,activation,overhead,30th,finalists,whites,encyclopedia,tenor,qatar,survives,complement,concentrations,uncommon,astronomical,bangalore,pius,genome,memoir,recruit,prosecutor,modification,paired,container,basilica,arlington,displacement,germanic,mongolia,proportional,debates,matched,calcutta,rows,tehran,aerospace,prevalent,arise,lowland,24th,spokesman,supervised,advertisements,clash,tunes,revelation,wanderers,quarterfinals,fisheries,steadily,memoirs,pastoral,renewable,confluence,acquiring,strips,slogan,upstream,scouting,analyst,practitioners,turbine,strengthened,heavier,prehistoric,plural,excluding,isles,persecution,turin,rotating,villain,hemisphere,unaware,arabs,corpus,relied,singular,unanimous,schooling,passive,angles,dominance,instituted,aria,outskirts,balanced,beginnings,financially,structured,parachute,viewer,attitudes,subjected,escapes,derbyshire,erosion,addressing,styled,declaring,originating,colts,adjusted,stained,occurrence,fortifications,baghdad,nitrogen,localities,yemen,galway,debris,lodz,victorious,pharmaceutical,substances,unnamed,dwelling,atop,developmental,activism,voter,refugee,forested,relates,overlooking,genocide,kannada,insufficient,oversaw,partisan,dioxide,recipients,factions,mortality,capped,expeditions,receptors,reorganized,prominently,atom,flooded,flute,orchestral,scripts,mathematician,airplay,detached,rebuilding,dwarf,brotherhood,salvation,expressions,arabian,cameroon,poetic,recruiting,bundesliga,inserted,scrapped,disabilities,evacuation,pasha,undefeated,crafts,rituals,aluminium,norm,pools,submerged,occupying,pathway,exams,prosperity,wrestlers,promotions,basal,permits,nationalism,trim,merge,gazette,tributaries,transcription,caste,porto,emerge,modeled,adjoining,counterparts,paraguay,redevelopment,renewal,unreleased,equilibrium,similarity,minorities,soviets,comprise,nodes,tasked,unrelated,expired,johan,precursor,examinations,electrons,socialism,exiled,admiralty,floods,wigan,nonprofit,lacks,brigades,screens,repaired,hanover,fascist,labs,osaka,delays,judged,statutory,colt,col.,offspring,solving,bred,assisting,retains,somalia,grouped,corresponds,tunisia,chaplain,eminent,chord,22nd,spans,viral,innovations,possessions,mikhail,kolkata,icelandic,implications,introduces,racism,workforce,alto,compulsory,admits,censorship,onset,reluctant,inferior,iconic,progression,liability,turnout,satellites,behavioral,coordinated,exploitation,posterior,averaging,fringe,krakow,mountainous,greenwich,para,plantations,reinforcements,offerings,famed,intervals,constraints,individually,nutrition,1870s,taxation,threshold,tomatoes,fungi,contractor,ethiopian,apprentice,diabetes,wool,gujarat,honduras,norse,bucharest,23rd,arguably,accompany,prone,teammates,perennial,vacancy,polytechnic,deficit,okinawa,functionality,reminiscent,tolerance,transferring,myanmar,concludes,neighbours,hydraulic,economically,slower,plots,charities,synod,investor,catholicism,identifies,bronx,interpretations,adverse,judiciary,hereditary,nominal,sensor,symmetry,cubic,triangular,tenants,divisional,outreach,representations,passages,undergoing,cartridge,testified,exceeded,impacts,limiting,railroads,defeats,regain,rendering,humid,retreated,reliability,governorate,antwerp,infamous,implied,packaging,lahore,trades,billed,extinction,ecole,rejoined,recognizes,projection,qualifications,stripes,forts,socially,lexington,accurately,sexuality,westward,wikipedia,pilgrimage,abolition,choral,stuttgart,nests,expressing,strikeouts,assessed,monasteries,reconstructed,humorous,marxist,fertile,consort,urdu,patronage,peruvian,devised,lyric,baba,nassau,communism,extraction,popularly,markings,inability,litigation,accounted,processed,emirates,tempo,cadets,eponymous,contests,broadly,oxide,courtyard,frigate,directory,apex,outline,regency,chiefly,patrols,secretariat,cliffs,residency,privy,armament,australians,dorset,geometric,genetics,scholarships,fundraising,flats,demographic,multimedia,captained,documentaries,updates,canvas,blockade,guerrilla,songwriting,administrators,intake,drought,implementing,fraction,cannes,refusal,inscribed,meditation,announcing,exported,ballots,formula_3,curator,basel,arches,flour,subordinate,confrontation,gravel,simplified,berkshire,patriotic,tuition,employing,servers,castile,posting,combinations,discharged,miniature,mutations,constellation,incarnation,ideals,necessity,granting,ancestral,crowds,pioneered,mormon,methodology,rama,indirect,complexes,bavarian,patrons,uttar,skeleton,bollywood,flemish,viable,bloc,breeds,triggered,sustainability,tailed,referenced,comply,takeover,latvian,homestead,platoon,communal,nationality,excavated,targeting,sundays,posed,physicist,turret,endowment,marginal,dispatched,commentators,renovations,attachment,collaborations,ridges,barriers,obligations,shareholders,prof.,defenses,presided,rite,backgrounds,arbitrary,affordable,gloucestershire,thirteenth,inlet,miniseries,possesses,detained,pressures,subscription,realism,solidarity,proto,postgraduate,noun,burmese,abundance,homage,reasoning,anterior,robust,fencing,shifting,vowels,garde,profitable,loch,anchored,coastline,samoa,terminology,prostitution,magistrate,venezuelan,speculated,regulate,fixture,colonists,digit,induction,manned,expeditionary,computational,centennial,principally,vein,preserving,engineered,numerical,cancellation,conferred,continually,borne,seeded,advertisement,unanimously,treaties,infections,ions,sensors,lowered,amphibious,lava,fourteenth,bahrain,niagara,nicaragua,squares,congregations,26th,periodic,proprietary,1860s,contributors,seller,overs,emission,procession,presumed,illustrator,zinc,gases,tens,applicable,stretches,reproductive,sixteenth,apparatus,accomplishments,canoe,guam,oppose,recruitment,accumulated,limerick,namibia,staging,remixes,ordnance,uncertainty,pedestrian,temperate,treason,deposited,registry,cerambycidae,attracting,lankan,reprinted,shipbuilding,homosexuality,neurons,eliminating,1900s,resume,ministries,beneficial,blackpool,surplus,northampton,licenses,constructing,announcer,standardized,alternatives,taipei,inadequate,failures,yields,medalist,titular,obsolete,torah,burlington,predecessors,lublin,retailers,castles,depiction,issuing,gubernatorial,propulsion,tiles,damascus,discs,alternating,pomerania,peasant,tavern,redesignated,27th,illustration,focal,mans,codex,specialists,productivity,antiquity,controversies,promoter,pits,companions,behaviors,lyrical,prestige,creativity,swansea,dramas,approximate,feudal,tissues,crude,campaigned,unprecedented,chancel,amendments,surroundings,allegiance,exchanges,align,firmly,optimal,commenting,reigning,landings,obscure,1850s,contemporaries,paternal,devi,endurance,communes,incorporation,denominations,exchanged,routing,resorts,amnesty,slender,explores,suppression,heats,pronunciation,centred,coupe,stirling,freelance,treatise,linguistics,laos,informs,discovering,pillars,encourages,halted,robots,definitive,maturity,tuberculosis,venetian,silesian,unchanged,originates,mali,lincolnshire,quotes,seniors,premise,contingent,distribute,danube,gorge,logging,dams,curling,seventeenth,specializes,wetlands,deities,assess,thickness,rigid,culminated,utilities,substrate,insignia,nile,assam,shri,currents,suffrage,canadians,mortar,asteroid,bosnian,discoveries,enzymes,sanctioned,replica,hymn,investigators,tidal,dominate,derivatives,converting,leinster,verbs,honoured,criticisms,dismissal,discrete,masculine,reorganization,unlimited,wurttemberg,sacks,allocation,bahn,jurisdictions,participates,lagoon,famine,communion,culminating,surveyed,shortage,cables,intersects,cassette,foremost,adopting,solicitor,outright,bihar,reissued,farmland,dissertation,turnpike,baton,photographed,christchurch,kyoto,finances,rails,histories,linebacker,kilkenny,accelerated,dispersed,handicap,absorption,rancho,ceramic,captivity,cites,font,weighed,mater,utilize,bravery,extract,validity,slovenian,seminars,discourse,ranged,duel,ironically,warships,sega,temporal,surpassed,prolonged,recruits,northumberland,greenland,contributes,patented,eligibility,unification,discusses,reply,translates,beirut,relies,torque,northward,reviewers,monastic,accession,neural,tramway,heirs,sikh,subscribers,amenities,taliban,audit,rotterdam,wagons,kurdish,favoured,combustion,meanings,persia,browser,diagnostic,niger,formula_4,denomination,dividing,parameter,branding,badminton,leningrad,sparked,hurricanes,beetles,propeller,mozambique,refined,diagram,exhaust,vacated,readings,markers,reconciliation,determines,concurrent,imprint,primera,organism,demonstrating,filmmakers,vanderbilt,affiliates,traction,evaluated,defendants,megachile,investigative,zambia,assassinated,rewarded,probable,staffordshire,foreigners,directorate,nominees,consolidation,commandant,reddish,differing,unrest,drilling,bohemia,resembling,instrumentation,considerations,haute,promptly,variously,dwellings,clans,tablet,enforced,cockpit,semifinal,hussein,prisons,ceylon,emblem,monumental,phrases,correspond,crossover,outlined,characterised,acceleration,caucus,crusade,protested,composing,rajasthan,habsburg,rhythmic,interception,inherent,cooled,ponds,spokesperson,gradual,consultation,kuala,globally,suppressed,builders,avengers,suffix,integer,enforce,fibers,unionist,proclamation,uncovered,infrared,adapt,eisenhower,utilizing,captains,stretched,observing,assumes,prevents,analyses,saxophone,caucasus,notices,villains,dartmouth,mongol,hostilities,stretching,veterinary,lenses,texture,prompting,overthrow,excavation,islanders,masovian,battleship,biographer,replay,degradation,departing,luftwaffe,fleeing,oversight,immigrated,serbs,fishermen,strengthening,respiratory,italians,denotes,radial,escorted,motif,wiltshire,expresses,accessories,reverted,establishments,inequality,protocols,charting,famously,satirical,entirety,trench,friction,atletico,sampling,subset,weekday,upheld,sharply,correlation,incorrect,mughal,travelers,hasan,earnings,offset,evaluate,specialised,recognizing,flexibility,nagar,postseason,algebraic,capitalism,crystals,melodies,polynomial,racecourse,defences,austro,wembley,attracts,anarchist,resurrection,reviewing,decreasing,prefix,ratified,mutation,displaying,separating,restoring,assemblies,ordinance,priesthood,cruisers,appoint,moldova,imports,directive,epidemic,militant,senegal,signaling,restriction,critique,retrospective,nationalists,undertake,sioux,canals,algerian,redesigned,philanthropist,depict,conceptual,turbines,intellectuals,eastward,applicants,contractors,vendors,undergone,namesake,ensured,tones,substituted,hindwings,arrests,tombs,transitional,principality,reelection,taiwanese,cavity,manifesto,broadcasters,spawned,thoroughbred,identities,generators,proposes,hydroelectric,johannesburg,cortex,scandinavian,killings,aggression,boycott,catalyst,physiology,fifteenth,waterfront,chromosome,organist,costly,calculation,cemeteries,flourished,recognise,juniors,merging,disciples,ashore,workplace,enlightenment,diminished,debated,hailed,podium,educate,mandated,distributor,litre,electromagnetic,flotilla,estuary,peterborough,staircase,selections,melodic,confronts,wholesale,integrate,intercepted,catalonia,unite,immense,palatinate,switches,earthquakes,occupational,successors,praising,concluding,faculties,firstly,overhaul,empirical,metacritic,inauguration,evergreen,laden,winged,philosophers,amalgamated,geoff,centimeters,napoleonic,upright,planting,brewing,fined,sensory,migrants,wherein,inactive,headmaster,warwickshire,siberia,terminals,denounced,academia,divinity,bilateral,clive,omitted,peerage,relics,apartheid,syndicate,fearing,fixtures,desirable,dismantled,ethnicity,valves,biodiversity,aquarium,ideological,visibility,creators,analyzed,tenant,balkan,postwar,supplier,smithsonian,risen,morphology,digits,bohemian,wilmington,vishnu,demonstrates,aforementioned,biographical,mapped,khorasan,phosphate,presentations,ecosystem,processors,calculations,mosaic,clashes,penned,recalls,coding,angular,lattice,macau,accountability,extracted,pollen,therapeutic,overlap,violinist,deposed,candidacy,infants,covenant,bacterial,restructuring,dungeons,ordination,conducts,builds,invasive,customary,concurrently,relocation,cello,statutes,borneo,entrepreneurs,sanctions,packet,rockefeller,piedmont,comparisons,waterfall,receptions,glacial,surge,signatures,alterations,advertised,enduring,somali,botanist,100th,canonical,motifs,longitude,circulated,alloy,indirectly,margins,preserves,internally,besieged,shale,peripheral,drained,baseman,reassigned,tobago,soloist,socio,grazing,contexts,roofs,portraying,ottomans,shrewsbury,noteworthy,lamps,supplying,beams,qualifier,portray,greenhouse,stronghold,hitter,rites,cretaceous,urging,derive,nautical,aiming,fortunes,verde,donors,reliance,exceeding,exclusion,exercised,simultaneous,continents,guiding,pillar,gradient,poznan,eruption,clinics,moroccan,indicator,trams,piers,parallels,fragment,teatro,potassium,satire,compressed,businessmen,influx,seine,perspectives,shelters,decreases,mounting,formula_5,confederacy,equestrian,expulsion,mayors,liberia,resisted,affinity,shrub,unexpectedly,stimulus,amtrak,deported,perpendicular,statesman,wharf,storylines,romanesque,weights,surfaced,interceptions,dhaka,crambidae,orchestras,rwanda,conclude,constitutes,subsidiaries,admissions,prospective,shear,bilingual,campaigning,presiding,domination,commemorative,trailing,confiscated,petrol,acquisitions,polymer,onlyinclude,chloride,elevations,resolutions,hurdles,pledged,likelihood,objected,erect,encoding,databases,aristotle,hindus,marshes,bowled,ministerial,grange,acronym,annexation,squads,ambient,pilgrims,botany,sofla,astronomer,planetary,descending,bestowed,ceramics,diplomacy,metabolism,colonization,potomac,africans,engraved,recycling,commitments,resonance,disciplinary,jamaican,narrated,spectral,tipperary,waterford,stationary,arbitration,transparency,threatens,crossroads,slalom,oversee,centenary,incidence,economies,livery,moisture,newsletter,autobiographical,bhutan,propelled,dependence,moderately,adobe,barrels,subdivisions,outlook,labelled,stratford,arising,diaspora,barony,automobiles,ornamental,slated,norms,primetime,generalized,analysts,vectors,libyan,yielded,certificates,rooted,vernacular,belarusian,marketplace,prediction,fairfax,malawi,viruses,wooded,demos,mauritius,prosperous,coincided,liberties,huddersfield,ascent,warnings,hinduism,glucose,pulitzer,unused,filters,illegitimate,acquitted,protestants,canopy,staple,psychedelic,winding,abbas,pathways,cheltenham,lagos,niche,invaders,proponents,barred,conversely,doncaster,recession,embraced,rematch,concession,emigration,upgrades,bowls,tablets,remixed,loops,kensington,shootout,monarchs,organizers,harmful,punjabi,broadband,exempt,neolithic,profiles,portrays,parma,cyrillic,quasi,attested,regimental,revive,torpedoes,heidelberg,rhythms,spherical,denote,hymns,icons,theologian,qaeda,exceptionally,reinstated,comune,playhouse,lobbying,grossing,viceroy,delivers,visually,armistice,utrecht,syllable,vertices,analogous,annex,refurbished,entrants,knighted,disciple,rhetoric,detailing,inactivated,ballads,algae,intensified,favourable,sanitation,receivers,pornography,commemorated,cannons,entrusted,manifold,photographers,pueblo,textiles,steamer,myths,marquess,onward,liturgical,romney,uzbekistan,consistency,denoted,hertfordshire,convex,hearings,sulfur,universidad,podcast,selecting,emperors,arises,justices,1840s,mongolian,exploited,termination,digitally,infectious,sedan,symmetric,penal,illustrate,formulation,attribute,problematic,modular,inverse,berth,searches,rutgers,leicestershire,enthusiasts,lockheed,upwards,transverse,accolades,backward,archaeologists,crusaders,nuremberg,defects,ferries,vogue,containers,openings,transporting,separates,lumpur,purchases,attain,wichita,topology,woodlands,deleted,periodically,syntax,overturned,musicals,corp.,strasbourg,instability,nationale,prevailing,cache,marathi,versailles,unmarried,grains,straits,antagonist,segregation,assistants,d'etat,contention,dictatorship,unpopular,motorcycles,criterion,analytical,salzburg,militants,hanged,worcestershire,emphasize,paralympic,erupted,convinces,offences,oxidation,nouns,populace,atari,spanned,hazardous,educators,playable,births,baha'i,preseason,generates,invites,meteorological,handbook,foothills,enclosure,diffusion,mirza,convergence,geelong,coefficient,connector,formula_6,cylindrical,disasters,pleaded,knoxville,contamination,compose,libertarian,arrondissement,franciscan,intercontinental,susceptible,initiation,malaria,unbeaten,consonants,waived,saloon,popularized,estadio,pseudo,interdisciplinary,transports,transformers,carriages,bombings,revolves,ceded,collaborator,celestial,exemption,colchester,maltese,oceanic,ligue,crete,shareholder,routed,depictions,ridden,advisors,calculate,lending,guangzhou,simplicity,newscast,scheduling,snout,eliot,undertaking,armenians,nottinghamshire,whitish,consulted,deficiency,salle,cinemas,superseded,rigorous,kerman,convened,landowners,modernization,evenings,pitches,conditional,scandinavia,differed,formulated,cyclists,swami,guyana,dunes,electrified,appalachian,abdomen,scenarios,prototypes,sindh,consonant,adaptive,boroughs,wolverhampton,modelling,cylinders,amounted,minimize,ambassadors,lenin,settler,coincide,approximation,grouping,murals,bullying,registers,rumours,engagements,energetic,vertex,annals,bordering,geologic,yellowish,runoff,converts,allegheny,facilitated,saturdays,colliery,monitored,rainforest,interfaces,geographically,impaired,prevalence,joachim,paperback,slowed,shankar,distinguishing,seminal,categorized,authorised,auspices,bandwidth,asserts,rebranded,balkans,supplemented,seldom,weaving,capsule,apostles,populous,monmouth,payload,symphonic,densely,shoreline,managerial,masonry,antioch,averages,textbooks,royalist,coliseum,tandem,brewers,diocesan,posthumous,walled,incorrectly,distributions,ensued,reasonably,graffiti,propagation,automation,harmonic,augmented,middleweight,limbs,elongated,landfall,comparatively,literal,grossed,koppen,wavelength,1830s,cerebral,boasts,congestion,physiological,practitioner,coasts,cartoonist,undisclosed,frontal,launches,burgundy,qualifiers,imposing,stade,flanked,assyrian,raided,multiplayer,montane,chesapeake,pathology,drains,vineyards,intercollegiate,semiconductor,grassland,convey,citations,predominant,rejects,benefited,yahoo,graphs,busiest,encompassing,hamlets,explorers,suppress,minors,graphical,calculus,sediment,intends,diverted,mainline,unopposed,cottages,initiate,alumnus,towed,autism,forums,darlington,modernist,oxfordshire,lectured,capitalist,suppliers,panchayat,actresses,foundry,southbound,commodity,wesleyan,divides,palestinians,luton,caretaker,nobleman,mutiny,organizer,preferences,nomenclature,splits,unwilling,offenders,timor,relying,halftime,semitic,arithmetic,milestone,jesuits,arctiidae,retrieved,consuming,contender,edged,plagued,inclusive,transforming,khmer,federally,insurgents,distributing,amherst,rendition,prosecutors,viaduct,disqualified,kabul,liturgy,prevailed,reelected,instructors,swimmers,aperture,churchyard,interventions,totals,darts,metropolis,fuels,fluent,northbound,correctional,inflicted,barrister,realms,culturally,aristocratic,collaborating,emphasizes,choreographer,inputs,ensembles,humboldt,practised,endowed,strains,infringement,archaeologist,congregational,magna,relativity,efficiently,proliferation,mixtape,abruptly,regeneration,commissioning,yukon,archaic,reluctantly,retailer,northamptonshire,universally,crossings,boilers,nickelodeon,revue,abbreviation,retaliation,scripture,routinely,medicinal,benedictine,kenyan,retention,deteriorated,glaciers,apprenticeship,coupling,researched,topography,entrances,anaheim,pivotal,compensate,arched,modify,reinforce,dusseldorf,journeys,motorsport,conceded,sumatra,spaniards,quantitative,loire,cinematography,discarded,botswana,morale,engined,zionist,philanthropy,sainte,fatalities,cypriot,motorsports,indicators,pricing,institut,bethlehem,implicated,gravitational,differentiation,rotor,thriving,precedent,ambiguous,concessions,forecast,conserved,fremantle,asphalt,landslide,middlesbrough,formula_7,humidity,overseeing,chronological,diaries,multinational,crimean,turnover,improvised,youths,declares,tasmanian,canadiens,fumble,refinery,weekdays,unconstitutional,upward,guardians,brownish,imminent,hamas,endorsement,naturalist,martyrs,caledonia,chords,yeshiva,reptiles,severity,mitsubishi,fairs,installment,substitution,repertory,keyboardist,interpreter,silesia,noticeable,rhineland,transmit,inconsistent,booklet,academies,epithet,pertaining,progressively,aquatics,scrutiny,prefect,toxicity,rugged,consume,o'donnell,evolve,uniquely,cabaret,mediated,landowner,transgender,palazzo,compilations,albuquerque,induce,sinai,remastered,efficacy,underside,analogue,specify,possessing,advocating,compatibility,liberated,greenville,mecklenburg,header,memorials,sewage,rhodesia,1800s,salaries,atoll,coordinating,partisans,repealed,amidst,subjective,optimization,nectar,evolving,exploits,madhya,styling,accumulation,raion,postage,responds,buccaneers,frontman,brunei,choreography,coated,kinetic,sampled,inflammatory,complementary,eclectic,norte,vijay,a.k.a,mainz,casualty,connectivity,laureate,franchises,yiddish,reputed,unpublished,economical,periodicals,vertically,bicycles,brethren,capacities,unitary,archeological,tehsil,domesday,wehrmacht,justification,angered,mysore,fielded,abuses,nutrients,ambitions,taluk,battleships,symbolism,superiority,neglect,attendees,commentaries,collaborators,predictions,yorker,breeders,investing,libretto,informally,coefficients,memorandum,pounder,collingwood,tightly,envisioned,arbor,mistakenly,captures,nesting,conflicting,enhancing,streetcar,manufactures,buckinghamshire,rewards,commemorating,stony,expenditure,tornadoes,semantic,relocate,weimar,iberian,sighted,intending,ensign,beverages,expectation,differentiate,centro,utilizes,saxophonist,catchment,transylvania,ecosystems,shortest,sediments,socialists,ineffective,kapoor,formidable,heroine,guantanamo,prepares,scattering,pamphlet,verified,elector,barons,totaling,shrubs,pyrenees,amalgamation,mutually,longitudinal,comte,negatively,masonic,envoy,sexes,akbar,mythical,tonga,bishopric,assessments,malaya,warns,interiors,reefs,reflections,neutrality,musically,nomadic,waterways,provence,collaborate,scaled,adulthood,emerges,euros,optics,incentives,overland,periodical,liege,awarding,realization,slang,affirmed,schooner,hokkaido,czechoslovak,protectorate,undrafted,disagreed,commencement,electors,spruce,swindon,fueled,equatorial,inventions,suites,slovene,backdrop,adjunct,energies,remnant,inhabit,alliances,simulcast,reactors,mosques,travellers,outfielder,plumage,migratory,benin,experimented,fibre,projecting,drafting,laude,evidenced,northernmost,indicted,directional,replication,croydon,comedies,jailed,organizes,devotees,reservoirs,turrets,originate,economists,songwriters,junta,trenches,mounds,proportions,comedic,apostle,azerbaijani,farmhouse,resembled,disrupted,playback,mixes,diagonal,relevance,govern,programmer,gdansk,maize,soundtracks,tendencies,mastered,impacted,believers,kilometre,intervene,chairperson,aerodrome,sails,subsidies,ensures,aesthetics,congresses,ratios,sardinia,southernmost,functioned,controllers,downward,randomly,distortion,regents,palatine,disruption,spirituality,vidhan,tracts,compiler,ventilation,anchorage,symposium,assert,pistols,excelled,avenues,convoys,moniker,constructions,proponent,phased,spines,organising,schleswig,policing,campeonato,mined,hourly,croix,lucrative,authenticity,haitian,stimulation,burkina,espionage,midfield,manually,staffed,awakening,metabolic,biographies,entrepreneurship,conspicuous,guangdong,preface,subgroup,mythological,adjutant,feminism,vilnius,oversees,honourable,tripoli,stylized,kinase,societe,notoriety,altitudes,configurations,outward,transmissions,announces,auditor,ethanol,clube,nanjing,mecca,haifa,blogs,postmaster,paramilitary,depart,positioning,potent,recognizable,spire,brackets,remembrance,overlapping,turkic,articulated,scientology,operatic,deploy,readiness,biotechnology,restrict,cinematographer,inverted,synonymous,administratively,westphalia,commodities,replaces,downloads,centralized,munitions,preached,sichuan,fashionable,implementations,matrices,hiv/aids,loyalist,luzon,celebrates,hazards,heiress,mercenaries,synonym,creole,ljubljana,technician,auditioned,technicians,viewpoint,wetland,mongols,princely,sharif,coating,dynasties,southward,doubling,formula_8,mayoral,harvesting,conjecture,goaltender,oceania,spokane,welterweight,bracket,gatherings,weighted,newscasts,mussolini,affiliations,disadvantage,vibrant,spheres,sultanate,distributors,disliked,establishes,marches,drastically,yielding,jewellery,yokohama,vascular,airlift,canons,subcommittee,repression,strengths,graded,outspoken,fused,pembroke,filmography,redundant,fatigue,repeal,threads,reissue,pennant,edible,vapor,corrections,stimuli,commemoration,dictator,anand,secession,amassed,orchards,pontifical,experimentation,greeted,bangor,forwards,decomposition,quran,trolley,chesterfield,traverse,sermons,burials,skier,climbs,consultants,petitioned,reproduce,parted,illuminated,kurdistan,reigned,occupants,packaged,geometridae,woven,regulating,protagonists,crafted,affluent,clergyman,consoles,migrant,supremacy,attackers,caliph,defect,convection,rallies,huron,resin,segunda,quota,warship,overseen,criticizing,shrines,glamorgan,lowering,beaux,hampered,invasions,conductors,collects,bluegrass,surrounds,substrates,perpetual,chronology,pulmonary,executions,crimea,compiling,noctuidae,battled,tumors,minsk,novgorod,serviced,yeast,computation,swamps,theodor,baronetcy,salford,uruguayan,shortages,odisha,siberian,novelty,cinematic,invitational,decks,dowager,oppression,bandits,appellate,state-of-the-art,clade,palaces,signalling,galaxies,industrialist,tensor,learnt,incurred,magistrates,binds,orbits,ciudad,willingness,peninsular,basins,biomedical,shafts,marlborough,bournemouth,withstand,fitzroy,dunedin,variance,steamship,integrating,muscular,fines,akron,bulbophyllum,malmo,disclosed,cornerstone,runways,medicines,twenty20,gettysburg,progresses,frigates,bodied,transformations,transforms,helens,modelled,versatile,regulator,pursuits,legitimacy,amplifier,scriptures,voyages,examines,presenters,octagonal,poultry,formula_9,anatolia,computed,migrate,directorial,hybrids,localized,preferring,guggenheim,persisted,grassroots,inflammation,fishery,otago,vigorous,professions,instructional,inexpensive,insurgency,legislators,sequels,surnames,agrarian,stainless,nairobi,minas,forerunner,aristocracy,transitions,sicilian,showcased,doses,hiroshima,summarized,gearbox,emancipation,limitation,nuclei,seismic,abandonment,dominating,appropriations,occupations,electrification,hilly,contracting,exaggerated,entertainer,kazan,oricon,cartridges,characterization,parcel,maharaja,exceeds,aspiring,obituary,flattened,contrasted,narration,replies,oblique,outpost,fronts,arranger,talmud,keynes,doctrines,endured,confesses,fortification,supervisors,kilometer,academie,jammu,bathurst,piracy,prostitutes,navarre,cumulative,cruises,lifeboat,twinned,radicals,interacting,expenditures,wexford,libre,futsal,curated,clockwise,colloquially,procurement,immaculate,lyricist,enhancement,porcelain,alzheimer,highlighting,judah,disagreements,storytelling,sheltered,wroclaw,vaudeville,contrasts,neoclassical,compares,contrasting,deciduous,francaise,descriptive,cyclic,reactive,antiquities,meiji,repeats,creditors,forcibly,newmarket,picturesque,impending,uneven,bison,raceway,solvent,ecumenical,optic,professorship,harvested,waterway,banjo,pharaoh,geologist,scanning,dissent,recycled,unmanned,retreating,gospels,aqueduct,branched,tallinn,groundbreaking,syllables,hangar,designations,procedural,craters,cabins,encryption,anthropologist,montevideo,outgoing,inverness,chattanooga,fascism,calais,chapels,groundwater,downfall,misleading,robotic,tortricidae,pixel,handel,prohibit,crewe,renaming,reprised,kickoff,leftist,spaced,integers,causeway,pines,authorship,organise,ptolemy,accessibility,virtues,lesions,iroquois,qur'an,atheist,synthesized,biennial,confederates,dietary,skaters,stresses,tariff,koreans,intercity,republics,quintet,baroness,naive,amplitude,insistence,tbilisi,residues,grammatical,diversified,egyptians,accompaniment,vibration,repository,mandal,topological,distinctions,coherent,invariant,batters,nuevo,internationals,implements,follower,bahia,widened,independents,cantonese,totaled,guadalajara,wolverines,befriended,muzzle,surveying,hungarians,medici,deportation,rayon,approx,recounts,attends,clerical,hellenic,furnished,alleging,soluble,systemic,gallantry,bolshevik,intervened,hostel,gunpowder,specialising,stimulate,leiden,removes,thematic,floral,bafta,printers,conglomerate,eroded,analytic,successively,lehigh,thessaloniki,kilda,clauses,ascended,nehru,scripted,tokugawa,competence,diplomats,exclude,consecration,freedoms,assaults,revisions,blacksmith,textual,sparse,concacaf,slain,uploaded,enraged,whaling,guise,stadiums,debuting,dormitory,cardiovascular,yunnan,dioceses,consultancy,notions,lordship,archdeacon,collided,medial,airfields,garment,wrestled,adriatic,reversal,refueling,verification,jakob,horseshoe,intricate,veracruz,sarawak,syndication,synthesizer,anthologies,stature,feasibility,guillaume,narratives,publicized,antrim,intermittent,constituents,grimsby,filmmaking,doping,unlawful,nominally,transmitting,documenting,seater,internationale,ejected,steamboat,alsace,boise,ineligible,geared,vassal,mustered,ville,inline,pairing,eurasian,kyrgyzstan,barnsley,reprise,stereotypes,rushes,conform,firefighters,deportivo,revolutionaries,rabbis,concurrency,charters,sustaining,aspirations,algiers,chichester,falkland,morphological,systematically,volcanoes,designate,artworks,reclaimed,jurist,anglia,resurrected,chaotic,feasible,circulating,simulated,environmentally,confinement,adventist,harrisburg,laborers,ostensibly,universiade,pensions,influenza,bratislava,octave,refurbishment,gothenburg,putin,barangay,annapolis,breaststroke,illustrates,distorted,choreographed,promo,emphasizing,stakeholders,descends,exhibiting,intrinsic,invertebrates,evenly,roundabout,salts,formula_10,strata,inhibition,branching,stylistic,rumored,realises,mitochondrial,commuted,adherents,logos,bloomberg,telenovela,guineas,charcoal,engages,winery,reflective,siena,cambridgeshire,ventral,flashback,installing,engraving,grasses,traveller,rotated,proprietor,nationalities,precedence,sourced,trainers,cambodian,reductions,depleted,saharan,classifications,biochemistry,plaintiffs,arboretum,humanist,fictitious,aleppo,climates,bazaar,his/her,homogeneous,multiplication,moines,indexed,linguist,skeletal,foliage,societal,differentiated,informing,mammal,infancy,archival,cafes,malls,graeme,musee,schizophrenia,fargo,pronouns,derivation,descend,ascending,terminating,deviation,recaptured,confessions,weakening,tajikistan,bahadur,pasture,b/hip,donegal,supervising,sikhs,thinkers,euclidean,reinforcement,friars,portage,fuscous,lucknow,synchronized,assertion,choirs,privatization,corrosion,multitude,skyscraper,royalties,ligament,usable,spores,directs,clashed,stockport,fronted,dependency,contiguous,biologist,backstroke,powerhouse,frescoes,phylogenetic,welding,kildare,gabon,conveyed,augsburg,severn,continuum,sahib,lille,injuring,passeriformesfamily,succeeds,translating,unitarian,startup,turbulent,outlying,philanthropic,stanislaw,idols,claremont,conical,haryana,armagh,blended,implicit,conditioned,modulation,rochdale,labourers,coinage,shortstop,potsdam,gears,obesity,bestseller,advisers,bouts,comedians,jozef,lausanne,taxonomic,correlated,columbian,marne,indications,psychologists,libel,edict,beaufort,disadvantages,renal,finalized,racehorse,unconventional,disturbances,falsely,zoology,adorned,redesign,executing,narrower,commended,appliances,stalls,resurgence,saskatoon,miscellaneous,permitting,epoch,formula_11,cumbria,forefront,vedic,eastenders,disposed,supermarkets,rower,inhibitor,magnesium,colourful,yusuf,harrow,formulas,centrally,balancing,ionic,nocturnal,consolidate,ornate,raiding,charismatic,accelerate,nominate,residual,dhabi,commemorates,attribution,uninhabited,mindanao,atrocities,genealogical,romani,applicant,enactment,abstraction,trough,pulpit,minuscule,misconduct,grenades,timely,supplements,messaging,curvature,ceasefire,telangana,susquehanna,braking,redistribution,shreveport,neighbourhoods,gregorian,widowed,khuzestan,empowerment,scholastic,evangelist,peptide,topical,theorist,historia,thence,sudanese,museo,jurisprudence,masurian,frankish,headlined,recounted,netball,petitions,tolerant,hectare,truncated,southend,methane,captives,reigns,massif,subunit,acidic,weightlifting,footballers,sabah,britannia,tunisian,segregated,sawmill,withdrawing,unpaid,weaponry,somme,perceptions,unicode,alcoholism,durban,wrought,waterfalls,jihad,auschwitz,upland,eastbound,adjective,anhalt,evaluating,regimes,guildford,reproduced,pamphlets,hierarchical,maneuvers,hanoi,fabricated,repetition,enriched,arterial,replacements,tides,globalization,adequately,westbound,satisfactory,fleets,phosphorus,lastly,neuroscience,anchors,xinjiang,membranes,improvisation,shipments,orthodoxy,submissions,bolivian,mahmud,ramps,leyte,pastures,outlines,flees,transmitters,fares,sequential,stimulated,novice,alternately,symmetrical,breakaway,layered,baronets,lizards,blackish,edouard,horsepower,penang,principals,mercantile,maldives,overwhelmingly,hawke,rallied,prostate,conscription,juveniles,maccabi,carvings,strikers,sudbury,spurred,improves,lombardy,macquarie,parisian,elastic,distillery,shetland,humane,brentford,wrexham,warehouses,routines,encompassed,introductory,isfahan,instituto,palais,revolutions,sporadic,impoverished,portico,fellowships,speculative,enroll,dormant,adhere,fundamentally,sculpted,meritorious,template,upgrading,reformer,rectory,uncredited,indicative,creeks,galveston,radically,hezbollah,firearm,educating,prohibits,trondheim,locus,refit,headwaters,screenings,lowlands,wasps,coarse,attaining,sedimentary,perished,pitchfork,interned,cerro,stagecoach,aeronautical,liter,transitioned,haydn,inaccurate,legislatures,bromwich,knesset,spectroscopy,butte,asiatic,degraded,concordia,catastrophic,lobes,wellness,pensacola,periphery,hapoel,theta,horizontally,freiburg,liberalism,pleas,durable,warmian,offenses,mesopotamia,shandong,unsuitable,hospitalized,appropriately,phonetic,encompass,conversions,observes,illnesses,breakout,assigns,crowns,inhibitors,nightly,manifestation,fountains,maximize,alphabetical,sloop,expands,newtown,widening,gaddafi,commencing,camouflage,footprint,tyrol,barangays,universite,highlanders,budgets,query,lobbied,westchester,equator,stipulated,pointe,distinguishes,allotted,embankment,advises,storing,loyalists,fourier,rehearsals,starvation,gland,rihanna,tubular,expressive,baccalaureate,intersections,revered,carbonate,eritrea,craftsmen,cosmopolitan,sequencing,corridors,shortlisted,bangladeshi,persians,mimic,parades,repetitive,recommends,flanks,promoters,incompatible,teaming,ammonia,greyhound,solos,improper,legislator,newsweek,recurrent,vitro,cavendish,eireann,crises,prophets,mandir,strategically,guerrillas,formula_12,ghent,contenders,equivalence,drone,sociological,hamid,castes,statehood,aland,clinched,relaunched,tariffs,simulations,williamsburg,rotate,mediation,smallpox,harmonica,lodges,lavish,restrictive,o'sullivan,detainees,polynomials,echoes,intersecting,learners,elects,charlemagne,defiance,epsom,liszt,facilitating,absorbing,revelations,padua,pieter,pious,penultimate,mammalian,montenegrin,supplementary,widows,aromatic,croats,roanoke,trieste,legions,subdistrict,babylonian,grasslands,volga,violently,sparsely,oldies,telecommunication,respondents,quarries,downloadable,commandos,taxpayer,catalytic,malabar,afforded,copying,declines,nawab,junctions,assessing,filtering,classed,disused,compliant,christoph,gottingen,civilizations,hermitage,caledonian,whereupon,ethnically,springsteen,mobilization,terraces,indus,excel,zoological,enrichment,simulate,guitarists,registrar,cappella,invoked,reused,manchu,configured,uppsala,genealogy,mergers,casts,curricular,rebelled,subcontinent,horticultural,parramatta,orchestrated,dockyard,claudius,decca,prohibiting,turkmenistan,brahmin,clandestine,obligatory,elaborated,parasitic,helix,constraint,spearheaded,rotherham,eviction,adapting,albans,rescues,sociologist,guiana,convicts,occurrences,kamen,antennas,asturias,wheeled,sanitary,deterioration,trier,theorists,baseline,announcements,valea,planners,factual,serialized,serials,bilbao,demoted,fission,jamestown,cholera,alleviate,alteration,indefinite,sulfate,paced,climatic,valuation,artisans,proficiency,aegean,regulators,fledgling,sealing,influencing,servicemen,frequented,cancers,tambon,narayan,bankers,clarified,embodied,engraver,reorganisation,dissatisfied,dictated,supplemental,temperance,ratification,puget,nutrient,pretoria,papyrus,uniting,ascribed,cores,coptic,schoolhouse,barrio,1910s,armory,defected,transatlantic,regulates,ported,artefacts,specifies,boasted,scorers,mollusks,emitted,navigable,quakers,projective,dialogues,reunification,exponential,vastly,banners,unsigned,dissipated,halves,coincidentally,leasing,purported,escorting,estimation,foxes,lifespan,inflorescence,assimilation,showdown,staunch,prologue,ligand,superliga,telescopes,northwards,keynote,heaviest,taunton,redeveloped,vocalists,podlaskie,soyuz,rodents,azores,moravian,outset,parentheses,apparel,domestically,authoritative,polymers,monterrey,inhibit,launcher,jordanian,folds,taxis,mandates,singled,liechtenstein,subsistence,marxism,ousted,governorship,servicing,offseason,modernism,prism,devout,translators,islamist,chromosomes,pitted,bedfordshire,fabrication,authoritarian,javanese,leaflets,transient,substantive,predatory,sigismund,assassinate,diagrams,arrays,rediscovered,reclamation,spawning,fjord,peacekeeping,strands,fabrics,highs,regulars,tirana,ultraviolet,athenian,filly,barnet,naacp,nueva,favourites,terminates,showcases,clones,inherently,interpreting,bjorn,finely,lauded,unspecified,chola,pleistocene,insulation,antilles,donetsk,funnel,nutritional,biennale,reactivated,southport,primate,cavaliers,austrians,interspersed,restarted,suriname,amplifiers,wladyslaw,blockbuster,sportsman,minogue,brightness,benches,bridgeport,initiating,israelis,orbiting,newcomers,externally,scaling,transcribed,impairment,luxurious,longevity,impetus,temperament,ceilings,tchaikovsky,spreads,pantheon,bureaucracy,1820s,heraldic,villas,formula_13,galician,meath,avoidance,corresponded,headlining,connacht,seekers,rappers,solids,monograph,scoreless,opole,isotopes,himalayas,parodies,garments,microscopic,republished,havilland,orkney,demonstrators,pathogen,saturated,hellenistic,facilitates,aerodynamic,relocating,indochina,laval,astronomers,bequeathed,administrations,extracts,nagoya,torquay,demography,medicare,ambiguity,renumbered,pursuant,concave,syriac,electrode,dispersal,henan,bialystok,walsall,crystalline,puebla,janata,illumination,tianjin,enslaved,coloration,championed,defamation,grille,johor,rejoin,caspian,fatally,planck,workings,appointing,institutionalized,wessex,modernized,exemplified,regatta,jacobite,parochial,programmers,blending,eruptions,insurrection,regression,indices,sited,dentistry,mobilized,furnishings,levant,primaries,ardent,nagasaki,conqueror,dorchester,opined,heartland,amman,mortally,wellesley,bowlers,outputs,coveted,orthography,immersion,disrepair,disadvantaged,curate,childless,condensed,codice_1,remodeled,resultant,bolsheviks,superfamily,saxons,2010s,contractual,rivalries,malacca,oaxaca,magnate,vertebrae,quezon,olympiad,yucatan,tyres,macro,specialization,commendation,caliphate,gunnery,exiles,excerpts,fraudulent,adjustable,aramaic,interceptor,drumming,standardization,reciprocal,adolescents,federalist,aeronautics,favorably,enforcing,reintroduced,zhejiang,refining,biplane,banknotes,accordion,intersect,illustrating,summits,classmate,militias,biomass,massacres,epidemiology,reworked,wrestlemania,nantes,auditory,taxon,elliptical,chemotherapy,asserting,avoids,proficient,airmen,yellowstone,multicultural,alloys,utilization,seniority,kuyavian,huntsville,orthogonal,bloomington,cultivars,casimir,internment,repulsed,impedance,revolving,fermentation,parana,shutout,partnering,empowered,islamabad,polled,classify,amphibians,greyish,obedience,4x100,projectile,khyber,halfback,relational,d'ivoire,synonyms,endeavour,padma,customized,mastery,defenceman,berber,purge,interestingly,covent,promulgated,restricting,condemnation,hillsborough,walkers,privateer,intra,captaincy,naturalized,huffington,detecting,hinted,migrating,bayou,counterattack,anatomical,foraging,unsafe,swiftly,outdated,paraguayan,attire,masjid,endeavors,jerseys,triassic,quechua,growers,axial,accumulate,wastewater,cognition,fungal,animator,pagoda,kochi,uniformly,antibody,yerevan,hypotheses,combatants,italianate,draining,fragmentation,snowfall,formative,inversion,kitchener,identifier,additive,lucha,selects,ashland,cambrian,racetrack,trapping,congenital,primates,wavelengths,expansions,yeomanry,harcourt,wealthiest,awaited,punta,intervening,aggressively,vichy,piloted,midtown,tailored,heyday,metadata,guadalcanal,inorganic,hadith,pulses,francais,tangent,scandals,erroneously,tractors,pigment,constabulary,jiangsu,landfill,merton,basalt,astor,forbade,debuts,collisions,exchequer,stadion,roofed,flavour,sculptors,conservancy,dissemination,electrically,undeveloped,existent,surpassing,pentecostal,manifested,amend,formula_14,superhuman,barges,tunis,analytics,argyll,liquids,mechanized,domes,mansions,himalayan,indexing,reuters,nonlinear,purification,exiting,timbers,triangles,decommissioning,departmental,causal,fonts,americana,sept.,seasonally,incomes,razavi,sheds,memorabilia,rotational,terre,sutra,protege,yarmouth,grandmaster,annum,looted,imperialism,variability,liquidation,baptised,isotope,showcasing,milling,rationale,hammersmith,austen,streamlined,acknowledging,contentious,qaleh,breadth,turing,referees,feral,toulon,unofficially,identifiable,standout,labeling,dissatisfaction,jurgen,angrily,featherweight,cantons,constrained,dominates,standalone,relinquished,theologians,markedly,italics,downed,nitrate,likened,gules,craftsman,singaporean,pixels,mandela,moray,parity,departement,antigen,academically,burgh,brahma,arranges,wounding,triathlon,nouveau,vanuatu,banded,acknowledges,unearthed,stemming,authentication,byzantines,converge,nepali,commonplace,deteriorating,recalling,palette,mathematicians,greenish,pictorial,ahmedabad,rouen,validation,u.s.a.,'best,malvern,archers,converter,undergoes,fluorescent,logistical,notification,transvaal,illicit,symphonies,stabilization,worsened,fukuoka,decrees,enthusiast,seychelles,blogger,louvre,dignitaries,burundi,wreckage,signage,pinyin,bursts,federer,polarization,urbana,lazio,schism,nietzsche,venerable,administers,seton,kilograms,invariably,kathmandu,farmed,disqualification,earldom,appropriated,fluctuations,kermanshah,deployments,deformation,wheelbase,maratha,psalm,bytes,methyl,engravings,skirmish,fayette,vaccines,ideally,astrology,breweries,botanic,opposes,harmonies,irregularities,contended,gaulle,prowess,constants,aground,filipinos,fresco,ochreous,jaipur,willamette,quercus,eastwards,mortars,champaign,braille,reforming,horned,hunan,spacious,agitation,draught,specialties,flourishing,greensboro,necessitated,swedes,elemental,whorls,hugely,structurally,plurality,synthesizers,embassies,assad,contradictory,inference,discontent,recreated,inspectors,unicef,commuters,embryo,modifying,stints,numerals,communicated,boosted,trumpeter,brightly,adherence,remade,leases,restrained,eucalyptus,dwellers,planar,grooves,gainesville,daimler,anzac,szczecin,cornerback,prized,peking,mauritania,khalifa,motorized,lodging,instrumentalist,fortresses,cervical,formula_15,passerine,sectarian,researches,apprenticed,reliefs,disclose,gliding,repairing,queue,kyushu,literate,canoeing,sacrament,separatist,calabria,parkland,flowed,investigates,statistically,visionary,commits,dragoons,scrolls,premieres,revisited,subdued,censored,patterned,elective,outlawed,orphaned,leyland,richly,fujian,miniatures,heresy,plaques,countered,nonfiction,exponent,moravia,dispersion,marylebone,midwestern,enclave,ithaca,federated,electronically,handheld,microscopy,tolls,arrivals,climbers,continual,cossacks,moselle,deserts,ubiquitous,gables,forecasts,deforestation,vertebrates,flanking,drilled,superstructure,inspected,consultative,bypassed,ballast,subsidy,socioeconomic,relic,grenada,journalistic,administering,accommodated,collapses,appropriation,reclassified,foreword,porte,assimilated,observance,fragmented,arundel,thuringia,gonzaga,shenzhen,shipyards,sectional,ayrshire,sloping,dependencies,promenade,ecuadorian,mangrove,constructs,goalscorer,heroism,iteration,transistor,omnibus,hampstead,cochin,overshadowed,chieftain,scalar,finishers,ghanaian,abnormalities,monoplane,encyclopaedia,characterize,travancore,baronetage,bearers,biking,distributes,paving,christened,inspections,banco,humber,corinth,quadratic,albanians,lineages,majored,roadside,inaccessible,inclination,darmstadt,fianna,epilepsy,propellers,papacy,montagu,bhutto,sugarcane,optimized,pilasters,contend,batsmen,brabant,housemates,sligo,ascot,aquinas,supervisory,accorded,gerais,echoed,nunavut,conservatoire,carniola,quartermaster,gminas,impeachment,aquitaine,reformers,quarterfinal,karlsruhe,accelerator,coeducational,archduke,gelechiidae,seaplane,dissident,frenchman,palau,depots,hardcover,aachen,darreh,denominational,groningen,parcels,reluctance,drafts,elliptic,counters,decreed,airship,devotional,contradiction,formula_16,undergraduates,qualitative,guatemalan,slavs,southland,blackhawks,detrimental,abolish,chechen,manifestations,arthritis,perch,fated,hebei,peshawar,palin,immensely,havre,totalling,rampant,ferns,concourse,triples,elites,olympian,larva,herds,lipid,karabakh,distal,monotypic,vojvodina,batavia,multiplied,spacing,spellings,pedestrians,parchment,glossy,industrialization,dehydrogenase,patriotism,abolitionist,mentoring,elizabethan,figurative,dysfunction,abyss,constantin,middletown,stigma,mondays,gambia,gaius,israelites,renounced,nepalese,overcoming,buren,sulphur,divergence,predation,looting,iberia,futuristic,shelved,anthropological,innsbruck,escalated,clermont,entrepreneurial,benchmark,mechanically,detachments,populist,apocalyptic,exited,embryonic,stanza,readership,chiba,landlords,expansive,boniface,therapies,perpetrators,whitehall,kassel,masts,carriageway,clinch,pathogens,mazandaran,undesirable,teutonic,miocene,nagpur,juris,cantata,compile,diffuse,dynastic,reopening,comptroller,o'neal,flourish,electing,scientifically,departs,welded,modal,cosmology,fukushima,libertadores,chang'an,asean,generalization,localization,afrikaans,cricketers,accompanies,emigrants,esoteric,southwards,shutdown,prequel,fittings,innate,wrongly,equitable,dictionaries,senatorial,bipolar,flashbacks,semitism,walkway,lyrically,legality,sorbonne,vigorously,durga,samoan,karel,interchanges,patna,decider,registering,electrodes,anarchists,excursion,overthrown,gilan,recited,michelangelo,advertiser,kinship,taboo,cessation,formula_17,premiers,traversed,madurai,poorest,torneo,exerted,replicate,spelt,sporadically,horde,landscaping,razed,hindered,esperanto,manchuria,propellant,jalan,baha'is,sikkim,linguists,pandit,racially,ligands,dowry,francophone,escarpment,behest,magdeburg,mainstay,villiers,yangtze,grupo,conspirators,martyrdom,noticeably,lexical,kazakh,unrestricted,utilised,sired,inhabits,proofs,joseon,pliny,minted,buddhists,cultivate,interconnected,reuse,viability,australasian,derelict,resolving,overlooks,menon,stewardship,playwrights,thwarted,filmfare,disarmament,protections,bundles,sidelined,hypothesized,singer/songwriter,forage,netted,chancery,townshend,restructured,quotation,hyperbolic,succumbed,parliaments,shenandoah,apical,kibbutz,storeys,pastors,lettering,ukrainians,hardships,chihuahua,avail,aisles,taluka,antisemitism,assent,ventured,banksia,seamen,hospice,faroe,fearful,woreda,outfield,chlorine,transformer,tatar,panoramic,pendulum,haarlem,styria,cornice,importing,catalyzes,subunits,enamel,bakersfield,realignment,sorties,subordinates,deanery,townland,gunmen,tutelage,evaluations,allahabad,thrace,veneto,mennonite,sharia,subgenus,satisfies,puritan,unequal,gastrointestinal,ordinances,bacterium,horticulture,argonauts,adjectives,arable,duets,visualization,woolwich,revamped,euroleague,thorax,completes,originality,vasco,freighter,sardar,oratory,sects,extremes,signatories,exporting,arisen,exacerbated,departures,saipan,furlongs,d'italia,goring,dakar,conquests,docked,offshoot,okrug,referencing,disperse,netting,summed,rewritten,articulation,humanoid,spindle,competitiveness,preventive,facades,westinghouse,wycombe,synthase,emulate,fostering,abdel,hexagonal,myriad,caters,arjun,dismay,axiom,psychotherapy,colloquial,complemented,martinique,fractures,culmination,erstwhile,atrium,electronica,anarchism,nadal,montpellier,algebras,submitting,adopts,stemmed,overcame,internacional,asymmetric,gallipoli,gliders,flushing,extermination,hartlepool,tesla,interwar,patriarchal,hitherto,ganges,combatant,marred,philology,glastonbury,reversible,isthmus,undermined,southwark,gateshead,andalusia,remedies,hastily,optimum,smartphone,evade,patrolled,beheaded,dopamine,waivers,ugandan,gujarati,densities,predicting,intestinal,tentative,interstellar,kolonia,soloists,penetrated,rebellions,qeshlaq,prospered,colegio,deficits,konigsberg,deficient,accessing,relays,kurds,politburo,codified,incarnations,occupancy,cossack,metaphysical,deprivation,chopra,piccadilly,formula_18,makeshift,protestantism,alaskan,frontiers,faiths,tendon,dunkirk,durability,autobots,bonuses,coinciding,emails,gunboat,stucco,magma,neutrons,vizier,subscriptions,visuals,envisaged,carpets,smoky,schema,parliamentarian,immersed,domesticated,parishioners,flinders,diminutive,mahabharata,ballarat,falmouth,vacancies,gilded,twigs,mastering,clerics,dalmatia,islington,slogans,compressor,iconography,congolese,sanction,blends,bulgarians,moderator,outflow,textures,safeguard,trafalgar,tramways,skopje,colonialism,chimneys,jazeera,organisers,denoting,motivations,ganga,longstanding,deficiencies,gwynedd,palladium,holistic,fascia,preachers,embargo,sidings,busan,ignited,artificially,clearwater,cemented,northerly,salim,equivalents,crustaceans,oberliga,quadrangle,historiography,romanians,vaults,fiercely,incidental,peacetime,tonal,bhopal,oskar,radha,pesticides,timeslot,westerly,cathedrals,roadways,aldershot,connectors,brahmins,paler,aqueous,gustave,chromatic,linkage,lothian,specialises,aggregation,tributes,insurgent,enact,hampden,ghulam,federations,instigated,lyceum,fredrik,chairmanship,floated,consequent,antagonists,intimidation,patriarchate,warbler,heraldry,entrenched,expectancy,habitation,partitions,widest,launchers,nascent,ethos,wurzburg,lycee,chittagong,mahatma,merseyside,asteroids,yokosuka,cooperatives,quorum,redistricting,bureaucratic,yachts,deploying,rustic,phonology,chorale,cellist,stochastic,crucifixion,surmounted,confucian,portfolios,geothermal,crested,calibre,tropics,deferred,nasir,iqbal,persistence,essayist,chengdu,aborigines,fayetteville,bastion,interchangeable,burlesque,kilmarnock,specificity,tankers,colonels,fijian,quotations,enquiry,quito,palmerston,delle,multidisciplinary,polynesian,iodine,antennae,emphasised,manganese,baptists,galilee,jutland,latent,excursions,skepticism,tectonic,precursors,negligible,musique,misuse,vitoria,expressly,veneration,sulawesi,footed,mubarak,chongqing,chemically,midday,ravaged,facets,varma,yeovil,ethnographic,discounted,physicists,attache,disbanding,essen,shogunate,cooperated,waikato,realising,motherwell,pharmacology,sulfide,inward,expatriate,devoid,cultivar,monde,andean,groupings,goran,unaffected,moldovan,postdoctoral,coleophora,delegated,pronoun,conductivity,coleridge,disapproval,reappeared,microbial,campground,olsztyn,fostered,vaccination,rabbinical,champlain,milestones,viewership,caterpillar,effected,eupithecia,financier,inferred,uzbek,bundled,bandar,balochistan,mysticism,biosphere,holotype,symbolizes,lovecraft,photons,abkhazia,swaziland,subgroups,measurable,falkirk,valparaiso,ashok,discriminatory,rarity,tabernacle,flyweight,jalisco,westernmost,antiquarian,extracellular,margrave,colspan=9,midsummer,digestive,reversing,burgeoning,substitutes,medallist,khrushchev,guerre,folio,detonated,partido,plentiful,aggregator,medallion,infiltration,shaded,santander,fared,auctioned,permian,ramakrishna,andorra,mentors,diffraction,bukit,potentials,translucent,feminists,tiers,protracted,coburg,wreath,guelph,adventurer,he/she,vertebrate,pipelines,celsius,outbreaks,australasia,deccan,garibaldi,unionists,buildup,biochemical,reconstruct,boulders,stringent,barbed,wording,furnaces,pests,befriends,organises,popes,rizal,tentacles,cadre,tallahassee,punishments,occidental,formatted,mitigation,rulings,rubens,cascades,inducing,choctaw,volta,synagogues,movable,altarpiece,mitigate,practise,intermittently,encountering,memberships,earns,signify,retractable,amounting,pragmatic,wilfrid,dissenting,divergent,kanji,reconstituted,devonian,constitutions,levied,hendrik,starch,costal,honduran,ditches,polygon,eindhoven,superstars,salient,argus,punitive,purana,alluvial,flaps,inefficient,retracted,advantageous,quang,andersson,danville,binghamton,symbolize,conclave,shaanxi,silica,interpersonal,adept,frans,pavilions,lubbock,equip,sunken,limburg,activates,prosecutions,corinthian,venerated,shootings,retreats,parapet,orissa,riviere,animations,parodied,offline,metaphysics,bluffs,plume,piety,fruition,subsidized,steeplechase,shanxi,eurasia,angled,forecasting,suffragan,ashram,larval,labyrinth,chronicler,summaries,trailed,merges,thunderstorms,filtered,formula_19,advertisers,alpes,informatics,parti,constituting,undisputed,certifications,javascript,molten,sclerosis,rumoured,boulogne,hmong,lewes,breslau,notts,bantu,ducal,messengers,radars,nightclubs,bantamweight,carnatic,kaunas,fraternal,triggering,controversially,londonderry,visas,scarcity,offaly,uprisings,repelled,corinthians,pretext,kuomintang,kielce,empties,matriculated,pneumatic,expos,agile,treatises,midpoint,prehistory,oncology,subsets,hydra,hypertension,axioms,wabash,reiterated,swapped,achieves,premio,ageing,overture,curricula,challengers,subic,selangor,liners,frontline,shutter,validated,normalized,entertainers,molluscs,maharaj,allegation,youngstown,synth,thoroughfare,regionally,pillai,transcontinental,pedagogical,riemann,colonia,easternmost,tentatively,profiled,herefordshire,nativity,meuse,nucleotide,inhibits,huntingdon,throughput,recorders,conceding,domed,homeowners,centric,gabled,canoes,fringes,breeder,subtitled,fluoride,haplogroup,zionism,izmir,phylogeny,kharkiv,romanticism,adhesion,usaaf,delegations,lorestan,whalers,biathlon,vaulted,mathematically,pesos,skirmishes,heisman,kalamazoo,gesellschaft,launceston,interacts,quadruple,kowloon,psychoanalysis,toothed,ideologies,navigational,valence,induces,lesotho,frieze,rigging,undercarriage,explorations,spoof,eucharist,profitability,virtuoso,recitals,subterranean,sizeable,herodotus,subscriber,huxley,pivot,forewing,warring,boleslaw,bharatiya,suffixes,trois,percussionist,downturn,garrisons,philosophies,chants,mersin,mentored,dramatist,guilds,frameworks,thermodynamic,venomous,mehmed,assembling,rabbinic,hegemony,replicas,enlargement,claimant,retitled,utica,dumfries,metis,deter,assortment,tubing,afflicted,weavers,rupture,ornamentation,transept,salvaged,upkeep,callsign,rajput,stevenage,trimmed,intracellular,synchronization,consular,unfavorable,royalists,goldwyn,fasting,hussars,doppler,obscurity,currencies,amiens,acorn,tagore,townsville,gaussian,migrations,porta,anjou,graphite,seaport,monographs,gladiators,metrics,calligraphy,sculptural,swietokrzyskie,tolombeh,eredivisie,shoals,queries,carts,exempted,fiberglass,mirrored,bazar,progeny,formalized,mukherjee,professed,amazon.com,cathode,moreton,removable,mountaineers,nagano,transplantation,augustinian,steeply,epilogue,adapter,decisively,accelerating,mediaeval,substituting,tasman,devonshire,litres,enhancements,himmler,nephews,bypassing,imperfect,argentinian,reims,integrates,sochi,ascii,licences,niches,surgeries,fables,versatility,indra,footpath,afonso,crore,evaporation,encodes,shelling,conformity,simplify,updating,quotient,overt,firmware,umpires,architectures,eocene,conservatism,secretion,embroidery,f.c..,tuvalu,mosaics,shipwreck,prefectural,cohort,grievances,garnering,centerpiece,apoptosis,djibouti,bethesda,formula_20,shonen,richland,justinian,dormitories,meteorite,reliably,obtains,pedagogy,hardness,cupola,manifolds,amplification,steamers,familial,dumbarton,jerzy,genital,maidstone,salinity,grumman,signifies,presbytery,meteorology,procured,aegis,streamed,deletion,nuestra,mountaineering,accords,neuronal,khanate,grenoble,axles,dispatches,tokens,turku,auctions,propositions,planters,proclaiming,recommissioned,stravinsky,obverse,bombarded,waged,saviour,massacred,reformist,purportedly,resettlement,ravenna,embroiled,minden,revitalization,hikers,bridging,torpedoed,depletion,nizam,affectionately,latitudes,lubeck,spore,polymerase,aarhus,nazism,101st,buyout,galerie,diets,overflow,motivational,renown,brevet,deriving,melee,goddesses,demolish,amplified,tamworth,retake,brokerage,beneficiaries,henceforth,reorganised,silhouette,browsers,pollutants,peron,lichfield,encircled,defends,bulge,dubbing,flamenco,coimbatore,refinement,enshrined,grizzlies,capacitor,usefulness,evansville,interscholastic,rhodesian,bulletins,diamondbacks,rockers,platted,medalists,formosa,transporter,slabs,guadeloupe,disparate,concertos,violins,regaining,mandible,untitled,agnostic,issuance,hamiltonian,brampton,srpska,homology,downgraded,florentine,epitaph,kanye,rallying,analysed,grandstand,infinitely,antitrust,plundered,modernity,colspan=3|total,amphitheatre,doric,motorists,yemeni,carnivorous,probabilities,prelate,struts,scrapping,bydgoszcz,pancreatic,signings,predicts,compendium,ombudsman,apertura,appoints,rebbe,stereotypical,valladolid,clustered,touted,plywood,inertial,kettering,curving,d'honneur,housewives,grenadier,vandals,barbarossa,necked,waltham,reputedly,jharkhand,cistercian,pursues,viscosity,organiser,cloister,islet,stardom,moorish,himachal,strives,scripps,staggered,blasts,westwards,millimeters,angolan,hubei,agility,admirals,mordellistena,coincides,platte,vehicular,cordillera,riffs,schoolteacher,canaan,acoustics,tinged,reinforcing,concentrates,daleks,monza,selectively,musik,polynesia,exporter,reviving,macclesfield,bunkers,ballets,manors,caudal,microbiology,primes,unbroken,outcry,flocks,pakhtunkhwa,abelian,toowoomba,luminous,mould,appraisal,leuven,experimentally,interoperability,hideout,perak,specifying,knighthood,vasily,excerpt,computerized,niels,networked,byzantium,reaffirmed,geographer,obscured,fraternities,mixtures,allusion,accra,lengthened,inquest,panhandle,pigments,revolts,bluetooth,conjugate,overtaken,foray,coils,breech,streaks,impressionist,mendelssohn,intermediary,panned,suggestive,nevis,upazila,rotunda,mersey,linnaeus,anecdotes,gorbachev,viennese,exhaustive,moldavia,arcades,irrespective,orator,diminishing,predictive,cohesion,polarized,montage,avian,alienation,conus,jaffna,urbanization,seawater,extremity,editorials,scrolling,dreyfus,traverses,topographic,gunboats,extratropical,normans,correspondents,recognises,millennia,filtration,ammonium,voicing,complied,prefixes,diplomas,figurines,weakly,gated,oscillator,lucerne,embroidered,outpatient,airframe,fractional,disobedience,quarterbacks,formula_21,shinto,chiapas,epistle,leakage,pacifist,avignon,penrith,renders,mantua,screenplays,gustaf,tesco,alphabetically,rations,discharges,headland,tapestry,manipur,boolean,mediator,ebenezer,subchannel,fable,bestselling,ateneo,trademarks,recurrence,dwarfs,britannica,signifying,vikram,mediate,condensation,censuses,verbandsgemeinde,cartesian,sprang,surat,britons,chelmsford,courtenay,statistic,retina,abortions,liabilities,closures,mississauga,skyscrapers,saginaw,compounded,aristocrat,msnbc,stavanger,septa,interpretive,hinder,visibly,seeding,shutouts,irregularly,quebecois,footbridge,hydroxide,implicitly,lieutenants,simplex,persuades,midshipman,heterogeneous,officiated,crackdown,lends,tartu,altars,fractions,dissidents,tapered,modernisation,scripting,blazon,aquaculture,thermodynamics,sistan,hasidic,bellator,pavia,propagated,theorized,bedouin,transnational,mekong,chronicled,declarations,kickstarter,quotas,runtime,duquesne,broadened,clarendon,brownsville,saturation,tatars,electorates,malayan,replicated,observable,amphitheater,endorsements,referral,allentown,mormons,pantomime,eliminates,typeface,allegorical,varna,conduction,evoke,interviewer,subordinated,uyghur,landscaped,conventionally,ascend,edifice,postulated,hanja,whitewater,embarking,musicologist,tagalog,frontage,paratroopers,hydrocarbons,transliterated,nicolae,viewpoints,surrealist,asheville,falklands,hacienda,glide,opting,zimbabwean,discal,mortgages,nicaraguan,yadav,ghosh,abstracted,castilian,compositional,cartilage,intergovernmental,forfeited,importation,rapping,artes,republika,narayana,condominium,frisian,bradman,duality,marche,extremist,phosphorylation,genomes,allusions,valencian,habeas,ironworks,multiplex,harpsichord,emigrate,alternated,breda,waffen,smartphones,familiarity,regionalliga,herbaceous,piping,dilapidated,carboniferous,xviii,critiques,carcinoma,sagar,chippewa,postmodern,neapolitan,excludes,notoriously,distillation,tungsten,richness,installments,monoxide,chand,privatisation,molded,maths,projectiles,luoyang,epirus,lemma,concentric,incline,erroneous,sideline,gazetted,leopards,fibres,renovate,corrugated,unilateral,repatriation,orchestration,saeed,rockingham,loughborough,formula_22,bandleader,appellation,openness,nanotechnology,massively,tonnage,dunfermline,exposes,moored,ridership,motte,eurobasket,majoring,feats,silla,laterally,playlist,downwards,methodologies,eastbourne,daimyo,cellulose,leyton,norwalk,oblong,hibernian,opaque,insular,allegory,camogie,inactivation,favoring,masterpieces,rinpoche,serotonin,portrayals,waverley,airliner,longford,minimalist,outsourcing,excise,meyrick,qasim,organisational,synaptic,farmington,gorges,scunthorpe,zoned,tohoku,librarians,davao,decor,theatrically,brentwood,pomona,acquires,planter,capacitors,synchronous,skateboarding,coatings,turbocharged,ephraim,capitulation,scoreboard,hebrides,ensues,cereals,ailing,counterpoint,duplication,antisemitic,clique,aichi,oppressive,transcendental,incursions,rename,renumbering,powys,vestry,bitterly,neurology,supplanted,affine,susceptibility,orbiter,activating,overlaps,ecoregion,raman,canoer,darfur,microorganisms,precipitated,protruding,torun,anthropologists,rennes,kangaroos,parliamentarians,edits,littoral,archived,begum,rensselaer,microphones,ypres,empower,etruscan,wisden,montfort,calibration,isomorphic,rioting,kingship,verbally,smyrna,cohesive,canyons,fredericksburg,rahul,relativistic,micropolitan,maroons,industrialized,henchmen,uplift,earthworks,mahdi,disparity,cultured,transliteration,spiny,fragmentary,extinguished,atypical,inventors,biosynthesis,heralded,curacao,anomalies,aeroplane,surya,mangalore,maastricht,ashkenazi,fusiliers,hangzhou,emitting,monmouthshire,schwarzenegger,ramayana,peptides,thiruvananthapuram,alkali,coimbra,budding,reasoned,epithelial,harbors,rudimentary,classically,parque,ealing,crusades,rotations,riparian,pygmy,inertia,revolted,microprocessor,calendars,solvents,kriegsmarine,accademia,cheshmeh,yoruba,ardabil,mitra,genomic,notables,propagate,narrates,univision,outposts,polio,birkenhead,urinary,crocodiles,pectoral,barrymore,deadliest,rupees,chaim,protons,comical,astrophysics,unifying,formula_23,vassals,cortical,audubon,pedals,tenders,resorted,geophysical,lenders,recognising,tackling,lanarkshire,doctrinal,annan,combating,guangxi,estimating,selectors,tribunals,chambered,inhabiting,exemptions,curtailed,abbasid,kandahar,boron,bissau,150th,codenamed,wearer,whorl,adhered,subversive,famer,smelting,inserting,mogadishu,zoologist,mosul,stumps,almanac,olympiacos,stamens,participatory,cults,honeycomb,geologists,dividend,recursive,skiers,reprint,pandemic,liber,percentages,adversely,stoppage,chieftains,tubingen,southerly,overcrowding,unorganized,hangars,fulfil,hails,cantilever,woodbridge,pinus,wiesbaden,fertilization,fluorescence,enhances,plenary,troublesome,episodic,thrissur,kickboxing,allele,staffing,garda,televisions,philatelic,spacetime,bullpen,oxides,leninist,enrolling,inventive,truro,compatriot,ruskin,normative,assay,gotha,murad,illawarra,gendarmerie,strasse,mazraeh,rebounded,fanfare,liaoning,rembrandt,iranians,emirate,governs,latency,waterfowl,chairmen,katowice,aristocrats,eclipsed,sentient,sonatas,interplay,sacking,decepticons,dynamical,arbitrarily,resonant,petar,velocities,alludes,wastes,prefectures,belleville,sensibility,salvadoran,consolidating,medicaid,trainees,vivekananda,molar,porous,upload,youngster,infused,doctorates,wuhan,annihilation,enthusiastically,gamespot,kanpur,accumulating,monorail,operetta,tiling,sapporo,finns,calvinist,hydrocarbon,sparrows,orienteering,cornelis,minster,vuelta,plebiscite,embraces,panchayats,focussed,remediation,brahman,olfactory,reestablished,uniqueness,northumbria,rwandan,predominately,abode,ghats,balances,californian,uptake,bruges,inert,westerns,reprints,cairn,yarra,resurfaced,audible,rossini,regensburg,italiana,fleshy,irrigated,alerts,yahya,varanasi,marginalized,expatriates,cantonment,normandie,sahitya,directives,rounder,hulls,fictionalized,constables,inserts,hipped,potosi,navies,biologists,canteen,husbandry,augment,fortnight,assamese,kampala,o'keefe,paleolithic,bluish,promontory,consecutively,striving,niall,reuniting,dipole,friendlies,disapproved,thrived,netflix,liberian,dielectric,medway,strategist,sankt,pickups,hitters,encode,rerouted,claimants,anglesey,partitioned,cavan,flutes,reared,repainted,armaments,bowed,thoracic,balliol,piero,chaplains,dehestan,sender,junkers,sindhi,sickle,dividends,metallurgy,honorific,berths,namco,springboard,resettled,gansu,copyrighted,criticizes,utopian,bendigo,ovarian,binomial,spaceflight,oratorio,proprietors,supergroup,duplicated,foreground,strongholds,revolved,optimize,layouts,westland,hurler,anthropomorphic,excelsior,merchandising,reeds,vetoed,cryptography,hollyoaks,monash,flooring,ionian,resilience,johnstown,resolves,lawmakers,alegre,wildcards,intolerance,subculture,selector,slums,formulate,bayonet,istvan,restitution,interchangeably,awakens,rostock,serpentine,oscillation,reichstag,phenotype,recessed,piotr,annotated,preparedness,consultations,clausura,preferential,euthanasia,genoese,outcrops,freemasonry,geometrical,genesee,islets,prometheus,panamanian,thunderbolt,terraced,stara,shipwrecks,futebol,faroese,sharqi,aldermen,zeitung,unify,formula_24,humanism,syntactic,earthen,blyth,taxed,rescinded,suleiman,cymru,dwindled,vitality,superieure,resupply,adolphe,ardennes,rajiv,profiling,olympique,gestation,interfaith,milosevic,tagline,funerary,druze,silvery,plough,shrubland,relaunch,disband,nunatak,minimizing,excessively,waned,attaching,luminosity,bugle,encampment,electrostatic,minesweeper,dubrovnik,rufous,greenock,hochschule,assyrians,extracting,malnutrition,priya,attainment,anhui,connotations,predicate,seabirds,deduced,pseudonyms,gopal,plovdiv,refineries,imitated,kwazulu,terracotta,tenets,discourses,brandeis,whigs,dominions,pulmonate,landslides,tutors,determinant,richelieu,farmstead,tubercles,technicolor,hegel,redundancy,greenpeace,shortening,mules,distilled,xxiii,fundamentalist,acrylic,outbuildings,lighted,corals,signaled,transistors,cavite,austerity,76ers,exposures,dionysius,outlining,commutative,permissible,knowledgeable,howrah,assemblage,inhibited,crewmen,mbit/s,pyramidal,aberdeenshire,bering,rotates,atheism,howitzer,saone,lancet,fermented,contradicted,materiel,ofsted,numeric,uniformity,josephus,nazarene,kuwaiti,noblemen,pediment,emergent,campaigner,akademi,murcia,perugia,gallen,allsvenskan,finned,cavities,matriculation,rosters,twickenham,signatory,propel,readable,contends,artisan,flamboyant,reggio,italo,fumbles,widescreen,rectangle,centimetres,collaborates,envoys,rijeka,phonological,thinly,refractive,civilisation,reductase,cognate,dalhousie,monticello,lighthouses,jitsu,luneburg,socialite,fermi,collectible,optioned,marquee,jokingly,architecturally,kabir,concubine,nationalisation,watercolor,wicklow,acharya,pooja,leibniz,rajendra,nationalized,stalemate,bloggers,glutamate,uplands,shivaji,carolingian,bucuresti,dasht,reappears,muscat,functionally,formulations,hinged,hainan,catechism,autosomal,incremental,asahi,coeur,diversification,multilateral,fewest,recombination,finisher,harrogate,hangul,feasts,photovoltaic,paget,liquidity,alluded,incubation,applauded,choruses,malagasy,hispanics,bequest,underparts,cassava,kazimierz,gastric,eradication,mowtowr,tyrosine,archbishopric,e9e9e9,unproductive,uxbridge,hydrolysis,harbours,officio,deterministic,devonport,kanagawa,breaches,freetown,rhinoceros,chandigarh,janos,sanatorium,liberator,inequalities,agonist,hydrophobic,constructors,nagorno,snowboarding,welcomes,subscribed,iloilo,resuming,catalysts,stallions,jawaharlal,harriers,definitively,roughriders,hertford,inhibiting,elgar,randomized,incumbents,episcopate,rainforests,yangon,improperly,kemal,interpreters,diverged,uttarakhand,umayyad,phnom,panathinaikos,shabbat,diode,jiangxi,forbidding,nozzle,artistry,licensee,processions,staffs,decimated,expressionism,shingle,palsy,ontology,mahayana,maribor,sunil,hostels,edwardian,jetty,freehold,overthrew,eukaryotic,schuylkill,rawalpindi,sheath,recessive,ferenc,mandibles,berlusconi,confessor,convergent,ababa,slugging,rentals,sephardic,equivalently,collagen,markov,dynamically,hailing,depressions,sprawling,fairgrounds,indistinguishable,plutarch,pressurized,banff,coldest,braunschweig,mackintosh,sociedad,wittgenstein,tromso,airbase,lecturers,subtitle,attaches,purified,contemplated,dreamworks,telephony,prophetic,rockland,aylesbury,biscay,coherence,aleksandar,judoka,pageants,theses,homelessness,luthor,sitcoms,hinterland,fifths,derwent,privateers,enigmatic,nationalistic,instructs,superimposed,conformation,tricycle,dusan,attributable,unbeknownst,laptops,etching,archbishops,ayatollah,cranial,gharbi,interprets,lackawanna,abingdon,saltwater,tories,lender,minaj,ancillary,ranching,pembrokeshire,topographical,plagiarism,murong,marque,chameleon,assertions,infiltrated,guildhall,reverence,schenectady,formula_25,kollam,notary,mexicana,initiates,abdication,basra,theorems,ionization,dismantling,eared,censors,budgetary,numeral,verlag,excommunicated,distinguishable,quarried,cagliari,hindustan,symbolizing,watertown,descartes,relayed,enclosures,militarily,sault,devolved,dalian,djokovic,filaments,staunton,tumour,curia,villainous,decentralized,galapagos,moncton,quartets,onscreen,necropolis,brasileiro,multipurpose,alamos,comarca,jorgen,concise,mercia,saitama,billiards,entomologist,montserrat,lindbergh,commuting,lethbridge,phoenician,deviations,anaerobic,denouncing,redoubt,fachhochschule,principalities,negros,announcers,seconded,parrots,konami,revivals,approving,devotee,riyadh,overtook,morecambe,lichen,expressionist,waterline,silverstone,geffen,sternites,aspiration,behavioural,grenville,tripura,mediums,genders,pyotr,charlottesville,sacraments,programmable,ps100,shackleton,garonne,sumerian,surpass,authorizing,interlocking,lagoons,voiceless,advert,steeple,boycotted,alouettes,yosef,oxidative,sassanid,benefiting,sayyid,nauru,predetermined,idealism,maxillary,polymerization,semesters,munchen,conor,outfitted,clapham,progenitor,gheorghe,observational,recognitions,numerically,colonized,hazrat,indore,contaminants,fatality,eradicate,assyria,convocation,cameos,skillful,skoda,corfu,confucius,overtly,ramadan,wollongong,placements,d.c..,permutation,contemporaneous,voltages,elegans,universitat,samar,plunder,dwindling,neuter,antonin,sinhala,campania,solidified,stanzas,fibrous,marburg,modernize,sorcery,deutscher,florets,thakur,disruptive,infielder,disintegration,internazionale,vicariate,effigy,tripartite,corrective,klamath,environs,leavenworth,sandhurst,workmen,compagnie,hoseynabad,strabo,palisades,ordovician,sigurd,grandsons,defection,viacom,sinhalese,innovator,uncontrolled,slavonic,indexes,refrigeration,aircrew,superbike,resumption,neustadt,confrontations,arras,hindenburg,ripon,embedding,isomorphism,dwarves,matchup,unison,lofty,argos,louth,constitutionally,transitive,newington,facelift,degeneration,perceptual,aviators,enclosing,igneous,symbolically,academician,constitutionality,iso/iec,sacrificial,maturation,apprentices,enzymology,naturalistic,hajji,arthropods,abbess,vistula,scuttled,gradients,pentathlon,etudes,freedmen,melaleuca,thrice,conductive,sackville,franciscans,stricter,golds,kites,worshiped,monsignor,trios,orally,tiered,primacy,bodywork,castleford,epidemics,alveolar,chapelle,chemists,hillsboro,soulful,warlords,ngati,huguenot,diurnal,remarking,luger,motorways,gauss,jahan,cutoff,proximal,bandai,catchphrase,jonubi,ossetia,codename,codice_2,throated,itinerant,chechnya,riverfront,leela,evoked,entailed,zamboanga,rejoining,circuitry,haymarket,khartoum,feuds,braced,miyazaki,mirren,lubusz,caricature,buttresses,attrition,characterizes,widnes,evanston,materialism,contradictions,marist,midrash,gainsborough,ulithi,turkmen,vidya,escuela,patrician,inspirations,reagent,premierships,humanistic,euphrates,transitioning,belfry,zedong,adaption,kaliningrad,lobos,epics,waiver,coniferous,polydor,inductee,refitted,moraine,unsatisfactory,worsening,polygamy,rajya,nested,subgenre,broadside,stampeders,lingua,incheon,pretender,peloton,persuading,excitation,multan,predates,tonne,brackish,autoimmune,insulated,podcasts,iraqis,bodybuilding,condominiums,midlothian,delft,debtor,asymmetrical,lycaenidae,forcefully,pathogenic,tamaulipas,andaman,intravenous,advancements,senegalese,chronologically,realigned,inquirer,eusebius,dekalb,additives,shortlist,goldwater,hindustani,auditing,caterpillars,pesticide,nakhon,ingestion,lansdowne,traditionalist,northland,thunderbirds,josip,nominating,locale,ventricular,animators,verandah,epistles,surveyors,anthems,dredd,upheaval,passaic,anatolian,svalbard,associative,floodplain,taranaki,estuaries,irreducible,beginners,hammerstein,allocate,coursework,secreted,counteract,handwritten,foundational,passover,discoverer,decoding,wares,bourgeoisie,playgrounds,nazionale,abbreviations,seanad,golan,mishra,godavari,rebranding,attendances,backstory,interrupts,lettered,hasbro,ultralight,hormozgan,armee,moderne,subdue,disuse,improvisational,enrolment,persists,moderated,carinthia,hatchback,inhibitory,capitalized,anatoly,abstracts,albemarle,bergamo,insolvency,sentai,cellars,walloon,joked,kashmiri,dirac,materialized,renomination,homologous,gusts,eighteens,centrifugal,storied,baluchestan,formula_26,poincare,vettel,infuriated,gauges,streetcars,vedanta,stately,liquidated,goguryeo,swifts,accountancy,levee,acadian,hydropower,eustace,comintern,allotment,designating,torsion,molding,irritation,aerobic,halen,concerted,plantings,garrisoned,gramophone,cytoplasm,onslaught,requisitioned,relieving,genitive,centrist,jeong,espanola,dissolving,chatterjee,sparking,connaught,varese,arjuna,carpathian,empowering,meteorologist,decathlon,opioid,hohenzollern,fenced,ibiza,avionics,footscray,scrum,discounts,filament,directories,a.f.c,stiffness,quaternary,adventurers,transmits,harmonious,taizong,radiating,germantown,ejection,projectors,gaseous,nahuatl,vidyalaya,nightlife,redefined,refuted,destitute,arista,potters,disseminated,distanced,jamboree,kaohsiung,tilted,lakeshore,grained,inflicting,kreis,novelists,descendents,mezzanine,recast,fatah,deregulation,ac/dc,australis,kohgiluyeh,boreal,goths,authoring,intoxicated,nonpartisan,theodosius,pyongyang,shree,boyhood,sanfl,plenipotentiary,photosynthesis,presidium,sinaloa,honshu,texan,avenida,transmembrane,malays,acropolis,catalunya,vases,inconsistencies,methodists,quell,suisse,banat,simcoe,cercle,zealanders,discredited,equine,sages,parthian,fascists,interpolation,classifying,spinoff,yehuda,cruised,gypsum,foaled,wallachia,saraswati,imperialist,seabed,footnotes,nakajima,locales,schoolmaster,drosophila,bridgehead,immanuel,courtier,bookseller,niccolo,stylistically,portmanteau,superleague,konkani,millimetres,arboreal,thanjavur,emulation,sounders,decompression,commoners,infusion,methodological,osage,rococo,anchoring,bayreuth,formula_27,abstracting,symbolized,bayonne,electrolyte,rowed,corvettes,traversing,editorship,sampler,presidio,curzon,adirondack,swahili,rearing,bladed,lemur,pashtun,behaviours,bottling,zaire,recognisable,systematics,leeward,formulae,subdistricts,smithfield,vijaya,buoyancy,boosting,cantonal,rishi,airflow,kamakura,adana,emblems,aquifer,clustering,husayn,woolly,wineries,montessori,turntable,exponentially,caverns,espoused,pianists,vorpommern,vicenza,latterly,o'rourke,williamstown,generale,kosice,duisburg,poirot,marshy,mismanagement,mandalay,dagenham,universes,chiral,radiated,stewards,vegan,crankshaft,kyrgyz,amphibian,cymbals,infrequently,offenbach,environmentalist,repatriated,permutations,midshipmen,loudoun,refereed,bamberg,ornamented,nitric,selim,translational,dorsum,annunciation,gippsland,reflector,informational,regia,reactionary,ahmet,weathering,erlewine,legalized,berne,occupant,divas,manifests,analyzes,disproportionate,mitochondria,totalitarian,paulista,interscope,anarcho,correlate,brookfield,elongate,brunel,ordinal,precincts,volatility,equaliser,hittite,somaliland,ticketing,monochrome,ubuntu,chhattisgarh,titleholder,ranches,referendums,blooms,accommodates,merthyr,religiously,ryukyu,tumultuous,checkpoints,anode,mi'kmaq,cannonball,punctuation,remodelled,assassinations,criminology,alternates,yonge,pixar,namibian,piraeus,trondelag,hautes,lifeboats,shoal,atelier,vehemently,sadat,postcode,jainism,lycoming,undisturbed,lutherans,genomics,popmatters,tabriz,isthmian,notched,autistic,horsham,mites,conseil,bloomsbury,seung,cybertron,idris,overhauled,disbandment,idealized,goldfields,worshippers,lobbyist,ailments,paganism,herbarium,athenians,messerschmitt,faraday,entangled,'olya,untreated,criticising,howitzers,parvati,lobed,debussy,atonement,tadeusz,permeability,mueang,sepals,degli,optionally,fuelled,follies,asterisk,pristina,lewiston,congested,overpass,affixed,pleads,telecasts,stanislaus,cryptographic,friesland,hamstring,selkirk,antisubmarine,inundated,overlay,aggregates,fleur,trolleybus,sagan,ibsen,inductees,beltway,tiled,ladders,cadbury,laplace,ascetic,micronesia,conveying,bellingham,cleft,batches,usaid,conjugation,macedon,assisi,reappointed,brine,jinnah,prairies,screenwriting,oxidized,despatches,linearly,fertilizers,brazilians,absorbs,wagga,modernised,scorsese,ashraf,charlestown,esque,habitable,nizhny,lettres,tuscaloosa,esplanade,coalitions,carbohydrates,legate,vermilion,standardised,galleria,psychoanalytic,rearrangement,substation,competency,nationalised,reshuffle,reconstructions,mehdi,bougainville,receivership,contraception,enlistment,conducive,aberystwyth,solicitors,dismisses,fibrosis,montclair,homeowner,surrealism,s.h.i.e.l.d,peregrine,compilers,1790s,parentage,palmas,rzeszow,worldview,eased,svenska,housemate,bundestag,originator,enlisting,outwards,reciprocity,formula_28,carbohydrate,democratically,firefighting,romagna,acknowledgement,khomeini,carbide,quests,vedas,characteristically,guwahati,brixton,unintended,brothels,parietal,namur,sherbrooke,moldavian,baruch,milieu,undulating,laurier,entre,dijon,ethylene,abilene,heracles,paralleling,ceres,dundalk,falun,auspicious,chisinau,polarity,foreclosure,templates,ojibwe,punic,eriksson,biden,bachchan,glaciation,spitfires,norsk,nonviolent,heidegger,algonquin,capacitance,cassettes,balconies,alleles,airdate,conveys,replays,classifies,infrequent,amine,cuttings,rarer,woking,olomouc,amritsar,rockabilly,illyrian,maoist,poignant,tempore,stalinist,segmented,bandmate,mollusc,muhammed,totalled,byrds,tendered,endogenous,kottayam,aisne,oxidase,overhears,illustrators,verve,commercialization,purplish,directv,moulded,lyttelton,baptismal,captors,saracens,georgios,shorten,polity,grids,fitzwilliam,sculls,impurities,confederations,akhtar,intangible,oscillations,parabolic,harlequin,maulana,ovate,tanzanian,singularity,confiscation,qazvin,speyer,phonemes,overgrown,vicarage,gurion,undocumented,niigata,thrones,preamble,stave,interment,liiga,ataturk,aphrodite,groupe,indentured,habsburgs,caption,utilitarian,ozark,slovenes,reproductions,plasticity,serbo,dulwich,castel,barbuda,salons,feuding,lenape,wikileaks,swamy,breuning,shedding,afield,superficially,operationally,lamented,okanagan,hamadan,accolade,furthering,adolphus,fyodor,abridged,cartoonists,pinkish,suharto,cytochrome,methylation,debit,colspan=9|,refine,taoist,signalled,herding,leaved,bayan,fatherland,rampart,sequenced,negation,storyteller,occupiers,barnabas,pelicans,nadir,conscripted,railcars,prerequisite,furthered,columba,carolinas,markup,gwalior,franche,chaco,eglinton,ramparts,rangoon,metabolites,pollination,croat,televisa,holyoke,testimonial,setlist,safavid,sendai,georgians,shakespearean,galleys,regenerative,krzysztof,overtones,estado,barbary,cherbourg,obispo,sayings,composites,sainsbury,deliberation,cosmological,mahalleh,embellished,ascap,biala,pancras,calumet,grands,canvases,antigens,marianas,defenseman,approximated,seedlings,soren,stele,nuncio,immunology,testimonies,glossary,recollections,suitability,tampere,venous,cohomology,methanol,echoing,ivanovich,warmly,sterilization,imran,multiplying,whitechapel,undersea,xuanzong,tacitus,bayesian,roundhouse,correlations,rioters,molds,fiorentina,bandmates,mezzo,thani,guerilla,200th,premiums,tamils,deepwater,chimpanzees,tribesmen,selwyn,globo,turnovers,punctuated,erode,nouvelle,banbury,exponents,abolishing,helical,maimonides,endothelial,goteborg,infield,encroachment,cottonwood,mazowiecki,parable,saarbrucken,reliever,epistemology,artistes,enrich,rationing,formula_29,palmyra,subfamilies,kauai,zoran,fieldwork,arousal,creditor,friuli,celts,comoros,equated,escalation,negev,tallied,inductive,anion,netanyahu,mesoamerican,lepidoptera,aspirated,remit,westmorland,italic,crosse,vaclav,fuego,owain,balmain,venetians,ethnicities,deflected,ticino,apulia,austere,flycatcher,reprising,repressive,hauptbahnhof,subtype,ophthalmology,summarizes,eniwetok,colonisation,subspace,nymphalidae,earmarked,tempe,burnet,crests,abbots,norwegians,enlarge,ashoka,frankfort,livorno,malware,renters,singly,iliad,moresby,rookies,gustavus,affirming,alleges,legume,chekhov,studded,abdicated,suzhou,isidore,townsite,repayment,quintus,yankovic,amorphous,constructor,narrowing,industrialists,tanganyika,capitalization,connective,mughals,rarities,aerodynamics,worthing,antalya,diagnostics,shaftesbury,thracian,obstetrics,benghazi,multiplier,orbitals,livonia,roscommon,intensify,ravel,oaths,overseer,locomotion,necessities,chickasaw,strathclyde,treviso,erfurt,aortic,contemplation,accrington,markazi,predeceased,hippocampus,whitecaps,assemblyman,incursion,ethnography,extraliga,reproducing,directorship,benzene,byway,stupa,taxable,scottsdale,onondaga,favourably,countermeasures,lithuanians,thatched,deflection,tarsus,consuls,annuity,paralleled,contextual,anglian,klang,hoisted,multilingual,enacting,samaj,taoiseach,carthaginian,apologised,hydrology,entrant,seamless,inflorescences,mugabe,westerners,seminaries,wintering,penzance,mitre,sergeants,unoccupied,delimitation,discriminate,upriver,abortive,nihon,bessarabia,calcareous,buffaloes,patil,daegu,streamline,berks,chaparral,laity,conceptions,typified,kiribati,threaded,mattel,eccentricity,signified,patagonia,slavonia,certifying,adnan,astley,sedition,minimally,enumerated,nikos,goalless,walid,narendra,causa,missoula,coolant,dalek,outcrop,hybridization,schoolchildren,peasantry,afghans,confucianism,shahr,gallic,tajik,kierkegaard,sauvignon,commissar,patriarchs,tuskegee,prussians,laois,ricans,talmudic,officiating,aesthetically,baloch,antiochus,separatists,suzerainty,arafat,shading,u.s.c,chancellors,inc..,toolkit,nepenthes,erebidae,solicited,pratap,kabbalah,alchemist,caltech,darjeeling,biopic,spillway,kaiserslautern,nijmegen,bolstered,neath,pahlavi,eugenics,bureaus,retook,northfield,instantaneous,deerfield,humankind,selectivity,putative,boarders,cornhuskers,marathas,raikkonen,aliabad,mangroves,garages,gulch,karzai,poitiers,chernobyl,thane,alexios,belgrano,scion,solubility,urbanized,executable,guizhou,nucleic,tripled,equalled,harare,houseguests,potency,ghazi,repeater,overarching,regrouped,broward,ragtime,d'art,nandi,regalia,campsites,mamluk,plating,wirral,presumption,zenit,archivist,emmerdale,decepticon,carabidae,kagoshima,franconia,guarani,formalism,diagonally,submarginal,denys,walkways,punts,metrolink,hydrographic,droplets,upperside,martyred,hummingbird,antebellum,curiously,mufti,friary,chabad,czechs,shaykh,reactivity,berklee,turbonilla,tongan,sultans,woodville,unlicensed,enmity,dominicans,operculum,quarrying,watercolour,catalyzed,gatwick,'what,mesozoic,auditors,shizuoka,footballing,haldane,telemundo,appended,deducted,disseminate,o'shea,pskov,abrasive,entente,gauteng,calicut,lemurs,elasticity,suffused,scopula,staining,upholding,excesses,shostakovich,loanwords,naidu,championnat,chromatography,boasting,goaltenders,engulfed,salah,kilogram,morristown,shingles,shi'a,labourer,renditions,frantisek,jekyll,zonal,nanda,sheriffs,eigenvalues,divisione,endorsing,ushered,auvergne,cadres,repentance,freemasons,utilising,laureates,diocletian,semiconductors,o'grady,vladivostok,sarkozy,trackage,masculinity,hydroxyl,mervyn,muskets,speculations,gridiron,opportunistic,mascots,aleutian,fillies,sewerage,excommunication,borrowers,capillary,trending,sydenham,synthpop,rajah,cagayan,deportes,kedah,faure,extremism,michoacan,levski,culminates,occitan,bioinformatics,unknowingly,inciting,emulated,footpaths,piacenza,dreadnought,viceroyalty,oceanographic,scouted,combinatorial,ornithologist,cannibalism,mujahideen,independiente,cilicia,hindwing,minimized,odeon,gyorgy,rubles,purchaser,collieries,kickers,interurban,coiled,lynchburg,respondent,plzen,detractors,etchings,centering,intensification,tomography,ranjit,warblers,retelling,reinstatement,cauchy,modulus,redirected,evaluates,beginner,kalateh,perforated,manoeuvre,scrimmage,internships,megawatts,mottled,haakon,tunbridge,kalyan,summarised,sukarno,quetta,canonized,henryk,agglomeration,coahuila,diluted,chiropractic,yogyakarta,talladega,sheik,cation,halting,reprisals,sulfuric,musharraf,sympathizers,publicised,arles,lectionary,fracturing,startups,sangha,latrobe,rideau,ligaments,blockading,cremona,lichens,fabaceae,modulated,evocative,embodies,battersea,indistinct,altai,subsystem,acidity,somatic,formula_30,tariq,rationality,sortie,ashlar,pokal,cytoplasmic,valour,bangla,displacing,hijacking,spectrometry,westmeath,weill,charing,goias,revolvers,individualized,tenured,nawaz,piquet,chanted,discard,bernd,phalanx,reworking,unilaterally,subclass,yitzhak,piloting,circumvent,disregarded,semicircular,viscous,tibetans,endeavours,retaliated,cretan,vienne,workhouse,sufficiency,aurangzeb,legalization,lipids,expanse,eintracht,sanjak,megas,125th,bahraini,yakima,eukaryotes,thwart,affirmation,peloponnese,retailing,carbonyl,chairwoman,macedonians,dentate,rockaway,correctness,wealthier,metamorphic,aragonese,fermanagh,pituitary,schrodinger,evokes,spoiler,chariots,akita,genitalia,combe,confectionery,desegregation,experiential,commodores,persepolis,viejo,restorations,virtualization,hispania,printmaking,stipend,yisrael,theravada,expended,radium,tweeted,polygonal,lippe,charente,leveraged,cutaneous,fallacy,fragrant,bypasses,elaborately,rigidity,majid,majorca,kongo,plasmodium,skits,audiovisual,eerste,staircases,prompts,coulthard,northwestward,riverdale,beatrix,copyrights,prudential,communicates,mated,obscenity,asynchronous,analyse,hansa,searchlight,farnborough,patras,asquith,qarah,contours,fumbled,pasteur,redistributed,almeria,sanctuaries,jewry,israelite,clinicians,koblenz,bookshop,affective,goulburn,panelist,sikorsky,cobham,mimics,ringed,portraiture,probabilistic,girolamo,intelligible,andalusian,jalal,athenaeum,eritrean,auxiliaries,pittsburg,devolution,sangam,isolating,anglers,cronulla,annihilated,kidderminster,synthesize,popularised,theophilus,bandstand,innumerable,chagrin,retroactively,weser,multiples,birdlife,goryeo,pawnee,grosser,grappling,tactile,ahmadinejad,turboprop,erdogan,matchday,proletarian,adhering,complements,austronesian,adverts,luminaries,archeology,impressionism,conifer,sodomy,interracial,platoons,lessen,postings,pejorative,registrations,cookery,persecutions,microbes,audits,idiosyncratic,subsp,suspensions,restricts,colouring,ratify,instrumentals,nucleotides,sulla,posits,bibliotheque,diameters,oceanography,instigation,subsumed,submachine,acceptor,legation,borrows,sedge,discriminated,loaves,insurers,highgate,detectable,abandons,kilns,sportscaster,harwich,iterations,preakness,arduous,tensile,prabhu,shortwave,philologist,shareholding,vegetative,complexities,councilors,distinctively,revitalize,automaton,amassing,montreux,khanh,surabaya,nurnberg,pernambuco,cuisines,charterhouse,firsts,tercera,inhabitant,homophobia,naturalism,einar,powerplant,coruna,entertainments,whedon,rajputs,raton,democracies,arunachal,oeuvre,wallonia,jeddah,trolleybuses,evangelism,vosges,kiowa,minimise,encirclement,undertakes,emigrant,beacons,deepened,grammars,publius,preeminent,seyyed,repechage,crafting,headingley,osteopathic,lithography,hotly,bligh,inshore,betrothed,olympians,formula_31,dissociation,trivandrum,arran,petrovic,stettin,disembarked,simplification,bronzes,philo,acrobatic,jonsson,conjectured,supercharged,kanto,detects,cheeses,correlates,harmonics,lifecycle,sudamericana,reservists,decayed,elitserien,parametric,113th,dusky,hogarth,modulo,symbiotic,monopolies,discontinuation,converges,southerners,tucuman,eclipses,enclaves,emits,famicom,caricatures,artistically,levelled,mussels,erecting,mouthparts,cunard,octaves,crucible,guardia,unusable,lagrangian,droughts,ephemeral,pashto,canis,tapering,sasebo,silurian,metallurgical,outscored,evolves,reissues,sedentary,homotopy,greyhawk,reagents,inheriting,onshore,tilting,rebuffed,reusable,naturalists,basingstoke,insofar,offensives,dravidian,curators,planks,rajan,isoforms,flagstaff,preside,globular,egalitarian,linkages,biographers,goalscorers,molybdenum,centralised,nordland,jurists,ellesmere,rosberg,hideyoshi,restructure,biases,borrower,scathing,redress,tunnelling,workflow,magnates,mahendra,dissenters,plethora,transcriptions,handicrafts,keyword,xi'an,petrograd,unser,prokofiev,90deg,madan,bataan,maronite,kearny,carmarthen,termini,consulates,disallowed,rockville,bowery,fanzine,docklands,bests,prohibitions,yeltsin,selassie,naturalization,realisation,dispensary,tribeca,abdulaziz,pocahontas,stagnation,pamplona,cuneiform,propagating,subsurface,christgau,epithelium,schwerin,lynching,routledge,hanseatic,upanishad,glebe,yugoslavian,complicity,endowments,girona,mynetworktv,entomology,plinth,ba'ath,supercup,torus,akkadian,salted,englewood,commandery,belgaum,prefixed,colorless,dartford,enthroned,caesarea,nominative,sandown,safeguards,hulled,formula_32,leamington,dieppe,spearhead,generalizations,demarcation,llanelli,masque,brickwork,recounting,sufism,strikingly,petrochemical,onslow,monologues,emigrating,anderlecht,sturt,hossein,sakhalin,subduction,novices,deptford,zanjan,airstrikes,coalfield,reintroduction,timbaland,hornby,messianic,stinging,universalist,situational,radiocarbon,strongman,rowling,saloons,traffickers,overran,fribourg,cambrai,gravesend,discretionary,finitely,archetype,assessor,pilipinas,exhumed,invocation,interacted,digitized,timisoara,smelter,teton,sexism,precepts,srinagar,pilsudski,carmelite,hanau,scoreline,hernando,trekking,blogging,fanbase,wielded,vesicles,nationalization,banja,rafts,motoring,luang,takeda,girder,stimulates,histone,sunda,nanoparticles,attains,jumpers,catalogued,alluding,pontus,ancients,examiners,shinkansen,ribbentrop,reimbursement,pharmacological,ramat,stringed,imposes,cheaply,transplanted,taiping,mizoram,looms,wallabies,sideman,kootenay,encased,sportsnet,revolutionized,tangier,benthic,runic,pakistanis,heatseekers,shyam,mishnah,presbyterians,stadt,sutras,straddles,zoroastrian,infer,fueling,gymnasts,ofcom,gunfight,journeyman,tracklist,oshawa,ps500,pa'in,mackinac,xiongnu,mississippian,breckinridge,freemason,bight,autoroute,liberalization,distantly,thrillers,solomons,presumptive,romanization,anecdotal,bohemians,unpaved,milder,concurred,spinners,alphabets,strenuous,rivieres,kerrang,mistreatment,dismounted,intensively,carlist,dancehall,shunting,pluralism,trafficked,brokered,bonaventure,bromide,neckar,designates,malian,reverses,sotheby,sorghum,serine,environmentalists,languedoc,consulship,metering,bankstown,handlers,militiamen,conforming,regularity,pondicherry,armin,capsized,consejo,capitalists,drogheda,granular,purged,acadians,endocrine,intramural,elicit,terns,orientations,miklos,omitting,apocryphal,slapstick,brecon,pliocene,affords,typography,emigre,tsarist,tomasz,beset,nishi,necessitating,encyclical,roleplaying,journeyed,inflow,sprints,progressives,novosibirsk,cameroonian,ephesus,speckled,kinshasa,freiherr,burnaby,dalmatian,torrential,rigor,renegades,bhakti,nurburgring,cosimo,convincingly,reverting,visayas,lewisham,charlottetown,charadriiformesfamily,transferable,jodhpur,converters,deepening,camshaft,underdeveloped,protease,polonia,uterine,quantify,tobruk,dealerships,narasimha,fortran,inactivity,1780s,victors,categorised,naxos,workstation,skink,sardinian,chalice,precede,dammed,sondheim,phineas,tutored,sourcing,uncompromising,placer,tyneside,courtiers,proclaims,pharmacies,hyogo,booksellers,sengoku,kursk,spectrometer,countywide,wielkopolski,bobsleigh,shetty,llywelyn,consistory,heretics,guinean,cliches,individualism,monolithic,imams,usability,bursa,deliberations,railings,torchwood,inconsistency,balearic,stabilizer,demonstrator,facet,radioactivity,outboard,educates,d'oyly,heretical,handover,jurisdictional,shockwave,hispaniola,conceptually,routers,unaffiliated,trentino,formula_33,cypriots,intervenes,neuchatel,formulating,maggiore,delisted,alcohols,thessaly,potable,estimator,suborder,fluency,mimicry,clergymen,infrastructures,rivals.com,baroda,subplot,majlis,plano,clinching,connotation,carinae,savile,intercultural,transcriptional,sandstones,ailerons,annotations,impresario,heinkel,scriptural,intermodal,astrological,ribbed,northeastward,posited,boers,utilise,kalmar,phylum,breakwater,skype,textured,guideline,azeri,rimini,massed,subsidence,anomalous,wolfsburg,polyphonic,accrediting,vodacom,kirov,captaining,kelantan,logie,fervent,eamon,taper,bundeswehr,disproportionately,divination,slobodan,pundits,hispano,kinetics,reunites,makati,ceasing,statistician,amending,chiltern,eparchy,riverine,melanoma,narragansett,pagans,raged,toppled,breaching,zadar,holby,dacian,ochre,velodrome,disparities,amphoe,sedans,webpage,williamsport,lachlan,groton,baring,swastika,heliport,unwillingness,razorbacks,exhibitors,foodstuffs,impacting,tithe,appendages,dermot,subtypes,nurseries,balinese,simulating,stary,remakes,mundi,chautauqua,geologically,stockade,hakka,dilute,kalimantan,pahang,overlapped,fredericton,baha'u'llah,jahangir,damping,benefactors,shomali,triumphal,cieszyn,paradigms,shielded,reggaeton,maharishi,zambian,shearing,golestan,mirroring,partitioning,flyover,songbook,incandescent,merrimack,huguenots,sangeet,vulnerabilities,trademarked,drydock,tantric,honoris,queenstown,labelling,iterative,enlists,statesmen,anglicans,herge,qinghai,burgundian,islami,delineated,zhuge,aggregated,banknote,qatari,suitably,tapestries,asymptotic,charleroi,majorities,pyramidellidae,leanings,climactic,tahir,ramsar,suppressor,revisionist,trawler,ernakulam,penicillium,categorization,slits,entitlement,collegium,earths,benefice,pinochet,puritans,loudspeaker,stockhausen,eurocup,roskilde,alois,jaroslav,rhondda,boutiques,vigor,neurotransmitter,ansar,malden,ferdinando,sported,relented,intercession,camberwell,wettest,thunderbolts,positional,oriel,cloverleaf,penalized,shoshone,rajkumar,completeness,sharjah,chromosomal,belgians,woolen,ultrasonic,sequentially,boleyn,mordella,microsystems,initiator,elachista,mineralogy,rhododendron,integrals,compostela,hamza,sawmills,stadio,berlioz,maidens,stonework,yachting,tappeh,myocardial,laborer,workstations,costumed,nicaea,lanark,roundtable,mashhad,nablus,algonquian,stuyvesant,sarkar,heroines,diwan,laments,intonation,intrigues,almaty,feuded,grandes,algarve,rehabilitate,macrophages,cruciate,dismayed,heuristic,eliezer,kozhikode,covalent,finalised,dimorphism,yaroslavl,overtaking,leverkusen,middlebury,feeders,brookings,speculates,insoluble,lodgings,jozsef,cysteine,shenyang,habilitation,spurious,brainchild,mtdna,comique,albedo,recife,partick,broadening,shahi,orientated,himalaya,swabia,palme,mennonites,spokeswoman,conscripts,sepulchre,chartres,eurozone,scaffold,invertebrate,parishad,bagan,heian,watercolors,basse,supercomputer,commences,tarragona,plainfield,arthurian,functor,identically,murex,chronicling,pressings,burrowing,histoire,guayaquil,goalkeeping,differentiable,warburg,machining,aeneas,kanawha,holocene,ramesses,reprisal,qingdao,avatars,turkestan,cantatas,besieging,repudiated,teamsters,equipping,hydride,ahmadiyya,euston,bottleneck,computations,terengganu,kalinga,stela,rediscovery,'this,azhar,stylised,karelia,polyethylene,kansai,motorised,lounges,normalization,calculators,1700s,goalkeepers,unfolded,commissary,cubism,vignettes,multiverse,heaters,briton,sparingly,childcare,thorium,plock,riksdag,eunuchs,catalysis,limassol,perce,uncensored,whitlam,ulmus,unites,mesopotamian,refraction,biodiesel,forza,fulda,unseated,mountbatten,shahrak,selenium,osijek,mimicking,antimicrobial,axons,simulcasting,donizetti,swabian,sportsmen,hafiz,neared,heraclius,locates,evaded,subcarpathian,bhubaneswar,negeri,jagannath,thaksin,aydin,oromo,lateran,goldsmiths,multiculturalism,cilia,mihai,evangelists,lorient,qajar,polygons,vinod,mechanised,anglophone,prefabricated,mosses,supervillain,airliners,biofuels,iodide,innovators,valais,wilberforce,logarithm,intelligentsia,dissipation,sanctioning,duchies,aymara,porches,simulators,mostar,telepathic,coaxial,caithness,burghs,fourths,stratification,joaquim,scribes,meteorites,monarchist,germination,vries,desiring,replenishment,istria,winemaking,tammany,troupes,hetman,lanceolate,pelagic,triptych,primeira,scant,outbound,hyphae,denser,bentham,basie,normale,executes,ladislaus,kontinental,herat,cruiserweight,activision,customization,manoeuvres,inglewood,northwood,waveform,investiture,inpatient,alignments,kiryat,rabat,archimedes,ustad,monsanto,archetypal,kirkby,sikhism,correspondingly,catskill,overlaid,petrels,widowers,unicameral,federalists,metalcore,gamerankings,mussel,formula_34,lymphocytes,cystic,southgate,vestiges,immortals,kalam,strove,amazons,pocono,sociologists,sopwith,adheres,laurens,caregivers,inspecting,transylvanian,rebroadcast,rhenish,miserables,pyrams,blois,newtonian,carapace,redshirt,gotland,nazir,unilever,distortions,linebackers,federalism,mombasa,lumen,bernoulli,favouring,aligarh,denounce,steamboats,dnieper,stratigraphic,synths,bernese,umass,icebreaker,guanajuato,heisenberg,boldly,diodes,ladakh,dogmatic,scriptwriter,maritimes,battlestar,symposia,adaptable,toluca,bhavan,nanking,ieyasu,picardy,soybean,adalbert,brompton,deutsches,brezhnev,glandular,laotian,hispanicized,ibadan,personification,dalit,yamuna,regio,dispensed,yamagata,zweibrucken,revising,fandom,stances,participle,flavours,khitan,vertebral,crores,mayaguez,dispensation,guntur,undefined,harpercollins,unionism,meena,leveling,philippa,refractory,telstra,judea,attenuation,pylons,elaboration,elegy,edging,gracillariidae,residencies,absentia,reflexive,deportations,dichotomy,stoves,sanremo,shimon,menachem,corneal,conifers,mordellidae,facsimile,diagnoses,cowper,citta,viticulture,divisive,riverview,foals,mystics,polyhedron,plazas,airspeed,redgrave,motherland,impede,multiplicity,barrichello,airships,pharmacists,harvester,clays,payloads,differentiating,popularize,caesars,tunneling,stagnant,circadian,indemnity,sensibilities,musicology,prefects,serfs,metra,lillehammer,carmarthenshire,kiosks,welland,barbican,alkyl,tillandsia,gatherers,asociacion,showings,bharati,brandywine,subversion,scalable,pfizer,dawla,barium,dardanelles,nsdap,konig,ayutthaya,hodgkin,sedimentation,completions,purchasers,sponsorships,maximizing,banked,taoism,minot,enrolls,fructose,aspired,capuchin,outages,artois,carrollton,totality,osceola,pawtucket,fontainebleau,converged,queretaro,competencies,botha,allotments,sheaf,shastri,obliquely,banding,catharines,outwardly,monchengladbach,driest,contemplative,cassini,ranga,pundit,kenilworth,tiananmen,disulfide,formula_35,townlands,codice_3,looping,caravans,rachmaninoff,segmentation,fluorine,anglicised,gnostic,dessau,discern,reconfigured,altrincham,rebounding,battlecruiser,ramblers,1770s,convective,triomphe,miyagi,mourners,instagram,aloft,breastfeeding,courtyards,folkestone,changsha,kumamoto,saarland,grayish,provisionally,appomattox,uncial,classicism,mahindra,elapsed,supremes,monophyletic,cautioned,formula_36,noblewoman,kernels,sucre,swaps,bengaluru,grenfell,epicenter,rockhampton,worshipful,licentiate,metaphorical,malankara,amputated,wattle,palawan,tankobon,nobunaga,polyhedra,transduction,jilin,syrians,affinities,fluently,emanating,anglicized,sportscar,botanists,altona,dravida,chorley,allocations,kunming,luanda,premiering,outlived,mesoamerica,lingual,dissipating,impairments,attenborough,balustrade,emulator,bakhsh,cladding,increments,ascents,workington,qal'eh,winless,categorical,petrel,emphasise,dormer,toros,hijackers,telescopic,solidly,jankovic,cession,gurus,madoff,newry,subsystems,northside,talib,englishmen,farnese,holographic,electives,argonne,scrivener,predated,brugge,nauvoo,catalyses,soared,siddeley,graphically,powerlifting,funicular,sungai,coercive,fusing,uncertainties,locos,acetic,diverge,wedgwood,dressings,tiebreaker,didactic,vyacheslav,acreage,interplanetary,battlecruisers,sunbury,alkaloids,hairpin,automata,wielkie,interdiction,plugins,monkees,nudibranch,esporte,approximations,disabling,powering,characterisation,ecologically,martinsville,termen,perpetuated,lufthansa,ascendancy,motherboard,bolshoi,athanasius,prunus,dilution,invests,nonzero,mendocino,charan,banque,shaheed,counterculture,unita,voivode,hospitalization,vapour,supermarine,resistor,steppes,osnabruck,intermediates,benzodiazepines,sunnyside,privatized,geopolitical,ponta,beersheba,kievan,embody,theoretic,sangh,cartographer,blige,rotors,thruway,battlefields,discernible,demobilized,broodmare,colouration,sagas,policymakers,serialization,augmentation,hoare,frankfurter,transnistria,kinases,detachable,generational,converging,antiaircraft,khaki,bimonthly,coadjutor,arkhangelsk,kannur,buffers,livonian,northwich,enveloped,cysts,yokozuna,herne,beeching,enron,virginian,woollen,excepting,competitively,outtakes,recombinant,hillcrest,clearances,pathe,cumbersome,brasov,u.s.a,likud,christiania,cruciform,hierarchies,wandsworth,lupin,resins,voiceover,sitar,electrochemical,mediacorp,typhus,grenadiers,hepatic,pompeii,weightlifter,bosniak,oxidoreductase,undersecretary,rescuers,ranji,seleucid,analysing,exegesis,tenancy,toure,kristiansand,110th,carillon,minesweepers,poitou,acceded,palladian,redevelop,naismith,rifled,proletariat,shojo,hackensack,harvests,endpoint,kuban,rosenborg,stonehenge,authorisation,jacobean,revocation,compatriots,colliding,undetermined,okayama,acknowledgment,angelou,fresnel,chahar,ethereal,mg/kg,emmet,mobilised,unfavourable,cultura,characterizing,parsonage,skeptics,expressways,rabaul,medea,guardsmen,visakhapatnam,caddo,homophobic,elmwood,encircling,coexistence,contending,seljuk,mycologist,infertility,moliere,insolvent,covenants,underpass,holme,landesliga,workplaces,delinquency,methamphetamine,contrived,tableau,tithes,overlying,usurped,contingents,spares,oligocene,molde,beatification,mordechai,balloting,pampanga,navigators,flowered,debutant,codec,orogeny,newsletters,solon,ambivalent,ubisoft,archdeaconry,harpers,kirkus,jabal,castings,kazhagam,sylhet,yuwen,barnstaple,amidships,causative,isuzu,watchtower,granules,canaveral,remuneration,insurer,payout,horizonte,integrative,attributing,kiwis,skanderbeg,asymmetry,gannett,urbanism,disassembled,unaltered,precluded,melodifestivalen,ascends,plugin,gurkha,bisons,stakeholder,industrialisation,abbotsford,sextet,bustling,uptempo,slavia,choreographers,midwives,haram,javed,gazetteer,subsection,natively,weighting,lysine,meera,redbridge,muchmusic,abruzzo,adjoins,unsustainable,foresters,kbit/s,cosmopterigidae,secularism,poetics,causality,phonograph,estudiantes,ceausescu,universitario,adjoint,applicability,gastropods,nagaland,kentish,mechelen,atalanta,woodpeckers,lombards,gatineau,romansh,avraham,acetylcholine,perturbation,galois,wenceslaus,fuzhou,meandering,dendritic,sacristy,accented,katha,therapeutics,perceives,unskilled,greenhouses,analogues,chaldean,timbre,sloped,volodymyr,sadiq,maghreb,monogram,rearguard,caucuses,mures,metabolite,uyezd,determinism,theosophical,corbet,gaels,disruptions,bicameral,ribosomal,wolseley,clarksville,watersheds,tarsi,radon,milanese,discontinuous,aristotelian,whistleblower,representational,hashim,modestly,localised,atrial,hazara,ravana,troyes,appointees,rubus,morningside,amity,aberdare,ganglia,wests,zbigniew,aerobatic,depopulated,corsican,introspective,twinning,hardtop,shallower,cataract,mesolithic,emblematic,graced,lubrication,republicanism,voronezh,bastions,meissen,irkutsk,oboes,hokkien,sprites,tenet,individualist,capitulated,oakville,dysentery,orientalist,hillsides,keywords,elicited,incised,lagging,apoel,lengthening,attractiveness,marauders,sportswriter,decentralization,boltzmann,contradicts,draftsman,precipitate,solihull,norske,consorts,hauptmann,riflemen,adventists,syndromes,demolishing,customize,continuo,peripherals,seamlessly,linguistically,bhushan,orphanages,paraul,lessened,devanagari,quarto,responders,patronymic,riemannian,altoona,canonization,honouring,geodetic,exemplifies,republica,enzymatic,porters,fairmount,pampa,sufferers,kamchatka,conjugated,coachella,uthman,repositories,copious,headteacher,awami,phoneme,homomorphism,franconian,moorland,davos,quantified,kamloops,quarks,mayoralty,weald,peacekeepers,valerian,particulate,insiders,perthshire,caches,guimaraes,piped,grenadines,kosciuszko,trombonist,artemisia,covariance,intertidal,soybeans,beatified,ellipse,fruiting,deafness,dnipropetrovsk,accrued,zealous,mandala,causation,junius,kilowatt,bakeries,montpelier,airdrie,rectified,bungalows,toleration,debian,pylon,trotskyist,posteriorly,two-and-a-half,herbivorous,islamists,poetical,donne,wodehouse,frome,allium,assimilate,phonemic,minaret,unprofitable,darpa,untenable,leaflet,bitcoin,zahir,thresholds,argentino,jacopo,bespoke,stratified,wellbeing,shiite,basaltic,timberwolves,secrete,taunts,marathons,isomers,carre,consecrators,penobscot,pitcairn,sakha,crosstown,inclusions,impassable,fenders,indre,uscgc,jordi,retinue,logarithmic,pilgrimages,railcar,cashel,blackrock,macroscopic,aligning,tabla,trestle,certify,ronson,palps,dissolves,thickened,silicate,taman,walsingham,hausa,lowestoft,rondo,oleksandr,cuyahoga,retardation,countering,cricketing,holborn,identifiers,hells,geophysics,infighting,sculpting,balaji,webbed,irradiation,runestone,trusses,oriya,sojourn,forfeiture,colonize,exclaimed,eucharistic,lackluster,glazing,northridge,gutenberg,stipulates,macroeconomic,priori,outermost,annular,udinese,insulating,headliner,godel,polytope,megalithic,salix,sharapova,derided,muskegon,braintree,plateaus,confers,autocratic,isomer,interstitial,stamping,omits,kirtland,hatchery,evidences,intifada,111th,podgorica,capua,motivating,nuneaton,jakub,korsakov,amitabh,mundial,monrovia,gluten,predictor,marshalling,d'orleans,levers,touchscreen,brantford,fricative,banishment,descendent,antagonism,ludovico,loudspeakers,formula_37,livelihoods,manassas,steamships,dewsbury,uppermost,humayun,lures,pinnacles,dependents,lecce,clumps,observatories,paleozoic,dedicating,samiti,draughtsman,gauls,incite,infringing,nepean,pythagorean,convents,triumvirate,seigneur,gaiman,vagrant,fossa,byproduct,serrated,renfrewshire,sheltering,achaemenid,dukedom,catchers,sampdoria,platelet,bielefeld,fluctuating,phenomenology,strikeout,ethnology,prospectors,woodworking,tatra,wildfires,meditations,agrippa,fortescue,qureshi,wojciech,methyltransferase,accusative,saatchi,amerindian,volcanism,zeeland,toyama,vladimirovich,allege,polygram,redox,budgeted,advisories,nematode,chipset,starscream,tonbridge,hardening,shales,accompanist,paraded,phonographic,whitefish,sportive,audiobook,kalisz,hibernation,latif,duels,ps200,coxeter,nayak,safeguarding,cantabria,minesweeping,zeiss,dunams,catholicos,sawtooth,ontological,nicobar,bridgend,unclassified,intrinsically,hanoverian,rabbitohs,kenseth,alcalde,northumbrian,raritan,septuagint,presse,sevres,origen,dandenong,peachtree,intersected,impeded,usages,hippodrome,novara,trajectories,customarily,yardage,inflected,yanow,kalan,taverns,liguria,librettist,intermarriage,1760s,courant,gambier,infanta,ptolemaic,ukulele,haganah,sceptical,manchukuo,plexus,implantation,hilal,intersex,efficiencies,arbroath,hagerstown,adelphi,diario,marais,matti,lifes,coining,modalities,divya,bletchley,conserving,ivorian,mithridates,generative,strikeforce,laymen,toponymy,pogrom,satya,meticulously,agios,dufferin,yaakov,fortnightly,cargoes,deterrence,prefrontal,przemysl,mitterrand,commemorations,chatsworth,gurdwara,abuja,chakraborty,badajoz,geometries,artiste,diatonic,ganglion,presides,marymount,nanak,cytokines,feudalism,storks,rowers,widens,politico,evangelicals,assailants,pittsfield,allowable,bijapur,telenovelas,dichomeris,glenelg,herbivores,keita,inked,radom,fundraisers,constantius,boheme,portability,komnenos,crystallography,derrida,moderates,tavistock,fateh,spacex,disjoint,bristles,commercialized,interwoven,empirically,regius,bulacan,newsday,showa,radicalism,yarrow,pleura,sayed,structuring,cotes,reminiscences,acetyl,edicts,escalators,aomori,encapsulated,legacies,bunbury,placings,fearsome,postscript,powerfully,keighley,hildesheim,amicus,crevices,deserters,benelux,aurangabad,freeware,ioannis,carpathians,chirac,seceded,prepaid,landlocked,naturalised,yanukovych,soundscan,blotch,phenotypic,determinants,twente,dictatorial,giessen,composes,recherche,pathophysiology,inventories,ayurveda,elevating,gravestone,degeneres,vilayet,popularizing,spartanburg,bloemfontein,previewed,renunciation,genotype,ogilvy,tracery,blacklisted,emissaries,diploid,disclosures,tupolev,shinjuku,antecedents,pennine,braganza,bhattacharya,countable,spectroscopic,ingolstadt,theseus,corroborated,compounding,thrombosis,extremadura,medallions,hasanabad,lambton,perpetuity,glycol,besancon,palaiologos,pandey,caicos,antecedent,stratum,laserdisc,novitiate,crowdfunding,palatal,sorceress,dassault,toughness,celle,cezanne,vientiane,tioga,hander,crossbar,gisborne,cursor,inspectorate,serif,praia,sphingidae,nameplate,psalter,ivanovic,sitka,equalised,mutineers,sergius,outgrowth,creationism,haredi,rhizomes,predominate,undertakings,vulgate,hydrothermal,abbeville,geodesic,kampung,physiotherapy,unauthorised,asteraceae,conservationist,minoan,supersport,mohammadabad,cranbrook,mentorship,legitimately,marshland,datuk,louvain,potawatomi,carnivores,levies,lyell,hymnal,regionals,tinto,shikoku,conformal,wanganui,beira,lleida,standstill,deloitte,formula_40,corbusier,chancellery,mixtapes,airtime,muhlenberg,formula_39,bracts,thrashers,prodigious,gironde,chickamauga,uyghurs,substitutions,pescara,batangas,gregarious,gijon,paleo,mathura,pumas,proportionally,hawkesbury,yucca,kristiania,funimation,fluted,eloquence,mohun,aftermarket,chroniclers,futurist,nonconformist,branko,mannerisms,lesnar,opengl,altos,retainers,ashfield,shelbourne,sulaiman,divisie,gwent,locarno,lieder,minkowski,bivalve,redeployed,cartography,seaway,bookings,decays,ostend,antiquaries,pathogenesis,formula_38,chrysalis,esperance,valli,motogp,homelands,bridged,bloor,ghazal,vulgaris,baekje,prospector,calculates,debtors,hesperiidae,titian,returner,landgrave,frontenac,kelowna,pregame,castelo,caius,canoeist,watercolours,winterthur,superintendents,dissonance,dubstep,adorn,matic,salih,hillel,swordsman,flavoured,emitter,assays,monongahela,deeded,brazzaville,sufferings,babylonia,fecal,umbria,astrologer,gentrification,frescos,phasing,zielona,ecozone,candido,manoj,quadrilateral,gyula,falsetto,prewar,puntland,infinitive,contraceptive,bakhtiari,ohrid,socialization,tailplane,evoking,havelock,macapagal,plundering,104th,keynesian,templars,phrasing,morphologically,czestochowa,humorously,catawba,burgas,chiswick,ellipsoid,kodansha,inwards,gautama,katanga,orthopaedic,heilongjiang,sieges,outsourced,subterminal,vijayawada,hares,oration,leitrim,ravines,manawatu,cryogenic,tracklisting,about.com,ambedkar,degenerated,hastened,venturing,lobbyists,shekhar,typefaces,northcote,rugen,'good,ornithology,asexual,hemispheres,unsupported,glyphs,spoleto,epigenetic,musicianship,donington,diogo,kangxi,bisected,polymorphism,megawatt,salta,embossed,cheetahs,cruzeiro,unhcr,aristide,rayleigh,maturing,indonesians,noire,llano,ffffff,camus,purges,annales,convair,apostasy,algol,phage,apaches,marketers,aldehyde,pompidou,kharkov,forgeries,praetorian,divested,retrospectively,gornji,scutellum,bitumen,pausanias,magnification,imitations,nyasaland,geographers,floodlights,athlone,hippolyte,expositions,clarinetist,razak,neutrinos,rotax,sheykh,plush,interconnect,andalus,cladogram,rudyard,resonator,granby,blackfriars,placido,windscreen,sahel,minamoto,haida,cations,emden,blackheath,thematically,blacklist,pawel,disseminating,academical,undamaged,raytheon,harsher,powhatan,ramachandran,saddles,paderborn,capping,zahra,prospecting,glycine,chromatin,profane,banska,helmand,okinawan,dislocation,oscillators,insectivorous,foyle,gilgit,autonomic,tuareg,sluice,pollinated,multiplexed,granary,narcissus,ranchi,staines,nitra,goalscoring,midwifery,pensioners,algorithmic,meetinghouse,biblioteca,besar,narva,angkor,predate,lohan,cyclical,detainee,occipital,eventing,faisalabad,dartmoor,kublai,courtly,resigns,radii,megachilidae,cartels,shortfall,xhosa,unregistered,benchmarks,dystopian,bulkhead,ponsonby,jovanovic,accumulates,papuan,bhutanese,intuitively,gotaland,headliners,recursion,dejan,novellas,diphthongs,imbued,withstood,analgesic,amplify,powertrain,programing,maidan,alstom,affirms,eradicated,summerslam,videogame,molla,severing,foundered,gallium,atmospheres,desalination,shmuel,howmeh,catolica,bossier,reconstructing,isolates,lyase,tweets,unconnected,tidewater,divisible,cohorts,orebro,presov,furnishing,folklorist,simplifying,centrale,notations,factorization,monarchies,deepen,macomb,facilitation,hennepin,declassified,redrawn,microprocessors,preliminaries,enlarging,timeframe,deutschen,shipbuilders,patiala,ferrous,aquariums,genealogies,vieux,unrecognized,bridgwater,tetrahedral,thule,resignations,gondwana,registries,agder,dataset,felled,parva,analyzer,worsen,coleraine,columella,blockaded,polytechnique,reassembled,reentry,narvik,greys,nigra,knockouts,bofors,gniezno,slotted,hamasaki,ferrers,conferring,thirdly,domestication,photojournalist,universality,preclude,ponting,halved,thereupon,photosynthetic,ostrava,mismatch,pangasinan,intermediaries,abolitionists,transited,headings,ustase,radiological,interconnection,dabrowa,invariants,honorius,preferentially,chantilly,marysville,dialectical,antioquia,abstained,gogol,dirichlet,muricidae,symmetries,reproduces,brazos,fatwa,bacillus,ketone,paribas,chowk,multiplicative,dermatitis,mamluks,devotes,adenosine,newbery,meditative,minefields,inflection,oxfam,conwy,bystrica,imprints,pandavas,infinitesimal,conurbation,amphetamine,reestablish,furth,edessa,injustices,frankston,serjeant,4x200,khazar,sihanouk,longchamp,stags,pogroms,coups,upperparts,endpoints,infringed,nuanced,summing,humorist,pacification,ciaran,jamaat,anteriorly,roddick,springboks,faceted,hypoxia,rigorously,cleves,fatimid,ayurvedic,tabled,ratna,senhora,maricopa,seibu,gauguin,holomorphic,campgrounds,amboy,coordinators,ponderosa,casemates,ouachita,nanaimo,mindoro,zealander,rimsky,cluny,tomaszow,meghalaya,caetano,tilak,roussillon,landtag,gravitation,dystrophy,cephalopods,trombones,glens,killarney,denominated,anthropogenic,pssas,roubaix,carcasses,montmorency,neotropical,communicative,rabindranath,ordinated,separable,overriding,surged,sagebrush,conciliation,codice_4,durrani,phosphatase,qadir,votive,revitalized,taiyuan,tyrannosaurus,graze,slovaks,nematodes,environmentalism,blockhouse,illiteracy,schengen,ecotourism,alternation,conic,wields,hounslow,blackfoot,kwame,ambulatory,volhynia,hordaland,croton,piedras,rohit,drava,conceptualized,birla,illustrative,gurgaon,barisal,tutsi,dezong,nasional,polje,chanson,clarinets,krasnoyarsk,aleksandrovich,cosmonaut,d'este,palliative,midseason,silencing,wardens,durer,girders,salamanders,torrington,supersonics,lauda,farid,circumnavigation,embankments,funnels,bajnoksag,lorries,cappadocia,jains,warringah,retirees,burgesses,equalization,cusco,ganesan,algal,amazonian,lineups,allocating,conquerors,usurper,mnemonic,predating,brahmaputra,ahmadabad,maidenhead,numismatic,subregion,encamped,reciprocating,freebsd,irgun,tortoises,governorates,zionists,airfoil,collated,ajmer,fiennes,etymological,polemic,chadian,clerestory,nordiques,fluctuated,calvados,oxidizing,trailhead,massena,quarrels,dordogne,tirunelveli,pyruvate,pulsed,athabasca,sylar,appointee,serer,japonica,andronikos,conferencing,nicolaus,chemin,ascertained,incited,woodbine,helices,hospitalised,emplacements,to/from,orchestre,tyrannical,pannonia,methodism,pop/rock,shibuya,berbers,despot,seaward,westpac,separator,perpignan,alamein,judeo,publicize,quantization,ethniki,gracilis,menlo,offside,oscillating,unregulated,succumbing,finnmark,metrical,suleyman,raith,sovereigns,bundesstrasse,kartli,fiduciary,darshan,foramen,curler,concubines,calvinism,larouche,bukhara,sophomores,mohanlal,lutheranism,monomer,eamonn,'black,uncontested,immersive,tutorials,beachhead,bindings,permeable,postulates,comite,transformative,indiscriminate,hofstra,associacao,amarna,dermatology,lapland,aosta,babur,unambiguous,formatting,schoolboys,gwangju,superconducting,replayed,adherent,aureus,compressors,forcible,spitsbergen,boulevards,budgeting,nossa,annandale,perumal,interregnum,sassoon,kwajalein,greenbrier,caldas,triangulation,flavius,increment,shakhtar,nullified,pinfall,nomen,microfinance,depreciation,cubist,steeper,splendour,gruppe,everyman,chasers,campaigners,bridle,modality,percussive,darkly,capes,velar,picton,triennial,factional,padang,toponym,betterment,norepinephrine,112th,estuarine,diemen,warehousing,morphism,ideologically,pairings,immunization,crassus,exporters,sefer,flocked,bulbous,deseret,booms,calcite,bohol,elven,groot,pulau,citigroup,wyeth,modernizing,layering,pastiche,complies,printmaker,condenser,theropod,cassino,oxyrhynchus,akademie,trainings,lowercase,coxae,parte,chetniks,pentagonal,keselowski,monocoque,morsi,reticulum,meiosis,clapboard,recoveries,tinge,an/fps,revista,sidon,livre,epidermis,conglomerates,kampong,congruent,harlequins,tergum,simplifies,epidemiological,underwriting,tcp/ip,exclusivity,multidimensional,mysql,columbine,ecologist,hayat,sicilies,levees,handset,aesop,usenet,pacquiao,archiving,alexandrian,compensatory,broadsheet,annotation,bahamian,d'affaires,interludes,phraya,shamans,marmara,customizable,immortalized,ambushes,chlorophyll,diesels,emulsion,rheumatoid,voluminous,screenwriters,tailoring,sedis,runcorn,democratization,bushehr,anacostia,constanta,antiquary,sixtus,radiate,advaita,antimony,acumen,barristers,reichsbahn,ronstadt,symbolist,pasig,cursive,secessionist,afrikaner,munnetra,inversely,adsorption,syllabic,moltke,idioms,midline,olimpico,diphosphate,cautions,radziwill,mobilisation,copelatus,trawlers,unicron,bhaskar,financiers,minimalism,derailment,marxists,oireachtas,abdicate,eigenvalue,zafar,vytautas,ganguly,chelyabinsk,telluride,subordination,ferried,dived,vendee,pictish,dimitrov,expiry,carnation,cayley,magnitudes,lismore,gretna,sandwiched,unmasked,sandomierz,swarthmore,tetra,nanyang,pevsner,dehradun,mormonism,rashi,complying,seaplanes,ningbo,cooperates,strathcona,mornington,mestizo,yulia,edgbaston,palisade,ethno,polytopes,espirito,tymoshenko,pronunciations,paradoxical,taichung,chipmunks,erhard,maximise,accretion,kanda,`abdu'l,narrowest,umpiring,mycenaean,divisor,geneticist,ceredigion,barque,hobbyists,equates,auxerre,spinose,cheil,sweetwater,guano,carboxylic,archiv,tannery,cormorant,agonists,fundacion,anbar,tunku,hindrance,meerut,concordat,secunderabad,kachin,achievable,murfreesboro,comprehensively,forges,broadest,synchronised,speciation,scapa,aliyev,conmebol,tirelessly,subjugated,pillaged,udaipur,defensively,lakhs,stateless,haasan,headlamps,patterning,podiums,polyphony,mcmurdo,mujer,vocally,storeyed,mucosa,multivariate,scopus,minimizes,formalised,certiorari,bourges,populate,overhanging,gaiety,unreserved,borromeo,woolworths,isotopic,bashar,purify,vertebra,medan,juxtaposition,earthwork,elongation,chaudhary,schematic,piast,steeped,nanotubes,fouls,achaea,legionnaires,abdur,qmjhl,embraer,hardback,centerville,ilocos,slovan,whitehorse,mauritian,moulding,mapuche,donned,provisioning,gazprom,jonesboro,audley,lightest,calyx,coldwater,trigonometric,petroglyphs,psychoanalyst,congregate,zambezi,fissure,supervises,bexley,etobicoke,wairarapa,tectonics,emphasises,formula_41,debugging,linfield,spatially,ionizing,ungulates,orinoco,clades,erlangen,news/talk,vols.,ceara,yakovlev,finsbury,entanglement,fieldhouse,graphene,intensifying,grigory,keyong,zacatecas,ninian,allgemeine,keswick,societa,snorri,femininity,najib,monoclonal,guyanese,postulate,huntly,abbeys,machinist,yunus,emphasising,ishaq,urmia,bremerton,pretenders,lumiere,thoroughfares,chikara,dramatized,metathorax,taiko,transcendence,wycliffe,retrieves,umpired,steuben,racehorses,taylors,kuznetsov,montezuma,precambrian,canopies,gaozong,propodeum,disestablished,retroactive,shoreham,rhizome,doubleheader,clinician,diwali,quartzite,shabaab,agassiz,despatched,stormwater,luxemburg,callao,universidade,courland,skane,glyph,dormers,witwatersrand,curacy,qualcomm,nansen,entablature,lauper,hausdorff,lusaka,ruthenian,360deg,cityscape,douai,vaishnava,spars,vaulting,rationalist,gygax,sequestration,typology,pollinates,accelerators,leben,colonials,cenotaph,imparted,carthaginians,equaled,rostrum,gobind,bodhisattva,oberst,bicycling,arabi,sangre,biophysics,hainaut,vernal,lunenburg,apportioned,finches,lajos,nenad,repackaged,zayed,nikephoros,r.e.m,swaminarayan,gestalt,unplaced,crags,grohl,sialkot,unsaturated,gwinnett,linemen,forays,palakkad,writs,instrumentalists,aircrews,badged,terrapins,180deg,oneness,commissariat,changi,pupation,circumscribed,contador,isotropic,administrated,fiefs,nimes,intrusions,minoru,geschichte,nadph,tainan,changchun,carbondale,frisia,swapo,evesham,hawai'i,encyclopedic,transporters,dysplasia,formula_42,onsite,jindal,guetta,judgements,narbonne,permissions,paleogene,rationalism,vilna,isometric,subtracted,chattahoochee,lamina,missa,greville,pervez,lattices,persistently,crystallization,timbered,hawaiians,fouling,interrelated,masood,ripening,stasi,gamal,visigothic,warlike,cybernetics,tanjung,forfar,cybernetic,karelian,brooklands,belfort,greifswald,campeche,inexplicably,refereeing,understory,uninterested,prius,collegiately,sefid,sarsfield,categorize,biannual,elsevier,eisteddfod,declension,autonoma,procuring,misrepresentation,novelization,bibliographic,shamanism,vestments,potash,eastleigh,ionized,turan,lavishly,scilly,balanchine,importers,parlance,'that,kanyakumari,synods,mieszko,crossovers,serfdom,conformational,legislated,exclave,heathland,sadar,differentiates,propositional,konstantinos,photoshop,manche,vellore,appalachia,orestes,taiga,exchanger,grozny,invalidated,baffin,spezia,staunchly,eisenach,robustness,virtuosity,ciphers,inlets,bolagh,understandings,bosniaks,parser,typhoons,sinan,luzerne,webcomic,subtraction,jhelum,businessweek,ceske,refrained,firebox,mitigated,helmholtz,dilip,eslamabad,metalwork,lucan,apportionment,provident,gdynia,schooners,casement,danse,hajjiabad,benazir,buttress,anthracite,newsreel,wollaston,dispatching,cadastral,riverboat,provincetown,nantwich,missal,irreverent,juxtaposed,darya,ennobled,electropop,stereoscopic,maneuverability,laban,luhansk,udine,collectibles,haulage,holyrood,materially,supercharger,gorizia,shkoder,townhouses,pilate,layoffs,folkloric,dialectic,exuberant,matures,malla,ceuta,citizenry,crewed,couplet,stopover,transposition,tradesmen,antioxidant,amines,utterance,grahame,landless,isere,diction,appellant,satirist,urbino,intertoto,subiaco,antonescu,nehemiah,ubiquitin,emcee,stourbridge,fencers,103rd,wranglers,monteverdi,watertight,expounded,xiamen,manmohan,pirie,threefold,antidepressant,sheboygan,grieg,cancerous,diverging,bernini,polychrome,fundamentalism,bihari,critiqued,cholas,villers,tendulkar,dafydd,vastra,fringed,evangelization,episcopalian,maliki,sana'a,ashburton,trianon,allegany,heptathlon,insufficiently,panelists,pharrell,hexham,amharic,fertilized,plumes,cistern,stratigraphy,akershus,catalans,karoo,rupee,minuteman,quantification,wigmore,leutnant,metanotum,weeknights,iridescent,extrasolar,brechin,deuterium,kuching,lyricism,astrakhan,brookhaven,euphorbia,hradec,bhagat,vardar,aylmer,positron,amygdala,speculators,unaccompanied,debrecen,slurry,windhoek,disaffected,rapporteur,mellitus,blockers,fronds,yatra,sportsperson,precession,physiologist,weeknight,pidgin,pharma,condemns,standardize,zetian,tibor,glycoprotein,emporia,cormorants,amalie,accesses,leonhard,denbighshire,roald,116th,will.i.am,symbiosis,privatised,meanders,chemnitz,jabalpur,shing,secede,ludvig,krajina,homegrown,snippets,sasanian,euripides,peder,cimarron,streaked,graubunden,kilimanjaro,mbeki,middleware,flensburg,bukovina,lindwall,marsalis,profited,abkhaz,polis,camouflaged,amyloid,morgantown,ovoid,bodleian,morte,quashed,gamelan,juventud,natchitoches,storyboard,freeview,enumeration,cielo,preludes,bulawayo,1600s,olympiads,multicast,faunal,asura,reinforces,puranas,ziegfeld,handicraft,seamount,kheil,noche,hallmarks,dermal,colorectal,encircle,hessen,umbilicus,sunnis,leste,unwin,disclosing,superfund,montmartre,refuelling,subprime,kolhapur,etiology,bismuth,laissez,vibrational,mazar,alcoa,rumsfeld,recurve,ticonderoga,lionsgate,onlookers,homesteads,filesystem,barometric,kingswood,biofuel,belleza,moshav,occidentalis,asymptomatic,northeasterly,leveson,huygens,numan,kingsway,primogeniture,toyotomi,yazoo,limpets,greenbelt,booed,concurrence,dihedral,ventrites,raipur,sibiu,plotters,kitab,109th,trackbed,skilful,berthed,effendi,fairing,sephardi,mikhailovich,lockyer,wadham,invertible,paperbacks,alphabetic,deuteronomy,constitutive,leathery,greyhounds,estoril,beechcraft,poblacion,cossidae,excreted,flamingos,singha,olmec,neurotransmitters,ascoli,nkrumah,forerunners,dualism,disenchanted,benefitted,centrum,undesignated,noida,o'donoghue,collages,egrets,egmont,wuppertal,cleave,montgomerie,pseudomonas,srinivasa,lymphatic,stadia,resold,minima,evacuees,consumerism,ronde,biochemist,automorphism,hollows,smuts,improvisations,vespasian,bream,pimlico,eglin,colne,melancholic,berhad,ousting,saale,notaulices,ouest,hunslet,tiberias,abdomina,ramsgate,stanislas,donbass,pontefract,sucrose,halts,drammen,chelm,l'arc,taming,trolleys,konin,incertae,licensees,scythian,giorgos,dative,tanglewood,farmlands,o'keeffe,caesium,romsdal,amstrad,corte,oglethorpe,huntingdonshire,magnetization,adapts,zamosc,shooto,cuttack,centrepiece,storehouse,winehouse,morbidity,woodcuts,ryazan,buddleja,buoyant,bodmin,estero,austral,verifiable,periyar,christendom,curtail,shura,kaifeng,cotswold,invariance,seafaring,gorica,androgen,usman,seabird,forecourt,pekka,juridical,audacious,yasser,cacti,qianlong,polemical,d'amore,espanyol,distrito,cartographers,pacifism,serpents,backa,nucleophilic,overturning,duplicates,marksman,oriente,vuitton,oberleutnant,gielgud,gesta,swinburne,transfiguration,1750s,retaken,celje,fredrikstad,asuka,cropping,mansard,donates,blacksmiths,vijayanagara,anuradhapura,germinate,betis,foreshore,jalandhar,bayonets,devaluation,frazione,ablaze,abidjan,approvals,homeostasis,corollary,auden,superfast,redcliffe,luxembourgish,datum,geraldton,printings,ludhiana,honoree,synchrotron,invercargill,hurriedly,108th,three-and-a-half,colonist,bexar,limousin,bessemer,ossetian,nunataks,buddhas,rebuked,thais,tilburg,verdicts,interleukin,unproven,dordrecht,solent,acclamation,muammar,dahomey,operettas,4x400,arrears,negotiators,whitehaven,apparitions,armoury,psychoactive,worshipers,sculptured,elphinstone,airshow,kjell,o'callaghan,shrank,professorships,predominance,subhash,coulomb,sekolah,retrofitted,samos,overthrowing,vibrato,resistors,palearctic,datasets,doordarshan,subcutaneous,compiles,immorality,patchwork,trinidadian,glycogen,pronged,zohar,visigoths,freres,akram,justo,agora,intakes,craiova,playwriting,bukhari,militarism,iwate,petitioners,harun,wisla,inefficiency,vendome,ledges,schopenhauer,kashi,entombed,assesses,tenn.,noumea,baguio,carex,o'donovan,filings,hillsdale,conjectures,blotches,annuals,lindisfarne,negated,vivek,angouleme,trincomalee,cofactor,verkhovna,backfield,twofold,automaker,rudra,freighters,darul,gharana,busway,formula_43,plattsburgh,portuguesa,showrunner,roadmap,valenciennes,erdos,biafra,spiritualism,transactional,modifies,carne,107th,cocos,gcses,tiverton,radiotherapy,meadowlands,gunma,srebrenica,foxtel,authenticated,enslavement,classicist,klaipeda,minstrels,searchable,infantrymen,incitement,shiga,nadp+,urals,guilders,banquets,exteriors,counterattacks,visualized,diacritics,patrimony,svensson,transepts,prizren,telegraphy,najaf,emblazoned,coupes,effluent,ragam,omani,greensburg,taino,flintshire,cd/dvd,lobbies,narrating,cacao,seafarers,bicolor,collaboratively,suraj,floodlit,sacral,puppetry,tlingit,malwa,login,motionless,thien,overseers,vihar,golem,specializations,bathhouse,priming,overdubs,winningest,archetypes,uniao,acland,creamery,slovakian,lithographs,maryborough,confidently,excavating,stillborn,ramallah,audiencia,alava,ternary,hermits,rostam,bauxite,gawain,lothair,captions,gulfstream,timelines,receded,mediating,petain,bastia,rudbar,bidders,disclaimer,shrews,tailings,trilobites,yuriy,jamil,demotion,gynecology,rajinikanth,madrigals,ghazni,flycatchers,vitebsk,bizet,computationally,kashgar,refinements,frankford,heralds,europe/africa,levante,disordered,sandringham,queues,ransacked,trebizond,verdes,comedie,primitives,figurine,organists,culminate,gosport,coagulation,ferrying,hoyas,polyurethane,prohibitive,midfielders,ligase,progesterone,defectors,sweetened,backcountry,diodorus,waterside,nieuport,khwaja,jurong,decried,gorkha,ismaili,300th,octahedral,kindergartens,paseo,codification,notifications,disregarding,risque,reconquista,shortland,atolls,texarkana,perceval,d'etudes,kanal,herbicides,tikva,nuova,gatherer,dissented,soweto,dexterity,enver,bacharach,placekicker,carnivals,automate,maynooth,symplectic,chetnik,militaire,upanishads,distributive,strafing,championing,moiety,miliband,blackadder,enforceable,maung,dimer,stadtbahn,diverges,obstructions,coleophoridae,disposals,shamrocks,aural,banca,bahru,coxed,grierson,vanadium,watermill,radiative,ecoregions,berets,hariri,bicarbonate,evacuations,mallee,nairn,rushden,loggia,slupsk,satisfactorily,milliseconds,cariboo,reine,cyclo,pigmentation,postmodernism,aqueducts,vasari,bourgogne,dilemmas,liquefied,fluminense,alloa,ibaraki,tenements,kumasi,humerus,raghu,labours,putsch,soundcloud,bodybuilder,rakyat,domitian,pesaro,translocation,sembilan,homeric,enforcers,tombstones,lectureship,rotorua,salamis,nikolaos,inferences,superfortress,lithgow,surmised,undercard,tarnow,barisan,stingrays,federacion,coldstream,haverford,ornithological,heerenveen,eleazar,jyoti,murali,bamako,riverbed,subsidised,theban,conspicuously,vistas,conservatorium,madrasa,kingfishers,arnulf,credential,syndicalist,sheathed,discontinuity,prisms,tsushima,coastlines,escapees,vitis,optimizing,megapixel,overground,embattled,halide,sprinters,buoys,mpumalanga,peculiarities,106th,roamed,menezes,macao,prelates,papyri,freemen,dissertations,irishmen,pooled,sverre,reconquest,conveyance,subjectivity,asturian,circassian,formula_45,comdr,thickets,unstressed,monro,passively,harmonium,moveable,dinar,carlsson,elysees,chairing,b'nai,confusingly,kaoru,convolution,godolphin,facilitator,saxophones,eelam,jebel,copulation,anions,livres,licensure,pontypridd,arakan,controllable,alessandria,propelling,stellenbosch,tiber,wolka,liberators,yarns,d'azur,tsinghua,semnan,amhara,ablation,melies,tonality,historique,beeston,kahne,intricately,sonoran,robespierre,gyrus,boycotts,defaulted,infill,maranhao,emigres,framingham,paraiba,wilhelmshaven,tritium,skyway,labial,supplementation,possessor,underserved,motets,maldivian,marrakech,quays,wikimedia,turbojet,demobilization,petrarch,encroaching,sloops,masted,karbala,corvallis,agribusiness,seaford,stenosis,hieronymus,irani,superdraft,baronies,cortisol,notability,veena,pontic,cyclin,archeologists,newham,culled,concurring,aeolian,manorial,shouldered,fords,philanthropists,105th,siddharth,gotthard,halim,rajshahi,jurchen,detritus,practicable,earthenware,discarding,travelogue,neuromuscular,elkhart,raeder,zygmunt,metastasis,internees,102nd,vigour,upmarket,summarizing,subjunctive,offsets,elizabethtown,udupi,pardubice,repeaters,instituting,archaea,substandard,technische,linga,anatomist,flourishes,velika,tenochtitlan,evangelistic,fitchburg,springbok,cascading,hydrostatic,avars,occasioned,filipina,perceiving,shimbun,africanus,consternation,tsing,optically,beitar,45deg,abutments,roseville,monomers,huelva,lotteries,hypothalamus,internationalist,electromechanical,hummingbirds,fibreglass,salaried,dramatists,uncovers,invokes,earners,excretion,gelding,ancien,aeronautica,haverhill,stour,ittihad,abramoff,yakov,ayodhya,accelerates,industrially,aeroplanes,deleterious,dwelt,belvoir,harpalus,atpase,maluku,alasdair,proportionality,taran,epistemological,interferometer,polypeptide,adjudged,villager,metastatic,marshalls,madhavan,archduchess,weizmann,kalgoorlie,balan,predefined,sessile,sagaing,brevity,insecticide,psychosocial,africana,steelworks,aether,aquifers,belem,mineiro,almagro,radiators,cenozoic,solute,turbocharger,invicta,guested,buccaneer,idolatry,unmatched,paducah,sinestro,dispossessed,conforms,responsiveness,cyanobacteria,flautist,procurator,complementing,semifinalist,rechargeable,permafrost,cytokine,refuges,boomed,gelderland,franchised,jinan,burnie,doubtless,randomness,colspan=12,angra,ginebra,famers,nuestro,declarative,roughness,lauenburg,motile,rekha,issuer,piney,interceptors,napoca,gipsy,formulaic,formula_44,viswanathan,ebrahim,thessalonica,galeria,muskogee,unsold,html5,taito,mobutu,icann,carnarvon,fairtrade,morphisms,upsilon,nozzles,fabius,meander,murugan,strontium,episcopacy,sandinista,parasol,attenuated,bhima,primeval,panay,ordinator,negara,osteoporosis,glossop,ebook,paradoxically,grevillea,modoc,equating,phonetically,legumes,covariant,dorje,quatre,bruxelles,pyroclastic,shipbuilder,zhaozong,obscuring,sveriges,tremolo,extensible,barrack,multnomah,hakon,chaharmahal,parsing,volumetric,astrophysical,glottal,combinatorics,freestanding,encoder,paralysed,cavalrymen,taboos,heilbronn,orientalis,lockport,marvels,ozawa,dispositions,waders,incurring,saltire,modulate,papilio,phenol,intermedia,rappahannock,plasmid,fortify,phenotypes,transiting,correspondences,leaguer,larnaca,incompatibility,mcenroe,deeming,endeavoured,aboriginals,helmed,salar,arginine,werke,ferrand,expropriated,delimited,couplets,phoenicians,petioles,ouster,anschluss,protectionist,plessis,urchins,orquesta,castleton,juniata,bittorrent,fulani,donji,mykola,rosemont,chandos,scepticism,signer,chalukya,wicketkeeper,coquitlam,programmatic,o'brian,carteret,urology,steelhead,paleocene,konkan,bettered,venkatesh,surfacing,longitudinally,centurions,popularization,yazid,douro,widths,premios,leonards,gristmill,fallujah,arezzo,leftists,ecliptic,glycerol,inaction,disenfranchised,acrimonious,depositing,parashah,cockatoo,marechal,bolzano,chios,cablevision,impartiality,pouches,thickly,equities,bentinck,emotive,boson,ashdown,conquistadors,parsi,conservationists,reductive,newlands,centerline,ornithologists,waveguide,nicene,philological,hemel,setanta,masala,aphids,convening,casco,matrilineal,chalcedon,orthographic,hythe,replete,damming,bolivarian,admixture,embarks,borderlands,conformed,nagarjuna,blenny,chaitanya,suwon,shigeru,tatarstan,lingayen,rejoins,grodno,merovingian,hardwicke,puducherry,prototyping,laxmi,upheavals,headquarter,pollinators,bromine,transom,plantagenet,arbuthnot,chidambaram,woburn,osamu,panelling,coauthored,zhongshu,hyaline,omissions,aspergillus,offensively,electrolytic,woodcut,sodom,intensities,clydebank,piotrkow,supplementing,quipped,focke,harbinger,positivism,parklands,wolfenbuttel,cauca,tryptophan,taunus,curragh,tsonga,remand,obscura,ashikaga,eltham,forelimbs,analogs,trnava,observances,kailash,antithesis,ayumi,abyssinia,dorsally,tralee,pursuers,misadventures,padova,perot,mahadev,tarim,granth,licenced,compania,patuxent,baronial,korda,cochabamba,codices,karna,memorialized,semaphore,playlists,mandibular,halal,sivaji,scherzinger,stralsund,foundries,ribosome,mindfulness,nikolayevich,paraphyletic,newsreader,catalyze,ioannina,thalamus,gbit/s,paymaster,sarab,500th,replenished,gamepro,cracow,formula_46,gascony,reburied,lessing,easement,transposed,meurthe,satires,proviso,balthasar,unbound,cuckoos,durbar,louisbourg,cowes,wholesalers,manet,narita,xiaoping,mohamad,illusory,cathal,reuptake,alkaloid,tahrir,mmorpg,underlies,anglicanism,repton,aharon,exogenous,buchenwald,indigent,odostomia,milled,santorum,toungoo,nevsky,steyr,urbanisation,darkseid,subsonic,canaanite,akiva,eglise,dentition,mediators,cirencester,peloponnesian,malmesbury,durres,oerlikon,tabulated,saens,canaria,ischemic,esterhazy,ringling,centralization,walthamstow,nalanda,lignite,takht,leninism,expiring,circe,phytoplankton,promulgation,integrable,breeches,aalto,menominee,borgo,scythians,skrull,galleon,reinvestment,raglan,reachable,liberec,airframes,electrolysis,geospatial,rubiaceae,interdependence,symmetrically,simulcasts,keenly,mauna,adipose,zaidi,fairport,vestibular,actuators,monochromatic,literatures,congestive,sacramental,atholl,skytrain,tycho,tunings,jamia,catharina,modifier,methuen,tapings,infiltrating,colima,grafting,tauranga,halides,pontificate,phonetics,koper,hafez,grooved,kintetsu,extrajudicial,linkoping,cyberpunk,repetitions,laurentian,parnu,bretton,darko,sverdlovsk,foreshadowed,akhenaten,rehnquist,gosford,coverts,pragmatism,broadleaf,ethiopians,instated,mediates,sodra,opulent,descriptor,enugu,shimla,leesburg,officership,giffard,refectory,lusitania,cybermen,fiume,corus,tydfil,lawrenceville,ocala,leviticus,burghers,ataxia,richthofen,amicably,acoustical,watling,inquired,tiempo,multiracial,parallelism,trenchard,tokyopop,germanium,usisl,philharmonia,shapur,jacobites,latinized,sophocles,remittances,o'farrell,adder,dimitrios,peshwa,dimitar,orlov,outstretched,musume,satish,dimensionless,serialised,baptisms,pagasa,antiviral,1740s,quine,arapaho,bombardments,stratosphere,ophthalmic,injunctions,carbonated,nonviolence,asante,creoles,sybra,boilermakers,abington,bipartite,permissive,cardinality,anheuser,carcinogenic,hohenlohe,surinam,szeged,infanticide,generically,floorball,'white,automakers,cerebellar,homozygous,remoteness,effortlessly,allude,'great,headmasters,minting,manchurian,kinabalu,wemyss,seditious,widgets,marbled,almshouses,bards,subgenres,tetsuya,faulting,kickboxer,gaulish,hoseyn,malton,fluvial,questionnaires,mondale,downplayed,traditionalists,vercelli,sumatran,landfills,gamesradar,exerts,franciszek,unlawfully,huesca,diderot,libertarians,professorial,laane,piecemeal,conidae,taiji,curatorial,perturbations,abstractions,szlachta,watercraft,mullah,zoroastrianism,segmental,khabarovsk,rectors,affordability,scuola,diffused,stena,cyclonic,workpiece,romford,'little,jhansi,stalag,zhongshan,skipton,maracaibo,bernadotte,thanet,groening,waterville,encloses,sahrawi,nuffield,moorings,chantry,annenberg,islay,marchers,tenses,wahid,siegen,furstenberg,basques,resuscitation,seminarians,tympanum,gentiles,vegetarianism,tufted,venkata,fantastical,pterophoridae,machined,superposition,glabrous,kaveri,chicane,executors,phyllonorycter,bidirectional,jasta,undertones,touristic,majapahit,navratilova,unpopularity,barbadian,tinian,webcast,hurdler,rigidly,jarrah,staphylococcus,igniting,irrawaddy,stabilised,airstrike,ragas,wakayama,energetically,ekstraklasa,minibus,largemouth,cultivators,leveraging,waitangi,carnaval,weaves,turntables,heydrich,sextus,excavate,govind,ignaz,pedagogue,uriah,borrowings,gemstones,infractions,mycobacterium,batavian,massing,praetor,subalpine,massoud,passers,geostationary,jalil,trainsets,barbus,impair,budejovice,denbigh,pertain,historicity,fortaleza,nederlandse,lamenting,masterchef,doubs,gemara,conductance,ploiesti,cetaceans,courthouses,bhagavad,mihailovic,occlusion,bremerhaven,bulwark,morava,kaine,drapery,maputo,conquistador,kaduna,famagusta,first-past-the-post,erudite,galton,undated,tangential,filho,dismembered,dashes,criterium,darwen,metabolized,blurring,everard,randwick,mohave,impurity,acuity,ansbach,chievo,surcharge,plantain,algoma,porosity,zirconium,selva,sevenoaks,venizelos,gwynne,golgi,imparting,separatism,courtesan,idiopathic,gravestones,hydroelectricity,babar,orford,purposeful,acutely,shard,ridgewood,viterbo,manohar,expropriation,placenames,brevis,cosine,unranked,richfield,newnham,recoverable,flightless,dispersing,clearfield,abu'l,stranraer,kempe,streamlining,goswami,epidermal,pieta,conciliatory,distilleries,electrophoresis,bonne,tiago,curiosities,candidature,picnicking,perihelion,lintel,povoa,gullies,configure,excision,facies,signers,1730s,insufficiency,semiotics,streatham,deactivation,entomological,skippers,albacete,parodying,escherichia,honorees,singaporeans,counterterrorism,tiruchirappalli,omnivorous,metropole,globalisation,athol,unbounded,codice_5,landforms,classifier,farmhouses,reaffirming,reparation,yomiuri,technologists,mitte,medica,viewable,steampunk,konya,kshatriya,repelling,edgewater,lamiinae,devas,potteries,llandaff,engendered,submits,virulence,uplifted,educationist,metropolitans,frontrunner,dunstable,forecastle,frets,methodius,exmouth,linnean,bouchet,repulsion,computable,equalling,liceo,tephritidae,agave,hydrological,azarenka,fairground,l'homme,enforces,xinhua,cinematographers,cooperstown,sa'id,paiute,christianization,tempos,chippenham,insulator,kotor,stereotyped,dello,cours,hisham,d'souza,eliminations,supercars,passau,rebrand,natures,coote,persephone,rededicated,cleaved,plenum,blistering,indiscriminately,cleese,safed,recursively,compacted,revues,hydration,shillong,echelons,garhwal,pedimented,grower,zwolle,wildflower,annexing,methionine,petah,valens,famitsu,petiole,specialities,nestorian,shahin,tokaido,shearwater,barberini,kinsmen,experimenter,alumnae,cloisters,alumina,pritzker,hardiness,soundgarden,julich,ps300,watercourse,cementing,wordplay,olivet,demesne,chasseurs,amide,zapotec,gaozu,porphyry,absorbers,indium,analogies,devotions,engravers,limestones,catapulted,surry,brickworks,gotra,rodham,landline,paleontologists,shankara,islip,raucous,trollope,arpad,embarkation,morphemes,recites,picardie,nakhchivan,tolerances,formula_47,khorramabad,nichiren,adrianople,kirkuk,assemblages,collider,bikaner,bushfires,roofline,coverings,reredos,bibliotheca,mantras,accentuated,commedia,rashtriya,fluctuation,serhiy,referential,fittipaldi,vesicle,geeta,iraklis,immediacy,chulalongkorn,hunsruck,bingen,dreadnoughts,stonemason,meenakshi,lebesgue,undergrowth,baltistan,paradoxes,parlement,articled,tiflis,dixieland,meriden,tejano,underdogs,barnstable,exemplify,venter,tropes,wielka,kankakee,iskandar,zilina,pharyngeal,spotify,materialised,picts,atlantique,theodoric,prepositions,paramilitaries,pinellas,attlee,actuated,piedmontese,grayling,thucydides,multifaceted,unedited,autonomously,universelle,utricularia,mooted,preto,incubated,underlie,brasenose,nootka,bushland,sensu,benzodiazepine,esteghlal,seagoing,amenhotep,azusa,sappers,culpeper,smokeless,thoroughbreds,dargah,gorda,alumna,mankato,zdroj,deleting,culvert,formula_49,punting,wushu,hindering,immunoglobulin,standardisation,birger,oilfield,quadrangular,ulama,recruiters,netanya,1630s,communaute,istituto,maciej,pathan,meher,vikas,characterizations,playmaker,interagency,intercepts,assembles,horthy,introspection,narada,matra,testes,radnicki,estonians,csiro,instar,mitford,adrenergic,crewmembers,haaretz,wasatch,lisburn,rangefinder,ordre,condensate,reforestation,corregidor,spvgg,modulator,mannerist,faulted,aspires,maktoum,squarepants,aethelred,piezoelectric,mulatto,dacre,progressions,jagiellonian,norge,samaria,sukhoi,effingham,coxless,hermetic,humanists,centrality,litters,stirlingshire,beaconsfield,sundanese,geometrically,caretakers,habitually,bandra,pashtuns,bradenton,arequipa,laminar,brickyard,hitchin,sustains,shipboard,ploughing,trechus,wheelers,bracketed,ilyushin,subotica,d'hondt,reappearance,bridgestone,intermarried,fulfilment,aphasia,birkbeck,transformational,strathmore,hornbill,millstone,lacan,voids,solothurn,gymnasiums,laconia,viaducts,peduncle,teachta,edgware,shinty,supernovae,wilfried,exclaim,parthia,mithun,flashpoint,moksha,cumbia,metternich,avalanches,militancy,motorist,rivadavia,chancellorsville,federals,gendered,bounding,footy,gauri,caliphs,lingam,watchmaker,unrecorded,riverina,unmodified,seafloor,droit,pfalz,chrysostom,gigabit,overlordship,besiege,espn2,oswestry,anachronistic,ballymena,reactivation,duchovny,ghani,abacetus,duller,legio,watercourses,nord-pas-de-calais,leiber,optometry,swarms,installer,sancti,adverbs,iheartmedia,meiningen,zeljko,kakheti,notional,circuses,patrilineal,acrobatics,infrastructural,sheva,oregonian,adjudication,aamir,wloclawek,overfishing,obstructive,subtracting,aurobindo,archeologist,newgate,'cause,secularization,tehsils,abscess,fingal,janacek,elkhorn,trims,kraftwerk,mandating,irregulars,faintly,congregationalist,sveti,kasai,mishaps,kennebec,provincially,durkheim,scotties,aicte,rapperswil,imphal,surrenders,morphs,nineveh,hoxha,cotabato,thuringian,metalworking,retold,shogakukan,anthers,proteasome,tippeligaen,disengagement,mockumentary,palatial,erupts,flume,corrientes,masthead,jaroslaw,rereleased,bharti,labors,distilling,tusks,varzim,refounded,enniskillen,melkite,semifinalists,vadodara,bermudian,capstone,grasse,origination,populus,alesi,arrondissements,semigroup,verein,opossum,messrs.,portadown,bulbul,tirupati,mulhouse,tetrahedron,roethlisberger,nonverbal,connexion,warangal,deprecated,gneiss,octet,vukovar,hesketh,chambre,despatch,claes,kargil,hideo,gravelly,tyndale,aquileia,tuners,defensible,tutte,theotokos,constructivist,ouvrage,dukla,polisario,monasticism,proscribed,commutation,testers,nipissing,codon,mesto,olivine,concomitant,exoskeleton,purports,coromandel,eyalet,dissension,hippocrates,purebred,yaounde,composting,oecophoridae,procopius,o'day,angiogenesis,sheerness,intelligencer,articular,felixstowe,aegon,endocrinology,trabzon,licinius,pagodas,zooplankton,hooghly,satie,drifters,sarthe,mercian,neuilly,tumours,canal+,scheldt,inclinations,counteroffensive,roadrunners,tuzla,shoreditch,surigao,predicates,carnot,algeciras,militaries,generalize,bulkheads,gawler,pollutant,celta,rundgren,microrna,gewog,olimpija,placental,lubelski,roxburgh,discerned,verano,kikuchi,musicale,l'enfant,ferocity,dimorphic,antigonus,erzurum,prebendary,recitative,discworld,cyrenaica,stigmella,totnes,sutta,pachuca,ulsan,downton,landshut,castellan,pleural,siedlce,siecle,catamaran,cottbus,utilises,trophic,freeholders,holyhead,u.s.s,chansons,responder,waziristan,suzuka,birding,shogi,asker,acetone,beautification,cytotoxic,dixit,hunterdon,cobblestone,formula_48,kossuth,devizes,sokoto,interlaced,shuttered,kilowatts,assiniboine,isaak,salto,alderney,sugarloaf,franchising,aggressiveness,toponyms,plaintext,antimatter,henin,equidistant,salivary,bilingualism,mountings,obligate,extirpated,irenaeus,misused,pastoralists,aftab,immigrating,warping,tyrolean,seaforth,teesside,soundwave,oligarchy,stelae,pairwise,iupac,tezuka,posht,orchestrations,landmass,ironstone,gallia,hjalmar,carmelites,strafford,elmhurst,palladio,fragility,teleplay,gruffudd,karoly,yerba,potok,espoo,inductance,macaque,nonprofits,pareto,rock'n'roll,spiritualist,shadowed,skateboarder,utterances,generality,congruence,prostrate,deterred,yellowknife,albarn,maldon,battlements,mohsen,insecticides,khulna,avellino,menstruation,glutathione,springdale,parlophone,confraternity,korps,countrywide,bosphorus,preexisting,damodar,astride,alexandrovich,sprinting,crystallized,botev,leaching,interstates,veers,angevin,undaunted,yevgeni,nishapur,northerners,alkmaar,bethnal,grocers,sepia,tornus,exemplar,trobe,charcot,gyeonggi,larne,tournai,lorain,voided,genji,enactments,maxilla,adiabatic,eifel,nazim,transducer,thelonious,pyrite,deportiva,dialectal,bengt,rosettes,labem,sergeyevich,synoptic,conservator,statuette,biweekly,adhesives,bifurcation,rajapaksa,mammootty,republique,yusef,waseda,marshfield,yekaterinburg,minnelli,fundy,fenian,matchups,dungannon,supremacist,panelled,drenthe,iyengar,fibula,narmada,homeport,oceanside,precept,antibacterial,altarpieces,swath,ospreys,lillooet,legnica,lossless,formula_50,galvatron,iorga,stormont,rsfsr,loggers,kutno,phenomenological,medallists,cuatro,soissons,homeopathy,bituminous,injures,syndicates,typesetting,displacements,dethroned,makassar,lucchese,abergavenny,targu,alborz,akb48,boldface,gastronomy,sacra,amenity,accumulator,myrtaceae,cornices,mourinho,denunciation,oxbow,diddley,aargau,arbitrage,bedchamber,gruffydd,zamindar,klagenfurt,caernarfon,slowdown,stansted,abrasion,tamaki,suetonius,dukakis,individualistic,ventrally,hotham,perestroika,ketones,fertilisation,sobriquet,couplings,renderings,misidentified,rundfunk,sarcastically,braniff,concours,dismissals,elegantly,modifiers,crediting,combos,crucially,seafront,lieut,ischemia,manchus,derivations,proteases,aristophanes,adenauer,porting,hezekiah,sante,trulli,hornblower,foreshadowing,ypsilanti,dharwad,khani,hohenstaufen,distillers,cosmodrome,intracranial,turki,salesian,gorzow,jihlava,yushchenko,leichhardt,venables,cassia,eurogamer,airtel,curative,bestsellers,timeform,sortied,grandview,massillon,ceding,pilbara,chillicothe,heredity,elblag,rogaland,ronne,millennial,batley,overuse,bharata,fille,campbelltown,abeyance,counterclockwise,250cc,neurodegenerative,consigned,electromagnetism,sunnah,saheb,exons,coxswain,gleaned,bassoons,worksop,prismatic,immigrate,pickets,takeo,bobsledder,stosur,fujimori,merchantmen,stiftung,forli,endorses,taskforce,thermally,atman,gurps,floodplains,enthalpy,extrinsic,setubal,kennesaw,grandis,scalability,durations,showrooms,prithvi,outro,overruns,andalucia,amanita,abitur,hipper,mozambican,sustainment,arsene,chesham,palaeolithic,reportage,criminality,knowsley,haploid,atacama,shueisha,ridgefield,astern,getafe,lineal,timorese,restyled,hollies,agincourt,unter,justly,tannins,mataram,industrialised,tarnovo,mumtaz,mustapha,stretton,synthetase,condita,allround,putra,stjepan,troughs,aechmea,specialisation,wearable,kadokawa,uralic,aeros,messiaen,existentialism,jeweller,effigies,gametes,fjordane,cochlear,interdependent,demonstrative,unstructured,emplacement,famines,spindles,amplitudes,actuator,tantalum,psilocybe,apnea,monogatari,expulsions,seleucus,tsuen,hospitaller,kronstadt,eclipsing,olympiakos,clann,canadensis,inverter,helio,egyptologist,squamous,resonate,munir,histology,torbay,khans,jcpenney,veterinarians,aintree,microscopes,colonised,reflectors,phosphorylated,pristimantis,tulare,corvinus,multiplexing,midweek,demosthenes,transjordan,ecija,tengku,vlachs,anamorphic,counterweight,radnor,trinitarian,armidale,maugham,njsiaa,futurism,stairways,avicenna,montebello,bridgetown,wenatchee,lyonnais,amass,surinamese,streptococcus,m*a*s*h,hydrogenation,frazioni,proscenium,kalat,pennsylvanian,huracan,tallying,kralove,nucleolar,phrygian,seaports,hyacinthe,ignace,donning,instalment,regnal,fonds,prawn,carell,folktales,goaltending,bracknell,vmware,patriarchy,mitsui,kragujevac,pythagoras,soult,thapa,disproved,suwalki,secures,somoza,l'ecole,divizia,chroma,herders,technologist,deduces,maasai,rampur,paraphrase,raimi,imaged,magsaysay,ivano,turmeric,formula_51,subcommittees,axillary,ionosphere,organically,indented,refurbishing,pequot,violinists,bearn,colle,contralto,silverton,mechanization,etruscans,wittelsbach,pasir,redshirted,marrakesh,scarp,plein,wafers,qareh,teotihuacan,frobenius,sinensis,rehoboth,bundaberg,newbridge,hydrodynamic,traore,abubakar,adjusts,storytellers,dynamos,verbandsliga,concertmaster,exxonmobil,appreciable,sieradz,marchioness,chaplaincy,rechristened,cunxu,overpopulation,apolitical,sequencer,beaked,nemanja,binaries,intendant,absorber,filamentous,indebtedness,nusra,nashik,reprises,psychedelia,abwehr,ligurian,isoform,resistive,pillaging,mahathir,reformatory,lusatia,allerton,ajaccio,tepals,maturin,njcaa,abyssinian,objector,fissures,sinuous,ecclesiastic,dalits,caching,deckers,phosphates,wurlitzer,navigated,trofeo,berea,purefoods,solway,unlockable,grammys,kostroma,vocalizations,basilan,rebuke,abbasi,douala,helsingborg,ambon,bakar,runestones,cenel,tomislav,pigmented,northgate,excised,seconda,kirke,determinations,dedicates,vilas,pueblos,reversion,unexploded,overprinted,ekiti,deauville,masato,anaesthesia,endoplasmic,transponders,aguascalientes,hindley,celluloid,affording,bayeux,piaget,rickshaws,eishockey,camarines,zamalek,undersides,hardwoods,hermitian,mutinied,monotone,blackmails,affixes,jpmorgan,habermas,mitrovica,paleontological,polystyrene,thana,manas,conformist,turbofan,decomposes,logano,castration,metamorphoses,patroness,herbicide,mikolaj,rapprochement,macroeconomics,barranquilla,matsudaira,lintels,femina,hijab,spotsylvania,morpheme,bitola,baluchistan,kurukshetra,otway,extrusion,waukesha,menswear,helder,trung,bingley,protester,boars,overhang,differentials,exarchate,hejaz,kumara,unjustified,timings,sharpness,nuovo,taisho,sundar,etc..,jehan,unquestionably,muscovy,daltrey,canute,paneled,amedeo,metroplex,elaborates,telus,tetrapods,dragonflies,epithets,saffir,parthenon,lucrezia,refitting,pentateuch,hanshin,montparnasse,lumberjacks,sanhedrin,erectile,odors,greenstone,resurgent,leszek,amory,substituents,prototypical,viewfinder,monck,universiteit,joffre,revives,chatillon,seedling,scherzo,manukau,ashdod,gympie,homolog,stalwarts,ruinous,weibo,tochigi,wallenberg,gayatri,munda,satyagraha,storefronts,heterogeneity,tollway,sportswriters,binocular,gendarmes,ladysmith,tikal,ortsgemeinde,ja'far,osmotic,linlithgow,bramley,telecoms,pugin,repose,rupaul,sieur,meniscus,garmisch,reintroduce,400th,shoten,poniatowski,drome,kazakhstani,changeover,astronautics,husserl,herzl,hypertext,katakana,polybius,antananarivo,seong,breguet,reliquary,utada,aggregating,liangshan,sivan,tonawanda,audiobooks,shankill,coulee,phenolic,brockton,bookmakers,handsets,boaters,wylde,commonality,mappings,silhouettes,pennines,maurya,pratchett,singularities,eschewed,pretensions,vitreous,ibero,totalitarianism,poulenc,lingered,directx,seasoning,deputation,interdict,illyria,feedstock,counterbalance,muzik,buganda,parachuted,violist,homogeneity,comix,fjords,corsairs,punted,verandahs,equilateral,laoghaire,magyars,117th,alesund,televoting,mayotte,eateries,refurbish,nswrl,yukio,caragiale,zetas,dispel,codecs,inoperable,outperformed,rejuvenation,elstree,modernise,contributory,pictou,tewkesbury,chechens,ashina,psionic,refutation,medico,overdubbed,nebulae,sandefjord,personages,eccellenza,businessperson,placename,abenaki,perryville,threshing,reshaped,arecibo,burslem,colspan=3|turnout,rebadged,lumia,erinsborough,interactivity,bitmap,indefatigable,theosophy,excitatory,gleizes,edsel,bermondsey,korce,saarinen,wazir,diyarbakir,cofounder,liberalisation,onsen,nighthawks,siting,retirements,semyon,d'histoire,114th,redditch,venetia,praha,'round,valdosta,hieroglyphic,postmedial,edirne,miscellany,savona,cockpits,minimization,coupler,jacksonian,appeasement,argentines,saurashtra,arkwright,hesiod,folios,fitzalan,publica,rivaled,civitas,beermen,constructivism,ribeira,zeitschrift,solanum,todos,deformities,chilliwack,verdean,meagre,bishoprics,gujrat,yangzhou,reentered,inboard,mythologies,virtus,unsurprisingly,rusticated,museu,symbolise,proportionate,thesaban,symbian,aeneid,mitotic,veliki,compressive,cisterns,abies,winemaker,massenet,bertolt,ahmednagar,triplemania,armorial,administracion,tenures,smokehouse,hashtag,fuerza,regattas,gennady,kanazawa,mahmudabad,crustal,asaph,valentinian,ilaiyaraaja,honeyeater,trapezoidal,cooperatively,unambiguously,mastodon,inhospitable,harnesses,riverton,renewables,djurgardens,haitians,airings,humanoids,boatswain,shijiazhuang,faints,veera,punjabis,steepest,narain,karlovy,serre,sulcus,collectives,1500m,arion,subarctic,liberally,apollonius,ostia,droplet,headstones,norra,robusta,maquis,veronese,imola,primers,luminance,escadrille,mizuki,irreconcilable,stalybridge,temur,paraffin,stuccoed,parthians,counsels,fundamentalists,vivendi,polymath,sugababes,mikko,yonne,fermions,vestfold,pastoralist,kigali,unseeded,glarus,cusps,amasya,northwesterly,minorca,astragalus,verney,trevelyan,antipathy,wollstonecraft,bivalves,boulez,royle,divisao,quranic,bareilly,coronal,deviates,lulea,erectus,petronas,chandan,proxies,aeroflot,postsynaptic,memoriam,moyne,gounod,kuznetsova,pallava,ordinating,reigate,'first,lewisburg,exploitative,danby,academica,bailiwick,brahe,injective,stipulations,aeschylus,computes,gulden,hydroxylase,liveries,somalis,underpinnings,muscovite,kongsberg,domus,overlain,shareware,variegated,jalalabad,agence,ciphertext,insectivores,dengeki,menuhin,cladistic,baerum,betrothal,tokushima,wavelet,expansionist,pottsville,siyuan,prerequisites,carpi,nemzeti,nazar,trialled,eliminator,irrorated,homeward,redwoods,undeterred,strayed,lutyens,multicellular,aurelian,notated,lordships,alsatian,idents,foggia,garros,chalukyas,lillestrom,podlaski,pessimism,hsien,demilitarized,whitewashed,willesden,kirkcaldy,sanctorum,lamia,relaying,escondido,paediatric,contemplates,demarcated,bluestone,betula,penarol,capitalise,kreuznach,kenora,115th,hold'em,reichswehr,vaucluse,m.i.a,windings,boys/girls,cajon,hisar,predictably,flemington,ysgol,mimicked,clivina,grahamstown,ionia,glyndebourne,patrese,aquaria,sleaford,dayal,sportscenter,malappuram,m.b.a.,manoa,carbines,solvable,designator,ramanujan,linearity,academicians,sayid,lancastrian,factorial,strindberg,vashem,delos,comyn,condensing,superdome,merited,kabaddi,intransitive,bideford,neuroimaging,duopoly,scorecards,ziggler,heriot,boyars,virology,marblehead,microtubules,westphalian,anticipates,hingham,searchers,harpist,rapides,morricone,convalescent,mises,nitride,metrorail,matterhorn,bicol,drivetrain,marketer,snippet,winemakers,muban,scavengers,halberstadt,herkimer,peten,laborious,stora,montgomeryshire,booklist,shamir,herault,eurostar,anhydrous,spacewalk,ecclesia,calliostoma,highschool,d'oro,suffusion,imparts,overlords,tagus,rectifier,counterinsurgency,ministered,eilean,milecastle,contre,micromollusk,okhotsk,bartoli,matroid,hasidim,thirunal,terme,tarlac,lashkar,presque,thameslink,flyby,troopship,renouncing,fatih,messrs,vexillum,bagration,magnetite,bornholm,androgynous,vehement,tourette,philosophic,gianfranco,tuileries,codice_6,radially,flexion,hants,reprocessing,setae,burne,palaeographically,infantryman,shorebirds,tamarind,moderna,threading,militaristic,crohn,norrkoping,125cc,stadtholder,troms,klezmer,alphanumeric,brome,emmanuelle,tiwari,alchemical,formula_52,onassis,bleriot,bipedal,colourless,hermeneutics,hosni,precipitating,turnstiles,hallucinogenic,panhellenic,wyandotte,elucidated,chita,ehime,generalised,hydrophilic,biota,niobium,rnzaf,gandhara,longueuil,logics,sheeting,bielsko,cuvier,kagyu,trefoil,docent,pancrase,stalinism,postures,encephalopathy,monckton,imbalances,epochs,leaguers,anzio,diminishes,pataki,nitrite,amuro,nabil,maybach,l'aquila,babbler,bacolod,thutmose,evora,gaudi,breakage,recur,preservative,60deg,mendip,functionaries,columnar,maccabiah,chert,verden,bromsgrove,clijsters,dengue,pastorate,phuoc,principia,viareggio,kharagpur,scharnhorst,anyang,bosons,l'art,criticises,ennio,semarang,brownian,mirabilis,asperger,calibers,typographical,cartooning,minos,disembark,supranational,undescribed,etymologically,alappuzha,vilhelm,lanao,pakenham,bhagavata,rakoczi,clearings,astrologers,manitowoc,bunuel,acetylene,scheduler,defamatory,trabzonspor,leaded,scioto,pentathlete,abrahamic,minigames,aldehydes,peerages,legionary,1640s,masterworks,loudness,bryansk,likeable,genocidal,vegetated,towpath,declination,pyrrhus,divinely,vocations,rosebery,associazione,loaders,biswas,oeste,tilings,xianzong,bhojpuri,annuities,relatedness,idolator,psers,constriction,chuvash,choristers,hanafi,fielders,grammarian,orpheum,asylums,millbrook,gyatso,geldof,stabilise,tableaux,diarist,kalahari,panini,cowdenbeath,melanin,4x100m,resonances,pinar,atherosclerosis,sheringham,castlereagh,aoyama,larks,pantograph,protrude,natak,gustafsson,moribund,cerevisiae,cleanly,polymeric,holkar,cosmonauts,underpinning,lithosphere,firuzabad,languished,mingled,citrate,spadina,lavas,daejeon,fibrillation,porgy,pineville,ps1000,cobbled,emamzadeh,mukhtar,dampers,indelible,salonika,nanoscale,treblinka,eilat,purporting,fluctuate,mesic,hagiography,cutscenes,fondation,barrens,comically,accrue,ibrox,makerere,defections,'there,hollandia,skene,grosseto,reddit,objectors,inoculation,rowdies,playfair,calligrapher,namor,sibenik,abbottabad,propellants,hydraulically,chloroplasts,tablelands,tecnico,schist,klasse,shirvan,bashkortostan,bullfighting,north/south,polski,hanns,woodblock,kilmore,ejecta,ignacy,nanchang,danubian,commendations,snohomish,samaritans,argumentation,vasconcelos,hedgehogs,vajrayana,barents,kulkarni,kumbakonam,identifications,hillingdon,weirs,nayanar,beauvoir,messe,divisors,atlantiques,broods,affluence,tegucigalpa,unsuited,autodesk,akash,princeps,culprits,kingstown,unassuming,goole,visayan,asceticism,blagojevich,irises,paphos,unsound,maurier,pontchartrain,desertification,sinfonietta,latins,especial,limpet,valerenga,glial,brainstem,mitral,parables,sauropod,judean,iskcon,sarcoma,venlo,justifications,zhuhai,blavatsky,alleviated,usafe,steppenwolf,inversions,janko,chagall,secretory,basildon,saguenay,pergamon,hemispherical,harmonized,reloading,franjo,domaine,extravagance,relativism,metamorphosed,labuan,baloncesto,gmail,byproducts,calvinists,counterattacked,vitus,bubonic,120th,strachey,ritually,brookwood,selectable,savinja,incontinence,meltwater,jinja,1720s,brahmi,morgenthau,sheaves,sleeved,stratovolcano,wielki,utilisation,avoca,fluxus,panzergrenadier,philately,deflation,podlaska,prerogatives,kuroda,theophile,zhongzong,gascoyne,magus,takao,arundell,fylde,merdeka,prithviraj,venkateswara,liepaja,daigo,dreamland,reflux,sunnyvale,coalfields,seacrest,soldering,flexor,structuralism,alnwick,outweighed,unaired,mangeshkar,batons,glaad,banshees,irradiated,organelles,biathlete,cabling,chairlift,lollapalooza,newsnight,capacitive,succumbs,flatly,miramichi,burwood,comedienne,charteris,biotic,workspace,aficionados,sokolka,chatelet,o'shaughnessy,prosthesis,neoliberal,refloated,oppland,hatchlings,econometrics,loess,thieu,androids,appalachians,jenin,pterostichinae,downsized,foils,chipsets,stencil,danza,narrate,maginot,yemenite,bisects,crustacean,prescriptive,melodious,alleviation,empowers,hansson,autodromo,obasanjo,osmosis,daugava,rheumatism,moraes,leucine,etymologies,chepstow,delaunay,bramall,bajaj,flavoring,approximates,marsupials,incisive,microcomputer,tactically,waals,wilno,fisichella,ursus,hindmarsh,mazarin,lomza,xenophobia,lawlessness,annecy,wingers,gornja,gnaeus,superieur,tlaxcala,clasps,symbolises,slats,rightist,effector,blighted,permanence,divan,progenitors,kunsthalle,anointing,excelling,coenzyme,indoctrination,dnipro,landholdings,adriaan,liturgies,cartan,ethmia,attributions,sanctus,trichy,chronicon,tancred,affinis,kampuchea,gantry,pontypool,membered,distrusted,fissile,dairies,hyposmocoma,craigie,adarsh,martinsburg,taxiway,30deg,geraint,vellum,bencher,khatami,formula_53,zemun,teruel,endeavored,palmares,pavements,u.s..,internationalization,satirized,carers,attainable,wraparound,muang,parkersburg,extinctions,birkenfeld,wildstorm,payers,cohabitation,unitas,culloden,capitalizing,clwyd,daoist,campinas,emmylou,orchidaceae,halakha,orientales,fealty,domnall,chiefdom,nigerians,ladislav,dniester,avowed,ergonomics,newsmagazine,kitsch,cantilevered,benchmarking,remarriage,alekhine,coldfield,taupo,almirante,substations,apprenticeships,seljuq,levelling,eponym,symbolising,salyut,opioids,underscore,ethnologue,mohegan,marikina,libro,bassano,parse,semantically,disjointed,dugdale,padraig,tulsi,modulating,xfinity,headlands,mstislav,earthworms,bourchier,lgbtq,embellishments,pennants,rowntree,betel,motet,mulla,catenary,washoe,mordaunt,dorking,colmar,girardeau,glentoran,grammatically,samad,recreations,technion,staccato,mikoyan,spoilers,lyndhurst,victimization,chertsey,belafonte,tondo,tonsberg,narrators,subcultures,malformations,edina,augmenting,attests,euphemia,cabriolet,disguising,1650s,navarrese,demoralized,cardiomyopathy,welwyn,wallachian,smoothness,planktonic,voles,issuers,sardasht,survivability,cuauhtemoc,thetis,extruded,signet,raghavan,lombok,eliyahu,crankcase,dissonant,stolberg,trencin,desktops,bursary,collectivization,charlottenburg,triathlete,curvilinear,involuntarily,mired,wausau,invades,sundaram,deletions,bootstrap,abellio,axiomatic,noguchi,setups,malawian,visalia,materialist,kartuzy,wenzong,plotline,yeshivas,parganas,tunica,citric,conspecific,idlib,superlative,reoccupied,blagoevgrad,masterton,immunological,hatta,courbet,vortices,swallowtail,delves,haridwar,diptera,boneh,bahawalpur,angering,mardin,equipments,deployable,guanine,normality,rimmed,artisanal,boxset,chandrasekhar,jools,chenar,tanakh,carcassonne,belatedly,millville,anorthosis,reintegration,velde,surfactant,kanaan,busoni,glyphipterix,personas,fullness,rheims,tisza,stabilizers,bharathi,joost,spinola,mouldings,perching,esztergom,afzal,apostate,lustre,s.league,motorboat,monotheistic,armature,barat,asistencia,bloomsburg,hippocampal,fictionalised,defaults,broch,hexadecimal,lusignan,ryanair,boccaccio,breisgau,southbank,bskyb,adjoined,neurobiology,aforesaid,sadhu,langue,headship,wozniacki,hangings,regulus,prioritized,dynamism,allier,hannity,shimin,antoninus,gymnopilus,caledon,preponderance,melayu,electrodynamics,syncopated,ibises,krosno,mechanistic,morpeth,harbored,albini,monotheism,'real,hyperactivity,haveli,writer/director,minato,nimoy,caerphilly,chitral,amirabad,fanshawe,l'oreal,lorde,mukti,authoritarianism,valuing,spyware,hanbury,restarting,stato,embed,suiza,empiricism,stabilisation,stari,castlemaine,orbis,manufactory,mauritanian,shoji,taoyuan,prokaryotes,oromia,ambiguities,embodying,slims,frente,innovate,ojibwa,powdery,gaeltacht,argentinos,quatermass,detergents,fijians,adaptor,tokai,chileans,bulgars,oxidoreductases,bezirksliga,conceicao,myosin,nellore,500cc,supercomputers,approximating,glyndwr,polypropylene,haugesund,cockerell,tudman,ashbourne,hindemith,bloodlines,rigveda,etruria,romanos,steyn,oradea,deceleration,manhunter,laryngeal,fraudulently,janez,wendover,haplotype,janaki,naoki,belizean,mellencamp,cartographic,sadhana,tricolour,pseudoscience,satara,bytow,s.p.a.,jagdgeschwader,arcot,omagh,sverdrup,masterplan,surtees,apocrypha,ahvaz,d'amato,socratic,leumit,unnumbered,nandini,witold,marsupial,coalesced,interpolated,gimnasia,karadzic,keratin,mamoru,aldeburgh,speculator,escapement,irfan,kashyap,satyajit,haddington,solver,rothko,ashkelon,kickapoo,yeomen,superbly,bloodiest,greenlandic,lithic,autofocus,yardbirds,poona,keble,javan,sufis,expandable,tumblr,ursuline,swimwear,winwood,counsellors,aberrations,marginalised,befriending,workouts,predestination,varietal,siddhartha,dunkeld,judaic,esquimalt,shabab,ajith,telefonica,stargard,hoysala,radhakrishnan,sinusoidal,strada,hiragana,cebuano,monoid,independencia,floodwaters,mildura,mudflats,ottokar,translit,radix,wigner,philosophically,tephritid,synthesizing,castletown,installs,stirner,resettle,bushfire,choirmaster,kabbalistic,shirazi,lightship,rebus,colonizers,centrifuge,leonean,kristofferson,thymus,clackamas,ratnam,rothesay,municipally,centralia,thurrock,gulfport,bilinear,desirability,merite,psoriasis,macaw,erigeron,consignment,mudstone,distorting,karlheinz,ramen,tailwheel,vitor,reinsurance,edifices,superannuation,dormancy,contagion,cobden,rendezvoused,prokaryotic,deliberative,patricians,feigned,degrades,starlings,sopot,viticultural,beaverton,overflowed,convener,garlands,michiel,ternopil,naturelle,biplanes,bagot,gamespy,ventspils,disembodied,flattening,profesional,londoners,arusha,scapular,forestall,pyridine,ulema,eurodance,aruna,callus,periodontal,coetzee,immobilized,o'meara,maharani,katipunan,reactants,zainab,microgravity,saintes,britpop,carrefour,constrain,adversarial,firebirds,brahmo,kashima,simca,surety,surpluses,superconductivity,gipuzkoa,cumans,tocantins,obtainable,humberside,roosting,'king,formula_54,minelayer,bessel,sulayman,cycled,biomarkers,annealing,shusha,barda,cassation,djing,polemics,tuple,directorates,indomitable,obsolescence,wilhelmine,pembina,bojan,tambo,dioecious,pensioner,magnificat,1660s,estrellas,southeasterly,immunodeficiency,railhead,surreptitiously,codeine,encores,religiosity,tempera,camberley,efendi,boardings,malleable,hagia,input/output,lucasfilm,ujjain,polymorphisms,creationist,berners,mickiewicz,irvington,linkedin,endures,kinect,munition,apologetics,fairlie,predicated,reprinting,ethnographer,variances,levantine,mariinsky,jadid,jarrow,asia/oceania,trinamool,waveforms,bisexuality,preselection,pupae,buckethead,hieroglyph,lyricists,marionette,dunbartonshire,restorer,monarchical,pazar,kickoffs,cabildo,savannas,gliese,dench,spoonbills,novelette,diliman,hypersensitivity,authorising,montefiore,mladen,qu'appelle,theistic,maruti,laterite,conestoga,saare,californica,proboscis,carrickfergus,imprecise,hadassah,baghdadi,jolgeh,deshmukh,amusements,heliopolis,berle,adaptability,partenkirchen,separations,baikonur,cardamom,southeastward,southfield,muzaffar,adequacy,metropolitana,rajkot,kiyoshi,metrobus,evictions,reconciles,librarianship,upsurge,knightley,badakhshan,proliferated,spirituals,burghley,electroacoustic,professing,featurette,reformists,skylab,descriptors,oddity,greyfriars,injects,salmond,lanzhou,dauntless,subgenera,underpowered,transpose,mahinda,gatos,aerobatics,seaworld,blocs,waratahs,joris,giggs,perfusion,koszalin,mieczyslaw,ayyubid,ecologists,modernists,sant'angelo,quicktime,him/her,staves,sanyo,melaka,acrocercops,qigong,iterated,generalizes,recuperation,vihara,circassians,psychical,chavo,memoires,infiltrates,notaries,pelecaniformesfamily,strident,chivalric,pierrepont,alleviating,broadsides,centipede,b.tech,reinterpreted,sudetenland,hussite,covenanters,radhika,ironclads,gainsbourg,testis,penarth,plantar,azadegan,beano,espn.com,leominster,autobiographies,nbcuniversal,eliade,khamenei,montferrat,undistinguished,ethnological,wenlock,fricatives,polymorphic,biome,joule,sheaths,astrophysicist,salve,neoclassicism,lovat,downwind,belisarius,forma,usurpation,freie,depopulation,backbench,ascenso,'high,aagpbl,gdanski,zalman,mouvement,encapsulation,bolshevism,statny,voyageurs,hywel,vizcaya,mazra'eh,narthex,azerbaijanis,cerebrospinal,mauretania,fantail,clearinghouse,bolingbroke,pequeno,ansett,remixing,microtubule,wrens,jawahar,palembang,gambian,hillsong,fingerboard,repurposed,sundry,incipient,veolia,theologically,ulaanbaatar,atsushi,foundling,resistivity,myeloma,factbook,mazowiecka,diacritic,urumqi,clontarf,provokes,intelsat,professes,materialise,portobello,benedictines,panionios,introverted,reacquired,bridport,mammary,kripke,oratorios,vlore,stoning,woredas,unreported,antti,togolese,fanzines,heuristics,conservatories,carburetors,clitheroe,cofounded,formula_57,erupting,quinnipiac,bootle,ghostface,sittings,aspinall,sealift,transferase,boldklub,siskiyou,predominated,francophonie,ferruginous,castrum,neogene,sakya,madama,precipitous,'love,posix,bithynia,uttara,avestan,thrushes,seiji,memorably,septimius,libri,cibernetico,hyperinflation,dissuaded,cuddalore,peculiarity,vaslui,grojec,albumin,thurles,casks,fasteners,fluidity,buble,casals,terek,gnosticism,cognates,ulnar,radwanska,babylonians,majuro,oxidizer,excavators,rhythmically,liffey,gorakhpur,eurydice,underscored,arborea,lumumba,tuber,catholique,grama,galilei,scrope,centreville,jacobin,bequests,ardeche,polygamous,montauban,terai,weatherboard,readability,attainder,acraea,transversely,rivets,winterbottom,reassures,bacteriology,vriesea,chera,andesite,dedications,homogenous,reconquered,bandon,forrestal,ukiyo,gurdjieff,tethys,sparc,muscogee,grebes,belchatow,mansa,blantyre,palliser,sokolow,fibroblasts,exmoor,misaki,soundscapes,housatonic,middelburg,convenor,leyla,antipope,histidine,okeechobee,alkenes,sombre,alkene,rubik,macaques,calabar,trophee,pinchot,'free,frusciante,chemins,falaise,vasteras,gripped,schwarzenberg,cumann,kanchipuram,acoustically,silverbacks,fangio,inset,plympton,kuril,vaccinations,recep,theropods,axils,stavropol,encroached,apoptotic,papandreou,wailers,moonstone,assizes,micrometers,hornchurch,truncation,annapurna,egyptologists,rheumatic,promiscuity,satiric,fleche,caloptilia,anisotropy,quaternions,gruppo,viscounts,awardees,aftershocks,sigint,concordance,oblasts,gaumont,stent,commissars,kesteven,hydroxy,vijayanagar,belorussian,fabricius,watermark,tearfully,mamet,leukaemia,sorkh,milepost,tattooing,vosta,abbasids,uncompleted,hedong,woodwinds,extinguishing,malus,multiplexes,francoist,pathet,responsa,bassists,'most,postsecondary,ossory,grampian,saakashvili,alito,strasberg,impressionistic,volador,gelatinous,vignette,underwing,campanian,abbasabad,albertville,hopefuls,nieuwe,taxiways,reconvened,recumbent,pathologists,unionized,faversham,asymptotically,romulo,culling,donja,constricted,annesley,duomo,enschede,lovech,sharpshooter,lansky,dhamma,papillae,alanine,mowat,delius,wrest,mcluhan,podkarpackie,imitators,bilaspur,stunting,pommel,casemate,handicaps,nagas,testaments,hemings,necessitate,rearward,locative,cilla,klitschko,lindau,merion,consequential,antic,soong,copula,berthing,chevrons,rostral,sympathizer,budokan,ranulf,beria,stilt,replying,conflated,alcibiades,painstaking,yamanashi,calif.,arvid,ctesiphon,xizong,rajas,caxton,downbeat,resurfacing,rudders,miscegenation,deathmatch,foregoing,arthropod,attestation,karts,reapportionment,harnessing,eastlake,schola,dosing,postcolonial,imtiaz,formula_55,insulators,gunung,accumulations,pampas,llewelyn,bahnhof,cytosol,grosjean,teaneck,briarcliff,arsenio,canara,elaborating,passchendaele,searchlights,holywell,mohandas,preventable,gehry,mestizos,ustinov,cliched,'national,heidfeld,tertullian,jihadist,tourer,miletus,semicircle,outclassed,bouillon,cardinalate,clarifies,dakshina,bilayer,pandyan,unrwa,chandragupta,formula_56,portola,sukumaran,lactation,islamia,heikki,couplers,misappropriation,catshark,montt,ploughs,carib,stator,leaderboard,kenrick,dendrites,scape,tillamook,molesworth,mussorgsky,melanesia,restated,troon,glycoside,truckee,headwater,mashup,sectoral,gangwon,docudrama,skirting,psychopathology,dramatised,ostroleka,infestations,thabo,depolarization,wideroe,eisenbahn,thomond,kumaon,upendra,foreland,acronyms,yaqui,retaking,raphaelite,specie,dupage,villars,lucasarts,chloroplast,werribee,balsa,ascribe,havant,flava,khawaja,tyumen,subtract,interrogators,reshaping,buzzcocks,eesti,campanile,potemkin,apertures,snowboarder,registrars,handbooks,boyar,contaminant,depositors,proximate,jeunesse,zagora,pronouncements,mists,nihilism,deified,margraviate,pietersen,moderators,amalfi,adjectival,copepods,magnetosphere,pallets,clemenceau,castra,perforation,granitic,troilus,grzegorz,luthier,dockyards,antofagasta,ffestiniog,subroutine,afterword,waterwheel,druce,nitin,undifferentiated,emacs,readmitted,barneveld,tapers,hittites,infomercials,infirm,braathens,heligoland,carpark,geomagnetic,musculoskeletal,nigerien,machinima,harmonize,repealing,indecency,muskoka,verite,steubenville,suffixed,cytoskeleton,surpasses,harmonia,imereti,ventricles,heterozygous,envisions,otsego,ecoles,warrnambool,burgenland,seria,rawat,capistrano,welby,kirin,enrollments,caricom,dragonlance,schaffhausen,expanses,photojournalism,brienne,etude,referent,jamtland,schemas,xianbei,cleburne,bicester,maritima,shorelines,diagonals,bjelke,nonpublic,aliasing,m.f.a,ovals,maitreya,skirmishing,grothendieck,sukhothai,angiotensin,bridlington,durgapur,contras,gakuen,skagit,rabbinate,tsunamis,haphazard,tyldesley,microcontroller,discourages,hialeah,compressing,septimus,larvik,condoleezza,psilocybin,protectionism,songbirds,clandestinely,selectmen,wargame,cinemascope,khazars,agronomy,melzer,latifah,cherokees,recesses,assemblymen,basescu,banaras,bioavailability,subchannels,adenine,o'kelly,prabhakar,leonese,dimethyl,testimonials,geoffroy,oxidant,universiti,gheorghiu,bohdan,reversals,zamorin,herbivore,jarre,sebastiao,infanterie,dolmen,teddington,radomsko,spaceships,cuzco,recapitulation,mahoning,bainimarama,myelin,aykroyd,decals,tokelau,nalgonda,rajasthani,121st,quelled,tambov,illyrians,homilies,illuminations,hypertrophy,grodzisk,inundation,incapacity,equilibria,combats,elihu,steinitz,berengar,gowda,canwest,khosrau,maculata,houten,kandinsky,onside,leatherhead,heritable,belvidere,federative,chukchi,serling,eruptive,patan,entitlements,suffragette,evolutions,migrates,demobilisation,athleticism,trope,sarpsborg,kensal,translink,squamish,concertgebouw,energon,timestamp,competences,zalgiris,serviceman,codice_7,spoofing,assange,mahadevan,skien,suceava,augustan,revisionism,unconvincing,hollande,drina,gottlob,lippi,broglie,darkening,tilapia,eagerness,nacht,kolmogorov,photometric,leeuwarden,jrotc,haemorrhage,almanack,cavalli,repudiation,galactose,zwickau,cetinje,houbraken,heavyweights,gabonese,ordinals,noticias,museveni,steric,charaxes,amjad,resection,joinville,leczyca,anastasius,purbeck,subtribe,dalles,leadoff,monoamine,jettisoned,kaori,anthologized,alfreton,indic,bayezid,tottori,colonizing,assassinating,unchanging,eusebian,d'estaing,tsingtao,toshio,transferases,peronist,metrology,equus,mirpur,libertarianism,kovil,indole,'green,abstention,quantitatively,icebreakers,tribals,mainstays,dryandra,eyewear,nilgiri,chrysanthemum,inositol,frenetic,merchantman,hesar,physiotherapist,transceiver,dancefloor,rankine,neisse,marginalization,lengthen,unaided,rework,pageantry,savio,striated,funen,witton,illuminates,frass,hydrolases,akali,bistrita,copywriter,firings,handballer,tachinidae,dmytro,coalesce,neretva,menem,moraines,coatbridge,crossrail,spoofed,drosera,ripen,protour,kikuyu,boleslav,edwardes,troubadours,haplogroups,wrasse,educationalist,sroda,khaneh,dagbladet,apennines,neuroscientist,deplored,terje,maccabees,daventry,spaceport,lessening,ducats,singer/guitarist,chambersburg,yeong,configurable,ceremonially,unrelenting,caffe,graaf,denizens,kingsport,ingush,panhard,synthesised,tumulus,homeschooled,bozorg,idiomatic,thanhouser,queensway,radek,hippolytus,inking,banovina,peacocks,piaui,handsworth,pantomimes,abalone,thera,kurzweil,bandura,augustinians,bocelli,ferrol,jiroft,quadrature,contravention,saussure,rectification,agrippina,angelis,matanzas,nidaros,palestrina,latium,coriolis,clostridium,ordain,uttering,lanchester,proteolytic,ayacucho,merseburg,holbein,sambalpur,algebraically,inchon,ostfold,savoia,calatrava,lahiri,judgeship,ammonite,masaryk,meyerbeer,hemorrhagic,superspeedway,ningxia,panicles,encircles,khmelnytsky,profusion,esher,babol,inflationary,anhydride,gaspe,mossy,periodicity,nacion,meteorologists,mahjong,interventional,sarin,moult,enderby,modell,palgrave,warners,montcalm,siddha,functionalism,rilke,politicized,broadmoor,kunste,orden,brasileira,araneta,eroticism,colquhoun,mamba,blacktown,tubercle,seagrass,manoel,camphor,neoregelia,llandudno,annexe,enplanements,kamien,plovers,statisticians,iturbide,madrasah,nontrivial,publican,landholders,manama,uninhabitable,revivalist,trunkline,friendliness,gurudwara,rocketry,unido,tripos,besant,braque,evolutionarily,abkhazian,staffel,ratzinger,brockville,bohemond,intercut,djurgarden,utilitarianism,deploys,sastri,absolutism,subhas,asghar,fictions,sepinwall,proportionately,titleholders,thereon,foursquare,machinegun,knightsbridge,siauliai,aqaba,gearboxes,castaways,weakens,phallic,strzelce,buoyed,ruthenia,pharynx,intractable,neptunes,koine,leakey,netherlandish,preempted,vinay,terracing,instigating,alluvium,prosthetics,vorarlberg,politiques,joinery,reduplication,nebuchadnezzar,lenticular,banka,seaborne,pattinson,helpline,aleph,beckenham,californians,namgyal,franziska,aphid,branagh,transcribe,appropriateness,surakarta,takings,propagates,juraj,b0d3fb,brera,arrayed,tailback,falsehood,hazleton,prosody,egyptology,pinnate,tableware,ratan,camperdown,ethnologist,tabari,classifiers,biogas,126th,kabila,arbitron,apuestas,membranous,kincardine,oceana,glories,natick,populism,synonymy,ghalib,mobiles,motherboards,stationers,germinal,patronised,formula_58,gaborone,torts,jeezy,interleague,novaya,batticaloa,offshoots,wilbraham,filename,nswrfl,'well,trilobite,pythons,optimally,scientologists,rhesus,pilsen,backdrops,batang,unionville,hermanos,shrikes,fareham,outlawing,discontinuing,boisterous,shamokin,scanty,southwestward,exchangers,unexpired,mewar,h.m.s,saldanha,pawan,condorcet,turbidity,donau,indulgences,coincident,cliques,weeklies,bardhaman,violators,kenai,caspase,xperia,kunal,fistula,epistemic,cammell,nephi,disestablishment,rotator,germaniawerft,pyaar,chequered,jigme,perlis,anisotropic,popstars,kapil,appendices,berat,defecting,shacks,wrangel,panchayath,gorna,suckling,aerosols,sponheim,talal,borehole,encodings,enlai,subduing,agong,nadar,kitsap,syrmia,majumdar,pichilemu,charleville,embryology,booting,literati,abutting,basalts,jussi,repubblica,hertogenbosch,digitization,relents,hillfort,wiesenthal,kirche,bhagwan,bactrian,oases,phyla,neutralizing,helsing,ebooks,spearheading,margarine,'golden,phosphor,picea,stimulants,outliers,timescale,gynaecology,integrator,skyrocketed,bridgnorth,senecio,ramachandra,suffragist,arrowheads,aswan,inadvertent,microelectronics,118th,sofer,kubica,melanesian,tuanku,balkh,vyborg,crystallographic,initiators,metamorphism,ginzburg,looters,unimproved,finistere,newburyport,norges,immunities,franchisees,asterism,kortrijk,camorra,komsomol,fleurs,draughts,patagonian,voracious,artin,collaborationist,revolucion,revitalizing,xaver,purifying,antipsychotic,disjunct,pompeius,dreamwave,juvenal,beinn,adiyaman,antitank,allama,boletus,melanogaster,dumitru,caproni,aligns,athabaskan,stobart,phallus,veikkausliiga,hornsey,buffering,bourbons,dobruja,marga,borax,electrics,gangnam,motorcyclist,whidbey,draconian,lodger,galilean,sanctification,imitates,boldness,underboss,wheatland,cantabrian,terceira,maumee,redefining,uppercase,ostroda,characterise,universalism,equalized,syndicalism,haringey,masovia,deleuze,funkadelic,conceals,thuan,minsky,pluralistic,ludendorff,beekeeping,bonfires,endoscopic,abuts,prebend,jonkoping,amami,tribunes,yup'ik,awadh,gasification,pforzheim,reforma,antiwar,vaishnavism,maryville,inextricably,margrethe,empresa,neutrophils,sanctified,ponca,elachistidae,curiae,quartier,mannar,hyperplasia,wimax,busing,neologism,florins,underrepresented,digitised,nieuw,cooch,howards,frege,hughie,plied,swale,kapellmeister,vajpayee,quadrupled,aeronautique,dushanbe,custos,saltillo,kisan,tigray,manaus,epigrams,shamanic,peppered,frosts,promotion/relegation,concedes,zwingli,charentes,whangarei,hyung,spring/summer,sobre,eretz,initialization,sawai,ephemera,grandfathered,arnaldo,customised,permeated,parapets,growths,visegrad,estudios,altamont,provincia,apologises,stoppard,carburettor,rifts,kinematic,zhengzhou,eschatology,prakrit,folate,yvelines,scapula,stupas,rishon,reconfiguration,flutist,1680s,apostolate,proudhon,lakshman,articulating,stortford,faithfull,bitterns,upwelling,qur'anic,lidar,interferometry,waterlogged,koirala,ditton,wavefunction,fazal,babbage,antioxidants,lemberg,deadlocked,tolled,ramapo,mathematica,leiria,topologies,khali,photonic,balti,1080p,corrects,recommenced,polyglot,friezes,tiebreak,copacabana,cholmondeley,armband,abolishment,sheamus,buttes,glycolysis,cataloged,warrenton,sassari,kishan,foodservice,cryptanalysis,holmenkollen,cosplay,machi,yousuf,mangal,allying,fertiliser,otomi,charlevoix,metallurg,parisians,bottlenose,oakleigh,debug,cidade,accede,ligation,madhava,pillboxes,gatefold,aveyron,sorin,thirsk,immemorial,menelik,mehra,domingos,underpinned,fleshed,harshness,diphthong,crestwood,miskolc,dupri,pyrausta,muskingum,tuoba,prodi,incidences,waynesboro,marquesas,heydar,artesian,calinescu,nucleation,funders,covalently,compaction,derbies,seaters,sodor,tabular,amadou,peckinpah,o'halloran,zechariah,libyans,kartik,daihatsu,chandran,erzhu,heresies,superheated,yarder,dorde,tanjore,abusers,xuanwu,juniperus,moesia,trusteeship,birdwatching,beatz,moorcock,harbhajan,sanga,choreographic,photonics,boylston,amalgamate,prawns,electrifying,sarath,inaccurately,exclaims,powerpoint,chaining,cpusa,adulterous,saccharomyces,glogow,vfl/afl,syncretic,simla,persisting,functors,allosteric,euphorbiaceae,juryo,mlada,moana,gabala,thornycroft,kumanovo,ostrovsky,sitio,tutankhamun,sauropods,kardzhali,reinterpretation,sulpice,rosyth,originators,halesowen,delineation,asesoria,abatement,gardai,elytra,taillights,overlays,monsoons,sandpipers,ingmar,henrico,inaccuracy,irwell,arenabowl,elche,pressburg,signalman,interviewees,sinkhole,pendle,ecommerce,cellos,nebria,organometallic,surrealistic,propagandist,interlaken,canandaigua,aerials,coutinho,pascagoula,tonopah,letterkenny,gropius,carbons,hammocks,childe,polities,hosiery,donitz,suppresses,diaghilev,stroudsburg,bagram,pistoia,regenerating,unitarians,takeaway,offstage,vidin,glorification,bakunin,yavapai,lutzow,sabercats,witney,abrogated,gorlitz,validating,dodecahedron,stubbornly,telenor,glaxosmithkline,solapur,undesired,jellicoe,dramatization,four-and-a-half,seawall,waterpark,artaxerxes,vocalization,typographic,byung,sachsenhausen,shepparton,kissimmee,konnan,belsen,dhawan,khurd,mutagenesis,vejle,perrot,estradiol,formula_60,saros,chiloe,misiones,lamprey,terrains,speke,miasto,eigenvectors,haydock,reservist,corticosteroids,savitri,shinawatra,developmentally,yehudi,berates,janissaries,recapturing,rancheria,subplots,gresley,nikkatsu,oryol,cosmas,boavista,formula_59,playfully,subsections,commentated,kathakali,dorid,vilaine,seepage,hylidae,keiji,kazakhs,triphosphate,1620s,supersede,monarchists,falla,miyako,notching,bhumibol,polarizing,secularized,shingled,bronislaw,lockerbie,soleyman,bundesbahn,latakia,redoubts,boult,inwardly,invents,ondrej,minangkabau,newquay,permanente,alhaji,madhav,malini,ellice,bookmaker,mankiewicz,etihad,o'dea,interrogative,mikawa,wallsend,canisius,bluesy,vitruvius,noord,ratifying,mixtec,gujranwala,subprefecture,keelung,goiania,nyssa,shi'ite,semitone,ch'uan,computerised,pertuan,catapults,nepomuk,shruti,millstones,buskerud,acolytes,tredegar,sarum,armia,dell'arte,devises,custodians,upturned,gallaudet,disembarking,thrashed,sagrada,myeon,undeclared,qumran,gaiden,tepco,janesville,showground,condense,chalon,unstaffed,pasay,undemocratic,hauts,viridis,uninjured,escutcheon,gymkhana,petaling,hammam,dislocations,tallaght,rerum,shias,indios,guaranty,simplicial,benares,benediction,tajiri,prolifically,huawei,onerous,grantee,ferencvaros,otranto,carbonates,conceit,digipak,qadri,masterclasses,swamiji,cradock,plunket,helmsman,119th,salutes,tippecanoe,murshidabad,intelligibility,mittal,diversifying,bidar,asansol,crowdsourcing,rovere,karakoram,grindcore,skylights,tulagi,furrows,ligne,stuka,sumer,subgraph,amata,regionalist,bulkeley,teletext,glorify,readied,lexicographer,sabadell,predictability,quilmes,phenylalanine,bandaranaike,pyrmont,marksmen,quisling,viscountess,sociopolitical,afoul,pediments,swazi,martyrology,nullify,panagiotis,superconductors,veldenz,jujuy,l'isle,hematopoietic,shafi,subsea,hattiesburg,jyvaskyla,kebir,myeloid,landmine,derecho,amerindians,birkenau,scriabin,milhaud,mucosal,nikaya,freikorps,theoretician,proconsul,o'hanlon,clerked,bactria,houma,macular,topologically,shrubby,aryeh,ghazali,afferent,magalhaes,moduli,ashtabula,vidarbha,securitate,ludwigsburg,adoor,varun,shuja,khatun,chengde,bushels,lascelles,professionnelle,elfman,rangpur,unpowered,citytv,chojnice,quaternion,stokowski,aschaffenburg,commutes,subramaniam,methylene,satrap,gharb,namesakes,rathore,helier,gestational,heraklion,colliers,giannis,pastureland,evocation,krefeld,mahadeva,churchmen,egret,yilmaz,galeazzo,pudukkottai,artigas,generalitat,mudslides,frescoed,enfeoffed,aphorisms,melilla,montaigne,gauliga,parkdale,mauboy,linings,prema,sapir,xylophone,kushan,rockne,sequoyah,vasyl,rectilinear,vidyasagar,microcosm,san'a,carcinogen,thicknesses,aleut,farcical,moderating,detested,hegemonic,instalments,vauban,verwaltungsgemeinschaft,picayune,razorback,magellanic,moluccas,pankhurst,exportation,waldegrave,sufferer,bayswater,1up.com,rearmament,orangutans,varazdin,b.o.b,elucidate,harlingen,erudition,brankovic,lapis,slipway,urraca,shinde,unwell,elwes,euboea,colwyn,srivijaya,grandstands,hortons,generalleutnant,fluxes,peterhead,gandhian,reals,alauddin,maximized,fairhaven,endow,ciechanow,perforations,darters,panellist,manmade,litigants,exhibitor,tirol,caracalla,conformance,hotelier,stabaek,hearths,borac,frisians,ident,veliko,emulators,schoharie,uzbeks,samarra,prestwick,wadia,universita,tanah,bucculatrix,predominates,genotypes,denounces,roadsides,ganassi,keokuk,philatelist,tomic,ingots,conduits,samplers,abdus,johar,allegories,timaru,wolfpacks,secunda,smeaton,sportivo,inverting,contraindications,whisperer,moradabad,calamities,bakufu,soundscape,smallholders,nadeem,crossroad,xenophobic,zakir,nationalliga,glazes,retroflex,schwyz,moroder,rubra,quraysh,theodoros,endemol,infidels,km/hr,repositioned,portraitist,lluis,answerable,arges,mindedness,coarser,eyewall,teleported,scolds,uppland,vibraphone,ricoh,isenburg,bricklayer,cuttlefish,abstentions,communicable,cephalopod,stockyards,balto,kinston,armbar,bandini,elphaba,maxims,bedouins,sachsen,friedkin,tractate,pamir,ivanovo,mohini,kovalainen,nambiar,melvyn,orthonormal,matsuyama,cuernavaca,veloso,overstated,streamer,dravid,informers,analyte,sympathized,streetscape,gosta,thomasville,grigore,futuna,depleting,whelks,kiedis,armadale,earner,wynyard,dothan,animating,tridentine,sabri,immovable,rivoli,ariege,parley,clinker,circulates,junagadh,fraunhofer,congregants,180th,buducnost,formula_62,olmert,dedekind,karnak,bayernliga,mazes,sandpiper,ecclestone,yuvan,smallmouth,decolonization,lemmy,adjudicated,retiro,legia,benue,posit,acidification,wahab,taconic,floatplane,perchlorate,atria,wisbech,divestment,dallara,phrygia,palustris,cybersecurity,rebates,facie,mineralogical,substituent,proteges,fowey,mayenne,smoothbore,cherwell,schwarzschild,junin,murrumbidgee,smalltalk,d'orsay,emirati,calaveras,titusville,theremin,vikramaditya,wampanoag,burra,plaines,onegin,emboldened,whampoa,langa,soderbergh,arnaz,sowerby,arendal,godunov,pathanamthitta,damselfly,bestowing,eurosport,iconoclasm,outfitters,acquiesced,badawi,hypotension,ebbsfleet,annulus,sohrab,thenceforth,chagatai,necessitates,aulus,oddities,toynbee,uniontown,innervation,populaire,indivisible,rossellini,minuet,cyrene,gyeongju,chania,cichlids,harrods,1690s,plunges,abdullahi,gurkhas,homebuilt,sortable,bangui,rediff,incrementally,demetrios,medaille,sportif,svend,guttenberg,tubules,carthusian,pleiades,torii,hoppus,phenyl,hanno,conyngham,teschen,cronenberg,wordless,melatonin,distinctiveness,autos,freising,xuanzang,dunwich,satanism,sweyn,predrag,contractually,pavlovic,malaysians,micrometres,expertly,pannonian,abstaining,capensis,southwesterly,catchphrases,commercialize,frankivsk,normanton,hibernate,verso,deportees,dubliners,codice_8,condors,zagros,glosses,leadville,conscript,morrisons,usury,ossian,oulton,vaccinium,civet,ayman,codrington,hadron,nanometers,geochemistry,extractor,grigori,tyrrhenian,neocollyris,drooping,falsification,werft,courtauld,brigantine,orhan,chapultepec,supercopa,federalized,praga,havering,encampments,infallibility,sardis,pawar,undirected,reconstructionist,ardrossan,varuna,pastimes,archdiocesan,fledging,shenhua,molise,secondarily,stagnated,replicates,ciencias,duryodhana,marauding,ruislip,ilyich,intermixed,ravenswood,shimazu,mycorrhizal,icosahedral,consents,dunblane,follicular,pekin,suffield,muromachi,kinsale,gauche,businesspeople,thereto,watauga,exaltation,chelmno,gorse,proliferate,drainages,burdwan,kangra,transducers,inductor,duvalier,maguindanao,moslem,uncaf,givenchy,plantarum,liturgics,telegraphs,lukashenko,chenango,andante,novae,ironwood,faubourg,torme,chinensis,ambala,pietermaritzburg,virginians,landform,bottlenecks,o'driscoll,darbhanga,baptistery,ameer,needlework,naperville,auditoriums,mullingar,starrer,animatronic,topsoil,madura,cannock,vernet,santurce,catocala,ozeki,pontevedra,multichannel,sundsvall,strategists,medio,135th,halil,afridi,trelawny,caloric,ghraib,allendale,hameed,ludwigshafen,spurned,pavlo,palmar,strafed,catamarca,aveiro,harmonization,surah,predictors,solvay,mande,omnipresent,parenthesis,echolocation,equaling,experimenters,acyclic,lithographic,sepoys,katarzyna,sridevi,impoundment,khosrow,caesarean,nacogdoches,rockdale,lawmaker,caucasians,bahman,miyan,rubric,exuberance,bombastic,ductile,snowdonia,inlays,pinyon,anemones,hurries,hospitallers,tayyip,pulleys,treme,photovoltaics,testbed,polonium,ryszard,osgoode,profiting,ironwork,unsurpassed,nepticulidae,makai,lumbini,preclassic,clarksburg,egremont,videography,rehabilitating,ponty,sardonic,geotechnical,khurasan,solzhenitsyn,henna,phoenicia,rhyolite,chateaux,retorted,tomar,deflections,repressions,harborough,renan,brumbies,vandross,storia,vodou,clerkenwell,decking,universo,salon.com,imprisoning,sudwest,ghaziabad,subscribing,pisgah,sukhumi,econometric,clearest,pindar,yildirim,iulia,atlases,cements,remaster,dugouts,collapsible,resurrecting,batik,unreliability,thiers,conjunctions,colophon,marcher,placeholder,flagella,wolds,kibaki,viviparous,twelver,screenshots,aroostook,khadr,iconographic,itasca,jaume,basti,propounded,varro,be'er,jeevan,exacted,shrublands,creditable,brocade,boras,bittern,oneonta,attentional,herzliya,comprehensible,lakeville,discards,caxias,frankland,camerata,satoru,matlab,commutator,interprovincial,yorkville,benefices,nizami,edwardsville,amigaos,cannabinoid,indianola,amateurliga,pernicious,ubiquity,anarchic,novelties,precondition,zardari,symington,sargodha,headphone,thermopylae,mashonaland,zindagi,thalberg,loewe,surfactants,dobro,crocodilians,samhita,diatoms,haileybury,berwickshire,supercritical,sofie,snorna,slatina,intramolecular,agung,osteoarthritis,obstetric,teochew,vakhtang,connemara,deformations,diadem,ferruccio,mainichi,qualitatively,refrigerant,rerecorded,methylated,karmapa,krasinski,restatement,rouvas,cubitt,seacoast,schwarzkopf,homonymous,shipowner,thiamine,approachable,xiahou,160th,ecumenism,polistes,internazionali,fouad,berar,biogeography,texting,inadequately,'when,4kids,hymenoptera,emplaced,cognomen,bellefonte,supplant,michaelmas,uriel,tafsir,morazan,schweinfurt,chorister,ps400,nscaa,petipa,resolutely,ouagadougou,mascarene,supercell,konstanz,bagrat,harmonix,bergson,shrimps,resonators,veneta,camas,mynydd,rumford,generalmajor,khayyam,web.com,pappus,halfdan,tanana,suomen,yutaka,bibliographical,traian,silat,noailles,contrapuntal,agaricus,'special,minibuses,1670s,obadiah,deepa,rorschach,malolos,lymington,valuations,imperials,caballeros,ambroise,judicature,elegiac,sedaka,shewa,checksum,gosforth,legionaries,corneille,microregion,friedrichshafen,antonis,surnamed,mycelium,cantus,educations,topmost,outfitting,ivica,nankai,gouda,anthemic,iosif,supercontinent,antifungal,belarusians,mudaliar,mohawks,caversham,glaciated,basemen,stevan,clonmel,loughton,deventer,positivist,manipuri,tensors,panipat,changeup,impermeable,dubbo,elfsborg,maritimo,regimens,bikram,bromeliad,substratum,norodom,gaultier,queanbeyan,pompeo,redacted,eurocopter,mothballed,centaurs,borno,copra,bemidji,'home,sopron,neuquen,passo,cineplex,alexandrov,wysokie,mammoths,yossi,sarcophagi,congreve,petkovic,extraneous,waterbirds,slurs,indias,phaeton,discontented,prefaced,abhay,prescot,interoperable,nordisk,bicyclists,validly,sejong,litovsk,zanesville,kapitanleutnant,kerch,changeable,mcclatchy,celebi,attesting,maccoll,sepahan,wayans,veined,gaudens,markt,dansk,soane,quantized,petersham,forebears,nayarit,frenzied,queuing,bygone,viggo,ludwik,tanka,hanssen,brythonic,cornhill,primorsky,stockpiles,conceptualization,lampeter,hinsdale,mesoderm,bielsk,rosenheim,ultron,joffrey,stanwyck,khagan,tiraspol,pavelic,ascendant,empoli,metatarsal,descentralizado,masada,ligier,huseyin,ramadi,waratah,tampines,ruthenium,statoil,mladost,liger,grecian,multiparty,digraph,maglev,reconsideration,radiography,cartilaginous,taizu,wintered,anabaptist,peterhouse,shoghi,assessors,numerator,paulet,painstakingly,halakhic,rocroi,motorcycling,gimel,kryptonian,emmeline,cheeked,drawdown,lelouch,dacians,brahmana,reminiscence,disinfection,optimizations,golders,extensor,tsugaru,tolling,liman,gulzar,unconvinced,crataegus,oppositional,dvina,pyrolysis,mandan,alexius,prion,stressors,loomed,moated,dhivehi,recyclable,relict,nestlings,sarandon,kosovar,solvers,czeslaw,kenta,maneuverable,middens,berkhamsted,comilla,folkways,loxton,beziers,batumi,petrochemicals,optimised,sirjan,rabindra,musicality,rationalisation,drillers,subspaces,'live,bbwaa,outfielders,tsung,danske,vandalised,norristown,striae,kanata,gastroenterology,steadfastly,equalising,bootlegging,mannerheim,notodontidae,lagoa,commentating,peninsulas,chishti,seismology,modigliani,preceptor,canonically,awardee,boyaca,hsinchu,stiffened,nacelle,bogor,dryness,unobstructed,yaqub,scindia,peeters,irritant,ammonites,ferromagnetic,speechwriter,oxygenated,walesa,millais,canarian,faience,calvinistic,discriminant,rasht,inker,annexes,howth,allocates,conditionally,roused,regionalism,regionalbahn,functionary,nitrates,bicentenary,recreates,saboteurs,koshi,plasmids,thinned,124th,plainview,kardashian,neuville,victorians,radiates,127th,vieques,schoolmates,petru,tokusatsu,keying,sunaina,flamethrower,'bout,demersal,hosokawa,corelli,omniscient,o'doherty,niksic,reflectivity,transdev,cavour,metronome,temporally,gabba,nsaids,geert,mayport,hematite,boeotia,vaudreuil,torshavn,sailplane,mineralogist,eskisehir,practises,gallifrey,takumi,unease,slipstream,hedmark,paulinus,ailsa,wielkopolska,filmworks,adamantly,vinaya,facelifted,franchisee,augustana,toppling,velvety,crispa,stonington,histological,genealogist,tactician,tebow,betjeman,nyingma,overwinter,oberoi,rampal,overwinters,petaluma,lactarius,stanmore,balikpapan,vasant,inclines,laminate,munshi,sociedade,rabbah,septal,boyband,ingrained,faltering,inhumans,nhtsa,affix,l'ordre,kazuki,rossendale,mysims,latvians,slaveholders,basilicata,neuburg,assize,manzanillo,scrobipalpa,formula_61,belgique,pterosaurs,privateering,vaasa,veria,northport,pressurised,hobbyist,austerlitz,sahih,bhadra,siliguri,bistrica,bursaries,wynton,corot,lepidus,lully,libor,libera,olusegun,choline,mannerism,lymphocyte,chagos,duxbury,parasitism,ecowas,morotai,cancion,coniston,aggrieved,sputnikmusic,parle,ammonian,civilisations,malformation,cattaraugus,skyhawks,d'arc,demerara,bronfman,midwinter,piscataway,jogaila,threonine,matins,kohlberg,hubli,pentatonic,camillus,nigam,potro,unchained,chauvel,orangeville,cistercians,redeployment,xanthi,manju,carabinieri,pakeha,nikolaevich,kantakouzenos,sesquicentennial,gunships,symbolised,teramo,ballo,crusading,l'oeil,bharatpur,lazier,gabrovo,hysteresis,rothbard,chaumont,roundel,ma'mun,sudhir,queried,newts,shimane,presynaptic,playfield,taxonomists,sensitivities,freleng,burkinabe,orfeo,autovia,proselytizing,bhangra,pasok,jujutsu,heung,pivoting,hominid,commending,formula_64,epworth,christianized,oresund,hantuchova,rajputana,hilversum,masoretic,dayak,bakri,assen,magog,macromolecules,waheed,qaida,spassky,rumped,protrudes,preminger,misogyny,glencairn,salafi,lacunae,grilles,racemes,areva,alighieri,inari,epitomized,photoshoot,one-of-a-kind,tring,muralist,tincture,backwaters,weaned,yeasts,analytically,smaland,caltrans,vysocina,jamuna,mauthausen,175th,nouvelles,censoring,reggina,christology,gilad,amplifying,mehmood,johnsons,redirects,eastgate,sacrum,meteoric,riverbanks,guidebooks,ascribes,scoparia,iconoclastic,telegraphic,chine,merah,mistico,lectern,sheung,aethelstan,capablanca,anant,uspto,albatrosses,mymensingh,antiretroviral,clonal,coorg,vaillant,liquidator,gigas,yokai,eradicating,motorcyclists,waitakere,tandon,nears,montenegrins,250th,tatsuya,yassin,atheistic,syncretism,nahum,berisha,transcended,owensboro,lakshmana,abteilung,unadorned,nyack,overflows,harrisonburg,complainant,uematsu,frictional,worsens,sangguniang,abutment,bulwer,sarma,apollinaire,shippers,lycia,alentejo,porpoises,optus,trawling,augustow,blackwall,workbench,westmount,leaped,sikandar,conveniences,stornoway,culverts,zoroastrians,hristo,ansgar,assistive,reassert,fanned,compasses,delgada,maisons,arima,plonsk,verlaine,starstruck,rakhine,befell,spirally,wyclef,expend,colloquium,formula_63,albertus,bellarmine,handedness,holon,introns,movimiento,profitably,lohengrin,discoverers,awash,erste,pharisees,dwarka,oghuz,hashing,heterodox,uloom,vladikavkaz,linesman,rehired,nucleophile,germanicus,gulshan,songz,bayerische,paralympian,crumlin,enjoined,khanum,prahran,penitent,amersfoort,saranac,semisimple,vagrants,compositing,tualatin,oxalate,lavra,ironi,ilkeston,umpqua,calum,stretford,zakat,guelders,hydrazine,birkin,spurring,modularity,aspartate,sodermanland,hopital,bellary,legazpi,clasico,cadfael,hypersonic,volleys,pharmacokinetics,carotene,orientale,pausini,bataille,lunga,retailed,m.phil,mazowieckie,vijayan,rawal,sublimation,promissory,estimators,ploughed,conflagration,penda,segregationist,otley,amputee,coauthor,sopra,pellew,wreckers,tollywood,circumscription,permittivity,strabane,landward,articulates,beaverbrook,rutherglen,coterminous,whistleblowers,colloidal,surbiton,atlante,oswiecim,bhasa,lampooned,chanter,saarc,landkreis,tribulation,tolerates,daiichi,hatun,cowries,dyschirius,abercromby,attock,aldwych,inflows,absolutist,l'histoire,committeeman,vanbrugh,headstock,westbourne,appenzell,hoxton,oculus,westfalen,roundabouts,nickelback,trovatore,quenching,summarises,conservators,transmutation,talleyrand,barzani,unwillingly,axonal,'blue,opining,enveloping,fidesz,rafah,colborne,flickr,lozenge,dulcimer,ndebele,swaraj,oxidize,gonville,resonated,gilani,superiore,endeared,janakpur,shepperton,solidifying,memoranda,sochaux,kurnool,rewari,emirs,kooning,bruford,unavailability,kayseri,judicious,negating,pterosaur,cytosolic,chernihiv,variational,sabretooth,seawolves,devalued,nanded,adverb,volunteerism,sealers,nemours,smederevo,kashubian,bartin,animax,vicomte,polotsk,polder,archiepiscopal,acceptability,quidditch,tussock,seminaire,immolation,belge,coves,wellingborough,khaganate,mckellen,nayaka,brega,kabhi,pontoons,bascule,newsreels,injectors,cobol,weblog,diplo,biggar,wheatbelt,erythrocytes,pedra,showgrounds,bogdanovich,eclecticism,toluene,elegies,formalize,andromedae,airworthiness,springville,mainframes,overexpression,magadha,bijelo,emlyn,glutamine,accenture,uhuru,metairie,arabidopsis,patanjali,peruvians,berezovsky,accion,astrolabe,jayanti,earnestly,sausalito,recurved,1500s,ramla,incineration,galleons,laplacian,shiki,smethwick,isomerase,dordevic,janow,jeffersonville,internationalism,penciled,styrene,ashur,nucleoside,peristome,horsemanship,sedges,bachata,medes,kristallnacht,schneerson,reflectance,invalided,strutt,draupadi,destino,partridges,tejas,quadrennial,aurel,halych,ethnomusicology,autonomist,radyo,rifting,shi'ar,crvena,telefilm,zawahiri,plana,sultanates,theodorus,subcontractors,pavle,seneschal,teleports,chernivtsi,buccal,brattleboro,stankovic,safar,dunhuang,electrocution,chastised,ergonomic,midsomer,130th,zomba,nongovernmental,escapist,localize,xuzhou,kyrie,carinthian,karlovac,nisan,kramnik,pilipino,digitisation,khasi,andronicus,highwayman,maior,misspelling,sebastopol,socon,rhaetian,archimandrite,partway,positivity,otaku,dingoes,tarski,geopolitics,disciplinarian,zulfikar,kenzo,globose,electrophilic,modele,storekeeper,pohang,wheldon,washers,interconnecting,digraphs,intrastate,campy,helvetic,frontispiece,ferrocarril,anambra,petraeus,midrib,endometrial,dwarfism,mauryan,endocytosis,brigs,percussionists,furtherance,synergistic,apocynaceae,krona,berthier,circumvented,casal,siltstone,precast,ethnikos,realists,geodesy,zarzuela,greenback,tripathi,persevered,interments,neutralization,olbermann,departements,supercomputing,demobilised,cassavetes,dunder,ministering,veszprem,barbarism,'world,pieve,apologist,frentzen,sulfides,firewalls,pronotum,staatsoper,hachette,makhachkala,oberland,phonon,yoshihiro,instars,purnima,winslet,mutsu,ergative,sajid,nizamuddin,paraphrased,ardeidae,kodagu,monooxygenase,skirmishers,sportiva,o'byrne,mykolaiv,ophir,prieta,gyllenhaal,kantian,leche,copan,herero,ps250,gelsenkirchen,shalit,sammarinese,chetwynd,wftda,travertine,warta,sigmaringen,concerti,namespace,ostergotland,biomarker,universals,collegio,embarcadero,wimborne,fiddlers,likening,ransomed,stifled,unabated,kalakaua,khanty,gongs,goodrem,countermeasure,publicizing,geomorphology,swedenborg,undefended,catastrophes,diverts,storyboards,amesbury,contactless,placentia,festivity,authorise,terrane,thallium,stradivarius,antonine,consortia,estimations,consecrate,supergiant,belichick,pendants,butyl,groza,univac,afire,kavala,studi,teletoon,paucity,gonbad,koninklijke,128th,stoichiometric,multimodal,facundo,anatomic,melamine,creuse,altan,brigands,mcguinty,blomfield,tsvangirai,protrusion,lurgan,warminster,tenzin,russellville,discursive,definable,scotrail,lignin,reincorporated,o'dell,outperform,redland,multicolored,evaporates,dimitrie,limbic,patapsco,interlingua,surrogacy,cutty,potrero,masud,cahiers,jintao,ardashir,centaurus,plagiarized,minehead,musings,statuettes,logarithms,seaview,prohibitively,downforce,rivington,tomorrowland,microbiologist,ferric,morag,capsid,kucinich,clairvaux,demotic,seamanship,cicada,painterly,cromarty,carbonic,tupou,oconee,tehuantepec,typecast,anstruther,internalized,underwriters,tetrahedra,flagrant,quakes,pathologies,ulrik,nahal,tarquini,dongguan,parnassus,ryoko,senussi,seleucia,airasia,einer,sashes,d'amico,matriculating,arabesque,honved,biophysical,hardinge,kherson,mommsen,diels,icbms,reshape,brasiliensis,palmach,netaji,oblate,functionalities,grigor,blacksburg,recoilless,melanchthon,reales,astrodome,handcrafted,memes,theorizes,isma'il,aarti,pirin,maatschappij,stabilizes,honiara,ashbury,copts,rootes,defensed,queiroz,mantegna,galesburg,coraciiformesfamily,cabrillo,tokio,antipsychotics,kanon,173rd,apollonia,finial,lydian,hadamard,rangi,dowlatabad,monolingual,platformer,subclasses,chiranjeevi,mirabeau,newsgroup,idmanyurdu,kambojas,walkover,zamoyski,generalist,khedive,flanges,knowle,bande,157th,alleyn,reaffirm,pininfarina,zuckerberg,hakodate,131st,aditi,bellinzona,vaulter,planking,boscombe,colombians,lysis,toppers,metered,nahyan,queensryche,minho,nagercoil,firebrand,foundress,bycatch,mendota,freeform,antena,capitalisation,martinus,overijssel,purists,interventionist,zgierz,burgundians,hippolyta,trompe,umatilla,moroccans,dictionnaire,hydrography,changers,chota,rimouski,aniline,bylaw,grandnephew,neamt,lemnos,connoisseurs,tractive,rearrangements,fetishism,finnic,apalachicola,landowning,calligraphic,circumpolar,mansfeld,legible,orientalism,tannhauser,blamey,maximization,noinclude,blackbirds,angara,ostersund,pancreatitis,glabra,acleris,juried,jungian,triumphantly,singlet,plasmas,synesthesia,yellowhead,unleashes,choiseul,quanzhong,brookville,kaskaskia,igcse,skatepark,jatin,jewellers,scaritinae,techcrunch,tellurium,lachaise,azuma,codeshare,dimensionality,unidirectional,scolaire,macdill,camshafts,unassisted,verband,kahlo,eliya,prelature,chiefdoms,saddleback,sockers,iommi,coloratura,llangollen,biosciences,harshest,maithili,k'iche,plical,multifunctional,andreu,tuskers,confounding,sambre,quarterdeck,ascetics,berdych,transversal,tuolumne,sagami,petrobras,brecker,menxia,instilling,stipulating,korra,oscillate,deadpan,v/line,pyrotechnic,stoneware,prelims,intracoastal,retraining,ilija,berwyn,encrypt,achievers,zulfiqar,glycoproteins,khatib,farmsteads,occultist,saman,fionn,derulo,khilji,obrenovic,argosy,toowong,dementieva,sociocultural,iconostasis,craigslist,festschrift,taifa,intercalated,tanjong,penticton,sharad,marxian,extrapolation,guises,wettin,prabang,exclaiming,kosta,famas,conakry,wanderings,'aliabad,macleay,exoplanet,bancorp,besiegers,surmounting,checkerboard,rajab,vliet,tarek,operable,wargaming,haldimand,fukuyama,uesugi,aggregations,erbil,brachiopods,tokyu,anglais,unfavorably,ujpest,escorial,armagnac,nagara,funafuti,ridgeline,cocking,o'gorman,compactness,retardant,krajowa,barua,coking,bestows,thampi,chicagoland,variably,o'loughlin,minnows,schwa,shaukat,polycarbonate,chlorinated,godalming,gramercy,delved,banqueting,enlil,sarada,prasanna,domhnall,decadal,regressive,lipoprotein,collectable,surendra,zaporizhia,cycliste,suchet,offsetting,formula_65,pudong,d'arte,blyton,quonset,osmania,tientsin,manorama,proteomics,bille,jalpaiguri,pertwee,barnegat,inventiveness,gollancz,euthanized,henricus,shortfalls,wuxia,chlorides,cerrado,polyvinyl,folktale,straddled,bioengineering,eschewing,greendale,recharged,olave,ceylonese,autocephalous,peacebuilding,wrights,guyed,rosamund,abitibi,bannockburn,gerontology,scutari,souness,seagram,codice_9,'open,xhtml,taguig,purposed,darbar,orthopedics,unpopulated,kisumu,tarrytown,feodor,polyhedral,monadnock,gottorp,priam,redesigning,gasworks,elfin,urquiza,homologation,filipovic,bohun,manningham,gornik,soundness,shorea,lanus,gelder,darke,sandgate,criticality,paranaense,153rd,vieja,lithograph,trapezoid,tiebreakers,convalescence,yan'an,actuaries,balad,altimeter,thermoelectric,trailblazer,previn,tenryu,ancaster,endoscopy,nicolet,discloses,fracking,plaine,salado,americanism,placards,absurdist,propylene,breccia,jirga,documenta,ismailis,161st,brentano,dallas/fort,embellishment,calipers,subscribes,mahavidyalaya,wednesbury,barnstormers,miwok,schembechler,minigame,unterberger,dopaminergic,inacio,nizamabad,overridden,monotype,cavernous,stichting,sassafras,sotho,argentinean,myrrh,rapidity,flatts,gowrie,dejected,kasaragod,cyprinidae,interlinked,arcseconds,degeneracy,infamously,incubate,substructure,trigeminal,sectarianism,marshlands,hooliganism,hurlers,isolationist,urania,burrard,switchover,lecco,wilts,interrogator,strived,ballooning,volterra,raciborz,relegating,gilding,cybele,dolomites,parachutist,lochaber,orators,raeburn,backend,benaud,rallycross,facings,banga,nuclides,defencemen,futurity,emitters,yadkin,eudonia,zambales,manasseh,sirte,meshes,peculiarly,mcminnville,roundly,boban,decrypt,icelanders,sanam,chelan,jovian,grudgingly,penalised,subscript,gambrinus,poaceae,infringements,maleficent,runciman,148th,supersymmetry,granites,liskeard,eliciting,involution,hallstatt,kitzbuhel,shankly,sandhills,inefficiencies,yishuv,psychotropic,nightjars,wavell,sangamon,vaikundar,choshu,retrospectives,pitesti,gigantea,hashemi,bosna,gakuin,siochana,arrangers,baronetcies,narayani,temecula,creston,koscierzyna,autochthonous,wyandot,anniston,igreja,mobilise,buzau,dunster,musselburgh,wenzhou,khattak,detoxification,decarboxylase,manlius,campbells,coleoptera,copyist,sympathisers,suisun,eminescu,defensor,transshipment,thurgau,somerton,fluctuates,ambika,weierstrass,lukow,giambattista,volcanics,romanticized,innovated,matabeleland,scotiabank,garwolin,purine,d'auvergne,borderland,maozhen,pricewaterhousecoopers,testator,pallium,scout.com,mv/pi,nazca,curacies,upjohn,sarasvati,monegasque,ketrzyn,malory,spikelets,biomechanics,haciendas,rapped,dwarfed,stews,nijinsky,subjection,matsu,perceptible,schwarzburg,midsection,entertains,circuitous,epiphytic,wonsan,alpini,bluefield,sloths,transportable,braunfels,dictum,szczecinek,jukka,wielun,wejherowo,hucknall,grameen,duodenum,ribose,deshpande,shahar,nexstar,injurious,dereham,lithographer,dhoni,structuralist,progreso,deschutes,christus,pulteney,quoins,yitzchak,gyeongsang,breviary,makkah,chiyoda,jutting,vineland,angiosperms,necrotic,novelisation,redistribute,tirumala,140th,featureless,mafic,rivaling,toyline,2/1st,martius,saalfeld,monthan,texian,kathak,melodramas,mithila,regierungsbezirk,509th,fermenting,schoolmate,virtuosic,briain,kokoda,heliocentric,handpicked,kilwinning,sonically,dinars,kasim,parkways,bogdanov,luxembourgian,halland,avesta,bardic,daugavpils,excavator,qwest,frustrate,physiographic,majoris,'ndrangheta,unrestrained,firmness,montalban,abundances,preservationists,adare,executioners,guardsman,bonnaroo,neglects,nazrul,pro12,hoorn,abercorn,refuting,kabud,cationic,parapsychology,troposphere,venezuelans,malignancy,khoja,unhindered,accordionist,medak,visby,ejercito,laparoscopic,dinas,umayyads,valmiki,o'dowd,saplings,stranding,incisions,illusionist,avocets,buccleuch,amazonia,fourfold,turboprops,roosts,priscus,turnstile,areal,certifies,pocklington,spoofs,viseu,commonalities,dabrowka,annam,homesteaders,daredevils,mondrian,negotiates,fiestas,perennials,maximizes,lubavitch,ravindra,scrapers,finials,kintyre,violas,snoqualmie,wilders,openbsd,mlawa,peritoneal,devarajan,congke,leszno,mercurial,fakir,joannes,bognor,overloading,unbuilt,gurung,scuttle,temperaments,bautzen,jardim,tradesman,visitations,barbet,sagamore,graaff,forecasters,wilsons,assis,l'air,shariah,sochaczew,russa,dirge,biliary,neuve,heartbreakers,strathearn,jacobian,overgrazing,edrich,anticline,parathyroid,petula,lepanto,decius,channelled,parvathi,puppeteers,communicators,francorchamps,kahane,longus,panjang,intron,traite,xxvii,matsuri,amrit,katyn,disheartened,cacak,omonia,alexandrine,partaking,wrangling,adjuvant,haskovo,tendrils,greensand,lammermoor,otherworld,volusia,stabling,one-and-a-half,bresson,zapatista,eotvos,ps150,webisodes,stepchildren,microarray,braganca,quanta,dolne,superoxide,bellona,delineate,ratha,lindenwood,bruhl,cingulate,tallies,bickerton,helgi,bevin,takoma,tsukuba,statuses,changeling,alister,bytom,dibrugarh,magnesia,duplicating,outlier,abated,goncalo,strelitz,shikai,mardan,musculature,ascomycota,springhill,tumuli,gabaa,odenwald,reformatted,autocracy,theresienstadt,suplex,chattopadhyay,mencken,congratulatory,weatherfield,systema,solemnity,projekt,quanzhou,kreuzberg,postbellum,nobuo,mediaworks,finisterre,matchplay,bangladeshis,kothen,oocyte,hovered,aromas,afshar,browed,teases,chorlton,arshad,cesaro,backbencher,iquique,vulcans,padmini,unabridged,cyclase,despotic,kirilenko,achaean,queensberry,debre,octahedron,iphigenia,curbing,karimnagar,sagarmatha,smelters,surrealists,sanada,shrestha,turridae,leasehold,jiedushi,eurythmics,appropriating,correze,thimphu,amery,musicomh,cyborgs,sandwell,pushcart,retorts,ameliorate,deteriorates,stojanovic,spline,entrenchments,bourse,chancellorship,pasolini,lendl,personage,reformulated,pubescens,loiret,metalurh,reinvention,nonhuman,eilema,tarsal,complutense,magne,broadview,metrodome,outtake,stouffville,seinen,bataillon,phosphoric,ostensible,opatow,aristides,beefheart,glorifying,banten,romsey,seamounts,fushimi,prophylaxis,sibylla,ranjith,goslar,balustrades,georgiev,caird,lafitte,peano,canso,bankura,halfpenny,segregate,caisson,bizerte,jamshedpur,euromaidan,philosophie,ridged,cheerfully,reclassification,aemilius,visionaries,samoans,wokingham,chemung,wolof,unbranched,cinerea,bhosle,ourense,immortalised,cornerstones,sourcebook,khufu,archimedean,universitatea,intermolecular,fiscally,suffices,metacomet,adjudicator,stablemate,specks,glace,inowroclaw,patristic,muharram,agitating,ashot,neurologic,didcot,gamla,ilves,putouts,siraj,laski,coaling,diarmuid,ratnagiri,rotulorum,liquefaction,morbihan,harel,aftershock,gruiformesfamily,bonnier,falconiformesfamily,adorns,wikis,maastrichtian,stauffenberg,bishopsgate,fakhr,sevenfold,ponders,quantifying,castiel,opacity,depredations,lenten,gravitated,o'mahony,modulates,inuktitut,paston,kayfabe,vagus,legalised,balked,arianism,tendering,sivas,birthdate,awlaki,khvajeh,shahab,samtgemeinde,bridgeton,amalgamations,biogenesis,recharging,tsukasa,mythbusters,chamfered,enthronement,freelancers,maharana,constantia,sutil,messines,monkton,okanogan,reinvigorated,apoplexy,tanahashi,neues,valiants,harappan,russes,carding,volkoff,funchal,statehouse,imitative,intrepidity,mellotron,samaras,turkana,besting,longitudes,exarch,diarrhoea,transcending,zvonareva,darna,ramblin,disconnection,137th,refocused,diarmait,agricole,ba'athist,turenne,contrabass,communis,daviess,fatimids,frosinone,fittingly,polyphyletic,qanat,theocratic,preclinical,abacha,toorak,marketplaces,conidia,seiya,contraindicated,retford,bundesautobahn,rebuilds,climatology,seaworthy,starfighter,qamar,categoria,malai,hellinsia,newstead,airworthy,catenin,avonmouth,arrhythmias,ayyavazhi,downgrade,ashburnham,ejector,kinematics,petworth,rspca,filmation,accipitridae,chhatrapati,g/mol,bacau,agama,ringtone,yudhoyono,orchestrator,arbitrators,138th,powerplants,cumbernauld,alderley,misamis,hawai`i,cuando,meistriliiga,jermyn,alans,pedigrees,ottavio,approbation,omnium,purulia,prioress,rheinland,lymphoid,lutsk,oscilloscope,ballina,iliac,motorbikes,modernising,uffizi,phylloxera,kalevala,bengalis,amravati,syntheses,interviewers,inflectional,outflank,maryhill,unhurt,profiler,nacelles,heseltine,personalised,guarda,herpetologist,airpark,pigot,margaretha,dinos,peleliu,breakbeat,kastamonu,shaivism,delamere,kingsville,epigram,khlong,phospholipids,journeying,lietuvos,congregated,deviance,celebes,subsoil,stroma,kvitova,lubricating,layoff,alagoas,olafur,doron,interuniversity,raycom,agonopterix,uzice,nanna,springvale,raimundo,wrested,pupal,talat,skinheads,vestige,unpainted,handan,odawara,ammar,attendee,lapped,myotis,gusty,ciconiiformesfamily,traversal,subfield,vitaphone,prensa,hasidism,inwood,carstairs,kropotkin,turgenev,dobra,remittance,purim,tannin,adige,tabulation,lethality,pacha,micronesian,dhruva,defensemen,tibeto,siculus,radioisotope,sodertalje,phitsanulok,euphonium,oxytocin,overhangs,skinks,fabrica,reinterred,emulates,bioscience,paragliding,raekwon,perigee,plausibility,frolunda,erroll,aznar,vyasa,albinus,trevally,confederacion,terse,sixtieth,1530s,kendriya,skateboarders,frontieres,muawiyah,easements,shehu,conservatively,keystones,kasem,brutalist,peekskill,cowry,orcas,syllabary,paltz,elisabetta,denticles,hampering,dolni,eidos,aarau,lermontov,yankton,shahbaz,barrages,kongsvinger,reestablishment,acetyltransferase,zulia,mrnas,slingsby,eucalypt,efficacious,weybridge,gradation,cinematheque,malthus,bampton,coexisted,cisse,hamdi,cupertino,saumarez,chionodes,libertine,formers,sakharov,pseudonymous,vol.1,mcduck,gopalakrishnan,amberley,jorhat,grandmasters,rudiments,dwindle,param,bukidnon,menander,americanus,multipliers,pulawy,homoerotic,pillbox,cd+dvd,epigraph,aleksandrow,extrapolated,horseshoes,contemporain,angiography,hasselt,shawinigan,memorization,legitimized,cyclades,outsold,rodolphe,kelis,powerball,dijkstra,analyzers,incompressible,sambar,orangeburg,osten,reauthorization,adamawa,sphagnum,hypermarket,millipedes,zoroaster,madea,ossuary,murrayfield,pronominal,gautham,resellers,ethers,quarrelled,dolna,stragglers,asami,tangut,passos,educacion,sharaf,texel,berio,bethpage,bezalel,marfa,noronha,36ers,genteel,avram,shilton,compensates,sweetener,reinstalled,disables,noether,1590s,balakrishnan,kotaro,northallerton,cataclysm,gholam,cancellara,schiphol,commends,longinus,albinism,gemayel,hamamatsu,volos,islamism,sidereal,pecuniary,diggings,townsquare,neosho,lushan,chittoor,akhil,disputation,desiccation,cambodians,thwarting,deliberated,ellipsis,bahini,susumu,separators,kohneh,plebeians,kultur,ogaden,pissarro,trypeta,latur,liaodong,vetting,datong,sohail,alchemists,lengthwise,unevenly,masterly,microcontrollers,occupier,deviating,farringdon,baccalaureat,theocracy,chebyshev,archivists,jayaram,ineffectiveness,scandinavians,jacobins,encomienda,nambu,g/cm3,catesby,paavo,heeded,rhodium,idealised,10deg,infective,mecyclothorax,halevy,sheared,minbari,audax,lusatian,rebuffs,hitfix,fastener,subjugate,tarun,binet,compuserve,synthesiser,keisuke,amalric,ligatures,tadashi,ignazio,abramovich,groundnut,otomo,maeve,mortlake,ostrogoths,antillean,todor,recto,millimetre,espousing,inaugurate,paracetamol,galvanic,harpalinae,jedrzejow,reassessment,langlands,civita,mikan,stikine,bijar,imamate,istana,kaiserliche,erastus,federale,cytosine,expansionism,hommes,norrland,smriti,snapdragon,gulab,taleb,lossy,khattab,urbanised,sesto,rekord,diffuser,desam,morganatic,silting,pacts,extender,beauharnais,purley,bouches,halfpipe,discontinuities,houthi,farmville,animism,horni,saadi,interpretative,blockades,symeon,biogeographic,transcaucasian,jetties,landrieu,astrocytes,conjunto,stumpings,weevils,geysers,redux,arching,romanus,tazeh,marcellinus,casein,opava,misrata,anare,sattar,declarer,dreux,oporto,venta,vallis,icosahedron,cortona,lachine,mohammedan,sandnes,zynga,clarin,diomedes,tsuyoshi,pribram,gulbarga,chartist,superettan,boscawen,altus,subang,gating,epistolary,vizianagaram,ogdensburg,panna,thyssen,tarkovsky,dzogchen,biograph,seremban,unscientific,nightjar,legco,deism,n.w.a,sudha,siskel,sassou,flintlock,jovial,montbeliard,pallida,formula_66,tranquillity,nisei,adornment,'people,yamhill,hockeyallsvenskan,adopters,appian,lowicz,haplotypes,succinctly,starogard,presidencies,kheyrabad,sobibor,kinesiology,cowichan,militum,cromwellian,leiningen,ps1.5,concourses,dalarna,goldfield,brzeg,faeces,aquarii,matchless,harvesters,181st,numismatics,korfball,sectioned,transpires,facultative,brandishing,kieron,forages,menai,glutinous,debarge,heathfield,1580s,malang,photoelectric,froome,semiotic,alwar,grammophon,chiaroscuro,mentalist,maramures,flacco,liquors,aleutians,marvell,sutlej,patnaik,qassam,flintoff,bayfield,haeckel,sueno,avicii,exoplanets,hoshi,annibale,vojislav,honeycombs,celebrant,rendsburg,veblen,quails,141st,carronades,savar,narrations,jeeva,ontologies,hedonistic,marinette,godot,munna,bessarabian,outrigger,thame,gravels,hoshino,falsifying,stereochemistry,nacionalista,medially,radula,ejecting,conservatorio,odile,ceiba,jaina,essonne,isometry,allophones,recidivism,iveco,ganda,grammarians,jagan,signposted,uncompressed,facilitators,constancy,ditko,propulsive,impaling,interbank,botolph,amlaib,intergroup,sorbus,cheka,debye,praca,adorning,presbyteries,dormition,strategos,qarase,pentecostals,beehives,hashemite,goldust,euronext,egress,arpanet,soames,jurchens,slovenska,copse,kazim,appraisals,marischal,mineola,sharada,caricaturist,sturluson,galba,faizabad,overwintering,grete,uyezds,didsbury,libreville,ablett,microstructure,anadolu,belenenses,elocution,cloaks,timeslots,halden,rashidun,displaces,sympatric,germanus,tuples,ceska,equalize,disassembly,krautrock,babangida,memel,deild,gopala,hematology,underclass,sangli,wawrinka,assur,toshack,refrains,nicotinic,bhagalpur,badami,racetracks,pocatello,walgreens,nazarbayev,occultation,spinnaker,geneon,josias,hydrolyzed,dzong,corregimiento,waistcoat,thermoplastic,soldered,anticancer,lactobacillus,shafi'i,carabus,adjournment,schlumberger,triceratops,despotate,mendicant,krishnamurti,bahasa,earthworm,lavoisier,noetherian,kalki,fervently,bhawan,saanich,coquille,gannet,motagua,kennels,mineralization,fitzherbert,svein,bifurcated,hairdressing,felis,abounded,dimers,fervour,hebdo,bluffton,aetna,corydon,clevedon,carneiro,subjectively,deutz,gastropoda,overshot,concatenation,varman,carolla,maharshi,mujib,inelastic,riverhead,initialized,safavids,rohini,caguas,bulges,fotbollforbund,hefei,spithead,westville,maronites,lytham,americo,gediminas,stephanus,chalcolithic,hijra,gnu/linux,predilection,rulership,sterility,haidar,scarlatti,saprissa,sviatoslav,pointedly,sunroof,guarantor,thevar,airstrips,pultusk,sture,129th,divinities,daizong,dolichoderus,cobourg,maoists,swordsmanship,uprated,bohme,tashi,largs,chandi,bluebeard,householders,richardsonian,drepanidae,antigonish,elbasan,occultism,marca,hypergeometric,oirat,stiglitz,ignites,dzungar,miquelon,pritam,d'automne,ulidiid,niamey,vallecano,fondo,billiton,incumbencies,raceme,chambery,cadell,barenaked,kagame,summerside,haussmann,hatshepsut,apothecaries,criollo,feint,nasals,timurid,feltham,plotinus,oxygenation,marginata,officinalis,salat,participations,ising,downe,izumo,unguided,pretence,coursed,haruna,viscountcy,mainstage,justicia,powiat,takara,capitoline,implacable,farben,stopford,cosmopterix,tuberous,kronecker,galatians,kweli,dogmas,exhorted,trebinje,skanda,newlyn,ablative,basidia,bhiwani,encroachments,stranglers,regrouping,tubal,shoestring,wawel,anionic,mesenchymal,creationists,pyrophosphate,moshi,despotism,powerbook,fatehpur,rupiah,segre,ternate,jessore,b.i.g,shevardnadze,abounds,gliwice,densest,memoria,suborbital,vietcong,ratepayers,karunanidhi,toolbar,descents,rhymney,exhortation,zahedan,carcinomas,hyperbaric,botvinnik,billets,neuropsychological,tigranes,hoards,chater,biennially,thistles,scotus,wataru,flotillas,hungama,monopolistic,payouts,vetch,generalissimo,caries,naumburg,piran,blizzards,escalates,reactant,shinya,theorize,rizzoli,transitway,ecclesiae,streptomyces,cantal,nisibis,superconductor,unworkable,thallus,roehampton,scheckter,viceroys,makuuchi,ilkley,superseding,takuya,klodzko,borbon,raspberries,operand,w.a.k.o,sarabande,factionalism,egalitarianism,temasek,torbat,unscripted,jorma,westerner,perfective,vrije,underlain,goldfrapp,blaenau,jomon,barthes,drivetime,bassa,bannock,umaga,fengxiang,zulus,sreenivasan,farces,codice_10,freeholder,poddebice,imperialists,deregulated,wingtip,o'hagan,pillared,overtone,hofstadter,149th,kitano,saybrook,standardizing,aldgate,staveley,o'flaherty,hundredths,steerable,soltan,empted,cruyff,intramuros,taluks,cotonou,marae,karur,figueres,barwon,lucullus,niobe,zemlya,lathes,homeported,chaux,amyotrophic,opines,exemplars,bhamo,homomorphisms,gauleiter,ladin,mafiosi,airdrieonians,b/soul,decal,transcaucasia,solti,defecation,deaconess,numidia,sampradaya,normalised,wingless,schwaben,alnus,cinerama,yakutsk,ketchikan,orvieto,unearned,monferrato,rotem,aacsb,loong,decoders,skerries,cardiothoracic,repositioning,pimpernel,yohannan,tenebrionoidea,nargis,nouvel,costliest,interdenominational,noize,redirecting,zither,morcha,radiometric,frequenting,irtysh,gbagbo,chakri,litvinenko,infotainment,ravensbruck,harith,corbels,maegashira,jousting,natan,novus,falcao,minis,railed,decile,rauma,ramaswamy,cavitation,paranaque,berchtesgaden,reanimated,schomberg,polysaccharides,exclusionary,cleon,anurag,ravaging,dhanush,mitchells,granule,contemptuous,keisei,rolleston,atlantean,yorkist,daraa,wapping,micrometer,keeneland,comparably,baranja,oranje,schlafli,yogic,dinajpur,unimpressive,masashi,recreativo,alemannic,petersfield,naoko,vasudeva,autosport,rajat,marella,busko,wethersfield,ssris,soulcalibur,kobani,wildland,rookery,hoffenheim,kauri,aliphatic,balaclava,ferrite,publicise,victorias,theism,quimper,chapbook,functionalist,roadbed,ulyanovsk,cupen,purpurea,calthorpe,teofilo,mousavi,cochlea,linotype,detmold,ellerslie,gakkai,telkom,southsea,subcontractor,inguinal,philatelists,zeebrugge,piave,trochidae,dempo,spoilt,saharanpur,mihrab,parasympathetic,barbarous,chartering,antiqua,katsina,bugis,categorizes,altstadt,kandyan,pambansa,overpasses,miters,assimilating,finlandia,uneconomic,am/fm,harpsichordist,dresdner,luminescence,authentically,overpowers,magmatic,cliftonville,oilfields,skirted,berthe,cuman,oakham,frelimo,glockenspiel,confection,saxophonists,piaseczno,multilevel,antipater,levying,maltreatment,velho,opoczno,harburg,pedophilia,unfunded,palettes,plasterwork,breve,dharmendra,auchinleck,nonesuch,blackmun,libretti,rabbani,145th,hasselbeck,kinnock,malate,vanden,cloverdale,ashgabat,nares,radians,steelworkers,sabor,possums,catterick,hemispheric,ostra,outpaced,dungeness,almshouse,penryn,texians,1000m,franchitti,incumbency,texcoco,newar,tramcars,toroidal,meitetsu,spellbound,agronomist,vinifera,riata,bunko,pinas,ba'al,github,vasilyevich,obsolescent,geodesics,ancestries,tujue,capitalised,unassigned,throng,unpaired,psychometric,skegness,exothermic,buffered,kristiansund,tongued,berenger,basho,alitalia,prolongation,archaeologically,fractionation,cyprinid,echinoderms,agriculturally,justiciar,sonam,ilium,baits,danceable,grazer,ardahan,grassed,preemption,glassworks,hasina,ugric,umbra,wahhabi,vannes,tinnitus,capitaine,tikrit,lisieux,scree,hormuz,despenser,jagiellon,maisonneuve,gandaki,santarem,basilicas,lancing,landskrona,weilburg,fireside,elysian,isleworth,krishnamurthy,filton,cynon,tecmo,subcostal,scalars,triglycerides,hyperplane,farmingdale,unione,meydan,pilings,mercosur,reactivate,akiba,fecundity,jatra,natsume,zarqawi,preta,masao,presbyter,oakenfold,rhodri,ferran,ruizong,cloyne,nelvana,epiphanius,borde,scutes,strictures,troughton,whitestone,sholom,toyah,shingon,kutuzov,abelard,passant,lipno,cafeterias,residuals,anabaptists,paratransit,criollos,pleven,radiata,destabilizing,hadiths,bazaars,mannose,taiyo,crookes,welbeck,baoding,archelaus,nguesso,alberni,wingtips,herts,viasat,lankans,evreux,wigram,fassbinder,ryuichi,storting,reducible,olesnica,znojmo,hyannis,theophanes,flatiron,mustering,rajahmundry,kadir,wayang,prome,lethargy,zubin,illegality,conall,dramedy,beerbohm,hipparchus,ziarat,ryuji,shugo,glenorchy,microarchitecture,morne,lewinsky,cauvery,battenberg,hyksos,wayanad,hamilcar,buhari,brazo,bratianu,solms,aksaray,elamite,chilcotin,bloodstock,sagara,dolny,reunified,umlaut,proteaceae,camborne,calabrian,dhanbad,vaxjo,cookware,potez,rediffusion,semitones,lamentations,allgau,guernica,suntory,pleated,stationing,urgell,gannets,bertelsmann,entryway,raphitomidae,acetaldehyde,nephrology,categorizing,beiyang,permeate,tourney,geosciences,khana,masayuki,crucis,universitaria,slaskie,khaimah,finno,advani,astonishingly,tubulin,vampiric,jeolla,sociale,cleethorpes,badri,muridae,suzong,debater,decimation,kenyans,mutualism,pontifex,middlemen,insee,halevi,lamentation,psychopathy,brassey,wenders,kavya,parabellum,prolactin,inescapable,apses,malignancies,rinzai,stigmatized,menahem,comox,ateliers,welshpool,setif,centimetre,truthfulness,downfield,drusus,woden,glycosylation,emanated,agulhas,dalkeith,jazira,nucky,unifil,jobim,operon,oryzomys,heroically,seances,supernumerary,backhouse,hashanah,tatler,imago,invert,hayato,clockmaker,kingsmill,swiecie,analogously,golconda,poste,tacitly,decentralised,ge'ez,diplomatically,fossiliferous,linseed,mahavira,pedestals,archpriest,byelection,domiciled,jeffersonian,bombus,winegrowing,waukegan,uncultivated,haverfordwest,saumur,communally,disbursed,cleeve,zeljeznicar,speciosa,vacationers,sigur,vaishali,zlatko,iftikhar,cropland,transkei,incompleteness,bohra,subantarctic,slieve,physiologic,similis,klerk,replanted,'right,chafee,reproducible,bayburt,regicide,muzaffarpur,plurals,hanyu,orthologs,diouf,assailed,kamui,tarik,dodecanese,gorne,on/off,179th,shimoga,granaries,carlists,valar,tripolitania,sherds,simmern,dissociated,isambard,polytechnical,yuvraj,brabazon,antisense,pubmed,glans,minutely,masaaki,raghavendra,savoury,podcasting,tachi,bienville,gongsun,ridgely,deform,yuichi,binders,canna,carcetti,llobregat,implored,berri,njegos,intermingled,offload,athenry,motherhouse,corpora,kakinada,dannebrog,imperio,prefaces,musicologists,aerospatiale,shirai,nagapattinam,servius,cristoforo,pomfret,reviled,entebbe,stane,east/west,thermometers,matriarchal,siglo,bodil,legionnaire,ze'ev,theorizing,sangeetha,horticulturist,uncountable,lookalike,anoxic,ionospheric,genealogists,chicopee,imprinting,popish,crematoria,diamondback,cyathea,hanzhong,cameramen,halogaland,naklo,waclaw,storehouses,flexed,comuni,frits,glauca,nilgiris,compresses,nainital,continuations,albay,hypoxic,samajwadi,dunkerque,nanticoke,sarwar,interchanged,jubal,corba,jalgaon,derleth,deathstroke,magny,vinnytsia,hyphenated,rimfire,sawan,boehner,disrepute,normalize,aromanian,dualistic,approximant,chama,karimabad,barnacles,sanok,stipends,dyfed,rijksmuseum,reverberation,suncorp,fungicides,reverie,spectrograph,stereophonic,niazi,ordos,alcan,karaite,lautrec,tableland,lamellar,rieti,langmuir,russula,webern,tweaks,hawick,southerner,morphy,naturalisation,enantiomer,michinoku,barbettes,relieves,carburettors,redruth,oblates,vocabularies,mogilev,bagmati,galium,reasserted,extolled,symon,eurosceptic,inflections,tirtha,recompense,oruro,roping,gouverneur,pared,yayoi,watermills,retooled,leukocytes,jubilant,mazhar,nicolau,manheim,touraine,bedser,hambledon,kohat,powerhouses,tlemcen,reuven,sympathetically,afrikaners,interes,handcrafts,etcher,baddeley,wodonga,amaury,155th,vulgarity,pompadour,automorphisms,1540s,oppositions,prekmurje,deryni,fortifying,arcuate,mahila,bocage,uther,nozze,slashes,atlantica,hadid,rhizomatous,azeris,'with,osmena,lewisville,innervated,bandmaster,outcropping,parallelogram,dominicana,twang,ingushetia,extensional,ladino,sastry,zinoviev,relatable,nobilis,cbeebies,hitless,eulima,sporangia,synge,longlisted,criminalized,penitential,weyden,tubule,volyn,priestesses,glenbrook,kibbutzim,windshaft,canadair,falange,zsolt,bonheur,meine,archangels,safeguarded,jamaicans,malarial,teasers,badging,merseyrail,operands,pulsars,gauchos,biotin,bambara,necaxa,egmond,tillage,coppi,anxiolytic,preah,mausoleums,plautus,feroz,debunked,187th,belediyespor,mujibur,wantage,carboxyl,chettiar,murnau,vagueness,racemic,backstretch,courtland,municipio,palpatine,dezful,hyperbola,sreekumar,chalons,altay,arapahoe,tudors,sapieha,quilon,burdensome,kanya,xxviii,recension,generis,siphuncle,repressor,bitrate,mandals,midhurst,dioxin,democratique,upholds,rodez,cinematographic,epoque,jinping,rabelais,zhytomyr,glenview,rebooted,khalidi,reticulata,122nd,monnaie,passersby,ghazals,europaea,lippmann,earthbound,tadic,andorran,artvin,angelicum,banksy,epicentre,resemblances,shuttled,rathaus,bernt,stonemasons,balochi,siang,tynemouth,cygni,biosynthetic,precipitates,sharecroppers,d'annunzio,softbank,shiji,apeldoorn,polycyclic,wenceslas,wuchang,samnites,tamarack,silmarillion,madinah,palaeontology,kirchberg,sculpin,rohtak,aquabats,oviparous,thynne,caney,blimps,minimalistic,whatcom,palatalization,bardstown,direct3d,paramagnetic,kamboja,khash,globemaster,lengua,matej,chernigov,swanage,arsenals,cascadia,cundinamarca,tusculum,leavers,organics,warplanes,'three,exertions,arminius,gandharva,inquires,comercio,kuopio,chabahar,plotlines,mersenne,anquetil,paralytic,buckminster,ambit,acrolophus,quantifiers,clacton,ciliary,ansaldo,fergana,egoism,thracians,chicoutimi,northbrook,analgesia,brotherhoods,hunza,adriaen,fluoridation,snowfalls,soundboard,fangoria,cannibalistic,orthogonius,chukotka,dindigul,manzoni,chainz,macromedia,beltline,muruga,schistura,provable,litex,initio,pneumoniae,infosys,cerium,boonton,cannonballs,d'une,solvency,mandurah,houthis,dolmens,apologists,radioisotopes,blaxploitation,poroshenko,stawell,coosa,maximilien,tempelhof,espouse,declaratory,hambro,xalapa,outmoded,mihiel,benefitting,desirous,archeparchy,repopulated,telescoping,captor,mackaye,disparaged,ramanathan,crowne,tumbled,technetium,silted,chedi,nievre,hyeon,cartoonish,interlock,infocom,rediff.com,dioramas,timekeeping,concertina,kutaisi,cesky,lubomirski,unapologetic,epigraphic,stalactites,sneha,biofilm,falconry,miraflores,catena,'outstanding,prospekt,apotheosis,o'odham,pacemakers,arabica,gandhinagar,reminisces,iroquoian,ornette,tilling,neoliberalism,chameleons,pandava,prefontaine,haiyan,gneisenau,utama,bando,reconstitution,azaria,canola,paratroops,ayckbourn,manistee,stourton,manifestos,lympne,denouement,tractatus,rakim,bellflower,nanometer,sassanids,turlough,presbyterianism,varmland,20deg,phool,nyerere,almohad,manipal,vlaanderen,quickness,removals,makow,circumflex,eatery,morane,fondazione,alkylation,unenforceable,galliano,silkworm,junior/senior,abducts,phlox,konskie,lofoten,buuren,glyphosate,faired,naturae,cobbles,taher,skrulls,dostoevsky,walkout,wagnerian,orbited,methodically,denzil,sarat,extraterritorial,kohima,d'armor,brinsley,rostropovich,fengtian,comitatus,aravind,moche,wrangell,giscard,vantaa,viljandi,hakoah,seabees,muscatine,ballade,camanachd,sothern,mullioned,durad,margraves,maven,arete,chandni,garifuna,142nd,reading/literature,thickest,intensifies,trygve,khaldun,perinatal,asana,powerline,acetylation,nureyev,omiya,montesquieu,riverwalk,marly,correlating,intermountain,bulgar,hammerheads,underscores,wiretapping,quatrain,ruisseau,newsagent,tuticorin,polygyny,hemsworth,partisanship,banna,istrian,evaporator\".split(\",\"),\n female_names: \"mary,patricia,linda,barbara,elizabeth,jennifer,maria,susan,margaret,dorothy,lisa,nancy,karen,betty,helen,sandra,donna,carol,ruth,sharon,michelle,laura,sarah,kimberly,deborah,jessica,shirley,cynthia,angela,melissa,brenda,amy,anna,rebecca,virginia,kathleen,pamela,martha,debra,amanda,stephanie,carolyn,christine,marie,janet,catherine,frances,ann,joyce,diane,alice,julie,heather,teresa,doris,gloria,evelyn,jean,cheryl,mildred,katherine,joan,ashley,judith,rose,janice,kelly,nicole,judy,christina,kathy,theresa,beverly,denise,tammy,irene,jane,lori,rachel,marilyn,andrea,kathryn,louise,sara,anne,jacqueline,wanda,bonnie,julia,ruby,lois,tina,phyllis,norma,paula,diana,annie,lillian,emily,robin,peggy,crystal,gladys,rita,dawn,connie,florence,tracy,edna,tiffany,carmen,rosa,cindy,grace,wendy,victoria,edith,kim,sherry,sylvia,josephine,thelma,shannon,sheila,ethel,ellen,elaine,marjorie,carrie,charlotte,monica,esther,pauline,emma,juanita,anita,rhonda,hazel,amber,eva,debbie,april,leslie,clara,lucille,jamie,joanne,eleanor,valerie,danielle,megan,alicia,suzanne,michele,gail,bertha,darlene,veronica,jill,erin,geraldine,lauren,cathy,joann,lorraine,lynn,sally,regina,erica,beatrice,dolores,bernice,audrey,yvonne,annette,marion,dana,stacy,ana,renee,ida,vivian,roberta,holly,brittany,melanie,loretta,yolanda,jeanette,laurie,katie,kristen,vanessa,alma,sue,elsie,beth,jeanne,vicki,carla,tara,rosemary,eileen,terri,gertrude,lucy,tonya,ella,stacey,wilma,gina,kristin,jessie,natalie,agnes,vera,charlene,bessie,delores,melinda,pearl,arlene,maureen,colleen,allison,tamara,joy,georgia,constance,lillie,claudia,jackie,marcia,tanya,nellie,minnie,marlene,heidi,glenda,lydia,viola,courtney,marian,stella,caroline,dora,vickie,mattie,maxine,irma,mabel,marsha,myrtle,lena,christy,deanna,patsy,hilda,gwendolyn,jennie,nora,margie,nina,cassandra,leah,penny,kay,priscilla,naomi,carole,olga,billie,dianne,tracey,leona,jenny,felicia,sonia,miriam,velma,becky,bobbie,violet,kristina,toni,misty,mae,shelly,daisy,ramona,sherri,erika,katrina,claire,lindsey,lindsay,geneva,guadalupe,belinda,margarita,sheryl,cora,faye,ada,sabrina,isabel,marguerite,hattie,harriet,molly,cecilia,kristi,brandi,blanche,sandy,rosie,joanna,iris,eunice,angie,inez,lynda,madeline,amelia,alberta,genevieve,monique,jodi,janie,kayla,sonya,jan,kristine,candace,fannie,maryann,opal,alison,yvette,melody,luz,susie,olivia,flora,shelley,kristy,mamie,lula,lola,verna,beulah,antoinette,candice,juana,jeannette,pam,kelli,whitney,bridget,karla,celia,latoya,patty,shelia,gayle,della,vicky,lynne,sheri,marianne,kara,jacquelyn,erma,blanca,myra,leticia,pat,krista,roxanne,angelica,robyn,adrienne,rosalie,alexandra,brooke,bethany,sadie,bernadette,traci,jody,kendra,nichole,rachael,mable,ernestine,muriel,marcella,elena,krystal,angelina,nadine,kari,estelle,dianna,paulette,lora,mona,doreen,rosemarie,desiree,antonia,janis,betsy,christie,freda,meredith,lynette,teri,cristina,eula,leigh,meghan,sophia,eloise,rochelle,gretchen,cecelia,raquel,henrietta,alyssa,jana,gwen,jenna,tricia,laverne,olive,tasha,silvia,elvira,delia,kate,patti,lorena,kellie,sonja,lila,lana,darla,mindy,essie,mandy,lorene,elsa,josefina,jeannie,miranda,dixie,lucia,marta,faith,lela,johanna,shari,camille,tami,shawna,elisa,ebony,melba,ora,nettie,tabitha,ollie,winifred,kristie,alisha,aimee,rena,myrna,marla,tammie,latasha,bonita,patrice,ronda,sherrie,addie,francine,deloris,stacie,adriana,cheri,abigail,celeste,jewel,cara,adele,rebekah,lucinda,dorthy,effie,trina,reba,sallie,aurora,lenora,etta,lottie,kerri,trisha,nikki,estella,francisca,josie,tracie,marissa,karin,brittney,janelle,lourdes,laurel,helene,fern,elva,corinne,kelsey,ina,bettie,elisabeth,aida,caitlin,ingrid,iva,eugenia,christa,goldie,maude,jenifer,therese,dena,lorna,janette,latonya,candy,consuelo,tamika,rosetta,debora,cherie,polly,dina,jewell,fay,jillian,dorothea,nell,trudy,esperanza,patrica,kimberley,shanna,helena,cleo,stefanie,rosario,ola,janine,mollie,lupe,alisa,lou,maribel,susanne,bette,susana,elise,cecile,isabelle,lesley,jocelyn,paige,joni,rachelle,leola,daphne,alta,ester,petra,graciela,imogene,jolene,keisha,lacey,glenna,gabriela,keri,ursula,lizzie,kirsten,shana,adeline,mayra,jayne,jaclyn,gracie,sondra,carmela,marisa,rosalind,charity,tonia,beatriz,marisol,clarice,jeanine,sheena,angeline,frieda,lily,shauna,millie,claudette,cathleen,angelia,gabrielle,autumn,katharine,jodie,staci,lea,christi,justine,elma,luella,margret,dominique,socorro,martina,margo,mavis,callie,bobbi,maritza,lucile,leanne,jeannine,deana,aileen,lorie,ladonna,willa,manuela,gale,selma,dolly,sybil,abby,ivy,dee,winnie,marcy,luisa,jeri,magdalena,ofelia,meagan,audra,matilda,leila,cornelia,bianca,simone,bettye,randi,virgie,latisha,barbra,georgina,eliza,leann,bridgette,rhoda,haley,adela,nola,bernadine,flossie,ila,greta,ruthie,nelda,minerva,lilly,terrie,letha,hilary,estela,valarie,brianna,rosalyn,earline,catalina,ava,mia,clarissa,lidia,corrine,alexandria,concepcion,tia,sharron,rae,dona,ericka,jami,elnora,chandra,lenore,neva,marylou,melisa,tabatha,serena,avis,allie,sofia,jeanie,odessa,nannie,harriett,loraine,penelope,milagros,emilia,benita,allyson,ashlee,tania,esmeralda,eve,pearlie,zelma,malinda,noreen,tameka,saundra,hillary,amie,althea,rosalinda,lilia,alana,clare,alejandra,elinor,lorrie,jerri,darcy,earnestine,carmella,noemi,marcie,liza,annabelle,louisa,earlene,mallory,carlene,nita,selena,tanisha,katy,julianne,lakisha,edwina,maricela,margery,kenya,dollie,roxie,roslyn,kathrine,nanette,charmaine,lavonne,ilene,tammi,suzette,corine,kaye,chrystal,lina,deanne,lilian,juliana,aline,luann,kasey,maryanne,evangeline,colette,melva,lawanda,yesenia,nadia,madge,kathie,ophelia,valeria,nona,mitzi,mari,georgette,claudine,fran,alissa,roseann,lakeisha,susanna,reva,deidre,chasity,sheree,elvia,alyce,deirdre,gena,briana,araceli,katelyn,rosanne,wendi,tessa,berta,marva,imelda,marietta,marci,leonor,arline,sasha,madelyn,janna,juliette,deena,aurelia,josefa,augusta,liliana,lessie,amalia,savannah,anastasia,vilma,natalia,rosella,lynnette,corina,alfreda,leanna,amparo,coleen,tamra,aisha,wilda,karyn,maura,mai,evangelina,rosanna,hallie,erna,enid,mariana,lacy,juliet,jacklyn,freida,madeleine,mara,cathryn,lelia,casandra,bridgett,angelita,jannie,dionne,annmarie,katina,beryl,millicent,katheryn,diann,carissa,maryellen,liz,lauri,helga,gilda,rhea,marquita,hollie,tisha,tamera,angelique,francesca,kaitlin,lolita,florine,rowena,reyna,twila,fanny,janell,ines,concetta,bertie,alba,brigitte,alyson,vonda,pansy,elba,noelle,letitia,deann,brandie,louella,leta,felecia,sharlene,lesa,beverley,isabella,herminia,terra,celina,tori,octavia,jade,denice,germaine,michell,cortney,nelly,doretha,deidra,monika,lashonda,judi,chelsey,antionette,margot,adelaide,leeann,elisha,dessie,libby,kathi,gayla,latanya,mina,mellisa,kimberlee,jasmin,renae,zelda,elda,justina,gussie,emilie,camilla,abbie,rocio,kaitlyn,edythe,ashleigh,selina,lakesha,geri,allene,pamala,michaela,dayna,caryn,rosalia,jacquline,rebeca,marybeth,krystle,iola,dottie,belle,griselda,ernestina,elida,adrianne,demetria,delma,jaqueline,arleen,virgina,retha,fatima,tillie,eleanore,cari,treva,wilhelmina,rosalee,maurine,latrice,jena,taryn,elia,debby,maudie,jeanna,delilah,catrina,shonda,hortencia,theodora,teresita,robbin,danette,delphine,brianne,nilda,danna,cindi,bess,iona,winona,vida,rosita,marianna,racheal,guillermina,eloisa,celestine,caren,malissa,lona,chantel,shellie,marisela,leora,agatha,soledad,migdalia,ivette,christen,athena,janel,veda,pattie,tessie,tera,marilynn,lucretia,karrie,dinah,daniela,alecia,adelina,vernice,shiela,portia,merry,lashawn,dara,tawana,verda,alene,zella,sandi,rafaela,maya,kira,candida,alvina,suzan,shayla,lettie,samatha,oralia,matilde,larissa,vesta,renita,delois,shanda,phillis,lorri,erlinda,cathrine,barb,isabell,ione,gisela,roxanna,mayme,kisha,ellie,mellissa,dorris,dalia,bella,annetta,zoila,reta,reina,lauretta,kylie,christal,pilar,charla,elissa,tiffani,tana,paulina,leota,breanna,jayme,carmel,vernell,tomasa,mandi,dominga,santa,melodie,lura,alexa,tamela,mirna,kerrie,venus,felicita,cristy,carmelita,berniece,annemarie,tiara,roseanne,missy,cori,roxana,pricilla,kristal,jung,elyse,haydee,aletha,bettina,marge,gillian,filomena,zenaida,harriette,caridad,vada,aretha,pearline,marjory,marcela,flor,evette,elouise,alina,damaris,catharine,belva,nakia,marlena,luanne,lorine,karon,dorene,danita,brenna,tatiana,louann,julianna,andria,philomena,lucila,leonora,dovie,romona,mimi,jacquelin,gaye,tonja,misti,chastity,stacia,roxann,micaela,velda,marlys,johnna,aura,ivonne,hayley,nicki,majorie,herlinda,yadira,perla,gregoria,antonette,shelli,mozelle,mariah,joelle,cordelia,josette,chiquita,trista,laquita,georgiana,candi,shanon,hildegard,stephany,magda,karol,gabriella,tiana,roma,richelle,oleta,jacque,idella,alaina,suzanna,jovita,tosha,nereida,marlyn,kyla,delfina,tena,stephenie,sabina,nathalie,marcelle,gertie,darleen,thea,sharonda,shantel,belen,venessa,rosalina,genoveva,clementine,rosalba,renate,renata,georgianna,floy,dorcas,ariana,tyra,theda,mariam,juli,jesica,vikki,verla,roselyn,melvina,jannette,ginny,debrah,corrie,violeta,myrtis,latricia,collette,charleen,anissa,viviana,twyla,nedra,latonia,hellen,fabiola,annamarie,adell,sharyn,chantal,niki,maud,lizette,lindy,kesha,jeana,danelle,charline,chanel,valorie,dortha,cristal,sunny,leone,leilani,gerri,debi,andra,keshia,eulalia,easter,dulce,natividad,linnie,kami,georgie,catina,brook,alda,winnifred,sharla,ruthann,meaghan,magdalene,lissette,adelaida,venita,trena,shirlene,shameka,elizebeth,dian,shanta,latosha,carlotta,windy,rosina,mariann,leisa,jonnie,dawna,cathie,astrid,laureen,janeen,holli,fawn,vickey,teressa,shante,rubye,marcelina,chanda,terese,scarlett,marnie,lulu,lisette,jeniffer,elenor,dorinda,donita,carman,bernita,altagracia,aleta,adrianna,zoraida,lyndsey,janina,starla,phylis,phuong,kyra,charisse,blanch,sanjuanita,rona,nanci,marilee,maranda,brigette,sanjuana,marita,kassandra,joycelyn,felipa,chelsie,bonny,mireya,lorenza,kyong,ileana,candelaria,sherie,lucie,leatrice,lakeshia,gerda,edie,bambi,marylin,lavon,hortense,garnet,evie,tressa,shayna,lavina,kyung,jeanetta,sherrill,shara,phyliss,mittie,anabel,alesia,thuy,tawanda,joanie,tiffanie,lashanda,karissa,enriqueta,daria,daniella,corinna,alanna,abbey,roxane,roseanna,magnolia,lida,joellen,coral,carleen,tresa,peggie,novella,nila,maybelle,jenelle,carina,nova,melina,marquerite,margarette,josephina,evonne,cinthia,albina,toya,tawnya,sherita,myriam,lizabeth,lise,keely,jenni,giselle,cheryle,ardith,ardis,alesha,adriane,shaina,linnea,karolyn,felisha,dori,darci,artie,armida,zola,xiomara,vergie,shamika,nena,nannette,maxie,lovie,jeane,jaimie,inge,farrah,elaina,caitlyn,felicitas,cherly,caryl,yolonda,yasmin,teena,prudence,pennie,nydia,mackenzie,orpha,marvel,lizbeth,laurette,jerrie,hermelinda,carolee,tierra,mirian,meta,melony,kori,jennette,jamila,yoshiko,susannah,salina,rhiannon,joleen,cristine,ashton,aracely,tomeka,shalonda,marti,lacie,kala,jada,ilse,hailey,brittani,zona,syble,sherryl,nidia,marlo,kandice,kandi,alycia,ronna,norene,mercy,ingeborg,giovanna,gemma,christel,audry,zora,vita,trish,stephaine,shirlee,shanika,melonie,mazie,jazmin,inga,hettie,geralyn,fonda,estrella,adella,sarita,rina,milissa,maribeth,golda,evon,ethelyn,enedina,cherise,chana,velva,tawanna,sade,mirta,karie,jacinta,elna,davina,cierra,ashlie,albertha,tanesha,nelle,mindi,lorinda,larue,florene,demetra,dedra,ciara,chantelle,ashly,suzy,rosalva,noelia,lyda,leatha,krystyna,kristan,karri,darline,darcie,cinda,cherrie,awilda,almeda,rolanda,lanette,jerilyn,gisele,evalyn,cyndi,cleta,carin,zina,zena,velia,tanika,charissa,talia,margarete,lavonda,kaylee,kathlene,jonna,irena,ilona,idalia,candis,candance,brandee,anitra,alida,sigrid,nicolette,maryjo,linette,hedwig,christiana,alexia,tressie,modesta,lupita,lita,gladis,evelia,davida,cherri,cecily,ashely,annabel,agustina,wanita,shirly,rosaura,hulda,yetta,verona,thomasina,sibyl,shannan,mechelle,leandra,lani,kylee,kandy,jolynn,ferne,eboni,corene,alysia,zula,nada,moira,lyndsay,lorretta,jammie,hortensia,gaynell,adria,vina,vicenta,tangela,stephine,norine,nella,liana,leslee,kimberely,iliana,glory,felica,emogene,elfriede,eden,eartha,carma,ocie,lennie,kiara,jacalyn,carlota,arielle,otilia,kirstin,kacey,johnetta,joetta,jeraldine,jaunita,elana,dorthea,cami,amada,adelia,vernita,tamar,siobhan,renea,rashida,ouida,nilsa,meryl,kristyn,julieta,danica,breanne,aurea,anglea,sherron,odette,malia,lorelei,leesa,kenna,kathlyn,fiona,charlette,suzie,shantell,sabra,racquel,myong,mira,martine,lucienne,lavada,juliann,elvera,delphia,christiane,charolette,carri,asha,angella,paola,ninfa,leda,stefani,shanell,palma,machelle,lissa,kecia,kathryne,karlene,julissa,jettie,jenniffer,corrina,carolann,alena,rosaria,myrtice,marylee,liane,kenyatta,judie,janey,elmira,eldora,denna,cristi,cathi,zaida,vonnie,viva,vernie,rosaline,mariela,luciana,lesli,karan,felice,deneen,adina,wynona,tarsha,sheron,shanita,shani,shandra,randa,pinkie,nelida,marilou,lyla,laurene,laci,janene,dorotha,daniele,dani,carolynn,carlyn,berenice,ayesha,anneliese,alethea,thersa,tamiko,rufina,oliva,mozell,marylyn,kristian,kathyrn,kasandra,kandace,janae,domenica,debbra,dannielle,chun,arcelia,zenobia,sharen,sharee,lavinia,kacie,jackeline,huong,felisa,emelia,eleanora,cythia,cristin,claribel,anastacia,zulma,zandra,yoko,tenisha,susann,sherilyn,shay,shawanda,romana,mathilda,linsey,keiko,joana,isela,gretta,georgetta,eugenie,desirae,delora,corazon,antonina,anika,willene,tracee,tamatha,nichelle,mickie,maegan,luana,lanita,kelsie,edelmira,bree,afton,teodora,tamie,shena,linh,keli,kaci,danyelle,arlette,albertine,adelle,tiffiny,simona,nicolasa,nichol,nakisha,maira,loreen,kizzy,fallon,christene,bobbye,ying,vincenza,tanja,rubie,roni,queenie,margarett,kimberli,irmgard,idell,hilma,evelina,esta,emilee,dennise,dania,carie,risa,rikki,particia,masako,luvenia,loree,loni,lien,gigi,florencia,denita,billye,tomika,sharita,rana,nikole,neoma,margarite,madalyn,lucina,laila,kali,jenette,gabriele,evelyne,elenora,clementina,alejandrina,zulema,violette,vannessa,thresa,retta,patience,noella,nickie,jonell,chaya,camelia,bethel,anya,suzann,mila,lilla,laverna,keesha,kattie,georgene,eveline,estell,elizbeth,vivienne,vallie,trudie,stephane,magaly,madie,kenyetta,karren,janetta,hermine,drucilla,debbi,celestina,candie,britni,beckie,amina,zita,yolande,vivien,vernetta,trudi,pearle,patrina,ossie,nicolle,loyce,letty,katharina,joselyn,jonelle,jenell,iesha,heide,florinda,florentina,elodia,dorine,brunilda,brigid,ashli,ardella,twana,tarah,shavon,serina,rayna,ramonita,margurite,lucrecia,kourtney,kati,jesenia,crista,ayana,alica,alia,vinnie,suellen,romelia,rachell,olympia,michiko,kathaleen,jolie,jessi,janessa,hana,elease,carletta,britany,shona,salome,rosamond,regena,raina,ngoc,nelia,louvenia,lesia,latrina,laticia,larhonda,jina,jacki,emmy,deeann,coretta,arnetta,thalia,shanice,neta,mikki,micki,lonna,leana,lashunda,kiley,joye,jacqulyn,ignacia,hyun,hiroko,henriette,elayne,delinda,dahlia,coreen,consuela,conchita,babette,ayanna,anette,albertina,shawnee,shaneka,quiana,pamelia,merri,merlene,margit,kiesha,kiera,kaylene,jodee,jenise,erlene,emmie,dalila,daisey,casie,belia,babara,versie,vanesa,shelba,shawnda,nikia,naoma,marna,margeret,madaline,lawana,kindra,jutta,jazmine,janett,hannelore,glendora,gertrud,garnett,freeda,frederica,florance,flavia,carline,beverlee,anjanette,valda,tamala,shonna,sarina,oneida,merilyn,marleen,lurline,lenna,katherin,jeni,gracia,glady,farah,enola,dominque,devona,delana,cecila,caprice,alysha,alethia,vena,theresia,tawny,shakira,samara,sachiko,rachele,pamella,marni,mariel,maren,malisa,ligia,lera,latoria,larae,kimber,kathern,karey,jennefer,janeth,halina,fredia,delisa,debroah,ciera,angelika,andree,altha,vivan,terresa,tanna,sudie,signe,salena,ronni,rebbecca,myrtie,malika,maida,leonarda,kayleigh,ethyl,ellyn,dayle,cammie,brittni,birgit,avelina,asuncion,arianna,akiko,venice,tyesha,tonie,tiesha,takisha,steffanie,sindy,meghann,manda,macie,kellye,kellee,joslyn,inger,indira,glinda,glennis,fernanda,faustina,eneida,elicia,digna,dell,arletta,willia,tammara,tabetha,sherrell,sari,rebbeca,pauletta,natosha,nakita,mammie,kenisha,kazuko,kassie,earlean,daphine,corliss,clotilde,carolyne,bernetta,augustina,audrea,annis,annabell,tennille,tamica,selene,rosana,regenia,qiana,markita,macy,leeanne,laurine,jessenia,janita,georgine,genie,emiko,elvie,deandra,dagmar,corie,collen,cherish,romaine,porsha,pearlene,micheline,merna,margorie,margaretta,lore,jenine,hermina,fredericka,elke,drusilla,dorathy,dione,celena,brigida,allegra,tamekia,synthia,sook,slyvia,rosann,reatha,raye,marquetta,margart,ling,layla,kymberly,kiana,kayleen,katlyn,karmen,joella,emelda,eleni,detra,clemmie,cheryll,chantell,cathey,arnita,arla,angle,angelic,alyse,zofia,thomasine,tennie,sherly,sherley,sharyl,remedios,petrina,nickole,myung,myrle,mozella,louanne,lisha,latia,krysta,julienne,jeanene,jacqualine,isaura,gwenda,earleen,cleopatra,carlie,audie,antonietta,alise,verdell,tomoko,thao,talisha,shemika,savanna,santina,rosia,raeann,odilia,nana,minna,magan,lynelle,karma,joeann,ivana,inell,ilana,gudrun,dreama,crissy,chante,carmelina,arvilla,annamae,alvera,aleida,yanira,vanda,tianna,stefania,shira,nicol,nancie,monserrate,melynda,melany,lovella,laure,kacy,jacquelynn,hyon,gertha,eliana,christena,christeen,charise,caterina,carley,candyce,arlena,ammie,willette,vanita,tuyet,syreeta,penney,nyla,maryam,marya,magen,ludie,loma,livia,lanell,kimberlie,julee,donetta,diedra,denisha,deane,dawne,clarine,cherryl,bronwyn,alla,valery,tonda,sueann,soraya,shoshana,shela,sharleen,shanelle,nerissa,meridith,mellie,maye,maple,magaret,lili,leonila,leonie,leeanna,lavonia,lavera,kristel,kathey,kathe,jann,ilda,hildred,hildegarde,genia,fumiko,evelin,ermelinda,elly,dung,doloris,dionna,danae,berneice,annice,alix,verena,verdie,shawnna,shawana,shaunna,rozella,randee,ranae,milagro,lynell,luise,loida,lisbeth,karleen,junita,jona,isis,hyacinth,hedy,gwenn,ethelene,erline,donya,domonique,delicia,dannette,cicely,branda,blythe,bethann,ashlyn,annalee,alline,yuko,vella,trang,towanda,tesha,sherlyn,narcisa,miguelina,meri,maybell,marlana,marguerita,madlyn,lory,loriann,leonore,leighann,laurice,latesha,laronda,katrice,kasie,kaley,jadwiga,glennie,gearldine,francina,epifania,dyan,dorie,diedre,denese,demetrice,delena,cristie,cleora,catarina,carisa,barbera,almeta,trula,tereasa,solange,sheilah,shavonne,sanora,rochell,mathilde,margareta,maia,lynsey,lawanna,launa,kena,keena,katia,glynda,gaylene,elvina,elanor,danuta,danika,cristen,cordie,coletta,clarita,carmon,brynn,azucena,aundrea,angele,verlie,verlene,tamesha,silvana,sebrina,samira,reda,raylene,penni,norah,noma,mireille,melissia,maryalice,laraine,kimbery,karyl,karine,jolanda,johana,jesusa,jaleesa,jacquelyne,iluminada,hilaria,hanh,gennie,francie,floretta,exie,edda,drema,delpha,barbar,assunta,ardell,annalisa,alisia,yukiko,yolando,wonda,waltraud,veta,temeka,tameika,shirleen,shenita,piedad,ozella,mirtha,marilu,kimiko,juliane,jenice,janay,jacquiline,hilde,elois,echo,devorah,chau,brinda,betsey,arminda,aracelis,apryl,annett,alishia,veola,usha,toshiko,theola,tashia,talitha,shery,renetta,reiko,rasheeda,obdulia,mika,melaine,meggan,marlen,marget,marceline,mana,magdalen,librada,lezlie,latashia,lasandra,kelle,isidra,inocencia,gwyn,francoise,erminia,erinn,dimple,devora,criselda,armanda,arie,ariane,angelena,aliza,adriene,adaline,xochitl,twanna,tomiko,tamisha,taisha,susy,rutha,rhona,noriko,natashia,merrie,marinda,mariko,margert,loris,lizzette,leisha,kaila,joannie,jerrica,jene,jannet,janee,jacinda,herta,elenore,doretta,delaine,daniell,claudie,britta,apolonia,amberly,alease,yuri,waneta,tomi,sharri,sandie,roselle,reynalda,raguel,phylicia,patria,olimpia,odelia,mitzie,minda,mignon,mica,mendy,marivel,maile,lynetta,lavette,lauryn,latrisha,lakiesha,kiersten,kary,josphine,jolyn,jetta,janise,jacquie,ivelisse,glynis,gianna,gaynelle,danyell,danille,dacia,coralee,cher,ceola,arianne,aleshia,yung,williemae,trinh,thora,sherika,shemeka,shaunda,roseline,ricki,melda,mallie,lavonna,latina,laquanda,lala,lachelle,klara,kandis,johna,jeanmarie,jaye,grayce,gertude,emerita,ebonie,clorinda,ching,chery,carola,breann,blossom,bernardine,becki,arletha,argelia,alita,yulanda,yessenia,tobi,tasia,sylvie,shirl,shirely,shella,shantelle,sacha,rebecka,providencia,paulene,misha,miki,marline,marica,lorita,latoyia,lasonya,kerstin,kenda,keitha,kathrin,jaymie,gricelda,ginette,eryn,elina,elfrieda,danyel,cheree,chanelle,barrie,aurore,annamaria,alleen,ailene,aide,yasmine,vashti,treasa,tiffaney,sheryll,sharie,shanae,raisa,neda,mitsuko,mirella,milda,maryanna,maragret,mabelle,luetta,lorina,letisha,latarsha,lanelle,lajuana,krissy,karly,karena,jessika,jerica,jeanelle,jalisa,jacelyn,izola,euna,etha,domitila,dominica,daina,creola,carli,camie,brittny,ashanti,anisha,aleen,adah,yasuko,valrie,tona,tinisha,terisa,taneka,simonne,shalanda,serita,ressie,refugia,olene,margherita,mandie,maire,lyndia,luci,lorriane,loreta,leonia,lavona,lashawnda,lakia,kyoko,krystina,krysten,kenia,kelsi,jeanice,isobel,georgiann,genny,felicidad,eilene,deloise,deedee,conception,clora,cherilyn,calandra,armandina,anisa,tiera,theressa,stephania,sima,shyla,shonta,shera,shaquita,shala,rossana,nohemi,nery,moriah,melita,melida,melani,marylynn,marisha,mariette,malorie,madelene,ludivina,loria,lorette,loralee,lianne,lavenia,laurinda,lashon,kimi,keila,katelynn,jone,joane,jayna,janella,hertha,francene,elinore,despina,delsie,deedra,clemencia,carolin,bulah,brittanie,blondell,bibi,beaulah,beata,annita,agripina,virgen,valene,twanda,tommye,tarra,tari,tammera,shakia,sadye,ruthanne,rochel,rivka,pura,nenita,natisha,ming,merrilee,melodee,marvis,lucilla,leena,laveta,larita,lanie,keren,ileen,georgeann,genna,frida,eufemia,emely,edyth,deonna,deadra,darlena,chanell,cathern,cassondra,cassaundra,bernarda,berna,arlinda,anamaria,vertie,valeri,torri,stasia,sherise,sherill,sanda,ruthe,rosy,robbi,ranee,quyen,pearly,palmira,onita,nisha,niesha,nida,merlyn,mayola,marylouise,marth,margene,madelaine,londa,leontine,leoma,leia,lauralee,lanora,lakita,kiyoko,keturah,katelin,kareen,jonie,johnette,jenee,jeanett,izetta,hiedi,heike,hassie,giuseppina,georgann,fidela,fernande,elwanda,ellamae,eliz,dusti,dotty,cyndy,coralie,celesta,alverta,xenia,wava,vanetta,torrie,tashina,tandy,tambra,tama,stepanie,shila,shaunta,sharan,shaniqua,shae,setsuko,serafina,sandee,rosamaria,priscila,olinda,nadene,muoi,michelina,mercedez,maryrose,marcene,magali,mafalda,lannie,kayce,karoline,kamilah,kamala,justa,joline,jennine,jacquetta,iraida,georgeanna,franchesca,emeline,elane,ehtel,earlie,dulcie,dalene,classie,chere,charis,caroyln,carmina,carita,bethanie,ayako,arica,alysa,alessandra,akilah,adrien,zetta,youlanda,yelena,yahaira,xuan,wendolyn,tijuana,terina,teresia,suzi,sherell,shavonda,shaunte,sharda,shakita,sena,ryann,rubi,riva,reginia,rachal,parthenia,pamula,monnie,monet,michaele,melia,malka,maisha,lisandra,lekisha,lean,lakendra,krystin,kortney,kizzie,kittie,kera,kendal,kemberly,kanisha,julene,jule,johanne,jamee,halley,gidget,fredricka,fleta,fatimah,eusebia,elza,eleonore,dorthey,doria,donella,dinorah,delorse,claretha,christinia,charlyn,bong,belkis,azzie,andera,aiko,adena,yajaira,vania,ulrike,toshia,tifany,stefany,shizue,shenika,shawanna,sharolyn,sharilyn,shaquana,shantay,rozanne,roselee,remona,reanna,raelene,phung,petronila,natacha,nancey,myrl,miyoko,miesha,merideth,marvella,marquitta,marhta,marchelle,lizeth,libbie,lahoma,ladawn,kina,katheleen,katharyn,karisa,kaleigh,junie,julieann,johnsie,janean,jaimee,jackqueline,hisako,herma,helaine,gwyneth,gita,eustolia,emelina,elin,edris,donnette,donnetta,dierdre,denae,darcel,clarisa,cinderella,chia,charlesetta,charita,celsa,cassy,cassi,carlee,bruna,brittaney,brande,billi,antonetta,angla,angelyn,analisa,alane,wenona,wendie,veronique,vannesa,tobie,tempie,sumiko,sulema,somer,sheba,sharice,shanel,shalon,rosio,roselia,renay,rema,reena,ozie,oretha,oralee,ngan,nakesha,milly,marybelle,margrett,maragaret,manie,lurlene,lillia,lieselotte,lavelle,lashaunda,lakeesha,kaycee,kalyn,joya,joette,jenae,janiece,illa,grisel,glayds,genevie,gala,fredda,eleonor,debera,deandrea,corrinne,cordia,contessa,colene,cleotilde,chantay,cecille,beatris,azalee,arlean,ardath,anjelica,anja,alfredia,aleisha,zada,yuonne,xiao,willodean,vennie,vanna,tyisha,tova,torie,tonisha,tilda,tien,sirena,sherril,shanti,shan,senaida,samella,robbyn,renda,reita,phebe,paulita,nobuko,nguyet,neomi,mikaela,melania,maximina,marg,maisie,lynna,lilli,lashaun,lakenya,lael,kirstie,kathline,kasha,karlyn,karima,jovan,josefine,jennell,jacqui,jackelyn,hien,grazyna,florrie,floria,eleonora,dwana,dorla,delmy,deja,dede,dann,crysta,clelia,claris,chieko,cherlyn,cherelle,charmain,chara,cammy,arnette,ardelle,annika,amiee,amee,allena,yvone,yuki,yoshie,yevette,yael,willetta,voncile,venetta,tula,tonette,timika,temika,telma,teisha,taren,stacee,shawnta,saturnina,ricarda,pasty,onie,nubia,marielle,mariella,marianela,mardell,luanna,loise,lisabeth,lindsy,lilliana,lilliam,lelah,leigha,leanora,kristeen,khalilah,keeley,kandra,junko,joaquina,jerlene,jani,jamika,hsiu,hermila,genevive,evia,eugena,emmaline,elfreda,elene,donette,delcie,deeanna,darcey,clarinda,cira,chae,celinda,catheryn,casimira,carmelia,camellia,breana,bobette,bernardina,bebe,basilia,arlyne,amal,alayna,zonia,zenia,yuriko,yaeko,wynell,willena,vernia,tora,terrilyn,terica,tenesha,tawna,tajuana,taina,stephnie,sona,sina,shondra,shizuko,sherlene,sherice,sharika,rossie,rosena,rima,rheba,renna,natalya,nancee,melodi,meda,matha,marketta,maricruz,marcelene,malvina,luba,louetta,leida,lecia,lauran,lashawna,laine,khadijah,katerine,kasi,kallie,julietta,jesusita,jestine,jessia,jeffie,janyce,isadora,georgianne,fidelia,evita,eura,eulah,estefana,elsy,eladia,dodie,denisse,deloras,delila,daysi,crystle,concha,claretta,charlsie,charlena,carylon,bettyann,asley,ashlea,amira,agueda,agnus,yuette,vinita,victorina,tynisha,treena,toccara,tish,thomasena,tegan,soila,shenna,sharmaine,shantae,shandi,saran,sarai,sana,rosette,rolande,regine,otelia,olevia,nicholle,necole,naida,myrta,myesha,mitsue,minta,mertie,margy,mahalia,madalene,loura,lorean,lesha,leonida,lenita,lavone,lashell,lashandra,lamonica,kimbra,katherina,karry,kanesha,jong,jeneva,jaquelyn,gilma,ghislaine,gertrudis,fransisca,fermina,ettie,etsuko,ellan,elidia,edra,dorethea,doreatha,denyse,deetta,daine,cyrstal,corrin,cayla,carlita,camila,burma,bula,buena,barabara,avril,alaine,zana,wilhemina,wanetta,verline,vasiliki,tonita,tisa,teofila,tayna,taunya,tandra,takako,sunni,suanne,sixta,sharell,seema,rosenda,robena,raymonde,pamila,ozell,neida,mistie,micha,merissa,maurita,maryln,maryetta,marcell,malena,makeda,lovetta,lourie,lorrine,lorilee,laurena,lashay,larraine,laree,lacresha,kristle,keva,keira,karole,joie,jinny,jeannetta,jama,heidy,gilberte,gema,faviola,evelynn,enda,elli,ellena,divina,dagny,collene,codi,cindie,chassidy,chasidy,catrice,catherina,cassey,caroll,carlena,candra,calista,bryanna,britteny,beula,bari,audrie,audria,ardelia,annelle,angila,alona,allyn\".split(\",\"),\n surnames: \"smith,johnson,williams,jones,brown,davis,miller,wilson,moore,taylor,anderson,jackson,white,harris,martin,thompson,garcia,martinez,robinson,clark,rodriguez,lewis,lee,walker,hall,allen,young,hernandez,king,wright,lopez,hill,green,adams,baker,gonzalez,nelson,carter,mitchell,perez,roberts,turner,phillips,campbell,parker,evans,edwards,collins,stewart,sanchez,morris,rogers,reed,cook,morgan,bell,murphy,bailey,rivera,cooper,richardson,cox,howard,ward,torres,peterson,gray,ramirez,watson,brooks,sanders,price,bennett,wood,barnes,ross,henderson,coleman,jenkins,perry,powell,long,patterson,hughes,flores,washington,butler,simmons,foster,gonzales,bryant,alexander,griffin,diaz,hayes,myers,ford,hamilton,graham,sullivan,wallace,woods,cole,west,owens,reynolds,fisher,ellis,harrison,gibson,mcdonald,cruz,marshall,ortiz,gomez,murray,freeman,wells,webb,simpson,stevens,tucker,porter,hicks,crawford,boyd,mason,morales,kennedy,warren,dixon,ramos,reyes,burns,gordon,shaw,holmes,rice,robertson,hunt,black,daniels,palmer,mills,nichols,grant,knight,ferguson,stone,hawkins,dunn,perkins,hudson,spencer,gardner,stephens,payne,pierce,berry,matthews,arnold,wagner,willis,watkins,olson,carroll,duncan,snyder,hart,cunningham,lane,andrews,ruiz,harper,fox,riley,armstrong,carpenter,weaver,greene,elliott,chavez,sims,peters,kelley,franklin,lawson,fields,gutierrez,schmidt,carr,vasquez,castillo,wheeler,chapman,montgomery,richards,williamson,johnston,banks,meyer,bishop,mccoy,howell,alvarez,morrison,hansen,fernandez,garza,harvey,burton,nguyen,jacobs,reid,fuller,lynch,garrett,romero,welch,larson,frazier,burke,hanson,mendoza,moreno,bowman,medina,fowler,brewer,hoffman,carlson,silva,pearson,holland,fleming,jensen,vargas,byrd,davidson,hopkins,herrera,wade,soto,walters,neal,caldwell,lowe,jennings,barnett,graves,jimenez,horton,shelton,barrett,obrien,castro,sutton,mckinney,lucas,miles,rodriquez,chambers,holt,lambert,fletcher,watts,bates,hale,rhodes,pena,beck,newman,haynes,mcdaniel,mendez,bush,vaughn,parks,dawson,santiago,norris,hardy,steele,curry,powers,schultz,barker,guzman,page,munoz,ball,keller,chandler,weber,walsh,lyons,ramsey,wolfe,schneider,mullins,benson,sharp,bowen,barber,cummings,hines,baldwin,griffith,valdez,hubbard,salazar,reeves,warner,stevenson,burgess,santos,tate,cross,garner,mann,mack,moss,thornton,mcgee,farmer,delgado,aguilar,vega,glover,manning,cohen,harmon,rodgers,robbins,newton,blair,higgins,ingram,reese,cannon,strickland,townsend,potter,goodwin,walton,rowe,hampton,ortega,patton,swanson,goodman,maldonado,yates,becker,erickson,hodges,rios,conner,adkins,webster,malone,hammond,flowers,cobb,moody,quinn,pope,osborne,mccarthy,guerrero,estrada,sandoval,gibbs,gross,fitzgerald,stokes,doyle,saunders,wise,colon,gill,alvarado,greer,padilla,waters,nunez,ballard,schwartz,mcbride,houston,christensen,klein,pratt,briggs,parsons,mclaughlin,zimmerman,buchanan,moran,copeland,pittman,brady,mccormick,holloway,brock,poole,logan,bass,marsh,drake,wong,jefferson,morton,abbott,sparks,norton,huff,massey,figueroa,carson,bowers,roberson,barton,tran,lamb,harrington,boone,cortez,clarke,mathis,singleton,wilkins,cain,underwood,hogan,mckenzie,collier,luna,phelps,mcguire,bridges,wilkerson,nash,summers,atkins,wilcox,pitts,conley,marquez,burnett,cochran,chase,davenport,hood,gates,ayala,sawyer,vazquez,dickerson,hodge,acosta,flynn,espinoza,nicholson,monroe,wolf,morrow,whitaker,oconnor,skinner,ware,molina,kirby,huffman,gilmore,dominguez,oneal,lang,combs,kramer,hancock,gallagher,gaines,shaffer,wiggins,mathews,mcclain,fischer,wall,melton,hensley,bond,dyer,grimes,contreras,wyatt,baxter,snow,mosley,shepherd,larsen,hoover,beasley,petersen,whitehead,meyers,garrison,shields,horn,savage,olsen,schroeder,hartman,woodard,mueller,kemp,deleon,booth,patel,calhoun,wiley,eaton,cline,navarro,harrell,humphrey,parrish,duran,hutchinson,hess,dorsey,bullock,robles,beard,dalton,avila,rich,blackwell,johns,blankenship,trevino,salinas,campos,pruitt,callahan,montoya,hardin,guerra,mcdowell,stafford,gallegos,henson,wilkinson,booker,merritt,atkinson,orr,decker,hobbs,tanner,knox,pacheco,stephenson,glass,rojas,serrano,marks,hickman,sweeney,strong,mcclure,conway,roth,maynard,farrell,lowery,hurst,nixon,weiss,trujillo,ellison,sloan,juarez,winters,mclean,boyer,villarreal,mccall,gentry,carrillo,ayers,lara,sexton,pace,hull,leblanc,browning,velasquez,leach,chang,sellers,herring,noble,foley,bartlett,mercado,landry,durham,walls,barr,mckee,bauer,rivers,bradshaw,pugh,velez,rush,estes,dodson,morse,sheppard,weeks,camacho,bean,barron,livingston,middleton,spears,branch,blevins,chen,kerr,mcconnell,hatfield,harding,solis,frost,giles,blackburn,pennington,woodward,finley,mcintosh,koch,mccullough,blanchard,rivas,brennan,mejia,kane,benton,buckley,valentine,maddox,russo,mcknight,buck,moon,mcmillan,crosby,berg,dotson,mays,roach,chan,richmond,meadows,faulkner,oneill,knapp,kline,ochoa,jacobson,gay,hendricks,horne,shepard,hebert,cardenas,mcintyre,waller,holman,donaldson,cantu,morin,gillespie,fuentes,tillman,bentley,peck,key,salas,rollins,gamble,dickson,santana,cabrera,cervantes,howe,hinton,hurley,spence,zamora,yang,mcneil,suarez,petty,gould,mcfarland,sampson,carver,bray,macdonald,stout,hester,melendez,dillon,farley,hopper,galloway,potts,joyner,stein,aguirre,osborn,mercer,bender,franco,rowland,sykes,pickett,sears,mayo,dunlap,hayden,wilder,mckay,coffey,mccarty,ewing,cooley,vaughan,bonner,cotton,holder,stark,ferrell,cantrell,fulton,lott,calderon,pollard,hooper,burch,mullen,fry,riddle,levy,duke,odonnell,britt,daugherty,berger,dillard,alston,frye,riggs,chaney,odom,duffy,fitzpatrick,valenzuela,mayer,alford,mcpherson,acevedo,barrera,cote,reilly,compton,mooney,mcgowan,craft,clemons,wynn,nielsen,baird,stanton,snider,rosales,bright,witt,hays,holden,rutledge,kinney,clements,castaneda,slater,hahn,burks,delaney,pate,lancaster,sharpe,whitfield,talley,macias,burris,ratliff,mccray,madden,kaufman,beach,goff,cash,bolton,mcfadden,levine,byers,kirkland,kidd,workman,carney,mcleod,holcomb,finch,sosa,haney,franks,sargent,nieves,downs,rasmussen,bird,hewitt,foreman,valencia,oneil,delacruz,vinson,dejesus,hyde,forbes,gilliam,guthrie,wooten,huber,barlow,boyle,mcmahon,buckner,rocha,puckett,langley,knowles,cooke,velazquez,whitley,vang,shea,rouse,hartley,mayfield,elder,rankin,hanna,cowan,lucero,arroyo,slaughter,haas,oconnell,minor,boucher,archer,boggs,dougherty,andersen,newell,crowe,wang,friedman,bland,swain,holley,pearce,childs,yarbrough,galvan,proctor,meeks,lozano,mora,rangel,bacon,villanueva,schaefer,rosado,helms,boyce,goss,stinson,ibarra,hutchins,covington,crowley,hatcher,mackey,bunch,womack,polk,dodd,childress,childers,villa,springer,mahoney,dailey,belcher,lockhart,griggs,costa,brandt,walden,moser,tatum,mccann,akers,lutz,pryor,orozco,mcallister,lugo,davies,shoemaker,rutherford,newsome,magee,chamberlain,blanton,simms,godfrey,flanagan,crum,cordova,escobar,downing,sinclair,donahue,krueger,mcginnis,gore,farris,webber,corbett,andrade,starr,lyon,yoder,hastings,mcgrath,spivey,krause,harden,crabtree,kirkpatrick,arrington,ritter,mcghee,bolden,maloney,gagnon,dunbar,ponce,pike,mayes,beatty,mobley,kimball,butts,montes,eldridge,braun,hamm,gibbons,moyer,manley,herron,plummer,elmore,cramer,rucker,pierson,fontenot,rubio,goldstein,elkins,wills,novak,hickey,worley,gorman,katz,dickinson,broussard,woodruff,crow,britton,nance,lehman,bingham,zuniga,whaley,shafer,coffman,steward,delarosa,neely,mata,davila,mccabe,kessler,hinkle,welsh,pagan,goldberg,goins,crouch,cuevas,quinones,mcdermott,hendrickson,samuels,denton,bergeron,ivey,locke,haines,snell,hoskins,byrne,arias,corbin,beltran,chappell,downey,dooley,tuttle,couch,payton,mcelroy,crockett,groves,cartwright,dickey,mcgill,dubois,muniz,tolbert,dempsey,cisneros,sewell,latham,vigil,tapia,rainey,norwood,stroud,meade,tipton,kuhn,hilliard,bonilla,teague,gunn,greenwood,correa,reece,pineda,phipps,frey,kaiser,ames,gunter,schmitt,milligan,espinosa,bowden,vickers,lowry,pritchard,costello,piper,mcclellan,lovell,sheehan,hatch,dobson,singh,jeffries,hollingsworth,sorensen,meza,fink,donnelly,burrell,tomlinson,colbert,billings,ritchie,helton,sutherland,peoples,mcqueen,thomason,givens,crocker,vogel,robison,dunham,coker,swartz,keys,ladner,richter,hargrove,edmonds,brantley,albright,murdock,boswell,muller,quintero,padgett,kenney,daly,connolly,inman,quintana,lund,barnard,villegas,simons,huggins,tidwell,sanderson,bullard,mcclendon,duarte,draper,marrero,dwyer,abrams,stover,goode,fraser,crews,bernal,godwin,conklin,mcneal,baca,esparza,crowder,bower,brewster,mcneill,rodrigues,leal,coates,raines,mccain,mccord,miner,holbrook,swift,dukes,carlisle,aldridge,ackerman,starks,ricks,holliday,ferris,hairston,sheffield,lange,fountain,doss,betts,kaplan,carmichael,bloom,ruffin,penn,kern,bowles,sizemore,larkin,dupree,seals,metcalf,hutchison,henley,farr,mccauley,hankins,gustafson,curran,waddell,ramey,cates,pollock,cummins,messer,heller,funk,cornett,palacios,galindo,cano,hathaway,pham,enriquez,salgado,pelletier,painter,wiseman,blount,feliciano,houser,doherty,mead,mcgraw,swan,capps,blanco,blackmon,thomson,mcmanus,burkett,gleason,dickens,cormier,voss,rushing,rosenberg,hurd,dumas,benitez,arellano,marin,caudill,bragg,jaramillo,huerta,gipson,colvin,biggs,vela,platt,cassidy,tompkins,mccollum,dolan,daley,crump,sneed,kilgore,grove,grimm,davison,brunson,prater,marcum,devine,dodge,stratton,rosas,choi,tripp,ledbetter,hightower,feldman,epps,yeager,posey,scruggs,cope,stubbs,richey,overton,trotter,sprague,cordero,butcher,stiles,burgos,woodson,horner,bassett,purcell,haskins,akins,ziegler,spaulding,hadley,grubbs,sumner,murillo,zavala,shook,lockwood,driscoll,dahl,thorpe,redmond,putnam,mcwilliams,mcrae,romano,joiner,sadler,hedrick,hager,hagen,fitch,coulter,thacker,mansfield,langston,guidry,ferreira,corley,conn,rossi,lackey,baez,saenz,mcnamara,mcmullen,mckenna,mcdonough,link,engel,browne,roper,peacock,eubanks,drummond,stringer,pritchett,parham,mims,landers,grayson,schafer,egan,timmons,ohara,keen,hamlin,finn,cortes,mcnair,nadeau,moseley,michaud,rosen,oakes,kurtz,jeffers,calloway,beal,bautista,winn,suggs,stern,stapleton,lyles,laird,montano,dawkins,hagan,goldman,bryson,barajas,lovett,segura,metz,lockett,langford,hinson,eastman,hooks,smallwood,shapiro,crowell,whalen,triplett,chatman,aldrich,cahill,youngblood,ybarra,stallings,sheets,reeder,connelly,bateman,abernathy,winkler,wilkes,masters,hackett,granger,gillis,schmitz,sapp,napier,souza,lanier,gomes,weir,otero,ledford,burroughs,babcock,ventura,siegel,dugan,bledsoe,atwood,wray,varner,spangler,anaya,staley,kraft,fournier,belanger,wolff,thorne,bynum,burnette,boykin,swenson,purvis,pina,khan,duvall,darby,xiong,kauffman,healy,engle,benoit,valle,steiner,spicer,shaver,randle,lundy,chin,calvert,staton,neff,kearney,darden,oakley,medeiros,mccracken,crenshaw,perdue,dill,whittaker,tobin,washburn,hogue,goodrich,easley,bravo,dennison,shipley,kerns,jorgensen,crain,villalobos,maurer,longoria,keene,coon,witherspoon,staples,pettit,kincaid,eason,madrid,echols,lusk,stahl,currie,thayer,shultz,mcnally,seay,maher,gagne,barrow,nava,moreland,honeycutt,hearn,diggs,caron,whitten,westbrook,stovall,ragland,munson,meier,looney,kimble,jolly,hobson,goddard,culver,burr,presley,negron,connell,tovar,huddleston,ashby,salter,root,pendleton,oleary,nickerson,myrick,judd,jacobsen,bain,adair,starnes,matos,busby,herndon,hanley,bellamy,doty,bartley,yazzie,rowell,parson,gifford,cullen,christiansen,benavides,barnhart,talbot,mock,crandall,connors,bonds,whitt,gage,bergman,arredondo,addison,lujan,dowdy,jernigan,huynh,bouchard,dutton,rhoades,ouellette,kiser,herrington,hare,blackman,babb,allred,rudd,paulson,ogden,koenig,geiger,begay,parra,lassiter,hawk,esposito,waldron,ransom,prather,chacon,vick,sands,roark,parr,mayberry,greenberg,coley,bruner,whitman,skaggs,shipman,leary,hutton,romo,medrano,ladd,kruse,askew,schulz,alfaro,tabor,mohr,gallo,bermudez,pereira,bliss,reaves,flint,comer,woodall,naquin,guevara,delong,carrier,pickens,tilley,schaffer,knutson,fenton,doran,vogt,vann,prescott,mclain,landis,corcoran,zapata,hyatt,hemphill,faulk,dove,boudreaux,aragon,whitlock,trejo,tackett,shearer,saldana,hanks,mckinnon,koehler,bourgeois,keyes,goodson,foote,lunsford,goldsmith,flood,winslow,sams,reagan,mccloud,hough,esquivel,naylor,loomis,coronado,ludwig,braswell,bearden,huang,fagan,ezell,edmondson,cronin,nunn,lemon,guillory,grier,dubose,traylor,ryder,dobbins,coyle,aponte,whitmore,smalls,rowan,malloy,cardona,braxton,borden,humphries,carrasco,ruff,metzger,huntley,hinojosa,finney,madsen,ernst,dozier,burkhart,bowser,peralta,daigle,whittington,sorenson,saucedo,roche,redding,fugate,avalos,waite,lind,huston,hawthorne,hamby,boyles,boles,regan,faust,crook,beam,barger,hinds,gallardo,willoughby,willingham,eckert,busch,zepeda,worthington,tinsley,hoff,hawley,carmona,varela,rector,newcomb,kinsey,dube,whatley,ragsdale,bernstein,becerra,yost,mattson,felder,cheek,handy,grossman,gauthier,escobedo,braden,beckman,mott,hillman,flaherty,dykes,stockton,stearns,lofton,coats,cavazos,beavers,barrios,tang,mosher,cardwell,coles,burnham,weller,lemons,beebe,aguilera,parnell,harman,couture,alley,schumacher,redd,dobbs,blum,blalock,merchant,ennis,denson,cottrell,brannon,bagley,aviles,watt,sousa,rosenthal,rooney,dietz,blank,paquette,mcclelland,duff,velasco,lentz,grubb,burrows,barbour,ulrich,shockley,rader,beyer,mixon,layton,altman,weathers,stoner,squires,shipp,priest,lipscomb,cutler,caballero,zimmer,willett,thurston,storey,medley,epperson,shah,mcmillian,baggett,torrez,hirsch,dent,poirier,peachey,farrar,creech,barth,trimble,dupre,albrecht,sample,lawler,crisp,conroy,wetzel,nesbitt,murry,jameson,wilhelm,patten,minton,matson,kimbrough,guinn,croft,toth,pulliam,nugent,newby,littlejohn,dias,canales,bernier,baron,singletary,renteria,pruett,mchugh,mabry,landrum,brower,stoddard,cagle,stjohn,scales,kohler,kellogg,hopson,gant,tharp,gann,zeigler,pringle,hammons,fairchild,deaton,chavis,carnes,rowley,matlock,kearns,irizarry,carrington,starkey,lopes,jarrell,craven,baum,littlefield,linn,humphreys,etheridge,cuellar,chastain,bundy,speer,skelton,quiroz,pyle,portillo,ponder,moulton,machado,killian,hutson,hitchcock,dowling,cloud,burdick,spann,pedersen,levin,leggett,hayward,dietrich,beaulieu,barksdale,wakefield,snowden,briscoe,bowie,berman,ogle,mcgregor,laughlin,helm,burden,wheatley,schreiber,pressley,parris,alaniz,agee,swann,snodgrass,schuster,radford,monk,mattingly,harp,girard,cheney,yancey,wagoner,ridley,lombardo,hudgins,gaskins,duckworth,coburn,willey,prado,newberry,magana,hammonds,elam,whipple,slade,serna,ojeda,liles,dorman,diehl,upton,reardon,michaels,goetz,eller,bauman,baer,layne,hummel,brenner,amaya,adamson,ornelas,dowell,cloutier,castellanos,wellman,saylor,orourke,moya,montalvo,kilpatrick,durbin,shell,oldham,kang,garvin,foss,branham,bartholomew,templeton,maguire,holton,rider,monahan,mccormack,beaty,anders,streeter,nieto,nielson,moffett,lankford,keating,heck,gatlin,delatorre,callaway,adcock,worrell,unger,robinette,nowak,jeter,brunner,steen,parrott,overstreet,nobles,montanez,clevenger,brinkley,trahan,quarles,pickering,pederson,jansen,grantham,gilchrist,crespo,aiken,schell,schaeffer,lorenz,leyva,harms,dyson,wallis,pease,leavitt,cheng,cavanaugh,batts,warden,seaman,rockwell,quezada,paxton,linder,houck,fontaine,durant,caruso,adler,pimentel,mize,lytle,cleary,cason,acker,switzer,isaacs,higginbotham,waterman,vandyke,stamper,sisk,shuler,riddick,mcmahan,levesque,hatton,bronson,bollinger,arnett,okeefe,gerber,gannon,farnsworth,baughman,silverman,satterfield,mccrary,kowalski,grigsby,greco,cabral,trout,rinehart,mahon,linton,gooden,curley,baugh,wyman,weiner,schwab,schuler,morrissey,mahan,bunn,thrasher,spear,waggoner,qualls,purdy,mcwhorter,mauldin,gilman,perryman,newsom,menard,martino,graf,billingsley,artis,simpkins,salisbury,quintanilla,gilliland,fraley,foust,crouse,scarborough,grissom,fultz,marlow,markham,madrigal,lawton,barfield,whiting,varney,schwarz,gooch,arce,wheat,truong,poulin,hurtado,selby,gaither,fortner,culpepper,coughlin,brinson,boudreau,bales,stepp,holm,schilling,morrell,kahn,heaton,gamez,causey,turpin,shanks,schrader,meek,isom,hardison,carranza,yanez,scroggins,schofield,runyon,ratcliff,murrell,moeller,irby,currier,butterfield,ralston,pullen,pinson,estep,carbone,hawks,ellington,casillas,spurlock,sikes,motley,mccartney,kruger,isbell,houle,burk,tomlin,quigley,neumann,lovelace,fennell,cheatham,bustamante,skidmore,hidalgo,forman,culp,bowens,betancourt,aquino,robb,milner,martel,gresham,wiles,ricketts,dowd,collazo,bostic,blakely,sherrod,kenyon,gandy,ebert,deloach,allard,sauer,robins,olivares,gillette,chestnut,bourque,paine,hite,hauser,devore,crawley,chapa,talbert,poindexter,meador,mcduffie,mattox,kraus,harkins,choate,wren,sledge,sanborn,kinder,geary,cornwell,barclay,abney,seward,rhoads,howland,fortier,benner,vines,tubbs,troutman,rapp,mccurdy,deluca,westmoreland,havens,guajardo,clary,seal,meehan,herzog,guillen,ashcraft,waugh,renner,milam,elrod,churchill,breaux,bolin,asher,windham,tirado,pemberton,nolen,noland,knott,emmons,cornish,christenson,brownlee,barbee,waldrop,pitt,olvera,lombardi,gruber,gaffney,eggleston,banda,archuleta,slone,prewitt,pfeiffer,nettles,mena,mcadams,henning,gardiner,cromwell,chisholm,burleson,vest,oglesby,mccarter,lumpkin,wofford,vanhorn,thorn,teel,swafford,stclair,stanfield,ocampo,herrmann,hannon,arsenault,roush,mcalister,hiatt,gunderson,forsythe,duggan,delvalle,cintron,wilks,weinstein,uribe,rizzo,noyes,mclendon,gurley,bethea,winstead,maples,guyton,giordano,alderman,valdes,polanco,pappas,lively,grogan,griffiths,bobo,arevalo,whitson,sowell,rendon,fernandes,farrow,benavidez,ayres,alicea,stump,smalley,seitz,schulte,gilley,gallant,canfield,wolford,omalley,mcnutt,mcnulty,mcgovern,hardman,harbin,cowart,chavarria,brink,beckett,bagwell,armstead,anglin,abreu,reynoso,krebs,jett,hoffmann,greenfield,forte,burney,broome,sisson,trammell,partridge,mace,lomax,lemieux,gossett,frantz,fogle,cooney,broughton,pence,paulsen,muncy,mcarthur,hollins,beauchamp,withers,osorio,mulligan,hoyle,dockery,cockrell,begley,amador,roby,rains,lindquist,gentile,everhart,bohannon,wylie,sommers,purnell,fortin,dunning,breeden,vail,phelan,phan,marx,cosby,colburn,boling,biddle,ledesma,gaddis,denney,chow,bueno,berrios,wicker,tolliver,thibodeaux,nagle,lavoie,fisk,crist,barbosa,reedy,locklear,kolb,himes,behrens,beckwith,weems,wahl,shorter,shackelford,rees,muse,cerda,valadez,thibodeau,saavedra,ridgeway,reiter,mchenry,majors,lachance,keaton,ferrara,clemens,blocker,applegate,needham,mojica,kuykendall,hamel,escamilla,doughty,burchett,ainsworth,vidal,upchurch,thigpen,strauss,spruill,sowers,riggins,ricker,mccombs,harlow,buffington,sotelo,olivas,negrete,morey,macon,logsdon,lapointe,bigelow,bello,westfall,stubblefield,lindley,hein,hawes,farrington,breen,birch,wilde,steed,sepulveda,reinhardt,proffitt,minter,messina,mcnabb,maier,keeler,gamboa,donohue,basham,shinn,crooks,cota,borders,bills,bachman,tisdale,tavares,schmid,pickard,gulley,fonseca,delossantos,condon,batista,wicks,wadsworth,martell,littleton,ison,haag,folsom,brumfield,broyles,brito,mireles,mcdonnell,leclair,hamblin,gough,fanning,binder,winfield,whitworth,soriano,palumbo,newkirk,mangum,hutcherson,comstock,carlin,beall,bair,wendt,watters,walling,putman,otoole,morley,mares,lemus,keener,hundley,dial,damico,billups,strother,mcfarlane,lamm,eaves,crutcher,caraballo,canty,atwell,taft,siler,rust,rawls,rawlings,prieto,mcneely,mcafee,hulsey,hackney,galvez,escalante,delagarza,crider,bandy,wilbanks,stowe,steinberg,renfro,masterson,massie,lanham,haskell,hamrick,dehart,burdette,branson,bourne,babin,aleman,worthy,tibbs,smoot,slack,paradis,mull,luce,houghton,gantt,furman,danner,christianson,burge,ashford,arndt,almeida,stallworth,shade,searcy,sager,noonan,mclemore,mcintire,maxey,lavigne,jobe,ferrer,falk,coffin,byrnes,aranda,apodaca,stamps,rounds,peek,olmstead,lewandowski,kaminski,dunaway,bruns,brackett,amato,reich,mcclung,lacroix,koontz,herrick,hardesty,flanders,cousins,cato,cade,vickery,shank,nagel,dupuis,croteau,cotter,stuckey,stine,porterfield,pauley,moffitt,knudsen,hardwick,goforth,dupont,blunt,barrows,barnhill,shull,rash,loftis,lemay,kitchens,horvath,grenier,fuchs,fairbanks,culbertson,calkins,burnside,beattie,ashworth,albertson,wertz,vaught,vallejo,turk,tuck,tijerina,sage,peterman,marroquin,marr,lantz,hoang,demarco,cone,berube,barnette,wharton,stinnett,slocum,scanlon,sander,pinto,mancuso,lima,headley,epstein,counts,clarkson,carnahan,boren,arteaga,adame,zook,whittle,whitehurst,wenzel,saxton,reddick,puente,handley,haggerty,earley,devlin,chaffin,cady,acuna,solano,sigler,pollack,pendergrass,ostrander,janes,francois,crutchfield,chamberlin,brubaker,baptiste,willson,reis,neeley,mullin,mercier,lira,layman,keeling,higdon,espinal,chapin,warfield,toledo,pulido,peebles,nagy,montague,mello,lear,jaeger,hogg,graff,furr,soliz,poore,mendenhall,mclaurin,maestas,gable,barraza,tillery,snead,pond,neill,mcculloch,mccorkle,lightfoot,hutchings,holloman,harness,dorn,bock,zielinski,turley,treadwell,stpierre,starling,somers,oswald,merrick,easterling,bivens,truitt,poston,parry,ontiveros,olivarez,moreau,medlin,lenz,knowlton,fairley,cobbs,chisolm,bannister,woodworth,toler,ocasio,noriega,neuman,moye,milburn,mcclanahan,lilley,hanes,flannery,dellinger,danielson,conti,blodgett,beers,weatherford,strain,karr,hitt,denham,custer,coble,clough,casteel,bolduc,batchelor,ammons,whitlow,tierney,staten,sibley,seifert,schubert,salcedo,mattison,laney,haggard,grooms,dees,cromer,cooks,colson,caswell,zarate,swisher,shin,ragan,pridgen,mcvey,matheny,lafleur,franz,ferraro,dugger,whiteside,rigsby,mcmurray,lehmann,jacoby,hildebrand,hendrick,headrick,goad,fincher,drury,borges,archibald,albers,woodcock,trapp,soares,seaton,monson,luckett,lindberg,kopp,keeton,healey,garvey,gaddy,fain,burchfield,wentworth,strand,stack,spooner,saucier,ricci,plunkett,pannell,ness,leger,freitas,fong,elizondo,duval,beaudoin,urbina,rickard,partin,mcgrew,mcclintock,ledoux,forsyth,faison,devries,bertrand,wasson,tilton,scarbrough,leung,irvine,garber,denning,corral,colley,castleberry,bowlin,bogan,beale,baines,trice,rayburn,parkinson,nunes,mcmillen,leahy,kimmel,higgs,fulmer,carden,bedford,taggart,spearman,prichard,morrill,koonce,heinz,hedges,guenther,grice,findley,dover,creighton,boothe,bayer,arreola,vitale,valles,raney,osgood,hanlon,burley,bounds,worden,weatherly,vetter,tanaka,stiltner,nevarez,mosby,montero,melancon,harter,hamer,goble,gladden,gist,ginn,akin,zaragoza,tarver,sammons,royster,oreilly,muir,morehead,luster,kingsley,kelso,grisham,glynn,baumann,alves,yount,tamayo,paterson,oates,menendez,longo,hargis,gillen,desantis,conover,breedlove,sumpter,scherer,rupp,reichert,heredia,creel,cohn,clemmons,casas,bickford,belton,bach,williford,whitcomb,tennant,sutter,stull,mccallum,langlois,keel,keegan,dangelo,dancy,damron,clapp,clanton,bankston,oliveira,mintz,mcinnis,martens,mabe,laster,jolley,hildreth,hefner,glaser,duckett,demers,brockman,blais,alcorn,agnew,toliver,tice,seeley,najera,musser,mcfall,laplante,galvin,fajardo,doan,coyne,copley,clawson,cheung,barone,wynne,woodley,tremblay,stoll,sparrow,sparkman,schweitzer,sasser,samples,roney,legg,heim,farias,colwell,christman,bratcher,winchester,upshaw,southerland,sorrell,sells,mccloskey,martindale,luttrell,loveless,lovejoy,linares,latimer,embry,coombs,bratton,bostick,venable,tuggle,toro,staggs,sandlin,jefferies,heckman,griffis,crayton,clem,browder,thorton,sturgill,sprouse,royer,rousseau,ridenour,pogue,perales,peeples,metzler,mesa,mccutcheon,mcbee,hornsby,heffner,corrigan,armijo,plante,peyton,paredes,macklin,hussey,hodgson,granados,frias,becnel,batten,almanza,turney,teal,sturgeon,meeker,mcdaniels,limon,keeney,hutto,holguin,gorham,fishman,fierro,blanchette,rodrigue,reddy,osburn,oden,lerma,kirkwood,keefer,haugen,hammett,chalmers,brinkman,baumgartner,zhang,valerio,tellez,steffen,shumate,sauls,ripley,kemper,guffey,evers,craddock,carvalho,blaylock,banuelos,balderas,wheaton,turnbull,shuman,pointer,mosier,mccue,ligon,kozlowski,johansen,ingle,herr,briones,snipes,rickman,pipkin,pantoja,orosco,moniz,lawless,kunkel,hibbard,galarza,enos,bussey,schott,salcido,perreault,mcdougal,mccool,haight,garris,easton,conyers,atherton,wimberly,utley,spellman,smithson,slagle,ritchey,rand,petit,osullivan,oaks,nutt,mcvay,mccreary,mayhew,knoll,jewett,harwood,cardoza,ashe,arriaga,zeller,wirth,whitmire,stauffer,rountree,redden,mccaffrey,martz,larose,langdon,humes,gaskin,faber,devito,cass,almond,wingfield,wingate,villareal,tyner,smothers,severson,reno,pennell,maupin,leighton,janssen,hassell,hallman,halcomb,folse,fitzsimmons,fahey,cranford,bolen,battles,battaglia,wooldridge,trask,rosser,regalado,mcewen,keefe,fuqua,echevarria,caro,boynton,andrus,viera,vanmeter,taber,spradlin,seibert,provost,prentice,oliphant,laporte,hwang,hatchett,hass,greiner,freedman,covert,chilton,byars,wiese,venegas,swank,shrader,roberge,mullis,mortensen,mccune,marlowe,kirchner,keck,isaacson,hostetler,halverson,gunther,griswold,fenner,durden,blackwood,ahrens,sawyers,savoy,nabors,mcswain,mackay,lavender,lash,labbe,jessup,fullerton,cruse,crittenden,correia,centeno,caudle,canady,callender,alarcon,ahern,winfrey,tribble,salley,roden,musgrove,minnick,fortenberry,carrion,bunting,batiste,whited,underhill,stillwell,rauch,pippin,perrin,messenger,mancini,lister,kinard,hartmann,fleck,wilt,treadway,thornhill,spalding,rafferty,pitre,patino,ordonez,linkous,kelleher,homan,galbraith,feeney,curtin,coward,camarillo,buss,bunnell,bolt,beeler,autry,alcala,witte,wentz,stidham,shively,nunley,meacham,martins,lemke,lefebvre,hynes,horowitz,hoppe,holcombe,dunne,derr,cochrane,brittain,bedard,beauregard,torrence,strunk,soria,simonson,shumaker,scoggins,oconner,moriarty,kuntz,ives,hutcheson,horan,hales,garmon,fitts,bohn,atchison,wisniewski,vanwinkle,sturm,sallee,prosser,moen,lundberg,kunz,kohl,keane,jorgenson,jaynes,funderburk,freed,durr,creamer,cosgrove,batson,vanhoose,thomsen,teeter,smyth,redmon,orellana,maness,heflin,goulet,frick,forney,bunker,asbury,aguiar,talbott,southard,mowery,mears,lemmon,krieger,hickson,elston,duong,delgadillo,dayton,dasilva,conaway,catron,bruton,bradbury,bordelon,bivins,bittner,bergstrom,beals,abell,whelan,tejada,pulley,pino,norfleet,nealy,maes,loper,gatewood,frierson,freund,finnegan,cupp,covey,catalano,boehm,bader,yoon,walston,tenney,sipes,rawlins,medlock,mccaskill,mccallister,marcotte,maclean,hughey,henke,harwell,gladney,gilson,chism,caskey,brandenburg,baylor,villasenor,veal,thatcher,stegall,petrie,nowlin,navarrete,lombard,loftin,lemaster,kroll,kovach,kimbrell,kidwell,hershberger,fulcher,cantwell,bustos,boland,bobbitt,binkley,wester,weis,verdin,tong,tiller,sisco,sharkey,seymore,rosenbaum,rohr,quinonez,pinkston,malley,logue,lessard,lerner,lebron,krauss,klinger,halstead,haller,getz,burrow,alger,shores,pfeifer,perron,nelms,munn,mcmaster,mckenney,manns,knudson,hutchens,huskey,goebel,flagg,cushman,click,castellano,carder,bumgarner,wampler,spinks,robson,neel,mcreynolds,mathias,maas,loera,jenson,florez,coons,buckingham,brogan,berryman,wilmoth,wilhite,thrash,shephard,seidel,schulze,roldan,pettis,obryan,maki,mackie,hatley,frazer,fiore,chesser,bottoms,bisson,benefield,allman,wilke,trudeau,timm,shifflett,mundy,milliken,mayers,leake,kohn,huntington,horsley,hermann,guerin,fryer,frizzell,foret,flemming,fife,criswell,carbajal,bozeman,boisvert,angulo,wallen,tapp,silvers,ramsay,oshea,orta,moll,mckeever,mcgehee,linville,kiefer,ketchum,howerton,groce,gass,fusco,corbitt,betz,bartels,amaral,aiello,weddle,sperry,seiler,runyan,raley,overby,osteen,olds,mckeown,matney,lauer,lattimore,hindman,hartwell,fredrickson,fredericks,espino,clegg,carswell,cambell,burkholder,woodbury,welker,totten,thornburg,theriault,stitt,stamm,stackhouse,scholl,saxon,rife,razo,quinlan,pinkerton,olivo,nesmith,nall,mattos,lafferty,justus,giron,geer,fielder,drayton,dortch,conners,conger,boatwright,billiot,barden,armenta,tibbetts,steadman,slattery,rinaldi,raynor,pinckney,pettigrew,milne,matteson,halsey,gonsalves,fellows,durand,desimone,cowley,cowles,brill,barham,barela,barba,ashmore,withrow,valenti,tejeda,spriggs,sayre,salerno,peltier,peel,merriman,matheson,lowman,lindstrom,hyland,giroux,earls,dugas,dabney,collado,briseno,baxley,whyte,wenger,vanover,vanburen,thiel,schindler,schiller,rigby,pomeroy,passmore,marble,manzo,mahaffey,lindgren,laflamme,greathouse,fite,calabrese,bayne,yamamoto,wick,townes,thames,reinhart,peeler,naranjo,montez,mcdade,mast,markley,marchand,leeper,kellum,hudgens,hennessey,hadden,gainey,coppola,borrego,bolling,beane,ault,slaton,pape,null,mulkey,lightner,langer,hillard,ethridge,enright,derosa,baskin,weinberg,turman,somerville,pardo,noll,lashley,ingraham,hiller,hendon,glaze,cothran,cooksey,conte,carrico,abner,wooley,swope,summerlin,sturgis,sturdivant,stott,spurgeon,spillman,speight,roussel,popp,nutter,mckeon,mazza,magnuson,lanning,kozak,jankowski,heyward,forster,corwin,callaghan,bays,wortham,usher,theriot,sayers,sabo,poling,loya,lieberman,laroche,labelle,howes,harr,garay,fogarty,everson,durkin,dominquez,chaves,chambliss,witcher,vieira,vandiver,terrill,stoker,schreiner,moorman,liddell,lawhorn,krug,irons,hylton,hollenbeck,herrin,hembree,goolsby,goodin,gilmer,foltz,dinkins,daughtry,caban,brim,briley,bilodeau,wyant,vergara,tallent,swearingen,stroup,scribner,quillen,pitman,mccants,maxfield,martinson,holtz,flournoy,brookins,brody,baumgardner,straub,sills,roybal,roundtree,oswalt,mcgriff,mcdougall,mccleary,maggard,gragg,gooding,godinez,doolittle,donato,cowell,cassell,bracken,appel,zambrano,reuter,perea,nakamura,monaghan,mickens,mcclinton,mcclary,marler,kish,judkins,gilbreath,freese,flanigan,felts,erdmann,dodds,chew,brownell,boatright,barreto,slayton,sandberg,saldivar,pettway,odum,narvaez,moultrie,montemayor,merrell,lees,keyser,hoke,hardaway,hannan,gilbertson,fogg,dumont,deberry,coggins,buxton,bucher,broadnax,beeson,araujo,appleton,amundson,aguayo,ackley,yocum,worsham,shivers,sanches,sacco,robey,rhoden,pender,ochs,mccurry,madera,luong,knotts,jackman,heinrich,hargrave,gault,comeaux,chitwood,caraway,boettcher,bernhardt,barrientos,zink,wickham,whiteman,thorp,stillman,settles,schoonover,roque,riddell,pilcher,phifer,novotny,macleod,hardee,haase,grider,doucette,clausen,bevins,beamon,badillo,tolley,tindall,soule,snook,seale,pinkney,pellegrino,nowell,nemeth,mondragon,mclane,lundgren,ingalls,hudspeth,hixson,gearhart,furlong,downes,dibble,deyoung,cornejo,camara,brookshire,boyette,wolcott,surratt,sellars,segal,salyer,reeve,rausch,labonte,haro,gower,freeland,fawcett,eads,driggers,donley,collett,bromley,boatman,ballinger,baldridge,volz,trombley,stonge,shanahan,rivard,rhyne,pedroza,matias,jamieson,hedgepeth,hartnett,estevez,eskridge,denman,chiu,chinn,catlett,carmack,buie,bechtel,beardsley,bard,ballou,ulmer,skeen,robledo,rincon,reitz,piazza,munger,moten,mcmichael,loftus,ledet,kersey,groff,fowlkes,crumpton,clouse,bettis,villagomez,timmerman,strom,santoro,roddy,penrod,musselman,macpherson,leboeuf,harless,haddad,guido,golding,fulkerson,fannin,dulaney,dowdell,cottle,ceja,cate,bosley,benge,albritton,voigt,trowbridge,soileau,seely,rohde,pearsall,paulk,orth,nason,mota,mcmullin,marquardt,madigan,hoag,gillum,gabbard,fenwick,danforth,cushing,cress,creed,cazares,bettencourt,barringer,baber,stansberry,schramm,rutter,rivero,oquendo,necaise,mouton,montenegro,miley,mcgough,marra,macmillan,lamontagne,jasso,horst,hetrick,heilman,gaytan,gall,fortney,dingle,desjardins,dabbs,burbank,brigham,breland,beaman,arriola,yarborough,wallin,toscano,stowers,reiss,pichardo,orton,michels,mcnamee,mccrory,leatherman,kell,keister,horning,hargett,guay,ferro,deboer,dagostino,carper,blanks,beaudry,towle,tafoya,stricklin,strader,soper,sonnier,sigmon,schenk,saddler,pedigo,mendes,lunn,lohr,lahr,kingsbury,jarman,hume,holliman,hofmann,haworth,harrelson,hambrick,flick,edmunds,dacosta,crossman,colston,chaplin,carrell,budd,weiler,waits,valentino,trantham,tarr,solorio,roebuck,powe,plank,pettus,pagano,mink,luker,leathers,joslin,hartzell,gambrell,cepeda,carty,caputo,brewington,bedell,ballew,applewhite,warnock,walz,urena,tudor,reel,pigg,parton,mickelson,meagher,mclellan,mcculley,mandel,leech,lavallee,kraemer,kling,kipp,kehoe,hochstetler,harriman,gregoire,grabowski,gosselin,gammon,fancher,edens,desai,brannan,armendariz,woolsey,whitehouse,whetstone,ussery,towne,testa,tallman,studer,strait,steinmetz,sorrells,sauceda,rolfe,paddock,mitchem,mcginn,mccrea,lovato,hazen,gilpin,gaynor,fike,devoe,delrio,curiel,burkhardt,bode,backus,zinn,watanabe,wachter,vanpelt,turnage,shaner,schroder,sato,riordan,quimby,portis,natale,mckoy,mccown,kilmer,hotchkiss,hesse,halbert,gwinn,godsey,delisle,chrisman,canter,arbogast,angell,acree,yancy,woolley,wesson,weatherspoon,trainor,stockman,spiller,sipe,rooks,reavis,propst,porras,neilson,mullens,loucks,llewellyn,kumar,koester,klingensmith,kirsch,kester,honaker,hodson,hennessy,helmick,garrity,garibay,drain,casarez,callis,botello,aycock,avant,wingard,wayman,tully,theisen,szymanski,stansbury,segovia,rainwater,preece,pirtle,padron,mincey,mckelvey,mathes,larrabee,kornegay,klug,ingersoll,hecht,germain,eggers,dykstra,deering,decoteau,deason,dearing,cofield,carrigan,bonham,bahr,aucoin,appleby,almonte,yager,womble,wimmer,weimer,vanderpool,stancil,sprinkle,romine,remington,pfaff,peckham,olivera,meraz,maze,lathrop,koehn,hazelton,halvorson,hallock,haddock,ducharme,dehaven,caruthers,brehm,bosworth,bost,bias,beeman,basile,bane,aikens,wold,walther,tabb,suber,strawn,stocker,shirey,schlosser,riedel,rembert,reimer,pyles,peele,merriweather,letourneau,latta,kidder,hixon,hillis,hight,herbst,henriquez,haygood,hamill,gabel,fritts,eubank,dawes,correll,bushey,buchholz,brotherton,botts,barnwell,auger,atchley,westphal,veilleux,ulloa,stutzman,shriver,ryals,pilkington,moyers,marrs,mangrum,maddux,lockard,laing,kuhl,harney,hammock,hamlett,felker,doerr,depriest,carrasquillo,carothers,bogle,bischoff,bergen,albanese,wyckoff,vermillion,vansickle,thibault,tetreault,stickney,shoemake,ruggiero,rawson,racine,philpot,paschal,mcelhaney,mathison,legrand,lapierre,kwan,kremer,jiles,hilbert,geyer,faircloth,ehlers,egbert,desrosiers,dalrymple,cotten,cashman,cadena,boardman,alcaraz,wyrick,therrien,tankersley,strickler,puryear,plourde,pattison,pardue,mcginty,mcevoy,landreth,kuhns,koon,hewett,giddens,emerick,eades,deangelis,cosme,ceballos,birdsong,benham,bemis,armour,anguiano,welborn,tsosie,storms,shoup,sessoms,samaniego,rood,rojo,rhinehart,raby,northcutt,myer,munguia,morehouse,mcdevitt,mallett,lozada,lemoine,kuehn,hallett,grim,gillard,gaylor,garman,gallaher,feaster,faris,darrow,dardar,coney,carreon,braithwaite,boylan,boyett,bixler,bigham,benford,barragan,barnum,zuber,wyche,westcott,vining,stoltzfus,simonds,shupe,sabin,ruble,rittenhouse,richman,perrone,mulholland,millan,lomeli,kite,jemison,hulett,holler,hickerson,herold,hazelwood,griffen,gause,forde,eisenberg,dilworth,charron,chaisson,bristow,breunig,brace,boutwell,bentz,belk,bayless,batchelder,baran,baeza,zimmermann,weathersby,volk,toole,theis,tedesco,searle,schenck,satterwhite,ruelas,rankins,partida,nesbit,morel,menchaca,levasseur,kaylor,johnstone,hulse,hollar,hersey,harrigan,harbison,guyer,gish,giese,gerlach,geller,geisler,falcone,elwell,doucet,deese,darr,corder,chafin,byler,bussell,burdett,brasher,bowe,bellinger,bastian,barner,alleyne,wilborn,weil,wegner,tatro,spitzer,smithers,schoen,resendez,parisi,overman,obrian,mudd,mahler,maggio,lindner,lalonde,lacasse,laboy,killion,kahl,jessen,jamerson,houk,henshaw,gustin,graber,durst,duenas,davey,cundiff,conlon,colunga,coakley,chiles,capers,buell,bricker,bissonnette,bartz,bagby,zayas,volpe,treece,toombs,thom,terrazas,swinney,skiles,silveira,shouse,senn,ramage,moua,langham,kyles,holston,hoagland,herd,feller,denison,carraway,burford,bickel,ambriz,abercrombie,yamada,weidner,waddle,verduzco,thurmond,swindle,schrock,sanabria,rosenberger,probst,peabody,olinger,nazario,mccafferty,mcbroom,mcabee,mazur,matherne,mapes,leverett,killingsworth,heisler,griego,gosnell,frankel,franke,ferrante,fenn,ehrlich,christopherso,chasse,caton,brunelle,bloomfield,babbitt,azevedo,abramson,ables,abeyta,youmans,wozniak,wainwright,stowell,smitherman,samuelson,runge,rothman,rosenfeld,peake,owings,olmos,munro,moreira,leatherwood,larkins,krantz,kovacs,kizer,kindred,karnes,jaffe,hubbell,hosey,hauck,goodell,erdman,dvorak,doane,cureton,cofer,buehler,bierman,berndt,banta,abdullah,warwick,waltz,turcotte,torrey,stith,seger,sachs,quesada,pinder,peppers,pascual,paschall,parkhurst,ozuna,oster,nicholls,lheureux,lavalley,kimura,jablonski,haun,gourley,gilligan,croy,cotto,cargill,burwell,burgett,buckman,booher,adorno,wrenn,whittemore,urias,szabo,sayles,saiz,rutland,rael,pharr,pelkey,ogrady,nickell,musick,moats,mather,massa,kirschner,kieffer,kellar,hendershot,gott,godoy,gadson,furtado,fiedler,erskine,dutcher,dever,daggett,chevalier,brake,ballesteros,amerson,wingo,waldon,trott,silvey,showers,schlegel,ritz,pepin,pelayo,parsley,palermo,moorehead,mchale,lett,kocher,kilburn,iglesias,humble,hulbert,huckaby,hartford,hardiman,gurney,grigg,grasso,goings,fillmore,farber,depew,dandrea,cowen,covarrubias,burrus,bracy,ardoin,thompkins,standley,radcliffe,pohl,persaud,parenteau,pabon,newson,newhouse,napolitano,mulcahy,malave,keim,hooten,hernandes,heffernan,hearne,greenleaf,glick,fuhrman,fetter,faria,dishman,dickenson,crites,criss,clapper,chenault,castor,casto,bugg,bove,bonney,anderton,allgood,alderson,woodman,warrick,toomey,tooley,tarrant,summerville,stebbins,sokol,searles,schutz,schumann,scheer,remillard,raper,proulx,palmore,monroy,messier,melo,melanson,mashburn,manzano,lussier,jenks,huneycutt,hartwig,grimsley,fulk,fielding,fidler,engstrom,eldred,dantzler,crandell,calder,brumley,breton,brann,bramlett,boykins,bianco,bancroft,almaraz,alcantar,whitmer,whitener,welton,vineyard,rahn,paquin,mizell,mcmillin,mckean,marston,maciel,lundquist,liggins,lampkin,kranz,koski,kirkham,jiminez,hazzard,harrod,graziano,grammer,gendron,garrido,fordham,englert,dryden,demoss,deluna,crabb,comeau,brummett,blume,benally,wessel,vanbuskirk,thorson,stumpf,stockwell,reams,radtke,rackley,pelton,niemi,newland,nelsen,morrissette,miramontes,mcginley,mccluskey,marchant,luevano,lampe,lail,jeffcoat,infante,hinman,gaona,eady,desmarais,decosta,dansby,cisco,choe,breckenridge,bostwick,borg,bianchi,alberts,wilkie,whorton,vargo,tait,soucy,schuman,ousley,mumford,lippert,leath,lavergne,laliberte,kirksey,kenner,johnsen,izzo,hiles,gullett,greenwell,gaspar,galbreath,gaitan,ericson,delapaz,croom,cottingham,clift,bushnell,bice,beason,arrowood,waring,voorhees,truax,shreve,shockey,schatz,sandifer,rubino,rozier,roseberry,pieper,peden,nester,nave,murphey,malinowski,macgregor,lafrance,kunkle,kirkman,hipp,hasty,haddix,gervais,gerdes,gamache,fouts,fitzwater,dillingham,deming,deanda,cedeno,cannady,burson,bouldin,arceneaux,woodhouse,whitford,wescott,welty,weigel,torgerson,toms,surber,sunderland,sterner,setzer,riojas,pumphrey,puga,metts,mcgarry,mccandless,magill,lupo,loveland,llamas,leclerc,koons,kahler,huss,holbert,heintz,haupt,grimmett,gaskill,ellingson,dorr,dingess,deweese,desilva,crossley,cordeiro,converse,conde,caldera,cairns,burmeister,burkhalter,brawner,bott,youngs,vierra,valladares,shrum,shropshire,sevilla,rusk,rodarte,pedraza,nino,merino,mcminn,markle,mapp,lajoie,koerner,kittrell,kato,hyder,hollifield,heiser,hazlett,greenwald,fant,eldredge,dreher,delafuente,cravens,claypool,beecher,aronson,alanis,worthen,wojcik,winger,whitacre,valverde,valdivia,troupe,thrower,swindell,suttles,stroman,spires,slate,shealy,sarver,sartin,sadowski,rondeau,rolon,rascon,priddy,paulino,nolte,munroe,molloy,mciver,lykins,loggins,lenoir,klotz,kempf,hupp,hollowell,hollander,haynie,harkness,harker,gottlieb,frith,eddins,driskell,doggett,densmore,charette,cassady,byrum,burcham,buggs,benn,whitted,warrington,vandusen,vaillancourt,steger,siebert,scofield,quirk,purser,plumb,orcutt,nordstrom,mosely,michalski,mcphail,mcdavid,mccraw,marchese,mannino,lefevre,largent,lanza,kress,isham,hunsaker,hoch,hildebrandt,guarino,grijalva,graybill,fick,ewell,ewald,cusick,crumley,coston,cathcart,carruthers,bullington,bowes,blain,blackford,barboza,yingling,wert,weiland,varga,silverstein,sievers,shuster,shumway,runnels,rumsey,renfroe,provencher,polley,mohler,middlebrooks,kutz,koster,groth,glidden,fazio,deen,chipman,chenoweth,champlin,cedillo,carrero,carmody,buckles,brien,boutin,bosch,berkowitz,altamirano,wilfong,wiegand,waites,truesdale,toussaint,tobey,tedder,steelman,sirois,schnell,robichaud,richburg,plumley,pizarro,piercy,ortego,oberg,neace,mertz,mcnew,matta,lapp,lair,kibler,howlett,hollister,hofer,hatten,hagler,falgoust,engelhardt,eberle,dombrowski,dinsmore,daye,casares,braud,balch,autrey,wendel,tyndall,strobel,stoltz,spinelli,serrato,reber,rathbone,palomino,nickels,mayle,mathers,mach,loeffler,littrell,levinson,leong,lemire,lejeune,lazo,lasley,koller,kennard,hoelscher,hintz,hagerman,greaves,fore,eudy,engler,corrales,cordes,brunet,bidwell,bennet,tyrrell,tharpe,swinton,stribling,southworth,sisneros,savoie,samons,ruvalcaba,ries,ramer,omara,mosqueda,millar,mcpeak,macomber,luckey,litton,lehr,lavin,hubbs,hoard,hibbs,hagans,futrell,exum,evenson,culler,carbaugh,callen,brashear,bloomer,blakeney,bigler,addington,woodford,unruh,tolentino,sumrall,stgermain,smock,sherer,rayner,pooler,oquinn,nero,mcglothlin,linden,kowal,kerrigan,ibrahim,harvell,hanrahan,goodall,geist,fussell,fung,ferebee,eley,eggert,dorsett,dingman,destefano,colucci,clemmer,burnell,brumbaugh,boddie,berryhill,avelar,alcantara,winder,winchell,vandenberg,trotman,thurber,thibeault,stlouis,stilwell,sperling,shattuck,sarmiento,ruppert,rumph,renaud,randazzo,rademacher,quiles,pearman,palomo,mercurio,lowrey,lindeman,lawlor,larosa,lander,labrecque,hovis,holifield,henninger,hawkes,hartfield,hann,hague,genovese,garrick,fudge,frink,eddings,dinh,cribbs,calvillo,bunton,brodeur,bolding,blanding,agosto,zahn,wiener,trussell,tello,teixeira,speck,sharma,shanklin,sealy,scanlan,santamaria,roundy,robichaux,ringer,rigney,prevost,polson,nord,moxley,medford,mccaslin,mcardle,macarthur,lewin,lasher,ketcham,keiser,heine,hackworth,grose,grizzle,gillman,gartner,frazee,fleury,edson,edmonson,derry,cronk,conant,burress,burgin,broom,brockington,bolick,boger,birchfield,billington,baily,bahena,armbruster,anson,yoho,wilcher,tinney,timberlake,thielen,sutphin,stultz,sikora,serra,schulman,scheffler,santillan,rego,preciado,pinkham,mickle,lomas,lizotte,lent,kellerman,keil,johanson,hernadez,hartsfield,haber,gorski,farkas,eberhardt,duquette,delano,cropper,cozart,cockerham,chamblee,cartagena,cahoon,buzzell,brister,brewton,blackshear,benfield,aston,ashburn,arruda,wetmore,weise,vaccaro,tucci,sudduth,stromberg,stoops,showalter,shears,runion,rowden,rosenblum,riffle,renfrow,peres,obryant,leftwich,lark,landeros,kistler,killough,kerley,kastner,hoggard,hartung,guertin,govan,gatling,gailey,fullmer,fulford,flatt,esquibel,endicott,edmiston,edelstein,dufresne,dressler,dickman,chee,busse,bonnett,berard,yoshida,velarde,veach,vanhouten,vachon,tolson,tolman,tennyson,stites,soler,shutt,ruggles,rhone,pegues,neese,muro,moncrief,mefford,mcphee,mcmorris,mceachern,mcclurg,mansour,mader,leija,lecompte,lafountain,labrie,jaquez,heald,hash,hartle,gainer,frisby,farina,eidson,edgerton,dyke,durrett,duhon,cuomo,cobos,cervantez,bybee,brockway,borowski,binion,beery,arguello,amaro,acton,yuen,winton,wigfall,weekley,vidrine,vannoy,tardiff,shoop,shilling,schick,safford,prendergast,pilgrim,pellerin,osuna,nissen,nalley,moller,messner,messick,merrifield,mcguinness,matherly,marcano,mahone,lemos,lebrun,jara,hoffer,herren,hecker,haws,haug,gwin,gober,gilliard,fredette,favela,echeverria,downer,donofrio,desrochers,crozier,corson,bechtold,argueta,aparicio,zamudio,westover,westerman,utter,troyer,thies,tapley,slavin,shirk,sandler,roop,rimmer,raymer,radcliff,otten,moorer,millet,mckibben,mccutchen,mcavoy,mcadoo,mayorga,mastin,martineau,marek,madore,leflore,kroeger,kennon,jimerson,hostetter,hornback,hendley,hance,guardado,granado,gowen,goodale,flinn,fleetwood,fitz,durkee,duprey,dipietro,dilley,clyburn,brawley,beckley,arana,weatherby,vollmer,vestal,tunnell,trigg,tingle,takahashi,sweatt,storer,snapp,shiver,rooker,rathbun,poisson,perrine,perri,parmer,parke,pare,papa,palmieri,midkiff,mecham,mccomas,mcalpine,lovelady,lillard,lally,knopp,kile,kiger,haile,gupta,goldsberry,gilreath,fulks,friesen,franzen,flack,findlay,ferland,dreyer,dore,dennard,deckard,debose,crim,coulombe,chancey,cantor,branton,bissell,barns,woolard,witham,wasserman,spiegel,shoffner,scholz,ruch,rossman,petry,palacio,paez,neary,mortenson,millsap,miele,menke,mckim,mcanally,martines,lemley,larochelle,klaus,klatt,kaufmann,kapp,helmer,hedge,halloran,glisson,frechette,fontana,eagan,distefano,danley,creekmore,chartier,chaffee,carillo,burg,bolinger,berkley,benz,basso,bash,zelaya,woodring,witkowski,wilmot,wilkens,wieland,verdugo,urquhart,tsai,timms,swiger,swaim,sussman,pires,molnar,mcatee,lowder,loos,linker,landes,kingery,hufford,higa,hendren,hammack,hamann,gillam,gerhardt,edelman,delk,deans,curl,constantine,cleaver,claar,casiano,carruth,carlyle,brophy,bolanos,bibbs,bessette,beggs,baugher,bartel,averill,andresen,amin,adames,valente,turnbow,swink,sublett,stroh,stringfellow,ridgway,pugliese,poteat,ohare,neubauer,murchison,mingo,lemmons,kwon,kellam,kean,jarmon,hyden,hudak,hollinger,henkel,hemingway,hasson,hansel,halter,haire,ginsberg,gillispie,fogel,flory,etter,elledge,eckman,deas,currin,crafton,coomer,colter,claxton,bulter,braddock,bowyer,binns,bellows,baskerville,barros,ansley,woolf,wight,waldman,wadley,tull,trull,tesch,stouffer,stadler,slay,shubert,sedillo,santacruz,reinke,poynter,neri,neale,mowry,moralez,monger,mitchum,merryman,manion,macdougall,litchfield,levitt,lepage,lasalle,khoury,kavanagh,karns,ivie,huebner,hodgkins,halpin,garica,eversole,dutra,dunagan,duffey,dillman,dillion,deville,dearborn,damato,courson,coulson,burdine,bousquet,bonin,bish,atencio,westbrooks,wages,vaca,toner,tillis,swett,struble,stanfill,solorzano,slusher,sipple,silvas,shults,schexnayder,saez,rodas,rager,pulver,penton,paniagua,meneses,mcfarlin,mcauley,matz,maloy,magruder,lohman,landa,lacombe,jaimes,holzer,holst,heil,hackler,grundy,gilkey,farnham,durfee,dunton,dunston,duda,dews,craver,corriveau,conwell,colella,chambless,bremer,boutte,bourassa,blaisdell,backman,babineaux,audette,alleman,towner,taveras,tarango,sullins,suiter,stallard,solberg,schlueter,poulos,pimental,owsley,okelley,moffatt,metcalfe,meekins,medellin,mcglynn,mccowan,marriott,marable,lennox,lamoureux,koss,kerby,karp,isenberg,howze,hockenberry,highsmith,hallmark,gusman,greeley,giddings,gaudet,gallup,fleenor,eicher,edington,dimaggio,dement,demello,decastro,bushman,brundage,brooker,bourg,blackstock,bergmann,beaton,banister,argo,appling,wortman,watterson,villalpando,tillotson,tighe,sundberg,sternberg,stamey,shipe,seeger,scarberry,sattler,sain,rothstein,poteet,plowman,pettiford,penland,partain,pankey,oyler,ogletree,ogburn,moton,merkel,lucier,lakey,kratz,kinser,kershaw,josephson,imhoff,hendry,hammon,frisbie,frawley,fraga,forester,eskew,emmert,drennan,doyon,dandridge,cawley,carvajal,bracey,belisle,batey,ahner,wysocki,weiser,veliz,tincher,sansone,sankey,sandstrom,rohrer,risner,pridemore,pfeffer,persinger,peery,oubre,nowicki,musgrave,murdoch,mullinax,mccary,mathieu,livengood,kyser,klink,kimes,kellner,kavanaugh,kasten,imes,hoey,hinshaw,hake,gurule,grube,grillo,geter,gatto,garver,garretson,farwell,eiland,dunford,decarlo,corso,colman,collard,cleghorn,chasteen,cavender,carlile,calvo,byerly,brogdon,broadwater,breault,bono,bergin,behr,ballenger,amick,tamez,stiffler,steinke,simmon,shankle,schaller,salmons,sackett,saad,rideout,ratcliffe,ranson,plascencia,petterson,olszewski,olney,olguin,nilsson,nevels,morelli,montiel,monge,michaelson,mertens,mcchesney,mcalpin,mathewson,loudermilk,lineberry,liggett,kinlaw,kight,jost,hereford,hardeman,halpern,halliday,hafer,gaul,friel,freitag,forsberg,evangelista,doering,dicarlo,dendy,delp,deguzman,dameron,curtiss,cosper,cauthen,bradberry,bouton,bonnell,bixby,bieber,beveridge,bedwell,barhorst,bannon,baltazar,baier,ayotte,attaway,arenas,abrego,turgeon,tunstall,thaxton,tenorio,stotts,sthilaire,shedd,seabolt,scalf,salyers,ruhl,rowlett,robinett,pfister,perlman,pepe,parkman,nunnally,norvell,napper,modlin,mckellar,mcclean,mascarenas,leibowitz,ledezma,kuhlman,kobayashi,hunley,holmquist,hinkley,hazard,hartsell,gribble,gravely,fifield,eliason,doak,crossland,carleton,bridgeman,bojorquez,boggess,auten,woosley,whiteley,wexler,twomey,tullis,townley,standridge,santoyo,rueda,riendeau,revell,pless,ottinger,nigro,nickles,mulvey,menefee,mcshane,mcloughlin,mckinzie,markey,lockridge,lipsey,knisley,knepper,kitts,kiel,jinks,hathcock,godin,gallego,fikes,fecteau,estabrook,ellinger,dunlop,dudek,countryman,chauvin,chatham,bullins,brownfield,boughton,bloodworth,bibb,baucom,barbieri,aubin,armitage,alessi,absher,abbate,zito,woolery,wiggs,wacker,tynes,tolle,telles,tarter,swarey,strode,stockdale,stalnaker,spina,schiff,saari,risley,rameriz,rakes,pettaway,penner,paulus,palladino,omeara,montelongo,melnick,mehta,mcgary,mccourt,mccollough,marchetti,manzanares,lowther,leiva,lauderdale,lafontaine,kowalczyk,knighton,joubert,jaworski,huth,hurdle,housley,hackman,gulick,gordy,gilstrap,gehrke,gebhart,gaudette,foxworth,endres,dunkle,cimino,caddell,brauer,braley,bodine,blackmore,belden,backer,ayer,andress,wisner,vuong,valliere,twigg,tavarez,strahan,steib,staub,sowder,seiber,schutt,scharf,schade,rodriques,risinger,renshaw,rahman,presnell,piatt,nieman,nevins,mcilwain,mcgaha,mccully,mccomb,massengale,macedo,lesher,kearse,jauregui,husted,hudnall,holmberg,hertel,hardie,glidewell,frausto,fassett,dalessandro,dahlgren,corum,constantino,conlin,colquitt,colombo,claycomb,cardin,buller,boney,bocanegra,biggers,benedetto,araiza,andino,albin,zorn,werth,weisman,walley,vanegas,ulibarri,towe,tedford,teasley,suttle,steffens,stcyr,squire,singley,sifuentes,shuck,schram,sass,rieger,ridenhour,rickert,richerson,rayborn,rabe,raab,pendley,pastore,ordway,moynihan,mellott,mckissick,mcgann,mccready,mauney,marrufo,lenhart,lazar,lafave,keele,kautz,jardine,jahnke,jacobo,hord,hardcastle,hageman,giglio,gehring,fortson,duque,duplessis,dicken,derosier,deitz,dalessio,cram,castleman,candelario,callison,caceres,bozarth,biles,bejarano,bashaw,avina,armentrout,alverez,acord,waterhouse,vereen,vanlandingham,strawser,shotwell,severance,seltzer,schoonmaker,schock,schaub,schaffner,roeder,rodrigez,riffe,rasberry,rancourt,railey,quade,pursley,prouty,perdomo,oxley,osterman,nickens,murphree,mounts,merida,maus,mattern,masse,martinelli,mangan,lutes,ludwick,loney,laureano,lasater,knighten,kissinger,kimsey,kessinger,honea,hollingshead,hockett,heyer,heron,gurrola,gove,glasscock,gillett,galan,featherstone,eckhardt,duron,dunson,dasher,culbreth,cowden,cowans,claypoole,churchwell,chabot,caviness,cater,caston,callan,byington,burkey,boden,beckford,atwater,archambault,alvey,alsup,whisenant,weese,voyles,verret,tsang,tessier,sweitzer,sherwin,shaughnessy,revis,remy,prine,philpott,peavy,paynter,parmenter,ovalle,offutt,nightingale,newlin,nakano,myatt,muth,mohan,mcmillon,mccarley,mccaleb,maxson,marinelli,maley,liston,letendre,kain,huntsman,hirst,hagerty,gulledge,greenway,grajeda,gorton,goines,gittens,frederickson,fanelli,embree,eichelberger,dunkin,dixson,dillow,defelice,chumley,burleigh,borkowski,binette,biggerstaff,berglund,beller,audet,arbuckle,allain,alfano,youngman,wittman,weintraub,vanzant,vaden,twitty,stollings,standifer,sines,shope,scalise,saville,posada,pisano,otte,nolasco,mier,merkle,mendiola,melcher,mejias,mcmurry,mccalla,markowitz,manis,mallette,macfarlane,lough,looper,landin,kittle,kinsella,kinnard,hobart,helman,hellman,hartsock,halford,hage,gordan,glasser,gayton,gattis,gastelum,gaspard,frisch,fitzhugh,eckstein,eberly,dowden,despain,crumpler,crotty,cornelison,chouinard,chamness,catlin,cann,bumgardner,budde,branum,bradfield,braddy,borst,birdwell,bazan,banas,bade,arango,ahearn,addis,zumwalt,wurth,wilk,widener,wagstaff,urrutia,terwilliger,tart,steinman,staats,sloat,rives,riggle,revels,reichard,prickett,poff,pitzer,petro,pell,northrup,nicks,moline,mielke,maynor,mallon,magness,lingle,lindell,lieb,lesko,lebeau,lammers,lafond,kiernan,ketron,jurado,holmgren,hilburn,hayashi,hashimoto,harbaugh,guillot,gard,froehlich,feinberg,falco,dufour,drees,doney,diep,delao,daves,dail,crowson,coss,congdon,carner,camarena,butterworth,burlingame,bouffard,bloch,bilyeu,barta,bakke,baillargeon,avent,aquilar,zeringue,yarber,wolfson,vogler,voelker,truss,troxell,thrift,strouse,spielman,sistrunk,sevigny,schuller,schaaf,ruffner,routh,roseman,ricciardi,peraza,pegram,overturf,olander,odaniel,millner,melchor,maroney,machuca,macaluso,livesay,layfield,laskowski,kwiatkowski,kilby,hovey,heywood,hayman,havard,harville,haigh,hagood,grieco,glassman,gebhardt,fleischer,fann,elson,eccles,cunha,crumb,blakley,bardwell,abshire,woodham,wines,welter,wargo,varnado,tutt,traynor,swaney,stricker,stoffel,stambaugh,sickler,shackleford,selman,seaver,sansom,sanmiguel,royston,rourke,rockett,rioux,puleo,pitchford,nardi,mulvaney,middaugh,malek,leos,lathan,kujawa,kimbro,killebrew,houlihan,hinckley,herod,hepler,hamner,hammel,hallowell,gonsalez,gingerich,gambill,funkhouser,fricke,fewell,falkner,endsley,dulin,drennen,deaver,dambrosio,chadwell,castanon,burkes,brune,brisco,brinker,bowker,boldt,berner,beaumont,beaird,bazemore,barrick,albano,younts,wunderlich,weidman,vanness,toland,theobald,stickler,steiger,stanger,spies,spector,sollars,smedley,seibel,scoville,saito,rummel,rowles,rouleau,roos,rogan,roemer,ream,raya,purkey,priester,perreira,penick,paulin,parkins,overcash,oleson,neves,muldrow,minard,midgett,michalak,melgar,mcentire,mcauliffe,marte,lydon,lindholm,leyba,langevin,lagasse,lafayette,kesler,kelton,kaminsky,jaggers,humbert,huck,howarth,hinrichs,higley,gupton,guimond,gravois,giguere,fretwell,fontes,feeley,faucher,eichhorn,ecker,earp,dole,dinger,derryberry,demars,deel,copenhaver,collinsworth,colangelo,cloyd,claiborne,caulfield,carlsen,calzada,caffey,broadus,brenneman,bouie,bodnar,blaney,blanc,beltz,behling,barahona,yockey,winkle,windom,wimer,villatoro,trexler,teran,taliaferro,sydnor,swinson,snelling,smtih,simonton,simoneaux,simoneau,sherrer,seavey,scheel,rushton,rupe,ruano,rippy,reiner,reiff,rabinowitz,quach,penley,odle,nock,minnich,mckown,mccarver,mcandrew,longley,laux,lamothe,lafreniere,kropp,krick,kates,jepson,huie,howse,howie,henriques,haydon,haught,hatter,hartzog,harkey,grimaldo,goshorn,gormley,gluck,gilroy,gillenwater,giffin,fluker,feder,eyre,eshelman,eakins,detwiler,delrosario,davisson,catalan,canning,calton,brammer,botelho,blakney,bartell,averett,askins,aker,witmer,winkelman,widmer,whittier,weitzel,wardell,wagers,ullman,tupper,tingley,tilghman,talton,simard,seda,scheller,sala,rundell,rost,ribeiro,rabideau,primm,pinon,peart,ostrom,ober,nystrom,nussbaum,naughton,murr,moorhead,monti,monteiro,melson,meissner,mclin,mcgruder,marotta,makowski,majewski,madewell,lunt,lukens,leininger,lebel,lakin,kepler,jaques,hunnicutt,hungerford,hoopes,hertz,heins,halliburton,grosso,gravitt,glasper,gallman,gallaway,funke,fulbright,falgout,eakin,dostie,dorado,dewberry,derose,cutshall,crampton,costanzo,colletti,cloninger,claytor,chiang,campagna,burd,brokaw,broaddus,bretz,brainard,binford,bilbrey,alpert,aitken,ahlers,zajac,woolfolk,witten,windle,wayland,tramel,tittle,talavera,suter,straley,specht,sommerville,soloman,skeens,sigman,sibert,shavers,schuck,schmit,sartain,sabol,rosenblatt,rollo,rashid,rabb,polston,nyberg,northrop,navarra,muldoon,mikesell,mcdougald,mcburney,mariscal,lozier,lingerfelt,legere,latour,lagunas,lacour,kurth,killen,kiely,kayser,kahle,isley,huertas,hower,hinz,haugh,gumm,galicia,fortunato,flake,dunleavy,duggins,doby,digiovanni,devaney,deltoro,cribb,corpuz,coronel,coen,charbonneau,caine,burchette,blakey,blakemore,bergquist,beene,beaudette,bayles,ballance,bakker,bailes,asberry,arwood,zucker,willman,whitesell,wald,walcott,vancleave,trump,strasser,simas,shick,schleicher,schaal,saleh,rotz,resnick,rainer,partee,ollis,oller,oday,noles,munday,mong,millican,merwin,mazzola,mansell,magallanes,llanes,lewellen,lepore,kisner,keesee,jeanlouis,ingham,hornbeck,hawn,hartz,harber,haffner,gutshall,guth,grays,gowan,finlay,finkelstein,eyler,enloe,dungan,diez,dearman,cull,crosson,chronister,cassity,campion,callihan,butz,breazeale,blumenthal,berkey,batty,batton,arvizu,alderete,aldana,albaugh,abernethy,wolter,wille,tweed,tollefson,thomasson,teter,testerman,sproul,spates,southwick,soukup,skelly,senter,sealey,sawicki,sargeant,rossiter,rosemond,repp,pifer,ormsby,nickelson,naumann,morabito,monzon,millsaps,millen,mcelrath,marcoux,mantooth,madson,macneil,mackinnon,louque,leister,lampley,kushner,krouse,kirwan,jessee,janson,jahn,jacquez,islas,hutt,holladay,hillyer,hepburn,hensel,harrold,gingrich,geis,gales,fults,finnell,ferri,featherston,epley,ebersole,eames,dunigan,drye,dismuke,devaughn,delorenzo,damiano,confer,collum,clower,clow,claussen,clack,caylor,cawthon,casias,carreno,bluhm,bingaman,bewley,belew,beckner,auld,amey,wolfenbarger,wilkey,wicklund,waltman,villalba,valero,valdovinos,ullrich,tyus,twyman,trost,tardif,tanguay,stripling,steinbach,shumpert,sasaki,sappington,sandusky,reinhold,reinert,quijano,placencia,pinkard,phinney,perrotta,pernell,parrett,oxendine,owensby,orman,nuno,mori,mcroberts,mcneese,mckamey,mccullum,markel,mardis,maines,lueck,lubin,lefler,leffler,larios,labarbera,kershner,josey,jeanbaptiste,izaguirre,hermosillo,haviland,hartshorn,hafner,ginter,getty,franck,fiske,dufrene,doody,davie,dangerfield,dahlberg,cuthbertson,crone,coffelt,chidester,chesson,cauley,caudell,cantara,campo,caines,bullis,bucci,brochu,bogard,bickerstaff,benning,arzola,antonelli,adkinson,zellers,wulf,worsley,woolridge,whitton,westerfield,walczak,vassar,truett,trueblood,trawick,townsley,topping,tobar,telford,steverson,stagg,sitton,sill,sergent,schoenfeld,sarabia,rutkowski,rubenstein,rigdon,prentiss,pomerleau,plumlee,philbrick,patnode,oloughlin,obregon,nuss,morell,mikell,mele,mcinerney,mcguigan,mcbrayer,lollar,kuehl,kinzer,kamp,joplin,jacobi,howells,holstein,hedden,hassler,harty,halle,greig,gouge,goodrum,gerhart,geier,geddes,gast,forehand,ferree,fendley,feltner,esqueda,encarnacion,eichler,egger,edmundson,eatmon,doud,donohoe,donelson,dilorenzo,digiacomo,diggins,delozier,dejong,danford,crippen,coppage,cogswell,clardy,cioffi,cabe,brunette,bresnahan,blomquist,blackstone,biller,bevis,bevan,bethune,benbow,baty,basinger,balcom,andes,aman,aguero,adkisson,yandell,wilds,whisenhunt,weigand,weeden,voight,villar,trottier,tillett,suazo,setser,scurry,schuh,schreck,schauer,samora,roane,rinker,reimers,ratchford,popovich,parkin,natal,melville,mcbryde,magdaleno,loehr,lockman,lingo,leduc,larocca,lamere,laclair,krall,korte,koger,jalbert,hughs,higbee,henton,heaney,haith,gump,greeson,goodloe,gholston,gasper,gagliardi,fregoso,farthing,fabrizio,ensor,elswick,elgin,eklund,eaddy,drouin,dorton,dizon,derouen,deherrera,davy,dampier,cullum,culley,cowgill,cardoso,cardinale,brodsky,broadbent,brimmer,briceno,branscum,bolyard,boley,bennington,beadle,baur,ballentine,azure,aultman,arciniega,aguila,aceves,yepez,woodrum,wethington,weissman,veloz,trusty,troup,trammel,tarpley,stivers,steck,sprayberry,spraggins,spitler,spiers,sohn,seagraves,schiffman,rudnick,rizo,riccio,rennie,quackenbush,puma,plott,pearcy,parada,paiz,munford,moskowitz,mease,mcnary,mccusker,lozoya,longmire,loesch,lasky,kuhlmann,krieg,koziol,kowalewski,konrad,kindle,jowers,jolin,jaco,horgan,hine,hileman,hepner,heise,heady,hawkinson,hannigan,haberman,guilford,grimaldi,garton,gagliano,fruge,follett,fiscus,ferretti,ebner,easterday,eanes,dirks,dimarco,depalma,deforest,cruce,craighead,christner,candler,cadwell,burchell,buettner,brinton,brazier,brannen,brame,bova,bomar,blakeslee,belknap,bangs,balzer,athey,armes,alvis,alverson,alvardo,yeung,wheelock,westlund,wessels,volkman,threadgill,thelen,tague,symons,swinford,sturtevant,straka,stier,stagner,segarra,seawright,rutan,roux,ringler,riker,ramsdell,quattlebaum,purifoy,poulson,permenter,peloquin,pasley,pagel,osman,obannon,nygaard,newcomer,munos,motta,meadors,mcquiston,mcniel,mcmann,mccrae,mayne,matte,legault,lechner,kucera,krohn,kratzer,koopman,jeske,horrocks,hock,hibbler,hesson,hersh,harvin,halvorsen,griner,grindle,gladstone,garofalo,frampton,forbis,eddington,diorio,dingus,dewar,desalvo,curcio,creasy,cortese,cordoba,connally,cluff,cascio,capuano,canaday,calabro,bussard,brayton,borja,bigley,arnone,arguelles,acuff,zamarripa,wooton,widner,wideman,threatt,thiele,templin,teeters,synder,swint,swick,sturges,stogner,stedman,spratt,siegfried,shetler,scull,savino,sather,rothwell,rook,rone,rhee,quevedo,privett,pouliot,poche,pickel,petrillo,pellegrini,peaslee,partlow,otey,nunnery,morelock,morello,meunier,messinger,mckie,mccubbin,mccarron,lerch,lavine,laverty,lariviere,lamkin,kugler,krol,kissel,keeter,hubble,hickox,hetzel,hayner,hagy,hadlock,groh,gottschalk,goodsell,gassaway,garrard,galligan,firth,fenderson,feinstein,etienne,engleman,emrick,ellender,drews,doiron,degraw,deegan,dart,crissman,corr,cookson,coil,cleaves,charest,chapple,chaparro,castano,carpio,byer,bufford,bridgewater,bridgers,brandes,borrero,bonanno,aube,ancheta,abarca,abad,wooster,wimbush,willhite,willams,wigley,weisberg,wardlaw,vigue,vanhook,unknow,torre,tasker,tarbox,strachan,slover,shamblin,semple,schuyler,schrimsher,sayer,salzman,rubalcava,riles,reneau,reichel,rayfield,rabon,pyatt,prindle,poss,polito,plemmons,pesce,perrault,pereyra,ostrowski,nilsen,niemeyer,munsey,mundell,moncada,miceli,meader,mcmasters,mckeehan,matsumoto,marron,marden,lizarraga,lingenfelter,lewallen,langan,lamanna,kovac,kinsler,kephart,keown,kass,kammerer,jeffreys,hysell,hosmer,hardnett,hanner,guyette,greening,glazer,ginder,fromm,fluellen,finkle,fessler,essary,eisele,duren,dittmer,crochet,cosentino,cogan,coelho,cavin,carrizales,campuzano,brough,bopp,bookman,bobb,blouin,beesley,battista,bascom,bakken,badgett,arneson,anselmo,albino,ahumada,woodyard,wolters,wireman,willison,warman,waldrup,vowell,vantassel,twombly,toomer,tennison,teets,tedeschi,swanner,stutz,stelly,sheehy,schermerhorn,scala,sandidge,salters,salo,saechao,roseboro,rolle,ressler,renz,renn,redford,raposa,rainbolt,pelfrey,orndorff,oney,nolin,nimmons,nardone,myhre,morman,menjivar,mcglone,mccammon,maxon,marciano,manus,lowrance,lorenzen,lonergan,lollis,littles,lindahl,lamas,lach,kuster,krawczyk,knuth,knecht,kirkendall,keitt,keever,kantor,jarboe,hoye,houchens,holter,holsinger,hickok,helwig,helgeson,hassett,harner,hamman,hames,hadfield,goree,goldfarb,gaughan,gaudreau,gantz,gallion,frady,foti,flesher,ferrin,faught,engram,donegan,desouza,degroot,cutright,crowl,criner,coan,clinkscales,chewning,chavira,catchings,carlock,bulger,buenrostro,bramblett,brack,boulware,bookout,bitner,birt,baranowski,baisden,allmon,acklin,yoakum,wilbourn,whisler,weinberger,washer,vasques,vanzandt,vanatta,troxler,tomes,tindle,tims,throckmorton,thach,stpeter,stlaurent,stenson,spry,spitz,songer,snavely,shroyer,shortridge,shenk,sevier,seabrook,scrivner,saltzman,rosenberry,rockwood,robeson,roan,reiser,ramires,raber,posner,popham,piotrowski,pinard,peterkin,pelham,peiffer,peay,nadler,musso,millett,mestas,mcgowen,marques,marasco,manriquez,manos,mair,lipps,leiker,krumm,knorr,kinslow,kessel,kendricks,kelm,irick,ickes,hurlburt,horta,hoekstra,heuer,helmuth,heatherly,hampson,hagar,haga,greenlaw,grau,godbey,gingras,gillies,gibb,gayden,gauvin,garrow,fontanez,florio,finke,fasano,ezzell,ewers,eveland,eckenrode,duclos,drumm,dimmick,delancey,defazio,dashiell,cusack,crowther,crigger,cray,coolidge,coldiron,cleland,chalfant,cassel,camire,cabrales,broomfield,brittingham,brisson,brickey,braziel,brazell,bragdon,boulanger,boman,bohannan,beem,barre,azar,ashbaugh,armistead,almazan,adamski,zendejas,winburn,willaims,wilhoit,westberry,wentzel,wendling,visser,vanscoy,vankirk,vallee,tweedy,thornberry,sweeny,spradling,spano,smelser,shim,sechrist,schall,scaife,rugg,rothrock,roesler,riehl,ridings,render,ransdell,radke,pinero,petree,pendergast,peluso,pecoraro,pascoe,panek,oshiro,navarrette,murguia,moores,moberg,michaelis,mcwhirter,mcsweeney,mcquade,mccay,mauk,mariani,marceau,mandeville,maeda,lunde,ludlow,loeb,lindo,linderman,leveille,leith,larock,lambrecht,kulp,kinsley,kimberlin,kesterson,hoyos,helfrich,hanke,grisby,goyette,gouveia,glazier,gile,gerena,gelinas,gasaway,funches,fujimoto,flynt,fenske,fellers,fehr,eslinger,escalera,enciso,duley,dittman,dineen,diller,devault,collings,clymer,clowers,chavers,charland,castorena,castello,camargo,bunce,bullen,boyes,borchers,borchardt,birnbaum,birdsall,billman,benites,bankhead,ange,ammerman,adkison,winegar,wickman,warr,warnke,villeneuve,veasey,vassallo,vannatta,vadnais,twilley,towery,tomblin,tippett,theiss,talkington,talamantes,swart,swanger,streit,stines,stabler,spurling,sobel,sine,simmers,shippy,shiflett,shearin,sauter,sanderlin,rusch,runkle,ruckman,rorie,roesch,richert,rehm,randel,ragin,quesenberry,puentes,plyler,plotkin,paugh,oshaughnessy,ohalloran,norsworthy,niemann,nader,moorefield,mooneyham,modica,miyamoto,mickel,mebane,mckinnie,mazurek,mancilla,lukas,lovins,loughlin,lotz,lindsley,liddle,levan,lederman,leclaire,lasseter,lapoint,lamoreaux,lafollette,kubiak,kirtley,keffer,kaczmarek,housman,hiers,hibbert,herrod,hegarty,hathorn,greenhaw,grafton,govea,futch,furst,franko,forcier,foran,flickinger,fairfield,eure,emrich,embrey,edgington,ecklund,eckard,durante,deyo,delvecchio,dade,currey,creswell,cottrill,casavant,cartier,cargile,capel,cammack,calfee,burse,burruss,brust,brousseau,bridwell,braaten,borkholder,bloomquist,bjork,bartelt,amburgey,yeary,whitefield,vinyard,vanvalkenburg,twitchell,timmins,tapper,stringham,starcher,spotts,slaugh,simonsen,sheffer,sequeira,rosati,rhymes,quint,pollak,peirce,patillo,parkerson,paiva,nilson,nevin,narcisse,mitton,merriam,merced,meiners,mckain,mcelveen,mcbeth,marsden,marez,manke,mahurin,mabrey,luper,krull,hunsicker,hornbuckle,holtzclaw,hinnant,heston,hering,hemenway,hegwood,hearns,halterman,guiterrez,grote,granillo,grainger,glasco,gilder,garren,garlock,garey,fryar,fredricks,fraizer,foshee,ferrel,felty,everitt,evens,esser,elkin,eberhart,durso,duguay,driskill,doster,dewall,deveau,demps,demaio,delreal,deleo,darrah,cumberbatch,culberson,cranmer,cordle,colgan,chesley,cavallo,castellon,castelli,carreras,carnell,carlucci,bontrager,blumberg,blasingame,becton,artrip,andujar,alkire,alder,zukowski,zuckerman,wroblewski,wrigley,woodside,wigginton,westman,westgate,werts,washam,wardlow,walser,waiters,tadlock,stringfield,stimpson,stickley,standish,spurlin,spindler,speller,spaeth,sotomayor,sluder,shryock,shepardson,shatley,scannell,santistevan,rosner,resto,reinhard,rathburn,prisco,poulsen,pinney,phares,pennock,pastrana,oviedo,ostler,nauman,mulford,moise,moberly,mirabal,metoyer,metheny,mentzer,meldrum,mcinturff,mcelyea,mcdougle,massaro,lumpkins,loveday,lofgren,lirette,lesperance,lefkowitz,ledger,lauzon,lachapelle,klassen,keough,kempton,kaelin,jeffords,hsieh,hoyer,horwitz,hoeft,hennig,haskin,gourdine,golightly,girouard,fulgham,fritsch,freer,frasher,foulk,firestone,fiorentino,fedor,ensley,englehart,eells,dunphy,donahoe,dileo,dibenedetto,dabrowski,crick,coonrod,conder,coddington,chunn,chaput,cerna,carreiro,calahan,braggs,bourdon,bollman,bittle,bauder,barreras,aubuchon,anzalone,adamo,zerbe,willcox,westberg,weikel,waymire,vroman,vinci,vallejos,truesdell,troutt,trotta,tollison,toles,tichenor,symonds,surles,strayer,stgeorge,sroka,sorrentino,solares,snelson,silvestri,sikorski,shawver,schumaker,schorr,schooley,scates,satterlee,satchell,rymer,roselli,robitaille,riegel,regis,reames,provenzano,priestley,plaisance,pettey,palomares,nowakowski,monette,minyard,mclamb,mchone,mccarroll,masson,magoon,maddy,lundin,licata,leonhardt,landwehr,kircher,kinch,karpinski,johannsen,hussain,houghtaling,hoskinson,hollaway,holeman,hobgood,hiebert,goggin,geissler,gadbois,gabaldon,fleshman,flannigan,fairman,eilers,dycus,dunmire,duffield,dowler,deloatch,dehaan,deemer,clayborn,christofferso,chilson,chesney,chatfield,carron,canale,brigman,branstetter,bosse,borton,bonar,biron,barroso,arispe,zacharias,zabel,yaeger,woolford,whetzel,weakley,veatch,vandeusen,tufts,troxel,troche,traver,townsel,talarico,swilley,sterrett,stenger,speakman,sowards,sours,souders,souder,soles,sobers,snoddy,smither,shute,shoaf,shahan,schuetz,scaggs,santini,rosson,rolen,robidoux,rentas,recio,pixley,pawlowski,pawlak,paull,overbey,orear,oliveri,oldenburg,nutting,naugle,mossman,misner,milazzo,michelson,mcentee,mccullar,mccree,mcaleer,mazzone,mandell,manahan,malott,maisonet,mailloux,lumley,lowrie,louviere,lipinski,lindemann,leppert,leasure,labarge,kubik,knisely,knepp,kenworthy,kennelly,kelch,kanter,houchin,hosley,hosler,hollon,holleman,heitman,haggins,gwaltney,goulding,gorden,geraci,gathers,frison,feagin,falconer,espada,erving,erikson,eisenhauer,ebeling,durgin,dowdle,dinwiddie,delcastillo,dedrick,crimmins,covell,cournoyer,coria,cohan,cataldo,carpentier,canas,campa,brode,brashears,blaser,bicknell,bednar,barwick,ascencio,althoff,almodovar,alamo,zirkle,zabala,wolverton,winebrenner,wetherell,westlake,wegener,weddington,tuten,trosclair,tressler,theroux,teske,swinehart,swensen,sundquist,southall,socha,sizer,silverberg,shortt,shimizu,sherrard,shaeffer,scheid,scheetz,saravia,sanner,rubinstein,rozell,romer,rheaume,reisinger,randles,pullum,petrella,payan,nordin,norcross,nicoletti,nicholes,newbold,nakagawa,monteith,milstead,milliner,mellen,mccardle,liptak,leitch,latimore,larrison,landau,laborde,koval,izquierdo,hymel,hoskin,holte,hoefer,hayworth,hausman,harrill,harrel,hardt,gully,groover,grinnell,greenspan,graver,grandberry,gorrell,goldenberg,goguen,gilleland,fuson,feldmann,everly,dyess,dunnigan,downie,dolby,deatherage,cosey,cheever,celaya,caver,cashion,caplinger,cansler,byrge,bruder,breuer,breslin,brazelton,botkin,bonneau,bondurant,bohanan,bogue,bodner,boatner,blatt,bickley,belliveau,beiler,beier,beckstead,bachmann,atkin,altizer,alloway,allaire,albro,abron,zellmer,yetter,yelverton,wiens,whidden,viramontes,vanwormer,tarantino,tanksley,sumlin,strauch,strang,stice,spahn,sosebee,sigala,shrout,seamon,schrum,schneck,schantz,ruddy,romig,roehl,renninger,reding,polak,pohlman,pasillas,oldfield,oldaker,ohanlon,ogilvie,norberg,nolette,neufeld,nellis,mummert,mulvihill,mullaney,monteleone,mendonca,meisner,mcmullan,mccluney,mattis,massengill,manfredi,luedtke,lounsbury,liberatore,lamphere,laforge,jourdan,iorio,iniguez,ikeda,hubler,hodgdon,hocking,heacock,haslam,haralson,hanshaw,hannum,hallam,haden,garnes,garces,gammage,gambino,finkel,faucett,ehrhardt,eggen,dusek,durrant,dubay,dones,depasquale,delucia,degraff,decamp,davalos,cullins,conard,clouser,clontz,cifuentes,chappel,chaffins,celis,carwile,byram,bruggeman,bressler,brathwaite,brasfield,bradburn,boose,bodie,blosser,bertsch,bernardi,bernabe,bengtson,barrette,astorga,alday,albee,abrahamson,yarnell,wiltse,wiebe,waguespack,vasser,upham,turek,traxler,torain,tomaszewski,tinnin,tiner,tindell,styron,stahlman,staab,skiba,sheperd,seidl,secor,schutte,sanfilippo,ruder,rondon,rearick,procter,prochaska,pettengill,pauly,neilsen,nally,mullenax,morano,meads,mcnaughton,mcmurtry,mcmath,mckinsey,matthes,massenburg,marlar,margolis,malin,magallon,mackin,lovette,loughran,loring,longstreet,loiselle,lenihan,kunze,koepke,kerwin,kalinowski,kagan,innis,innes,holtzman,heinemann,harshman,haider,haack,grondin,grissett,greenawalt,goudy,goodlett,goldston,gokey,gardea,galaviz,gafford,gabrielson,furlow,fritch,fordyce,folger,elizalde,ehlert,eckhoff,eccleston,ealey,dubin,diemer,deschamps,delapena,decicco,debolt,cullinan,crittendon,crase,cossey,coppock,coots,colyer,cluck,chamberland,burkhead,bumpus,buchan,borman,birkholz,berardi,benda,behnke,barter,amezquita,wotring,wirtz,wingert,wiesner,whitesides,weyant,wainscott,venezia,varnell,tussey,thurlow,tabares,stiver,stell,starke,stanhope,stanek,sisler,sinnott,siciliano,shehan,selph,seager,scurlock,scranton,santucci,santangelo,saltsman,rogge,rettig,renwick,reidy,reider,redfield,premo,parente,paolucci,palmquist,ohler,netherton,mutchler,morita,mistretta,minnis,middendorf,menzel,mendosa,mendelson,meaux,mcspadden,mcquaid,mcnatt,manigault,maney,mager,lukes,lopresti,liriano,letson,lechuga,lazenby,lauria,larimore,krupp,krupa,kopec,kinchen,kifer,kerney,kerner,kennison,kegley,karcher,justis,johson,jellison,janke,huskins,holzman,hinojos,hefley,hatmaker,harte,halloway,hallenbeck,goodwyn,glaspie,geise,fullwood,fryman,frakes,fraire,farrer,enlow,engen,ellzey,eckles,earles,dunkley,drinkard,dreiling,draeger,dinardo,dills,desroches,desantiago,curlee,crumbley,critchlow,coury,courtright,coffield,cleek,charpentier,cardone,caples,cantin,buntin,bugbee,brinkerhoff,brackin,bourland,blassingame,beacham,banning,auguste,andreasen,amann,almon,alejo,adelman,abston,yerger,wymer,woodberry,windley,whiteaker,westfield,weibel,wanner,waldrep,villani,vanarsdale,utterback,updike,triggs,topete,tolar,tigner,thoms,tauber,tarvin,tally,swiney,sweatman,studebaker,stennett,starrett,stannard,stalvey,sonnenberg,smithey,sieber,sickles,shinault,segars,sanger,salmeron,rothe,rizzi,restrepo,ralls,ragusa,quiroga,papenfuss,oropeza,okane,mudge,mozingo,molinaro,mcvicker,mcgarvey,mcfalls,mccraney,matus,magers,llanos,livermore,linehan,leitner,laymon,lawing,lacourse,kwong,kollar,kneeland,kennett,kellett,kangas,janzen,hutter,huling,hofmeister,hewes,harjo,habib,guice,grullon,greggs,grayer,granier,grable,gowdy,giannini,getchell,gartman,garnica,ganey,gallimore,fetters,fergerson,farlow,fagundes,exley,esteves,enders,edenfield,easterwood,drakeford,dipasquale,desousa,deshields,deeter,dedmon,debord,daughtery,cutts,courtemanche,coursey,copple,coomes,collis,cogburn,clopton,choquette,chaidez,castrejon,calhoon,burbach,bulloch,buchman,bruhn,bohon,blough,baynes,barstow,zeman,zackery,yardley,yamashita,wulff,wilken,wiliams,wickersham,wible,whipkey,wedgeworth,walmsley,walkup,vreeland,verrill,umana,traub,swingle,summey,stroupe,stockstill,steffey,stefanski,statler,stapp,speights,solari,soderberg,shunk,shorey,shewmaker,sheilds,schiffer,schank,schaff,sagers,rochon,riser,rickett,reale,raglin,polen,plata,pitcock,percival,palen,orona,oberle,nocera,navas,nault,mullings,montejano,monreal,minick,middlebrook,meece,mcmillion,mccullen,mauck,marshburn,maillet,mahaney,magner,maclin,lucey,litteral,lippincott,leite,leaks,lamarre,jurgens,jerkins,jager,hurwitz,hughley,hotaling,horstman,hohman,hocker,hively,hipps,hessler,hermanson,hepworth,helland,hedlund,harkless,haigler,gutierez,grindstaff,glantz,giardina,gerken,gadsden,finnerty,farnum,encinas,drakes,dennie,cutlip,curtsinger,couto,cortinas,corby,chiasson,carle,carballo,brindle,borum,bober,blagg,berthiaume,beahm,batres,basnight,backes,axtell,atterberry,alvares,alegria,woodell,wojciechowski,winfree,winbush,wiest,wesner,wamsley,wakeman,verner,truex,trafton,toman,thorsen,theus,tellier,tallant,szeto,strope,stills,simkins,shuey,shaul,servin,serio,serafin,salguero,ryerson,rudder,ruark,rother,rohrbaugh,rohrbach,rohan,rogerson,risher,reeser,pryce,prokop,prins,priebe,prejean,pinheiro,petrone,petri,penson,pearlman,parikh,natoli,murakami,mullikin,mullane,motes,morningstar,mcveigh,mcgrady,mcgaughey,mccurley,marchan,manske,lusby,linde,likens,licon,leroux,lemaire,legette,laskey,laprade,laplant,kolar,kittredge,kinley,kerber,kanagy,jetton,janik,ippolito,inouye,hunsinger,howley,howery,horrell,holthaus,hiner,hilson,hilderbrand,hartzler,harnish,harada,hansford,halligan,hagedorn,gwynn,gudino,greenstein,greear,gracey,goudeau,goodner,ginsburg,gerth,gerner,fujii,frier,frenette,folmar,fleisher,fleischmann,fetzer,eisenman,earhart,dupuy,dunkelberger,drexler,dillinger,dilbeck,dewald,demby,deford,craine,chesnut,casady,carstens,carrick,carino,carignan,canchola,bushong,burman,buono,brownlow,broach,britten,brickhouse,boyden,boulton,borland,bohrer,blubaugh,bever,berggren,benevides,arocho,arends,amezcua,almendarez,zalewski,witzel,winkfield,wilhoite,vangundy,vanfleet,vanetten,vandergriff,urbanski,troiano,thibodaux,straus,stoneking,stjean,stillings,stange,speicher,speegle,smeltzer,slawson,simmonds,shuttleworth,serpa,senger,seidman,schweiger,schloss,schimmel,schechter,sayler,sabatini,ronan,rodiguez,riggleman,richins,reamer,prunty,porath,plunk,piland,philbrook,pettitt,perna,peralez,pascale,padula,oboyle,nivens,nickols,mundt,munden,montijo,mcmanis,mcgrane,mccrimmon,manzi,mangold,malick,mahar,maddock,losey,litten,leedy,leavell,ladue,krahn,kluge,junker,iversen,imler,hurtt,huizar,hubbert,howington,hollomon,holdren,hoisington,heiden,hauge,hartigan,gutirrez,griffie,greenhill,gratton,granata,gottfried,gertz,gautreaux,furry,furey,funderburg,flippen,fitzgibbon,drucker,donoghue,dildy,devers,detweiler,despres,denby,degeorge,cueto,cranston,courville,clukey,cirillo,chivers,caudillo,butera,bulluck,buckmaster,braunstein,bracamonte,bourdeau,bonnette\".split(\",\"),\n us_tv_and_film: \"you,i,to,that,it,me,what,this,know,i'm,no,have,my,don't,just,not,do,be,your,we,it's,so,but,all,well,oh,about,right,you're,get,here,out,going,like,yeah,if,can,up,want,think,that's,now,go,him,how,got,did,why,see,come,good,really,look,will,okay,back,can't,mean,tell,i'll,hey,he's,could,didn't,yes,something,because,say,take,way,little,make,need,gonna,never,we're,too,she's,i've,sure,our,sorry,what's,let,thing,maybe,down,man,very,there's,should,anything,said,much,any,even,off,please,doing,thank,give,thought,help,talk,god,still,wait,find,nothing,again,things,let's,doesn't,call,told,great,better,ever,night,away,believe,feel,everything,you've,fine,last,keep,does,put,around,stop,they're,i'd,guy,isn't,always,listen,wanted,guys,huh,those,big,lot,happened,thanks,won't,trying,kind,wrong,talking,guess,care,bad,mom,remember,getting,we'll,together,dad,leave,understand,wouldn't,actually,hear,baby,nice,father,else,stay,done,wasn't,course,might,mind,every,enough,try,hell,came,someone,you'll,whole,yourself,idea,ask,must,coming,looking,woman,room,knew,tonight,real,son,hope,went,hmm,happy,pretty,saw,girl,sir,friend,already,saying,next,job,problem,minute,thinking,haven't,heard,honey,matter,myself,couldn't,exactly,having,probably,happen,we've,hurt,boy,dead,gotta,alone,excuse,start,kill,hard,you'd,today,car,ready,without,wants,hold,wanna,yet,seen,deal,once,gone,morning,supposed,friends,head,stuff,worry,live,truth,face,forget,true,cause,soon,knows,telling,wife,who's,chance,run,move,anyone,person,bye,somebody,heart,miss,making,meet,anyway,phone,reason,damn,lost,looks,bring,case,turn,wish,tomorrow,kids,trust,check,change,anymore,least,aren't,working,makes,taking,means,brother,hate,ago,says,beautiful,gave,fact,crazy,sit,afraid,important,rest,fun,kid,word,watch,glad,everyone,sister,minutes,everybody,bit,couple,whoa,either,mrs,feeling,daughter,wow,gets,asked,break,promise,door,close,hand,easy,question,tried,far,walk,needs,mine,killed,hospital,anybody,alright,wedding,shut,able,die,perfect,stand,comes,hit,waiting,dinner,funny,husband,almost,pay,answer,cool,eyes,news,child,shouldn't,yours,moment,sleep,read,where's,sounds,sonny,pick,sometimes,bed,date,plan,hours,lose,hands,serious,shit,behind,inside,ahead,week,wonderful,fight,past,cut,quite,he'll,sick,it'll,eat,nobody,goes,save,seems,finally,lives,worried,upset,carly,met,brought,seem,sort,safe,weren't,leaving,front,shot,loved,asking,running,clear,figure,hot,felt,parents,drink,absolutely,how's,daddy,sweet,alive,sense,meant,happens,bet,blood,ain't,kidding,lie,meeting,dear,seeing,sound,fault,ten,buy,hour,speak,lady,jen,thinks,christmas,outside,hang,possible,worse,mistake,ooh,handle,spend,totally,giving,here's,marriage,realize,unless,sex,send,needed,scared,picture,talked,ass,hundred,changed,completely,explain,certainly,sign,boys,relationship,loves,hair,lying,choice,anywhere,future,weird,luck,she'll,turned,touch,kiss,crane,questions,obviously,wonder,pain,calling,somewhere,throw,straight,cold,fast,words,food,none,drive,feelings,they'll,marry,drop,cannot,dream,protect,twenty,surprise,sweetheart,poor,looked,mad,except,gun,y'know,dance,takes,appreciate,especially,situation,besides,pull,hasn't,worth,sheridan,amazing,expect,swear,piece,busy,happening,movie,we'd,catch,perhaps,step,fall,watching,kept,darling,dog,honor,moving,till,admit,problems,murder,he'd,evil,definitely,feels,honest,eye,broke,missed,longer,dollars,tired,evening,starting,entire,trip,niles,suppose,calm,imagine,fair,caught,blame,sitting,favor,apartment,terrible,clean,learn,frasier,relax,accident,wake,prove,smart,message,missing,forgot,interested,table,nbsp,mouth,pregnant,ring,careful,shall,dude,ride,figured,wear,shoot,stick,follow,angry,write,stopped,ran,standing,forgive,jail,wearing,ladies,kinda,lunch,cristian,greenlee,gotten,hoping,phoebe,thousand,ridge,paper,tough,tape,count,boyfriend,proud,agree,birthday,they've,share,offer,hurry,feet,wondering,decision,ones,finish,voice,herself,would've,mess,deserve,evidence,cute,dress,interesting,hotel,enjoy,quiet,concerned,staying,beat,sweetie,mention,clothes,fell,neither,mmm,fix,respect,prison,attention,holding,calls,surprised,bar,keeping,gift,hadn't,putting,dark,owe,ice,helping,normal,aunt,lawyer,apart,plans,jax,girlfriend,floor,whether,everything's,box,judge,upstairs,sake,mommy,possibly,worst,acting,accept,blow,strange,saved,conversation,plane,mama,yesterday,lied,quick,lately,stuck,difference,store,she'd,bought,doubt,listening,walking,cops,deep,dangerous,buffy,sleeping,chloe,rafe,join,card,crime,gentlemen,willing,window,walked,guilty,likes,fighting,difficult,soul,joke,favorite,uncle,promised,bother,seriously,cell,knowing,broken,advice,somehow,paid,losing,push,helped,killing,boss,liked,innocent,rules,learned,thirty,risk,letting,speaking,ridiculous,afternoon,apologize,nervous,charge,patient,boat,how'd,hide,detective,planning,huge,breakfast,horrible,awful,pleasure,driving,hanging,picked,sell,quit,apparently,dying,notice,congratulations,visit,could've,c'mon,letter,decide,forward,fool,showed,smell,seemed,spell,memory,pictures,slow,seconds,hungry,hearing,kitchen,ma'am,should've,realized,kick,grab,discuss,fifty,reading,idiot,suddenly,agent,destroy,bucks,shoes,peace,arms,demon,livvie,consider,papers,incredible,witch,drunk,attorney,tells,knock,ways,gives,nose,skye,turns,keeps,jealous,drug,sooner,cares,plenty,extra,outta,weekend,matters,gosh,opportunity,impossible,waste,pretend,jump,eating,proof,slept,arrest,breathe,perfectly,warm,pulled,twice,easier,goin,dating,suit,romantic,drugs,comfortable,finds,checked,divorce,begin,ourselves,closer,ruin,smile,laugh,treat,fear,what'd,otherwise,excited,mail,hiding,stole,pacey,noticed,fired,excellent,bringing,bottom,note,sudden,bathroom,honestly,sing,foot,remind,charges,witness,finding,tree,dare,hardly,that'll,steal,silly,contact,teach,shop,plus,colonel,fresh,trial,invited,roll,reach,dirty,choose,emergency,dropped,butt,credit,obvious,locked,loving,nuts,agreed,prue,goodbye,condition,guard,fuckin,grow,cake,mood,crap,crying,belong,partner,trick,pressure,dressed,taste,neck,nurse,raise,lots,carry,whoever,drinking,they'd,breaking,file,lock,wine,spot,paying,assume,asleep,turning,viki,bedroom,shower,nikolas,camera,fill,reasons,forty,bigger,nope,breath,doctors,pants,freak,movies,folks,cream,wild,truly,desk,convince,client,threw,hurts,spending,answers,shirt,chair,rough,doin,sees,ought,empty,wind,aware,dealing,pack,tight,hurting,guest,arrested,salem,confused,surgery,expecting,deacon,unfortunately,goddamn,bottle,beyond,whenever,pool,opinion,starts,jerk,secrets,falling,necessary,barely,dancing,tests,copy,cousin,ahem,twelve,tess,skin,fifteen,speech,orders,complicated,nowhere,escape,biggest,restaurant,grateful,usual,burn,address,someplace,screw,everywhere,regret,goodness,mistakes,details,responsibility,suspect,corner,hero,dumb,terrific,whoo,hole,memories,o'clock,teeth,ruined,bite,stenbeck,liar,showing,cards,desperate,search,pathetic,spoke,scare,marah,afford,settle,stayed,checking,hired,heads,concern,blew,alcazar,champagne,connection,tickets,happiness,saving,kissing,hated,personally,suggest,prepared,onto,downstairs,ticket,it'd,loose,holy,duty,convinced,throwing,kissed,legs,loud,saturday,babies,where'd,warning,miracle,carrying,blind,ugly,shopping,hates,sight,bride,coat,clearly,celebrate,brilliant,wanting,forrester,lips,custody,screwed,buying,toast,thoughts,reality,lexie,attitude,advantage,grandfather,sami,grandma,someday,roof,marrying,powerful,grown,grandmother,fake,must've,ideas,exciting,familiar,bomb,bout,harmony,schedule,capable,practically,correct,clue,forgotten,appointment,deserves,threat,bloody,lonely,shame,jacket,hook,scary,investigation,invite,shooting,lesson,criminal,victim,funeral,considering,burning,strength,harder,sisters,pushed,shock,pushing,heat,chocolate,miserable,corinthos,nightmare,brings,zander,crash,chances,sending,recognize,healthy,boring,feed,engaged,headed,treated,knife,drag,badly,hire,paint,pardon,behavior,closet,warn,gorgeous,milk,survive,ends,dump,rent,remembered,thanksgiving,rain,revenge,prefer,spare,pray,disappeared,aside,statement,sometime,meat,fantastic,breathing,laughing,stood,affair,ours,depends,protecting,jury,brave,fingers,murdered,explanation,picking,blah,stronger,handsome,unbelievable,anytime,shake,oakdale,wherever,pulling,facts,waited,lousy,circumstances,disappointed,weak,trusted,license,nothin,trash,understanding,slip,sounded,awake,friendship,stomach,weapon,threatened,mystery,vegas,understood,basically,switch,frankly,cheap,lifetime,deny,clock,garbage,why'd,tear,ears,indeed,changing,singing,tiny,decent,avoid,messed,filled,touched,disappear,exact,pills,kicked,harm,fortune,pretending,insurance,fancy,drove,cared,belongs,nights,lorelai,lift,timing,guarantee,chest,woke,burned,watched,heading,selfish,drinks,doll,committed,elevator,freeze,noise,wasting,ceremony,uncomfortable,staring,files,bike,stress,permission,thrown,possibility,borrow,fabulous,doors,screaming,bone,xander,what're,meal,apology,anger,honeymoon,bail,parking,fixed,wash,stolen,sensitive,stealing,photo,chose,lets,comfort,worrying,pocket,mateo,bleeding,shoulder,ignore,talent,tied,garage,dies,demons,dumped,witches,rude,crack,bothering,radar,soft,meantime,gimme,kinds,fate,concentrate,throat,prom,messages,intend,ashamed,somethin,manage,guilt,interrupt,guts,tongue,shoe,basement,sentence,purse,glasses,cabin,universe,repeat,mirror,wound,travers,tall,engagement,therapy,emotional,jeez,decisions,soup,thrilled,stake,chef,moves,extremely,moments,expensive,counting,shots,kidnapped,cleaning,shift,plate,impressed,smells,trapped,aidan,knocked,charming,attractive,argue,puts,whip,embarrassed,package,hitting,bust,stairs,alarm,pure,nail,nerve,incredibly,walks,dirt,stamp,terribly,friendly,damned,jobs,suffering,disgusting,stopping,deliver,riding,helps,disaster,bars,crossed,trap,talks,eggs,chick,threatening,spoken,introduce,confession,embarrassing,bags,impression,gate,reputation,presents,chat,suffer,argument,talkin,crowd,homework,coincidence,cancel,pride,solve,hopefully,pounds,pine,mate,illegal,generous,outfit,maid,bath,punch,freaked,begging,recall,enjoying,prepare,wheel,defend,signs,painful,yourselves,maris,that'd,suspicious,cooking,button,warned,sixty,pity,yelling,awhile,confidence,offering,pleased,panic,hers,gettin,refuse,grandpa,testify,choices,cruel,mental,gentleman,coma,cutting,proteus,guests,expert,benefit,faces,jumped,toilet,sneak,halloween,privacy,smoking,reminds,twins,swing,solid,options,commitment,crush,ambulance,wallet,gang,eleven,option,laundry,assure,stays,skip,fail,discussion,clinic,betrayed,sticking,bored,mansion,soda,sheriff,suite,handled,busted,load,happier,studying,romance,procedure,commit,assignment,suicide,minds,swim,yell,llanview,chasing,proper,believes,humor,hopes,lawyers,giant,latest,escaped,parent,tricks,insist,dropping,cheer,medication,flesh,routine,sandwich,handed,false,beating,warrant,awfully,odds,treating,thin,suggesting,fever,sweat,silent,clever,sweater,mall,sharing,assuming,judgment,goodnight,divorced,surely,steps,confess,math,listened,comin,answered,vulnerable,bless,dreaming,chip,zero,pissed,nate,kills,tears,knees,chill,brains,unusual,packed,dreamed,cure,lookin,grave,cheating,breaks,locker,gifts,awkward,thursday,joking,reasonable,dozen,curse,quartermaine,millions,dessert,rolling,detail,alien,delicious,closing,vampires,wore,tail,secure,salad,murderer,spit,offense,dust,conscience,bread,answering,lame,invitation,grief,smiling,pregnancy,prisoner,delivery,guards,virus,shrink,freezing,wreck,massimo,wire,technically,blown,anxious,cave,holidays,cleared,wishes,caring,candles,bound,charm,pulse,jumping,jokes,boom,occasion,silence,nonsense,frightened,slipped,dimera,blowing,relationships,kidnapping,spin,tool,roxy,packing,blaming,wrap,obsessed,fruit,torture,personality,there'll,fairy,necessarily,seventy,print,motel,underwear,grams,exhausted,believing,freaking,carefully,trace,touching,messing,recovery,intention,consequences,belt,sacrifice,courage,enjoyed,attracted,remove,testimony,intense,heal,defending,unfair,relieved,loyal,slowly,buzz,alcohol,surprises,psychiatrist,plain,attic,who'd,uniform,terrified,cleaned,zach,threaten,fella,enemies,satisfied,imagination,hooked,headache,forgetting,counselor,andie,acted,badge,naturally,frozen,sakes,appropriate,trunk,dunno,costume,sixteen,impressive,kicking,junk,grabbed,understands,describe,clients,owns,affect,witnesses,starving,instincts,happily,discussing,deserved,strangers,surveillance,admire,questioning,dragged,barn,deeply,wrapped,wasted,tense,hoped,fellas,roommate,mortal,fascinating,stops,arrangements,agenda,literally,propose,honesty,underneath,sauce,promises,lecture,eighty,torn,shocked,backup,differently,ninety,deck,biological,pheebs,ease,creep,waitress,telephone,ripped,raising,scratch,rings,prints,thee,arguing,ephram,asks,oops,diner,annoying,taggert,sergeant,blast,towel,clown,habit,creature,bermuda,snap,react,paranoid,handling,eaten,therapist,comment,sink,reporter,nurses,beats,priority,interrupting,warehouse,loyalty,inspector,pleasant,excuses,threats,guessing,tend,praying,motive,unconscious,mysterious,unhappy,tone,switched,rappaport,sookie,neighbor,loaded,swore,piss,balance,toss,misery,thief,squeeze,lobby,goa'uld,geez,exercise,forth,booked,sandburg,poker,eighteen,d'you,bury,everyday,digging,creepy,wondered,liver,hmmm,magical,fits,discussed,moral,helpful,searching,flew,depressed,aisle,cris,amen,vows,neighbors,darn,cents,arrange,annulment,useless,adventure,resist,fourteen,celebrating,inch,debt,violent,sand,teal'c,celebration,reminded,phones,paperwork,emotions,stubborn,pound,tension,stroke,steady,overnight,chips,beef,suits,boxes,cassadine,collect,tragedy,spoil,realm,wipe,surgeon,stretch,stepped,nephew,neat,limo,confident,perspective,climb,punishment,finest,springfield,hint,furniture,blanket,twist,proceed,fries,worries,niece,gloves,soap,signature,disappoint,crawl,convicted,flip,counsel,doubts,crimes,accusing,shaking,remembering,hallway,halfway,bothered,madam,gather,cameras,blackmail,symptoms,rope,ordinary,imagined,cigarette,supportive,explosion,trauma,ouch,furious,cheat,avoiding,whew,thick,oooh,boarding,approve,urgent,shhh,misunderstanding,drawer,phony,interfere,catching,bargain,tragic,respond,punish,penthouse,thou,rach,ohhh,insult,bugs,beside,begged,absolute,strictly,socks,senses,sneaking,reward,polite,checks,tale,physically,instructions,fooled,blows,tabby,bitter,adorable,y'all,tested,suggestion,jewelry,alike,jacks,distracted,shelter,lessons,constable,circus,audition,tune,shoulders,mask,helpless,feeding,explains,sucked,robbery,objection,behave,valuable,shadows,courtroom,confusing,talented,smarter,mistaken,customer,bizarre,scaring,motherfucker,alert,vecchio,reverend,foolish,compliment,bastards,worker,wheelchair,protective,gentle,reverse,picnic,knee,cage,wives,wednesday,voices,toes,stink,scares,pour,cheated,slide,ruining,filling,exit,cottage,upside,proves,parked,diary,complaining,confessed,pipe,merely,massage,chop,spill,prayer,betray,waiter,scam,rats,fraud,brush,tables,sympathy,pill,filthy,seventeen,employee,bracelet,pays,fairly,deeper,arrive,tracking,spite,shed,recommend,oughta,nanny,menu,diet,corn,roses,patch,dime,devastated,subtle,bullets,beans,pile,confirm,strings,parade,borrowed,toys,straighten,steak,premonition,planted,honored,exam,convenient,traveling,laying,insisted,dish,aitoro,kindly,grandson,donor,temper,teenager,proven,mothers,denial,backwards,tent,swell,noon,happiest,drives,thinkin,spirits,potion,holes,fence,whatsoever,rehearsal,overheard,lemme,hostage,bench,tryin,taxi,shove,moron,impress,needle,intelligent,instant,disagree,stinks,rianna,recover,groom,gesture,constantly,bartender,suspects,sealed,legally,hears,dresses,sheet,psychic,teenage,knocking,judging,accidentally,waking,rumor,manners,homeless,hollow,desperately,tapes,referring,item,genoa,gear,majesty,cried,tons,spells,instinct,quote,motorcycle,convincing,fashioned,aids,accomplished,grip,bump,upsetting,needing,invisible,forgiveness,feds,compare,bothers,tooth,inviting,earn,compromise,cocktail,tramp,jabot,intimate,dignity,dealt,souls,informed,gods,dressing,cigarettes,alistair,leak,fond,corky,seduce,liquor,fingerprints,enchantment,butters,stuffed,stavros,emotionally,transplant,tips,oxygen,nicely,lunatic,drill,complain,announcement,unfortunate,slap,prayers,plug,opens,oath,o'neill,mutual,yacht,remembers,fried,extraordinary,bait,warton,sworn,stare,safely,reunion,burst,might've,dive,aboard,expose,buddies,trusting,booze,sweep,sore,scudder,properly,parole,ditch,canceled,speaks,glow,wears,thirsty,skull,ringing,dorm,dining,bend,unexpected,pancakes,harsh,flattered,ahhh,troubles,fights,favourite,eats,rage,undercover,spoiled,sloane,shine,destroying,deliberately,conspiracy,thoughtful,sandwiches,plates,nails,miracles,fridge,drank,contrary,beloved,allergic,washed,stalking,solved,sack,misses,forgiven,bent,maciver,involve,dragging,cooked,pointing,foul,dull,beneath,heels,faking,deaf,stunt,jealousy,hopeless,fears,cuts,scenario,necklace,crashed,accuse,restraining,homicide,helicopter,firing,safer,auction,videotape,tore,reservations,pops,appetite,wounds,vanquish,ironic,fathers,excitement,anyhow,tearing,sends,rape,laughed,belly,dealer,cooperate,accomplish,wakes,spotted,sorts,reservation,ashes,tastes,supposedly,loft,intentions,integrity,wished,towels,suspected,investigating,inappropriate,lipstick,lawn,compassion,cafeteria,scarf,precisely,obsession,loses,lighten,infection,granddaughter,explode,balcony,this'll,spying,publicity,depend,cracked,conscious,ally,absurd,vicious,invented,forbid,directions,defendant,bare,announce,screwing,salesman,robbed,leap,lakeview,insanity,reveal,possibilities,kidnap,gown,chairs,wishing,setup,punished,criminals,regrets,raped,quarters,lamp,dentist,anyways,anonymous,semester,risks,owes,lungs,explaining,delicate,tricked,eager,doomed,adoption,stab,sickness,scum,floating,envelope,vault,sorel,pretended,potatoes,plea,photograph,payback,misunderstood,kiddo,healing,cascade,capeside,stabbed,remarkable,brat,privilege,passionate,nerves,lawsuit,kidney,disturbed,cozy,tire,shirts,oven,ordering,delay,risky,monsters,honorable,grounded,closest,breakdown,bald,abandon,scar,collar,worthless,sucking,enormous,disturbing,disturb,distract,deals,conclusions,vodka,dishes,crawling,briefcase,wiped,whistle,sits,roast,rented,pigs,flirting,deposit,bottles,topic,riot,overreacting,logical,hostile,embarrass,casual,beacon,amusing,altar,claus,survival,skirt,shave,porch,ghosts,favors,drops,dizzy,chili,advise,strikes,rehab,photographer,peaceful,leery,heavens,fortunately,fooling,expectations,cigar,weakness,ranch,practicing,examine,cranes,bribe,sail,prescription,hush,fragile,forensics,expense,drugged,cows,bells,visitor,suitcase,sorta,scan,manticore,insecure,imagining,hardest,clerk,wrist,what'll,starters,silk,pump,pale,nicer,haul,flies,boot,thumb,there'd,how're,elders,quietly,pulls,idiots,erase,denying,ankle,amnesia,accepting,heartbeat,devane,confront,minus,legitimate,fixing,arrogant,tuna,supper,slightest,sins,sayin,recipe,pier,paternity,humiliating,genuine,snack,rational,minded,guessed,weddings,tumor,humiliated,aspirin,spray,picks,eyed,drowning,contacts,ritual,perfume,hiring,hating,docks,creatures,visions,thanking,thankful,sock,nineteen,fork,throws,teenagers,stressed,slice,rolls,plead,ladder,kicks,detectives,assured,tellin,shallow,responsibilities,repay,howdy,girlfriends,deadly,comforting,ceiling,verdict,insensitive,spilled,respected,messy,interrupted,halliwell,blond,bleed,wardrobe,takin,murders,backs,underestimate,justify,harmless,frustrated,fold,enzo,communicate,bugging,arson,whack,salary,rumors,obligation,liking,dearest,congratulate,vengeance,rack,puzzle,fires,courtesy,caller,blamed,tops,quiz,prep,curiosity,circles,barbecue,sunnydale,spinning,psychotic,cough,accusations,resent,laughs,freshman,envy,drown,bartlet,asses,sofa,poster,highness,dock,apologies,theirs,stat,stall,realizes,psych,mmmm,fools,understandable,treats,succeed,stir,relaxed,makin,gratitude,faithful,accent,witter,wandering,locate,inevitable,gretel,deed,crushed,controlling,smelled,robe,gossip,gambling,cosmetics,accidents,surprising,stiff,sincere,rushed,refrigerator,preparing,nightmares,mijo,ignoring,hunch,fireworks,drowned,brass,whispering,sophisticated,luggage,hike,explore,emotion,crashing,contacted,complications,shining,rolled,righteous,reconsider,goody,geek,frightening,ethics,creeps,courthouse,camping,affection,smythe,haircut,essay,baked,apologized,vibe,respects,receipt,mami,hats,destructive,adore,adopt,tracked,shorts,reminding,dough,creations,cabot,barrel,snuck,slight,reporters,pressing,magnificent,madame,lazy,glorious,fiancee,bits,visitation,sane,kindness,shoulda,rescued,mattress,lounge,lifted,importantly,glove,enterprises,disappointment,condo,beings,admitting,yelled,waving,spoon,screech,satisfaction,reads,nailed,worm,tick,resting,marvelous,fuss,cortlandt,chased,pockets,luckily,lilith,filing,conversations,consideration,consciousness,worlds,innocence,forehead,aggressive,trailer,slam,quitting,inform,delighted,daylight,danced,confidential,aunts,washing,tossed,spectra,marrow,lined,implying,hatred,grill,corpse,clues,sober,offended,morgue,infected,humanity,distraction,cart,wired,violation,promising,harassment,glue,d'angelo,cursed,brutal,warlocks,wagon,unpleasant,proving,priorities,mustn't,lease,flame,disappearance,depressing,thrill,sitter,ribs,flush,earrings,deadline,corporal,collapsed,update,snapped,smack,melt,figuring,delusional,coulda,burnt,tender,sperm,realise,pork,popped,interrogation,esteem,choosing,undo,pres,prayed,plague,manipulate,insulting,detention,delightful,coffeehouse,betrayal,apologizing,adjust,wrecked,wont,whipped,rides,reminder,monsieur,faint,bake,distress,correctly,complaint,blocked,tortured,risking,pointless,handing,dumping,cups,alibi,struggling,shiny,risked,mummy,mint,hose,hobby,fortunate,fleischman,fitting,curtain,counseling,rode,puppet,modeling,memo,irresponsible,humiliation,hiya,freakin,felony,choke,blackmailing,appreciated,tabloid,suspicion,recovering,pledge,panicked,nursery,louder,jeans,investigator,homecoming,frustrating,buys,busting,buff,sleeve,irony,dope,declare,autopsy,workin,torch,prick,limb,hysterical,goddamnit,fetch,dimension,crowded,clip,climbing,bonding,woah,trusts,negotiate,lethal,iced,fantasies,deeds,bore,babysitter,questioned,outrageous,kiriakis,insulted,grudge,driveway,deserted,definite,beep,wires,suggestions,searched,owed,lend,drunken,demanding,costanza,conviction,bumped,weigh,touches,tempted,shout,resolve,relate,poisoned,meals,invitations,haunted,bogus,autograph,affects,tolerate,stepping,spontaneous,sleeps,probation,manny,fist,spectacular,hostages,heroin,havin,habits,encouraging,consult,burgers,boyfriends,bailed,baggage,watches,troubled,torturing,teasing,sweetest,qualities,postpone,overwhelmed,malkovich,impulse,classy,charging,amazed,policeman,hypocrite,humiliate,hideous,d'ya,costumes,bluffing,betting,bein,bedtime,alcoholic,vegetable,tray,suspicions,spreading,splendid,shrimp,shouting,pressed,nooo,grieving,gladly,fling,eliminate,cereal,aaah,sonofabitch,paralyzed,lotta,locks,guaranteed,dummy,despise,dental,briefing,bluff,batteries,whatta,sounding,servants,presume,handwriting,fainted,dried,allright,acknowledge,whacked,toxic,reliable,quicker,overwhelming,lining,harassing,fatal,endless,dolls,convict,whatcha,unlikely,shutting,positively,overcome,goddam,essence,dose,diagnosis,cured,bully,ahold,yearbook,tempting,shelf,prosecution,pouring,possessed,greedy,wonders,thorough,spine,rath,psychiatric,meaningless,latte,jammed,ignored,fiance,evidently,contempt,compromised,cans,weekends,urge,theft,suing,shipment,scissors,responding,proposition,noises,matching,hormones,hail,grandchildren,gently,smashed,sexually,sentimental,nicest,manipulated,intern,handcuffs,framed,errands,entertaining,crib,carriage,barge,spends,slipping,seated,rubbing,rely,reject,recommendation,reckon,headaches,float,embrace,corners,whining,sweating,skipped,mountie,motives,listens,cristobel,cleaner,cheerleader,balsom,unnecessary,stunning,scent,quartermaines,pose,montega,loosen,info,hottest,haunt,gracious,forgiving,errand,cakes,blames,abortion,sketch,shifts,plotting,perimeter,pals,mere,mattered,lonigan,interference,eyewitness,enthusiasm,diapers,strongest,shaken,punched,portal,catches,backyard,terrorists,sabotage,organs,needy,cuff,civilization,woof,who'll,prank,obnoxious,mates,hereby,gabby,faked,cellar,whitelighter,void,strangle,sour,muffins,interfering,demonic,clearing,boutique,barrington,terrace,smoked,righty,quack,petey,pact,knot,ketchup,disappearing,cordy,uptight,ticking,terrifying,tease,swamp,secretly,rejection,reflection,realizing,rays,mentally,marone,doubted,deception,congressman,cheesy,toto,stalling,scoop,ribbon,immune,expects,destined,bets,bathing,appreciation,accomplice,wander,shoved,sewer,scroll,retire,lasts,fugitive,freezer,discount,cranky,crank,clearance,bodyguard,anxiety,accountant,whoops,volunteered,talents,stinking,remotely,garlic,decency,cord,beds,altogether,uniforms,tremendous,popping,outa,observe,lung,hangs,feelin,dudes,donation,disguise,curb,bites,antique,toothbrush,realistic,predict,landlord,hourglass,hesitate,consolation,babbling,tipped,stranded,smartest,repeating,puke,psst,paycheck,overreacted,macho,juvenile,grocery,freshen,disposal,cuffs,caffeine,vanished,unfinished,ripping,pinch,flattering,expenses,dinners,colleague,ciao,belthazor,attorneys,woulda,whereabouts,waitin,truce,tripped,tasted,steer,poisoning,manipulative,immature,husbands,heel,granddad,delivering,condoms,addict,trashed,raining,pasta,needles,leaning,detector,coolest,batch,appointments,almighty,vegetables,spark,perfection,pains,momma,mole,meow,hairs,getaway,cracking,compliments,behold,verge,tougher,timer,tapped,taped,specialty,snooping,shoots,rendezvous,pentagon,leverage,jeopardize,janitor,grandparents,forbidden,clueless,bidding,ungrateful,unacceptable,tutor,serum,scuse,pajamas,mouths,lure,irrational,doom,cries,beautifully,arresting,approaching,traitor,sympathetic,smug,smash,rental,prostitute,premonitions,jumps,inventory,darlin,committing,banging,asap,worms,violated,vent,traumatic,traced,sweaty,shaft,overboard,insight,healed,grasp,experiencing,crappy,crab,chunk,awww,stain,shack,reacted,pronounce,poured,moms,marriages,jabez,handful,flipped,fireplace,embarrassment,disappears,concussion,bruises,brakes,twisting,swept,summon,splitting,sloppy,settling,reschedule,notch,hooray,grabbing,exquisite,disrespect,thornhart,straw,slapped,shipped,shattered,ruthless,refill,payroll,numb,mourning,manly,hunk,entertain,drift,dreadful,doorstep,confirmation,chops,appreciates,vague,tires,stressful,stashed,stash,sensed,preoccupied,predictable,noticing,madly,gunshot,dozens,dork,confuse,cleaners,charade,chalk,cappuccino,bouquet,amulet,addiction,who've,warming,unlock,satisfy,sacrificed,relaxing,lone,blocking,blend,blankets,addicted,yuck,hunger,hamburger,greeting,greet,gravy,gram,dreamt,dice,caution,backpack,agreeing,whale,taller,supervisor,sacrifices,phew,ounce,irrelevant,gran,felon,favorites,farther,fade,erased,easiest,convenience,compassionate,cane,backstage,agony,adores,veins,tweek,thieves,surgical,strangely,stetson,recital,proposing,productive,meaningful,immunity,hassle,goddamned,frighten,dearly,cease,ambition,wage,unstable,salvage,richer,refusing,raging,pumping,pressuring,mortals,lowlife,intimidated,intentionally,inspire,forgave,devotion,despicable,deciding,dash,comfy,breach,bark,aaaah,switching,swallowed,stove,screamed,scars,russians,pounding,poof,pipes,pawn,legit,invest,farewell,curtains,civilized,caviar,boost,token,superstition,supernatural,sadness,recorder,psyched,motivated,microwave,hallelujah,fraternity,dryer,cocoa,chewing,acceptable,unbelievably,smiled,smelling,simpler,respectable,remarks,khasinau,indication,gutter,grabs,fulfill,flashlight,ellenor,blooded,blink,blessings,beware,uhhh,turf,swings,slips,shovel,shocking,puff,mirrors,locking,heartless,fras,childish,cardiac,utterly,tuscany,ticked,stunned,statesville,sadly,purely,kiddin,jerks,hitch,flirt,fare,equals,dismiss,christening,casket,c'mere,breakup,biting,antibiotics,accusation,abducted,witchcraft,thread,runnin,punching,paramedics,newest,murdering,masks,lawndale,initials,grampa,choking,charms,careless,bushes,buns,bummed,shred,saves,saddle,rethink,regards,precinct,persuade,meds,manipulating,llanfair,leash,hearted,guarantees,fucks,disgrace,deposition,bookstore,boil,vitals,veil,trespassing,sidewalk,sensible,punishing,overtime,optimistic,obsessing,notify,mornin,jeopardy,jaffa,injection,hilarious,desires,confide,cautious,yada,where're,vindictive,vial,teeny,stroll,sittin,scrub,rebuild,posters,ordeal,nuns,intimacy,inheritance,exploded,donate,distracting,despair,crackers,wildwind,virtue,thoroughly,tails,spicy,sketches,sights,sheer,shaving,seize,scarecrow,refreshing,prosecute,platter,napkin,misplaced,merchandise,loony,jinx,heroic,frankenstein,ambitious,syrup,solitary,resemblance,reacting,premature,lavery,flashes,cheque,awright,acquainted,wrapping,untie,salute,realised,priceless,partying,lightly,lifting,kasnoff,insisting,glowing,generator,explosives,cutie,confronted,buts,blouse,ballistic,antidote,analyze,allowance,adjourned,unto,understatement,tucked,touchy,subconscious,screws,sarge,roommates,rambaldi,offend,nerd,knives,irresistible,incapable,hostility,goddammit,fuse,frat,curfew,blackmailed,walkin,starve,sleigh,sarcastic,recess,rebound,pinned,parlor,outfits,livin,heartache,haired,fundraiser,doorman,discreet,dilucca,cracks,considerate,climbed,catering,apophis,zoey,urine,strung,stitches,sordid,sark,protector,phoned,pets,hostess,flaw,flavor,deveraux,consumed,confidentiality,bourbon,straightened,specials,spaghetti,prettier,powerless,playin,playground,paranoia,instantly,havoc,exaggerating,eavesdropping,doughnuts,diversion,deepest,cutest,comb,bela,behaving,anyplace,accessory,workout,translate,stuffing,speeding,slime,royalty,polls,marital,lurking,lottery,imaginary,greetings,fairwinds,elegant,elbow,credibility,credentials,claws,chopped,bridal,bedside,babysitting,witty,unforgivable,underworld,tempt,tabs,sophomore,selfless,secrecy,restless,okey,movin,metaphor,messes,meltdown,lecter,incoming,gasoline,diefenbaker,buckle,admired,adjustment,warmth,throats,seduced,queer,parenting,noses,luckiest,graveyard,gifted,footsteps,dimeras,cynical,wedded,verbal,unpredictable,tuned,stoop,slides,sinking,rigged,plumbing,lingerie,hankey,greed,everwood,elope,dresser,chauffeur,bulletin,bugged,bouncing,temptation,strangest,slammed,sarcasm,pending,packages,orderly,obsessive,murderers,meteor,inconvenience,glimpse,froze,execute,courageous,consulate,closes,bosses,bees,amends,wuss,wolfram,wacky,unemployed,testifying,syringe,stew,startled,sorrow,sleazy,shaky,screams,rsquo,remark,poke,nutty,mentioning,mend,inspiring,impulsive,housekeeper,foam,fingernails,conditioning,baking,whine,thug,starved,sniffing,sedative,programmed,picket,paged,hound,homosexual,homo,hips,forgets,flipping,flea,flatter,dwell,dumpster,choo,assignments,ants,vile,unreasonable,tossing,thanked,steals,souvenir,scratched,psychopath,outs,obstruction,obey,lump,insists,harass,gloat,filth,edgy,didn,coroner,confessing,bruise,betraying,bailing,appealing,adebisi,wrath,wandered,waist,vain,traps,stepfather,poking,obligated,heavenly,dilemma,crazed,contagious,coaster,cheering,bundle,vomit,thingy,speeches,robbing,raft,pumped,pillows,peep,packs,neglected,m'kay,loneliness,intrude,helluva,gardener,forresters,drooling,betcha,vase,supermarket,squat,spitting,rhyme,relieve,receipts,racket,pictured,pause,overdue,motivation,morgendorffer,kidnapper,insect,horns,feminine,eyeballs,dumps,disappointing,crock,convertible,claw,clamp,canned,cambias,bathtub,avanya,artery,weep,warmer,suspense,summoned,spiders,reiber,raving,pushy,postponed,ohhhh,noooo,mold,laughter,incompetent,hugging,groceries,drip,communicating,auntie,adios,wraps,wiser,willingly,weirdest,timmih,thinner,swelling,swat,steroids,sensitivity,scrape,rehearse,prophecy,ledge,justified,insults,hateful,handles,doorway,chatting,buyer,buckaroo,bedrooms,askin,ammo,tutoring,subpoena,scratching,privileges,pager,mart,intriguing,idiotic,grape,enlighten,corrupt,brunch,bridesmaid,barking,applause,acquaintance,wretched,superficial,soak,smoothly,sensing,restraint,posing,pleading,payoff,oprah,nemo,morals,loaf,jumpy,ignorant,herbal,hangin,germs,generosity,flashing,doughnut,clumsy,chocolates,captive,behaved,apologise,vanity,stumbled,preview,poisonous,perjury,parental,onboard,mugged,minding,linen,knots,interviewing,humour,grind,greasy,goons,drastic,coop,comparing,cocky,clearer,bruised,brag,bind,worthwhile,whoop,vanquishing,tabloids,sprung,spotlight,sentencing,racist,provoke,pining,overly,locket,imply,impatient,hovering,hotter,fest,endure,dots,doren,debts,crawled,chained,brit,breaths,weirdo,warmed,wand,troubling,tok'ra,strapped,soaked,skipping,scrambled,rattle,profound,musta,mocking,misunderstand,limousine,kacl,hustle,forensic,enthusiastic,duct,drawers,devastating,conquer,clarify,chores,cheerleaders,cheaper,callin,blushing,barging,abused,yoga,wrecking,wits,waffles,virginity,vibes,uninvited,unfaithful,teller,strangled,scheming,ropes,rescuing,rave,postcard,o'reily,morphine,lotion,lads,kidneys,judgement,itch,indefinitely,grenade,glamorous,genetically,freud,discretion,delusions,crate,competent,bakery,argh,ahhhh,wedge,wager,unfit,tripping,torment,superhero,stirring,spinal,sorority,seminar,scenery,rabble,pneumonia,perks,override,ooooh,mija,manslaughter,mailed,lime,lettuce,intimidate,guarded,grieve,grad,frustration,doorbell,chinatown,authentic,arraignment,annulled,allergies,wanta,verify,vegetarian,tighter,telegram,stalk,spared,shoo,satisfying,saddam,requesting,pens,overprotective,obstacles,notified,nasedo,grandchild,genuinely,flushed,fluids,floss,escaping,ditched,cramp,corny,bunk,bitten,billions,bankrupt,yikes,wrists,ultrasound,ultimatum,thirst,sniff,shakes,salsa,retrieve,reassuring,pumps,neurotic,negotiating,needn't,monitors,millionaire,lydecker,limp,incriminating,hatchet,gracias,gordie,fills,feeds,doubting,decaf,biopsy,whiz,voluntarily,ventilator,unpack,unload,toad,spooked,snitch,schillinger,reassure,persuasive,mystical,mysteries,matrimony,mails,jock,headline,explanations,dispatch,curly,cupid,condolences,comrade,cassadines,bulb,bragging,awaits,assaulted,ambush,adolescent,abort,yank,whit,vaguely,undermine,tying,swamped,stabbing,slippers,slash,sincerely,sigh,setback,secondly,rotting,precaution,pcpd,melting,liaison,hots,hooking,headlines,haha,ganz,fury,felicity,fangs,encouragement,earring,dreidel,dory,donut,dictate,decorating,cocktails,bumps,blueberry,believable,backfired,backfire,apron,adjusting,vous,vouch,vitamins,ummm,tattoos,slimy,sibling,shhhh,renting,peculiar,parasite,paddington,marries,mailbox,magically,lovebirds,knocks,informant,exits,drazen,distractions,disconnected,dinosaurs,dashwood,crooked,conveniently,wink,warped,underestimated,tacky,shoving,seizure,reset,pushes,opener,mornings,mash,invent,indulge,horribly,hallucinating,festive,eyebrows,enjoys,desperation,dealers,darkest,daph,boragora,belts,bagel,authorization,auditions,agitated,wishful,wimp,vanish,unbearable,tonic,suffice,suction,slaying,safest,rocking,relive,puttin,prettiest,noisy,newlyweds,nauseous,misguided,mildly,midst,liable,judgmental,indy,hunted,givin,fascinated,elephants,dislike,deluded,decorate,crummy,contractions,carve,bottled,bonded,bahamas,unavailable,twenties,trustworthy,surgeons,stupidity,skies,remorse,preferably,pies,nausea,napkins,mule,mourn,melted,mashed,inherit,greatness,golly,excused,dumbo,drifting,delirious,damaging,cubicle,compelled,comm,chooses,checkup,boredom,bandages,alarms,windshield,who're,whaddya,transparent,surprisingly,sunglasses,slit,roar,reade,prognosis,probe,pitiful,persistent,peas,nosy,nagging,morons,masterpiece,martinis,limbo,liars,irritating,inclined,hump,hoynes,fiasco,eatin,cubans,concentrating,colorful,clam,cider,brochure,barto,bargaining,wiggle,welcoming,weighing,vanquished,stains,sooo,snacks,smear,sire,resentment,psychologist,pint,overhear,morality,landingham,kisser,hoot,holling,handshake,grilled,formality,elevators,depths,confirms,boathouse,accidental,westbridge,wacko,ulterior,thugs,thighs,tangled,stirred,snag,sling,sleaze,rumour,ripe,remarried,puddle,pins,perceptive,miraculous,longing,lockup,librarian,impressions,immoral,hypothetically,guarding,gourmet,gabe,faxed,extortion,downright,digest,cranberry,bygones,buzzing,burying,bikes,weary,taping,takeout,sweeping,stepmother,stale,senor,seaborn,pros,pepperoni,newborn,ludicrous,injected,geeks,forged,faults,drue,dire,dief,desi,deceiving,caterer,calmed,budge,ankles,vending,typing,tribbiani,there're,squared,snowing,shades,sexist,rewrite,regretted,raises,picky,orphan,mural,misjudged,miscarriage,memorize,leaking,jitters,invade,interruption,illegally,handicapped,glitch,gittes,finer,distraught,dispose,dishonest,digs,dads,cruelty,circling,canceling,butterflies,belongings,barbrady,amusement,alias,zombies,where've,unborn,swearing,stables,squeezed,sensational,resisting,radioactive,questionable,privileged,portofino,owning,overlook,orson,oddly,interrogate,imperative,impeccable,hurtful,hors,heap,graders,glance,disgust,devious,destruct,crazier,countdown,chump,cheeseburger,burglar,berries,ballroom,assumptions,annoyed,allergy,admirer,admirable,activate,underpants,twit,tack,strokes,stool,sham,scrap,retarded,resourceful,remarkably,refresh,pressured,precautions,pointy,nightclub,mustache,maui,lace,hunh,hubby,flare,dont,dokey,dangerously,crushing,clinging,choked,chem,cheerleading,checkbook,cashmere,calmly,blush,believer,amazingly,alas,what've,toilets,tacos,stairwell,spirited,sewing,rubbed,punches,protects,nuisance,motherfuckers,mingle,kynaston,knack,kinkle,impose,gullible,godmother,funniest,friggin,folding,fashions,eater,dysfunctional,drool,dripping,ditto,cruising,criticize,conceive,clone,cedars,caliber,brighter,blinded,birthdays,banquet,anticipate,annoy,whim,whichever,volatile,veto,vested,shroud,rests,reindeer,quarantine,pleases,painless,orphans,orphanage,offence,obliged,negotiation,narcotics,mistletoe,meddling,manifest,lookit,lilah,intrigued,injustice,homicidal,gigantic,exposing,elves,disturbance,disastrous,depended,demented,correction,cooped,cheerful,buyers,brownies,beverage,basics,arvin,weighs,upsets,unethical,swollen,sweaters,stupidest,sensation,scalpel,props,prescribed,pompous,objections,mushrooms,mulwray,manipulation,lured,internship,insignificant,inmate,incentive,fulfilled,disagreement,crypt,cornered,copied,brightest,beethoven,attendant,amaze,yogurt,wyndemere,vocabulary,tulsa,tactic,stuffy,respirator,pretends,polygraph,pennies,ordinarily,olives,necks,morally,martyr,leftovers,joints,hopping,homey,hints,heartbroken,forge,florist,firsthand,fiend,dandy,crippled,corrected,conniving,conditioner,clears,chemo,bubbly,bladder,beeper,baptism,wiring,wench,weaknesses,volunteering,violating,unlocked,tummy,surrogate,subid,stray,startle,specifics,slowing,scoot,robbers,rightful,richest,qfxmjrie,puffs,pierced,pencils,paralysis,makeover,luncheon,linksynergy,jerky,jacuzzi,hitched,hangover,fracture,flock,firemen,disgusted,darned,clams,borrowing,banged,wildest,weirder,unauthorized,stunts,sleeves,sixties,shush,shalt,retro,quits,pegged,painfully,paging,omelet,memorized,lawfully,jackets,intercept,ingredient,grownup,glued,fulfilling,enchanted,delusion,daring,compelling,carton,bridesmaids,bribed,boiling,bathrooms,bandage,awaiting,assign,arrogance,antiques,ainsley,turkeys,trashing,stockings,stalked,stabilized,skates,sedated,robes,respecting,psyche,presumptuous,prejudice,paragraph,mocha,mints,mating,mantan,lorne,loads,listener,itinerary,hepatitis,heave,guesses,fading,examining,dumbest,dishwasher,deceive,cunning,cripple,convictions,confided,compulsive,compromising,burglary,bumpy,brainwashed,benes,arnie,affirmative,adrenaline,adamant,watchin,waitresses,transgenic,toughest,tainted,surround,stormed,spree,spilling,spectacle,soaking,shreds,sewers,severed,scarce,scamming,scalp,rewind,rehearsing,pretentious,potions,overrated,obstacle,nerds,meems,mcmurphy,maternity,maneuver,loathe,fertility,eloping,ecstatic,ecstasy,divorcing,dignan,costing,clubhouse,clocks,candid,bursting,breather,braces,bending,arsonist,adored,absorb,valiant,uphold,unarmed,topolsky,thrilling,thigh,terminate,sustain,spaceship,snore,sneeze,smuggling,salty,quaint,patronize,patio,morbid,mamma,kettle,joyous,invincible,interpret,insecurities,impulses,illusions,holed,exploit,drivin,defenseless,dedicate,cradle,coupon,countless,conjure,cardboard,booking,backseat,accomplishment,wordsworth,wisely,valet,vaccine,urges,unnatural,unlucky,truths,traumatized,tasting,swears,strawberries,steaks,stats,skank,seducing,secretive,scumbag,screwdriver,schedules,rooting,rightfully,rattled,qualifies,puppets,prospects,pronto,posse,polling,pedestal,palms,muddy,morty,microscope,merci,lecturing,inject,incriminate,hygiene,grapefruit,gazebo,funnier,cuter,bossy,booby,aides,zende,winthrop,warrants,valentines,undressed,underage,truthfully,tampered,suffers,speechless,sparkling,sidelines,shrek,railing,puberty,pesky,outrage,outdoors,motions,moods,lunches,litter,kidnappers,itching,intuition,imitation,humility,hassling,gallons,drugstore,dosage,disrupt,dipping,deranged,debating,cuckoo,cremated,craziness,cooperating,circumstantial,chimney,blinking,biscuits,admiring,weeping,triad,trashy,soothing,slumber,slayers,skirts,siren,shindig,sentiment,rosco,riddance,quaid,purity,proceeding,pretzels,panicking,mckechnie,lovin,leaked,intruding,impersonating,ignorance,hamburgers,footprints,fluke,fleas,festivities,fences,feisty,evacuate,emergencies,deceived,creeping,craziest,corpses,conned,coincidences,bounced,bodyguards,blasted,bitterness,baloney,ashtray,apocalypse,zillion,watergate,wallpaper,telesave,sympathize,sweeter,startin,spades,sodas,snowed,sleepover,signor,seein,retainer,restroom,rested,repercussions,reliving,reconcile,prevail,preaching,overreact,o'neil,noose,moustache,manicure,maids,landlady,hypothetical,hopped,homesick,hives,hesitation,herbs,hectic,heartbreak,haunting,gangs,frown,fingerprint,exhausting,everytime,disregard,cling,chevron,chaperone,blinding,bitty,beads,battling,badgering,anticipation,upstanding,unprofessional,unhealthy,turmoil,truthful,toothpaste,tippin,thoughtless,tagataya,shooters,senseless,rewarding,propane,preposterous,pigeons,pastry,overhearing,obscene,negotiable,loner,jogging,itchy,insinuating,insides,hospitality,hormone,hearst,forthcoming,fists,fifties,etiquette,endings,destroys,despises,deprived,cuddy,crust,cloak,circumstance,chewed,casserole,bidder,bearer,artoo,applaud,appalling,vowed,virgins,vigilante,undone,throttle,testosterone,tailor,symptom,swoop,suitcases,stomp,sticker,stakeout,spoiling,snatched,smoochy,smitten,shameless,restraints,researching,renew,refund,reclaim,raoul,puzzles,purposely,punks,prosecuted,plaid,picturing,pickin,parasites,mysteriously,multiply,mascara,jukebox,interruptions,gunfire,furnace,elbows,duplicate,drapes,deliberate,decoy,cryptic,coupla,condemn,complicate,colossal,clerks,clarity,brushed,banished,argon,alarmed,worships,versa,uncanny,technicality,sundae,stumble,stripping,shuts,schmuck,satin,saliva,robber,relentless,reconnect,recipes,rearrange,rainy,psychiatrists,policemen,plunge,plugged,patched,overload,o'malley,mindless,menus,lullaby,lotte,leavin,killin,karinsky,invalid,hides,grownups,griff,flaws,flashy,flaming,fettes,evicted,dread,degrassi,dealings,dangers,cushion,bowel,barged,abide,abandoning,wonderfully,wait'll,violate,suicidal,stayin,sorted,slamming,sketchy,shoplifting,raiser,quizmaster,prefers,needless,motherhood,momentarily,migraine,lifts,leukemia,leftover,keepin,hinks,hellhole,gowns,goodies,gallon,futures,entertained,eighties,conspiring,cheery,benign,apiece,adjustments,abusive,abduction,wiping,whipping,welles,unspeakable,unidentified,trivial,transcripts,textbook,supervise,superstitious,stricken,stimulating,spielberg,slices,shelves,scratches,sabotaged,retrieval,repressed,rejecting,quickie,ponies,peeking,outraged,o'connell,moping,moaning,mausoleum,licked,kovich,klutz,interrogating,interfered,insulin,infested,incompetence,hyper,horrified,handedly,gekko,fraid,fractured,examiner,eloped,disoriented,dashing,crashdown,courier,cockroach,chipped,brushing,bombed,bolts,baths,baptized,astronaut,assurance,anemia,abuela,abiding,withholding,weave,wearin,weaker,suffocating,straws,straightforward,stench,steamed,starboard,sideways,shrinks,shortcut,scram,roasted,roaming,riviera,respectfully,repulsive,psychiatry,provoked,penitentiary,painkillers,ninotchka,mitzvah,milligrams,midge,marshmallows,looky,lapse,kubelik,intellect,improvise,implant,goa'ulds,giddy,geniuses,fruitcake,footing,fightin,drinkin,doork,detour,cuddle,crashes,combo,colonnade,cheats,cetera,bailiff,auditioning,assed,amused,alienate,aiding,aching,unwanted,topless,tongues,tiniest,superiors,soften,sheldrake,rawley,raisins,presses,plaster,nessa,narrowed,minions,merciful,lawsuits,intimidating,infirmary,inconvenient,imposter,hugged,honoring,holdin,hades,godforsaken,fumes,forgery,foolproof,folder,flattery,fingertips,exterminator,explodes,eccentric,dodging,disguised,crave,constructive,concealed,compartment,chute,chinpokomon,bodily,astronauts,alimony,accustomed,abdominal,wrinkle,wallow,valium,untrue,uncover,trembling,treasures,torched,toenails,timed,termites,telly,taunting,taransky,talker,succubus,smarts,sliding,sighting,semen,seizures,scarred,savvy,sauna,saddest,sacrificing,rubbish,riled,ratted,rationally,provenance,phonse,perky,pedal,overdose,nasal,nanites,mushy,movers,missus,midterm,merits,melodramatic,manure,knitting,invading,interpol,incapacitated,hotline,hauling,gunpoint,grail,ganza,framing,flannel,faded,eavesdrop,desserts,calories,breathtaking,bleak,blacked,batter,aggravated,yanked,wigand,whoah,unwind,undoubtedly,unattractive,twitch,trimester,torrance,timetable,taxpayers,strained,stared,slapping,sincerity,siding,shenanigans,shacking,sappy,samaritan,poorer,politely,paste,oysters,overruled,nightcap,mosquito,millimeter,merrier,manhood,lucked,kilos,ignition,hauled,harmed,goodwill,freshmen,fenmore,fasten,farce,exploding,erratic,drunks,ditching,d'artagnan,cramped,contacting,closets,clientele,chimp,bargained,arranging,anesthesia,amuse,altering,afternoons,accountable,abetting,wolek,waved,uneasy,toddy,tattooed,spauldings,sliced,sirens,schibetta,scatter,rinse,remedy,redemption,pleasures,optimism,oblige,mmmmm,masked,malicious,mailing,kosher,kiddies,judas,isolate,insecurity,incidentally,heals,headlights,growl,grilling,glazed,flunk,floats,fiery,fairness,exercising,excellency,disclosure,cupboard,counterfeit,condescending,conclusive,clicked,cleans,cholesterol,cashed,broccoli,brats,blueprints,blindfold,billing,attach,appalled,alrighty,wynant,unsolved,unreliable,toots,tighten,sweatshirt,steinbrenner,steamy,spouse,sonogram,slots,sleepless,shines,retaliate,rephrase,redeem,rambling,quilt,quarrel,prying,proverbial,priced,prescribe,prepped,pranks,possessive,plaintiff,pediatrics,overlooked,outcast,nightgown,mumbo,mediocre,mademoiselle,lunchtime,lifesaver,leaned,lambs,interns,hounding,hellmouth,hahaha,goner,ghoul,gardening,frenzy,foyer,extras,exaggerate,everlasting,enlightened,dialed,devote,deceitful,d'oeuvres,cosmetic,contaminated,conspired,conning,cavern,carving,butting,boiled,blurry,babysit,ascension,aaaaah,wildly,whoopee,whiny,weiskopf,walkie,vultures,vacations,upfront,unresolved,tampering,stockholders,snaps,sleepwalking,shrunk,sermon,seduction,scams,revolve,phenomenal,patrolling,paranormal,ounces,omigod,nightfall,lashing,innocents,infierno,incision,humming,haunts,gloss,gloating,frannie,fetal,feeny,entrapment,discomfort,detonator,dependable,concede,complication,commotion,commence,chulak,caucasian,casually,brainer,bolie,ballpark,anwar,analyzing,accommodations,youse,wring,wallowing,transgenics,thrive,tedious,stylish,strippers,sterile,squeezing,squeaky,sprained,solemn,snoring,shattering,shabby,seams,scrawny,revoked,residue,reeks,recite,ranting,quoting,predicament,plugs,pinpoint,petrified,pathological,passports,oughtta,nighter,navigate,kippie,intrigue,intentional,insufferable,hunky,how've,horrifying,hearty,hamptons,grazie,funerals,forks,fetched,excruciating,enjoyable,endanger,dumber,drying,diabolical,crossword,corry,comprehend,clipped,classmates,candlelight,brutally,brutality,boarded,bathrobe,authorize,assemble,aerobics,wholesome,whiff,vermin,trophies,trait,tragically,toying,testy,tasteful,stocked,spinach,sipping,sidetracked,scrubbing,scraping,sanctity,robberies,ridin,retribution,refrain,realities,radiant,protesting,projector,plutonium,payin,parting,o'reilly,nooooo,motherfucking,measly,manic,lalita,juggling,jerking,intro,inevitably,hypnosis,huddle,horrendous,hobbies,heartfelt,harlin,hairdresser,gonorrhea,fussing,furtwangler,fleeting,flawless,flashed,fetus,eulogy,distinctly,disrespectful,denies,crossbow,cregg,crabs,cowardly,contraction,contingency,confirming,condone,coffins,cleansing,cheesecake,certainty,cages,c'est,briefed,bravest,bosom,boils,binoculars,bachelorette,appetizer,ambushed,alerted,woozy,withhold,vulgar,utmost,unleashed,unholy,unhappiness,unconditional,typewriter,typed,twists,supermodel,subpoenaed,stringing,skeptical,schoolgirl,romantically,rocked,revoir,reopen,puncture,preach,polished,planetarium,penicillin,peacefully,nurturing,more'n,mmhmm,midgets,marklar,lodged,lifeline,jellyfish,infiltrate,hutch,horseback,heist,gents,frickin,freezes,forfeit,flakes,flair,fathered,eternally,epiphany,disgruntled,discouraged,delinquent,decipher,danvers,cubes,credible,coping,chills,cherished,catastrophe,bombshell,birthright,billionaire,ample,affections,admiration,abbotts,whatnot,watering,vinegar,unthinkable,unseen,unprepared,unorthodox,underhanded,uncool,timeless,thump,thermometer,theoretically,tapping,tagged,swung,stares,spiked,solves,smuggle,scarier,saucer,quitter,prudent,powdered,poked,pointers,peril,penetrate,penance,opium,nudge,nostrils,neurological,mockery,mobster,medically,loudly,insights,implicate,hypocritical,humanly,holiness,healthier,hammered,haldeman,gunman,gloom,freshly,francs,flunked,flawed,emptiness,drugging,dozer,derevko,deprive,deodorant,cryin,crocodile,coloring,colder,cognac,clocked,clippings,charades,chanting,certifiable,caterers,brute,brochures,botched,blinders,bitchin,banter,woken,ulcer,tread,thankfully,swine,swimsuit,swans,stressing,steaming,stamped,stabilize,squirm,snooze,shuffle,shredded,seafood,scratchy,savor,sadistic,rhetorical,revlon,realist,prosecuting,prophecies,polyester,petals,persuasion,paddles,o'leary,nuthin,neighbour,negroes,muster,meningitis,matron,lockers,letterman,legged,indictment,hypnotized,housekeeping,hopelessly,hallucinations,grader,goldilocks,girly,flask,envelopes,downside,doves,dissolve,discourage,disapprove,diabetic,deliveries,decorator,crossfire,criminally,containment,comrades,complimentary,chatter,catchy,cashier,cartel,caribou,cardiologist,brawl,booted,barbershop,aryan,angst,administer,zellie,wreak,whistles,vandalism,vamps,uterus,upstate,unstoppable,understudy,tristin,transcript,tranquilizer,toxins,tonsils,stempel,spotting,spectator,spatula,softer,snotty,slinging,showered,sexiest,sensual,sadder,rimbaud,restrain,resilient,remission,reinstate,rehash,recollection,rabies,popsicle,plausible,pediatric,patronizing,ostrich,ortolani,oooooh,omelette,mistrial,marseilles,loophole,laughin,kevvy,irritated,infidelity,hypothermia,horrific,groupie,grinding,graceful,goodspeed,gestures,frantic,extradition,echelon,disks,dawnie,dared,damsel,curled,collateral,collage,chant,calculating,bumping,bribes,boardwalk,blinds,blindly,bleeds,bickering,beasts,backside,avenge,apprehended,anguish,abusing,youthful,yells,yanking,whomever,when'd,vomiting,vengeful,unpacking,unfamiliar,undying,tumble,trolls,treacherous,tipping,tantrum,tanked,summons,straps,stomped,stinkin,stings,staked,squirrels,sprinkles,speculate,sorting,skinned,sicko,sicker,shootin,shatter,seeya,schnapps,s'posed,ronee,respectful,regroup,regretting,reeling,reckoned,ramifications,puddy,projections,preschool,plissken,platonic,permalash,outdone,outburst,mutants,mugging,misfortune,miserably,miraculously,medications,margaritas,manpower,lovemaking,logically,leeches,latrine,kneel,inflict,impostor,hypocrisy,hippies,heterosexual,heightened,hecuba,healer,gunned,grooming,groin,gooey,gloomy,frying,friendships,fredo,firepower,fathom,exhaustion,evils,endeavor,eggnog,dreaded,d'arcy,crotch,coughing,coronary,cookin,consummate,congrats,companionship,caved,caspar,bulletproof,brilliance,breakin,brash,blasting,aloud,airtight,advising,advertise,adultery,aches,wronged,upbeat,trillion,thingies,tending,tarts,surreal,specs,specialize,spade,shrew,shaping,selves,schoolwork,roomie,recuperating,rabid,quart,provocative,proudly,pretenses,prenatal,pharmaceuticals,pacing,overworked,originals,nicotine,murderous,mileage,mayonnaise,massages,losin,interrogated,injunction,impartial,homing,heartbreaker,hacks,glands,giver,fraizh,flips,flaunt,englishman,electrocuted,dusting,ducking,drifted,donating,cylon,crutches,crates,cowards,comfortably,chummy,chitchat,childbirth,businesswoman,brood,blatant,bethy,barring,bagged,awakened,asbestos,airplanes,worshipped,winnings,why're,visualize,unprotected,unleash,trays,thicker,therapists,takeoff,streisand,storeroom,stethoscope,stacked,spiteful,sneaks,snapping,slaughtered,slashed,simplest,silverware,shits,secluded,scruples,scrubs,scraps,ruptured,roaring,receptionist,recap,raditch,radiator,pushover,plastered,pharmacist,perverse,perpetrator,ornament,ointment,nineties,napping,nannies,mousse,moors,momentary,misunderstandings,manipulator,malfunction,laced,kivar,kickin,infuriating,impressionable,holdup,hires,hesitated,headphones,hammering,groundwork,grotesque,graces,gauze,gangsters,frivolous,freeing,fours,forwarding,ferrars,faulty,fantasizing,extracurricular,empathy,divorces,detonate,depraved,demeaning,deadlines,dalai,cursing,cufflink,crows,coupons,comforted,claustrophobic,casinos,camped,busboy,bluth,bennetts,baskets,attacker,aplastic,angrier,affectionate,zapped,wormhole,weaken,unrealistic,unravel,unimportant,unforgettable,twain,suspend,superbowl,stutter,stewardess,stepson,standin,spandex,souvenirs,sociopath,skeletons,shivering,sexier,selfishness,scrapbook,ritalin,ribbons,reunite,remarry,relaxation,rattling,rapist,psychosis,prepping,poses,pleasing,pisses,piling,persecuted,padded,operatives,negotiator,natty,menopause,mennihan,martimmys,loyalties,laynie,lando,justifies,intimately,inexperienced,impotent,immortality,horrors,hooky,hinges,heartbreaking,handcuffed,gypsies,guacamole,grovel,graziella,goggles,gestapo,fussy,ferragamo,feeble,eyesight,explosions,experimenting,enchanting,doubtful,dizziness,dismantle,detectors,deserving,defective,dangling,dancin,crumble,creamed,cramping,conceal,clockwork,chrissakes,chrissake,chopping,cabinets,brooding,bonfire,blurt,bloated,blackmailer,beforehand,bathed,bathe,barcode,banish,badges,babble,await,attentive,aroused,antibodies,animosity,ya'll,wrinkled,wonderland,willed,whisk,waltzing,waitressing,vigilant,upbringing,unselfish,uncles,trendy,trajectory,striped,stamina,stalled,staking,stacks,spoils,snuff,snooty,snide,shrinking,senora,secretaries,scoundrel,saline,salads,rundown,riddles,relapse,recommending,raspberry,plight,pecan,pantry,overslept,ornaments,niner,negligent,negligence,nailing,mucho,mouthed,monstrous,malpractice,lowly,loitering,logged,lingering,lettin,lattes,kamal,juror,jillefsky,jacked,irritate,intrusion,insatiable,infect,impromptu,icing,hmmmm,hefty,gasket,frightens,flapping,firstborn,faucet,estranged,envious,dopey,doesn,disposition,disposable,disappointments,dipped,dignified,deceit,dealership,deadbeat,curses,coven,counselors,concierge,clutches,casbah,callous,cahoots,brotherly,britches,brides,bethie,beige,autographed,attendants,attaboy,astonishing,appreciative,antibiotic,aneurysm,afterlife,affidavit,zoning,whats,whaddaya,vasectomy,unsuspecting,toula,topanga,tonio,toasted,tiring,terrorized,tenderness,tailing,sweats,suffocated,sucky,subconsciously,starvin,sprouts,spineless,sorrows,snowstorm,smirk,slicery,sledding,slander,simmer,signora,sigmund,seventies,sedate,scented,sandals,rollers,retraction,resigning,recuperate,receptive,racketeering,queasy,provoking,priors,prerogative,premed,pinched,pendant,outsiders,orbing,opportunist,olanov,neurologist,nanobot,mommies,molested,misread,mannered,laundromat,intercom,inspect,insanely,infatuation,indulgent,indiscretion,inconsiderate,hurrah,howling,herpes,hasta,harassed,hanukkah,groveling,groosalug,gander,galactica,futile,fridays,flier,fixes,exploiting,exorcism,evasive,endorse,emptied,dreary,dreamy,downloaded,dodged,doctored,disobeyed,disneyland,disable,dehydrated,contemplating,coconuts,cockroaches,clogged,chilling,chaperon,cameraman,bulbs,bucklands,bribing,brava,bracelets,bowels,bluepoint,appetizers,appendix,antics,anointed,analogy,almonds,yammering,winch,weirdness,wangler,vibrations,vendor,unmarked,unannounced,twerp,trespass,travesty,transfusion,trainee,towelie,tiresome,straightening,staggering,sonar,socializing,sinus,sinners,shambles,serene,scraped,scones,scepter,sarris,saberhagen,ridiculously,ridicule,rents,reconciled,radios,publicist,pubes,prune,prude,precrime,postponing,pluck,perish,peppermint,peeled,overdo,nutshell,nostalgic,mulan,mouthing,mistook,meddle,maybourne,martimmy,lobotomy,livelihood,lippman,likeness,kindest,kaffee,jocks,jerked,jeopardizing,jazzed,insured,inquisition,inhale,ingenious,holier,helmets,heirloom,heinous,haste,harmsway,hardship,hanky,gutters,gruesome,groping,goofing,godson,glare,finesse,figuratively,ferrie,endangerment,dreading,dozed,dorky,dmitri,divert,discredit,dialing,cufflinks,crutch,craps,corrupted,cocoon,cleavage,cannery,bystander,brushes,bruising,bribery,brainstorm,bolted,binge,ballistics,astute,arroway,adventurous,adoptive,addicts,addictive,yadda,whitelighters,wematanye,weeds,wedlock,wallets,vulnerability,vroom,vents,upped,unsettling,unharmed,trippin,trifle,tracing,tormenting,thats,syphilis,subtext,stickin,spices,sores,smacked,slumming,sinks,signore,shitting,shameful,shacked,septic,seedy,righteousness,relish,rectify,ravishing,quickest,phoebs,perverted,peeing,pedicure,pastrami,passionately,ozone,outnumbered,oregano,offender,nukes,nosed,nighty,nifty,mounties,motivate,moons,misinterpreted,mercenary,mentality,marsellus,lupus,lumbar,lovesick,lobsters,leaky,laundering,latch,jafar,instinctively,inspires,indoors,incarcerated,hundredth,handkerchief,gynecologist,guittierez,groundhog,grinning,goodbyes,geese,fullest,eyelashes,eyelash,enquirer,endlessly,elusive,disarm,detest,deluding,dangle,cotillion,corsage,conjugal,confessional,cones,commandment,coded,coals,chuckle,christmastime,cheeseburgers,chardonnay,celery,campfire,calming,burritos,brundle,broflovski,brighten,borderline,blinked,bling,beauties,bauers,battered,articulate,alienated,ahhhhh,agamemnon,accountants,y'see,wrongful,wrapper,workaholic,winnebago,whispered,warts,vacate,unworthy,unanswered,tonane,tolerated,throwin,throbbing,thrills,thorns,thereof,there've,tarot,sunscreen,stretcher,stereotype,soggy,sobbing,sizable,sightings,shucks,shrapnel,sever,senile,seaboard,scorned,saver,rebellious,rained,putty,prenup,pores,pinching,pertinent,peeping,paints,ovulating,opposites,occult,nutcracker,nutcase,newsstand,newfound,mocked,midterms,marshmallow,marbury,maclaren,leans,krudski,knowingly,keycard,junkies,juilliard,jolinar,irritable,invaluable,inuit,intoxicating,instruct,insolent,inexcusable,incubator,illustrious,hunsecker,houseguest,homosexuals,homeroom,hernia,harming,handgun,hallways,hallucination,gunshots,groupies,groggy,goiter,gingerbread,giggling,frigging,fledged,fedex,fairies,exchanging,exaggeration,esteemed,enlist,drags,dispense,disloyal,disconnect,desks,dentists,delacroix,degenerate,daydreaming,cushions,cuddly,corroborate,complexion,compensated,cobbler,closeness,chilled,checkmate,channing,carousel,calms,bylaws,benefactor,ballgame,baiting,backstabbing,artifact,airspace,adversary,actin,accuses,accelerant,abundantly,abstinence,zissou,zandt,yapping,witchy,willows,whadaya,vilandra,veiled,undress,undivided,underestimating,ultimatums,twirl,truckload,tremble,toasting,tingling,tents,tempered,sulking,stunk,sponges,spills,softly,snipers,scourge,rooftop,riana,revolting,revisit,refreshments,redecorating,recapture,raysy,pretense,prejudiced,precogs,pouting,poofs,pimple,piles,pediatrician,padre,packets,paces,orvelle,oblivious,objectivity,nighttime,nervosa,mexicans,meurice,melts,matchmaker,maeby,lugosi,lipnik,leprechaun,kissy,kafka,introductions,intestines,inspirational,insightful,inseparable,injections,inadvertently,hussy,huckabees,hittin,hemorrhaging,headin,haystack,hallowed,grudges,granilith,grandkids,grading,gracefully,godsend,gobbles,fragrance,fliers,finchley,farts,eyewitnesses,expendable,existential,dorms,delaying,degrading,deduction,darlings,danes,cylons,counsellor,contraire,consciously,conjuring,congratulating,cokes,buffay,brooch,bitching,bistro,bijou,bewitched,benevolent,bends,bearings,barren,aptitude,amish,amazes,abomination,worldly,whispers,whadda,wayward,wailing,vanishing,upscale,untouchable,unspoken,uncontrollable,unavoidable,unattended,trite,transvestite,toupee,timid,timers,terrorizing,swana,stumped,strolling,storybook,storming,stomachs,stoked,stationery,springtime,spontaneity,spits,spins,soaps,sentiments,scramble,scone,rooftops,retract,reflexes,rawdon,ragged,quirky,quantico,psychologically,prodigal,pounce,potty,pleasantries,pints,petting,perceive,onstage,notwithstanding,nibble,newmans,neutralize,mutilated,millionaires,mayflower,masquerade,mangy,macreedy,lunatics,lovable,locating,limping,lasagna,kwang,keepers,juvie,jaded,ironing,intuitive,intensely,insure,incantation,hysteria,hypnotize,humping,happenin,griet,grasping,glorified,ganging,g'night,focker,flunking,flimsy,flaunting,fixated,fitzwallace,fainting,eyebrow,exonerated,ether,electrician,egotistical,earthly,dusted,dignify,detonation,debrief,dazzling,dan'l,damnedest,daisies,crushes,crucify,contraband,confronting,collapsing,cocked,clicks,cliche,circled,chandelier,carburetor,callers,broads,breathes,bloodshed,blindsided,blabbing,bialystock,bashing,ballerina,aviva,arteries,anomaly,airstrip,agonizing,adjourn,aaaaa,yearning,wrecker,witnessing,whence,warhead,unsure,unheard,unfreeze,unfold,unbalanced,ugliest,troublemaker,toddler,tiptoe,threesome,thirties,thermostat,swipe,surgically,subtlety,stung,stumbling,stubs,stride,strangling,sprayed,socket,smuggled,showering,shhhhh,sabotaging,rumson,rounding,risotto,repairman,rehearsed,ratty,ragging,radiology,racquetball,racking,quieter,quicksand,prowl,prompt,premeditated,prematurely,prancing,porcupine,plated,pinocchio,peeked,peddle,panting,overweight,overrun,outing,outgrown,obsess,nursed,nodding,negativity,negatives,musketeers,mugger,motorcade,merrily,matured,masquerading,marvellous,maniacs,lovey,louse,linger,lilies,lawful,kudos,knuckle,juices,judgments,itches,intolerable,intermission,inept,incarceration,implication,imaginative,huckleberry,holster,heartburn,gunna,groomed,graciously,fulfillment,fugitives,forsaking,forgives,foreseeable,flavors,flares,fixation,fickle,fantasize,famished,fades,expiration,exclamation,erasing,eiffel,eerie,earful,duped,dulles,dissing,dissect,dispenser,dilated,detergent,desdemona,debriefing,damper,curing,crispina,crackpot,courting,cordial,conflicted,comprehension,commie,cleanup,chiropractor,charmer,chariot,cauldron,catatonic,bullied,buckets,brilliantly,breathed,booths,boardroom,blowout,blindness,blazing,biologically,bibles,biased,beseech,barbaric,balraj,audacity,anticipating,alcoholics,airhead,agendas,admittedly,absolution,youre,yippee,wittlesey,withheld,willful,whammy,weakest,washes,virtuous,videotapes,vials,unplugged,unpacked,unfairly,turbulence,tumbling,tricking,tremendously,traitors,torches,tinga,thyroid,teased,tawdry,taker,sympathies,swiped,sundaes,suave,strut,stepdad,spewing,spasm,socialize,slither,simulator,shutters,shrewd,shocks,semantics,schizophrenic,scans,savages,rya'c,runny,ruckus,royally,roadblocks,rewriting,revoke,repent,redecorate,recovers,recourse,ratched,ramali,racquet,quince,quiche,puppeteer,puking,puffed,problemo,praises,pouch,postcards,pooped,poised,piled,phoney,phobia,patching,parenthood,pardner,oozing,ohhhhh,numbing,nostril,nosey,neatly,nappa,nameless,mortuary,moronic,modesty,midwife,mcclane,matuka,maitre,lumps,lucid,loosened,loins,lawnmower,lamotta,kroehner,jinxy,jessep,jamming,jailhouse,jacking,intruders,inhuman,infatuated,indigestion,implore,implanted,hormonal,hoboken,hillbilly,heartwarming,headway,hatched,hartmans,harping,grapevine,gnome,forties,flyin,flirted,fingernail,exhilarating,enjoyment,embark,dumper,dubious,drell,docking,disillusioned,dishonor,disbarred,dicey,custodial,counterproductive,corned,cords,contemplate,concur,conceivable,cobblepot,chickened,checkout,carpe,cap'n,campers,buyin,bullies,braid,boxed,bouncy,blueberries,blubbering,bloodstream,bigamy,beeped,bearable,autographs,alarming,wretch,wimps,widower,whirlwind,whirl,warms,vandelay,unveiling,undoing,unbecoming,turnaround,touche,togetherness,tickles,ticker,teensy,taunt,sweethearts,stitched,standpoint,staffers,spotless,soothe,smothered,sickening,shouted,shepherds,shawl,seriousness,schooled,schoolboy,s'mores,roped,reminders,raggedy,preemptive,plucked,pheromones,particulars,pardoned,overpriced,overbearing,outrun,ohmigod,nosing,nicked,neanderthal,mosquitoes,mortified,milky,messin,mecha,markinson,marivellas,mannequin,manderley,madder,macready,lookie,locusts,lifetimes,lanna,lakhi,kholi,impersonate,hyperdrive,horrid,hopin,hogging,hearsay,harpy,harboring,hairdo,hafta,grasshopper,gobble,gatehouse,foosball,floozy,fished,firewood,finalize,felons,euphemism,entourage,elitist,elegance,drokken,drier,dredge,dossier,diseased,diarrhea,diagnose,despised,defuse,d'amour,contesting,conserve,conscientious,conjured,collars,clogs,chenille,chatty,chamomile,casing,calculator,brittle,breached,blurted,birthing,bikinis,astounding,assaulting,aroma,appliance,antsy,amnio,alienating,aliases,adolescence,xerox,wrongs,workload,willona,whistling,werewolves,wallaby,unwelcome,unseemly,unplug,undermining,ugliness,tyranny,tuesdays,trumpets,transference,ticks,tangible,tagging,swallowing,superheroes,studs,strep,stowed,stomping,steffy,sprain,spouting,sponsoring,sneezing,smeared,slink,shakin,sewed,seatbelt,scariest,scammed,sanctimonious,roasting,rightly,retinal,rethinking,resented,reruns,remover,racks,purest,progressing,presidente,preeclampsia,postponement,portals,poppa,pliers,pinning,pelvic,pampered,padding,overjoyed,ooooo,one'll,octavius,nonono,nicknames,neurosurgeon,narrows,misled,mislead,mishap,milltown,milking,meticulous,mediocrity,meatballs,machete,lurch,layin,knockin,khruschev,jurors,jumpin,jugular,jeweler,intellectually,inquiries,indulging,indestructible,indebted,imitate,ignores,hyperventilating,hyenas,hurrying,hermano,hellish,heheh,harshly,handout,grunemann,glances,giveaway,getup,gerome,furthest,frosting,frail,forwarded,forceful,flavored,flammable,flaky,fingered,fatherly,ethic,embezzlement,duffel,dotted,distressed,disobey,disappearances,dinky,diminish,diaphragm,deuces,creme,courteous,comforts,coerced,clots,clarification,chunks,chickie,chases,chaperoning,cartons,caper,calves,caged,bustin,bulging,bringin,boomhauer,blowin,blindfolded,biscotti,ballplayer,bagging,auster,assurances,aschen,arraigned,anonymity,alters,albatross,agreeable,adoring,abduct,wolfi,weirded,watchers,washroom,warheads,vincennes,urgency,understandably,uncomplicated,uhhhh,twitching,treadmill,thermos,tenorman,tangle,talkative,swarm,surrendering,summoning,strive,stilts,stickers,squashed,spraying,sparring,soaring,snort,sneezed,slaps,skanky,singin,sidle,shreck,shortness,shorthand,sharper,shamed,sadist,rydell,rusik,roulette,resumes,respiration,recount,reacts,purgatory,princesses,presentable,ponytail,plotted,pinot,pigtails,phillippe,peddling,paroled,orbed,offends,o'hara,moonlit,minefield,metaphors,malignant,mainframe,magicks,maggots,maclaine,loathing,leper,leaps,leaping,lashed,larch,larceny,lapses,ladyship,juncture,jiffy,jakov,invoke,infantile,inadmissible,horoscope,hinting,hideaway,hesitating,heddy,heckles,hairline,gripe,gratifying,governess,goebbels,freddo,foresee,fascination,exemplary,executioner,etcetera,escorts,endearing,eaters,earplugs,draped,disrupting,disagrees,dimes,devastate,detain,depositions,delicacy,darklighter,cynicism,cyanide,cutters,cronus,continuance,conquering,confiding,compartments,combing,cofell,clingy,cleanse,christmases,cheered,cheekbones,buttle,burdened,bruenell,broomstick,brained,bozos,bontecou,bluntman,blazes,blameless,bizarro,bellboy,beaucoup,barkeep,awaken,astray,assailant,appease,aphrodisiac,alleys,yesss,wrecks,woodpecker,wondrous,wimpy,willpower,wheeling,weepy,waxing,waive,videotaped,veritable,untouched,unlisted,unfounded,unforeseen,twinge,triggers,traipsing,toxin,tombstone,thumping,therein,testicles,telephones,tarmac,talby,tackled,swirling,suicides,suckered,subtitles,sturdy,strangler,stockbroker,stitching,steered,standup,squeal,sprinkler,spontaneously,splendor,spiking,spender,snipe,snagged,skimming,siddown,showroom,shovels,shotguns,shoelaces,shitload,shellfish,sharpest,shadowy,seizing,scrounge,scapegoat,sayonara,saddled,rummaging,roomful,renounce,reconsidered,recharge,realistically,radioed,quirks,quadrant,punctual,practising,pours,poolhouse,poltergeist,pocketbook,plainly,picnics,pesto,pawing,passageway,partied,oneself,numero,nostalgia,nitwit,neuro,mixer,meanest,mcbeal,matinee,margate,marce,manipulations,manhunt,manger,magicians,loafers,litvack,lightheaded,lifeguard,lawns,laughingstock,ingested,indignation,inconceivable,imposition,impersonal,imbecile,huddled,housewarming,horizons,homicides,hiccups,hearse,hardened,gushing,gushie,greased,goddamit,freelancer,forging,fondue,flustered,flung,flinch,flicker,fixin,festivus,fertilizer,farted,faggots,exonerate,evict,enormously,encrypted,emdash,embracing,duress,dupres,dowser,doormat,disfigured,disciplined,dibbs,depository,deathbed,dazzled,cuttin,cures,crowding,crepe,crammed,copycat,contradict,confidant,condemning,conceited,commute,comatose,clapping,circumference,chuppah,chore,choksondik,chestnuts,briault,bottomless,bonnet,blokes,berluti,beret,beggars,bankroll,bania,athos,arsenic,apperantly,ahhhhhh,afloat,accents,zipped,zeros,zeroes,zamir,yuppie,youngsters,yorkers,wisest,wipes,wield,whyn't,weirdos,wednesdays,vicksburg,upchuck,untraceable,unsupervised,unpleasantness,unhook,unconscionable,uncalled,trappings,tragedies,townie,thurgood,things'll,thine,tetanus,terrorize,temptations,tanning,tampons,swarming,straitjacket,steroid,startling,starry,squander,speculating,sollozzo,sneaked,slugs,skedaddle,sinker,silky,shortcomings,sellin,seasoned,scrubbed,screwup,scrapes,scarves,sandbox,salesmen,rooming,romances,revere,reproach,reprieve,rearranging,ravine,rationalize,raffle,punchy,psychobabble,provocation,profoundly,prescriptions,preferable,polishing,poached,pledges,pirelli,perverts,oversized,overdressed,outdid,nuptials,nefarious,mouthpiece,motels,mopping,mongrel,missin,metaphorically,mertin,memos,melodrama,melancholy,measles,meaner,mantel,maneuvering,mailroom,luring,listenin,lifeless,licks,levon,legwork,kneecaps,kippur,kiddie,kaput,justifiable,insistent,insidious,innuendo,innit,indecent,imaginable,horseshit,hemorrhoid,hella,healthiest,haywire,hamsters,hairbrush,grouchy,grisly,gratuitous,glutton,glimmer,gibberish,ghastly,gentler,generously,geeky,fuhrer,fronting,foolin,faxes,faceless,extinguisher,expel,etched,endangering,ducked,dodgeball,dives,dislocated,discrepancy,devour,derail,dementia,daycare,cynic,crumbling,cowardice,covet,cornwallis,corkscrew,cookbook,commandments,coincidental,cobwebs,clouded,clogging,clicking,clasp,chopsticks,chefs,chaps,cashing,carat,calmer,brazen,brainwashing,bradys,bowing,boned,bloodsucking,bleachers,bleached,bedpan,bearded,barrenger,bachelors,awwww,assures,assigning,asparagus,apprehend,anecdote,amoral,aggravation,afoot,acquaintances,accommodating,yakking,worshipping,wladek,willya,willies,wigged,whoosh,whisked,watered,warpath,volts,violates,valuables,uphill,unwise,untimely,unsavory,unresponsive,unpunished,unexplained,tubby,trolling,toxicology,tormented,toothache,tingly,timmiihh,thursdays,thoreau,terrifies,temperamental,telegrams,talkie,takers,symbiote,swirl,suffocate,stupider,strapping,steckler,springing,someway,sleepyhead,sledgehammer,slant,slams,showgirl,shoveling,shmoopy,sharkbait,shan't,scrambling,schematics,sandeman,sabbatical,rummy,reykjavik,revert,responsive,rescheduled,requisition,relinquish,rejoice,reckoning,recant,rebadow,reassurance,rattlesnake,ramble,primed,pricey,prance,pothole,pocus,persist,perpetrated,pekar,peeling,pastime,parmesan,pacemaker,overdrive,ominous,observant,nothings,noooooo,nonexistent,nodded,nieces,neglecting,nauseating,mutated,musket,mumbling,mowing,mouthful,mooseport,monologue,mistrust,meetin,masseuse,mantini,mailer,madre,lowlifes,locksmith,livid,liven,limos,liberating,lhasa,leniency,leering,laughable,lashes,lasagne,laceration,korben,katan,kalen,jittery,jammies,irreplaceable,intubate,intolerant,inhaler,inhaled,indifferent,indifference,impound,impolite,humbly,heroics,heigh,guillotine,guesthouse,grounding,grips,gossiping,goatee,gnomes,gellar,frutt,frobisher,freudian,foolishness,flagged,femme,fatso,fatherhood,fantasized,fairest,faintest,eyelids,extravagant,extraterrestrial,extraordinarily,escalator,elevate,drivel,dissed,dismal,disarray,dinnertime,devastation,dermatologist,delicately,defrost,debutante,debacle,damone,dainty,cuvee,culpa,crucified,creeped,crayons,courtship,convene,congresswoman,concocted,compromises,comprende,comma,coleslaw,clothed,clinically,chickenshit,checkin,cesspool,caskets,calzone,brothel,boomerang,bodega,blasphemy,bitsy,bicentennial,berlini,beatin,beards,barbas,barbarians,backpacking,arrhythmia,arousing,arbitrator,antagonize,angling,anesthetic,altercation,aggressor,adversity,acathla,aaahhh,wreaking,workup,wonderin,wither,wielding,what'm,what'cha,waxed,vibrating,veterinarian,venting,vasey,valor,validate,upholstery,untied,unscathed,uninterrupted,unforgiving,undies,uncut,twinkies,tucking,treatable,treasured,tranquility,townspeople,torso,tomei,tipsy,tinsel,tidings,thirtieth,tantrums,tamper,talky,swayed,swapping,suitor,stylist,stirs,standoff,sprinklers,sparkly,snobby,snatcher,smoother,sleepin,shrug,shoebox,sheesh,shackles,setbacks,sedatives,screeching,scorched,scanned,satyr,roadblock,riverbank,ridiculed,resentful,repellent,recreate,reconvene,rebuttal,realmedia,quizzes,questionnaire,punctured,pucker,prolong,professionalism,pleasantly,pigsty,penniless,paychecks,patiently,parading,overactive,ovaries,orderlies,oracles,oiled,offending,nudie,neonatal,neighborly,moops,moonlighting,mobilize,mmmmmm,milkshake,menial,meats,mayan,maxed,mangled,magua,lunacy,luckier,liters,lansbury,kooky,knowin,jeopardized,inkling,inhalation,inflated,infecting,incense,inbound,impractical,impenetrable,idealistic,i'mma,hypocrites,hurtin,humbled,hologram,hokey,hocus,hitchhiking,hemorrhoids,headhunter,hassled,harts,hardworking,haircuts,hacksaw,genitals,gazillion,gammy,gamesphere,fugue,footwear,folly,flashlights,fives,filet,extenuating,estrogen,entails,embezzled,eloquent,egomaniac,ducts,drowsy,drones,doree,donovon,disguises,diggin,deserting,depriving,defying,deductible,decorum,decked,daylights,daybreak,dashboard,damnation,cuddling,crunching,crickets,crazies,councilman,coughed,conundrum,complimented,cohaagen,clutching,clued,clader,cheques,checkpoint,chats,channeling,ceases,carasco,capisce,cantaloupe,cancelling,campsite,burglars,breakfasts,bra'tac,blueprint,bleedin,blabbed,beneficiary,basing,avert,atone,arlyn,approves,apothecary,antiseptic,aleikuum,advisement,zadir,wobbly,withnail,whattaya,whacking,wedged,wanders,vaginal,unimaginable,undeniable,unconditionally,uncharted,unbridled,tweezers,tvmegasite,trumped,triumphant,trimming,treading,tranquilizers,toontown,thunk,suture,suppressing,strays,stonewall,stogie,stepdaughter,stace,squint,spouses,splashed,speakin,sounder,sorrier,sorrel,sombrero,solemnly,softened,snobs,snippy,snare,smoothing,slump,slimeball,slaving,silently,shiller,shakedown,sensations,scrying,scrumptious,screamin,saucy,santoses,roundup,roughed,rosary,robechaux,retrospect,rescind,reprehensible,repel,remodeling,reconsidering,reciprocate,railroaded,psychics,promos,prob'ly,pristine,printout,priestess,prenuptial,precedes,pouty,phoning,peppy,pariah,parched,panes,overloaded,overdoing,nymphs,nother,notebooks,nearing,nearer,monstrosity,milady,mieke,mephesto,medicated,marshals,manilow,mammogram,m'lady,lotsa,loopy,lesion,lenient,learner,laszlo,kross,kinks,jinxed,involuntary,insubordination,ingrate,inflatable,incarnate,inane,hypoglycemia,huntin,humongous,hoodlum,honking,hemorrhage,helpin,hathor,hatching,grotto,grandmama,gorillas,godless,girlish,ghouls,gershwin,frosted,flutter,flagpole,fetching,fatter,faithfully,exert,evasion,escalate,enticing,enchantress,elopement,drills,downtime,downloading,dorks,doorways,divulge,dissociative,disgraceful,disconcerting,deteriorate,destinies,depressive,dented,denim,decruz,decidedly,deactivate,daydreams,curls,culprit,cruelest,crippling,cranberries,corvis,copped,commend,coastguard,cloning,cirque,churning,chock,chivalry,catalogues,cartwheels,carols,canister,buttered,bundt,buljanoff,bubbling,brokers,broaden,brimstone,brainless,bores,badmouthing,autopilot,ascertain,aorta,ampata,allenby,accosted,absolve,aborted,aaagh,aaaaaah,yonder,yellin,wyndham,wrongdoing,woodsboro,wigging,wasteland,warranty,waltzed,walnuts,vividly,veggie,unnecessarily,unloaded,unicorns,understated,unclean,umbrellas,twirling,turpentine,tupperware,triage,treehouse,tidbit,tickled,threes,thousandth,thingie,terminally,teething,tassel,talkies,swoon,switchboard,swerved,suspiciously,subsequentlyne,subscribe,strudel,stroking,strictest,stensland,starin,stannart,squirming,squealing,sorely,softie,snookums,sniveling,smidge,sloth,skulking,simian,sightseeing,siamese,shudder,shoppers,sharpen,shannen,semtex,secondhand,seance,scowl,scorn,safekeeping,russe,rummage,roshman,roomies,roaches,rinds,retrace,retires,resuscitate,rerun,reputations,rekall,refreshment,reenactment,recluse,ravioli,raves,raking,purses,punishable,punchline,puked,prosky,previews,poughkeepsie,poppins,polluted,placenta,pissy,petulant,perseverance,pears,pawns,pastries,partake,panky,palate,overzealous,orchids,obstructing,objectively,obituaries,obedient,nothingness,musty,motherly,mooning,momentous,mistaking,minutemen,milos,microchip,meself,merciless,menelaus,mazel,masturbate,mahogany,lysistrata,lillienfield,likable,liberate,leveled,letdown,larynx,lardass,lainey,lagged,klorel,kidnappings,keyed,karmic,jeebies,irate,invulnerable,intrusive,insemination,inquire,injecting,informative,informants,impure,impasse,imbalance,illiterate,hurled,hunts,hematoma,headstrong,handmade,handiwork,growling,gorky,getcha,gesundheit,gazing,galley,foolishly,fondness,floris,ferocious,feathered,fateful,fancies,fakes,faker,expire,ever'body,essentials,eskimos,enlightening,enchilada,emissary,embolism,elsinore,ecklie,drenched,drazi,doped,dogging,doable,dislikes,dishonesty,disengage,discouraging,derailed,deformed,deflect,defer,deactivated,crips,constellations,congressmen,complimenting,clubbing,clawing,chromium,chimes,chews,cheatin,chaste,cellblock,caving,catered,catacombs,calamari,bucking,brulee,brits,brisk,breezes,bounces,boudoir,binks,better'n,bellied,behrani,behaves,bedding,balmy,badmouth,backers,avenging,aromatherapy,armpit,armoire,anythin,anonymously,anniversaries,aftershave,affliction,adrift,admissible,adieu,acquittal,yucky,yearn,whitter,whirlpool,wendigo,watchdog,wannabes,wakey,vomited,voicemail,valedictorian,uttered,unwed,unrequited,unnoticed,unnerving,unkind,unjust,uniformed,unconfirmed,unadulterated,unaccounted,uglier,turnoff,trampled,tramell,toads,timbuktu,throwback,thimble,tasteless,tarantula,tamale,takeovers,swish,supposing,streaking,stargher,stanzi,stabs,squeamish,splattered,spiritually,spilt,speciality,smacking,skywire,skips,skaara,simpatico,shredding,showin,shortcuts,shite,shielding,shamelessly,serafine,sentimentality,seasick,schemer,scandalous,sainted,riedenschneider,rhyming,revel,retractor,retards,resurrect,remiss,reminiscing,remanded,reiben,regains,refuel,refresher,redoing,redheaded,reassured,rearranged,rapport,qumar,prowling,prejudices,precarious,powwow,pondering,plunger,plunged,pleasantville,playpen,phlegm,perfected,pancreas,paley,ovary,outbursts,oppressed,ooohhh,omoroca,offed,o'toole,nurture,nursemaid,nosebleed,necktie,muttering,munchies,mucking,mogul,mitosis,misdemeanor,miscarried,millionth,migraines,midler,manicurist,mandelbaum,manageable,malfunctioned,magnanimous,loudmouth,longed,lifestyles,liddy,lickety,leprechauns,komako,klute,kennel,justifying,irreversible,inventing,intergalactic,insinuate,inquiring,ingenuity,inconclusive,incessant,improv,impersonation,hyena,humperdinck,hubba,housework,hoffa,hither,hissy,hippy,hijacked,heparin,hellooo,hearth,hassles,hairstyle,hahahaha,hadda,guys'll,gutted,gulls,gritty,grievous,graft,gossamer,gooder,gambled,gadgets,fundamentals,frustrations,frolicking,frock,frilly,foreseen,footloose,fondly,flirtation,flinched,flatten,farthest,exposer,evading,escrow,empathize,embryos,embodiment,ellsberg,ebola,dulcinea,dreamin,drawbacks,doting,doose,doofy,disturbs,disorderly,disgusts,detox,denominator,demeanor,deliriously,decode,debauchery,croissant,cravings,cranked,coworkers,councilor,confuses,confiscate,confines,conduit,compress,combed,clouding,clamps,cinch,chinnery,celebratory,catalogs,carpenters,carnal,canin,bundys,bulldozer,buggers,bueller,brainy,booming,bookstores,bloodbath,bittersweet,bellhop,beeping,beanstalk,beady,baudelaire,bartenders,bargains,averted,armadillo,appreciating,appraised,antlers,aloof,allowances,alleyway,affleck,abject,zilch,youore,xanax,wrenching,wouldn,witted,wicca,whorehouse,whooo,whips,vouchers,victimized,vicodin,untested,unsolicited,unfocused,unfettered,unfeeling,unexplainable,understaffed,underbelly,tutorial,tryst,trampoline,towering,tirade,thieving,thang,swimmin,swayzak,suspecting,superstitions,stubbornness,streamers,strattman,stonewalling,stiffs,stacking,spout,splice,sonrisa,smarmy,slows,slicing,sisterly,shrill,shined,seeming,sedley,seatbelts,scour,scold,schoolyard,scarring,salieri,rustling,roxbury,rewire,revved,retriever,reputable,remodel,reins,reincarnation,rance,rafters,rackets,quail,pumbaa,proclaim,probing,privates,pried,prewedding,premeditation,posturing,posterity,pleasurable,pizzeria,pimps,penmanship,penchant,pelvis,overturn,overstepped,overcoat,ovens,outsmart,outed,ooohh,oncologist,omission,offhand,odour,nyazian,notarized,nobody'll,nightie,navel,nabbed,mystique,mover,mortician,morose,moratorium,mockingbird,mobsters,mingling,methinks,messengered,merde,masochist,martouf,martians,marinara,manray,majorly,magnifying,mackerel,lurid,lugging,lonnegan,loathsome,llantano,liberace,leprosy,latinos,lanterns,lamest,laferette,kraut,intestine,innocencia,inhibitions,ineffectual,indisposed,incurable,inconvenienced,inanimate,improbable,implode,hydrant,hustling,hustled,huevos,how'm,hooey,hoods,honcho,hinge,hijack,heimlich,hamunaptra,haladki,haiku,haggle,gutsy,grunting,grueling,gribbs,greevy,grandstanding,godparents,glows,glistening,gimmick,gaping,fraiser,formalities,foreigner,folders,foggy,fitty,fiends,fe'nos,favours,eyeing,extort,expedite,escalating,epinephrine,entitles,entice,eminence,eights,earthlings,eagerly,dunville,dugout,doublemeat,doling,dispensing,dispatcher,discoloration,diners,diddly,dictates,diazepam,derogatory,delights,defies,decoder,dealio,danson,cutthroat,crumbles,croissants,crematorium,craftsmanship,could'a,cordless,cools,conked,confine,concealing,complicates,communique,cockamamie,coasters,clobbered,clipping,clipboard,clemenza,cleanser,circumcision,chanukah,certainaly,cellmate,cancels,cadmium,buzzed,bumstead,bucko,browsing,broth,braver,boggling,bobbing,blurred,birkhead,benet,belvedere,bellies,begrudge,beckworth,banky,baldness,baggy,babysitters,aversion,astonished,assorted,appetites,angina,amiss,ambulances,alibis,airway,admires,adhesive,yoyou,xxxxxx,wreaked,wracking,woooo,wooing,wised,wilshire,wedgie,waging,violets,vincey,uplifting,untrustworthy,unmitigated,uneventful,undressing,underprivileged,unburden,umbilical,tweaking,turquoise,treachery,tosses,torching,toothpick,toasts,thickens,tereza,tenacious,teldar,taint,swill,sweatin,subtly,subdural,streep,stopwatch,stockholder,stillwater,stalkers,squished,squeegee,splinters,spliced,splat,spied,spackle,sophistication,snapshots,smite,sluggish,slithered,skeeters,sidewalks,sickly,shrugs,shrubbery,shrieking,shitless,settin,sentinels,selfishly,scarcely,sangria,sanctum,sahjhan,rustle,roving,rousing,rosomorf,riddled,responsibly,renoir,remoray,remedial,refundable,redirect,recheck,ravenwood,rationalizing,ramus,ramelle,quivering,pyjamas,psychos,provocations,prouder,protestors,prodded,proctologist,primordial,pricks,prickly,precedents,pentangeli,pathetically,parka,parakeet,panicky,overthruster,outsmarted,orthopedic,oncoming,offing,nutritious,nuthouse,nourishment,nibbling,newlywed,narcissist,mutilation,mundane,mummies,mumble,mowed,morvern,mortem,mopes,molasses,misplace,miscommunication,miney,midlife,menacing,memorizing,massaging,masking,magnets,luxuries,lounging,lothario,liposuction,lidocaine,libbets,levitate,leeway,launcelot,larek,lackeys,kumbaya,kryptonite,knapsack,keyhole,katarangura,juiced,jakey,ironclad,invoice,intertwined,interlude,interferes,injure,infernal,indeedy,incur,incorrigible,incantations,impediment,igloo,hysterectomy,hounded,hollering,hindsight,heebie,havesham,hasenfuss,hankering,hangers,hakuna,gutless,gusto,grubbing,grrrr,grazed,gratification,grandeur,gorak,godammit,gnawing,glanced,frostbite,frees,frazzled,fraulein,fraternizing,fortuneteller,formaldehyde,followup,foggiest,flunky,flickering,firecrackers,figger,fetuses,fates,eyeliner,extremities,extradited,expires,exceedingly,evaporate,erupt,epileptic,entrails,emporium,egregious,eggshells,easing,duwayne,droll,dreyfuss,dovey,doubly,doozy,donkeys,donde,distrust,distressing,disintegrate,discreetly,decapitated,dealin,deader,dashed,darkroom,dares,daddies,dabble,cushy,cupcakes,cuffed,croupier,croak,crapped,coursing,coolers,contaminate,consummated,construed,condos,concoction,compulsion,commish,coercion,clemency,clairvoyant,circulate,chesterton,checkered,charlatan,chaperones,categorically,cataracts,carano,capsules,capitalize,burdon,bullshitting,brewed,breathless,breasted,brainstorming,bossing,borealis,bonsoir,bobka,boast,blimp,bleep,bleeder,blackouts,bisque,billboards,beatings,bayberry,bashed,bamboozled,balding,baklava,baffled,backfires,babak,awkwardness,attest,attachments,apologizes,anyhoo,antiquated,alcante,advisable,aahhh,aaahh,zatarc,yearbooks,wuddya,wringing,womanhood,witless,winging,whatsa,wetting,waterproof,wastin,vogelman,vocation,vindicated,vigilance,vicariously,venza,vacuuming,utensils,uplink,unveil,unloved,unloading,uninhibited,unattached,tweaked,turnips,trinkets,toughen,toting,topside,terrors,terrify,technologically,tarnish,tagliati,szpilman,surly,supple,summation,suckin,stepmom,squeaking,splashmore,souffle,solitaire,solicitation,solarium,smokers,slugged,slobbering,skylight,skimpy,sinuses,silenced,sideburns,shrinkage,shoddy,shhhhhh,shelled,shareef,shangri,seuss,serenade,scuffle,scoff,scanners,sauerkraut,sardines,sarcophagus,salvy,rusted,russells,rowboat,rolfsky,ringside,respectability,reparations,renegotiate,reminisce,reimburse,regimen,raincoat,quibble,puzzled,purposefully,pubic,proofing,prescribing,prelim,poisons,poaching,personalized,personable,peroxide,pentonville,payphone,payoffs,paleontology,overflowing,oompa,oddest,objecting,o'hare,o'daniel,notches,nobody'd,nightstand,neutralized,nervousness,nerdy,needlessly,naquadah,nappy,nantucket,nambla,mountaineer,motherfuckin,morrie,monopolizing,mohel,mistreated,misreading,misbehave,miramax,minivan,milligram,milkshakes,metamorphosis,medics,mattresses,mathesar,matchbook,matata,marys,malucci,magilla,lymphoma,lowers,lordy,linens,lindenmeyer,limelight,leapt,laxative,lather,lapel,lamppost,laguardia,kindling,kegger,kawalsky,juries,jokin,jesminder,interning,innermost,injun,infallible,industrious,indulgence,incinerator,impossibility,impart,illuminate,iguanas,hypnotic,hyped,hospitable,hoses,homemaker,hirschmuller,helpers,headset,guardianship,guapo,grubby,granola,granddaddy,goren,goblet,gluttony,globes,giorno,getter,geritol,gassed,gaggle,foxhole,fouled,foretold,floorboards,flippers,flaked,fireflies,feedings,fashionably,farragut,fallback,facials,exterminate,excites,everything'll,evenin,ethically,ensue,enema,empath,eluded,eloquently,eject,edema,dumpling,droppings,dolled,distasteful,disputing,displeasure,disdain,deterrent,dehydration,defied,decomposing,dawned,dailies,custodian,crusts,crucifix,crowning,crier,crept,craze,crawls,couldn,correcting,corkmaster,copperfield,cooties,contraption,consumes,conspire,consenting,consented,conquers,congeniality,complains,communicator,commendable,collide,coladas,colada,clout,clooney,classifieds,clammy,civility,cirrhosis,chink,catskills,carvers,carpool,carelessness,cardio,carbs,capades,butabi,busmalis,burping,burdens,bunks,buncha,bulldozers,browse,brockovich,breakthroughs,bravado,boogety,blossoms,blooming,bloodsucker,blight,betterton,betrayer,belittle,beeps,bawling,barts,bartending,bankbooks,babish,atropine,assertive,armbrust,anyanka,annoyance,anemic,anago,airwaves,aimlessly,aaargh,aaand,yoghurt,writhing,workable,winking,winded,widen,whooping,whiter,whatya,wazoo,voila,virile,vests,vestibule,versed,vanishes,urkel,uproot,unwarranted,unscheduled,unparalleled,undergrad,tweedle,turtleneck,turban,trickery,transponder,toyed,townhouse,thyself,thunderstorm,thinning,thawed,tether,technicalities,tau'ri,tarnished,taffeta,tacked,systolic,swerve,sweepstakes,swabs,suspenders,superwoman,sunsets,succulent,subpoenas,stumper,stosh,stomachache,stewed,steppin,stepatech,stateside,spicoli,sparing,soulless,sonnets,sockets,snatching,smothering,slush,sloman,slashing,sitters,simpleton,sighs,sidra,sickens,shunned,shrunken,showbiz,shopped,shimmering,shagging,semblance,segue,sedation,scuzzlebutt,scumbags,screwin,scoundrels,scarsdale,scabs,saucers,saintly,saddened,runaways,runaround,rheya,resenting,rehashing,rehabilitated,regrettable,refreshed,redial,reconnecting,ravenous,raping,rafting,quandary,pylea,putrid,puffing,psychopathic,prunes,probate,prayin,pomegranate,plummeting,planing,plagues,pinata,pithy,perversion,personals,perched,peeps,peckish,pavarotti,pajama,packin,pacifier,overstepping,okama,obstetrician,nutso,nuance,normalcy,nonnegotiable,nomak,ninny,nines,nicey,newsflash,neutered,nether,negligee,necrosis,navigating,narcissistic,mylie,muses,momento,moisturizer,moderation,misinformed,misconception,minnifield,mikkos,methodical,mebbe,meager,maybes,matchmaking,masry,markovic,malakai,luzhin,lusting,lumberjack,loopholes,loaning,lightening,leotard,launder,lamaze,kubla,kneeling,kibosh,jumpsuit,joliet,jogger,janover,jakovasaurs,irreparable,innocently,inigo,infomercial,inexplicable,indispensable,impregnated,impossibly,imitating,hunches,hummus,houmfort,hothead,hostiles,hooves,hooligans,homos,homie,hisself,heyyy,hesitant,hangout,handsomest,handouts,hairless,gwennie,guzzling,guinevere,grungy,goading,glaring,gavel,gardino,gangrene,fruitful,friendlier,freckle,freakish,forthright,forearm,footnote,flops,fixer,firecracker,finito,figgered,fezzik,fastened,farfetched,fanciful,familiarize,faire,fahrenheit,extravaganza,exploratory,explanatory,everglades,eunuch,estas,escapade,erasers,emptying,embarassing,dweeb,dutiful,dumplings,dries,drafty,dollhouse,dismissing,disgraced,discrepancies,disbelief,disagreeing,digestion,didnt,deviled,deviated,demerol,delectable,decaying,decadent,dears,dateless,d'algout,cultivating,cryto,crumpled,crumbled,cronies,crease,craves,cozying,corduroy,congratulated,confidante,compressions,complicating,compadre,coerce,classier,chums,chumash,chivalrous,chinpoko,charred,chafing,celibacy,carted,carryin,carpeting,carotid,cannibals,candor,butterscotch,busts,busier,bullcrap,buggin,brookside,brodski,brassiere,brainwash,brainiac,botrelle,bonbon,boatload,blimey,blaring,blackness,bipartisan,bimbos,bigamist,biebe,biding,betrayals,bestow,bellerophon,bedpans,bassinet,basking,barzini,barnyard,barfed,backups,audited,asinine,asalaam,arouse,applejack,annoys,anchovies,ampule,alameida,aggravate,adage,accomplices,yokel,y'ever,wringer,witwer,withdrawals,windward,willfully,whorfin,whimsical,whimpering,weddin,weathered,warmest,wanton,volant,visceral,vindication,veggies,urinate,uproar,unwritten,unwrap,unsung,unsubstantiated,unspeakably,unscrupulous,unraveling,unquote,unqualified,unfulfilled,undetectable,underlined,unattainable,unappreciated,ummmm,ulcers,tylenol,tweak,turnin,tuatha,tropez,trellis,toppings,tootin,toodle,tinkering,thrives,thespis,theatrics,thatherton,tempers,tavington,tartar,tampon,swelled,sutures,sustenance,sunflowers,sublet,stubbins,strutting,strewn,stowaway,stoic,sternin,stabilizing,spiraling,spinster,speedometer,speakeasy,soooo,soiled,sneakin,smithereens,smelt,smacks,slaughterhouse,slacks,skids,sketching,skateboards,sizzling,sixes,sirree,simplistic,shouts,shorted,shoelace,sheeit,shards,shackled,sequestered,selmak,seduces,seclusion,seamstress,seabeas,scoops,scooped,scavenger,satch,s'more,rudeness,romancing,rioja,rifkin,rieper,revise,reunions,repugnant,replicating,repaid,renewing,relaxes,rekindle,regrettably,regenerate,reels,reciting,reappear,readin,ratting,rapes,rancher,rammed,rainstorm,railroading,queers,punxsutawney,punishes,pssst,prudy,proudest,protectors,procrastinating,proactive,priss,postmortem,pompoms,poise,pickings,perfectionist,peretti,people'll,pecking,patrolman,paralegal,paragraphs,paparazzi,pankot,pampering,overstep,overpower,outweigh,omnipotent,odious,nuwanda,nurtured,newsroom,neeson,needlepoint,necklaces,neato,muggers,muffler,mousy,mourned,mosey,mopey,mongolians,moldy,misinterpret,minibar,microfilm,mendola,mended,melissande,masturbating,masbath,manipulates,maimed,mailboxes,magnetism,m'lord,m'honey,lymph,lunge,lovelier,lefferts,leezak,ledgers,larraby,laloosh,kundun,kozinski,knockoff,kissin,kiosk,kennedys,kellman,karlo,kaleidoscope,jeffy,jaywalking,instructing,infraction,informer,infarction,impulsively,impressing,impersonated,impeach,idiocy,hyperbole,hurray,humped,huhuh,hsing,hordes,hoodlums,honky,hitchhiker,hideously,heaving,heathcliff,headgear,headboard,hazing,harem,handprint,hairspray,gutiurrez,goosebumps,gondola,glitches,gasping,frolic,freeways,frayed,fortitude,forgetful,forefathers,fonder,foiled,foaming,flossing,flailing,fitzgeralds,firehouse,finders,fiftieth,fellah,fawning,farquaad,faraway,fancied,extremists,exorcist,exhale,ethros,entrust,ennui,energized,encephalitis,embezzling,elster,elixir,electrolytes,duplex,dryers,drexl,dredging,drawback,don'ts,dobisch,divorcee,disrespected,disprove,disobeying,disinfectant,dingy,digress,dieting,dictating,devoured,devise,detonators,desist,deserter,derriere,deron,deceptive,debilitating,deathwok,daffodils,curtsy,cursory,cuppa,cumin,cronkite,cremation,credence,cranking,coverup,courted,countin,counselling,cornball,contentment,consensual,compost,cluett,cleverly,cleansed,cleanliness,chopec,chomp,chins,chime,cheswick,chessler,cheapest,chatted,cauliflower,catharsis,catchin,caress,camcorder,calorie,cackling,bystanders,buttoned,buttering,butted,buries,burgel,buffoon,brogna,bragged,boutros,bogeyman,blurting,blurb,blowup,bloodhound,blissful,birthmark,bigot,bestest,belted,belligerent,beggin,befall,beeswax,beatnik,beaming,barricade,baggoli,badness,awoke,artsy,artful,aroun,armpits,arming,annihilate,anise,angiogram,anaesthetic,amorous,ambiance,alligators,adoration,admittance,adama,abydos,zonked,zhivago,yorkin,wrongfully,writin,wrappers,worrywart,woops,wonderfalls,womanly,wickedness,whoopie,wholeheartedly,whimper,which'll,wheelchairs,what'ya,warranted,wallop,wading,wacked,virginal,vermouth,vermeil,verger,ventriss,veneer,vampira,utero,ushers,urgently,untoward,unshakable,unsettled,unruly,unlocks,ungodly,undue,uncooperative,uncontrollably,unbeatable,twitchy,tumbler,truest,triumphs,triplicate,tribbey,tortures,tongaree,tightening,thorazine,theres,testifies,teenaged,tearful,taxing,taldor,syllabus,swoops,swingin,suspending,sunburn,stuttering,stupor,strides,strategize,strangulation,stooped,stipulation,stingy,stapled,squeaks,squawking,spoilsport,splicing,spiel,spencers,spasms,spaniard,softener,sodding,soapbox,smoldering,smithbauer,skittish,sifting,sickest,sicilians,shuffling,shrivel,segretti,seeping,securely,scurrying,scrunch,scrote,screwups,schenkman,sawing,savin,satine,sapiens,salvaging,salmonella,sacrilege,rumpus,ruffle,roughing,rotted,rondall,ridding,rickshaw,rialto,rhinestone,restrooms,reroute,requisite,repress,rednecks,redeeming,rayed,ravell,raked,raincheck,raffi,racked,pushin,profess,prodding,procure,presuming,preppy,prednisone,potted,posttraumatic,poorhouse,podiatrist,plowed,pledging,playroom,plait,placate,pinback,picketing,photographing,pharoah,petrak,petal,persecuting,perchance,pellets,peeved,peerless,payable,pauses,pathologist,pagliacci,overwrought,overreaction,overqualified,overheated,outcasts,otherworldly,opinionated,oodles,oftentimes,occured,obstinate,nutritionist,numbness,nubile,nooooooo,nobodies,nepotism,neanderthals,mushu,mucus,mothering,mothballs,monogrammed,molesting,misspoke,misspelled,misconstrued,miscalculated,minimums,mince,mildew,mighta,middleman,mementos,mellowed,mayol,mauled,massaged,marmalade,mardi,makings,lundegaard,lovingly,loudest,lotto,loosing,loompa,looming,longs,loathes,littlest,littering,lifelike,legalities,laundered,lapdog,lacerations,kopalski,knobs,knitted,kittridge,kidnaps,kerosene,karras,jungles,jockeys,iranoff,invoices,invigorating,insolence,insincere,insectopia,inhumane,inhaling,ingrates,infestation,individuality,indeterminate,incomprehensible,inadequacy,impropriety,importer,imaginations,illuminating,ignite,hysterics,hypodermic,hyperventilate,hyperactive,humoring,honeymooning,honed,hoist,hoarding,hitching,hiker,hightail,hemoglobin,hell'd,heinie,growin,grasped,grandparent,granddaughters,gouged,goblins,gleam,glades,gigantor,get'em,geriatric,gatekeeper,gargoyles,gardenias,garcon,garbo,gallows,gabbing,futon,fulla,frightful,freshener,fortuitous,forceps,fogged,fodder,foamy,flogging,flaun,flared,fireplaces,feverish,favell,fattest,fattening,fallow,extraordinaire,evacuating,errant,envied,enchant,enamored,egocentric,dussander,dunwitty,dullest,dropout,dredged,dorsia,doornail,donot,dongs,dogged,dodgy,ditty,dishonorable,discriminating,discontinue,dings,dilly,dictation,dialysis,delly,delightfully,daryll,dandruff,cruddy,croquet,cringe,crimp,credo,crackling,courtside,counteroffer,counterfeiting,corrupting,copping,conveyor,contusions,contusion,conspirator,consoling,connoisseur,confetti,composure,compel,colic,coddle,cocksuckers,coattails,cloned,claustrophobia,clamoring,churn,chugga,chirping,chasin,chapped,chalkboard,centimeter,caymans,catheter,casings,caprica,capelli,cannolis,cannoli,camogli,camembert,butchers,butchered,busboys,bureaucrats,buckled,bubbe,brownstone,bravely,brackley,bouquets,botox,boozing,boosters,bodhi,blunders,blunder,blockage,biocyte,betrays,bested,beryllium,beheading,beggar,begbie,beamed,bastille,barstool,barricades,barbecues,barbecued,bandwagon,backfiring,bacarra,avenged,autopsies,aunties,associating,artichoke,arrowhead,appendage,apostrophe,antacid,ansel,annul,amuses,amped,amicable,amberg,alluring,adversaries,admirers,adlai,acupuncture,abnormality,aaaahhhh,zooming,zippity,zipping,zeroed,yuletide,yoyodyne,yengeese,yeahhh,wrinkly,wracked,withered,winks,windmills,whopping,wendle,weigart,waterworks,waterbed,watchful,wantin,wagging,waaah,vying,ventricle,varnish,vacuumed,unreachable,unprovoked,unmistakable,unfriendly,unfolding,underpaid,uncuff,unappealing,unabomber,typhoid,tuxedos,tushie,turds,tumnus,troubadour,trinium,treaters,treads,transpired,transgression,tought,thready,thins,thinners,techs,teary,tattaglia,tassels,tarzana,tanking,tablecloths,synchronize,symptomatic,sycophant,swimmingly,sweatshop,surfboard,superpowers,sunroom,sunblock,sugarplum,stupidly,strumpet,strapless,stooping,stools,stealthy,stalks,stairmaster,staffer,sshhh,squatting,squatters,spectacularly,sorbet,socked,sociable,snubbed,snorting,sniffles,snazzy,snakebite,smuggler,smorgasbord,smooching,slurping,slouch,slingshot,slaved,skimmed,sisterhood,silliest,sidarthur,sheraton,shebang,sharpening,shanghaied,shakers,sendoff,scurvy,scoliosis,scaredy,scagnetti,sawchuk,saugus,sasquatch,sandbag,saltines,s'pose,roston,rostle,riveting,ristle,rifling,revulsion,reverently,retrograde,restful,resents,reptilian,reorganize,renovating,reiterate,reinvent,reinmar,reibers,reechard,recuse,reconciling,recognizance,reclaiming,recitation,recieved,rebate,reacquainted,rascals,railly,quintuplets,quahog,pygmies,puzzling,punctuality,prosthetic,proms,probie,preys,preserver,preppie,poachers,plummet,plumbers,plannin,pitying,pitfalls,piqued,pinecrest,pinches,pillage,pigheaded,physique,pessimistic,persecute,perjure,percentile,pentothal,pensky,penises,peini,pazzi,pastels,parlour,paperweight,pamper,pained,overwhelm,overalls,outrank,outpouring,outhouse,outage,ouija,obstructed,obsessions,obeying,obese,o'riley,o'higgins,nosebleeds,norad,noooooooo,nononono,nonchalant,nippy,neurosis,nekhorvich,necronomicon,naquada,n'est,mystik,mystified,mumps,muddle,mothership,moped,monumentally,monogamous,mondesi,misogynistic,misinterpreting,mindlock,mending,megaphone,meeny,medicating,meanie,masseur,markstrom,marklars,margueritas,manifesting,maharajah,lukewarm,loveliest,loran,lizardo,liquored,lipped,lingers,limey,lemkin,leisurely,lathe,latched,lapping,ladle,krevlorneswath,kosygin,khakis,kenaru,keats,kaitlan,julliard,jollies,jaundice,jargon,jackals,invisibility,insipid,inflamed,inferiority,inexperience,incinerated,incinerate,incendiary,incan,inbred,implicating,impersonator,hunks,horsing,hooded,hippopotamus,hiked,hetson,hetero,hessian,henslowe,hendler,hellstrom,headstone,hayloft,harbucks,handguns,hallucinate,haldol,haggling,gynaecologist,gulag,guilder,guaranteeing,groundskeeper,grindstone,grimoir,grievance,griddle,gribbit,greystone,graceland,gooders,goeth,gentlemanly,gelatin,gawking,ganged,fukes,fromby,frenchmen,foursome,forsley,forbids,footwork,foothold,floater,flinging,flicking,fittest,fistfight,fireballs,fillings,fiddling,fennyman,felonious,felonies,feces,favoritism,fatten,fanatics,faceman,excusing,excepted,entwined,entree,ensconced,eladio,ehrlichman,easterland,dueling,dribbling,drape,downtrodden,doused,dosed,dorleen,dokie,distort,displeased,disown,dismount,disinherited,disarmed,disapproves,diperna,dined,diligent,dicaprio,depress,decoded,debatable,dealey,darsh,damsels,damning,dad'll,d'oeuvre,curlers,curie,cubed,crikey,crepes,countrymen,cornfield,coppers,copilot,copier,cooing,conspiracies,consigliere,condoning,commoner,commies,combust,comas,colds,clawed,clamped,choosy,chomping,chimps,chigorin,chianti,cheep,checkups,cheaters,celibate,cautiously,cautionary,castell,carpentry,caroling,carjacking,caritas,caregiver,cardiology,candlesticks,canasta,cain't,burro,burnin,bunking,bumming,bullwinkle,brummel,brooms,brews,breathin,braslow,bracing,botulism,boorish,bloodless,blayne,blatantly,blankie,bedbugs,becuase,barmaid,bared,baracus,banal,bakes,backpacks,attentions,atrocious,ativan,athame,asunder,astound,assuring,aspirins,asphyxiation,ashtrays,aryans,arnon,apprehension,applauding,anvil,antiquing,antidepressants,annoyingly,amputate,altruistic,alotta,alerting,afterthought,affront,affirm,actuality,abysmal,absentee,yeller,yakushova,wuzzy,wriggle,worrier,woogyman,womanizer,windpipe,windbag,willin,whisking,whimsy,wendall,weeny,weensy,weasels,watery,watcha,wasteful,waski,washcloth,waaay,vouched,viznick,ventriloquist,vendettas,veils,vayhue,vamanos,vadimus,upstage,uppity,unsaid,unlocking,unintentionally,undetected,undecided,uncaring,unbearably,tween,tryout,trotting,trini,trimmings,trickier,treatin,treadstone,trashcan,transcendent,tramps,townsfolk,torturous,torrid,toothpicks,tolerable,tireless,tiptoeing,timmay,tillinghouse,tidying,tibia,thumbing,thrusters,thrashing,these'll,thatos,testicular,teriyaki,tenors,tenacity,tellers,telemetry,tarragon,switchblade,swicker,swells,sweatshirts,swatches,surging,supremely,sump'n,succumb,subsidize,stumbles,stuffs,stoppin,stipulate,stenographer,steamroll,stasis,stagger,squandered,splint,splendidly,splashy,splashing,specter,sorcerers,somewheres,somber,snuggled,snowmobile,sniffed,snags,smugglers,smudged,smirking,smearing,slings,sleet,sleepovers,sleek,slackers,siree,siphoning,singed,sincerest,sickened,shuffled,shriveled,shorthanded,shittin,shish,shipwrecked,shins,sheetrock,shawshank,shamu,sha're,servitude,sequins,seascape,scrapings,scoured,scorching,sandpaper,saluting,salud,ruffled,roughnecks,rougher,rosslyn,rosses,roost,roomy,romping,revolutionize,reprimanded,refute,refrigerated,reeled,redundancies,rectal,recklessly,receding,reassignment,reapers,readout,ration,raring,ramblings,raccoons,quarantined,purging,punters,psychically,premarital,pregnancies,predisposed,precautionary,pollute,podunk,plums,plaything,pixilated,pitting,piranhas,pieced,piddles,pickled,photogenic,phosphorous,pffft,pestilence,pessimist,perspiration,perps,penticoff,passageways,pardons,panics,pancamo,paleontologist,overwhelms,overstating,overpaid,overdid,outlive,orthodontist,orgies,oreos,ordover,ordinates,ooooooh,oooohhh,omelettes,officiate,obtuse,obits,nymph,novocaine,noooooooooo,nipping,nilly,nightstick,negate,neatness,natured,narcotic,narcissism,namun,nakatomi,murky,muchacho,mouthwash,motzah,morsel,morph,morlocks,mooch,moloch,molest,mohra,modus,modicum,mockolate,misdemeanors,miscalculation,middies,meringue,mercilessly,meditating,mayakovsky,maximillian,marlee,markovski,maniacal,maneuvered,magnificence,maddening,lutze,lunged,lovelies,lorry,loosening,lookee,littered,lilac,lightened,laces,kurzon,kurtzweil,kind've,kimono,kenji,kembu,keanu,kazuo,jonesing,jilted,jiggling,jewelers,jewbilee,jacqnoud,jacksons,ivories,insurmountable,innocuous,innkeeper,infantery,indulged,indescribable,incoherent,impervious,impertinent,imperfections,hunnert,huffy,horsies,horseradish,hollowed,hogwash,hockley,hissing,hiromitsu,hidin,hereafter,helpmann,hehehe,haughty,happenings,hankie,handsomely,halliwells,haklar,haise,gunsights,grossly,grope,grocer,grits,gripping,grabby,glorificus,gizzard,gilardi,gibarian,geminon,gasses,garnish,galloping,gairwyn,futterman,futility,fumigated,fruitless,friendless,freon,foregone,forego,floored,flighty,flapjacks,fizzled,ficus,festering,farbman,fabricate,eyghon,extricate,exalted,eventful,esophagus,enterprising,entail,endor,emphatically,embarrasses,electroshock,easel,duffle,drumsticks,dissection,dissected,disposing,disparaging,disorientation,disintegrated,disarming,devoting,dessaline,deprecating,deplorable,delve,degenerative,deduct,decomposed,deathly,dearie,daunting,dankova,cyclotron,cyberspace,cutbacks,culpable,cuddled,crumpets,cruelly,crouching,cranium,cramming,cowering,couric,cordesh,conversational,conclusively,clung,clotting,cleanest,chipping,chimpanzee,chests,cheapen,chainsaws,censure,catapult,caravaggio,carats,captivating,calrissian,butlers,busybody,bussing,bunion,bulimic,budging,brung,browbeat,brokenhearted,brecher,breakdowns,bracebridge,boning,blowhard,blisters,blackboard,bigotry,bialy,bhamra,bended,begat,battering,baste,basquiat,barricaded,barometer,balled,baited,badenweiler,backhand,ascenscion,argumentative,appendicitis,apparition,anxiously,antagonistic,angora,anacott,amniotic,ambience,alonna,aleck,akashic,ageless,abouts,aawwww,aaaaarrrrrrggghhh,aaaaaa,zendi,yuppies,yodel,y'hear,wrangle,wombosi,wittle,withstanding,wisecracks,wiggling,wierd,whittlesley,whipper,whattya,whatsamatter,whatchamacallit,whassup,whad'ya,weakling,warfarin,waponis,wampum,wadn't,vorash,vizzini,virtucon,viridiana,veracity,ventilated,varicose,varcon,vandalized,vamos,vamoose,vaccinated,vacationing,usted,urinal,uppers,unwittingly,unsealed,unplanned,unhinged,unhand,unfathomable,unequivocally,unbreakable,unadvisedly,udall,tynacorp,tuxes,tussle,turati,tunic,tsavo,trussed,troublemakers,trollop,tremors,transsexual,transfusions,toothbrushes,toned,toddlers,tinted,tightened,thundering,thorpey,this'd,thespian,thaddius,tenuous,tenths,tenement,telethon,teleprompter,teaspoon,taunted,tattle,tardiness,taraka,tappy,tapioca,tapeworm,talcum,tacks,swivel,swaying,superpower,summarize,sumbitch,sultry,suburbia,styrofoam,stylings,strolls,strobe,stockpile,stewardesses,sterilized,sterilize,stealin,stakeouts,squawk,squalor,squabble,sprinkled,sportsmanship,spokes,spiritus,sparklers,spareribs,sowing,sororities,sonovabitch,solicit,softy,softness,softening,snuggling,snatchers,snarling,snarky,snacking,smears,slumped,slowest,slithering,sleazebag,slayed,slaughtering,skidded,skated,sivapathasundaram,sissies,silliness,silences,sidecar,sicced,shylock,shtick,shrugged,shriek,shoves,should'a,shortcake,shockingly,shirking,shaves,shatner,sharpener,shapely,shafted,sexless,septum,selflessness,seabea,scuff,screwball,scoping,scooch,scolding,schnitzel,schemed,scalper,santy,sankara,sanest,salesperson,sakulos,safehouse,sabers,runes,rumblings,rumbling,ruijven,ringers,righto,rhinestones,retrieving,reneging,remodelling,relentlessly,regurgitate,refills,reeking,reclusive,recklessness,recanted,ranchers,rafer,quaking,quacks,prophesied,propensity,profusely,problema,prided,prays,postmark,popsicles,poodles,pollyanna,polaroids,pokes,poconos,pocketful,plunging,plugging,pleeease,platters,pitied,pinetti,piercings,phooey,phonies,pestering,periscope,pentagram,pelts,patronized,paramour,paralyze,parachutes,pales,paella,paducci,owatta,overdone,overcrowded,overcompensating,ostracized,ordinate,optometrist,operandi,omens,okayed,oedipal,nuttier,nuptial,nunheim,noxious,nourish,notepad,nitroglycerin,nibblet,neuroses,nanosecond,nabbit,mythic,munchkins,multimillion,mulroney,mucous,muchas,mountaintop,morlin,mongorians,moneybags,mom'll,molto,mixup,misgivings,mindset,michalchuk,mesmerized,merman,mensa,meaty,mbwun,materialize,materialistic,masterminded,marginally,mapuhe,malfunctioning,magnify,macnamara,macinerney,machinations,macadamia,lysol,lurks,lovelorn,lopsided,locator,litback,litany,linea,limousines,limes,lighters,liebkind,levity,levelheaded,letterhead,lesabre,leron,lepers,lefts,leftenant,laziness,layaway,laughlan,lascivious,laryngitis,lapsed,landok,laminated,kurten,kobol,knucklehead,knowed,knotted,kirkeby,kinsa,karnovsky,jolla,jimson,jettison,jeric,jawed,jankis,janitors,jango,jalopy,jailbreak,jackers,jackasses,invalidate,intercepting,intercede,insinuations,infertile,impetuous,impaled,immerse,immaterial,imbeciles,imagines,idyllic,idolized,icebox,i'd've,hypochondriac,hyphen,hurtling,hurried,hunchback,hullo,horsting,hoooo,homeboys,hollandaise,hoity,hijinks,hesitates,herrero,herndorff,helplessly,heeyy,heathen,hearin,headband,harrassment,harpies,halstrom,hahahahaha,hacer,grumbling,grimlocks,grift,greets,grandmothers,grander,grafts,gordievsky,gondorff,godorsky,glscripts,gaudy,gardeners,gainful,fuses,fukienese,frizzy,freshness,freshening,fraught,frantically,foxbooks,fortieth,forked,foibles,flunkies,fleece,flatbed,fisted,firefight,fingerpaint,filibuster,fhloston,fenceline,femur,fatigues,fanucci,fantastically,familiars,falafel,fabulously,eyesore,expedient,ewwww,eviscerated,erogenous,epidural,enchante,embarassed,embarass,embalming,elude,elspeth,electrocute,eigth,eggshell,echinacea,eases,earpiece,earlobe,dumpsters,dumbshit,dumbasses,duloc,duisberg,drummed,drinkers,dressy,dorma,doily,divvy,diverting,dissuade,disrespecting,displace,disorganized,disgustingly,discord,disapproving,diligence,didja,diced,devouring,detach,destructing,desolate,demerits,delude,delirium,degrade,deevak,deemesa,deductions,deduce,debriefed,deadbeats,dateline,darndest,damnable,dalliance,daiquiri,d'agosta,cussing,cryss,cripes,cretins,crackerjack,cower,coveting,couriers,countermission,cotswolds,convertibles,conversationalist,consorting,consoled,consarn,confides,confidentially,commited,commiserate,comme,comforter,comeuppance,combative,comanches,colosseum,colling,coexist,coaxing,cliffside,chutes,chucked,chokes,childlike,childhoods,chickening,chenowith,charmingly,changin,catsup,captioning,capsize,cappucino,capiche,candlewell,cakewalk,cagey,caddie,buxley,bumbling,bulky,buggered,brussel,brunettes,brumby,brotha,bronck,brisket,bridegroom,braided,bovary,bookkeeper,bluster,bloodline,blissfully,blase,billionaires,bicker,berrisford,bereft,berating,berate,bendy,belive,belated,beikoku,beens,bedspread,bawdy,barreling,baptize,banya,balthazar,balmoral,bakshi,bails,badgered,backstreet,awkwardly,auras,attuned,atheists,astaire,assuredly,arrivederci,appetit,appendectomy,apologetic,antihistamine,anesthesiologist,amulets,albie,alarmist,aiight,adstream,admirably,acquaint,abound,abominable,aaaaaaah,zekes,zatunica,wussy,worded,wooed,woodrell,wiretap,windowsill,windjammer,windfall,whisker,whims,whatiya,whadya,weirdly,weenies,waunt,washout,wanto,waning,victimless,verdad,veranda,vandaley,vancomycin,valise,vaguest,upshot,unzip,unwashed,untrained,unstuck,unprincipled,unmentionables,unjustly,unfolds,unemployable,uneducated,unduly,undercut,uncovering,unconsciousness,unconsciously,tyndareus,turncoat,turlock,tulle,tryouts,trouper,triplette,trepkos,tremor,treeger,trapeze,traipse,tradeoff,trach,torin,tommorow,tollan,toity,timpani,thumbprint,thankless,tell'em,telepathy,telemarketing,telekinesis,teevee,teeming,tarred,tambourine,talentless,swooped,switcheroo,swirly,sweatpants,sunstroke,suitors,sugarcoat,subways,subterfuge,subservient,subletting,stunningly,strongbox,striptease,stravanavitch,stradling,stoolie,stodgy,stocky,stifle,stealer,squeezes,squatter,squarely,sprouted,spool,spindly,speedos,soups,soundly,soulmates,somebody'll,soliciting,solenoid,sobering,snowflakes,snowballs,snores,slung,slimming,skulk,skivvies,skewered,skewer,sizing,sistine,sidebar,sickos,shushing,shunt,shugga,shone,shol'va,sharpened,shapeshifter,shadowing,shadoe,selectman,sefelt,seared,scrounging,scribbling,scooping,scintillating,schmoozing,scallops,sapphires,sanitarium,sanded,safes,rudely,roust,rosebush,rosasharn,rondell,roadhouse,riveted,rewrote,revamp,retaliatory,reprimand,replicators,replaceable,remedied,relinquishing,rejoicing,reincarnated,reimbursed,reevaluate,redid,redefine,recreating,reconnected,rebelling,reassign,rearview,rayne,ravings,ratso,rambunctious,radiologist,quiver,quiero,queef,qualms,pyrotechnics,pulsating,psychosomatic,proverb,promiscuous,profanity,prioritize,preying,predisposition,precocious,precludes,prattling,prankster,povich,potting,postpartum,porridge,polluting,plowing,pistachio,pissin,pickpocket,physicals,peruse,pertains,personified,personalize,perjured,perfecting,pepys,pepperdine,pembry,peering,peels,pedophile,patties,passkey,paratrooper,paraphernalia,paralyzing,pandering,paltry,palpable,pagers,pachyderm,overstay,overestimated,overbite,outwit,outgrow,outbid,ooops,oomph,oohhh,oldie,obliterate,objectionable,nygma,notting,noches,nitty,nighters,newsstands,newborns,neurosurgery,nauseated,nastiest,narcolepsy,mutilate,muscled,murmur,mulva,mulling,mukada,muffled,morgues,moonbeams,monogamy,molester,molestation,molars,moans,misprint,mismatched,mirth,mindful,mimosas,millander,mescaline,menstrual,menage,mellowing,medevac,meddlesome,matey,manicures,malevolent,madmen,macaroons,lydell,lycra,lunchroom,lunching,lozenges,looped,litigious,liquidate,linoleum,lingk,limitless,limber,lilacs,ligature,liftoff,lemmiwinks,leggo,learnin,lazarre,lawyered,lactose,knelt,kenosha,kemosabe,jussy,junky,jordy,jimmies,jeriko,jakovasaur,issacs,isabela,irresponsibility,ironed,intoxication,insinuated,inherits,ingest,ingenue,inflexible,inflame,inevitability,inedible,inducement,indignant,indictments,indefensible,incomparable,incommunicado,improvising,impounded,illogical,ignoramus,hydrochloric,hydrate,hungover,humorless,humiliations,hugest,hoverdrone,hovel,hmmph,hitchhike,hibernating,henchman,helloooo,heirlooms,heartsick,headdress,hatches,harebrained,hapless,hanen,handsomer,hallows,habitual,guten,gummy,guiltier,guidebook,gstaad,gruff,griss,grieved,grata,gorignak,goosed,goofed,glowed,glitz,glimpses,glancing,gilmores,gianelli,geraniums,garroway,gangbusters,gamblers,galls,fuddy,frumpy,frowning,frothy,fro'tak,frere,fragrances,forgettin,follicles,flowery,flophouse,floatin,flirts,flings,flatfoot,fingerprinting,fingerprinted,fingering,finald,fillet,fianc,femoral,federales,fawkes,fascinates,farfel,fambly,falsified,fabricating,exterminators,expectant,excusez,excrement,excercises,evian,etins,esophageal,equivalency,equate,equalizer,entrees,enquire,endearment,empathetic,emailed,eggroll,earmuffs,dyslexic,duper,duesouth,drunker,druggie,dreadfully,dramatics,dragline,downplay,downers,dominatrix,doers,docket,docile,diversify,distracts,disloyalty,disinterested,discharging,disagreeable,dirtier,dinghy,dimwitted,dimoxinil,dimmy,diatribe,devising,deviate,detriment,desertion,depressants,depravity,deniability,delinquents,defiled,deepcore,deductive,decimate,deadbolt,dauthuille,dastardly,daiquiris,daggers,dachau,curiouser,curdled,cucamonga,cruller,cruces,crosswalk,crinkle,crescendo,cremate,counseled,couches,cornea,corday,copernicus,contrition,contemptible,constipated,conjoined,confounded,condescend,concoct,conch,compensating,committment,commandeered,comely,coddled,cockfight,cluttered,clunky,clownfish,cloaked,clenched,cleanin,civilised,circumcised,cimmeria,cilantro,chutzpah,chucking,chiseled,chicka,chattering,cervix,carrey,carpal,carnations,cappuccinos,candied,calluses,calisthenics,bushy,burners,budington,buchanans,brimming,braids,boycotting,bouncers,botticelli,botherin,bookkeeping,bogyman,bogged,bloodthirsty,blintzes,blanky,binturong,billable,bigboote,bewildered,betas,bequeath,behoove,befriend,bedpost,bedded,baudelaires,barreled,barboni,barbeque,bangin,baltus,bailout,backstabber,baccarat,awning,augie,arguillo,archway,apricots,apologising,annyong,anchorman,amenable,amazement,allspice,alannis,airfare,airbags,ahhhhhhhhh,ahhhhhhhh,ahhhhhhh,agitator,adrenal,acidosis,achoo,accessorizing,accentuate,abrasions,abductor,aaaahhh,aaaaaaaa,aaaaaaa,zeroing,zelner,zeldy,yevgeny,yeska,yellows,yeesh,yeahh,yamuri,wouldn't've,workmanship,woodsman,winnin,winked,wildness,whoring,whitewash,whiney,when're,wheezer,wheelman,wheelbarrow,westerburg,weeding,watermelons,washboard,waltzes,wafting,voulez,voluptuous,vitone,vigilantes,videotaping,viciously,vices,veruca,vermeer,verifying,vasculitis,valets,upholstered,unwavering,untold,unsympathetic,unromantic,unrecognizable,unpredictability,unmask,unleashing,unintentional,unglued,unequivocal,underrated,underfoot,unchecked,unbutton,unbind,unbiased,unagi,uhhhhh,tugging,triads,trespasses,treehorn,traviata,trappers,transplants,trannie,tramping,tracheotomy,tourniquet,tooty,toothless,tomarrow,toasters,thruster,thoughtfulness,thornwood,tengo,tenfold,telltale,telephoto,telephoned,telemarketer,tearin,tastic,tastefully,tasking,taser,tamed,tallow,taketh,taillight,tadpoles,tachibana,syringes,sweated,swarthy,swagger,surges,supermodels,superhighway,sunup,sun'll,sulfa,sugarless,sufficed,subside,strolled,stringy,strengthens,straightest,straightens,storefront,stopper,stockpiling,stimulant,stiffed,steyne,sternum,stepladder,stepbrother,steers,steelheads,steakhouse,stathis,stankylecartmankennymr,standoffish,stalwart,squirted,spritz,sprig,sprawl,spousal,sphincter,spenders,spearmint,spatter,spangled,southey,soured,sonuvabitch,somethng,snuffed,sniffs,smokescreen,smilin,slobs,sleepwalker,sleds,slays,slayage,skydiving,sketched,skanks,sixed,siphoned,siphon,simpering,sigfried,sidearm,siddons,sickie,shuteye,shuffleboard,shrubberies,shrouded,showmanship,shouldn't've,shoplift,shiatsu,sentries,sentance,sensuality,seething,secretions,searing,scuttlebutt,sculpt,scowling,scouring,scorecard,schoolers,schmucks,scepters,scaly,scalps,scaffolding,sauces,sartorius,santen,salivating,sainthood,saget,saddens,rygalski,rusting,ruination,rueland,rudabaga,rottweiler,roofies,romantics,rollerblading,roldy,roadshow,rickets,rible,rheza,revisiting,retentive,resurface,restores,respite,resounding,resorting,resists,repulse,repressing,repaying,reneged,refunds,rediscover,redecorated,reconstructive,recommitted,recollect,receptacle,reassess,reanimation,realtors,razinin,rationalization,ratatouille,rashum,rasczak,rancheros,rampler,quizzing,quips,quartered,purring,pummeling,puede,proximo,prospectus,pronouncing,prolonging,procreation,proclamations,principled,prides,preoccupation,prego,precog,prattle,pounced,potshots,potpourri,porque,pomegranates,polenta,plying,pluie,plesac,playmates,plantains,pillowcase,piddle,pickers,photocopied,philistine,perpetuate,perpetually,perilous,pawned,pausing,pauper,parter,parlez,parlay,pally,ovulation,overtake,overstate,overpowering,overpowered,overconfident,overbooked,ovaltine,outweighs,outings,ottos,orrin,orifice,orangutan,oopsy,ooooooooh,oooooo,ooohhhh,ocular,obstruct,obscenely,o'dwyer,nutjob,nunur,notifying,nostrand,nonny,nonfat,noblest,nimble,nikes,nicht,newsworthy,nestled,nearsighted,ne'er,nastier,narco,nakedness,muted,mummified,mudda,mozzarella,moxica,motivator,motility,mothafucka,mortmain,mortgaged,mores,mongers,mobbed,mitigating,mistah,misrepresented,mishke,misfortunes,misdirection,mischievous,mineshaft,millaney,microwaves,metzenbaum,mccovey,masterful,masochistic,marliston,marijawana,manya,mantumbi,malarkey,magnifique,madrona,madox,machida,m'hidi,lullabies,loveliness,lotions,looka,lompoc,litterbug,litigator,lithe,liquorice,linds,limericks,lightbulb,lewises,letch,lemec,layover,lavatory,laurels,lateness,laparotomy,laboring,kuato,kroff,krispy,krauts,knuckleheads,kitschy,kippers,kimbrow,keypad,keepsake,kebab,karloff,junket,judgemental,jointed,jezzie,jetting,jeeze,jeeter,jeesus,jeebs,janeane,jails,jackhammer,ixnay,irritates,irritability,irrevocable,irrefutable,irked,invoking,intricacies,interferon,intents,insubordinate,instructive,instinctive,inquisitive,inlay,injuns,inebriated,indignity,indecisive,incisors,incacha,inalienable,impresses,impregnate,impregnable,implosion,idolizes,hypothyroidism,hypoglycemic,huseni,humvee,huddling,honing,hobnobbing,hobnob,histrionics,histamine,hirohito,hippocratic,hindquarters,hikita,hikes,hightailed,hieroglyphics,heretofore,herbalist,hehey,hedriks,heartstrings,headmistress,headlight,hardheaded,happend,handlebars,hagitha,habla,gyroscope,guys'd,guy'd,guttersnipe,grump,growed,grovelling,groan,greenbacks,gravedigger,grating,grasshoppers,grandiose,grandest,grafted,gooood,goood,gooks,godsakes,goaded,glamorama,giveth,gingham,ghostbusters,germane,georgy,gazzo,gazelles,gargle,garbled,galgenstein,gaffe,g'day,fyarl,furnish,furies,fulfills,frowns,frowned,frighteningly,freebies,freakishly,forewarned,foreclose,forearms,fordson,fonics,flushes,flitting,flemmer,flabby,fishbowl,fidgeting,fevers,feigning,faxing,fatigued,fathoms,fatherless,fancier,fanatical,factored,eyelid,eyeglasses,expresso,expletive,expectin,excruciatingly,evidentiary,ever'thing,eurotrash,eubie,estrangement,erlich,epitome,entrap,enclose,emphysema,embers,emasculating,eighths,eardrum,dyslexia,duplicitous,dumpty,dumbledore,dufus,duddy,duchamp,drunkenness,drumlin,drowns,droid,drinky,drifts,drawbridge,dramamine,douggie,douchebag,dostoyevsky,doodling,don'tcha,domineering,doings,dogcatcher,doctoring,ditzy,dissimilar,dissecting,disparage,disliking,disintegrating,dishwalla,dishonored,dishing,disengaged,disavowed,dippy,diorama,dimmed,dilate,digitalis,diggory,dicing,diagnosing,devola,desolation,dennings,denials,deliverance,deliciously,delicacies,degenerates,degas,deflector,defile,deference,decrepit,deciphered,dawdle,dauphine,daresay,dangles,dampen,damndest,cucumbers,cucaracha,cryogenically,croaks,croaked,criticise,crisper,creepiest,creams,crackle,crackin,covertly,counterintelligence,corrosive,cordially,cops'll,convulsions,convoluted,conversing,conga,confrontational,confab,condolence,condiments,complicit,compiegne,commodus,comings,cometh,collusion,collared,cockeyed,clobber,clemonds,clarithromycin,cienega,christmasy,christmassy,chloroform,chippie,chested,cheeco,checklist,chauvinist,chandlers,chambermaid,chakras,cellophane,caveat,cataloguing,cartmanland,carples,carny,carded,caramels,cappy,caped,canvassing,callback,calibrated,calamine,buttermilk,butterfingers,bunsen,bulimia,bukatari,buildin,budged,brobich,bringer,brendell,brawling,bratty,braised,boyish,boundless,botch,boosh,bookies,bonbons,bodes,bobunk,bluntly,blossoming,bloomers,bloodstains,bloodhounds,blech,biter,biometric,bioethics,bijan,bigoted,bicep,bereaved,bellowing,belching,beholden,beached,batmobile,barcodes,barch,barbecuing,bandanna,backwater,backtrack,backdraft,augustino,atrophy,atrocity,atley,atchoo,asthmatic,assoc,armchair,arachnids,aptly,appetizing,antisocial,antagonizing,anorexia,anini,andersons,anagram,amputation,alleluia,airlock,aimless,agonized,agitate,aggravating,aerosol,acing,accomplishing,accidently,abuser,abstain,abnormally,aberration,aaaaahh,zlotys,zesty,zerzura,zapruder,zantopia,yelburton,yeess,y'knowwhati'msayin,wwhat,wussies,wrenched,would'a,worryin,wormser,wooooo,wookiee,wolchek,wishin,wiseguys,windbreaker,wiggy,wieners,wiedersehen,whoopin,whittled,wherefore,wharvey,welts,wellstone,wedges,wavered,watchit,wastebasket,wango,waken,waitressed,wacquiem,vrykolaka,voula,vitally,visualizing,viciousness,vespers,vertes,verily,vegetarians,vater,vaporize,vannacutt,vallens,ussher,urinating,upping,unwitting,untangle,untamed,unsanitary,unraveled,unopened,unisex,uninvolved,uninteresting,unintelligible,unimaginative,undeserving,undermines,undergarments,unconcerned,tyrants,typist,tykes,tybalt,twosome,twits,tutti,turndown,tularemia,tuberculoma,tsimshian,truffaut,truer,truant,trove,triumphed,tripe,trigonometry,trifled,trifecta,tribulations,tremont,tremoille,transcends,trafficker,touchin,tomfoolery,tinkered,tinfoil,tightrope,thousan,thoracotomy,thesaurus,thawing,thatta,tessio,temps,taxidermist,tator,tachycardia,t'akaya,swelco,sweetbreads,swatting,supercollider,sunbathing,summarily,suffocation,sueleen,succinct,subsided,submissive,subjecting,subbing,subatomic,stupendous,stunted,stubble,stubbed,streetwalker,strategizing,straining,straightaway,stoli,stiffer,stickup,stens,steamroller,steadwell,steadfast,stateroom,stans,sshhhh,squishing,squinting,squealed,sprouting,sprimp,spreadsheets,sprawled,spotlights,spooning,spirals,speedboat,spectacles,speakerphone,southglen,souse,soundproof,soothsayer,sommes,somethings,solidify,soars,snorted,snorkeling,snitches,sniping,snifter,sniffin,snickering,sneer,snarl,smila,slinking,slanted,slanderous,slammin,skimp,skilosh,siteid,sirloin,singe,sighing,sidekicks,sicken,showstopper,shoplifter,shimokawa,sherborne,shavadai,sharpshooters,sharking,shagged,shaddup,senorita,sesterces,sensuous,seahaven,scullery,scorcher,schotzie,schnoz,schmooze,schlep,schizo,scents,scalping,scalped,scallop,scalding,sayeth,saybrooke,sawed,savoring,sardine,sandstorm,sandalwood,salutations,sagman,s'okay,rsvp'd,rousted,rootin,romper,romanovs,rollercoaster,rolfie,robinsons,ritzy,ritualistic,ringwald,rhymed,rheingold,rewrites,revoking,reverts,retrofit,retort,retinas,respirations,reprobate,replaying,repaint,renquist,renege,relapsing,rekindled,rejuvenating,rejuvenated,reinstating,recriminations,rechecked,reassemble,rears,reamed,reacquaint,rayanne,ravish,rathole,raspail,rarest,rapists,rants,racketeer,quittin,quitters,quintessential,queremos,quellek,quelle,quasimodo,pyromaniac,puttanesca,puritanical,purer,puree,pungent,pummel,puedo,psychotherapist,prosecutorial,prosciutto,propositioning,procrastination,probationary,primping,preventative,prevails,preservatives,preachy,praetorians,practicality,powders,potus,postop,positives,poser,portolano,portokalos,poolside,poltergeists,pocketed,poach,plummeted,plucking,plimpton,playthings,plastique,plainclothes,pinpointed,pinkus,pinks,pigskin,piffle,pictionary,piccata,photocopy,phobias,perignon,perfumes,pecks,pecked,patently,passable,parasailing,paramus,papier,paintbrush,pacer,paaiint,overtures,overthink,overstayed,overrule,overestimate,overcooked,outlandish,outgrew,outdoorsy,outdo,orchestrate,oppress,opposable,oooohh,oomupwah,okeydokey,okaaay,ohashi,of'em,obscenities,oakie,o'gar,nurection,nostradamus,norther,norcom,nooch,nonsensical,nipped,nimbala,nervously,neckline,nebbleman,narwhal,nametag,n'n't,mycenae,muzak,muumuu,mumbled,mulvehill,muggings,muffet,mouthy,motivates,motaba,moocher,mongi,moley,moisturize,mohair,mocky,mmkay,mistuh,missis,misdeeds,mincemeat,miggs,miffed,methadone,messieur,menopausal,menagerie,mcgillicuddy,mayflowers,matrimonial,matick,masai,marzipan,maplewood,manzelle,mannequins,manhole,manhandle,malfunctions,madwoman,machiavelli,lynley,lynched,lurconis,lujack,lubricant,looove,loons,loofah,lonelyhearts,lollipops,lineswoman,lifers,lexter,lepner,lemony,leggy,leafy,leadeth,lazerus,lazare,lawford,languishing,lagoda,ladman,kundera,krinkle,krendler,kreigel,kowolski,knockdown,knifed,kneed,kneecap,kids'll,kennie,kenmore,keeled,kazootie,katzenmoyer,kasdan,karak,kapowski,kakistos,julyan,jockstrap,jobless,jiggly,jaunt,jarring,jabbering,irrigate,irrevocably,irrationally,ironies,invitro,intimated,intently,intentioned,intelligently,instill,instigator,instep,inopportune,innuendoes,inflate,infects,infamy,indiscretions,indiscreet,indio,indignities,indict,indecision,inconspicuous,inappropriately,impunity,impudent,impotence,implicates,implausible,imperfection,impatience,immutable,immobilize,idealist,iambic,hysterically,hyperspace,hygienist,hydraulics,hydrated,huzzah,husks,hunched,huffed,hubris,hubbub,hovercraft,houngan,hosed,horoscopes,hopelessness,hoodwinked,honorably,honeysuckle,homegirl,holiest,hippity,hildie,hieroglyphs,hexton,herein,heckle,heaping,healthilizer,headfirst,hatsue,harlot,hardwired,halothane,hairstyles,haagen,haaaaa,gutting,gummi,groundless,groaning,gristle,grills,graynamore,grabbin,goodes,goggle,glittering,glint,gleaming,glassy,girth,gimbal,giblets,gellers,geezers,geeze,garshaw,gargantuan,garfunkel,gangway,gandarium,gamut,galoshes,gallivanting,gainfully,gachnar,fusionlips,fusilli,furiously,frugal,fricking,frederika,freckling,frauds,fountainhead,forthwith,forgo,forgettable,foresight,foresaw,fondling,fondled,fondle,folksy,fluttering,fluffing,floundering,flirtatious,flexing,flatterer,flaring,fixating,finchy,figurehead,fiendish,fertilize,ferment,fending,fellahs,feelers,fascinate,fantabulous,falsify,fallopian,faithless,fairer,fainter,failings,facetious,eyepatch,exxon,extraterrestrials,extradite,extracurriculars,extinguish,expunged,expelling,exorbitant,exhilarated,exertion,exerting,excercise,everbody,evaporated,escargot,escapee,erases,epizootics,epithelials,ephrum,entanglements,enslave,engrossed,emphatic,emeralds,ember,emancipated,elevates,ejaculate,effeminate,eccentricities,easygoing,earshot,dunks,dullness,dulli,dulled,drumstick,dropper,driftwood,dregs,dreck,dreamboat,draggin,downsizing,donowitz,dominoes,diversions,distended,dissipate,disraeli,disqualify,disowned,dishwashing,disciplining,discerning,disappoints,dinged,digested,dicking,detonating,despising,depressor,depose,deport,dents,defused,deflecting,decryption,decoys,decoupage,decompress,decibel,decadence,deafening,dawning,dater,darkened,dappy,dallying,dagon,czechoslovakians,cuticles,cuteness,cupboards,culottes,cruisin,crosshairs,cronyn,criminalistics,creatively,creaming,crapping,cranny,cowed,contradicting,constipation,confining,confidences,conceiving,conceivably,concealment,compulsively,complainin,complacent,compels,communing,commode,comming,commensurate,columnists,colonoscopy,colchicine,coddling,clump,clubbed,clowning,cliffhanger,clang,cissy,choosers,choker,chiffon,channeled,chalet,cellmates,cathartic,caseload,carjack,canvass,canisters,candlestick,candlelit,camry,calzones,calitri,caldy,byline,butterball,bustier,burlap,bureaucrat,buffoons,buenas,brookline,bronzed,broiled,broda,briss,brioche,briar,breathable,brays,brassieres,boysenberry,bowline,boooo,boonies,booklets,bookish,boogeyman,boogey,bogas,boardinghouse,bluuch,blundering,bluer,blowed,blotchy,blossomed,bloodwork,bloodied,blithering,blinks,blathering,blasphemous,blacking,birdson,bings,bfmid,bfast,bettin,berkshires,benjamins,benevolence,benched,benatar,bellybutton,belabor,behooves,beddy,beaujolais,beattle,baxworth,baseless,barfing,bannish,bankrolled,banek,ballsy,ballpoint,baffling,badder,badda,bactine,backgammon,baako,aztreonam,authoritah,auctioning,arachtoids,apropos,aprons,apprised,apprehensive,anythng,antivenin,antichrist,anorexic,anoint,anguished,angioplasty,angio,amply,ampicillin,amphetamines,alternator,alcove,alabaster,airlifted,agrabah,affidavits,admonished,admonish,addled,addendum,accuser,accompli,absurdity,absolved,abrusso,abreast,aboot,abductions,abducting,aback,ababwa,aaahhhh,zorin,zinthar,zinfandel,zillions,zephyrs,zatarcs,zacks,youuu,yokels,yardstick,yammer,y'understand,wynette,wrung,wreaths,wowed,wouldn'ta,worming,wormed,workday,woodsy,woodshed,woodchuck,wojadubakowski,withering,witching,wiseass,wiretaps,wining,willoby,wiccaning,whupped,whoopi,whoomp,wholesaler,whiteness,whiner,whatchya,wharves,wenus,weirdoes,weaning,watusi,waponi,waistband,wackos,vouching,votre,vivica,viveca,vivant,vivacious,visor,visitin,visage,vicrum,vetted,ventriloquism,venison,varnsen,vaporized,vapid,vanstock,uuuuh,ushering,urologist,urination,upstart,uprooted,unsubtitled,unspoiled,unseat,unseasonably,unseal,unsatisfying,unnerve,unlikable,unleaded,uninsured,uninspired,unicycle,unhooked,unfunny,unfreezing,unflattering,unfairness,unexpressed,unending,unencumbered,unearth,undiscovered,undisciplined,understan,undershirt,underlings,underline,undercurrent,uncivilized,uncharacteristic,umpteenth,uglies,tuney,trumps,truckasaurus,trubshaw,trouser,tringle,trifling,trickster,trespassers,trespasser,traumas,trattoria,trashes,transgressions,trampling,tp'ed,toxoplasmosis,tounge,tortillas,topsy,topple,topnotch,tonsil,tions,timmuh,timithious,tilney,tighty,tightness,tightens,tidbits,ticketed,thyme,threepio,thoughtfully,thorkel,thommo,thing'll,thefts,that've,thanksgivings,tetherball,testikov,terraforming,tepid,tendonitis,tenboom,telex,teenybopper,tattered,tattaglias,tanneke,tailspin,tablecloth,swooping,swizzle,swiping,swindled,swilling,swerving,sweatshops,swaddling,swackhammer,svetkoff,supossed,superdad,sumptuous,sugary,sugai,subvert,substantiate,submersible,sublimating,subjugation,stymied,strychnine,streetlights,strassmans,stranglehold,strangeness,straddling,straddle,stowaways,stotch,stockbrokers,stifling,stepford,steerage,steena,statuary,starlets,staggeringly,ssshhh,squaw,spurt,spungeon,spritzer,sprightly,sprays,sportswear,spoonful,splittin,splitsville,speedily,specialise,spastic,sparrin,souvlaki,southie,sourpuss,soupy,soundstage,soothes,somebody'd,softest,sociopathic,socialized,snyders,snowmobiles,snowballed,snatches,smugness,smoothest,smashes,sloshed,sleight,skyrocket,skied,skewed,sixpence,sipowicz,singling,simulates,shyness,shuvanis,showoff,shortsighted,shopkeeper,shoehorn,shithouse,shirtless,shipshape,shifu,shelve,shelbyville,sheepskin,sharpens,shaquille,shanshu,servings,sequined,seizes,seashells,scrambler,scopes,schnauzer,schmo,schizoid,scampered,savagely,saudis,santas,sandovals,sanding,saleswoman,sagging,s'cuse,rutting,ruthlessly,runneth,ruffians,rubes,rosalita,rollerblades,rohypnol,roasts,roadies,ritten,rippling,ripples,rigoletto,richardo,rethought,reshoot,reserving,reseda,rescuer,reread,requisitions,repute,reprogram,replenish,repetitious,reorganizing,reinventing,reinvented,reheat,refrigerators,reenter,recruiter,recliner,rawdy,rashes,rajeski,raison,raisers,rages,quinine,questscape,queller,pygmalion,pushers,pusan,purview,pumpin,pubescent,prudes,provolone,propriety,propped,procrastinate,processional,preyed,pretrial,portent,pooling,poofy,polloi,policia,poacher,pluses,pleasuring,platitudes,plateaued,plaguing,pittance,pinheads,pincushion,pimply,pimped,piggyback,piecing,phillipe,philipse,philby,pharaohs,petyr,petitioner,peshtigo,pesaram,persnickety,perpetrate,percolating,pepto,penne,penell,pemmican,peeks,pedaling,peacemaker,pawnshop,patting,pathologically,patchouli,pasts,pasties,passin,parlors,paltrow,palamon,padlock,paddling,oversleep,overheating,overdosed,overcharge,overblown,outrageously,ornery,opportune,oooooooooh,oohhhh,ohhhhhh,ogres,odorless,obliterated,nyong,nymphomaniac,ntozake,novocain,nough,nonnie,nonissue,nodules,nightmarish,nightline,niceties,newsman,needra,nedry,necking,navour,nauseam,nauls,narim,namath,nagged,naboo,n'sync,myslexia,mutator,mustafi,musketeer,murtaugh,murderess,munching,mumsy,muley,mouseville,mortifying,morgendorffers,moola,montel,mongoloid,molestered,moldings,mocarbies,mo'ss,mixers,misrell,misnomer,misheard,mishandled,miscreant,misconceptions,miniscule,millgate,mettle,metricconverter,meteors,menorah,mengele,melding,meanness,mcgruff,mcarnold,matzoh,matted,mastectomy,massager,marveling,marooned,marmaduke,marick,manhandled,manatees,man'll,maltin,maliciously,malfeasance,malahide,maketh,makeovers,maiming,machismo,lumpectomy,lumbering,lucci,lording,lorca,lookouts,loogie,loners,loathed,lissen,lighthearted,lifer,lickin,lewen,levitation,lestercorp,lessee,lentils,legislate,legalizing,lederhosen,lawmen,lasskopf,lardner,lambeau,lamagra,ladonn,lactic,lacquer,labatier,krabappel,kooks,knickknacks,klutzy,kleynach,klendathu,kinross,kinkaid,kind'a,ketch,kesher,karikos,karenina,kanamits,junshi,jumbled,joust,jotted,jobson,jingling,jigalong,jerries,jellies,jeeps,javna,irresistable,internist,intercranial,inseminated,inquisitor,infuriate,inflating,infidelities,incessantly,incensed,incase,incapacitate,inasmuch,inaccuracies,imploding,impeding,impediments,immaturity,illegible,iditarod,icicles,ibuprofen,i'i'm,hymie,hydrolase,hunker,humps,humons,humidor,humdinger,humbling,huggin,huffing,housecleaning,hothouse,hotcakes,hosty,hootenanny,hootchie,hoosegow,honks,honeymooners,homily,homeopathic,hitchhikers,hissed,hillnigger,hexavalent,hewwo,hershe,hermey,hergott,henny,hennigans,henhouse,hemolytic,helipad,heifer,hebrews,hebbing,heaved,headlock,harrowing,harnessed,hangovers,handi,handbasket,halfrek,hacene,gyges,guys're,gundersons,gumption,gruntmaster,grubs,grossie,groped,grins,greaseball,gravesite,gratuity,granma,grandfathers,grandbaby,gradski,gracing,gossips,gooble,goners,golitsyn,gofer,godsake,goddaughter,gnats,gluing,glares,givers,ginza,gimmie,gimmee,gennero,gemme,gazpacho,gazed,gassy,gargling,gandhiji,galvanized,gallbladder,gaaah,furtive,fumigation,fucka,fronkonsteen,frills,freezin,freewald,freeloader,frailty,forger,foolhardy,fondest,fomin,followin,follicle,flotation,flopping,floodgates,flogged,flicked,flenders,fleabag,fixings,fixable,fistful,firewater,firelight,fingerbang,finalizing,fillin,filipov,fiderer,felling,feldberg,feign,faunia,fatale,farkus,fallible,faithfulness,factoring,eyeful,extramarital,exterminated,exhume,exasperated,eviscerate,estoy,esmerelda,escapades,epoxy,enticed,enthused,entendre,engrossing,endorphins,emptive,emmys,eminently,embezzler,embarressed,embarrassingly,embalmed,eludes,eling,elated,eirie,egotitis,effecting,eerily,eecom,eczema,earthy,earlobes,eally,dyeing,dwells,duvet,duncans,dulcet,droves,droppin,drools,drey'auc,downriver,domesticity,dollop,doesnt,dobler,divulged,diversionary,distancing,dispensers,disorienting,disneyworld,dismissive,disingenuous,disheveled,disfiguring,dinning,dimming,diligently,dilettante,dilation,dickensian,diaphragms,devastatingly,destabilize,desecrate,deposing,deniece,demony,delving,delicates,deigned,defraud,deflower,defibrillator,defiantly,defenceless,defacing,deconstruction,decompose,deciphering,decibels,deceptively,deceptions,decapitation,debutantes,debonair,deadlier,dawdling,davic,darwinism,darnit,darks,danke,danieljackson,dangled,cytoxan,cutout,cutlery,curveball,curfews,cummerbund,crunches,crouched,crisps,cripples,crilly,cribs,crewman,creepin,creeds,credenza,creak,crawly,crawlin,crawlers,crated,crackheads,coworker,couldn't've,corwins,coriander,copiously,convenes,contraceptives,contingencies,contaminating,conniption,condiment,concocting,comprehending,complacency,commendatore,comebacks,com'on,collarbone,colitis,coldly,coiffure,coffers,coeds,codependent,cocksucking,cockney,cockles,clutched,closeted,cloistered,cleve,cleats,clarifying,clapped,cinnabar,chunnel,chumps,cholinesterase,choirboy,chocolatey,chlamydia,chigliak,cheesie,chauvinistic,chasm,chartreuse,charo,charnier,chapil,chalked,chadway,certifiably,cellulite,celled,cavalcade,cataloging,castrated,cassio,cashews,cartouche,carnivore,carcinogens,capulet,captivated,capt'n,cancellations,campin,callate,callar,caffeinated,cadavers,cacophony,cackle,buzzes,buttoning,busload,burglaries,burbs,buona,bunions,bullheaded,buffs,bucyk,buckling,bruschetta,browbeating,broomsticks,broody,bromly,brolin,briefings,brewskies,breathalyzer,breakups,bratwurst,brania,braiding,brags,braggin,bradywood,bottomed,bossa,bordello,bookshelf,boogida,bondsman,bolder,boggles,bludgeoned,blowtorch,blotter,blips,blemish,bleaching,blainetologists,blading,blabbermouth,birdseed,bimmel,biloxi,biggly,bianchinni,betadine,berenson,belus,belloq,begets,befitting,beepers,beelzebub,beefed,bedridden,bedevere,beckons,beaded,baubles,bauble,battleground,bathrobes,basketballs,basements,barroom,barnacle,barkin,barked,baretta,bangles,bangler,banality,bambang,baltar,ballplayers,bagman,baffles,backroom,babysat,baboons,averse,audiotape,auctioneer,atten,atcha,astonishment,arugula,arroz,antihistamines,annoyances,anesthesiology,anatomically,anachronism,amiable,amaretto,allahu,alight,aimin,ailment,afterglow,affronte,advil,adrenals,actualization,acrost,ached,accursed,accoutrements,absconded,aboveboard,abetted,aargh,aaaahh,zuwicky,zolda,ziploc,zakamatak,youve,yippie,yesterdays,yella,yearns,yearnings,yearned,yawning,yalta,yahtzee,y'mean,y'are,wuthering,wreaks,worrisome,workiiing,wooooooo,wonky,womanizing,wolodarsky,wiwith,withdraws,wishy,wisht,wipers,wiper,winos,windthorne,windsurfing,windermere,wiggled,wiggen,whwhat,whodunit,whoaaa,whittling,whitesnake,whereof,wheezing,wheeze,whatd'ya,whataya,whammo,whackin,wellll,weightless,weevil,wedgies,webbing,weasly,wayside,waxes,waturi,washy,washrooms,wandell,waitaminute,waddya,waaaah,vornac,vishnoor,virulent,vindictiveness,vinceres,villier,vigeous,vestigial,ventilate,vented,venereal,veering,veered,veddy,vaslova,valosky,vailsburg,vaginas,vagas,urethra,upstaged,uploading,unwrapping,unwieldy,untapped,unsatisfied,unquenchable,unnerved,unmentionable,unlovable,unknowns,uninformed,unimpressed,unhappily,unguarded,unexplored,undergarment,undeniably,unclench,unclaimed,uncharacteristically,unbuttoned,unblemished,ululd,uhhhm,tweeze,tutsami,tushy,tuscarora,turkle,turghan,turbinium,tubers,trucoat,troxa,tropicana,triquetra,trimmers,triceps,trespassed,traya,traumatizing,transvestites,trainors,tradin,trackers,townies,tourelles,toucha,tossin,tortious,topshop,topes,tonics,tongs,tomsk,tomorrows,toiling,toddle,tizzy,tippers,timmi,thwap,thusly,ththe,thrusts,throwers,throwed,throughway,thickening,thermonuclear,thelwall,thataway,terrifically,tendons,teleportation,telepathically,telekinetic,teetering,teaspoons,tarantulas,tapas,tanned,tangling,tamales,tailors,tahitian,tactful,tachy,tablespoon,syrah,synchronicity,synch,synapses,swooning,switchman,swimsuits,sweltering,sweetly,suvolte,suslov,surfed,supposition,suppertime,supervillains,superfluous,superego,sunspots,sunning,sunless,sundress,suckah,succotash,sublevel,subbasement,studious,striping,strenuously,straights,stonewalled,stillness,stilettos,stevesy,steno,steenwyck,stargates,stammering,staedert,squiggly,squiggle,squashing,squaring,spreadsheet,spramp,spotters,sporto,spooking,splendido,spittin,spirulina,spiky,spate,spartacus,spacerun,soonest,something'll,someth,somepin,someone'll,sofas,soberly,sobered,snowmen,snowbank,snowballing,snivelling,sniffling,snakeskin,snagging,smush,smooter,smidgen,smackers,slumlord,slossum,slimmer,slighted,sleepwalk,sleazeball,skokie,skeptic,sitarides,sistah,sipped,sindell,simpletons,simony,silkwood,silks,silken,sightless,sideboard,shuttles,shrugging,shrouds,showy,shoveled,shouldn'ta,shoplifters,shitstorm,sheeny,shapetype,shaming,shallows,shackle,shabbily,shabbas,seppuku,senility,semite,semiautomatic,selznick,secretarial,sebacio,scuzzy,scummy,scrutinized,scrunchie,scribbled,scotches,scolded,scissor,schlub,scavenging,scarin,scarfing,scallions,scald,savour,savored,saute,sarcoidosis,sandbar,saluted,salish,saith,sailboats,sagittarius,sacre,saccharine,sacamano,rushdie,rumpled,rumba,rulebook,rubbers,roughage,rotisserie,rootie,roofy,roofie,romanticize,rittle,ristorante,rippin,rinsing,ringin,rincess,rickety,reveling,retest,retaliating,restorative,reston,restaurateur,reshoots,resetting,resentments,reprogramming,repossess,repartee,renzo,remore,remitting,remeber,relaxants,rejuvenate,rejections,regenerated,refocus,referrals,reeno,recycles,recrimination,reclining,recanting,reattach,reassigning,razgul,raved,rattlesnakes,rattles,rashly,raquetball,ransack,raisinettes,raheem,radisson,radishes,raban,quoth,qumari,quints,quilts,quilting,quien,quarreled,purty,purblind,punchbowl,publically,psychotics,psychopaths,psychoanalyze,pruning,provasik,protectin,propping,proportioned,prophylactic,proofed,prompter,procreate,proclivities,prioritizing,prinze,pricked,press'll,presets,prescribes,preocupe,prejudicial,prefex,preconceived,precipice,pralines,pragmatist,powerbar,pottie,pottersville,potsie,potholes,posses,posies,portkey,porterhouse,pornographers,poring,poppycock,poppers,pomponi,pokin,poitier,podiatry,pleeze,pleadings,playbook,platelets,plane'arium,placebos,place'll,pistachios,pirated,pinochle,pineapples,pinafore,pimples,piggly,piddling,picon,pickpockets,picchu,physiologically,physic,phobic,philandering,phenomenally,pheasants,pewter,petticoat,petronis,petitioning,perturbed,perpetuating,permutat,perishable,perimeters,perfumed,percocet,per'sus,pepperjack,penalize,pelting,pellet,peignoir,pedicures,peckers,pecans,pawning,paulsson,pattycake,patrolmen,patois,pathos,pasted,parishioner,parcheesi,parachuting,papayas,pantaloons,palpitations,palantine,paintballing,overtired,overstress,oversensitive,overnights,overexcited,overanxious,overachiever,outwitted,outvoted,outnumber,outlast,outlander,out've,orphey,orchestrating,openers,ooooooo,okies,ohhhhhhhhh,ohhhhhhhh,ogling,offbeat,obsessively,obeyed,o'hana,o'bannon,o'bannion,numpce,nummy,nuked,nuances,nourishing,nosedive,norbu,nomlies,nomine,nixed,nihilist,nightshift,newmeat,neglectful,neediness,needin,naphthalene,nanocytes,nanite,naivete,n'yeah,mystifying,myhnegon,mutating,musing,mulled,muggy,muerto,muckraker,muchachos,mountainside,motherless,mosquitos,morphed,mopped,moodoo,moncho,mollem,moisturiser,mohicans,mocks,mistresses,misspent,misinterpretation,miscarry,minuses,mindee,mimes,millisecond,milked,mightn't,mightier,mierzwiak,microchips,meyerling,mesmerizing,mershaw,meecrob,medicate,meddled,mckinnons,mcgewan,mcdunnough,mcats,mbien,matzah,matriarch,masturbated,masselin,martialed,marlboros,marksmanship,marinate,marchin,manicured,malnourished,malign,majorek,magnon,magnificently,macking,machiavellian,macdougal,macchiato,macaws,macanaw,m'self,lydells,lusts,lucite,lubricants,lopper,lopped,loneliest,lonelier,lomez,lojack,loath,liquefy,lippy,limps,likin,lightness,liesl,liebchen,licious,libris,libation,lhamo,leotards,leanin,laxatives,lavished,latka,lanyard,lanky,landmines,lameness,laddies,lacerated,labored,l'amour,kreskin,kovitch,kournikova,kootchy,konoss,knknow,knickety,knackety,kmart,klicks,kiwanis,kissable,kindergartners,kilter,kidnet,kid'll,kicky,kickbacks,kickback,kholokov,kewpie,kendo,katra,kareoke,kafelnikov,kabob,junjun,jumba,julep,jordie,jondy,jolson,jenoff,jawbone,janitorial,janiro,ipecac,invigorated,intruded,intros,intravenously,interruptus,interrogations,interject,interfacing,interestin,insuring,instilled,insensitivity,inscrutable,inroads,innards,inlaid,injector,ingratitude,infuriates,infra,infliction,indelicate,incubators,incrimination,inconveniencing,inconsolable,incestuous,incas,incarcerate,inbreeding,impudence,impressionists,impeached,impassioned,imipenem,idling,idiosyncrasies,icebergs,hypotensive,hydrochloride,hushed,humus,humph,hummm,hulking,hubcaps,hubald,howya,howbout,how'll,housebroken,hotwire,hotspots,hotheaded,horrace,hopsfield,honto,honkin,honeymoons,homewrecker,hombres,hollers,hollerin,hoedown,hoboes,hobbling,hobble,hoarse,hinky,highlighters,hexes,heru'ur,hernias,heppleman,hell're,heighten,heheheheheh,heheheh,hedging,heckling,heckled,heavyset,heatshield,heathens,heartthrob,headpiece,hayseed,haveo,hauls,hasten,harridan,harpoons,hardens,harcesis,harbouring,hangouts,halkein,haleh,halberstam,hairnet,hairdressers,hacky,haaaa,h'yah,gusta,gushy,gurgling,guilted,gruel,grudging,grrrrrr,grosses,groomsmen,griping,gravest,gratified,grated,goulash,goopy,goona,goodly,godliness,godawful,godamn,glycerin,glutes,glowy,globetrotters,glimpsed,glenville,glaucoma,girlscout,giraffes,gilbey,gigglepuss,ghora,gestating,gelato,geishas,gearshift,gayness,gasped,gaslighting,garretts,garba,gablyczyck,g'head,fumigating,fumbling,fudged,fuckwad,fuck're,fuchsia,fretting,freshest,frenchies,freezers,fredrica,fraziers,fraidy,foxholes,fourty,fossilized,forsake,forfeits,foreclosed,foreal,footsies,florists,flopped,floorshow,floorboard,flinching,flecks,flaubert,flatware,flatulence,flatlined,flashdance,flail,flagging,fiver,fitzy,fishsticks,finetti,finelli,finagle,filko,fieldstone,fibber,ferrini,feedin,feasting,favore,fathering,farrouhk,farmin,fairytale,fairservice,factoid,facedown,fabled,eyeballin,extortionist,exquisitely,expedited,exorcise,existentialist,execs,exculpatory,exacerbate,everthing,eventuality,evander,euphoric,euphemisms,estamos,erred,entitle,enquiries,enormity,enfants,endive,encyclopedias,emulating,embittered,effortless,ectopic,ecirc,easely,earphones,earmarks,dweller,durslar,durned,dunois,dunking,dunked,dumdum,dullard,dudleys,druthers,druggist,drossos,drooled,driveways,drippy,dreamless,drawstring,drang,drainpipe,dozing,dotes,dorkface,doorknobs,doohickey,donnatella,doncha,domicile,dokos,dobermans,dizzying,divola,ditsy,distaste,disservice,dislodged,dislodge,disinherit,disinformation,discounting,dinka,dimly,digesting,diello,diddling,dictatorships,dictators,diagnostician,devours,devilishly,detract,detoxing,detours,detente,destructs,desecrated,derris,deplore,deplete,demure,demolitions,demean,delish,delbruck,delaford,degaulle,deftly,deformity,deflate,definatly,defector,decrypted,decontamination,decapitate,decanter,dardis,dampener,damme,daddy'll,dabbling,dabbled,d'etre,d'argent,d'alene,d'agnasti,czechoslovakian,cymbal,cyberdyne,cutoffs,cuticle,curvaceous,curiousity,crowing,crowed,croutons,cropped,criminy,crescentis,crashers,cranwell,coverin,courtrooms,countenance,cosmically,cosign,corroboration,coroners,cornflakes,copperpot,copperhead,copacetic,coordsize,convulsing,consults,conjures,congenial,concealer,compactor,commercialism,cokey,cognizant,clunkers,clumsily,clucking,cloves,cloven,cloths,clothe,clods,clocking,clings,clavicle,classless,clashing,clanking,clanging,clamping,civvies,citywide,circulatory,circuited,chronisters,chromic,choos,chloroformed,chillun,cheesed,chatterbox,chaperoned,channukah,cerebellum,centerpieces,centerfold,ceecee,ccedil,cavorting,cavemen,cauterized,cauldwell,catting,caterine,cassiopeia,carves,cartwheel,carpeted,carob,caressing,carelessly,careening,capricious,capitalistic,capillaries,candidly,camaraderie,callously,calfskin,caddies,buttholes,busywork,busses,burps,burgomeister,bunkhouse,bungchow,bugler,buffets,buffed,brutish,brusque,bronchitis,bromden,brolly,broached,brewskis,brewin,brean,breadwinner,brana,bountiful,bouncin,bosoms,borgnine,bopping,bootlegs,booing,bombosity,bolting,boilerplate,bluey,blowback,blouses,bloodsuckers,bloodstained,bloat,bleeth,blackface,blackest,blackened,blacken,blackballed,blabs,blabbering,birdbrain,bipartisanship,biodegradable,biltmore,bilked,big'uns,bidet,besotted,bernheim,benegas,bendiga,belushi,bellboys,belittling,behinds,begone,bedsheets,beckoning,beaute,beaudine,beastly,beachfront,bathes,batak,baser,baseballs,barbella,bankrolling,bandaged,baerly,backlog,backin,babying,azkaban,awwwww,aviary,authorizes,austero,aunty,attics,atreus,astounded,astonish,artemus,arses,arintero,appraiser,apathetic,anybody'd,anxieties,anticlimactic,antar,anglos,angleman,anesthetist,androscoggin,andolini,andale,amway,amuck,amniocentesis,amnesiac,americano,amara,alvah,altruism,alternapalooza,alphabetize,alpaca,allus,allergist,alexandros,alaikum,akimbo,agoraphobia,agides,aggrhh,aftertaste,adoptions,adjuster,addictions,adamantium,activator,accomplishes,aberrant,aaaaargh,aaaaaaaaaaaaa,a'ight,zzzzzzz,zucchini,zookeeper,zirconia,zippers,zequiel,zellary,zeitgeist,zanuck,zagat,you'n,ylang,yes'm,yenta,yecchh,yecch,yawns,yankin,yahdah,yaaah,y'got,xeroxed,wwooww,wristwatch,wrangled,wouldst,worthiness,worshiping,wormy,wormtail,wormholes,woosh,wollsten,wolfing,woefully,wobbling,wintry,wingding,windstorm,windowtext,wiluna,wilting,wilted,willick,willenholly,wildflowers,wildebeest,whyyy,whoppers,whoaa,whizzing,whizz,whitest,whistled,whist,whinny,wheelies,whazzup,whatwhatwhaaat,whato,whatdya,what'dya,whacks,wewell,wetsuit,welluh,weeps,waylander,wavin,wassail,wasnt,warneford,warbucks,waltons,wallbanger,waiving,waitwait,vowing,voucher,vornoff,vorhees,voldemort,vivre,vittles,vindaloo,videogames,vichyssoise,vicarious,vesuvius,verguenza,ven't,velveteen,velour,velociraptor,vastness,vasectomies,vapors,vanderhof,valmont,validates,valiantly,vacuums,usurp,usernum,us'll,urinals,unyielding,unvarnished,unturned,untouchables,untangled,unsecured,unscramble,unreturned,unremarkable,unpretentious,unnerstand,unmade,unimpeachable,unfashionable,underwrite,underlining,underling,underestimates,underappreciated,uncouth,uncork,uncommonly,unclog,uncircumcised,unchallenged,uncas,unbuttoning,unapproved,unamerican,unafraid,umpteen,umhmm,uhwhy,ughuh,typewriters,twitches,twitched,twirly,twinkling,twinges,twiddling,turners,turnabout,tumblin,tryed,trowel,trousseau,trivialize,trifles,tribianni,trenchcoat,trembled,traumatize,transitory,transients,transfuse,transcribing,tranq,trampy,traipsed,trainin,trachea,traceable,touristy,toughie,toscanini,tortola,tortilla,torreon,toreador,tommorrow,tollbooth,tollans,toidy,togas,tofurkey,toddling,toddies,toasties,toadstool,to've,tingles,timin,timey,timetables,tightest,thuggee,thrusting,thrombus,throes,thrifty,thornharts,thinnest,thicket,thetas,thesulac,tethered,testaburger,tersenadine,terrif,terdlington,tepui,temping,tector,taxidermy,tastebuds,tartlets,tartabull,tar'd,tantamount,tangy,tangles,tamer,tabula,tabletops,tabithia,szechwan,synthedyne,svenjolly,svengali,survivalists,surmise,surfboards,surefire,suprise,supremacists,suppositories,superstore,supercilious,suntac,sunburned,summercliff,sullied,sugared,suckle,subtleties,substantiated,subsides,subliminal,subhuman,strowman,stroked,stroganoff,streetlight,straying,strainer,straighter,straightener,stoplight,stirrups,stewing,stereotyping,stepmommy,stephano,stashing,starshine,stairwells,squatsie,squandering,squalid,squabbling,squab,sprinkling,spreader,spongy,spokesmen,splintered,spittle,spitter,spiced,spews,spendin,spect,spearchucker,spatulas,southtown,soused,soshi,sorter,sorrowful,sooth,some'in,soliloquy,soiree,sodomized,sobriki,soaping,snows,snowcone,snitching,snitched,sneering,snausages,snaking,smoothed,smoochies,smarten,smallish,slushy,slurring,sluman,slithers,slippin,sleuthing,sleeveless,skinless,skillfully,sketchbook,skagnetti,sista,sinning,singularly,sinewy,silverlake,siguto,signorina,sieve,sidearms,shying,shunning,shtud,shrieks,shorting,shortbread,shopkeepers,shmancy,shizzit,shitheads,shitfaced,shipmates,shiftless,shelving,shedlow,shavings,shatters,sharifa,shampoos,shallots,shafter,sha'nauc,sextant,serviceable,sepsis,senores,sendin,semis,semanski,selflessly,seinfelds,seers,seeps,seductress,secaucus,sealant,scuttling,scusa,scrunched,scissorhands,schreber,schmancy,scamps,scalloped,savoir,savagery,sarong,sarnia,santangel,samool,sallow,salino,safecracker,sadism,sacrilegious,sabrini,sabath,s'aright,ruttheimer,rudest,rubbery,rousting,rotarian,roslin,roomed,romari,romanica,rolltop,rolfski,rockettes,roared,ringleader,riffing,ribcage,rewired,retrial,reting,resuscitated,restock,resale,reprogrammed,replicant,repentant,repellant,repays,repainting,renegotiating,rendez,remem,relived,relinquishes,relearn,relaxant,rekindling,rehydrate,refueled,refreshingly,refilling,reexamine,reeseman,redness,redeemable,redcoats,rectangles,recoup,reciprocated,reassessing,realy,realer,reachin,re'kali,rawlston,ravages,rappaports,ramoray,ramming,raindrops,rahesh,radials,racists,rabartu,quiches,quench,quarreling,quaintly,quadrants,putumayo,put'em,purifier,pureed,punitis,pullout,pukin,pudgy,puddings,puckering,pterodactyl,psychodrama,psats,protestations,protectee,prosaic,propositioned,proclivity,probed,printouts,prevision,pressers,preset,preposition,preempt,preemie,preconceptions,prancan,powerpuff,potties,potpie,poseur,porthole,poops,pooping,pomade,polyps,polymerized,politeness,polisher,polack,pocketknife,poatia,plebeian,playgroup,platonically,platitude,plastering,plasmapheresis,plaids,placemats,pizzazz,pintauro,pinstripes,pinpoints,pinkner,pincer,pimento,pileup,pilates,pigmen,pieeee,phrased,photocopies,phoebes,philistines,philanderer,pheromone,phasers,pfeffernuesse,pervs,perspire,personify,perservere,perplexed,perpetrating,perkiness,perjurer,periodontist,perfunctory,perdido,percodan,pentameter,pentacle,pensive,pensione,pennybaker,pennbrooke,penhall,pengin,penetti,penetrates,pegnoir,peeve,peephole,pectorals,peckin,peaky,peaksville,paxcow,paused,patted,parkishoff,parkers,pardoning,paraplegic,paraphrasing,paperers,papered,pangs,paneling,palooza,palmed,palmdale,palatable,pacify,pacified,owwwww,oversexed,overrides,overpaying,overdrawn,overcompensate,overcomes,overcharged,outmaneuver,outfoxed,oughtn't,ostentatious,oshun,orthopedist,or'derves,ophthalmologist,operagirl,oozes,oooooooh,onesie,omnis,omelets,oktoberfest,okeydoke,ofthe,ofher,obstetrical,obeys,obeah,o'henry,nyquil,nyanyanyanyah,nuttin,nutsy,nutball,nurhachi,numbskull,nullifies,nullification,nucking,nubbin,nourished,nonspecific,noing,noinch,nohoho,nobler,nitwits,newsprint,newspaperman,newscaster,neuropathy,netherworld,neediest,navasky,narcissists,napped,nafta,mache,mykonos,mutilating,mutherfucker,mutha,mutates,mutate,musn't,murchy,multitasking,mujeeb,mudslinging,muckraking,mousetrap,mourns,mournful,motherf,mostro,morphing,morphate,moralistic,moochy,mooching,monotonous,monopolize,monocle,molehill,moland,mofet,mockup,mobilizing,mmmmmmm,mitzvahs,mistreating,misstep,misjudge,misinformation,misdirected,miscarriages,miniskirt,mindwarped,minced,milquetoast,miguelito,mightily,midstream,midriff,mideast,microbe,methuselah,mesdames,mescal,men'll,memma,megaton,megara,megalomaniac,meeee,medulla,medivac,meaninglessness,mcnuggets,mccarthyism,maypole,may've,mauve,mateys,marshack,markles,marketable,mansiere,manservant,manse,manhandling,mallomars,malcontent,malaise,majesties,mainsail,mailmen,mahandra,magnolias,magnified,magev,maelstrom,machu,macado,m'boy,m'appelle,lustrous,lureen,lunges,lumped,lumberyard,lulled,luego,lucks,lubricated,loveseat,loused,lounger,loski,lorre,loora,looong,loonies,loincloth,lofts,lodgers,lobbing,loaner,livered,liqueur,ligourin,lifesaving,lifeguards,lifeblood,liaisons,let'em,lesbianism,lence,lemonlyman,legitimize,leadin,lazars,lazarro,lawyering,laugher,laudanum,latrines,lations,laters,lapels,lakefront,lahit,lafortunata,lachrymose,l'italien,kwaini,kruczynski,kramerica,kowtow,kovinsky,korsekov,kopek,knowakowski,knievel,knacks,kiowas,killington,kickball,keyworth,keymaster,kevie,keveral,kenyons,keggers,keepsakes,kechner,keaty,kavorka,karajan,kamerev,kaggs,jujyfruit,jostled,jonestown,jokey,joists,jocko,jimmied,jiggled,jests,jenzen,jenko,jellyman,jedediah,jealitosis,jaunty,jarmel,jankle,jagoff,jagielski,jackrabbits,jabbing,jabberjaw,izzat,irresponsibly,irrepressible,irregularity,irredeemable,inuvik,intuitions,intubated,intimates,interminable,interloper,intercostal,instyle,instigate,instantaneously,ining,ingrown,ingesting,infusing,infringe,infinitum,infact,inequities,indubitably,indisputable,indescribably,indentation,indefinable,incontrovertible,inconsequential,incompletes,incoherently,inclement,incidentals,inarticulate,inadequacies,imprudent,improprieties,imprison,imprinted,impressively,impostors,importante,imperious,impale,immodest,immobile,imbedded,imbecilic,illegals,idn't,hysteric,hypotenuse,hygienic,hyeah,hushpuppies,hunhh,humpback,humored,hummed,humiliates,humidifier,huggy,huggers,huckster,hotbed,hosing,hosers,horsehair,homebody,homebake,holing,holies,hoisting,hogwallop,hocks,hobbits,hoaxes,hmmmmm,hisses,hippest,hillbillies,hilarity,heurh,herniated,hermaphrodite,hennifer,hemlines,hemline,hemery,helplessness,helmsley,hellhound,heheheheh,heeey,hedda,heartbeats,heaped,healers,headstart,headsets,headlong,hawkland,havta,haulin,harvey'll,hanta,hansom,hangnail,handstand,handrail,handoff,hallucinogen,hallor,halitosis,haberdashery,gypped,guy'll,gumbel,guerillas,guava,guardrail,grunther,grunick,groppi,groomer,grodin,gripes,grinds,grifters,gretch,greevey,greasing,graveyards,grandkid,grainy,gouging,gooney,googly,goldmuff,goldenrod,goingo,godly,gobbledygook,gobbledegook,glues,gloriously,glengarry,glassware,glamor,gimmicks,giggly,giambetti,ghoulish,ghettos,ghali,gether,geriatrics,gerbils,geosynchronous,georgio,gente,gendarme,gelbman,gazillionth,gayest,gauging,gastro,gaslight,gasbag,garters,garish,garas,gantu,gangy,gangly,gangland,galling,gadda,furrowed,funnies,funkytown,fugimotto,fudging,fuckeen,frustrates,froufrou,froot,fromberge,frizzies,fritters,frightfully,friendliest,freeloading,freelancing,freakazoid,fraternization,framers,fornication,fornicating,forethought,footstool,foisting,focussing,focking,flurries,fluffed,flintstones,fledermaus,flayed,flawlessly,flatters,flashbang,flapped,fishies,firmer,fireproof,firebug,fingerpainting,finessed,findin,financials,finality,fillets,fiercest,fiefdom,fibbing,fervor,fentanyl,fenelon,fedorchuk,feckless,feathering,faucets,farewells,fantasyland,fanaticism,faltered,faggy,faberge,extorting,extorted,exterminating,exhumation,exhilaration,exhausts,exfoliate,excels,exasperating,exacting,everybody'd,evasions,espressos,esmail,errrr,erratically,eroding,ernswiler,epcot,enthralled,ensenada,enriching,enrage,enhancer,endear,encrusted,encino,empathic,embezzle,emanates,electricians,eking,egomaniacal,egging,effacing,ectoplasm,eavesdropped,dummkopf,dugray,duchaisne,drunkard,drudge,droop,droids,drips,dripped,dribbles,drazens,downy,downsize,downpour,dosages,doppelganger,dopes,doohicky,dontcha,doneghy,divining,divest,diuretics,diuretic,distrustful,disrupts,dismemberment,dismember,disinfect,disillusionment,disheartening,discourteous,discotheque,discolored,dirtiest,diphtheria,dinks,dimpled,didya,dickwad,diatribes,diathesis,diabetics,deviants,detonates,detests,detestable,detaining,despondent,desecration,derision,derailing,deputized,depressors,dependant,dentures,denominators,demur,demonology,delts,dellarte,delacour,deflated,defib,defaced,decorators,deaqon,davola,datin,darwinian,darklighters,dandelions,dampened,damaskinos,dalrimple,d'peshu,d'hoffryn,d'astier,cynics,cutesy,cutaway,curmudgeon,curdle,culpability,cuisinart,cuffing,crypts,cryptid,crunched,crumblers,crudely,crosscheck,croon,crissake,crevasse,creswood,creepo,creases,creased,creaky,cranks,crabgrass,coveralls,couple'a,coughs,coslaw,corporeal,cornucopia,cornering,corks,cordoned,coolly,coolin,cookbooks,contrite,contented,constrictor,confound,confit,confiscating,condoned,conditioners,concussions,comprendo,comers,combustible,combusted,collingswood,coldness,coitus,codicil,coasting,clydesdale,cluttering,clunker,clunk,clumsiness,clotted,clothesline,clinches,clincher,cleverness,clench,clein,cleanses,claymores,clammed,chugging,chronically,christsakes,choque,chompers,chiseling,chirpy,chirp,chinks,chingachgook,chickenpox,chickadee,chewin,chessboard,chargin,chanteuse,chandeliers,chamdo,chagrined,chaff,certs,certainties,cerreno,cerebrum,censured,cemetary,caterwauling,cataclysmic,casitas,cased,carvel,carting,carrear,carolling,carolers,carnie,cardiogram,carbuncle,capulets,canines,candaules,canape,caldecott,calamitous,cadillacs,cachet,cabeza,cabdriver,buzzards,butai,businesswomen,bungled,bumpkins,bummers,bulldoze,buffybot,bubut,bubbies,brrrrr,brownout,brouhaha,bronzing,bronchial,broiler,briskly,briefcases,bricked,breezing,breeher,breakable,breadstick,bravenet,braved,brandies,brainwaves,brainiest,braggart,bradlee,boys're,boys'll,boys'd,boutonniere,bossed,bosomy,borans,boosts,bookshelves,bookends,boneless,bombarding,bollo,boinked,boink,bluest,bluebells,bloodshot,blockhead,blockbusters,blithely,blather,blankly,bladders,blackbeard,bitte,bippy,biogenetics,bilge,bigglesworth,bicuspids,beususe,betaseron,besmirch,bernece,bereavement,bentonville,benchley,benching,bembe,bellyaching,bellhops,belie,beleaguered,behrle,beginnin,begining,beenie,beefs,beechwood,becau,beaverhausen,beakers,bazillion,baudouin,barrytown,barringtons,barneys,barbs,barbers,barbatus,bankrupted,bailiffs,backslide,baby'd,baaad,b'fore,awwwk,aways,awakes,automatics,authenticate,aught,aubyn,attired,attagirl,atrophied,asystole,astroturf,assertiveness,artichokes,arquillians,aright,archenemy,appraise,appeased,antin,anspaugh,anesthetics,anaphylactic,amscray,ambivalence,amalio,alriiight,alphabetized,alpena,alouette,allora,alliteration,allenwood,allegiances,algerians,alcerro,alastor,ahaha,agitators,aforethought,advertises,admonition,adirondacks,adenoids,acupuncturist,acula,actuarial,activators,actionable,achingly,accusers,acclimated,acclimate,absurdly,absorbent,absolvo,absolutes,absences,abdomenizer,aaaaaaaaah,aaaaaaaaaa,a'right\".split(\",\"),\n male_names: \"james,john,robert,michael,william,david,richard,charles,joseph,thomas,christopher,daniel,paul,mark,donald,george,kenneth,steven,edward,brian,ronald,anthony,kevin,jason,matthew,gary,timothy,jose,larry,jeffrey,frank,scott,eric,stephen,andrew,raymond,gregory,joshua,jerry,dennis,walter,patrick,peter,harold,douglas,henry,carl,arthur,ryan,roger,joe,juan,jack,albert,jonathan,justin,terry,gerald,keith,samuel,willie,ralph,lawrence,nicholas,roy,benjamin,bruce,brandon,adam,harry,fred,wayne,billy,steve,louis,jeremy,aaron,randy,eugene,carlos,russell,bobby,victor,ernest,phillip,todd,jesse,craig,alan,shawn,clarence,sean,philip,chris,johnny,earl,jimmy,antonio,danny,bryan,tony,luis,mike,stanley,leonard,nathan,dale,manuel,rodney,curtis,norman,marvin,vincent,glenn,jeffery,travis,jeff,chad,jacob,melvin,alfred,kyle,francis,bradley,jesus,herbert,frederick,ray,joel,edwin,don,eddie,ricky,troy,randall,barry,bernard,mario,leroy,francisco,marcus,micheal,theodore,clifford,miguel,oscar,jay,jim,tom,calvin,alex,jon,ronnie,bill,lloyd,tommy,leon,derek,darrell,jerome,floyd,leo,alvin,tim,wesley,dean,greg,jorge,dustin,pedro,derrick,dan,zachary,corey,herman,maurice,vernon,roberto,clyde,glen,hector,shane,ricardo,sam,rick,lester,brent,ramon,tyler,gilbert,gene,marc,reginald,ruben,brett,nathaniel,rafael,edgar,milton,raul,ben,cecil,duane,andre,elmer,brad,gabriel,ron,roland,jared,adrian,karl,cory,claude,erik,darryl,neil,christian,javier,fernando,clinton,ted,mathew,tyrone,darren,lonnie,lance,cody,julio,kurt,allan,clayton,hugh,max,dwayne,dwight,armando,felix,jimmie,everett,ian,ken,bob,jaime,casey,alfredo,alberto,dave,ivan,johnnie,sidney,byron,julian,isaac,clifton,willard,daryl,virgil,andy,salvador,kirk,sergio,seth,kent,terrance,rene,eduardo,terrence,enrique,freddie,stuart,fredrick,arturo,alejandro,joey,nick,luther,wendell,jeremiah,evan,julius,donnie,otis,trevor,luke,homer,gerard,doug,kenny,hubert,angelo,shaun,lyle,matt,alfonso,orlando,rex,carlton,ernesto,pablo,lorenzo,omar,wilbur,blake,horace,roderick,kerry,abraham,rickey,ira,andres,cesar,johnathan,malcolm,rudolph,damon,kelvin,rudy,preston,alton,archie,marco,pete,randolph,garry,geoffrey,jonathon,felipe,bennie,gerardo,dominic,loren,delbert,colin,guillermo,earnest,benny,noel,rodolfo,myron,edmund,salvatore,cedric,lowell,gregg,sherman,devin,sylvester,roosevelt,israel,jermaine,forrest,wilbert,leland,simon,irving,owen,rufus,woodrow,sammy,kristopher,levi,marcos,gustavo,jake,lionel,marty,gilberto,clint,nicolas,laurence,ismael,orville,drew,ervin,dewey,wilfred,josh,hugo,ignacio,caleb,tomas,sheldon,erick,frankie,darrel,rogelio,terence,alonzo,elias,bert,elbert,ramiro,conrad,noah,grady,phil,cornelius,lamar,rolando,clay,percy,bradford,merle,darin,amos,terrell,moses,irvin,saul,roman,darnell,randal,tommie,timmy,darrin,brendan,toby,van,abel,dominick,emilio,elijah,cary,domingo,aubrey,emmett,marlon,emanuel,jerald,edmond,emil,dewayne,otto,teddy,reynaldo,bret,jess,trent,humberto,emmanuel,stephan,louie,vicente,lamont,garland,micah,efrain,heath,rodger,demetrius,ethan,eldon,rocky,pierre,eli,bryce,antoine,robbie,kendall,royce,sterling,grover,elton,cleveland,dylan,chuck,damian,reuben,stan,leonardo,russel,erwin,benito,hans,monte,blaine,ernie,curt,quentin,agustin,jamal,devon,adolfo,tyson,wilfredo,bart,jarrod,vance,denis,damien,joaquin,harlan,desmond,elliot,darwin,gregorio,kermit,roscoe,esteban,anton,solomon,norbert,elvin,nolan,carey,rod,quinton,hal,brain,rob,elwood,kendrick,darius,moises,marlin,fidel,thaddeus,cliff,marcel,ali,raphael,bryon,armand,alvaro,jeffry,dane,joesph,thurman,ned,sammie,rusty,michel,monty,rory,fabian,reggie,kris,isaiah,gus,avery,loyd,diego,adolph,millard,rocco,gonzalo,derick,rodrigo,gerry,rigoberto,alphonso,rickie,noe,vern,elvis,bernardo,mauricio,hiram,donovan,basil,nickolas,scot,vince,quincy,eddy,sebastian,federico,ulysses,heriberto,donnell,denny,gavin,emery,romeo,jayson,dion,dante,clement,coy,odell,jarvis,bruno,issac,dudley,sanford,colby,carmelo,nestor,hollis,stefan,donny,linwood,beau,weldon,galen,isidro,truman,delmar,johnathon,silas,frederic,irwin,merrill,charley,marcelino,carlo,trenton,kurtis,aurelio,winfred,vito,collin,denver,leonel,emory,pasquale,mohammad,mariano,danial,landon,dirk,branden,adan,numbers,clair,buford,bernie,wilmer,emerson,zachery,jacques,errol,josue,edwardo,wilford,theron,raymundo,daren,tristan,robby,lincoln,jame,genaro,octavio,cornell,hung,arron,antony,herschel,alva,giovanni,garth,cyrus,cyril,ronny,stevie,lon,kennith,carmine,augustine,erich,chadwick,wilburn,russ,myles,jonas,mitchel,mervin,zane,jamel,lazaro,alphonse,randell,johnie,jarrett,ariel,abdul,dusty,luciano,seymour,scottie,eugenio,mohammed,arnulfo,lucien,ferdinand,thad,ezra,aldo,rubin,mitch,earle,abe,marquis,lanny,kareem,jamar,boris,isiah,emile,elmo,aron,leopoldo,everette,josef,eloy,dorian,rodrick,reinaldo,lucio,jerrod,weston,hershel,lemuel,lavern,burt,jules,gil,eliseo,ahmad,nigel,efren,antwan,alden,margarito,refugio,dino,osvaldo,les,deandre,normand,kieth,ivory,trey,norberto,napoleon,jerold,fritz,rosendo,milford,sang,deon,christoper,alfonzo,lyman,josiah,brant,wilton,rico,jamaal,dewitt,brenton,yong,olin,faustino,claudio,judson,gino,edgardo,alec,jarred,donn,trinidad,tad,porfirio,odis,lenard,chauncey,tod,mel,marcelo,kory,augustus,keven,hilario,bud,sal,orval,mauro,dannie,zachariah,olen,anibal,milo,jed,thanh,amado,lenny,tory,richie,horacio,brice,mohamed,delmer,dario,mac,jonah,jerrold,robt,hank,sung,rupert,rolland,kenton,damion,chi,antone,waldo,fredric,bradly,kip,burl,tyree,jefferey,ahmed,willy,stanford,oren,moshe,mikel,enoch,brendon,quintin,jamison,florencio,darrick,tobias,minh,hassan,giuseppe,demarcus,cletus,tyrell,lyndon,keenan,werner,theo,geraldo,columbus,chet,bertram,markus,huey,hilton,dwain,donte,tyron,omer,isaias,hipolito,fermin,chung,adalberto,jamey,teodoro,mckinley,maximo,raleigh,lawerence,abram,rashad,emmitt,daron,chong,samual,otha,miquel,eusebio,dong,domenic,darron,wilber,renato,hoyt,haywood,ezekiel,chas,florentino,elroy,clemente,arden,neville,edison,deshawn,carrol,shayne,nathanial,jordon,danilo,claud,sherwood,raymon,rayford,cristobal,ambrose,titus,hyman,felton,ezequiel,erasmo,lonny,milan,lino,jarod,herb,andreas,rhett,jude,douglass,cordell,oswaldo,ellsworth,virgilio,toney,nathanael,benedict,mose,hong,isreal,garret,fausto,arlen,zack,modesto,francesco,manual,gaylord,gaston,filiberto,deangelo,michale,granville,malik,zackary,tuan,nicky,cristopher,antione,malcom,korey,jospeh,colton,waylon,hosea,shad,santo,rudolf,rolf,renaldo,marcellus,lucius,kristofer,harland,arnoldo,rueben,leandro,kraig,jerrell,jeromy,hobert,cedrick,arlie,winford,wally,luigi,keneth,jacinto,graig,franklyn,edmundo,leif,jeramy,willian,vincenzo,shon,michal,lynwood,jere,elden,darell,broderick,alonso\".split(\",\")\n};\n\nmodule.exports = frequency_lists;\n\n//# sourceMappingURL=frequency_lists.js.map\n","// Generated by CoffeeScript 1.10.0\nvar adjacency_graphs;\n\nadjacency_graphs = {\n qwerty: {\n \"!\": [\"`~\", null, null, \"2@\", \"qQ\", null],\n \"\\\"\": [\";:\", \"[{\", \"]}\", null, null, \"/?\"],\n \"#\": [\"2@\", null, null, \"4$\", \"eE\", \"wW\"],\n \"$\": [\"3#\", null, null, \"5%\", \"rR\", \"eE\"],\n \"%\": [\"4$\", null, null, \"6^\", \"tT\", \"rR\"],\n \"&\": [\"6^\", null, null, \"8*\", \"uU\", \"yY\"],\n \"'\": [\";:\", \"[{\", \"]}\", null, null, \"/?\"],\n \"(\": [\"8*\", null, null, \"0)\", \"oO\", \"iI\"],\n \")\": [\"9(\", null, null, \"-_\", \"pP\", \"oO\"],\n \"*\": [\"7&\", null, null, \"9(\", \"iI\", \"uU\"],\n \"+\": [\"-_\", null, null, null, \"]}\", \"[{\"],\n \",\": [\"mM\", \"kK\", \"lL\", \".>\", null, null],\n \"-\": [\"0)\", null, null, \"=+\", \"[{\", \"pP\"],\n \".\": [\",<\", \"lL\", \";:\", \"/?\", null, null],\n \"/\": [\".>\", \";:\", \"'\\\"\", null, null, null],\n \"0\": [\"9(\", null, null, \"-_\", \"pP\", \"oO\"],\n \"1\": [\"`~\", null, null, \"2@\", \"qQ\", null],\n \"2\": [\"1!\", null, null, \"3#\", \"wW\", \"qQ\"],\n \"3\": [\"2@\", null, null, \"4$\", \"eE\", \"wW\"],\n \"4\": [\"3#\", null, null, \"5%\", \"rR\", \"eE\"],\n \"5\": [\"4$\", null, null, \"6^\", \"tT\", \"rR\"],\n \"6\": [\"5%\", null, null, \"7&\", \"yY\", \"tT\"],\n \"7\": [\"6^\", null, null, \"8*\", \"uU\", \"yY\"],\n \"8\": [\"7&\", null, null, \"9(\", \"iI\", \"uU\"],\n \"9\": [\"8*\", null, null, \"0)\", \"oO\", \"iI\"],\n \":\": [\"lL\", \"pP\", \"[{\", \"'\\\"\", \"/?\", \".>\"],\n \";\": [\"lL\", \"pP\", \"[{\", \"'\\\"\", \"/?\", \".>\"],\n \"<\": [\"mM\", \"kK\", \"lL\", \".>\", null, null],\n \"=\": [\"-_\", null, null, null, \"]}\", \"[{\"],\n \">\": [\",<\", \"lL\", \";:\", \"/?\", null, null],\n \"?\": [\".>\", \";:\", \"'\\\"\", null, null, null],\n \"@\": [\"1!\", null, null, \"3#\", \"wW\", \"qQ\"],\n \"A\": [null, \"qQ\", \"wW\", \"sS\", \"zZ\", null],\n \"B\": [\"vV\", \"gG\", \"hH\", \"nN\", null, null],\n \"C\": [\"xX\", \"dD\", \"fF\", \"vV\", null, null],\n \"D\": [\"sS\", \"eE\", \"rR\", \"fF\", \"cC\", \"xX\"],\n \"E\": [\"wW\", \"3#\", \"4$\", \"rR\", \"dD\", \"sS\"],\n \"F\": [\"dD\", \"rR\", \"tT\", \"gG\", \"vV\", \"cC\"],\n \"G\": [\"fF\", \"tT\", \"yY\", \"hH\", \"bB\", \"vV\"],\n \"H\": [\"gG\", \"yY\", \"uU\", \"jJ\", \"nN\", \"bB\"],\n \"I\": [\"uU\", \"8*\", \"9(\", \"oO\", \"kK\", \"jJ\"],\n \"J\": [\"hH\", \"uU\", \"iI\", \"kK\", \"mM\", \"nN\"],\n \"K\": [\"jJ\", \"iI\", \"oO\", \"lL\", \",<\", \"mM\"],\n \"L\": [\"kK\", \"oO\", \"pP\", \";:\", \".>\", \",<\"],\n \"M\": [\"nN\", \"jJ\", \"kK\", \",<\", null, null],\n \"N\": [\"bB\", \"hH\", \"jJ\", \"mM\", null, null],\n \"O\": [\"iI\", \"9(\", \"0)\", \"pP\", \"lL\", \"kK\"],\n \"P\": [\"oO\", \"0)\", \"-_\", \"[{\", \";:\", \"lL\"],\n \"Q\": [null, \"1!\", \"2@\", \"wW\", \"aA\", null],\n \"R\": [\"eE\", \"4$\", \"5%\", \"tT\", \"fF\", \"dD\"],\n \"S\": [\"aA\", \"wW\", \"eE\", \"dD\", \"xX\", \"zZ\"],\n \"T\": [\"rR\", \"5%\", \"6^\", \"yY\", \"gG\", \"fF\"],\n \"U\": [\"yY\", \"7&\", \"8*\", \"iI\", \"jJ\", \"hH\"],\n \"V\": [\"cC\", \"fF\", \"gG\", \"bB\", null, null],\n \"W\": [\"qQ\", \"2@\", \"3#\", \"eE\", \"sS\", \"aA\"],\n \"X\": [\"zZ\", \"sS\", \"dD\", \"cC\", null, null],\n \"Y\": [\"tT\", \"6^\", \"7&\", \"uU\", \"hH\", \"gG\"],\n \"Z\": [null, \"aA\", \"sS\", \"xX\", null, null],\n \"[\": [\"pP\", \"-_\", \"=+\", \"]}\", \"'\\\"\", \";:\"],\n \"\\\\\": [\"]}\", null, null, null, null, null],\n \"]\": [\"[{\", \"=+\", null, \"\\\\|\", null, \"'\\\"\"],\n \"^\": [\"5%\", null, null, \"7&\", \"yY\", \"tT\"],\n \"_\": [\"0)\", null, null, \"=+\", \"[{\", \"pP\"],\n \"`\": [null, null, null, \"1!\", null, null],\n \"a\": [null, \"qQ\", \"wW\", \"sS\", \"zZ\", null],\n \"b\": [\"vV\", \"gG\", \"hH\", \"nN\", null, null],\n \"c\": [\"xX\", \"dD\", \"fF\", \"vV\", null, null],\n \"d\": [\"sS\", \"eE\", \"rR\", \"fF\", \"cC\", \"xX\"],\n \"e\": [\"wW\", \"3#\", \"4$\", \"rR\", \"dD\", \"sS\"],\n \"f\": [\"dD\", \"rR\", \"tT\", \"gG\", \"vV\", \"cC\"],\n \"g\": [\"fF\", \"tT\", \"yY\", \"hH\", \"bB\", \"vV\"],\n \"h\": [\"gG\", \"yY\", \"uU\", \"jJ\", \"nN\", \"bB\"],\n \"i\": [\"uU\", \"8*\", \"9(\", \"oO\", \"kK\", \"jJ\"],\n \"j\": [\"hH\", \"uU\", \"iI\", \"kK\", \"mM\", \"nN\"],\n \"k\": [\"jJ\", \"iI\", \"oO\", \"lL\", \",<\", \"mM\"],\n \"l\": [\"kK\", \"oO\", \"pP\", \";:\", \".>\", \",<\"],\n \"m\": [\"nN\", \"jJ\", \"kK\", \",<\", null, null],\n \"n\": [\"bB\", \"hH\", \"jJ\", \"mM\", null, null],\n \"o\": [\"iI\", \"9(\", \"0)\", \"pP\", \"lL\", \"kK\"],\n \"p\": [\"oO\", \"0)\", \"-_\", \"[{\", \";:\", \"lL\"],\n \"q\": [null, \"1!\", \"2@\", \"wW\", \"aA\", null],\n \"r\": [\"eE\", \"4$\", \"5%\", \"tT\", \"fF\", \"dD\"],\n \"s\": [\"aA\", \"wW\", \"eE\", \"dD\", \"xX\", \"zZ\"],\n \"t\": [\"rR\", \"5%\", \"6^\", \"yY\", \"gG\", \"fF\"],\n \"u\": [\"yY\", \"7&\", \"8*\", \"iI\", \"jJ\", \"hH\"],\n \"v\": [\"cC\", \"fF\", \"gG\", \"bB\", null, null],\n \"w\": [\"qQ\", \"2@\", \"3#\", \"eE\", \"sS\", \"aA\"],\n \"x\": [\"zZ\", \"sS\", \"dD\", \"cC\", null, null],\n \"y\": [\"tT\", \"6^\", \"7&\", \"uU\", \"hH\", \"gG\"],\n \"z\": [null, \"aA\", \"sS\", \"xX\", null, null],\n \"{\": [\"pP\", \"-_\", \"=+\", \"]}\", \"'\\\"\", \";:\"],\n \"|\": [\"]}\", null, null, null, null, null],\n \"}\": [\"[{\", \"=+\", null, \"\\\\|\", null, \"'\\\"\"],\n \"~\": [null, null, null, \"1!\", null, null]\n },\n dvorak: {\n \"!\": [\"`~\", null, null, \"2@\", \"'\\\"\", null],\n \"\\\"\": [null, \"1!\", \"2@\", \",<\", \"aA\", null],\n \"#\": [\"2@\", null, null, \"4$\", \".>\", \",<\"],\n \"$\": [\"3#\", null, null, \"5%\", \"pP\", \".>\"],\n \"%\": [\"4$\", null, null, \"6^\", \"yY\", \"pP\"],\n \"&\": [\"6^\", null, null, \"8*\", \"gG\", \"fF\"],\n \"'\": [null, \"1!\", \"2@\", \",<\", \"aA\", null],\n \"(\": [\"8*\", null, null, \"0)\", \"rR\", \"cC\"],\n \")\": [\"9(\", null, null, \"[{\", \"lL\", \"rR\"],\n \"*\": [\"7&\", null, null, \"9(\", \"cC\", \"gG\"],\n \"+\": [\"/?\", \"]}\", null, \"\\\\|\", null, \"-_\"],\n \",\": [\"'\\\"\", \"2@\", \"3#\", \".>\", \"oO\", \"aA\"],\n \"-\": [\"sS\", \"/?\", \"=+\", null, null, \"zZ\"],\n \".\": [\",<\", \"3#\", \"4$\", \"pP\", \"eE\", \"oO\"],\n \"/\": [\"lL\", \"[{\", \"]}\", \"=+\", \"-_\", \"sS\"],\n \"0\": [\"9(\", null, null, \"[{\", \"lL\", \"rR\"],\n \"1\": [\"`~\", null, null, \"2@\", \"'\\\"\", null],\n \"2\": [\"1!\", null, null, \"3#\", \",<\", \"'\\\"\"],\n \"3\": [\"2@\", null, null, \"4$\", \".>\", \",<\"],\n \"4\": [\"3#\", null, null, \"5%\", \"pP\", \".>\"],\n \"5\": [\"4$\", null, null, \"6^\", \"yY\", \"pP\"],\n \"6\": [\"5%\", null, null, \"7&\", \"fF\", \"yY\"],\n \"7\": [\"6^\", null, null, \"8*\", \"gG\", \"fF\"],\n \"8\": [\"7&\", null, null, \"9(\", \"cC\", \"gG\"],\n \"9\": [\"8*\", null, null, \"0)\", \"rR\", \"cC\"],\n \":\": [null, \"aA\", \"oO\", \"qQ\", null, null],\n \";\": [null, \"aA\", \"oO\", \"qQ\", null, null],\n \"<\": [\"'\\\"\", \"2@\", \"3#\", \".>\", \"oO\", \"aA\"],\n \"=\": [\"/?\", \"]}\", null, \"\\\\|\", null, \"-_\"],\n \">\": [\",<\", \"3#\", \"4$\", \"pP\", \"eE\", \"oO\"],\n \"?\": [\"lL\", \"[{\", \"]}\", \"=+\", \"-_\", \"sS\"],\n \"@\": [\"1!\", null, null, \"3#\", \",<\", \"'\\\"\"],\n \"A\": [null, \"'\\\"\", \",<\", \"oO\", \";:\", null],\n \"B\": [\"xX\", \"dD\", \"hH\", \"mM\", null, null],\n \"C\": [\"gG\", \"8*\", \"9(\", \"rR\", \"tT\", \"hH\"],\n \"D\": [\"iI\", \"fF\", \"gG\", \"hH\", \"bB\", \"xX\"],\n \"E\": [\"oO\", \".>\", \"pP\", \"uU\", \"jJ\", \"qQ\"],\n \"F\": [\"yY\", \"6^\", \"7&\", \"gG\", \"dD\", \"iI\"],\n \"G\": [\"fF\", \"7&\", \"8*\", \"cC\", \"hH\", \"dD\"],\n \"H\": [\"dD\", \"gG\", \"cC\", \"tT\", \"mM\", \"bB\"],\n \"I\": [\"uU\", \"yY\", \"fF\", \"dD\", \"xX\", \"kK\"],\n \"J\": [\"qQ\", \"eE\", \"uU\", \"kK\", null, null],\n \"K\": [\"jJ\", \"uU\", \"iI\", \"xX\", null, null],\n \"L\": [\"rR\", \"0)\", \"[{\", \"/?\", \"sS\", \"nN\"],\n \"M\": [\"bB\", \"hH\", \"tT\", \"wW\", null, null],\n \"N\": [\"tT\", \"rR\", \"lL\", \"sS\", \"vV\", \"wW\"],\n \"O\": [\"aA\", \",<\", \".>\", \"eE\", \"qQ\", \";:\"],\n \"P\": [\".>\", \"4$\", \"5%\", \"yY\", \"uU\", \"eE\"],\n \"Q\": [\";:\", \"oO\", \"eE\", \"jJ\", null, null],\n \"R\": [\"cC\", \"9(\", \"0)\", \"lL\", \"nN\", \"tT\"],\n \"S\": [\"nN\", \"lL\", \"/?\", \"-_\", \"zZ\", \"vV\"],\n \"T\": [\"hH\", \"cC\", \"rR\", \"nN\", \"wW\", \"mM\"],\n \"U\": [\"eE\", \"pP\", \"yY\", \"iI\", \"kK\", \"jJ\"],\n \"V\": [\"wW\", \"nN\", \"sS\", \"zZ\", null, null],\n \"W\": [\"mM\", \"tT\", \"nN\", \"vV\", null, null],\n \"X\": [\"kK\", \"iI\", \"dD\", \"bB\", null, null],\n \"Y\": [\"pP\", \"5%\", \"6^\", \"fF\", \"iI\", \"uU\"],\n \"Z\": [\"vV\", \"sS\", \"-_\", null, null, null],\n \"[\": [\"0)\", null, null, \"]}\", \"/?\", \"lL\"],\n \"\\\\\": [\"=+\", null, null, null, null, null],\n \"]\": [\"[{\", null, null, null, \"=+\", \"/?\"],\n \"^\": [\"5%\", null, null, \"7&\", \"fF\", \"yY\"],\n \"_\": [\"sS\", \"/?\", \"=+\", null, null, \"zZ\"],\n \"`\": [null, null, null, \"1!\", null, null],\n \"a\": [null, \"'\\\"\", \",<\", \"oO\", \";:\", null],\n \"b\": [\"xX\", \"dD\", \"hH\", \"mM\", null, null],\n \"c\": [\"gG\", \"8*\", \"9(\", \"rR\", \"tT\", \"hH\"],\n \"d\": [\"iI\", \"fF\", \"gG\", \"hH\", \"bB\", \"xX\"],\n \"e\": [\"oO\", \".>\", \"pP\", \"uU\", \"jJ\", \"qQ\"],\n \"f\": [\"yY\", \"6^\", \"7&\", \"gG\", \"dD\", \"iI\"],\n \"g\": [\"fF\", \"7&\", \"8*\", \"cC\", \"hH\", \"dD\"],\n \"h\": [\"dD\", \"gG\", \"cC\", \"tT\", \"mM\", \"bB\"],\n \"i\": [\"uU\", \"yY\", \"fF\", \"dD\", \"xX\", \"kK\"],\n \"j\": [\"qQ\", \"eE\", \"uU\", \"kK\", null, null],\n \"k\": [\"jJ\", \"uU\", \"iI\", \"xX\", null, null],\n \"l\": [\"rR\", \"0)\", \"[{\", \"/?\", \"sS\", \"nN\"],\n \"m\": [\"bB\", \"hH\", \"tT\", \"wW\", null, null],\n \"n\": [\"tT\", \"rR\", \"lL\", \"sS\", \"vV\", \"wW\"],\n \"o\": [\"aA\", \",<\", \".>\", \"eE\", \"qQ\", \";:\"],\n \"p\": [\".>\", \"4$\", \"5%\", \"yY\", \"uU\", \"eE\"],\n \"q\": [\";:\", \"oO\", \"eE\", \"jJ\", null, null],\n \"r\": [\"cC\", \"9(\", \"0)\", \"lL\", \"nN\", \"tT\"],\n \"s\": [\"nN\", \"lL\", \"/?\", \"-_\", \"zZ\", \"vV\"],\n \"t\": [\"hH\", \"cC\", \"rR\", \"nN\", \"wW\", \"mM\"],\n \"u\": [\"eE\", \"pP\", \"yY\", \"iI\", \"kK\", \"jJ\"],\n \"v\": [\"wW\", \"nN\", \"sS\", \"zZ\", null, null],\n \"w\": [\"mM\", \"tT\", \"nN\", \"vV\", null, null],\n \"x\": [\"kK\", \"iI\", \"dD\", \"bB\", null, null],\n \"y\": [\"pP\", \"5%\", \"6^\", \"fF\", \"iI\", \"uU\"],\n \"z\": [\"vV\", \"sS\", \"-_\", null, null, null],\n \"{\": [\"0)\", null, null, \"]}\", \"/?\", \"lL\"],\n \"|\": [\"=+\", null, null, null, null, null],\n \"}\": [\"[{\", null, null, null, \"=+\", \"/?\"],\n \"~\": [null, null, null, \"1!\", null, null]\n },\n keypad: {\n \"*\": [\"/\", null, null, null, \"-\", \"+\", \"9\", \"8\"],\n \"+\": [\"9\", \"*\", \"-\", null, null, null, null, \"6\"],\n \"-\": [\"*\", null, null, null, null, null, \"+\", \"9\"],\n \".\": [\"0\", \"2\", \"3\", null, null, null, null, null],\n \"/\": [null, null, null, null, \"*\", \"9\", \"8\", \"7\"],\n \"0\": [null, \"1\", \"2\", \"3\", \".\", null, null, null],\n \"1\": [null, null, \"4\", \"5\", \"2\", \"0\", null, null],\n \"2\": [\"1\", \"4\", \"5\", \"6\", \"3\", \".\", \"0\", null],\n \"3\": [\"2\", \"5\", \"6\", null, null, null, \".\", \"0\"],\n \"4\": [null, null, \"7\", \"8\", \"5\", \"2\", \"1\", null],\n \"5\": [\"4\", \"7\", \"8\", \"9\", \"6\", \"3\", \"2\", \"1\"],\n \"6\": [\"5\", \"8\", \"9\", \"+\", null, null, \"3\", \"2\"],\n \"7\": [null, null, null, \"/\", \"8\", \"5\", \"4\", null],\n \"8\": [\"7\", null, \"/\", \"*\", \"9\", \"6\", \"5\", \"4\"],\n \"9\": [\"8\", \"/\", \"*\", \"-\", \"+\", null, \"6\", \"5\"]\n },\n mac_keypad: {\n \"*\": [\"/\", null, null, null, null, null, \"-\", \"9\"],\n \"+\": [\"6\", \"9\", \"-\", null, null, null, null, \"3\"],\n \"-\": [\"9\", \"/\", \"*\", null, null, null, \"+\", \"6\"],\n \".\": [\"0\", \"2\", \"3\", null, null, null, null, null],\n \"/\": [\"=\", null, null, null, \"*\", \"-\", \"9\", \"8\"],\n \"0\": [null, \"1\", \"2\", \"3\", \".\", null, null, null],\n \"1\": [null, null, \"4\", \"5\", \"2\", \"0\", null, null],\n \"2\": [\"1\", \"4\", \"5\", \"6\", \"3\", \".\", \"0\", null],\n \"3\": [\"2\", \"5\", \"6\", \"+\", null, null, \".\", \"0\"],\n \"4\": [null, null, \"7\", \"8\", \"5\", \"2\", \"1\", null],\n \"5\": [\"4\", \"7\", \"8\", \"9\", \"6\", \"3\", \"2\", \"1\"],\n \"6\": [\"5\", \"8\", \"9\", \"-\", \"+\", null, \"3\", \"2\"],\n \"7\": [null, null, null, \"=\", \"8\", \"5\", \"4\", null],\n \"8\": [\"7\", null, \"=\", \"/\", \"9\", \"6\", \"5\", \"4\"],\n \"9\": [\"8\", \"=\", \"/\", \"*\", \"-\", \"+\", \"6\", \"5\"],\n \"=\": [null, null, null, null, \"/\", \"9\", \"8\", \"7\"]\n }\n};\n\nmodule.exports = adjacency_graphs;\n\n//# sourceMappingURL=adjacency_graphs.js.map\n","// Generated by CoffeeScript 1.10.0\nvar BRUTEFORCE_CARDINALITY, MIN_GUESSES_BEFORE_GROWING_SEQUENCE, MIN_SUBMATCH_GUESSES_MULTI_CHAR, MIN_SUBMATCH_GUESSES_SINGLE_CHAR, adjacency_graphs, calc_average_degree, k, scoring, v;\n\nadjacency_graphs = require('./adjacency_graphs');\n\ncalc_average_degree = function(graph) {\n var average, k, key, n, neighbors, v;\n average = 0;\n for (key in graph) {\n neighbors = graph[key];\n average += ((function() {\n var len, o, results;\n results = [];\n for (o = 0, len = neighbors.length; o < len; o++) {\n n = neighbors[o];\n if (n) {\n results.push(n);\n }\n }\n return results;\n })()).length;\n }\n average /= ((function() {\n var results;\n results = [];\n for (k in graph) {\n v = graph[k];\n results.push(k);\n }\n return results;\n })()).length;\n return average;\n};\n\nBRUTEFORCE_CARDINALITY = 10;\n\nMIN_GUESSES_BEFORE_GROWING_SEQUENCE = 10000;\n\nMIN_SUBMATCH_GUESSES_SINGLE_CHAR = 10;\n\nMIN_SUBMATCH_GUESSES_MULTI_CHAR = 50;\n\nscoring = {\n nCk: function(n, k) {\n var d, o, r, ref;\n if (k > n) {\n return 0;\n }\n if (k === 0) {\n return 1;\n }\n r = 1;\n for (d = o = 1, ref = k; 1 <= ref ? o <= ref : o >= ref; d = 1 <= ref ? ++o : --o) {\n r *= n;\n r /= d;\n n -= 1;\n }\n return r;\n },\n log10: function(n) {\n return Math.log(n) / Math.log(10);\n },\n log2: function(n) {\n return Math.log(n) / Math.log(2);\n },\n factorial: function(n) {\n var f, i, o, ref;\n if (n < 2) {\n return 1;\n }\n f = 1;\n for (i = o = 2, ref = n; 2 <= ref ? o <= ref : o >= ref; i = 2 <= ref ? ++o : --o) {\n f *= i;\n }\n return f;\n },\n most_guessable_match_sequence: function(password, matches, _exclude_additive) {\n var _, bruteforce_update, guesses, k, l, len, len1, len2, lst, m, make_bruteforce_match, matches_by_j, n, o, optimal, optimal_l, optimal_match_sequence, q, ref, ref1, u, unwind, update, w;\n if (_exclude_additive == null) {\n _exclude_additive = false;\n }\n n = password.length;\n matches_by_j = (function() {\n var o, ref, results;\n results = [];\n for (_ = o = 0, ref = n; 0 <= ref ? o < ref : o > ref; _ = 0 <= ref ? ++o : --o) {\n results.push([]);\n }\n return results;\n })();\n for (o = 0, len = matches.length; o < len; o++) {\n m = matches[o];\n matches_by_j[m.j].push(m);\n }\n for (q = 0, len1 = matches_by_j.length; q < len1; q++) {\n lst = matches_by_j[q];\n lst.sort(function(m1, m2) {\n return m1.i - m2.i;\n });\n }\n optimal = {\n m: (function() {\n var ref, results, u;\n results = [];\n for (_ = u = 0, ref = n; 0 <= ref ? u < ref : u > ref; _ = 0 <= ref ? ++u : --u) {\n results.push({});\n }\n return results;\n })(),\n pi: (function() {\n var ref, results, u;\n results = [];\n for (_ = u = 0, ref = n; 0 <= ref ? u < ref : u > ref; _ = 0 <= ref ? ++u : --u) {\n results.push({});\n }\n return results;\n })(),\n g: (function() {\n var ref, results, u;\n results = [];\n for (_ = u = 0, ref = n; 0 <= ref ? u < ref : u > ref; _ = 0 <= ref ? ++u : --u) {\n results.push({});\n }\n return results;\n })()\n };\n update = (function(_this) {\n return function(m, l) {\n var competing_g, competing_l, g, k, pi, ref;\n k = m.j;\n pi = _this.estimate_guesses(m, password);\n if (l > 1) {\n pi *= optimal.pi[m.i - 1][l - 1];\n }\n g = _this.factorial(l) * pi;\n if (!_exclude_additive) {\n g += Math.pow(MIN_GUESSES_BEFORE_GROWING_SEQUENCE, l - 1);\n }\n ref = optimal.g[k];\n for (competing_l in ref) {\n competing_g = ref[competing_l];\n if (competing_l > l) {\n continue;\n }\n if (competing_g <= g) {\n return;\n }\n }\n optimal.g[k][l] = g;\n optimal.m[k][l] = m;\n return optimal.pi[k][l] = pi;\n };\n })(this);\n bruteforce_update = (function(_this) {\n return function(k) {\n var i, l, last_m, ref, results, u;\n m = make_bruteforce_match(0, k);\n update(m, 1);\n results = [];\n for (i = u = 1, ref = k; 1 <= ref ? u <= ref : u >= ref; i = 1 <= ref ? ++u : --u) {\n m = make_bruteforce_match(i, k);\n results.push((function() {\n var ref1, results1;\n ref1 = optimal.m[i - 1];\n results1 = [];\n for (l in ref1) {\n last_m = ref1[l];\n l = parseInt(l);\n if (last_m.pattern === 'bruteforce') {\n continue;\n }\n results1.push(update(m, l + 1));\n }\n return results1;\n })());\n }\n return results;\n };\n })(this);\n make_bruteforce_match = (function(_this) {\n return function(i, j) {\n return {\n pattern: 'bruteforce',\n token: password.slice(i, +j + 1 || 9e9),\n i: i,\n j: j\n };\n };\n })(this);\n unwind = (function(_this) {\n return function(n) {\n var candidate_g, candidate_l, g, k, l, optimal_match_sequence, ref;\n optimal_match_sequence = [];\n k = n - 1;\n l = void 0;\n g = Infinity;\n ref = optimal.g[k];\n for (candidate_l in ref) {\n candidate_g = ref[candidate_l];\n if (candidate_g < g) {\n l = candidate_l;\n g = candidate_g;\n }\n }\n while (k >= 0) {\n m = optimal.m[k][l];\n optimal_match_sequence.unshift(m);\n k = m.i - 1;\n l--;\n }\n return optimal_match_sequence;\n };\n })(this);\n for (k = u = 0, ref = n; 0 <= ref ? u < ref : u > ref; k = 0 <= ref ? ++u : --u) {\n ref1 = matches_by_j[k];\n for (w = 0, len2 = ref1.length; w < len2; w++) {\n m = ref1[w];\n if (m.i > 0) {\n for (l in optimal.m[m.i - 1]) {\n l = parseInt(l);\n update(m, l + 1);\n }\n } else {\n update(m, 1);\n }\n }\n bruteforce_update(k);\n }\n optimal_match_sequence = unwind(n);\n optimal_l = optimal_match_sequence.length;\n if (password.length === 0) {\n guesses = 1;\n } else {\n guesses = optimal.g[n - 1][optimal_l];\n }\n return {\n password: password,\n guesses: guesses,\n guesses_log10: this.log10(guesses),\n sequence: optimal_match_sequence\n };\n },\n estimate_guesses: function(match, password) {\n var estimation_functions, guesses, min_guesses;\n if (match.guesses != null) {\n return match.guesses;\n }\n min_guesses = 1;\n if (match.token.length < password.length) {\n min_guesses = match.token.length === 1 ? MIN_SUBMATCH_GUESSES_SINGLE_CHAR : MIN_SUBMATCH_GUESSES_MULTI_CHAR;\n }\n estimation_functions = {\n bruteforce: this.bruteforce_guesses,\n dictionary: this.dictionary_guesses,\n spatial: this.spatial_guesses,\n repeat: this.repeat_guesses,\n sequence: this.sequence_guesses,\n regex: this.regex_guesses,\n date: this.date_guesses\n };\n guesses = estimation_functions[match.pattern].call(this, match);\n match.guesses = Math.max(guesses, min_guesses);\n match.guesses_log10 = this.log10(match.guesses);\n return match.guesses;\n },\n bruteforce_guesses: function(match) {\n var guesses, min_guesses;\n guesses = Math.pow(BRUTEFORCE_CARDINALITY, match.token.length);\n if (guesses === Number.POSITIVE_INFINITY) {\n guesses = Number.MAX_VALUE;\n }\n min_guesses = match.token.length === 1 ? MIN_SUBMATCH_GUESSES_SINGLE_CHAR + 1 : MIN_SUBMATCH_GUESSES_MULTI_CHAR + 1;\n return Math.max(guesses, min_guesses);\n },\n repeat_guesses: function(match) {\n return match.base_guesses * match.repeat_count;\n },\n sequence_guesses: function(match) {\n var base_guesses, first_chr;\n first_chr = match.token.charAt(0);\n if (first_chr === 'a' || first_chr === 'A' || first_chr === 'z' || first_chr === 'Z' || first_chr === '0' || first_chr === '1' || first_chr === '9') {\n base_guesses = 4;\n } else {\n if (first_chr.match(/\\d/)) {\n base_guesses = 10;\n } else {\n base_guesses = 26;\n }\n }\n if (!match.ascending) {\n base_guesses *= 2;\n }\n return base_guesses * match.token.length;\n },\n MIN_YEAR_SPACE: 20,\n REFERENCE_YEAR: new Date().getFullYear(),\n regex_guesses: function(match) {\n var char_class_bases, year_space;\n char_class_bases = {\n alpha_lower: 26,\n alpha_upper: 26,\n alpha: 52,\n alphanumeric: 62,\n digits: 10,\n symbols: 33\n };\n if (match.regex_name in char_class_bases) {\n return Math.pow(char_class_bases[match.regex_name], match.token.length);\n } else {\n switch (match.regex_name) {\n case 'recent_year':\n year_space = Math.abs(parseInt(match.regex_match[0]) - this.REFERENCE_YEAR);\n year_space = Math.max(year_space, this.MIN_YEAR_SPACE);\n return year_space;\n }\n }\n },\n date_guesses: function(match) {\n var guesses, year_space;\n year_space = Math.max(Math.abs(match.year - this.REFERENCE_YEAR), this.MIN_YEAR_SPACE);\n guesses = year_space * 365;\n if (match.separator) {\n guesses *= 4;\n }\n return guesses;\n },\n KEYBOARD_AVERAGE_DEGREE: calc_average_degree(adjacency_graphs.qwerty),\n KEYPAD_AVERAGE_DEGREE: calc_average_degree(adjacency_graphs.keypad),\n KEYBOARD_STARTING_POSITIONS: ((function() {\n var ref, results;\n ref = adjacency_graphs.qwerty;\n results = [];\n for (k in ref) {\n v = ref[k];\n results.push(k);\n }\n return results;\n })()).length,\n KEYPAD_STARTING_POSITIONS: ((function() {\n var ref, results;\n ref = adjacency_graphs.keypad;\n results = [];\n for (k in ref) {\n v = ref[k];\n results.push(k);\n }\n return results;\n })()).length,\n spatial_guesses: function(match) {\n var L, S, U, d, guesses, i, j, o, possible_turns, q, ref, ref1, ref2, ref3, s, shifted_variations, t, u;\n if ((ref = match.graph) === 'qwerty' || ref === 'dvorak') {\n s = this.KEYBOARD_STARTING_POSITIONS;\n d = this.KEYBOARD_AVERAGE_DEGREE;\n } else {\n s = this.KEYPAD_STARTING_POSITIONS;\n d = this.KEYPAD_AVERAGE_DEGREE;\n }\n guesses = 0;\n L = match.token.length;\n t = match.turns;\n for (i = o = 2, ref1 = L; 2 <= ref1 ? o <= ref1 : o >= ref1; i = 2 <= ref1 ? ++o : --o) {\n possible_turns = Math.min(t, i - 1);\n for (j = q = 1, ref2 = possible_turns; 1 <= ref2 ? q <= ref2 : q >= ref2; j = 1 <= ref2 ? ++q : --q) {\n guesses += this.nCk(i - 1, j - 1) * s * Math.pow(d, j);\n }\n }\n if (match.shifted_count) {\n S = match.shifted_count;\n U = match.token.length - match.shifted_count;\n if (S === 0 || U === 0) {\n guesses *= 2;\n } else {\n shifted_variations = 0;\n for (i = u = 1, ref3 = Math.min(S, U); 1 <= ref3 ? u <= ref3 : u >= ref3; i = 1 <= ref3 ? ++u : --u) {\n shifted_variations += this.nCk(S + U, i);\n }\n guesses *= shifted_variations;\n }\n }\n return guesses;\n },\n dictionary_guesses: function(match) {\n var reversed_variations;\n match.base_guesses = match.rank;\n match.uppercase_variations = this.uppercase_variations(match);\n match.l33t_variations = this.l33t_variations(match);\n reversed_variations = match.reversed && 2 || 1;\n return match.base_guesses * match.uppercase_variations * match.l33t_variations * reversed_variations;\n },\n START_UPPER: /^[A-Z][^A-Z]+$/,\n END_UPPER: /^[^A-Z]+[A-Z]$/,\n ALL_UPPER: /^[^a-z]+$/,\n ALL_LOWER: /^[^A-Z]+$/,\n uppercase_variations: function(match) {\n var L, U, chr, i, len, o, q, ref, ref1, regex, variations, word;\n word = match.token;\n if (word.match(this.ALL_LOWER) || word.toLowerCase() === word) {\n return 1;\n }\n ref = [this.START_UPPER, this.END_UPPER, this.ALL_UPPER];\n for (o = 0, len = ref.length; o < len; o++) {\n regex = ref[o];\n if (word.match(regex)) {\n return 2;\n }\n }\n U = ((function() {\n var len1, q, ref1, results;\n ref1 = word.split('');\n results = [];\n for (q = 0, len1 = ref1.length; q < len1; q++) {\n chr = ref1[q];\n if (chr.match(/[A-Z]/)) {\n results.push(chr);\n }\n }\n return results;\n })()).length;\n L = ((function() {\n var len1, q, ref1, results;\n ref1 = word.split('');\n results = [];\n for (q = 0, len1 = ref1.length; q < len1; q++) {\n chr = ref1[q];\n if (chr.match(/[a-z]/)) {\n results.push(chr);\n }\n }\n return results;\n })()).length;\n variations = 0;\n for (i = q = 1, ref1 = Math.min(U, L); 1 <= ref1 ? q <= ref1 : q >= ref1; i = 1 <= ref1 ? ++q : --q) {\n variations += this.nCk(U + L, i);\n }\n return variations;\n },\n l33t_variations: function(match) {\n var S, U, chr, chrs, i, o, p, possibilities, ref, ref1, subbed, unsubbed, variations;\n if (!match.l33t) {\n return 1;\n }\n variations = 1;\n ref = match.sub;\n for (subbed in ref) {\n unsubbed = ref[subbed];\n chrs = match.token.toLowerCase().split('');\n S = ((function() {\n var len, o, results;\n results = [];\n for (o = 0, len = chrs.length; o < len; o++) {\n chr = chrs[o];\n if (chr === subbed) {\n results.push(chr);\n }\n }\n return results;\n })()).length;\n U = ((function() {\n var len, o, results;\n results = [];\n for (o = 0, len = chrs.length; o < len; o++) {\n chr = chrs[o];\n if (chr === unsubbed) {\n results.push(chr);\n }\n }\n return results;\n })()).length;\n if (S === 0 || U === 0) {\n variations *= 2;\n } else {\n p = Math.min(U, S);\n possibilities = 0;\n for (i = o = 1, ref1 = p; 1 <= ref1 ? o <= ref1 : o >= ref1; i = 1 <= ref1 ? ++o : --o) {\n possibilities += this.nCk(U + S, i);\n }\n variations *= possibilities;\n }\n }\n return variations;\n }\n};\n\nmodule.exports = scoring;\n\n//# sourceMappingURL=scoring.js.map\n","// Generated by CoffeeScript 1.10.0\nvar DATE_MAX_YEAR, DATE_MIN_YEAR, DATE_SPLITS, GRAPHS, L33T_TABLE, RANKED_DICTIONARIES, REGEXEN, adjacency_graphs, build_ranked_dict, frequency_lists, lst, matching, name, scoring;\n\nfrequency_lists = require('./frequency_lists');\n\nadjacency_graphs = require('./adjacency_graphs');\n\nscoring = require('./scoring');\n\nbuild_ranked_dict = function(ordered_list) {\n var i, len1, o, result, word;\n result = {};\n i = 1;\n for (o = 0, len1 = ordered_list.length; o < len1; o++) {\n word = ordered_list[o];\n result[word] = i;\n i += 1;\n }\n return result;\n};\n\nRANKED_DICTIONARIES = {};\n\nfor (name in frequency_lists) {\n lst = frequency_lists[name];\n RANKED_DICTIONARIES[name] = build_ranked_dict(lst);\n}\n\nGRAPHS = {\n qwerty: adjacency_graphs.qwerty,\n dvorak: adjacency_graphs.dvorak,\n keypad: adjacency_graphs.keypad,\n mac_keypad: adjacency_graphs.mac_keypad\n};\n\nL33T_TABLE = {\n a: ['4', '@'],\n b: ['8'],\n c: ['(', '{', '[', '<'],\n e: ['3'],\n g: ['6', '9'],\n i: ['1', '!', '|'],\n l: ['1', '|', '7'],\n o: ['0'],\n s: ['$', '5'],\n t: ['+', '7'],\n x: ['%'],\n z: ['2']\n};\n\nREGEXEN = {\n recent_year: /19\\d\\d|200\\d|201\\d/g\n};\n\nDATE_MAX_YEAR = 2050;\n\nDATE_MIN_YEAR = 1000;\n\nDATE_SPLITS = {\n 4: [[1, 2], [2, 3]],\n 5: [[1, 3], [2, 3]],\n 6: [[1, 2], [2, 4], [4, 5]],\n 7: [[1, 3], [2, 3], [4, 5], [4, 6]],\n 8: [[2, 4], [4, 6]]\n};\n\nmatching = {\n empty: function(obj) {\n var k;\n return ((function() {\n var results;\n results = [];\n for (k in obj) {\n results.push(k);\n }\n return results;\n })()).length === 0;\n },\n extend: function(lst, lst2) {\n return lst.push.apply(lst, lst2);\n },\n translate: function(string, chr_map) {\n var chr;\n return ((function() {\n var len1, o, ref, results;\n ref = string.split('');\n results = [];\n for (o = 0, len1 = ref.length; o < len1; o++) {\n chr = ref[o];\n results.push(chr_map[chr] || chr);\n }\n return results;\n })()).join('');\n },\n mod: function(n, m) {\n return ((n % m) + m) % m;\n },\n sorted: function(matches) {\n return matches.sort(function(m1, m2) {\n return (m1.i - m2.i) || (m1.j - m2.j);\n });\n },\n omnimatch: function(password) {\n var len1, matcher, matchers, matches, o;\n matches = [];\n matchers = [this.dictionary_match, this.reverse_dictionary_match, this.l33t_match, this.spatial_match, this.repeat_match, this.sequence_match, this.regex_match, this.date_match];\n for (o = 0, len1 = matchers.length; o < len1; o++) {\n matcher = matchers[o];\n this.extend(matches, matcher.call(this, password));\n }\n return this.sorted(matches);\n },\n dictionary_match: function(password, _ranked_dictionaries) {\n var dictionary_name, i, j, len, matches, o, p, password_lower, rank, ranked_dict, ref, ref1, ref2, word;\n if (_ranked_dictionaries == null) {\n _ranked_dictionaries = RANKED_DICTIONARIES;\n }\n matches = [];\n len = password.length;\n password_lower = password.toLowerCase();\n for (dictionary_name in _ranked_dictionaries) {\n ranked_dict = _ranked_dictionaries[dictionary_name];\n for (i = o = 0, ref = len; 0 <= ref ? o < ref : o > ref; i = 0 <= ref ? ++o : --o) {\n for (j = p = ref1 = i, ref2 = len; ref1 <= ref2 ? p < ref2 : p > ref2; j = ref1 <= ref2 ? ++p : --p) {\n if (password_lower.slice(i, +j + 1 || 9e9) in ranked_dict) {\n word = password_lower.slice(i, +j + 1 || 9e9);\n rank = ranked_dict[word];\n matches.push({\n pattern: 'dictionary',\n i: i,\n j: j,\n token: password.slice(i, +j + 1 || 9e9),\n matched_word: word,\n rank: rank,\n dictionary_name: dictionary_name,\n reversed: false,\n l33t: false\n });\n }\n }\n }\n }\n return this.sorted(matches);\n },\n reverse_dictionary_match: function(password, _ranked_dictionaries) {\n var len1, match, matches, o, ref, reversed_password;\n if (_ranked_dictionaries == null) {\n _ranked_dictionaries = RANKED_DICTIONARIES;\n }\n reversed_password = password.split('').reverse().join('');\n matches = this.dictionary_match(reversed_password, _ranked_dictionaries);\n for (o = 0, len1 = matches.length; o < len1; o++) {\n match = matches[o];\n match.token = match.token.split('').reverse().join('');\n match.reversed = true;\n ref = [password.length - 1 - match.j, password.length - 1 - match.i], match.i = ref[0], match.j = ref[1];\n }\n return this.sorted(matches);\n },\n set_user_input_dictionary: function(ordered_list) {\n return RANKED_DICTIONARIES['user_inputs'] = build_ranked_dict(ordered_list.slice());\n },\n relevant_l33t_subtable: function(password, table) {\n var chr, len1, letter, o, password_chars, ref, relevant_subs, sub, subs, subtable;\n password_chars = {};\n ref = password.split('');\n for (o = 0, len1 = ref.length; o < len1; o++) {\n chr = ref[o];\n password_chars[chr] = true;\n }\n subtable = {};\n for (letter in table) {\n subs = table[letter];\n relevant_subs = (function() {\n var len2, p, results;\n results = [];\n for (p = 0, len2 = subs.length; p < len2; p++) {\n sub = subs[p];\n if (sub in password_chars) {\n results.push(sub);\n }\n }\n return results;\n })();\n if (relevant_subs.length > 0) {\n subtable[letter] = relevant_subs;\n }\n }\n return subtable;\n },\n enumerate_l33t_subs: function(table) {\n var chr, dedup, helper, k, keys, l33t_chr, len1, len2, o, p, ref, sub, sub_dict, sub_dicts, subs;\n keys = (function() {\n var results;\n results = [];\n for (k in table) {\n results.push(k);\n }\n return results;\n })();\n subs = [[]];\n dedup = function(subs) {\n var assoc, deduped, label, len1, members, o, sub, v;\n deduped = [];\n members = {};\n for (o = 0, len1 = subs.length; o < len1; o++) {\n sub = subs[o];\n assoc = (function() {\n var len2, p, results;\n results = [];\n for (v = p = 0, len2 = sub.length; p < len2; v = ++p) {\n k = sub[v];\n results.push([k, v]);\n }\n return results;\n })();\n assoc.sort();\n label = ((function() {\n var len2, p, results;\n results = [];\n for (v = p = 0, len2 = assoc.length; p < len2; v = ++p) {\n k = assoc[v];\n results.push(k + ',' + v);\n }\n return results;\n })()).join('-');\n if (!(label in members)) {\n members[label] = true;\n deduped.push(sub);\n }\n }\n return deduped;\n };\n helper = function(keys) {\n var dup_l33t_index, first_key, i, l33t_chr, len1, len2, next_subs, o, p, q, ref, ref1, rest_keys, sub, sub_alternative, sub_extension;\n if (!keys.length) {\n return;\n }\n first_key = keys[0];\n rest_keys = keys.slice(1);\n next_subs = [];\n ref = table[first_key];\n for (o = 0, len1 = ref.length; o < len1; o++) {\n l33t_chr = ref[o];\n for (p = 0, len2 = subs.length; p < len2; p++) {\n sub = subs[p];\n dup_l33t_index = -1;\n for (i = q = 0, ref1 = sub.length; 0 <= ref1 ? q < ref1 : q > ref1; i = 0 <= ref1 ? ++q : --q) {\n if (sub[i][0] === l33t_chr) {\n dup_l33t_index = i;\n break;\n }\n }\n if (dup_l33t_index === -1) {\n sub_extension = sub.concat([[l33t_chr, first_key]]);\n next_subs.push(sub_extension);\n } else {\n sub_alternative = sub.slice(0);\n sub_alternative.splice(dup_l33t_index, 1);\n sub_alternative.push([l33t_chr, first_key]);\n next_subs.push(sub);\n next_subs.push(sub_alternative);\n }\n }\n }\n subs = dedup(next_subs);\n return helper(rest_keys);\n };\n helper(keys);\n sub_dicts = [];\n for (o = 0, len1 = subs.length; o < len1; o++) {\n sub = subs[o];\n sub_dict = {};\n for (p = 0, len2 = sub.length; p < len2; p++) {\n ref = sub[p], l33t_chr = ref[0], chr = ref[1];\n sub_dict[l33t_chr] = chr;\n }\n sub_dicts.push(sub_dict);\n }\n return sub_dicts;\n },\n l33t_match: function(password, _ranked_dictionaries, _l33t_table) {\n var chr, k, len1, len2, match, match_sub, matches, o, p, ref, ref1, sub, subbed_chr, subbed_password, token, v;\n if (_ranked_dictionaries == null) {\n _ranked_dictionaries = RANKED_DICTIONARIES;\n }\n if (_l33t_table == null) {\n _l33t_table = L33T_TABLE;\n }\n matches = [];\n ref = this.enumerate_l33t_subs(this.relevant_l33t_subtable(password, _l33t_table));\n for (o = 0, len1 = ref.length; o < len1; o++) {\n sub = ref[o];\n if (this.empty(sub)) {\n break;\n }\n subbed_password = this.translate(password, sub);\n ref1 = this.dictionary_match(subbed_password, _ranked_dictionaries);\n for (p = 0, len2 = ref1.length; p < len2; p++) {\n match = ref1[p];\n token = password.slice(match.i, +match.j + 1 || 9e9);\n if (token.toLowerCase() === match.matched_word) {\n continue;\n }\n match_sub = {};\n for (subbed_chr in sub) {\n chr = sub[subbed_chr];\n if (token.indexOf(subbed_chr) !== -1) {\n match_sub[subbed_chr] = chr;\n }\n }\n match.l33t = true;\n match.token = token;\n match.sub = match_sub;\n match.sub_display = ((function() {\n var results;\n results = [];\n for (k in match_sub) {\n v = match_sub[k];\n results.push(k + \" -> \" + v);\n }\n return results;\n })()).join(', ');\n matches.push(match);\n }\n }\n return this.sorted(matches.filter(function(match) {\n return match.token.length > 1;\n }));\n },\n spatial_match: function(password, _graphs) {\n var graph, graph_name, matches;\n if (_graphs == null) {\n _graphs = GRAPHS;\n }\n matches = [];\n for (graph_name in _graphs) {\n graph = _graphs[graph_name];\n this.extend(matches, this.spatial_match_helper(password, graph, graph_name));\n }\n return this.sorted(matches);\n },\n SHIFTED_RX: /[~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:\"ZXCVBNM<>?]/,\n spatial_match_helper: function(password, graph, graph_name) {\n var adj, adjacents, cur_char, cur_direction, found, found_direction, i, j, last_direction, len1, matches, o, prev_char, shifted_count, turns;\n matches = [];\n i = 0;\n while (i < password.length - 1) {\n j = i + 1;\n last_direction = null;\n turns = 0;\n if ((graph_name === 'qwerty' || graph_name === 'dvorak') && this.SHIFTED_RX.exec(password.charAt(i))) {\n shifted_count = 1;\n } else {\n shifted_count = 0;\n }\n while (true) {\n prev_char = password.charAt(j - 1);\n found = false;\n found_direction = -1;\n cur_direction = -1;\n adjacents = graph[prev_char] || [];\n if (j < password.length) {\n cur_char = password.charAt(j);\n for (o = 0, len1 = adjacents.length; o < len1; o++) {\n adj = adjacents[o];\n cur_direction += 1;\n if (adj && adj.indexOf(cur_char) !== -1) {\n found = true;\n found_direction = cur_direction;\n if (adj.indexOf(cur_char) === 1) {\n shifted_count += 1;\n }\n if (last_direction !== found_direction) {\n turns += 1;\n last_direction = found_direction;\n }\n break;\n }\n }\n }\n if (found) {\n j += 1;\n } else {\n if (j - i > 2) {\n matches.push({\n pattern: 'spatial',\n i: i,\n j: j - 1,\n token: password.slice(i, j),\n graph: graph_name,\n turns: turns,\n shifted_count: shifted_count\n });\n }\n i = j;\n break;\n }\n }\n }\n return matches;\n },\n repeat_match: function(password) {\n var base_analysis, base_guesses, base_matches, base_token, greedy, greedy_match, i, j, lastIndex, lazy, lazy_anchored, lazy_match, match, matches, ref;\n matches = [];\n greedy = /(.+)\\1+/g;\n lazy = /(.+?)\\1+/g;\n lazy_anchored = /^(.+?)\\1+$/;\n lastIndex = 0;\n while (lastIndex < password.length) {\n greedy.lastIndex = lazy.lastIndex = lastIndex;\n greedy_match = greedy.exec(password);\n lazy_match = lazy.exec(password);\n if (greedy_match == null) {\n break;\n }\n if (greedy_match[0].length > lazy_match[0].length) {\n match = greedy_match;\n base_token = lazy_anchored.exec(match[0])[1];\n } else {\n match = lazy_match;\n base_token = match[1];\n }\n ref = [match.index, match.index + match[0].length - 1], i = ref[0], j = ref[1];\n base_analysis = scoring.most_guessable_match_sequence(base_token, this.omnimatch(base_token));\n base_matches = base_analysis.sequence;\n base_guesses = base_analysis.guesses;\n matches.push({\n pattern: 'repeat',\n i: i,\n j: j,\n token: match[0],\n base_token: base_token,\n base_guesses: base_guesses,\n base_matches: base_matches,\n repeat_count: match[0].length / base_token.length\n });\n lastIndex = j + 1;\n }\n return matches;\n },\n MAX_DELTA: 5,\n sequence_match: function(password) {\n var delta, i, j, k, last_delta, o, ref, result, update;\n if (password.length === 1) {\n return [];\n }\n update = (function(_this) {\n return function(i, j, delta) {\n var ref, sequence_name, sequence_space, token;\n if (j - i > 1 || Math.abs(delta) === 1) {\n if ((0 < (ref = Math.abs(delta)) && ref <= _this.MAX_DELTA)) {\n token = password.slice(i, +j + 1 || 9e9);\n if (/^[a-z]+$/.test(token)) {\n sequence_name = 'lower';\n sequence_space = 26;\n } else if (/^[A-Z]+$/.test(token)) {\n sequence_name = 'upper';\n sequence_space = 26;\n } else if (/^\\d+$/.test(token)) {\n sequence_name = 'digits';\n sequence_space = 10;\n } else {\n sequence_name = 'unicode';\n sequence_space = 26;\n }\n return result.push({\n pattern: 'sequence',\n i: i,\n j: j,\n token: password.slice(i, +j + 1 || 9e9),\n sequence_name: sequence_name,\n sequence_space: sequence_space,\n ascending: delta > 0\n });\n }\n }\n };\n })(this);\n result = [];\n i = 0;\n last_delta = null;\n for (k = o = 1, ref = password.length; 1 <= ref ? o < ref : o > ref; k = 1 <= ref ? ++o : --o) {\n delta = password.charCodeAt(k) - password.charCodeAt(k - 1);\n if (last_delta == null) {\n last_delta = delta;\n }\n if (delta === last_delta) {\n continue;\n }\n j = k - 1;\n update(i, j, last_delta);\n i = j;\n last_delta = delta;\n }\n update(i, password.length - 1, last_delta);\n return result;\n },\n regex_match: function(password, _regexen) {\n var matches, regex, rx_match, token;\n if (_regexen == null) {\n _regexen = REGEXEN;\n }\n matches = [];\n for (name in _regexen) {\n regex = _regexen[name];\n regex.lastIndex = 0;\n while (rx_match = regex.exec(password)) {\n token = rx_match[0];\n matches.push({\n pattern: 'regex',\n token: token,\n i: rx_match.index,\n j: rx_match.index + rx_match[0].length - 1,\n regex_name: name,\n regex_match: rx_match\n });\n }\n }\n return this.sorted(matches);\n },\n date_match: function(password) {\n var best_candidate, candidate, candidates, distance, dmy, i, j, k, l, len1, len2, matches, maybe_date_no_separator, maybe_date_with_separator, metric, min_distance, o, p, q, r, ref, ref1, ref2, ref3, ref4, ref5, ref6, ref7, ref8, ref9, rx_match, s, t, token;\n matches = [];\n maybe_date_no_separator = /^\\d{4,8}$/;\n maybe_date_with_separator = /^(\\d{1,4})([\\s\\/\\\\_.-])(\\d{1,2})\\2(\\d{1,4})$/;\n for (i = o = 0, ref = password.length - 4; 0 <= ref ? o <= ref : o >= ref; i = 0 <= ref ? ++o : --o) {\n for (j = p = ref1 = i + 3, ref2 = i + 7; ref1 <= ref2 ? p <= ref2 : p >= ref2; j = ref1 <= ref2 ? ++p : --p) {\n if (j >= password.length) {\n break;\n }\n token = password.slice(i, +j + 1 || 9e9);\n if (!maybe_date_no_separator.exec(token)) {\n continue;\n }\n candidates = [];\n ref3 = DATE_SPLITS[token.length];\n for (q = 0, len1 = ref3.length; q < len1; q++) {\n ref4 = ref3[q], k = ref4[0], l = ref4[1];\n dmy = this.map_ints_to_dmy([parseInt(token.slice(0, k)), parseInt(token.slice(k, l)), parseInt(token.slice(l))]);\n if (dmy != null) {\n candidates.push(dmy);\n }\n }\n if (!(candidates.length > 0)) {\n continue;\n }\n best_candidate = candidates[0];\n metric = function(candidate) {\n return Math.abs(candidate.year - scoring.REFERENCE_YEAR);\n };\n min_distance = metric(candidates[0]);\n ref5 = candidates.slice(1);\n for (r = 0, len2 = ref5.length; r < len2; r++) {\n candidate = ref5[r];\n distance = metric(candidate);\n if (distance < min_distance) {\n ref6 = [candidate, distance], best_candidate = ref6[0], min_distance = ref6[1];\n }\n }\n matches.push({\n pattern: 'date',\n token: token,\n i: i,\n j: j,\n separator: '',\n year: best_candidate.year,\n month: best_candidate.month,\n day: best_candidate.day\n });\n }\n }\n for (i = s = 0, ref7 = password.length - 6; 0 <= ref7 ? s <= ref7 : s >= ref7; i = 0 <= ref7 ? ++s : --s) {\n for (j = t = ref8 = i + 5, ref9 = i + 9; ref8 <= ref9 ? t <= ref9 : t >= ref9; j = ref8 <= ref9 ? ++t : --t) {\n if (j >= password.length) {\n break;\n }\n token = password.slice(i, +j + 1 || 9e9);\n rx_match = maybe_date_with_separator.exec(token);\n if (rx_match == null) {\n continue;\n }\n dmy = this.map_ints_to_dmy([parseInt(rx_match[1]), parseInt(rx_match[3]), parseInt(rx_match[4])]);\n if (dmy == null) {\n continue;\n }\n matches.push({\n pattern: 'date',\n token: token,\n i: i,\n j: j,\n separator: rx_match[2],\n year: dmy.year,\n month: dmy.month,\n day: dmy.day\n });\n }\n }\n return this.sorted(matches.filter(function(match) {\n var is_submatch, len3, other_match, u;\n is_submatch = false;\n for (u = 0, len3 = matches.length; u < len3; u++) {\n other_match = matches[u];\n if (match === other_match) {\n continue;\n }\n if (other_match.i <= match.i && other_match.j >= match.j) {\n is_submatch = true;\n break;\n }\n }\n return !is_submatch;\n }));\n },\n map_ints_to_dmy: function(ints) {\n var dm, int, len1, len2, len3, o, over_12, over_31, p, possible_year_splits, q, ref, ref1, rest, under_1, y;\n if (ints[1] > 31 || ints[1] <= 0) {\n return;\n }\n over_12 = 0;\n over_31 = 0;\n under_1 = 0;\n for (o = 0, len1 = ints.length; o < len1; o++) {\n int = ints[o];\n if ((99 < int && int < DATE_MIN_YEAR) || int > DATE_MAX_YEAR) {\n return;\n }\n if (int > 31) {\n over_31 += 1;\n }\n if (int > 12) {\n over_12 += 1;\n }\n if (int <= 0) {\n under_1 += 1;\n }\n }\n if (over_31 >= 2 || over_12 === 3 || under_1 >= 2) {\n return;\n }\n possible_year_splits = [[ints[2], ints.slice(0, 2)], [ints[0], ints.slice(1, 3)]];\n for (p = 0, len2 = possible_year_splits.length; p < len2; p++) {\n ref = possible_year_splits[p], y = ref[0], rest = ref[1];\n if ((DATE_MIN_YEAR <= y && y <= DATE_MAX_YEAR)) {\n dm = this.map_ints_to_dm(rest);\n if (dm != null) {\n return {\n year: y,\n month: dm.month,\n day: dm.day\n };\n } else {\n return;\n }\n }\n }\n for (q = 0, len3 = possible_year_splits.length; q < len3; q++) {\n ref1 = possible_year_splits[q], y = ref1[0], rest = ref1[1];\n dm = this.map_ints_to_dm(rest);\n if (dm != null) {\n y = this.two_to_four_digit_year(y);\n return {\n year: y,\n month: dm.month,\n day: dm.day\n };\n }\n }\n },\n map_ints_to_dm: function(ints) {\n var d, len1, m, o, ref, ref1;\n ref = [ints, ints.slice().reverse()];\n for (o = 0, len1 = ref.length; o < len1; o++) {\n ref1 = ref[o], d = ref1[0], m = ref1[1];\n if ((1 <= d && d <= 31) && (1 <= m && m <= 12)) {\n return {\n day: d,\n month: m\n };\n }\n }\n },\n two_to_four_digit_year: function(year) {\n if (year > 99) {\n return year;\n } else if (year > 50) {\n return year + 1900;\n } else {\n return year + 2000;\n }\n }\n};\n\nmodule.exports = matching;\n\n//# sourceMappingURL=matching.js.map\n","// Generated by CoffeeScript 1.10.0\nvar time_estimates;\n\ntime_estimates = {\n estimate_attack_times: function(guesses) {\n var crack_times_display, crack_times_seconds, scenario, seconds;\n crack_times_seconds = {\n online_throttling_100_per_hour: guesses / (100 / 3600),\n online_no_throttling_10_per_second: guesses / 10,\n offline_slow_hashing_1e4_per_second: guesses / 1e4,\n offline_fast_hashing_1e10_per_second: guesses / 1e10\n };\n crack_times_display = {};\n for (scenario in crack_times_seconds) {\n seconds = crack_times_seconds[scenario];\n crack_times_display[scenario] = this.display_time(seconds);\n }\n return {\n crack_times_seconds: crack_times_seconds,\n crack_times_display: crack_times_display,\n score: this.guesses_to_score(guesses)\n };\n },\n guesses_to_score: function(guesses) {\n var DELTA;\n DELTA = 5;\n if (guesses < 1e3 + DELTA) {\n return 0;\n } else if (guesses < 1e6 + DELTA) {\n return 1;\n } else if (guesses < 1e8 + DELTA) {\n return 2;\n } else if (guesses < 1e10 + DELTA) {\n return 3;\n } else {\n return 4;\n }\n },\n display_time: function(seconds) {\n var base, century, day, display_num, display_str, hour, minute, month, ref, year;\n minute = 60;\n hour = minute * 60;\n day = hour * 24;\n month = day * 31;\n year = month * 12;\n century = year * 100;\n ref = seconds < 1 ? [null, 'less than a second'] : seconds < minute ? (base = Math.round(seconds), [base, base + \" second\"]) : seconds < hour ? (base = Math.round(seconds / minute), [base, base + \" minute\"]) : seconds < day ? (base = Math.round(seconds / hour), [base, base + \" hour\"]) : seconds < month ? (base = Math.round(seconds / day), [base, base + \" day\"]) : seconds < year ? (base = Math.round(seconds / month), [base, base + \" month\"]) : seconds < century ? (base = Math.round(seconds / year), [base, base + \" year\"]) : [null, 'centuries'], display_num = ref[0], display_str = ref[1];\n if ((display_num != null) && display_num !== 1) {\n display_str += 's';\n }\n return display_str;\n }\n};\n\nmodule.exports = time_estimates;\n\n//# sourceMappingURL=time_estimates.js.map\n","// Generated by CoffeeScript 1.10.0\nvar feedback, scoring;\n\nscoring = require('./scoring');\n\nfeedback = {\n default_feedback: {\n warning: '',\n suggestions: [\"Use a few words, avoid common phrases\", \"No need for symbols, digits, or uppercase letters\"]\n },\n get_feedback: function(score, sequence) {\n var extra_feedback, i, len, longest_match, match, ref;\n if (sequence.length === 0) {\n return this.default_feedback;\n }\n if (score > 2) {\n return {\n warning: '',\n suggestions: []\n };\n }\n longest_match = sequence[0];\n ref = sequence.slice(1);\n for (i = 0, len = ref.length; i < len; i++) {\n match = ref[i];\n if (match.token.length > longest_match.token.length) {\n longest_match = match;\n }\n }\n feedback = this.get_match_feedback(longest_match, sequence.length === 1);\n extra_feedback = 'Add another word or two. Uncommon words are better.';\n if (feedback != null) {\n feedback.suggestions.unshift(extra_feedback);\n if (feedback.warning == null) {\n feedback.warning = '';\n }\n } else {\n feedback = {\n warning: '',\n suggestions: [extra_feedback]\n };\n }\n return feedback;\n },\n get_match_feedback: function(match, is_sole_match) {\n var layout, warning;\n switch (match.pattern) {\n case 'dictionary':\n return this.get_dictionary_match_feedback(match, is_sole_match);\n case 'spatial':\n layout = match.graph.toUpperCase();\n warning = match.turns === 1 ? 'Straight rows of keys are easy to guess' : 'Short keyboard patterns are easy to guess';\n return {\n warning: warning,\n suggestions: ['Use a longer keyboard pattern with more turns']\n };\n case 'repeat':\n warning = match.base_token.length === 1 ? 'Repeats like \"aaa\" are easy to guess' : 'Repeats like \"abcabcabc\" are only slightly harder to guess than \"abc\"';\n return {\n warning: warning,\n suggestions: ['Avoid repeated words and characters']\n };\n case 'sequence':\n return {\n warning: \"Sequences like abc or 6543 are easy to guess\",\n suggestions: ['Avoid sequences']\n };\n case 'regex':\n if (match.regex_name === 'recent_year') {\n return {\n warning: \"Recent years are easy to guess\",\n suggestions: ['Avoid recent years', 'Avoid years that are associated with you']\n };\n }\n break;\n case 'date':\n return {\n warning: \"Dates are often easy to guess\",\n suggestions: ['Avoid dates and years that are associated with you']\n };\n }\n },\n get_dictionary_match_feedback: function(match, is_sole_match) {\n var ref, result, suggestions, warning, word;\n warning = match.dictionary_name === 'passwords' ? is_sole_match && !match.l33t && !match.reversed ? match.rank <= 10 ? 'This is a top-10 common password' : match.rank <= 100 ? 'This is a top-100 common password' : 'This is a very common password' : match.guesses_log10 <= 4 ? 'This is similar to a commonly used password' : void 0 : match.dictionary_name === 'english_wikipedia' ? is_sole_match ? 'A word by itself is easy to guess' : void 0 : (ref = match.dictionary_name) === 'surnames' || ref === 'male_names' || ref === 'female_names' ? is_sole_match ? 'Names and surnames by themselves are easy to guess' : 'Common names and surnames are easy to guess' : '';\n suggestions = [];\n word = match.token;\n if (word.match(scoring.START_UPPER)) {\n suggestions.push(\"Capitalization doesn't help very much\");\n } else if (word.match(scoring.ALL_UPPER) && word.toLowerCase() !== word) {\n suggestions.push(\"All-uppercase is almost as easy to guess as all-lowercase\");\n }\n if (match.reversed && match.token.length >= 4) {\n suggestions.push(\"Reversed words aren't much harder to guess\");\n }\n if (match.l33t) {\n suggestions.push(\"Predictable substitutions like '@' instead of 'a' don't help very much\");\n }\n result = {\n warning: warning,\n suggestions: suggestions\n };\n return result;\n }\n};\n\nmodule.exports = feedback;\n\n//# sourceMappingURL=feedback.js.map\n","// Generated by CoffeeScript 1.10.0\nvar feedback, matching, scoring, time, time_estimates, zxcvbn;\n\nmatching = require('./matching');\n\nscoring = require('./scoring');\n\ntime_estimates = require('./time_estimates');\n\nfeedback = require('./feedback');\n\ntime = function() {\n return (new Date()).getTime();\n};\n\nzxcvbn = function(password, user_inputs) {\n var arg, attack_times, i, len, matches, prop, ref, result, sanitized_inputs, start, val;\n if (user_inputs == null) {\n user_inputs = [];\n }\n start = time();\n sanitized_inputs = [];\n for (i = 0, len = user_inputs.length; i < len; i++) {\n arg = user_inputs[i];\n if ((ref = typeof arg) === \"string\" || ref === \"number\" || ref === \"boolean\") {\n sanitized_inputs.push(arg.toString().toLowerCase());\n }\n }\n matching.set_user_input_dictionary(sanitized_inputs);\n matches = matching.omnimatch(password);\n result = scoring.most_guessable_match_sequence(password, matches);\n result.calc_time = time() - start;\n attack_times = time_estimates.estimate_attack_times(result.guesses);\n for (prop in attack_times) {\n val = attack_times[prop];\n result[prop] = val;\n }\n result.feedback = feedback.get_feedback(result.score, result.sequence);\n return result;\n};\n\nmodule.exports = zxcvbn;\n\n//# sourceMappingURL=main.js.map\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"./utils/I18n.bs.js\";\nimport * as Curry from \"../../../node_modules/rescript/lib/es6/curry.js\";\nimport Zxcvbn from \"zxcvbn\";\nimport * as ArrayUtils from \"./utils/ArrayUtils.bs.js\";\nimport * as Caml_exceptions from \"../../../node_modules/rescript/lib/es6/caml_exceptions.js\";\n\nvar UnexpectedZxcvbnScore = /* @__PURE__ */Caml_exceptions.create(\"Zxcvbn.UnexpectedZxcvbnScore\");\n\nvar partial_arg = \"components.Zxcvbn\";\n\nfunction ts(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nfunction label(t) {\n var match = t.strength;\n switch (match) {\n case /* Weak */0 :\n return Curry._3(ts, undefined, undefined, \"weak\");\n case /* Fair */1 :\n return Curry._3(ts, undefined, undefined, \"fair\");\n case /* Medium */2 :\n return Curry._3(ts, undefined, undefined, \"medium\");\n case /* Strong */3 :\n return Curry._3(ts, undefined, undefined, \"strong\");\n \n }\n}\n\nfunction colorClass(t, score) {\n if (t.score < score) {\n return \"bg-gray-500\";\n }\n var match = t.strength;\n switch (match) {\n case /* Weak */0 :\n return \"bg-red-500\";\n case /* Fair */1 :\n return \"bg-orange-500\";\n case /* Medium */2 :\n return \"bg-yellow-500\";\n case /* Strong */3 :\n return \"bg-green-500\";\n \n }\n}\n\nfunction suggestions(t) {\n return t.suggestions;\n}\n\nfunction score(t) {\n return t.score;\n}\n\nfunction make(userInputsOpt, password) {\n var userInputs = userInputsOpt !== undefined ? userInputsOpt : [];\n if (password.length <= 0) {\n return ;\n }\n var formDictionary = userInputs.map(function (val) {\n return val.split(\" \").concat(val.split(\"@\"));\n });\n var zxcvbnResponse = Zxcvbn(password, ArrayUtils.flattenV2(formDictionary));\n var score = zxcvbnResponse.score;\n var suggestions = zxcvbnResponse.feedback.suggestions;\n var strength;\n switch (score) {\n case 0 :\n case 1 :\n strength = /* Weak */0;\n break;\n case 2 :\n strength = /* Fair */1;\n break;\n case 3 :\n strength = /* Medium */2;\n break;\n case 4 :\n strength = /* Strong */3;\n break;\n default:\n throw {\n RE_EXN_ID: UnexpectedZxcvbnScore,\n _1: score,\n Error: new Error()\n };\n }\n return {\n score: score === 0 ? 1 : score,\n strength: strength,\n suggestions: suggestions\n };\n}\n\nexport {\n make ,\n label ,\n colorClass ,\n suggestions ,\n score ,\n}\n/* I18n Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Curry from \"../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\n\nfunction str(prim) {\n return prim;\n}\n\nfunction ConfirmWindow(Props) {\n var title = Props.title;\n var body = Props.body;\n var confirmButtonText = Props.confirmButtonText;\n var cancelButtonText = Props.cancelButtonText;\n var onConfirm = Props.onConfirm;\n var onCancel = Props.onCancel;\n var disableConfirm = Props.disableConfirm;\n var alertTypeOpt = Props.alertType;\n var alertType = alertTypeOpt !== undefined ? alertTypeOpt : \"Normal\";\n var match = alertType === \"Critical\" ? [\n \"bg-red-200\",\n \"text-red-600\",\n \"btn btn-danger\"\n ] : [\n \"bg-green-200\",\n \"text-green-600\",\n \"btn btn-success\"\n ];\n return React.createElement(\"div\", {\n className: \"fixed bottom-0 inset-x-0 z-50 px-4 pb-4 sm:inset-0 sm:flex sm:items-center sm:justify-center\"\n }, React.createElement(\"div\", {\n className: \"fixed inset-0\"\n }, React.createElement(\"div\", {\n className: \"absolute inset-0 bg-gray-800 opacity-75\"\n })), React.createElement(\"div\", {\n \"aria-modal\": true,\n \"aria-labelledby\": \"modal-headline\",\n className: \"relative z-50 bg-white rounded-lg px-4 pt-5 pb-4 overflow-hidden shadow-xl sm:max-w-lg sm:w-full sm:p-6\",\n role: \"dialog\"\n }, React.createElement(\"div\", {\n className: \"sm:flex sm:items-start\"\n }, React.createElement(\"div\", {\n className: \"mx-auto shrink-0 flex items-center justify-center h-12 w-12 rounded-full sm:mx-0 sm:h-10 sm:w-10 \" + match[0]\n }, React.createElement(\"svg\", {\n className: \"h-6 w-6 \" + match[1],\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\"\n }, React.createElement(\"path\", {\n d: \"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: \"2\"\n }))), React.createElement(\"div\", {\n className: \"mt-3 sm:mt-0 ms-4\"\n }, React.createElement(\"h3\", {\n className: \"text-lg text-center ltr:sm:text-left rtl:sm:text-right font-semibold\",\n id: \"modal-headline\"\n }, title), React.createElement(\"div\", {\n className: \"mt-2\"\n }, body))), React.createElement(\"div\", {\n className: \"mt-5 sm:mt-4 sm:flex sm:flex-row-reverse\"\n }, React.createElement(\"span\", {\n className: \"flex w-full rounded-md shadow-sm ms-3 sm:w-auto\"\n }, React.createElement(\"button\", {\n className: match[2] + \" w-full\",\n disabled: disableConfirm,\n type: \"button\",\n onClick: (function ($$event) {\n $$event.preventDefault();\n Curry._1(onConfirm, undefined);\n })\n }, confirmButtonText)), React.createElement(\"span\", {\n className: \"mt-3 flex w-full rounded-md shadow-sm sm:mt-0 sm:w-auto\"\n }, React.createElement(\"button\", {\n className: \"inline-flex justify-center w-full rounded-md border border-gray-300 px-4 py-2 bg-white text-sm font-semibold text-gray-600 hover:bg-gray-50 hover:text-gray-600 focus:outline-none\",\n type: \"button\",\n onClick: (function ($$event) {\n $$event.preventDefault();\n Curry._1(onCancel, undefined);\n })\n }, cancelButtonText)))));\n}\n\nvar make = ConfirmWindow;\n\nexport {\n str ,\n make ,\n}\n/* react Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Api from \"../shared/Api.bs.js\";\nimport * as I18n from \"../shared/utils/I18n.bs.js\";\nimport * as Curry from \"../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as Radio from \"../shared/components/Radio.bs.js\";\nimport * as React from \"react\";\nimport * as Avatar from \"../shared/Avatar.bs.js\";\nimport * as FaIcon from \"../shared/components/FaIcon.bs.js\";\nimport * as Locale from \"../shared/utils/Locale.bs.js\";\nimport * as PfIcon from \"../packages/pf-icon/src/PfIcon.bs.js\";\nimport * as $$String from \"../../../node_modules/rescript/lib/es6/string.js\";\nimport * as Zxcvbn from \"../shared/Zxcvbn.bs.js\";\nimport * as Caml_obj from \"../../../node_modules/rescript/lib/es6/caml_obj.js\";\nimport * as ArrayUtils from \"../shared/utils/ArrayUtils.bs.js\";\nimport * as Caml_array from \"../../../node_modules/rescript/lib/es6/caml_array.js\";\nimport * as EmailUtils from \"../shared/utils/EmailUtils.bs.js\";\nimport * as Js_promise from \"../../../node_modules/rescript/lib/es6/js_promise.js\";\nimport * as ReactUtils from \"../shared/utils/ReactUtils.bs.js\";\nimport * as Belt_Option from \"../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as Caml_option from \"../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as Json_decode from \"../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\nimport * as OptionUtils from \"../shared/utils/OptionUtils.bs.js\";\nimport * as StringUtils from \"../shared/utils/StringUtils.bs.js\";\nimport * as ThemeSwitch from \"../shared/components/ThemeSwitch.bs.js\";\nimport * as GraphqlQuery from \"../shared/utils/GraphqlQuery.bs.js\";\nimport * as $$Notification from \"../shared/Notification.bs.js\";\nimport * as ConfirmWindow from \"../shared/components/ConfirmWindow.bs.js\";\nimport * as AuthenticityToken from \"../shared/utils/AuthenticityToken.bs.js\";\nimport * as School__InputGroupError from \"../schools/shared/components/School__InputGroupError.bs.js\";\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.UserEdit\";\n\nfunction t(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nvar partial_arg$1 = \"shared\";\n\nfunction ts(param, param$1, param$2) {\n return I18n.t(partial_arg$1, param, param$1, param$2);\n}\n\nfunction reducer(state, action) {\n if (typeof action === \"number\") {\n switch (action) {\n case /* StartSaving */0 :\n var newrecord = Caml_obj.obj_dup(state);\n newrecord.saving = true;\n return newrecord;\n case /* ResetSaving */1 :\n var newrecord$1 = Caml_obj.obj_dup(state);\n newrecord$1.saving = false;\n return newrecord$1;\n case /* StartDeletingAccount */2 :\n var newrecord$2 = Caml_obj.obj_dup(state);\n newrecord$2.deletingAccount = true;\n return newrecord$2;\n case /* FinishAccountDeletion */3 :\n var newrecord$3 = Caml_obj.obj_dup(state);\n newrecord$3.deletingAccount = false;\n newrecord$3.showDeleteAccountForm = false;\n newrecord$3.emailForAccountDeletion = \"\";\n return newrecord$3;\n case /* ShowEmailChangePasswordConfirm */4 :\n var newrecord$4 = Caml_obj.obj_dup(state);\n newrecord$4.showEmailChangePasswordConfirm = true;\n return newrecord$4;\n case /* InitiatePasswordReset */5 :\n var newrecord$5 = Caml_obj.obj_dup(state);\n newrecord$5.initiatePasswordReset = true;\n return newrecord$5;\n case /* FinishPasswordReset */6 :\n var newrecord$6 = Caml_obj.obj_dup(state);\n newrecord$6.initiatePasswordReset = false;\n return newrecord$6;\n \n }\n } else {\n switch (action.TAG | 0) {\n case /* UpdateName */0 :\n var newrecord$7 = Caml_obj.obj_dup(state);\n newrecord$7.dirty = true;\n newrecord$7.name = action._0;\n return newrecord$7;\n case /* UpdatePreferredName */1 :\n var newrecord$8 = Caml_obj.obj_dup(state);\n newrecord$8.dirty = true;\n newrecord$8.preferredName = action._0;\n return newrecord$8;\n case /* UpdateAbout */2 :\n var newrecord$9 = Caml_obj.obj_dup(state);\n newrecord$9.dirty = true;\n newrecord$9.about = action._0;\n return newrecord$9;\n case /* UpdateEmail */3 :\n var newrecord$10 = Caml_obj.obj_dup(state);\n newrecord$10.dirty = true;\n newrecord$10.email = action._0;\n return newrecord$10;\n case /* SetDisableUpdateEmail */4 :\n var newrecord$11 = Caml_obj.obj_dup(state);\n newrecord$11.disableEmailInput = action._0;\n return newrecord$11;\n case /* UpdateLocale */5 :\n var newrecord$12 = Caml_obj.obj_dup(state);\n newrecord$12.dirty = true;\n newrecord$12.locale = action._0;\n return newrecord$12;\n case /* UpdateCurrentPassword */6 :\n var newrecord$13 = Caml_obj.obj_dup(state);\n newrecord$13.dirty = true;\n newrecord$13.currentPassword = action._0;\n return newrecord$13;\n case /* UpdateNewPassword */7 :\n var newrecord$14 = Caml_obj.obj_dup(state);\n newrecord$14.dirty = true;\n newrecord$14.newPassword = action._0;\n return newrecord$14;\n case /* UpdateNewPassWordConfirm */8 :\n var newrecord$15 = Caml_obj.obj_dup(state);\n newrecord$15.dirty = true;\n newrecord$15.confirmPassword = action._0;\n return newrecord$15;\n case /* UpdateEmailForDeletion */9 :\n var newrecord$16 = Caml_obj.obj_dup(state);\n newrecord$16.emailForAccountDeletion = action._0;\n return newrecord$16;\n case /* UpdateDailyDigest */10 :\n var newrecord$17 = Caml_obj.obj_dup(state);\n newrecord$17.dirty = true;\n newrecord$17.dailyDigest = action._0;\n return newrecord$17;\n case /* UpdateThemePreference */11 :\n var themePreference = action._0;\n localStorage.setItem(\"themePreference\", themePreference);\n ThemeSwitch.setThemeBasedOnPreference(undefined);\n var newrecord$18 = Caml_obj.obj_dup(state);\n newrecord$18.themePreference = themePreference;\n return newrecord$18;\n case /* UpdateAvatarUrl */12 :\n var newrecord$19 = Caml_obj.obj_dup(state);\n newrecord$19.avatarUploadError = undefined;\n newrecord$19.avatarUrl = action._0;\n return newrecord$19;\n case /* ChangeDeleteAccountFormVisibility */13 :\n var newrecord$20 = Caml_obj.obj_dup(state);\n newrecord$20.showDeleteAccountForm = action._0;\n newrecord$20.emailForAccountDeletion = \"\";\n return newrecord$20;\n case /* SetAvatarUploadError */14 :\n var newrecord$21 = Caml_obj.obj_dup(state);\n newrecord$21.avatarUploadError = action._0;\n return newrecord$21;\n case /* FinishSaving */15 :\n var newrecord$22 = Caml_obj.obj_dup(state);\n newrecord$22.dirty = false;\n newrecord$22.saving = false;\n newrecord$22.hasCurrentPassword = action._0;\n newrecord$22.confirmPassword = \"\";\n newrecord$22.newPassword = \"\";\n newrecord$22.currentPassword = \"\";\n return newrecord$22;\n case /* UpdateEmailAndDisableInput */16 :\n var newrecord$23 = Caml_obj.obj_dup(state);\n newrecord$23.dirty = true;\n newrecord$23.showEmailChangePasswordConfirm = false;\n newrecord$23.passwordForEmailChange = \"\";\n newrecord$23.disableEmailInput = true;\n newrecord$23.email = action._0;\n return newrecord$23;\n case /* UpdatePasswordForEmailChange */17 :\n var newrecord$24 = Caml_obj.obj_dup(state);\n newrecord$24.passwordForEmailChange = action._0;\n return newrecord$24;\n \n }\n }\n}\n\nvar Raw = {};\n\nvar query = \"mutation UpdateUserMutation($name: String!, $preferredName: String, $about: String, $locale: String!, $currentPassword: String, $newPassword: String, $confirmPassword: String, $dailyDigest: Boolean!) {\\nupdateUser(name: $name, preferredName: $preferredName, about: $about, locale: $locale, currentPassword: $currentPassword, newPassword: $newPassword, confirmNewPassword: $confirmPassword, dailyDigest: $dailyDigest) {\\nsuccess \\n}\\n\\n}\\n\";\n\nfunction parse(value) {\n var value$1 = value.updateUser;\n return {\n updateUser: {\n success: value$1.success\n }\n };\n}\n\nfunction serialize(value) {\n var value$1 = value.updateUser;\n var value$2 = value$1.success;\n var updateUser = {\n success: value$2\n };\n return {\n updateUser: updateUser\n };\n}\n\nfunction serializeVariables(inp) {\n var a = inp.preferredName;\n var a$1 = inp.about;\n var a$2 = inp.currentPassword;\n var a$3 = inp.newPassword;\n var a$4 = inp.confirmPassword;\n return {\n name: inp.name,\n preferredName: a !== undefined ? a : undefined,\n about: a$1 !== undefined ? a$1 : undefined,\n locale: inp.locale,\n currentPassword: a$2 !== undefined ? a$2 : undefined,\n newPassword: a$3 !== undefined ? a$3 : undefined,\n confirmPassword: a$4 !== undefined ? a$4 : undefined,\n dailyDigest: inp.dailyDigest\n };\n}\n\nfunction makeVariables(name, preferredName, about, locale, currentPassword, newPassword, confirmPassword, dailyDigest, param) {\n return {\n name: name,\n preferredName: preferredName,\n about: about,\n locale: locale,\n currentPassword: currentPassword,\n newPassword: newPassword,\n confirmPassword: confirmPassword,\n dailyDigest: dailyDigest\n };\n}\n\nvar UpdateUserQuery_inner = {\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables\n};\n\nvar include = GraphqlQuery.Extender({\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar $$fetch = include.$$fetch;\n\nvar UpdateUserQuery_Graphql_error = include.Graphql_error;\n\nvar UpdateUserQuery_decodeNotification = include.decodeNotification;\n\nvar UpdateUserQuery_decodeObject = include.decodeObject;\n\nvar UpdateUserQuery_decodeNotifications = include.decodeNotifications;\n\nvar UpdateUserQuery_decodeErrors = include.decodeErrors;\n\nvar UpdateUserQuery_flashNotifications = include.flashNotifications;\n\nvar UpdateUserQuery_sendQuery = include.sendQuery;\n\nvar UpdateUserQuery_query = include.query;\n\nvar UpdateUserQuery_make = include.make;\n\nvar UpdateUserQuery = {\n UpdateUserQuery_inner: UpdateUserQuery_inner,\n Raw: Raw,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables,\n Graphql_error: UpdateUserQuery_Graphql_error,\n decodeNotification: UpdateUserQuery_decodeNotification,\n decodeObject: UpdateUserQuery_decodeObject,\n decodeNotifications: UpdateUserQuery_decodeNotifications,\n decodeErrors: UpdateUserQuery_decodeErrors,\n flashNotifications: UpdateUserQuery_flashNotifications,\n sendQuery: UpdateUserQuery_sendQuery,\n query: UpdateUserQuery_query,\n $$fetch: $$fetch,\n make: UpdateUserQuery_make\n};\n\nvar Raw$1 = {};\n\nvar query$1 = \"mutation InitiateAccountDeletionMutation($email: String!) {\\ninitiateAccountDeletion(email: $email) {\\nsuccess \\n}\\n\\n}\\n\";\n\nfunction parse$1(value) {\n var value$1 = value.initiateAccountDeletion;\n return {\n initiateAccountDeletion: {\n success: value$1.success\n }\n };\n}\n\nfunction serialize$1(value) {\n var value$1 = value.initiateAccountDeletion;\n var value$2 = value$1.success;\n var initiateAccountDeletion = {\n success: value$2\n };\n return {\n initiateAccountDeletion: initiateAccountDeletion\n };\n}\n\nfunction serializeVariables$1(inp) {\n return {\n email: inp.email\n };\n}\n\nfunction makeVariables$1(email, param) {\n return {\n email: email\n };\n}\n\nvar InitiateAccountDeletionQuery_inner = {\n Raw: Raw$1,\n query: query$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n makeVariables: makeVariables$1\n};\n\nvar include$1 = GraphqlQuery.Extender({\n Raw: Raw$1,\n query: query$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar $$fetch$1 = include$1.$$fetch;\n\nvar InitiateAccountDeletionQuery_Graphql_error = include$1.Graphql_error;\n\nvar InitiateAccountDeletionQuery_decodeNotification = include$1.decodeNotification;\n\nvar InitiateAccountDeletionQuery_decodeObject = include$1.decodeObject;\n\nvar InitiateAccountDeletionQuery_decodeNotifications = include$1.decodeNotifications;\n\nvar InitiateAccountDeletionQuery_decodeErrors = include$1.decodeErrors;\n\nvar InitiateAccountDeletionQuery_flashNotifications = include$1.flashNotifications;\n\nvar InitiateAccountDeletionQuery_sendQuery = include$1.sendQuery;\n\nvar InitiateAccountDeletionQuery_query = include$1.query;\n\nvar InitiateAccountDeletionQuery_make = include$1.make;\n\nvar InitiateAccountDeletionQuery = {\n InitiateAccountDeletionQuery_inner: InitiateAccountDeletionQuery_inner,\n Raw: Raw$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n makeVariables: makeVariables$1,\n Graphql_error: InitiateAccountDeletionQuery_Graphql_error,\n decodeNotification: InitiateAccountDeletionQuery_decodeNotification,\n decodeObject: InitiateAccountDeletionQuery_decodeObject,\n decodeNotifications: InitiateAccountDeletionQuery_decodeNotifications,\n decodeErrors: InitiateAccountDeletionQuery_decodeErrors,\n flashNotifications: InitiateAccountDeletionQuery_flashNotifications,\n sendQuery: InitiateAccountDeletionQuery_sendQuery,\n query: InitiateAccountDeletionQuery_query,\n $$fetch: $$fetch$1,\n make: InitiateAccountDeletionQuery_make\n};\n\nvar Raw$2 = {};\n\nvar query$2 = \"mutation SendUpdateEmailToken($newEmail: String!, $password: String!) {\\nsendUpdateEmailToken(newEmail: $newEmail, password: $password) {\\nsuccess \\n}\\n\\n}\\n\";\n\nfunction parse$2(value) {\n var value$1 = value.sendUpdateEmailToken;\n return {\n sendUpdateEmailToken: {\n success: value$1.success\n }\n };\n}\n\nfunction serialize$2(value) {\n var value$1 = value.sendUpdateEmailToken;\n var value$2 = value$1.success;\n var sendUpdateEmailToken = {\n success: value$2\n };\n return {\n sendUpdateEmailToken: sendUpdateEmailToken\n };\n}\n\nfunction serializeVariables$2(inp) {\n return {\n newEmail: inp.newEmail,\n password: inp.password\n };\n}\n\nfunction makeVariables$2(newEmail, password, param) {\n return {\n newEmail: newEmail,\n password: password\n };\n}\n\nvar SendEmailUpdateTokenQuery_inner = {\n Raw: Raw$2,\n query: query$2,\n parse: parse$2,\n serialize: serialize$2,\n serializeVariables: serializeVariables$2,\n makeVariables: makeVariables$2\n};\n\nvar include$2 = GraphqlQuery.Extender({\n Raw: Raw$2,\n query: query$2,\n parse: parse$2,\n serialize: serialize$2,\n serializeVariables: serializeVariables$2,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar $$fetch$2 = include$2.$$fetch;\n\nvar SendEmailUpdateTokenQuery_Graphql_error = include$2.Graphql_error;\n\nvar SendEmailUpdateTokenQuery_decodeNotification = include$2.decodeNotification;\n\nvar SendEmailUpdateTokenQuery_decodeObject = include$2.decodeObject;\n\nvar SendEmailUpdateTokenQuery_decodeNotifications = include$2.decodeNotifications;\n\nvar SendEmailUpdateTokenQuery_decodeErrors = include$2.decodeErrors;\n\nvar SendEmailUpdateTokenQuery_flashNotifications = include$2.flashNotifications;\n\nvar SendEmailUpdateTokenQuery_sendQuery = include$2.sendQuery;\n\nvar SendEmailUpdateTokenQuery_query = include$2.query;\n\nvar SendEmailUpdateTokenQuery_make = include$2.make;\n\nvar SendEmailUpdateTokenQuery = {\n SendEmailUpdateTokenQuery_inner: SendEmailUpdateTokenQuery_inner,\n Raw: Raw$2,\n parse: parse$2,\n serialize: serialize$2,\n serializeVariables: serializeVariables$2,\n makeVariables: makeVariables$2,\n Graphql_error: SendEmailUpdateTokenQuery_Graphql_error,\n decodeNotification: SendEmailUpdateTokenQuery_decodeNotification,\n decodeObject: SendEmailUpdateTokenQuery_decodeObject,\n decodeNotifications: SendEmailUpdateTokenQuery_decodeNotifications,\n decodeErrors: SendEmailUpdateTokenQuery_decodeErrors,\n flashNotifications: SendEmailUpdateTokenQuery_flashNotifications,\n sendQuery: SendEmailUpdateTokenQuery_sendQuery,\n query: SendEmailUpdateTokenQuery_query,\n $$fetch: $$fetch$2,\n make: SendEmailUpdateTokenQuery_make\n};\n\nvar Raw$3 = {};\n\nvar query$3 = \"mutation InitiatePasswordResetMutation($email: String!) {\\ninitiatePasswordReset(email: $email) {\\nsuccess \\n}\\n\\n}\\n\";\n\nfunction parse$3(value) {\n var value$1 = value.initiatePasswordReset;\n return {\n initiatePasswordReset: {\n success: value$1.success\n }\n };\n}\n\nfunction serialize$3(value) {\n var value$1 = value.initiatePasswordReset;\n var value$2 = value$1.success;\n var initiatePasswordReset = {\n success: value$2\n };\n return {\n initiatePasswordReset: initiatePasswordReset\n };\n}\n\nfunction serializeVariables$3(inp) {\n return {\n email: inp.email\n };\n}\n\nfunction makeVariables$3(email, param) {\n return {\n email: email\n };\n}\n\nvar InitiatePasswordResetQuery_inner = {\n Raw: Raw$3,\n query: query$3,\n parse: parse$3,\n serialize: serialize$3,\n serializeVariables: serializeVariables$3,\n makeVariables: makeVariables$3\n};\n\nvar include$3 = GraphqlQuery.Extender({\n Raw: Raw$3,\n query: query$3,\n parse: parse$3,\n serialize: serialize$3,\n serializeVariables: serializeVariables$3,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar $$fetch$3 = include$3.$$fetch;\n\nvar InitiatePasswordResetQuery_Graphql_error = include$3.Graphql_error;\n\nvar InitiatePasswordResetQuery_decodeNotification = include$3.decodeNotification;\n\nvar InitiatePasswordResetQuery_decodeObject = include$3.decodeObject;\n\nvar InitiatePasswordResetQuery_decodeNotifications = include$3.decodeNotifications;\n\nvar InitiatePasswordResetQuery_decodeErrors = include$3.decodeErrors;\n\nvar InitiatePasswordResetQuery_flashNotifications = include$3.flashNotifications;\n\nvar InitiatePasswordResetQuery_sendQuery = include$3.sendQuery;\n\nvar InitiatePasswordResetQuery_query = include$3.query;\n\nvar InitiatePasswordResetQuery_make = include$3.make;\n\nvar InitiatePasswordResetQuery = {\n InitiatePasswordResetQuery_inner: InitiatePasswordResetQuery_inner,\n Raw: Raw$3,\n parse: parse$3,\n serialize: serialize$3,\n serializeVariables: serializeVariables$3,\n makeVariables: makeVariables$3,\n Graphql_error: InitiatePasswordResetQuery_Graphql_error,\n decodeNotification: InitiatePasswordResetQuery_decodeNotification,\n decodeObject: InitiatePasswordResetQuery_decodeObject,\n decodeNotifications: InitiatePasswordResetQuery_decodeNotifications,\n decodeErrors: InitiatePasswordResetQuery_decodeErrors,\n flashNotifications: InitiatePasswordResetQuery_flashNotifications,\n sendQuery: InitiatePasswordResetQuery_sendQuery,\n query: InitiatePasswordResetQuery_query,\n $$fetch: $$fetch$3,\n make: InitiatePasswordResetQuery_make\n};\n\nfunction uploadAvatar(send, formData) {\n Api.sendFormData(\"/user/upload_avatar\", formData, (function (json) {\n $$Notification.success(ts(undefined, undefined, \"notifications.done_exclamation\"), t(undefined, undefined, \"avatar_uploaded_notification\"));\n var avatarUrl = Json_decode.field(\"avatarUrl\", Json_decode.string, json);\n Curry._1(send, {\n TAG: /* UpdateAvatarUrl */12,\n _0: avatarUrl\n });\n }), (function (param) {\n Curry._1(send, {\n TAG: /* SetAvatarUploadError */14,\n _0: t(undefined, undefined, \"upload_failed\")\n });\n }));\n}\n\nfunction updateEmail(send, email, newEmail, password) {\n Curry._1(send, {\n TAG: /* SetDisableUpdateEmail */4,\n _0: false\n });\n Js_promise.$$catch((function (param) {\n Curry._1(send, {\n TAG: /* UpdateEmailAndDisableInput */16,\n _0: email\n });\n return Promise.resolve(undefined);\n }), Js_promise.then_((function (param) {\n Curry._1(send, {\n TAG: /* UpdateEmailAndDisableInput */16,\n _0: newEmail\n });\n return Promise.resolve(undefined);\n }), Curry._3($$fetch$2, undefined, undefined, {\n newEmail: newEmail,\n password: password\n })));\n}\n\nfunction submitAvatarForm(send, formId) {\n var element = document.querySelector(\"#\" + formId);\n if (element == null) {\n Rollbar.error(\"Could not find form to upload file for content block: \" + formId);\n return ;\n } else {\n return uploadAvatar(send, new FormData(element));\n }\n}\n\nfunction handleAvatarInputChange(send, formId, $$event) {\n $$event.preventDefault();\n var files = $$event.target.files;\n if (files.length === 0) {\n return ;\n }\n var file = Caml_array.get(files, 0);\n var isInvalidImageFile = true;\n if (file.size <= window.pupilfirst.maxUploadFileSize) {\n var match = file.type;\n var tmp;\n switch (match) {\n case \"image/gif\" :\n case \"image/jpeg\" :\n case \"image/png\" :\n tmp = false;\n break;\n default:\n tmp = true;\n }\n isInvalidImageFile = tmp;\n }\n var error = isInvalidImageFile ? t(undefined, undefined, \"select_image_limit\") : undefined;\n if (error !== undefined) {\n return Curry._1(send, {\n TAG: /* SetAvatarUploadError */14,\n _0: error\n });\n } else {\n return submitAvatarForm(send, formId);\n }\n}\n\nfunction initiatePasswordReset(send, email) {\n Curry._1(send, /* InitiatePasswordReset */5);\n Js_promise.$$catch((function (param) {\n Curry._1(send, /* FinishPasswordReset */6);\n return Promise.resolve(undefined);\n }), Js_promise.then_((function (param) {\n Curry._1(send, /* FinishPasswordReset */6);\n return Promise.resolve(undefined);\n }), Curry._3($$fetch$3, undefined, undefined, {\n email: email\n })));\n}\n\nfunction updateUser(state, send, $$event) {\n $$event.preventDefault();\n Curry._1(send, /* StartSaving */0);\n var variables = makeVariables(state.name, state.preferredName, state.about, state.locale, state.currentPassword, state.newPassword, state.confirmPassword, state.dailyDigest, undefined);\n Js_promise.$$catch((function (param) {\n Curry._1(send, /* ResetSaving */1);\n return Promise.resolve(undefined);\n }), Js_promise.then_((function (result) {\n if (result.updateUser.success) {\n var hasCurrentPassword = state.newPassword.length !== 0;\n Curry._1(send, {\n TAG: /* FinishSaving */15,\n _0: hasCurrentPassword\n });\n } else {\n Curry._1(send, {\n TAG: /* FinishSaving */15,\n _0: state.hasCurrentPassword\n });\n }\n return Promise.resolve(undefined);\n }), Curry._3($$fetch, undefined, undefined, variables)));\n}\n\nfunction initiateAccountDeletion(state, send) {\n Curry._1(send, /* StartDeletingAccount */2);\n Js_promise.$$catch((function (param) {\n Curry._1(send, /* FinishAccountDeletion */3);\n return Promise.resolve(undefined);\n }), Js_promise.then_((function (result) {\n Curry._1(send, /* FinishAccountDeletion */3);\n return Promise.resolve(undefined);\n }), Curry._3($$fetch$1, undefined, undefined, {\n email: state.emailForAccountDeletion\n })));\n}\n\nfunction hasInvalidPassword(state) {\n return !(state.newPassword === \"\" && state.confirmPassword === \"\" || state.newPassword === state.confirmPassword && state.newPassword.length >= 8);\n}\n\nfunction saveDisabled(state) {\n if (hasInvalidPassword(state) || $$String.trim(state.name).length < 2) {\n return true;\n } else {\n return !state.dirty;\n }\n}\n\nfunction confirmEmailChangeWindow(currentEmail, state, send) {\n if (!state.showEmailChangePasswordConfirm) {\n return null;\n }\n var body = React.createElement(\"div\", {\n \"aria-label\": t(undefined, undefined, \"confirm_dialog_aria\")\n }, React.createElement(\"p\", {\n className: \"text-sm text-center ltr:sm:text-left rtl:sm:text-right text-gray-600\"\n }, t(undefined, undefined, \"email_change_q\")), React.createElement(\"div\", {\n className: \"mt-3\"\n }, React.createElement(\"label\", {\n className: \"block text-sm font-semibold\",\n htmlFor: \"password\"\n }, t(undefined, undefined, \"confirm_using_password\")), React.createElement(\"input\", {\n className: \"appearance-none block text-sm w-full shadow-sm border border-gray-300 rounded px-4 py-2 my-2 leading-relaxed focus:outline-none focus:border-transparent focus:ring-2 focus:ring-focusColor-500\",\n id: \"password\",\n autoComplete: \"off\",\n placeholder: t(undefined, undefined, \"current_password_placeholder\"),\n type: \"password\",\n value: state.passwordForEmailChange,\n onChange: (function ($$event) {\n Curry._1(send, {\n TAG: /* UpdatePasswordForEmailChange */17,\n _0: $$event.target.value\n });\n })\n })));\n return React.createElement(ConfirmWindow.make, {\n title: t(undefined, undefined, \"change_account_email\"),\n body: body,\n confirmButtonText: t(undefined, undefined, \"update_email\"),\n cancelButtonText: t(undefined, undefined, \"cancel\"),\n onConfirm: (function (param) {\n updateEmail(send, currentEmail, state.email, state.passwordForEmailChange);\n }),\n onCancel: (function (param) {\n Curry._1(send, {\n TAG: /* UpdateEmailAndDisableInput */16,\n _0: currentEmail\n });\n }),\n disableConfirm: state.passwordForEmailChange.length < 1,\n alertType: \"Normal\"\n });\n}\n\nfunction confirmDeletionWindow(state, send) {\n if (!state.showDeleteAccountForm) {\n return null;\n }\n var body = React.createElement(\"div\", {\n \"aria-label\": t(undefined, undefined, \"confirm_dialog_aria\")\n }, React.createElement(\"p\", {\n className: \"text-sm text-center ltr:sm:text-left rtl:sm:text-right text-gray-600\"\n }, t(undefined, undefined, \"account_delete_q\")), React.createElement(\"div\", {\n className: \"mt-3\"\n }, React.createElement(\"label\", {\n className: \"block text-sm font-semibold\",\n htmlFor: \"email\"\n }, t(undefined, undefined, \"confirm_email\")), React.createElement(\"input\", {\n className: \"appearance-none block text-sm w-full shadow-sm border border-gray-300 rounded px-4 py-2 my-2 leading-relaxed focus:outline-none focus:border-transparent focus:ring-2 focus:ring-focusColor-500\",\n id: \"email\",\n autoComplete: \"off\",\n placeholder: t(undefined, undefined, \"email_placeholder\"),\n type: \"email\",\n value: state.emailForAccountDeletion,\n onChange: (function ($$event) {\n Curry._1(send, {\n TAG: /* UpdateEmailForDeletion */9,\n _0: $$event.target.value\n });\n })\n })));\n return React.createElement(ConfirmWindow.make, {\n title: t(undefined, undefined, \"delete_account\"),\n body: body,\n confirmButtonText: t(undefined, undefined, \"initiate_deletion\"),\n cancelButtonText: t(undefined, undefined, \"cancel\"),\n onConfirm: (function (param) {\n initiateAccountDeletion(state, send);\n }),\n onCancel: (function (param) {\n Curry._1(send, {\n TAG: /* ChangeDeleteAccountFormVisibility */13,\n _0: false\n });\n }),\n disableConfirm: state.deletingAccount || state.email !== state.emailForAccountDeletion,\n alertType: \"Critical\"\n });\n}\n\nfunction themeChip(theme) {\n return React.createElement(\"div\", {\n className: theme + \" w-16 h-8 grid grid-cols-3 gap-1 p-1 rounded-md border border-gray-200 bg-white\"\n }, React.createElement(\"div\", {\n className: \"w-full h-full col-span-1 grid grid-rows-2 gap-1\"\n }, React.createElement(\"div\", {\n className: \"bg-black h-full w-full rounded-md\"\n }), React.createElement(\"div\", {\n className: \"bg-primary-500 h-full w-full rounded-md\"\n })), React.createElement(\"div\", {\n className: \"col-span-2 grid grid-cols-3 gap-1\"\n }, React.createElement(\"div\", {\n className: \"bg-primary-300 h-full w-full rounded-md\"\n }), React.createElement(\"div\", {\n className: \"bg-primary-200 h-full w-full rounded-md\"\n }), React.createElement(\"div\", {\n className: \"bg-primary-100 h-full w-full rounded-md\"\n }), React.createElement(\"div\", {\n className: \"bg-gray-400 h-full w-full rounded-md\"\n }), React.createElement(\"div\", {\n className: \"bg-gray-300 h-full w-full rounded-md\"\n }), React.createElement(\"div\", {\n className: \"bg-gray-200 h-full w-full rounded-md\"\n })));\n}\n\nfunction UserEdit(Props) {\n var name = Props.name;\n var preferredName = Props.preferredName;\n var hasCurrentPassword = Props.hasCurrentPassword;\n var about = Props.about;\n var locale = Props.locale;\n var availableLocales = Props.availableLocales;\n var avatarUrl = Props.avatarUrl;\n var dailyDigest = Props.dailyDigest;\n var isSchoolAdmin = Props.isSchoolAdmin;\n var hasValidDeleteAccountToken = Props.hasValidDeleteAccountToken;\n var email = Props.email;\n var schoolName = Props.schoolName;\n var initialState_dailyDigest = OptionUtils.mapWithDefault((function (d) {\n return d;\n }), false, dailyDigest);\n var initialState_themePreference = Belt_Option.getWithDefault(Caml_option.null_to_opt(localStorage.getItem(\"themePreference\")), \"system\");\n var initialState = {\n name: name,\n preferredName: preferredName,\n about: about,\n locale: locale,\n email: email,\n disableEmailInput: true,\n avatarUrl: avatarUrl,\n currentPassword: \"\",\n newPassword: \"\",\n confirmPassword: \"\",\n passwordForEmailChange: \"\",\n showEmailChangePasswordConfirm: false,\n dailyDigest: initialState_dailyDigest,\n themePreference: initialState_themePreference,\n emailForAccountDeletion: \"\",\n showDeleteAccountForm: false,\n hasCurrentPassword: hasCurrentPassword,\n deletingAccount: false,\n avatarUploadError: undefined,\n initiatePasswordReset: false,\n saving: false,\n dirty: false\n };\n var match = React.useReducer(reducer, initialState);\n var send = match[1];\n var state = match[0];\n var url = state.avatarUrl;\n var error = state.avatarUploadError;\n var tmp;\n if (state.hasCurrentPassword) {\n var zxcvbn = Zxcvbn.make([\n state.name,\n state.email,\n schoolName\n ], state.newPassword);\n var tmp$1;\n if (zxcvbn !== undefined) {\n var zxcvbn$1 = Caml_option.valFromOption(zxcvbn);\n var suggestion = ArrayUtils.getOpt(Zxcvbn.suggestions(zxcvbn$1), 0);\n tmp$1 = React.createElement(\"div\", {\n className: \"h-6\"\n }, React.createElement(\"div\", {\n className: \"flex justify-between items-center\"\n }, React.createElement(\"p\", {\n className: \"text-xs text-gray-400 font-inter\"\n }, ts(undefined, undefined, \"password_strength\")), React.createElement(\"div\", {\n className: \"flex items-center gap-1 mt-1\"\n }, React.createElement(\"span\", {\n key: \"0\",\n className: \"text-xs text-gray-400 pe-2 text-right rtl:text-left\"\n }, Zxcvbn.label(zxcvbn$1)), [\n 1,\n 2,\n 3,\n 4\n ].map(function (score) {\n return React.createElement(\"span\", {\n key: String(score),\n className: \"rounded-md h-1 \" + Zxcvbn.colorClass(zxcvbn$1, score) + \" w-10\"\n });\n }))), React.createElement(\"div\", undefined, React.createElement(\"ul\", {\n className: \"text-yellow-900 text-[10px]\"\n }, suggestion !== undefined ? React.createElement(\"li\", undefined, React.createElement(PfIcon.make, {\n className: \"if i-info-light if-fw\"\n }), suggestion) : null)));\n } else {\n tmp$1 = React.createElement(\"div\", {\n className: \"h-6\"\n });\n }\n tmp = React.createElement(\"div\", {\n className: \"mb-4\"\n }, React.createElement(\"p\", {\n className: \"font-semibold\"\n }, t(undefined, undefined, \"change_password\")), React.createElement(\"div\", {\n className: \"mt-6\"\n }, React.createElement(\"label\", {\n className: \"block text-sm font-semibold\",\n htmlFor: \"current_password\"\n }, t(undefined, undefined, \"current_password\")), React.createElement(\"input\", {\n className: \"appearance-none block text-sm w-full shadow-sm border border-gray-300 rounded px-4 py-2 my-2 leading-relaxed focus:outline-none focus:border-transparent focus:ring-2 focus:ring-focusColor-500\",\n id: \"current_password\",\n autoComplete: \"off\",\n placeholder: t(undefined, undefined, \"password_placeholder\"),\n type: \"password\",\n value: state.currentPassword,\n onChange: (function ($$event) {\n Curry._1(send, {\n TAG: /* UpdateCurrentPassword */6,\n _0: $$event.target.value\n });\n })\n })), React.createElement(\"div\", {\n className: \"mt-6\"\n }, React.createElement(\"label\", {\n className: \"block text-sm font-semibold\",\n htmlFor: \"new_password\"\n }, t(undefined, undefined, \"new_password\")), React.createElement(\"input\", {\n className: \"appearance-none block text-sm w-full shadow-sm border border-gray-300 rounded px-4 py-2 my-2 leading-relaxed focus:outline-none focus:border-transparent focus:ring-2 focus:ring-focusColor-500\",\n id: \"new_password\",\n autoComplete: \"off\",\n placeholder: t(undefined, undefined, \"new_password_placeholder\"),\n type: \"password\",\n value: state.newPassword,\n onChange: (function ($$event) {\n Curry._1(send, {\n TAG: /* UpdateNewPassword */7,\n _0: $$event.target.value\n });\n })\n }), tmp$1), React.createElement(\"div\", {\n className: \"mt-6\"\n }, React.createElement(\"label\", {\n className: \"block text-sm font-semibold\",\n autoComplete: \"off\",\n htmlFor: \"confirm_password\"\n }, t(undefined, undefined, \"confirm_password\")), React.createElement(\"input\", {\n className: \"appearance-none block text-sm w-full shadow-sm border border-gray-300 rounded px-4 py-2 my-2 leading-relaxed focus:outline-none focus:border-transparent focus:ring-2 focus:ring-focusColor-500\",\n id: \"confirm_password\",\n autoComplete: \"off\",\n placeholder: t(undefined, undefined, \"confirm_password_placeholder\"),\n type: \"password\",\n value: state.confirmPassword,\n onChange: (function ($$event) {\n Curry._1(send, {\n TAG: /* UpdateNewPassWordConfirm */8,\n _0: $$event.target.value\n });\n })\n }), ReactUtils.nullUnless(React.createElement(School__InputGroupError.make, {\n message: t(undefined, undefined, \"confirm_password_error\"),\n active: hasInvalidPassword(state)\n }), StringUtils.isPresent(state.confirmPassword))));\n } else {\n tmp = null;\n }\n return React.createElement(\"div\", {\n className: \"container mx-auto px-3 pt-4 pb-8 max-w-5xl\"\n }, confirmEmailChangeWindow(email, state, send), confirmDeletionWindow(state, send), React.createElement(\"div\", {\n className: \"bg-white max-w-5xl mx-auto shadow sm:rounded-lg mt-4\"\n }, React.createElement(\"div\", {\n className: \"px-4 py-5 sm:p-6\"\n }, React.createElement(\"div\", {\n className: \"flex flex-col md:flex-row\"\n }, React.createElement(\"div\", {\n className: \"w-full md:w-1/3 pe-4\"\n }, React.createElement(\"h3\", {\n className: \"text-lg font-semibold\"\n }, t(undefined, undefined, \"edit_profile\")), React.createElement(\"p\", {\n className: \"mt-1 text-sm text-gray-600\"\n }, t(undefined, undefined, \"displayed_publicly\"))), React.createElement(\"div\", {\n className: \"mt-5 md:mt-0 w-full md:w-2/3\"\n }, React.createElement(\"div\", {\n className: \"\"\n }, React.createElement(\"div\", {\n className: \"\"\n }, React.createElement(\"label\", {\n className: \"block text-sm font-semibold\",\n htmlFor: \"user_name\"\n }, ts(undefined, undefined, \"name\")))), React.createElement(\"input\", {\n className: \"appearance-none mb-2 block text-sm w-full shadow-sm border border-gray-300 rounded px-4 py-2 my-2 leading-relaxed focus:outline-none focus:border-transparent focus:ring-2 focus:ring-focusColor-500\",\n id: \"user_name\",\n autoFocus: true,\n name: \"name\",\n placeholder: t(undefined, undefined, \"name_placeholder\"),\n value: state.name,\n onChange: (function ($$event) {\n Curry._1(send, {\n TAG: /* UpdateName */0,\n _0: $$event.target.value\n });\n })\n }), React.createElement(School__InputGroupError.make, {\n message: t(undefined, undefined, \"name_error\"),\n active: $$String.trim(state.name).length < 1\n }), React.createElement(School__InputGroupError.make, {\n message: t(undefined, undefined, \"name_error_length\"),\n active: $$String.trim(state.name).length === 1\n }), React.createElement(\"div\", {\n className: \"mt-6\"\n }, React.createElement(\"label\", {\n className: \"block text-sm font-semibold\",\n htmlFor: \"user_preferred_name\"\n }, ts(undefined, undefined, \"preferred_name\")), React.createElement(\"input\", {\n className: \"appearance-none mb-2 block text-sm w-full shadow-sm border border-gray-300 rounded px-4 py-2 my-2 leading-relaxed focus:outline-none focus:border-transparent focus:ring-2 focus:ring-focusColor-500\",\n id: \"user_preferred_name\",\n name: \"preferred_name\",\n placeholder: t(undefined, undefined, \"preferred_name_placeholder\"),\n value: state.preferredName,\n onChange: (function ($$event) {\n Curry._1(send, {\n TAG: /* UpdatePreferredName */1,\n _0: $$event.target.value\n });\n })\n })), React.createElement(\"div\", {\n className: \"mt-6\"\n }, React.createElement(\"label\", {\n className: \"block text-sm font-semibold\",\n htmlFor: \"about\"\n }, t(undefined, undefined, \"about\")), React.createElement(\"div\", undefined, React.createElement(\"textarea\", {\n className: \"appearance-none block text-sm w-full shadow-sm border border-gray-300 rounded px-4 py-2 my-2 leading-relaxed focus:outline-none focus:border-transparent focus:ring-2 focus:ring-focusColor-500\",\n id: \"about\",\n placeholder: t(undefined, undefined, \"about_placeholder\"),\n rows: 3,\n value: state.about,\n onChange: (function ($$event) {\n Curry._1(send, {\n TAG: /* UpdateAbout */2,\n _0: $$event.target.value\n });\n })\n }))), React.createElement(\"div\", {\n className: \"mt-6\"\n }, React.createElement(\"form\", {\n id: \"user-avatar-uploader\"\n }, React.createElement(\"input\", {\n name: \"authenticity_token\",\n type: \"hidden\",\n value: AuthenticityToken.fromHead(undefined)\n }), React.createElement(\"label\", {\n className: \"block text-sm font-semibold\"\n }, t(undefined, undefined, \"photo\")), React.createElement(\"div\", {\n className: \"mt-2 flex items-center\"\n }, React.createElement(\"span\", {\n className: \"inline-block h-14 w-14 rounded-full overflow-hidden bg-gray-50 border-2 boder-gray-400\"\n }, url !== undefined ? React.createElement(\"img\", {\n src: url\n }) : React.createElement(Avatar.make, {\n name: name\n })), React.createElement(\"span\", {\n className: \"ms-5 inline-flex\"\n }, React.createElement(\"input\", {\n \"aria-label\": \"User Avatar\",\n className: \"form-input__file-sr-only\",\n id: \"user-edit__avatar-input\",\n multiple: false,\n name: \"user[avatar]\",\n required: false,\n type: \"file\",\n onChange: (function (param) {\n return handleAvatarInputChange(send, \"user-avatar-uploader\", param);\n })\n }), React.createElement(\"label\", {\n \"aria-hidden\": true,\n className: \"form-input__file-label shadow-sm py-2 px-3 border border-gray-300 rounded-md text-sm font-semibold hover:text-gray-800 active:bg-gray-50 active:text-gray-800\",\n htmlFor: \"user-edit__avatar-input\"\n }, t(undefined, undefined, \"change_photo\"))), error !== undefined ? React.createElement(School__InputGroupError.make, {\n message: error,\n active: true\n }) : null))), React.createElement(\"div\", {\n className: \"mt-6\"\n }, React.createElement(\"label\", {\n className: \"block text-sm font-semibold\",\n htmlFor: \"user_email\",\n name: \"user_email\"\n }, t(undefined, undefined, \"email_label\")), React.createElement(\"div\", {\n className: \"mt-2 flex items-stretch gap-2\"\n }, React.createElement(\"input\", {\n \"aria-label\": \"User Email\",\n className: \"appearance-none block text-sm w-full shadow-sm border border-gray-300 rounded px-4 py-2 leading-relaxed focus:outline-none focus:border-transparent focus:ring-2 focus:ring-focusColor-500\",\n id: \"user-update__email-input\",\n disabled: state.disableEmailInput,\n name: \"user_email\",\n required: true,\n type: \"email\",\n value: state.email,\n onChange: (function ($$event) {\n Curry._1(send, {\n TAG: /* UpdateEmail */3,\n _0: $$event.target.value\n });\n })\n }), state.disableEmailInput ? React.createElement(\"button\", {\n className: \"btn btn-primary\",\n disabled: !state.hasCurrentPassword,\n onClick: (function (evt) {\n Curry._1(send, {\n TAG: /* SetDisableUpdateEmail */4,\n _0: false\n });\n })\n }, ts(undefined, undefined, \"edit\")) : React.createElement(\"div\", {\n className: \"flex gap-2\"\n }, React.createElement(\"button\", {\n className: \"btn btn-subtle\",\n onClick: (function (param) {\n Curry._1(send, {\n TAG: /* UpdateEmailAndDisableInput */16,\n _0: email\n });\n })\n }, ts(undefined, undefined, \"cancel\")), React.createElement(\"button\", {\n className: \"btn btn-primary\",\n disabled: EmailUtils.isInvalid(false, state.email) || state.email === email,\n onClick: (function (param) {\n Curry._1(send, /* ShowEmailChangePasswordConfirm */4);\n })\n }, ts(undefined, undefined, \"update\")))), ReactUtils.nullIf(React.createElement(\"p\", {\n className: \"text-yellow-900 text-xs font-inter mt-1\"\n }, React.createElement(PfIcon.make, {\n className: \"if i-info-light if-fw\"\n }), t(undefined, undefined, \"update_email_disabled_notice\")), state.hasCurrentPassword)))), React.createElement(\"div\", {\n className: \"flex flex-col md:flex-row mt-10 md:mt-12\"\n }, React.createElement(\"div\", {\n className: \"w-full md:w-1/3 pe-4\"\n }, React.createElement(\"h3\", {\n className: \"text-lg font-semibold\"\n }, t(undefined, undefined, \"security\")), React.createElement(\"p\", {\n className: \"mt-1 text-sm text-gray-600\"\n }, t(undefined, undefined, \"update_credentials\"))), React.createElement(\"div\", {\n className: \"mt-5 md:mt-0 w-full md:w-2/3\"\n }, tmp, React.createElement(\"div\", undefined, React.createElement(\"h3\", {\n className: \"font-semibold\"\n }, state.hasCurrentPassword ? t(undefined, undefined, \"forgot_password\") : t(undefined, undefined, \"set_up_password\")), React.createElement(\"p\", {\n className: \"mt-1 text-sm text-gray-600\"\n }, state.hasCurrentPassword ? t(undefined, undefined, \"reset_password_subtext\") : t(undefined, undefined, \"set_password_subtext\")), React.createElement(\"button\", {\n className: \"bg-primary-100 text-primary-600 border border-primary-200 rounded-md px-4 py-2 mt-2 text-sm font-semibold\",\n disabled: state.initiatePasswordReset,\n onClick: (function (param) {\n initiatePasswordReset(send, email);\n })\n }, state.hasCurrentPassword ? t(undefined, undefined, \"reset_password_button_text\") : t(undefined, undefined, \"set_password_button_text\"))))), React.createElement(\"div\", {\n className: \"flex flex-col md:flex-row mt-10 md:mt-12\"\n }, React.createElement(\"div\", {\n className: \"w-full md:w-1/3 pe-4\"\n }, React.createElement(\"h3\", {\n className: \"text-lg font-semibold\"\n }, t(undefined, undefined, \"notifications\")), React.createElement(\"p\", {\n className: \"mt-1 text-sm text-gray-600\"\n }, t(undefined, undefined, \"update_email_notifications\"))), React.createElement(\"div\", {\n className: \"mt-5 md:mt-0 w-full md:w-2/3\"\n }, React.createElement(\"p\", {\n className: \"font-semibold\"\n }, t(undefined, undefined, \"community_digest\")), React.createElement(\"p\", {\n className: \"text-sm text-gray-600\"\n }, t(undefined, undefined, \"community_digest_emails\")), React.createElement(\"div\", {\n className: \"mt-6\"\n }, React.createElement(\"div\", {\n className: \"flex items-center\"\n }, React.createElement(Radio.make, {\n id: \"daily_mail_enable\",\n label: t(undefined, undefined, \"send_email_radio\"),\n onChange: (function ($$event) {\n Curry._1(send, {\n TAG: /* UpdateDailyDigest */10,\n _0: $$event.target.checked\n });\n }),\n checked: state.dailyDigest\n })), React.createElement(\"div\", {\n className: \"mt-4 flex items-center\"\n }, React.createElement(Radio.make, {\n id: \"daily_mail_disable\",\n label: t(undefined, undefined, \"disable_email_radio\"),\n onChange: (function ($$event) {\n Curry._1(send, {\n TAG: /* UpdateDailyDigest */10,\n _0: !$$event.target.checked\n });\n }),\n checked: !state.dailyDigest\n }))))), React.createElement(\"div\", {\n className: \"flex flex-col md:flex-row mt-10 md:mt-12\"\n }, React.createElement(\"div\", {\n className: \"w-full md:w-1/3 pe-4\"\n }, React.createElement(\"h3\", {\n className: \"text-lg font-semibold\"\n }, t(undefined, undefined, \"localization\")), React.createElement(\"p\", {\n className: \"mt-1 text-sm text-gray-600\"\n }, t(undefined, undefined, \"update_locale\"))), React.createElement(\"div\", {\n className: \"mt-5 md:mt-0 w-full md:w-2/3\"\n }, React.createElement(\"label\", {\n className: \"font-semibold\",\n htmlFor: \"language\"\n }, t(undefined, undefined, \"language\")), React.createElement(\"p\", {\n className: \"text-sm text-gray-600\"\n }, t(undefined, undefined, \"select_language\")), React.createElement(\"div\", {\n className: \"mt-6\"\n }, React.createElement(\"select\", {\n className: \"select appearance-none block text-sm w-full bg-white shadow-sm border border-gray-300 rounded px-4 py-2 my-2 leading-relaxed focus:outline-none focus:border-transparent focus:ring-2 focus:ring-focusColor-500\",\n id: \"language\",\n value: state.locale,\n onChange: (function ($$event) {\n Curry._1(send, {\n TAG: /* UpdateLocale */5,\n _0: $$event.target.value\n });\n })\n }, availableLocales.map(function (availableLocale) {\n return React.createElement(\"option\", {\n key: availableLocale,\n \"aria-selected\": state.locale === availableLocale,\n value: availableLocale\n }, Locale.humanize(availableLocale));\n })))))), React.createElement(\"div\", {\n className: \"bg-gray-100 px-4 py-5 sm:p-6 flex rounded-b-lg justify-end\"\n }, React.createElement(\"button\", {\n className: \"btn btn-primary\",\n disabled: saveDisabled(state),\n onClick: (function (param) {\n return updateUser(state, send, param);\n })\n }, t(undefined, undefined, \"save_changes\")))), React.createElement(\"div\", {\n className: \"bg-white max-w-5xl mx-auto shadow sm:rounded-lg mt-10\"\n }, React.createElement(\"div\", {\n className: \"px-4 py-5 sm:p-6\"\n }, React.createElement(\"div\", {\n className: \"flex flex-col md:flex-row\"\n }, React.createElement(\"div\", {\n className: \"w-full md:w-1/3 pe-4\"\n }, React.createElement(\"h3\", {\n className: \"text-lg font-semibold\"\n }, t(undefined, undefined, \"appearance_title\")), React.createElement(\"p\", {\n className: \"mt-1 text-sm text-gray-600\"\n }, t(undefined, undefined, \"appearance_description\"))), React.createElement(\"div\", {\n className: \"mt-5 md:mt-0 w-full md:w-2/3\"\n }, React.createElement(\"label\", {\n className: \"font-semibold\",\n htmlFor: \"language\"\n }, t(undefined, undefined, \"theme_title\")), React.createElement(\"div\", {\n className: \"mt-6 flex flex-col md:flex-row items-start md:grow-0 md:items-center gap-3\"\n }, React.createElement(\"label\", {\n className: \"w-full md:w-auto p-3 cursor-pointer flex justify-between items-center border border-gray-300 rounded-lg focus-within:outline-none focus-within:border-transparent focus-within:ring-2 focus-within:ring-focusColor-500 \",\n htmlFor: \"theme-system\"\n }, React.createElement(Radio.make, {\n id: \"theme-system\",\n label: t(undefined, undefined, \"system\"),\n onChange: (function ($$event) {\n Curry._1(send, {\n TAG: /* UpdateThemePreference */11,\n _0: \"system\"\n });\n }),\n checked: state.themePreference === \"system\"\n }), React.createElement(\"div\", {\n className: \"w-16 h-8 flex items-center justify-center p-1 rounded-md border border-gray-200 bg-gray-100\"\n }, React.createElement(PfIcon.make, {\n className: \"if i-desktop-monitor-regular if-fw text-lg text-gray-500\"\n }))), React.createElement(\"label\", {\n className: \"w-full md:w-auto p-3 cursor-pointer flex justify-between items-center border border-gray-300 rounded-lg focus-within:outline-none focus-within:border-transparent focus-within:ring-2 focus-within:ring-focusColor-500 \",\n htmlFor: \"theme-light\"\n }, React.createElement(Radio.make, {\n id: \"theme-light\",\n label: t(undefined, undefined, \"light\"),\n onChange: (function ($$event) {\n Curry._1(send, {\n TAG: /* UpdateThemePreference */11,\n _0: \"light\"\n });\n }),\n checked: state.themePreference === \"light\"\n }), themeChip(\"theme-pupilfirst\")), React.createElement(\"label\", {\n className: \"w-full md:w-auto p-3 cursor-pointer flex justify-between items-center border border-gray-300 rounded-lg focus-within:outline-none focus-within:border-transparent focus-within:ring-2 focus-within:ring-focusColor-500 \",\n htmlFor: \"theme-dark\"\n }, React.createElement(Radio.make, {\n id: \"theme-dark\",\n label: t(undefined, undefined, \"dark\"),\n onChange: (function ($$event) {\n Curry._1(send, {\n TAG: /* UpdateThemePreference */11,\n _0: \"dark\"\n });\n }),\n checked: state.themePreference === \"dark\"\n }), themeChip(\"dark\"))))))), React.createElement(\"div\", {\n className: \"bg-white max-w-5xl mx-auto shadow sm:rounded-lg mt-10\"\n }, React.createElement(\"div\", {\n className: \"px-4 py-5 sm:p-6\"\n }, React.createElement(\"div\", {\n className: \"flex flex-col md:flex-row\"\n }, React.createElement(\"div\", {\n className: \"w-full md:w-1/3 pe-4\"\n }, React.createElement(\"h3\", {\n className: \"text-lg font-semibold\"\n }, t(undefined, undefined, \"account\")), React.createElement(\"p\", {\n className: \"mt-1 text-sm text-gray-600\"\n }, t(undefined, undefined, \"manage_account\"))), React.createElement(\"div\", {\n className: \"mt-5 md:mt-0 w-full md:w-2/3\"\n }, React.createElement(\"p\", {\n className: \"font-semibold text-red-700\"\n }, t(undefined, undefined, \"delete_account\")), React.createElement(\"p\", {\n className: \"text-sm text-gray-600 mt-1\"\n }, t(undefined, undefined, \"deleting_account_warning\") + \" \"), React.createElement(\"div\", {\n className: \"mt-4\"\n }, isSchoolAdmin || hasValidDeleteAccountToken ? React.createElement(\"div\", {\n className: \"bg-orange-100 border-s-4 border-orange-400 p-4\"\n }, React.createElement(\"div\", {\n className: \"flex\"\n }, React.createElement(FaIcon.make, {\n classes: \"fas fa-exclamation-triangle text-orange-400\"\n }), React.createElement(\"div\", {\n className: \"ms-3\"\n }, React.createElement(\"p\", {\n className: \"text-sm text-orange-900\"\n }, isSchoolAdmin ? t(undefined, undefined, \"you_admin_warning\") : t(undefined, undefined, \"already_iniated_deletion_warning\"))))) : React.createElement(\"button\", {\n className: \"py-2 px-3 border border-red-500 text-red-600 rounded text-xs font-semibold hover:bg-red-600 hover:text-white focus:outline-none active:bg-red-700 active:text-white\",\n onClick: (function (param) {\n Curry._1(send, {\n TAG: /* ChangeDeleteAccountFormVisibility */13,\n _0: true\n });\n })\n }, t(undefined, undefined, \"delete_your_account\"))))))));\n}\n\nvar make = UserEdit;\n\nexport {\n str ,\n t ,\n ts ,\n reducer ,\n UpdateUserQuery ,\n InitiateAccountDeletionQuery ,\n SendEmailUpdateTokenQuery ,\n InitiatePasswordResetQuery ,\n uploadAvatar ,\n updateEmail ,\n submitAvatarForm ,\n handleAvatarInputChange ,\n initiatePasswordReset ,\n updateUser ,\n initiateAccountDeletion ,\n hasInvalidPassword ,\n saveDisabled ,\n confirmEmailChangeWindow ,\n confirmDeletionWindow ,\n themeChip ,\n make ,\n}\n/* include Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Psj from \"../shared/utils/Psj.bs.js\";\nimport * as React from \"react\";\nimport * as DomUtils from \"../shared/utils/DomUtils.bs.js\";\nimport * as UserEdit from \"../users/UserEdit.bs.js\";\nimport * as ReactDom from \"react-dom\";\nimport * as Json_decode from \"../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\n\nfunction decodeProps(json) {\n return [\n Json_decode.field(\"name\", Json_decode.string, json),\n Json_decode.field(\"preferredName\", Json_decode.string, json),\n Json_decode.field(\"about\", Json_decode.string, json),\n Json_decode.field(\"email\", Json_decode.string, json),\n Json_decode.field(\"locale\", Json_decode.string, json),\n Json_decode.field(\"availableLocales\", (function (param) {\n return Json_decode.array(Json_decode.string, param);\n }), json),\n Json_decode.field(\"avatarUrl\", (function (param) {\n return Json_decode.optional(Json_decode.string, param);\n }), json),\n Json_decode.field(\"dailyDigest\", (function (param) {\n return Json_decode.optional(Json_decode.bool, param);\n }), json),\n Json_decode.field(\"hasCurrentPassword\", Json_decode.bool, json),\n Json_decode.field(\"isSchoolAdmin\", Json_decode.bool, json),\n Json_decode.field(\"hasValidDeleteAccountToken\", Json_decode.bool, json),\n Json_decode.field(\"schoolName\", Json_decode.string, json)\n ];\n}\n\nPsj.match(undefined, \"users#edit\", (function (param) {\n var match = decodeProps(DomUtils.parseJSONTag(\"user-edit__props\", undefined));\n var root = document.querySelector(\"#react-root\");\n if (!(root == null)) {\n ReactDom.render(React.createElement(UserEdit.make, {\n name: match[0],\n preferredName: match[1],\n hasCurrentPassword: match[8],\n about: match[2],\n locale: match[4],\n availableLocales: match[5],\n avatarUrl: match[6],\n dailyDigest: match[7],\n isSchoolAdmin: match[9],\n hasValidDeleteAccountToken: match[10],\n email: match[3],\n schoolName: match[11]\n }), root);\n return ;\n }\n \n }));\n\nexport {\n decodeProps ,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as User from \"../../shared/types/User.bs.js\";\nimport * as $$Array from \"../../../../node_modules/rescript/lib/es6/array.js\";\nimport * as DateFns from \"../../shared/utils/DateFns.bs.js\";\nimport * as Js_array from \"../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as ArrayUtils from \"../../shared/utils/ArrayUtils.bs.js\";\nimport * as Belt_Option from \"../../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as Json_decode from \"../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\n\nfunction id(t) {\n return t.id;\n}\n\nfunction creatorId(t) {\n return t.creatorId;\n}\n\nfunction editorId(t) {\n return t.editorId;\n}\n\nfunction body(t) {\n return t.body;\n}\n\nfunction replies(t) {\n return t.replies;\n}\n\nfunction createdAt(t) {\n return t.createdAt;\n}\n\nfunction editedAt(t) {\n return t.editedAt;\n}\n\nfunction likedByUser(t) {\n return t.likedByUser;\n}\n\nfunction postNumber(t) {\n return t.postNumber;\n}\n\nfunction totalLikes(t) {\n return t.totalLikes;\n}\n\nfunction solution(t) {\n return t.solution;\n}\n\nfunction user(users, t) {\n return Belt_Option.map(t.creatorId, (function (creatorId) {\n return ArrayUtils.unsafeFind((function (user) {\n return User.id(user) === creatorId;\n }), \"Unable to user with id: \" + (creatorId + \" in TopicsShow__Post\"), users);\n }));\n}\n\nfunction sort(posts) {\n return ArrayUtils.copyAndSort((function (x, y) {\n return x.postNumber - y.postNumber | 0;\n }), posts);\n}\n\nfunction repliesToPost(posts, post) {\n return sort(Js_array.filter((function (p) {\n return $$Array.mem(p.id, post.replies);\n }), posts));\n}\n\nfunction addReply(newReplyId, t) {\n return {\n id: t.id,\n body: t.body,\n creatorId: t.creatorId,\n editorId: t.editorId,\n postNumber: t.postNumber,\n createdAt: t.createdAt,\n editedAt: t.editedAt,\n totalLikes: t.totalLikes,\n likedByUser: t.likedByUser,\n replies: $$Array.append([newReplyId], t.replies),\n solution: t.solution\n };\n}\n\nfunction addLike(t) {\n return {\n id: t.id,\n body: t.body,\n creatorId: t.creatorId,\n editorId: t.editorId,\n postNumber: t.postNumber,\n createdAt: t.createdAt,\n editedAt: t.editedAt,\n totalLikes: t.totalLikes + 1 | 0,\n likedByUser: true,\n replies: t.replies,\n solution: t.solution\n };\n}\n\nfunction removeLike(t) {\n return {\n id: t.id,\n body: t.body,\n creatorId: t.creatorId,\n editorId: t.editorId,\n postNumber: t.postNumber,\n createdAt: t.createdAt,\n editedAt: t.editedAt,\n totalLikes: t.totalLikes - 1 | 0,\n likedByUser: false,\n replies: t.replies,\n solution: t.solution\n };\n}\n\nfunction markAsSolution(replyId, replies) {\n return Js_array.map((function (reply) {\n if (reply.id === replyId) {\n return {\n id: reply.id,\n body: reply.body,\n creatorId: reply.creatorId,\n editorId: reply.editorId,\n postNumber: reply.postNumber,\n createdAt: reply.createdAt,\n editedAt: reply.editedAt,\n totalLikes: reply.totalLikes,\n likedByUser: reply.likedByUser,\n replies: reply.replies,\n solution: true\n };\n } else {\n return {\n id: reply.id,\n body: reply.body,\n creatorId: reply.creatorId,\n editorId: reply.editorId,\n postNumber: reply.postNumber,\n createdAt: reply.createdAt,\n editedAt: reply.editedAt,\n totalLikes: reply.totalLikes,\n likedByUser: reply.likedByUser,\n replies: reply.replies,\n solution: false\n };\n }\n }), replies);\n}\n\nfunction unmarkSolution(replies) {\n return Js_array.map((function (reply) {\n return {\n id: reply.id,\n body: reply.body,\n creatorId: reply.creatorId,\n editorId: reply.editorId,\n postNumber: reply.postNumber,\n createdAt: reply.createdAt,\n editedAt: reply.editedAt,\n totalLikes: reply.totalLikes,\n likedByUser: reply.likedByUser,\n replies: reply.replies,\n solution: false\n };\n }), replies);\n}\n\nfunction find(postId, posts) {\n return ArrayUtils.unsafeFind((function (post) {\n return post.id === postId;\n }), \"Unable for find post with ID: \" + (postId + \" in TopicShow__Post\"), posts);\n}\n\nfunction highestPostNumber(posts) {\n return Js_array.reduce((function (maxPostNumber, t) {\n if (t.postNumber > maxPostNumber) {\n return t.postNumber;\n } else {\n return maxPostNumber;\n }\n }), 0, posts);\n}\n\nfunction make(id, body, creatorId, editorId, postNumber, createdAt, editedAt, totalLikes, likedByUser, replies, solution) {\n return {\n id: id,\n body: body,\n creatorId: creatorId,\n editorId: editorId,\n postNumber: postNumber,\n createdAt: createdAt,\n editedAt: editedAt,\n totalLikes: totalLikes,\n likedByUser: likedByUser,\n replies: replies,\n solution: solution\n };\n}\n\nfunction decodeReplyId(json) {\n return Json_decode.field(\"id\", Json_decode.string, json);\n}\n\nfunction decode(json) {\n return {\n id: Json_decode.field(\"id\", Json_decode.string, json),\n body: Json_decode.field(\"body\", Json_decode.string, json),\n creatorId: Json_decode.optional((function (param) {\n return Json_decode.field(\"creatorId\", Json_decode.string, param);\n }), json),\n editorId: Json_decode.optional((function (param) {\n return Json_decode.field(\"editorId\", Json_decode.string, param);\n }), json),\n postNumber: Json_decode.field(\"postNumber\", Json_decode.$$int, json),\n createdAt: Json_decode.field(\"createdAt\", DateFns.decodeISO, json),\n editedAt: Json_decode.optional((function (param) {\n return Json_decode.field(\"editedAt\", DateFns.decodeISO, param);\n }), json),\n totalLikes: Json_decode.field(\"totalLikes\", Json_decode.$$int, json),\n likedByUser: Json_decode.field(\"likedByUser\", Json_decode.bool, json),\n replies: Json_decode.field(\"replies\", (function (param) {\n return Json_decode.array(decodeReplyId, param);\n }), json),\n solution: Json_decode.field(\"solution\", Json_decode.bool, json)\n };\n}\n\nexport {\n id ,\n creatorId ,\n editorId ,\n body ,\n replies ,\n createdAt ,\n editedAt ,\n likedByUser ,\n postNumber ,\n totalLikes ,\n solution ,\n user ,\n sort ,\n repliesToPost ,\n addReply ,\n addLike ,\n removeLike ,\n markAsSolution ,\n unmarkSolution ,\n find ,\n highestPostNumber ,\n make ,\n decodeReplyId ,\n decode ,\n}\n/* User Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as DateFns from \"../../shared/utils/DateFns.bs.js\";\nimport * as Caml_option from \"../../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as Json_decode from \"../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\n\nfunction title(t) {\n return t.title;\n}\n\nfunction lockedAt(t) {\n return t.lockedAt;\n}\n\nfunction lockedById(t) {\n return t.lockedById;\n}\n\nfunction id(t) {\n return t.id;\n}\n\nfunction topicCategoryId(t) {\n return t.topicCategoryId;\n}\n\nfunction updateTitle(title, t) {\n return {\n id: t.id,\n title: title,\n topicCategoryId: t.topicCategoryId,\n lockedAt: t.lockedAt,\n lockedById: t.lockedById\n };\n}\n\nfunction lock(lockedById, t) {\n return {\n id: t.id,\n title: t.title,\n topicCategoryId: t.topicCategoryId,\n lockedAt: Caml_option.some(new Date()),\n lockedById: lockedById\n };\n}\n\nfunction unlock(t) {\n return {\n id: t.id,\n title: t.title,\n topicCategoryId: t.topicCategoryId,\n lockedAt: undefined,\n lockedById: undefined\n };\n}\n\nfunction decode(json) {\n return {\n id: Json_decode.field(\"id\", Json_decode.string, json),\n title: Json_decode.field(\"title\", Json_decode.string, json),\n topicCategoryId: Json_decode.optional((function (param) {\n return Json_decode.field(\"topicCategoryId\", Json_decode.string, param);\n }), json),\n lockedAt: Json_decode.optional((function (param) {\n return Json_decode.field(\"lockedAt\", DateFns.decodeISO, param);\n }), json),\n lockedById: Json_decode.optional((function (param) {\n return Json_decode.field(\"lockedById\", Json_decode.string, param);\n }), json)\n };\n}\n\nexport {\n title ,\n lockedAt ,\n lockedById ,\n id ,\n topicCategoryId ,\n updateTitle ,\n lock ,\n unlock ,\n decode ,\n}\n/* DateFns Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as User from \"../../shared/types/User.bs.js\";\nimport * as React from \"react\";\nimport * as Avatar from \"../../shared/Avatar.bs.js\";\nimport * as DateFns from \"../../shared/utils/DateFns.bs.js\";\n\nfunction str(prim) {\n return prim;\n}\n\nvar avatarClasses = \"w-9 h-9 md:w-9 md:h-9 text-xs rounded-full overflow-hidden shrink-0 object-cover\";\n\nfunction avatar(avatarUrl, name) {\n if (avatarUrl !== undefined) {\n return React.createElement(\"img\", {\n className: avatarClasses,\n src: avatarUrl\n });\n } else {\n return React.createElement(Avatar.make, {\n name: name,\n className: avatarClasses\n });\n }\n}\n\nfunction TopicsShow__UserShow(Props) {\n var user = Props.user;\n var createdAt = Props.createdAt;\n var match = user !== undefined ? [\n User.name(user),\n User.avatarUrl(user),\n User.fullTitle(user)\n ] : [\n \"Unknown\",\n undefined,\n \"Unknown\"\n ];\n var name = match[0];\n return React.createElement(\"div\", undefined, React.createElement(\"p\", {\n className: \"hidden lg:block text-xs text-gray-800\"\n }, DateFns.format(createdAt, \"do MMMM, yyyy HH:mm\")), React.createElement(\"div\", {\n className: \"ps-0 py-2 lg:p-2 flex flex-row items-center lg:bg-gray-50 lg:border rounded-lg lg:mt-1\"\n }, React.createElement(\"div\", {\n className: \"w-9 h-9 rounded-full bg-gray-500 text-white border border-gray-300 flex items-center justify-center shrink-0 overflow-hidden\"\n }, avatar(match[1], name)), React.createElement(\"div\", {\n className: \"ps-2 \"\n }, React.createElement(\"p\", {\n className: \"font-semibold text-xs\"\n }, name), React.createElement(\"p\", {\n className: \"text-xs leadig-normal\"\n }, match[2]))), React.createElement(\"p\", {\n className: \"block lg:hidden pb-2 text-xs text-gray-800\"\n }, DateFns.format(createdAt, \"do MMMM, yyyy HH:mm\")));\n}\n\nvar make = TopicsShow__UserShow;\n\nexport {\n str ,\n avatarClasses ,\n avatar ,\n make ,\n}\n/* User Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../shared/utils/I18n.bs.js\";\nimport * as User from \"../../shared/types/User.bs.js\";\nimport * as React from \"react\";\nimport * as Avatar from \"../../shared/Avatar.bs.js\";\nimport * as Tooltip from \"../../shared/components/Tooltip.bs.js\";\nimport * as Belt_Option from \"../../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as MarkdownBlock from \"../../shared/components/MarkdownBlock.bs.js\";\nimport * as TopicsShow__Post from \"../types/TopicsShow__Post.bs.js\";\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.TopicsShow__PostReply\";\n\nfunction t(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nimport \"./TopicsShow__PostReply.css\"\n;\n\nvar avatarClasses = \"w-6 h-6 md:w-8 md:h-8 text-xs border border-gray-300 rounded-full overflow-hidden shrink-0 object-cover\";\n\nfunction avatar(user) {\n var avatarUrl = Belt_Option.flatMap(user, User.avatarUrl);\n var name = Belt_Option.mapWithDefault(user, \"?\", User.name);\n if (avatarUrl !== undefined) {\n return React.createElement(\"img\", {\n className: avatarClasses,\n src: avatarUrl\n });\n } else {\n return React.createElement(Avatar.make, {\n name: name,\n className: avatarClasses\n });\n }\n}\n\nfunction navigateToPost(postId) {\n var elementId = \"post-show-\" + postId;\n var element = document.getElementById(elementId);\n if (element == null) {\n Rollbar.error(\"Could not find the post to scroll to.\");\n } else {\n element.scrollIntoView();\n element.className = \"topics-show__highlighted-item\";\n }\n}\n\nfunction TopicsShow__PostReply(Props) {\n var post = Props.post;\n var users = Props.users;\n var user = TopicsShow__Post.user(users, post);\n var tip = React.createElement(\"div\", {\n className: \"\"\n }, t(undefined, undefined, \"jump_reply\"));\n return React.createElement(\"div\", {\n className: \"topics-post-reply-show__replies flex flex-col border bg-gray-50 rounded-lg mb-2 p-2 md:p-4\"\n }, React.createElement(\"div\", {\n className: \"flex justify-between\"\n }, React.createElement(\"div\", {\n className: \"flex items-center\"\n }, avatar(user), React.createElement(\"span\", {\n className: \"text-xs font-semibold ms-2\"\n }, Belt_Option.mapWithDefault(user, \"Unknown\", User.name))), React.createElement(Tooltip.make, {\n tip: tip,\n position: \"Start\",\n children: React.createElement(\"div\", {\n \"aria-label\": t(undefined, undefined, \"navigate_post\") + \" \" + TopicsShow__Post.id(post),\n className: \"shrink-0 flex items-center justify-center w-7 h-7 rounded leading-tight border bg-gray-50 text-gray-600 cursor-pointer hover:bg-gray-300\",\n onClick: (function (param) {\n navigateToPost(TopicsShow__Post.id(post));\n })\n }, React.createElement(\"i\", {\n className: \"fas fa-angle-double-down\"\n }))\n })), React.createElement(\"div\", {\n className: \"text-sm ms-9\"\n }, React.createElement(MarkdownBlock.make, {\n markdown: TopicsShow__Post.body(post),\n className: \"leading-normal text-sm \",\n profile: /* Permissive */0\n })));\n}\n\nvar make = TopicsShow__PostReply;\n\nexport {\n str ,\n t ,\n avatarClasses ,\n avatar ,\n navigateToPost ,\n make ,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../shared/utils/I18n.bs.js\";\nimport * as User from \"../../shared/types/User.bs.js\";\nimport * as Curry from \"../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as Avatar from \"../../shared/Avatar.bs.js\";\nimport * as PfIcon from \"../../packages/pf-icon/src/PfIcon.bs.js\";\nimport * as $$String from \"../../../../node_modules/rescript/lib/es6/string.js\";\nimport * as Js_array from \"../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as ArrayUtils from \"../../shared/utils/ArrayUtils.bs.js\";\nimport * as Js_promise from \"../../../../node_modules/rescript/lib/es6/js_promise.js\";\nimport * as Belt_Option from \"../../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as Caml_option from \"../../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as OptionUtils from \"../../shared/utils/OptionUtils.bs.js\";\nimport * as GraphqlQuery from \"../../shared/utils/GraphqlQuery.bs.js\";\nimport * as $$Notification from \"../../shared/Notification.bs.js\";\nimport * as MarkdownBlock from \"../../shared/components/MarkdownBlock.bs.js\";\nimport * as DisablingCover from \"../../shared/components/DisablingCover.bs.js\";\nimport * as MarkdownEditor from \"../../shared/components/MarkdownEditor.bs.js\";\nimport * as TopicsShow__Post from \"../types/TopicsShow__Post.bs.js\";\nimport * as TopicsShow__Topic from \"../types/TopicsShow__Topic.bs.js\";\n\nfunction str(prim) {\n return prim;\n}\n\nimport \"./TopicsShow__PostEditor.css\"\n;\n\nvar partial_arg = \"components.TopicsShow__PostEditor\";\n\nfunction tr(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nvar Raw = {};\n\nvar query = \"mutation CreatePostMutation($body: String!, $topicId: ID!, $replyToPostId: ID) {\\ncreatePost(body: $body, topicId: $topicId, replyToPostId: $replyToPostId) {\\npostId \\n}\\n\\n}\\n\";\n\nfunction parse(value) {\n var value$1 = value.createPost;\n var value$2 = value$1.postId;\n return {\n createPost: {\n postId: !(value$2 == null) ? value$2 : undefined\n }\n };\n}\n\nfunction serialize(value) {\n var value$1 = value.createPost;\n var value$2 = value$1.postId;\n var postId = value$2 !== undefined ? value$2 : null;\n var createPost = {\n postId: postId\n };\n return {\n createPost: createPost\n };\n}\n\nfunction serializeVariables(inp) {\n var a = inp.replyToPostId;\n return {\n body: inp.body,\n topicId: inp.topicId,\n replyToPostId: a !== undefined ? a : undefined\n };\n}\n\nfunction makeVariables(body, topicId, replyToPostId, param) {\n return {\n body: body,\n topicId: topicId,\n replyToPostId: replyToPostId\n };\n}\n\nvar CreatePostQuery_inner = {\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables\n};\n\nvar include = GraphqlQuery.Extender({\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar $$fetch = include.$$fetch;\n\nvar CreatePostQuery_Graphql_error = include.Graphql_error;\n\nvar CreatePostQuery_decodeNotification = include.decodeNotification;\n\nvar CreatePostQuery_decodeObject = include.decodeObject;\n\nvar CreatePostQuery_decodeNotifications = include.decodeNotifications;\n\nvar CreatePostQuery_decodeErrors = include.decodeErrors;\n\nvar CreatePostQuery_flashNotifications = include.flashNotifications;\n\nvar CreatePostQuery_sendQuery = include.sendQuery;\n\nvar CreatePostQuery_query = include.query;\n\nvar CreatePostQuery_make = include.make;\n\nvar CreatePostQuery = {\n CreatePostQuery_inner: CreatePostQuery_inner,\n Raw: Raw,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables,\n Graphql_error: CreatePostQuery_Graphql_error,\n decodeNotification: CreatePostQuery_decodeNotification,\n decodeObject: CreatePostQuery_decodeObject,\n decodeNotifications: CreatePostQuery_decodeNotifications,\n decodeErrors: CreatePostQuery_decodeErrors,\n flashNotifications: CreatePostQuery_flashNotifications,\n sendQuery: CreatePostQuery_sendQuery,\n query: CreatePostQuery_query,\n $$fetch: $$fetch,\n make: CreatePostQuery_make\n};\n\nvar Raw$1 = {};\n\nvar query$1 = \"mutation UpdatePostMutation($id: ID!, $body: String!, $editReason: String) {\\nupdatePost(id: $id, body: $body, editReason: $editReason) {\\nsuccess \\n}\\n\\n}\\n\";\n\nfunction parse$1(value) {\n var value$1 = value.updatePost;\n return {\n updatePost: {\n success: value$1.success\n }\n };\n}\n\nfunction serialize$1(value) {\n var value$1 = value.updatePost;\n var value$2 = value$1.success;\n var updatePost = {\n success: value$2\n };\n return {\n updatePost: updatePost\n };\n}\n\nfunction serializeVariables$1(inp) {\n var a = inp.editReason;\n return {\n id: inp.id,\n body: inp.body,\n editReason: a !== undefined ? a : undefined\n };\n}\n\nfunction makeVariables$1(id, body, editReason, param) {\n return {\n id: id,\n body: body,\n editReason: editReason\n };\n}\n\nvar UpdatePostQuery_inner = {\n Raw: Raw$1,\n query: query$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n makeVariables: makeVariables$1\n};\n\nvar include$1 = GraphqlQuery.Extender({\n Raw: Raw$1,\n query: query$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar $$fetch$1 = include$1.$$fetch;\n\nvar UpdatePostQuery_Graphql_error = include$1.Graphql_error;\n\nvar UpdatePostQuery_decodeNotification = include$1.decodeNotification;\n\nvar UpdatePostQuery_decodeObject = include$1.decodeObject;\n\nvar UpdatePostQuery_decodeNotifications = include$1.decodeNotifications;\n\nvar UpdatePostQuery_decodeErrors = include$1.decodeErrors;\n\nvar UpdatePostQuery_flashNotifications = include$1.flashNotifications;\n\nvar UpdatePostQuery_sendQuery = include$1.sendQuery;\n\nvar UpdatePostQuery_query = include$1.query;\n\nvar UpdatePostQuery_make = include$1.make;\n\nvar UpdatePostQuery = {\n UpdatePostQuery_inner: UpdatePostQuery_inner,\n Raw: Raw$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n makeVariables: makeVariables$1,\n Graphql_error: UpdatePostQuery_Graphql_error,\n decodeNotification: UpdatePostQuery_decodeNotification,\n decodeObject: UpdatePostQuery_decodeObject,\n decodeNotifications: UpdatePostQuery_decodeNotifications,\n decodeErrors: UpdatePostQuery_decodeErrors,\n flashNotifications: UpdatePostQuery_flashNotifications,\n sendQuery: UpdatePostQuery_sendQuery,\n query: UpdatePostQuery_query,\n $$fetch: $$fetch$1,\n make: UpdatePostQuery_make\n};\n\nvar dateTime = new Date();\n\nfunction handlePostCreateResponse(id, body, postNumber, currentUserId, setState, handlePostCB) {\n var post = TopicsShow__Post.make(id, body, currentUserId, undefined, postNumber, dateTime, undefined, 0, false, [], false);\n Curry._1(setState, (function (param) {\n return {\n body: \"\",\n saving: false,\n editReason: undefined\n };\n }));\n return Curry._1(handlePostCB, post);\n}\n\nfunction handlePostUpdateResponse(id, body, currentUserId, setState, handleCloseCB, handlePostCB, post) {\n var updatedPost = TopicsShow__Post.make(id, body, TopicsShow__Post.creatorId(post), currentUserId, TopicsShow__Post.postNumber(post), TopicsShow__Post.createdAt(post), Caml_option.some(dateTime), TopicsShow__Post.totalLikes(post), TopicsShow__Post.likedByUser(post), TopicsShow__Post.replies(post), TopicsShow__Post.solution(post));\n Curry._1(setState, (function (param) {\n return {\n body: \"\",\n saving: false,\n editReason: undefined\n };\n }));\n OptionUtils.mapWithDefault((function (cb) {\n Curry._1(cb, undefined);\n }), undefined, handleCloseCB);\n return Curry._1(handlePostCB, updatedPost);\n}\n\nfunction savePost(editReason, body, topic, setState, currentUserId, replyToPostId, handlePostCB, post, postNumber, handleCloseCB, $$event) {\n $$event.preventDefault();\n if (body === \"\") {\n return $$Notification.error(tr(undefined, undefined, \"empty\"), tr(undefined, undefined, \"cant_blank\"));\n }\n Curry._1(setState, (function (state) {\n return {\n body: state.body,\n saving: true,\n editReason: state.editReason\n };\n }));\n if (post !== undefined) {\n var postId = TopicsShow__Post.id(post);\n var variables = {\n id: postId,\n body: body,\n editReason: editReason\n };\n Js_promise.$$catch((function (param) {\n Curry._1(setState, (function (state) {\n return {\n body: state.body,\n saving: false,\n editReason: state.editReason\n };\n }));\n return Promise.resolve(undefined);\n }), Js_promise.then_((function (response) {\n if (response.updatePost.success) {\n handlePostUpdateResponse(postId, body, currentUserId, setState, handleCloseCB, handlePostCB, post);\n } else {\n Curry._1(setState, (function (state) {\n return {\n body: state.body,\n saving: false,\n editReason: state.editReason\n };\n }));\n }\n return Promise.resolve(undefined);\n }), Curry._3($$fetch$1, undefined, undefined, variables)));\n return ;\n }\n Js_promise.$$catch((function (param) {\n Curry._1(setState, (function (state) {\n return {\n body: state.body,\n saving: false,\n editReason: state.editReason\n };\n }));\n return Promise.resolve(undefined);\n }), Js_promise.then_((function (response) {\n var postId = response.createPost.postId;\n if (postId !== undefined) {\n handlePostCreateResponse(postId, body, postNumber, currentUserId, setState, handlePostCB);\n } else {\n Curry._1(setState, (function (state) {\n return {\n body: state.body,\n saving: false,\n editReason: state.editReason\n };\n }));\n }\n return Promise.resolve(undefined);\n }), Curry._3($$fetch, undefined, undefined, {\n body: body,\n topicId: TopicsShow__Topic.id(topic),\n replyToPostId: replyToPostId\n })));\n}\n\nfunction onBorderAnimationEnd($$event) {\n var element = $$event.target;\n element.className = \"w-full flex flex-col\";\n}\n\nfunction replyToUserInfo(user) {\n var avatarUrl = Belt_Option.flatMap(user, User.avatarUrl);\n var name = Belt_Option.mapWithDefault(user, \"?\", User.name);\n return React.createElement(\"div\", {\n className: \"flex items-center border bg-white px-2 py-1 rounded-lg\"\n }, avatarUrl !== undefined ? React.createElement(\"img\", {\n className: \"w-6 h-6 text-xs border border-gray-300 rounded-full overflow-hidden shrink-0 object-cover\",\n src: avatarUrl\n }) : React.createElement(Avatar.make, {\n name: name,\n className: \"w-6 h-6 text-xs border border-gray-300 rounded-full overflow-hidden shrink-0 object-cover\"\n }), React.createElement(\"span\", {\n className: \"text-xs font-semibold ms-2\"\n }, name));\n}\n\nfunction TopicsShow__PostEditor(Props) {\n var editingOpt = Props.editing;\n var id = Props.id;\n var topic = Props.topic;\n var currentUserId = Props.currentUserId;\n var handlePostCB = Props.handlePostCB;\n var replies = Props.replies;\n var users = Props.users;\n var replyToPostId = Props.replyToPostId;\n var post = Props.post;\n var handleCloseCB = Props.handleCloseCB;\n var removeReplyToPostCB = Props.removeReplyToPostCB;\n var editing = editingOpt !== undefined ? editingOpt : false;\n var match = React.useState(function () {\n return {\n body: post !== undefined ? TopicsShow__Post.body(post) : \"\",\n saving: false,\n editReason: undefined\n };\n });\n var setState = match[1];\n var state = match[0];\n var updateMarkdownCB = function (body) {\n Curry._1(setState, (function (state) {\n return {\n body: body,\n saving: state.saving,\n editReason: state.editReason\n };\n }));\n };\n var editReason = state.editReason;\n var setEditReason = function (editReason) {\n Curry._1(setState, (function (state) {\n return {\n body: state.body,\n saving: state.saving,\n editReason: editReason\n };\n }));\n };\n var newPostNumber = ArrayUtils.isNotEmpty(replies) ? TopicsShow__Post.highestPostNumber(replies) + 1 | 0 : 2;\n var partial_arg = state.body;\n return React.createElement(DisablingCover.make, {\n disabled: state.saving,\n children: React.createElement(\"div\", {\n \"aria-label\": \"Add new reply\",\n className: \"py-2 lg:px-0 max-w-4xl w-full flex mx-auto items-center justify-center relative\"\n }, React.createElement(\"div\", {\n className: \"flex w-full\"\n }, React.createElement(\"div\", {\n className: \"w-full flex flex-col\",\n id: id,\n onAnimationEnd: onBorderAnimationEnd\n }, React.createElement(\"label\", {\n className: \"inline-block tracking-wide text-gray-900 text-sm font-semibold mb-2\",\n htmlFor: \"new-reply\"\n }, replyToPostId !== undefined ? tr(undefined, undefined, \"reply_to\") : tr(undefined, undefined, \"your_reply\")), Belt_Option.mapWithDefault(Belt_Option.flatMap(replyToPostId, (function (postId) {\n return Js_array.find((function (reply) {\n return postId === TopicsShow__Post.id(reply);\n }), replies);\n })), null, (function (reply) {\n return React.createElement(\"div\", {\n className: \"topics-post-editor__reply-to-preview max-w-md rounded border border-primary-200 p-3 bg-gray-50 mb-3 overflow-hidden\"\n }, React.createElement(\"div\", {\n className: \"flex justify-between\"\n }, replyToUserInfo(TopicsShow__Post.user(users, reply)), React.createElement(\"div\", {\n className: \"flex w-6 h-6 p-2 items-center justify-center cursor-pointer border border-gray-300 rounded bg-gray-50 hover:bg-gray-400\",\n onClick: (function (param) {\n OptionUtils.mapWithDefault((function (cb) {\n Curry._1(cb, undefined);\n }), undefined, removeReplyToPostCB);\n })\n }, React.createElement(PfIcon.make, {\n className: \"if i-times-regular text-base\"\n }))), React.createElement(\"p\", {\n className: \"text-sm pt-2\"\n }, React.createElement(MarkdownBlock.make, {\n markdown: TopicsShow__Post.body(reply),\n className: \"leading-normal text-sm\",\n profile: /* Permissive */0\n })), React.createElement(\"div\", {\n className: \"topics-post-editor__reply-to-preview-bottom-fadeout\"\n }));\n })), React.createElement(\"div\", undefined, React.createElement(MarkdownEditor.make, {\n value: state.body,\n onChange: updateMarkdownCB,\n profile: /* Permissive */0,\n textareaId: \"new-reply\",\n maxLength: 10000,\n placeholder: tr(undefined, undefined, \"type_reply\")\n }), editing ? React.createElement(\"input\", {\n className: \"mt-2 appearance-none block w-full bg-white text-gray-900 font-semibold border border-gray-300 rounded py-3 px-4 mb-2 leading-tight focus:outline-none focus:bg-white focus:border-gray-500\",\n id: \"edit-reason\",\n maxLength: 500,\n placeholder: tr(undefined, undefined, \"reason_edit\"),\n value: editReason !== undefined ? editReason : \"\",\n onChange: (function ($$event) {\n var reason = $$event.target.value;\n if (reason === \"\") {\n return setEditReason(undefined);\n } else {\n return setEditReason(reason);\n }\n })\n }) : null), React.createElement(\"div\", {\n className: \"flex justify-end pt-3\"\n }, handleCloseCB !== undefined ? React.createElement(\"button\", {\n className: \"btn btn-subtle me-2\",\n disabled: state.saving,\n onClick: (function (param) {\n Curry._1(handleCloseCB, undefined);\n })\n }, tr(undefined, undefined, \"cancel\")) : null, React.createElement(\"button\", {\n className: \"btn btn-primary\",\n disabled: state.saving || $$String.trim(state.body) === \"\",\n onClick: (function (param) {\n return savePost(editReason, partial_arg, topic, setState, currentUserId, replyToPostId, handlePostCB, post, newPostNumber, handleCloseCB, param);\n })\n }, post !== undefined ? (\n TopicsShow__Post.postNumber(post) === 1 ? tr(undefined, undefined, \"update_post\") : tr(undefined, undefined, \"update_reply\")\n ) : tr(undefined, undefined, \"post_reply\"))))))\n });\n}\n\nvar make = TopicsShow__PostEditor;\n\nexport {\n str ,\n tr ,\n CreatePostQuery ,\n UpdatePostQuery ,\n dateTime ,\n handlePostCreateResponse ,\n handlePostUpdateResponse ,\n savePost ,\n onBorderAnimationEnd ,\n replyToUserInfo ,\n make ,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../shared/utils/I18n.bs.js\";\nimport * as Curry from \"../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as Tooltip from \"../../shared/components/Tooltip.bs.js\";\nimport * as Js_promise from \"../../../../node_modules/rescript/lib/es6/js_promise.js\";\nimport * as GraphqlQuery from \"../../shared/utils/GraphqlQuery.bs.js\";\nimport * as TopicsShow__Post from \"../types/TopicsShow__Post.bs.js\";\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.TopicsShow__LikeManager\";\n\nfunction t(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nvar Raw = {};\n\nvar query = \"mutation CreatePostLikeMutation($postId: ID!) {\\ncreatePostLike(postId: $postId) {\\nsuccess \\n}\\n\\n}\\n\";\n\nfunction parse(value) {\n var value$1 = value.createPostLike;\n return {\n createPostLike: {\n success: value$1.success\n }\n };\n}\n\nfunction serialize(value) {\n var value$1 = value.createPostLike;\n var value$2 = value$1.success;\n var createPostLike = {\n success: value$2\n };\n return {\n createPostLike: createPostLike\n };\n}\n\nfunction serializeVariables(inp) {\n return {\n postId: inp.postId\n };\n}\n\nfunction makeVariables(postId, param) {\n return {\n postId: postId\n };\n}\n\nvar CreatePostLikeQuery_inner = {\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables\n};\n\nvar include = GraphqlQuery.Extender({\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar $$fetch = include.$$fetch;\n\nvar CreatePostLikeQuery_Graphql_error = include.Graphql_error;\n\nvar CreatePostLikeQuery_decodeNotification = include.decodeNotification;\n\nvar CreatePostLikeQuery_decodeObject = include.decodeObject;\n\nvar CreatePostLikeQuery_decodeNotifications = include.decodeNotifications;\n\nvar CreatePostLikeQuery_decodeErrors = include.decodeErrors;\n\nvar CreatePostLikeQuery_flashNotifications = include.flashNotifications;\n\nvar CreatePostLikeQuery_sendQuery = include.sendQuery;\n\nvar CreatePostLikeQuery_query = include.query;\n\nvar CreatePostLikeQuery_make = include.make;\n\nvar CreatePostLikeQuery = {\n CreatePostLikeQuery_inner: CreatePostLikeQuery_inner,\n Raw: Raw,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables,\n Graphql_error: CreatePostLikeQuery_Graphql_error,\n decodeNotification: CreatePostLikeQuery_decodeNotification,\n decodeObject: CreatePostLikeQuery_decodeObject,\n decodeNotifications: CreatePostLikeQuery_decodeNotifications,\n decodeErrors: CreatePostLikeQuery_decodeErrors,\n flashNotifications: CreatePostLikeQuery_flashNotifications,\n sendQuery: CreatePostLikeQuery_sendQuery,\n query: CreatePostLikeQuery_query,\n $$fetch: $$fetch,\n make: CreatePostLikeQuery_make\n};\n\nvar Raw$1 = {};\n\nvar query$1 = \"mutation DeletePostLikeMutation($postId: ID!) {\\ndeletePostLike(postId: $postId) {\\nsuccess \\n}\\n\\n}\\n\";\n\nfunction parse$1(value) {\n var value$1 = value.deletePostLike;\n return {\n deletePostLike: {\n success: value$1.success\n }\n };\n}\n\nfunction serialize$1(value) {\n var value$1 = value.deletePostLike;\n var value$2 = value$1.success;\n var deletePostLike = {\n success: value$2\n };\n return {\n deletePostLike: deletePostLike\n };\n}\n\nfunction serializeVariables$1(inp) {\n return {\n postId: inp.postId\n };\n}\n\nfunction makeVariables$1(postId, param) {\n return {\n postId: postId\n };\n}\n\nvar DeletePostLikeQuery_inner = {\n Raw: Raw$1,\n query: query$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n makeVariables: makeVariables$1\n};\n\nvar include$1 = GraphqlQuery.Extender({\n Raw: Raw$1,\n query: query$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar $$fetch$1 = include$1.$$fetch;\n\nvar DeletePostLikeQuery_Graphql_error = include$1.Graphql_error;\n\nvar DeletePostLikeQuery_decodeNotification = include$1.decodeNotification;\n\nvar DeletePostLikeQuery_decodeObject = include$1.decodeObject;\n\nvar DeletePostLikeQuery_decodeNotifications = include$1.decodeNotifications;\n\nvar DeletePostLikeQuery_decodeErrors = include$1.decodeErrors;\n\nvar DeletePostLikeQuery_flashNotifications = include$1.flashNotifications;\n\nvar DeletePostLikeQuery_sendQuery = include$1.sendQuery;\n\nvar DeletePostLikeQuery_query = include$1.query;\n\nvar DeletePostLikeQuery_make = include$1.make;\n\nvar DeletePostLikeQuery = {\n DeletePostLikeQuery_inner: DeletePostLikeQuery_inner,\n Raw: Raw$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n makeVariables: makeVariables$1,\n Graphql_error: DeletePostLikeQuery_Graphql_error,\n decodeNotification: DeletePostLikeQuery_decodeNotification,\n decodeObject: DeletePostLikeQuery_decodeObject,\n decodeNotifications: DeletePostLikeQuery_decodeNotifications,\n decodeErrors: DeletePostLikeQuery_decodeErrors,\n flashNotifications: DeletePostLikeQuery_flashNotifications,\n sendQuery: DeletePostLikeQuery_sendQuery,\n query: DeletePostLikeQuery_query,\n $$fetch: $$fetch$1,\n make: DeletePostLikeQuery_make\n};\n\nfunction iconClasses(liked, saving) {\n return \"text-lg\" + (\n saving ? \" fas fa-thumbs-up cursor-pointer text-primary-200\" : (\n liked ? \" fas fa-thumbs-up cursor-pointer text-primary-400\" : \" far fa-thumbs-up cursor-pointer\"\n )\n );\n}\n\nfunction handlePostLike(saving, liked, setSaving, postId, removeLikeCB, handleCreateResponse, addLikeCB, $$event) {\n $$event.preventDefault();\n if (saving) {\n return ;\n } else {\n Curry._1(setSaving, (function (param) {\n return true;\n }));\n if (liked) {\n Js_promise.$$catch((function (param) {\n Curry._1(setSaving, (function (param) {\n return false;\n }));\n return Promise.resolve(undefined);\n }), Js_promise.then_((function (response) {\n if (response.deletePostLike.success) {\n Curry._1(removeLikeCB, undefined);\n Curry._1(setSaving, (function (param) {\n return false;\n }));\n } else {\n Curry._1(setSaving, (function (param) {\n return false;\n }));\n }\n return Promise.resolve(undefined);\n }), Curry._3($$fetch$1, undefined, undefined, {\n postId: postId\n })));\n } else {\n Js_promise.$$catch((function (param) {\n Curry._1(setSaving, (function (param) {\n return false;\n }));\n return Promise.resolve(undefined);\n }), Js_promise.then_((function (response) {\n if (response.createPostLike.success) {\n Curry._2(handleCreateResponse, setSaving, addLikeCB);\n } else {\n Curry._1(setSaving, (function (param) {\n return false;\n }));\n }\n return Promise.resolve(undefined);\n }), Curry._3($$fetch, undefined, undefined, {\n postId: postId\n })));\n }\n return ;\n }\n}\n\nfunction handleCreateResponse(setSaving, addLikeCB) {\n Curry._1(setSaving, (function (param) {\n return false;\n }));\n return Curry._1(addLikeCB, undefined);\n}\n\nfunction TopicsShow__LikeManager(Props) {\n var post = Props.post;\n var addPostLikeCB = Props.addPostLikeCB;\n var removePostLikeCB = Props.removePostLikeCB;\n var match = React.useState(function () {\n return false;\n });\n var setSaving = match[1];\n var saving = match[0];\n var liked = TopicsShow__Post.likedByUser(post);\n var tip = React.createElement(\"div\", {\n className: \"text-center\"\n }, t(undefined, undefined, \"like_button_tooltip\"));\n var partial_arg = TopicsShow__Post.id(post);\n return React.createElement(\"div\", {\n className: \"flex flex-row-reverse md:flex-row\"\n }, React.createElement(\"div\", {\n className: \"text-center pe-4 md:pt-4\"\n }, React.createElement(Tooltip.make, {\n tip: tip,\n position: \"Top\",\n children: React.createElement(\"button\", {\n \"aria-label\": (\n liked ? t(undefined, undefined, \"unlike\") : t(undefined, undefined, \"like\")\n ) + (\" \" + t(undefined, undefined, \"post\") + \" \" + TopicsShow__Post.id(post)),\n className: \"cursor-pointer flex md:flex-col items-center\",\n onClick: (function (param) {\n return handlePostLike(saving, liked, setSaving, partial_arg, removePostLikeCB, handleCreateResponse, addPostLikeCB, param);\n })\n }, React.createElement(\"div\", {\n key: iconClasses(liked, saving),\n className: \"flex items-center justify-center rounded-lg lg:rounded-full lg:bg-gray-50 hover:bg-gray-300 text-gray-600 hover:text-gray-900 h-8 w-8 md:h-10 md:w-10 p-1 md:p-2 mx-auto\"\n }, React.createElement(\"i\", {\n className: iconClasses(liked, saving)\n })), React.createElement(\"p\", {\n className: \"text-tiny lg:text-xs font-semibold\"\n }, String(TopicsShow__Post.totalLikes(post))))\n })));\n}\n\nvar make = TopicsShow__LikeManager;\n\nexport {\n str ,\n t ,\n CreatePostLikeQuery ,\n DeletePostLikeQuery ,\n iconClasses ,\n handlePostLike ,\n handleCreateResponse ,\n make ,\n}\n/* include Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../shared/utils/I18n.bs.js\";\nimport * as User from \"../../shared/types/User.bs.js\";\nimport * as $$Array from \"../../../../node_modules/rescript/lib/es6/array.js\";\nimport * as Curry from \"../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as FaIcon from \"../../shared/components/FaIcon.bs.js\";\nimport * as PfIcon from \"../../packages/pf-icon/src/PfIcon.bs.js\";\nimport * as DateFns from \"../../shared/utils/DateFns.bs.js\";\nimport * as Tooltip from \"../../shared/components/Tooltip.bs.js\";\nimport * as Dropdown from \"../../shared/components/Dropdown.bs.js\";\nimport * as ArrayUtils from \"../../shared/utils/ArrayUtils.bs.js\";\nimport * as Js_promise from \"../../../../node_modules/rescript/lib/es6/js_promise.js\";\nimport * as ReactUtils from \"../../shared/utils/ReactUtils.bs.js\";\nimport * as Belt_Option from \"../../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as Caml_option from \"../../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as WindowUtils from \"../../shared/utils/WindowUtils.bs.js\";\nimport * as GraphqlQuery from \"../../shared/utils/GraphqlQuery.bs.js\";\nimport * as MarkdownBlock from \"../../shared/components/MarkdownBlock.bs.js\";\nimport * as TopicsShow__Post from \"../types/TopicsShow__Post.bs.js\";\nimport * as TopicsShow__Topic from \"../types/TopicsShow__Topic.bs.js\";\nimport * as TopicsShow__UserShow from \"./TopicsShow__UserShow.bs.js\";\nimport * as TopicsShow__PostReply from \"./TopicsShow__PostReply.bs.js\";\nimport * as TopicsShow__PostEditor from \"./TopicsShow__PostEditor.bs.js\";\nimport * as TopicsShow__LikeManager from \"./TopicsShow__LikeManager.bs.js\";\n\nfunction str(prim) {\n return prim;\n}\n\nimport \"./TopicsShow__PostShow.css\"\n;\n\nvar partial_arg = \"components.TopicsShow__PostShow\";\n\nfunction t(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nfunction findUser(userId, users) {\n return Belt_Option.map(userId, (function (userId) {\n return User.findById(userId, users);\n }));\n}\n\nvar Raw = {};\n\nvar query = \"mutation MarkAsSolutionMutation($id: ID!) {\\nmarkPostAsSolution(id: $id) {\\nsuccess \\n}\\n\\n}\\n\";\n\nfunction parse(value) {\n var value$1 = value.markPostAsSolution;\n return {\n markPostAsSolution: {\n success: value$1.success\n }\n };\n}\n\nfunction serialize(value) {\n var value$1 = value.markPostAsSolution;\n var value$2 = value$1.success;\n var markPostAsSolution = {\n success: value$2\n };\n return {\n markPostAsSolution: markPostAsSolution\n };\n}\n\nfunction serializeVariables(inp) {\n return {\n id: inp.id\n };\n}\n\nfunction makeVariables(id, param) {\n return {\n id: id\n };\n}\n\nvar MarkPostAsSolutionQuery_inner = {\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables\n};\n\nvar include = GraphqlQuery.Extender({\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar $$fetch = include.$$fetch;\n\nvar MarkPostAsSolutionQuery_Graphql_error = include.Graphql_error;\n\nvar MarkPostAsSolutionQuery_decodeNotification = include.decodeNotification;\n\nvar MarkPostAsSolutionQuery_decodeObject = include.decodeObject;\n\nvar MarkPostAsSolutionQuery_decodeNotifications = include.decodeNotifications;\n\nvar MarkPostAsSolutionQuery_decodeErrors = include.decodeErrors;\n\nvar MarkPostAsSolutionQuery_flashNotifications = include.flashNotifications;\n\nvar MarkPostAsSolutionQuery_sendQuery = include.sendQuery;\n\nvar MarkPostAsSolutionQuery_query = include.query;\n\nvar MarkPostAsSolutionQuery_make = include.make;\n\nvar MarkPostAsSolutionQuery = {\n MarkPostAsSolutionQuery_inner: MarkPostAsSolutionQuery_inner,\n Raw: Raw,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables,\n Graphql_error: MarkPostAsSolutionQuery_Graphql_error,\n decodeNotification: MarkPostAsSolutionQuery_decodeNotification,\n decodeObject: MarkPostAsSolutionQuery_decodeObject,\n decodeNotifications: MarkPostAsSolutionQuery_decodeNotifications,\n decodeErrors: MarkPostAsSolutionQuery_decodeErrors,\n flashNotifications: MarkPostAsSolutionQuery_flashNotifications,\n sendQuery: MarkPostAsSolutionQuery_sendQuery,\n query: MarkPostAsSolutionQuery_query,\n $$fetch: $$fetch,\n make: MarkPostAsSolutionQuery_make\n};\n\nvar Raw$1 = {};\n\nvar query$1 = \"mutation UnmarkAsSolutionMutation($id: ID!) {\\nunmarkPostAsSolution(id: $id) {\\nsuccess \\n}\\n\\n}\\n\";\n\nfunction parse$1(value) {\n var value$1 = value.unmarkPostAsSolution;\n return {\n unmarkPostAsSolution: {\n success: value$1.success\n }\n };\n}\n\nfunction serialize$1(value) {\n var value$1 = value.unmarkPostAsSolution;\n var value$2 = value$1.success;\n var unmarkPostAsSolution = {\n success: value$2\n };\n return {\n unmarkPostAsSolution: unmarkPostAsSolution\n };\n}\n\nfunction serializeVariables$1(inp) {\n return {\n id: inp.id\n };\n}\n\nfunction makeVariables$1(id, param) {\n return {\n id: id\n };\n}\n\nvar UnmarkPostAsSolutionQuery_inner = {\n Raw: Raw$1,\n query: query$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n makeVariables: makeVariables$1\n};\n\nvar include$1 = GraphqlQuery.Extender({\n Raw: Raw$1,\n query: query$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar $$fetch$1 = include$1.$$fetch;\n\nvar UnmarkPostAsSolutionQuery_Graphql_error = include$1.Graphql_error;\n\nvar UnmarkPostAsSolutionQuery_decodeNotification = include$1.decodeNotification;\n\nvar UnmarkPostAsSolutionQuery_decodeObject = include$1.decodeObject;\n\nvar UnmarkPostAsSolutionQuery_decodeNotifications = include$1.decodeNotifications;\n\nvar UnmarkPostAsSolutionQuery_decodeErrors = include$1.decodeErrors;\n\nvar UnmarkPostAsSolutionQuery_flashNotifications = include$1.flashNotifications;\n\nvar UnmarkPostAsSolutionQuery_sendQuery = include$1.sendQuery;\n\nvar UnmarkPostAsSolutionQuery_query = include$1.query;\n\nvar UnmarkPostAsSolutionQuery_make = include$1.make;\n\nvar UnmarkPostAsSolutionQuery = {\n UnmarkPostAsSolutionQuery_inner: UnmarkPostAsSolutionQuery_inner,\n Raw: Raw$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n makeVariables: makeVariables$1,\n Graphql_error: UnmarkPostAsSolutionQuery_Graphql_error,\n decodeNotification: UnmarkPostAsSolutionQuery_decodeNotification,\n decodeObject: UnmarkPostAsSolutionQuery_decodeObject,\n decodeNotifications: UnmarkPostAsSolutionQuery_decodeNotifications,\n decodeErrors: UnmarkPostAsSolutionQuery_decodeErrors,\n flashNotifications: UnmarkPostAsSolutionQuery_flashNotifications,\n sendQuery: UnmarkPostAsSolutionQuery_sendQuery,\n query: UnmarkPostAsSolutionQuery_query,\n $$fetch: $$fetch$1,\n make: UnmarkPostAsSolutionQuery_make\n};\n\nvar Raw$2 = {};\n\nvar query$2 = \"mutation ArchivePostMutation($id: ID!) {\\narchivePost(id: $id) {\\nsuccess \\n}\\n\\n}\\n\";\n\nfunction parse$2(value) {\n var value$1 = value.archivePost;\n return {\n archivePost: {\n success: value$1.success\n }\n };\n}\n\nfunction serialize$2(value) {\n var value$1 = value.archivePost;\n var value$2 = value$1.success;\n var archivePost = {\n success: value$2\n };\n return {\n archivePost: archivePost\n };\n}\n\nfunction serializeVariables$2(inp) {\n return {\n id: inp.id\n };\n}\n\nfunction makeVariables$2(id, param) {\n return {\n id: id\n };\n}\n\nvar ArchivePostQuery_inner = {\n Raw: Raw$2,\n query: query$2,\n parse: parse$2,\n serialize: serialize$2,\n serializeVariables: serializeVariables$2,\n makeVariables: makeVariables$2\n};\n\nvar include$2 = GraphqlQuery.Extender({\n Raw: Raw$2,\n query: query$2,\n parse: parse$2,\n serialize: serialize$2,\n serializeVariables: serializeVariables$2,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar $$fetch$2 = include$2.$$fetch;\n\nvar ArchivePostQuery_Graphql_error = include$2.Graphql_error;\n\nvar ArchivePostQuery_decodeNotification = include$2.decodeNotification;\n\nvar ArchivePostQuery_decodeObject = include$2.decodeObject;\n\nvar ArchivePostQuery_decodeNotifications = include$2.decodeNotifications;\n\nvar ArchivePostQuery_decodeErrors = include$2.decodeErrors;\n\nvar ArchivePostQuery_flashNotifications = include$2.flashNotifications;\n\nvar ArchivePostQuery_sendQuery = include$2.sendQuery;\n\nvar ArchivePostQuery_query = include$2.query;\n\nvar ArchivePostQuery_make = include$2.make;\n\nvar ArchivePostQuery = {\n ArchivePostQuery_inner: ArchivePostQuery_inner,\n Raw: Raw$2,\n parse: parse$2,\n serialize: serialize$2,\n serializeVariables: serializeVariables$2,\n makeVariables: makeVariables$2,\n Graphql_error: ArchivePostQuery_Graphql_error,\n decodeNotification: ArchivePostQuery_decodeNotification,\n decodeObject: ArchivePostQuery_decodeObject,\n decodeNotifications: ArchivePostQuery_decodeNotifications,\n decodeErrors: ArchivePostQuery_decodeErrors,\n flashNotifications: ArchivePostQuery_flashNotifications,\n sendQuery: ArchivePostQuery_sendQuery,\n query: ArchivePostQuery_query,\n $$fetch: $$fetch$2,\n make: ArchivePostQuery_make\n};\n\nfunction markPostAsSolution(postId, markPostAsSolutionCB) {\n WindowUtils.confirm(undefined, t(undefined, undefined, \"mark_solution_confirm\"), (function (param) {\n Js_promise.then_((function (response) {\n if (response.markPostAsSolution.success) {\n Curry._1(markPostAsSolutionCB, undefined);\n }\n return Promise.resolve(undefined);\n }), Curry._3($$fetch, undefined, undefined, {\n id: postId\n }));\n }));\n}\n\nfunction unmarkPostAsSolution(postId, unmarkPostAsSolutionCB) {\n WindowUtils.confirm(undefined, t(undefined, undefined, \"unmark_solution_confirm\"), (function (param) {\n Js_promise.then_((function (response) {\n if (response.unmarkPostAsSolution.success) {\n Curry._1(unmarkPostAsSolutionCB, undefined);\n }\n return Promise.resolve(undefined);\n }), Curry._3($$fetch$1, undefined, undefined, {\n id: postId\n }));\n }));\n}\n\nfunction archivePost(isFirstPost, postId, archivePostCB) {\n if (window.confirm(isFirstPost ? t(undefined, undefined, \"delete_topic_confirm_dialog\") : t(undefined, undefined, \"delete_post_confirm_dialog\"))) {\n Js_promise.then_((function (response) {\n if (response.archivePost.success) {\n Curry._1(archivePostCB, undefined);\n }\n return Promise.resolve(undefined);\n }), Curry._3($$fetch$2, undefined, undefined, {\n id: postId\n }));\n return ;\n }\n \n}\n\nfunction solutionIcon(userCanUnmarkSolution, unmarkPostAsSolutionCB, postId) {\n var tip = React.createElement(\"div\", {\n className: \"text-center\"\n }, t(undefined, undefined, \"unmark_solution\"));\n var solutionIcon$1 = React.createElement(\"div\", {\n className: \"flex items-center justify-center w-8 h-8 bg-green-200 text-green-800 rounded-full \" + (\n userCanUnmarkSolution ? \"hover:bg-gray-50 hover:text-gray-600\" : \"\"\n )\n }, React.createElement(PfIcon.make, {\n className: \"if i-check-solid text-sm lg:text-base\"\n }));\n var iconWithTip = userCanUnmarkSolution ? React.createElement(Tooltip.make, {\n tip: tip,\n position: \"Top\",\n children: solutionIcon$1\n }) : solutionIcon$1;\n return React.createElement(\"div\", {\n \"aria-label\": t(undefined, undefined, \"marked_solution_icon\"),\n className: \"flex lg:flex-col items-center w-8 h-8 bg-green-200 lg:bg-transparent rounded md:mt-4 \" + (\n userCanUnmarkSolution ? \"cursor-pointer\" : \"\"\n ),\n onClick: (function (param) {\n if (userCanUnmarkSolution) {\n return unmarkPostAsSolution(postId, unmarkPostAsSolutionCB);\n }\n \n })\n }, iconWithTip, React.createElement(\"div\", {\n className: \"text-xs lg:text-tiny font-semibold text-green-800 lg:pt-1 \"\n }, t(undefined, undefined, \"solution_icon_label\")));\n}\n\nfunction optionsDropdown(post, isPostCreator, isTopicCreator, moderator, isFirstPost, replies, toggleShowPostEdit, archivePostCB) {\n var selected = React.createElement(\"div\", {\n \"aria-label\": t(undefined, undefined, \"options_post\") + \" \" + TopicsShow__Post.id(post),\n className: \"flex items-center justify-center w-8 h-8 rounded leading-tight border bg-gray-50 text-gray-800 cursor-pointer hover:bg-gray-50\"\n }, React.createElement(PfIcon.make, {\n className: \"if i-ellipsis-regular text-base\"\n }));\n var editPostButton = React.createElement(\"button\", {\n className: \"flex w-full px-3 py-2 font-semibold items-center text-gray-600 whitespace-nowrap\",\n onClick: (function (param) {\n Curry._1(toggleShowPostEdit, (function (param) {\n return true;\n }));\n })\n }, React.createElement(FaIcon.make, {\n classes: \"fas fa-edit fa-fw text-base\"\n }), React.createElement(\"span\", {\n className: \"ms-2\"\n }, isFirstPost ? t(undefined, undefined, \"edit_post_string\") : t(undefined, undefined, \"edit_reply_string\")));\n var showDelete = isFirstPost ? moderator || isPostCreator && ArrayUtils.isEmpty(replies) : moderator || isPostCreator;\n var deletePostButton = showDelete ? React.createElement(\"button\", {\n className: \"flex w-full px-3 py-2 font-semibold items-center text-gray-600 whitespace-nowrap\",\n onClick: (function (param) {\n archivePost(isFirstPost, TopicsShow__Post.id(post), archivePostCB);\n })\n }, React.createElement(FaIcon.make, {\n classes: \"fas fa-trash-alt fa-fw text-base\"\n }), React.createElement(\"span\", {\n className: \"ms-2\"\n }, isFirstPost ? t(undefined, undefined, \"delete_topic_string\") : t(undefined, undefined, \"delete_reply_string\"))) : null;\n var _id = TopicsShow__Post.editorId(post);\n var historyButton = _id !== undefined ? React.createElement(\"a\", {\n className: \"flex w-full px-3 py-2 font-semibold items-center text-gray-600 whitespace-nowrap\",\n href: \"/posts/\" + (TopicsShow__Post.id(post) + \"/versions\")\n }, React.createElement(FaIcon.make, {\n classes: \"fas fa-history fa-fw text-base\"\n }), React.createElement(\"span\", {\n className: \"ms-2\"\n }, t(undefined, undefined, \"history_button_text\"))) : null;\n var contents = moderator ? [\n editPostButton,\n historyButton,\n deletePostButton\n ] : (\n isPostCreator ? [\n editPostButton,\n deletePostButton\n ] : []\n );\n return React.createElement(Dropdown.make, {\n selected: selected,\n contents: contents,\n right: true\n });\n}\n\nfunction onBorderAnimationEnd($$event) {\n var element = $$event.target;\n element.className = \"\";\n}\n\nfunction navigateToEditor(param) {\n var element = document.getElementById(\"add-reply-to-topic\");\n setTimeout((function (param) {\n if (element == null) {\n Rollbar.error(\"Could not find the post to scroll to.\");\n } else {\n element.scrollIntoView();\n element.className = \"w-full flex flex-col topics-show__highlighted-item\";\n }\n }), 50);\n}\n\nfunction TopicsShow__PostShow(Props) {\n var post = Props.post;\n var topic = Props.topic;\n var users = Props.users;\n var posts = Props.posts;\n var currentUserId = Props.currentUserId;\n var moderator = Props.moderator;\n var isTopicCreator = Props.isTopicCreator;\n var updatePostCB = Props.updatePostCB;\n var addNewReplyCB = Props.addNewReplyCB;\n var addPostLikeCB = Props.addPostLikeCB;\n var removePostLikeCB = Props.removePostLikeCB;\n var markPostAsSolutionCB = Props.markPostAsSolutionCB;\n var unmarkPostAsSolutionCB = Props.unmarkPostAsSolutionCB;\n var archivePostCB = Props.archivePostCB;\n var topicSolutionId = Props.topicSolutionId;\n var creator = findUser(TopicsShow__Post.creatorId(post), users);\n var editor = findUser(TopicsShow__Post.editorId(post), users);\n var isPostCreator = Belt_Option.mapWithDefault(TopicsShow__Post.creatorId(post), false, (function (creatorId) {\n return currentUserId === creatorId;\n }));\n var isFirstPost = TopicsShow__Post.postNumber(post) === 1;\n var repliesToPost = isFirstPost ? [] : TopicsShow__Post.repliesToPost(posts, post);\n var match = React.useState(function () {\n return false;\n });\n var toggleShowPostEdit = match[1];\n var match$1 = React.useState(function () {\n return false;\n });\n var toggleShowReplies = match$1[1];\n var showReplies = match$1[0];\n var userCanUnmarkSolution = moderator || isTopicCreator;\n var tip = React.createElement(\"div\", {\n className: \"text-center\"\n }, t(undefined, undefined, \"mark_solution\"));\n var tmp;\n if (match[0]) {\n tmp = React.createElement(\"div\", {\n className: \"flex-1\"\n }, React.createElement(TopicsShow__PostEditor.make, {\n editing: true,\n id: \"edit-post-\" + TopicsShow__Post.id(post),\n topic: topic,\n currentUserId: currentUserId,\n handlePostCB: updatePostCB,\n replies: posts,\n users: users,\n post: post,\n handleCloseCB: (function (param) {\n Curry._1(toggleShowPostEdit, (function (param) {\n return false;\n }));\n })\n }));\n } else {\n var editedAt = TopicsShow__Post.editedAt(post);\n tmp = React.createElement(\"div\", {\n className: \"flex items-start justify-between min-w-0\"\n }, React.createElement(\"div\", {\n className: \"text-sm min-w-0 w-full\"\n }, React.createElement(MarkdownBlock.make, {\n markdown: TopicsShow__Post.body(post),\n className: \"leading-normal text-sm \",\n profile: /* Permissive */0\n }), editedAt !== undefined ? React.createElement(\"div\", undefined, React.createElement(\"div\", {\n className: \"mt-1 inline-block px-2 py-1 rounded bg-gray-50 text-xs text-gray-800 \"\n }, React.createElement(\"span\", undefined, t(undefined, undefined, \"last_edited_by_label\")), React.createElement(\"span\", {\n className: \"font-semibold\"\n }, editor !== undefined ? User.name(editor) : t(undefined, undefined, \"deleted_user_name\")), React.createElement(\"span\", undefined, \" on \" + DateFns.format(Caml_option.valFromOption(editedAt), \"do MMMM, yyyy HH:mm\")))) : null), React.createElement(\"div\", {\n className: \"hidden lg:block shrink-0 ms-3\"\n }, isPostCreator || moderator || isTopicCreator ? optionsDropdown(post, isPostCreator, isTopicCreator, moderator, isFirstPost, posts, toggleShowPostEdit, archivePostCB) : null));\n }\n return React.createElement(\"div\", {\n id: \"post-show-\" + TopicsShow__Post.id(post),\n onAnimationEnd: onBorderAnimationEnd\n }, React.createElement(\"div\", {\n key: TopicsShow__Post.id(post),\n className: \"flex pt-4\"\n }, React.createElement(\"div\", {\n className: \"hidden lg:flex flex-col\"\n }, React.createElement(TopicsShow__LikeManager.make, {\n post: post,\n addPostLikeCB: addPostLikeCB,\n removePostLikeCB: removePostLikeCB\n }), TopicsShow__Post.solution(post) ? solutionIcon(userCanUnmarkSolution, unmarkPostAsSolutionCB, TopicsShow__Post.id(post)) : null, ReactUtils.nullUnless(React.createElement(\"div\", {\n className: \"hidden md:flex md:flex-col items-center text-center md:w-14 pe-3 md:pe-4 md:mt-4\"\n }, React.createElement(Tooltip.make, {\n tip: tip,\n position: \"Top\",\n children: React.createElement(\"button\", {\n \"aria-label\": t(undefined, undefined, \"mark_solution\"),\n className: \"mark-as-solution__button bg-gray-50 flex items-center justify-center text-center rounded-full w-8 h-8 hover:bg-gray-50 text-gray-600\",\n onClick: (function (param) {\n markPostAsSolution(TopicsShow__Post.id(post), markPostAsSolutionCB);\n })\n }, React.createElement(PfIcon.make, {\n className: \"if i-check-solid text-sm lg:text-base\"\n }))\n })), (moderator || isTopicCreator) && !(isFirstPost || TopicsShow__Post.solution(post)) && Belt_Option.isNone(topicSolutionId))), React.createElement(\"div\", {\n className: \"flex-1 pb-6 lg:pb-8 topics-post-show__post-body min-w-0\"\n }, React.createElement(\"div\", {\n className: \"pt-2\",\n id: \"body\"\n }, React.createElement(\"div\", {\n className: \"flex justify-between lg:hidden\"\n }, React.createElement(TopicsShow__UserShow.make, {\n user: creator,\n createdAt: TopicsShow__Post.createdAt(post)\n }), React.createElement(\"div\", {\n className: \"shrink-0 mt-1\"\n }, isPostCreator || moderator || isTopicCreator ? optionsDropdown(post, isPostCreator, isTopicCreator, moderator, isFirstPost, posts, toggleShowPostEdit, archivePostCB) : null)), tmp), React.createElement(\"div\", {\n className: \"flex justify-between lg:items-end pt-4\"\n }, React.createElement(\"div\", {\n className: \"flex-1 lg:flex-initial me-3\"\n }, React.createElement(\"div\", {\n className: \"hidden lg:block\"\n }, React.createElement(TopicsShow__UserShow.make, {\n user: creator,\n createdAt: TopicsShow__Post.createdAt(post)\n })), React.createElement(\"div\", {\n className: \"flex items-center lg:items-start justify-between lg:hidden\"\n }, React.createElement(\"div\", {\n className: \"flex\"\n }, React.createElement(\"div\", {\n className: \"flex\"\n }, React.createElement(TopicsShow__LikeManager.make, {\n post: post,\n addPostLikeCB: addPostLikeCB,\n removePostLikeCB: removePostLikeCB\n }), React.createElement(\"div\", {\n className: \"pe-3\"\n }, ArrayUtils.isNotEmpty(repliesToPost) ? React.createElement(\"button\", {\n className: \"cursor-pointer flex items-center justify-center\",\n onClick: (function (param) {\n Curry._1(toggleShowReplies, (function (showReplies) {\n return !showReplies;\n }));\n })\n }, React.createElement(\"span\", {\n className: \"flex items-center justify-center rounded-lg lg:bg-gray-50 hover:bg-gray-300 text-gray-600 hover:text-gray-900 h-8 w-8 md:h-10 md:w-10 p-1 md:p-2 mx-auto\"\n }, React.createElement(FaIcon.make, {\n classes: \"far fa-comment-alt\"\n })), React.createElement(\"span\", {\n className: \"text-tiny lg:text-xs font-semibold\"\n }, String(TopicsShow__Post.replies(post).length))) : null))), React.createElement(\"div\", {\n className: \"flex space-x-3\"\n }, ReactUtils.nullUnless(React.createElement(\"button\", {\n className: \"bg-gray-50 flex md:hidden items-center text-center rounded-lg hover:bg-gray-50 text-gray-600\",\n onClick: (function (param) {\n markPostAsSolution(TopicsShow__Post.id(post), markPostAsSolutionCB);\n })\n }, React.createElement(PfIcon.make, {\n className: \"if i-check-solid text-sm lg:text-base\"\n }), React.createElement(\"span\", {\n className: \"ms-2 leading-tight text-xs md:text-tiny font-semibold block text-gray-900\"\n }, t(undefined, undefined, \"solution\"))), (moderator || isTopicCreator) && !(isFirstPost || TopicsShow__Post.solution(post)) && Belt_Option.isNone(topicSolutionId)), TopicsShow__Post.solution(post) ? solutionIcon(userCanUnmarkSolution, unmarkPostAsSolutionCB, TopicsShow__Post.id(post)) : null))), React.createElement(\"div\", {\n className: \"flex items-center text-sm font-semibold lg:mb-1\"\n }, topicSolutionId !== undefined && isFirstPost ? React.createElement(\"a\", {\n className: \"flex items-center px-3 py-2 bg-green-200 text-green-900 border border-transparent rounded me-3 focus:border-primary-400 hover:border-green-500 hover:bg-green-300\",\n href: \"#post-show-\" + topicSolutionId\n }, React.createElement(PfIcon.make, {\n className: \"if i-arrow-down-circle-regular text-sm lg:text-base\"\n }), React.createElement(\"div\", {\n className: \"text-xs font-semibold ps-2 \"\n }, t(undefined, undefined, \"go_to_solution_button\"))) : null, React.createElement(\"div\", {\n className: \"hidden lg:block\"\n }, ArrayUtils.isNotEmpty(repliesToPost) ? React.createElement(\"button\", {\n \"aria-label\": t(undefined, undefined, \"show_replies\") + \" \" + TopicsShow__Post.id(post),\n className: \"border bg-white me-3 p-2 rounded text-xs font-semibold focus:border-primary-400 hover:bg-gray-50\",\n id: \"show-replies-\" + TopicsShow__Post.id(post),\n onClick: (function (param) {\n Curry._1(toggleShowReplies, (function (showReplies) {\n return !showReplies;\n }));\n })\n }, t(undefined, TopicsShow__Post.replies(post).length, \"show_replies_button\"), React.createElement(FaIcon.make, {\n classes: \"ms-2 fas fa-chevron-\" + (\n showReplies ? \"up\" : \"down\"\n )\n })) : null), ReactUtils.nullIf(React.createElement(\"button\", {\n \"aria-label\": isFirstPost ? t(undefined, undefined, \"add_reply_topic\") : t(undefined, undefined, \"add_reply_post\") + TopicsShow__Post.id(post),\n className: \"bg-gray-50 lg:border lg:bg-gray-50 p-2 rounded text-xs font-semibold focus:border-primary-400 hover:bg-gray-300\",\n id: \"reply-button-\" + TopicsShow__Post.id(post),\n onClick: (function (param) {\n Curry._1(addNewReplyCB, undefined);\n navigateToEditor(undefined);\n })\n }, React.createElement(FaIcon.make, {\n classes: \"fas fa-reply me-2\"\n }), t(undefined, undefined, \"new_reply_button\")), Belt_Option.isSome(TopicsShow__Topic.lockedAt(topic))))), showReplies ? React.createElement(\"div\", {\n \"aria-label\": t(undefined, undefined, \"replies_post\") + \" \" + TopicsShow__Post.id(post),\n className: \"lg:ps-10 pt-2 topics-post-show__replies-container\"\n }, $$Array.map((function (post) {\n return React.createElement(TopicsShow__PostReply.make, {\n post: post,\n users: users,\n key: TopicsShow__Post.id(post)\n });\n }), repliesToPost)) : null)));\n}\n\nvar make = TopicsShow__PostShow;\n\nexport {\n str ,\n t ,\n findUser ,\n MarkPostAsSolutionQuery ,\n UnmarkPostAsSolutionQuery ,\n ArchivePostQuery ,\n markPostAsSolution ,\n unmarkPostAsSolution ,\n archivePost ,\n solutionIcon ,\n optionsDropdown ,\n onBorderAnimationEnd ,\n navigateToEditor ,\n make ,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Json_decode from \"../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\nimport * as StringUtils from \"../../shared/utils/StringUtils.bs.js\";\n\nfunction id(t) {\n return t.id;\n}\n\nfunction name(t) {\n return t.name;\n}\n\nfunction decode(json) {\n return {\n id: Json_decode.field(\"id\", Json_decode.string, json),\n name: Json_decode.field(\"name\", Json_decode.string, json)\n };\n}\n\nfunction path(t) {\n return \"/communities/\" + (t.id + (\"/\" + StringUtils.parameterize(t.name)));\n}\n\nexport {\n id ,\n name ,\n decode ,\n path ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Caml_option from \"../../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as Json_decode from \"../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\n\nfunction decode(json) {\n return {\n id: Caml_option.null_to_opt(Json_decode.field(\"id\", (function (param) {\n return Json_decode.nullable(Json_decode.string, param);\n }), json)),\n title: Json_decode.field(\"title\", Json_decode.string, json)\n };\n}\n\nfunction id(t) {\n return t.id;\n}\n\nfunction title(t) {\n return t.title;\n}\n\nexport {\n decode ,\n id ,\n title ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../shared/utils/I18n.bs.js\";\nimport * as Curry from \"../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as FaIcon from \"../../shared/components/FaIcon.bs.js\";\nimport * as Js_promise from \"../../../../node_modules/rescript/lib/es6/js_promise.js\";\nimport * as GraphqlQuery from \"../../shared/utils/GraphqlQuery.bs.js\";\n\nvar partial_arg = \"components.TopicsShow__SubscriptionManager\";\n\nfunction t(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nfunction str(prim) {\n return prim;\n}\n\nvar Raw = {};\n\nvar query = \"mutation CreateTopicSubscriptionMutation($topicId: ID!) {\\ncreateTopicSubscription(topicId: $topicId) {\\nsuccess \\n}\\n\\n}\\n\";\n\nfunction parse(value) {\n var value$1 = value.createTopicSubscription;\n return {\n createTopicSubscription: {\n success: value$1.success\n }\n };\n}\n\nfunction serialize(value) {\n var value$1 = value.createTopicSubscription;\n var value$2 = value$1.success;\n var createTopicSubscription = {\n success: value$2\n };\n return {\n createTopicSubscription: createTopicSubscription\n };\n}\n\nfunction serializeVariables(inp) {\n return {\n topicId: inp.topicId\n };\n}\n\nfunction makeVariables(topicId, param) {\n return {\n topicId: topicId\n };\n}\n\nvar CreateTopicSubscriptionQuery_inner = {\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables\n};\n\nvar include = GraphqlQuery.Extender({\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar $$fetch = include.$$fetch;\n\nvar CreateTopicSubscriptionQuery_Graphql_error = include.Graphql_error;\n\nvar CreateTopicSubscriptionQuery_decodeNotification = include.decodeNotification;\n\nvar CreateTopicSubscriptionQuery_decodeObject = include.decodeObject;\n\nvar CreateTopicSubscriptionQuery_decodeNotifications = include.decodeNotifications;\n\nvar CreateTopicSubscriptionQuery_decodeErrors = include.decodeErrors;\n\nvar CreateTopicSubscriptionQuery_flashNotifications = include.flashNotifications;\n\nvar CreateTopicSubscriptionQuery_sendQuery = include.sendQuery;\n\nvar CreateTopicSubscriptionQuery_query = include.query;\n\nvar CreateTopicSubscriptionQuery_make = include.make;\n\nvar CreateTopicSubscriptionQuery = {\n CreateTopicSubscriptionQuery_inner: CreateTopicSubscriptionQuery_inner,\n Raw: Raw,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables,\n Graphql_error: CreateTopicSubscriptionQuery_Graphql_error,\n decodeNotification: CreateTopicSubscriptionQuery_decodeNotification,\n decodeObject: CreateTopicSubscriptionQuery_decodeObject,\n decodeNotifications: CreateTopicSubscriptionQuery_decodeNotifications,\n decodeErrors: CreateTopicSubscriptionQuery_decodeErrors,\n flashNotifications: CreateTopicSubscriptionQuery_flashNotifications,\n sendQuery: CreateTopicSubscriptionQuery_sendQuery,\n query: CreateTopicSubscriptionQuery_query,\n $$fetch: $$fetch,\n make: CreateTopicSubscriptionQuery_make\n};\n\nvar Raw$1 = {};\n\nvar query$1 = \"mutation DeleteTopicSubscriptionMutation($topicId: ID!) {\\ndeleteTopicSubscription(topicId: $topicId) {\\nsuccess \\n}\\n\\n}\\n\";\n\nfunction parse$1(value) {\n var value$1 = value.deleteTopicSubscription;\n return {\n deleteTopicSubscription: {\n success: value$1.success\n }\n };\n}\n\nfunction serialize$1(value) {\n var value$1 = value.deleteTopicSubscription;\n var value$2 = value$1.success;\n var deleteTopicSubscription = {\n success: value$2\n };\n return {\n deleteTopicSubscription: deleteTopicSubscription\n };\n}\n\nfunction serializeVariables$1(inp) {\n return {\n topicId: inp.topicId\n };\n}\n\nfunction makeVariables$1(topicId, param) {\n return {\n topicId: topicId\n };\n}\n\nvar DeleteTopicSubscriptionQuery_inner = {\n Raw: Raw$1,\n query: query$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n makeVariables: makeVariables$1\n};\n\nvar include$1 = GraphqlQuery.Extender({\n Raw: Raw$1,\n query: query$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar $$fetch$1 = include$1.$$fetch;\n\nvar DeleteTopicSubscriptionQuery_Graphql_error = include$1.Graphql_error;\n\nvar DeleteTopicSubscriptionQuery_decodeNotification = include$1.decodeNotification;\n\nvar DeleteTopicSubscriptionQuery_decodeObject = include$1.decodeObject;\n\nvar DeleteTopicSubscriptionQuery_decodeNotifications = include$1.decodeNotifications;\n\nvar DeleteTopicSubscriptionQuery_decodeErrors = include$1.decodeErrors;\n\nvar DeleteTopicSubscriptionQuery_flashNotifications = include$1.flashNotifications;\n\nvar DeleteTopicSubscriptionQuery_sendQuery = include$1.sendQuery;\n\nvar DeleteTopicSubscriptionQuery_query = include$1.query;\n\nvar DeleteTopicSubscriptionQuery_make = include$1.make;\n\nvar DeleteTopicSubscriptionQuery = {\n DeleteTopicSubscriptionQuery_inner: DeleteTopicSubscriptionQuery_inner,\n Raw: Raw$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n makeVariables: makeVariables$1,\n Graphql_error: DeleteTopicSubscriptionQuery_Graphql_error,\n decodeNotification: DeleteTopicSubscriptionQuery_decodeNotification,\n decodeObject: DeleteTopicSubscriptionQuery_decodeObject,\n decodeNotifications: DeleteTopicSubscriptionQuery_decodeNotifications,\n decodeErrors: DeleteTopicSubscriptionQuery_decodeErrors,\n flashNotifications: DeleteTopicSubscriptionQuery_flashNotifications,\n sendQuery: DeleteTopicSubscriptionQuery_sendQuery,\n query: DeleteTopicSubscriptionQuery_query,\n $$fetch: $$fetch$1,\n make: DeleteTopicSubscriptionQuery_make\n};\n\nfunction iconClasses(subscribed, saving) {\n return \"fa-fw\" + (\n saving ? \" fas fa-bell text-primary-200\" : (\n subscribed ? \" fas fa-bell-slash cursor-pointer text-red-400\" : \" far fa-bell cursor-pointer\"\n )\n );\n}\n\nfunction handleSubscription(saving, subscribed, setSaving, topicId, subscribeCB, unsubscribeCB, $$event) {\n $$event.preventDefault();\n if (saving) {\n return ;\n } else {\n Curry._1(setSaving, (function (param) {\n return true;\n }));\n if (subscribed) {\n Js_promise.$$catch((function (param) {\n Curry._1(setSaving, (function (param) {\n return false;\n }));\n return Promise.resolve(undefined);\n }), Js_promise.then_((function (response) {\n if (response.deleteTopicSubscription.success) {\n Curry._1(unsubscribeCB, undefined);\n Curry._1(setSaving, (function (param) {\n return false;\n }));\n } else {\n Curry._1(setSaving, (function (param) {\n return false;\n }));\n }\n return Promise.resolve(undefined);\n }), Curry._3($$fetch$1, undefined, undefined, {\n topicId: topicId\n })));\n } else {\n Js_promise.$$catch((function (param) {\n Curry._1(setSaving, (function (param) {\n return false;\n }));\n return Promise.resolve(undefined);\n }), Js_promise.then_((function (response) {\n if (response.createTopicSubscription.success) {\n Curry._1(subscribeCB, undefined);\n Curry._1(setSaving, (function (param) {\n return false;\n }));\n } else {\n Curry._1(setSaving, (function (param) {\n return false;\n }));\n }\n return Promise.resolve(undefined);\n }), Curry._3($$fetch, undefined, undefined, {\n topicId: topicId\n })));\n }\n return ;\n }\n}\n\nfunction TopicsShow__SubscriptionManager(Props) {\n var topicId = Props.topicId;\n var subscribed = Props.subscribed;\n var subscribeCB = Props.subscribeCB;\n var unsubscribeCB = Props.unsubscribeCB;\n var match = React.useState(function () {\n return false;\n });\n var setSaving = match[1];\n var saving = match[0];\n return React.createElement(\"button\", {\n className: \"inline-flex items-center font-semibold p-2 md:py-1 bg-gray-50 hover:bg-gray-300 border rounded text-xs shrink-0\",\n disabled: saving,\n onClick: (function (param) {\n return handleSubscription(saving, subscribed, setSaving, topicId, subscribeCB, unsubscribeCB, param);\n })\n }, React.createElement(FaIcon.make, {\n classes: iconClasses(subscribed, saving)\n }), React.createElement(\"span\", {\n className: \"ms-2\"\n }, subscribed ? t(undefined, undefined, \"unsubscribe\") : t(undefined, undefined, \"subscribe\")));\n}\n\nvar make = TopicsShow__SubscriptionManager;\n\nexport {\n t ,\n str ,\n CreateTopicSubscriptionQuery ,\n DeleteTopicSubscriptionQuery ,\n iconClasses ,\n handleSubscription ,\n make ,\n}\n/* include Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../shared/utils/I18n.bs.js\";\nimport * as $$Array from \"../../../node_modules/rescript/lib/es6/array.js\";\nimport * as Curry from \"../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as FaIcon from \"../shared/components/FaIcon.bs.js\";\nimport * as PfIcon from \"../packages/pf-icon/src/PfIcon.bs.js\";\nimport * as Dropdown from \"../shared/components/Dropdown.bs.js\";\nimport * as Js_array from \"../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as ArrayUtils from \"../shared/utils/ArrayUtils.bs.js\";\nimport * as Js_promise from \"../../../node_modules/rescript/lib/es6/js_promise.js\";\nimport * as Belt_Option from \"../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as Caml_option from \"../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as WindowUtils from \"../shared/utils/WindowUtils.bs.js\";\nimport * as GraphqlQuery from \"../shared/utils/GraphqlQuery.bs.js\";\nimport * as TopicCategory from \"../shared/types/TopicCategory.bs.js\";\nimport * as DisablingCover from \"../shared/components/DisablingCover.bs.js\";\nimport * as TopicsShow__Post from \"./types/TopicsShow__Post.bs.js\";\nimport * as TopicsShow__Topic from \"./types/TopicsShow__Topic.bs.js\";\nimport * as TopicsShow__PostShow from \"./components/TopicsShow__PostShow.bs.js\";\nimport * as TopicsShow__Community from \"./types/TopicsShow__Community.bs.js\";\nimport * as TopicsShow__PostEditor from \"./components/TopicsShow__PostEditor.bs.js\";\nimport * as TopicsShow__LinkedTarget from \"./types/TopicsShow__LinkedTarget.bs.js\";\nimport * as TopicsShow__SubscriptionManager from \"./components/TopicsShow__SubscriptionManager.bs.js\";\n\nimport \"./TopicsShow__Root.css\"\n;\n\nvar partial_arg = \"components.TopicsShow__Root\";\n\nfunction t(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nvar partial_arg$1 = \"shared\";\n\nfunction ts(param, param$1, param$2) {\n return I18n.t(partial_arg$1, param, param$1, param$2);\n}\n\nfunction str(prim) {\n return prim;\n}\n\nfunction reducer(state, action) {\n if (typeof action === \"number\") {\n switch (action) {\n case /* LikeFirstPost */0 :\n return {\n topic: state.topic,\n firstPost: TopicsShow__Post.addLike(state.firstPost),\n replies: state.replies,\n replyToPostId: state.replyToPostId,\n topicTitle: state.topicTitle,\n savingTopic: state.savingTopic,\n changingLockedStatus: state.changingLockedStatus,\n showTopicEditor: state.showTopicEditor,\n topicCategory: state.topicCategory,\n subscribed: state.subscribed\n };\n case /* RemoveLikeFromFirstPost */1 :\n return {\n topic: state.topic,\n firstPost: TopicsShow__Post.removeLike(state.firstPost),\n replies: state.replies,\n replyToPostId: state.replyToPostId,\n topicTitle: state.topicTitle,\n savingTopic: state.savingTopic,\n changingLockedStatus: state.changingLockedStatus,\n showTopicEditor: state.showTopicEditor,\n topicCategory: state.topicCategory,\n subscribed: state.subscribed\n };\n case /* RemoveReplyToPost */2 :\n return {\n topic: state.topic,\n firstPost: state.firstPost,\n replies: state.replies,\n replyToPostId: undefined,\n topicTitle: state.topicTitle,\n savingTopic: state.savingTopic,\n changingLockedStatus: state.changingLockedStatus,\n showTopicEditor: state.showTopicEditor,\n topicCategory: state.topicCategory,\n subscribed: state.subscribed\n };\n case /* UnmarkReplyAsSolution */3 :\n return {\n topic: state.topic,\n firstPost: state.firstPost,\n replies: TopicsShow__Post.unmarkSolution(state.replies),\n replyToPostId: state.replyToPostId,\n topicTitle: state.topicTitle,\n savingTopic: state.savingTopic,\n changingLockedStatus: state.changingLockedStatus,\n showTopicEditor: state.showTopicEditor,\n topicCategory: state.topicCategory,\n subscribed: state.subscribed\n };\n case /* StartChangingLockStatus */4 :\n return {\n topic: state.topic,\n firstPost: state.firstPost,\n replies: state.replies,\n replyToPostId: state.replyToPostId,\n topicTitle: state.topicTitle,\n savingTopic: state.savingTopic,\n changingLockedStatus: true,\n showTopicEditor: state.showTopicEditor,\n topicCategory: state.topicCategory,\n subscribed: state.subscribed\n };\n case /* FinishUnlockingTopic */5 :\n return {\n topic: TopicsShow__Topic.unlock(state.topic),\n firstPost: state.firstPost,\n replies: state.replies,\n replyToPostId: state.replyToPostId,\n topicTitle: state.topicTitle,\n savingTopic: state.savingTopic,\n changingLockedStatus: false,\n showTopicEditor: state.showTopicEditor,\n topicCategory: state.topicCategory,\n subscribed: state.subscribed\n };\n case /* Subscribe */6 :\n return {\n topic: state.topic,\n firstPost: state.firstPost,\n replies: state.replies,\n replyToPostId: state.replyToPostId,\n topicTitle: state.topicTitle,\n savingTopic: state.savingTopic,\n changingLockedStatus: state.changingLockedStatus,\n showTopicEditor: state.showTopicEditor,\n topicCategory: state.topicCategory,\n subscribed: true\n };\n case /* Unsubscribe */7 :\n return {\n topic: state.topic,\n firstPost: state.firstPost,\n replies: state.replies,\n replyToPostId: state.replyToPostId,\n topicTitle: state.topicTitle,\n savingTopic: state.savingTopic,\n changingLockedStatus: state.changingLockedStatus,\n showTopicEditor: state.showTopicEditor,\n topicCategory: state.topicCategory,\n subscribed: false\n };\n \n }\n } else {\n switch (action.TAG | 0) {\n case /* SaveReply */0 :\n var replyToPostId = action._1;\n var newReply = action._0;\n if (replyToPostId === undefined) {\n return {\n topic: state.topic,\n firstPost: state.firstPost,\n replies: $$Array.append([newReply], state.replies),\n replyToPostId: state.replyToPostId,\n topicTitle: state.topicTitle,\n savingTopic: state.savingTopic,\n changingLockedStatus: state.changingLockedStatus,\n showTopicEditor: state.showTopicEditor,\n topicCategory: state.topicCategory,\n subscribed: state.subscribed\n };\n }\n var updatedParentPost = TopicsShow__Post.addReply(TopicsShow__Post.id(newReply), TopicsShow__Post.find(replyToPostId, state.replies));\n return {\n topic: state.topic,\n firstPost: state.firstPost,\n replies: $$Array.append([\n newReply,\n updatedParentPost\n ], Js_array.filter((function (r) {\n return TopicsShow__Post.id(r) !== replyToPostId;\n }), state.replies)),\n replyToPostId: undefined,\n topicTitle: state.topicTitle,\n savingTopic: state.savingTopic,\n changingLockedStatus: state.changingLockedStatus,\n showTopicEditor: state.showTopicEditor,\n topicCategory: state.topicCategory,\n subscribed: state.subscribed\n };\n case /* AddNewReply */1 :\n return {\n topic: state.topic,\n firstPost: state.firstPost,\n replies: state.replies,\n replyToPostId: action._0,\n topicTitle: state.topicTitle,\n savingTopic: state.savingTopic,\n changingLockedStatus: state.changingLockedStatus,\n showTopicEditor: state.showTopicEditor,\n topicCategory: state.topicCategory,\n subscribed: state.subscribed\n };\n case /* LikeReply */2 :\n var post = action._0;\n var updatedPost = TopicsShow__Post.addLike(post);\n return {\n topic: state.topic,\n firstPost: state.firstPost,\n replies: $$Array.append([updatedPost], Js_array.filter((function (reply) {\n return TopicsShow__Post.id(reply) !== TopicsShow__Post.id(post);\n }), state.replies)),\n replyToPostId: state.replyToPostId,\n topicTitle: state.topicTitle,\n savingTopic: state.savingTopic,\n changingLockedStatus: state.changingLockedStatus,\n showTopicEditor: state.showTopicEditor,\n topicCategory: state.topicCategory,\n subscribed: state.subscribed\n };\n case /* RemoveLikeFromReply */3 :\n var post$1 = action._0;\n var updatedPost$1 = TopicsShow__Post.removeLike(post$1);\n return {\n topic: state.topic,\n firstPost: state.firstPost,\n replies: $$Array.append([updatedPost$1], Js_array.filter((function (reply) {\n return TopicsShow__Post.id(reply) !== TopicsShow__Post.id(post$1);\n }), state.replies)),\n replyToPostId: state.replyToPostId,\n topicTitle: state.topicTitle,\n savingTopic: state.savingTopic,\n changingLockedStatus: state.changingLockedStatus,\n showTopicEditor: state.showTopicEditor,\n topicCategory: state.topicCategory,\n subscribed: state.subscribed\n };\n case /* UpdateFirstPost */4 :\n return {\n topic: state.topic,\n firstPost: action._0,\n replies: state.replies,\n replyToPostId: state.replyToPostId,\n topicTitle: state.topicTitle,\n savingTopic: state.savingTopic,\n changingLockedStatus: state.changingLockedStatus,\n showTopicEditor: state.showTopicEditor,\n topicCategory: state.topicCategory,\n subscribed: state.subscribed\n };\n case /* UpdateReply */5 :\n var reply = action._0;\n return {\n topic: state.topic,\n firstPost: state.firstPost,\n replies: $$Array.append([reply], Js_array.filter((function (r) {\n return TopicsShow__Post.id(r) !== TopicsShow__Post.id(reply);\n }), state.replies)),\n replyToPostId: state.replyToPostId,\n topicTitle: state.topicTitle,\n savingTopic: state.savingTopic,\n changingLockedStatus: state.changingLockedStatus,\n showTopicEditor: state.showTopicEditor,\n topicCategory: state.topicCategory,\n subscribed: state.subscribed\n };\n case /* ArchivePost */6 :\n var postId = action._0;\n return {\n topic: state.topic,\n firstPost: state.firstPost,\n replies: Js_array.filter((function (r) {\n return TopicsShow__Post.id(r) !== postId;\n }), state.replies),\n replyToPostId: state.replyToPostId,\n topicTitle: state.topicTitle,\n savingTopic: state.savingTopic,\n changingLockedStatus: state.changingLockedStatus,\n showTopicEditor: state.showTopicEditor,\n topicCategory: state.topicCategory,\n subscribed: state.subscribed\n };\n case /* UpdateTopicTitle */7 :\n return {\n topic: state.topic,\n firstPost: state.firstPost,\n replies: state.replies,\n replyToPostId: state.replyToPostId,\n topicTitle: action._0,\n savingTopic: state.savingTopic,\n changingLockedStatus: state.changingLockedStatus,\n showTopicEditor: state.showTopicEditor,\n topicCategory: state.topicCategory,\n subscribed: state.subscribed\n };\n case /* SaveTopic */8 :\n return {\n topic: action._0,\n firstPost: state.firstPost,\n replies: state.replies,\n replyToPostId: state.replyToPostId,\n topicTitle: state.topicTitle,\n savingTopic: false,\n changingLockedStatus: state.changingLockedStatus,\n showTopicEditor: false,\n topicCategory: state.topicCategory,\n subscribed: state.subscribed\n };\n case /* ShowTopicEditor */9 :\n return {\n topic: state.topic,\n firstPost: state.firstPost,\n replies: state.replies,\n replyToPostId: state.replyToPostId,\n topicTitle: state.topicTitle,\n savingTopic: state.savingTopic,\n changingLockedStatus: state.changingLockedStatus,\n showTopicEditor: action._0,\n topicCategory: state.topicCategory,\n subscribed: state.subscribed\n };\n case /* UpdateSavingTopic */10 :\n return {\n topic: state.topic,\n firstPost: state.firstPost,\n replies: state.replies,\n replyToPostId: state.replyToPostId,\n topicTitle: state.topicTitle,\n savingTopic: action._0,\n changingLockedStatus: state.changingLockedStatus,\n showTopicEditor: state.showTopicEditor,\n topicCategory: state.topicCategory,\n subscribed: state.subscribed\n };\n case /* MarkReplyAsSolution */11 :\n return {\n topic: state.topic,\n firstPost: state.firstPost,\n replies: TopicsShow__Post.markAsSolution(action._0, state.replies),\n replyToPostId: state.replyToPostId,\n topicTitle: state.topicTitle,\n savingTopic: state.savingTopic,\n changingLockedStatus: state.changingLockedStatus,\n showTopicEditor: state.showTopicEditor,\n topicCategory: state.topicCategory,\n subscribed: state.subscribed\n };\n case /* FinishLockingTopic */12 :\n return {\n topic: TopicsShow__Topic.lock(action._0, state.topic),\n firstPost: state.firstPost,\n replies: state.replies,\n replyToPostId: state.replyToPostId,\n topicTitle: state.topicTitle,\n savingTopic: state.savingTopic,\n changingLockedStatus: false,\n showTopicEditor: state.showTopicEditor,\n topicCategory: state.topicCategory,\n subscribed: state.subscribed\n };\n case /* UpdateTopicCategory */13 :\n return {\n topic: state.topic,\n firstPost: state.firstPost,\n replies: state.replies,\n replyToPostId: state.replyToPostId,\n topicTitle: state.topicTitle,\n savingTopic: state.savingTopic,\n changingLockedStatus: state.changingLockedStatus,\n showTopicEditor: state.showTopicEditor,\n topicCategory: action._0,\n subscribed: state.subscribed\n };\n \n }\n }\n}\n\nfunction subscribe(send, param) {\n return Curry._1(send, /* Subscribe */6);\n}\n\nfunction unsubscribe(send, param) {\n return Curry._1(send, /* Unsubscribe */7);\n}\n\nfunction addNewReply(send, replyToPostId, param) {\n return Curry._1(send, {\n TAG: /* AddNewReply */1,\n _0: replyToPostId\n });\n}\n\nfunction updateReply(send, reply) {\n return Curry._1(send, {\n TAG: /* UpdateReply */5,\n _0: reply\n });\n}\n\nfunction updateFirstPost(send, post) {\n return Curry._1(send, {\n TAG: /* UpdateFirstPost */4,\n _0: post\n });\n}\n\nfunction saveReply(send, replyToPostId, reply) {\n return Curry._1(send, {\n TAG: /* SaveReply */0,\n _0: reply,\n _1: replyToPostId\n });\n}\n\nfunction isTopicCreator(firstPost, currentUserId) {\n return Belt_Option.mapWithDefault(TopicsShow__Post.creatorId(firstPost), false, (function (id) {\n return id === currentUserId;\n }));\n}\n\nfunction archiveTopic(community) {\n window.location = TopicsShow__Community.path(community);\n}\n\nvar Raw = {};\n\nvar query = \"mutation UpdateTopicMutation($id: ID!, $title: String!, $topicCategoryId: ID) {\\nupdateTopic(id: $id, title: $title, topicCategoryId: $topicCategoryId) {\\nsuccess \\n}\\n\\n}\\n\";\n\nfunction parse(value) {\n var value$1 = value.updateTopic;\n return {\n updateTopic: {\n success: value$1.success\n }\n };\n}\n\nfunction serialize(value) {\n var value$1 = value.updateTopic;\n var value$2 = value$1.success;\n var updateTopic = {\n success: value$2\n };\n return {\n updateTopic: updateTopic\n };\n}\n\nfunction serializeVariables(inp) {\n var a = inp.topicCategoryId;\n return {\n id: inp.id,\n title: inp.title,\n topicCategoryId: a !== undefined ? a : undefined\n };\n}\n\nfunction makeVariables(id, title, topicCategoryId, param) {\n return {\n id: id,\n title: title,\n topicCategoryId: topicCategoryId\n };\n}\n\nvar UpdateTopicQuery_inner = {\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables\n};\n\nvar include = GraphqlQuery.Extender({\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar $$fetch = include.$$fetch;\n\nvar UpdateTopicQuery_Graphql_error = include.Graphql_error;\n\nvar UpdateTopicQuery_decodeNotification = include.decodeNotification;\n\nvar UpdateTopicQuery_decodeObject = include.decodeObject;\n\nvar UpdateTopicQuery_decodeNotifications = include.decodeNotifications;\n\nvar UpdateTopicQuery_decodeErrors = include.decodeErrors;\n\nvar UpdateTopicQuery_flashNotifications = include.flashNotifications;\n\nvar UpdateTopicQuery_sendQuery = include.sendQuery;\n\nvar UpdateTopicQuery_query = include.query;\n\nvar UpdateTopicQuery_make = include.make;\n\nvar UpdateTopicQuery = {\n UpdateTopicQuery_inner: UpdateTopicQuery_inner,\n Raw: Raw,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables,\n Graphql_error: UpdateTopicQuery_Graphql_error,\n decodeNotification: UpdateTopicQuery_decodeNotification,\n decodeObject: UpdateTopicQuery_decodeObject,\n decodeNotifications: UpdateTopicQuery_decodeNotifications,\n decodeErrors: UpdateTopicQuery_decodeErrors,\n flashNotifications: UpdateTopicQuery_flashNotifications,\n sendQuery: UpdateTopicQuery_sendQuery,\n query: UpdateTopicQuery_query,\n $$fetch: $$fetch,\n make: UpdateTopicQuery_make\n};\n\nfunction updateTopic(state, send, $$event) {\n $$event.preventDefault();\n Curry._1(send, {\n TAG: /* UpdateSavingTopic */10,\n _0: true\n });\n var topicCategoryId = Belt_Option.flatMap(state.topicCategory, (function (category) {\n return TopicCategory.id(category);\n }));\n var variables_id = TopicsShow__Topic.id(state.topic);\n var variables_title = state.topicTitle;\n var variables = {\n id: variables_id,\n title: variables_title,\n topicCategoryId: topicCategoryId\n };\n Js_promise.$$catch((function (param) {\n Curry._1(send, {\n TAG: /* UpdateSavingTopic */10,\n _0: false\n });\n return Promise.resolve(undefined);\n }), Js_promise.then_((function (response) {\n if (response.updateTopic.success) {\n var topic = TopicsShow__Topic.updateTitle(state.topicTitle, state.topic);\n Curry._1(send, {\n TAG: /* SaveTopic */8,\n _0: topic\n });\n } else {\n Curry._1(send, {\n TAG: /* UpdateSavingTopic */10,\n _0: false\n });\n }\n return Promise.resolve(undefined);\n }), Curry._3($$fetch, undefined, undefined, variables)));\n}\n\nvar Raw$1 = {};\n\nvar query$1 = \"mutation LockTopicMutation($id: ID!) {\\nlockTopic(id: $id) {\\nsuccess \\n}\\n\\n}\\n\";\n\nfunction parse$1(value) {\n var value$1 = value.lockTopic;\n return {\n lockTopic: {\n success: value$1.success\n }\n };\n}\n\nfunction serialize$1(value) {\n var value$1 = value.lockTopic;\n var value$2 = value$1.success;\n var lockTopic = {\n success: value$2\n };\n return {\n lockTopic: lockTopic\n };\n}\n\nfunction serializeVariables$1(inp) {\n return {\n id: inp.id\n };\n}\n\nfunction makeVariables$1(id, param) {\n return {\n id: id\n };\n}\n\nvar LockTopicQuery_inner = {\n Raw: Raw$1,\n query: query$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n makeVariables: makeVariables$1\n};\n\nvar include$1 = GraphqlQuery.Extender({\n Raw: Raw$1,\n query: query$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar $$fetch$1 = include$1.$$fetch;\n\nvar LockTopicQuery_Graphql_error = include$1.Graphql_error;\n\nvar LockTopicQuery_decodeNotification = include$1.decodeNotification;\n\nvar LockTopicQuery_decodeObject = include$1.decodeObject;\n\nvar LockTopicQuery_decodeNotifications = include$1.decodeNotifications;\n\nvar LockTopicQuery_decodeErrors = include$1.decodeErrors;\n\nvar LockTopicQuery_flashNotifications = include$1.flashNotifications;\n\nvar LockTopicQuery_sendQuery = include$1.sendQuery;\n\nvar LockTopicQuery_query = include$1.query;\n\nvar LockTopicQuery_make = include$1.make;\n\nvar LockTopicQuery = {\n LockTopicQuery_inner: LockTopicQuery_inner,\n Raw: Raw$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n makeVariables: makeVariables$1,\n Graphql_error: LockTopicQuery_Graphql_error,\n decodeNotification: LockTopicQuery_decodeNotification,\n decodeObject: LockTopicQuery_decodeObject,\n decodeNotifications: LockTopicQuery_decodeNotifications,\n decodeErrors: LockTopicQuery_decodeErrors,\n flashNotifications: LockTopicQuery_flashNotifications,\n sendQuery: LockTopicQuery_sendQuery,\n query: LockTopicQuery_query,\n $$fetch: $$fetch$1,\n make: LockTopicQuery_make\n};\n\nvar Raw$2 = {};\n\nvar query$2 = \"mutation UnlockTopicMutation($id: ID!) {\\nunlockTopic(id: $id) {\\nsuccess \\n}\\n\\n}\\n\";\n\nfunction parse$2(value) {\n var value$1 = value.unlockTopic;\n return {\n unlockTopic: {\n success: value$1.success\n }\n };\n}\n\nfunction serialize$2(value) {\n var value$1 = value.unlockTopic;\n var value$2 = value$1.success;\n var unlockTopic = {\n success: value$2\n };\n return {\n unlockTopic: unlockTopic\n };\n}\n\nfunction serializeVariables$2(inp) {\n return {\n id: inp.id\n };\n}\n\nfunction makeVariables$2(id, param) {\n return {\n id: id\n };\n}\n\nvar UnlockTopicQuery_inner = {\n Raw: Raw$2,\n query: query$2,\n parse: parse$2,\n serialize: serialize$2,\n serializeVariables: serializeVariables$2,\n makeVariables: makeVariables$2\n};\n\nvar include$2 = GraphqlQuery.Extender({\n Raw: Raw$2,\n query: query$2,\n parse: parse$2,\n serialize: serialize$2,\n serializeVariables: serializeVariables$2,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar $$fetch$2 = include$2.$$fetch;\n\nvar UnlockTopicQuery_Graphql_error = include$2.Graphql_error;\n\nvar UnlockTopicQuery_decodeNotification = include$2.decodeNotification;\n\nvar UnlockTopicQuery_decodeObject = include$2.decodeObject;\n\nvar UnlockTopicQuery_decodeNotifications = include$2.decodeNotifications;\n\nvar UnlockTopicQuery_decodeErrors = include$2.decodeErrors;\n\nvar UnlockTopicQuery_flashNotifications = include$2.flashNotifications;\n\nvar UnlockTopicQuery_sendQuery = include$2.sendQuery;\n\nvar UnlockTopicQuery_query = include$2.query;\n\nvar UnlockTopicQuery_make = include$2.make;\n\nvar UnlockTopicQuery = {\n UnlockTopicQuery_inner: UnlockTopicQuery_inner,\n Raw: Raw$2,\n parse: parse$2,\n serialize: serialize$2,\n serializeVariables: serializeVariables$2,\n makeVariables: makeVariables$2,\n Graphql_error: UnlockTopicQuery_Graphql_error,\n decodeNotification: UnlockTopicQuery_decodeNotification,\n decodeObject: UnlockTopicQuery_decodeObject,\n decodeNotifications: UnlockTopicQuery_decodeNotifications,\n decodeErrors: UnlockTopicQuery_decodeErrors,\n flashNotifications: UnlockTopicQuery_flashNotifications,\n sendQuery: UnlockTopicQuery_sendQuery,\n query: UnlockTopicQuery_query,\n $$fetch: $$fetch$2,\n make: UnlockTopicQuery_make\n};\n\nfunction lockTopic(topicId, currentUserId, send) {\n WindowUtils.confirm(undefined, t(undefined, undefined, \"lock_topic_confirm\"), (function (param) {\n Curry._1(send, /* StartChangingLockStatus */4);\n Js_promise.then_((function (response) {\n if (response.lockTopic.success) {\n Curry._1(send, {\n TAG: /* FinishLockingTopic */12,\n _0: currentUserId\n });\n }\n return Promise.resolve(undefined);\n }), Curry._3($$fetch$1, undefined, undefined, {\n id: topicId\n }));\n }));\n}\n\nfunction unlockTopic(topicId, send) {\n WindowUtils.confirm(undefined, t(undefined, undefined, \"unlock_topic_confirm\"), (function (param) {\n Curry._1(send, /* StartChangingLockStatus */4);\n Js_promise.then_((function (response) {\n if (response.unlockTopic.success) {\n Curry._1(send, /* FinishUnlockingTopic */5);\n }\n return Promise.resolve(undefined);\n }), Curry._3($$fetch$2, undefined, undefined, {\n id: topicId\n }));\n }));\n}\n\nfunction communityLink(community) {\n return React.createElement(\"a\", {\n className: \"btn btn-subtle\",\n href: TopicsShow__Community.path(community)\n }, React.createElement(\"i\", {\n className: \"fas fa-users\"\n }), React.createElement(\"span\", {\n className: \"ms-2\"\n }, TopicsShow__Community.name(community)));\n}\n\nfunction topicCategory(topicCategories, topicCategoryId) {\n if (topicCategoryId !== undefined) {\n return ArrayUtils.unsafeFind((function (category) {\n return TopicCategory.id(category) === topicCategoryId;\n }), \"Unable to find topic category with ID: \" + topicCategoryId, topicCategories);\n }\n \n}\n\nfunction categoryDropdownSelected(topicCategory) {\n var tmp;\n if (topicCategory !== undefined) {\n var match = TopicCategory.color(topicCategory);\n var style = {\n backgroundColor: match[0]\n };\n tmp = React.createElement(\"div\", {\n className: \"inline-flex items-center\"\n }, React.createElement(\"div\", {\n className: \"h-3 w-3 rounded mt-px\",\n style: style\n }), React.createElement(\"span\", {\n className: \"ms-2\"\n }, TopicCategory.name(topicCategory)));\n } else {\n tmp = ts(undefined, undefined, \"none\");\n }\n return React.createElement(\"div\", {\n \"aria-label\": t(undefined, undefined, \"selected_category\"),\n className: \"flex justify-between text-sm bg-white border border-gray-300 rounded py-1 px-3 mt-1 focus:outline-none focus:bg-white focus:border-primary-300 cursor-pointer\"\n }, tmp, React.createElement(FaIcon.make, {\n classes: \"ms-4 fas fa-caret-down\"\n }));\n}\n\nfunction topicCategorySelector(send, selectedTopicCategory, availableTopicCategories) {\n var selectableTopicCategories = Belt_Option.mapWithDefault(selectedTopicCategory, availableTopicCategories, (function (topicCategory) {\n return Js_array.filter((function (availableTopicCategory) {\n return TopicCategory.id(availableTopicCategory) !== TopicCategory.id(topicCategory);\n }), availableTopicCategories);\n }));\n var topicCategoryList = Js_array.map((function (topicCategory) {\n var match = TopicCategory.color(topicCategory);\n var style = {\n backgroundColor: match[0]\n };\n var categoryName = TopicCategory.name(topicCategory);\n return React.createElement(\"div\", {\n \"aria-label\": t(undefined, undefined, \"select_category\") + \" \" + categoryName,\n className: \"px-3 py-2 font-normal flex items-center\",\n onClick: (function (param) {\n Curry._1(send, {\n TAG: /* UpdateTopicCategory */13,\n _0: topicCategory\n });\n })\n }, React.createElement(\"div\", {\n className: \"w-3 h-3 rounded mt-px\",\n style: style\n }), React.createElement(\"span\", {\n className: \"ms-2\"\n }, categoryName));\n }), selectableTopicCategories);\n if (selectedTopicCategory !== undefined) {\n return Js_array.concat(topicCategoryList, [React.createElement(\"div\", {\n \"aria-label\": t(undefined, undefined, \"select_no_category\"),\n className: \"px-3 py-2 font-normal flex items-center\",\n onClick: (function (param) {\n Curry._1(send, {\n TAG: /* UpdateTopicCategory */13,\n _0: undefined\n });\n })\n }, React.createElement(\"div\", {\n className: \"w-3 h-3 rounded bg-gray-300 mt-px\"\n }), React.createElement(\"span\", {\n className: \"ms-2\"\n }, ts(undefined, undefined, \"none\")))]);\n } else {\n return topicCategoryList;\n }\n}\n\nfunction topicSolutionId(replies) {\n return Belt_Option.map(Js_array.find(TopicsShow__Post.solution, replies), TopicsShow__Post.id);\n}\n\nfunction TopicsShow__Root(Props) {\n var topic = Props.topic;\n var firstPost = Props.firstPost;\n var replies = Props.replies;\n var users = Props.users;\n var currentUserId = Props.currentUserId;\n var moderator = Props.moderator;\n var community = Props.community;\n var target = Props.target;\n var topicCategories = Props.topicCategories;\n var subscribed = Props.subscribed;\n var match = React.useReducer(reducer, topic, (function (topic) {\n return {\n topic: topic,\n firstPost: firstPost,\n replies: replies,\n replyToPostId: undefined,\n topicTitle: TopicsShow__Topic.title(topic),\n savingTopic: false,\n changingLockedStatus: false,\n showTopicEditor: false,\n topicCategory: topicCategory(topicCategories, TopicsShow__Topic.topicCategoryId(topic)),\n subscribed: subscribed\n };\n }));\n var send = match[1];\n var state = match[0];\n var tmp;\n if (target !== undefined) {\n var id = TopicsShow__LinkedTarget.id(target);\n tmp = React.createElement(\"div\", {\n className: \"max-w-4xl w-full mt-5 lg:x-4 mx-auto\"\n }, React.createElement(\"div\", {\n className: \"flex py-4 px-4 md:px-5 mx-3 lg:mx-0 bg-white border border-primary-500 shadow-md rounded-lg justify-between items-center\"\n }, React.createElement(\"p\", {\n className: \"w-3/5 md:w-4/5 text-sm\"\n }, React.createElement(\"span\", {\n className: \"font-semibold block text-xs\"\n }, t(undefined, undefined, \"linked_target_label\")), React.createElement(\"span\", undefined, TopicsShow__LinkedTarget.title(target))), id !== undefined ? React.createElement(\"a\", {\n className: \"btn btn-default\",\n href: \"/targets/\" + id\n }, t(undefined, undefined, \"view_target_button\")) : null));\n } else {\n tmp = null;\n }\n var tmp$1;\n if (state.showTopicEditor) {\n tmp$1 = React.createElement(DisablingCover.make, {\n disabled: state.savingTopic,\n children: React.createElement(\"div\", {\n className: \"flex flex-col lg:ms-14 bg-gray-50 p-2 rounded border border-primary-200\"\n }, React.createElement(\"input\", {\n className: \"appearance-none block w-full bg-white text-gray-900 font-semibold border border-gray-300 rounded py-3 px-4 mb-2 leading-tight focus:outline-none focus:bg-white focus:border-gray-500\",\n type: \"text\",\n value: state.topicTitle,\n onChange: (function ($$event) {\n Curry._1(send, {\n TAG: /* UpdateTopicTitle */7,\n _0: $$event.target.value\n });\n })\n }), React.createElement(\"div\", {\n className: \"flex flex-col md:flex-row md:justify-between md:items-end\"\n }, React.createElement(\"div\", {\n className: \"flex flex-col items-left shrink-0\"\n }, React.createElement(\"span\", {\n className: \"inline-block text-gray-600 text-tiny font-semibold me-2\"\n }, t(undefined, undefined, \"topic_category_label\")), React.createElement(Dropdown.make, {\n selected: categoryDropdownSelected(state.topicCategory),\n contents: topicCategorySelector(send, state.topicCategory, topicCategories),\n className: \"\"\n })), React.createElement(\"div\", {\n className: \"flex justify-end pt-4 md:pt-0\"\n }, React.createElement(\"button\", {\n className: \"btn btn-subtle me-3\",\n onClick: (function (param) {\n Curry._1(send, {\n TAG: /* ShowTopicEditor */9,\n _0: false\n });\n })\n }, t(undefined, undefined, \"topic_editor_cancel_button\")), React.createElement(\"button\", {\n className: \"btn btn-primary\",\n disabled: state.topicTitle.trim() === \"\",\n onClick: (function (param) {\n return updateTopic(state, send, param);\n })\n }, t(undefined, undefined, \"update_topic_button\")))))\n });\n } else {\n var isLocked = Belt_Option.isSome(TopicsShow__Topic.lockedAt(state.topic));\n var topicId = TopicsShow__Topic.id(state.topic);\n var topicCategory$1 = state.topicCategory;\n var tmp$2;\n if (topicCategory$1 !== undefined) {\n var match$1 = TopicCategory.color(topicCategory$1);\n var style = {\n backgroundColor: match$1[0]\n };\n tmp$2 = React.createElement(\"div\", {\n className: \"py-2 flex items-center lg:ps-14 text-xs font-semibold\"\n }, React.createElement(\"div\", {\n className: \"w-3 h-3 rounded\",\n style: style\n }), React.createElement(\"span\", {\n className: \"ms-2\"\n }, TopicCategory.name(topicCategory$1)));\n } else {\n tmp$2 = null;\n }\n tmp$1 = React.createElement(\"div\", {\n className: \"flex flex-col \"\n }, React.createElement(\"div\", {\n className: \"topics-show__title-container flex items-center md:items-start justify-between mb-2\"\n }, React.createElement(\"h3\", {\n \"aria-label\": t(undefined, undefined, \"topic_title\"),\n className: \"leading-snug lg:ps-14 text-base lg:text-2xl w-9/12\"\n }, TopicsShow__Topic.title(state.topic)), React.createElement(\"span\", {\n className: \"flex\"\n }, moderator || isTopicCreator(firstPost, currentUserId) ? React.createElement(\"button\", {\n className: \"topics-show__title-edit-button inline-flex items-center font-semibold p-2 md:py-1 bg-gray-50 hover:bg-gray-300 border rounded text-xs shrink-0 mt-2 ms-3\",\n onClick: (function (param) {\n Curry._1(send, {\n TAG: /* ShowTopicEditor */9,\n _0: true\n });\n })\n }, React.createElement(\"i\", {\n className: \"far fa-edit\"\n }), React.createElement(\"span\", {\n className: \"hidden md:inline-block ms-1\"\n }, t(undefined, undefined, \"edit_topic_button\"))) : null, moderator || isTopicCreator(firstPost, currentUserId) ? React.createElement(\"button\", {\n className: \"topics-show__title-edit-button inline-flex items-center font-semibold p-2 md:py-1 bg-gray-50 hover:bg-gray-300 border rounded text-xs shrink-0 mt-2 ms-2\",\n disabled: state.changingLockedStatus,\n onClick: (function (param) {\n if (isLocked) {\n return unlockTopic(topicId, send);\n } else {\n return lockTopic(topicId, currentUserId, send);\n }\n })\n }, React.createElement(PfIcon.make, {\n className: \"fa fa-\" + (\n isLocked ? \"unlock\" : \"lock\"\n )\n }), React.createElement(\"span\", {\n className: \"hidden md:inline-block ms-1\"\n }, isLocked ? t(undefined, undefined, \"unlock_topic_button\") : t(undefined, undefined, \"lock_topic_button\"))) : null)), tmp$2, React.createElement(\"div\", {\n className: \"lg:ps-14\"\n }, React.createElement(TopicsShow__SubscriptionManager.make, {\n topicId: TopicsShow__Topic.id(topic),\n subscribed: state.subscribed,\n subscribeCB: (function (param) {\n return Curry._1(send, /* Subscribe */6);\n }),\n unsubscribeCB: (function (param) {\n return Curry._1(send, /* Unsubscribe */7);\n })\n })));\n }\n var _lockedAt = TopicsShow__Topic.lockedAt(state.topic);\n var tmp$3;\n if (_lockedAt !== undefined) {\n tmp$3 = React.createElement(\"div\", {\n className: \"flex p-4 bg-yellow-100 text-yellow-900 border border-yellow-500 border-s-4 rounded-e-md mt-2 mx-auto w-full max-w-4xl mb-4 text-sm justify-center items-center\"\n }, React.createElement(\"div\", {\n className: \"w-6 h-6 text-yellow-500 shrink-0\"\n }, React.createElement(\"i\", {\n className: \"fa fa-lock\"\n })), React.createElement(\"span\", {\n className: \"ms-2\"\n }, t(undefined, undefined, \"locked_topic_notice\")));\n } else {\n var partial_arg = state.replyToPostId;\n var tmp$4 = {\n id: \"add-reply-to-topic\",\n topic: topic,\n currentUserId: currentUserId,\n handlePostCB: (function (param) {\n return Curry._1(send, {\n TAG: /* SaveReply */0,\n _0: param,\n _1: partial_arg\n });\n }),\n replies: state.replies,\n users: users,\n removeReplyToPostCB: (function (param) {\n Curry._1(send, /* RemoveReplyToPost */2);\n })\n };\n if (state.replyToPostId !== undefined) {\n tmp$4.replyToPostId = Caml_option.valFromOption(state.replyToPostId);\n }\n tmp$3 = React.createElement(TopicsShow__PostEditor.make, tmp$4);\n }\n return React.createElement(\"div\", {\n className: \"bg-gray-50 md:pt-18\"\n }, React.createElement(\"div\", {\n className: \"max-w-4xl w-full pt-5 ps-4 lg:ps-0 lg:mx-auto\"\n }, communityLink(community)), React.createElement(\"div\", {\n className: \"flex-col items-center justify-between\"\n }, tmp, React.createElement(\"div\", {\n className: \"max-w-4xl w-full mx-auto bg-white p-4 lg:p-8 my-4 border-t border-b md:border-0 lg:rounded-lg lg:shadow\"\n }, React.createElement(\"div\", {\n \"aria-label\": t(undefined, undefined, \"topic_details\")\n }, tmp$1, React.createElement(TopicsShow__PostShow.make, {\n post: state.firstPost,\n topic: state.topic,\n users: users,\n posts: state.replies,\n currentUserId: currentUserId,\n moderator: moderator,\n isTopicCreator: isTopicCreator(firstPost, currentUserId),\n updatePostCB: (function (param) {\n return Curry._1(send, {\n TAG: /* UpdateFirstPost */4,\n _0: param\n });\n }),\n addNewReplyCB: (function (param) {\n return Curry._1(send, {\n TAG: /* AddNewReply */1,\n _0: undefined\n });\n }),\n addPostLikeCB: (function (param) {\n Curry._1(send, /* LikeFirstPost */0);\n }),\n removePostLikeCB: (function (param) {\n Curry._1(send, /* RemoveLikeFromFirstPost */1);\n }),\n markPostAsSolutionCB: (function (param) {\n \n }),\n unmarkPostAsSolutionCB: (function (param) {\n \n }),\n archivePostCB: (function (param) {\n archiveTopic(community);\n }),\n topicSolutionId: topicSolutionId(state.replies),\n key: TopicsShow__Post.id(state.firstPost)\n })), React.createElement(\"h5\", {\n className: \"pt-4 pb-2 lg:ms-14 border-b\"\n }, String(state.replies.length) + \" \" + ts(undefined, undefined, \"replies\")), $$Array.map((function (reply) {\n var partial_arg = TopicsShow__Post.id(reply);\n return React.createElement(\"div\", {\n key: TopicsShow__Post.id(reply),\n className: \"topics-show__replies-wrapper\"\n }, React.createElement(TopicsShow__PostShow.make, {\n post: reply,\n topic: state.topic,\n users: users,\n posts: state.replies,\n currentUserId: currentUserId,\n moderator: moderator,\n isTopicCreator: isTopicCreator(firstPost, currentUserId),\n updatePostCB: (function (param) {\n return Curry._1(send, {\n TAG: /* UpdateReply */5,\n _0: param\n });\n }),\n addNewReplyCB: (function (param) {\n return Curry._1(send, {\n TAG: /* AddNewReply */1,\n _0: partial_arg\n });\n }),\n addPostLikeCB: (function (param) {\n Curry._1(send, {\n TAG: /* LikeReply */2,\n _0: reply\n });\n }),\n removePostLikeCB: (function (param) {\n Curry._1(send, {\n TAG: /* RemoveLikeFromReply */3,\n _0: reply\n });\n }),\n markPostAsSolutionCB: (function (param) {\n Curry._1(send, {\n TAG: /* MarkReplyAsSolution */11,\n _0: TopicsShow__Post.id(reply)\n });\n }),\n unmarkPostAsSolutionCB: (function (param) {\n Curry._1(send, /* UnmarkReplyAsSolution */3);\n }),\n archivePostCB: (function (param) {\n Curry._1(send, {\n TAG: /* ArchivePost */6,\n _0: TopicsShow__Post.id(reply)\n });\n }),\n topicSolutionId: topicSolutionId(state.replies)\n }));\n }), TopicsShow__Post.sort(state.replies))), React.createElement(\"div\", {\n className: \"mt-4 px-4\"\n }, tmp$3)));\n}\n\nvar make = TopicsShow__Root;\n\nexport {\n t ,\n ts ,\n str ,\n reducer ,\n subscribe ,\n unsubscribe ,\n addNewReply ,\n updateReply ,\n updateFirstPost ,\n saveReply ,\n isTopicCreator ,\n archiveTopic ,\n UpdateTopicQuery ,\n updateTopic ,\n LockTopicQuery ,\n UnlockTopicQuery ,\n lockTopic ,\n unlockTopic ,\n communityLink ,\n topicCategory ,\n categoryDropdownSelected ,\n topicCategorySelector ,\n topicSolutionId ,\n make ,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Psj from \"../shared/utils/Psj.bs.js\";\nimport * as User from \"../shared/types/User.bs.js\";\nimport * as React from \"react\";\nimport * as DomUtils from \"../shared/utils/DomUtils.bs.js\";\nimport * as ReactDom from \"react-dom\";\nimport * as Json_decode from \"../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\nimport * as TopicCategory from \"../shared/types/TopicCategory.bs.js\";\nimport * as TopicsShow__Post from \"../topics/types/TopicsShow__Post.bs.js\";\nimport * as TopicsShow__Root from \"../topics/TopicsShow__Root.bs.js\";\nimport * as TopicsShow__Topic from \"../topics/types/TopicsShow__Topic.bs.js\";\nimport * as TopicsShow__Community from \"../topics/types/TopicsShow__Community.bs.js\";\nimport * as TopicsShow__LinkedTarget from \"../topics/types/TopicsShow__LinkedTarget.bs.js\";\n\nfunction decodeProps(json) {\n return [\n Json_decode.field(\"topic\", TopicsShow__Topic.decode, json),\n Json_decode.field(\"firstPost\", TopicsShow__Post.decode, json),\n Json_decode.field(\"replies\", (function (param) {\n return Json_decode.array(TopicsShow__Post.decode, param);\n }), json),\n Json_decode.field(\"users\", (function (param) {\n return Json_decode.array(User.decode, param);\n }), json),\n Json_decode.field(\"currentUserId\", Json_decode.string, json),\n Json_decode.field(\"moderator\", Json_decode.bool, json),\n Json_decode.field(\"community\", TopicsShow__Community.decode, json),\n Json_decode.optional((function (param) {\n return Json_decode.field(\"target\", TopicsShow__LinkedTarget.decode, param);\n }), json),\n Json_decode.field(\"topicCategories\", (function (param) {\n return Json_decode.array(TopicCategory.decode, param);\n }), json),\n Json_decode.field(\"subscribed\", Json_decode.bool, json)\n ];\n}\n\nPsj.match(undefined, \"topics#show\", (function (param) {\n var match = decodeProps(DomUtils.parseJSONTag(undefined, undefined));\n var root = document.querySelector(\"#react-root\");\n if (!(root == null)) {\n ReactDom.render(React.createElement(TopicsShow__Root.make, {\n topic: match[0],\n firstPost: match[1],\n replies: match[2],\n users: match[3],\n currentUserId: match[4],\n moderator: match[5],\n community: match[6],\n target: match[7],\n topicCategories: match[8],\n subscribed: match[9]\n }), root);\n return ;\n }\n \n }));\n\nexport {\n decodeProps ,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as DateFns from \"../../shared/utils/DateFns.bs.js\";\n\nfunction id(t) {\n return t.id;\n}\n\nfunction title(t) {\n return t.title;\n}\n\nfunction createdAt(t) {\n return t.createdAt;\n}\n\nfunction repliesCount(t) {\n return t.repliesCount;\n}\n\nfunction makeFromJs(jsObject) {\n return {\n id: jsObject.id,\n title: jsObject.title,\n createdAt: DateFns.decodeISO(jsObject.createdAt),\n repliesCount: jsObject.liveRepliesCount\n };\n}\n\nexport {\n id ,\n title ,\n createdAt ,\n repliesCount ,\n makeFromJs ,\n}\n/* DateFns Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../shared/utils/I18n.bs.js\";\nimport * as Curry from \"../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as FaIcon from \"../shared/components/FaIcon.bs.js\";\nimport * as $$String from \"../../../node_modules/rescript/lib/es6/string.js\";\nimport * as DateFns from \"../shared/utils/DateFns.bs.js\";\nimport * as DomUtils from \"../shared/utils/DomUtils.bs.js\";\nimport * as Js_array from \"../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as ArrayUtils from \"../shared/utils/ArrayUtils.bs.js\";\nimport * as Js_promise from \"../../../node_modules/rescript/lib/es6/js_promise.js\";\nimport * as ReactUtils from \"../shared/utils/ReactUtils.bs.js\";\nimport * as Belt_Option from \"../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as Caml_option from \"../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as OptionUtils from \"../shared/utils/OptionUtils.bs.js\";\nimport * as StringUtils from \"../shared/utils/StringUtils.bs.js\";\nimport * as GraphqlQuery from \"../shared/utils/GraphqlQuery.bs.js\";\nimport * as $$Notification from \"../shared/Notification.bs.js\";\nimport * as TopicCategory from \"../shared/types/TopicCategory.bs.js\";\nimport * as DisablingCover from \"../shared/components/DisablingCover.bs.js\";\nimport * as MarkdownEditor from \"../shared/components/MarkdownEditor.bs.js\";\nimport * as TopicsShow__LinkedTarget from \"../topics/types/TopicsShow__LinkedTarget.bs.js\";\nimport * as CommunitiesNewTopic__TopicSuggestion from \"./types/CommunitiesNewTopic__TopicSuggestion.bs.js\";\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.CommunitiesNewTopic__Root\";\n\nfunction tr(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nvar partial_arg$1 = \"shared\";\n\nfunction ts(param, param$1, param$2) {\n return I18n.t(partial_arg$1, param, param$1, param$2);\n}\n\nvar initialState_similar = {\n search: \"\",\n suggestions: []\n};\n\nvar initialState = {\n title: \"\",\n titleTimeoutId: undefined,\n similar: initialState_similar,\n searching: false,\n body: \"\",\n selectedCategory: undefined,\n saving: false\n};\n\nfunction reducer(state, action) {\n if (typeof action === \"number\") {\n switch (action) {\n case /* BeginSaving */0 :\n return {\n title: state.title,\n titleTimeoutId: state.titleTimeoutId,\n similar: state.similar,\n searching: state.searching,\n body: state.body,\n selectedCategory: state.selectedCategory,\n saving: true\n };\n case /* FailSaving */1 :\n return {\n title: state.title,\n titleTimeoutId: state.titleTimeoutId,\n similar: state.similar,\n searching: state.searching,\n body: state.body,\n selectedCategory: state.selectedCategory,\n saving: false\n };\n case /* BeginSearching */2 :\n return {\n title: state.title,\n titleTimeoutId: state.titleTimeoutId,\n similar: state.similar,\n searching: true,\n body: state.body,\n selectedCategory: state.selectedCategory,\n saving: state.saving\n };\n case /* FailSearching */3 :\n return {\n title: state.title,\n titleTimeoutId: state.titleTimeoutId,\n similar: state.similar,\n searching: false,\n body: state.body,\n selectedCategory: state.selectedCategory,\n saving: state.saving\n };\n \n }\n } else {\n switch (action.TAG | 0) {\n case /* UpdateTitle */0 :\n var title = action._0;\n var similar = $$String.trim(title) === \"\" ? ({\n search: \"\",\n suggestions: []\n }) : state.similar;\n return {\n title: title,\n titleTimeoutId: state.titleTimeoutId,\n similar: similar,\n searching: state.searching,\n body: state.body,\n selectedCategory: state.selectedCategory,\n saving: state.saving\n };\n case /* UpdateTitleAndTimeout */1 :\n return {\n title: action._0,\n titleTimeoutId: Caml_option.some(action._1),\n similar: state.similar,\n searching: state.searching,\n body: state.body,\n selectedCategory: state.selectedCategory,\n saving: state.saving\n };\n case /* UpdateBody */2 :\n return {\n title: state.title,\n titleTimeoutId: state.titleTimeoutId,\n similar: state.similar,\n searching: state.searching,\n body: action._0,\n selectedCategory: state.selectedCategory,\n saving: state.saving\n };\n case /* SelectCategory */3 :\n return {\n title: state.title,\n titleTimeoutId: state.titleTimeoutId,\n similar: state.similar,\n searching: state.searching,\n body: state.body,\n selectedCategory: action._0,\n saving: state.saving\n };\n case /* FinishSearching */4 :\n return {\n title: state.title,\n titleTimeoutId: state.titleTimeoutId,\n similar: {\n search: action._0,\n suggestions: action._1\n },\n searching: false,\n body: state.body,\n selectedCategory: state.selectedCategory,\n saving: state.saving\n };\n \n }\n }\n}\n\nvar Raw = {};\n\nvar query = \"query SimilarTopicsQuery($communityId: ID!, $title: String!) {\\nsimilarTopics(communityId: $communityId, title: $title) {\\nid \\ntitle \\ncreatedAt \\nliveRepliesCount \\n}\\n\\n}\\n\";\n\nfunction parse(value) {\n var value$1 = value.similarTopics;\n return {\n similarTopics: Js_array.map((function (value) {\n return {\n id: value.id,\n title: value.title,\n createdAt: value.createdAt,\n liveRepliesCount: value.liveRepliesCount\n };\n }), value$1)\n };\n}\n\nfunction serialize(value) {\n var value$1 = value.similarTopics;\n var similarTopics = Js_array.map((function (value) {\n var value$1 = value.liveRepliesCount;\n var value$2 = value.createdAt;\n var value$3 = value.title;\n var value$4 = value.id;\n return {\n id: value$4,\n title: value$3,\n createdAt: value$2,\n liveRepliesCount: value$1\n };\n }), value$1);\n return {\n similarTopics: similarTopics\n };\n}\n\nfunction serializeVariables(inp) {\n return {\n communityId: inp.communityId,\n title: inp.title\n };\n}\n\nfunction makeVariables(communityId, title, param) {\n return {\n communityId: communityId,\n title: title\n };\n}\n\nvar SimilarTopicsQuery_inner = {\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables\n};\n\nvar include = GraphqlQuery.Extender({\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar make = include.make;\n\nvar SimilarTopicsQuery_Graphql_error = include.Graphql_error;\n\nvar SimilarTopicsQuery_decodeNotification = include.decodeNotification;\n\nvar SimilarTopicsQuery_decodeObject = include.decodeObject;\n\nvar SimilarTopicsQuery_decodeNotifications = include.decodeNotifications;\n\nvar SimilarTopicsQuery_decodeErrors = include.decodeErrors;\n\nvar SimilarTopicsQuery_flashNotifications = include.flashNotifications;\n\nvar SimilarTopicsQuery_sendQuery = include.sendQuery;\n\nvar SimilarTopicsQuery_query = include.query;\n\nvar SimilarTopicsQuery_fetch = include.$$fetch;\n\nvar SimilarTopicsQuery = {\n SimilarTopicsQuery_inner: SimilarTopicsQuery_inner,\n Raw: Raw,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables,\n Graphql_error: SimilarTopicsQuery_Graphql_error,\n decodeNotification: SimilarTopicsQuery_decodeNotification,\n decodeObject: SimilarTopicsQuery_decodeObject,\n decodeNotifications: SimilarTopicsQuery_decodeNotifications,\n decodeErrors: SimilarTopicsQuery_decodeErrors,\n flashNotifications: SimilarTopicsQuery_flashNotifications,\n sendQuery: SimilarTopicsQuery_sendQuery,\n query: SimilarTopicsQuery_query,\n $$fetch: SimilarTopicsQuery_fetch,\n make: make\n};\n\nfunction searchForSimilarTopics(send, title, communityId, param) {\n Curry._1(send, /* BeginSearching */2);\n var trimmedTitle = $$String.trim(title);\n Js_promise.$$catch((function (e) {\n console.log(e);\n $$Notification.warn(tr(undefined, undefined, \"oops\"), tr(undefined, undefined, \"failed_fetch_similar\"));\n Curry._1(send, /* FailSaving */1);\n return Promise.resolve(undefined);\n }), Js_promise.then_((function (result) {\n var suggestions = result.similarTopics.map(CommunitiesNewTopic__TopicSuggestion.makeFromJs);\n Curry._1(send, {\n TAG: /* FinishSearching */4,\n _0: trimmedTitle,\n _1: suggestions\n });\n return Promise.resolve(undefined);\n }), Curry._3(make, undefined, undefined, {\n communityId: communityId,\n title: trimmedTitle\n })));\n}\n\nfunction isInvalidString(s) {\n return $$String.trim(s) === \"\";\n}\n\nfunction updateTitleAndSearch(state, send, communityId, title) {\n Belt_Option.forEach(state.titleTimeoutId, (function (prim) {\n clearTimeout(prim);\n }));\n var trimmedTitle = $$String.trim(title);\n if ($$String.trim(title) === \"\" || trimmedTitle === state.similar.search) {\n return Curry._1(send, {\n TAG: /* UpdateTitle */0,\n _0: title\n });\n }\n var timeoutId = setTimeout((function (param) {\n return searchForSimilarTopics(send, trimmedTitle, communityId, param);\n }), 1500);\n Curry._1(send, {\n TAG: /* UpdateTitleAndTimeout */1,\n _0: title,\n _1: timeoutId\n });\n}\n\nvar Raw$1 = {};\n\nvar query$1 = \"mutation CreateTopicQuery($title: String!, $body: String!, $communityId: ID!, $targetId: ID, $topicCategoryId: ID) {\\ncreateTopic(body: $body, title: $title, communityId: $communityId, targetId: $targetId, topicCategoryId: $topicCategoryId) {\\ntopicId \\n}\\n\\n}\\n\";\n\nfunction parse$1(value) {\n var value$1 = value.createTopic;\n var value$2 = value$1.topicId;\n return {\n createTopic: {\n topicId: !(value$2 == null) ? value$2 : undefined\n }\n };\n}\n\nfunction serialize$1(value) {\n var value$1 = value.createTopic;\n var value$2 = value$1.topicId;\n var topicId = value$2 !== undefined ? value$2 : null;\n var createTopic = {\n topicId: topicId\n };\n return {\n createTopic: createTopic\n };\n}\n\nfunction serializeVariables$1(inp) {\n var a = inp.targetId;\n var a$1 = inp.topicCategoryId;\n return {\n title: inp.title,\n body: inp.body,\n communityId: inp.communityId,\n targetId: a !== undefined ? a : undefined,\n topicCategoryId: a$1 !== undefined ? a$1 : undefined\n };\n}\n\nfunction makeVariables$1(title, body, communityId, targetId, topicCategoryId, param) {\n return {\n title: title,\n body: body,\n communityId: communityId,\n targetId: targetId,\n topicCategoryId: topicCategoryId\n };\n}\n\nvar CreateTopicQuery_inner = {\n Raw: Raw$1,\n query: query$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n makeVariables: makeVariables$1\n};\n\nvar include$1 = GraphqlQuery.Extender({\n Raw: Raw$1,\n query: query$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar $$fetch = include$1.$$fetch;\n\nvar CreateTopicQuery_Graphql_error = include$1.Graphql_error;\n\nvar CreateTopicQuery_decodeNotification = include$1.decodeNotification;\n\nvar CreateTopicQuery_decodeObject = include$1.decodeObject;\n\nvar CreateTopicQuery_decodeNotifications = include$1.decodeNotifications;\n\nvar CreateTopicQuery_decodeErrors = include$1.decodeErrors;\n\nvar CreateTopicQuery_flashNotifications = include$1.flashNotifications;\n\nvar CreateTopicQuery_sendQuery = include$1.sendQuery;\n\nvar CreateTopicQuery_query = include$1.query;\n\nvar CreateTopicQuery_make = include$1.make;\n\nvar CreateTopicQuery = {\n CreateTopicQuery_inner: CreateTopicQuery_inner,\n Raw: Raw$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n makeVariables: makeVariables$1,\n Graphql_error: CreateTopicQuery_Graphql_error,\n decodeNotification: CreateTopicQuery_decodeNotification,\n decodeObject: CreateTopicQuery_decodeObject,\n decodeNotifications: CreateTopicQuery_decodeNotifications,\n decodeErrors: CreateTopicQuery_decodeErrors,\n flashNotifications: CreateTopicQuery_flashNotifications,\n sendQuery: CreateTopicQuery_sendQuery,\n query: CreateTopicQuery_query,\n $$fetch: $$fetch,\n make: CreateTopicQuery_make\n};\n\nfunction redirectToNewTopic(id, title) {\n var redirectPath = \"/topics/\" + (id + (\"/\" + StringUtils.parameterize(title)));\n window.location = redirectPath;\n}\n\nfunction saveDisabled(state) {\n if ($$String.trim(state.body) === \"\") {\n return true;\n } else {\n return $$String.trim(state.title) === \"\";\n }\n}\n\nfunction handleCreateTopic(state, send, communityId, target, topicCategory, $$event) {\n $$event.preventDefault();\n if (saveDisabled(state)) {\n return $$Notification.error(tr(undefined, undefined, \"missing_info\"), tr(undefined, undefined, \"topic_body_present\"));\n }\n Curry._1(send, /* BeginSaving */0);\n var targetId = OptionUtils.flatMap(TopicsShow__LinkedTarget.id, target);\n var topicCategoryId = OptionUtils.flatMap((function (tc) {\n return TopicCategory.id(tc);\n }), topicCategory);\n Js_promise.$$catch((function (error) {\n console.log(error);\n $$Notification.error(ts(undefined, undefined, \"notifications.unexpected_error\"), tr(undefined, undefined, \"please_reload\"));\n return Promise.resolve(undefined);\n }), Js_promise.then_((function (response) {\n var topicId = response.createTopic.topicId;\n if (topicId !== undefined) {\n $$Notification.success(tr(undefined, undefined, \"done\"), tr(undefined, undefined, \"redirecting\"));\n redirectToNewTopic(topicId, state.title);\n } else {\n Curry._1(send, /* FailSaving */1);\n }\n return Promise.resolve(undefined);\n }), Curry._3($$fetch, undefined, undefined, {\n title: state.title,\n body: state.body,\n communityId: communityId,\n targetId: targetId,\n topicCategoryId: topicCategoryId\n })));\n}\n\nfunction suggestions(state) {\n var suggestions$1 = state.similar.suggestions;\n if (ArrayUtils.isNotEmpty(suggestions$1)) {\n return React.createElement(\"div\", {\n className: \"pt-3\"\n }, React.createElement(\"span\", {\n className: \"tracking-wide text-gray-900 text-xs font-semibold\"\n }, tr(undefined, undefined, \"similar_topics\")), state.searching ? React.createElement(\"span\", {\n className: \"ms-2\"\n }, React.createElement(FaIcon.make, {\n classes: \"fa fa-spinner fa-pulse\"\n })) : null, suggestions$1.map(function (suggestion) {\n var askedOn = DateFns.formatPreset(CommunitiesNewTopic__TopicSuggestion.createdAt(suggestion), true, true, undefined, undefined);\n var n = CommunitiesNewTopic__TopicSuggestion.repliesCount(suggestion);\n var match = n !== 0 ? (\n n !== 1 ? [\n String(n) + tr(undefined, undefined, \"count_replies_label\"),\n \"bg-green-500 text-white\"\n ] : [\n tr(undefined, undefined, \"one_reply\"),\n \"bg-green-500 text-white\"\n ]\n ) : [\n tr(undefined, undefined, \"no_replies\"),\n \"bg-gray-300 text-gray-600\"\n ];\n return React.createElement(\"a\", {\n key: CommunitiesNewTopic__TopicSuggestion.id(suggestion),\n className: \"flex w-full items-center justify-between mt-1 p-3 rounded cursor-pointer border bg-gray-50 hover:text-primary-500 hover:bg-gray-50\",\n href: \"/topics/\" + (CommunitiesNewTopic__TopicSuggestion.id(suggestion) + (\"/\" + StringUtils.parameterize(CommunitiesNewTopic__TopicSuggestion.title(suggestion)))),\n target: \"_blank\"\n }, React.createElement(\"div\", {\n className: \"flex flex-col min-w-0\"\n }, React.createElement(\"h5\", {\n className: \"font-semibold text-sm leading-snug md:text-base pe-1 truncate flex-1\",\n title: CommunitiesNewTopic__TopicSuggestion.title(suggestion)\n }, CommunitiesNewTopic__TopicSuggestion.title(suggestion)), React.createElement(\"p\", {\n className: \"text-xs mt-1 leading-tight text-gray-800\"\n }, tr(undefined, undefined, \"asked_on\") + askedOn)), React.createElement(\"div\", {\n className: \"text-xs px-1 py-px ms-2 rounded font-semibold shrink-0 \" + match[1]\n }, match[0]));\n }));\n } else {\n return null;\n }\n}\n\nfunction searchingIndicator(state) {\n if (ArrayUtils.isEmpty(state.similar.suggestions) && state.searching) {\n return React.createElement(\"div\", {\n className: \"md:flex-1 ps-1 pb-3 md:p-0\"\n }, React.createElement(FaIcon.make, {\n classes: \"fas fa-spinner fa-pulse\"\n }));\n } else {\n return null;\n }\n}\n\nfunction handleSelectTopicCategory(send, topicCategories, $$event) {\n var target = $$event.target;\n var selectedCategoryId = target.value;\n var selectedCategory = selectedCategoryId === \"not_selected\" ? undefined : ArrayUtils.unsafeFind((function (category) {\n return TopicCategory.id(category) === selectedCategoryId;\n }), tr(undefined, undefined, \"no_category_found\") + selectedCategoryId, topicCategories);\n return Curry._1(send, {\n TAG: /* SelectCategory */3,\n _0: selectedCategory\n });\n}\n\nfunction CommunitiesNewTopic__Root(Props) {\n var communityId = Props.communityId;\n var target = Props.target;\n var topicCategories = Props.topicCategories;\n var match = React.useReducer(reducer, initialState);\n var send = match[1];\n var state = match[0];\n var category = state.selectedCategory;\n var __x = topicCategories.map(function (category) {\n return React.createElement(\"option\", {\n key: TopicCategory.id(category),\n value: TopicCategory.id(category)\n }, TopicCategory.name(category));\n });\n var partial_arg = state.selectedCategory;\n return React.createElement(DisablingCover.make, {\n disabled: state.saving,\n children: React.createElement(\"div\", {\n className: \"bg-gray-50 md:pt-18\"\n }, React.createElement(\"div\", {\n className: \"flex-1 flex flex-col\"\n }, React.createElement(\"div\", {\n className: \"px-3 lg:px-0\"\n }, React.createElement(\"div\", {\n className: \"max-w-3xl w-full mx-auto mt-5 pb-2\"\n }, React.createElement(\"a\", {\n className: \"btn btn-subtle\",\n onClick: (function (param) {\n DomUtils.goBack(undefined);\n })\n }, React.createElement(\"i\", {\n className: \"fas fa-arrow-left rtl:rotate-180\"\n }), React.createElement(\"span\", {\n className: \"ms-2\"\n }, tr(undefined, undefined, \"back\"))))), target !== undefined ? React.createElement(\"div\", {\n className: \"max-w-3xl w-full mt-5 mx-auto px-3 lg:px-0\"\n }, React.createElement(\"div\", {\n className: \"flex py-4 px-4 md:px-5 w-full bg-white border border-primary-500 shadow-md rounded-lg justify-between items-center mb-2\"\n }, React.createElement(\"p\", {\n className: \"w-3/5 md:w-4/5 text-sm\"\n }, React.createElement(\"span\", {\n className: \"font-semibold block text-xs\"\n }, tr(undefined, undefined, \"linked_target\")), React.createElement(\"span\", undefined, TopicsShow__LinkedTarget.title(target))), React.createElement(\"a\", {\n className: \"btn btn-default\",\n href: \"./new_topic\"\n }, tr(undefined, undefined, \"clear\")))) : null, React.createElement(\"h4\", {\n className: \"max-w-3xl w-full mx-auto pb-2 mt-2 px-3 lg:px-0\"\n }, tr(undefined, undefined, \"create_topic_discussion\")), React.createElement(\"div\", {\n className: \"md:px-3\"\n }, React.createElement(\"div\", {\n className: \"mb-8 max-w-3xl w-full mx-auto relative border-t border-b md:border-0 bg-white md:shadow md:rounded-lg\"\n }, React.createElement(\"div\", {\n className: \"flex w-full flex-col p-3 md:p-6\"\n }, React.createElement(\"div\", {\n className: \"flex\"\n }, React.createElement(\"div\", {\n className: \"flex-1 me-2\"\n }, React.createElement(\"label\", {\n className: \"inline-block tracking-wide text-gray-900 text-xs font-semibold mb-2\",\n htmlFor: \"title\"\n }, tr(undefined, undefined, \"title\")), React.createElement(\"input\", {\n className: \"appearance-none block w-full bg-white text-gray-900 font-semibold border border-gray-300 rounded py-3 px-4 mb-4 leading-tight focus:outline-none focus:bg-white focus:border-gray-500\",\n id: \"title\",\n tabIndex: 1,\n placeholder: tr(undefined, undefined, \"title_placeholder\"),\n value: state.title,\n onChange: (function ($$event) {\n var newTitle = $$event.target.value;\n updateTitleAndSearch(state, send, communityId, newTitle);\n })\n })), ReactUtils.nullIf(React.createElement(\"div\", {\n className: \"md:w-1/4\"\n }, React.createElement(\"label\", {\n className: \"inline-block tracking-wide text-gray-900 text-xs font-semibold mb-2\",\n htmlFor: \"topic_category\"\n }, tr(undefined, undefined, \"select_category\")), React.createElement(\"select\", {\n className: \"appearance-none block w-full bg-white text-gray-900 font-semibold border border-gray-300 rounded py-3 px-4 mb-4 leading-tight focus:outline-none focus:bg-white focus:border-gray-500\",\n id: \"topic_category\",\n value: category !== undefined ? TopicCategory.id(category) : \"\",\n onChange: (function (param) {\n return handleSelectTopicCategory(send, topicCategories, param);\n })\n }, [React.createElement(\"option\", {\n key: \"not_selected\",\n value: \"not_selected\"\n }, tr(undefined, undefined, \"not_selected\"))].concat(__x))), ArrayUtils.isEmpty(topicCategories)), React.createElement(\"div\", undefined)), React.createElement(\"label\", {\n className: \"inline-block tracking-wide text-gray-900 text-xs font-semibold mb-2\",\n htmlFor: \"body\"\n }, tr(undefined, undefined, \"body\")), React.createElement(\"div\", {\n className: \"w-full flex flex-col\"\n }, React.createElement(MarkdownEditor.make, {\n value: state.body,\n onChange: (function (markdown) {\n Curry._1(send, {\n TAG: /* UpdateBody */2,\n _0: markdown\n });\n }),\n profile: /* Permissive */0,\n textareaId: \"body\",\n maxLength: 10000,\n placeholder: tr(undefined, undefined, \"be_descriptive\"),\n tabIndex: 2\n }), React.createElement(\"div\", undefined, suggestions(state), React.createElement(\"div\", {\n className: \"flex flex-col md:flex-row justify-end mt-3 items-center md:items-start\"\n }, searchingIndicator(state), React.createElement(\"button\", {\n className: \"btn btn-primary border border-transparent w-full md:w-auto\",\n tabIndex: 3,\n disabled: saveDisabled(state),\n onClick: (function (param) {\n return handleCreateTopic(state, send, communityId, target, partial_arg, param);\n })\n }, tr(undefined, undefined, \"create_topic\"))))))))))\n });\n}\n\nvar make$1 = CommunitiesNewTopic__Root;\n\nexport {\n str ,\n tr ,\n ts ,\n initialState ,\n reducer ,\n SimilarTopicsQuery ,\n searchForSimilarTopics ,\n isInvalidString ,\n updateTitleAndSearch ,\n CreateTopicQuery ,\n redirectToNewTopic ,\n saveDisabled ,\n handleCreateTopic ,\n suggestions ,\n searchingIndicator ,\n handleSelectTopicCategory ,\n make$1 as make,\n}\n/* include Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Psj from \"../shared/utils/Psj.bs.js\";\nimport * as React from \"react\";\nimport * as DomUtils from \"../shared/utils/DomUtils.bs.js\";\nimport * as ReactDom from \"react-dom\";\nimport * as Json_decode from \"../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\nimport * as TopicCategory from \"../shared/types/TopicCategory.bs.js\";\nimport * as TopicsShow__LinkedTarget from \"../topics/types/TopicsShow__LinkedTarget.bs.js\";\nimport * as CommunitiesNewTopic__Root from \"../communities/CommunitiesNewTopic__Root.bs.js\";\n\nfunction decodeProps(json) {\n return {\n communityId: Json_decode.field(\"communityId\", Json_decode.string, json),\n target: Json_decode.optional((function (param) {\n return Json_decode.field(\"target\", TopicsShow__LinkedTarget.decode, param);\n }), json),\n topicCategories: Json_decode.field(\"topicCategories\", (function (param) {\n return Json_decode.array(TopicCategory.decode, param);\n }), json)\n };\n}\n\nPsj.match(undefined, \"communities#new_topic\", (function (param) {\n var props = decodeProps(DomUtils.parseJSONTag(undefined, undefined));\n var root = document.querySelector(\"#react-root\");\n if (!(root == null)) {\n ReactDom.render(React.createElement(CommunitiesNewTopic__Root.make, {\n communityId: props.communityId,\n target: props.target,\n topicCategories: props.topicCategories\n }), root);\n return ;\n }\n \n }));\n\nexport {\n decodeProps ,\n}\n/* Not a pure module */\n","export default \"__VITE_ASSET__wy0tzA9V__\"","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as DateFns from \"../../../shared/utils/DateFns.bs.js\";\nimport * as Js_array from \"../../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as ArrayUtils from \"../../../shared/utils/ArrayUtils.bs.js\";\nimport * as Caml_option from \"../../../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as Json_decode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\n\nfunction decode(json) {\n return {\n id: Json_decode.field(\"id\", Json_decode.string, json),\n name: Json_decode.field(\"name\", Json_decode.string, json),\n number: Json_decode.field(\"number\", Json_decode.$$int, json),\n unlockAt: Json_decode.optional((function (param) {\n return Json_decode.field(\"unlockAt\", DateFns.decodeISO, param);\n }), json)\n };\n}\n\nfunction id(t) {\n return t.id;\n}\n\nfunction name(t) {\n return t.name;\n}\n\nfunction number(t) {\n return t.number;\n}\n\nfunction unlockAt(t) {\n return t.unlockAt;\n}\n\nfunction isUnlocked(t) {\n var date = t.unlockAt;\n if (date !== undefined) {\n return DateFns.isPast(Caml_option.valFromOption(date));\n } else {\n return true;\n }\n}\n\nfunction isLocked(t) {\n return !isUnlocked(t);\n}\n\nfunction sort(levels) {\n return ArrayUtils.copyAndSort((function (x, y) {\n return x.number - y.number | 0;\n }), levels);\n}\n\nfunction first(levels) {\n return ArrayUtils.unsafeFind((function (level) {\n return level.number === 1;\n }), \"Unable to find level one at CoursesCurriculum__Level\", levels);\n}\n\nfunction unlockDateString(t) {\n var unlockAt = t.unlockAt;\n if (unlockAt !== undefined) {\n return DateFns.format(Caml_option.valFromOption(unlockAt), \"MMM d\");\n } else {\n Rollbar.error(\"unlockDateString was called for a CoursesCurriculum__Level without unlockAt\");\n return \"\";\n }\n}\n\nfunction findByLevelNumber(levels, levelNumber) {\n return Js_array.find((function (l) {\n return l.number === levelNumber;\n }), levels);\n}\n\nfunction next(levels, t) {\n return findByLevelNumber(levels, t.number + 1 | 0);\n}\n\nfunction previous(levels, t) {\n var previousLevelNumber = t.number - 1 | 0;\n if (previousLevelNumber === 0) {\n return ;\n } else {\n return findByLevelNumber(levels, previousLevelNumber);\n }\n}\n\nexport {\n decode ,\n id ,\n name ,\n number ,\n unlockAt ,\n isUnlocked ,\n isLocked ,\n sort ,\n first ,\n unlockDateString ,\n findByLevelNumber ,\n next ,\n previous ,\n}\n/* DateFns Not a pure module */\n","export default \"__VITE_ASSET__BvC$2CgD__\"","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Json_decode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\nimport * as Caml_exceptions from \"../../../../../node_modules/rescript/lib/es6/caml_exceptions.js\";\n\nvar UnexpectedProgressionBehavior = /* @__PURE__ */Caml_exceptions.create(\"CoursesCurriculum__Course.UnexpectedProgressionBehavior\");\n\nfunction ended(t) {\n return t.ended;\n}\n\nfunction id(t) {\n return t.id;\n}\n\nfunction certificateSerialNumber(t) {\n return t.certificateSerialNumber;\n}\n\nfunction progressionBehavior(t) {\n return t.progressionBehavior;\n}\n\nfunction progressionLimit(t) {\n var limit = t.progressionBehavior;\n if (limit) {\n return limit._0;\n } else {\n return 0;\n }\n}\n\nfunction decode(json) {\n var progressionLimit = Json_decode.field(\"progressionLimit\", Json_decode.$$int, json);\n var progressionBehavior = progressionLimit !== 0 ? /* Limited */({\n _0: progressionLimit\n }) : /* Unlimited */0;\n return {\n id: Json_decode.field(\"id\", Json_decode.string, json),\n ended: Json_decode.field(\"ended\", Json_decode.bool, json),\n certificateSerialNumber: Json_decode.optional((function (param) {\n return Json_decode.field(\"certificateSerialNumber\", Json_decode.string, param);\n }), json),\n progressionBehavior: progressionBehavior\n };\n}\n\nexport {\n UnexpectedProgressionBehavior ,\n ended ,\n id ,\n certificateSerialNumber ,\n progressionBehavior ,\n progressionLimit ,\n decode ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Json_decode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\nimport * as Caml_exceptions from \"../../../../../node_modules/rescript/lib/es6/caml_exceptions.js\";\n\nvar CannotParseUnknownRole = /* @__PURE__ */Caml_exceptions.create(\"CoursesCurriculum__Target.CannotParseUnknownRole\");\n\nfunction decode(json) {\n var unknownRole = Json_decode.field(\"role\", Json_decode.string, json);\n var tmp;\n switch (unknownRole) {\n case \"student\" :\n tmp = /* Student */0;\n break;\n case \"team\" :\n tmp = /* Team */1;\n break;\n default:\n throw {\n RE_EXN_ID: CannotParseUnknownRole,\n _1: unknownRole,\n Error: new Error()\n };\n }\n return {\n id: Json_decode.field(\"id\", Json_decode.string, json),\n role: tmp,\n title: Json_decode.field(\"title\", Json_decode.string, json),\n targetGroupId: Json_decode.field(\"targetGroupId\", Json_decode.string, json),\n sortIndex: Json_decode.field(\"sortIndex\", Json_decode.$$int, json),\n resubmittable: Json_decode.field(\"resubmittable\", Json_decode.bool, json),\n prerequisiteTargetIds: Json_decode.field(\"prerequisiteTargetIds\", (function (param) {\n return Json_decode.array(Json_decode.string, param);\n }), json),\n reviewed: Json_decode.field(\"reviewed\", Json_decode.bool, json),\n milestone: Json_decode.field(\"milestone\", Json_decode.bool, json),\n hasAssignment: Json_decode.field(\"hasAssignment\", Json_decode.bool, json)\n };\n}\n\nfunction id(t) {\n return t.id;\n}\n\nfunction role(t) {\n return t.role;\n}\n\nfunction title(t) {\n return t.title;\n}\n\nfunction sortIndex(t) {\n return t.sortIndex;\n}\n\nfunction targetGroupId(t) {\n return t.targetGroupId;\n}\n\nfunction prerequisiteTargetIds(t) {\n return t.prerequisiteTargetIds;\n}\n\nfunction resubmittable(t) {\n return t.resubmittable;\n}\n\nfunction reviewed(t) {\n return t.reviewed;\n}\n\nfunction milestone(t) {\n return t.milestone;\n}\n\nfunction hasAssignment(t) {\n return t.hasAssignment;\n}\n\nexport {\n CannotParseUnknownRole ,\n decode ,\n id ,\n role ,\n title ,\n sortIndex ,\n targetGroupId ,\n prerequisiteTargetIds ,\n resubmittable ,\n reviewed ,\n milestone ,\n hasAssignment ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as $$Array from \"../../../../../node_modules/rescript/lib/es6/array.js\";\nimport * as Js_array from \"../../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as ArrayUtils from \"../../../shared/utils/ArrayUtils.bs.js\";\nimport * as Json_decode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\nimport * as Json_encode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_encode.bs.js\";\n\nfunction title(t) {\n return t.title;\n}\n\nfunction result(t) {\n return t.result;\n}\n\nfunction status(t) {\n return t.status;\n}\n\nfunction fileName(file) {\n return file.name;\n}\n\nfunction fileUrl(file) {\n return file.url;\n}\n\nfunction make(title, result, status) {\n return {\n title: title,\n result: result,\n status: status\n };\n}\n\nfunction makeFile(name, url, id) {\n return {\n id: id,\n name: name,\n url: url\n };\n}\n\nfunction makeFiles(data) {\n return Js_array.map((function (a) {\n return {\n id: a.id,\n name: a.title,\n url: a.url\n };\n }), data);\n}\n\nfunction findAudioFile(files, id) {\n return ArrayUtils.unsafeFind((function (file) {\n return file.id === id;\n }), \"Unable to find file with ID: \" + id, files);\n}\n\nfunction findFiles(files, ids) {\n return Js_array.filter((function (file) {\n return Js_array.includes(file.id, ids);\n }), files);\n}\n\nfunction makeResult(json, kind, files) {\n switch (kind) {\n case \"audio\" :\n return {\n TAG: /* AudioRecord */5,\n _0: findAudioFile(files, Json_decode.field(\"result\", Json_decode.string, json))\n };\n case \"files\" :\n return {\n TAG: /* Files */3,\n _0: findFiles(files, Json_decode.field(\"result\", (function (param) {\n return Json_decode.array(Json_decode.string, param);\n }), json))\n };\n case \"link\" :\n return {\n TAG: /* Link */2,\n _0: Json_decode.field(\"result\", Json_decode.string, json)\n };\n case \"longText\" :\n return {\n TAG: /* LongText */1,\n _0: Json_decode.field(\"result\", Json_decode.string, json)\n };\n case \"multiChoice\" :\n return {\n TAG: /* MultiChoice */4,\n _0: Json_decode.field(\"result\", (function (param) {\n return Json_decode.array(Json_decode.string, param);\n }), json)\n };\n case \"shortText\" :\n return {\n TAG: /* ShortText */0,\n _0: Json_decode.field(\"result\", Json_decode.string, json)\n };\n default:\n Rollbar.error(\"Unkown kind: \" + (kind + \"recived in CurriculumEditor__TargetChecklistItem\"));\n return {\n TAG: /* ShortText */0,\n _0: \"Error\"\n };\n }\n}\n\nfunction makeStatus(data) {\n switch (data) {\n case \"failed\" :\n return /* Failed */1;\n case \"noAnswer\" :\n return /* NoAnswer */2;\n case \"passed\" :\n return /* Passed */0;\n default:\n Rollbar.error(\"Unkown status:\" + (data + \"recived in CourseReview__SubmissionChecklist\"));\n return /* NoAnswer */2;\n }\n}\n\nfunction decodeFile(json) {\n return {\n id: Json_decode.field(\"id\", Json_decode.string, json),\n name: Json_decode.field(\"name\", Json_decode.string, json),\n url: Json_decode.field(\"url\", Json_decode.string, json)\n };\n}\n\nfunction decode(files, json) {\n return {\n title: Json_decode.field(\"title\", Json_decode.string, json),\n result: makeResult(json, Json_decode.field(\"kind\", Json_decode.string, json), files),\n status: makeStatus(Json_decode.field(\"status\", Json_decode.string, json))\n };\n}\n\nfunction updateStatus(checklist, index, status) {\n return $$Array.mapi((function (i, t) {\n if (i === index) {\n return {\n title: t.title,\n result: t.result,\n status: status\n };\n } else {\n return t;\n }\n }), checklist);\n}\n\nfunction makeNoAnswer(index, checklist) {\n return updateStatus(checklist, index, /* NoAnswer */2);\n}\n\nfunction makeFailed(index, checklist) {\n return updateStatus(checklist, index, /* Failed */1);\n}\n\nfunction makePassed(index, checklist) {\n return updateStatus(checklist, index, /* Passed */0);\n}\n\nfunction encodeKind(t) {\n var match = t.result;\n switch (match.TAG | 0) {\n case /* ShortText */0 :\n return \"shortText\";\n case /* LongText */1 :\n return \"longText\";\n case /* Link */2 :\n return \"link\";\n case /* Files */3 :\n return \"files\";\n case /* MultiChoice */4 :\n return \"multiChoice\";\n case /* AudioRecord */5 :\n return \"audio\";\n \n }\n}\n\nfunction encodeResult(t) {\n var t$1 = t.result;\n switch (t$1.TAG | 0) {\n case /* Files */3 :\n return Js_array.map((function (file) {\n return file.id;\n }), t$1._0);\n case /* MultiChoice */4 :\n return t$1._0;\n case /* AudioRecord */5 :\n return t$1._0.id;\n default:\n return t$1._0;\n }\n}\n\nfunction encodeStatus(t) {\n var match = t.status;\n switch (match) {\n case /* Passed */0 :\n return \"passed\";\n case /* Failed */1 :\n return \"failed\";\n case /* NoAnswer */2 :\n return \"noAnswer\";\n \n }\n}\n\nfunction encode(t) {\n return Json_encode.object_({\n hd: [\n \"title\",\n t.title\n ],\n tl: {\n hd: [\n \"kind\",\n encodeKind(t)\n ],\n tl: {\n hd: [\n \"status\",\n encodeStatus(t)\n ],\n tl: {\n hd: [\n \"result\",\n encodeResult(t)\n ],\n tl: /* [] */0\n }\n }\n }\n });\n}\n\nfunction encodeArray(checklist) {\n return Json_encode.array(encode, checklist);\n}\n\nexport {\n title ,\n result ,\n status ,\n fileName ,\n fileUrl ,\n make ,\n makeFile ,\n makeFiles ,\n findAudioFile ,\n findFiles ,\n makeResult ,\n makeStatus ,\n decodeFile ,\n decode ,\n updateStatus ,\n makeNoAnswer ,\n makeFailed ,\n makePassed ,\n encodeKind ,\n encodeResult ,\n encodeStatus ,\n encode ,\n encodeArray ,\n}\n/* ArrayUtils Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as DateFns from \"../../../shared/utils/DateFns.bs.js\";\nimport * as ArrayUtils from \"../../../shared/utils/ArrayUtils.bs.js\";\nimport * as Caml_option from \"../../../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as Json_decode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\nimport * as Caml_exceptions from \"../../../../../node_modules/rescript/lib/es6/caml_exceptions.js\";\nimport * as SubmissionChecklistItem from \"../../review/types/SubmissionChecklistItem.bs.js\";\n\nvar UnexpectedStatusValue = /* @__PURE__ */Caml_exceptions.create(\"CoursesCurriculum__Submission.UnexpectedStatusValue\");\n\nfunction id(t) {\n return t.id;\n}\n\nfunction createdAt(t) {\n return t.createdAt;\n}\n\nfunction status(t) {\n return t.status;\n}\n\nfunction checklist(t) {\n return t.checklist;\n}\n\nfunction hiddenAt(t) {\n return t.hiddenAt;\n}\n\nfunction pending(t) {\n var match = t.status;\n return match === 1;\n}\n\nfunction createdAtPretty(t) {\n return DateFns.format(t.createdAt, \"MMMM d, yyyy\");\n}\n\nfunction hiddenAtPretty(t) {\n var hiddenAt = t.hiddenAt;\n if (hiddenAt !== undefined) {\n return DateFns.format(Caml_option.valFromOption(hiddenAt), \"MMMM d, yyyy\");\n } else {\n return \"\";\n }\n}\n\nfunction sort(ts) {\n return ArrayUtils.copyAndSort((function (t1, t2) {\n return DateFns.differenceInSeconds(t2.createdAt, t1.createdAt);\n }), ts);\n}\n\nfunction decode(json) {\n var unknownValue = Json_decode.field(\"status\", Json_decode.string, json);\n var tmp;\n switch (unknownValue) {\n case \"failed\" :\n tmp = /* Rejected */3;\n break;\n case \"marked_as_complete\" :\n tmp = /* MarkedAsComplete */0;\n break;\n case \"passed\" :\n tmp = /* Completed */2;\n break;\n case \"pending\" :\n tmp = /* Pending */1;\n break;\n default:\n throw {\n RE_EXN_ID: UnexpectedStatusValue,\n _1: unknownValue,\n Error: new Error()\n };\n }\n var partial_arg = Json_decode.field(\"files\", (function (param) {\n return Json_decode.array(SubmissionChecklistItem.decodeFile, param);\n }), json);\n var partial_arg$1 = function (param) {\n return SubmissionChecklistItem.decode(partial_arg, param);\n };\n return {\n id: Json_decode.field(\"id\", Json_decode.string, json),\n createdAt: Json_decode.field(\"createdAt\", DateFns.decodeISO, json),\n status: tmp,\n checklist: Json_decode.field(\"checklist\", (function (param) {\n return Json_decode.array(partial_arg$1, param);\n }), json),\n hiddenAt: Json_decode.optional((function (param) {\n return Json_decode.field(\"hiddenAt\", DateFns.decodeISO, param);\n }), json)\n };\n}\n\nfunction make(id, createdAt, status, checklist, hiddenAt) {\n return {\n id: id,\n createdAt: createdAt,\n status: status,\n checklist: checklist,\n hiddenAt: hiddenAt\n };\n}\n\nexport {\n UnexpectedStatusValue ,\n id ,\n createdAt ,\n status ,\n checklist ,\n hiddenAt ,\n pending ,\n createdAtPretty ,\n hiddenAtPretty ,\n sort ,\n decode ,\n make ,\n}\n/* DateFns Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Caml_obj from \"../../../../../node_modules/rescript/lib/es6/caml_obj.js\";\nimport * as ArrayUtils from \"../../../shared/utils/ArrayUtils.bs.js\";\nimport * as Json_decode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\n\nfunction decodeAnswerOption(json) {\n return {\n id: Json_decode.field(\"id\", Json_decode.string, json),\n value: Json_decode.field(\"value\", Json_decode.string, json)\n };\n}\n\nfunction decode(json) {\n return {\n index: Json_decode.field(\"index\", Json_decode.$$int, json),\n question: Json_decode.field(\"question\", Json_decode.string, json),\n answerOptions: Json_decode.field(\"answerOptions\", (function (param) {\n return Json_decode.array(decodeAnswerOption, param);\n }), json)\n };\n}\n\nfunction index(t) {\n return t.index;\n}\n\nfunction question(t) {\n return t.question;\n}\n\nfunction answerOptions(t) {\n return t.answerOptions;\n}\n\nfunction answerId(answerOption) {\n return answerOption.id;\n}\n\nfunction answerValue(answerOption) {\n return answerOption.value;\n}\n\nfunction lastQuestion(questions) {\n var maxIndex = ArrayUtils.last(ArrayUtils.copyAndSort((function (q1, q2) {\n return q1.index - q2.index | 0;\n }), questions)).index;\n return ArrayUtils.unsafeFind((function (q) {\n return q.index === maxIndex;\n }), \"Could not find last question at index \" + String(maxIndex), questions);\n}\n\nfunction nextQuestion(questions, question) {\n return ArrayUtils.unsafeFind((function (q) {\n return q.index === (question.index + 1 | 0);\n }), \"Could not find a question at index \" + String(question.index + 1 | 0), questions);\n}\n\nfunction isLastQuestion(questions, question) {\n return Caml_obj.equal(lastQuestion(questions), question);\n}\n\nexport {\n decodeAnswerOption ,\n decode ,\n index ,\n question ,\n answerOptions ,\n answerId ,\n answerValue ,\n lastQuestion ,\n nextQuestion ,\n isLastQuestion ,\n}\n/* ArrayUtils Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as $$String from \"../../../../../node_modules/rescript/lib/es6/string.js\";\nimport * as ArrayUtils from \"../../../shared/utils/ArrayUtils.bs.js\";\nimport * as Json_decode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\nimport * as EvaluationCriterion from \"../../../shared/types/EvaluationCriterion.bs.js\";\n\nfunction decode(json) {\n return {\n submissionId: Json_decode.field(\"submissionId\", Json_decode.string, json),\n evaluationCriterionId: Json_decode.field(\"evaluationCriterionId\", Json_decode.string, json),\n grade: Json_decode.field(\"grade\", Json_decode.$$int, json)\n };\n}\n\nfunction sort(criteria, grades) {\n return ArrayUtils.copyAndSort((function (g1, g2) {\n var ec1 = ArrayUtils.unsafeFind((function (ec) {\n return EvaluationCriterion.id(ec) === g1.evaluationCriterionId;\n }), \"Unable to find evaluation criterion with ID: \" + (g1.evaluationCriterionId + \" in CoursesCurriculum__Grade\"), criteria);\n var ec2 = ArrayUtils.unsafeFind((function (ec) {\n return EvaluationCriterion.id(ec) === g2.evaluationCriterionId;\n }), \"Unable to find evaluation criterion with ID: \" + (g2.evaluationCriterionId + \" in CoursesCurriculum__Grade\"), criteria);\n return $$String.compare(EvaluationCriterion.name(ec1), EvaluationCriterion.name(ec2));\n }), grades);\n}\n\nfunction grade(t) {\n return t.grade;\n}\n\nfunction submissionId(t) {\n return t.submissionId;\n}\n\nfunction evaluationCriterionId(t) {\n return t.evaluationCriterionId;\n}\n\nexport {\n decode ,\n sort ,\n grade ,\n submissionId ,\n evaluationCriterionId ,\n}\n/* ArrayUtils Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Json_decode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\n\nfunction id(t) {\n return t.id;\n}\n\nfunction coachId(t) {\n return t.coachId;\n}\n\nfunction submissionId(t) {\n return t.submissionId;\n}\n\nfunction feedback(t) {\n return t.feedback;\n}\n\nfunction decode(json) {\n return {\n id: Json_decode.field(\"id\", Json_decode.string, json),\n coachId: Json_decode.field(\"coachId\", (function (param) {\n return Json_decode.optional(Json_decode.string, param);\n }), json),\n submissionId: Json_decode.field(\"submissionId\", Json_decode.string, json),\n feedback: Json_decode.field(\"feedback\", Json_decode.string, json)\n };\n}\n\nexport {\n id ,\n coachId ,\n submissionId ,\n feedback ,\n decode ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as DateFns from \"../../../shared/utils/DateFns.bs.js\";\nimport * as Json_decode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\n\nfunction id(t) {\n return t.id;\n}\n\nfunction userId(t) {\n return t.userId;\n}\n\nfunction userName(t) {\n return t.userName;\n}\n\nfunction reactionableId(t) {\n return t.reactionableId;\n}\n\nfunction reactionableType(t) {\n return t.reactionableType;\n}\n\nfunction reactionValue(t) {\n return t.reactionValue;\n}\n\nfunction updatedAt(t) {\n return t.updatedAt;\n}\n\nfunction decode(json) {\n return {\n id: Json_decode.field(\"id\", Json_decode.string, json),\n userId: Json_decode.field(\"userId\", Json_decode.string, json),\n userName: Json_decode.field(\"userName\", Json_decode.string, json),\n reactionableId: Json_decode.field(\"reactionableId\", Json_decode.string, json),\n reactionableType: Json_decode.field(\"reactionableType\", Json_decode.string, json),\n reactionValue: Json_decode.field(\"reactionValue\", Json_decode.string, json),\n updatedAt: Json_decode.field(\"updatedAt\", DateFns.decodeISO, json)\n };\n}\n\nexport {\n id ,\n userId ,\n userName ,\n reactionableId ,\n reactionableType ,\n reactionValue ,\n updatedAt ,\n decode ,\n}\n/* DateFns Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Json_decode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\n\nfunction decodeQuestion(json) {\n return {\n topicId: Json_decode.field(\"id\", Json_decode.string, json),\n topicTitle: Json_decode.field(\"title\", Json_decode.string, json)\n };\n}\n\nfunction decode(json) {\n return {\n id: Json_decode.field(\"id\", Json_decode.string, json),\n name: Json_decode.field(\"name\", Json_decode.string, json),\n topics: Json_decode.field(\"topics\", (function (param) {\n return Json_decode.array(decodeQuestion, param);\n }), json)\n };\n}\n\nfunction id(t) {\n return t.id;\n}\n\nfunction name(t) {\n return t.name;\n}\n\nfunction topics(t) {\n return t.topics;\n}\n\nfunction topicId(topic) {\n return topic.topicId;\n}\n\nfunction topicTitle(question) {\n return question.topicTitle;\n}\n\nexport {\n decodeQuestion ,\n decode ,\n id ,\n name ,\n topics ,\n topicId ,\n topicTitle ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as React from \"react\";\nimport * as Avatar from \"../../../shared/Avatar.bs.js\";\nimport * as Belt_Option from \"../../../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as Caml_option from \"../../../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as Json_decode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\n\nfunction id(t) {\n return t.id;\n}\n\nfunction name(t) {\n return t.name;\n}\n\nfunction avatarUrl(t) {\n return t.avatarUrl;\n}\n\nfunction title(t) {\n return t.title;\n}\n\nfunction decode(json) {\n return {\n id: Json_decode.field(\"id\", Json_decode.string, json),\n name: Json_decode.field(\"name\", Json_decode.string, json),\n avatarUrl: Json_decode.optional((function (param) {\n return Json_decode.field(\"avatarUrl\", Json_decode.string, param);\n }), json),\n title: Caml_option.null_to_opt(Json_decode.field(\"title\", (function (param) {\n return Json_decode.nullable(Json_decode.string, param);\n }), json))\n };\n}\n\nfunction avatar(t) {\n return Belt_Option.mapWithDefault(t.avatarUrl, React.createElement(Avatar.make, {\n name: t.name,\n className: \"w-full h-full\"\n }), (function (src) {\n return React.createElement(\"img\", {\n src: src\n });\n }));\n}\n\nexport {\n id ,\n name ,\n avatarUrl ,\n title ,\n decode ,\n avatar ,\n}\n/* react Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Json_decode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\n\nfunction id(t) {\n return t.id;\n}\n\nfunction userId(t) {\n return t.userId;\n}\n\nfunction reportableId(t) {\n return t.reportableId;\n}\n\nfunction reportableType(t) {\n return t.reportableType;\n}\n\nfunction reason(t) {\n return t.reason;\n}\n\nfunction decode(json) {\n return {\n id: Json_decode.field(\"id\", Json_decode.string, json),\n userId: Json_decode.field(\"userId\", Json_decode.string, json),\n reportableId: Json_decode.field(\"reportableId\", Json_decode.string, json),\n reportableType: Json_decode.field(\"reportableType\", Json_decode.string, json),\n reason: Json_decode.field(\"reason\", Json_decode.string, json)\n };\n}\n\nexport {\n id ,\n userId ,\n reportableId ,\n reportableType ,\n reason ,\n decode ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as DateFns from \"../../../shared/utils/DateFns.bs.js\";\nimport * as Caml_option from \"../../../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as Json_decode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\nimport * as CoursesCurriculum__User from \"./CoursesCurriculum__User.bs.js\";\nimport * as CoursesCurriculum__Reaction from \"./CoursesCurriculum__Reaction.bs.js\";\nimport * as CoursesCurriculum__ModerationReport from \"./CoursesCurriculum__ModerationReport.bs.js\";\n\nfunction id(t) {\n return t.id;\n}\n\nfunction userId(t) {\n return t.userId;\n}\n\nfunction user(t) {\n return t.user;\n}\n\nfunction submissionId(t) {\n return t.submissionId;\n}\n\nfunction comment(t) {\n return t.comment;\n}\n\nfunction reactions(t) {\n return t.reactions;\n}\n\nfunction moderationReports(t) {\n return t.moderationReports;\n}\n\nfunction createdAt(t) {\n return t.createdAt;\n}\n\nfunction hiddenAt(t) {\n return t.hiddenAt;\n}\n\nfunction hiddenById(t) {\n return t.hiddenById;\n}\n\nfunction createdAtPretty(t) {\n return DateFns.format(t.createdAt, \"MMMM d, yyyy\");\n}\n\nfunction hiddenAtPretty(t) {\n var hiddenAt = t.hiddenAt;\n if (hiddenAt !== undefined) {\n return DateFns.format(Caml_option.valFromOption(hiddenAt), \"MMMM d, yyyy\");\n } else {\n return \"\";\n }\n}\n\nfunction decode(json) {\n return {\n id: Json_decode.field(\"id\", Json_decode.string, json),\n userId: Json_decode.field(\"userId\", Json_decode.string, json),\n user: Json_decode.field(\"user\", CoursesCurriculum__User.decode, json),\n submissionId: Json_decode.field(\"submissionId\", Json_decode.string, json),\n comment: Json_decode.field(\"comment\", Json_decode.string, json),\n reactions: Json_decode.field(\"reactions\", (function (param) {\n return Json_decode.array(CoursesCurriculum__Reaction.decode, param);\n }), json),\n moderationReports: Json_decode.field(\"moderationReports\", (function (param) {\n return Json_decode.array(CoursesCurriculum__ModerationReport.decode, param);\n }), json),\n createdAt: Json_decode.field(\"createdAt\", DateFns.decodeISO, json),\n hiddenAt: Json_decode.optional((function (param) {\n return Json_decode.field(\"hiddenAt\", DateFns.decodeISO, param);\n }), json),\n hiddenById: Json_decode.optional((function (param) {\n return Json_decode.field(\"hiddenById\", Json_decode.string, param);\n }), json)\n };\n}\n\nexport {\n id ,\n userId ,\n user ,\n submissionId ,\n comment ,\n reactions ,\n moderationReports ,\n createdAt ,\n hiddenAt ,\n hiddenById ,\n createdAtPretty ,\n hiddenAtPretty ,\n decode ,\n}\n/* DateFns Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Js_array from \"../../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as Caml_option from \"../../../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as Json_decode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\nimport * as ContentBlock from \"../../../shared/types/ContentBlock.bs.js\";\nimport * as TargetChecklistItem from \"../../../schools/courses/types/curriculum_editor/TargetChecklistItem.bs.js\";\nimport * as CoursesCurriculum__Grade from \"./CoursesCurriculum__Grade.bs.js\";\nimport * as CoursesCurriculum__Feedback from \"./CoursesCurriculum__Feedback.bs.js\";\nimport * as CoursesCurriculum__Reaction from \"./CoursesCurriculum__Reaction.bs.js\";\nimport * as CoursesCurriculum__Community from \"./CoursesCurriculum__Community.bs.js\";\nimport * as CoursesCurriculum__Submission from \"./CoursesCurriculum__Submission.bs.js\";\nimport * as CoursesCurriculum__QuizQuestion from \"./CoursesCurriculum__QuizQuestion.bs.js\";\nimport * as CoursesCurriculum__SubmissionComment from \"./CoursesCurriculum__SubmissionComment.bs.js\";\n\nfunction submissions(t) {\n return t.submissions;\n}\n\nfunction pendingUserIds(t) {\n return t.pendingUserIds;\n}\n\nfunction feedback(t) {\n return t.feedback;\n}\n\nfunction navigation(t) {\n return [\n t.navigation.previous,\n t.navigation.next\n ];\n}\n\nfunction checklist(t) {\n return t.checklist;\n}\n\nfunction discussion(t) {\n return t.discussion;\n}\n\nfunction allowAnonymous(t) {\n return t.allowAnonymous;\n}\n\nfunction comments(t) {\n return t.comments;\n}\n\nfunction reactions(t) {\n return t.reactions;\n}\n\nfunction decodeNavigation(json) {\n return {\n previous: Json_decode.optional((function (param) {\n return Json_decode.field(\"previous\", Json_decode.string, param);\n }), json),\n next: Json_decode.optional((function (param) {\n return Json_decode.field(\"next\", Json_decode.string, param);\n }), json)\n };\n}\n\nfunction decode(json) {\n return {\n pendingUserIds: Json_decode.field(\"pendingUserIds\", (function (param) {\n return Json_decode.array(Json_decode.string, param);\n }), json),\n submissions: Json_decode.field(\"submissions\", (function (param) {\n return Json_decode.array(CoursesCurriculum__Submission.decode, param);\n }), json),\n feedback: Json_decode.field(\"feedback\", (function (param) {\n return Json_decode.array(CoursesCurriculum__Feedback.decode, param);\n }), json),\n quizQuestions: Json_decode.field(\"quizQuestions\", (function (param) {\n return Json_decode.array(CoursesCurriculum__QuizQuestion.decode, param);\n }), json),\n contentBlocks: Json_decode.field(\"contentBlocks\", (function (param) {\n return Json_decode.array(ContentBlock.decode, param);\n }), json),\n communities: Json_decode.field(\"communities\", (function (param) {\n return Json_decode.array(CoursesCurriculum__Community.decode, param);\n }), json),\n comments: Json_decode.field(\"comments\", (function (param) {\n return Json_decode.array(CoursesCurriculum__SubmissionComment.decode, param);\n }), json),\n reactions: Json_decode.field(\"reactions\", (function (param) {\n return Json_decode.array(CoursesCurriculum__Reaction.decode, param);\n }), json),\n evaluated: Json_decode.field(\"evaluated\", Json_decode.bool, json),\n grading: Json_decode.field(\"grading\", (function (param) {\n return Json_decode.array(CoursesCurriculum__Grade.decode, param);\n }), json),\n completionInstructions: Caml_option.null_to_opt(Json_decode.field(\"completionInstructions\", (function (param) {\n return Json_decode.nullable(Json_decode.string, param);\n }), json)),\n navigation: Json_decode.field(\"navigation\", decodeNavigation, json),\n checklist: Json_decode.field(\"checklist\", (function (param) {\n return Json_decode.array(TargetChecklistItem.decode, param);\n }), json),\n discussion: Json_decode.field(\"discussion\", Json_decode.bool, json),\n allowAnonymous: Json_decode.field(\"allowAnonymous\", Json_decode.bool, json)\n };\n}\n\nfunction computeCompletionType(targetDetails) {\n var evaluated = targetDetails.evaluated;\n var hasQuiz = targetDetails.quizQuestions.length > 0;\n var hasChecklist = targetDetails.checklist.length > 0;\n if (evaluated) {\n return /* Evaluated */0;\n } else if (hasQuiz) {\n return /* TakeQuiz */1;\n } else if (hasChecklist) {\n return /* SubmitForm */2;\n } else {\n return /* NoAssignment */3;\n }\n}\n\nfunction contentBlocks(t) {\n return t.contentBlocks;\n}\n\nfunction quizQuestions(t) {\n return t.quizQuestions;\n}\n\nfunction communities(t) {\n return t.communities;\n}\n\nfunction completionInstructions(t) {\n return t.completionInstructions;\n}\n\nfunction grades(submissionId, t) {\n return Js_array.filter((function (grade) {\n return CoursesCurriculum__Grade.submissionId(grade) === submissionId;\n }), t.grading);\n}\n\nfunction addSubmission(submission, t) {\n return {\n pendingUserIds: t.pendingUserIds,\n submissions: Js_array.concat([submission], t.submissions),\n feedback: t.feedback,\n quizQuestions: t.quizQuestions,\n contentBlocks: t.contentBlocks,\n communities: t.communities,\n comments: t.comments,\n reactions: t.reactions,\n evaluated: t.evaluated,\n grading: t.grading,\n completionInstructions: t.completionInstructions,\n navigation: t.navigation,\n checklist: t.checklist,\n discussion: t.discussion,\n allowAnonymous: t.allowAnonymous\n };\n}\n\nfunction clearPendingUserIds(t) {\n return {\n pendingUserIds: [],\n submissions: t.submissions,\n feedback: t.feedback,\n quizQuestions: t.quizQuestions,\n contentBlocks: t.contentBlocks,\n communities: t.communities,\n comments: t.comments,\n reactions: t.reactions,\n evaluated: t.evaluated,\n grading: t.grading,\n completionInstructions: t.completionInstructions,\n navigation: t.navigation,\n checklist: t.checklist,\n discussion: t.discussion,\n allowAnonymous: t.allowAnonymous\n };\n}\n\nexport {\n submissions ,\n pendingUserIds ,\n feedback ,\n navigation ,\n checklist ,\n discussion ,\n allowAnonymous ,\n comments ,\n reactions ,\n decodeNavigation ,\n decode ,\n computeCompletionType ,\n contentBlocks ,\n quizQuestions ,\n communities ,\n completionInstructions ,\n grades ,\n addSubmission ,\n clearPendingUserIds ,\n}\n/* ContentBlock Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as Curry from \"../../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as FaIcon from \"../../../shared/components/FaIcon.bs.js\";\nimport * as DateFns from \"../../../shared/utils/DateFns.bs.js\";\nimport * as Caml_obj from \"../../../../../node_modules/rescript/lib/es6/caml_obj.js\";\nimport * as Js_array from \"../../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as Caml_array from \"../../../../../node_modules/rescript/lib/es6/caml_array.js\";\nimport * as Js_promise from \"../../../../../node_modules/rescript/lib/es6/js_promise.js\";\nimport * as Caml_option from \"../../../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as Json_decode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\nimport * as GraphqlQuery from \"../../../shared/utils/GraphqlQuery.bs.js\";\nimport * as MarkdownBlock from \"../../../shared/components/MarkdownBlock.bs.js\";\nimport * as SubmissionChecklistItem from \"../../review/types/SubmissionChecklistItem.bs.js\";\nimport * as CoursesCurriculum__Target from \"../types/CoursesCurriculum__Target.bs.js\";\nimport * as CoursesCurriculum__Submission from \"../types/CoursesCurriculum__Submission.bs.js\";\nimport * as CoursesCurriculum__QuizQuestion from \"../types/CoursesCurriculum__QuizQuestion.bs.js\";\nimport * as CoursesCurriculum__TargetDetails from \"../types/CoursesCurriculum__TargetDetails.bs.js\";\n\nimport \"./CoursesCurriculum__Quiz.css\"\n;\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.CoursesCurriculum__Quiz\";\n\nfunction tr(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nvar Raw = {};\n\nvar query = \"mutation CreateQuizSubmissionMutation($targetId: ID!, $answerIds: [ID!]!) {\\ncreateQuizSubmission(targetId: $targetId, answerIds: $answerIds) {\\nsubmission {\\nid \\ncreatedAt \\nchecklist \\n}\\n\\n}\\n\\n}\\n\";\n\nfunction parse(value) {\n var value$1 = value.createQuizSubmission;\n var value$2 = value$1.submission;\n return {\n createQuizSubmission: {\n submission: !(value$2 == null) ? ({\n id: value$2.id,\n createdAt: value$2.createdAt,\n checklist: value$2.checklist\n }) : undefined\n }\n };\n}\n\nfunction serialize(value) {\n var value$1 = value.createQuizSubmission;\n var value$2 = value$1.submission;\n var submission;\n if (value$2 !== undefined) {\n var value$3 = value$2.checklist;\n var value$4 = value$2.createdAt;\n var value$5 = value$2.id;\n submission = {\n id: value$5,\n createdAt: value$4,\n checklist: value$3\n };\n } else {\n submission = null;\n }\n var createQuizSubmission = {\n submission: submission\n };\n return {\n createQuizSubmission: createQuizSubmission\n };\n}\n\nfunction serializeVariables(inp) {\n var a = inp.answerIds;\n return {\n targetId: inp.targetId,\n answerIds: Js_array.map((function (b) {\n return b;\n }), a)\n };\n}\n\nfunction makeVariables(targetId, answerIds, param) {\n return {\n targetId: targetId,\n answerIds: answerIds\n };\n}\n\nvar CreateQuizSubmissionQuery_inner = {\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables\n};\n\nvar include = GraphqlQuery.Extender({\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar make = include.make;\n\nvar CreateQuizSubmissionQuery_Graphql_error = include.Graphql_error;\n\nvar CreateQuizSubmissionQuery_decodeNotification = include.decodeNotification;\n\nvar CreateQuizSubmissionQuery_decodeObject = include.decodeObject;\n\nvar CreateQuizSubmissionQuery_decodeNotifications = include.decodeNotifications;\n\nvar CreateQuizSubmissionQuery_decodeErrors = include.decodeErrors;\n\nvar CreateQuizSubmissionQuery_flashNotifications = include.flashNotifications;\n\nvar CreateQuizSubmissionQuery_sendQuery = include.sendQuery;\n\nvar CreateQuizSubmissionQuery_query = include.query;\n\nvar CreateQuizSubmissionQuery_fetch = include.$$fetch;\n\nvar CreateQuizSubmissionQuery = {\n CreateQuizSubmissionQuery_inner: CreateQuizSubmissionQuery_inner,\n Raw: Raw,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables,\n Graphql_error: CreateQuizSubmissionQuery_Graphql_error,\n decodeNotification: CreateQuizSubmissionQuery_decodeNotification,\n decodeObject: CreateQuizSubmissionQuery_decodeObject,\n decodeNotifications: CreateQuizSubmissionQuery_decodeNotifications,\n decodeErrors: CreateQuizSubmissionQuery_decodeErrors,\n flashNotifications: CreateQuizSubmissionQuery_flashNotifications,\n sendQuery: CreateQuizSubmissionQuery_sendQuery,\n query: CreateQuizSubmissionQuery_query,\n $$fetch: CreateQuizSubmissionQuery_fetch,\n make: make\n};\n\nfunction createQuizSubmission(target, selectedAnswersIds, setSaving, addSubmissionCB) {\n Curry._1(setSaving, (function (param) {\n return true;\n }));\n Js_promise.then_((function (response) {\n var submission = response.createQuizSubmission.submission;\n if (submission !== undefined) {\n var submission$1 = Caml_option.valFromOption(submission);\n var partial_arg = [];\n var checklist = Json_decode.array((function (param) {\n return SubmissionChecklistItem.decode(partial_arg, param);\n }), submission$1.checklist);\n Curry._1(addSubmissionCB, CoursesCurriculum__Submission.make(submission$1.id, DateFns.decodeISO(submission$1.createdAt), /* MarkedAsComplete */0, checklist, undefined));\n } else {\n Curry._1(setSaving, (function (param) {\n return false;\n }));\n }\n return Promise.resolve(undefined);\n }), Curry._3(make, undefined, undefined, {\n targetId: CoursesCurriculum__Target.id(target),\n answerIds: selectedAnswersIds\n }));\n}\n\nfunction answerOptionClasses(answerOption, selectedAnswer) {\n var defaultClasses = \"quiz-root__answer bg-white flex items-center shadow border border-transparent rounded p-3 mt-3 cursor-pointer transition \";\n if (selectedAnswer !== undefined && Caml_obj.equal(Caml_option.valFromOption(selectedAnswer), answerOption)) {\n return defaultClasses + \"text-primary-500 shadow-md quiz-root__answer-selected \";\n } else {\n return defaultClasses;\n }\n}\n\nfunction iconClasses(answerOption, selectedAnswer) {\n var defaultClasses = \"quiz-root__answer-option-icon mb-1 far fa-check-circle text-lg \";\n if (selectedAnswer !== undefined) {\n if (Caml_obj.equal(Caml_option.valFromOption(selectedAnswer), answerOption)) {\n return defaultClasses + \"text-primary-500\";\n } else {\n return defaultClasses + \"text-gray-500\";\n }\n } else {\n return defaultClasses + \"text-gray-500\";\n }\n}\n\nfunction handleSubmit(answer, target, selectedAnswersIds, setSaving, addSubmissionCB, $$event) {\n $$event.preventDefault();\n var answerIds = Js_array.concat(selectedAnswersIds, [CoursesCurriculum__QuizQuestion.answerId(answer)]);\n createQuizSubmission(target, answerIds, setSaving, addSubmissionCB);\n}\n\nfunction CoursesCurriculum__Quiz(Props) {\n var target = Props.target;\n var targetDetails = Props.targetDetails;\n var addSubmissionCB = Props.addSubmissionCB;\n var preview = Props.preview;\n var quizQuestions = CoursesCurriculum__TargetDetails.quizQuestions(targetDetails);\n var match = React.useState(function () {\n return false;\n });\n var setSaving = match[1];\n var match$1 = React.useState(function () {\n return Caml_array.get(quizQuestions, 0);\n });\n var setSelectedQuestion = match$1[1];\n var selectedQuestion = match$1[0];\n var match$2 = React.useState(function () {\n \n });\n var setSelectedAnswer = match$2[1];\n var selectedAnswer = match$2[0];\n var match$3 = React.useState(function () {\n return [];\n });\n var setSelectedAnswersIds = match$3[1];\n var selectedAnswersIds = match$3[0];\n var tmp;\n if (selectedAnswer !== undefined) {\n var tmp$1;\n if (CoursesCurriculum__QuizQuestion.isLastQuestion(quizQuestions, selectedQuestion)) {\n tmp$1 = React.createElement(\"button\", {\n className: \"btn btn-primary\",\n disabled: match[0] || preview,\n onClick: (function (param) {\n return handleSubmit(selectedAnswer, target, selectedAnswersIds, setSaving, addSubmissionCB, param);\n })\n }, tr(undefined, undefined, \"submit_quiz\"));\n } else {\n var nextQuestion = CoursesCurriculum__QuizQuestion.nextQuestion(quizQuestions, selectedQuestion);\n tmp$1 = React.createElement(\"button\", {\n className: \"btn btn-primary\",\n onClick: (function (param) {\n Curry._1(setSelectedQuestion, (function (param) {\n return nextQuestion;\n }));\n Curry._1(setSelectedAnswersIds, (function (param) {\n return Js_array.concat(selectedAnswersIds, [CoursesCurriculum__QuizQuestion.answerId(selectedAnswer)]);\n }));\n Curry._1(setSelectedAnswer, (function (param) {\n \n }));\n })\n }, tr(undefined, undefined, \"next_question\"));\n }\n tmp = React.createElement(\"div\", {\n className: \"quiz-root__answer-submit-section flex justify-center rounded-b-lg text-center p-4 border-t border-gray-200 w-full\"\n }, tmp$1);\n } else {\n tmp = null;\n }\n return React.createElement(\"div\", {\n className: \"bg-gray-50 rounded overflow-hidden relative mb-18 mt-4\"\n }, React.createElement(\"div\", {\n className: \"p-2 md:p-5\"\n }, React.createElement(\"span\", {\n className: \"font-semibold text-xs block uppercase text-gray-600\"\n }, tr(undefined, undefined, \"question\") + \" #\", String(CoursesCurriculum__QuizQuestion.index(selectedQuestion) + 1 | 0)), React.createElement(MarkdownBlock.make, {\n markdown: CoursesCurriculum__QuizQuestion.question(selectedQuestion),\n className: \"text-lg md:text-xl\",\n profile: /* Permissive */0\n }), React.createElement(\"div\", {\n className: \"pt-2 flex flex-col\"\n }, Js_array.map((function (answerOption) {\n return React.createElement(\"button\", {\n key: CoursesCurriculum__QuizQuestion.answerId(answerOption),\n className: answerOptionClasses(answerOption, selectedAnswer),\n onClick: (function (param) {\n Curry._1(setSelectedAnswer, (function (param) {\n return answerOption;\n }));\n })\n }, React.createElement(FaIcon.make, {\n classes: iconClasses(answerOption, selectedAnswer)\n }), React.createElement(MarkdownBlock.make, {\n markdown: CoursesCurriculum__QuizQuestion.answerValue(answerOption),\n className: \"overflow-auto ms-2 w-full\",\n profile: /* Permissive */0\n }));\n }), CoursesCurriculum__QuizQuestion.answerOptions(selectedQuestion)))), tmp);\n}\n\nvar make$1 = CoursesCurriculum__Quiz;\n\nexport {\n str ,\n tr ,\n CreateQuizSubmissionQuery ,\n createQuizSubmission ,\n answerOptionClasses ,\n iconClasses ,\n handleSubmit ,\n make$1 as make,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as React from \"react\";\nimport * as ReactUtils from \"../../../shared/utils/ReactUtils.bs.js\";\nimport * as ContentBlock from \"../../../shared/types/ContentBlock.bs.js\";\nimport * as TargetContentView from \"../../../shared/components/TargetContentView.bs.js\";\nimport * as CoursesCurriculum__TargetDetails from \"../types/CoursesCurriculum__TargetDetails.bs.js\";\n\nimport \"./CoursesCurriculum__Learn.css\"\n;\n\nvar partial_arg = \"components.CoursesCurriculum__Learn\";\n\nfunction t(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nfunction CoursesCurriculum__Learn(Props) {\n var targetDetails = Props.targetDetails;\n var author = Props.author;\n var courseId = Props.courseId;\n var targetId = Props.targetId;\n return React.createElement(\"div\", {\n id: \"learn-component\"\n }, ReactUtils.nullUnless(React.createElement(\"a\", {\n className: \"btn btn-primary-ghost btn-small course-curriculum__learn-edit-content-btn\",\n href: \"/school/courses/\" + courseId + \"/targets/\" + targetId + \"/content\"\n }, React.createElement(\"i\", {\n className: \"fas fa-pencil-alt\"\n }), React.createElement(\"span\", {\n className: \"ms-2\"\n }, t(undefined, undefined, \"edit_target_button\"))), author), React.createElement(TargetContentView.make, {\n contentBlocks: ContentBlock.sort(CoursesCurriculum__TargetDetails.contentBlocks(targetDetails))\n }));\n}\n\nvar make = CoursesCurriculum__Learn;\n\nexport {\n t ,\n make ,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as $$Array from \"../../../../../node_modules/rescript/lib/es6/array.js\";\nimport * as React from \"react\";\nimport * as Js_array from \"../../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as CoursesCurriculum__Community from \"../types/CoursesCurriculum__Community.bs.js\";\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.CoursesCurriculum__Discuss\";\n\nfunction tr(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nfunction linkToCommunity(communityId, targetId) {\n return \"/communities/\" + (communityId + (\"?target_id=\" + targetId));\n}\n\nfunction linkToNewPost(communityId, targetId) {\n return \"/communities/\" + (communityId + (\"/new_topic?target_id=\" + targetId));\n}\n\nfunction topicCard(topic) {\n var topicId = CoursesCurriculum__Community.topicId(topic);\n var topicLink = \"/topics/\" + topicId;\n return React.createElement(\"div\", {\n key: topicId,\n className: \"flex justify-between items-center px-5 py-4 bg-white border-t\",\n href: topicLink\n }, React.createElement(\"span\", {\n className: \"text-sm font-semibold\"\n }, CoursesCurriculum__Community.topicTitle(topic)), React.createElement(\"a\", {\n className: \"btn btn-primary-ghost btn-small\",\n href: topicLink\n }, \"View\"));\n}\n\nfunction handleEmpty(param) {\n return React.createElement(\"div\", {\n className: \"flex flex-col justify-center items-center bg-white px-3 py-10\"\n }, React.createElement(\"i\", {\n className: \"fa fa-comments text-5xl text-gray-600 mb-2 \"\n }), React.createElement(\"div\", {\n className: \"text-center\"\n }, React.createElement(\"h4\", {\n className: \"font-bold\"\n }, tr(undefined, undefined, \"no_discussion\")), React.createElement(\"p\", undefined, tr(undefined, undefined, \"use_community\"))));\n}\n\nfunction actionButtons(community, targetId) {\n var communityId = CoursesCurriculum__Community.id(community);\n var communityName = CoursesCurriculum__Community.name(community);\n return React.createElement(\"div\", {\n className: \"flex\"\n }, React.createElement(\"a\", {\n className: \"btn btn-default me-3\",\n title: \"Browse all topics about this target in the \" + (communityName + \" community\"),\n href: linkToCommunity(communityId, targetId)\n }, tr(undefined, undefined, \"go_to\")), React.createElement(\"a\", {\n className: \"btn btn-primary\",\n title: \"Create a topic in the \" + (communityName + \" community\"),\n href: linkToNewPost(communityId, targetId)\n }, tr(undefined, undefined, \"create\")));\n}\n\nfunction communityTitle(community) {\n return React.createElement(\"h5\", {\n className: \"font-bold\"\n }, tr(undefined, undefined, \"topics_pre\") + (CoursesCurriculum__Community.name(community) + tr(undefined, undefined, \"topics_post\")));\n}\n\nfunction CoursesCurriculum__Discuss(Props) {\n var targetId = Props.targetId;\n var communities = Props.communities;\n return React.createElement(\"div\", undefined, Js_array.map((function (community) {\n var communityId = CoursesCurriculum__Community.id(community);\n var topics = CoursesCurriculum__Community.topics(community);\n return React.createElement(\"div\", {\n key: communityId,\n className: \"mt-12 bg-gray-50 px-6 py-4 rounded-lg\"\n }, React.createElement(\"div\", {\n className: \"flex flex-col md:flex-row w-full justify-between pb-3 items-center\"\n }, React.createElement(\"div\", undefined, communityTitle(community)), actionButtons(community, targetId)), React.createElement(\"div\", {\n className: \"justify-between rounded-lg overflow-hidden shadow\"\n }, topics.length !== 0 ? $$Array.map(topicCard, topics) : handleEmpty(undefined)));\n }), communities));\n}\n\nvar make = CoursesCurriculum__Discuss;\n\nexport {\n str ,\n tr ,\n linkToCommunity ,\n linkToNewPost ,\n topicCard ,\n handleEmpty ,\n actionButtons ,\n communityTitle ,\n make ,\n}\n/* I18n Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as React from \"react\";\nimport * as Avatar from \"../../../shared/Avatar.bs.js\";\nimport * as Belt_Option from \"../../../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as Json_decode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\n\nfunction id(t) {\n return t.id;\n}\n\nfunction name(t) {\n return t.name;\n}\n\nfunction avatarUrl(t) {\n return t.avatarUrl;\n}\n\nfunction isAdmin(t) {\n return t.isAdmin;\n}\n\nfunction isAuthor(t) {\n return t.isAuthor;\n}\n\nfunction isCoach(t) {\n return t.isCoach;\n}\n\nfunction isStudent(t) {\n return t.isStudent;\n}\n\nfunction isModerator(t) {\n if (t.isAdmin) {\n return true;\n } else {\n return t.isCoach;\n }\n}\n\nfunction isParticipant(t) {\n if (t.isAdmin || t.isAuthor || t.isCoach) {\n return true;\n } else {\n return t.isStudent;\n }\n}\n\nfunction decode(json) {\n return {\n id: Json_decode.field(\"id\", Json_decode.string, json),\n name: Json_decode.field(\"name\", Json_decode.string, json),\n avatarUrl: Json_decode.optional((function (param) {\n return Json_decode.field(\"avatarUrl\", Json_decode.string, param);\n }), json),\n isAdmin: Json_decode.field(\"isAdmin\", Json_decode.bool, json),\n isAuthor: Json_decode.field(\"isAuthor\", Json_decode.bool, json),\n isCoach: Json_decode.field(\"isCoach\", Json_decode.bool, json),\n isStudent: Json_decode.field(\"isStudent\", Json_decode.bool, json)\n };\n}\n\nfunction avatar(t) {\n return Belt_Option.mapWithDefault(t.avatarUrl, React.createElement(Avatar.make, {\n name: t.name,\n className: \"w-full h-full\"\n }), (function (src) {\n return React.createElement(\"img\", {\n src: src\n });\n }));\n}\n\nexport {\n id ,\n name ,\n avatarUrl ,\n isAdmin ,\n isAuthor ,\n isCoach ,\n isStudent ,\n isModerator ,\n isParticipant ,\n decode ,\n avatar ,\n}\n/* react Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as DateFns from \"../../../shared/utils/DateFns.bs.js\";\nimport * as Belt_Option from \"../../../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as Json_decode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\n\nfunction decode(json) {\n return {\n levelId: Json_decode.field(\"levelId\", Json_decode.string, json),\n endsAt: Belt_Option.map(Json_decode.optional((function (param) {\n return Json_decode.field(\"endsAt\", Json_decode.string, param);\n }), json), DateFns.parseISO),\n completedAt: Belt_Option.map(Json_decode.optional((function (param) {\n return Json_decode.field(\"completedAt\", Json_decode.string, param);\n }), json), DateFns.parseISO)\n };\n}\n\nfunction levelId(t) {\n return t.levelId;\n}\n\nfunction endsAt(t) {\n return t.endsAt;\n}\n\nfunction completedAt(t) {\n return t.completedAt;\n}\n\nfunction accessEnded(t) {\n return Belt_Option.mapWithDefault(t.endsAt, false, DateFns.isPast);\n}\n\nexport {\n decode ,\n levelId ,\n endsAt ,\n completedAt ,\n accessEnded ,\n}\n/* DateFns Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as ArrayUtils from \"../../../shared/utils/ArrayUtils.bs.js\";\nimport * as Json_decode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\n\nfunction decode(json) {\n return {\n id: Json_decode.field(\"id\", Json_decode.string, json),\n levelId: Json_decode.field(\"levelId\", Json_decode.string, json),\n name: Json_decode.field(\"name\", Json_decode.string, json),\n description: Json_decode.field(\"description\", Json_decode.string, json),\n sortIndex: Json_decode.field(\"sortIndex\", Json_decode.$$int, json)\n };\n}\n\nfunction sort(targetGroups) {\n return ArrayUtils.copyAndSort((function (x, y) {\n return x.sortIndex - y.sortIndex | 0;\n }), targetGroups);\n}\n\nfunction id(t) {\n return t.id;\n}\n\nfunction name(t) {\n return t.name;\n}\n\nfunction levelId(t) {\n return t.levelId;\n}\n\nfunction description(t) {\n return t.description;\n}\n\nexport {\n decode ,\n sort ,\n id ,\n name ,\n levelId ,\n description ,\n}\n/* ArrayUtils Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as DateFns from \"../../../shared/utils/DateFns.bs.js\";\nimport * as Belt_Option from \"../../../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as Caml_option from \"../../../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as Json_decode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\n\nfunction decode(json) {\n return {\n targetId: Json_decode.field(\"targetId\", Json_decode.string, json),\n passedAt: Belt_Option.map(Json_decode.optional((function (param) {\n return Json_decode.field(\"passedAt\", Json_decode.string, param);\n }), json), DateFns.parseISO),\n evaluatedAt: Belt_Option.map(Json_decode.optional((function (param) {\n return Json_decode.field(\"evaluatedAt\", Json_decode.string, param);\n }), json), DateFns.parseISO)\n };\n}\n\nfunction targetId(t) {\n return t.targetId;\n}\n\nfunction hasPassed(t) {\n return t.passedAt !== undefined;\n}\n\nfunction hasBeenEvaluated(t) {\n return t.evaluatedAt !== undefined;\n}\n\nfunction make(pending, targetId) {\n return {\n targetId: targetId,\n passedAt: pending ? undefined : Caml_option.some(new Date()),\n evaluatedAt: undefined\n };\n}\n\nexport {\n decode ,\n targetId ,\n hasPassed ,\n hasBeenEvaluated ,\n make ,\n}\n/* DateFns Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as DateFns from \"../../../shared/utils/DateFns.bs.js\";\nimport * as Js_array from \"../../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as ArrayUtils from \"../../../shared/utils/ArrayUtils.bs.js\";\nimport * as Belt_Array from \"../../../../../node_modules/rescript/lib/es6/belt_Array.js\";\nimport * as Belt_Option from \"../../../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as CoursesCurriculum__Level from \"./CoursesCurriculum__Level.bs.js\";\nimport * as CoursesCurriculum__Course from \"./CoursesCurriculum__Course.bs.js\";\nimport * as CoursesCurriculum__Target from \"./CoursesCurriculum__Target.bs.js\";\nimport * as CoursesCurriculum__Student from \"./CoursesCurriculum__Student.bs.js\";\nimport * as CoursesCurriculum__TargetGroup from \"./CoursesCurriculum__TargetGroup.bs.js\";\nimport * as CoursesCurriculum__LatestSubmission from \"./CoursesCurriculum__LatestSubmission.bs.js\";\n\nvar partial_arg = \"components.CoursesCurriculum__TargetStatus\";\n\nfunction tc(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nfunction isPast(date) {\n return Belt_Option.mapWithDefault(date, false, DateFns.isPast);\n}\n\nfunction makePending(targets) {\n return Js_array.map((function (t) {\n return {\n targetId: CoursesCurriculum__Target.id(t),\n status: /* Pending */0\n };\n }), targets);\n}\n\nfunction lockTargets(targets, reason) {\n return Js_array.map((function (t) {\n return {\n targetId: CoursesCurriculum__Target.id(t),\n status: /* Locked */{\n _0: reason\n }\n };\n }), targets);\n}\n\nfunction allTargetsAttempted(targetCache, targetIds) {\n return Belt_Array.every(targetIds, (function (targetId) {\n return Belt_Option.mapWithDefault(Js_array.find((function (ct) {\n return ct.targetId === targetId;\n }), targetCache), true, (function (target) {\n return target.submissionStatus !== /* SubmissionMissing */0;\n }));\n }));\n}\n\nfunction compute(preview, student, course, levels, targetGroups, targets, targetsRead, submissions) {\n if (preview) {\n return makePending(targets);\n }\n if (CoursesCurriculum__Course.ended(course)) {\n return lockTargets(targets, /* CourseLocked */0);\n }\n var date = CoursesCurriculum__Student.endsAt(student);\n if (Belt_Option.mapWithDefault(date, false, DateFns.isPast)) {\n return lockTargets(targets, /* AccessLocked */1);\n }\n var targetCache = Js_array.map((function (target) {\n var targetId = CoursesCurriculum__Target.id(target);\n var targetGroup = ArrayUtils.unsafeFind((function (tg) {\n return CoursesCurriculum__TargetGroup.id(tg) === CoursesCurriculum__Target.targetGroupId(target);\n }), \"Could not find target group with ID \" + (CoursesCurriculum__Target.targetGroupId(target) + \" to create target cache\"), targetGroups);\n var levelNumber = CoursesCurriculum__Level.number(ArrayUtils.unsafeFind((function (l) {\n return CoursesCurriculum__Level.id(l) === CoursesCurriculum__TargetGroup.levelId(targetGroup);\n }), \"Could not find level with ID \" + (CoursesCurriculum__Student.levelId(student) + \" to create target cache\"), levels));\n var submission = Js_array.find((function (s) {\n return CoursesCurriculum__LatestSubmission.targetId(s) === targetId;\n }), submissions);\n var submissionStatus = submission !== undefined ? (\n CoursesCurriculum__LatestSubmission.hasPassed(submission) ? /* SubmissionCompleted */2 : (\n CoursesCurriculum__LatestSubmission.hasBeenEvaluated(submission) ? /* SubmissionRejected */3 : /* SubmissionPendingReview */1\n )\n ) : /* SubmissionMissing */0;\n return {\n targetId: targetId,\n targetReviewed: CoursesCurriculum__Target.reviewed(target),\n levelNumber: levelNumber,\n milestone: CoursesCurriculum__Target.milestone(target),\n hasAssignment: CoursesCurriculum__Target.hasAssignment(target),\n submissionStatus: submissionStatus,\n prerequisiteTargetIds: CoursesCurriculum__Target.prerequisiteTargetIds(target)\n };\n }), targets);\n var submissionsPendingReviewCount = Js_array.filter((function (ct) {\n return ct.submissionStatus === /* SubmissionPendingReview */1;\n }), targetCache).length;\n return Js_array.map((function (ct) {\n var match = ct.submissionStatus;\n var status;\n switch (match) {\n case /* SubmissionMissing */0 :\n status = ct.targetReviewed && CoursesCurriculum__Course.progressionLimit(course) !== 0 && submissionsPendingReviewCount >= CoursesCurriculum__Course.progressionLimit(course) ? /* Locked */({\n _0: /* SubmissionLimitReached */{\n _0: String(submissionsPendingReviewCount)\n }\n }) : (\n allTargetsAttempted(targetCache, ct.prerequisiteTargetIds) ? (\n !ct.hasAssignment && Js_array.includes(ct.targetId, targetsRead) ? /* Completed */2 : /* Pending */0\n ) : /* Locked */({\n _0: /* PrerequisitesIncomplete */2\n })\n );\n break;\n case /* SubmissionPendingReview */1 :\n status = /* PendingReview */1;\n break;\n case /* SubmissionCompleted */2 :\n status = /* Completed */2;\n break;\n case /* SubmissionRejected */3 :\n status = /* Rejected */3;\n break;\n \n }\n return {\n targetId: ct.targetId,\n status: status\n };\n }), targetCache);\n}\n\nfunction targetId(t) {\n return t.targetId;\n}\n\nfunction status(t) {\n return t.status;\n}\n\nfunction isPending(t) {\n return t.status === /* Pending */0;\n}\n\nfunction isAccessEnded(t) {\n var reason = t.status;\n if (typeof reason === \"number\") {\n return false;\n } else {\n return reason._0 === /* AccessLocked */1;\n }\n}\n\nfunction lockReasonToString(lockReason) {\n if (typeof lockReason !== \"number\") {\n return tc([[\n \"pending_count\",\n lockReason._0\n ]], undefined, \"submission_limit_reached\");\n }\n switch (lockReason) {\n case /* CourseLocked */0 :\n return tc(undefined, undefined, \"course_locked\");\n case /* AccessLocked */1 :\n return tc(undefined, undefined, \"access_locked\");\n case /* PrerequisitesIncomplete */2 :\n return tc(undefined, undefined, \"prerequisites_incomplete\");\n \n }\n}\n\nfunction statusToString(t) {\n var match = t.status;\n if (typeof match !== \"number\") {\n return tc(undefined, undefined, \"status.locked\");\n }\n switch (match) {\n case /* Pending */0 :\n return tc(undefined, undefined, \"status.pending\");\n case /* PendingReview */1 :\n return tc(undefined, undefined, \"status.pending_review\");\n case /* Completed */2 :\n return tc(undefined, undefined, \"status.completed\");\n case /* Rejected */3 :\n return tc(undefined, undefined, \"status.rejected\");\n \n }\n}\n\nfunction statusClassesSufix(t) {\n var match = t.status;\n if (typeof match !== \"number\") {\n return \"locked\";\n }\n switch (match) {\n case /* Pending */0 :\n return \"pending\";\n case /* PendingReview */1 :\n return \"pending-review\";\n case /* Completed */2 :\n return \"completed\";\n case /* Rejected */3 :\n return \"rejected\";\n \n }\n}\n\nfunction canSubmit(resubmittable, t) {\n var match = t.status;\n if (resubmittable) {\n if (match === 2) {\n return true;\n }\n \n } else if (match === 2) {\n return false;\n }\n if (typeof match === \"number\") {\n return match !== 1;\n } else {\n return false;\n }\n}\n\nfunction allAttempted(ts) {\n return Belt_Array.every(ts, (function (t) {\n return Js_array.includes(t.status, [\n /* PendingReview */1,\n /* Completed */2,\n /* Rejected */3\n ]);\n }));\n}\n\nfunction allComplete(ts) {\n return Belt_Array.every(ts, (function (t) {\n return t.status === /* Completed */2;\n }));\n}\n\nfunction anyRejected(ts) {\n return Belt_Array.some(ts, (function (t) {\n return t.status === /* Rejected */3;\n }));\n}\n\nfunction readable(t) {\n var match = t.status;\n if (typeof match === \"number\") {\n return true;\n }\n var match$1 = match._0;\n if (typeof match$1 === \"number\") {\n return match$1 >= 2;\n } else {\n return true;\n }\n}\n\nvar Course;\n\nvar Student;\n\nvar Target;\n\nvar Level;\n\nvar TargetGroup;\n\nvar LatestSubmission;\n\nexport {\n Course ,\n Student ,\n Target ,\n Level ,\n TargetGroup ,\n LatestSubmission ,\n tc ,\n isPast ,\n makePending ,\n lockTargets ,\n allTargetsAttempted ,\n compute ,\n targetId ,\n status ,\n isPending ,\n isAccessEnded ,\n lockReasonToString ,\n statusToString ,\n statusClassesSufix ,\n canSubmit ,\n allAttempted ,\n allComplete ,\n anyRejected ,\n readable ,\n}\n/* I18n Not a pure module */\n","export default \"__VITE_ASSET__Cgrh5pSU__\"","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as Curry from \"../../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as PfIcon from \"../../../packages/pf-icon/src/PfIcon.bs.js\";\nimport * as MarkdownBlock from \"../../../shared/components/MarkdownBlock.bs.js\";\nimport * as SubmissionChecklistItem from \"../types/SubmissionChecklistItem.bs.js\";\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.SubmissionChecklistItemShow\";\n\nfunction tr(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nfunction kindIconClasses(result) {\n switch (result.TAG | 0) {\n case /* ShortText */0 :\n return \"if i-short-text-light text-base md:text-lg text-gray-800 mt-px\";\n case /* LongText */1 :\n return \"if i-long-text-light text-base md:text-lg text-gray-800 mt-px\";\n case /* Link */2 :\n return \"if i-link-light text-base md:text-lg text-gray-800 mt-px\";\n case /* MultiChoice */4 :\n return \"if i-check-circle-alt-light text-base md:text-lg text-gray-800 mt-px\";\n case /* Files */3 :\n case /* AudioRecord */5 :\n return \"if i-file-light text-base md:text-lg text-gray-800 mt-px\";\n \n }\n}\n\nfunction showFiles(files) {\n return React.createElement(\"div\", {\n className: \"flex flex-wrap\"\n }, files.map(function (file) {\n return React.createElement(\"a\", {\n key: \"file-\" + SubmissionChecklistItem.fileUrl(file),\n className: \"mt-1 me-3 flex border overflow-hidden rounded hover:shadow-md border-red-300 bg-white text-red-600 hover:border-red-500 hover:text-red-600 focus:ring-2 focus:ring-offset-2 focus:ring-focusColor-500\",\n href: SubmissionChecklistItem.fileUrl(file),\n target: \"_blank\"\n }, React.createElement(\"span\", {\n className: \"course-show-attachments__attachment-title rounded text-xs font-semibold inline-block whitespace-nowrap truncate w-32 md:w-42 h-full px-3 py-2 leading-loose\"\n }, SubmissionChecklistItem.fileName(file)), React.createElement(\"span\", {\n className: \"flex w-10 justify-center items-center p-2 bg-red-600 text-white\"\n }, React.createElement(PfIcon.make, {\n className: \"if i-download-regular\"\n })));\n }));\n}\n\nfunction showlink(link) {\n return React.createElement(\"a\", {\n className: \"max-w-fc mt-1 me-3 flex border overflow-hidden rounded hover:shadow-md border-blue-400 bg-white text-blue-700 hover:border-blue-600 hover:text-blue-800 focus:ring-2 focus:ring-offset-2 focus:ring-focusColor-500\",\n href: link,\n target: \"_blank\"\n }, React.createElement(\"span\", {\n className: \"course-show-attachments__attachment-title rounded text-xs font-semibold inline-block whitespace-nowrap truncate w-32 md:w-42 h-full px-3 py-2 leading-loose\"\n }, link), React.createElement(\"span\", {\n className: \"flex w-10 justify-center items-center p-2 bg-blue-700 text-white\"\n }, React.createElement(PfIcon.make, {\n className: \"if i-external-link-regular rtl:-rotate-90\"\n })));\n}\n\nfunction statusIcon(updateChecklistCB, status) {\n if (updateChecklistCB !== undefined) {\n return null;\n }\n switch (status) {\n case /* Passed */0 :\n return React.createElement(\"div\", {\n className: \"flex items-center space-x-2 text-xs bg-green-100 px-1 py-px mt-1\"\n }, React.createElement(PfIcon.make, {\n className: \"if i-check-square-solid text-green-500 text-base bg-white\"\n }), React.createElement(\"p\", undefined, tr(undefined, undefined, \"correct\")));\n case /* Failed */1 :\n return React.createElement(\"div\", {\n className: \"flex items-center text-red-500 gap-2 text-xs px-1 py-px mt-px\"\n }, React.createElement(PfIcon.make, {\n className: \"if i-times-square-solid block text-base bg-white\"\n }), React.createElement(\"p\", undefined, tr(undefined, undefined, \"incorrect\")));\n case /* NoAnswer */2 :\n return null;\n \n }\n}\n\nfunction showStatus(status) {\n switch (status) {\n case /* Passed */0 :\n return React.createElement(\"div\", {\n className: \"bg-green-200 rounded px-1 py-px text-green-800 text-tiny\"\n }, tr(undefined, undefined, \"correct\"));\n case /* Failed */1 :\n return React.createElement(\"div\", {\n className: \"bg-red-200 rounded px-1 py-px text-red-800 text-tiny\"\n }, \"Incorrect\");\n case /* NoAnswer */2 :\n return null;\n \n }\n}\n\nfunction showChoices(choices) {\n return choices.map(function (choice) {\n return React.createElement(\"p\", {\n className: \"text-sm text-gray-800\"\n }, \"- \" + choice);\n });\n}\n\nfunction statusButtonSelectedClasses(status, currentStatus) {\n var tmp;\n switch (currentStatus) {\n case /* Passed */0 :\n tmp = status !== 0 ? \"bg-white\" : \"bg-green-100 hover:bg-green-100 text-green-800 hover:text-green-800 border-green-500 z-10\";\n break;\n case /* Failed */1 :\n tmp = status !== 1 ? \"bg-white\" : \"bg-red-100 hover:bg-red-100 text-red-700 hover:text-red-700 border-red-500 z-10\";\n break;\n case /* NoAnswer */2 :\n tmp = \"bg-white\";\n break;\n \n }\n return \"inline-flex items-center cursor-pointer leading-tight font-semibold inline-block text-xs relative hover:bg-gray-50 hover:text-gray-600 \" + tmp;\n}\n\nfunction statusButtonIcon(bool) {\n if (bool) {\n return \"if i-times-square-solid text-base if-fw\";\n } else {\n return \"if i-square-regular text-base if-fw text-gray-500\";\n }\n}\n\nfunction statusButtonOnClick(bool, callback, checklist, index, _event) {\n if (bool) {\n return Curry._1(callback, SubmissionChecklistItem.makeNoAnswer(index, checklist));\n } else {\n return Curry._1(callback, SubmissionChecklistItem.makeFailed(index, checklist));\n }\n}\n\nfunction statusButton(index, status, callback, checklist) {\n var partial_arg = status === /* Failed */1;\n return React.createElement(\"div\", {\n className: \"mt-2\"\n }, React.createElement(\"button\", {\n className: \"border border-gray-500 rounded focus:ring-2 focus:ring-offset-2 focus:ring-focusColor-500 \" + statusButtonSelectedClasses(/* Failed */1, status),\n onClick: (function (param) {\n return statusButtonOnClick(partial_arg, callback, checklist, index, param);\n })\n }, React.createElement(\"span\", {\n className: \"w-8 p-2 border-e border-gray-500 flex items-center justify-center\"\n }, React.createElement(PfIcon.make, {\n className: status === /* Failed */1 ? \"if i-times-square-solid text-base if-fw\" : \"if i-square-regular text-base if-fw text-gray-500\"\n })), React.createElement(\"span\", {\n className: \"p-2\"\n }, status === /* Failed */1 ? tr(undefined, undefined, \"mark_correct\") : tr(undefined, undefined, \"mark_incorrect\"))));\n}\n\nfunction cardBodyClasses(pending) {\n return \"ps-7 md:ps-8 \" + (\n pending ? \"\" : \"rounded-b\"\n );\n}\n\nfunction SubmissionChecklistItemShow(Props) {\n var index = Props.index;\n var checklistItem = Props.checklistItem;\n var updateChecklistCB = Props.updateChecklistCB;\n var checklist = Props.checklist;\n var showTitleOpt = Props.showTitle;\n var showTitle = showTitleOpt !== undefined ? showTitleOpt : true;\n var status = SubmissionChecklistItem.status(checklistItem);\n var text = SubmissionChecklistItem.result(checklistItem);\n var tmp;\n switch (text.TAG | 0) {\n case /* ShortText */0 :\n tmp = React.createElement(\"div\", undefined, text._0);\n break;\n case /* LongText */1 :\n tmp = React.createElement(MarkdownBlock.make, {\n markdown: text._0,\n profile: /* Permissive */0\n });\n break;\n case /* Link */2 :\n tmp = showlink(text._0);\n break;\n case /* Files */3 :\n tmp = showFiles(text._0);\n break;\n case /* MultiChoice */4 :\n tmp = React.createElement(\"div\", {\n className: \"space-y-2\"\n }, showChoices(text._0));\n break;\n case /* AudioRecord */5 :\n tmp = React.createElement(\"audio\", {\n controls: true,\n src: text._0.url\n });\n break;\n \n }\n return React.createElement(\"div\", {\n \"aria-label\": SubmissionChecklistItem.title(checklistItem)\n }, showTitle ? React.createElement(\"div\", {\n className: \"text-sm font-medium\"\n }, React.createElement(\"div\", {\n className: \"flex items-start space-x-2\"\n }, React.createElement(\"div\", {\n className: \"flex items-start w-full gap-3\"\n }, React.createElement(PfIcon.make, {\n className: kindIconClasses(SubmissionChecklistItem.result(checklistItem))\n }), React.createElement(\"div\", {\n className: \"overflow-x-auto\"\n }, React.createElement(MarkdownBlock.make, {\n markdown: SubmissionChecklistItem.title(checklistItem),\n className: \"block tracking-wide\",\n profile: /* Permissive */0\n }))), statusIcon(updateChecklistCB, status))) : null, React.createElement(\"div\", {\n className: \"ps-7 mt-2 text-sm\"\n }, React.createElement(\"div\", undefined, tmp), updateChecklistCB !== undefined ? statusButton(index, status, updateChecklistCB, checklist) : null));\n}\n\nvar ChecklistItem;\n\nvar make = SubmissionChecklistItemShow;\n\nexport {\n ChecklistItem ,\n str ,\n tr ,\n kindIconClasses ,\n showFiles ,\n showlink ,\n statusIcon ,\n showStatus ,\n showChoices ,\n statusButtonSelectedClasses ,\n statusButtonIcon ,\n statusButtonOnClick ,\n statusButton ,\n cardBodyClasses ,\n make ,\n}\n/* I18n Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as React from \"react\";\nimport * as ArrayUtils from \"../../../shared/utils/ArrayUtils.bs.js\";\nimport * as SubmissionChecklistItemShow from \"./SubmissionChecklistItemShow.bs.js\";\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.SubmissionChecklistShow\";\n\nfunction t(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nfunction SubmissionChecklistShow(Props) {\n var checklist = Props.checklist;\n var updateChecklistCB = Props.updateChecklistCB;\n var forDiscussionOpt = Props.forDiscussion;\n var forDiscussion = forDiscussionOpt !== undefined ? forDiscussionOpt : false;\n var showTitle = forDiscussion ? checklist.length !== 1 : true;\n return React.createElement(\"div\", {\n className: \"space-y-8\"\n }, ArrayUtils.isEmpty(checklist) ? React.createElement(\"div\", undefined, t(undefined, undefined, \"target_marked_as_complete\")) : checklist.map(function (checklistItem, index) {\n return React.createElement(SubmissionChecklistItemShow.make, {\n index: index,\n checklistItem: checklistItem,\n updateChecklistCB: updateChecklistCB,\n checklist: checklist,\n showTitle: showTitle,\n key: String(index)\n });\n }));\n}\n\nvar make = SubmissionChecklistShow;\n\nexport {\n str ,\n t ,\n make ,\n}\n/* I18n Not a pure module */\n","\n\nimport * as Curry from \"./curry.js\";\nimport * as Caml_option from \"./caml_option.js\";\nimport * as Belt_SortArray from \"./belt_SortArray.js\";\n\nfunction treeHeight(n) {\n if (n !== undefined) {\n return n.h;\n } else {\n return 0;\n }\n}\n\nfunction copy(n) {\n if (n !== undefined) {\n return {\n k: n.k,\n v: n.v,\n h: n.h,\n l: copy(n.l),\n r: copy(n.r)\n };\n } else {\n return n;\n }\n}\n\nfunction create(l, x, d, r) {\n var hl = treeHeight(l);\n var hr = treeHeight(r);\n return {\n k: x,\n v: d,\n h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0,\n l: l,\n r: r\n };\n}\n\nfunction singleton(x, d) {\n return {\n k: x,\n v: d,\n h: 1,\n l: undefined,\n r: undefined\n };\n}\n\nfunction heightGe(l, r) {\n if (r !== undefined) {\n if (l !== undefined) {\n return l.h >= r.h;\n } else {\n return false;\n }\n } else {\n return true;\n }\n}\n\nfunction updateValue(n, newValue) {\n if (n.v === newValue) {\n return n;\n } else {\n return {\n k: n.k,\n v: newValue,\n h: n.h,\n l: n.l,\n r: n.r\n };\n }\n}\n\nfunction bal(l, x, d, r) {\n var hl = l !== undefined ? l.h : 0;\n var hr = r !== undefined ? r.h : 0;\n if (hl > (hr + 2 | 0)) {\n var ll = l.l;\n var lr = l.r;\n if (treeHeight(ll) >= treeHeight(lr)) {\n return create(ll, l.k, l.v, create(lr, x, d, r));\n } else {\n return create(create(ll, l.k, l.v, lr.l), lr.k, lr.v, create(lr.r, x, d, r));\n }\n }\n if (hr <= (hl + 2 | 0)) {\n return {\n k: x,\n v: d,\n h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0,\n l: l,\n r: r\n };\n }\n var rl = r.l;\n var rr = r.r;\n if (treeHeight(rr) >= treeHeight(rl)) {\n return create(create(l, x, d, rl), r.k, r.v, rr);\n } else {\n return create(create(l, x, d, rl.l), rl.k, rl.v, create(rl.r, r.k, r.v, rr));\n }\n}\n\nfunction minKey0Aux(_n) {\n while(true) {\n var n = _n;\n var n$1 = n.l;\n if (n$1 === undefined) {\n return n.k;\n }\n _n = n$1;\n continue ;\n };\n}\n\nfunction minKey(n) {\n if (n !== undefined) {\n return Caml_option.some(minKey0Aux(n));\n }\n \n}\n\nfunction minKeyUndefined(n) {\n if (n !== undefined) {\n return minKey0Aux(n);\n }\n \n}\n\nfunction maxKey0Aux(_n) {\n while(true) {\n var n = _n;\n var n$1 = n.r;\n if (n$1 === undefined) {\n return n.k;\n }\n _n = n$1;\n continue ;\n };\n}\n\nfunction maxKey(n) {\n if (n !== undefined) {\n return Caml_option.some(maxKey0Aux(n));\n }\n \n}\n\nfunction maxKeyUndefined(n) {\n if (n !== undefined) {\n return maxKey0Aux(n);\n }\n \n}\n\nfunction minKV0Aux(_n) {\n while(true) {\n var n = _n;\n var n$1 = n.l;\n if (n$1 === undefined) {\n return [\n n.k,\n n.v\n ];\n }\n _n = n$1;\n continue ;\n };\n}\n\nfunction minimum(n) {\n if (n !== undefined) {\n return minKV0Aux(n);\n }\n \n}\n\nfunction minUndefined(n) {\n if (n !== undefined) {\n return minKV0Aux(n);\n }\n \n}\n\nfunction maxKV0Aux(_n) {\n while(true) {\n var n = _n;\n var n$1 = n.r;\n if (n$1 === undefined) {\n return [\n n.k,\n n.v\n ];\n }\n _n = n$1;\n continue ;\n };\n}\n\nfunction maximum(n) {\n if (n !== undefined) {\n return maxKV0Aux(n);\n }\n \n}\n\nfunction maxUndefined(n) {\n if (n !== undefined) {\n return maxKV0Aux(n);\n }\n \n}\n\nfunction removeMinAuxWithRef(n, kr, vr) {\n var ln = n.l;\n if (ln !== undefined) {\n return bal(removeMinAuxWithRef(ln, kr, vr), n.k, n.v, n.r);\n } else {\n kr.contents = n.k;\n vr.contents = n.v;\n return n.r;\n }\n}\n\nfunction isEmpty(x) {\n return x === undefined;\n}\n\nfunction stackAllLeft(_v, _s) {\n while(true) {\n var s = _s;\n var v = _v;\n if (v === undefined) {\n return s;\n }\n _s = {\n hd: v,\n tl: s\n };\n _v = v.l;\n continue ;\n };\n}\n\nfunction findFirstByU(n, p) {\n if (n === undefined) {\n return ;\n }\n var left = findFirstByU(n.l, p);\n if (left !== undefined) {\n return left;\n }\n var v = n.k;\n var d = n.v;\n var pvd = p(v, d);\n if (pvd) {\n return [\n v,\n d\n ];\n }\n var right = findFirstByU(n.r, p);\n if (right !== undefined) {\n return right;\n }\n \n}\n\nfunction findFirstBy(n, p) {\n return findFirstByU(n, Curry.__2(p));\n}\n\nfunction forEachU(_n, f) {\n while(true) {\n var n = _n;\n if (n === undefined) {\n return ;\n }\n forEachU(n.l, f);\n f(n.k, n.v);\n _n = n.r;\n continue ;\n };\n}\n\nfunction forEach(n, f) {\n forEachU(n, Curry.__2(f));\n}\n\nfunction mapU(n, f) {\n if (n === undefined) {\n return ;\n }\n var newLeft = mapU(n.l, f);\n var newD = f(n.v);\n var newRight = mapU(n.r, f);\n return {\n k: n.k,\n v: newD,\n h: n.h,\n l: newLeft,\n r: newRight\n };\n}\n\nfunction map(n, f) {\n return mapU(n, Curry.__1(f));\n}\n\nfunction mapWithKeyU(n, f) {\n if (n === undefined) {\n return ;\n }\n var key = n.k;\n var newLeft = mapWithKeyU(n.l, f);\n var newD = f(key, n.v);\n var newRight = mapWithKeyU(n.r, f);\n return {\n k: key,\n v: newD,\n h: n.h,\n l: newLeft,\n r: newRight\n };\n}\n\nfunction mapWithKey(n, f) {\n return mapWithKeyU(n, Curry.__2(f));\n}\n\nfunction reduceU(_m, _accu, f) {\n while(true) {\n var accu = _accu;\n var m = _m;\n if (m === undefined) {\n return accu;\n }\n var v = m.k;\n var d = m.v;\n var l = m.l;\n var r = m.r;\n _accu = f(reduceU(l, accu, f), v, d);\n _m = r;\n continue ;\n };\n}\n\nfunction reduce(m, accu, f) {\n return reduceU(m, accu, Curry.__3(f));\n}\n\nfunction everyU(_n, p) {\n while(true) {\n var n = _n;\n if (n === undefined) {\n return true;\n }\n if (!p(n.k, n.v)) {\n return false;\n }\n if (!everyU(n.l, p)) {\n return false;\n }\n _n = n.r;\n continue ;\n };\n}\n\nfunction every(n, p) {\n return everyU(n, Curry.__2(p));\n}\n\nfunction someU(_n, p) {\n while(true) {\n var n = _n;\n if (n === undefined) {\n return false;\n }\n if (p(n.k, n.v)) {\n return true;\n }\n if (someU(n.l, p)) {\n return true;\n }\n _n = n.r;\n continue ;\n };\n}\n\nfunction some(n, p) {\n return someU(n, Curry.__2(p));\n}\n\nfunction addMinElement(n, k, v) {\n if (n !== undefined) {\n return bal(addMinElement(n.l, k, v), n.k, n.v, n.r);\n } else {\n return singleton(k, v);\n }\n}\n\nfunction addMaxElement(n, k, v) {\n if (n !== undefined) {\n return bal(n.l, n.k, n.v, addMaxElement(n.r, k, v));\n } else {\n return singleton(k, v);\n }\n}\n\nfunction join(ln, v, d, rn) {\n if (ln === undefined) {\n return addMinElement(rn, v, d);\n }\n if (rn === undefined) {\n return addMaxElement(ln, v, d);\n }\n var lv = ln.k;\n var ld = ln.v;\n var lh = ln.h;\n var ll = ln.l;\n var lr = ln.r;\n var rv = rn.k;\n var rd = rn.v;\n var rh = rn.h;\n var rl = rn.l;\n var rr = rn.r;\n if (lh > (rh + 2 | 0)) {\n return bal(ll, lv, ld, join(lr, v, d, rn));\n } else if (rh > (lh + 2 | 0)) {\n return bal(join(ln, v, d, rl), rv, rd, rr);\n } else {\n return create(ln, v, d, rn);\n }\n}\n\nfunction concat(t1, t2) {\n if (t1 === undefined) {\n return t2;\n }\n if (t2 === undefined) {\n return t1;\n }\n var kr = {\n contents: t2.k\n };\n var vr = {\n contents: t2.v\n };\n var t2r = removeMinAuxWithRef(t2, kr, vr);\n return join(t1, kr.contents, vr.contents, t2r);\n}\n\nfunction concatOrJoin(t1, v, d, t2) {\n if (d !== undefined) {\n return join(t1, v, Caml_option.valFromOption(d), t2);\n } else {\n return concat(t1, t2);\n }\n}\n\nfunction keepSharedU(n, p) {\n if (n === undefined) {\n return ;\n }\n var v = n.k;\n var d = n.v;\n var newLeft = keepSharedU(n.l, p);\n var pvd = p(v, d);\n var newRight = keepSharedU(n.r, p);\n if (pvd) {\n return join(newLeft, v, d, newRight);\n } else {\n return concat(newLeft, newRight);\n }\n}\n\nfunction keepShared(n, p) {\n return keepSharedU(n, Curry.__2(p));\n}\n\nfunction keepMapU(n, p) {\n if (n === undefined) {\n return ;\n }\n var v = n.k;\n var d = n.v;\n var newLeft = keepMapU(n.l, p);\n var pvd = p(v, d);\n var newRight = keepMapU(n.r, p);\n if (pvd !== undefined) {\n return join(newLeft, v, Caml_option.valFromOption(pvd), newRight);\n } else {\n return concat(newLeft, newRight);\n }\n}\n\nfunction keepMap(n, p) {\n return keepMapU(n, Curry.__2(p));\n}\n\nfunction partitionSharedU(n, p) {\n if (n === undefined) {\n return [\n undefined,\n undefined\n ];\n }\n var key = n.k;\n var value = n.v;\n var match = partitionSharedU(n.l, p);\n var lf = match[1];\n var lt = match[0];\n var pvd = p(key, value);\n var match$1 = partitionSharedU(n.r, p);\n var rf = match$1[1];\n var rt = match$1[0];\n if (pvd) {\n return [\n join(lt, key, value, rt),\n concat(lf, rf)\n ];\n } else {\n return [\n concat(lt, rt),\n join(lf, key, value, rf)\n ];\n }\n}\n\nfunction partitionShared(n, p) {\n return partitionSharedU(n, Curry.__2(p));\n}\n\nfunction lengthNode(n) {\n var l = n.l;\n var r = n.r;\n var sizeL = l !== undefined ? lengthNode(l) : 0;\n var sizeR = r !== undefined ? lengthNode(r) : 0;\n return (1 + sizeL | 0) + sizeR | 0;\n}\n\nfunction size(n) {\n if (n !== undefined) {\n return lengthNode(n);\n } else {\n return 0;\n }\n}\n\nfunction toListAux(_n, _accu) {\n while(true) {\n var accu = _accu;\n var n = _n;\n if (n === undefined) {\n return accu;\n }\n var k = n.k;\n var v = n.v;\n var l = n.l;\n var r = n.r;\n _accu = {\n hd: [\n k,\n v\n ],\n tl: toListAux(r, accu)\n };\n _n = l;\n continue ;\n };\n}\n\nfunction toList(s) {\n return toListAux(s, /* [] */0);\n}\n\nfunction checkInvariantInternal(_v) {\n while(true) {\n var v = _v;\n if (v === undefined) {\n return ;\n }\n var l = v.l;\n var r = v.r;\n var diff = treeHeight(l) - treeHeight(r) | 0;\n if (!(diff <= 2 && diff >= -2)) {\n throw {\n RE_EXN_ID: \"Assert_failure\",\n _1: [\n \"belt_internalAVLtree.ml\",\n 373,\n 4\n ],\n Error: new Error()\n };\n }\n checkInvariantInternal(l);\n _v = r;\n continue ;\n };\n}\n\nfunction fillArrayKey(_n, _i, arr) {\n while(true) {\n var i = _i;\n var n = _n;\n var v = n.k;\n var l = n.l;\n var r = n.r;\n var next = l !== undefined ? fillArrayKey(l, i, arr) : i;\n arr[next] = v;\n var rnext = next + 1 | 0;\n if (r === undefined) {\n return rnext;\n }\n _i = rnext;\n _n = r;\n continue ;\n };\n}\n\nfunction fillArrayValue(_n, _i, arr) {\n while(true) {\n var i = _i;\n var n = _n;\n var l = n.l;\n var r = n.r;\n var next = l !== undefined ? fillArrayValue(l, i, arr) : i;\n arr[next] = n.v;\n var rnext = next + 1 | 0;\n if (r === undefined) {\n return rnext;\n }\n _i = rnext;\n _n = r;\n continue ;\n };\n}\n\nfunction fillArray(_n, _i, arr) {\n while(true) {\n var i = _i;\n var n = _n;\n var l = n.l;\n var v = n.k;\n var r = n.r;\n var next = l !== undefined ? fillArray(l, i, arr) : i;\n arr[next] = [\n v,\n n.v\n ];\n var rnext = next + 1 | 0;\n if (r === undefined) {\n return rnext;\n }\n _i = rnext;\n _n = r;\n continue ;\n };\n}\n\nfunction toArray(n) {\n if (n === undefined) {\n return [];\n }\n var size = lengthNode(n);\n var v = new Array(size);\n fillArray(n, 0, v);\n return v;\n}\n\nfunction keysToArray(n) {\n if (n === undefined) {\n return [];\n }\n var size = lengthNode(n);\n var v = new Array(size);\n fillArrayKey(n, 0, v);\n return v;\n}\n\nfunction valuesToArray(n) {\n if (n === undefined) {\n return [];\n }\n var size = lengthNode(n);\n var v = new Array(size);\n fillArrayValue(n, 0, v);\n return v;\n}\n\nfunction fromSortedArrayRevAux(arr, off, len) {\n switch (len) {\n case 0 :\n return ;\n case 1 :\n var match = arr[off];\n return singleton(match[0], match[1]);\n case 2 :\n var match_0 = arr[off];\n var match_1 = arr[off - 1 | 0];\n var match$1 = match_1;\n var match$2 = match_0;\n return {\n k: match$1[0],\n v: match$1[1],\n h: 2,\n l: singleton(match$2[0], match$2[1]),\n r: undefined\n };\n case 3 :\n var match_0$1 = arr[off];\n var match_1$1 = arr[off - 1 | 0];\n var match_2 = arr[off - 2 | 0];\n var match$3 = match_2;\n var match$4 = match_1$1;\n var match$5 = match_0$1;\n return {\n k: match$4[0],\n v: match$4[1],\n h: 2,\n l: singleton(match$5[0], match$5[1]),\n r: singleton(match$3[0], match$3[1])\n };\n default:\n var nl = len / 2 | 0;\n var left = fromSortedArrayRevAux(arr, off, nl);\n var match$6 = arr[off - nl | 0];\n var right = fromSortedArrayRevAux(arr, (off - nl | 0) - 1 | 0, (len - nl | 0) - 1 | 0);\n return create(left, match$6[0], match$6[1], right);\n }\n}\n\nfunction fromSortedArrayAux(arr, off, len) {\n switch (len) {\n case 0 :\n return ;\n case 1 :\n var match = arr[off];\n return singleton(match[0], match[1]);\n case 2 :\n var match_0 = arr[off];\n var match_1 = arr[off + 1 | 0];\n var match$1 = match_1;\n var match$2 = match_0;\n return {\n k: match$1[0],\n v: match$1[1],\n h: 2,\n l: singleton(match$2[0], match$2[1]),\n r: undefined\n };\n case 3 :\n var match_0$1 = arr[off];\n var match_1$1 = arr[off + 1 | 0];\n var match_2 = arr[off + 2 | 0];\n var match$3 = match_2;\n var match$4 = match_1$1;\n var match$5 = match_0$1;\n return {\n k: match$4[0],\n v: match$4[1],\n h: 2,\n l: singleton(match$5[0], match$5[1]),\n r: singleton(match$3[0], match$3[1])\n };\n default:\n var nl = len / 2 | 0;\n var left = fromSortedArrayAux(arr, off, nl);\n var match$6 = arr[off + nl | 0];\n var right = fromSortedArrayAux(arr, (off + nl | 0) + 1 | 0, (len - nl | 0) - 1 | 0);\n return create(left, match$6[0], match$6[1], right);\n }\n}\n\nfunction fromSortedArrayUnsafe(arr) {\n return fromSortedArrayAux(arr, 0, arr.length);\n}\n\nfunction cmpU(s1, s2, kcmp, vcmp) {\n var len1 = size(s1);\n var len2 = size(s2);\n if (len1 === len2) {\n var _e1 = stackAllLeft(s1, /* [] */0);\n var _e2 = stackAllLeft(s2, /* [] */0);\n while(true) {\n var e2 = _e2;\n var e1 = _e1;\n if (!e1) {\n return 0;\n }\n if (!e2) {\n return 0;\n }\n var h2 = e2.hd;\n var h1 = e1.hd;\n var c = kcmp(h1.k, h2.k);\n if (c !== 0) {\n return c;\n }\n var cx = vcmp(h1.v, h2.v);\n if (cx !== 0) {\n return cx;\n }\n _e2 = stackAllLeft(h2.r, e2.tl);\n _e1 = stackAllLeft(h1.r, e1.tl);\n continue ;\n };\n } else if (len1 < len2) {\n return -1;\n } else {\n return 1;\n }\n}\n\nfunction cmp(s1, s2, kcmp, vcmp) {\n return cmpU(s1, s2, kcmp, Curry.__2(vcmp));\n}\n\nfunction eqU(s1, s2, kcmp, veq) {\n var len1 = size(s1);\n var len2 = size(s2);\n if (len1 === len2) {\n var _e1 = stackAllLeft(s1, /* [] */0);\n var _e2 = stackAllLeft(s2, /* [] */0);\n while(true) {\n var e2 = _e2;\n var e1 = _e1;\n if (!e1) {\n return true;\n }\n if (!e2) {\n return true;\n }\n var h2 = e2.hd;\n var h1 = e1.hd;\n if (!(kcmp(h1.k, h2.k) === 0 && veq(h1.v, h2.v))) {\n return false;\n }\n _e2 = stackAllLeft(h2.r, e2.tl);\n _e1 = stackAllLeft(h1.r, e1.tl);\n continue ;\n };\n } else {\n return false;\n }\n}\n\nfunction eq(s1, s2, kcmp, veq) {\n return eqU(s1, s2, kcmp, Curry.__2(veq));\n}\n\nfunction get(_n, x, cmp) {\n while(true) {\n var n = _n;\n if (n === undefined) {\n return ;\n }\n var v = n.k;\n var c = cmp(x, v);\n if (c === 0) {\n return Caml_option.some(n.v);\n }\n _n = c < 0 ? n.l : n.r;\n continue ;\n };\n}\n\nfunction getUndefined(_n, x, cmp) {\n while(true) {\n var n = _n;\n if (n === undefined) {\n return ;\n }\n var v = n.k;\n var c = cmp(x, v);\n if (c === 0) {\n return n.v;\n }\n _n = c < 0 ? n.l : n.r;\n continue ;\n };\n}\n\nfunction getExn(_n, x, cmp) {\n while(true) {\n var n = _n;\n if (n !== undefined) {\n var v = n.k;\n var c = cmp(x, v);\n if (c === 0) {\n return n.v;\n }\n _n = c < 0 ? n.l : n.r;\n continue ;\n }\n throw {\n RE_EXN_ID: \"Not_found\",\n Error: new Error()\n };\n };\n}\n\nfunction getWithDefault(_n, x, def, cmp) {\n while(true) {\n var n = _n;\n if (n === undefined) {\n return def;\n }\n var v = n.k;\n var c = cmp(x, v);\n if (c === 0) {\n return n.v;\n }\n _n = c < 0 ? n.l : n.r;\n continue ;\n };\n}\n\nfunction has(_n, x, cmp) {\n while(true) {\n var n = _n;\n if (n === undefined) {\n return false;\n }\n var v = n.k;\n var c = cmp(x, v);\n if (c === 0) {\n return true;\n }\n _n = c < 0 ? n.l : n.r;\n continue ;\n };\n}\n\nfunction rotateWithLeftChild(k2) {\n var k1 = k2.l;\n k2.l = k1.r;\n k1.r = k2;\n var hlk2 = treeHeight(k2.l);\n var hrk2 = treeHeight(k2.r);\n k2.h = (\n hlk2 > hrk2 ? hlk2 : hrk2\n ) + 1 | 0;\n var hlk1 = treeHeight(k1.l);\n var hk2 = k2.h;\n k1.h = (\n hlk1 > hk2 ? hlk1 : hk2\n ) + 1 | 0;\n return k1;\n}\n\nfunction rotateWithRightChild(k1) {\n var k2 = k1.r;\n k1.r = k2.l;\n k2.l = k1;\n var hlk1 = treeHeight(k1.l);\n var hrk1 = treeHeight(k1.r);\n k1.h = (\n hlk1 > hrk1 ? hlk1 : hrk1\n ) + 1 | 0;\n var hrk2 = treeHeight(k2.r);\n var hk1 = k1.h;\n k2.h = (\n hrk2 > hk1 ? hrk2 : hk1\n ) + 1 | 0;\n return k2;\n}\n\nfunction doubleWithLeftChild(k3) {\n var x = k3.l;\n var v = rotateWithRightChild(x);\n k3.l = v;\n return rotateWithLeftChild(k3);\n}\n\nfunction doubleWithRightChild(k2) {\n var x = k2.r;\n var v = rotateWithLeftChild(x);\n k2.r = v;\n return rotateWithRightChild(k2);\n}\n\nfunction heightUpdateMutate(t) {\n var hlt = treeHeight(t.l);\n var hrt = treeHeight(t.r);\n t.h = (\n hlt > hrt ? hlt : hrt\n ) + 1 | 0;\n return t;\n}\n\nfunction balMutate(nt) {\n var l = nt.l;\n var r = nt.r;\n var hl = treeHeight(l);\n var hr = treeHeight(r);\n if (hl > (2 + hr | 0)) {\n var ll = l.l;\n var lr = l.r;\n if (heightGe(ll, lr)) {\n return heightUpdateMutate(rotateWithLeftChild(nt));\n } else {\n return heightUpdateMutate(doubleWithLeftChild(nt));\n }\n }\n if (hr > (2 + hl | 0)) {\n var rl = r.l;\n var rr = r.r;\n if (heightGe(rr, rl)) {\n return heightUpdateMutate(rotateWithRightChild(nt));\n } else {\n return heightUpdateMutate(doubleWithRightChild(nt));\n }\n }\n nt.h = (\n hl > hr ? hl : hr\n ) + 1 | 0;\n return nt;\n}\n\nfunction updateMutate(t, x, data, cmp) {\n if (t === undefined) {\n return singleton(x, data);\n }\n var k = t.k;\n var c = cmp(x, k);\n if (c === 0) {\n t.v = data;\n return t;\n }\n var l = t.l;\n var r = t.r;\n if (c < 0) {\n var ll = updateMutate(l, x, data, cmp);\n t.l = ll;\n } else {\n t.r = updateMutate(r, x, data, cmp);\n }\n return balMutate(t);\n}\n\nfunction fromArray(xs, cmp) {\n var len = xs.length;\n if (len === 0) {\n return ;\n }\n var next = Belt_SortArray.strictlySortedLengthU(xs, (function (param, param$1) {\n return cmp(param[0], param$1[0]) < 0;\n }));\n var result;\n if (next >= 0) {\n result = fromSortedArrayAux(xs, 0, next);\n } else {\n next = -next | 0;\n result = fromSortedArrayRevAux(xs, next - 1 | 0, next);\n }\n for(var i = next; i < len; ++i){\n var match = xs[i];\n result = updateMutate(result, match[0], match[1], cmp);\n }\n return result;\n}\n\nfunction removeMinAuxWithRootMutate(nt, n) {\n var rn = n.r;\n var ln = n.l;\n if (ln !== undefined) {\n n.l = removeMinAuxWithRootMutate(nt, ln);\n return balMutate(n);\n } else {\n nt.k = n.k;\n nt.v = n.v;\n return rn;\n }\n}\n\nexport {\n copy ,\n create ,\n bal ,\n singleton ,\n updateValue ,\n minKey ,\n minKeyUndefined ,\n maxKey ,\n maxKeyUndefined ,\n minimum ,\n minUndefined ,\n maximum ,\n maxUndefined ,\n removeMinAuxWithRef ,\n isEmpty ,\n stackAllLeft ,\n findFirstByU ,\n findFirstBy ,\n forEachU ,\n forEach ,\n mapU ,\n map ,\n mapWithKeyU ,\n mapWithKey ,\n reduceU ,\n reduce ,\n everyU ,\n every ,\n someU ,\n some ,\n join ,\n concat ,\n concatOrJoin ,\n keepSharedU ,\n keepShared ,\n keepMapU ,\n keepMap ,\n partitionSharedU ,\n partitionShared ,\n lengthNode ,\n size ,\n toList ,\n checkInvariantInternal ,\n fillArray ,\n toArray ,\n keysToArray ,\n valuesToArray ,\n fromSortedArrayAux ,\n fromSortedArrayRevAux ,\n fromSortedArrayUnsafe ,\n cmpU ,\n cmp ,\n eqU ,\n eq ,\n get ,\n getUndefined ,\n getWithDefault ,\n getExn ,\n has ,\n fromArray ,\n updateMutate ,\n balMutate ,\n removeMinAuxWithRootMutate ,\n}\n/* No side effect */\n","\n\nimport * as Caml from \"./caml.js\";\nimport * as Curry from \"./curry.js\";\nimport * as Caml_option from \"./caml_option.js\";\nimport * as Belt_SortArray from \"./belt_SortArray.js\";\nimport * as Belt_internalAVLtree from \"./belt_internalAVLtree.js\";\n\nfunction add(t, x, data) {\n if (t === undefined) {\n return Belt_internalAVLtree.singleton(x, data);\n }\n var k = t.k;\n if (x === k) {\n return Belt_internalAVLtree.updateValue(t, data);\n }\n var v = t.v;\n if (x < k) {\n return Belt_internalAVLtree.bal(add(t.l, x, data), k, v, t.r);\n } else {\n return Belt_internalAVLtree.bal(t.l, k, v, add(t.r, x, data));\n }\n}\n\nfunction get(_n, x) {\n while(true) {\n var n = _n;\n if (n === undefined) {\n return ;\n }\n var v = n.k;\n if (x === v) {\n return Caml_option.some(n.v);\n }\n _n = x < v ? n.l : n.r;\n continue ;\n };\n}\n\nfunction getUndefined(_n, x) {\n while(true) {\n var n = _n;\n if (n === undefined) {\n return ;\n }\n var v = n.k;\n if (x === v) {\n return n.v;\n }\n _n = x < v ? n.l : n.r;\n continue ;\n };\n}\n\nfunction getExn(_n, x) {\n while(true) {\n var n = _n;\n if (n !== undefined) {\n var v = n.k;\n if (x === v) {\n return n.v;\n }\n _n = x < v ? n.l : n.r;\n continue ;\n }\n throw {\n RE_EXN_ID: \"Not_found\",\n Error: new Error()\n };\n };\n}\n\nfunction getWithDefault(_n, x, def) {\n while(true) {\n var n = _n;\n if (n === undefined) {\n return def;\n }\n var v = n.k;\n if (x === v) {\n return n.v;\n }\n _n = x < v ? n.l : n.r;\n continue ;\n };\n}\n\nfunction has(_n, x) {\n while(true) {\n var n = _n;\n if (n === undefined) {\n return false;\n }\n var v = n.k;\n if (x === v) {\n return true;\n }\n _n = x < v ? n.l : n.r;\n continue ;\n };\n}\n\nfunction remove(n, x) {\n if (n === undefined) {\n return n;\n }\n var v = n.k;\n var l = n.l;\n var r = n.r;\n if (x !== v) {\n if (x < v) {\n return Belt_internalAVLtree.bal(remove(l, x), v, n.v, r);\n } else {\n return Belt_internalAVLtree.bal(l, v, n.v, remove(r, x));\n }\n }\n if (l === undefined) {\n return r;\n }\n if (r === undefined) {\n return l;\n }\n var kr = {\n contents: r.k\n };\n var vr = {\n contents: r.v\n };\n var r$1 = Belt_internalAVLtree.removeMinAuxWithRef(r, kr, vr);\n return Belt_internalAVLtree.bal(l, kr.contents, vr.contents, r$1);\n}\n\nfunction splitAux(x, n) {\n var v = n.k;\n var d = n.v;\n var l = n.l;\n var r = n.r;\n if (x === v) {\n return [\n l,\n Caml_option.some(d),\n r\n ];\n }\n if (x < v) {\n if (l === undefined) {\n return [\n undefined,\n undefined,\n n\n ];\n }\n var match = splitAux(x, l);\n return [\n match[0],\n match[1],\n Belt_internalAVLtree.join(match[2], v, d, r)\n ];\n }\n if (r === undefined) {\n return [\n n,\n undefined,\n undefined\n ];\n }\n var match$1 = splitAux(x, r);\n return [\n Belt_internalAVLtree.join(l, v, d, match$1[0]),\n match$1[1],\n match$1[2]\n ];\n}\n\nfunction split(x, n) {\n if (n !== undefined) {\n return splitAux(x, n);\n } else {\n return [\n undefined,\n undefined,\n undefined\n ];\n }\n}\n\nfunction mergeU(s1, s2, f) {\n if (s1 !== undefined) {\n if (s1.h >= (\n s2 !== undefined ? s2.h : 0\n )) {\n var v1 = s1.k;\n var d1 = s1.v;\n var l1 = s1.l;\n var r1 = s1.r;\n var match = split(v1, s2);\n return Belt_internalAVLtree.concatOrJoin(mergeU(l1, match[0], f), v1, f(v1, Caml_option.some(d1), match[1]), mergeU(r1, match[2], f));\n }\n \n } else if (s2 === undefined) {\n return ;\n }\n var v2 = s2.k;\n var d2 = s2.v;\n var l2 = s2.l;\n var r2 = s2.r;\n var match$1 = split(v2, s1);\n return Belt_internalAVLtree.concatOrJoin(mergeU(match$1[0], l2, f), v2, f(v2, match$1[1], Caml_option.some(d2)), mergeU(match$1[2], r2, f));\n}\n\nfunction merge(s1, s2, f) {\n return mergeU(s1, s2, Curry.__3(f));\n}\n\nfunction compareAux(_e1, _e2, vcmp) {\n while(true) {\n var e2 = _e2;\n var e1 = _e1;\n if (!e1) {\n return 0;\n }\n if (!e2) {\n return 0;\n }\n var h2 = e2.hd;\n var h1 = e1.hd;\n var c = Caml.string_compare(h1.k, h2.k);\n if (c !== 0) {\n return c;\n }\n var cx = vcmp(h1.v, h2.v);\n if (cx !== 0) {\n return cx;\n }\n _e2 = Belt_internalAVLtree.stackAllLeft(h2.r, e2.tl);\n _e1 = Belt_internalAVLtree.stackAllLeft(h1.r, e1.tl);\n continue ;\n };\n}\n\nfunction cmpU(s1, s2, cmp) {\n var len1 = Belt_internalAVLtree.size(s1);\n var len2 = Belt_internalAVLtree.size(s2);\n if (len1 === len2) {\n return compareAux(Belt_internalAVLtree.stackAllLeft(s1, /* [] */0), Belt_internalAVLtree.stackAllLeft(s2, /* [] */0), cmp);\n } else if (len1 < len2) {\n return -1;\n } else {\n return 1;\n }\n}\n\nfunction cmp(s1, s2, f) {\n return cmpU(s1, s2, Curry.__2(f));\n}\n\nfunction eqAux(_e1, _e2, eq) {\n while(true) {\n var e2 = _e2;\n var e1 = _e1;\n if (!e1) {\n return true;\n }\n if (!e2) {\n return true;\n }\n var h2 = e2.hd;\n var h1 = e1.hd;\n if (!(h1.k === h2.k && eq(h1.v, h2.v))) {\n return false;\n }\n _e2 = Belt_internalAVLtree.stackAllLeft(h2.r, e2.tl);\n _e1 = Belt_internalAVLtree.stackAllLeft(h1.r, e1.tl);\n continue ;\n };\n}\n\nfunction eqU(s1, s2, eq) {\n var len1 = Belt_internalAVLtree.size(s1);\n var len2 = Belt_internalAVLtree.size(s2);\n if (len1 === len2) {\n return eqAux(Belt_internalAVLtree.stackAllLeft(s1, /* [] */0), Belt_internalAVLtree.stackAllLeft(s2, /* [] */0), eq);\n } else {\n return false;\n }\n}\n\nfunction eq(s1, s2, f) {\n return eqU(s1, s2, Curry.__2(f));\n}\n\nfunction addMutate(t, x, data) {\n if (t === undefined) {\n return Belt_internalAVLtree.singleton(x, data);\n }\n var k = t.k;\n if (x === k) {\n t.k = x;\n t.v = data;\n return t;\n }\n var l = t.l;\n var r = t.r;\n if (x < k) {\n var ll = addMutate(l, x, data);\n t.l = ll;\n } else {\n t.r = addMutate(r, x, data);\n }\n return Belt_internalAVLtree.balMutate(t);\n}\n\nfunction fromArray(xs) {\n var len = xs.length;\n if (len === 0) {\n return ;\n }\n var next = Belt_SortArray.strictlySortedLengthU(xs, (function (param, param$1) {\n return param[0] < param$1[0];\n }));\n var result;\n if (next >= 0) {\n result = Belt_internalAVLtree.fromSortedArrayAux(xs, 0, next);\n } else {\n next = -next | 0;\n result = Belt_internalAVLtree.fromSortedArrayRevAux(xs, next - 1 | 0, next);\n }\n for(var i = next; i < len; ++i){\n var match = xs[i];\n result = addMutate(result, match[0], match[1]);\n }\n return result;\n}\n\nvar N;\n\nvar A;\n\nvar S;\n\nexport {\n N ,\n A ,\n S ,\n add ,\n get ,\n getUndefined ,\n getExn ,\n getWithDefault ,\n has ,\n remove ,\n splitAux ,\n split ,\n mergeU ,\n merge ,\n compareAux ,\n cmpU ,\n cmp ,\n eqAux ,\n eqU ,\n eq ,\n addMutate ,\n fromArray ,\n}\n/* No side effect */\n","\n\nimport * as Curry from \"./curry.js\";\nimport * as Caml_option from \"./caml_option.js\";\nimport * as Belt_internalAVLtree from \"./belt_internalAVLtree.js\";\nimport * as Belt_internalMapString from \"./belt_internalMapString.js\";\n\nfunction set(t, newK, newD) {\n if (t === undefined) {\n return Belt_internalAVLtree.singleton(newK, newD);\n }\n var k = t.k;\n if (newK === k) {\n return Belt_internalAVLtree.updateValue(t, newD);\n }\n var v = t.v;\n if (newK < k) {\n return Belt_internalAVLtree.bal(set(t.l, newK, newD), k, v, t.r);\n } else {\n return Belt_internalAVLtree.bal(t.l, k, v, set(t.r, newK, newD));\n }\n}\n\nfunction updateU(t, x, f) {\n if (t !== undefined) {\n var k = t.k;\n if (x === k) {\n var data = f(Caml_option.some(t.v));\n if (data !== undefined) {\n return Belt_internalAVLtree.updateValue(t, Caml_option.valFromOption(data));\n }\n var l = t.l;\n var r = t.r;\n if (l === undefined) {\n return r;\n }\n if (r === undefined) {\n return l;\n }\n var kr = {\n contents: r.k\n };\n var vr = {\n contents: r.v\n };\n var r$1 = Belt_internalAVLtree.removeMinAuxWithRef(r, kr, vr);\n return Belt_internalAVLtree.bal(l, kr.contents, vr.contents, r$1);\n }\n var v = t.v;\n var l$1 = t.l;\n var r$2 = t.r;\n if (x < k) {\n var ll = updateU(l$1, x, f);\n if (l$1 === ll) {\n return t;\n } else {\n return Belt_internalAVLtree.bal(ll, k, v, r$2);\n }\n }\n var rr = updateU(r$2, x, f);\n if (r$2 === rr) {\n return t;\n } else {\n return Belt_internalAVLtree.bal(l$1, k, v, rr);\n }\n }\n var data$1 = f(undefined);\n if (data$1 !== undefined) {\n return Belt_internalAVLtree.singleton(x, Caml_option.valFromOption(data$1));\n } else {\n return t;\n }\n}\n\nfunction update(t, x, f) {\n return updateU(t, x, Curry.__1(f));\n}\n\nfunction removeAux(n, x) {\n var v = n.k;\n var l = n.l;\n var r = n.r;\n if (x === v) {\n if (l === undefined) {\n return r;\n }\n if (r === undefined) {\n return l;\n }\n var kr = {\n contents: r.k\n };\n var vr = {\n contents: r.v\n };\n var r$1 = Belt_internalAVLtree.removeMinAuxWithRef(r, kr, vr);\n return Belt_internalAVLtree.bal(l, kr.contents, vr.contents, r$1);\n }\n if (x < v) {\n if (l === undefined) {\n return n;\n }\n var ll = removeAux(l, x);\n if (ll === l) {\n return n;\n } else {\n return Belt_internalAVLtree.bal(ll, v, n.v, r);\n }\n }\n if (r === undefined) {\n return n;\n }\n var rr = removeAux(r, x);\n return Belt_internalAVLtree.bal(l, v, n.v, rr);\n}\n\nfunction remove(n, x) {\n if (n !== undefined) {\n return removeAux(n, x);\n }\n \n}\n\nfunction removeMany(t, keys) {\n var len = keys.length;\n if (t !== undefined) {\n var _t = t;\n var _i = 0;\n while(true) {\n var i = _i;\n var t$1 = _t;\n if (i >= len) {\n return t$1;\n }\n var ele = keys[i];\n var u = removeAux(t$1, ele);\n if (u === undefined) {\n return u;\n }\n _i = i + 1 | 0;\n _t = u;\n continue ;\n };\n }\n \n}\n\nfunction mergeMany(h, arr) {\n var len = arr.length;\n var v = h;\n for(var i = 0; i < len; ++i){\n var match = arr[i];\n v = set(v, match[0], match[1]);\n }\n return v;\n}\n\nvar empty;\n\nvar isEmpty = Belt_internalAVLtree.isEmpty;\n\nvar has = Belt_internalMapString.has;\n\nvar cmpU = Belt_internalMapString.cmpU;\n\nvar cmp = Belt_internalMapString.cmp;\n\nvar eqU = Belt_internalMapString.eqU;\n\nvar eq = Belt_internalMapString.eq;\n\nvar findFirstByU = Belt_internalAVLtree.findFirstByU;\n\nvar findFirstBy = Belt_internalAVLtree.findFirstBy;\n\nvar forEachU = Belt_internalAVLtree.forEachU;\n\nvar forEach = Belt_internalAVLtree.forEach;\n\nvar reduceU = Belt_internalAVLtree.reduceU;\n\nvar reduce = Belt_internalAVLtree.reduce;\n\nvar everyU = Belt_internalAVLtree.everyU;\n\nvar every = Belt_internalAVLtree.every;\n\nvar someU = Belt_internalAVLtree.someU;\n\nvar some = Belt_internalAVLtree.some;\n\nvar size = Belt_internalAVLtree.size;\n\nvar toList = Belt_internalAVLtree.toList;\n\nvar toArray = Belt_internalAVLtree.toArray;\n\nvar fromArray = Belt_internalMapString.fromArray;\n\nvar keysToArray = Belt_internalAVLtree.keysToArray;\n\nvar valuesToArray = Belt_internalAVLtree.valuesToArray;\n\nvar minKey = Belt_internalAVLtree.minKey;\n\nvar minKeyUndefined = Belt_internalAVLtree.minKeyUndefined;\n\nvar maxKey = Belt_internalAVLtree.maxKey;\n\nvar maxKeyUndefined = Belt_internalAVLtree.maxKeyUndefined;\n\nvar minimum = Belt_internalAVLtree.minimum;\n\nvar minUndefined = Belt_internalAVLtree.minUndefined;\n\nvar maximum = Belt_internalAVLtree.maximum;\n\nvar maxUndefined = Belt_internalAVLtree.maxUndefined;\n\nvar get = Belt_internalMapString.get;\n\nvar getUndefined = Belt_internalMapString.getUndefined;\n\nvar getWithDefault = Belt_internalMapString.getWithDefault;\n\nvar getExn = Belt_internalMapString.getExn;\n\nvar checkInvariantInternal = Belt_internalAVLtree.checkInvariantInternal;\n\nvar mergeU = Belt_internalMapString.mergeU;\n\nvar merge = Belt_internalMapString.merge;\n\nvar keepU = Belt_internalAVLtree.keepSharedU;\n\nvar keep = Belt_internalAVLtree.keepShared;\n\nvar partitionU = Belt_internalAVLtree.partitionSharedU;\n\nvar partition = Belt_internalAVLtree.partitionShared;\n\nvar split = Belt_internalMapString.split;\n\nvar mapU = Belt_internalAVLtree.mapU;\n\nvar map = Belt_internalAVLtree.map;\n\nvar mapWithKeyU = Belt_internalAVLtree.mapWithKeyU;\n\nvar mapWithKey = Belt_internalAVLtree.mapWithKey;\n\nexport {\n empty ,\n isEmpty ,\n has ,\n cmpU ,\n cmp ,\n eqU ,\n eq ,\n findFirstByU ,\n findFirstBy ,\n forEachU ,\n forEach ,\n reduceU ,\n reduce ,\n everyU ,\n every ,\n someU ,\n some ,\n size ,\n toList ,\n toArray ,\n fromArray ,\n keysToArray ,\n valuesToArray ,\n minKey ,\n minKeyUndefined ,\n maxKey ,\n maxKeyUndefined ,\n minimum ,\n minUndefined ,\n maximum ,\n maxUndefined ,\n get ,\n getUndefined ,\n getWithDefault ,\n getExn ,\n checkInvariantInternal ,\n remove ,\n removeMany ,\n set ,\n updateU ,\n update ,\n mergeU ,\n merge ,\n mergeMany ,\n keepU ,\n keep ,\n partitionU ,\n partition ,\n split ,\n mapU ,\n map ,\n mapWithKeyU ,\n mapWithKey ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as Curry from \"../../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as CoursesCurriculum__CurrentUser from \"../types/CoursesCurriculum__CurrentUser.bs.js\";\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.CoursesCurriculum__ReactionButton\";\n\nfunction tr(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nfunction CoursesCurriculum__ReactionButton(Props) {\n var currentUser = Props.currentUser;\n var reactionValue = Props.reactionValue;\n var reactionDetails = Props.reactionDetails;\n var addReactionCB = Props.addReactionCB;\n var removeReactionCB = Props.removeReactionCB;\n var match = React.useState(function () {\n return false;\n });\n var setIsHovered = match[1];\n var currentUserReacted = reactionDetails.userIds.includes(CoursesCurriculum__CurrentUser.id(currentUser));\n var onMouseEnter = function ($$event) {\n $$event.preventDefault();\n Curry._1(setIsHovered, (function (param) {\n return true;\n }));\n };\n var onMouseLeave = function ($$event) {\n $$event.preventDefault();\n Curry._1(setIsHovered, (function (param) {\n return false;\n }));\n };\n return React.createElement(\"div\", {\n className: \"flex shrink-0\",\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave\n }, React.createElement(\"button\", {\n className: \"rounded-full flex items-center space-x-1 relative px-1 md:px-2 py-0.5 border focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-focusColor-500 transition \\\" \" + (\n currentUserReacted ? \"bg-primary-100 border-primary-300\" : \"bg-gray-100 border-gray-300\"\n ) + \" hover:text-primary-500 hover:border-primary-500 hover:bg-gray-100 transition\",\n onClick: currentUserReacted ? Curry._1(removeReactionCB, reactionValue) : Curry._1(addReactionCB, reactionValue)\n }, React.createElement(\"span\", {\n className: \"text-xs\"\n }, reactionValue), React.createElement(\"span\", {\n className: \"text-xs md:text-sm\"\n }, String(reactionDetails.count))), match[0] ? React.createElement(\"div\", {\n className: \"modal absolute z-10 bg-gray-950 text-gray-400 border p-2 mt-9 rounded space-y-1\"\n }, reactionDetails.userNames.map(function (userName) {\n return React.createElement(\"div\", {\n key: userName,\n className: \"text-xs whitespace-nowrap font-medium\"\n }, userName);\n })) : null);\n}\n\nvar make = CoursesCurriculum__ReactionButton;\n\nexport {\n str ,\n tr ,\n make ,\n}\n/* I18n Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as Curry from \"../../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as Belt_Array from \"../../../../../node_modules/rescript/lib/es6/belt_Array.js\";\nimport * as Js_promise from \"../../../../../node_modules/rescript/lib/es6/js_promise.js\";\nimport * as Belt_Option from \"../../../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as Caml_option from \"../../../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as EmojiPicker from \"../../../shared/components/EmojiPicker.bs.js\";\nimport * as Js_promise2 from \"../../../../../node_modules/rescript/lib/es6/js_promise2.js\";\nimport * as GraphqlQuery from \"../../../shared/utils/GraphqlQuery.bs.js\";\nimport * as Belt_MapString from \"../../../../../node_modules/rescript/lib/es6/belt_MapString.js\";\nimport * as CoursesCurriculum__Reaction from \"../types/CoursesCurriculum__Reaction.bs.js\";\nimport * as CoursesCurriculum__CurrentUser from \"../types/CoursesCurriculum__CurrentUser.bs.js\";\nimport * as CoursesCurriculum__ReactionButton from \"./CoursesCurriculum__ReactionButton.bs.js\";\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.CoursesCurriculum__Reactions\";\n\nfunction tr(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nvar Raw = {};\n\nvar query = \"mutation CreateReactionMutation($reactionValue: String!, $reactionableId: String!, $reactionableType: String!) {\\ncreateReaction(reactionValue: $reactionValue, reactionableId: $reactionableId, reactionableType: $reactionableType) {\\nreaction {\\nid \\nreactionValue \\nreactionableId \\nreactionableType \\nuserName \\nuserId \\n}\\n\\n}\\n\\n}\\n\";\n\nfunction parse(value) {\n var value$1 = value.createReaction;\n var value$2 = value$1.reaction;\n var value$3 = value$2.reactionableId;\n return {\n createReaction: {\n reaction: {\n id: value$2.id,\n reactionValue: value$2.reactionValue,\n reactionableId: !(value$3 == null) ? value$3 : undefined,\n reactionableType: value$2.reactionableType,\n userName: value$2.userName,\n userId: value$2.userId\n }\n }\n };\n}\n\nfunction serialize(value) {\n var value$1 = value.createReaction;\n var value$2 = value$1.reaction;\n var value$3 = value$2.userId;\n var value$4 = value$2.userName;\n var value$5 = value$2.reactionableType;\n var value$6 = value$2.reactionableId;\n var reactionableId = value$6 !== undefined ? value$6 : null;\n var value$7 = value$2.reactionValue;\n var value$8 = value$2.id;\n var reaction = {\n id: value$8,\n reactionValue: value$7,\n reactionableId: reactionableId,\n reactionableType: value$5,\n userName: value$4,\n userId: value$3\n };\n var createReaction = {\n reaction: reaction\n };\n return {\n createReaction: createReaction\n };\n}\n\nfunction serializeVariables(inp) {\n return {\n reactionValue: inp.reactionValue,\n reactionableId: inp.reactionableId,\n reactionableType: inp.reactionableType\n };\n}\n\nfunction makeVariables(reactionValue, reactionableId, reactionableType, param) {\n return {\n reactionValue: reactionValue,\n reactionableId: reactionableId,\n reactionableType: reactionableType\n };\n}\n\nvar CreateReactionMutation_inner = {\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables\n};\n\nvar include = GraphqlQuery.Extender({\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar make = include.make;\n\nvar CreateReactionMutation_Graphql_error = include.Graphql_error;\n\nvar CreateReactionMutation_decodeNotification = include.decodeNotification;\n\nvar CreateReactionMutation_decodeObject = include.decodeObject;\n\nvar CreateReactionMutation_decodeNotifications = include.decodeNotifications;\n\nvar CreateReactionMutation_decodeErrors = include.decodeErrors;\n\nvar CreateReactionMutation_flashNotifications = include.flashNotifications;\n\nvar CreateReactionMutation_sendQuery = include.sendQuery;\n\nvar CreateReactionMutation_query = include.query;\n\nvar CreateReactionMutation_fetch = include.$$fetch;\n\nvar CreateReactionMutation = {\n CreateReactionMutation_inner: CreateReactionMutation_inner,\n Raw: Raw,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables,\n Graphql_error: CreateReactionMutation_Graphql_error,\n decodeNotification: CreateReactionMutation_decodeNotification,\n decodeObject: CreateReactionMutation_decodeObject,\n decodeNotifications: CreateReactionMutation_decodeNotifications,\n decodeErrors: CreateReactionMutation_decodeErrors,\n flashNotifications: CreateReactionMutation_flashNotifications,\n sendQuery: CreateReactionMutation_sendQuery,\n query: CreateReactionMutation_query,\n $$fetch: CreateReactionMutation_fetch,\n make: make\n};\n\nvar Raw$1 = {};\n\nvar query$1 = \"mutation RemoveReactionMutation($reactionId: String!) {\\nremoveReaction(reactionId: $reactionId) {\\nsuccess \\n}\\n\\n}\\n\";\n\nfunction parse$1(value) {\n var value$1 = value.removeReaction;\n return {\n removeReaction: {\n success: value$1.success\n }\n };\n}\n\nfunction serialize$1(value) {\n var value$1 = value.removeReaction;\n var value$2 = value$1.success;\n var removeReaction = {\n success: value$2\n };\n return {\n removeReaction: removeReaction\n };\n}\n\nfunction serializeVariables$1(inp) {\n return {\n reactionId: inp.reactionId\n };\n}\n\nfunction makeVariables$1(reactionId, param) {\n return {\n reactionId: reactionId\n };\n}\n\nvar RemoveReactionMutation_inner = {\n Raw: Raw$1,\n query: query$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n makeVariables: makeVariables$1\n};\n\nvar include$1 = GraphqlQuery.Extender({\n Raw: Raw$1,\n query: query$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar $$fetch = include$1.$$fetch;\n\nvar RemoveReactionMutation_Graphql_error = include$1.Graphql_error;\n\nvar RemoveReactionMutation_decodeNotification = include$1.decodeNotification;\n\nvar RemoveReactionMutation_decodeObject = include$1.decodeObject;\n\nvar RemoveReactionMutation_decodeNotifications = include$1.decodeNotifications;\n\nvar RemoveReactionMutation_decodeErrors = include$1.decodeErrors;\n\nvar RemoveReactionMutation_flashNotifications = include$1.flashNotifications;\n\nvar RemoveReactionMutation_sendQuery = include$1.sendQuery;\n\nvar RemoveReactionMutation_query = include$1.query;\n\nvar RemoveReactionMutation_make = include$1.make;\n\nvar RemoveReactionMutation = {\n RemoveReactionMutation_inner: RemoveReactionMutation_inner,\n Raw: Raw$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n makeVariables: makeVariables$1,\n Graphql_error: RemoveReactionMutation_Graphql_error,\n decodeNotification: RemoveReactionMutation_decodeNotification,\n decodeObject: RemoveReactionMutation_decodeObject,\n decodeNotifications: RemoveReactionMutation_decodeNotifications,\n decodeErrors: RemoveReactionMutation_decodeErrors,\n flashNotifications: RemoveReactionMutation_flashNotifications,\n sendQuery: RemoveReactionMutation_sendQuery,\n query: RemoveReactionMutation_query,\n $$fetch: $$fetch,\n make: RemoveReactionMutation_make\n};\n\nfunction groupByReaction(reactions) {\n return Belt_Array.reduce(reactions, undefined, (function (accumulator, currentItem) {\n var reactionValue = CoursesCurriculum__Reaction.reactionValue(currentItem);\n var userName = CoursesCurriculum__Reaction.userName(currentItem);\n var userId = CoursesCurriculum__Reaction.userId(currentItem);\n var reactionDetails = Belt_MapString.get(accumulator, reactionValue);\n if (reactionDetails === undefined) {\n return Belt_MapString.set(accumulator, reactionValue, {\n userNames: [userName],\n userIds: [userId],\n count: 1\n });\n }\n var reactionDetails$1 = Caml_option.valFromOption(reactionDetails);\n var newCount = reactionDetails$1.count + 1 | 0;\n return Belt_MapString.set(accumulator, reactionValue, {\n userNames: [userName].concat(reactionDetails$1.userNames),\n userIds: [userId].concat(reactionDetails$1.userIds),\n count: newCount\n });\n }));\n}\n\nfunction CoursesCurriculum__Reactions(Props) {\n var currentUser = Props.currentUser;\n var reactionableType = Props.reactionableType;\n var reactionableId = Props.reactionableId;\n var reactions = Props.reactions;\n var match = React.useState(function () {\n return reactions;\n });\n var setReactions = match[1];\n var reactions$1 = match[0];\n var handleCreateReaction = function (reactionValue) {\n Js_promise.then_((function (response) {\n var reaction = response.createReaction.reaction;\n if (reaction !== undefined) {\n var existingReaction = reactions$1.find(function (existingReaction) {\n return CoursesCurriculum__Reaction.id(existingReaction) === CoursesCurriculum__Reaction.id(reaction);\n });\n if (Belt_Option.isNone(existingReaction === undefined ? undefined : Caml_option.some(existingReaction))) {\n Curry._1(setReactions, (function (reactions) {\n return [reaction].concat(reactions);\n }));\n }\n \n }\n return Promise.resolve(undefined);\n }), Curry._3(make, undefined, undefined, {\n reactionValue: reactionValue,\n reactionableId: reactionableId,\n reactionableType: reactionableType\n }));\n };\n var removeReactionCB = function (reactionValue, $$event) {\n $$event.preventDefault();\n var reactionId = Belt_Array.reduce(reactions$1, undefined, (function (acc, reaction) {\n if (acc !== undefined) {\n return acc;\n } else if (CoursesCurriculum__Reaction.reactionValue(reaction) === reactionValue && CoursesCurriculum__Reaction.userId(reaction) === CoursesCurriculum__CurrentUser.id(currentUser)) {\n return CoursesCurriculum__Reaction.id(reaction);\n } else {\n return ;\n }\n }));\n if (reactionId !== undefined) {\n Js_promise2.then(Curry._3($$fetch, undefined, undefined, {\n reactionId: reactionId\n }), (function (response) {\n if (response.removeReaction.success) {\n Curry._1(setReactions, (function (reactions) {\n return reactions.filter(function (reaction) {\n return CoursesCurriculum__Reaction.id(reaction) !== reactionId;\n });\n }));\n }\n return Promise.resolve(undefined);\n }));\n return ;\n }\n \n };\n var addReactionCB = function (reactionValue, $$event) {\n $$event.preventDefault();\n handleCreateReaction(reactionValue);\n };\n var handleAddNewEmoji = function (e) {\n handleCreateReaction(e.native);\n };\n var aggregatedReactions = groupByReaction(reactions$1);\n return React.createElement(\"div\", {\n className: \"flex md:flex-row flex-wrap gap-1.5\"\n }, Belt_Array.map(Belt_MapString.toArray(aggregatedReactions), (function (param) {\n var reactionValue = param[0];\n return React.createElement(CoursesCurriculum__ReactionButton.make, {\n currentUser: currentUser,\n reactionValue: reactionValue,\n reactionDetails: param[1],\n addReactionCB: addReactionCB,\n removeReactionCB: removeReactionCB,\n key: reactionValue\n });\n })), React.createElement(EmojiPicker.make, {\n className: \"relative z-[9] px-1 md:px-2 py-0.5 md:pt-1 md:pb-0.5 flex items-center justify-center bg-white border border-gray-300 rounded-full text-gray-600 hover:text-primary-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-focusColor-500 transition text-base md:text-lg\",\n title: tr(undefined, undefined, \"emoji_picker\"),\n onChange: handleAddNewEmoji\n }));\n}\n\nvar make$1 = CoursesCurriculum__Reactions;\n\nexport {\n str ,\n tr ,\n CreateReactionMutation ,\n RemoveReactionMutation ,\n groupByReaction ,\n make$1 as make,\n}\n/* include Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as Icon from \"../../../shared/Icon.bs.js\";\nimport * as Curry from \"../../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as Belt_Array from \"../../../../../node_modules/rescript/lib/es6/belt_Array.js\";\nimport * as Js_promise from \"../../../../../node_modules/rescript/lib/es6/js_promise.js\";\nimport * as Caml_option from \"../../../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as GraphqlQuery from \"../../../shared/utils/GraphqlQuery.bs.js\";\nimport * as CoursesCurriculum__CurrentUser from \"../types/CoursesCurriculum__CurrentUser.bs.js\";\nimport * as CoursesCurriculum__ModerationReport from \"../types/CoursesCurriculum__ModerationReport.bs.js\";\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.CoursesCurriculum__ModerationReportButton\";\n\nfunction tr(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nvar Raw = {};\n\nvar query = \"mutation CreateModerationReportMutation($reason: String!, $reportableId: String!, $reportableType: String!) {\\ncreateModerationReport(reason: $reason, reportableId: $reportableId, reportableType: $reportableType) {\\nmoderationReport {\\nid \\nreason \\nreportableId \\nreportableType \\nuserId \\n}\\n\\n}\\n\\n}\\n\";\n\nfunction parse(value) {\n var value$1 = value.createModerationReport;\n var value$2 = value$1.moderationReport;\n var value$3 = value$2.reportableId;\n return {\n createModerationReport: {\n moderationReport: {\n id: value$2.id,\n reason: value$2.reason,\n reportableId: !(value$3 == null) ? value$3 : undefined,\n reportableType: value$2.reportableType,\n userId: value$2.userId\n }\n }\n };\n}\n\nfunction serialize(value) {\n var value$1 = value.createModerationReport;\n var value$2 = value$1.moderationReport;\n var value$3 = value$2.userId;\n var value$4 = value$2.reportableType;\n var value$5 = value$2.reportableId;\n var reportableId = value$5 !== undefined ? value$5 : null;\n var value$6 = value$2.reason;\n var value$7 = value$2.id;\n var moderationReport = {\n id: value$7,\n reason: value$6,\n reportableId: reportableId,\n reportableType: value$4,\n userId: value$3\n };\n var createModerationReport = {\n moderationReport: moderationReport\n };\n return {\n createModerationReport: createModerationReport\n };\n}\n\nfunction serializeVariables(inp) {\n return {\n reason: inp.reason,\n reportableId: inp.reportableId,\n reportableType: inp.reportableType\n };\n}\n\nfunction makeVariables(reason, reportableId, reportableType, param) {\n return {\n reason: reason,\n reportableId: reportableId,\n reportableType: reportableType\n };\n}\n\nvar CreateModerationReportMutation_inner = {\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables\n};\n\nvar include = GraphqlQuery.Extender({\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar make = include.make;\n\nvar CreateModerationReportMutation_Graphql_error = include.Graphql_error;\n\nvar CreateModerationReportMutation_decodeNotification = include.decodeNotification;\n\nvar CreateModerationReportMutation_decodeObject = include.decodeObject;\n\nvar CreateModerationReportMutation_decodeNotifications = include.decodeNotifications;\n\nvar CreateModerationReportMutation_decodeErrors = include.decodeErrors;\n\nvar CreateModerationReportMutation_flashNotifications = include.flashNotifications;\n\nvar CreateModerationReportMutation_sendQuery = include.sendQuery;\n\nvar CreateModerationReportMutation_query = include.query;\n\nvar CreateModerationReportMutation_fetch = include.$$fetch;\n\nvar CreateModerationReportMutation = {\n CreateModerationReportMutation_inner: CreateModerationReportMutation_inner,\n Raw: Raw,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables,\n Graphql_error: CreateModerationReportMutation_Graphql_error,\n decodeNotification: CreateModerationReportMutation_decodeNotification,\n decodeObject: CreateModerationReportMutation_decodeObject,\n decodeNotifications: CreateModerationReportMutation_decodeNotifications,\n decodeErrors: CreateModerationReportMutation_decodeErrors,\n flashNotifications: CreateModerationReportMutation_flashNotifications,\n sendQuery: CreateModerationReportMutation_sendQuery,\n query: CreateModerationReportMutation_query,\n $$fetch: CreateModerationReportMutation_fetch,\n make: make\n};\n\nfunction createModerationReport(reportableType, reportableId, reason, setModerationReports, setShowReport, setReportReason, $$event) {\n $$event.preventDefault();\n Js_promise.then_((function (response) {\n var moderationReport = response.createModerationReport.moderationReport;\n if (moderationReport !== undefined) {\n var moderationReport$1 = Caml_option.valFromOption(moderationReport);\n Curry._1(setModerationReports, (function (moderationReports) {\n return [moderationReport$1].concat(moderationReports);\n }));\n Curry._1(setShowReport, (function (param) {\n return false;\n }));\n Curry._1(setReportReason, (function (param) {\n return \"\";\n }));\n }\n return Promise.resolve(undefined);\n }), Curry._3(make, undefined, undefined, {\n reason: reason,\n reportableId: reportableId,\n reportableType: reportableType\n }));\n}\n\nfunction updateReportReason(setReportReason, $$event) {\n $$event.preventDefault();\n return Curry._1(setReportReason, $$event.currentTarget.value);\n}\n\nfunction updateShowReport(setShowReport, showReport, $$event) {\n $$event.preventDefault();\n return Curry._1(setShowReport, (function (param) {\n return showReport;\n }));\n}\n\nfunction CoursesCurriculum__ModerationReportButton(Props) {\n var currentUser = Props.currentUser;\n var moderationReports = Props.moderationReports;\n var reportableId = Props.reportableId;\n var reportableType = Props.reportableType;\n var match = React.useState(function () {\n return moderationReports;\n });\n var setModerationReports = match[1];\n var match$1 = React.useState(function () {\n return false;\n });\n var setShowReport = match$1[1];\n var match$2 = React.useState(function () {\n return \"\";\n });\n var setReportReason = match$2[1];\n var reportReason = match$2[0];\n var reported = Belt_Array.reduce(match[0], false, (function (acc, report) {\n if (acc) {\n return true;\n } else {\n return CoursesCurriculum__ModerationReport.userId(report) === CoursesCurriculum__CurrentUser.id(currentUser);\n }\n }));\n return React.createElement(\"div\", {\n className: \"relative\"\n }, match$1[0] ? React.createElement(\"dialog\", {\n className: \"fixed inset-0 z-[999] grid place-items-center w-full h-full bg-gray-950/75 dark:bg-gray-50/75 backdrop-blur-sm ease-in duration-300\",\n role: \"dialog\"\n }, React.createElement(\"div\", {\n className: \"max-w-xl w-full mx-auto p-4 bg-white rounded-lg shadow-lg\"\n }, React.createElement(\"div\", {\n className: \"flex items-center justify-between\"\n }, React.createElement(\"h2\", {\n className: \"font-semibold leading-tight text-gray-900\"\n }, tr(undefined, undefined, \"report\")), React.createElement(\"button\", {\n className: \"w-6 h-6 flex items-center justify-center rounded-md text-gray-700 bg-gray-100 hover:bg-gray-200 hover:text-gray-900 focus:outline-none focus:ring-2 focus:ring-focusColor-500 focus:ring-offset-2 transition\",\n onClick: (function (param) {\n return updateShowReport(setShowReport, false, param);\n })\n }, React.createElement(Icon.make, {\n className: \"if i-times-light text-xl if-fw\"\n }), React.createElement(\"span\", {\n className: \"sr-only\"\n }, tr(undefined, undefined, \"close\")))), React.createElement(\"textarea\", {\n className: \"w-full text-sm text-gray-900 p-2 border rounded-md mt-4\",\n id: \"report_reason-\" + reportableId,\n autoFocus: true,\n placeholder: tr(undefined, undefined, \"share_reason\"),\n type: \"text\",\n value: reportReason,\n onChange: (function (param) {\n return updateReportReason(setReportReason, param);\n })\n }), React.createElement(\"div\", {\n className: \"mt-3 sm:mt-4 sm:flex\"\n }, React.createElement(\"button\", {\n className: \"btn btn-primary\",\n disabled: reportReason === \"\",\n onClick: (function (param) {\n return createModerationReport(reportableType, reportableId, reportReason, setModerationReports, setShowReport, setReportReason, param);\n })\n }, tr(undefined, undefined, \"report\")), React.createElement(\"button\", {\n className: \"mt-3 inline-flex w-full justify-center rounded bg-white px-3 py-2 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50 sm:ml-3 sm:mt-0 sm:w-auto focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-focusColor-500\",\n onClick: (function (param) {\n return updateShowReport(setShowReport, false, param);\n })\n }, tr(undefined, undefined, \"cancel\"))))) : null, reported ? React.createElement(\"div\", {\n className: \"flex items-center justify-center p-1 text-sm text-red-600 whitespace-nowrap\"\n }, React.createElement(\"span\", {\n className: \"flex items-center md:space-x-1\"\n }, React.createElement(Icon.make, {\n className: \"if i-flag-light if-fw\"\n }), React.createElement(\"span\", {\n className: \"hidden md:inline-block text-xs\"\n }, tr(undefined, undefined, \"reported\")))) : React.createElement(\"button\", {\n className: \"curriculum-moderation__report-button md:hidden md:group-hover:flex md:group-focus-within:flex items-center justify-center cursor-pointer p-1 text-sm border rounded-md text-gray-700 bg-gray-100 hover:text-gray-800 hover:bg-gray-50 whitespace-nowrap focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-focusColor-500 transition\",\n disabled: reported,\n onClick: (function (param) {\n return updateShowReport(setShowReport, true, param);\n })\n }, React.createElement(\"span\", {\n className: \"flex items-center md:space-x-1\"\n }, React.createElement(Icon.make, {\n className: \"if i-flag-light if-fw\"\n }), React.createElement(\"span\", {\n className: \"hidden md:inline-block text-xs\"\n }, tr(undefined, undefined, \"report\")))));\n}\n\nvar make$1 = CoursesCurriculum__ModerationReportButton;\n\nexport {\n str ,\n tr ,\n CreateModerationReportMutation ,\n createModerationReport ,\n updateReportReason ,\n updateShowReport ,\n make$1 as make,\n}\n/* include Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as Icon from \"../../../shared/Icon.bs.js\";\nimport * as Curry from \"../../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as Js_promise from \"../../../../../node_modules/rescript/lib/es6/js_promise.js\";\nimport * as Belt_Option from \"../../../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as GraphqlQuery from \"../../../shared/utils/GraphqlQuery.bs.js\";\nimport * as MarkdownBlock from \"../../../shared/components/MarkdownBlock.bs.js\";\nimport * as CoursesCurriculum__User from \"../types/CoursesCurriculum__User.bs.js\";\nimport * as CoursesCurriculum__Reactions from \"./CoursesCurriculum__Reactions.bs.js\";\nimport * as CoursesCurriculum__CurrentUser from \"../types/CoursesCurriculum__CurrentUser.bs.js\";\nimport * as CoursesCurriculum__SubmissionComment from \"../types/CoursesCurriculum__SubmissionComment.bs.js\";\nimport * as CoursesCurriculum__ModerationReportButton from \"./CoursesCurriculum__ModerationReportButton.bs.js\";\n\nimport \"./CoursesCurriculum__SubmissionCommentShow.css\";\n;\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.CoursesCurriculum__SubmissionCommentShow\";\n\nfunction tr(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nvar Raw = {};\n\nvar query = \"mutation HideSubmissionCommentMutation($submissionCommentId: String!, $hide: Boolean!) {\\nhideSubmissionComment(submissionCommentId: $submissionCommentId, hide: $hide) {\\nsuccess \\n}\\n\\n}\\n\";\n\nfunction parse(value) {\n var value$1 = value.hideSubmissionComment;\n return {\n hideSubmissionComment: {\n success: value$1.success\n }\n };\n}\n\nfunction serialize(value) {\n var value$1 = value.hideSubmissionComment;\n var value$2 = value$1.success;\n var hideSubmissionComment = {\n success: value$2\n };\n return {\n hideSubmissionComment: hideSubmissionComment\n };\n}\n\nfunction serializeVariables(inp) {\n return {\n submissionCommentId: inp.submissionCommentId,\n hide: inp.hide\n };\n}\n\nfunction makeVariables(submissionCommentId, hide, param) {\n return {\n submissionCommentId: submissionCommentId,\n hide: hide\n };\n}\n\nvar HideSubmissionCommentMutation_inner = {\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables\n};\n\nvar include = GraphqlQuery.Extender({\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar make = include.make;\n\nvar HideSubmissionCommentMutation_Graphql_error = include.Graphql_error;\n\nvar HideSubmissionCommentMutation_decodeNotification = include.decodeNotification;\n\nvar HideSubmissionCommentMutation_decodeObject = include.decodeObject;\n\nvar HideSubmissionCommentMutation_decodeNotifications = include.decodeNotifications;\n\nvar HideSubmissionCommentMutation_decodeErrors = include.decodeErrors;\n\nvar HideSubmissionCommentMutation_flashNotifications = include.flashNotifications;\n\nvar HideSubmissionCommentMutation_sendQuery = include.sendQuery;\n\nvar HideSubmissionCommentMutation_query = include.query;\n\nvar HideSubmissionCommentMutation_fetch = include.$$fetch;\n\nvar HideSubmissionCommentMutation = {\n HideSubmissionCommentMutation_inner: HideSubmissionCommentMutation_inner,\n Raw: Raw,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables,\n Graphql_error: HideSubmissionCommentMutation_Graphql_error,\n decodeNotification: HideSubmissionCommentMutation_decodeNotification,\n decodeObject: HideSubmissionCommentMutation_decodeObject,\n decodeNotifications: HideSubmissionCommentMutation_decodeNotifications,\n decodeErrors: HideSubmissionCommentMutation_decodeErrors,\n flashNotifications: HideSubmissionCommentMutation_flashNotifications,\n sendQuery: HideSubmissionCommentMutation_sendQuery,\n query: HideSubmissionCommentMutation_query,\n $$fetch: HideSubmissionCommentMutation_fetch,\n make: make\n};\n\nvar Raw$1 = {};\n\nvar query$1 = \"mutation ArchiveSubmissionCommentMutation($submissionCommentId: String!) {\\narchiveSubmissionComment(submissionCommentId: $submissionCommentId) {\\nsuccess \\n}\\n\\n}\\n\";\n\nfunction parse$1(value) {\n var value$1 = value.archiveSubmissionComment;\n return {\n archiveSubmissionComment: {\n success: value$1.success\n }\n };\n}\n\nfunction serialize$1(value) {\n var value$1 = value.archiveSubmissionComment;\n var value$2 = value$1.success;\n var archiveSubmissionComment = {\n success: value$2\n };\n return {\n archiveSubmissionComment: archiveSubmissionComment\n };\n}\n\nfunction serializeVariables$1(inp) {\n return {\n submissionCommentId: inp.submissionCommentId\n };\n}\n\nfunction makeVariables$1(submissionCommentId, param) {\n return {\n submissionCommentId: submissionCommentId\n };\n}\n\nvar ArchiveSubmissionCommentMutation_inner = {\n Raw: Raw$1,\n query: query$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n makeVariables: makeVariables$1\n};\n\nvar include$1 = GraphqlQuery.Extender({\n Raw: Raw$1,\n query: query$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar make$1 = include$1.make;\n\nvar ArchiveSubmissionCommentMutation_Graphql_error = include$1.Graphql_error;\n\nvar ArchiveSubmissionCommentMutation_decodeNotification = include$1.decodeNotification;\n\nvar ArchiveSubmissionCommentMutation_decodeObject = include$1.decodeObject;\n\nvar ArchiveSubmissionCommentMutation_decodeNotifications = include$1.decodeNotifications;\n\nvar ArchiveSubmissionCommentMutation_decodeErrors = include$1.decodeErrors;\n\nvar ArchiveSubmissionCommentMutation_flashNotifications = include$1.flashNotifications;\n\nvar ArchiveSubmissionCommentMutation_sendQuery = include$1.sendQuery;\n\nvar ArchiveSubmissionCommentMutation_query = include$1.query;\n\nvar ArchiveSubmissionCommentMutation_fetch = include$1.$$fetch;\n\nvar ArchiveSubmissionCommentMutation = {\n ArchiveSubmissionCommentMutation_inner: ArchiveSubmissionCommentMutation_inner,\n Raw: Raw$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n makeVariables: makeVariables$1,\n Graphql_error: ArchiveSubmissionCommentMutation_Graphql_error,\n decodeNotification: ArchiveSubmissionCommentMutation_decodeNotification,\n decodeObject: ArchiveSubmissionCommentMutation_decodeObject,\n decodeNotifications: ArchiveSubmissionCommentMutation_decodeNotifications,\n decodeErrors: ArchiveSubmissionCommentMutation_decodeErrors,\n flashNotifications: ArchiveSubmissionCommentMutation_flashNotifications,\n sendQuery: ArchiveSubmissionCommentMutation_sendQuery,\n query: ArchiveSubmissionCommentMutation_query,\n $$fetch: ArchiveSubmissionCommentMutation_fetch,\n make: make$1\n};\n\nfunction hideComment(submissionCommentId, hide, setCommentHidden, $$event) {\n $$event.preventDefault();\n Js_promise.then_((function (response) {\n if (response.hideSubmissionComment.success) {\n Curry._1(setCommentHidden, (function (param) {\n return hide;\n }));\n }\n return Promise.resolve(undefined);\n }), Curry._3(make, undefined, undefined, {\n submissionCommentId: submissionCommentId,\n hide: hide\n }));\n}\n\nfunction archiveComment(submissionCommentId, setShowConfirmDelete, archiveCommentCB, $$event) {\n $$event.preventDefault();\n Curry._1(setShowConfirmDelete, (function (param) {\n return false;\n }));\n Js_promise.then_((function (response) {\n if (response.archiveSubmissionComment.success) {\n Curry._1(archiveCommentCB, submissionCommentId);\n }\n return Promise.resolve(undefined);\n }), Curry._3(make$1, undefined, undefined, {\n submissionCommentId: submissionCommentId\n }));\n}\n\nfunction updateShowConfirmDelete(setShowConfirmDelete, showConfirmDelete, $$event) {\n $$event.preventDefault();\n return Curry._1(setShowConfirmDelete, (function (param) {\n return showConfirmDelete;\n }));\n}\n\nfunction CoursesCurriculum__SubmissionCommentShow(Props) {\n var currentUser = Props.currentUser;\n var comment = Props.comment;\n var archiveCommentCB = Props.archiveCommentCB;\n var match = React.useState(function () {\n return Belt_Option.isSome(CoursesCurriculum__SubmissionComment.hiddenAt(comment));\n });\n var setCommentHidden = match[1];\n var commentHidden = match[0];\n var match$1 = React.useState(function () {\n return false;\n });\n var setShowConfirmDelete = match$1[1];\n var isModerator = CoursesCurriculum__CurrentUser.isModerator(currentUser);\n var userName = CoursesCurriculum__User.name(CoursesCurriculum__SubmissionComment.user(comment));\n var tmp;\n if (isModerator) {\n var partial_arg = !commentHidden;\n var partial_arg$1 = CoursesCurriculum__SubmissionComment.id(comment);\n tmp = React.createElement(\"div\", {\n className: \"relative z-[11]\"\n }, React.createElement(\"button\", {\n className: \"md:hidden md:group-hover:flex md:group-focus-within:flex md:space-x-1 items-center justify-center cursor-pointer p-1 text-sm border rounded-md text-gray-700 bg-gray-100 hover:text-gray-800 hover:bg-gray-50 whitespace-nowrap focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-focusColor-600 transition\",\n title: commentHidden ? \"Unhide Comment\" : \"Hide Comment\",\n onClick: (function (param) {\n return hideComment(partial_arg$1, partial_arg, setCommentHidden, param);\n })\n }, commentHidden ? React.createElement(\"span\", {\n className: \"flex items-center md:space-x-1\"\n }, React.createElement(Icon.make, {\n className: \"if i-eye-closed-light if-fw\"\n }), React.createElement(\"span\", {\n className: \"hidden md:inline-block text-xs\"\n }, tr(undefined, undefined, \"unhide\"))) : React.createElement(\"span\", {\n className: \"flex items-center md:space-x-1\"\n }, React.createElement(Icon.make, {\n className: \"if i-eye-light if-fw\"\n }), React.createElement(\"span\", {\n className: \"hidden md:inline-block text-xs\"\n }, tr(undefined, undefined, \"hide\")))));\n } else {\n tmp = null;\n }\n var commentDisplay = React.createElement(\"div\", {\n \"aria-label\": \"comment-\" + CoursesCurriculum__SubmissionComment.id(comment),\n className: \"relative mt-4 group curriculum-submission__comment focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-focusColor-500\",\n tabIndex: 0\n }, React.createElement(\"div\", {\n className: commentHidden ? \"relative curriculum__submission-comment-hidden rounded-b-xl\" : \"flex-1\"\n }, React.createElement(\"div\", {\n className: \"flex flex-row items-center justify-between\"\n }, React.createElement(\"div\", undefined, React.createElement(\"div\", {\n className: \"flex gap-3\"\n }, React.createElement(\"div\", {\n className: \"submission-comments__line flex justify-end align-start absolute h-full -left-8 -ml-[0.5px] bottom-1 w-8\"\n }, React.createElement(\"div\", {\n className: \"h-6 border-b cursor-pointer w-7 border-l border-gray-300 rounded-bl-3xl\"\n })), React.createElement(\"div\", {\n className: \"w-8 h-8 border bg-gray-200 rounded-full flex items-center justify-center\"\n }, CoursesCurriculum__User.avatar(CoursesCurriculum__SubmissionComment.user(comment))), React.createElement(\"div\", {\n className: \"flex flex-col flex-wrap\"\n }, React.createElement(\"p\", {\n className: \"font-semibold text-xs leading-tight block md:inline-flex\"\n }, userName), React.createElement(\"p\", {\n className: \"text-xs text-gray-600 leading-tight pt-1\",\n title: CoursesCurriculum__SubmissionComment.createdAtPretty(comment)\n }, CoursesCurriculum__SubmissionComment.createdAtPretty(comment))))), React.createElement(\"div\", {\n className: \"flex space-x-2 relative\"\n }, tmp, CoursesCurriculum__CurrentUser.id(currentUser) === CoursesCurriculum__SubmissionComment.userId(comment) ? React.createElement(\"div\", {\n className: \"md:hidden md:group-hover:flex relative z-[11]\"\n }, React.createElement(\"button\", {\n className: \"md:hidden md:group-hover:flex md:group-focus-within:flex md:space-x-1 items-center justify-center cursor-pointer p-1 text-sm border rounded-md text-gray-700 bg-gray-100 hover:text-gray-800 hover:bg-gray-50 whitespace-nowrap focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-focusColor-600 transition\",\n onClick: (function (param) {\n return updateShowConfirmDelete(setShowConfirmDelete, true, param);\n })\n }, React.createElement(Icon.make, {\n className: \"if i-trash-light if-fw\"\n }), React.createElement(\"span\", {\n className: \"hidden md:inline-block text-xs\"\n }, tr(undefined, undefined, \"delete\")))) : React.createElement(\"div\", {\n className: \"relative z-[13]\"\n }, React.createElement(CoursesCurriculum__ModerationReportButton.make, {\n currentUser: currentUser,\n moderationReports: CoursesCurriculum__SubmissionComment.moderationReports(comment),\n reportableId: CoursesCurriculum__SubmissionComment.id(comment),\n reportableType: \"SubmissionComment\"\n })))), React.createElement(MarkdownBlock.make, {\n markdown: CoursesCurriculum__SubmissionComment.comment(comment),\n className: \"text-sm ms-11 mt-2\",\n profile: /* Permissive */0\n }), React.createElement(\"div\", {\n className: \"ms-11\"\n }, React.createElement(CoursesCurriculum__Reactions.make, {\n currentUser: currentUser,\n reactionableType: \"SubmissionComment\",\n reactionableId: CoursesCurriculum__SubmissionComment.id(comment),\n reactions: CoursesCurriculum__SubmissionComment.reactions(comment)\n }))), commentHidden ? React.createElement(\"div\", {\n className: \"absolute -translate-x-1/2 left-1/2 z-[10] flex justify-end mx-auto bottom-px\"\n }, React.createElement(\"p\", {\n className: \"px-2 py-1 bg-white/20 border border-gray-300 border-b-0 whitespace-nowrap rounded-t-lg text-xs leading-tight italic text-gray-500\"\n }, tr(undefined, undefined, \"hidden\"))) : null);\n var tmp$1;\n if (match$1[0]) {\n var partial_arg$2 = CoursesCurriculum__SubmissionComment.id(comment);\n tmp$1 = React.createElement(\"dialog\", {\n className: \"fixed inset-0 z-[999] grid place-items-center w-full h-full bg-gray-950/75 dark:bg-gray-50/75 backdrop-blur-sm ease-in duration-300\",\n role: \"dialog\"\n }, React.createElement(\"div\", {\n className: \"max-w-xl mx-auto relative p-4 bg-white rounded-lg shadow-lg\"\n }, React.createElement(\"div\", {\n className: \"sm:flex sm:items-start\"\n }, React.createElement(\"div\", {\n className: \"mx-auto flex h-12 w-12 flex-shrink-0 items-center justify-center rounded-full bg-red-100 sm:mx-0 sm:h-10 sm:w-10\"\n }, React.createElement(\"svg\", {\n \"aria-hidden\": true,\n className: \"h-6 w-6 text-red-600\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: \"1.5\",\n viewBox: \"0 0 24 24\"\n }, React.createElement(\"path\", {\n d: \"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }))), React.createElement(\"div\", {\n className: \"mt-3 text-center sm:ml-4 sm:mt-0 sm:text-left\"\n }, React.createElement(\"h3\", {\n className: \"text-base font-semibold leading-6 text-gray-900\",\n id: \"modal-title\"\n }, tr(undefined, undefined, \"delete_comment\")), React.createElement(\"div\", {\n className: \"mt-2\"\n }, React.createElement(\"p\", {\n className: \"text-sm text-gray-500\"\n }, tr(undefined, undefined, \"delete_confirm\"))), React.createElement(\"div\", {\n className: \"absolute right-0 top-0 hidden pr-4 pt-4 sm:block\"\n }, React.createElement(\"button\", {\n className: \"w-6 h-6 flex items-center justify-center rounded-md text-gray-700 bg-gray-100 hover:bg-gray-200 hover:text-gray-900 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 transition\",\n autoFocus: true,\n onClick: (function (param) {\n return updateShowConfirmDelete(setShowConfirmDelete, false, param);\n })\n }, React.createElement(Icon.make, {\n className: \"if i-times-light text-xl if-fw\"\n }), React.createElement(\"span\", {\n className: \"sr-only\"\n }, tr(undefined, undefined, \"close\")))))), React.createElement(\"div\", {\n className: \"mt-5 sm:ml-10 sm:mt-4 sm:flex sm:pl-4\"\n }, React.createElement(\"button\", {\n className: \"inline-flex w-full justify-center rounded-md bg-red-600 px-3 py-2 text-sm font-semibold text-white shadow-sm hover:bg-red-500 sm:w-auto\",\n onClick: (function (param) {\n return archiveComment(partial_arg$2, setShowConfirmDelete, archiveCommentCB, param);\n })\n }, tr(undefined, undefined, \"delete\")), React.createElement(\"button\", {\n className: \"mt-3 inline-flex w-full justify-center rounded-md bg-white px-3 py-2 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50 sm:ml-3 sm:mt-0 sm:w-auto\",\n onClick: (function (param) {\n return updateShowConfirmDelete(setShowConfirmDelete, false, param);\n })\n }, tr(undefined, undefined, \"cancel\")))));\n } else {\n tmp$1 = null;\n }\n return React.createElement(\"div\", {\n id: \"comment-\" + CoursesCurriculum__SubmissionComment.id(comment)\n }, tmp$1, commentDisplay);\n}\n\nvar make$2 = CoursesCurriculum__SubmissionCommentShow;\n\nexport {\n str ,\n tr ,\n HideSubmissionCommentMutation ,\n ArchiveSubmissionCommentMutation ,\n hideComment ,\n archiveComment ,\n updateShowConfirmDelete ,\n make$2 as make,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as Icon from \"../../../shared/Icon.bs.js\";\nimport * as Curry from \"../../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as Spread from \"../../../shared/components/Spread.bs.js\";\nimport * as Js_array from \"../../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as Js_promise from \"../../../../../node_modules/rescript/lib/es6/js_promise.js\";\nimport * as Caml_option from \"../../../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as GraphqlQuery from \"../../../shared/utils/GraphqlQuery.bs.js\";\nimport * as CoursesCurriculum__CurrentUser from \"../types/CoursesCurriculum__CurrentUser.bs.js\";\nimport * as CoursesCurriculum__SubmissionComment from \"../types/CoursesCurriculum__SubmissionComment.bs.js\";\nimport * as CoursesCurriculum__SubmissionCommentShow from \"./CoursesCurriculum__SubmissionCommentShow.bs.js\";\n\nimport \"./CoursesCurriculum__SubmissionComments.css\";\n;\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.CoursesCurriculum__SubmissionComments\";\n\nfunction tr(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nvar Raw = {};\n\nvar query = \"mutation CreateSubmissionCommentMutation($comment: String!, $submissionId: String!) {\\ncreateSubmissionComment(comment: $comment, submissionId: $submissionId) {\\ncomment {\\nid \\nuserId \\ncomment \\nsubmissionId \\nuser {\\nid \\nname \\ntitle \\navatarUrl \\n}\\n\\ncreatedAt \\nreactions {\\nid \\nreactionableId \\nreactionValue \\nreactionableType \\nuserName \\nupdatedAt \\n}\\n\\nmoderationReports {\\nid \\nuserId \\nreportableId \\nreason \\nreportableType \\n}\\n\\n}\\n\\n}\\n\\n}\\n\";\n\nfunction parse(value) {\n var value$1 = value.createSubmissionComment;\n var value$2 = value$1.comment;\n var value$3 = value$2.user;\n var value$4 = value$3.avatarUrl;\n var value$5 = value$2.reactions;\n var value$6 = value$2.moderationReports;\n return {\n createSubmissionComment: {\n comment: {\n id: value$2.id,\n userId: value$2.userId,\n comment: value$2.comment,\n submissionId: value$2.submissionId,\n user: {\n id: value$3.id,\n name: value$3.name,\n title: value$3.title,\n avatarUrl: !(value$4 == null) ? value$4 : undefined\n },\n createdAt: value$2.createdAt,\n reactions: Js_array.map((function (value) {\n var value$1 = value.reactionableId;\n return {\n id: value.id,\n reactionableId: !(value$1 == null) ? value$1 : undefined,\n reactionValue: value.reactionValue,\n reactionableType: value.reactionableType,\n userName: value.userName,\n updatedAt: value.updatedAt\n };\n }), value$5),\n moderationReports: Js_array.map((function (value) {\n var value$1 = value.reportableId;\n return {\n id: value.id,\n userId: value.userId,\n reportableId: !(value$1 == null) ? value$1 : undefined,\n reason: value.reason,\n reportableType: value.reportableType\n };\n }), value$6)\n }\n }\n };\n}\n\nfunction serialize(value) {\n var value$1 = value.createSubmissionComment;\n var value$2 = value$1.comment;\n var value$3 = value$2.moderationReports;\n var moderationReports = Js_array.map((function (value) {\n var value$1 = value.reportableType;\n var value$2 = value.reason;\n var value$3 = value.reportableId;\n var reportableId = value$3 !== undefined ? value$3 : null;\n var value$4 = value.userId;\n var value$5 = value.id;\n return {\n id: value$5,\n userId: value$4,\n reportableId: reportableId,\n reason: value$2,\n reportableType: value$1\n };\n }), value$3);\n var value$4 = value$2.reactions;\n var reactions = Js_array.map((function (value) {\n var value$1 = value.updatedAt;\n var value$2 = value.userName;\n var value$3 = value.reactionableType;\n var value$4 = value.reactionValue;\n var value$5 = value.reactionableId;\n var reactionableId = value$5 !== undefined ? value$5 : null;\n var value$6 = value.id;\n return {\n id: value$6,\n reactionableId: reactionableId,\n reactionValue: value$4,\n reactionableType: value$3,\n userName: value$2,\n updatedAt: value$1\n };\n }), value$4);\n var value$5 = value$2.createdAt;\n var value$6 = value$2.user;\n var value$7 = value$6.avatarUrl;\n var avatarUrl = value$7 !== undefined ? value$7 : null;\n var value$8 = value$6.title;\n var value$9 = value$6.name;\n var value$10 = value$6.id;\n var user = {\n id: value$10,\n name: value$9,\n title: value$8,\n avatarUrl: avatarUrl\n };\n var value$11 = value$2.submissionId;\n var value$12 = value$2.comment;\n var value$13 = value$2.userId;\n var value$14 = value$2.id;\n var comment = {\n id: value$14,\n userId: value$13,\n comment: value$12,\n submissionId: value$11,\n user: user,\n createdAt: value$5,\n reactions: reactions,\n moderationReports: moderationReports\n };\n var createSubmissionComment = {\n comment: comment\n };\n return {\n createSubmissionComment: createSubmissionComment\n };\n}\n\nfunction serializeVariables(inp) {\n return {\n comment: inp.comment,\n submissionId: inp.submissionId\n };\n}\n\nfunction makeVariables(comment, submissionId, param) {\n return {\n comment: comment,\n submissionId: submissionId\n };\n}\n\nvar CreateSubmissionCommentMutation_inner = {\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables\n};\n\nvar include = GraphqlQuery.Extender({\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar make = include.make;\n\nvar CreateSubmissionCommentMutation_Graphql_error = include.Graphql_error;\n\nvar CreateSubmissionCommentMutation_decodeNotification = include.decodeNotification;\n\nvar CreateSubmissionCommentMutation_decodeObject = include.decodeObject;\n\nvar CreateSubmissionCommentMutation_decodeNotifications = include.decodeNotifications;\n\nvar CreateSubmissionCommentMutation_decodeErrors = include.decodeErrors;\n\nvar CreateSubmissionCommentMutation_flashNotifications = include.flashNotifications;\n\nvar CreateSubmissionCommentMutation_sendQuery = include.sendQuery;\n\nvar CreateSubmissionCommentMutation_query = include.query;\n\nvar CreateSubmissionCommentMutation_fetch = include.$$fetch;\n\nvar CreateSubmissionCommentMutation = {\n CreateSubmissionCommentMutation_inner: CreateSubmissionCommentMutation_inner,\n Raw: Raw,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables,\n Graphql_error: CreateSubmissionCommentMutation_Graphql_error,\n decodeNotification: CreateSubmissionCommentMutation_decodeNotification,\n decodeObject: CreateSubmissionCommentMutation_decodeObject,\n decodeNotifications: CreateSubmissionCommentMutation_decodeNotifications,\n decodeErrors: CreateSubmissionCommentMutation_decodeErrors,\n flashNotifications: CreateSubmissionCommentMutation_flashNotifications,\n sendQuery: CreateSubmissionCommentMutation_sendQuery,\n query: CreateSubmissionCommentMutation_query,\n $$fetch: CreateSubmissionCommentMutation_fetch,\n make: make\n};\n\nfunction toggleComments(setShowComments, $$event) {\n $$event.preventDefault();\n return Curry._1(setShowComments, (function (prevState) {\n return !prevState;\n }));\n}\n\nfunction archiveCommentCB(setSubmissionComments, submissionComments, commentId) {\n var newComments = submissionComments.filter(function (comment) {\n return CoursesCurriculum__SubmissionComment.id(comment) !== commentId;\n });\n return Curry._1(setSubmissionComments, (function (param) {\n return newComments;\n }));\n}\n\nfunction CoursesCurriculum__SubmissionComments(Props) {\n var currentUser = Props.currentUser;\n var submissionId = Props.submissionId;\n var comments = Props.comments;\n var commentsInitiallyVisible = Props.commentsInitiallyVisible;\n var match = React.useState(function () {\n return comments;\n });\n var setSubmissionComments = match[1];\n var submissionComments = match[0];\n var match$1 = React.useState(function () {\n return commentsInitiallyVisible;\n });\n var setShowComments = match$1[1];\n var showComments = match$1[0];\n var match$2 = React.useState(function () {\n return \"\";\n });\n var setNewComment = match$2[1];\n var newComment = match$2[0];\n var commentsCount = submissionComments.length;\n var handleInputChange = function ($$event) {\n Curry._1(setNewComment, $$event.currentTarget.value);\n };\n var handleCreateSubmissionComment = function ($$event) {\n $$event.preventDefault();\n Js_promise.then_((function (response) {\n var createdComment = response.createSubmissionComment.comment;\n if (createdComment !== undefined) {\n var createdComment$1 = Caml_option.valFromOption(createdComment);\n Curry._1(setNewComment, (function (param) {\n return \"\";\n }));\n Curry._1(setSubmissionComments, (function (existingComments) {\n return [CoursesCurriculum__SubmissionComment.decode(createdComment$1)].concat(existingComments);\n }));\n }\n return Promise.resolve(undefined);\n }), Curry._3(make, undefined, undefined, {\n comment: newComment,\n submissionId: submissionId\n }));\n };\n return React.createElement(\"div\", {\n className: \"w-full\"\n }, commentsCount !== 0 ? React.createElement(\"div\", {\n className: \"flex items-center justify-between mx-auto\"\n }, React.createElement(\"div\", {\n id: \"show_comments-\" + submissionId\n }, React.createElement(\"button\", {\n className: \"flex items-center border border-gray-300 bg-white text-gray-600 px-3 py-1 font-medium text-xs leading-snug rounded-full hover:text-primary-500 hover:border-primary-500 hover:bg-gray-100 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-focusColor-600 transition\",\n onClick: (function (param) {\n return toggleComments(setShowComments, param);\n })\n }, React.createElement(Icon.make, {\n className: \"if i-comment-alt-light if-fw\"\n }), React.createElement(\"span\", {\n className: \"ps-1\"\n }, commentsCount === 1 ? \"1 \" + tr(undefined, undefined, \"comment_text\") : String(commentsCount) + \" \" + tr(undefined, undefined, \"comments\"))))) : (showComments ? undefined : Curry._1(setShowComments, (function (param) {\n return true;\n })), null), React.createElement(Spread.make, {\n props: {\n \"data-submission-id\": submissionId\n },\n children: React.createElement(\"div\", {\n key: submissionId,\n className: \"mt-4 space-y-8\",\n hidden: !showComments\n }, React.createElement(\"div\", {\n className: \"submission-comments__comment\"\n }, React.createElement(\"div\", {\n className: \"flex gap-2 relative\"\n }, React.createElement(\"div\", {\n className: \"submission-comments__line flex justify-end align-start absolute h-full -left-8 -ml-[0.5px] bottom-1 w-8 \"\n }, React.createElement(\"div\", {\n className: \"h-6 border-b cursor-pointer w-7 border-l border-gray-300 rounded-bl-3xl\"\n })), React.createElement(\"div\", {\n className: \"w-8 h-8 shrink-0 border bg-gray-200 rounded-full flex items-center justify-center\"\n }, CoursesCurriculum__CurrentUser.avatar(currentUser)), React.createElement(\"input\", {\n className: \"appearance-none block text-sm w-full bg-white leading-tight border border-gray-300 rounded px-3 py-2 focus:outline-none focus:bg-white focus:border-transparent focus:ring-2 focus:ring-focusColor-500\",\n id: \"add_comment-\" + submissionId,\n maxLength: 255,\n placeholder: tr(undefined, undefined, \"write_comment\"),\n type: \"text\",\n value: newComment,\n onChange: handleInputChange\n }), React.createElement(\"button\", {\n className: \"btn btn-primary text-sm\",\n disabled: newComment === \"\",\n onClick: handleCreateSubmissionComment\n }, tr(undefined, undefined, \"comment_button\")))), submissionComments.map(function (comment) {\n return React.createElement(\"div\", {\n key: \"comment-\" + CoursesCurriculum__SubmissionComment.id(comment),\n className: \"submission-comments__comment\"\n }, React.createElement(CoursesCurriculum__SubmissionCommentShow.make, {\n currentUser: currentUser,\n comment: comment,\n archiveCommentCB: (function (param) {\n return archiveCommentCB(setSubmissionComments, submissionComments, param);\n })\n }));\n }))\n }));\n}\n\nvar make$1 = CoursesCurriculum__SubmissionComments;\n\nexport {\n str ,\n tr ,\n CreateSubmissionCommentMutation ,\n toggleComments ,\n archiveCommentCB ,\n make$1 as make,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as DateFns from \"../../../shared/utils/DateFns.bs.js\";\nimport * as ArrayUtils from \"../../../shared/utils/ArrayUtils.bs.js\";\nimport * as Caml_array from \"../../../../../node_modules/rescript/lib/es6/caml_array.js\";\nimport * as Caml_option from \"../../../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as Json_decode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\nimport * as Caml_exceptions from \"../../../../../node_modules/rescript/lib/es6/caml_exceptions.js\";\nimport * as CoursesCurriculum__User from \"./CoursesCurriculum__User.bs.js\";\nimport * as SubmissionChecklistItem from \"../../review/types/SubmissionChecklistItem.bs.js\";\nimport * as CoursesCurriculum__Reaction from \"./CoursesCurriculum__Reaction.bs.js\";\nimport * as CoursesCurriculum__ModerationReport from \"./CoursesCurriculum__ModerationReport.bs.js\";\nimport * as CoursesCurriculum__SubmissionComment from \"./CoursesCurriculum__SubmissionComment.bs.js\";\n\nvar UnexpectedStatusValue = /* @__PURE__ */Caml_exceptions.create(\"CoursesCurriculum__DiscussionSubmission.UnexpectedStatusValue\");\n\nfunction id(t) {\n return t.id;\n}\n\nfunction targetId(t) {\n return t.targetId;\n}\n\nfunction createdAt(t) {\n return t.createdAt;\n}\n\nfunction checklist(t) {\n return t.checklist;\n}\n\nfunction userNames(t) {\n return t.userNames;\n}\n\nfunction users(t) {\n return t.users;\n}\n\nfunction teamName(t) {\n return t.teamName;\n}\n\nfunction comments(t) {\n return t.comments;\n}\n\nfunction reactions(t) {\n return t.reactions;\n}\n\nfunction anonymous(t) {\n return t.anonymous;\n}\n\nfunction pinned(t) {\n return t.pinned;\n}\n\nfunction moderationReports(t) {\n return t.moderationReports;\n}\n\nfunction hiddenAt(t) {\n return t.hiddenAt;\n}\n\nfunction createdAtPretty(t) {\n return DateFns.format(t.createdAt, \"MMMM d, yyyy\");\n}\n\nfunction hiddenAtPretty(t) {\n var hiddenAt = t.hiddenAt;\n if (hiddenAt !== undefined) {\n return DateFns.format(Caml_option.valFromOption(hiddenAt), \"MMMM d, yyyy\");\n } else {\n return \"\";\n }\n}\n\nfunction sort(ts) {\n return ArrayUtils.copyAndSort((function (t1, t2) {\n return DateFns.differenceInSeconds(t2.createdAt, t1.createdAt);\n }), ts);\n}\n\nfunction firstUser(t) {\n return Caml_array.get(t.users, 0);\n}\n\nfunction decode(json) {\n var partial_arg = Json_decode.field(\"files\", (function (param) {\n return Json_decode.array(SubmissionChecklistItem.decodeFile, param);\n }), json);\n var partial_arg$1 = function (param) {\n return SubmissionChecklistItem.decode(partial_arg, param);\n };\n return {\n id: Json_decode.field(\"id\", Json_decode.string, json),\n targetId: Json_decode.field(\"targetId\", Json_decode.string, json),\n createdAt: Json_decode.field(\"createdAt\", DateFns.decodeISO, json),\n checklist: Json_decode.field(\"checklist\", (function (param) {\n return Json_decode.array(partial_arg$1, param);\n }), json),\n userNames: Json_decode.field(\"userNames\", Json_decode.string, json),\n users: Json_decode.field(\"users\", (function (param) {\n return Json_decode.array(CoursesCurriculum__User.decode, param);\n }), json),\n teamName: Json_decode.optional((function (param) {\n return Json_decode.field(\"teamName\", Json_decode.string, param);\n }), json),\n comments: Json_decode.field(\"comments\", (function (param) {\n return Json_decode.array(CoursesCurriculum__SubmissionComment.decode, param);\n }), json),\n reactions: Json_decode.field(\"reactions\", (function (param) {\n return Json_decode.array(CoursesCurriculum__Reaction.decode, param);\n }), json),\n anonymous: Json_decode.field(\"anonymous\", Json_decode.bool, json),\n pinned: Json_decode.field(\"pinned\", Json_decode.bool, json),\n moderationReports: Json_decode.field(\"moderationReports\", (function (param) {\n return Json_decode.array(CoursesCurriculum__ModerationReport.decode, param);\n }), json),\n hiddenAt: Json_decode.optional((function (param) {\n return Json_decode.field(\"hiddenAt\", DateFns.decodeISO, param);\n }), json)\n };\n}\n\nfunction make(id, targetId, createdAt, checklist, userNames, users, teamName, comments, reactions, anonymous, pinned, moderationReports, hiddenAt) {\n return {\n id: id,\n targetId: targetId,\n createdAt: createdAt,\n checklist: checklist,\n userNames: userNames,\n users: users,\n teamName: teamName,\n comments: comments,\n reactions: reactions,\n anonymous: anonymous,\n pinned: pinned,\n moderationReports: moderationReports,\n hiddenAt: hiddenAt\n };\n}\n\nexport {\n UnexpectedStatusValue ,\n id ,\n targetId ,\n createdAt ,\n checklist ,\n userNames ,\n users ,\n teamName ,\n comments ,\n reactions ,\n anonymous ,\n pinned ,\n moderationReports ,\n hiddenAt ,\n createdAtPretty ,\n hiddenAtPretty ,\n sort ,\n firstUser ,\n decode ,\n make ,\n}\n/* DateFns Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as Icon from \"../../../shared/Icon.bs.js\";\nimport * as Curry from \"../../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as Js_promise from \"../../../../../node_modules/rescript/lib/es6/js_promise.js\";\nimport * as Belt_Option from \"../../../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as GraphqlQuery from \"../../../shared/utils/GraphqlQuery.bs.js\";\nimport * as CoursesCurriculum__User from \"../types/CoursesCurriculum__User.bs.js\";\nimport * as SubmissionChecklistShow from \"../../review/components/SubmissionChecklistShow.bs.js\";\nimport * as CoursesCurriculum__Reactions from \"./CoursesCurriculum__Reactions.bs.js\";\nimport * as CoursesCurriculum__CurrentUser from \"../types/CoursesCurriculum__CurrentUser.bs.js\";\nimport * as CoursesCurriculum__SubmissionComments from \"./CoursesCurriculum__SubmissionComments.bs.js\";\nimport * as CoursesCurriculum__DiscussionSubmission from \"../types/CoursesCurriculum__DiscussionSubmission.bs.js\";\nimport * as CoursesCurriculum__ModerationReportButton from \"./CoursesCurriculum__ModerationReportButton.bs.js\";\n\nimport \"./CoursesCurriculum__DiscussSubmission.css\"\n;\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.CoursesCurriculum__DiscussSubmission\";\n\nfunction t(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nvar Raw = {};\n\nvar query = \"mutation PinSubmissionMutation($pin: Boolean!, $submissionId: String!) {\\npinSubmission(pin: $pin, submissionId: $submissionId) {\\nsuccess \\n}\\n\\n}\\n\";\n\nfunction parse(value) {\n var value$1 = value.pinSubmission;\n return {\n pinSubmission: {\n success: value$1.success\n }\n };\n}\n\nfunction serialize(value) {\n var value$1 = value.pinSubmission;\n var value$2 = value$1.success;\n var pinSubmission = {\n success: value$2\n };\n return {\n pinSubmission: pinSubmission\n };\n}\n\nfunction serializeVariables(inp) {\n return {\n pin: inp.pin,\n submissionId: inp.submissionId\n };\n}\n\nfunction makeVariables(pin, submissionId, param) {\n return {\n pin: pin,\n submissionId: submissionId\n };\n}\n\nvar PinSubmissionMutation_inner = {\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables\n};\n\nvar include = GraphqlQuery.Extender({\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar make = include.make;\n\nvar PinSubmissionMutation_Graphql_error = include.Graphql_error;\n\nvar PinSubmissionMutation_decodeNotification = include.decodeNotification;\n\nvar PinSubmissionMutation_decodeObject = include.decodeObject;\n\nvar PinSubmissionMutation_decodeNotifications = include.decodeNotifications;\n\nvar PinSubmissionMutation_decodeErrors = include.decodeErrors;\n\nvar PinSubmissionMutation_flashNotifications = include.flashNotifications;\n\nvar PinSubmissionMutation_sendQuery = include.sendQuery;\n\nvar PinSubmissionMutation_query = include.query;\n\nvar PinSubmissionMutation_fetch = include.$$fetch;\n\nvar PinSubmissionMutation = {\n PinSubmissionMutation_inner: PinSubmissionMutation_inner,\n Raw: Raw,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables,\n Graphql_error: PinSubmissionMutation_Graphql_error,\n decodeNotification: PinSubmissionMutation_decodeNotification,\n decodeObject: PinSubmissionMutation_decodeObject,\n decodeNotifications: PinSubmissionMutation_decodeNotifications,\n decodeErrors: PinSubmissionMutation_decodeErrors,\n flashNotifications: PinSubmissionMutation_flashNotifications,\n sendQuery: PinSubmissionMutation_sendQuery,\n query: PinSubmissionMutation_query,\n $$fetch: PinSubmissionMutation_fetch,\n make: make\n};\n\nvar Raw$1 = {};\n\nvar query$1 = \"mutation HideSubmissionMutation($submissionId: String!, $hide: Boolean!) {\\nhideSubmission(submissionId: $submissionId, hide: $hide) {\\nsuccess \\n}\\n\\n}\\n\";\n\nfunction parse$1(value) {\n var value$1 = value.hideSubmission;\n return {\n hideSubmission: {\n success: value$1.success\n }\n };\n}\n\nfunction serialize$1(value) {\n var value$1 = value.hideSubmission;\n var value$2 = value$1.success;\n var hideSubmission = {\n success: value$2\n };\n return {\n hideSubmission: hideSubmission\n };\n}\n\nfunction serializeVariables$1(inp) {\n return {\n submissionId: inp.submissionId,\n hide: inp.hide\n };\n}\n\nfunction makeVariables$1(submissionId, hide, param) {\n return {\n submissionId: submissionId,\n hide: hide\n };\n}\n\nvar HideSubmissionMutation_inner = {\n Raw: Raw$1,\n query: query$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n makeVariables: makeVariables$1\n};\n\nvar include$1 = GraphqlQuery.Extender({\n Raw: Raw$1,\n query: query$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar make$1 = include$1.make;\n\nvar HideSubmissionMutation_Graphql_error = include$1.Graphql_error;\n\nvar HideSubmissionMutation_decodeNotification = include$1.decodeNotification;\n\nvar HideSubmissionMutation_decodeObject = include$1.decodeObject;\n\nvar HideSubmissionMutation_decodeNotifications = include$1.decodeNotifications;\n\nvar HideSubmissionMutation_decodeErrors = include$1.decodeErrors;\n\nvar HideSubmissionMutation_flashNotifications = include$1.flashNotifications;\n\nvar HideSubmissionMutation_sendQuery = include$1.sendQuery;\n\nvar HideSubmissionMutation_query = include$1.query;\n\nvar HideSubmissionMutation_fetch = include$1.$$fetch;\n\nvar HideSubmissionMutation = {\n HideSubmissionMutation_inner: HideSubmissionMutation_inner,\n Raw: Raw$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n makeVariables: makeVariables$1,\n Graphql_error: HideSubmissionMutation_Graphql_error,\n decodeNotification: HideSubmissionMutation_decodeNotification,\n decodeObject: HideSubmissionMutation_decodeObject,\n decodeNotifications: HideSubmissionMutation_decodeNotifications,\n decodeErrors: HideSubmissionMutation_decodeErrors,\n flashNotifications: HideSubmissionMutation_flashNotifications,\n sendQuery: HideSubmissionMutation_sendQuery,\n query: HideSubmissionMutation_query,\n $$fetch: HideSubmissionMutation_fetch,\n make: make$1\n};\n\nfunction pinSubmission(submission, callback, $$event) {\n $$event.preventDefault();\n var pin = !CoursesCurriculum__DiscussionSubmission.pinned(submission);\n var submissionId = CoursesCurriculum__DiscussionSubmission.id(submission);\n Js_promise.then_((function (response) {\n if (response.pinSubmission.success) {\n Curry._1(callback, CoursesCurriculum__DiscussionSubmission.targetId(submission));\n }\n return Promise.resolve(undefined);\n }), Curry._3(make, undefined, undefined, {\n pin: pin,\n submissionId: submissionId\n }));\n}\n\nfunction hideSubmission(submission, hide, setSubmissionHidden, $$event) {\n $$event.preventDefault();\n var submissionId = CoursesCurriculum__DiscussionSubmission.id(submission);\n Js_promise.then_((function (response) {\n if (response.hideSubmission.success) {\n Curry._1(setSubmissionHidden, (function (param) {\n return hide;\n }));\n }\n return Promise.resolve(undefined);\n }), Curry._3(make$1, undefined, undefined, {\n submissionId: submissionId,\n hide: hide\n }));\n}\n\nfunction pinnedClasses(pinned) {\n if (pinned) {\n return \"bg-white px-4 md:px-6 pt-6 pb-2 rounded-lg shadow-xl dark:shadow-2xl border border-gray-200/75 dark:border-gray-200\";\n } else {\n return \"py-4\";\n }\n}\n\nfunction CoursesCurriculum__DiscussSubmission(Props) {\n var currentUser = Props.currentUser;\n var submission = Props.submission;\n var callBack = Props.callBack;\n var submissionId = CoursesCurriculum__DiscussionSubmission.id(submission);\n var match = React.useState(function () {\n return Belt_Option.isSome(CoursesCurriculum__DiscussionSubmission.hiddenAt(submission));\n });\n var setSubmissionHidden = match[1];\n var submissionHidden = match[0];\n var teamStrength = CoursesCurriculum__DiscussionSubmission.users(submission).length;\n var pinned = CoursesCurriculum__DiscussionSubmission.pinned(submission);\n var tmp;\n if (CoursesCurriculum__DiscussionSubmission.anonymous(submission)) {\n tmp = React.createElement(\"span\", {\n className: \"font-semibold text-xs leading-tight block md:inline-flex\"\n }, t(undefined, undefined, \"anonymous_name\"));\n } else {\n var name = CoursesCurriculum__DiscussionSubmission.teamName(submission);\n tmp = name !== undefined ? React.createElement(\"span\", {\n className: \"font-semibold text-xs leading-tight block md:inline-flex\"\n }, React.createElement(\"span\", {\n className: \"text-gray-500\"\n }, t(undefined, undefined, \"submitted_by_team\")), React.createElement(\"span\", {\n className: \"ms-1\"\n }, name)) : React.createElement(\"span\", {\n className: \"font-semibold text-xs leading-tight block md:inline-flex\"\n }, CoursesCurriculum__DiscussionSubmission.userNames(submission));\n }\n var tmp$1;\n if (CoursesCurriculum__CurrentUser.isModerator(currentUser)) {\n var partial_arg = !submissionHidden;\n tmp$1 = React.createElement(\"div\", {\n className: \"flex space-x-2 relative z-[12]\"\n }, React.createElement(\"button\", {\n className: \"curriculum-discuss-submission__pin-button md:hidden md:group-hover:flex md:group-focus-within:flex items-center justify-center cursor-pointer p-1 text-sm border rounded-md text-gray-700 bg-gray-100 hover:text-gray-800 hover:bg-gray-50 whitespace-nowrap focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-focusColor-600 transition\",\n onClick: (function (param) {\n return pinSubmission(submission, callBack, param);\n })\n }, CoursesCurriculum__DiscussionSubmission.pinned(submission) ? React.createElement(\"span\", {\n className: \"flex items-center md:space-x-1\"\n }, React.createElement(Icon.make, {\n className: \"if i-pin-angle-light if-fw\"\n }), React.createElement(\"span\", {\n className: \"hidden md:inline-block text-xs\"\n }, t(undefined, undefined, \"unpin\"))) : React.createElement(\"span\", {\n className: \"flex items-center md:space-x-1\"\n }, React.createElement(Icon.make, {\n className: \"if i-pin-angle-light if-fw\"\n }), React.createElement(\"span\", {\n className: \"hidden md:inline-block text-xs\"\n }, t(undefined, undefined, \"pin\")))), React.createElement(\"button\", {\n className: \"curriculum-discuss-submission__hide-button md:hidden md:group-hover:flex md:group-focus-within:flex items-center justify-center cursor-pointer p-1 text-sm border rounded-md text-gray-700 bg-gray-100 hover:text-gray-800 hover:bg-gray-50 whitespace-nowrap focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-focusColor-600 transition\",\n onClick: (function (param) {\n return hideSubmission(submission, partial_arg, setSubmissionHidden, param);\n })\n }, submissionHidden ? React.createElement(\"span\", {\n className: \"flex items-center md:space-x-1\"\n }, React.createElement(Icon.make, {\n className: \"if i-eye-closed-light if-fw\"\n }), React.createElement(\"span\", {\n className: \"hidden md:inline-block text-xs\"\n }, t(undefined, undefined, \"unhide\"))) : React.createElement(\"span\", {\n className: \"flex items-center md:space-x-1\"\n }, React.createElement(Icon.make, {\n className: \"if i-eye-light if-fw\"\n }), React.createElement(\"span\", {\n className: \"hidden md:inline-block text-xs\"\n }, t(undefined, undefined, \"hide\")))));\n } else {\n tmp$1 = null;\n }\n return React.createElement(\"div\", {\n \"aria-label\": \"discuss_submission-\" + submissionId,\n className: \"relative curriculum-discuss-submission__container focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-focusColor-500 \" + (\n pinned ? \"bg-white px-4 md:px-6 pt-6 pb-2 rounded-lg shadow-xl dark:shadow-2xl border border-gray-200/75 dark:border-gray-200\" : \"py-4\"\n ) + (\n submissionHidden ? \" curriculum-discuss-submission__hidden max-h-48 overflow-y-hidden\" : \"\"\n ),\n id: \"discuss_submission-\" + submissionId,\n tabIndex: 0\n }, CoursesCurriculum__DiscussionSubmission.pinned(submission) ? React.createElement(\"p\", {\n className: \"absolute bg-green-100 inline-flex items-center text-green-800 text-xs border border-green-300 px-1.5 py-0.5 leading-tight rounded-md -top-3 \" + (\n submissionHidden ? \" hidden\" : \"\"\n )\n }, React.createElement(Icon.make, {\n className: \"if i-pin-angle-light if-fw\"\n }), React.createElement(\"span\", {\n className: \"ps-1.5\"\n }, t(undefined, undefined, \"pinned_submission\"))) : null, React.createElement(\"div\", {\n className: \"flex items-start justify-between\"\n }, React.createElement(\"div\", {\n className: \"flex gap-3\"\n }, React.createElement(\"div\", {\n className: \"isolate flex -space-x-2 overflow-hidden\"\n }, React.createElement(\"div\", {\n className: \"w-8 h-8 relative z-10 uppercase text-xs font-semibold border bg-gray-200 rounded-full flex items-center justify-center\"\n }, CoursesCurriculum__DiscussionSubmission.anonymous(submission) ? React.createElement(\"span\", {\n className: \"font-semibold\"\n }, t(undefined, undefined, \"anonymous_avatar\")) : CoursesCurriculum__User.avatar(CoursesCurriculum__DiscussionSubmission.firstUser(submission)), React.createElement(\"span\", {\n className: \"font-semibold\"\n })), teamStrength !== 1 ? React.createElement(\"div\", {\n className: \"flex items-center justify-center w-8 h-8 text-xs border bg-gray-200 text-gray-600 relative z-0 rounded-full\"\n }, React.createElement(\"span\", undefined, \"+\" + String(teamStrength - 1 | 0))) : null), React.createElement(\"div\", {\n className: \"flex flex-col flex-wrap\"\n }, tmp, React.createElement(\"span\", {\n className: \"text-xs text-gray-600 leading-tight pt-1\",\n title: CoursesCurriculum__DiscussionSubmission.createdAtPretty(submission)\n }, t([[\n \"created_at\",\n CoursesCurriculum__DiscussionSubmission.createdAtPretty(submission)\n ]], undefined, \"created_at\")))), React.createElement(\"div\", {\n className: \"flex space-x-2 relative\"\n }, tmp$1, React.createElement(\"div\", {\n className: \"relative z-[13]\"\n }, React.createElement(CoursesCurriculum__ModerationReportButton.make, {\n currentUser: currentUser,\n moderationReports: CoursesCurriculum__DiscussionSubmission.moderationReports(submission),\n reportableId: CoursesCurriculum__DiscussionSubmission.id(submission),\n reportableType: \"TimelineEvent\"\n })))), React.createElement(\"div\", {\n className: \"relative\"\n }, React.createElement(\"div\", {\n className: \"absolute w-8 top-0 left-0 bottom-0 flex justify-center items-center z-0\"\n }, React.createElement(\"div\", {\n className: \"w-px h-full bg-gradient-to-b from-gray-300 via-gray-300 \"\n })), React.createElement(\"div\", {\n className: \"ms-11 pb-4 pt-6\"\n }, React.createElement(SubmissionChecklistShow.make, {\n checklist: CoursesCurriculum__DiscussionSubmission.checklist(submission),\n updateChecklistCB: undefined,\n forDiscussion: true\n })), React.createElement(\"div\", {\n className: \"flex flex-col gap-4 items-start relative py-4 ps-11\"\n }, React.createElement(\"div\", undefined, React.createElement(CoursesCurriculum__Reactions.make, {\n currentUser: currentUser,\n reactionableType: \"TimelineEvent\",\n reactionableId: submissionId,\n reactions: CoursesCurriculum__DiscussionSubmission.reactions(submission)\n })), React.createElement(\"div\", {\n className: \"relative w-full\"\n }, React.createElement(CoursesCurriculum__SubmissionComments.make, {\n currentUser: currentUser,\n submissionId: submissionId,\n comments: CoursesCurriculum__DiscussionSubmission.comments(submission),\n commentsInitiallyVisible: false\n })))), submissionHidden ? React.createElement(\"div\", {\n className: \"absolute -translate-x-1/2 left-1/2 z-[12] flex justify-end mx-auto bottom-px\"\n }, React.createElement(\"p\", {\n className: \"px-2 py-1 bg-white/20 border border-gray-300 border-b-0 whitespace-nowrap rounded-t-lg text-xs leading-tight italic text-gray-500\"\n }, t(undefined, undefined, \"submission_hidden\"))) : null);\n}\n\nvar make$2 = CoursesCurriculum__DiscussSubmission;\n\nexport {\n str ,\n t ,\n PinSubmissionMutation ,\n HideSubmissionMutation ,\n pinSubmission ,\n hideSubmission ,\n pinnedClasses ,\n make$2 as make,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as $$Array from \"../../../../../node_modules/rescript/lib/es6/array.js\";\nimport * as Caml_obj from \"../../../../../node_modules/rescript/lib/es6/caml_obj.js\";\nimport * as Js_array from \"../../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as UrlUtils from \"../../../shared/utils/UrlUtils.bs.js\";\nimport * as ArrayUtils from \"../../../shared/utils/ArrayUtils.bs.js\";\nimport * as Json_encode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_encode.bs.js\";\nimport * as TargetChecklistItem from \"../../../schools/courses/types/curriculum_editor/TargetChecklistItem.bs.js\";\nimport * as SubmissionChecklistItem from \"../../review/types/SubmissionChecklistItem.bs.js\";\n\nfunction title(t) {\n return t.title;\n}\n\nfunction result(t) {\n return t.result;\n}\n\nfunction optional(t) {\n return t.optional;\n}\n\nfunction make(result, title, optional) {\n return {\n title: title,\n optional: optional,\n result: result\n };\n}\n\nfunction fromTargetChecklistItem(targetChecklist) {\n return $$Array.map((function (tc) {\n var title = TargetChecklistItem.title(tc);\n var optional = TargetChecklistItem.optional(tc);\n var match = TargetChecklistItem.kind(tc);\n var result;\n if (typeof match === \"number\") {\n switch (match) {\n case /* Files */0 :\n result = {\n TAG: /* Files */0,\n _0: []\n };\n break;\n case /* Link */1 :\n result = {\n TAG: /* Link */1,\n _0: \"\"\n };\n break;\n case /* ShortText */2 :\n result = {\n TAG: /* ShortText */2,\n _0: \"\"\n };\n break;\n case /* LongText */3 :\n result = {\n TAG: /* LongText */3,\n _0: \"\"\n };\n break;\n case /* AudioRecord */4 :\n result = {\n TAG: /* AudioRecord */5,\n _0: {\n id: \"\",\n name: \"\"\n }\n };\n break;\n \n }\n } else {\n result = {\n TAG: /* MultiChoice */4,\n _0: match._0,\n _1: match._1,\n _2: []\n };\n }\n return {\n title: title,\n optional: optional,\n result: result\n };\n }), targetChecklist);\n}\n\nfunction updateResultAtIndex(index, result, checklist) {\n return Js_array.mapi((function (c, i) {\n if (i === index) {\n return {\n title: c.title,\n optional: c.optional,\n result: result\n };\n } else {\n return c;\n }\n }), checklist);\n}\n\nfunction makeFile(id, name) {\n return {\n id: id,\n name: name\n };\n}\n\nfunction filename(file) {\n return file.name;\n}\n\nfunction fileId(file) {\n return file.id;\n}\n\nfunction fileIds(checklist) {\n return ArrayUtils.flattenV2(Js_array.map((function (c) {\n var files = c.result;\n switch (files.TAG | 0) {\n case /* Files */0 :\n return Js_array.map((function (a) {\n return a.id;\n }), files._0);\n case /* AudioRecord */5 :\n return [files._0.id];\n default:\n return [];\n }\n }), checklist));\n}\n\nfunction kindAsString(t) {\n var match = t.result;\n switch (match.TAG | 0) {\n case /* Files */0 :\n return \"files\";\n case /* Link */1 :\n return \"link\";\n case /* ShortText */2 :\n return \"shortText\";\n case /* LongText */3 :\n return \"longText\";\n case /* MultiChoice */4 :\n return \"multiChoice\";\n case /* AudioRecord */5 :\n return \"audio\";\n \n }\n}\n\nfunction resultAsJson(t) {\n var files = t.result;\n switch (files.TAG | 0) {\n case /* Files */0 :\n return Js_array.map((function (file) {\n return file.id;\n }), files._0);\n case /* MultiChoice */4 :\n return files._2;\n case /* AudioRecord */5 :\n return files._0.id;\n default:\n return files._0;\n }\n}\n\nfunction validString(s, maxLength) {\n var length = s.trim().length;\n if (length >= 1) {\n return length <= maxLength;\n } else {\n return false;\n }\n}\n\nfunction validShortText(s) {\n return validString(s, 250);\n}\n\nfunction validLongText(s) {\n return validString(s, 5000);\n}\n\nfunction validFiles(files) {\n if (Caml_obj.notequal(files, [])) {\n return files.length < 4;\n } else {\n return false;\n }\n}\n\nfunction validMultiChoice(selected, choices) {\n if (ArrayUtils.isNotEmpty(selected)) {\n return selected.every(function (s) {\n return choices.includes(s);\n });\n } else {\n return false;\n }\n}\n\nfunction validResponse(response, allowBlank) {\n var optional = allowBlank ? response.optional : false;\n var match = response.result;\n switch (match.TAG | 0) {\n case /* Files */0 :\n var files = match._0;\n if (optional && ArrayUtils.isEmpty(files)) {\n return true;\n } else {\n return validFiles(files);\n }\n case /* Link */1 :\n var link = match._0;\n if (optional) {\n return UrlUtils.isValid(true, link);\n } else {\n return UrlUtils.isValid(false, link);\n }\n case /* ShortText */2 :\n var t = match._0;\n if (optional) {\n if (validString(t, 250)) {\n return true;\n } else {\n return t === \"\";\n }\n } else {\n return validString(t, 250);\n }\n case /* LongText */3 :\n var t$1 = match._0;\n if (optional) {\n if (validString(t$1, 5000)) {\n return true;\n } else {\n return t$1 === \"\";\n }\n } else {\n return validString(t$1, 5000);\n }\n case /* MultiChoice */4 :\n var selected = match._2;\n var choices = match._0;\n if (optional && ArrayUtils.isEmpty(selected)) {\n return true;\n } else {\n return validMultiChoice(selected, choices);\n }\n case /* AudioRecord */5 :\n if (optional) {\n return true;\n } else {\n return match._0.id !== \"\";\n }\n \n }\n}\n\nfunction validChecklist(checklist) {\n return ArrayUtils.isEmpty(Js_array.filter((function (c) {\n return !c;\n }), Js_array.map((function (c) {\n return validResponse(c, true);\n }), checklist)));\n}\n\nfunction validResponses(responses) {\n return Js_array.filter((function (c) {\n return validResponse(c, false);\n }), responses);\n}\n\nfunction encode(t) {\n return Json_encode.object_({\n hd: [\n \"title\",\n t.title\n ],\n tl: {\n hd: [\n \"kind\",\n kindAsString(t)\n ],\n tl: {\n hd: [\n \"status\",\n \"noAnswer\"\n ],\n tl: {\n hd: [\n \"result\",\n resultAsJson(t)\n ],\n tl: /* [] */0\n }\n }\n }\n });\n}\n\nfunction encodeArray(checklist) {\n return Json_encode.array(encode, validResponses(checklist));\n}\n\nfunction makeFiles(checklist) {\n return $$Array.map((function (f) {\n var url = \"/timeline_event_files/\" + (f.id + \"/download\");\n return SubmissionChecklistItem.makeFile(f.name, url, f.id);\n }), ArrayUtils.flattenV2(Js_array.map((function (item) {\n var files = item.result;\n switch (files.TAG | 0) {\n case /* Files */0 :\n return files._0;\n case /* AudioRecord */5 :\n return [files._0];\n default:\n return [];\n }\n }), checklist)));\n}\n\nexport {\n title ,\n result ,\n optional ,\n make ,\n fromTargetChecklistItem ,\n updateResultAtIndex ,\n makeFile ,\n filename ,\n fileId ,\n fileIds ,\n kindAsString ,\n resultAsJson ,\n validString ,\n validShortText ,\n validLongText ,\n validFiles ,\n validMultiChoice ,\n validResponse ,\n validChecklist ,\n validResponses ,\n encode ,\n encodeArray ,\n makeFiles ,\n}\n/* UrlUtils Not a pure module */\n","\n\nimport * as Caml from \"./caml.js\";\nimport * as $$Array from \"./array.js\";\nimport * as Int32 from \"./int32.js\";\nimport * as Int64 from \"./int64.js\";\nimport * as Digest from \"./digest.js\";\nimport * as Caml_array from \"./caml_array.js\";\nimport * as Caml_int64 from \"./caml_int64.js\";\nimport * as Caml_string from \"./caml_string.js\";\n\nfunction random_seed(param) {\n return [(Math.floor(Math.random()*0x7fffffff))];\n}\n\nfunction assign(st1, st2) {\n $$Array.blit(st2.st, 0, st1.st, 0, 55);\n st1.idx = st2.idx;\n}\n\nfunction full_init(s, seed) {\n var combine = function (accu, x) {\n return Digest.string(accu + String(x));\n };\n var extract = function (d) {\n return ((Caml_string.get(d, 0) + (Caml_string.get(d, 1) << 8) | 0) + (Caml_string.get(d, 2) << 16) | 0) + (Caml_string.get(d, 3) << 24) | 0;\n };\n var seed$1 = seed.length === 0 ? [0] : seed;\n var l = seed$1.length;\n for(var i = 0; i <= 54; ++i){\n Caml_array.set(s.st, i, i);\n }\n var accu = \"x\";\n for(var i$1 = 0 ,i_finish = 54 + (\n 55 > l ? 55 : l\n ) | 0; i$1 <= i_finish; ++i$1){\n var j = i$1 % 55;\n var k = i$1 % l;\n accu = combine(accu, Caml_array.get(seed$1, k));\n Caml_array.set(s.st, j, (Caml_array.get(s.st, j) ^ extract(accu)) & 1073741823);\n }\n s.idx = 0;\n}\n\nfunction make(seed) {\n var result = {\n st: Caml_array.make(55, 0),\n idx: 0\n };\n full_init(result, seed);\n return result;\n}\n\nfunction make_self_init(param) {\n return make(random_seed(undefined));\n}\n\nfunction copy(s) {\n var result = {\n st: Caml_array.make(55, 0),\n idx: 0\n };\n assign(result, s);\n return result;\n}\n\nfunction bits(s) {\n s.idx = (s.idx + 1 | 0) % 55;\n var curval = Caml_array.get(s.st, s.idx);\n var newval = Caml_array.get(s.st, (s.idx + 24 | 0) % 55) + (curval ^ (curval >>> 25) & 31) | 0;\n var newval30 = newval & 1073741823;\n Caml_array.set(s.st, s.idx, newval30);\n return newval30;\n}\n\nfunction $$int(s, bound) {\n if (bound > 1073741823 || bound <= 0) {\n throw {\n RE_EXN_ID: \"Invalid_argument\",\n _1: \"Random.int\",\n Error: new Error()\n };\n }\n while(true) {\n var r = bits(s);\n var v = r % bound;\n if ((r - v | 0) <= ((1073741823 - bound | 0) + 1 | 0)) {\n return v;\n }\n continue ;\n };\n}\n\nfunction int32(s, bound) {\n if (bound <= 0) {\n throw {\n RE_EXN_ID: \"Invalid_argument\",\n _1: \"Random.int32\",\n Error: new Error()\n };\n }\n while(true) {\n var b1 = bits(s);\n var b2 = ((bits(s) & 1) << 30);\n var r = b1 | b2;\n var v = r % bound;\n if ((r - v | 0) <= ((Int32.max_int - bound | 0) + 1 | 0)) {\n return v;\n }\n continue ;\n };\n}\n\nfunction int64(s, bound) {\n if (Caml.i64_le(bound, Caml_int64.zero)) {\n throw {\n RE_EXN_ID: \"Invalid_argument\",\n _1: \"Random.int64\",\n Error: new Error()\n };\n }\n while(true) {\n var b1 = Caml_int64.of_int32(bits(s));\n var b2 = Caml_int64.lsl_(Caml_int64.of_int32(bits(s)), 30);\n var b3 = Caml_int64.lsl_(Caml_int64.of_int32(bits(s) & 7), 60);\n var r = Caml_int64.or_(b1, Caml_int64.or_(b2, b3));\n var v = Caml_int64.mod_(r, bound);\n if (!Caml.i64_gt(Caml_int64.sub(r, v), Caml_int64.add(Caml_int64.sub(Int64.max_int, bound), Caml_int64.one))) {\n return v;\n }\n continue ;\n };\n}\n\nfunction rawfloat(s) {\n var r1 = bits(s);\n var r2 = bits(s);\n return (r1 / 1073741824.0 + r2) / 1073741824.0;\n}\n\nfunction $$float(s, bound) {\n return rawfloat(s) * bound;\n}\n\nfunction bool(s) {\n return (bits(s) & 1) === 0;\n}\n\nvar $$default = {\n st: [\n 987910699,\n 495797812,\n 364182224,\n 414272206,\n 318284740,\n 990407751,\n 383018966,\n 270373319,\n 840823159,\n 24560019,\n 536292337,\n 512266505,\n 189156120,\n 730249596,\n 143776328,\n 51606627,\n 140166561,\n 366354223,\n 1003410265,\n 700563762,\n 981890670,\n 913149062,\n 526082594,\n 1021425055,\n 784300257,\n 667753350,\n 630144451,\n 949649812,\n 48546892,\n 415514493,\n 258888527,\n 511570777,\n 89983870,\n 283659902,\n 308386020,\n 242688715,\n 482270760,\n 865188196,\n 1027664170,\n 207196989,\n 193777847,\n 619708188,\n 671350186,\n 149669678,\n 257044018,\n 87658204,\n 558145612,\n 183450813,\n 28133145,\n 901332182,\n 710253903,\n 510646120,\n 652377910,\n 409934019,\n 801085050\n ],\n idx: 0\n};\n\nfunction bits$1(param) {\n return bits($$default);\n}\n\nfunction $$int$1(bound) {\n return $$int($$default, bound);\n}\n\nfunction int32$1(bound) {\n return int32($$default, bound);\n}\n\nfunction int64$1(bound) {\n return int64($$default, bound);\n}\n\nfunction $$float$1(scale) {\n return rawfloat($$default) * scale;\n}\n\nfunction bool$1(param) {\n return bool($$default);\n}\n\nfunction full_init$1(seed) {\n full_init($$default, seed);\n}\n\nfunction init(seed) {\n full_init($$default, [seed]);\n}\n\nfunction self_init(param) {\n full_init$1(random_seed(undefined));\n}\n\nfunction get_state(param) {\n return copy($$default);\n}\n\nfunction set_state(s) {\n assign($$default, s);\n}\n\nvar State = {\n make: make,\n make_self_init: make_self_init,\n copy: copy,\n bits: bits,\n $$int: $$int,\n int32: int32,\n int64: int64,\n $$float: $$float,\n bool: bool\n};\n\nexport {\n init ,\n full_init$1 as full_init,\n self_init ,\n bits$1 as bits,\n $$int$1 as $$int,\n int32$1 as int32,\n int64$1 as int64,\n $$float$1 as $$float,\n bool$1 as bool,\n State ,\n get_state ,\n set_state ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as List from \"../../../../../node_modules/rescript/lib/es6/list.js\";\nimport * as $$Array from \"../../../../../node_modules/rescript/lib/es6/array.js\";\nimport * as Curry from \"../../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as Fetch from \"../../../../../node_modules/bs-fetch/src/Fetch.bs.js\";\nimport * as React from \"react\";\nimport * as Random from \"../../../../../node_modules/rescript/lib/es6/random.js\";\nimport * as ListUtils from \"../../../shared/utils/ListUtils.bs.js\";\nimport * as Caml_array from \"../../../../../node_modules/rescript/lib/es6/caml_array.js\";\nimport * as Js_promise from \"../../../../../node_modules/rescript/lib/es6/js_promise.js\";\nimport * as Caml_option from \"../../../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as Json_decode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\nimport * as $$Notification from \"../../../shared/Notification.bs.js\";\nimport * as Caml_exceptions from \"../../../../../node_modules/rescript/lib/es6/caml_exceptions.js\";\nimport * as AuthenticityToken from \"../../../shared/utils/AuthenticityToken.bs.js\";\n\nvar FormNotFound = /* @__PURE__ */Caml_exceptions.create(\"CoursesCurriculum__FileForm.FormNotFound\");\n\nvar UnexpectedResponse = /* @__PURE__ */Caml_exceptions.create(\"CoursesCurriculum__FileForm.UnexpectedResponse\");\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.CoursesCurriculum__FileForm\";\n\nfunction tr(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nvar defaultTitle = tr(undefined, undefined, \"choose_upload\");\n\nfunction reducer(state, action) {\n if (typeof action === \"number\") {\n return {\n formId: state.formId,\n filename: defaultTitle,\n errors: /* [] */0\n };\n } else if (action.TAG === /* AttachFile */0) {\n return {\n formId: state.formId,\n filename: action._0,\n errors: /* [] */0\n };\n } else {\n return {\n formId: state.formId,\n filename: action._0,\n errors: action._1\n };\n }\n}\n\nfunction handleResponseJSON(filename, send, attachFileCB, json) {\n var id = Json_decode.field(\"id\", Json_decode.string, json);\n Curry._2(attachFileCB, id, filename);\n return Curry._1(send, /* ResetForm */0);\n}\n\nfunction apiErrorTitle(x) {\n if (x.RE_EXN_ID === UnexpectedResponse) {\n return tr(undefined, undefined, \"error\") + String(x._1);\n } else {\n return tr(undefined, undefined, \"smth_went_wrong\");\n }\n}\n\nfunction uploadFile(filename, send, attachFileCB, formData) {\n Js_promise.$$catch((function (error) {\n var title = apiErrorTitle(error);\n $$Notification.error(title, tr(undefined, undefined, \"please_reload\"));\n return Promise.resolve(undefined);\n }), Js_promise.then_((function (json) {\n return Promise.resolve(handleResponseJSON(filename, send, attachFileCB, json));\n }), Js_promise.then_((function (response) {\n if (response.ok) {\n return Fetch.$$Response.json(response);\n } else {\n return Promise.reject({\n RE_EXN_ID: UnexpectedResponse,\n _1: response.status\n });\n }\n }), fetch(\"/timeline_event_files/\", Fetch.RequestInit.make(/* Post */2, undefined, Caml_option.some(formData), undefined, undefined, undefined, /* SameOrigin */1, undefined, undefined, undefined, undefined, undefined)(undefined)))));\n}\n\nfunction submitForm(filename, formId, send, addFileAttachmentCB) {\n var element = document.getElementById(formId);\n if (!(element == null)) {\n return uploadFile(filename, send, addFileAttachmentCB, new FormData(element));\n }\n throw {\n RE_EXN_ID: FormNotFound,\n _1: formId,\n Error: new Error()\n };\n}\n\nfunction attachFile(state, send, attachingCB, attachFileCB, preview, $$event) {\n if (preview) {\n return $$Notification.notice(tr(undefined, undefined, \"preview_mode\"), tr(undefined, undefined, \"cannot_attach\"));\n }\n var files = $$event.target.files;\n if (files.length === 0) {\n return ;\n }\n var file = Caml_array.get(files, 0);\n var errors = file.size > window.pupilfirst.maxUploadFileSize ? ({\n hd: tr(undefined, undefined, \"max_file_size\"),\n tl: /* [] */0\n }) : /* [] */0;\n if (!ListUtils.isEmpty(errors)) {\n return Curry._1(send, {\n TAG: /* SelectFile */1,\n _0: file.name,\n _1: errors\n });\n }\n var filename = file.name;\n Curry._1(attachingCB, true);\n Curry._1(send, {\n TAG: /* AttachFile */0,\n _0: filename\n });\n submitForm(filename, state.formId, send, attachFileCB);\n}\n\nfunction CoursesCurriculum__FileForm(Props) {\n var attachFileCB = Props.attachFileCB;\n var attachingCB = Props.attachingCB;\n var preview = Props.preview;\n var index = Props.index;\n var match = React.useReducer(reducer, {\n formId: String(Random.$$int(99999)),\n filename: defaultTitle,\n errors: /* [] */0\n });\n var send = match[1];\n var state = match[0];\n return React.createElement(\"div\", undefined, React.createElement(\"form\", {\n className: \"flex items-center flex-wrap\",\n id: state.formId\n }, React.createElement(\"input\", {\n name: \"authenticity_token\",\n type: \"hidden\",\n value: AuthenticityToken.fromHead(undefined)\n }), React.createElement(\"input\", {\n className: \"hidden\",\n id: \"attachment_file_\" + String(index),\n multiple: false,\n name: \"file\",\n required: true,\n type: \"file\",\n onChange: (function (param) {\n return attachFile(state, send, attachingCB, attachFileCB, preview, param);\n })\n }), React.createElement(\"label\", {\n className: \"text-center cursor-pointer truncate bg-gray-50 border border-dashed border-gray-600 flex px-4 py-5 items-center font-semibold rounded text-sm hover:text-primary-600 hover:bg-primary-100 hover:border-primary-500 grow\",\n htmlFor: \"attachment_file_\" + String(index)\n }, React.createElement(\"span\", {\n className: \"w-full\"\n }, React.createElement(\"i\", {\n className: \"fas fa-upload me-2 text-lg\"\n }), React.createElement(\"span\", {\n className: \"truncate\"\n }, state.filename)))), $$Array.of_list(List.map((function (error) {\n return React.createElement(\"div\", {\n key: error,\n className: \"mt-2 text-red-700 text-sm\"\n }, React.createElement(\"i\", {\n className: \"fas fa-exclamation-circle me-2\"\n }), React.createElement(\"span\", undefined, error));\n }), state.errors)), ListUtils.isEmpty(state.errors) ? null : React.createElement(\"div\", {\n className: \"px-4 mt-2 text-sm\"\n }, tr(undefined, undefined, \"another_file\")));\n}\n\nvar make = CoursesCurriculum__FileForm;\n\nexport {\n FormNotFound ,\n UnexpectedResponse ,\n str ,\n tr ,\n defaultTitle ,\n reducer ,\n handleResponseJSON ,\n apiErrorTitle ,\n uploadFile ,\n submitForm ,\n attachFile ,\n make ,\n}\n/* defaultTitle Not a pure module */\n","/* Blob.js\n * A Blob, File, FileReader & URL implementation.\n * 2020-02-01\n *\n * By Eli Grey, https://eligrey.com\n * By Jimmy Wärting, https://github.com/jimmywarting\n * License: MIT\n * See https://github.com/eligrey/Blob.js/blob/master/LICENSE.md\n */\n\n(function(global) {\n\t(function (factory) {\n\t\tif (typeof define === \"function\" && define.amd) {\n\t\t\t// AMD. Register as an anonymous module.\n\t\t\tdefine([\"exports\"], factory);\n\t\t} else if (typeof exports === \"object\" && typeof exports.nodeName !== \"string\") {\n\t\t\t// CommonJS\n\t\t\tfactory(exports);\n\t\t} else {\n\t\t\t// Browser globals\n\t\t\tfactory(global);\n\t\t}\n\t})(function (exports) {\n\t\t\"use strict\";\n\n\t\tvar BlobBuilder = global.BlobBuilder\n\t\t\t|| global.WebKitBlobBuilder\n\t\t\t|| global.MSBlobBuilder\n\t\t\t|| global.MozBlobBuilder;\n\n\t\tvar URL = global.URL || global.webkitURL || function (href, a) {\n\t\t\ta = document.createElement(\"a\");\n\t\t\ta.href = href;\n\t\t\treturn a;\n\t\t};\n\n\t\tvar origBlob = global.Blob;\n\t\tvar createObjectURL = URL.createObjectURL;\n\t\tvar revokeObjectURL = URL.revokeObjectURL;\n\t\tvar strTag = global.Symbol && global.Symbol.toStringTag;\n\t\tvar blobSupported = false;\n\t\tvar blobSupportsArrayBufferView = false;\n\t\tvar arrayBufferSupported = !!global.ArrayBuffer;\n\t\tvar blobBuilderSupported = BlobBuilder\n\t\t\t&& BlobBuilder.prototype.append\n\t\t\t&& BlobBuilder.prototype.getBlob;\n\n\t\ttry {\n\t\t\t// Check if Blob constructor is supported\n\t\t\tblobSupported = new Blob([\"ä\"]).size === 2;\n\n\t\t\t// Check if Blob constructor supports ArrayBufferViews\n\t\t\t// Fails in Safari 6, so we need to map to ArrayBuffers there.\n\t\t\tblobSupportsArrayBufferView = new Blob([new Uint8Array([1, 2])]).size === 2;\n\t\t} catch (e) {/**/}\n\n\n\t\t// Helper function that maps ArrayBufferViews to ArrayBuffers\n\t\t// Used by BlobBuilder constructor and old browsers that didn't\n\t\t// support it in the Blob constructor.\n\t\tfunction mapArrayBufferViews (ary) {\n\t\t\treturn ary.map(function (chunk) {\n\t\t\t\tif (chunk.buffer instanceof ArrayBuffer) {\n\t\t\t\t\tvar buf = chunk.buffer;\n\n\t\t\t\t\t// if this is a subarray, make a copy so we only\n\t\t\t\t\t// include the subarray region from the underlying buffer\n\t\t\t\t\tif (chunk.byteLength !== buf.byteLength) {\n\t\t\t\t\t\tvar copy = new Uint8Array(chunk.byteLength);\n\t\t\t\t\t\tcopy.set(new Uint8Array(buf, chunk.byteOffset, chunk.byteLength));\n\t\t\t\t\t\tbuf = copy.buffer;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn buf;\n\t\t\t\t}\n\n\t\t\t\treturn chunk;\n\t\t\t});\n\t\t}\n\n\t\tfunction BlobBuilderConstructor (ary, options) {\n\t\t\toptions = options || {};\n\n\t\t\tvar bb = new BlobBuilder();\n\t\t\tmapArrayBufferViews(ary).forEach(function (part) {\n\t\t\t\tbb.append(part);\n\t\t\t});\n\n\t\t\treturn options.type ? bb.getBlob(options.type) : bb.getBlob();\n\t\t}\n\n\t\tfunction BlobConstructor (ary, options) {\n\t\t\treturn new origBlob(mapArrayBufferViews(ary), options || {});\n\t\t}\n\n\t\tif (global.Blob) {\n\t\t\tBlobBuilderConstructor.prototype = Blob.prototype;\n\t\t\tBlobConstructor.prototype = Blob.prototype;\n\t\t}\n\n\t\t/********************************************************/\n\t\t/* String Encoder fallback */\n\t\t/********************************************************/\n\t\tfunction stringEncode (string) {\n\t\t\tvar pos = 0;\n\t\t\tvar len = string.length;\n\t\t\tvar Arr = global.Uint8Array || Array; // Use byte array when possible\n\n\t\t\tvar at = 0; // output position\n\t\t\tvar tlen = Math.max(32, len + (len >> 1) + 7); // 1.5x size\n\t\t\tvar target = new Arr((tlen >> 3) << 3); // ... but at 8 byte offset\n\n\t\t\twhile (pos < len) {\n\t\t\t\tvar value = string.charCodeAt(pos++);\n\t\t\t\tif (value >= 0xd800 && value <= 0xdbff) {\n\t\t\t\t\t// high surrogate\n\t\t\t\t\tif (pos < len) {\n\t\t\t\t\t\tvar extra = string.charCodeAt(pos);\n\t\t\t\t\t\tif ((extra & 0xfc00) === 0xdc00) {\n\t\t\t\t\t\t\t++pos;\n\t\t\t\t\t\t\tvalue = ((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (value >= 0xd800 && value <= 0xdbff) {\n\t\t\t\t\t\tcontinue; // drop lone surrogate\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// expand the buffer if we couldn't write 4 bytes\n\t\t\t\tif (at + 4 > target.length) {\n\t\t\t\t\ttlen += 8; // minimum extra\n\t\t\t\t\ttlen *= (1.0 + (pos / string.length) * 2); // take 2x the remaining\n\t\t\t\t\ttlen = (tlen >> 3) << 3; // 8 byte offset\n\n\t\t\t\t\tvar update = new Uint8Array(tlen);\n\t\t\t\t\tupdate.set(target);\n\t\t\t\t\ttarget = update;\n\t\t\t\t}\n\n\t\t\t\tif ((value & 0xffffff80) === 0) { // 1-byte\n\t\t\t\t\ttarget[at++] = value; // ASCII\n\t\t\t\t\tcontinue;\n\t\t\t\t} else if ((value & 0xfffff800) === 0) { // 2-byte\n\t\t\t\t\ttarget[at++] = ((value >> 6) & 0x1f) | 0xc0;\n\t\t\t\t} else if ((value & 0xffff0000) === 0) { // 3-byte\n\t\t\t\t\ttarget[at++] = ((value >> 12) & 0x0f) | 0xe0;\n\t\t\t\t\ttarget[at++] = ((value >> 6) & 0x3f) | 0x80;\n\t\t\t\t} else if ((value & 0xffe00000) === 0) { // 4-byte\n\t\t\t\t\ttarget[at++] = ((value >> 18) & 0x07) | 0xf0;\n\t\t\t\t\ttarget[at++] = ((value >> 12) & 0x3f) | 0x80;\n\t\t\t\t\ttarget[at++] = ((value >> 6) & 0x3f) | 0x80;\n\t\t\t\t} else {\n\t\t\t\t\t// FIXME: do we care\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\ttarget[at++] = (value & 0x3f) | 0x80;\n\t\t\t}\n\n\t\t\treturn target.slice(0, at);\n\t\t}\n\n\t\t/********************************************************/\n\t\t/* String Decoder fallback */\n\t\t/********************************************************/\n\t\tfunction stringDecode (buf) {\n\t\t\tvar end = buf.length;\n\t\t\tvar res = [];\n\n\t\t\tvar i = 0;\n\t\t\twhile (i < end) {\n\t\t\t\tvar firstByte = buf[i];\n\t\t\t\tvar codePoint = null;\n\t\t\t\tvar bytesPerSequence = (firstByte > 0xEF) ? 4\n\t\t\t\t\t: (firstByte > 0xDF) ? 3\n\t\t\t\t\t\t: (firstByte > 0xBF) ? 2\n\t\t\t\t\t\t\t: 1;\n\n\t\t\t\tif (i + bytesPerSequence <= end) {\n\t\t\t\t\tvar secondByte, thirdByte, fourthByte, tempCodePoint;\n\n\t\t\t\t\tswitch (bytesPerSequence) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tif (firstByte < 0x80) {\n\t\t\t\t\t\t\tcodePoint = firstByte;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tsecondByte = buf[i + 1];\n\t\t\t\t\t\tif ((secondByte & 0xC0) === 0x80) {\n\t\t\t\t\t\t\ttempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);\n\t\t\t\t\t\t\tif (tempCodePoint > 0x7F) {\n\t\t\t\t\t\t\t\tcodePoint = tempCodePoint;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tsecondByte = buf[i + 1];\n\t\t\t\t\t\tthirdByte = buf[i + 2];\n\t\t\t\t\t\tif ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n\t\t\t\t\t\t\ttempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);\n\t\t\t\t\t\t\tif (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n\t\t\t\t\t\t\t\tcodePoint = tempCodePoint;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 4:\n\t\t\t\t\t\tsecondByte = buf[i + 1];\n\t\t\t\t\t\tthirdByte = buf[i + 2];\n\t\t\t\t\t\tfourthByte = buf[i + 3];\n\t\t\t\t\t\tif ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n\t\t\t\t\t\t\ttempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);\n\t\t\t\t\t\t\tif (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n\t\t\t\t\t\t\t\tcodePoint = tempCodePoint;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (codePoint === null) {\n\t\t\t\t\t// we did not generate a valid codePoint so insert a\n\t\t\t\t\t// replacement char (U+FFFD) and advance only 1 byte\n\t\t\t\t\tcodePoint = 0xFFFD;\n\t\t\t\t\tbytesPerSequence = 1;\n\t\t\t\t} else if (codePoint > 0xFFFF) {\n\t\t\t\t\t// encode to utf16 (surrogate pair dance)\n\t\t\t\t\tcodePoint -= 0x10000;\n\t\t\t\t\tres.push(codePoint >>> 10 & 0x3FF | 0xD800);\n\t\t\t\t\tcodePoint = 0xDC00 | codePoint & 0x3FF;\n\t\t\t\t}\n\n\t\t\t\tres.push(codePoint);\n\t\t\t\ti += bytesPerSequence;\n\t\t\t}\n\n\t\t\tvar len = res.length;\n\t\t\tvar str = \"\";\n\t\t\tvar j = 0;\n\n\t\t\twhile (j < len) {\n\t\t\t\tstr += String.fromCharCode.apply(String, res.slice(j, j += 0x1000));\n\t\t\t}\n\n\t\t\treturn str;\n\t\t}\n\n\t\t// string -> buffer\n\t\tvar textEncode = typeof TextEncoder === \"function\"\n\t\t\t? TextEncoder.prototype.encode.bind(new TextEncoder())\n\t\t\t: stringEncode;\n\n\t\t// buffer -> string\n\t\tvar textDecode = typeof TextDecoder === \"function\"\n\t\t\t? TextDecoder.prototype.decode.bind(new TextDecoder())\n\t\t\t: stringDecode;\n\n\t\tfunction FakeBlobBuilder () {\n\t\t\tfunction isDataView (obj) {\n\t\t\t\treturn obj && Object.prototype.isPrototypeOf.call(DataView, obj);\n\t\t\t}\n\t\t\tfunction bufferClone (buf) {\n\t\t\t\tvar view = new Array(buf.byteLength);\n\t\t\t\tvar array = new Uint8Array(buf);\n\t\t\t\tvar i = view.length;\n\t\t\t\twhile (i--) {\n\t\t\t\t\tview[i] = array[i];\n\t\t\t\t}\n\t\t\t\treturn view;\n\t\t\t}\n\t\t\tfunction array2base64 (input) {\n\t\t\t\tvar byteToCharMap = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n\t\t\t\tvar output = [];\n\n\t\t\t\tfor (var i = 0; i < input.length; i += 3) {\n\t\t\t\t\tvar byte1 = input[i];\n\t\t\t\t\tvar haveByte2 = i + 1 < input.length;\n\t\t\t\t\tvar byte2 = haveByte2 ? input[i + 1] : 0;\n\t\t\t\t\tvar haveByte3 = i + 2 < input.length;\n\t\t\t\t\tvar byte3 = haveByte3 ? input[i + 2] : 0;\n\n\t\t\t\t\tvar outByte1 = byte1 >> 2;\n\t\t\t\t\tvar outByte2 = ((byte1 & 0x03) << 4) | (byte2 >> 4);\n\t\t\t\t\tvar outByte3 = ((byte2 & 0x0F) << 2) | (byte3 >> 6);\n\t\t\t\t\tvar outByte4 = byte3 & 0x3F;\n\n\t\t\t\t\tif (!haveByte3) {\n\t\t\t\t\t\toutByte4 = 64;\n\n\t\t\t\t\t\tif (!haveByte2) {\n\t\t\t\t\t\t\toutByte3 = 64;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tbyteToCharMap[outByte1], byteToCharMap[outByte2],\n\t\t\t\t\t\tbyteToCharMap[outByte3], byteToCharMap[outByte4]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn output.join(\"\");\n\t\t\t}\n\n\t\t\tvar create = Object.create || function (a) {\n\t\t\t\tfunction c () {}\n\t\t\t\tc.prototype = a;\n\t\t\t\treturn new c();\n\t\t\t};\n\n\t\t\tif (arrayBufferSupported) {\n\t\t\t\tvar viewClasses = [\n\t\t\t\t\t\"[object Int8Array]\",\n\t\t\t\t\t\"[object Uint8Array]\",\n\t\t\t\t\t\"[object Uint8ClampedArray]\",\n\t\t\t\t\t\"[object Int16Array]\",\n\t\t\t\t\t\"[object Uint16Array]\",\n\t\t\t\t\t\"[object Int32Array]\",\n\t\t\t\t\t\"[object Uint32Array]\",\n\t\t\t\t\t\"[object Float32Array]\",\n\t\t\t\t\t\"[object Float64Array]\"\n\t\t\t\t];\n\n\t\t\t\tvar isArrayBufferView = ArrayBuffer.isView || function (obj) {\n\t\t\t\t\treturn obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1;\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tfunction concatTypedarrays (chunks) {\n\t\t\t\tvar size = 0;\n\t\t\t\tvar j = chunks.length;\n\t\t\t\twhile (j--) { size += chunks[j].length; }\n\t\t\t\tvar b = new Uint8Array(size);\n\t\t\t\tvar offset = 0;\n\t\t\t\tfor (var i = 0; i < chunks.length; i++) {\n\t\t\t\t\tvar chunk = chunks[i];\n\t\t\t\t\tb.set(chunk, offset);\n\t\t\t\t\toffset += chunk.byteLength || chunk.length;\n\t\t\t\t}\n\n\t\t\t\treturn b;\n\t\t\t}\n\n\t\t\t/********************************************************/\n\t\t\t/* Blob constructor */\n\t\t\t/********************************************************/\n\t\t\tfunction Blob (chunks, opts) {\n\t\t\t\tchunks = chunks || [];\n\t\t\t\topts = opts == null ? {} : opts;\n\t\t\t\tfor (var i = 0, len = chunks.length; i < len; i++) {\n\t\t\t\t\tvar chunk = chunks[i];\n\t\t\t\t\tif (chunk instanceof Blob) {\n\t\t\t\t\t\tchunks[i] = chunk._buffer;\n\t\t\t\t\t} else if (typeof chunk === \"string\") {\n\t\t\t\t\t\tchunks[i] = textEncode(chunk);\n\t\t\t\t\t} else if (arrayBufferSupported && (Object.prototype.isPrototypeOf.call(ArrayBuffer, chunk) || isArrayBufferView(chunk))) {\n\t\t\t\t\t\tchunks[i] = bufferClone(chunk);\n\t\t\t\t\t} else if (arrayBufferSupported && isDataView(chunk)) {\n\t\t\t\t\t\tchunks[i] = bufferClone(chunk.buffer);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tchunks[i] = textEncode(String(chunk));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis._buffer = global.Uint8Array\n\t\t\t\t\t? concatTypedarrays(chunks)\n\t\t\t\t\t: [].concat.apply([], chunks);\n\t\t\t\tthis.size = this._buffer.length;\n\n\t\t\t\tthis.type = opts.type || \"\";\n\t\t\t\tif (/[^\\u0020-\\u007E]/.test(this.type)) {\n\t\t\t\t\tthis.type = \"\";\n\t\t\t\t} else {\n\t\t\t\t\tthis.type = this.type.toLowerCase();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tBlob.prototype.arrayBuffer = function () {\n\t\t\t\treturn Promise.resolve(this._buffer.buffer || this._buffer);\n\t\t\t};\n\n\t\t\tBlob.prototype.text = function () {\n\t\t\t\treturn Promise.resolve(textDecode(this._buffer));\n\t\t\t};\n\n\t\t\tBlob.prototype.slice = function (start, end, type) {\n\t\t\t\tvar slice = this._buffer.slice(start || 0, end || this._buffer.length);\n\t\t\t\treturn new Blob([slice], {type: type});\n\t\t\t};\n\n\t\t\tBlob.prototype.toString = function () {\n\t\t\t\treturn \"[object Blob]\";\n\t\t\t};\n\n\t\t\t/********************************************************/\n\t\t\t/* File constructor */\n\t\t\t/********************************************************/\n\t\t\tfunction File (chunks, name, opts) {\n\t\t\t\topts = opts || {};\n\t\t\t\tvar a = Blob.call(this, chunks, opts) || this;\n\t\t\t\ta.name = name.replace(/\\//g, \":\");\n\t\t\t\ta.lastModifiedDate = opts.lastModified ? new Date(opts.lastModified) : new Date();\n\t\t\t\ta.lastModified = +a.lastModifiedDate;\n\n\t\t\t\treturn a;\n\t\t\t}\n\n\t\t\tFile.prototype = create(Blob.prototype);\n\t\t\tFile.prototype.constructor = File;\n\n\t\t\tif (Object.setPrototypeOf) {\n\t\t\t\tObject.setPrototypeOf(File, Blob);\n\t\t\t} else {\n\t\t\t\ttry {\n\t\t\t\t\tFile.__proto__ = Blob;\n\t\t\t\t} catch (e) {/**/}\n\t\t\t}\n\n\t\t\tFile.prototype.toString = function () {\n\t\t\t\treturn \"[object File]\";\n\t\t\t};\n\n\t\t\t/********************************************************/\n\t\t\t/* FileReader constructor */\n\t\t\t/********************************************************/\n\t\t\tfunction FileReader () {\n\t\t\t\tif (!(this instanceof FileReader)) {\n\t\t\t\t\tthrow new TypeError(\"Failed to construct 'FileReader': Please use the 'new' operator, this DOM object constructor cannot be called as a function.\");\n\t\t\t\t}\n\n\t\t\t\tvar delegate = document.createDocumentFragment();\n\t\t\t\tthis.addEventListener = delegate.addEventListener;\n\t\t\t\tthis.dispatchEvent = function (evt) {\n\t\t\t\t\tvar local = this[\"on\" + evt.type];\n\t\t\t\t\tif (typeof local === \"function\") local(evt);\n\t\t\t\t\tdelegate.dispatchEvent(evt);\n\t\t\t\t};\n\t\t\t\tthis.removeEventListener = delegate.removeEventListener;\n\t\t\t}\n\n\t\t\tfunction _read (fr, blob, kind) {\n\t\t\t\tif (!(blob instanceof Blob)) {\n\t\t\t\t\tthrow new TypeError(\"Failed to execute '\" + kind + \"' on 'FileReader': parameter 1 is not of type 'Blob'.\");\n\t\t\t\t}\n\n\t\t\t\tfr.result = \"\";\n\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\tthis.readyState = FileReader.LOADING;\n\t\t\t\t\tfr.dispatchEvent(new Event(\"load\"));\n\t\t\t\t\tfr.dispatchEvent(new Event(\"loadend\"));\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tFileReader.EMPTY = 0;\n\t\t\tFileReader.LOADING = 1;\n\t\t\tFileReader.DONE = 2;\n\t\t\tFileReader.prototype.error = null;\n\t\t\tFileReader.prototype.onabort = null;\n\t\t\tFileReader.prototype.onerror = null;\n\t\t\tFileReader.prototype.onload = null;\n\t\t\tFileReader.prototype.onloadend = null;\n\t\t\tFileReader.prototype.onloadstart = null;\n\t\t\tFileReader.prototype.onprogress = null;\n\n\t\t\tFileReader.prototype.readAsDataURL = function (blob) {\n\t\t\t\t_read(this, blob, \"readAsDataURL\");\n\t\t\t\tthis.result = \"data:\" + blob.type + \";base64,\" + array2base64(blob._buffer);\n\t\t\t};\n\n\t\t\tFileReader.prototype.readAsText = function (blob) {\n\t\t\t\t_read(this, blob, \"readAsText\");\n\t\t\t\tthis.result = textDecode(blob._buffer);\n\t\t\t};\n\n\t\t\tFileReader.prototype.readAsArrayBuffer = function (blob) {\n\t\t\t\t_read(this, blob, \"readAsText\");\n\t\t\t\t// return ArrayBuffer when possible\n\t\t\t\tthis.result = (blob._buffer.buffer || blob._buffer).slice();\n\t\t\t};\n\n\t\t\tFileReader.prototype.abort = function () {};\n\n\t\t\t/********************************************************/\n\t\t\t/* URL */\n\t\t\t/********************************************************/\n\t\t\tURL.createObjectURL = function (blob) {\n\t\t\t\treturn blob instanceof Blob\n\t\t\t\t\t? \"data:\" + blob.type + \";base64,\" + array2base64(blob._buffer)\n\t\t\t\t\t: createObjectURL.call(URL, blob);\n\t\t\t};\n\n\t\t\tURL.revokeObjectURL = function (url) {\n\t\t\t\trevokeObjectURL && revokeObjectURL.call(URL, url);\n\t\t\t};\n\n\t\t\t/********************************************************/\n\t\t\t/* XHR */\n\t\t\t/********************************************************/\n\t\t\tvar _send = global.XMLHttpRequest && global.XMLHttpRequest.prototype.send;\n\t\t\tif (_send) {\n\t\t\t\tXMLHttpRequest.prototype.send = function (data) {\n\t\t\t\t\tif (data instanceof Blob) {\n\t\t\t\t\t\tthis.setRequestHeader(\"Content-Type\", data.type);\n\t\t\t\t\t\t_send.call(this, textDecode(data._buffer));\n\t\t\t\t\t} else {\n\t\t\t\t\t\t_send.call(this, data);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\n\t\t\texports.Blob = Blob;\n\t\t\texports.File = File;\n\t\t\texports.FileReader = FileReader;\n\t\t\texports.URL = URL;\n\t\t}\n\n\t\tfunction fixFileAndXHR () {\n\t\t\tvar isIE = !!global.ActiveXObject || (\n\t\t\t\t\"-ms-scroll-limit\" in document.documentElement.style &&\n\t\t\t\t\"-ms-ime-align\" in document.documentElement.style\n\t\t\t);\n\n\t\t\t// Monkey patched\n\t\t\t// IE doesn't set Content-Type header on XHR whose body is a typed Blob\n\t\t\t// https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/6047383\n\t\t\tvar _send = global.XMLHttpRequest && global.XMLHttpRequest.prototype.send;\n\t\t\tif (isIE && _send) {\n\t\t\t\tXMLHttpRequest.prototype.send = function (data) {\n\t\t\t\t\tif (data instanceof Blob) {\n\t\t\t\t\t\tthis.setRequestHeader(\"Content-Type\", data.type);\n\t\t\t\t\t\t_send.call(this, data);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t_send.call(this, data);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tnew File([], \"\");\n\t\t\t\texports.File = global.File;\n\t\t\t\texports.FileReader = global.FileReader;\n\t\t\t} catch (e) {\n\t\t\t\ttry {\n\t\t\t\t\texports.File = new Function(\"class File extends Blob {\" +\n\t\t\t\t\t\t\"constructor(chunks, name, opts) {\" +\n\t\t\t\t\t\t\t\"opts = opts || {};\" +\n\t\t\t\t\t\t\t\"super(chunks, opts || {});\" +\n\t\t\t\t\t\t\t\"this.name = name.replace(/\\\\//g, \\\":\\\");\" +\n\t\t\t\t\t\t\t\"this.lastModifiedDate = opts.lastModified ? new Date(opts.lastModified) : new Date();\" +\n\t\t\t\t\t\t\t\"this.lastModified = +this.lastModifiedDate;\" +\n\t\t\t\t\t\t\"}};\" +\n\t\t\t\t\t\t\"return new File([], \\\"\\\"), File\"\n\t\t\t\t\t)();\n\t\t\t\t} catch (e) {\n\t\t\t\t\texports.File = function (b, d, c) {\n\t\t\t\t\t\tvar blob = new Blob(b, c);\n\t\t\t\t\t\tvar t = c && void 0 !== c.lastModified ? new Date(c.lastModified) : new Date();\n\n\t\t\t\t\t\tblob.name = d.replace(/\\//g, \":\");\n\t\t\t\t\t\tblob.lastModifiedDate = t;\n\t\t\t\t\t\tblob.lastModified = +t;\n\t\t\t\t\t\tblob.toString = function () {\n\t\t\t\t\t\t\treturn \"[object File]\";\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (strTag) {\n\t\t\t\t\t\t\tblob[strTag] = \"File\";\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn blob;\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (blobSupported) {\n\t\t\tfixFileAndXHR();\n\t\t\texports.Blob = blobSupportsArrayBufferView ? global.Blob : BlobConstructor;\n\t\t} else if (blobBuilderSupported) {\n\t\t\tfixFileAndXHR();\n\t\t\texports.Blob = BlobBuilderConstructor;\n\t\t} else {\n\t\t\tFakeBlobBuilder();\n\t\t}\n\n\t\tif (strTag) {\n\t\t\tif (!exports.File.prototype[strTag]) exports.File.prototype[strTag] = \"File\";\n\t\t\tif (!exports.Blob.prototype[strTag]) exports.Blob.prototype[strTag] = \"Blob\";\n\t\t\tif (!exports.FileReader.prototype[strTag]) exports.FileReader.prototype[strTag] = \"FileReader\";\n\t\t}\n\n\t\tvar blob = exports.Blob.prototype;\n\t\tvar stream;\n\n\t\ttry {\n\t\t\tnew ReadableStream({ type: \"bytes\" });\n\t\t\tstream = function stream() {\n\t\t\t\tvar position = 0;\n\t\t\t\tvar blob = this;\n\n\t\t\t\treturn new ReadableStream({\n\t\t\t\t\ttype: \"bytes\",\n\t\t\t\t\tautoAllocateChunkSize: 524288,\n\n\t\t\t\t\tpull: function (controller) {\n\t\t\t\t\t\tvar v = controller.byobRequest.view;\n\t\t\t\t\t\tvar chunk = blob.slice(position, position + v.byteLength);\n\t\t\t\t\t\treturn chunk.arrayBuffer()\n\t\t\t\t\t\t\t.then(function (buffer) {\n\t\t\t\t\t\t\t\tvar uint8array = new Uint8Array(buffer);\n\t\t\t\t\t\t\t\tvar bytesRead = uint8array.byteLength;\n\n\t\t\t\t\t\t\t\tposition += bytesRead;\n\t\t\t\t\t\t\t\tv.set(uint8array);\n\t\t\t\t\t\t\t\tcontroller.byobRequest.respond(bytesRead);\n\n\t\t\t\t\t\t\t\tif(position >= blob.size)\n\t\t\t\t\t\t\t\t\tcontroller.close();\n\t\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t};\n\t\t} catch (e) {\n\t\t\ttry {\n\t\t\t\tnew ReadableStream({});\n\t\t\t\tstream = function stream(blob){\n\t\t\t\t\tvar position = 0;\n\n\t\t\t\t\treturn new ReadableStream({\n\t\t\t\t\t\tpull: function (controller) {\n\t\t\t\t\t\t\tvar chunk = blob.slice(position, position + 524288);\n\n\t\t\t\t\t\t\treturn chunk.arrayBuffer().then(function (buffer) {\n\t\t\t\t\t\t\t\tposition += buffer.byteLength;\n\t\t\t\t\t\t\t\tvar uint8array = new Uint8Array(buffer);\n\t\t\t\t\t\t\t\tcontroller.enqueue(uint8array);\n\n\t\t\t\t\t\t\t\tif (position == blob.size)\n\t\t\t\t\t\t\t\t\tcontroller.close();\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t} catch (e) {\n\t\t\t\ttry {\n\t\t\t\t\tnew Response(\"\").body.getReader().read();\n\t\t\t\t\tstream = function stream() {\n\t\t\t\t\t\treturn (new Response(this)).body;\n\t\t\t\t\t};\n\t\t\t\t} catch (e) {\n\t\t\t\t\tstream = function stream() {\n\t\t\t\t\t\tthrow new Error(\"Include https://github.com/MattiasBuelens/web-streams-polyfill\");\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction promisify(obj) {\n\t\t\treturn new Promise(function(resolve, reject) {\n\t\t\t\tobj.onload = obj.onerror = function(evt) {\n\t\t\t\t\tobj.onload = obj.onerror = null;\n\n\t\t\t\t\tevt.type === \"load\" ?\n\t\t\t\t\t\tresolve(obj.result || obj) :\n\t\t\t\t\t\treject(new Error(\"Failed to read the blob/file\"));\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\n\t\tif (!blob.arrayBuffer) {\n\t\t\tblob.arrayBuffer = function arrayBuffer() {\n\t\t\t\tvar fr = new FileReader();\n\t\t\t\tfr.readAsArrayBuffer(this);\n\t\t\t\treturn promisify(fr);\n\t\t\t};\n\t\t}\n\n\t\tif (!blob.text) {\n\t\t\tblob.text = function text() {\n\t\t\t\tvar fr = new FileReader();\n\t\t\t\tfr.readAsText(this);\n\t\t\t\treturn promisify(fr);\n\t\t\t};\n\t\t}\n\n\t\tif (!blob.stream) {\n\t\t\tblob.stream = stream;\n\t\t}\n\t});\n})(\n\ttypeof self !== \"undefined\" && self ||\n\t\ttypeof window !== \"undefined\" && window ||\n\t\ttypeof global !== \"undefined\" && global ||\n\t\tthis\n);\n","(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(a,b,c){var d=new XMLHttpRequest;d.open(\"GET\",a),d.responseType=\"blob\",d.onload=function(){g(d.response,b,c)},d.onerror=function(){console.error(\"could not download file\")},d.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),g=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype&&!a?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(b,d,e,g){if(g=g||open(\"\",\"_blank\"),g&&(g.document.title=g.document.body.innerText=\"downloading...\"),\"string\"==typeof b)return c(b,d,e);var h=\"application/octet-stream\"===b.type,i=/constructor/i.test(f.HTMLElement)||f.safari,j=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((j||h&&i||a)&&\"undefined\"!=typeof FileReader){var k=new FileReader;k.onloadend=function(){var a=k.result;a=j?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),g?g.location.href=a:location=a,g=null},k.readAsDataURL(b)}else{var l=f.URL||f.webkitURL,m=l.createObjectURL(b);g?g.location=m:location.href=m,g=null,setTimeout(function(){l.revokeObjectURL(m)},4E4)}});f.saveAs=g.saveAs=g,\"undefined\"!=typeof module&&(module.exports=g)});\n\n//# sourceMappingURL=FileSaver.min.js.map","import { useState, useRef, useEffect } from \"react\";\nimport { error } from \"../../../shared/Notification.bs\";\nimport { Blob } from \"blob-polyfill\";\nimport { saveAs } from \"file-saver\";\n\nfunction audioRecorder(authenticity_token, attachingCB) {\n const [state, setState] = useState({\n recording: false,\n url: undefined,\n blob: undefined,\n id: undefined,\n });\n\n const mediaStreamRef = useRef();\n\n useEffect(() => {\n if (state.blob && state.blob.size < 5000000) {\n attachingCB(true);\n const formData = new FormData();\n formData.append(\"authenticity_token\", authenticity_token);\n formData.append(\"file\", state.blob);\n fetch(\"/timeline_event_files/\", {\n method: \"POST\",\n body: formData,\n })\n .then((res) => res.json())\n .then((res) => {\n setState({ ...state, id: res.id });\n })\n .catch((err) => {\n error(\"Something went wrong\", String(err));\n });\n }\n }, [state.blob]);\n function startRecording() {\n if (\n navigator.mediaDevices &&\n navigator.mediaDevices.getUserMedia &&\n !state.recording\n ) {\n navigator.mediaDevices\n .getUserMedia({\n audio: true,\n })\n .then(function (stream) {\n mediaStreamRef.current = new MediaRecorder(stream);\n const mediaRecorder = mediaStreamRef.current;\n let chunks = [];\n mediaRecorder.ondataavailable = function (e) {\n chunks.push(e.data);\n };\n mediaRecorder.onstop = () => {\n const blob = new Blob(chunks, { type: \"audio/ogg; codecs=opus\" });\n const audioURL = window.URL.createObjectURL(blob);\n setState({ ...state, blob: blob, url: audioURL, recording: false });\n stream.getTracks().forEach((track) => track.stop());\n };\n setState({ ...state, recording: true });\n\n mediaRecorder.start();\n })\n .catch(function (err) {\n setRecording(false);\n error(\n \"Permission to access microphone not granted.\",\n \"Allow access to microphone in your browser settings for this domain.\"\n );\n });\n } else {\n error(\"Browser does not support recording!\");\n }\n }\n return {\n id: state.id,\n url: state.url,\n recording: state.recording,\n blobSize: state.blob?.size,\n startRecording,\n stopRecording: () => {\n if (mediaStreamRef.current) {\n mediaStreamRef.current.stop();\n }\n },\n downloadBlob: () => {\n if (state.blob) {\n saveAs(state.blob, \"Recording.mp3\");\n }\n },\n };\n}\nexport { audioRecorder };\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as Icon from \"../../../shared/Icon.bs.js\";\nimport * as Curry from \"../../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as FaIcon from \"../../../shared/components/FaIcon.bs.js\";\nimport * as $$Notification from \"../../../shared/Notification.bs.js\";\nimport * as AuthenticityToken from \"../../../shared/utils/AuthenticityToken.bs.js\";\nimport * as CoursesCurriculum__AudioNavigator from \"./CoursesCurriculum__AudioNavigator\";\n\nfunction str(prim) {\n return prim;\n}\n\nfunction audioRecorder(prim0, prim1) {\n return CoursesCurriculum__AudioNavigator.audioRecorder(prim0, prim1);\n}\n\nvar partial_arg = \"components.CoursesCurriculum__AudioRecorder\";\n\nfunction t(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nfunction CoursesCurriculum__AudioRecorder(Props) {\n var attachingCB = Props.attachingCB;\n var attachFileCB = Props.attachFileCB;\n var preview = Props.preview;\n var audioRecorder = CoursesCurriculum__AudioNavigator.audioRecorder(AuthenticityToken.fromHead(undefined), attachingCB);\n React.useEffect((function () {\n var id = audioRecorder.id;\n if (id !== undefined) {\n Curry._2(attachFileCB, id, \"recorderaudio\");\n }\n \n }), [audioRecorder.id]);\n var tmp;\n if (audioRecorder.recording) {\n tmp = React.createElement(\"div\", {\n className: \"flex flex-col md:flex-row pointer-cursor pt-2 md:items-center\"\n }, React.createElement(\"button\", {\n className: \"flex items-center bg-gray-50 border rounded-full hover:bg-gray-300\",\n onClick: (function (_e) {\n Curry._1(audioRecorder.stopRecording, undefined);\n })\n }, React.createElement(\"div\", {\n className: \"flex shrink-0 items-center justify-center bg-red-600 shadow-md rounded-full h-10 w-10\"\n }, React.createElement(Icon.make, {\n className: \"if i-stop-solid text-base text-white relative z-10\"\n }), React.createElement(\"span\", {\n className: \"w-8 h-8 z-0 animate-ping absolute inline-flex rounded-full bg-red-600 opacity-75\"\n })), React.createElement(\"span\", {\n className: \"inline-block ps-3 pe-4 text-xs font-semibold\"\n }, t(undefined, undefined, \"recording_string\"))));\n } else {\n var _url = audioRecorder.url;\n var url = audioRecorder.url;\n var match = audioRecorder.url;\n tmp = React.createElement(\"div\", {\n className: \"flex flex-col md:flex-row pointer-cursor pt-2 md:items-center\"\n }, React.createElement(\"button\", {\n className: \"flex items-center bg-red-100 border rounded-full hover:bg-red-200\",\n onClick: (function (_e) {\n if (preview) {\n return $$Notification.notice(t(undefined, undefined, \"preview_mode\"), t(undefined, undefined, \"cannot_record\"));\n } else {\n return Curry._1(audioRecorder.startRecording, undefined);\n }\n })\n }, React.createElement(\"div\", {\n className: \"flex shrink-0 items-center justify-center bg-white shadow-md rounded-full h-10 w-10\"\n }, React.createElement(Icon.make, {\n className: \"if i-microphone-fill-light text-lg text-red-600\"\n })), React.createElement(\"span\", {\n className: \"inline-block ps-3 pe-4 text-xs font-semibold\"\n }, _url !== undefined ? t(undefined, undefined, \"button_text_record_again\") : t(undefined, undefined, \"button_text_start_recording\"))), url !== undefined ? React.createElement(\"audio\", {\n className: \"pt-3 md:pt-0 md:ps-4\",\n controls: true,\n src: url\n }) : null, match !== undefined ? React.createElement(\"div\", {\n className: \"btn btn-success ms-4\",\n onClick: (function (_e) {\n Curry._1(audioRecorder.downloadBlob, undefined);\n })\n }, React.createElement(FaIcon.make, {\n classes: \"fas fa-download\"\n })) : null);\n }\n var size = audioRecorder.blobSize;\n return React.createElement(React.Fragment, undefined, tmp, size !== undefined && size > 5000000 ? React.createElement(\"div\", {\n className: \"text-xs text-red-500 mt-2\"\n }, React.createElement(FaIcon.make, {\n classes: \"fas fa-exclamation-triangle me-2\"\n }), t(undefined, undefined, \"recording_size_limit_warning\")) : null);\n}\n\nvar make = CoursesCurriculum__AudioRecorder;\n\nexport {\n str ,\n audioRecorder ,\n t ,\n make ,\n}\n/* I18n Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as $$Array from \"../../../../../node_modules/rescript/lib/es6/array.js\";\nimport * as Curry from \"../../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as Radio from \"../../../shared/components/Radio.bs.js\";\nimport * as React from \"react\";\nimport * as PfIcon from \"../../../packages/pf-icon/src/PfIcon.bs.js\";\nimport * as $$String from \"../../../../../node_modules/rescript/lib/es6/string.js\";\nimport * as Checkbox from \"../../../shared/components/Checkbox.bs.js\";\nimport * as Js_array from \"../../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as UrlUtils from \"../../../shared/utils/UrlUtils.bs.js\";\nimport * as MarkdownBlock from \"../../../shared/components/MarkdownBlock.bs.js\";\nimport * as MarkdownEditor from \"../../../shared/components/MarkdownEditor.bs.js\";\nimport * as CoursesCurriculum__FileForm from \"./CoursesCurriculum__FileForm.bs.js\";\nimport * as CoursesCurriculum__AudioRecorder from \"./CoursesCurriculum__AudioRecorder.bs.js\";\nimport * as CoursesCurriculum__ChecklistItem from \"../types/CoursesCurriculum__ChecklistItem.bs.js\";\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.CoursesCurriculum__SubmissionItem\";\n\nfunction tr(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nfunction kindIconClasses(result) {\n switch (result.TAG | 0) {\n case /* Files */0 :\n return \"if i-file-regular md:text-base text-gray-800 if-fw\";\n case /* Link */1 :\n return \"if i-link-regular md:text-base text-gray-800 if-fw\";\n case /* ShortText */2 :\n return \"if i-short-text-regular md:text-base text-gray-800 if-fw\";\n case /* LongText */3 :\n return \"if i-long-text-regular md:text-base text-gray-800 if-fw rlt:rotate-180\";\n case /* MultiChoice */4 :\n return \"if i-check-circle-alt-regular md:text-base text-gray-800 if-fw\";\n case /* AudioRecord */5 :\n return \"if i-microphone-outline-regular md:text-base text-gray-800 if-fw\";\n \n }\n}\n\nfunction computeId(index, checklistItem) {\n return String(index) + (\"-\" + CoursesCurriculum__ChecklistItem.kindAsString(checklistItem));\n}\n\nfunction notBlank(string) {\n return $$String.trim(string) !== \"\";\n}\n\nfunction placeholder(id, checklistItem) {\n var title = CoursesCurriculum__ChecklistItem.title(checklistItem);\n var optional = CoursesCurriculum__ChecklistItem.optional(checklistItem);\n return React.createElement(\"div\", {\n className: \"flex items-start\"\n }, React.createElement(PfIcon.make, {\n className: kindIconClasses(CoursesCurriculum__ChecklistItem.result(checklistItem))\n }), React.createElement(\"label\", {\n className: \"font-semibold text-sm ps-2 tracking-wide overflow-auto\",\n htmlFor: id\n }, React.createElement(MarkdownBlock.make, {\n markdown: title + (\n optional ? \" (\" + I18n.ts(undefined, undefined, \"optional\") + \")\" : \"\"\n ),\n profile: /* Permissive */0\n })));\n}\n\nfunction showError(message, active) {\n if (active) {\n return React.createElement(\"div\", {\n className: \"mt-1 px-1 py-px rounded text-xs font-semibold text-red-600 bg-red-100 inline-flex items-center\"\n }, React.createElement(\"span\", {\n className: \"me-2\"\n }, React.createElement(\"i\", {\n className: \"fas fa-exclamation-triangle\"\n })), React.createElement(\"span\", undefined, message));\n } else {\n return null;\n }\n}\n\nfunction showLink(value, id, updateResultCB) {\n return React.createElement(\"div\", undefined, React.createElement(\"input\", {\n className: \"cursor-pointer truncate h-10 border border-gray-300 focus:outline-none focus:border-primary-400 focus:shadow-inner px-4 items-center font-semibold rounded text-sm me-2 block w-full\",\n id: id,\n placeholder: tr(undefined, undefined, \"link_placeholder\"),\n type: \"text\",\n value: value,\n onChange: (function (e) {\n Curry._1(updateResultCB, {\n TAG: /* Link */1,\n _0: e.target.value\n });\n })\n }), showError(tr(undefined, undefined, \"link_error\"), UrlUtils.isInvalid(true, value)));\n}\n\nfunction showShortText(value, id, updateResultCB) {\n return React.createElement(\"div\", undefined, React.createElement(\"input\", {\n className: \"cursor-pointer truncate h-10 border border-gray-300 focus:outline-none focus:border-primary-400 focus:shadow-inner px-4 items-center font-semibold rounded text-sm me-2 block w-full\",\n id: id,\n maxLength: 250,\n placeholder: tr(undefined, undefined, \"short_text_placeholder\"),\n type: \"text\",\n value: value,\n onChange: (function (e) {\n Curry._1(updateResultCB, {\n TAG: /* ShortText */2,\n _0: e.target.value\n });\n })\n }), showError(tr(undefined, undefined, \"short_text_error\"), !CoursesCurriculum__ChecklistItem.validShortText(value) && $$String.trim(value) !== \"\"));\n}\n\nfunction longTextWarning(value) {\n var currentLength = value.length;\n var showWarning = $$String.trim(value) !== \"\" && currentLength > 4500;\n var colors = currentLength < 4900 ? \"text-orange-700 bg-orange-100\" : \"text-red-600 bg-red-100\";\n if (showWarning) {\n return React.createElement(\"div\", {\n className: \"flex justify-between items-center mt-1\"\n }, React.createElement(\"div\", {\n className: \"hidden md:inline-flex px-2 py-px rounded text-xs font-semibold items-center \" + colors\n }, React.createElement(\"span\", {\n className: \"me-2\"\n }, React.createElement(\"i\", {\n className: \"fas fa-exclamation-triangle\"\n })), React.createElement(\"span\", undefined, tr(undefined, undefined, \"warning_length_limit\"))), React.createElement(\"div\", {\n className: \"shrink-1 text-tiny font-semibold px-1 py-px border border-transparent rounded \" + colors\n }, String(currentLength), \" / 5000\"));\n } else {\n return null;\n }\n}\n\nfunction updateLongText(updateResultCB, value) {\n return Curry._1(updateResultCB, {\n TAG: /* LongText */3,\n _0: value\n });\n}\n\nfunction showLongText(value, id, updateResultCB) {\n return React.createElement(\"div\", undefined, React.createElement(MarkdownEditor.make, {\n value: value,\n onChange: (function (param) {\n return Curry._1(updateResultCB, {\n TAG: /* LongText */3,\n _0: param\n });\n }),\n profile: /* Permissive */0,\n textareaId: id,\n maxLength: 5000\n }), longTextWarning(value));\n}\n\nfunction checkboxOnChange(choices, allowMultiple, label, selected, updateResultCB, $$event) {\n var checked = $$event.target.checked;\n if (checked) {\n return Curry._1(updateResultCB, {\n TAG: /* MultiChoice */4,\n _0: choices,\n _1: allowMultiple,\n _2: selected.concat([label])\n });\n } else {\n return Curry._1(updateResultCB, {\n TAG: /* MultiChoice */4,\n _0: choices,\n _1: allowMultiple,\n _2: selected.filter(function (i) {\n return i !== label;\n })\n });\n }\n}\n\nfunction radioOnChange(choices, allowMultiple, label, updateResultCB, $$event) {\n var checked = $$event.target.checked;\n if (checked) {\n return Curry._1(updateResultCB, {\n TAG: /* MultiChoice */4,\n _0: choices,\n _1: allowMultiple,\n _2: [label]\n });\n } else {\n return Curry._1(updateResultCB, {\n TAG: /* MultiChoice */4,\n _0: choices,\n _1: allowMultiple,\n _2: []\n });\n }\n}\n\nfunction showMultiChoice(choices, allowMultiple, selected, id, updateResultCB) {\n if (allowMultiple) {\n return choices.map(function (label, index) {\n return React.createElement(\"div\", undefined, React.createElement(Checkbox.make, {\n id: id + String(index),\n onChange: (function (param) {\n return checkboxOnChange(choices, allowMultiple, label, selected, updateResultCB, param);\n }),\n checked: selected.includes(label),\n label: label,\n key: String(index)\n }));\n });\n } else {\n return choices.map(function (label, index) {\n return React.createElement(Radio.make, {\n id: id + String(index),\n label: label,\n onChange: (function (param) {\n return radioOnChange(choices, allowMultiple, label, updateResultCB, param);\n }),\n checked: selected.includes(label),\n key: String(index)\n });\n });\n }\n}\n\nfunction attachFile(updateResultCB, attachingCB, files, id, filename) {\n Curry._1(attachingCB, false);\n return Curry._1(updateResultCB, {\n TAG: /* Files */0,\n _0: $$Array.append([CoursesCurriculum__ChecklistItem.makeFile(id, filename)], files)\n });\n}\n\nfunction attachRecordingFile(updateResultCB, attachingCB, id, filename) {\n Curry._1(attachingCB, false);\n return Curry._1(updateResultCB, {\n TAG: /* AudioRecord */5,\n _0: {\n id: id,\n name: filename\n }\n });\n}\n\nfunction removeFile(updateResultCB, files, id) {\n return Curry._1(updateResultCB, {\n TAG: /* Files */0,\n _0: Js_array.filter((function (a) {\n return CoursesCurriculum__ChecklistItem.fileId(a) !== id;\n }), files)\n });\n}\n\nfunction showFiles(files, preview, id, attachingCB, updateResultCB, index) {\n return React.createElement(\"div\", undefined, React.createElement(\"div\", {\n className: \"flex flex-wrap\",\n id: id\n }, $$Array.map((function (file) {\n return React.createElement(\"div\", {\n key: \"file-\" + CoursesCurriculum__ChecklistItem.fileId(file),\n \"aria-label\": \"file-\" + CoursesCurriculum__ChecklistItem.filename(file),\n className: \"w-1/3 pe-2 pb-2\",\n target: \"_blank\"\n }, React.createElement(\"div\", {\n className: \"flex justify-between border overflow-hidden rounded border-red-300 bg-white text-red-600 hover:text-red-600\"\n }, React.createElement(\"div\", {\n className: \"flex\"\n }, React.createElement(\"span\", {\n className: \"flex w-10 justify-center items-center p-2 bg-red-600 text-white\"\n }, React.createElement(\"i\", {\n className: \"far fa-file\"\n })), React.createElement(\"span\", {\n className: \"course-show-attachments__attachment-title rounded text-xs font-semibold inline-block whitespace-normal truncate w-32 md:w-38 ps-3 pe-2 py-2 leading-loose\"\n }, CoursesCurriculum__ChecklistItem.filename(file))), React.createElement(\"button\", {\n className: \"flex w-8 justify-center items-center p-2 cursor-pointer bg-gray-50 border-s text-gray-600 hover:bg-gray-50 hover:text-gray-900\",\n title: tr(undefined, undefined, \"remove\") + CoursesCurriculum__ChecklistItem.filename(file),\n onClick: (function (param) {\n removeFile(updateResultCB, files, CoursesCurriculum__ChecklistItem.fileId(file));\n })\n }, React.createElement(PfIcon.make, {\n className: \"if i-times-regular text-sm\"\n }))));\n }), files)), files.length < 3 ? React.createElement(CoursesCurriculum__FileForm.make, {\n attachFileCB: (function (param, param$1) {\n return attachFile(updateResultCB, attachingCB, files, param, param$1);\n }),\n attachingCB: attachingCB,\n preview: preview,\n index: index\n }) : null);\n}\n\nfunction showAudioRecorder(attachingCB, updateResultCB, preview) {\n return React.createElement(CoursesCurriculum__AudioRecorder.make, {\n attachingCB: attachingCB,\n attachFileCB: (function (param, param$1) {\n return attachRecordingFile(updateResultCB, attachingCB, param, param$1);\n }),\n preview: preview\n });\n}\n\nfunction CoursesCurriculum__SubmissionItem(Props) {\n var index = Props.index;\n var checklistItem = Props.checklistItem;\n var updateResultCB = Props.updateResultCB;\n var attachingCB = Props.attachingCB;\n var preview = Props.preview;\n var id = computeId(index, checklistItem);\n var files = CoursesCurriculum__ChecklistItem.result(checklistItem);\n var tmp;\n switch (files.TAG | 0) {\n case /* Files */0 :\n tmp = showFiles(files._0, preview, id, attachingCB, updateResultCB, index);\n break;\n case /* Link */1 :\n tmp = showLink(files._0, id, updateResultCB);\n break;\n case /* ShortText */2 :\n tmp = showShortText(files._0, id, updateResultCB);\n break;\n case /* LongText */3 :\n tmp = showLongText(files._0, id, updateResultCB);\n break;\n case /* MultiChoice */4 :\n tmp = showMultiChoice(files._0, files._1, files._2, id, updateResultCB);\n break;\n case /* AudioRecord */5 :\n tmp = showAudioRecorder(attachingCB, updateResultCB, preview);\n break;\n \n }\n return React.createElement(\"div\", {\n \"aria-label\": id,\n className: \"mt-4\"\n }, placeholder(id, checklistItem), React.createElement(\"div\", {\n className: \"md:ps-7 pt-2 pe-0 pb-4 space-y-2\"\n }, tmp));\n}\n\nvar ts = I18n.ts;\n\nvar make = CoursesCurriculum__SubmissionItem;\n\nexport {\n str ,\n tr ,\n ts ,\n kindIconClasses ,\n computeId ,\n notBlank ,\n placeholder ,\n showError ,\n showLink ,\n showShortText ,\n longTextWarning ,\n updateLongText ,\n showLongText ,\n checkboxOnChange ,\n radioOnChange ,\n showMultiChoice ,\n attachFile ,\n attachRecordingFile ,\n removeFile ,\n showFiles ,\n showAudioRecorder ,\n make ,\n}\n/* I18n Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as $$Array from \"../../../../../node_modules/rescript/lib/es6/array.js\";\nimport * as Curry from \"../../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as FaIcon from \"../../../shared/components/FaIcon.bs.js\";\nimport * as DateFns from \"../../../shared/utils/DateFns.bs.js\";\nimport * as Tooltip from \"../../../shared/components/Tooltip.bs.js\";\nimport * as Js_array from \"../../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as ArrayUtils from \"../../../shared/utils/ArrayUtils.bs.js\";\nimport * as Js_promise from \"../../../../../node_modules/rescript/lib/es6/js_promise.js\";\nimport * as Caml_option from \"../../../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as Json_decode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\nimport * as GraphqlQuery from \"../../../shared/utils/GraphqlQuery.bs.js\";\nimport * as DisablingCover from \"../../../shared/components/DisablingCover.bs.js\";\nimport * as SubmissionChecklistItem from \"../../review/types/SubmissionChecklistItem.bs.js\";\nimport * as CoursesCurriculum__Target from \"../types/CoursesCurriculum__Target.bs.js\";\nimport * as CoursesCurriculum__Submission from \"../types/CoursesCurriculum__Submission.bs.js\";\nimport * as CoursesCurriculum__ChecklistItem from \"../types/CoursesCurriculum__ChecklistItem.bs.js\";\nimport * as CoursesCurriculum__TargetDetails from \"../types/CoursesCurriculum__TargetDetails.bs.js\";\nimport * as CoursesCurriculum__SubmissionItem from \"./CoursesCurriculum__SubmissionItem.bs.js\";\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.CoursesCurriculum__SubmissionBuilder\";\n\nfunction tr(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nfunction buttonContents(formState, checklist) {\n var icon = formState >= 2 ? React.createElement(FaIcon.make, {\n classes: \"fas fa-cloud-upload-alt me-2\"\n }) : React.createElement(FaIcon.make, {\n classes: \"fas fa-spinner fa-pulse me-2\"\n });\n var text;\n switch (formState) {\n case /* Attaching */0 :\n text = tr(undefined, undefined, \"attaching\") + \"...\";\n break;\n case /* Saving */1 :\n text = tr(undefined, undefined, \"submitting\") + \"...\";\n break;\n case /* Ready */2 :\n text = ArrayUtils.isEmpty(checklist) ? tr(undefined, undefined, \"complete\") : tr(undefined, undefined, \"submit\");\n break;\n \n }\n return React.createElement(\"span\", undefined, icon, text);\n}\n\nfunction initialState(checklist) {\n return {\n formState: /* Ready */2,\n checklist: CoursesCurriculum__ChecklistItem.fromTargetChecklistItem(checklist),\n anonymous: false\n };\n}\n\nfunction reducer(state, action) {\n if (typeof action !== \"number\") {\n return {\n formState: /* Ready */2,\n checklist: action._0,\n anonymous: state.anonymous\n };\n }\n switch (action) {\n case /* SetAttaching */0 :\n return {\n formState: /* Attaching */0,\n checklist: state.checklist,\n anonymous: state.anonymous\n };\n case /* SetSaving */1 :\n return {\n formState: /* Saving */1,\n checklist: state.checklist,\n anonymous: state.anonymous\n };\n case /* SetReady */2 :\n return {\n formState: /* Ready */2,\n checklist: state.checklist,\n anonymous: state.anonymous\n };\n case /* ToggleAnonymous */3 :\n return {\n formState: state.formState,\n checklist: state.checklist,\n anonymous: !state.anonymous\n };\n \n }\n}\n\nfunction isBusy(formState) {\n return formState < 2;\n}\n\nvar Raw = {};\n\nvar query = \"mutation CreateSubmissionMutation($targetId: ID!, $checklist: JSON!, $fileIds: [ID!]!, $anonymous: Boolean!) {\\ncreateSubmission(targetId: $targetId, checklist: $checklist, fileIds: $fileIds, anonymous: $anonymous) {\\nsubmission {\\nid \\ncreatedAt \\n}\\n\\n}\\n\\n}\\n\";\n\nfunction parse(value) {\n var value$1 = value.createSubmission;\n var value$2 = value$1.submission;\n return {\n createSubmission: {\n submission: !(value$2 == null) ? ({\n id: value$2.id,\n createdAt: value$2.createdAt\n }) : undefined\n }\n };\n}\n\nfunction serialize(value) {\n var value$1 = value.createSubmission;\n var value$2 = value$1.submission;\n var submission;\n if (value$2 !== undefined) {\n var value$3 = value$2.createdAt;\n var value$4 = value$2.id;\n submission = {\n id: value$4,\n createdAt: value$3\n };\n } else {\n submission = null;\n }\n var createSubmission = {\n submission: submission\n };\n return {\n createSubmission: createSubmission\n };\n}\n\nfunction serializeVariables(inp) {\n var a = inp.fileIds;\n return {\n targetId: inp.targetId,\n checklist: inp.checklist,\n fileIds: Js_array.map((function (b) {\n return b;\n }), a),\n anonymous: inp.anonymous\n };\n}\n\nfunction makeVariables(targetId, checklist, fileIds, anonymous, param) {\n return {\n targetId: targetId,\n checklist: checklist,\n fileIds: fileIds,\n anonymous: anonymous\n };\n}\n\nvar CreateSubmissionQuery_inner = {\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables\n};\n\nvar include = GraphqlQuery.Extender({\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar make = include.make;\n\nvar CreateSubmissionQuery_Graphql_error = include.Graphql_error;\n\nvar CreateSubmissionQuery_decodeNotification = include.decodeNotification;\n\nvar CreateSubmissionQuery_decodeObject = include.decodeObject;\n\nvar CreateSubmissionQuery_decodeNotifications = include.decodeNotifications;\n\nvar CreateSubmissionQuery_decodeErrors = include.decodeErrors;\n\nvar CreateSubmissionQuery_flashNotifications = include.flashNotifications;\n\nvar CreateSubmissionQuery_sendQuery = include.sendQuery;\n\nvar CreateSubmissionQuery_query = include.query;\n\nvar CreateSubmissionQuery_fetch = include.$$fetch;\n\nvar CreateSubmissionQuery = {\n CreateSubmissionQuery_inner: CreateSubmissionQuery_inner,\n Raw: Raw,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables,\n Graphql_error: CreateSubmissionQuery_Graphql_error,\n decodeNotification: CreateSubmissionQuery_decodeNotification,\n decodeObject: CreateSubmissionQuery_decodeObject,\n decodeNotifications: CreateSubmissionQuery_decodeNotifications,\n decodeErrors: CreateSubmissionQuery_decodeErrors,\n flashNotifications: CreateSubmissionQuery_flashNotifications,\n sendQuery: CreateSubmissionQuery_sendQuery,\n query: CreateSubmissionQuery_query,\n $$fetch: CreateSubmissionQuery_fetch,\n make: make\n};\n\nfunction isButtonDisabled(state) {\n var match = state.formState;\n if (match < 2) {\n return true;\n } else {\n return !CoursesCurriculum__ChecklistItem.validChecklist(state.checklist);\n }\n}\n\nfunction submit(state, send, target, targetDetails, addSubmissionCB, $$event) {\n $$event.preventDefault();\n Curry._1(send, /* SetSaving */1);\n var fileIds = CoursesCurriculum__ChecklistItem.fileIds(state.checklist);\n var checklist = CoursesCurriculum__ChecklistItem.encodeArray(state.checklist);\n var anonymous = state.anonymous;\n var targetId = CoursesCurriculum__Target.id(target);\n Js_promise.$$catch((function (_error) {\n Curry._1(send, /* SetReady */2);\n return Promise.resolve(undefined);\n }), Js_promise.then_((function (response) {\n var submission = response.createSubmission.submission;\n if (submission !== undefined) {\n var submission$1 = Caml_option.valFromOption(submission);\n var files = CoursesCurriculum__ChecklistItem.makeFiles(state.checklist);\n var submissionChecklist = Json_decode.array((function (param) {\n return SubmissionChecklistItem.decode(files, param);\n }), checklist);\n var completionType = CoursesCurriculum__TargetDetails.computeCompletionType(targetDetails);\n var status = completionType !== 0 ? /* MarkedAsComplete */0 : /* Pending */1;\n Curry._1(addSubmissionCB, CoursesCurriculum__Submission.make(submission$1.id, DateFns.decodeISO(submission$1.createdAt), status, submissionChecklist, undefined));\n } else {\n Curry._1(send, /* SetReady */2);\n }\n return Promise.resolve(undefined);\n }), Curry._3(make, undefined, undefined, {\n targetId: targetId,\n checklist: checklist,\n fileIds: fileIds,\n anonymous: anonymous\n })));\n}\n\nfunction updateResult(state, send, index, result) {\n return Curry._1(send, /* UpdateResponse */{\n _0: CoursesCurriculum__ChecklistItem.updateResultAtIndex(index, result, state.checklist)\n });\n}\n\nfunction buttonClasses(checklist) {\n return \"flex mt-3 \" + (\n ArrayUtils.isEmpty(checklist) ? \"justify-center\" : \"justify-end\"\n );\n}\n\nfunction setAttaching(send, bool) {\n return Curry._1(send, bool ? /* SetAttaching */0 : /* SetReady */2);\n}\n\nfunction statusText(formState) {\n switch (formState) {\n case /* Attaching */0 :\n return tr(undefined, undefined, \"attaching\") + \"...\";\n case /* Saving */1 :\n return tr(undefined, undefined, \"submitting\") + \"...\";\n case /* Ready */2 :\n return tr(undefined, undefined, \"submit\");\n \n }\n}\n\nfunction tooltipText(preview) {\n if (preview) {\n return React.createElement(\"span\", undefined, tr(undefined, undefined, \"accessing_preview\"), React.createElement(\"br\", undefined), tr(undefined, undefined, \"for_course\"));\n } else {\n return React.createElement(\"span\", undefined, tr(undefined, undefined, \"compete_all\"), React.createElement(\"br\", undefined), tr(undefined, undefined, \"steps_submit\"));\n }\n}\n\nfunction CoursesCurriculum__SubmissionBuilder(Props) {\n var target = Props.target;\n var targetDetails = Props.targetDetails;\n var addSubmissionCB = Props.addSubmissionCB;\n var preview = Props.preview;\n var checklist = Props.checklist;\n var match = React.useReducer(reducer, initialState(checklist));\n var send = match[1];\n var state = match[0];\n return React.createElement(\"div\", {\n className: \"bg-gray-50 p-4 my-4 border rounded-lg\",\n id: \"submission-builder\"\n }, React.createElement(DisablingCover.make, {\n disabled: state.formState < 2,\n message: statusText(state.formState),\n children: null\n }, ArrayUtils.isEmpty(state.checklist) ? React.createElement(\"div\", {\n className: \"text-center\"\n }, tr(undefined, undefined, \"no_actions\")) : $$Array.mapi((function (index, checklistItem) {\n return React.createElement(CoursesCurriculum__SubmissionItem.make, {\n index: index,\n checklistItem: checklistItem,\n updateResultCB: (function (param) {\n return updateResult(state, send, index, param);\n }),\n attachingCB: (function (param) {\n return setAttaching(send, param);\n }),\n preview: preview,\n key: String(index)\n });\n }), state.checklist), React.createElement(\"div\", undefined, CoursesCurriculum__TargetDetails.discussion(targetDetails) && CoursesCurriculum__TargetDetails.allowAnonymous(targetDetails) ? React.createElement(\"div\", undefined, React.createElement(\"div\", {\n className: \"mt-4 flex\"\n }, React.createElement(\"input\", {\n className: \"hidden checkbox-input\",\n id: \"anonymous\",\n checked: state.anonymous,\n type: \"checkbox\",\n onChange: (function (_event) {\n Curry._1(send, /* ToggleAnonymous */3);\n })\n }), React.createElement(\"label\", {\n className: \"checkbox-label flex items-center\",\n htmlFor: \"anonymous\"\n }, React.createElement(\"span\", {\n className: \"flex-shrink-0\"\n }, React.createElement(\"svg\", {\n height: \"10px\",\n width: \"12px\",\n viewBox: \"0 0 12 10\"\n }, React.createElement(\"polyline\", {\n points: \"1.5 6 4.5 9 10.5 1\"\n }))), React.createElement(\"span\", {\n className: \"text-sm\"\n }, tr(undefined, undefined, \"submit_anonymous_label\")))), React.createElement(\"p\", {\n className: \"text-xs ml-7 italic text-gray-700 mt-1\",\n htmlFor: \"anonymous\"\n }, tr(undefined, undefined, \"submit_anonymous_notice\"))) : null, React.createElement(\"div\", {\n className: buttonClasses(state.checklist)\n }, React.createElement(Tooltip.make, {\n tip: tooltipText(preview),\n position: \"Start\",\n disabled: !isButtonDisabled(state),\n children: React.createElement(\"button\", {\n className: \"btn btn-primary flex justify-center grow md:grow-0\",\n disabled: isButtonDisabled(state) || preview,\n onClick: (function (param) {\n return submit(state, send, target, targetDetails, addSubmissionCB, param);\n })\n }, buttonContents(state.formState, checklist))\n })))));\n}\n\nvar make$1 = CoursesCurriculum__SubmissionBuilder;\n\nexport {\n str ,\n tr ,\n buttonContents ,\n initialState ,\n reducer ,\n isBusy ,\n CreateSubmissionQuery ,\n isButtonDisabled ,\n submit ,\n updateResult ,\n buttonClasses ,\n setAttaching ,\n statusText ,\n tooltipText ,\n make$1 as make,\n}\n/* include Not a pure module */\n","export default \"__VITE_ASSET__D_Sd3hZi__\"","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Icon from \"../../../shared/Icon.bs.js\";\nimport * as React from \"react\";\nimport * as CoursesCurriculum__TargetDetails from \"../types/CoursesCurriculum__TargetDetails.bs.js\";\n\nfunction str(prim) {\n return prim;\n}\n\nfunction CoursesCurriculum__CompletionInstructions(Props) {\n var targetDetails = Props.targetDetails;\n var title = Props.title;\n var completionInstructions = CoursesCurriculum__TargetDetails.completionInstructions(targetDetails);\n if (completionInstructions !== undefined) {\n return React.createElement(\"div\", {\n className: \"flex flex-col sm:flex-row mt-4 bg-yellow-100 rounded-lg border border-yellow-500 overflow-hidden\"\n }, React.createElement(\"div\", {\n className: \"bg-yellow-500 p-4 sm:py-8 sm:px-7 shrink-0 text-center\"\n }, React.createElement(Icon.make, {\n className: \"if i-lamp-solid text-3xl sm:text-5xl text-yellow-800\"\n })), React.createElement(\"div\", {\n className: \"p-5 text-center sm:text-left\"\n }, React.createElement(\"h4\", {\n className: \"font-semibold text-lg\"\n }, title), React.createElement(\"p\", {\n className: \"mt-1 leading-snug\"\n }, completionInstructions)));\n } else {\n return null;\n }\n}\n\nvar make = CoursesCurriculum__CompletionInstructions;\n\nexport {\n str ,\n make ,\n}\n/* Icon Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Json_decode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\n\nfunction id(t) {\n return t.id;\n}\n\nfunction userId(t) {\n return t.userId;\n}\n\nfunction decode(json) {\n return {\n id: Json_decode.field(\"id\", Json_decode.string, json),\n userId: Json_decode.field(\"userId\", Json_decode.string, json)\n };\n}\n\nexport {\n id ,\n userId ,\n decode ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as List from \"../../../../../node_modules/rescript/lib/es6/list.js\";\nimport * as Caml_option from \"../../../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as Json_decode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\nimport * as Json_encode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_encode.bs.js\";\n\nfunction decode(json) {\n return {\n criterionId: Json_decode.field(\"criterionId\", Json_decode.string, json),\n criterionName: Json_decode.field(\"criterionName\", Json_decode.string, json),\n grade: Caml_option.null_to_opt(Json_decode.field(\"grade\", (function (param) {\n return Json_decode.nullable(Json_decode.$$int, param);\n }), json))\n };\n}\n\nfunction grade(t) {\n return t.grade;\n}\n\nfunction pending(evaluation) {\n return List.exists((function (grading) {\n return grading.grade === undefined;\n }), evaluation);\n}\n\nfunction criterionId(t) {\n return t.criterionId;\n}\n\nfunction criterionName(t) {\n return t.criterionName;\n}\n\nfunction updateGrade(newGrade, t) {\n return {\n criterionId: t.criterionId,\n criterionName: t.criterionName,\n grade: newGrade\n };\n}\n\nfunction gradingEncoder(grading) {\n var grade = grading.grade;\n return Json_encode.object_({\n hd: [\n \"criterionId\",\n grading.criterionId\n ],\n tl: {\n hd: [\n \"grade\",\n grade !== undefined ? grade : null\n ],\n tl: /* [] */0\n }\n });\n}\n\nfunction make(criterionId, criterionName, grade) {\n return {\n criterionId: criterionId,\n criterionName: criterionName,\n grade: grade\n };\n}\n\nexport {\n decode ,\n grade ,\n pending ,\n criterionId ,\n criterionName ,\n updateGrade ,\n gradingEncoder ,\n make ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as List from \"../../../../../node_modules/rescript/lib/es6/list.js\";\nimport * as $$Array from \"../../../../../node_modules/rescript/lib/es6/array.js\";\nimport * as Curry from \"../../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as Caml_obj from \"../../../../../node_modules/rescript/lib/es6/caml_obj.js\";\nimport * as GradeLabel from \"../../../shared/types/GradeLabel.bs.js\";\nimport * as Caml_option from \"../../../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as EvaluationCriterion from \"../../../shared/types/EvaluationCriterion.bs.js\";\nimport * as CoursesCurriculum__Grading from \"../types/CoursesCurriculum__Grading.bs.js\";\n\nimport \"./CoursesCurriculum__GradeBar.css\"\n;\n\nfunction str(prim) {\n return prim;\n}\n\nfunction gradeDescription(gradeLabels, grading) {\n var grade = CoursesCurriculum__Grading.grade(grading);\n return React.createElement(\"div\", {\n className: \"grade-bar__criterion-name\"\n }, CoursesCurriculum__Grading.criterionName(grading), grade !== undefined ? React.createElement(\"span\", undefined, \": \", React.createElement(\"span\", {\n className: \"grade-bar__grade-label\"\n }, GradeLabel.labelFor(gradeLabels, grade))) : null);\n}\n\nfunction maxGrade(gradeLabels) {\n return String(GradeLabel.maxGrade(gradeLabels));\n}\n\nfunction gradePillClasses(gradeReceived, pillGrade, callBack) {\n var resultModifier = gradeReceived !== undefined && !Caml_obj.greaterthan(pillGrade, Caml_option.valFromOption(gradeReceived)) ? \" grade-bar__grade-pill--completed\" : \"\";\n var selectableModifier = callBack !== undefined ? \" grade-bar__grade-pill--selectable-pass cursor-pointer\" : \"\";\n return \"grade-bar__grade-pill cursor-auto\" + (resultModifier + selectableModifier);\n}\n\nfunction gradeBarHeader(grading, gradeLabels) {\n var grade = CoursesCurriculum__Grading.grade(grading);\n return React.createElement(\"div\", {\n className: \"grade-bar__header pb-1\"\n }, gradeDescription(gradeLabels, grading), grade !== undefined ? React.createElement(\"div\", {\n className: \"grade-bar__grade font-semibold\"\n }, String(grade) + (\"/\" + String(GradeLabel.maxGrade(gradeLabels)))) : null);\n}\n\nfunction handleClick(gradeSelectCB, grading, newGrade) {\n if (gradeSelectCB !== undefined) {\n return Curry._1(gradeSelectCB, CoursesCurriculum__Grading.updateGrade(newGrade, grading));\n }\n \n}\n\nfunction gradeBarPill(gradeLabel, grading, gradeSelectCB) {\n var myGrade = GradeLabel.grade(gradeLabel);\n return React.createElement(\"div\", {\n key: String(myGrade),\n className: gradePillClasses(CoursesCurriculum__Grading.grade(grading), myGrade, gradeSelectCB),\n role: \"button\",\n title: GradeLabel.label(gradeLabel),\n onClick: (function (_event) {\n handleClick(gradeSelectCB, grading, myGrade);\n })\n }, gradeSelectCB !== undefined ? String(myGrade) : null);\n}\n\nfunction gradeBarPanel(grading, gradeLabels, gradeSelectCB) {\n return React.createElement(\"div\", {\n className: \"grade-bar__track\",\n role: \"group\"\n }, $$Array.of_list(List.map((function (gradeLabel) {\n return gradeBarPill(gradeLabel, grading, gradeSelectCB);\n }), gradeLabels)));\n}\n\nfunction CoursesCurriculum__GradeBar(Props) {\n var grading = Props.grading;\n var gradeSelectCB = Props.gradeSelectCB;\n var criterion = Props.criterion;\n var gradeLabels = $$Array.to_list(EvaluationCriterion.gradesAndLabels(criterion));\n return React.createElement(\"div\", {\n className: \"flex-column\",\n role: \"toolbar\"\n }, gradeBarHeader(grading, gradeLabels), gradeBarPanel(grading, gradeLabels, gradeSelectCB));\n}\n\nvar make = CoursesCurriculum__GradeBar;\n\nexport {\n str ,\n gradeDescription ,\n maxGrade ,\n gradePillClasses ,\n gradeBarHeader ,\n handleClick ,\n gradeBarPill ,\n gradeBarPanel ,\n make ,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as Curry from \"../../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as FaIcon from \"../../../shared/components/FaIcon.bs.js\";\nimport * as Js_promise from \"../../../../../node_modules/rescript/lib/es6/js_promise.js\";\nimport * as GraphqlQuery from \"../../../shared/utils/GraphqlQuery.bs.js\";\nimport * as $$Notification from \"../../../shared/Notification.bs.js\";\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.CoursesCurriculum__UndoButton\";\n\nfunction tr(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nvar Raw = {};\n\nvar query = \"mutation UndoSubmissionMutation($targetId: ID!) {\\nundoSubmission(targetId: $targetId) {\\nsuccess \\n}\\n\\n}\\n\";\n\nfunction parse(value) {\n var value$1 = value.undoSubmission;\n return {\n undoSubmission: {\n success: value$1.success\n }\n };\n}\n\nfunction serialize(value) {\n var value$1 = value.undoSubmission;\n var value$2 = value$1.success;\n var undoSubmission = {\n success: value$2\n };\n return {\n undoSubmission: undoSubmission\n };\n}\n\nfunction serializeVariables(inp) {\n return {\n targetId: inp.targetId\n };\n}\n\nfunction makeVariables(targetId, param) {\n return {\n targetId: targetId\n };\n}\n\nvar DeleteSubmissionQuery_inner = {\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables\n};\n\nvar include = GraphqlQuery.Extender({\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar $$fetch = include.$$fetch;\n\nvar DeleteSubmissionQuery_Graphql_error = include.Graphql_error;\n\nvar DeleteSubmissionQuery_decodeNotification = include.decodeNotification;\n\nvar DeleteSubmissionQuery_decodeObject = include.decodeObject;\n\nvar DeleteSubmissionQuery_decodeNotifications = include.decodeNotifications;\n\nvar DeleteSubmissionQuery_decodeErrors = include.decodeErrors;\n\nvar DeleteSubmissionQuery_flashNotifications = include.flashNotifications;\n\nvar DeleteSubmissionQuery_sendQuery = include.sendQuery;\n\nvar DeleteSubmissionQuery_query = include.query;\n\nvar DeleteSubmissionQuery_make = include.make;\n\nvar DeleteSubmissionQuery = {\n DeleteSubmissionQuery_inner: DeleteSubmissionQuery_inner,\n Raw: Raw,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables,\n Graphql_error: DeleteSubmissionQuery_Graphql_error,\n decodeNotification: DeleteSubmissionQuery_decodeNotification,\n decodeObject: DeleteSubmissionQuery_decodeObject,\n decodeNotifications: DeleteSubmissionQuery_decodeNotifications,\n decodeErrors: DeleteSubmissionQuery_decodeErrors,\n flashNotifications: DeleteSubmissionQuery_flashNotifications,\n sendQuery: DeleteSubmissionQuery_sendQuery,\n query: DeleteSubmissionQuery_query,\n $$fetch: $$fetch,\n make: DeleteSubmissionQuery_make\n};\n\nfunction handleClick(targetId, setStatus, undoSubmissionCB, $$event) {\n $$event.preventDefault();\n if (window.confirm(tr(undefined, undefined, \"window_confirm\"))) {\n Curry._1(setStatus, (function (param) {\n return /* Undoing */1;\n }));\n Js_promise.$$catch((function (param) {\n $$Notification.error(tr(undefined, undefined, \"notification_error_head\"), tr(undefined, undefined, \"notification_error_body\"));\n Curry._1(setStatus, (function (param) {\n return /* Errored */2;\n }));\n return Promise.resolve(undefined);\n }), Js_promise.then_((function (response) {\n if (response.undoSubmission.success) {\n Curry._1(undoSubmissionCB, undefined);\n } else {\n $$Notification.notice(tr(undefined, undefined, \"notification_notice_head\"), tr(undefined, undefined, \"notification_notice_body\"));\n Curry._1(setStatus, (function (param) {\n return /* Errored */2;\n }));\n }\n return Promise.resolve(undefined);\n }), Curry._3($$fetch, undefined, undefined, {\n targetId: targetId\n })));\n return ;\n }\n \n}\n\nfunction buttonContents(status) {\n switch (status) {\n case /* Pending */0 :\n return React.createElement(\"span\", undefined, React.createElement(FaIcon.make, {\n classes: \"fas fa-undo me-2\"\n }), React.createElement(\"span\", {\n className: \"hidden md:inline\"\n }, tr(undefined, undefined, \"undo_submission\")), React.createElement(\"span\", {\n className: \"md:hidden\"\n }, tr(undefined, undefined, \"undo\")));\n case /* Undoing */1 :\n return React.createElement(\"span\", undefined, React.createElement(FaIcon.make, {\n classes: \"fas fa-spinner fa-spin me-2\"\n }), tr(undefined, undefined, \"undoing\"));\n case /* Errored */2 :\n return React.createElement(\"span\", undefined, React.createElement(FaIcon.make, {\n classes: \"fas fa-exclamation-triangle me-2\"\n }), \"Error!\");\n \n }\n}\n\nfunction isDisabled(status) {\n return status !== 0;\n}\n\nfunction buttonClasses(status) {\n var tmp;\n switch (status) {\n case /* Pending */0 :\n tmp = \"pointer\";\n break;\n case /* Undoing */1 :\n tmp = \"wait\";\n break;\n case /* Errored */2 :\n tmp = \"not-allowed\";\n break;\n \n }\n return \"btn btn-small btn-danger cursor-\" + tmp;\n}\n\nfunction CoursesCurriculum__UndoButton(Props) {\n var undoSubmissionCB = Props.undoSubmissionCB;\n var targetId = Props.targetId;\n var match = React.useState(function () {\n return /* Pending */0;\n });\n var setStatus = match[1];\n var status = match[0];\n return React.createElement(\"button\", {\n className: buttonClasses(status),\n title: tr(undefined, undefined, \"undo_submission_title\"),\n disabled: status !== 0,\n onClick: (function (param) {\n return handleClick(targetId, setStatus, undoSubmissionCB, param);\n })\n }, buttonContents(status));\n}\n\nvar make = CoursesCurriculum__UndoButton;\n\nexport {\n str ,\n tr ,\n DeleteSubmissionQuery ,\n handleClick ,\n buttonContents ,\n isDisabled ,\n buttonClasses ,\n make ,\n}\n/* include Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as Icon from \"../../../shared/Icon.bs.js\";\nimport * as Curry from \"../../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as PfIcon from \"../../../packages/pf-icon/src/PfIcon.bs.js\";\nimport * as DomUtils from \"../../../shared/utils/DomUtils.bs.js\";\nimport * as Js_array from \"../../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as Belt_Option from \"../../../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as MarkdownBlock from \"../../../shared/components/MarkdownBlock.bs.js\";\nimport * as EvaluationCriterion from \"../../../shared/types/EvaluationCriterion.bs.js\";\nimport * as CoursesCurriculum__User from \"../types/CoursesCurriculum__User.bs.js\";\nimport * as SubmissionChecklistShow from \"../../review/components/SubmissionChecklistShow.bs.js\";\nimport * as CoursesCurriculum__Coach from \"../types/CoursesCurriculum__Coach.bs.js\";\nimport * as CoursesCurriculum__Grade from \"../types/CoursesCurriculum__Grade.bs.js\";\nimport * as CoursesCurriculum__Target from \"../types/CoursesCurriculum__Target.bs.js\";\nimport * as CoursesCurriculum__Grading from \"../types/CoursesCurriculum__Grading.bs.js\";\nimport * as CoursesCurriculum__Feedback from \"../types/CoursesCurriculum__Feedback.bs.js\";\nimport * as CoursesCurriculum__GradeBar from \"./CoursesCurriculum__GradeBar.bs.js\";\nimport * as CoursesCurriculum__Reaction from \"../types/CoursesCurriculum__Reaction.bs.js\";\nimport * as CoursesCurriculum__Reactions from \"./CoursesCurriculum__Reactions.bs.js\";\nimport * as CoursesCurriculum__Submission from \"../types/CoursesCurriculum__Submission.bs.js\";\nimport * as CoursesCurriculum__UndoButton from \"./CoursesCurriculum__UndoButton.bs.js\";\nimport * as CoursesCurriculum__TargetStatus from \"../types/CoursesCurriculum__TargetStatus.bs.js\";\nimport * as CoursesCurriculum__TargetDetails from \"../types/CoursesCurriculum__TargetDetails.bs.js\";\nimport * as CoursesCurriculum__SubmissionBuilder from \"./CoursesCurriculum__SubmissionBuilder.bs.js\";\nimport * as CoursesCurriculum__SubmissionComment from \"../types/CoursesCurriculum__SubmissionComment.bs.js\";\nimport * as CoursesCurriculum__SubmissionComments from \"./CoursesCurriculum__SubmissionComments.bs.js\";\n\nimport \"./CoursesCurriculum__SubmissionsAndFeedback.css\"\n;\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.CoursesCurriculum__SubmissionsAndFeedback\";\n\nfunction tr(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nfunction gradeBar(evaluationCriteria, grade) {\n var criterion = Js_array.find((function (c) {\n return EvaluationCriterion.id(c) === CoursesCurriculum__Grade.evaluationCriterionId(grade);\n }), evaluationCriteria);\n if (criterion === undefined) {\n return null;\n }\n var criterionId = EvaluationCriterion.id(criterion);\n var criterionName = EvaluationCriterion.name(criterion);\n var gradeNumber = CoursesCurriculum__Grade.grade(grade);\n var grading = CoursesCurriculum__Grading.make(criterionId, criterionName, gradeNumber);\n return React.createElement(\"div\", {\n key: String(gradeNumber),\n className: \"mb-4\"\n }, React.createElement(CoursesCurriculum__GradeBar.make, {\n grading: grading,\n criterion: criterion\n }));\n}\n\nfunction statusBar(color, text) {\n var textColor = \"text-\" + (color + \"-500 \");\n var bgColor = \"bg-\" + (color + \"-100 \");\n var icon = color === \"green\" ? React.createElement(\"span\", undefined, React.createElement(\"i\", {\n className: \"fas fa-certificate fa-stack-2x\"\n }), React.createElement(\"i\", {\n className: \"fas fa-check fa-stack-1x fa-inverse\"\n })) : React.createElement(\"i\", {\n className: \"fas fa-exclamation-triangle text-3xl text-red-500 mx-1\"\n });\n return React.createElement(\"div\", {\n className: \"font-semibold p-2 py-4 flex border-t w-full items-center justify-center \" + (textColor + bgColor)\n }, React.createElement(\"span\", {\n className: \"fa-stack text-lg me-1 \" + textColor\n }, icon), text);\n}\n\nfunction submissionStatusIcon(passed) {\n var text = passed ? tr(undefined, undefined, \"completed\") : tr(undefined, undefined, \"rejected\");\n var textColor = passed ? \"text-green-700\" : \"text-red-700\";\n return React.createElement(\"div\", {\n className: \"max-w-fit flex items-center\"\n }, passed ? React.createElement(\"span\", {\n className: \"flex text-green-500 text-lg me-2\"\n }, React.createElement(Icon.make, {\n className: \"if i-badge-check-solid text-2xl\"\n })) : null, React.createElement(\"p\", {\n className: \"text-center text-sm font-semibold \" + textColor\n }, text));\n}\n\nfunction undoSubmissionCB(param) {\n window.location.reload();\n}\n\nfunction gradingSection(grades, evaluationCriteria, gradeBar, passed) {\n return React.createElement(\"div\", undefined, React.createElement(\"div\", {\n className: \"flex border-t flex-wrap items-center justify-center py-4\\n \" + (\n passed ? \"bg-gradient-to-br from-white via-white via-40% to-green-200\" : \"bg-gradient-to-br from-red-50 via-red-50 via-40% to-red-200\"\n ) + \"\"\n }, passed ? React.createElement(\"div\", {\n className: \"w-full md:w-1/2 shrink-0 md:order-first px-4 md:px-6\"\n }, React.createElement(\"h5\", {\n className: \"pb-2 text-sm font-semibold\"\n }, tr(undefined, undefined, \"grading\")), React.createElement(\"div\", {\n className: \"mt-3\"\n }, Js_array.map(Curry.__1(gradeBar), CoursesCurriculum__Grade.sort(evaluationCriteria, grades)))) : null, React.createElement(\"div\", {\n className: \"w-full md:w-1/2 shrink-0 justify-center flex px-6\"\n }, submissionStatusIcon(passed))));\n}\n\nfunction handleAddAnotherSubmission(setShowSubmissionForm, $$event) {\n $$event.preventDefault();\n return Curry._1(setShowSubmissionForm, (function (showSubmissionForm) {\n return !showSubmissionForm;\n }));\n}\n\nfunction submissions(currentUser, target, targetStatus, targetDetails, evaluationCriteria, coaches, users) {\n var curriedGradeBar = function (param) {\n return gradeBar(evaluationCriteria, param);\n };\n var submissions$1 = CoursesCurriculum__TargetDetails.submissions(targetDetails);\n var totalSubmissions = submissions$1.length;\n var completionType = CoursesCurriculum__TargetDetails.computeCompletionType(targetDetails);\n return CoursesCurriculum__Submission.sort(submissions$1).map(function (submission, index) {\n var grades = CoursesCurriculum__TargetDetails.grades(CoursesCurriculum__Submission.id(submission), targetDetails);\n var match = CoursesCurriculum__Submission.status(submission);\n var tmp;\n switch (match) {\n case /* MarkedAsComplete */0 :\n tmp = statusBar(\"green\", tr(undefined, undefined, \"completed\"));\n break;\n case /* Pending */1 :\n var match$1 = CoursesCurriculum__TargetStatus.status(targetStatus);\n tmp = React.createElement(\"div\", {\n className: \"bg-white p-3 md:px-6 md:py-4 flex border-t justify-between items-center w-full\"\n }, React.createElement(\"div\", {\n className: \"flex items-center justify-center font-semibold text-sm ps-2 pe-3 py-1 bg-orange-100 text-orange-600 rounded\"\n }, React.createElement(\"span\", {\n className: \"fa-stack text-orange-400 me-2 shrink-0\"\n }, React.createElement(\"i\", {\n className: \"fas fa-circle fa-stack-2x\"\n }), React.createElement(\"i\", {\n className: \"fas fa-hourglass-half fa-stack-1x fa-inverse\"\n })), tr(undefined, undefined, \"pending_review\")), match$1 === 1 ? React.createElement(CoursesCurriculum__UndoButton.make, {\n undoSubmissionCB: undoSubmissionCB,\n targetId: CoursesCurriculum__Target.id(target)\n }) : null);\n break;\n case /* Completed */2 :\n tmp = gradingSection(grades, evaluationCriteria, curriedGradeBar, true);\n break;\n case /* Rejected */3 :\n tmp = gradingSection(grades, evaluationCriteria, curriedGradeBar, false);\n break;\n \n }\n var tmp$1;\n if (CoursesCurriculum__TargetDetails.discussion(targetDetails)) {\n var comments = CoursesCurriculum__TargetDetails.comments(targetDetails).filter(function (comment) {\n return CoursesCurriculum__SubmissionComment.submissionId(comment) === CoursesCurriculum__Submission.id(submission);\n });\n var reactions = CoursesCurriculum__TargetDetails.reactions(targetDetails).filter(function (reaction) {\n return CoursesCurriculum__Reaction.reactionableId(reaction) === CoursesCurriculum__Submission.id(submission);\n });\n var showComments = DomUtils.hasUrlParam(\"comment_id\") && Belt_Option.getWithDefault(DomUtils.getUrlParam(\"submission_id\"), \"\") === CoursesCurriculum__Submission.id(submission);\n var match$2 = CoursesCurriculum__Submission.hiddenAt(submission);\n tmp$1 = React.createElement(\"div\", {\n className: \"flex flex-col gap-4 items-start relative p-4\"\n }, React.createElement(\"div\", undefined, React.createElement(CoursesCurriculum__Reactions.make, {\n currentUser: currentUser,\n reactionableType: \"TimelineEvent\",\n reactionableId: CoursesCurriculum__Submission.id(submission),\n reactions: reactions\n })), React.createElement(\"div\", {\n className: \"curriculum-submission-comments__container relative flex w-full flex-col-reverse md:flex-row justify-end\"\n }, match$2 !== undefined ? React.createElement(\"div\", {\n className: \"inline-flex md:absolute z-1 justify-center md:justify-end text-xs pt-1.5\"\n }, React.createElement(\"p\", undefined, \"This submission was hidden by course moderators on \" + CoursesCurriculum__Submission.hiddenAtPretty(submission))) : null, React.createElement(CoursesCurriculum__SubmissionComments.make, {\n currentUser: currentUser,\n submissionId: CoursesCurriculum__Submission.id(submission),\n comments: comments,\n commentsInitiallyVisible: showComments\n })));\n } else {\n tmp$1 = null;\n }\n return React.createElement(\"div\", {\n key: CoursesCurriculum__Submission.id(submission),\n \"aria-label\": tr(undefined, undefined, \"submission_details\") + CoursesCurriculum__Submission.createdAtPretty(submission),\n className: \"mt-4 pb-4 relative curriculum__submission-feedback-container\",\n id: \"submission-\" + CoursesCurriculum__Submission.id(submission)\n }, React.createElement(\"div\", {\n className: \"rounded-lg bg-gray-50 border border-gray-200\"\n }, React.createElement(\"div\", {\n className: \"bg-gray-100 rounded-t-lg flex justify-between items-end p-4\"\n }, React.createElement(\"h2\", {\n className: \"font-medium text-sm lg:text-base leading-tight\"\n }, completionType !== 2 ? tr(undefined, undefined, \"submission_number\") + String(totalSubmissions - index | 0) : tr(undefined, undefined, \"form_response_number\") + String(totalSubmissions - index | 0)), React.createElement(\"div\", {\n className: \"text-xs font-mdium inline-block px-3 py-1 text-gray-800 leading-tight\"\n }, React.createElement(\"span\", {\n className: \"hidden md:inline\"\n }, tr(undefined, undefined, \"submitted_on\")), CoursesCurriculum__Submission.createdAtPretty(submission))), React.createElement(\"div\", undefined, React.createElement(\"div\", {\n className: \"px-4 py-4 md:px-6 md:pt-6 md:pb-5\"\n }, React.createElement(SubmissionChecklistShow.make, {\n checklist: CoursesCurriculum__Submission.checklist(submission),\n updateChecklistCB: undefined\n })), tmp, Js_array.map((function (feedback) {\n var coach = Belt_Option.flatMap(CoursesCurriculum__Feedback.coachId(feedback), (function (id) {\n return Js_array.find((function (c) {\n return CoursesCurriculum__Coach.id(c) === id;\n }), coaches);\n }));\n var user = coach !== undefined ? Js_array.find((function (up) {\n return CoursesCurriculum__User.id(up) === CoursesCurriculum__Coach.userId(coach);\n }), users) : undefined;\n var match = user !== undefined ? [\n CoursesCurriculum__User.name(user),\n CoursesCurriculum__User.title(user),\n CoursesCurriculum__User.avatar(user)\n ] : [\n tr(undefined, undefined, \"unknown_coach\"),\n undefined,\n React.createElement(\"div\", {\n className: \"w-10 h-10 rounded-full bg-gray-400 flex items-center justify-center\"\n }, React.createElement(\"i\", {\n className: \"fas fa-user-times\"\n }))\n ];\n var coachTitle = match[1];\n return React.createElement(\"div\", {\n key: CoursesCurriculum__Feedback.id(feedback),\n className: \"bg-white border-t p-4 md:p-6\"\n }, React.createElement(\"div\", {\n className: \"flex items-center\"\n }, React.createElement(\"div\", {\n className: \"shrink-0 w-12 h-12 bg-gray-300 rounded-full overflow-hidden ltr:mr me-3 object-cover\"\n }, match[2]), React.createElement(\"div\", undefined, React.createElement(\"p\", {\n className: \"text-xs leading-tight\"\n }, \"Feedback from:\"), React.createElement(\"div\", undefined, React.createElement(\"h4\", {\n className: \"font-semibold text-base leading-tight block md:inline-flex self-end\"\n }, match[0]), coachTitle !== undefined ? React.createElement(\"span\", {\n className: \"block md:inline-flex text-xs text-gray-800 ms-2 leading-tight self-end\"\n }, \"(\" + (coachTitle + \")\")) : null))), React.createElement(MarkdownBlock.make, {\n markdown: CoursesCurriculum__Feedback.feedback(feedback),\n className: \"ms-15\",\n profile: /* Permissive */0\n }));\n }), Js_array.filter((function (feedback) {\n return CoursesCurriculum__Feedback.submissionId(feedback) === CoursesCurriculum__Submission.id(submission);\n }), CoursesCurriculum__TargetDetails.feedback(targetDetails))), tmp$1)));\n });\n}\n\nfunction addSubmission(setShowSubmissionForm, addSubmissionCB, submission) {\n Curry._1(setShowSubmissionForm, (function (param) {\n return false;\n }));\n return Curry._1(addSubmissionCB, submission);\n}\n\nfunction CoursesCurriculum__SubmissionsAndFeedback(Props) {\n var currentUser = Props.currentUser;\n var targetDetails = Props.targetDetails;\n var target = Props.target;\n var evaluationCriteria = Props.evaluationCriteria;\n var addSubmissionCB = Props.addSubmissionCB;\n var targetStatus = Props.targetStatus;\n var coaches = Props.coaches;\n var users = Props.users;\n var preview = Props.preview;\n var checklist = Props.checklist;\n var match = React.useState(function () {\n return false;\n });\n var setShowSubmissionForm = match[1];\n var showSubmissionForm = match[0];\n var completionType = CoursesCurriculum__TargetDetails.computeCompletionType(targetDetails);\n return React.createElement(\"div\", {\n className: \"max-w-3xl mx-auto mt-8\"\n }, React.createElement(\"div\", {\n className: \"flex justify-between items-end pb-2\"\n }, React.createElement(\"h4\", {\n className: \"text-sm md:text-base md:leading-tight font-semibold\"\n }, completionType !== 2 ? tr(undefined, undefined, \"your_submissions\") : tr(undefined, undefined, \"your_responses\")), CoursesCurriculum__TargetStatus.canSubmit(CoursesCurriculum__Target.resubmittable(target), targetStatus) ? (\n showSubmissionForm ? React.createElement(\"button\", {\n className: \"btn btn-subtle\",\n onClick: (function (param) {\n return handleAddAnotherSubmission(setShowSubmissionForm, param);\n })\n }, React.createElement(PfIcon.make, {\n className: \"if i-times-regular text-lg me-2\"\n }), React.createElement(\"span\", {\n className: \"hidden md:inline\"\n }, tr(undefined, undefined, \"cancel\")), React.createElement(\"span\", {\n className: \"md:hidden\"\n }, tr(undefined, undefined, \"cancel\"))) : React.createElement(\"button\", {\n className: \"btn btn-primary\",\n onClick: (function (param) {\n return handleAddAnotherSubmission(setShowSubmissionForm, param);\n })\n }, React.createElement(PfIcon.make, {\n className: \"if i-plus-regular text-lg me-2\"\n }), React.createElement(\"span\", {\n className: \"hidden md:inline\"\n }, completionType !== 2 ? tr(undefined, undefined, \"add_another_submission\") : tr(undefined, undefined, \"add_another_response\")), React.createElement(\"span\", {\n className: \"md:hidden\"\n }, tr(undefined, undefined, \"add_another\")))\n ) : null), showSubmissionForm ? React.createElement(CoursesCurriculum__SubmissionBuilder.make, {\n target: target,\n targetDetails: targetDetails,\n addSubmissionCB: (function (param) {\n Curry._1(setShowSubmissionForm, (function (param) {\n return false;\n }));\n return Curry._1(addSubmissionCB, param);\n }),\n preview: preview,\n checklist: checklist\n }) : submissions(currentUser, target, targetStatus, targetDetails, evaluationCriteria, coaches, users));\n}\n\nvar make = CoursesCurriculum__SubmissionsAndFeedback;\n\nexport {\n str ,\n tr ,\n gradeBar ,\n statusBar ,\n submissionStatusIcon ,\n undoSubmissionCB ,\n gradingSection ,\n handleAddAnotherSubmission ,\n submissions ,\n addSubmission ,\n make ,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as Icon from \"../../../shared/Icon.bs.js\";\nimport * as Link from \"../../../shared/components/Link.bs.js\";\nimport * as Curry from \"../../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as Fetch from \"../../../../../node_modules/bs-fetch/src/Fetch.bs.js\";\nimport * as React from \"react\";\nimport * as FaIcon from \"../../../shared/components/FaIcon.bs.js\";\nimport * as Caml_obj from \"../../../../../node_modules/rescript/lib/es6/caml_obj.js\";\nimport * as DomUtils from \"../../../shared/utils/DomUtils.bs.js\";\nimport * as Js_array from \"../../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as LoadingV2 from \"../../../shared/types/LoadingV2.bs.js\";\nimport * as ArrayUtils from \"../../../shared/utils/ArrayUtils.bs.js\";\nimport * as Js_promise from \"../../../../../node_modules/rescript/lib/es6/js_promise.js\";\nimport * as Pagination from \"../../../shared/utils/Pagination.bs.js\";\nimport * as ReactUtils from \"../../../shared/utils/ReactUtils.bs.js\";\nimport * as ScrollLock from \"../../../shared/utils/ScrollLock.bs.js\";\nimport * as Belt_Option from \"../../../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as Caml_option from \"../../../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as OptionUtils from \"../../../shared/utils/OptionUtils.bs.js\";\nimport * as GraphqlQuery from \"../../../shared/utils/GraphqlQuery.bs.js\";\nimport * as LoadingSpinner from \"../../../shared/components/LoadingSpinner.bs.js\";\nimport * as Caml_exceptions from \"../../../../../node_modules/rescript/lib/es6/caml_exceptions.js\";\nimport * as SkeletonLoading from \"../../../shared/components/SkeletonLoading.bs.js\";\nimport * as AuthenticityToken from \"../../../shared/utils/AuthenticityToken.bs.js\";\nimport * as RescriptReactRouter from \"../../../../../node_modules/@rescript/react/src/RescriptReactRouter.bs.js\";\nimport * as CoursesCurriculum__Quiz from \"./CoursesCurriculum__Quiz.bs.js\";\nimport * as CoursesCurriculum__User from \"../types/CoursesCurriculum__User.bs.js\";\nimport * as CoursesCurriculum__Learn from \"./CoursesCurriculum__Learn.bs.js\";\nimport * as CoursesCurriculum__Course from \"../types/CoursesCurriculum__Course.bs.js\";\nimport * as CoursesCurriculum__Target from \"../types/CoursesCurriculum__Target.bs.js\";\nimport * as CoursesCurriculum__Discuss from \"./CoursesCurriculum__Discuss.bs.js\";\nimport * as CoursesCurriculum__Submission from \"../types/CoursesCurriculum__Submission.bs.js\";\nimport * as CoursesCurriculum__CurrentUser from \"../types/CoursesCurriculum__CurrentUser.bs.js\";\nimport * as CoursesCurriculum__TargetStatus from \"../types/CoursesCurriculum__TargetStatus.bs.js\";\nimport * as CoursesCurriculum__TargetDetails from \"../types/CoursesCurriculum__TargetDetails.bs.js\";\nimport NoPeerSubmissionsSvg from \"../images/no-peer-submissions.svg\";\nimport * as CoursesCurriculum__LatestSubmission from \"../types/CoursesCurriculum__LatestSubmission.bs.js\";\nimport * as CoursesCurriculum__DiscussSubmission from \"./CoursesCurriculum__DiscussSubmission.bs.js\";\nimport * as CoursesCurriculum__SubmissionBuilder from \"./CoursesCurriculum__SubmissionBuilder.bs.js\";\nimport * as CoursesCurriculum__DiscussionSubmission from \"../types/CoursesCurriculum__DiscussionSubmission.bs.js\";\nimport AssignmentDiscussionIconSvg from \"../images/assignment-discussion-icon.svg\";\nimport * as CoursesCurriculum__CompletionInstructions from \"./CoursesCurriculum__CompletionInstructions.bs.js\";\nimport * as CoursesCurriculum__SubmissionsAndFeedback from \"./CoursesCurriculum__SubmissionsAndFeedback.bs.js\";\n\nvar UnexpectedSubmissionStatus = /* @__PURE__ */Caml_exceptions.create(\"CoursesCurriculum__Overlay.UnexpectedSubmissionStatus\");\n\nvar UnexpectedResponse = /* @__PURE__ */Caml_exceptions.create(\"CoursesCurriculum__Overlay.UnexpectedResponse\");\n\nimport \"./CoursesCurriculum__Overlay.css\"\n;\n\nvar noPeerSubmissionIcon = NoPeerSubmissionsSvg;\n\nvar assignmentDiscussionIcon = AssignmentDiscussionIconSvg;\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.CoursesCurriculum__Overlay\";\n\nfunction t(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nvar partial_arg$1 = \"shared\";\n\nfunction ts(param, param$1, param$2) {\n return I18n.t(partial_arg$1, param, param$1, param$2);\n}\n\nvar Item = {};\n\nvar PagedSubmission = Pagination.Make(Item);\n\nvar initialState_loading = LoadingV2.empty(undefined);\n\nvar initialState = {\n loading: initialState_loading,\n targetDetails: undefined,\n tab: /* Learn */0,\n peerSubmissions: /* Unloaded */0,\n totalEntriesCount: 0\n};\n\nfunction reducer(state, action) {\n if (typeof action === \"number\") {\n switch (action) {\n case /* ResetState */0 :\n case /* PerformQuickNavigation */1 :\n return initialState;\n case /* BeginReloading */2 :\n return {\n loading: LoadingV2.setReloading(state.loading),\n targetDetails: state.targetDetails,\n tab: state.tab,\n peerSubmissions: state.peerSubmissions,\n totalEntriesCount: state.totalEntriesCount\n };\n case /* BeginLoadingMore */3 :\n return {\n loading: /* LoadingMore */0,\n targetDetails: state.targetDetails,\n tab: state.tab,\n peerSubmissions: state.peerSubmissions,\n totalEntriesCount: state.totalEntriesCount\n };\n \n }\n } else {\n switch (action.TAG | 0) {\n case /* Select */0 :\n return {\n loading: state.loading,\n targetDetails: state.targetDetails,\n tab: action._0,\n peerSubmissions: state.peerSubmissions,\n totalEntriesCount: state.totalEntriesCount\n };\n case /* SetTargetDetails */1 :\n return {\n loading: state.loading,\n targetDetails: action._0,\n tab: state.tab,\n peerSubmissions: state.peerSubmissions,\n totalEntriesCount: state.totalEntriesCount\n };\n case /* AddSubmission */2 :\n if (action._0) {\n return {\n loading: state.loading,\n targetDetails: OptionUtils.map(CoursesCurriculum__TargetDetails.clearPendingUserIds, state.targetDetails),\n tab: state.tab,\n peerSubmissions: state.peerSubmissions,\n totalEntriesCount: state.totalEntriesCount\n };\n } else {\n return state;\n }\n case /* LoadSubmissions */3 :\n var newSubmissions = action._2;\n var match = state.loading;\n var updatedSubmissions = match ? newSubmissions : Curry._1(PagedSubmission.toArray, state.peerSubmissions).concat(newSubmissions);\n return {\n loading: LoadingV2.setNotLoading(state.loading),\n targetDetails: state.targetDetails,\n tab: state.tab,\n peerSubmissions: Curry._3(PagedSubmission.make, updatedSubmissions, action._1, action._0),\n totalEntriesCount: action._3\n };\n \n }\n }\n}\n\nfunction closeOverlay(course) {\n RescriptReactRouter.push(\"/courses/\" + (CoursesCurriculum__Course.id(course) + \"/curriculum\"));\n}\n\nvar Raw = {};\n\nvar query = \"query DiscussionSubmissionsQuery($targetId: ID!, $after: String) {\\ndiscussionSubmissions(targetId: $targetId, first: 10, after: $after) {\\nnodes {\\nid \\ntargetId \\ncreatedAt \\nhiddenAt \\nchecklist \\nfiles {\\nid \\nname \\nurl \\n}\\n\\nuserNames \\nusers {\\nid \\nname \\ntitle \\navatarUrl \\n}\\n\\nteamName \\ncomments {\\nid \\nuserId \\nsubmissionId \\ncomment \\nreactions {\\nid \\nuserId \\nreactionableId \\nreactionValue \\nreactionableType \\nuserName \\nupdatedAt \\n}\\n\\nmoderationReports {\\nid \\nuserId \\nreportableId \\nreason \\nreportableType \\n}\\n\\nuser {\\nid \\nname \\ntitle \\navatarUrl \\n}\\n\\ncreatedAt \\nhiddenAt \\nhiddenById \\n}\\n\\nreactions {\\nid \\nuserId \\nreactionableId \\nreactionValue \\nreactionableType \\nuserName \\nupdatedAt \\n}\\n\\nanonymous \\npinned \\nmoderationReports {\\nid \\nuserId \\nreportableId \\nreason \\nreportableType \\n}\\n\\n}\\n\\npageInfo {\\nendCursor \\nhasNextPage \\n}\\n\\ntotalCount \\n}\\n\\n}\\n\";\n\nfunction parse(value) {\n var value$1 = value.discussionSubmissions;\n var value$2 = value$1.nodes;\n var value$3 = value$1.pageInfo;\n var value$4 = value$3.endCursor;\n return {\n discussionSubmissions: {\n nodes: Js_array.map((function (value) {\n var value$1 = value.hiddenAt;\n var value$2 = value.files;\n var value$3 = value.users;\n var value$4 = value.teamName;\n var value$5 = value.comments;\n var value$6 = value.reactions;\n var value$7 = value.moderationReports;\n return {\n id: value.id,\n targetId: value.targetId,\n createdAt: value.createdAt,\n hiddenAt: !(value$1 == null) ? Caml_option.some(value$1) : undefined,\n checklist: value.checklist,\n files: Js_array.map((function (value) {\n return {\n id: value.id,\n name: value.name,\n url: value.url\n };\n }), value$2),\n userNames: value.userNames,\n users: Js_array.map((function (value) {\n var value$1 = value.avatarUrl;\n return {\n id: value.id,\n name: value.name,\n title: value.title,\n avatarUrl: !(value$1 == null) ? value$1 : undefined\n };\n }), value$3),\n teamName: !(value$4 == null) ? value$4 : undefined,\n comments: !(value$5 == null) ? Js_array.map((function (value) {\n var value$1 = value.reactions;\n var value$2 = value.moderationReports;\n var value$3 = value.user;\n var value$4 = value$3.avatarUrl;\n var value$5 = value.hiddenAt;\n var value$6 = value.hiddenById;\n return {\n id: value.id,\n userId: value.userId,\n submissionId: value.submissionId,\n comment: value.comment,\n reactions: Js_array.map((function (value) {\n var value$1 = value.reactionableId;\n return {\n id: value.id,\n userId: value.userId,\n reactionableId: !(value$1 == null) ? value$1 : undefined,\n reactionValue: value.reactionValue,\n reactionableType: value.reactionableType,\n userName: value.userName,\n updatedAt: value.updatedAt\n };\n }), value$1),\n moderationReports: Js_array.map((function (value) {\n var value$1 = value.reportableId;\n return {\n id: value.id,\n userId: value.userId,\n reportableId: !(value$1 == null) ? value$1 : undefined,\n reason: value.reason,\n reportableType: value.reportableType\n };\n }), value$2),\n user: {\n id: value$3.id,\n name: value$3.name,\n title: value$3.title,\n avatarUrl: !(value$4 == null) ? value$4 : undefined\n },\n createdAt: value.createdAt,\n hiddenAt: !(value$5 == null) ? Caml_option.some(value$5) : undefined,\n hiddenById: !(value$6 == null) ? value$6 : undefined\n };\n }), value$5) : undefined,\n reactions: !(value$6 == null) ? Js_array.map((function (value) {\n var value$1 = value.reactionableId;\n return {\n id: value.id,\n userId: value.userId,\n reactionableId: !(value$1 == null) ? value$1 : undefined,\n reactionValue: value.reactionValue,\n reactionableType: value.reactionableType,\n userName: value.userName,\n updatedAt: value.updatedAt\n };\n }), value$6) : undefined,\n anonymous: value.anonymous,\n pinned: value.pinned,\n moderationReports: Js_array.map((function (value) {\n var value$1 = value.reportableId;\n return {\n id: value.id,\n userId: value.userId,\n reportableId: !(value$1 == null) ? value$1 : undefined,\n reason: value.reason,\n reportableType: value.reportableType\n };\n }), value$7)\n };\n }), value$2),\n pageInfo: {\n endCursor: !(value$4 == null) ? value$4 : undefined,\n hasNextPage: value$3.hasNextPage\n },\n totalCount: value$1.totalCount\n }\n };\n}\n\nfunction serialize(value) {\n var value$1 = value.discussionSubmissions;\n var value$2 = value$1.totalCount;\n var value$3 = value$1.pageInfo;\n var value$4 = value$3.hasNextPage;\n var value$5 = value$3.endCursor;\n var endCursor = value$5 !== undefined ? value$5 : null;\n var pageInfo = {\n endCursor: endCursor,\n hasNextPage: value$4\n };\n var value$6 = value$1.nodes;\n var nodes = Js_array.map((function (value) {\n var value$1 = value.moderationReports;\n var moderationReports = Js_array.map((function (value) {\n var value$1 = value.reportableType;\n var value$2 = value.reason;\n var value$3 = value.reportableId;\n var reportableId = value$3 !== undefined ? value$3 : null;\n var value$4 = value.userId;\n var value$5 = value.id;\n return {\n id: value$5,\n userId: value$4,\n reportableId: reportableId,\n reason: value$2,\n reportableType: value$1\n };\n }), value$1);\n var value$2 = value.pinned;\n var value$3 = value.anonymous;\n var value$4 = value.reactions;\n var reactions = value$4 !== undefined ? Js_array.map((function (value) {\n var value$1 = value.updatedAt;\n var value$2 = value.userName;\n var value$3 = value.reactionableType;\n var value$4 = value.reactionValue;\n var value$5 = value.reactionableId;\n var reactionableId = value$5 !== undefined ? value$5 : null;\n var value$6 = value.userId;\n var value$7 = value.id;\n return {\n id: value$7,\n userId: value$6,\n reactionableId: reactionableId,\n reactionValue: value$4,\n reactionableType: value$3,\n userName: value$2,\n updatedAt: value$1\n };\n }), value$4) : null;\n var value$5 = value.comments;\n var comments = value$5 !== undefined ? Js_array.map((function (value) {\n var value$1 = value.hiddenById;\n var hiddenById = value$1 !== undefined ? value$1 : null;\n var value$2 = value.hiddenAt;\n var hiddenAt = value$2 !== undefined ? Caml_option.valFromOption(value$2) : null;\n var value$3 = value.createdAt;\n var value$4 = value.user;\n var value$5 = value$4.avatarUrl;\n var avatarUrl = value$5 !== undefined ? value$5 : null;\n var value$6 = value$4.title;\n var value$7 = value$4.name;\n var value$8 = value$4.id;\n var user = {\n id: value$8,\n name: value$7,\n title: value$6,\n avatarUrl: avatarUrl\n };\n var value$9 = value.moderationReports;\n var moderationReports = Js_array.map((function (value) {\n var value$1 = value.reportableType;\n var value$2 = value.reason;\n var value$3 = value.reportableId;\n var reportableId = value$3 !== undefined ? value$3 : null;\n var value$4 = value.userId;\n var value$5 = value.id;\n return {\n id: value$5,\n userId: value$4,\n reportableId: reportableId,\n reason: value$2,\n reportableType: value$1\n };\n }), value$9);\n var value$10 = value.reactions;\n var reactions = Js_array.map((function (value) {\n var value$1 = value.updatedAt;\n var value$2 = value.userName;\n var value$3 = value.reactionableType;\n var value$4 = value.reactionValue;\n var value$5 = value.reactionableId;\n var reactionableId = value$5 !== undefined ? value$5 : null;\n var value$6 = value.userId;\n var value$7 = value.id;\n return {\n id: value$7,\n userId: value$6,\n reactionableId: reactionableId,\n reactionValue: value$4,\n reactionableType: value$3,\n userName: value$2,\n updatedAt: value$1\n };\n }), value$10);\n var value$11 = value.comment;\n var value$12 = value.submissionId;\n var value$13 = value.userId;\n var value$14 = value.id;\n return {\n id: value$14,\n userId: value$13,\n submissionId: value$12,\n comment: value$11,\n reactions: reactions,\n moderationReports: moderationReports,\n user: user,\n createdAt: value$3,\n hiddenAt: hiddenAt,\n hiddenById: hiddenById\n };\n }), value$5) : null;\n var value$6 = value.teamName;\n var teamName = value$6 !== undefined ? value$6 : null;\n var value$7 = value.users;\n var users = Js_array.map((function (value) {\n var value$1 = value.avatarUrl;\n var avatarUrl = value$1 !== undefined ? value$1 : null;\n var value$2 = value.title;\n var value$3 = value.name;\n var value$4 = value.id;\n return {\n id: value$4,\n name: value$3,\n title: value$2,\n avatarUrl: avatarUrl\n };\n }), value$7);\n var value$8 = value.userNames;\n var value$9 = value.files;\n var files = Js_array.map((function (value) {\n var value$1 = value.url;\n var value$2 = value.name;\n var value$3 = value.id;\n return {\n id: value$3,\n name: value$2,\n url: value$1\n };\n }), value$9);\n var value$10 = value.checklist;\n var value$11 = value.hiddenAt;\n var hiddenAt = value$11 !== undefined ? Caml_option.valFromOption(value$11) : null;\n var value$12 = value.createdAt;\n var value$13 = value.targetId;\n var value$14 = value.id;\n return {\n id: value$14,\n targetId: value$13,\n createdAt: value$12,\n hiddenAt: hiddenAt,\n checklist: value$10,\n files: files,\n userNames: value$8,\n users: users,\n teamName: teamName,\n comments: comments,\n reactions: reactions,\n anonymous: value$3,\n pinned: value$2,\n moderationReports: moderationReports\n };\n }), value$6);\n var discussionSubmissions = {\n nodes: nodes,\n pageInfo: pageInfo,\n totalCount: value$2\n };\n return {\n discussionSubmissions: discussionSubmissions\n };\n}\n\nfunction serializeVariables(inp) {\n var a = inp.after;\n return {\n targetId: inp.targetId,\n after: a !== undefined ? a : undefined\n };\n}\n\nfunction makeVariables(targetId, after, param) {\n return {\n targetId: targetId,\n after: after\n };\n}\n\nvar DiscussionSubmissionsQuery_inner = {\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables\n};\n\nvar include = GraphqlQuery.Extender({\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar make = include.make;\n\nvar DiscussionSubmissionsQuery_Graphql_error = include.Graphql_error;\n\nvar DiscussionSubmissionsQuery_decodeNotification = include.decodeNotification;\n\nvar DiscussionSubmissionsQuery_decodeObject = include.decodeObject;\n\nvar DiscussionSubmissionsQuery_decodeNotifications = include.decodeNotifications;\n\nvar DiscussionSubmissionsQuery_decodeErrors = include.decodeErrors;\n\nvar DiscussionSubmissionsQuery_flashNotifications = include.flashNotifications;\n\nvar DiscussionSubmissionsQuery_sendQuery = include.sendQuery;\n\nvar DiscussionSubmissionsQuery_query = include.query;\n\nvar DiscussionSubmissionsQuery_fetch = include.$$fetch;\n\nvar DiscussionSubmissionsQuery = {\n DiscussionSubmissionsQuery_inner: DiscussionSubmissionsQuery_inner,\n Raw: Raw,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables,\n Graphql_error: DiscussionSubmissionsQuery_Graphql_error,\n decodeNotification: DiscussionSubmissionsQuery_decodeNotification,\n decodeObject: DiscussionSubmissionsQuery_decodeObject,\n decodeNotifications: DiscussionSubmissionsQuery_decodeNotifications,\n decodeErrors: DiscussionSubmissionsQuery_decodeErrors,\n flashNotifications: DiscussionSubmissionsQuery_flashNotifications,\n sendQuery: DiscussionSubmissionsQuery_sendQuery,\n query: DiscussionSubmissionsQuery_query,\n $$fetch: DiscussionSubmissionsQuery_fetch,\n make: make\n};\n\nfunction getDiscussionSubmissions(send, cursor, targetId) {\n Js_promise.then_((function (response) {\n Curry._1(send, {\n TAG: /* LoadSubmissions */3,\n _0: response.discussionSubmissions.pageInfo.endCursor,\n _1: response.discussionSubmissions.pageInfo.hasNextPage,\n _2: Js_array.map(CoursesCurriculum__DiscussionSubmission.decode, response.discussionSubmissions.nodes),\n _3: response.discussionSubmissions.totalCount\n });\n return Promise.resolve(undefined);\n }), Curry._3(make, undefined, undefined, {\n targetId: targetId,\n after: cursor\n }));\n}\n\nfunction reloadSubmissions(send, targetId) {\n Curry._1(send, /* BeginReloading */2);\n getDiscussionSubmissions(send, undefined, targetId);\n}\n\nfunction handleUrlParam(key, prefix, send, targetDetails) {\n var paramValue = DomUtils.getUrlParam(key);\n var elementId = prefix + Belt_Option.getWithDefault(paramValue, \"\");\n var element = document.getElementById(elementId);\n if (element == null) {\n Rollbar.error(prefix + \" not found\");\n return ;\n }\n var completionType = CoursesCurriculum__TargetDetails.computeCompletionType(targetDetails);\n Curry._1(send, {\n TAG: /* Select */0,\n _0: /* Complete */{\n _0: completionType\n }\n });\n element.scrollIntoView();\n element.classList.add(\"element--highlighted\");\n}\n\nfunction loadTargetDetails(target, currentUser, send, param) {\n Js_promise.then_((function (json) {\n var targetDetails = CoursesCurriculum__TargetDetails.decode(json);\n Curry._1(send, {\n TAG: /* SetTargetDetails */1,\n _0: targetDetails\n });\n if (CoursesCurriculum__CurrentUser.isParticipant(currentUser) && CoursesCurriculum__TargetDetails.discussion(targetDetails)) {\n reloadSubmissions(send, CoursesCurriculum__Target.id(target));\n }\n var hasCommentParam = DomUtils.hasUrlParam(\"comment_id\");\n var hasSubmissionParam = DomUtils.hasUrlParam(\"submission_id\");\n if (hasCommentParam && hasSubmissionParam) {\n handleUrlParam(\"comment_id\", \"comment-\", send, targetDetails);\n }\n if (hasSubmissionParam && !hasCommentParam) {\n handleUrlParam(\"submission_id\", \"submission-\", send, targetDetails);\n }\n return Promise.resolve(targetDetails);\n }), Js_promise.then_(Fetch.$$Response.json, fetch(\"/targets/\" + (CoursesCurriculum__Target.id(target) + \"/details_v2\"))));\n}\n\nfunction submissionsLoadedData(totalSubmissionsCount, loadedSubmissionsCount) {\n return React.createElement(\"p\", {\n className: \"inline-block mt-8 mx-auto text-gray-800 text-xs px-2 text-center font-semibold\",\n tabIndex: 0\n }, totalSubmissionsCount === loadedSubmissionsCount ? t(undefined, loadedSubmissionsCount, \"submissions_fully_loaded_text\") : t([\n [\n \"total_submissions\",\n String(totalSubmissionsCount)\n ],\n [\n \"loaded_submissions_count\",\n String(loadedSubmissionsCount)\n ]\n ], loadedSubmissionsCount, \"submissions_partially_loaded_text\"));\n}\n\nfunction submissionsList(submissions, state, currentUser, callBack) {\n return React.createElement(\"div\", {\n className: \"discussion-submissions__container space-y-16\"\n }, ArrayUtils.isEmpty(submissions) ? React.createElement(\"div\", {\n className: \"bg-gray-50/50 rounded-lg mt-2 p-4\"\n }, React.createElement(\"img\", {\n className: \"w-64 mx-auto\",\n src: noPeerSubmissionIcon\n }), React.createElement(\"p\", {\n className: \"text-center text-gray-600\"\n }, t(undefined, undefined, \"no_peer_submissions\"))) : submissions.map(function (submission) {\n return React.createElement(CoursesCurriculum__DiscussSubmission.make, {\n currentUser: currentUser,\n submission: submission,\n callBack: callBack,\n key: CoursesCurriculum__DiscussionSubmission.id(submission)\n });\n }), ReactUtils.nullIf(React.createElement(\"div\", {\n className: \"text-center pb-4\"\n }, submissionsLoadedData(state.totalEntriesCount, submissions.length)), ArrayUtils.isEmpty(submissions)));\n}\n\nfunction completionTypeToString(completionType, targetStatus) {\n var match = CoursesCurriculum__TargetStatus.status(targetStatus);\n var exit = 0;\n if (typeof match === \"number\") {\n if (match !== 0) {\n exit = 2;\n } else {\n switch (completionType) {\n case /* Evaluated */0 :\n return t(undefined, undefined, \"completion_tab_complete\");\n case /* TakeQuiz */1 :\n return t(undefined, undefined, \"completion_tab_take_quiz\");\n case /* SubmitForm */2 :\n return t(undefined, undefined, \"completion_tab_submit_form\");\n case /* NoAssignment */3 :\n return \"\";\n \n }\n }\n } else {\n var match$1 = match._0;\n if (typeof match$1 === \"number\" && match$1 < 2) {\n exit = 2;\n }\n \n }\n if (exit === 2) {\n switch (completionType) {\n case /* Evaluated */0 :\n return t(undefined, undefined, \"completion_tab_submissions\");\n case /* TakeQuiz */1 :\n return t(undefined, undefined, \"completion_tab_quiz_result\");\n case /* SubmitForm */2 :\n return t(undefined, undefined, \"completion_tab_form_response\");\n case /* NoAssignment */3 :\n break;\n \n }\n }\n if (typeof match === \"number\") {\n return t(undefined, undefined, \"completion_tab_completed\");\n } else {\n return t(undefined, undefined, \"completion_tab_locked\");\n }\n}\n\nfunction tabToString(targetStatus, tab) {\n if (typeof tab === \"number\") {\n if (tab !== 0) {\n return t(undefined, undefined, \"discuss_tab\");\n } else {\n return t(undefined, undefined, \"learn_tab\");\n }\n } else {\n return completionTypeToString(tab._0, targetStatus);\n }\n}\n\nfunction selectableTabs(targetDetails) {\n if (Caml_obj.equal(CoursesCurriculum__TargetDetails.communities(targetDetails), [])) {\n return [/* Learn */0];\n } else {\n return [\n /* Learn */0,\n /* Discuss */1\n ];\n }\n}\n\nfunction tabClasses(selection, tab) {\n return \"course-overlay__body-tab-item p-2 md:px-3 md:py-4 flex w-full items-center justify-center text-sm -mx-px font-semibold focus:outline-none focus:ring-2 focus:ring-inset focus:ring-focusColor-500\" + (\n Caml_obj.equal(tab, selection) ? \" course-overlay__body-tab-item--selected\" : \" bg-gray-50 hover:text-primary-400 hover:bg-gray-50 focus:text-primary-400 focus:bg-gray-50 cursor-pointer\"\n );\n}\n\nfunction scrollCompleteButtonIntoViewEventually(param) {\n setTimeout((function (param) {\n var element = document.getElementById(\"auto-verify-target\");\n if (element == null) {\n Rollbar.error(\"Could not find the 'Complete' button to scroll to.\");\n } else {\n element.scrollIntoView();\n element.className = \"mt-4 complete-button-selected\";\n }\n }), 50);\n}\n\nfunction handleTablink(send, _event) {\n Curry._1(send, {\n TAG: /* Select */0,\n _0: /* Learn */0\n });\n scrollCompleteButtonIntoViewEventually(undefined);\n}\n\nfunction tabButton(tab, state, send, targetStatus) {\n return React.createElement(\"button\", {\n key: \"select-\" + tabToString(targetStatus, tab),\n \"aria-selected\": Caml_obj.equal(tab, state.tab),\n className: tabClasses(tab, state.tab),\n role: \"tab\",\n onClick: (function (_e) {\n Curry._1(send, {\n TAG: /* Select */0,\n _0: tab\n });\n })\n }, tabToString(targetStatus, tab));\n}\n\nfunction tabLink(tab, state, send, targetStatus) {\n return React.createElement(\"button\", {\n className: tabClasses(tab, state.tab),\n onClick: (function (param) {\n Curry._1(send, {\n TAG: /* Select */0,\n _0: /* Learn */0\n });\n return scrollCompleteButtonIntoViewEventually(undefined);\n })\n }, tabToString(targetStatus, tab));\n}\n\nfunction tabOptions(state, send, targetDetails, targetStatus) {\n var completionType = CoursesCurriculum__TargetDetails.computeCompletionType(targetDetails);\n var match = CoursesCurriculum__TargetStatus.status(targetStatus);\n var tmp;\n if (typeof match === \"number\") {\n tmp = completionType >= 3 ? null : tabButton(/* Complete */{\n _0: completionType\n }, state, send, targetStatus);\n } else {\n var match$1 = match._0;\n tmp = typeof match$1 === \"number\" && !(match$1 >= 2 || completionType >= 3 || !Caml_obj.notequal(CoursesCurriculum__TargetDetails.submissions(targetDetails), [])) ? tabButton(/* Complete */{\n _0: completionType\n }, state, send, targetStatus) : null;\n }\n return React.createElement(\"div\", {\n className: \"flex justify-between max-w-3xl mx-auto -mb-px mt-5 md:mt-7\",\n role: \"tablist\"\n }, Js_array.map((function (selection) {\n return tabButton(selection, state, send, targetStatus);\n }), selectableTabs(targetDetails)), tmp);\n}\n\nfunction addSubmission(target, state, send, addSubmissionCB, submission) {\n var targetDetails = state.targetDetails;\n if (targetDetails !== undefined) {\n var newTargetDetails = CoursesCurriculum__TargetDetails.addSubmission(submission, targetDetails);\n Curry._1(send, {\n TAG: /* SetTargetDetails */1,\n _0: newTargetDetails\n });\n }\n var match = CoursesCurriculum__Submission.status(submission);\n switch (match) {\n case /* MarkedAsComplete */0 :\n return Curry._1(addSubmissionCB, CoursesCurriculum__LatestSubmission.make(false, CoursesCurriculum__Target.id(target)));\n case /* Pending */1 :\n return Curry._1(addSubmissionCB, CoursesCurriculum__LatestSubmission.make(true, CoursesCurriculum__Target.id(target)));\n case /* Completed */2 :\n throw {\n RE_EXN_ID: UnexpectedSubmissionStatus,\n _1: \"CoursesCurriculum__Overlay.addSubmission cannot handle a submsision with status Completed\",\n Error: new Error()\n };\n case /* Rejected */3 :\n throw {\n RE_EXN_ID: UnexpectedSubmissionStatus,\n _1: \"CoursesCurriculum__Overlay.addSubmission cannot handle a submsision with status Rejected\",\n Error: new Error()\n };\n \n }\n}\n\nfunction addVerifiedSubmission(target, state, send, addSubmissionCB, submission) {\n var targetDetails = state.targetDetails;\n if (targetDetails !== undefined) {\n var newTargetDetails = CoursesCurriculum__TargetDetails.addSubmission(submission, targetDetails);\n Curry._1(send, {\n TAG: /* SetTargetDetails */1,\n _0: newTargetDetails\n });\n }\n return Curry._1(addSubmissionCB, CoursesCurriculum__LatestSubmission.make(false, CoursesCurriculum__Target.id(target)));\n}\n\nfunction targetStatusClass(prefix, targetStatus) {\n return prefix + CoursesCurriculum__TargetStatus.statusClassesSufix(targetStatus);\n}\n\nfunction renderTargetStatus(targetStatus) {\n var className = \"curriculum__target-status bg-white text-xs mt-2 md:mt-0 py-1 px-2 md:px-4 curriculum__target-status--\" + CoursesCurriculum__TargetStatus.statusClassesSufix(targetStatus);\n return ReactUtils.nullIf(React.createElement(\"div\", {\n className: className\n }, CoursesCurriculum__TargetStatus.statusToString(targetStatus)), CoursesCurriculum__TargetStatus.isPending(targetStatus));\n}\n\nfunction overlayHeaderTitleCardClasses(targetStatus) {\n return \"course-overlay__header-title-card relative flex justify-between items-center px-3 py-3 md:p-6 course-overlay__header-title-card--\" + CoursesCurriculum__TargetStatus.statusClassesSufix(targetStatus);\n}\n\nfunction renderLocked(text) {\n return React.createElement(\"div\", {\n className: \"mx-auto text-center bg-gray-900 text-white max-w-fc px-4 py-2 text-sm font-semibold relative z-10 rounded-b-lg\"\n }, React.createElement(\"i\", {\n className: \"fas fa-lock text-lg\"\n }), React.createElement(\"span\", {\n className: \"ms-2\"\n }, text));\n}\n\nfunction overlayStatus(course, target, targetStatus, preview) {\n return React.createElement(\"div\", undefined, React.createElement(\"div\", {\n className: overlayHeaderTitleCardClasses(targetStatus)\n }, React.createElement(\"button\", {\n \"aria-label\": t(undefined, undefined, \"close_button\"),\n className: \"course-overlay__close xl:absolute flex flex-col items-center justify-center absolute rounded-t-lg lg:rounded-t-none lg:rounded-b-lg leading-tight px-4 py-1 h-8 lg:h-full cursor-pointer border border-b-0 lg:border-transparent lg:border-t-0 lg:shadow hover:text-gray-900 hover:shadow-md focus:border-gray-300 focus:outline-none focus:text-gray-900 course-overlay__close--\" + CoursesCurriculum__TargetStatus.statusClassesSufix(targetStatus),\n onClick: (function (_e) {\n closeOverlay(course);\n })\n }, React.createElement(Icon.make, {\n className: \"if i-times-regular text-xl lg:text-2xl mt-1 lg:mt-0\"\n }), React.createElement(\"span\", {\n className: \"text-xs hidden lg:inline-block mt-px\"\n }, t(undefined, undefined, \"close_button\"))), React.createElement(\"div\", {\n className: \"w-full flex flex-wrap md:flex-nowrap items-center justify-between relative\"\n }, React.createElement(\"div\", {\n className: \"flex flex-col md:flex-row items-start md:items-center font-medium leading-snug\"\n }, CoursesCurriculum__Target.milestone(target) ? React.createElement(\"div\", {\n className: \"flex items-center flex-shrink-0 text-xs font-medium bg-yellow-100 text-yellow-800 border border-yellow-300 px-1.5 md:px-2 py-1 rounded-md mr-2\"\n }, React.createElement(Icon.make, {\n className: \"if i-milestone-solid text-sm\"\n }), React.createElement(\"span\", {\n className: \"ms-1\"\n }, ts(undefined, undefined, \"milestone_label\"))) : null, React.createElement(\"h1\", {\n className: \"text-base leading-snug md:me-6 md:text-xl\"\n }, CoursesCurriculum__Target.title(target))), renderTargetStatus(targetStatus))), ReactUtils.nullUnless(React.createElement(\"div\", undefined, renderLocked(t(undefined, undefined, \"preview_mode_text\"))), preview));\n}\n\nfunction renderLockReason(reason) {\n return renderLocked(CoursesCurriculum__TargetStatus.lockReasonToString(reason));\n}\n\nfunction prerequisitesIncomplete(reason, target, targets, statusOfTargets, send) {\n var prerequisiteTargetIds = CoursesCurriculum__Target.prerequisiteTargetIds(target);\n var prerequisiteTargets = Js_array.filter((function (target) {\n return Js_array.includes(CoursesCurriculum__Target.id(target), prerequisiteTargetIds);\n }), targets);\n return React.createElement(\"div\", {\n className: \"relative px-3 md:px-0\"\n }, renderLocked(CoursesCurriculum__TargetStatus.lockReasonToString(reason)), React.createElement(\"div\", {\n className: \"course-overlay__prerequisite-targets z-10 max-w-3xl mx-auto bg-white text-center rounded-lg overflow-hidden shadow mt-6\"\n }, Js_array.map((function (target) {\n var targetStatus = ArrayUtils.unsafeFind((function (ts) {\n return CoursesCurriculum__TargetStatus.targetId(ts) === CoursesCurriculum__Target.id(target);\n }), \"Could not find status of target with ID \" + CoursesCurriculum__Target.id(target), statusOfTargets);\n return React.createElement(Link.make, {\n href: \"/targets/\" + CoursesCurriculum__Target.id(target),\n ariaLabel: \"Select Target \" + CoursesCurriculum__Target.id(target),\n className: \"bg-white border-t px-6 py-4 relative z-10 flex items-center justify-between hover:bg-gray-50 hover:text-primary-500 cursor-pointer\",\n onClick: (function (param) {\n Curry._1(send, /* ResetState */0);\n }),\n children: null,\n key: CoursesCurriculum__Target.id(target)\n }, React.createElement(\"span\", {\n className: \"font-semibold leading-snug\"\n }, CoursesCurriculum__Target.title(target)), renderTargetStatus(targetStatus));\n }), prerequisiteTargets)));\n}\n\nfunction handleLocked(target, targets, targetStatus, statusOfTargets, send) {\n var reason = CoursesCurriculum__TargetStatus.status(targetStatus);\n if (typeof reason === \"number\") {\n return null;\n }\n var reason$1 = reason._0;\n if (typeof reason$1 === \"number\" && reason$1 >= 2) {\n return prerequisitesIncomplete(reason$1, target, targets, statusOfTargets, send);\n } else {\n return renderLocked(CoursesCurriculum__TargetStatus.lockReasonToString(reason$1));\n }\n}\n\nfunction overlayContentClasses(bool) {\n if (bool) {\n return \"\";\n } else {\n return \"hidden\";\n }\n}\n\nfunction addPageRead(targetId, markReadCB) {\n Js_promise.then_((function (response) {\n if (response.ok) {\n Curry._1(markReadCB, targetId);\n return Promise.resolve(undefined);\n } else {\n return Promise.reject({\n RE_EXN_ID: UnexpectedResponse,\n _1: response.status\n });\n }\n }), fetch(\"/targets/\" + (targetId + \"/mark_as_read\"), Fetch.RequestInit.make(/* Post */2, [\n [\n \"X-CSRF-Token\",\n AuthenticityToken.fromHead(undefined)\n ],\n [\n \"Content-Type\",\n \"application/json\"\n ]\n ], undefined, undefined, undefined, undefined, /* SameOrigin */1, undefined, undefined, undefined, undefined, undefined)(undefined)));\n}\n\nfunction learnSection(send, targetDetails, targetRead, tab, author, courseId, targetId, markReadCB, targetStatus, completionType, preview) {\n var match = CoursesCurriculum__TargetStatus.status(targetStatus);\n var suffixLinkInfo;\n if (typeof match === \"number\" && !(match === 2 || match === 1)) {\n switch (completionType) {\n case /* Evaluated */0 :\n suffixLinkInfo = [\n /* Complete */{\n _0: completionType\n },\n t(undefined, undefined, \"learn_cta_submit_work\"),\n \"fas fa-feather-alt\"\n ];\n break;\n case /* TakeQuiz */1 :\n suffixLinkInfo = [\n /* Complete */{\n _0: completionType\n },\n t(undefined, undefined, \"learn_cta_take_quiz\"),\n \"fas fa-tasks\"\n ];\n break;\n case /* SubmitForm */2 :\n suffixLinkInfo = [\n /* Complete */{\n _0: completionType\n },\n t(undefined, undefined, \"learn_cta_submit_form\"),\n \"fas fa-feather-alt\"\n ];\n break;\n case /* NoAssignment */3 :\n suffixLinkInfo = undefined;\n break;\n \n }\n } else {\n suffixLinkInfo = undefined;\n }\n var linkToTab = Belt_Option.mapWithDefault(suffixLinkInfo, null, (function (param) {\n var tab = param[0];\n return React.createElement(\"button\", {\n className: \"cursor-pointer flex rounded btn-success text-base justify-center w-full font-semibold p-4 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-focusColor-500 curriculum-overlay__learn-submit-btn\",\n onClick: (function (param) {\n Curry._1(send, {\n TAG: /* Select */0,\n _0: tab\n });\n })\n }, React.createElement(\"span\", undefined, React.createElement(FaIcon.make, {\n classes: param[2] + \" me-2\"\n }), param[1]));\n }));\n return React.createElement(\"div\", {\n className: tab === /* Learn */0 ? \"\" : \"hidden\"\n }, React.createElement(CoursesCurriculum__Learn.make, {\n targetDetails: targetDetails,\n author: author,\n courseId: courseId,\n targetId: targetId\n }), React.createElement(\"div\", {\n className: \"flex flex-wrap gap-4 mt-4\"\n }, targetRead ? React.createElement(\"div\", {\n className: \"flex rounded text-base italic space-x-2 bg-gray-50 text-gray-600 items-center justify-center w-full font-semibold p-3\"\n }, React.createElement(\"span\", {\n className: \"w-5 h-5 flex items-center justify-center\",\n title: \"Marked read\"\n }, React.createElement(\"svg\", {\n className: \"w-5 h-5 text-gray-500\",\n height: \"16\",\n width: \"16\",\n fill: \"currentColor\",\n viewBox: \"0 0 16 16\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, React.createElement(\"path\", {\n d: \"M12.354 4.354a.5.5 0 0 0-.708-.708L5 10.293 1.854 7.146a.5.5 0 1 0-.708.708l3.5 3.5a.5.5 0 0 0 .708 0l7-7zm-4.208 7-.896-.897.707-.707.543.543 6.646-6.647a.5.5 0 0 1 .708.708l-7 7a.5.5 0 0 1-.708 0z\"\n }), React.createElement(\"path\", {\n d: \"m5.354 7.146.896.897-.707.707-.897-.896a.5.5 0 1 1 .708-.708z\"\n }))), React.createElement(\"span\", undefined, t(undefined, undefined, \"marked_read\"))) : React.createElement(\"button\", {\n className: \"btn btn-default flex space-x-2 text-base w-full p-3 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-focusColor-500 curriculum-overlay__learn-submit-btn\",\n disabled: preview || !CoursesCurriculum__TargetStatus.readable(targetStatus),\n onClick: (function (param) {\n addPageRead(targetId, markReadCB);\n })\n }, React.createElement(\"span\", {\n className: \"w-2 h-2 inline-block rounded-full bg-blue-600\"\n }), React.createElement(\"span\", undefined, t(undefined, undefined, \"mark_as_read\"))), linkToTab));\n}\n\nfunction discussSection(target, targetDetails, tab) {\n return React.createElement(\"div\", {\n className: tab === /* Discuss */1 ? \"\" : \"hidden\"\n }, React.createElement(CoursesCurriculum__Discuss.make, {\n targetId: CoursesCurriculum__Target.id(target),\n communities: CoursesCurriculum__TargetDetails.communities(targetDetails)\n }));\n}\n\nfunction completeSectionClasses(tab, completionType) {\n if (typeof tab === \"number\" && (tab !== 0 || completionType < 3)) {\n return \"hidden\";\n } else {\n return \"\";\n }\n}\n\nfunction completeSection(state, send, target, targetDetails, targetStatus, addSubmissionCB, evaluationCriteria, coaches, users, preview, completionType, currentUser) {\n var addVerifiedSubmissionCB = function (param) {\n return addVerifiedSubmission(target, state, send, addSubmissionCB, param);\n };\n var targetId = CoursesCurriculum__Target.id(target);\n var match = CoursesCurriculum__TargetStatus.status(targetStatus);\n var tmp;\n var exit = 0;\n var exit$1 = 0;\n if (typeof match === \"number\") {\n if (match !== 0) {\n exit$1 = 2;\n } else {\n switch (completionType) {\n case /* Evaluated */0 :\n tmp = [\n React.createElement(CoursesCurriculum__CompletionInstructions.make, {\n targetDetails: targetDetails,\n title: \"Instructions\",\n key: \"completion-instructions\"\n }),\n React.createElement(CoursesCurriculum__SubmissionBuilder.make, {\n target: target,\n targetDetails: targetDetails,\n addSubmissionCB: (function (param) {\n return addSubmission(target, state, send, addSubmissionCB, param);\n }),\n preview: preview,\n checklist: CoursesCurriculum__TargetDetails.checklist(targetDetails),\n key: \"courses-curriculum-submission-form\"\n })\n ];\n break;\n case /* TakeQuiz */1 :\n tmp = [\n React.createElement(CoursesCurriculum__CompletionInstructions.make, {\n targetDetails: targetDetails,\n title: \"Instructions\",\n key: \"completion-instructions\"\n }),\n React.createElement(CoursesCurriculum__Quiz.make, {\n target: target,\n targetDetails: targetDetails,\n addSubmissionCB: addVerifiedSubmissionCB,\n preview: preview,\n key: \"courses-curriculum-quiz\"\n })\n ];\n break;\n case /* SubmitForm */2 :\n tmp = [\n React.createElement(CoursesCurriculum__CompletionInstructions.make, {\n targetDetails: targetDetails,\n title: \"Instructions\",\n key: \"completion-instructions\"\n }),\n React.createElement(CoursesCurriculum__SubmissionBuilder.make, {\n target: target,\n targetDetails: targetDetails,\n addSubmissionCB: (function (param) {\n return addSubmission(target, state, send, addSubmissionCB, param);\n }),\n preview: preview,\n checklist: CoursesCurriculum__TargetDetails.checklist(targetDetails),\n key: \"courses-curriculum-submission-form\"\n })\n ];\n break;\n case /* NoAssignment */3 :\n exit = 1;\n break;\n \n }\n }\n } else {\n var match$1 = match._0;\n if (typeof match$1 === \"number\" && match$1 < 2) {\n exit$1 = 2;\n } else {\n exit = 1;\n }\n }\n if (exit$1 === 2) {\n if (completionType >= 3) {\n exit = 1;\n } else {\n tmp = React.createElement(CoursesCurriculum__SubmissionsAndFeedback.make, {\n currentUser: currentUser,\n targetDetails: targetDetails,\n target: target,\n evaluationCriteria: evaluationCriteria,\n addSubmissionCB: (function (param) {\n return addSubmission(target, state, send, addSubmissionCB, param);\n }),\n targetStatus: targetStatus,\n coaches: coaches,\n users: users,\n preview: preview,\n checklist: CoursesCurriculum__TargetDetails.checklist(targetDetails)\n });\n }\n }\n if (exit === 1) {\n tmp = null;\n }\n var tmp$1;\n if (CoursesCurriculum__TargetDetails.discussion(targetDetails) && CoursesCurriculum__CurrentUser.isParticipant(currentUser)) {\n var submissions = state.peerSubmissions;\n var tmp$2;\n if (typeof submissions === \"number\") {\n tmp$2 = React.createElement(\"div\", undefined, SkeletonLoading.multiple(6, SkeletonLoading.card(undefined, undefined)));\n } else if (submissions.TAG === /* PartiallyLoaded */0) {\n var cursor = submissions._1;\n var times = state.loading;\n tmp$2 = React.createElement(\"div\", undefined, submissionsList(submissions._0, state, currentUser, (function (param) {\n return getDiscussionSubmissions(send, undefined, param);\n })), times ? ReactUtils.nullUnless(React.createElement(\"div\", {\n className: \"pb-6\"\n }, React.createElement(\"button\", {\n className: \"btn btn-primary-ghost cursor-pointer w-full\",\n onClick: (function (param) {\n Curry._1(send, /* BeginLoadingMore */3);\n getDiscussionSubmissions(send, cursor, targetId);\n })\n }, t(undefined, undefined, \"button_load_more\"))), ArrayUtils.isEmpty(times._0)) : React.createElement(\"div\", undefined, SkeletonLoading.multiple(1, SkeletonLoading.card(undefined, undefined))));\n } else {\n tmp$2 = React.createElement(\"div\", undefined, submissionsList(submissions._0, state, currentUser, (function (param) {\n return getDiscussionSubmissions(send, undefined, param);\n })));\n }\n var match$2 = state.peerSubmissions;\n var tmp$3;\n if (typeof match$2 === \"number\") {\n tmp$3 = null;\n } else {\n var times$1 = state.loading;\n var loading = times$1 ? ArrayUtils.isNotEmpty(times$1._0) : false;\n tmp$3 = React.createElement(LoadingSpinner.make, {\n loading: loading\n });\n }\n tmp$1 = React.createElement(\"div\", {\n className: \"border-t mt-12\"\n }, React.createElement(\"div\", {\n className: \"max-w-3xl mx-auto\"\n }, React.createElement(\"h4\", {\n className: \"text-base md:text-lg font-semibold pt-12 pb-4\"\n }, t(undefined, undefined, \"submissions_peers\")), React.createElement(\"div\", undefined, tmp$2), tmp$3));\n } else {\n tmp$1 = null;\n }\n return React.createElement(\"div\", undefined, React.createElement(\"div\", {\n className: completeSectionClasses(state.tab, completionType)\n }, CoursesCurriculum__TargetDetails.discussion(targetDetails) ? React.createElement(\"div\", {\n className: \"bg-primary-100 max-w-3xl mx-auto rounded-lg px-4 md:px-6 py-4 flex flex-col-reverse sm:flex-row items-start md:items-center justify-between\"\n }, React.createElement(\"div\", {\n className: \"sm:me-12 mt-2 sm:mt-0\"\n }, React.createElement(\"h3\", {\n className: \"leading-tight font-semibold\"\n }, t(undefined, undefined, \"discussion_assignment_notice.title\")), React.createElement(\"p\", {\n className: \"text-sm text-gray-600 pt-1\"\n }, t(undefined, undefined, \"discussion_assignment_notice.description\"))), React.createElement(\"div\", {\n className: \"shrink-0 w-16 sm:w-32 me-4 sm:me-0\"\n }, React.createElement(\"img\", {\n className: \"object-contain mx-auto\",\n src: assignmentDiscussionIcon\n }))) : null, React.createElement(\"div\", {\n className: \"max-w-3xl mx-auto\"\n }, tmp), tmp$1));\n}\n\nfunction renderPendingStudents(pendingUserIds, users) {\n return React.createElement(\"div\", {\n className: \"max-w-3xl mx-auto text-center mt-4\"\n }, React.createElement(\"div\", {\n className: \"font-semibold text-md\"\n }, t(undefined, undefined, \"pending_team_members_notice\")), React.createElement(\"div\", {\n className: \"flex justify-center flex-wrap\"\n }, Js_array.map((function (studentId) {\n var user = ArrayUtils.unsafeFind((function (u) {\n return CoursesCurriculum__User.id(u) === studentId;\n }), \"Unable to find user with id \" + (studentId + \"in CoursesCurriculum__Overlay\"), users);\n return React.createElement(\"div\", {\n key: CoursesCurriculum__User.id(user),\n className: \"w-10 h-10 rounded-full border border-yellow-400 flex items-center justify-center overflow-hidden mx-1 shadow-md shrink-0 mt-2\",\n title: CoursesCurriculum__User.name(user) + \" has not completed this target.\"\n }, CoursesCurriculum__User.avatar(user));\n }), pendingUserIds)));\n}\n\nfunction handlePendingStudents(targetStatus, targetDetails, users) {\n var match = CoursesCurriculum__TargetStatus.status(targetStatus);\n if (targetDetails === undefined) {\n return null;\n }\n if (typeof match !== \"number\") {\n return null;\n }\n if (!(match === 2 || match === 1)) {\n return null;\n }\n var pendingUserIds = CoursesCurriculum__TargetDetails.pendingUserIds(targetDetails);\n if (Caml_obj.equal(pendingUserIds, [])) {\n return null;\n } else {\n return renderPendingStudents(pendingUserIds, users);\n }\n}\n\nfunction performQuickNavigation(send, _event) {\n var element = document.getElementById(\"target-overlay\");\n if (!(element == null)) {\n element.scrollTop = 0.0;\n }\n return Curry._1(send, /* PerformQuickNavigation */1);\n}\n\nfunction navigationLink(direction, url, send) {\n var match = direction === \"Next\" ? [\n undefined,\n t(undefined, undefined, \"next_target_button\"),\n \"fa-arrow-right\"\n ] : [\n \"fa-arrow-left\",\n t(undefined, undefined, \"previous_target_button\"),\n undefined\n ];\n var arrow = function (icon) {\n return Belt_Option.mapWithDefault(icon, null, (function (icon) {\n return React.createElement(FaIcon.make, {\n classes: \"rtl:rotate-180 fas \" + icon\n });\n }));\n };\n return React.createElement(Link.make, {\n href: url,\n className: \"block p-2 md:p-4 text-center border rounded-lg bg-gray-50 hover:bg-gray-50\",\n onClick: (function (param) {\n return performQuickNavigation(send, param);\n }),\n children: null\n }, arrow(match[0]), React.createElement(\"span\", {\n className: \"mx-2 hidden md:inline\"\n }, match[1]), arrow(match[2]));\n}\n\nfunction scrollOverlayToTop(_event) {\n var element = document.getElementById(\"target-overlay\");\n Belt_Option.mapWithDefault((element == null) ? undefined : Caml_option.some(element), undefined, (function (element) {\n element.scrollTop = 0.0;\n }));\n}\n\nfunction quickNavigationLinks(targetDetails, send) {\n var match = CoursesCurriculum__TargetDetails.navigation(targetDetails);\n return React.createElement(\"div\", {\n className: \"pb-6\"\n }, React.createElement(\"hr\", {\n className: \"my-6\"\n }), React.createElement(\"div\", {\n className: \"mx-auto max-w-3xl flex px-3 lg:px-0\",\n id: \"target-navigation\"\n }, React.createElement(\"div\", {\n className: \"w-1/3 me-2\"\n }, Belt_Option.mapWithDefault(match[0], null, (function (previousUrl) {\n return navigationLink(\"Previous\", previousUrl, send);\n }))), React.createElement(\"div\", {\n className: \"w-1/3 mx-2\"\n }, React.createElement(\"button\", {\n className: \"block w-full focus:outline-none p-2 md:p-4 text-center border rounded-lg bg-gray-50 hover:bg-gray-50\",\n onClick: scrollOverlayToTop\n }, React.createElement(\"span\", {\n className: \"mx-2 hidden md:inline\"\n }, t(undefined, undefined, \"scroll_to_top\")), React.createElement(\"span\", {\n className: \"mx-2 md:hidden\"\n }, React.createElement(\"i\", {\n className: \"fas fa-arrow-up\"\n })))), React.createElement(\"div\", {\n className: \"w-1/3 ms-2\"\n }, Belt_Option.mapWithDefault(match[1], null, (function (nextUrl) {\n return navigationLink(\"Next\", nextUrl, send);\n })))));\n}\n\nfunction updatePendingUserIdsWhenAddingSubmission(send, target, addSubmissionCB, submission) {\n Curry._1(send, {\n TAG: /* AddSubmission */2,\n _0: CoursesCurriculum__Target.role(target)\n });\n return Curry._1(addSubmissionCB, submission);\n}\n\nfunction CoursesCurriculum__Overlay(Props) {\n var target = Props.target;\n var course = Props.course;\n var targetStatus = Props.targetStatus;\n var addSubmissionCB = Props.addSubmissionCB;\n var targets = Props.targets;\n var targetRead = Props.targetRead;\n var markReadCB = Props.markReadCB;\n var statusOfTargets = Props.statusOfTargets;\n var users = Props.users;\n var evaluationCriteria = Props.evaluationCriteria;\n var coaches = Props.coaches;\n var preview = Props.preview;\n var author = Props.author;\n var currentUser = Props.currentUser;\n var match = React.useReducer(reducer, initialState);\n var send = match[1];\n var state = match[0];\n React.useEffect((function () {\n return loadTargetDetails(target, currentUser, send, undefined);\n }), [CoursesCurriculum__Target.id(target)]);\n React.useEffect(function () {\n ScrollLock.activate(undefined);\n return (function (param) {\n ScrollLock.deactivate(undefined);\n });\n });\n var targetDetails = state.targetDetails;\n var targetDetails$1 = state.targetDetails;\n var tmp;\n if (targetDetails$1 !== undefined) {\n var completionType = CoursesCurriculum__TargetDetails.computeCompletionType(targetDetails$1);\n tmp = React.createElement(\"div\", undefined, React.createElement(\"div\", {\n className: \"mx-auto mt-6 md:mt-8 px-3 lg:px-0\"\n }, React.createElement(\"div\", {\n className: \"max-w-3xl mx-auto\"\n }, learnSection(send, targetDetails$1, targetRead, state.tab, author, CoursesCurriculum__Course.id(course), CoursesCurriculum__Target.id(target), markReadCB, targetStatus, completionType, preview)), React.createElement(\"div\", {\n className: \"max-w-3xl mx-auto\"\n }, discussSection(target, targetDetails$1, state.tab)), completeSection(state, send, target, targetDetails$1, targetStatus, (function (param) {\n return updatePendingUserIdsWhenAddingSubmission(send, target, addSubmissionCB, param);\n }), evaluationCriteria, coaches, users, preview, completionType, currentUser)), quickNavigationLinks(targetDetails$1, send));\n } else {\n tmp = React.createElement(\"div\", {\n className: \"course-overlay__skeleton-body-container max-w-3xl w-full pb-4 mx-auto\"\n }, React.createElement(\"div\", {\n className: \"course-overlay__skeleton-body-wrapper mt-8 px-3 lg:px-0\"\n }, React.createElement(\"div\", {\n className: \"course-overlay__skeleton-line-placeholder-md mt-4 w-1/2 skeleton-animate\"\n }), React.createElement(\"div\", {\n className: \"course-overlay__skeleton-line-placeholder-sm mt-4 skeleton-animate\"\n }), React.createElement(\"div\", {\n className: \"course-overlay__skeleton-line-placeholder-sm mt-4 skeleton-animate\"\n }), React.createElement(\"div\", {\n className: \"course-overlay__skeleton-line-placeholder-sm mt-4 w-3/4 skeleton-animate\"\n }), React.createElement(\"div\", {\n className: \"course-overlay__skeleton-image-placeholder mt-5 skeleton-animate\"\n }), React.createElement(\"div\", {\n className: \"course-overlay__skeleton-line-placeholder-sm mt-4 w-2/5 skeleton-animate\"\n })), React.createElement(\"div\", {\n className: \"course-overlay__skeleton-body-wrapper mt-8 px-3 lg:px-0\"\n }, React.createElement(\"div\", {\n className: \"course-overlay__skeleton-line-placeholder-sm mt-4 w-3/4 skeleton-animate\"\n }), React.createElement(\"div\", {\n className: \"course-overlay__skeleton-line-placeholder-sm mt-4 skeleton-animate\"\n }), React.createElement(\"div\", {\n className: \"course-overlay__skeleton-line-placeholder-sm mt-4 w-3/4 skeleton-animate\"\n })));\n }\n return React.createElement(\"div\", {\n className: \"fixed z-50 top-0 start-0 w-full h-full overflow-y-scroll bg-white\",\n id: \"target-overlay\"\n }, React.createElement(\"div\", {\n className: \"bg-gray-50 border-b border-gray-300 px-3\"\n }, React.createElement(\"div\", {\n className: \"course-overlay__header-container pt-12 lg:pt-0 mx-auto\"\n }, overlayStatus(course, target, targetStatus, preview), handleLocked(target, targets, targetStatus, statusOfTargets, send), handlePendingStudents(targetStatus, state.targetDetails, users), targetDetails !== undefined ? tabOptions(state, send, targetDetails, targetStatus) : React.createElement(\"div\", {\n className: \"course-overlay__skeleton-head-container max-w-3xl w-full mx-auto\"\n }, React.createElement(\"div\", {\n className: \"course-overlay__skeleton-head-wrapper bg-white h-13 flex items-center justify-between border border-b-0 rounded-t-lg mt-5 md:mt-7\"\n }, React.createElement(\"div\", {\n className: \"course-overlay__skeleton-line-placeholder-sm w-1/3 mx-8 skeleton-animate\"\n }), React.createElement(\"div\", {\n className: \"course-overlay__skeleton-line-placeholder-sm w-1/3 mx-8 skeleton-animate\"\n }), React.createElement(\"div\", {\n className: \"course-overlay__skeleton-line-placeholder-sm w-1/3 mx-8 skeleton-animate\"\n }))))), tmp);\n}\n\nvar TargetStatus;\n\nvar make$1 = CoursesCurriculum__Overlay;\n\nexport {\n UnexpectedSubmissionStatus ,\n UnexpectedResponse ,\n TargetStatus ,\n noPeerSubmissionIcon ,\n assignmentDiscussionIcon ,\n str ,\n t ,\n ts ,\n Item ,\n PagedSubmission ,\n initialState ,\n reducer ,\n closeOverlay ,\n DiscussionSubmissionsQuery ,\n getDiscussionSubmissions ,\n reloadSubmissions ,\n handleUrlParam ,\n loadTargetDetails ,\n submissionsLoadedData ,\n submissionsList ,\n completionTypeToString ,\n tabToString ,\n selectableTabs ,\n tabClasses ,\n scrollCompleteButtonIntoViewEventually ,\n handleTablink ,\n tabButton ,\n tabLink ,\n tabOptions ,\n addSubmission ,\n addVerifiedSubmission ,\n targetStatusClass ,\n renderTargetStatus ,\n overlayHeaderTitleCardClasses ,\n renderLocked ,\n overlayStatus ,\n renderLockReason ,\n prerequisitesIncomplete ,\n handleLocked ,\n overlayContentClasses ,\n addPageRead ,\n learnSection ,\n discussSection ,\n completeSectionClasses ,\n completeSection ,\n renderPendingStudents ,\n handlePendingStudents ,\n performQuickNavigation ,\n navigationLink ,\n scrollOverlayToTop ,\n quickNavigationLinks ,\n updatePendingUserIdsWhenAddingSubmission ,\n make$1 as make,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Curry from \"../../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as FaIcon from \"../../../shared/components/FaIcon.bs.js\";\nimport * as Dropdown from \"../../../shared/components/Dropdown.bs.js\";\nimport * as Js_array from \"../../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as LevelLabel from \"../../../shared/utils/LevelLabel.bs.js\";\nimport * as CoursesCurriculum__Level from \"../types/CoursesCurriculum__Level.bs.js\";\n\nfunction str(prim) {\n return prim;\n}\n\nfunction levelZeroSelectorClasses(isSelected) {\n return \"w-1/2 px-4 py-2 focus:outline-none text-sm font-semibold flex items-center justify-center \" + (\n isSelected ? \"bg-primary-100 text-primary-500 hover:bg-primary-100 hover:text-primary-500\" : \"\"\n );\n}\n\nfunction levelName(level) {\n return LevelLabel.format(true, CoursesCurriculum__Level.name(level), String(CoursesCurriculum__Level.number(level)));\n}\n\nfunction selectableLevels(orderedLevels, setSelectedLevelId, preview) {\n return Js_array.map((function (level) {\n var icon = preview ? \"fas fa-eye\" : (\n CoursesCurriculum__Level.isUnlocked(level) ? \"inline-block\" : \"fas fa-lock text-gray-600\"\n );\n return React.createElement(\"button\", {\n key: CoursesCurriculum__Level.id(level),\n className: \"flex focus:outline-none p-2 w-full whitespace-normal\",\n onClick: (function (param) {\n Curry._1(setSelectedLevelId, CoursesCurriculum__Level.id(level));\n })\n }, React.createElement(\"span\", {\n className: \"me-2 mt-px\"\n }, React.createElement(FaIcon.make, {\n classes: \"fa-fw \" + icon\n })), levelName(level));\n }), orderedLevels);\n}\n\nfunction untabbedLevelSelector(selectedLevel, orderedLevels, setSelectedLevelId, preview) {\n var selected = React.createElement(\"button\", {\n className: \"font-semibold w-full px-2 h-10 flex items-center justify-between\"\n }, React.createElement(\"span\", {\n className: \"grow truncate w-0\"\n }, levelName(selectedLevel)), React.createElement(FaIcon.make, {\n classes: \"fas fa-caret-down ms-1\"\n }));\n return React.createElement(Dropdown.make, {\n selected: selected,\n contents: selectableLevels(orderedLevels, setSelectedLevelId, preview),\n className: \"grow cursor-pointer rounded-lg bg-primary-100 hover:bg-gray-50 hover:text-primary-500 focus-within:outline-none focus-within:ring-2 focus-within:ring-inset focus-witin:ring-focusColor-500 focus:text-primary-500 focus:bg-gray-50\"\n });\n}\n\nfunction tabbedLevelSelector(orderedLevels, selectedLevel, setSelectedLevelId, showLevelZero, setShowLevelZero, levelZero, preview) {\n var selected = function (hideCaret) {\n return React.createElement(\"button\", {\n className: \"rounded-s-lg font-semibold w-full px-2 h-10 flex items-center justify-between\"\n }, React.createElement(\"span\", {\n className: \"grow text-center truncate w-0\"\n }, levelName(selectedLevel)), React.createElement(FaIcon.make, {\n classes: \"fas fa-caret-down ms-1\" + (\n hideCaret ? \" invisible\" : \"\"\n )\n }));\n };\n var numberedLevelSelector = showLevelZero ? React.createElement(\"div\", {\n className: \"cursor-pointer text-sm grow rounded-s-lg hover:bg-gray-50 hover:text-primary-500\",\n onClick: (function (param) {\n Curry._1(setShowLevelZero, false);\n })\n }, selected(true)) : React.createElement(Dropdown.make, {\n selected: selected(false),\n contents: selectableLevels(orderedLevels, setSelectedLevelId, preview),\n className: \"cursor-pointer grow rounded-s-lg bg-primary-100 hover:bg-gray-50 hover:text-primary-500\",\n key: \"numbered-level-selector\"\n });\n return [\n numberedLevelSelector,\n React.createElement(\"button\", {\n key: \"level-zero-selector\",\n className: \"border-s rounded-e-lg bg-white border-gray-300 font-semibold truncate hover:bg-gray-50 hover:text-primary-500 \" + levelZeroSelectorClasses(showLevelZero),\n onClick: (function (_e) {\n Curry._1(setShowLevelZero, true);\n })\n }, CoursesCurriculum__Level.name(levelZero))\n ];\n}\n\nfunction CoursesCurriculum__LevelSelector(Props) {\n var levels = Props.levels;\n var selectedLevel = Props.selectedLevel;\n var preview = Props.preview;\n var setSelectedLevelId = Props.setSelectedLevelId;\n var showLevelZero = Props.showLevelZero;\n var setShowLevelZero = Props.setShowLevelZero;\n var levelZero = Props.levelZero;\n var orderedLevels = CoursesCurriculum__Level.sort(Js_array.filter((function (l) {\n return CoursesCurriculum__Level.number(l) !== 0;\n }), levels));\n return React.createElement(\"div\", {\n className: \"bg-gray-50 px-3 py-2 mt-3 md:px-0 sticky top-0 z-10\"\n }, React.createElement(\"div\", {\n className: \"flex justify-center max-w-sm md:max-w-xl mx-auto rounded-lg border border-gray-300 h-11\"\n }, levelZero !== undefined ? tabbedLevelSelector(orderedLevels, selectedLevel, setSelectedLevelId, showLevelZero, setShowLevelZero, levelZero, preview) : untabbedLevelSelector(selectedLevel, orderedLevels, setSelectedLevelId, preview)));\n}\n\nvar make = CoursesCurriculum__LevelSelector;\n\nexport {\n str ,\n levelZeroSelectorClasses ,\n levelName ,\n selectableLevels ,\n untabbedLevelSelector ,\n tabbedLevelSelector ,\n make ,\n}\n/* react Not a pure module */\n","export default \"__VITE_ASSET__BY_iT8zi__\"","export default \"__VITE_ASSET__Brs5iiVl__\"","export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20512%20512'%3e%3cpath%20d='M300.4%2084.8c-21.3.2-42.5%203.1-63.1%208.6-54.6%2014.3-107.6%2045.4-149.2%2087.6-42.2%2042.8-68.6%2093.1-74.3%20141.7C7%20380.3%2028.9%20429.5%2074%20457.7m102.2%2024.5c19.9-.8%2039.6-3.8%2058.9-8.9C301%20456%20359.8%20418.4%20403.2%20365.9c41.5-50.5%2061.8-109%2055.6-160.5-4.6-39.8-24.7-72.3-58.1-94'%20fill='none'%20stroke='%23b08ee6'%20stroke-width='4'%20stroke-miterlimit='10'/%3e%3cg%20fill-rule='evenodd'%3e%3cpath%20d='M238.4%20304.4c2.6-7.8%207.1-14.8%2013-20.4%202.2%205.1%206.9%208.7%2012.4%209.7%206.4%201.1%2012.9-1.8%2016.3-7.3%202.8-4.6%203.2-10.4%201-15.3%207.7-.5%2015.3%201%2022.3%204.2%2021.8%2010.2%2032.5%2036.7%2024.6%2060-8.6%2025.3-35.6%2039.4-60.6%2030.7-24.1-8.5-37.5-36.3-29-61.6zM197%20161.9c6.9-3.3%209-11.6%204.9-18.7l-43.5-74.5c-4.4-7.6-14.1-11.5-21.6-8.6s-10%2011.6-5.4%2019.3l45.1%2075.5c2.7%204.6%207.5%207.6%2012.8%208.2%202.7.4%205.3%200%207.7-1.2zm98.8-24.1v-73c-.2-7.5-5.4-13.9-12.7-15.6-7.1-1.4-12.9%203.3-12.9%2010.7v74.5c.1%207.5%205.6%2013.7%2012.9%2014.9%206.1.9%2011.7-3.4%2012.6-9.4.1-.7.2-1.4.1-2.1zm78.5%2038.8l31.2-53.5c3-5.1%201.4-12.7-3.5-16.9-4.9-4.3-11.5-3.6-14.6%201.5l-32.2%2054c-3.3%205.5-1.6%2013.3%203.8%2017.4%201.7%201.3%203.7%202.2%205.8%202.4%203.9.4%207.6-1.5%209.5-4.9z'%20fill='%234d1e9a'/%3e%3cpath%20d='M420%20290.4c-24.4-38.4-79.5-111.7-150.3-118.8-79.6-8-157.2%2068.6-197.2%20116.1-16.6%2019.7-16.6%2046.8%200%2066.1%2040%2046.4%20117.5%20120.7%20197.2%20110.3%2070.8-9.2%20125.9-84%20150.3-123.3%209.5-15.5%209.5-35%200-50.4zm-62.5%2035.3c-3.8%2042.7-35.9%2079.9-78.1%2088.2-61.9%2012-118.5-38.4-111.5-105.4%205.1-49.1%2045.4-86.5%2092.1-88.3%2058.1-2.3%20102.6%2048.4%2097.5%20105.5z'%20fill='%23d69e2e'/%3e%3cg%20stroke-width='4'%20stroke-miterlimit='10'%20stroke='%231f0d40'%3e%3cpath%20d='M246.1%20304.4c2.6-7.8%207-14.8%2013-20.4a16.86%2016.86%200%200%200%2012.4%209.7c6.4%201.1%2012.9-1.8%2016.3-7.3%202.8-4.6%203.2-10.4%201-15.3%207.7-.5%2015.3%201%2022.3%204.2%2021.8%2010.2%2032.5%2036.7%2024.7%2060-8.6%2025.3-35.6%2039.4-60.6%2030.7-24.2-8.5-37.6-36.3-29.1-61.6z'%20fill='%23976ae2'/%3e%3cpath%20d='M443%20292.3c-24.4-38.4-79.5-111.7-150.3-118.8-79.6-8-157.2%2068.6-197.2%20116.1-16.6%2019.7-16.6%2046.8%200%2066%2040%2046.4%20117.5%20120.7%20197.2%20110.3%2070.8-9.2%20125.9-84%20150.3-123.3%209.5-15.4%209.5-34.9%200-50.3zm-62.5%2035.3c-3.8%2042.7-35.9%2079.9-78.1%2088.1-61.9%2012.1-118.5-38.4-111.5-105.4%205.1-49.1%2045.4-86.5%2092.1-88.3%2058-2.2%20102.6%2048.5%2097.5%20105.6z'%20fill='%23ecc94b'/%3e%3cpath%20d='M206.5%20158.1c6.9-3.3%209-11.6%204.9-18.7L168%2064.9c-4.4-7.6-14.1-11.5-21.6-8.6s-10%2011.6-5.4%2019.3l45.1%2075.5c2.7%204.6%207.5%207.6%2012.8%208.2%202.6.4%205.3-.1%207.6-1.2zm98.9-24.1V61c-.2-7.5-5.4-13.9-12.7-15.6-5.6-1.4-11.3%202-12.6%207.6-.2%201-.3%202-.3%203.1v74.5c.1%207.5%205.6%2013.7%2012.9%2014.9%206.1.9%2011.7-3.4%2012.6-9.5.1-.7.1-1.3.1-2zm78.5%2038.8l31.2-53.5c3-5.1%201.4-12.7-3.5-16.9-4.9-4.3-11.5-3.6-14.6%201.5l-32.2%2054c-3.3%205.5-1.5%2013.3%203.8%2017.4%201.7%201.3%203.7%202.2%205.8%202.4%203.9.4%207.6-1.5%209.5-4.9z'%20fill='%23976ae2'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e\"","export default \"__VITE_ASSET__D_QIZKF0__\"","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport AccessEndedSvg from \"../images/access-ended.svg\";\nimport CourseEndedSvg from \"../images/course-ended.svg\";\nimport PreviewModeSvg from \"../images/preview-mode.svg\";\nimport CourseCompleteSvg from \"../images/course-complete.svg\";\n\nvar courseEndedImage = CourseEndedSvg;\n\nvar courseCompleteImage = CourseCompleteSvg;\n\nvar accessEndedImage = AccessEndedSvg;\n\nvar previewModeImage = PreviewModeSvg;\n\nfunction icon(t) {\n switch (t) {\n case /* Preview */0 :\n return previewModeImage;\n case /* CourseEnded */1 :\n return courseEndedImage;\n case /* CourseComplete */2 :\n return courseCompleteImage;\n case /* AccessEnded */3 :\n return accessEndedImage;\n case /* Nothing */4 :\n return \"\";\n \n }\n}\n\nexport {\n courseEndedImage ,\n courseCompleteImage ,\n accessEndedImage ,\n previewModeImage ,\n icon ,\n}\n/* courseEndedImage Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as React from \"react\";\nimport * as CoursesCurriculum__Notice from \"../types/CoursesCurriculum__Notice.bs.js\";\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.CoursesCurriculum__NoticeManager\";\n\nfunction t(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nfunction showNotice(title, description, notice, classesOpt, param) {\n var classes = classesOpt !== undefined ? classesOpt : \"max-w-3xl mx-auto text-center mt-4 bg-white lg:rounded-lg shadow-md px-6 pt-6 pb-8\";\n return React.createElement(\"div\", {\n className: classes\n }, React.createElement(\"img\", {\n className: \"h-50 mx-auto\",\n src: CoursesCurriculum__Notice.icon(notice)\n }), React.createElement(\"div\", {\n className: \"max-w-xl font-bold text-xl mx-auto mt-2 leading-tight\"\n }, title), React.createElement(\"div\", {\n className: \"text-sm max-w-lg mx-auto mt-2\"\n }, description));\n}\n\nfunction courseCompleteMessage(param) {\n return showNotice(t(undefined, undefined, \"course_complete_title\"), t(undefined, undefined, \"course_complete_description\"), /* CourseComplete */2, undefined, undefined);\n}\n\nfunction courseEndedMessage(param) {\n return showNotice(t(undefined, undefined, \"course_ended_title\"), t(undefined, undefined, \"course_ended_description\"), /* CourseEnded */1, undefined, undefined);\n}\n\nfunction showPreviewMessage(param) {\n return React.createElement(\"div\", {\n className: \"flex max-w-lg md:mx-auto mx-3 mt-4 rounded-lg px-3 py-2 shadow-lg items-center border border-primary-300 bg-gray-50 \"\n }, React.createElement(\"img\", {\n className: \"w-20 md:w-22 flex-no-shrink\",\n src: CoursesCurriculum__Notice.previewModeImage\n }), React.createElement(\"div\", {\n className: \"flex-1 ms-4\"\n }, React.createElement(\"h4\", {\n className: \"font-bold text-lg leading-tight\"\n }, t(undefined, undefined, \"preview_mode_title\")), React.createElement(\"p\", {\n className: \"text-sm mt-1\"\n }, t(undefined, undefined, \"preview_mode_description\"))));\n}\n\nfunction accessEndedMessage(param) {\n return showNotice(t(undefined, undefined, \"access_ended_title\"), t(undefined, undefined, \"access_ended_description\"), /* AccessEnded */3, undefined, undefined);\n}\n\nfunction CoursesCurriculum__NoticeManager(Props) {\n var notice = Props.notice;\n switch (notice) {\n case /* Preview */0 :\n return showPreviewMessage(undefined);\n case /* CourseEnded */1 :\n return courseEndedMessage(undefined);\n case /* CourseComplete */2 :\n return courseCompleteMessage(undefined);\n case /* AccessEnded */3 :\n return accessEndedMessage(undefined);\n case /* Nothing */4 :\n return null;\n \n }\n}\n\nvar make = CoursesCurriculum__NoticeManager;\n\nexport {\n str ,\n t ,\n showNotice ,\n courseCompleteMessage ,\n courseEndedMessage ,\n showPreviewMessage ,\n accessEndedMessage ,\n make ,\n}\n/* I18n Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as Icon from \"../../../shared/Icon.bs.js\";\nimport * as Link from \"../../../shared/components/Link.bs.js\";\nimport * as Curry from \"../../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as FaIcon from \"../../../shared/components/FaIcon.bs.js\";\nimport * as DateFns from \"../../../shared/utils/DateFns.bs.js\";\nimport * as Caml_obj from \"../../../../../node_modules/rescript/lib/es6/caml_obj.js\";\nimport * as Js_array from \"../../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as ArrayUtils from \"../../../shared/utils/ArrayUtils.bs.js\";\nimport * as ReactUtils from \"../../../shared/utils/ReactUtils.bs.js\";\nimport * as Belt_Option from \"../../../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as Caml_option from \"../../../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as StringUtils from \"../../../shared/utils/StringUtils.bs.js\";\nimport * as MarkdownBlock from \"../../../shared/components/MarkdownBlock.bs.js\";\nimport * as RescriptReactRouter from \"../../../../../node_modules/@rescript/react/src/RescriptReactRouter.bs.js\";\nimport LevelLockSvg from \"../images/level-lock.svg\";\nimport * as CoursesCurriculum__Level from \"../types/CoursesCurriculum__Level.bs.js\";\nimport LevelEmptySvg from \"../images/level-empty.svg\";\nimport * as CoursesCurriculum__Course from \"../types/CoursesCurriculum__Course.bs.js\";\nimport * as CoursesCurriculum__Target from \"../types/CoursesCurriculum__Target.bs.js\";\nimport * as CoursesCurriculum__Overlay from \"./CoursesCurriculum__Overlay.bs.js\";\nimport * as CoursesCurriculum__Student from \"../types/CoursesCurriculum__Student.bs.js\";\nimport * as CoursesCurriculum__TargetGroup from \"../types/CoursesCurriculum__TargetGroup.bs.js\";\nimport * as CoursesCurriculum__TargetStatus from \"../types/CoursesCurriculum__TargetStatus.bs.js\";\nimport * as CoursesCurriculum__LevelSelector from \"./CoursesCurriculum__LevelSelector.bs.js\";\nimport * as CoursesCurriculum__NoticeManager from \"./CoursesCurriculum__NoticeManager.bs.js\";\nimport * as CoursesCurriculum__LatestSubmission from \"../types/CoursesCurriculum__LatestSubmission.bs.js\";\n\nimport \"./CoursesCurriculum.css\"\n;\n\nvar levelLockedImage = LevelLockSvg;\n\nvar levelEmptyImage = LevelEmptySvg;\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.CoursesCurriculum\";\n\nfunction t(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nvar partial_arg$1 = \"shared\";\n\nfunction ts(param, param$1, param$2) {\n return I18n.t(partial_arg$1, param, param$1, param$2);\n}\n\nfunction targetStatusClasses(targetStatus) {\n var statusClasses = \"curriculum__target-status--\" + CoursesCurriculum__TargetStatus.statusClassesSufix(targetStatus);\n return \"curriculum__target-status px-1 md:px-3 py-px ms-4 h-6 \" + statusClasses;\n}\n\nfunction rendertarget(target, statusOfTargets, targetsRead, author, courseId) {\n var targetId = CoursesCurriculum__Target.id(target);\n var targetStatus = ArrayUtils.unsafeFind((function (ts) {\n return CoursesCurriculum__TargetStatus.targetId(ts) === targetId;\n }), \"Could not find targetStatus for listed target with ID \" + targetId, statusOfTargets);\n var targetRead = Js_array.includes(targetId, targetsRead);\n return React.createElement(\"div\", {\n key: \"target-\" + targetId,\n className: \"courses-curriculum__target-container flex border-t bg-white hover:bg-gray-50\"\n }, React.createElement(Link.make, {\n href: \"/targets/\" + targetId,\n ariaLabel: \"Select Target: \" + (CoursesCurriculum__Target.title(target) + \", Status: \" + CoursesCurriculum__TargetStatus.statusToString(targetStatus)),\n className: \"p-3 md:p-6 flex flex-1 items-start justify-between hover:text-primary-500 cursor-pointer focus:outline-none focus:ring-2 focus:ring-inset focus:ring-focusColor-500 focus:text-primary-500 focus:bg-gray-50 focus:rounded-lg\",\n children: null,\n props: {\n \"data-target-id\": targetId\n }\n }, React.createElement(\"span\", {\n className: \"inline-flex items-center space-x-3\"\n }, targetRead ? React.createElement(\"span\", {\n className: \"w-5 h-5 flex items-center justify-center\",\n title: \"Marked read\"\n }, React.createElement(\"svg\", {\n className: \"w-4 h-4 text-gray-500\",\n height: \"16\",\n width: \"16\",\n fill: \"currentColor\",\n viewBox: \"0 0 16 16\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, React.createElement(\"path\", {\n d: \"M12.354 4.354a.5.5 0 0 0-.708-.708L5 10.293 1.854 7.146a.5.5 0 1 0-.708.708l3.5 3.5a.5.5 0 0 0 .708 0l7-7zm-4.208 7-.896-.897.707-.707.543.543 6.646-6.647a.5.5 0 0 1 .708.708l-7 7a.5.5 0 0 1-.708 0z\"\n }), React.createElement(\"path\", {\n d: \"m5.354 7.146.896.897-.707.707-.897-.896a.5.5 0 1 1 .708-.708z\"\n }))) : React.createElement(\"span\", {\n className: \"w-5 h-5 flex items-center justify-center\",\n title: \"Not read yet\"\n }, React.createElement(\"span\", {\n className: \"w-2 h-2 inline-block rounded-full bg-blue-600\"\n })), React.createElement(\"span\", {\n className: \"text-sm md:text-base font-medium\"\n }, CoursesCurriculum__Target.title(target))), React.createElement(\"div\", {\n className: \"flex\"\n }, CoursesCurriculum__Target.milestone(target) ? React.createElement(\"div\", {\n className: \"flex items-center flex-shrink-0 text-xs font-medium border border-yellow-200 bg-yellow-100 text-yellow-800 ms-3 px-1.5 md:px-2 py-1 rounded-md\"\n }, React.createElement(Icon.make, {\n className: \"if i-milestone-solid text-sm\"\n }), React.createElement(\"span\", {\n className: \"hidden md:block ms-1\"\n }, ts(undefined, undefined, \"milestone_label\"))) : null, ReactUtils.nullIf(React.createElement(\"span\", {\n className: targetStatusClasses(targetStatus)\n }, CoursesCurriculum__TargetStatus.statusToString(targetStatus)), CoursesCurriculum__TargetStatus.isAccessEnded(targetStatus) || CoursesCurriculum__TargetStatus.isPending(targetStatus)))), ReactUtils.nullUnless(React.createElement(\"a\", {\n \"aria-label\": t([[\n \"title\",\n CoursesCurriculum__Target.title(target)\n ]], undefined, \"edit_target_button_title\"),\n className: \"hidden lg:block courses-curriculum__target-quick-link text-gray-400 border-s border-transparent py-6 px-3 hover:text-primary-500 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-focusColor-500 focus:bg-gray-50 focus:text-primary-500 focus:rounded-lg\",\n title: t([[\n \"title\",\n CoursesCurriculum__Target.title(target)\n ]], undefined, \"edit_target_button_title\"),\n href: \"/school/courses/\" + courseId + \"/targets/\" + targetId + \"/content\"\n }, React.createElement(\"i\", {\n className: \"fas fa-pencil-alt\"\n })), author));\n}\n\nfunction renderTargetGroup(targetGroup, targets, statusOfTargets, targetsRead, author, courseId) {\n var targetGroupId = CoursesCurriculum__TargetGroup.id(targetGroup);\n var targets$1 = Js_array.filter((function (t) {\n return CoursesCurriculum__Target.targetGroupId(t) === targetGroupId;\n }), targets);\n return React.createElement(\"div\", {\n key: \"target-group-\" + targetGroupId,\n className: \"curriculum__target-group-container relative mt-5 px-3\"\n }, React.createElement(\"div\", {\n className: \"curriculum__target-group max-w-3xl md:max-w-4xl 2xl:max-w-5xl mx-auto bg-white rounded-lg shadow-md relative overflow-hidden \"\n }, React.createElement(\"div\", {\n className: \"p-3 md:p-6 pt-5 text-center\"\n }, React.createElement(\"div\", {\n className: \"text-2xl font-bold leading-snug\"\n }, CoursesCurriculum__TargetGroup.name(targetGroup)), React.createElement(MarkdownBlock.make, {\n markdown: CoursesCurriculum__TargetGroup.description(targetGroup),\n className: \"text-sm max-w-md mx-auto leading-snug\",\n profile: /* AreaOfText */1\n })), Js_array.map((function (target) {\n return rendertarget(target, statusOfTargets, targetsRead, author, courseId);\n }), ArrayUtils.copyAndSort((function (t1, t2) {\n return CoursesCurriculum__Target.sortIndex(t1) - CoursesCurriculum__Target.sortIndex(t2) | 0;\n }), targets$1))));\n}\n\nfunction addSubmission(setState, latestSubmission) {\n return Curry._1(setState, (function (state) {\n var withoutSubmissionForThisTarget = Js_array.filter((function (s) {\n return CoursesCurriculum__LatestSubmission.targetId(s) !== CoursesCurriculum__LatestSubmission.targetId(latestSubmission);\n }), state.latestSubmissions);\n return {\n selectedLevelId: state.selectedLevelId,\n showLevelZero: state.showLevelZero,\n latestSubmissions: Js_array.concat([latestSubmission], withoutSubmissionForThisTarget),\n statusOfTargets: state.statusOfTargets,\n targetsRead: state.targetsRead,\n notice: state.notice\n };\n }));\n}\n\nfunction addMarkRead(setState, markedReadTargetId) {\n return Curry._1(setState, (function (state) {\n return {\n selectedLevelId: state.selectedLevelId,\n showLevelZero: state.showLevelZero,\n latestSubmissions: state.latestSubmissions,\n statusOfTargets: state.statusOfTargets,\n targetsRead: Js_array.concat([markedReadTargetId], state.targetsRead),\n notice: state.notice\n };\n }));\n}\n\nfunction handleLockedLevel(level) {\n var date = CoursesCurriculum__Level.unlockAt(level);\n var tmp;\n if (date !== undefined) {\n var dateString = DateFns.format(Caml_option.valFromOption(date), \"MMMM d, yyyy\");\n tmp = React.createElement(\"div\", {\n className: \"font-semibold text-md px-3\"\n }, React.createElement(\"p\", undefined, t(undefined, undefined, \"level_locked_notice\")), React.createElement(\"p\", undefined, t([[\n \"date\",\n dateString\n ]], undefined, \"level_locked_explanation\")));\n } else {\n tmp = null;\n }\n return React.createElement(\"div\", {\n className: \"max-w-xl mx-auto text-center mt-4\"\n }, React.createElement(\"div\", {\n className: \"text-2xl font-bold px-3\"\n }, t(undefined, undefined, \"level_locked\")), React.createElement(\"img\", {\n className: \"max-w-sm mx-auto\",\n src: levelLockedImage\n }), tmp);\n}\n\nfunction issuedCertificate(course) {\n var csn = CoursesCurriculum__Course.certificateSerialNumber(course);\n if (csn !== undefined) {\n return React.createElement(\"div\", {\n className: \"max-w-3xl md:max-w-4xl 2xl:max-w-5xl mx-auto text-center mt-4 bg-white lg:rounded-lg shadow-md px-6 pt-6 pb-8\"\n }, React.createElement(\"div\", {\n className: \"font-semibold text-xl mx-auto mt-2 leading-tight\"\n }, t(undefined, undefined, \"issued_certificate_heading\")), React.createElement(\"a\", {\n className: \"mt-4 mb-2 btn btn-primary\",\n href: \"/c/\" + csn\n }, React.createElement(FaIcon.make, {\n classes: \"fas fa-certificate\"\n }), React.createElement(\"span\", {\n className: \"ms-2\"\n }, t(undefined, undefined, \"issued_certificate_button\"))));\n } else {\n return null;\n }\n}\n\nfunction computeNotice(course, student, preview) {\n if (preview) {\n return /* Preview */0;\n } else if (CoursesCurriculum__Course.ended(course)) {\n return /* CourseEnded */1;\n } else if (CoursesCurriculum__Student.accessEnded(student)) {\n return /* AccessEnded */3;\n } else if (Belt_Option.isSome(CoursesCurriculum__Student.completedAt(student))) {\n return /* CourseComplete */2;\n } else {\n return /* Nothing */4;\n }\n}\n\nfunction navigationLink(direction, level, setState) {\n var match = direction === \"Next\" ? [\n undefined,\n t(undefined, undefined, \"nav_aria_next_level\"),\n t(undefined, undefined, \"nav_long_next_level\"),\n t(undefined, undefined, \"nav_short_next_level\"),\n \"fa-arrow-right rtl:rotate-180\"\n ] : [\n \"fa-arrow-left rtl:rotate-180\",\n t(undefined, undefined, \"nav_aria_previous_level\"),\n t(undefined, undefined, \"nav_long_previous_level\"),\n t(undefined, undefined, \"nav_short_previous_level\"),\n undefined\n ];\n var arrow = function (icon) {\n return Belt_Option.mapWithDefault(icon, null, (function (icon) {\n return React.createElement(FaIcon.make, {\n classes: \"fas \" + icon\n });\n }));\n };\n return React.createElement(\"button\", {\n \"aria-label\": match[1],\n className: \"block w-full focus:outline-none p-4 text-center border rounded-lg bg-gray-100 hover:bg-primary-50 cursor-pointer hover:text-primary-500 focus:text-primary-500 focus:bg-gray-50 focus:ring-2 focus:ring-inset focus:ring-focusColor-500\",\n onClick: (function (param) {\n Curry._1(setState, (function (state) {\n return {\n selectedLevelId: CoursesCurriculum__Level.id(level),\n showLevelZero: state.showLevelZero,\n latestSubmissions: state.latestSubmissions,\n statusOfTargets: state.statusOfTargets,\n targetsRead: state.targetsRead,\n notice: state.notice\n };\n }));\n })\n }, arrow(match[0]), React.createElement(\"span\", {\n className: \"mx-2 hidden md:inline\"\n }, match[2]), React.createElement(\"span\", {\n className: \"mx-2 inline md:hidden\"\n }, match[3]), arrow(match[4]));\n}\n\nfunction quickNavigationLinks(levels, selectedLevel, setState) {\n var previous = CoursesCurriculum__Level.previous(levels, selectedLevel);\n var next = CoursesCurriculum__Level.next(levels, selectedLevel);\n return React.createElement(\"div\", {\n key: \"quick-navigation-links\"\n }, React.createElement(\"hr\", {\n className: \"my-6\"\n }), React.createElement(\"div\", {\n className: \"container mx-auto max-w-3xl flex px-3 lg:px-0\"\n }, previous !== undefined ? (\n next !== undefined ? [\n React.createElement(\"div\", {\n key: \"previous\",\n className: \"w-1/2 me-2\"\n }, navigationLink(\"Previous\", previous, setState)),\n React.createElement(\"div\", {\n key: \"next\",\n className: \"w-1/2 ms-2\"\n }, navigationLink(\"Next\", next, setState))\n ] : React.createElement(\"div\", {\n className: \"w-full\"\n }, navigationLink(\"Previous\", previous, setState))\n ) : (\n next !== undefined ? React.createElement(\"div\", {\n className: \"w-full\"\n }, navigationLink(\"Next\", next, setState)) : null\n )));\n}\n\nfunction CoursesCurriculum(Props) {\n var currentUser = Props.currentUser;\n var author = Props.author;\n var course = Props.course;\n var levels = Props.levels;\n var targetGroups = Props.targetGroups;\n var targets = Props.targets;\n var submissions = Props.submissions;\n var student = Props.student;\n var coaches = Props.coaches;\n var users = Props.users;\n var evaluationCriteria = Props.evaluationCriteria;\n var preview = Props.preview;\n var accessLockedLevels = Props.accessLockedLevels;\n var targetsRead = Props.targetsRead;\n var url = RescriptReactRouter.useUrl(undefined, undefined);\n var match = url.path;\n var selectedTarget;\n if (match && match.hd === \"targets\") {\n var match$1 = match.tl;\n selectedTarget = match$1 ? Belt_Option.map(StringUtils.paramToId(match$1.hd), (function (targetId) {\n return ArrayUtils.unsafeFind((function (t) {\n return CoursesCurriculum__Target.id(t) === targetId;\n }), \"Could not find selectedTarget with ID \" + targetId, targets);\n })) : undefined;\n } else {\n selectedTarget = undefined;\n }\n var levelZero = Js_array.find((function (l) {\n return CoursesCurriculum__Level.number(l) === 0;\n }), levels);\n var studentLevelId = CoursesCurriculum__Student.levelId(student);\n var targetLevelId;\n if (selectedTarget !== undefined) {\n var targetGroupId = CoursesCurriculum__Target.targetGroupId(selectedTarget);\n var targetGroup = ArrayUtils.unsafeFind((function (t) {\n return CoursesCurriculum__TargetGroup.id(t) === targetGroupId;\n }), \"Could not find targetGroup with ID \" + targetGroupId, targetGroups);\n targetLevelId = CoursesCurriculum__TargetGroup.levelId(targetGroup);\n } else {\n targetLevelId = undefined;\n }\n var computeTargetStatus = function (param, param$1) {\n return CoursesCurriculum__TargetStatus.compute(preview, student, course, levels, targetGroups, targets, param, param$1);\n };\n var initialRender = React.useRef(true);\n var match$2 = React.useState(function () {\n var statusOfTargets = computeTargetStatus(targetsRead, submissions);\n var tmp;\n var exit = 0;\n if (preview && targetLevelId === undefined) {\n tmp = CoursesCurriculum__Level.id(CoursesCurriculum__Level.first(levels));\n } else {\n exit = 1;\n }\n if (exit === 1) {\n tmp = targetLevelId !== undefined && !(levelZero !== undefined && CoursesCurriculum__Level.id(levelZero) === targetLevelId) ? targetLevelId : studentLevelId;\n }\n return {\n selectedLevelId: tmp,\n showLevelZero: levelZero !== undefined && targetLevelId !== undefined ? CoursesCurriculum__Level.id(levelZero) === targetLevelId : false,\n latestSubmissions: submissions,\n statusOfTargets: statusOfTargets,\n targetsRead: targetsRead,\n notice: computeNotice(course, student, preview)\n };\n });\n var setState = match$2[1];\n var state = match$2[0];\n var match$3 = state.showLevelZero;\n var currentLevelId = levelZero !== undefined && match$3 ? CoursesCurriculum__Level.id(levelZero) : state.selectedLevelId;\n var currentLevel = ArrayUtils.unsafeFind((function (l) {\n return CoursesCurriculum__Level.id(l) === currentLevelId;\n }), \"Could not find currentLevel with id \" + currentLevelId, levels);\n var selectedLevel = ArrayUtils.unsafeFind((function (l) {\n return CoursesCurriculum__Level.id(l) === state.selectedLevelId;\n }), \"Could not find selectedLevel with id \" + state.selectedLevelId, levels);\n React.useEffect((function () {\n if (initialRender.current) {\n initialRender.current = false;\n } else {\n var newStatusOfTargets = computeTargetStatus(state.targetsRead, state.latestSubmissions);\n Curry._1(setState, (function (state) {\n return {\n selectedLevelId: state.selectedLevelId,\n showLevelZero: state.showLevelZero,\n latestSubmissions: state.latestSubmissions,\n statusOfTargets: newStatusOfTargets,\n targetsRead: state.targetsRead,\n notice: computeNotice(course, student, preview)\n };\n }));\n }\n }), [\n state.latestSubmissions,\n state.targetsRead\n ]);\n var targetGroupsInLevel = Js_array.filter((function (tg) {\n return CoursesCurriculum__TargetGroup.levelId(tg) === currentLevelId;\n }), targetGroups);\n var tmp;\n if (selectedTarget !== undefined) {\n var targetStatus = ArrayUtils.unsafeFind((function (ts) {\n return CoursesCurriculum__TargetStatus.targetId(ts) === CoursesCurriculum__Target.id(selectedTarget);\n }), \"Could not find targetStatus for selectedTarget with ID \" + CoursesCurriculum__Target.id(selectedTarget), state.statusOfTargets);\n var targetRead = Js_array.includes(CoursesCurriculum__Target.id(selectedTarget), state.targetsRead);\n tmp = React.createElement(CoursesCurriculum__Overlay.make, {\n target: selectedTarget,\n course: course,\n targetStatus: targetStatus,\n addSubmissionCB: (function (param) {\n return addSubmission(setState, param);\n }),\n targets: targets,\n targetRead: targetRead,\n markReadCB: (function (param) {\n return addMarkRead(setState, param);\n }),\n statusOfTargets: state.statusOfTargets,\n users: users,\n evaluationCriteria: evaluationCriteria,\n coaches: coaches,\n preview: preview,\n author: author,\n currentUser: currentUser\n });\n } else {\n tmp = null;\n }\n return React.createElement(\"div\", {\n \"aria-label\": \"Curriculum\",\n className: \"md:h-screen bg-gray-50 md:pt-18 pb-20 md:pb-8 overflow-y-auto\",\n role: \"main\"\n }, tmp, issuedCertificate(course), React.createElement(CoursesCurriculum__NoticeManager.make, {\n notice: state.notice\n }), [\n React.createElement(\"div\", {\n key: \"curriculum-body\",\n className: \"relative\"\n }, React.createElement(CoursesCurriculum__LevelSelector.make, {\n levels: levels,\n selectedLevel: selectedLevel,\n preview: preview,\n setSelectedLevelId: (function (selectedLevelId) {\n Curry._1(setState, (function (state) {\n return {\n selectedLevelId: selectedLevelId,\n showLevelZero: state.showLevelZero,\n latestSubmissions: state.latestSubmissions,\n statusOfTargets: state.statusOfTargets,\n targetsRead: state.targetsRead,\n notice: state.notice\n };\n }));\n }),\n showLevelZero: state.showLevelZero,\n setShowLevelZero: (function (showLevelZero) {\n Curry._1(setState, (function (state) {\n return {\n selectedLevelId: state.selectedLevelId,\n showLevelZero: showLevelZero,\n latestSubmissions: state.latestSubmissions,\n statusOfTargets: state.statusOfTargets,\n targetsRead: state.targetsRead,\n notice: state.notice\n };\n }));\n }),\n levelZero: levelZero\n }), ReactUtils.nullUnless(React.createElement(\"div\", {\n className: \"text-center mt-2 max-w-3xl mx-auto\"\n }, React.createElement(\"a\", {\n className: \"btn btn-primary-ghost btn-small\",\n href: \"/school/courses/\" + CoursesCurriculum__Course.id(course) + \"/curriculum?level=\" + String(CoursesCurriculum__Level.number(currentLevel))\n }, React.createElement(\"i\", {\n className: \"fas fa-pencil-alt\"\n }), React.createElement(\"span\", {\n className: \"ms-2\"\n }, t(undefined, undefined, \"edit_level_button\")))), author), CoursesCurriculum__Level.isLocked(currentLevel) && accessLockedLevels ? React.createElement(\"div\", {\n className: \"text-center p-3 mt-5 border rounded-lg bg-blue-100 max-w-3xl mx-auto\",\n dangerouslySetInnerHTML: {\n __html: t([[\n \"date\",\n CoursesCurriculum__Level.unlockDateString(currentLevel)\n ]], undefined, \"level_locked_for_students_notice\")\n }\n }) : null, CoursesCurriculum__Level.isUnlocked(currentLevel) || accessLockedLevels ? (\n Caml_obj.equal(targetGroupsInLevel, []) ? React.createElement(\"div\", {\n className: \"mx-auto py-10\"\n }, React.createElement(\"img\", {\n className: \"max-w-xs md:max-w-sm mx-auto\",\n src: levelEmptyImage\n }), React.createElement(\"p\", {\n className: \"text-center font-semibold text-lg mt-4\"\n }, t(undefined, undefined, \"empty_level_content_notice\"))) : Js_array.map((function (targetGroup) {\n return renderTargetGroup(targetGroup, targets, state.statusOfTargets, state.targetsRead, author, CoursesCurriculum__Course.id(course));\n }), CoursesCurriculum__TargetGroup.sort(targetGroupsInLevel))\n ) : handleLockedLevel(currentLevel)),\n state.showLevelZero ? null : quickNavigationLinks(levels, selectedLevel, setState)\n ]);\n}\n\nvar make = CoursesCurriculum;\n\nexport {\n levelLockedImage ,\n levelEmptyImage ,\n str ,\n t ,\n ts ,\n targetStatusClasses ,\n rendertarget ,\n renderTargetGroup ,\n addSubmission ,\n addMarkRead ,\n handleLockedLevel ,\n issuedCertificate ,\n computeNotice ,\n navigationLink ,\n quickNavigationLinks ,\n make ,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Psj from \"../shared/utils/Psj.bs.js\";\nimport * as React from \"react\";\nimport * as DomUtils from \"../shared/utils/DomUtils.bs.js\";\nimport * as ReactDom from \"react-dom\";\nimport * as Json_decode from \"../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\nimport * as CoursesCurriculum from \"../courses/curricula/components/CoursesCurriculum.bs.js\";\nimport * as EvaluationCriterion from \"../shared/types/EvaluationCriterion.bs.js\";\nimport * as CoursesCurriculum__User from \"../courses/curricula/types/CoursesCurriculum__User.bs.js\";\nimport * as CoursesCurriculum__Coach from \"../courses/curricula/types/CoursesCurriculum__Coach.bs.js\";\nimport * as CoursesCurriculum__Level from \"../courses/curricula/types/CoursesCurriculum__Level.bs.js\";\nimport * as CoursesCurriculum__Course from \"../courses/curricula/types/CoursesCurriculum__Course.bs.js\";\nimport * as CoursesCurriculum__Target from \"../courses/curricula/types/CoursesCurriculum__Target.bs.js\";\nimport * as CoursesCurriculum__Student from \"../courses/curricula/types/CoursesCurriculum__Student.bs.js\";\nimport * as CoursesCurriculum__CurrentUser from \"../courses/curricula/types/CoursesCurriculum__CurrentUser.bs.js\";\nimport * as CoursesCurriculum__TargetGroup from \"../courses/curricula/types/CoursesCurriculum__TargetGroup.bs.js\";\nimport * as CoursesCurriculum__LatestSubmission from \"../courses/curricula/types/CoursesCurriculum__LatestSubmission.bs.js\";\n\nfunction decodeProps(json) {\n return [\n Json_decode.field(\"currentUser\", CoursesCurriculum__CurrentUser.decode, json),\n Json_decode.field(\"author\", Json_decode.bool, json),\n Json_decode.field(\"course\", CoursesCurriculum__Course.decode, json),\n Json_decode.field(\"levels\", (function (param) {\n return Json_decode.array(CoursesCurriculum__Level.decode, param);\n }), json),\n Json_decode.field(\"targetGroups\", (function (param) {\n return Json_decode.array(CoursesCurriculum__TargetGroup.decode, param);\n }), json),\n Json_decode.field(\"targets\", (function (param) {\n return Json_decode.array(CoursesCurriculum__Target.decode, param);\n }), json),\n Json_decode.field(\"submissions\", (function (param) {\n return Json_decode.array(CoursesCurriculum__LatestSubmission.decode, param);\n }), json),\n Json_decode.field(\"targetsRead\", (function (param) {\n return Json_decode.array(Json_decode.string, param);\n }), json),\n Json_decode.field(\"student\", CoursesCurriculum__Student.decode, json),\n Json_decode.field(\"coaches\", (function (param) {\n return Json_decode.array(CoursesCurriculum__Coach.decode, param);\n }), json),\n Json_decode.field(\"users\", (function (param) {\n return Json_decode.array(CoursesCurriculum__User.decode, param);\n }), json),\n Json_decode.field(\"evaluationCriteria\", (function (param) {\n return Json_decode.array(EvaluationCriterion.decode, param);\n }), json),\n Json_decode.field(\"preview\", Json_decode.bool, json),\n Json_decode.field(\"accessLockedLevels\", Json_decode.bool, json)\n ];\n}\n\nPsj.matchPaths(undefined, [\n \"courses/:id/curriculum\",\n \"targets/:id\",\n \"targets/:id/:slug\"\n ], (function (param) {\n var match = decodeProps(DomUtils.parseJSONTag(undefined, undefined));\n var root = document.querySelector(\"#react-root\");\n if (!(root == null)) {\n ReactDom.render(React.createElement(CoursesCurriculum.make, {\n currentUser: match[0],\n author: match[1],\n course: match[2],\n levels: match[3],\n targetGroups: match[4],\n targets: match[5],\n submissions: match[6],\n student: match[8],\n coaches: match[9],\n users: match[10],\n evaluationCriteria: match[11],\n preview: match[12],\n accessLockedLevels: match[13],\n targetsRead: match[7]\n }), root);\n return ;\n }\n \n }));\n\nexport {\n decodeProps ,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Json_decode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\n\nfunction name(t) {\n return t.name;\n}\n\nfunction title(t) {\n return t.title;\n}\n\nfunction avatarUrl(t) {\n return t.avatarUrl;\n}\n\nfunction decode(json) {\n return {\n name: Json_decode.field(\"name\", Json_decode.string, json),\n title: Json_decode.field(\"title\", Json_decode.string, json),\n avatarUrl: Json_decode.field(\"avatarUrl\", (function (param) {\n return Json_decode.optional(Json_decode.string, param);\n }), json)\n };\n}\n\nexport {\n name ,\n title ,\n avatarUrl ,\n decode ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Js_array from \"../../../../../node_modules/rescript/lib/es6/js_array.js\";\n\nfunction id(t) {\n return t.id;\n}\n\nfunction name(t) {\n return t.name;\n}\n\nfunction make(id, name, maxGrade) {\n return {\n id: id,\n name: name,\n maxGrade: maxGrade\n };\n}\n\nfunction makeFromJs(ecData) {\n return Js_array.map((function (ec) {\n return {\n id: ec.id,\n name: ec.name,\n maxGrade: ec.maxGrade\n };\n }), ecData);\n}\n\nexport {\n id ,\n name ,\n make ,\n makeFromJs ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as $$Array from \"../../../../../node_modules/rescript/lib/es6/array.js\";\nimport * as $$String from \"../../../../../node_modules/rescript/lib/es6/string.js\";\nimport * as ArrayUtils from \"../../../shared/utils/ArrayUtils.bs.js\";\nimport * as Caml_array from \"../../../../../node_modules/rescript/lib/es6/caml_array.js\";\nimport * as Caml_format from \"../../../../../node_modules/rescript/lib/es6/caml_format.js\";\nimport * as CoursesReport__EvaluationCriterion from \"./CoursesReport__EvaluationCriterion.bs.js\";\n\nfunction id(t) {\n return t.id;\n}\n\nfunction cohortName(t) {\n return t.cohortName;\n}\n\nfunction evaluationCriteria(t) {\n return t.evaluationCriteria;\n}\n\nfunction totalPageReads(t) {\n return t.totalPageReads;\n}\n\nfunction totalTargets(t) {\n return t.totalTargets;\n}\n\nfunction assignmentsPendingReview(t) {\n return t.assignmentsPendingReview;\n}\n\nfunction assignmentsCompleted(t) {\n return t.assignmentsCompleted;\n}\n\nfunction totalAssignments(t) {\n return t.totalAssignments;\n}\n\nfunction quizzesAttempted(t) {\n return t.quizScores.length;\n}\n\nfunction quizScores(t) {\n return t.quizScores;\n}\n\nfunction averageGrades(t) {\n return t.averageGrades;\n}\n\nfunction makeAverageGrade(evaluationCriterionId, grade) {\n return {\n evaluationCriterionId: evaluationCriterionId,\n grade: grade\n };\n}\n\nfunction milestonesCompletionStatus(t) {\n return t.milestonesCompletionStatus;\n}\n\nfunction evaluationCriterionForGrade(grade, evaluationCriteria) {\n return ArrayUtils.unsafeFind((function (ec) {\n return CoursesReport__EvaluationCriterion.id(ec) === grade.evaluationCriterionId;\n }), \"Unable to find evaluation criterion with id: \" + (grade.evaluationCriterionId + \" in component: CoursesReport__Overview\"), evaluationCriteria);\n}\n\nfunction gradeValue(averageGrade) {\n return averageGrade.grade;\n}\n\nfunction gradeAsPercentage(averageGrade, evaluationCriterion) {\n var maxGrade = evaluationCriterion.maxGrade;\n return String(averageGrade.grade / maxGrade * 100.0 | 0);\n}\n\nfunction computeAverageQuizScore(quizScores) {\n var sumOfPercentageScores = quizScores.map(function (quizScore) {\n var fractionArray = $$Array.of_list($$String.split_on_char(/* '/' */47, quizScore));\n var numerator = Caml_format.float_of_string(Caml_array.get(fractionArray, 0));\n var denominator = Caml_format.float_of_string(Caml_array.get(fractionArray, 1));\n return numerator / denominator * 100.0;\n }).reduce((function (a, b) {\n return a + b;\n }), 0.0);\n return sumOfPercentageScores / quizScores.length;\n}\n\nfunction averageQuizScore(t) {\n if (ArrayUtils.isEmpty(t.quizScores)) {\n return ;\n } else {\n return computeAverageQuizScore(t.quizScores);\n }\n}\n\nfunction make(id, cohortName, evaluationCriteria, totalPageReads, totalTargets, assignmentsCompleted, totalAssignments, quizScores, averageGrades, assignmentsPendingReview, milestonesCompletionStatus) {\n return {\n id: id,\n cohortName: cohortName,\n evaluationCriteria: evaluationCriteria,\n totalPageReads: totalPageReads,\n totalTargets: totalTargets,\n assignmentsPendingReview: assignmentsPendingReview,\n assignmentsCompleted: assignmentsCompleted,\n totalAssignments: totalAssignments,\n quizScores: quizScores,\n averageGrades: averageGrades,\n milestonesCompletionStatus: milestonesCompletionStatus\n };\n}\n\nexport {\n id ,\n cohortName ,\n evaluationCriteria ,\n totalPageReads ,\n totalTargets ,\n assignmentsPendingReview ,\n assignmentsCompleted ,\n totalAssignments ,\n quizzesAttempted ,\n quizScores ,\n averageGrades ,\n makeAverageGrade ,\n milestonesCompletionStatus ,\n evaluationCriterionForGrade ,\n gradeValue ,\n gradeAsPercentage ,\n computeAverageQuizScore ,\n averageQuizScore ,\n make ,\n}\n/* ArrayUtils Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as $$Array from \"../../../../../node_modules/rescript/lib/es6/array.js\";\nimport * as React from \"react\";\nimport * as Avatar from \"../../../shared/Avatar.bs.js\";\nimport * as Tooltip from \"../../../shared/components/Tooltip.bs.js\";\nimport * as Js_array from \"../../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as UserProxy from \"../../../shared/types/UserProxy.bs.js\";\nimport * as ArrayUtils from \"../../../shared/utils/ArrayUtils.bs.js\";\nimport * as OptionUtils from \"../../../shared/utils/OptionUtils.bs.js\";\n\nfunction str(prim) {\n return prim;\n}\n\nfunction avatarClasses(size) {\n var mdSize = size[1];\n var defaultSize = size[0];\n return \"w-\" + (defaultSize + (\" h-\" + (defaultSize + (\" md:w-\" + (mdSize + (\" md:h-\" + (mdSize + \" text-xs border border-gray-300 rounded-full overflow-hidden shrink-0 object-cover\")))))));\n}\n\nfunction avatar(sizeOpt, avatarUrl, name) {\n var size = sizeOpt !== undefined ? sizeOpt : [\n \"8\",\n \"10\"\n ];\n if (avatarUrl !== undefined) {\n return React.createElement(\"img\", {\n className: avatarClasses(size),\n src: avatarUrl\n });\n } else {\n return React.createElement(Avatar.make, {\n name: name,\n className: avatarClasses(size)\n });\n }\n}\n\nfunction CoursesStudents__PersonalCoaches(Props) {\n var tooltipPositionOpt = Props.tooltipPosition;\n var defaultAvatarSizeOpt = Props.defaultAvatarSize;\n var mdAvatarSizeOpt = Props.mdAvatarSize;\n var title = Props.title;\n var className = Props.className;\n var coaches = Props.coaches;\n var tooltipPosition = tooltipPositionOpt !== undefined ? tooltipPositionOpt : \"Top\";\n var defaultAvatarSize = defaultAvatarSizeOpt !== undefined ? defaultAvatarSizeOpt : \"6\";\n var mdAvatarSize = mdAvatarSizeOpt !== undefined ? mdAvatarSizeOpt : \"8\";\n if (!ArrayUtils.isNotEmpty(coaches)) {\n return React.createElement(\"div\", undefined);\n }\n var listedCoaches = coaches.length <= 4 ? coaches : Js_array.slice(0, 3, coaches);\n var otherCoaches;\n if (coaches.length > 4) {\n var names = Js_array.map((function (coach) {\n return React.createElement(\"div\", {\n key: UserProxy.userId(coach)\n }, UserProxy.name(coach));\n }), Js_array.sliceFrom(3, coaches));\n var count = coaches.length - 3 | 0;\n otherCoaches = [\n names,\n count\n ];\n } else {\n otherCoaches = undefined;\n }\n return React.createElement(\"div\", {\n className: className\n }, React.createElement(\"div\", {\n className: \"text-xs\"\n }, title), React.createElement(\"div\", {\n className: \"inline-flex\"\n }, $$Array.map((function (coach) {\n return React.createElement(Tooltip.make, {\n tip: UserProxy.name(coach),\n className: \"-me-1\",\n position: tooltipPosition,\n children: avatar([\n defaultAvatarSize,\n mdAvatarSize\n ], UserProxy.avatarUrl(coach), UserProxy.name(coach)),\n key: UserProxy.userId(coach)\n });\n }), listedCoaches), OptionUtils.mapWithDefault((function (param) {\n return React.createElement(Tooltip.make, {\n tip: param[0],\n className: \"-me-1\",\n children: React.createElement(Avatar.make, {\n colors: [\n \"#EEE\",\n \"#000\"\n ],\n name: \"+ \" + String(param[1]),\n className: avatarClasses([\n defaultAvatarSize,\n mdAvatarSize\n ])\n })\n });\n }), null, otherCoaches)));\n}\n\nvar make = CoursesStudents__PersonalCoaches;\n\nexport {\n str ,\n avatarClasses ,\n avatar ,\n make ,\n}\n/* react Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\n\nfunction id(t) {\n return t.id;\n}\n\nfunction title(t) {\n return t.title;\n}\n\nfunction completed(t) {\n return t.completed;\n}\n\nfunction milestoneNumber(t) {\n return t.milestoneNumber;\n}\n\nfunction make(id, title, completed, milestoneNumber) {\n return {\n id: id,\n title: title,\n milestoneNumber: milestoneNumber,\n completed: completed\n };\n}\n\nfunction makeFromJs(data) {\n return data.map(function (data) {\n return make(data.id, data.title, data.completed, data.milestoneNumber);\n });\n}\n\nexport {\n id ,\n title ,\n completed ,\n milestoneNumber ,\n make ,\n makeFromJs ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as Icon from \"../../../shared/Icon.bs.js\";\nimport * as $$Array from \"../../../../../node_modules/rescript/lib/es6/array.js\";\nimport * as React from \"react\";\nimport * as Avatar from \"../../../shared/Avatar.bs.js\";\nimport * as PfIcon from \"../../../packages/pf-icon/src/PfIcon.bs.js\";\nimport * as HelpIcon from \"../../../shared/components/HelpIcon.bs.js\";\nimport * as ArrayUtils from \"../../../shared/utils/ArrayUtils.bs.js\";\nimport * as SkeletonLoading from \"../../../shared/components/SkeletonLoading.bs.js\";\nimport * as CoursesReport__Coach from \"../types/CoursesReport__Coach.bs.js\";\nimport * as CoursesReport__StudentOverview from \"../types/CoursesReport__StudentOverview.bs.js\";\nimport * as CoursesStudents__PersonalCoaches from \"../../students/components/CoursesStudents__PersonalCoaches.bs.js\";\nimport * as CoursesReport__EvaluationCriterion from \"../types/CoursesReport__EvaluationCriterion.bs.js\";\nimport * as CoursesReport__MilestoneCompletionStatus from \"../types/CoursesReport__MilestoneCompletionStatus.bs.js\";\n\nimport \"./CoursesReport__Overview.css\"\n;\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.CoursesReport__Overview\";\n\nfunction t(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nvar partial_arg$1 = \"shared\";\n\nfunction ts(param, param$1, param$2) {\n return I18n.t(partial_arg$1, param, param$1, param$2);\n}\n\nfunction avatar(avatarUrl, name) {\n var avatarClasses = \"w-8 h-8 md:w-10 md:h-10 text-xs border border-gray-300 rounded-full overflow-hidden shrink-0 object-cover\";\n if (avatarUrl !== undefined) {\n return React.createElement(\"img\", {\n className: avatarClasses,\n src: avatarUrl\n });\n } else {\n return React.createElement(Avatar.make, {\n name: name,\n className: avatarClasses\n });\n }\n}\n\nfunction userInfo(key, avatarUrl, name, title) {\n return React.createElement(\"div\", {\n key: key,\n className: \"w-full md:w-1/2 shadow rounded-lg p-4 flex items-center mt-2 bg-white\"\n }, CoursesStudents__PersonalCoaches.avatar(undefined, avatarUrl, name), React.createElement(\"div\", {\n className: \"ms-2 md:ms-3\"\n }, React.createElement(\"div\", {\n className: \"text-sm font-semibold\"\n }, name), React.createElement(\"div\", {\n className: \"text-xs\"\n }, title)));\n}\n\nfunction coachInfo(coaches) {\n if (ArrayUtils.isNotEmpty(coaches)) {\n return React.createElement(\"div\", {\n className: \"mt-8\"\n }, React.createElement(\"p\", {\n className: \"text-sm font-semibold\"\n }, t(undefined, undefined, \"personal_coaches\")), $$Array.mapi((function (index, coach) {\n return userInfo(String(index), CoursesReport__Coach.avatarUrl(coach), CoursesReport__Coach.name(coach), CoursesReport__Coach.title(coach));\n }), coaches));\n } else {\n return null;\n }\n}\n\nfunction doughnutChart(color, percentage) {\n return React.createElement(\"svg\", {\n className: \"courses-report-overview__doughnut-chart \" + color,\n viewBox: \"0 0 36 36\"\n }, React.createElement(\"path\", {\n className: \"courses-report-overview__doughnut-chart-bg\",\n d: \"M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831\"\n }), React.createElement(\"path\", {\n className: \"courses-report-overview__doughnut-chart-stroke\",\n d: \"M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831\",\n strokeDasharray: percentage + \", 100\"\n }), React.createElement(\"text\", {\n className: \"courses-report-overview__doughnut-chart-text font-semibold\",\n x: \"50%\",\n y: \"58%\"\n }, percentage + \"%\"));\n}\n\nfunction assignmentsCompletionStatus(overview) {\n var assignmentsCompleted = CoursesReport__StudentOverview.assignmentsCompleted(overview);\n var totalAssignments = CoursesReport__StudentOverview.totalAssignments(overview);\n var assignmentsPendingReview = CoursesReport__StudentOverview.assignmentsPendingReview(overview);\n var incompleteAssignments = ((totalAssignments | 0) - (assignmentsCompleted | 0) | 0) - assignmentsPendingReview | 0;\n var assignmentsCompletionPercent = String(assignmentsCompleted / totalAssignments * 100.0 | 0);\n return React.createElement(\"div\", {\n \"aria-label\": \"assignments-completion-status\",\n className: \"w-full lg:w-1/2 px-2\"\n }, React.createElement(\"div\", {\n className: \"courses-report-overview__doughnut-chart-container bg-white flex-col gap-1\"\n }, React.createElement(\"div\", {\n className: \"flex items-center\"\n }, React.createElement(\"div\", undefined, doughnutChart(\"purple\", assignmentsCompletionPercent)), React.createElement(\"div\", {\n className: \"ms-4\"\n }, React.createElement(\"p\", {\n className: \"text-sm text-gray-600 font-semibold mt-1\"\n }, t([[\n \"count\",\n String(incompleteAssignments)\n ]], undefined, \"incomplete_assignments\")), React.createElement(\"p\", {\n className: \"text-sm text-gray-600 font-semibold mt-1\"\n }, t([[\n \"targetsCount\",\n String(assignmentsPendingReview)\n ]], undefined, \"targets_pending_review\")), React.createElement(\"p\", {\n className: \"text-sm text-gray-600 font-semibold mt-1\"\n }, t([[\n \"targetsCount\",\n String(assignmentsCompleted | 0)\n ]], undefined, \"targets_completed\")))), React.createElement(\"div\", {\n className: \"text-sm font-semibold text-center\"\n }, ts(undefined, undefined, \"assignments\"))));\n}\n\nfunction pagesReadStatus(overview) {\n var totalPageReads = CoursesReport__StudentOverview.totalPageReads(overview);\n var totalTargets = CoursesReport__StudentOverview.totalTargets(overview);\n var pagesReadPercent = String(totalPageReads / totalTargets * 100.0 | 0);\n var pendingTargets = (totalTargets | 0) - (totalPageReads | 0) | 0;\n return React.createElement(\"div\", {\n \"aria-label\": \"targets-read-status\",\n className: \"w-full lg:w-1/2 px-2 mt-2 lg:mt-0 \"\n }, React.createElement(\"div\", {\n className: \"courses-report-overview__doughnut-chart-container bg-white flex-col gap-1\"\n }, React.createElement(\"div\", {\n className: \"flex items-center\"\n }, React.createElement(\"div\", undefined, doughnutChart(\"purple\", pagesReadPercent)), React.createElement(\"div\", {\n className: \"ms-4\"\n }, React.createElement(\"p\", {\n className: \"text-sm text-gray-600 font-semibold mt-1\"\n }, t([[\n \"pagesUnread\",\n String(pendingTargets)\n ]], undefined, \"pages_unread\")), React.createElement(\"p\", {\n className: \"text-sm text-gray-600 font-semibold mt-1\"\n }, t([[\n \"pagesRead\",\n String(totalPageReads | 0)\n ]], undefined, \"pages_read\")))), React.createElement(\"div\", {\n className: \"text-sm font-semibold text-center\"\n }, ts(undefined, undefined, \"targets\"))));\n}\n\nfunction quizPerformanceChart(averageQuizScore, quizzesAttempted) {\n if (averageQuizScore !== undefined) {\n return React.createElement(\"div\", {\n \"aria-label\": \"quiz-performance-chart\",\n className: \"w-full lg:w-1/2 px-2 mt-2\"\n }, React.createElement(\"div\", {\n className: \"courses-report-overview__doughnut-chart-container bg-white\"\n }, React.createElement(\"div\", undefined, doughnutChart(\"pink\", String(averageQuizScore | 0))), React.createElement(\"div\", {\n className: \"ms-4\"\n }, React.createElement(\"p\", {\n className: \"text-sm font-semibold mt-3\"\n }, t(undefined, undefined, \"average_quiz_score\")), React.createElement(\"p\", {\n className: \"text-sm text-gray-600 font-semibold leading-tight mt-1\"\n }, t(undefined, quizzesAttempted, \"quizzes_attempted\")))));\n } else {\n return null;\n }\n}\n\nfunction milestonesCompletionStatus(overview) {\n var milestones = CoursesReport__StudentOverview.milestonesCompletionStatus(overview);\n var totalMilestones = milestones.length;\n var completedMilestones = milestones.filter(function (milestone) {\n return milestone.completed === true;\n }).length;\n var milestonesCompletionPercentage = String(completedMilestones / totalMilestones * 100.0 | 0);\n return React.createElement(\"div\", {\n className: \"flex items-center gap-2 flex-shrink-0\"\n }, React.createElement(\"p\", {\n className: \"text-xs font-medium text-gray-500\"\n }, String(completedMilestones) + \" / \" + String(totalMilestones), React.createElement(\"span\", {\n className: \"px-2 text-gray-300\"\n }, \"|\"), ts([[\n \"percentage\",\n milestonesCompletionPercentage\n ]], undefined, \"percentage_completed\")), React.createElement(\"div\", undefined, React.createElement(\"svg\", {\n className: \"courses-milestone-complete__doughnut-chart \",\n viewBox: \"0 0 36 36\"\n }, React.createElement(\"path\", {\n className: \"courses-milestone-complete__doughnut-chart-bg \",\n d: \"M18 2.0845\\n a 15.9155 15.9155 0 0 1 0 31.831\\n a 15.9155 15.9155 0 0 1 0 -31.831\"\n }), React.createElement(\"path\", {\n className: \"courses-milestone-complete__doughnut-chart-stroke\",\n d: \"M18 2.0845\\n a 15.9155 15.9155 0 0 1 0 31.831\\n a 15.9155 15.9155 0 0 1 0 -31.831\",\n strokeDasharray: milestonesCompletionPercentage + \", 100\"\n }))));\n}\n\nfunction averageGradeCharts(evaluationCriteria, averageGrades) {\n return $$Array.map((function (grade) {\n var criterion = CoursesReport__StudentOverview.evaluationCriterionForGrade(grade, evaluationCriteria);\n return React.createElement(\"div\", {\n key: CoursesReport__EvaluationCriterion.id(criterion),\n \"aria-label\": \"average-grade-for-criterion-\" + CoursesReport__EvaluationCriterion.id(criterion),\n className: \"flex w-full lg:w-1/3 px-2 mt-2\"\n }, React.createElement(\"div\", {\n className: \"courses-report-overview__pie-chart-container\"\n }, React.createElement(\"div\", {\n className: \"flex px-5 pt-4 text-center items-center\"\n }, React.createElement(\"svg\", {\n className: \"courses-report-overview__pie-chart courses-report-overview__pie-chart--pass\",\n viewBox: \"0 0 32 32\"\n }, React.createElement(\"circle\", {\n className: \"courses-report-overview__pie-chart-circle courses-report-overview__pie-chart-circle--pass\",\n cx: \"16\",\n cy: \"16\",\n r: \"16\",\n strokeDasharray: CoursesReport__StudentOverview.gradeAsPercentage(grade, criterion) + \", 100\"\n })), React.createElement(\"span\", {\n className: \"ms-3 text-lg font-semibold\"\n }, grade.grade.toString() + (\"/\" + String(criterion.maxGrade)))), React.createElement(\"p\", {\n className: \"text-sm font-semibold px-5 pt-3 pb-4\"\n }, CoursesReport__EvaluationCriterion.name(criterion))));\n }), averageGrades);\n}\n\nfunction CoursesReport__Overview(Props) {\n var overviewData = Props.overviewData;\n var coaches = Props.coaches;\n var tmp;\n if (overviewData) {\n var overview = overviewData._0;\n tmp = React.createElement(\"div\", {\n className: \"flex flex-col\"\n }, React.createElement(\"div\", {\n className: \"w-full\"\n }, React.createElement(\"div\", {\n className: \"mt-8\"\n }, React.createElement(\"h6\", {\n className: \"text-sm font-semibold\"\n }, ts(undefined, undefined, \"cohort\")), React.createElement(\"div\", {\n className: \"max-w-auto shadow rounded-lg p-4 items-center mt-2 bg-white flex shrink gap-2\"\n }, React.createElement(\"div\", undefined, React.createElement(PfIcon.make, {\n className: \"if i-users-light font-normal text-lg\"\n })), React.createElement(\"p\", {\n className: \"text-sm font-semibold break-all\"\n }, CoursesReport__StudentOverview.cohortName(overview)))), React.createElement(\"div\", {\n className: \"mt-8\"\n }, React.createElement(\"p\", {\n className: \"text-sm font-semibold\"\n }, ts(undefined, undefined, \"targets_overview\")), React.createElement(\"div\", {\n className: \"flex -mx-2 flex-wrap mt-2\"\n }, assignmentsCompletionStatus(overview), pagesReadStatus(overview), quizPerformanceChart(CoursesReport__StudentOverview.averageQuizScore(overview), CoursesReport__StudentOverview.quizzesAttempted(overview)))), ArrayUtils.isNotEmpty(CoursesReport__StudentOverview.averageGrades(overview)) ? React.createElement(\"div\", {\n className: \"mt-8\"\n }, React.createElement(\"h6\", {\n className: \"text-sm font-semibold\"\n }, t(undefined, undefined, \"average_grades\")), React.createElement(\"div\", {\n className: \"flex -mx-2 flex-wrap\"\n }, averageGradeCharts(CoursesReport__StudentOverview.evaluationCriteria(overview), CoursesReport__StudentOverview.averageGrades(overview)))) : null, coachInfo(coaches), React.createElement(\"div\", undefined, React.createElement(\"div\", {\n className: \"flex justify-between mt-8\"\n }, React.createElement(\"p\", {\n className: \"text-sm font-semibold\"\n }, React.createElement(\"span\", undefined, ts(undefined, undefined, \"milestones\")), React.createElement(HelpIcon.make, {\n className: \"ml-2\",\n responsiveAlignment: {\n TAG: /* Responsive */1,\n _0: /* AlignLeft */0,\n _1: /* AlignCenter */2\n },\n children: t(undefined, undefined, \"milestone_status_help\")\n })), milestonesCompletionStatus(overview)), React.createElement(\"div\", {\n className: \"grid gap-2 mt-2\"\n }, ArrayUtils.copyAndSort((function (a, b) {\n return CoursesReport__MilestoneCompletionStatus.milestoneNumber(a) - CoursesReport__MilestoneCompletionStatus.milestoneNumber(b) | 0;\n }), CoursesReport__StudentOverview.milestonesCompletionStatus(overview)).map(function (data) {\n return React.createElement(\"a\", {\n className: \"flex gap-2 items-center justify-between p-2 rounded-md border bg-gray-100 hover:bg-primary-100 hover:border-primary-500 hover:text-primary-500 transition\",\n href: \"/targets/\" + CoursesReport__MilestoneCompletionStatus.id(data)\n }, React.createElement(\"div\", {\n className: \"flex items-center gap-2\"\n }, React.createElement(\"p\", {\n className: \"text-sm font-semibold\"\n }, ts(undefined, undefined, \"m\") + String(CoursesReport__MilestoneCompletionStatus.milestoneNumber(data))), React.createElement(\"p\", {\n className: \"max-w-[16ch] sm:max-w-[40ch] md:max-w-[32ch] lg:max-w-[56ch] 2xl:max-w-[64ch] truncate text-sm\"\n }, CoursesReport__MilestoneCompletionStatus.title(data))), React.createElement(\"div\", {\n className: \"flex-shrink-0\"\n }, React.createElement(\"span\", {\n className: \"text-xs font-medium inline-flex items-center \" + (\n CoursesReport__MilestoneCompletionStatus.completed(data) ? \"text-green-700 bg-green-100 px-1 py-0.5 rounded\" : \"text-orange-700 bg-orange-100 px-1 py-0.5 rounded\"\n )\n }, React.createElement(Icon.make, {\n className: CoursesReport__MilestoneCompletionStatus.completed(data) ? \"if i-check-circle-solid text-green-600\" : \"if i-dashed-circle-light text-orange-600\"\n }), CoursesReport__MilestoneCompletionStatus.completed(data) ? React.createElement(\"span\", {\n className: \"ms-1\"\n }, t(undefined, undefined, \"milestone_completed\")) : React.createElement(\"span\", {\n className: \"ms-1\"\n }, t(undefined, undefined, \"milestone_pending\")))));\n })))));\n } else {\n tmp = React.createElement(\"div\", {\n className: \"flex flex-col\"\n }, React.createElement(\"div\", {\n className: \"w-full bg-white p-8\"\n }, SkeletonLoading.heading(undefined), SkeletonLoading.multiple(2, SkeletonLoading.paragraph(undefined)), SkeletonLoading.multiple(2, SkeletonLoading.userDetails(undefined))));\n }\n return React.createElement(\"div\", {\n className: \"max-w-3xl mx-auto\"\n }, tmp);\n}\n\nvar make = CoursesReport__Overview;\n\nexport {\n str ,\n t ,\n ts ,\n avatar ,\n userInfo ,\n coachInfo ,\n doughnutChart ,\n assignmentsCompletionStatus ,\n pagesReadStatus ,\n quizPerformanceChart ,\n milestonesCompletionStatus ,\n averageGradeCharts ,\n make ,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as DateFns from \"../../../shared/utils/DateFns.bs.js\";\nimport * as Js_array from \"../../../../../node_modules/rescript/lib/es6/js_array.js\";\n\nfunction make(id, title, createdAt, status, targetId, targetRole, milestoneNumber) {\n return {\n id: id,\n title: title,\n createdAt: createdAt,\n status: status,\n targetId: targetId,\n targetRole: targetRole,\n milestoneNumber: milestoneNumber\n };\n}\n\nfunction id(t) {\n return t.id;\n}\n\nfunction title(t) {\n return t.title;\n}\n\nfunction status(t) {\n return t.status;\n}\n\nfunction createdAt(t) {\n return t.createdAt;\n}\n\nfunction targetId(t) {\n return t.targetId;\n}\n\nfunction targetRole(t) {\n return t.targetRole;\n}\n\nfunction createdAtPretty(t) {\n return DateFns.format(t.createdAt, \"MMMM d, yyyy\");\n}\n\nfunction milestoneNumber(t) {\n return t.milestoneNumber;\n}\n\nfunction makeFromJs(submissions) {\n return Js_array.map((function (submission) {\n var createdAt = DateFns.decodeISO(submission.createdAt);\n var _passedAt = submission.passedAt;\n var status;\n if (_passedAt !== undefined) {\n status = \"Completed\";\n } else {\n var _time = submission.evaluatedAt;\n status = _time !== undefined ? \"Rejected\" : \"PendingReview\";\n }\n var targetRole = submission.teamTarget ? /* Team */({\n _0: submission.studentIds\n }) : /* Student */0;\n return make(submission.id, submission.title, createdAt, status, submission.targetId, targetRole, submission.milestoneNumber);\n }), submissions);\n}\n\nexport {\n make ,\n id ,\n title ,\n status ,\n createdAt ,\n targetId ,\n targetRole ,\n createdAtPretty ,\n milestoneNumber ,\n makeFromJs ,\n}\n/* DateFns Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Caml_obj from \"../../../../../node_modules/rescript/lib/es6/caml_obj.js\";\n\nfunction make(submissions, filter, sortDirection) {\n return {\n submissions: submissions,\n filter: filter,\n sortDirection: sortDirection\n };\n}\n\nfunction makeFilter(status) {\n return {\n status: status\n };\n}\n\nfunction partiallyLoaded(submissions, filter, sortDirection, cursor) {\n return {\n TAG: /* PartiallyLoaded */0,\n _0: {\n submissions: submissions,\n filter: filter,\n sortDirection: sortDirection\n },\n _1: cursor\n };\n}\n\nfunction fullyLoaded(submissions, filter, sortDirection) {\n return {\n TAG: /* FullyLoaded */1,\n _0: {\n submissions: submissions,\n filter: filter,\n sortDirection: sortDirection\n }\n };\n}\n\nfunction filterEq(status, filter) {\n return Caml_obj.equal(filter.status, status);\n}\n\nfunction needsReloading(selectedStatus, sortDirection, t) {\n if (typeof t === \"number\") {\n return true;\n }\n var data = t._0;\n return !(Caml_obj.equal(data.filter.status, selectedStatus) && data.sortDirection === sortDirection);\n}\n\nexport {\n make ,\n makeFilter ,\n partiallyLoaded ,\n fullyLoaded ,\n filterEq ,\n needsReloading ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as $$Array from \"../../../../../node_modules/rescript/lib/es6/array.js\";\nimport * as Curry from \"../../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as FaIcon from \"../../../shared/components/FaIcon.bs.js\";\nimport * as Sorter from \"../../../shared/components/Sorter.bs.js\";\nimport * as Caml_obj from \"../../../../../node_modules/rescript/lib/es6/caml_obj.js\";\nimport * as HelpIcon from \"../../../shared/components/HelpIcon.bs.js\";\nimport * as Js_array from \"../../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as ArrayUtils from \"../../../shared/utils/ArrayUtils.bs.js\";\nimport * as Js_promise from \"../../../../../node_modules/rescript/lib/es6/js_promise.js\";\nimport * as Belt_Option from \"../../../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as Caml_option from \"../../../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as OptionUtils from \"../../../shared/utils/OptionUtils.bs.js\";\nimport * as GraphqlQuery from \"../../../shared/utils/GraphqlQuery.bs.js\";\nimport * as LoadingSpinner from \"../../../shared/components/LoadingSpinner.bs.js\";\nimport * as SkeletonLoading from \"../../../shared/components/SkeletonLoading.bs.js\";\nimport * as MultiselectDropdown from \"../../../packages/multiselect-dropdown/src/components/MultiselectDropdown.bs.js\";\nimport * as CoursesReport__Submission from \"../types/CoursesReport__Submission.bs.js\";\nimport * as CoursesReport__Submissions from \"../types/CoursesReport__Submissions.bs.js\";\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.CoursesReport__SubmissionsList\";\n\nfunction tr(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nvar partial_arg$1 = \"shared\";\n\nfunction ts(param, param$1, param$2) {\n return I18n.t(partial_arg$1, param, param$1, param$2);\n}\n\nvar sortBy_criterion = tr(undefined, undefined, \"submitted_at\");\n\nvar sortBy = {\n criterion: sortBy_criterion,\n criterionType: \"Number\"\n};\n\nfunction statusString(targetStatus) {\n if (targetStatus === \"Completed\") {\n return tr(undefined, undefined, \"completed\");\n } else if (targetStatus === \"Rejected\") {\n return tr(undefined, undefined, \"rejected\");\n } else {\n return tr(undefined, undefined, \"pending_review\");\n }\n}\n\nvar Raw = {};\n\nvar query = \"query StudentsReportSubmissionsQuery($studentId: ID!, $after: String, $status: SubmissionReviewStatus, $sortDirection: SortDirection!) {\\nstudentSubmissions(studentId: $studentId, after: $after, first: 20, status: $status, sortDirection: $sortDirection) {\\nnodes {\\nid \\ncreatedAt \\ntargetId \\npassedAt \\ntitle \\nevaluatedAt \\nstudentIds \\nteamTarget \\nmilestoneNumber \\n}\\n\\npageInfo {\\nhasNextPage \\nendCursor \\n}\\n\\n}\\n\\n}\\n\";\n\nfunction parse(value) {\n var value$1 = value.studentSubmissions;\n var value$2 = value$1.nodes;\n var value$3 = value$1.pageInfo;\n var value$4 = value$3.endCursor;\n return {\n studentSubmissions: {\n nodes: Js_array.map((function (value) {\n var value$1 = value.passedAt;\n var value$2 = value.evaluatedAt;\n var value$3 = value.studentIds;\n var value$4 = value.milestoneNumber;\n return {\n id: value.id,\n createdAt: value.createdAt,\n targetId: value.targetId,\n passedAt: !(value$1 == null) ? Caml_option.some(value$1) : undefined,\n title: value.title,\n evaluatedAt: !(value$2 == null) ? Caml_option.some(value$2) : undefined,\n studentIds: Js_array.map((function (value) {\n return value;\n }), value$3),\n teamTarget: value.teamTarget,\n milestoneNumber: !(value$4 == null) ? value$4 : undefined\n };\n }), value$2),\n pageInfo: {\n hasNextPage: value$3.hasNextPage,\n endCursor: !(value$4 == null) ? value$4 : undefined\n }\n }\n };\n}\n\nfunction serialize(value) {\n var value$1 = value.studentSubmissions;\n var value$2 = value$1.pageInfo;\n var value$3 = value$2.endCursor;\n var endCursor = value$3 !== undefined ? value$3 : null;\n var value$4 = value$2.hasNextPage;\n var pageInfo = {\n hasNextPage: value$4,\n endCursor: endCursor\n };\n var value$5 = value$1.nodes;\n var nodes = Js_array.map((function (value) {\n var value$1 = value.milestoneNumber;\n var milestoneNumber = value$1 !== undefined ? value$1 : null;\n var value$2 = value.teamTarget;\n var value$3 = value.studentIds;\n var studentIds = Js_array.map((function (value) {\n return value;\n }), value$3);\n var value$4 = value.evaluatedAt;\n var evaluatedAt = value$4 !== undefined ? Caml_option.valFromOption(value$4) : null;\n var value$5 = value.title;\n var value$6 = value.passedAt;\n var passedAt = value$6 !== undefined ? Caml_option.valFromOption(value$6) : null;\n var value$7 = value.targetId;\n var value$8 = value.createdAt;\n var value$9 = value.id;\n return {\n id: value$9,\n createdAt: value$8,\n targetId: value$7,\n passedAt: passedAt,\n title: value$5,\n evaluatedAt: evaluatedAt,\n studentIds: studentIds,\n teamTarget: value$2,\n milestoneNumber: milestoneNumber\n };\n }), value$5);\n var studentSubmissions = {\n nodes: nodes,\n pageInfo: pageInfo\n };\n return {\n studentSubmissions: studentSubmissions\n };\n}\n\nfunction serializeVariables(inp) {\n var a = inp.after;\n var a$1 = inp.status;\n var a$2 = inp.sortDirection;\n return {\n studentId: inp.studentId,\n after: a !== undefined ? a : undefined,\n status: a$1 !== undefined ? (\n a$1 === \"Completed\" ? \"Completed\" : (\n a$1 === \"Rejected\" ? \"Rejected\" : \"PendingReview\"\n )\n ) : undefined,\n sortDirection: a$2 === \"Descending\" ? \"Descending\" : \"Ascending\"\n };\n}\n\nfunction makeVariables(studentId, after, status, sortDirection, param) {\n return {\n studentId: studentId,\n after: after,\n status: status,\n sortDirection: sortDirection\n };\n}\n\nvar StudentSubmissionsQuery_inner = {\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables\n};\n\nvar include = GraphqlQuery.Extender({\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar make = include.make;\n\nvar StudentSubmissionsQuery_Graphql_error = include.Graphql_error;\n\nvar StudentSubmissionsQuery_decodeNotification = include.decodeNotification;\n\nvar StudentSubmissionsQuery_decodeObject = include.decodeObject;\n\nvar StudentSubmissionsQuery_decodeNotifications = include.decodeNotifications;\n\nvar StudentSubmissionsQuery_decodeErrors = include.decodeErrors;\n\nvar StudentSubmissionsQuery_flashNotifications = include.flashNotifications;\n\nvar StudentSubmissionsQuery_sendQuery = include.sendQuery;\n\nvar StudentSubmissionsQuery_query = include.query;\n\nvar StudentSubmissionsQuery_fetch = include.$$fetch;\n\nvar StudentSubmissionsQuery = {\n StudentSubmissionsQuery_inner: StudentSubmissionsQuery_inner,\n Raw: Raw,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables,\n Graphql_error: StudentSubmissionsQuery_Graphql_error,\n decodeNotification: StudentSubmissionsQuery_decodeNotification,\n decodeObject: StudentSubmissionsQuery_decodeObject,\n decodeNotifications: StudentSubmissionsQuery_decodeNotifications,\n decodeErrors: StudentSubmissionsQuery_decodeErrors,\n flashNotifications: StudentSubmissionsQuery_flashNotifications,\n sendQuery: StudentSubmissionsQuery_sendQuery,\n query: StudentSubmissionsQuery_query,\n $$fetch: StudentSubmissionsQuery_fetch,\n make: make\n};\n\nfunction label(t) {\n return tr(undefined, undefined, \"status\");\n}\n\nfunction value(t) {\n return statusString(t._0);\n}\n\nfunction searchString(t) {\n return \"status \" + statusString(t._0);\n}\n\nfunction color(t) {\n var status = t._0;\n if (status === \"Completed\") {\n return \"green\";\n } else if (status === \"Rejected\") {\n return \"red\";\n } else {\n return \"blue\";\n }\n}\n\nfunction targetStatus(targetStatus$1) {\n return /* TargetStatus */{\n _0: targetStatus$1\n };\n}\n\nvar Selectable = {\n label: label,\n value: value,\n searchString: searchString,\n color: color,\n targetStatus: targetStatus\n};\n\nvar Multiselect = MultiselectDropdown.Make(Selectable);\n\nfunction unselected(selectedStatus) {\n return $$Array.map(targetStatus, Js_array.filter((function (status) {\n return OptionUtils.mapWithDefault((function (selectedStatus) {\n return status !== selectedStatus;\n }), true, selectedStatus);\n }), [\n \"PendingReview\",\n \"Rejected\",\n \"Completed\"\n ]));\n}\n\nfunction selected(selectedStatus) {\n return OptionUtils.mapWithDefault((function (selectedStatus) {\n return [/* TargetStatus */{\n _0: selectedStatus\n }];\n }), [], selectedStatus);\n}\n\nfunction onSelectFilter(send, updateSelectedStatusCB, selectable) {\n Curry._1(send, /* UpdateFilterString */{\n _0: \"\"\n });\n return Curry._1(updateSelectedStatusCB, selectable._0);\n}\n\nfunction onDeselectFilter(updateSelectedStatusCB, selectable) {\n return Curry._1(updateSelectedStatusCB, undefined);\n}\n\nfunction criterion(t) {\n return t.criterion;\n}\n\nfunction criterionType(t) {\n return t.criterionType;\n}\n\nvar Sortable = {\n criterion: criterion,\n criterionType: criterionType\n};\n\nvar SubmissionsSorter = Sorter.Make(Sortable);\n\nfunction submissionsSorter(sortDirection, updateSortDirectionCB) {\n var criteria = [sortBy];\n return React.createElement(\"div\", {\n \"aria-label\": \"Change submissions sorting\",\n className: \"shrink-0 mt-3 md:mt-0 md:ms-2\"\n }, React.createElement(\"label\", {\n className: \"block text-tiny font-semibold uppercase\"\n }, tr(undefined, undefined, \"sort_by\")), React.createElement(SubmissionsSorter.make, {\n criteria: criteria,\n selectedCriterion: sortBy,\n direction: sortDirection,\n onDirectionChange: Curry.__1(updateSortDirectionCB),\n onCriterionChange: (function (param) {\n \n })\n }));\n}\n\nfunction filterPlaceholder(selectedStatus) {\n if (selectedStatus !== undefined) {\n return tr(undefined, undefined, \"filter_by_another_status\");\n } else {\n return tr(undefined, undefined, \"filter_by_status\");\n }\n}\n\nfunction reducer(state, action) {\n if (typeof action !== \"number\") {\n return {\n loading: state.loading,\n filterString: action._0\n };\n }\n switch (action) {\n case /* BeginLoadingMore */0 :\n return {\n loading: /* LoadingMore */2,\n filterString: state.filterString\n };\n case /* BeginReloading */1 :\n return {\n loading: /* Reloading */1,\n filterString: state.filterString\n };\n case /* CompletedLoading */2 :\n return {\n loading: /* Loaded */0,\n filterString: state.filterString\n };\n \n }\n}\n\nfunction updateStudentSubmissions(send, updateSubmissionsCB, endCursor, hasNextPage, submissions, selectedStatus, sortDirection, nodes) {\n var updatedSubmissions = Js_array.concat(CoursesReport__Submission.makeFromJs(nodes), submissions);\n var filter = CoursesReport__Submissions.makeFilter(selectedStatus);\n var submissionsData = CoursesReport__Submissions.make(updatedSubmissions, filter, sortDirection);\n var submissionsData$1 = hasNextPage && endCursor !== undefined ? ({\n TAG: /* PartiallyLoaded */0,\n _0: submissionsData,\n _1: endCursor\n }) : ({\n TAG: /* FullyLoaded */1,\n _0: submissionsData\n });\n Curry._1(updateSubmissionsCB, submissionsData$1);\n return Curry._1(send, /* CompletedLoading */2);\n}\n\nfunction getStudentSubmissions(studentId, cursor, send, status, sortDirection, submissions, updateSubmissionsCB) {\n var status$1 = Belt_Option.flatMap(status, (function (status) {\n return status;\n }));\n Js_promise.then_((function (response) {\n updateStudentSubmissions(send, updateSubmissionsCB, response.studentSubmissions.pageInfo.endCursor, response.studentSubmissions.pageInfo.hasNextPage, submissions, status$1, sortDirection, response.studentSubmissions.nodes);\n return Promise.resolve(undefined);\n }), Curry._3(make, undefined, undefined, {\n studentId: studentId,\n after: cursor,\n status: status$1,\n sortDirection: sortDirection\n }));\n}\n\nfunction showSubmissionStatus(submission) {\n var match = CoursesReport__Submission.status(submission);\n if (match === \"Completed\") {\n return React.createElement(\"div\", {\n className: \"bg-green-100 border border-green-500 shrink-0 leading-normal text-green-800 font-semibold px-3 py-px rounded\"\n }, tr(undefined, undefined, \"completed\"));\n } else if (match === \"Rejected\") {\n return React.createElement(\"div\", {\n className: \"bg-red-100 border border-red-500 shrink-0 leading-normal text-red-800 font-semibold px-3 py-px rounded\"\n }, tr(undefined, undefined, \"rejected\"));\n } else {\n return React.createElement(\"div\", {\n className: \"bg-blue-100 border border-blue-500 shrink-0 leading-normal text-blue-800 font-semibold px-3 py-px rounded\"\n }, tr(undefined, undefined, \"pending_review\"));\n }\n}\n\nfunction submissionCardClasses(submission) {\n var match = CoursesReport__Submission.status(submission);\n return \"flex flex-col md:flex-row items-start md:items-center justify-between rounded-lg bg-white border-s-3 p-3 md:py-6 md:px-5 mt-4 cursor-pointer shadow hover:border-primary-500 hover:text-primary-500 hover:shadow-md focus:outline-none focus:border-2 focus:border-focusColor-500 \" + (\n match === \"Completed\" ? \"border-green-500\" : (\n match === \"Rejected\" ? \"border-red-500\" : \"border-blue-500\"\n )\n );\n}\n\nfunction showSubmission(submissions, teamStudentIds) {\n return React.createElement(\"div\", undefined, $$Array.map((function (submission) {\n var studentIds = CoursesReport__Submission.targetRole(submission);\n var teamMismatch = studentIds ? Caml_obj.notequal(teamStudentIds, studentIds._0) : false;\n var submissionHref = teamMismatch ? \"/submissions/\" + CoursesReport__Submission.id(submission) : \"/targets/\" + CoursesReport__Submission.targetId(submission);\n return React.createElement(\"div\", {\n key: CoursesReport__Submission.id(submission),\n className: \"\"\n }, React.createElement(\"a\", {\n \"aria-label\": \"Student submission \" + CoursesReport__Submission.id(submission),\n className: \"block relative rounded-lg focus:outline-none focus:ring focus-ring-inset focus:ring-focusColor-500\",\n href: submissionHref\n }, React.createElement(\"div\", {\n key: CoursesReport__Submission.id(submission),\n className: submissionCardClasses(submission)\n }, React.createElement(\"div\", {\n className: \"w-full md:w-3/4\"\n }, React.createElement(\"div\", {\n className: \"block text-sm md:pe-2\"\n }, React.createElement(\"span\", {\n className: \"ms-1 font-semibold text-base\"\n }, Belt_Option.mapWithDefault(CoursesReport__Submission.milestoneNumber(submission), \"\", (function (number) {\n return ts(undefined, undefined, \"m\") + String(number) + \" - \";\n })) + CoursesReport__Submission.title(submission))), React.createElement(\"div\", {\n className: \"mt-1 ms-px text-xs text-gray-900\"\n }, React.createElement(\"span\", {\n className: \"ms-1\"\n }, tr([[\n \"date\",\n CoursesReport__Submission.createdAtPretty(submission)\n ]], undefined, \"submitted_on\")))), React.createElement(\"div\", {\n className: \"w-auto md:w-1/4 text-xs flex justify-end mt-2 md:mt-0\"\n }, showSubmissionStatus(submission)))), teamMismatch ? React.createElement(\"div\", {\n \"aria-label\": \"Team change notice for submission \" + CoursesReport__Submission.id(submission),\n className: \"w-full text-xs rounded-b bg-blue-100 text-blue-700 px-4 pt-3 pb-2 -mt-1 flex flex-1 justify-between items-center\"\n }, React.createElement(\"div\", {\n className: \"flex flex-1 justify-start items-center pe-8\"\n }, React.createElement(FaIcon.make, {\n classes: \"fas fa-exclamation-triangle text-sm md:text-base mt-1\"\n }), React.createElement(\"div\", {\n className: \"inline-block ps-3 \"\n }, tr(undefined, undefined, \"submission_not_considered\"), React.createElement(HelpIcon.make, {\n className: \"ms-1\",\n children: React.createElement(\"span\", {\n dangerouslySetInnerHTML: {\n __html: tr(undefined, undefined, \"submission_not_considered_help\")\n }\n })\n }))), React.createElement(\"a\", {\n className: \"shrink-0 px-2 py-1 text-xs font-semibold text-blue-700 hover:bg-blue-200 hover:text-blue-800 rounded focus:outline-none focus:ring-2 focus:ring-inset focus:ring-focusColor-500\",\n href: \"/targets/\" + CoursesReport__Submission.targetId(submission)\n }, React.createElement(\"span\", {\n className: \"hidden md:inline\"\n }, tr(undefined, undefined, \"view\")), ts(undefined, undefined, \"target\"), React.createElement(FaIcon.make, {\n classes: \"fas fa-arrow-right ms-2 rtl:rotate-180\"\n }))) : null);\n }), submissions));\n}\n\nfunction showSubmissions(submissions, teamStudentIds) {\n if (ArrayUtils.isEmpty(submissions)) {\n return React.createElement(\"div\", {\n className: \"course-review__reviewed-empty text-lg font-semibold text-center py-4\"\n }, React.createElement(\"h5\", {\n className: \"py-4 mt-4 bg-gray-50 text-gray-800 font-semibold\"\n }, tr(undefined, undefined, \"no_submissions_to_show\")));\n } else {\n return showSubmission(submissions, teamStudentIds);\n }\n}\n\nfunction CoursesReport__SubmissionsList(Props) {\n var studentId = Props.studentId;\n var submissions = Props.submissions;\n var updateSubmissionsCB = Props.updateSubmissionsCB;\n var teamStudentIds = Props.teamStudentIds;\n var selectedStatus = Props.selectedStatus;\n var sortDirection = Props.sortDirection;\n var updateSelectedStatusCB = Props.updateSelectedStatusCB;\n var updateSortDirectionCB = Props.updateSortDirectionCB;\n var match = React.useReducer(reducer, {\n loading: /* Loaded */0,\n filterString: \"\"\n });\n var send = match[1];\n var state = match[0];\n React.useEffect((function () {\n if (CoursesReport__Submissions.needsReloading(selectedStatus, sortDirection, submissions)) {\n Curry._1(send, /* BeginReloading */1);\n getStudentSubmissions(studentId, undefined, send, selectedStatus, sortDirection, [], updateSubmissionsCB);\n }\n \n }), [\n selected,\n selectedStatus,\n sortDirection\n ]);\n var tmp;\n if (typeof submissions === \"number\") {\n tmp = SkeletonLoading.multiple(3, SkeletonLoading.card(undefined, undefined));\n } else if (submissions.TAG === /* PartiallyLoaded */0) {\n var cursor = submissions._1;\n var submissions$1 = submissions._0.submissions;\n var match$1 = state.loading;\n var tmp$1;\n switch (match$1) {\n case /* Loaded */0 :\n tmp$1 = React.createElement(\"button\", {\n className: \"btn btn-primary-ghost cursor-pointer w-full mt-4 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-focusColor-500\",\n onClick: (function (param) {\n Curry._1(send, /* BeginLoadingMore */0);\n getStudentSubmissions(studentId, cursor, send, selectedStatus, sortDirection, submissions$1, updateSubmissionsCB);\n })\n }, ts(undefined, undefined, \"load_more\"));\n break;\n case /* Reloading */1 :\n tmp$1 = null;\n break;\n case /* LoadingMore */2 :\n tmp$1 = SkeletonLoading.multiple(3, SkeletonLoading.card(undefined, undefined));\n break;\n \n }\n tmp = React.createElement(\"div\", undefined, showSubmissions(submissions$1, teamStudentIds), tmp$1);\n } else {\n tmp = showSubmissions(submissions._0.submissions, teamStudentIds);\n }\n var tmp$2;\n if (typeof submissions === \"number\") {\n tmp$2 = null;\n } else {\n var match$2 = state.loading;\n var loading = match$2 === 1;\n tmp$2 = React.createElement(LoadingSpinner.make, {\n loading: loading\n });\n }\n return React.createElement(\"div\", {\n className: \"max-w-3xl mx-auto\"\n }, React.createElement(\"div\", {\n className: \"md:flex items-end w-full pb-4 mt-4\",\n role: \"form\"\n }, React.createElement(\"div\", {\n className: \"flex-1\"\n }, React.createElement(\"label\", {\n className: \"block text-tiny font-semibold uppercase pb-1\",\n htmlFor: \"filter\"\n }, \"Filter by:\"), React.createElement(Multiselect.make, {\n id: \"filter\",\n placeholder: filterPlaceholder(selectedStatus),\n onChange: (function (filterString) {\n Curry._1(send, /* UpdateFilterString */{\n _0: filterString\n });\n }),\n value: state.filterString,\n unselected: unselected(selectedStatus),\n selected: selected(selectedStatus),\n onSelect: (function (param) {\n return onSelectFilter(send, updateSelectedStatusCB, param);\n }),\n onDeselect: (function (param) {\n return onDeselectFilter(updateSelectedStatusCB, param);\n }),\n defaultOptions: unselected(selectedStatus)\n })), submissionsSorter(sortDirection, updateSortDirectionCB)), React.createElement(\"div\", {\n \"aria-label\": \"Student submissions\"\n }, tmp), tmp$2);\n}\n\nvar make$1 = CoursesReport__SubmissionsList;\n\nexport {\n str ,\n tr ,\n ts ,\n sortBy ,\n statusString ,\n StudentSubmissionsQuery ,\n Selectable ,\n Multiselect ,\n unselected ,\n selected ,\n onSelectFilter ,\n onDeselectFilter ,\n Sortable ,\n SubmissionsSorter ,\n submissionsSorter ,\n filterPlaceholder ,\n reducer ,\n updateStudentSubmissions ,\n getStudentSubmissions ,\n showSubmissionStatus ,\n submissionCardClasses ,\n showSubmission ,\n showSubmissions ,\n make$1 as make,\n}\n/* sortBy Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as Curry from \"../../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as Js_array from \"../../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as Js_promise from \"../../../../../node_modules/rescript/lib/es6/js_promise.js\";\nimport * as GraphqlQuery from \"../../../shared/utils/GraphqlQuery.bs.js\";\nimport * as CoursesReport__Overview from \"./CoursesReport__Overview.bs.js\";\nimport * as CoursesReport__StudentOverview from \"../types/CoursesReport__StudentOverview.bs.js\";\nimport * as CoursesReport__SubmissionsList from \"./CoursesReport__SubmissionsList.bs.js\";\nimport * as CoursesReport__EvaluationCriterion from \"../types/CoursesReport__EvaluationCriterion.bs.js\";\nimport * as CoursesReport__MilestoneCompletionStatus from \"../types/CoursesReport__MilestoneCompletionStatus.bs.js\";\n\nimport \"./CoursesReport.css\"\n;\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.CoursesReport\";\n\nfunction tr(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nfunction buttonClasses(selected) {\n return \"cursor-pointer flex flex-1 justify-center md:flex-auto rounded-md p-1.5 md:border-b-3 md:rounded-b-none md:px-4 md:hover:bg-gray-50 md:py-2 text-sm font-semibold text-gray-800 hover:text-primary-600 hover:bg-gray-50 focus:outline-none focus:ring-inset focus:ring-2 focus:bg-gray-50 focus:ring-focusColor-500 md:focus:border-b-none md:focus:rounded-t-md \" + (\n selected ? \"bg-white shadow md:shadow-none rounded-md md:rounded-none md:bg-transparent md:border-b-3 hover:bg-white md:hover:bg-transparent text-primary-500 md:border-primary-500\" : \"md:border-transparent\"\n );\n}\n\nfunction reducer(state, action) {\n if (typeof action === \"number\") {\n if (action === /* SelectOverviewTab */0) {\n return {\n selectedTab: \"Overview\",\n overviewData: state.overviewData,\n submissionsData: state.submissionsData,\n submissionsFilter: state.submissionsFilter,\n sortDirection: state.sortDirection\n };\n } else {\n return {\n selectedTab: \"Submissions\",\n overviewData: state.overviewData,\n submissionsData: state.submissionsData,\n submissionsFilter: state.submissionsFilter,\n sortDirection: state.sortDirection\n };\n }\n }\n switch (action.TAG | 0) {\n case /* SaveOverviewData */0 :\n return {\n selectedTab: state.selectedTab,\n overviewData: action._0,\n submissionsData: state.submissionsData,\n submissionsFilter: state.submissionsFilter,\n sortDirection: state.sortDirection\n };\n case /* SaveSubmissions */1 :\n return {\n selectedTab: state.selectedTab,\n overviewData: state.overviewData,\n submissionsData: action._0,\n submissionsFilter: state.submissionsFilter,\n sortDirection: state.sortDirection\n };\n case /* UpdateStatusFilter */2 :\n return {\n selectedTab: state.selectedTab,\n overviewData: state.overviewData,\n submissionsData: state.submissionsData,\n submissionsFilter: {\n selectedStatus: action._0\n },\n sortDirection: state.sortDirection\n };\n case /* UpdateSortDirection */3 :\n return {\n selectedTab: state.selectedTab,\n overviewData: state.overviewData,\n submissionsData: state.submissionsData,\n submissionsFilter: state.submissionsFilter,\n sortDirection: action._0\n };\n \n }\n}\n\nvar Raw = {};\n\nvar query = \"query StudentReportOverviewQuery($studentId: ID!) {\\nstudentDetails(studentId: $studentId) {\\nevaluationCriteria {\\nid \\nname \\nmaxGrade \\n}\\n\\nstudent {\\ncohort {\\nname \\n}\\n\\n}\\n\\ntotalPageReads \\ntotalTargets \\nassignmentsCompleted \\nassignmentsPendingReview \\ntotalAssignments \\nquizScores \\naverageGrades {\\nevaluationCriterionId \\naverageGrade \\n}\\n\\nmilestonesCompletionStatus {\\nid \\ntitle \\ncompleted \\nmilestoneNumber \\n}\\n\\n}\\n\\n}\\n\";\n\nfunction parse(value) {\n var value$1 = value.studentDetails;\n var value$2 = value$1.evaluationCriteria;\n var value$3 = value$1.student;\n var value$4 = value$3.cohort;\n var value$5 = value$1.quizScores;\n var value$6 = value$1.averageGrades;\n var value$7 = value$1.milestonesCompletionStatus;\n return {\n studentDetails: {\n evaluationCriteria: Js_array.map((function (value) {\n return {\n id: value.id,\n name: value.name,\n maxGrade: value.maxGrade\n };\n }), value$2),\n student: {\n cohort: {\n name: value$4.name\n }\n },\n totalPageReads: value$1.totalPageReads,\n totalTargets: value$1.totalTargets,\n assignmentsCompleted: value$1.assignmentsCompleted,\n assignmentsPendingReview: value$1.assignmentsPendingReview,\n totalAssignments: value$1.totalAssignments,\n quizScores: Js_array.map((function (value) {\n return value;\n }), value$5),\n averageGrades: Js_array.map((function (value) {\n return {\n evaluationCriterionId: value.evaluationCriterionId,\n averageGrade: value.averageGrade\n };\n }), value$6),\n milestonesCompletionStatus: Js_array.map((function (value) {\n return {\n id: value.id,\n title: value.title,\n completed: value.completed,\n milestoneNumber: value.milestoneNumber\n };\n }), value$7)\n }\n };\n}\n\nfunction serialize(value) {\n var value$1 = value.studentDetails;\n var value$2 = value$1.milestonesCompletionStatus;\n var milestonesCompletionStatus = Js_array.map((function (value) {\n var value$1 = value.milestoneNumber;\n var value$2 = value.completed;\n var value$3 = value.title;\n var value$4 = value.id;\n return {\n id: value$4,\n title: value$3,\n completed: value$2,\n milestoneNumber: value$1\n };\n }), value$2);\n var value$3 = value$1.averageGrades;\n var averageGrades = Js_array.map((function (value) {\n var value$1 = value.averageGrade;\n var value$2 = value.evaluationCriterionId;\n return {\n evaluationCriterionId: value$2,\n averageGrade: value$1\n };\n }), value$3);\n var value$4 = value$1.quizScores;\n var quizScores = Js_array.map((function (value) {\n return value;\n }), value$4);\n var value$5 = value$1.totalAssignments;\n var value$6 = value$1.assignmentsPendingReview;\n var value$7 = value$1.assignmentsCompleted;\n var value$8 = value$1.totalTargets;\n var value$9 = value$1.totalPageReads;\n var value$10 = value$1.student;\n var value$11 = value$10.cohort;\n var value$12 = value$11.name;\n var cohort = {\n name: value$12\n };\n var student = {\n cohort: cohort\n };\n var value$13 = value$1.evaluationCriteria;\n var evaluationCriteria = Js_array.map((function (value) {\n var value$1 = value.maxGrade;\n var value$2 = value.name;\n var value$3 = value.id;\n return {\n id: value$3,\n name: value$2,\n maxGrade: value$1\n };\n }), value$13);\n var studentDetails = {\n evaluationCriteria: evaluationCriteria,\n student: student,\n totalPageReads: value$9,\n totalTargets: value$8,\n assignmentsCompleted: value$7,\n assignmentsPendingReview: value$6,\n totalAssignments: value$5,\n quizScores: quizScores,\n averageGrades: averageGrades,\n milestonesCompletionStatus: milestonesCompletionStatus\n };\n return {\n studentDetails: studentDetails\n };\n}\n\nfunction serializeVariables(inp) {\n return {\n studentId: inp.studentId\n };\n}\n\nfunction makeVariables(studentId, param) {\n return {\n studentId: studentId\n };\n}\n\nvar StudentReportOverviewQuery_inner = {\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables\n};\n\nvar include = GraphqlQuery.Extender({\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar $$fetch = include.$$fetch;\n\nvar StudentReportOverviewQuery_Graphql_error = include.Graphql_error;\n\nvar StudentReportOverviewQuery_decodeNotification = include.decodeNotification;\n\nvar StudentReportOverviewQuery_decodeObject = include.decodeObject;\n\nvar StudentReportOverviewQuery_decodeNotifications = include.decodeNotifications;\n\nvar StudentReportOverviewQuery_decodeErrors = include.decodeErrors;\n\nvar StudentReportOverviewQuery_flashNotifications = include.flashNotifications;\n\nvar StudentReportOverviewQuery_sendQuery = include.sendQuery;\n\nvar StudentReportOverviewQuery_query = include.query;\n\nvar StudentReportOverviewQuery_make = include.make;\n\nvar StudentReportOverviewQuery = {\n StudentReportOverviewQuery_inner: StudentReportOverviewQuery_inner,\n Raw: Raw,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables,\n Graphql_error: StudentReportOverviewQuery_Graphql_error,\n decodeNotification: StudentReportOverviewQuery_decodeNotification,\n decodeObject: StudentReportOverviewQuery_decodeObject,\n decodeNotifications: StudentReportOverviewQuery_decodeNotifications,\n decodeErrors: StudentReportOverviewQuery_decodeErrors,\n flashNotifications: StudentReportOverviewQuery_flashNotifications,\n sendQuery: StudentReportOverviewQuery_sendQuery,\n query: StudentReportOverviewQuery_query,\n $$fetch: $$fetch,\n make: StudentReportOverviewQuery_make\n};\n\nfunction getOverviewData(studentId, send, param) {\n Js_promise.$$catch((function (param) {\n return Promise.resolve(undefined);\n }), Js_promise.then_((function (response) {\n var evaluationCriteria = response.studentDetails.evaluationCriteria.map(function (evaluationCriterion) {\n return CoursesReport__EvaluationCriterion.make(evaluationCriterion.id, evaluationCriterion.name, evaluationCriterion.maxGrade);\n });\n var averageGrades = response.studentDetails.averageGrades.map(function (gradeData) {\n return CoursesReport__StudentOverview.makeAverageGrade(gradeData.evaluationCriterionId, gradeData.averageGrade);\n });\n var milestonesCompletionStatus = response.studentDetails.milestonesCompletionStatus.map(function (milestone) {\n return CoursesReport__MilestoneCompletionStatus.make(milestone.id, milestone.title, milestone.completed, milestone.milestoneNumber);\n });\n var overviewData = CoursesReport__StudentOverview.make(studentId, response.studentDetails.student.cohort.name, evaluationCriteria, response.studentDetails.totalPageReads, response.studentDetails.totalTargets, response.studentDetails.assignmentsCompleted, response.studentDetails.totalAssignments, response.studentDetails.quizScores, averageGrades, response.studentDetails.assignmentsPendingReview, milestonesCompletionStatus);\n Curry._1(send, {\n TAG: /* SaveOverviewData */0,\n _0: /* Loaded */{\n _0: overviewData\n }\n });\n return Promise.resolve(undefined);\n }), Curry._3($$fetch, undefined, undefined, {\n studentId: studentId\n })));\n}\n\nfunction updateSubmissions(send, submissions) {\n return Curry._1(send, {\n TAG: /* SaveSubmissions */1,\n _0: submissions\n });\n}\n\nfunction CoursesReport__Root(Props) {\n var studentId = Props.studentId;\n var coaches = Props.coaches;\n var teamStudentIds = Props.teamStudentIds;\n var match = React.useReducer(reducer, {\n selectedTab: \"Overview\",\n overviewData: /* Unloaded */0,\n submissionsData: /* Unloaded */0,\n submissionsFilter: {\n selectedStatus: undefined\n },\n sortDirection: \"Descending\"\n });\n var send = match[1];\n var state = match[0];\n React.useEffect((function () {\n return getOverviewData(studentId, send, undefined);\n }), [studentId]);\n var match$1 = state.selectedTab;\n return React.createElement(\"div\", {\n \"aria-label\": \"Report\",\n className: \"md:pt-18 pb-20 md:pb-5 px-4 bg-gray-50 md:h-screen overflow-y-auto\",\n role: \"main\"\n }, React.createElement(\"div\", {\n className: \"bg-gray-50 sticky top-0 z-10\"\n }, React.createElement(\"div\", {\n className: \"max-w-3xl mx-auto\"\n }, React.createElement(\"div\", {\n className: \"flex pt-3 md:border-b border-gray-300\"\n }, React.createElement(\"div\", {\n \"aria-label\": \"Status tabs\",\n className: \"flex flex-1 md:flex-none p-1 md:p-0 space-x-1 md:space-x-0 text-center rounded-lg justify-between md:justify-start bg-gray-300 md:bg-transparent\",\n role: \"tablist\"\n }, React.createElement(\"button\", {\n \"aria-selected\": state.selectedTab === \"Overview\",\n className: buttonClasses(state.selectedTab === \"Overview\"),\n role: \"tab\",\n onClick: (function (param) {\n Curry._1(send, /* SelectOverviewTab */0);\n })\n }, tr(undefined, undefined, \"button_overview_text\")), React.createElement(\"button\", {\n \"aria-selected\": state.selectedTab === \"Submissions\",\n className: buttonClasses(state.selectedTab === \"Submissions\"),\n role: \"tab\",\n onClick: (function (param) {\n Curry._1(send, /* SelectSubmissionsTab */1);\n })\n }, tr(undefined, undefined, \"button_submissions_text\")))))), React.createElement(\"div\", {\n className: \"\"\n }, match$1 === \"Overview\" ? React.createElement(CoursesReport__Overview.make, {\n overviewData: state.overviewData,\n coaches: coaches\n }) : React.createElement(CoursesReport__SubmissionsList.make, {\n studentId: studentId,\n submissions: state.submissionsData,\n updateSubmissionsCB: (function (param) {\n return Curry._1(send, {\n TAG: /* SaveSubmissions */1,\n _0: param\n });\n }),\n teamStudentIds: teamStudentIds,\n selectedStatus: state.submissionsFilter.selectedStatus,\n sortDirection: state.sortDirection,\n updateSelectedStatusCB: (function (status) {\n Curry._1(send, {\n TAG: /* UpdateStatusFilter */2,\n _0: status\n });\n }),\n updateSortDirectionCB: (function (direction) {\n Curry._1(send, {\n TAG: /* UpdateSortDirection */3,\n _0: direction\n });\n })\n })));\n}\n\nvar make = CoursesReport__Root;\n\nexport {\n str ,\n tr ,\n buttonClasses ,\n reducer ,\n StudentReportOverviewQuery ,\n getOverviewData ,\n updateSubmissions ,\n make ,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Psj from \"../shared/utils/Psj.bs.js\";\nimport * as React from \"react\";\nimport * as DomUtils from \"../shared/utils/DomUtils.bs.js\";\nimport * as ReactDom from \"react-dom\";\nimport * as Json_decode from \"../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\nimport * as CoursesReport__Root from \"../courses/report/components/CoursesReport__Root.bs.js\";\nimport * as CoursesReport__Coach from \"../courses/report/types/CoursesReport__Coach.bs.js\";\n\nfunction decodeProps(json) {\n return [\n Json_decode.field(\"studentId\", Json_decode.string, json),\n Json_decode.field(\"coaches\", (function (param) {\n return Json_decode.array(CoursesReport__Coach.decode, param);\n }), json),\n Json_decode.field(\"teamStudentIds\", (function (param) {\n return Json_decode.array(Json_decode.string, param);\n }), json)\n ];\n}\n\nPsj.match(undefined, \"courses#report\", (function (param) {\n var match = decodeProps(DomUtils.parseJSONTag(\"course-student-report__props\", undefined));\n var root = document.querySelector(\"#react-root\");\n if (!(root == null)) {\n ReactDom.render(React.createElement(CoursesReport__Root.make, {\n studentId: match[0],\n coaches: match[1],\n teamStudentIds: match[2]\n }), root);\n return ;\n }\n \n }));\n\nexport {\n decodeProps ,\n}\n/* Not a pure module */\n","export default \"__VITE_ASSET__By0VdEmx__\"","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../shared/utils/I18n.bs.js\";\nimport * as Curry from \"../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as DateFns from \"../shared/utils/DateFns.bs.js\";\nimport * as DOMPurify from \"../shared/utils/DOMPurify.bs.js\";\nimport * as ReactUtils from \"../shared/utils/ReactUtils.bs.js\";\nimport * as IssuedCertificate from \"../shared/types/IssuedCertificate.bs.js\";\nimport * as IssuedCertificate__Root from \"./IssuedCertificate__Root.bs.js\";\nimport GraduateIconSvg from \"./images/graduate-icon.svg\";\n\nvar graduateIcon = GraduateIconSvg;\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.VerifyCertificate__Root\";\n\nfunction t(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nfunction printCertificate(setViewMode, _event) {\n Curry._1(setViewMode, (function (param) {\n return /* Print */1;\n }));\n setTimeout((function (param) {\n window.print();\n }), 1000);\n}\n\nfunction heading(currentUser, issuedCertificate) {\n if (currentUser) {\n return React.createElement(\"span\", {\n dangerouslySetInnerHTML: DOMPurify.sanitizedHTMLOpt(t([[\n \"name\",\n IssuedCertificate.profileName(issuedCertificate)\n ]], undefined, \"heading\"), DOMPurify.makeOptions(undefined, [\n \"strong\",\n \"br\"\n ], undefined))\n });\n } else {\n return IssuedCertificate.serialNumber(issuedCertificate);\n }\n}\n\nfunction handleCancelPrint(setViewMode, _event) {\n return Curry._1(setViewMode, (function (param) {\n return /* Screen */0;\n }));\n}\n\nfunction issuedToName(issuedCertificate) {\n var issuedTo = IssuedCertificate.issuedTo(issuedCertificate);\n var profileName = IssuedCertificate.profileName(issuedCertificate);\n if (issuedTo === profileName) {\n return profileName;\n } else {\n return \"\" + profileName + \"\";\n }\n}\n\nfunction VerifyCertificate__Root(Props) {\n var issuedCertificate = Props.issuedCertificate;\n var verifyImageUrl = Props.verifyImageUrl;\n var currentUser = Props.currentUser;\n var match = React.useState(function () {\n return /* Screen */0;\n });\n var setViewMode = match[1];\n if (match[0]) {\n return React.createElement(\"div\", {\n className: \"flex flex-col items-start\"\n }, React.createElement(\"div\", {\n className: \"print:hidden pb-4 md:pt-20\"\n }, React.createElement(\"button\", {\n className: \"btn btn-subtle verify-certificate__cancel-button\",\n onClick: (function (param) {\n return Curry._1(setViewMode, (function (param) {\n return /* Screen */0;\n }));\n })\n }, React.createElement(\"i\", {\n className: \"fas fa-undo-alt\"\n }), React.createElement(\"span\", {\n className: \"ms-1\"\n }, t(undefined, undefined, \"cancel\")))), React.createElement(IssuedCertificate__Root.make, {\n issuedCertificate: issuedCertificate,\n verifyImageUrl: verifyImageUrl\n }));\n } else {\n return React.createElement(\"div\", {\n className: \"container mt-16 mx-auto px-3 max-w-5xl py-8\"\n }, React.createElement(\"div\", {\n className: \"border border-gray-300 rounded-lg bg-gray-50 p-3 md:p-6 flex flex-col md:flex-row items-start md:items-center\"\n }, React.createElement(\"div\", {\n className: \"text-center md:w-5/12 pe-0 md:pe-5\"\n }, React.createElement(\"img\", {\n className: \"w-18 md:w-24 mx-auto\",\n src: graduateIcon\n }), React.createElement(\"h3\", {\n className: \"font-semibold mt-1 md:mt-2\"\n }, heading(currentUser, issuedCertificate)), React.createElement(\"div\", {\n className: \"text-sm mt-4\",\n dangerouslySetInnerHTML: DOMPurify.sanitizedHTMLOpt(t([\n [\n \"name\",\n issuedToName(issuedCertificate)\n ],\n [\n \"issue_date\",\n DateFns.formatPreset(IssuedCertificate.issuedAt(issuedCertificate), true, true, undefined, undefined)\n ],\n [\n \"course_name\",\n IssuedCertificate.courseName(issuedCertificate)\n ]\n ], undefined, \"description\"), DOMPurify.makeOptions(undefined, [\"strong\"], undefined))\n }), ReactUtils.nullUnless(React.createElement(\"div\", {\n className: \"mt-4 text-xs\"\n }, React.createElement(\"code\", undefined, t([[\n \"serial\",\n IssuedCertificate.serialNumber(issuedCertificate)\n ]], undefined, \"serial_number\"))), currentUser), React.createElement(\"div\", {\n className: \"mt-4\"\n }, React.createElement(\"button\", {\n className: \"btn btn-primary\",\n onClick: (function (param) {\n return printCertificate(setViewMode, param);\n })\n }, React.createElement(\"i\", {\n className: \"fas fa-print\"\n }), React.createElement(\"span\", {\n className: \"ms-2\"\n }, t(undefined, undefined, \"print_or_save\"))))), React.createElement(\"div\", {\n className: \"md:w-7/12 mt-6 md:mt-0 rounded-lg overflow-hidden border-8 border-white shadow-lg\"\n }, React.createElement(IssuedCertificate__Root.make, {\n issuedCertificate: issuedCertificate,\n verifyImageUrl: verifyImageUrl\n }))), ReactUtils.nullIf(React.createElement(\"div\", {\n className: \"border border-blue-200 rounded-lg shadow-lg bg-blue-100 p-3 md:p-6 mt-6 flex items-center\",\n id: \"name-change-notice\"\n }, React.createElement(\"div\", undefined, React.createElement(\"i\", {\n className: \"fas fa-exclamation-circle text-2xl text-blue-500\"\n })), React.createElement(\"div\", {\n className: \"ms-4 text-sm\",\n dangerouslySetInnerHTML: DOMPurify.sanitizedHTMLOpt(t([[\n \"name\",\n IssuedCertificate.issuedTo(issuedCertificate)\n ]], undefined, \"originally_issued_to\"), DOMPurify.makeOptions(undefined, [\"strong\"], undefined))\n })), IssuedCertificate.profileName(issuedCertificate) === IssuedCertificate.issuedTo(issuedCertificate)));\n }\n}\n\nvar make = VerifyCertificate__Root;\n\nexport {\n graduateIcon ,\n str ,\n t ,\n printCertificate ,\n heading ,\n handleCancelPrint ,\n issuedToName ,\n make ,\n}\n/* graduateIcon Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Psj from \"../shared/utils/Psj.bs.js\";\nimport * as React from \"react\";\nimport * as DomUtils from \"../shared/utils/DomUtils.bs.js\";\nimport * as ReactDom from \"react-dom\";\nimport * as Json_decode from \"../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\nimport * as IssuedCertificate from \"../shared/types/IssuedCertificate.bs.js\";\nimport * as VerifyCertificate__Root from \"../issued_certificates/VerifyCertificate__Root.bs.js\";\n\nfunction decodeProps(json) {\n return [\n Json_decode.field(\"issuedCertificate\", IssuedCertificate.decode, json),\n Json_decode.field(\"verifyImageUrl\", Json_decode.string, json),\n Json_decode.field(\"currentUser\", Json_decode.bool, json)\n ];\n}\n\nPsj.match(undefined, \"issued_certificates#verify\", (function (param) {\n var match = decodeProps(DomUtils.parseJSONTag(undefined, undefined));\n var root = document.querySelector(\"#react-root\");\n if (!(root == null)) {\n ReactDom.render(React.createElement(VerifyCertificate__Root.make, {\n issuedCertificate: match[0],\n verifyImageUrl: match[1],\n currentUser: match[2]\n }), root);\n return ;\n }\n \n }));\n\nexport {\n decodeProps ,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Json_decode from \"../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\n\nfunction id(t) {\n return t.id;\n}\n\nfunction name(t) {\n return t.name;\n}\n\nfunction title(t) {\n return t.title;\n}\n\nfunction affiliation(t) {\n return t.affiliation;\n}\n\nfunction avatarUrl(t) {\n return t.avatarUrl;\n}\n\nfunction about(t) {\n return t.about;\n}\n\nfunction connectLink(t) {\n return t.connectLink;\n}\n\nfunction courseIds(t) {\n return t.courseIds;\n}\n\nfunction decode(json) {\n return {\n id: Json_decode.field(\"id\", Json_decode.string, json),\n name: Json_decode.field(\"name\", Json_decode.string, json),\n title: Json_decode.field(\"title\", Json_decode.string, json),\n affiliation: Json_decode.optional((function (param) {\n return Json_decode.field(\"affiliation\", Json_decode.string, param);\n }), json),\n avatarUrl: Json_decode.optional((function (param) {\n return Json_decode.field(\"avatarUrl\", Json_decode.string, param);\n }), json),\n about: Json_decode.optional((function (param) {\n return Json_decode.field(\"about\", Json_decode.string, param);\n }), json),\n connectLink: Json_decode.optional((function (param) {\n return Json_decode.field(\"connectLink\", Json_decode.string, param);\n }), json),\n courseIds: Json_decode.field(\"courseIds\", (function (param) {\n return Json_decode.array(Json_decode.string, param);\n }), json)\n };\n}\n\nfunction fullTitle(t) {\n var affiliation = t.affiliation;\n if (affiliation !== undefined) {\n return t.title + (\", \" + affiliation);\n } else {\n return t.title;\n }\n}\n\nexport {\n id ,\n name ,\n title ,\n affiliation ,\n avatarUrl ,\n about ,\n connectLink ,\n courseIds ,\n decode ,\n fullTitle ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Json_decode from \"../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\n\nfunction id(t) {\n return t.id;\n}\n\nfunction name(t) {\n return t.name;\n}\n\nfunction decode(json) {\n return {\n id: Json_decode.field(\"id\", Json_decode.string, json),\n name: Json_decode.field(\"name\", Json_decode.string, json)\n };\n}\n\nexport {\n id ,\n name ,\n decode ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../shared/utils/I18n.bs.js\";\nimport * as Link from \"../shared/components/Link.bs.js\";\nimport * as Curry from \"../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as Avatar from \"../shared/Avatar.bs.js\";\nimport * as PfIcon from \"../packages/pf-icon/src/PfIcon.bs.js\";\nimport * as Js_array from \"../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as ArrayUtils from \"../shared/utils/ArrayUtils.bs.js\";\nimport * as Belt_Option from \"../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as StringUtils from \"../shared/utils/StringUtils.bs.js\";\nimport * as Belt_SetString from \"../../../node_modules/rescript/lib/es6/belt_SetString.js\";\nimport * as CoachesIndex__Coach from \"./types/CoachesIndex__Coach.bs.js\";\nimport * as MultiselectDropdown from \"../packages/multiselect-dropdown/src/components/MultiselectDropdown.bs.js\";\nimport * as RescriptReactRouter from \"../../../node_modules/@rescript/react/src/RescriptReactRouter.bs.js\";\nimport * as CoachesIndex__Course from \"./types/CoachesIndex__Course.bs.js\";\n\nimport \"./CoachesIndex__Root.css\"\n;\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.CoachesIndex__Root\";\n\nfunction tr(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nfunction label(t) {\n var tmp;\n tmp = t.TAG === /* Course */0 ? tr(undefined, undefined, \"filter_label_teaches_course\") : tr(undefined, undefined, \"filter_label_name_like\");\n return tmp;\n}\n\nfunction value(t) {\n if (t.TAG === /* Course */0) {\n return CoachesIndex__Course.name(t._0);\n } else {\n return t._0;\n }\n}\n\nfunction searchString(t) {\n if (t.TAG === /* Course */0) {\n return tr([[\n \"name\",\n CoachesIndex__Course.name(t._0)\n ]], undefined, \"filter_search_string_course\");\n } else {\n return t._0;\n }\n}\n\nfunction color(_t) {\n return \"gray\";\n}\n\nfunction makeCourse(course) {\n return {\n TAG: /* Course */0,\n _0: course\n };\n}\n\nfunction makeSearch(input) {\n return {\n TAG: /* Search */1,\n _0: input\n };\n}\n\nvar Selectable = {\n label: label,\n value: value,\n searchString: searchString,\n color: color,\n makeCourse: makeCourse,\n makeSearch: makeSearch\n};\n\nvar Multiselect = MultiselectDropdown.Make(Selectable);\n\nfunction computeInitialState(courses, studentInCourseIds) {\n var filterCourseIds = Js_array.map(CoachesIndex__Course.id, Js_array.filter((function (course) {\n return Js_array.includes(CoachesIndex__Course.id(course), studentInCourseIds);\n }), courses));\n return {\n filterInput: \"\",\n filterSearch: \"\",\n filterCourseIds: Belt_SetString.fromArray(filterCourseIds)\n };\n}\n\nfunction reducer(state, action) {\n switch (action.TAG | 0) {\n case /* SelectFilter */0 :\n var selectable = action._0;\n if (selectable.TAG === /* Course */0) {\n return {\n filterInput: \"\",\n filterSearch: state.filterSearch,\n filterCourseIds: Belt_SetString.add(state.filterCourseIds, CoachesIndex__Course.id(selectable._0))\n };\n } else {\n return {\n filterInput: \"\",\n filterSearch: selectable._0.trim(),\n filterCourseIds: state.filterCourseIds\n };\n }\n case /* DeselectFilter */1 :\n var selectable$1 = action._0;\n if (selectable$1.TAG === /* Course */0) {\n return {\n filterInput: state.filterInput,\n filterSearch: state.filterSearch,\n filterCourseIds: Belt_SetString.remove(state.filterCourseIds, CoachesIndex__Course.id(selectable$1._0))\n };\n } else {\n return {\n filterInput: state.filterInput,\n filterSearch: \"\",\n filterCourseIds: state.filterCourseIds\n };\n }\n case /* UpdateFilterInput */2 :\n return {\n filterInput: action._0,\n filterSearch: state.filterSearch,\n filterCourseIds: state.filterCourseIds\n };\n \n }\n}\n\nfunction unselected(input, filterCourseIds, courses) {\n var unselectedCourses = Js_array.map(makeCourse, Js_array.filter((function (course) {\n return !Belt_SetString.has(filterCourseIds, CoachesIndex__Course.id(course));\n }), courses));\n var trimmedInput = input.trim();\n var search = trimmedInput.length > 0 ? [{\n TAG: /* Search */1,\n _0: trimmedInput\n }] : [];\n return Js_array.concat(search, unselectedCourses);\n}\n\nfunction connectLink(href) {\n return React.createElement(\"a\", {\n className: \"block flex-1 px-3 py-2 text-center text-sm font-semibold hover:bg-gray-50 hover:text-primary-500\",\n href: href,\n target: \"_blank\"\n }, tr(undefined, undefined, \"button_connect\"));\n}\n\nfunction overlay(coach, about) {\n var src = CoachesIndex__Coach.avatarUrl(coach);\n var href = CoachesIndex__Coach.connectLink(coach);\n return React.createElement(\"div\", {\n className: \"fixed z-30 inset-0 overflow-y-auto\"\n }, React.createElement(\"div\", {\n className: \"flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0\"\n }, React.createElement(\"div\", {\n className: \"fixed inset-0\"\n }, React.createElement(\"div\", {\n className: \"absolute inset-0 bg-gray-900 opacity-75\"\n })), React.createElement(\"span\", {\n className: \"hidden sm:inline-block sm:align-middle sm:h-screen\"\n }), React.createElement(\"div\", {\n \"aria-modal\": true,\n \"aria-labelledby\": \"modal-headline\",\n className: \"inline-block relative bg-white rounded-lg shadow-lg align-bottom mt-16 sm:mb-8 sm:align-middle sm:max-w-lg sm:w-full\",\n role: \"dialog\"\n }, React.createElement(\"div\", {\n className: \"block absolute top-0 start-0 -mt-12\"\n }, React.createElement(Link.make, {\n href: \"/coaches\",\n ariaLabel: \"Close\",\n className: \"flex justify-center items-center bg-gray-900 rounded-full p-2 w-10 h-10 text-gray-400 hover:opacity-75 hover:text-gray-500 focus:outline-none focus:text-gray-500 transition ease-in-out duration-150\",\n children: React.createElement(PfIcon.make, {\n className: \"if i-times-regular if-fw text-2xl\"\n })\n })), React.createElement(\"div\", {\n className: \"pb-5\"\n }, React.createElement(\"div\", {\n className: \"faculty-card__avatar-container bg-gray-50 px-2 py-10 rounded-t-lg\"\n }, src !== undefined ? React.createElement(\"img\", {\n className: \"mx-auto w-40 h-40 -mb-18 border-4 border-gray-300 rounded-full object-cover\",\n alt: \"Avatar of \" + CoachesIndex__Coach.name(coach),\n src: src\n }) : React.createElement(Avatar.make, {\n name: CoachesIndex__Coach.name(coach),\n className: \"mx-auto w-40 h-40 -mb-18 border-4 border-gray-300 rounded-full object-cover\"\n })), React.createElement(\"div\", {\n className: \"py-3 mt-8\"\n }, React.createElement(\"p\", {\n className: \"text-sm text-center font-semibold\"\n }, CoachesIndex__Coach.name(coach)), React.createElement(\"p\", {\n className: \"text-center text-xs text-gray-800 pt-1\"\n }, CoachesIndex__Coach.fullTitle(coach))), React.createElement(\"p\", {\n className: \"text-center text-sm px-6\"\n }, about), href !== undefined ? React.createElement(\"div\", {\n className: \"mt-3 text-center px-4 pb-4 sm:px-6 sm:pb-6\"\n }, React.createElement(\"div\", {\n className: \"inline-flex overflow-hidden border rounded border-primary-500 text-primary-500\"\n }, connectLink(href))) : null))));\n}\n\nfunction card(coach) {\n var src = CoachesIndex__Coach.avatarUrl(coach);\n var _about = CoachesIndex__Coach.about(coach);\n var href = CoachesIndex__Coach.connectLink(coach);\n return React.createElement(\"div\", {\n key: CoachesIndex__Coach.id(coach),\n \"aria-label\": \"Coach \" + CoachesIndex__Coach.name(coach),\n className: \"flex flex-col justify-between bg-white rounded-lg shadow-md pt-8\"\n }, React.createElement(\"div\", {\n className: \"px-6\"\n }, src !== undefined ? React.createElement(\"img\", {\n className: \"mx-auto w-40 h-40 border-4 border-gray-50 rounded-full object-cover\",\n alt: \"Coach's Avatar\",\n src: src\n }) : React.createElement(Avatar.make, {\n name: CoachesIndex__Coach.name(coach),\n className: \"mx-auto w-40 h-40 border-4 border-gray-50 rounded-full object-cover\"\n }), React.createElement(\"div\", {\n className: \"py-3\"\n }, React.createElement(\"p\", {\n className: \"text-sm text-center font-semibold\"\n }, CoachesIndex__Coach.name(coach)), React.createElement(\"p\", {\n className: \"text-center text-xs text-gray-800 pt-1\"\n }, CoachesIndex__Coach.fullTitle(coach)))), React.createElement(\"div\", {\n className: \"flex justify-between divide-x border-t divide-gray-400 border-gray-300 rounded-b-lg overflow-hidden\"\n }, _about !== undefined ? React.createElement(\"div\", {\n className: \"block flex-1\"\n }, React.createElement(Link.make, {\n href: \"/coaches/\" + (CoachesIndex__Coach.id(coach) + (\"/\" + StringUtils.parameterize(CoachesIndex__Coach.name(coach)))),\n className: \"block w-full px-3 py-2 text-center text-sm font-semibold hover:bg-gray-50 hover:text-primary-500\",\n children: tr(undefined, undefined, \"button_about\")\n })) : null, href !== undefined ? React.createElement(\"div\", {\n className: \"flex-1\"\n }, connectLink(href)) : null));\n}\n\nfunction applyFilter(coaches, filterSearch, filterCourseIds) {\n var coaches$1 = Belt_SetString.isEmpty(filterCourseIds) ? coaches : Js_array.filter((function (coach) {\n return !Belt_SetString.isEmpty(Belt_SetString.intersect(Belt_SetString.fromArray(CoachesIndex__Coach.courseIds(coach)), filterCourseIds));\n }), coaches);\n if (filterSearch === \"\") {\n return coaches$1;\n } else {\n return Js_array.filter((function (coach) {\n return StringUtils.includes(undefined, filterSearch, CoachesIndex__Coach.name(coach));\n }), coaches$1);\n }\n}\n\nfunction selected(courses, filterSearch, filterCourseIds) {\n var search = filterSearch === \"\" ? [] : [{\n TAG: /* Search */1,\n _0: filterSearch\n }];\n var selectedCourses = Js_array.map(makeCourse, Js_array.filter((function (course) {\n return Belt_SetString.has(filterCourseIds, CoachesIndex__Course.id(course));\n }), courses));\n return Js_array.concat(selectedCourses, search);\n}\n\nfunction CoachesIndex__Root(Props) {\n var subheading = Props.subheading;\n var coaches = Props.coaches;\n var courses = Props.courses;\n var studentInCourseIds = Props.studentInCourseIds;\n var match = React.useReducer(reducer, studentInCourseIds, (function (param) {\n return computeInitialState(courses, param);\n }));\n var send = match[1];\n var state = match[0];\n var url = RescriptReactRouter.useUrl(undefined, undefined);\n var _otherPaths = url.path;\n var selectedCoachOverlay;\n if (_otherPaths && _otherPaths.hd === \"coaches\") {\n var match$1 = _otherPaths.tl;\n selectedCoachOverlay = match$1 ? Belt_Option.mapWithDefault(Belt_Option.flatMap(StringUtils.paramToId(match$1.hd), (function (coachId) {\n return Js_array.find((function (coach) {\n return CoachesIndex__Coach.id(coach) === coachId;\n }), coaches);\n })), null, (function (coach) {\n var about = CoachesIndex__Coach.about(coach);\n if (about !== undefined) {\n return overlay(coach, about);\n } else {\n return null;\n }\n })) : null;\n } else {\n selectedCoachOverlay = null;\n }\n var filteredCoaches = applyFilter(coaches, state.filterSearch, state.filterCourseIds);\n var coachesToShow = ArrayUtils.isEmpty(filteredCoaches) ? coaches : filteredCoaches;\n return React.createElement(\"div\", {\n className: \"md:pt-18\"\n }, selectedCoachOverlay, React.createElement(\"div\", {\n className: \"max-w-5xl mx-auto px-4\"\n }, React.createElement(\"h1\", {\n className: \"text-4xl text-center mt-3\"\n }, tr(undefined, undefined, \"heading\")), subheading !== undefined ? React.createElement(\"p\", {\n className: \"text-center\"\n }, subheading) : null, React.createElement(\"label\", {\n className: \"block text-xs font-semibold uppercase mt-4\",\n htmlFor: \"filter\"\n }, tr(undefined, undefined, \"filter_input_label\")), React.createElement(Multiselect.make, {\n id: \"filter\",\n placeholder: tr(undefined, undefined, \"filter_input_placeholder\"),\n onChange: (function (filterInput) {\n Curry._1(send, {\n TAG: /* UpdateFilterInput */2,\n _0: filterInput\n });\n }),\n value: state.filterInput,\n unselected: unselected(state.filterInput, state.filterCourseIds, courses),\n selected: selected(courses, state.filterSearch, state.filterCourseIds),\n onSelect: (function (selectable) {\n Curry._1(send, {\n TAG: /* SelectFilter */0,\n _0: selectable\n });\n }),\n onDeselect: (function (selectable) {\n Curry._1(send, {\n TAG: /* DeselectFilter */1,\n _0: selectable\n });\n })\n }), ArrayUtils.isEmpty(filteredCoaches) ? React.createElement(\"div\", {\n className: \"text-xs border rounded bg-blue-100 p-2 mt-2\"\n }, tr(undefined, undefined, \"filter_result_empty\")) : null, React.createElement(\"div\", {\n className: \"grid sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-5 pt-6 pb-8\"\n }, Js_array.map(card, coachesToShow))));\n}\n\nvar make = CoachesIndex__Root;\n\nexport {\n str ,\n tr ,\n Selectable ,\n Multiselect ,\n computeInitialState ,\n reducer ,\n unselected ,\n connectLink ,\n overlay ,\n card ,\n applyFilter ,\n selected ,\n make ,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Psj from \"../shared/utils/Psj.bs.js\";\nimport * as React from \"react\";\nimport * as DomUtils from \"../shared/utils/DomUtils.bs.js\";\nimport * as ReactDom from \"react-dom\";\nimport * as Json_decode from \"../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\nimport * as CoachesIndex__Root from \"../faculty/CoachesIndex__Root.bs.js\";\nimport * as CoachesIndex__Coach from \"../faculty/types/CoachesIndex__Coach.bs.js\";\nimport * as CoachesIndex__Course from \"../faculty/types/CoachesIndex__Course.bs.js\";\n\nfunction decodeProps(json) {\n return [\n Json_decode.optional((function (param) {\n return Json_decode.field(\"subheading\", Json_decode.string, param);\n }), json),\n Json_decode.field(\"coaches\", (function (param) {\n return Json_decode.array(CoachesIndex__Coach.decode, param);\n }), json),\n Json_decode.field(\"courses\", (function (param) {\n return Json_decode.array(CoachesIndex__Course.decode, param);\n }), json),\n Json_decode.field(\"studentInCourseIds\", (function (param) {\n return Json_decode.array(Json_decode.string, param);\n }), json)\n ];\n}\n\nPsj.match(undefined, \"faculty#index\", (function (param) {\n var match = decodeProps(DomUtils.parseJSONTag(undefined, undefined));\n var root = document.querySelector(\"#react-root\");\n if (!(root == null)) {\n ReactDom.render(React.createElement(CoachesIndex__Root.make, {\n subheading: match[0],\n coaches: match[1],\n courses: match[2],\n studentInCourseIds: match[3]\n }), root);\n return ;\n }\n \n }));\n\nexport {\n decodeProps ,\n}\n/* Not a pure module */\n","export default \"__VITE_ASSET__C4pKUeYh__\"","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Api from \"../shared/Api.bs.js\";\nimport * as I18n from \"../shared/utils/I18n.bs.js\";\nimport * as Curry from \"../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as FaIcon from \"../shared/components/FaIcon.bs.js\";\nimport * as PfIcon from \"../packages/pf-icon/src/PfIcon.bs.js\";\nimport * as Zxcvbn from \"../shared/Zxcvbn.bs.js\";\nimport * as DomUtils from \"../shared/utils/DomUtils.bs.js\";\nimport * as ArrayUtils from \"../shared/utils/ArrayUtils.bs.js\";\nimport * as Caml_option from \"../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as Json_decode from \"../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\nimport SetNewPasswordIconSvg from \"./images/set-new-password-icon.svg\";\n\nvar resetPasswordIcon = SetNewPasswordIconSvg;\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.UserSessionResetPassword\";\n\nfunction t(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nvar partial_arg$1 = \"shared\";\n\nfunction ts(param, param$1, param$2) {\n return I18n.t(partial_arg$1, param, param$1, param$2);\n}\n\nfunction reducer(state, action) {\n switch (action.TAG | 0) {\n case /* UpdateNewPassword */0 :\n return {\n authenticityToken: state.authenticityToken,\n token: state.token,\n name: state.name,\n email: state.email,\n newPassword: action._0,\n confirmPassword: state.confirmPassword,\n saving: state.saving\n };\n case /* UpdateConfirmPassword */1 :\n return {\n authenticityToken: state.authenticityToken,\n token: state.token,\n name: state.name,\n email: state.email,\n newPassword: state.newPassword,\n confirmPassword: action._0,\n saving: state.saving\n };\n case /* UpdateSaving */2 :\n return {\n authenticityToken: state.authenticityToken,\n token: state.token,\n name: state.name,\n email: state.email,\n newPassword: state.newPassword,\n confirmPassword: state.confirmPassword,\n saving: action._0\n };\n \n }\n}\n\nfunction handleUpdatePasswordCB(response) {\n var path = Json_decode.field(\"path\", (function (param) {\n return Json_decode.nullable(Json_decode.string, param);\n }), response);\n if (path !== null) {\n return DomUtils.redirect(path);\n }\n \n}\n\nfunction validPassword(password) {\n var length = password.length;\n if (length >= 8) {\n return length < 128;\n } else {\n return false;\n }\n}\n\nfunction updatePassword(state, send) {\n var payload = {};\n payload[\"authenticity_token\"] = state.authenticityToken;\n payload[\"token\"] = state.token;\n payload[\"new_password\"] = state.newPassword;\n payload[\"confirm_password\"] = state.confirmPassword;\n Curry._1(send, {\n TAG: /* UpdateSaving */2,\n _0: true\n });\n Api.create(\"/users/update_password\", payload, handleUpdatePasswordCB, (function (param) {\n Curry._1(send, {\n TAG: /* UpdateSaving */2,\n _0: false\n });\n }));\n}\n\nfunction isDisabled(saving, newPassword, confirmPassword) {\n if (!validPassword(newPassword) || newPassword !== confirmPassword) {\n return true;\n } else {\n return saving;\n }\n}\n\nfunction submitButtonText(state) {\n var match = state.saving;\n var match$1 = state.newPassword === \"\";\n var match$2 = !validPassword(state.newPassword);\n var match$3 = state.confirmPassword === \"\";\n var match$4 = state.newPassword !== state.confirmPassword;\n if (match) {\n return t(undefined, undefined, \"updating_password\");\n } else if (match$1) {\n return t(undefined, undefined, \"enter_new_password\");\n } else if (match$2) {\n return t(undefined, undefined, \"password_short\");\n } else if (match$3) {\n return t(undefined, undefined, \"confirm_your_password\");\n } else if (match$4) {\n return t(undefined, undefined, \"passwords_not_match\");\n } else {\n return t(undefined, undefined, \"update_password\");\n }\n}\n\nfunction renderUpdatePassword(state, send, schoolName) {\n var inputClasses = \"appearance-none h-10 mt-1 block w-full text-gray-800 border border-gray-300 rounded py-2 px-4 text-sm bg-gray-50 hover:bg-gray-50 focus:outline-none focus:bg-white focus:border-primary-400\";\n var labelClasses = \"inline-block tracking-wide text-gray-900 text-xs font-semibold\";\n var zxcvbn = Zxcvbn.make([\n state.name,\n state.email,\n schoolName\n ], state.newPassword);\n var tmp;\n if (zxcvbn !== undefined) {\n var zxcvbn$1 = Caml_option.valFromOption(zxcvbn);\n var suggestion = ArrayUtils.getOpt(Zxcvbn.suggestions(zxcvbn$1), 0);\n tmp = React.createElement(\"div\", {\n className: \"h-5 pt-1\"\n }, React.createElement(\"div\", {\n className: \"flex justify-between items-center\"\n }, React.createElement(\"p\", {\n className: \"text-xs text-gray-400 font-inter\"\n }, ts(undefined, undefined, \"password_strength\")), React.createElement(\"div\", {\n className: \"flex items-center gap-1 mt-1\"\n }, React.createElement(\"span\", {\n key: \"0\",\n className: \"text-xs text-gray-400 pe-2 text-right rtl:text-left\"\n }, Zxcvbn.label(zxcvbn$1)), [\n 1,\n 2,\n 3,\n 4\n ].map(function (score) {\n return React.createElement(\"span\", {\n key: String(score),\n className: \"rounded-md h-1 \" + Zxcvbn.colorClass(zxcvbn$1, score) + \" w-5\"\n });\n }))), React.createElement(\"div\", undefined, React.createElement(\"ul\", {\n className: \"text-yellow-900 text-[10px]\"\n }, suggestion !== undefined ? React.createElement(\"li\", undefined, React.createElement(PfIcon.make, {\n className: \"if i-info-light if-fw\"\n }), suggestion) : null)));\n } else {\n tmp = React.createElement(\"div\", {\n className: \"h-5 pt-1\"\n });\n }\n return React.createElement(\"div\", {\n className: \"pt-4 pb-5 md:px-9 items-center max-w-sm mx-auto\"\n }, React.createElement(\"div\", undefined, React.createElement(\"label\", {\n className: labelClasses,\n htmlFor: \"new-password\"\n }, t(undefined, undefined, \"new_password\")), React.createElement(\"input\", {\n className: inputClasses,\n id: \"new-password\",\n maxLength: 128,\n placeholder: t(undefined, undefined, \"new_password_placeholder\"),\n type: \"password\",\n value: state.newPassword,\n onChange: (function ($$event) {\n Curry._1(send, {\n TAG: /* UpdateNewPassword */0,\n _0: $$event.target.value\n });\n })\n })), tmp, React.createElement(\"div\", {\n className: \"mt-4\"\n }, React.createElement(\"label\", {\n className: labelClasses + \" mt-2\",\n htmlFor: \"confirm password\"\n }, t(undefined, undefined, \"confirm_password\")), React.createElement(\"input\", {\n className: inputClasses,\n id: \"confirm password\",\n maxLength: 128,\n placeholder: t(undefined, undefined, \"confirm_password_placeholder\"),\n type: \"password\",\n value: state.confirmPassword,\n onChange: (function ($$event) {\n Curry._1(send, {\n TAG: /* UpdateConfirmPassword */1,\n _0: $$event.target.value\n });\n })\n })), React.createElement(\"button\", {\n className: \"btn btn-success btn-large text-center w-full mt-4\",\n disabled: isDisabled(state.saving, state.newPassword, state.confirmPassword),\n onClick: (function (param) {\n updatePassword(state, send);\n })\n }, React.createElement(FaIcon.make, {\n classes: state.saving ? \"fas fa-spinner fa-spin\" : \"fas fa-lock\"\n }), React.createElement(\"span\", {\n className: \"ms-2\"\n }, submitButtonText(state))));\n}\n\nfunction UserSessionResetPassword(Props) {\n var token = Props.token;\n var authenticityToken = Props.authenticityToken;\n var name = Props.name;\n var email = Props.email;\n var schoolName = Props.schoolName;\n var initialState = {\n authenticityToken: authenticityToken,\n token: token,\n name: name,\n email: email,\n newPassword: \"\",\n confirmPassword: \"\",\n saving: false\n };\n var match = React.useReducer(reducer, initialState);\n return React.createElement(\"div\", {\n className: \"h-full bg-gray-50 py-10 md:py-24\"\n }, React.createElement(\"div\", {\n className: \"container mx-auto max-w-lg px-4 py-6 sm:py-8 bg-white rounded-lg shadow\"\n }, React.createElement(\"img\", {\n className: \"mx-auto h-20 sm:h-32\",\n src: resetPasswordIcon\n }), React.createElement(\"div\", {\n className: \"text-lg sm:text-2xl font-bold text-center mt-4\"\n }, t(undefined, undefined, \"set_new_password\")), renderUpdatePassword(match[0], match[1], schoolName)));\n}\n\nvar make = UserSessionResetPassword;\n\nexport {\n resetPasswordIcon ,\n str ,\n t ,\n ts ,\n reducer ,\n handleUpdatePasswordCB ,\n validPassword ,\n updatePassword ,\n isDisabled ,\n submitButtonText ,\n renderUpdatePassword ,\n make ,\n}\n/* resetPasswordIcon Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Psj from \"../shared/utils/Psj.bs.js\";\nimport * as React from \"react\";\nimport * as DomUtils from \"../shared/utils/DomUtils.bs.js\";\nimport * as ReactDom from \"react-dom\";\nimport * as Json_decode from \"../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\nimport * as UserSessionResetPassword from \"../users/UserSessionResetPassword.bs.js\";\n\nfunction decodeProps(json) {\n return {\n token: Json_decode.field(\"token\", Json_decode.string, json),\n authenticityToken: Json_decode.field(\"authenticityToken\", Json_decode.string, json),\n name: Json_decode.field(\"name\", Json_decode.string, json),\n email: Json_decode.field(\"email\", Json_decode.string, json),\n schoolName: Json_decode.field(\"schoolName\", Json_decode.string, json)\n };\n}\n\nPsj.match(undefined, \"users/sessions#reset_password\", (function (param) {\n var props = decodeProps(DomUtils.parseJSONAttribute(\"user-session-reset-password\", \"data-json-props\", undefined));\n var element = document.querySelector(\"#user-session-reset-password\");\n if (!(element == null)) {\n ReactDom.render(React.createElement(UserSessionResetPassword.make, {\n token: props.token,\n authenticityToken: props.authenticityToken,\n name: props.name,\n email: props.email,\n schoolName: props.schoolName\n }), element);\n return ;\n }\n \n }));\n\nexport {\n decodeProps ,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Js_dict from \"../../../../../node_modules/rescript/lib/es6/js_dict.js\";\nimport * as Caml_obj from \"../../../../../node_modules/rescript/lib/es6/caml_obj.js\";\nimport * as Belt_Option from \"../../../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as Caml_option from \"../../../../../node_modules/rescript/lib/es6/caml_option.js\";\n\nfunction nameOrEmail(t) {\n return t.nameOrEmail;\n}\n\nfunction targetId(t) {\n return t.targetId;\n}\n\nfunction sortCriterion(t) {\n return t.sortCriterion;\n}\n\nfunction sortDirection(t) {\n return t.sortDirection;\n}\n\nfunction tab(t) {\n return t.tab;\n}\n\nfunction includeInactive(t) {\n return t.includeInactive;\n}\n\nfunction assignedCoachId(t) {\n return t.assignedCoachId;\n}\n\nfunction personalCoachId(t) {\n return t.personalCoachId;\n}\n\nfunction reviewingCoachId(t) {\n return t.reviewingCoachId;\n}\n\nfunction defaultDirection(t) {\n var direction = t.sortDirection;\n if (direction !== undefined) {\n return direction;\n }\n var tab = t.tab;\n if (tab === \"Pending\") {\n return \"Ascending\";\n } else {\n return \"Descending\";\n }\n}\n\nfunction makeFromQueryParams(search) {\n var params = new URLSearchParams(search);\n var criterion = params.get(\"sortCriterion\");\n var direction = params.get(\"sortDirection\");\n var t = params.get(\"tab\");\n var t$1 = params.get(\"includeInactive\");\n return {\n nameOrEmail: Caml_option.nullable_to_opt(params.get(\"search\")),\n personalCoachId: Caml_option.nullable_to_opt(params.get(\"personalCoachId\")),\n assignedCoachId: Caml_option.nullable_to_opt(params.get(\"assignedCoachId\")),\n reviewingCoachId: Caml_option.nullable_to_opt(params.get(\"reviewingCoachId\")),\n targetId: Caml_option.nullable_to_opt(params.get(\"targetId\")),\n sortCriterion: !(criterion == null) && criterion === \"EvaluatedAt\" ? \"EvaluatedAt\" : \"SubmittedAt\",\n sortDirection: !(direction == null) ? (\n direction === \"Descending\" ? \"Descending\" : (\n direction === \"Ascending\" ? \"Ascending\" : undefined\n )\n ) : undefined,\n tab: !(t == null) ? (\n t === \"Pending\" ? \"Pending\" : (\n t === \"Reviewed\" ? \"Reviewed\" : undefined\n )\n ) : undefined,\n includeInactive: (t$1 == null) ? false : t$1 === \"true\"\n };\n}\n\nfunction toQueryString(filter) {\n var match = filter.sortCriterion;\n var sortCriterion = match === \"EvaluatedAt\" ? \"EvaluatedAt\" : \"SubmittedAt\";\n var filterDict = Js_dict.fromArray([[\n \"sortCriterion\",\n sortCriterion\n ]]);\n var direction = filter.sortDirection;\n if (direction !== undefined) {\n filterDict[\"sortDirection\"] = direction === \"Descending\" ? \"Descending\" : \"Ascending\";\n }\n Belt_Option.forEach(filter.nameOrEmail, (function (search) {\n filterDict[\"search\"] = search;\n }));\n Belt_Option.forEach(filter.targetId, (function (targetId) {\n filterDict[\"targetId\"] = targetId;\n }));\n Belt_Option.forEach(filter.personalCoachId, (function (coachId) {\n filterDict[\"personalCoachId\"] = coachId;\n }));\n if (Caml_obj.notequal(filter.tab, \"Reviewed\")) {\n Belt_Option.forEach(filter.assignedCoachId, (function (assignedCoachId) {\n filterDict[\"assignedCoachId\"] = assignedCoachId;\n }));\n }\n if (Caml_obj.notequal(filter.tab, \"Pending\")) {\n Belt_Option.forEach(filter.reviewingCoachId, (function (reviewingCoachId) {\n filterDict[\"reviewingCoachId\"] = reviewingCoachId;\n }));\n }\n var tab = filter.tab;\n if (tab !== undefined) {\n if (tab === \"Reviewed\") {\n filterDict[\"tab\"] = \"Reviewed\";\n } else {\n filterDict[\"tab\"] = \"Pending\";\n }\n }\n if (filter.includeInactive) {\n filterDict[\"includeInactive\"] = \"true\";\n }\n return new URLSearchParams(filterDict).toString();\n}\n\nexport {\n nameOrEmail ,\n targetId ,\n sortCriterion ,\n sortDirection ,\n tab ,\n includeInactive ,\n assignedCoachId ,\n personalCoachId ,\n reviewingCoachId ,\n defaultDirection ,\n makeFromQueryParams ,\n toQueryString ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\n\nfunction id(t) {\n return t.id;\n}\n\nfunction title(t) {\n var milestoneNumber = t.milestoneNumber;\n if (milestoneNumber !== undefined) {\n return I18n.t(undefined, undefined, undefined, \"shared.m\") + String(milestoneNumber) + \" - \" + t.title;\n } else {\n return t.title;\n }\n}\n\nfunction milestoneNumber(t) {\n return t.milestoneNumber;\n}\n\nfunction make(id, title, milestoneNumber) {\n return {\n id: id,\n title: title,\n milestoneNumber: milestoneNumber\n };\n}\n\nfunction makeFromJs(target) {\n return {\n id: target.id,\n title: target.title,\n milestoneNumber: target.milestoneNumber\n };\n}\n\nexport {\n id ,\n title ,\n milestoneNumber ,\n make ,\n makeFromJs ,\n}\n/* I18n Not a pure module */\n","export default \"__VITE_ASSET__BIZh4FaE__\"","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as $$String from \"../../../../../node_modules/rescript/lib/es6/string.js\";\nimport * as ArrayUtils from \"../../../shared/utils/ArrayUtils.bs.js\";\nimport * as EvaluationCriterion from \"../../../shared/types/EvaluationCriterion.bs.js\";\n\nfunction make(evaluationCriterionId, value) {\n return {\n evaluationCriterionId: evaluationCriterionId,\n value: value\n };\n}\n\nfunction sort(criteria, grades) {\n return ArrayUtils.copyAndSort((function (g1, g2) {\n var ec1 = ArrayUtils.unsafeFind((function (ec) {\n return EvaluationCriterion.id(ec) === g1.evaluationCriterionId;\n }), \"Unable to find evaluation criterion with ID: \" + (g1.evaluationCriterionId + \" in CoursesReview__Grade\"), criteria);\n var ec2 = ArrayUtils.unsafeFind((function (ec) {\n return EvaluationCriterion.id(ec) === g2.evaluationCriterionId;\n }), \"Unable to find evaluation criterion with ID: \" + (g2.evaluationCriterionId + \" in CoursesReview__Grade\"), criteria);\n return $$String.compare(EvaluationCriterion.name(ec1), EvaluationCriterion.name(ec2));\n }), grades);\n}\n\nfunction evaluationCriterionId(t) {\n return t.evaluationCriterionId;\n}\n\nfunction value(t) {\n return t.value;\n}\n\nfunction asJsType(t) {\n return {\n evaluationCriterionId: t.evaluationCriterionId,\n grade: t.value\n };\n}\n\nexport {\n make ,\n sort ,\n evaluationCriterionId ,\n value ,\n asJsType ,\n}\n/* ArrayUtils Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as DateFns from \"../../../shared/utils/DateFns.bs.js\";\n\nfunction value(t) {\n return t.value;\n}\n\nfunction coachName(t) {\n var name = t.coachName;\n if (name !== undefined) {\n return name;\n } else {\n return \"Deleted Coach\";\n }\n}\n\nfunction createdAt(t) {\n return t.createdAt;\n}\n\nfunction coachAvatarUrl(t) {\n return t.coachAvatarUrl;\n}\n\nfunction coachTitle(t) {\n return t.coachTitle;\n}\n\nfunction createdAtPretty(t) {\n return DateFns.format(t.createdAt, \"MMMM d, yyyy\");\n}\n\nfunction make(coachName, coachAvatarUrl, coachTitle, createdAt, value) {\n return {\n createdAt: createdAt,\n value: value,\n coachName: coachName,\n coachAvatarUrl: coachAvatarUrl,\n coachTitle: coachTitle\n };\n}\n\nexport {\n value ,\n coachName ,\n createdAt ,\n coachAvatarUrl ,\n coachTitle ,\n createdAtPretty ,\n make ,\n}\n/* DateFns Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as DateFns from \"../../../shared/utils/DateFns.bs.js\";\nimport * as Js_array from \"../../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as ArrayUtils from \"../../../shared/utils/ArrayUtils.bs.js\";\nimport * as Belt_Option from \"../../../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as Json_decode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\nimport * as CoursesReview__Grade from \"./CoursesReview__Grade.bs.js\";\nimport * as CoursesReview__Feedback from \"./CoursesReview__Feedback.bs.js\";\nimport * as SubmissionChecklistItem from \"./SubmissionChecklistItem.bs.js\";\n\nfunction id(t) {\n return t.id;\n}\n\nfunction createdAt(t) {\n return t.createdAt;\n}\n\nfunction passedAt(t) {\n return t.passedAt;\n}\n\nfunction evaluatorName(t) {\n return t.evaluatorName;\n}\n\nfunction evaluatedAt(t) {\n return t.evaluatedAt;\n}\n\nfunction grades(t) {\n return t.grades;\n}\n\nfunction feedback(t) {\n return t.feedback;\n}\n\nfunction checklist(t) {\n return t.checklist;\n}\n\nfunction archivedAt(t) {\n return t.archivedAt;\n}\n\nfunction make(id, createdAt, passedAt, evaluatorName, feedback, grades, evaluatedAt, archivedAt, checklist) {\n return {\n id: id,\n createdAt: createdAt,\n passedAt: passedAt,\n evaluatorName: evaluatorName,\n evaluatedAt: evaluatedAt,\n archivedAt: archivedAt,\n feedback: feedback,\n grades: grades,\n checklist: checklist\n };\n}\n\nfunction makeFromJs(s) {\n var partial_arg = SubmissionChecklistItem.makeFiles(s.files);\n return make(s.id, DateFns.decodeISO(s.createdAt), Belt_Option.map(s.passedAt, DateFns.decodeISO), s.evaluatorName, Js_array.map((function (f) {\n return CoursesReview__Feedback.make(f.coachName, f.coachAvatarUrl, f.coachTitle, DateFns.decodeISO(f.createdAt), f.value);\n }), s.feedback), Js_array.map((function (g) {\n return CoursesReview__Grade.make(g.evaluationCriterionId, g.grade);\n }), s.grades), Belt_Option.map(s.evaluatedAt, DateFns.decodeISO), Belt_Option.map(s.archivedAt, DateFns.decodeISO), Json_decode.array((function (param) {\n return SubmissionChecklistItem.decode(partial_arg, param);\n }), s.checklist));\n}\n\nfunction update(passedAt, evaluatorName, feedback, grades, evaluatedAt, checklist, t) {\n return {\n id: t.id,\n createdAt: t.createdAt,\n passedAt: passedAt,\n evaluatorName: evaluatorName,\n evaluatedAt: evaluatedAt,\n archivedAt: t.archivedAt,\n feedback: feedback,\n grades: grades,\n checklist: checklist\n };\n}\n\nfunction feedbackSent(t) {\n return ArrayUtils.isNotEmpty(t.feedback);\n}\n\nfunction updateFeedback(feedback, t) {\n return {\n id: t.id,\n createdAt: t.createdAt,\n passedAt: t.passedAt,\n evaluatorName: t.evaluatorName,\n evaluatedAt: t.evaluatedAt,\n archivedAt: t.archivedAt,\n feedback: feedback,\n grades: t.grades,\n checklist: t.checklist\n };\n}\n\nexport {\n id ,\n createdAt ,\n passedAt ,\n evaluatorName ,\n evaluatedAt ,\n grades ,\n feedback ,\n checklist ,\n archivedAt ,\n make ,\n makeFromJs ,\n update ,\n feedbackSent ,\n updateFeedback ,\n}\n/* DateFns Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as $$Array from \"../../../../../node_modules/rescript/lib/es6/array.js\";\nimport * as DateFns from \"../../../shared/utils/DateFns.bs.js\";\nimport * as Caml_obj from \"../../../../../node_modules/rescript/lib/es6/caml_obj.js\";\nimport * as Belt_Option from \"../../../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as OptionUtils from \"../../../shared/utils/OptionUtils.bs.js\";\nimport * as CoursesReview__OverlaySubmission from \"./CoursesReview__OverlaySubmission.bs.js\";\n\nfunction id(t) {\n return t.id;\n}\n\nfunction title(t) {\n return t.title;\n}\n\nfunction createdAt(t) {\n return t.createdAt;\n}\n\nfunction userNames(t) {\n return t.userNames;\n}\n\nfunction teamName(t) {\n return t.teamName;\n}\n\nfunction reviewer(t) {\n return t.reviewer;\n}\n\nfunction reviewerName(reviewer) {\n return reviewer.name;\n}\n\nfunction reviewerAssignedAt(reviewer) {\n return reviewer.assignedAt;\n}\n\nfunction milestoneNumber(t) {\n return t.milestoneNumber;\n}\n\nfunction failed(t) {\n var status = t.status;\n if (status !== undefined) {\n return OptionUtils.mapWithDefault((function (param) {\n return false;\n }), true, status.passedAt);\n } else {\n return false;\n }\n}\n\nfunction pendingReview(t) {\n return OptionUtils.mapWithDefault((function (param) {\n return false;\n }), true, t.status);\n}\n\nfunction feedbackSent(t) {\n return OptionUtils.mapWithDefault((function (status) {\n return status.feedbackSent;\n }), false, t.status);\n}\n\nfunction createdAtPretty(t) {\n return DateFns.format(t.createdAt, \"MMMM d, yyyy\");\n}\n\nfunction timeDistance(t) {\n return DateFns.formatDistanceToNowStrict(t.createdAt, true, undefined, undefined, undefined);\n}\n\nfunction make(id, title, createdAt, userNames, status, teamName, reviewer, milestoneNumber) {\n return {\n id: id,\n title: title,\n createdAt: createdAt,\n userNames: userNames,\n status: status,\n teamName: teamName,\n reviewer: reviewer,\n milestoneNumber: milestoneNumber\n };\n}\n\nfunction makeStatus(passedAt, feedbackSent) {\n return {\n passedAt: passedAt,\n feedbackSent: feedbackSent\n };\n}\n\nfunction makeReviewerInfo(reviewer) {\n return {\n name: reviewer.name,\n assignedAt: DateFns.decodeISO(reviewer.assignedAt)\n };\n}\n\nfunction makeFromJS(submission) {\n var status = Belt_Option.map(submission.evaluatedAt, (function (param) {\n return {\n passedAt: Belt_Option.map(submission.passedAt, DateFns.decodeISO),\n feedbackSent: submission.feedbackSent\n };\n }));\n return make(submission.id, submission.title, DateFns.decodeISO(submission.createdAt), submission.userNames, status, submission.teamName, Belt_Option.map(submission.reviewer, makeReviewerInfo), submission.milestoneNumber);\n}\n\nfunction replace(e, l) {\n return $$Array.map((function (s) {\n if (s.id === e.id) {\n return e;\n } else {\n return s;\n }\n }), l);\n}\n\nfunction statusEq(overlaySubmission, t) {\n var match = t.status;\n var match$1 = CoursesReview__OverlaySubmission.evaluatedAt(overlaySubmission);\n if (match !== undefined) {\n if (match$1 !== undefined) {\n return Caml_obj.equal(match.passedAt, CoursesReview__OverlaySubmission.passedAt(overlaySubmission));\n } else {\n return false;\n }\n } else {\n return match$1 === undefined;\n }\n}\n\nexport {\n id ,\n title ,\n createdAt ,\n userNames ,\n teamName ,\n reviewer ,\n reviewerName ,\n reviewerAssignedAt ,\n milestoneNumber ,\n failed ,\n pendingReview ,\n feedbackSent ,\n createdAtPretty ,\n timeDistance ,\n make ,\n makeStatus ,\n makeReviewerInfo ,\n makeFromJS ,\n replace ,\n statusEq ,\n}\n/* DateFns Not a pure module */\n","export default \"__VITE_ASSET__b52mWmIQ__\"","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as Link from \"../../../shared/components/Link.bs.js\";\nimport * as React from \"react\";\nimport * as DateFns from \"../../../shared/utils/DateFns.bs.js\";\nimport * as Js_array from \"../../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as ArrayUtils from \"../../../shared/utils/ArrayUtils.bs.js\";\nimport * as ReactUtils from \"../../../shared/utils/ReactUtils.bs.js\";\nimport * as Belt_Option from \"../../../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport PendingEmptySvg from \"../images/pending-empty.svg\";\nimport * as CoursesReview__IndexSubmission from \"../types/CoursesReview__IndexSubmission.bs.js\";\nimport ReviewedEmptySvg from \"../../shared/images/reviewed-empty.svg\";\n\nvar reviewedEmptyImage = ReviewedEmptySvg;\n\nvar pendingEmptyImage = PendingEmptySvg;\n\nvar partial_arg = \"components.CoursesReview__SubmissionCard\";\n\nfunction t(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nvar partial_arg$1 = \"shared\";\n\nfunction ts(param, param$1, param$2) {\n return I18n.t(partial_arg$1, param, param$1, param$2);\n}\n\nfunction str(prim) {\n return prim;\n}\n\nfunction submissionStatus(submission) {\n var classes = \"shrink-0 leading-normal font-semibold px-2 py-px rounded \";\n var match = CoursesReview__IndexSubmission.pendingReview(submission) ? [\n classes + \"bg-orange-100 text-orange-800\",\n CoursesReview__IndexSubmission.timeDistance(submission)\n ] : (\n CoursesReview__IndexSubmission.failed(submission) ? [\n classes + \"bg-red-100 text-red-800\",\n t(undefined, undefined, \"rejected\")\n ] : [\n classes + \"bg-green-100 text-green-800\",\n t(undefined, undefined, \"completed\")\n ]\n );\n return React.createElement(\"div\", {\n className: match[0]\n }, match[1]);\n}\n\nfunction feedbackSentNotice(feedbackSent) {\n return ReactUtils.nullUnless(React.createElement(\"div\", {\n className: \"bg-primary-100 text-primary-600 border border-transparent shrink-0 leading-normal font-semibold px-2 py-px rounded me-3\"\n }, t(undefined, undefined, \"feedback_sent\")), feedbackSent);\n}\n\nfunction submissionCardClasses(submission) {\n return \"flex flex-col lg:flex-row items-start lg:items-center justify-between bg-white border-s-3 p-3 lg:py-6 lg:px-5 mb-4 cursor-pointer rounded-lg shadow hover:border-primary-500 hover:text-primary-500 hover:shadow-md focus:outline-none focus:border-primary-500 focus:ring-2 focus:ring-inset focus:ring-focusColor-500 \" + (\n CoursesReview__IndexSubmission.pendingReview(submission) ? \"border-orange-400\" : (\n CoursesReview__IndexSubmission.failed(submission) ? \"border-red-500\" : \"border-green-500\"\n )\n );\n}\n\nfunction showSubmission(submissions, filterString) {\n return React.createElement(\"div\", {\n id: \"submissions\"\n }, Js_array.map((function (submission) {\n var name = CoursesReview__IndexSubmission.teamName(submission);\n var reviewer = CoursesReview__IndexSubmission.reviewer(submission);\n return React.createElement(Link.make, {\n href: \"/submissions/\" + CoursesReview__IndexSubmission.id(submission) + \"/review?\" + filterString + \"\",\n ariaLabel: \"Submission \" + CoursesReview__IndexSubmission.id(submission) + \", Submitted by: \" + CoursesReview__IndexSubmission.userNames(submission),\n className: submissionCardClasses(submission),\n children: null,\n props: {\n \"data-submission-id\": CoursesReview__IndexSubmission.id(submission)\n },\n key: CoursesReview__IndexSubmission.id(submission)\n }, React.createElement(\"div\", {\n className: \"w-full lg:w-8/12\"\n }, React.createElement(\"div\", {\n className: \"block text-sm lg:pe-4\"\n }, React.createElement(\"span\", {\n className: \"font-semibold text-sm md:text-base\"\n }, Belt_Option.mapWithDefault(CoursesReview__IndexSubmission.milestoneNumber(submission), \"\", (function (number) {\n return ts(undefined, undefined, \"m\") + String(number) + \" - \";\n })) + CoursesReview__IndexSubmission.title(submission))), React.createElement(\"div\", {\n className: \"mt-1 ms-px text-xs text-gray-900\"\n }, name !== undefined ? React.createElement(\"span\", undefined, t(undefined, undefined, \"submitted_by_team\"), React.createElement(\"span\", {\n className: \"font-semibold\"\n }, name)) : React.createElement(\"span\", undefined, t(undefined, undefined, \"submitted_by\"), React.createElement(\"span\", {\n className: \"font-semibold\"\n }, CoursesReview__IndexSubmission.userNames(submission))), React.createElement(\"span\", {\n className: \"ms-1\",\n title: DateFns.formatPreset(CoursesReview__IndexSubmission.createdAt(submission), undefined, true, true, undefined)\n }, t([[\n \"created_at\",\n CoursesReview__IndexSubmission.createdAtPretty(submission)\n ]], undefined, \"created_at\")), reviewer !== undefined ? React.createElement(\"span\", {\n className: \"ms-1\"\n }, t(undefined, undefined, \"assigned_to\"), React.createElement(\"span\", {\n className: \"ms-1 font-semibold\"\n }, CoursesReview__IndexSubmission.reviewerName(reviewer)), React.createElement(\"span\", {\n className: \"text-xs text-gray-800 ms-1\",\n title: DateFns.formatPreset(CoursesReview__IndexSubmission.reviewerAssignedAt(reviewer), undefined, true, true, undefined)\n }, DateFns.formatDistanceToNow(CoursesReview__IndexSubmission.reviewerAssignedAt(reviewer), undefined, true, undefined), \".\")) : null)), React.createElement(\"div\", {\n className: \"w-auto lg:w-4/12 text-xs flex justify-end mt-2 lg:mt-0\"\n }, feedbackSentNotice(CoursesReview__IndexSubmission.feedbackSent(submission)), submissionStatus(submission)));\n }), submissions));\n}\n\nfunction CoursesReview__SubmissionCard(Props) {\n var submissions = Props.submissions;\n var selectedTab = Props.selectedTab;\n var filterString = Props.filterString;\n var imageSrc = Belt_Option.mapWithDefault(selectedTab, pendingEmptyImage, (function (t) {\n if (t === \"Reviewed\") {\n return reviewedEmptyImage;\n } else {\n return pendingEmptyImage;\n }\n }));\n if (ArrayUtils.isEmpty(submissions)) {\n return React.createElement(\"div\", {\n className: \"course-review__submissions-empty text-lg font-semibold text-center py-4\"\n }, React.createElement(\"h5\", {\n className: \"py-4 mt-4 bg-gray-50 text-gray-800 font-semibold\"\n }, t(undefined, undefined, \"no_submissions_found\")), React.createElement(\"img\", {\n className: \"w-3/4 md:w-1/2 mx-auto mt-2\",\n src: imageSrc\n }));\n } else {\n return showSubmission(submissions, filterString);\n }\n}\n\nvar make = CoursesReview__SubmissionCard;\n\nexport {\n reviewedEmptyImage ,\n pendingEmptyImage ,\n t ,\n ts ,\n str ,\n submissionStatus ,\n feedbackSentNotice ,\n submissionCardClasses ,\n showSubmission ,\n make ,\n}\n/* reviewedEmptyImage Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../shared/utils/I18n.bs.js\";\nimport * as Link from \"../../shared/components/Link.bs.js\";\nimport * as Curry from \"../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as Sorter from \"../../shared/components/Sorter.bs.js\";\nimport * as $$String from \"../../../../node_modules/rescript/lib/es6/string.js\";\nimport * as Js_array from \"../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as LoadingV2 from \"../../shared/types/LoadingV2.bs.js\";\nimport * as UserProxy from \"../../shared/types/UserProxy.bs.js\";\nimport * as ArrayUtils from \"../../shared/utils/ArrayUtils.bs.js\";\nimport * as Caml_array from \"../../../../node_modules/rescript/lib/es6/caml_array.js\";\nimport * as Js_promise from \"../../../../node_modules/rescript/lib/es6/js_promise.js\";\nimport * as Pagination from \"../../shared/utils/Pagination.bs.js\";\nimport * as ReactUtils from \"../../shared/utils/ReactUtils.bs.js\";\nimport * as Belt_Option from \"../../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as Caml_option from \"../../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as OptionUtils from \"../../shared/utils/OptionUtils.bs.js\";\nimport * as StringUtils from \"../../shared/utils/StringUtils.bs.js\";\nimport * as GraphqlQuery from \"../../shared/utils/GraphqlQuery.bs.js\";\nimport * as ReactHelmet from \"react-helmet\";\nimport * as LoadingSpinner from \"../../shared/components/LoadingSpinner.bs.js\";\nimport * as SkeletonLoading from \"../../shared/components/SkeletonLoading.bs.js\";\nimport * as AppRouter__Course from \"../../layouts/app_router/types/AppRouter__Course.bs.js\";\nimport * as MultiselectDropdown from \"../../packages/multiselect-dropdown/src/components/MultiselectDropdown.bs.js\";\nimport * as RescriptReactRouter from \"../../../../node_modules/@rescript/react/src/RescriptReactRouter.bs.js\";\nimport * as CoursesReview__Filter from \"./types/CoursesReview__Filter.bs.js\";\nimport * as CoursesReview__TargetInfo from \"./types/CoursesReview__TargetInfo.bs.js\";\nimport * as CoursesReview__SubmissionCard from \"./components/CoursesReview__SubmissionCard.bs.js\";\nimport * as CoursesReview__IndexSubmission from \"./types/CoursesReview__IndexSubmission.bs.js\";\n\nfunction str(prim) {\n return prim;\n}\n\nimport \"./CoursesReview__Root.css\"\n;\n\nvar partial_arg = \"components.CoursesReview__Root\";\n\nfunction tc(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nvar Item = {};\n\nvar PagedSubmission = Pagination.Make(Item);\n\nfunction coachFilterTranslationKey(coachFilter) {\n switch (coachFilter) {\n case /* Assigned */0 :\n return \"assigned_to\";\n case /* Personal */1 :\n return \"personal_coach\";\n case /* ReviewedBy */2 :\n return \"reviewed_by\";\n \n }\n}\n\nfunction reducer(state, action) {\n if (typeof action === \"number\") {\n switch (action) {\n case /* UnsetSearchString */0 :\n return {\n loading: state.loading,\n submissions: state.submissions,\n coaches: state.coaches,\n targets: state.targets,\n filterInput: \"\",\n totalEntriesCount: state.totalEntriesCount,\n filterLoading: state.filterLoading,\n filterLoader: state.filterLoader,\n targetsLoaded: state.targetsLoaded,\n coachesLoaded: state.coachesLoaded\n };\n case /* BeginLoadingMore */1 :\n return {\n loading: /* LoadingMore */0,\n submissions: state.submissions,\n coaches: state.coaches,\n targets: state.targets,\n filterInput: state.filterInput,\n totalEntriesCount: state.totalEntriesCount,\n filterLoading: state.filterLoading,\n filterLoader: state.filterLoader,\n targetsLoaded: state.targetsLoaded,\n coachesLoaded: state.coachesLoaded\n };\n case /* BeginReloading */2 :\n return {\n loading: LoadingV2.setReloading(state.loading),\n submissions: state.submissions,\n coaches: state.coaches,\n targets: state.targets,\n filterInput: state.filterInput,\n totalEntriesCount: state.totalEntriesCount,\n filterLoading: state.filterLoading,\n filterLoader: state.filterLoader,\n targetsLoaded: state.targetsLoaded,\n coachesLoaded: state.coachesLoaded\n };\n case /* SetTargetLoading */3 :\n return {\n loading: state.loading,\n submissions: state.submissions,\n coaches: state.coaches,\n targets: state.targets,\n filterInput: state.filterInput,\n totalEntriesCount: state.totalEntriesCount,\n filterLoading: true,\n filterLoader: state.filterLoader,\n targetsLoaded: /* Loading */1,\n coachesLoaded: state.coachesLoaded\n };\n case /* SetCoachLoading */4 :\n return {\n loading: state.loading,\n submissions: state.submissions,\n coaches: state.coaches,\n targets: state.targets,\n filterInput: state.filterInput,\n totalEntriesCount: state.totalEntriesCount,\n filterLoading: true,\n filterLoader: state.filterLoader,\n targetsLoaded: state.targetsLoaded,\n coachesLoaded: /* Loading */1\n };\n case /* ClearLoader */5 :\n return {\n loading: state.loading,\n submissions: state.submissions,\n coaches: state.coaches,\n targets: state.targets,\n filterInput: state.filterInput,\n totalEntriesCount: state.totalEntriesCount,\n filterLoading: state.filterLoading,\n filterLoader: undefined,\n targetsLoaded: state.targetsLoaded,\n coachesLoaded: state.coachesLoaded\n };\n \n }\n } else {\n switch (action.TAG | 0) {\n case /* UpdateFilterInput */0 :\n return {\n loading: state.loading,\n submissions: state.submissions,\n coaches: state.coaches,\n targets: state.targets,\n filterInput: action._0,\n totalEntriesCount: state.totalEntriesCount,\n filterLoading: state.filterLoading,\n filterLoader: state.filterLoader,\n targetsLoaded: state.targetsLoaded,\n coachesLoaded: state.coachesLoaded\n };\n case /* LoadSubmissions */1 :\n var newTopics = action._2;\n var match = state.loading;\n var updatedTopics = match ? newTopics : Curry._1(PagedSubmission.toArray, state.submissions).concat(newTopics);\n return {\n loading: LoadingV2.setNotLoading(state.loading),\n submissions: Curry._3(PagedSubmission.make, updatedTopics, action._1, action._0),\n coaches: ArrayUtils.isEmpty(state.coaches) ? action._5 : state.coaches,\n targets: ArrayUtils.isEmpty(state.targets) ? Belt_Option.mapWithDefault(action._4, [], (function (t) {\n return [t];\n })) : state.targets,\n filterInput: state.filterInput,\n totalEntriesCount: action._3,\n filterLoading: state.filterLoading,\n filterLoader: state.filterLoader,\n targetsLoaded: state.targetsLoaded,\n coachesLoaded: state.coachesLoaded\n };\n case /* LoadCoaches */2 :\n return {\n loading: state.loading,\n submissions: state.submissions,\n coaches: action._0,\n targets: state.targets,\n filterInput: state.filterInput,\n totalEntriesCount: state.totalEntriesCount,\n filterLoading: false,\n filterLoader: state.filterLoader,\n targetsLoaded: state.targetsLoaded,\n coachesLoaded: /* Loaded */2\n };\n case /* LoadTargets */3 :\n return {\n loading: state.loading,\n submissions: state.submissions,\n coaches: state.coaches,\n targets: action._0,\n filterInput: state.filterInput,\n totalEntriesCount: state.totalEntriesCount,\n filterLoading: false,\n filterLoader: state.filterLoader,\n targetsLoaded: /* Loaded */2,\n coachesLoaded: state.coachesLoaded\n };\n case /* SetLoader */4 :\n var loader = action._0;\n return {\n loading: state.loading,\n submissions: state.submissions,\n coaches: state.coaches,\n targets: state.targets,\n filterInput: loader ? tc(undefined, undefined, \"filter_input.\" + coachFilterTranslationKey(loader._0) + \"\") : tc(undefined, undefined, \"filter_input.target\"),\n totalEntriesCount: state.totalEntriesCount,\n filterLoading: state.filterLoading,\n filterLoader: state.filterLoader,\n targetsLoaded: state.targetsLoaded,\n coachesLoaded: state.coachesLoaded\n };\n \n }\n }\n}\n\nfunction updateParams(filter) {\n RescriptReactRouter.push(\"?\" + CoursesReview__Filter.toQueryString(filter));\n}\n\nvar Raw = {};\n\nvar query = \"query SubmissionsQuery($courseId: ID!, $search: String, $targetId: ID, $status: SubmissionStatus, $sortDirection: SortDirection!, $sortCriterion: SubmissionSortCriterion!, $personalCoachId: ID, $assignedCoachId: ID, $reviewingCoachId: ID, $includeInactive: Boolean, $coachIds: [ID!], $after: String) {\\nsubmissions(courseId: $courseId, search: $search, targetId: $targetId, status: $status, sortDirection: $sortDirection, sortCriterion: $sortCriterion, personalCoachId: $personalCoachId, assignedCoachId: $assignedCoachId, reviewingCoachId: $reviewingCoachId, includeInactive: $includeInactive, first: 20, after: $after) {\\nnodes {\\nid \\ntitle \\nmilestoneNumber \\nuserNames \\nevaluatedAt \\npassedAt \\nfeedbackSent \\ncreatedAt \\nteamName \\nreviewer {\\nname \\nassignedAt \\n}\\n\\n}\\n\\npageInfo {\\nendCursor \\nhasNextPage \\n}\\n\\ntotalCount \\n}\\n\\ncoaches(coachIds: $coachIds, courseId: $courseId) {\\n...UserProxyFragment \\n}\\n\\ntargetInfo(targetId: $targetId, courseId: $courseId) {\\nid \\ntitle \\nmilestoneNumber \\n}\\n\\n}\\n\" + UserProxy.Fragment.query;\n\nfunction parse(value) {\n var value$1 = value.submissions;\n var value$2 = value$1.nodes;\n var value$3 = value$1.pageInfo;\n var value$4 = value$3.endCursor;\n var value$5 = value.coaches;\n var value$6 = value.targetInfo;\n var tmp;\n if (value$6 == null) {\n tmp = undefined;\n } else {\n var value$7 = value$6.milestoneNumber;\n tmp = {\n id: value$6.id,\n title: value$6.title,\n milestoneNumber: !(value$7 == null) ? value$7 : undefined\n };\n }\n return {\n submissions: {\n nodes: Js_array.map((function (value) {\n var value$1 = value.milestoneNumber;\n var value$2 = value.evaluatedAt;\n var value$3 = value.passedAt;\n var value$4 = value.teamName;\n var value$5 = value.reviewer;\n return {\n id: value.id,\n title: value.title,\n milestoneNumber: !(value$1 == null) ? value$1 : undefined,\n userNames: value.userNames,\n evaluatedAt: !(value$2 == null) ? Caml_option.some(value$2) : undefined,\n passedAt: !(value$3 == null) ? Caml_option.some(value$3) : undefined,\n feedbackSent: value.feedbackSent,\n createdAt: value.createdAt,\n teamName: !(value$4 == null) ? value$4 : undefined,\n reviewer: !(value$5 == null) ? ({\n name: value$5.name,\n assignedAt: value$5.assignedAt\n }) : undefined\n };\n }), value$2),\n pageInfo: {\n endCursor: !(value$4 == null) ? value$4 : undefined,\n hasNextPage: value$3.hasNextPage\n },\n totalCount: value$1.totalCount\n },\n coaches: Js_array.map((function (value) {\n return UserProxy.Fragment.verifyArgsAndParse(\"UserProxyFragment\", value);\n }), value$5),\n targetInfo: tmp\n };\n}\n\nfunction serialize(value) {\n var value$1 = value.targetInfo;\n var targetInfo;\n if (value$1 !== undefined) {\n var value$2 = value$1.milestoneNumber;\n var milestoneNumber = value$2 !== undefined ? value$2 : null;\n var value$3 = value$1.title;\n var value$4 = value$1.id;\n targetInfo = {\n id: value$4,\n title: value$3,\n milestoneNumber: milestoneNumber\n };\n } else {\n targetInfo = null;\n }\n var value$5 = value.coaches;\n var coaches = Js_array.map((function (value) {\n return UserProxy.Fragment.serialize(value);\n }), value$5);\n var value$6 = value.submissions;\n var value$7 = value$6.totalCount;\n var value$8 = value$6.pageInfo;\n var value$9 = value$8.hasNextPage;\n var value$10 = value$8.endCursor;\n var endCursor = value$10 !== undefined ? value$10 : null;\n var pageInfo = {\n endCursor: endCursor,\n hasNextPage: value$9\n };\n var value$11 = value$6.nodes;\n var nodes = Js_array.map((function (value) {\n var value$1 = value.reviewer;\n var reviewer;\n if (value$1 !== undefined) {\n var value$2 = value$1.assignedAt;\n var value$3 = value$1.name;\n reviewer = {\n name: value$3,\n assignedAt: value$2\n };\n } else {\n reviewer = null;\n }\n var value$4 = value.teamName;\n var teamName = value$4 !== undefined ? value$4 : null;\n var value$5 = value.createdAt;\n var value$6 = value.feedbackSent;\n var value$7 = value.passedAt;\n var passedAt = value$7 !== undefined ? Caml_option.valFromOption(value$7) : null;\n var value$8 = value.evaluatedAt;\n var evaluatedAt = value$8 !== undefined ? Caml_option.valFromOption(value$8) : null;\n var value$9 = value.userNames;\n var value$10 = value.milestoneNumber;\n var milestoneNumber = value$10 !== undefined ? value$10 : null;\n var value$11 = value.title;\n var value$12 = value.id;\n return {\n id: value$12,\n title: value$11,\n milestoneNumber: milestoneNumber,\n userNames: value$9,\n evaluatedAt: evaluatedAt,\n passedAt: passedAt,\n feedbackSent: value$6,\n createdAt: value$5,\n teamName: teamName,\n reviewer: reviewer\n };\n }), value$11);\n var submissions = {\n nodes: nodes,\n pageInfo: pageInfo,\n totalCount: value$7\n };\n return {\n submissions: submissions,\n coaches: coaches,\n targetInfo: targetInfo\n };\n}\n\nfunction serializeVariables(inp) {\n var a = inp.search;\n var a$1 = inp.targetId;\n var a$2 = inp.status;\n var a$3 = inp.sortDirection;\n var a$4 = inp.sortCriterion;\n var a$5 = inp.personalCoachId;\n var a$6 = inp.assignedCoachId;\n var a$7 = inp.reviewingCoachId;\n var a$8 = inp.includeInactive;\n var a$9 = inp.coachIds;\n var a$10 = inp.after;\n return {\n courseId: inp.courseId,\n search: a !== undefined ? a : undefined,\n targetId: a$1 !== undefined ? a$1 : undefined,\n status: a$2 !== undefined ? (\n a$2 === \"Reviewed\" ? \"Reviewed\" : \"Pending\"\n ) : undefined,\n sortDirection: a$3 === \"Descending\" ? \"Descending\" : \"Ascending\",\n sortCriterion: a$4 === \"EvaluatedAt\" ? \"EvaluatedAt\" : \"SubmittedAt\",\n personalCoachId: a$5 !== undefined ? a$5 : undefined,\n assignedCoachId: a$6 !== undefined ? a$6 : undefined,\n reviewingCoachId: a$7 !== undefined ? a$7 : undefined,\n includeInactive: a$8 !== undefined ? a$8 : undefined,\n coachIds: a$9 !== undefined ? Js_array.map((function (b) {\n return b;\n }), a$9) : undefined,\n after: a$10 !== undefined ? a$10 : undefined\n };\n}\n\nfunction makeVariables(courseId, search, targetId, status, sortDirection, sortCriterion, personalCoachId, assignedCoachId, reviewingCoachId, includeInactive, coachIds, after, param) {\n return {\n courseId: courseId,\n search: search,\n targetId: targetId,\n status: status,\n sortDirection: sortDirection,\n sortCriterion: sortCriterion,\n personalCoachId: personalCoachId,\n assignedCoachId: assignedCoachId,\n reviewingCoachId: reviewingCoachId,\n includeInactive: includeInactive,\n coachIds: coachIds,\n after: after\n };\n}\n\nvar SubmissionsQuery_inner = {\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables\n};\n\nvar include = GraphqlQuery.Extender({\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar make = include.make;\n\nvar SubmissionsQuery_Graphql_error = include.Graphql_error;\n\nvar SubmissionsQuery_decodeNotification = include.decodeNotification;\n\nvar SubmissionsQuery_decodeObject = include.decodeObject;\n\nvar SubmissionsQuery_decodeNotifications = include.decodeNotifications;\n\nvar SubmissionsQuery_decodeErrors = include.decodeErrors;\n\nvar SubmissionsQuery_flashNotifications = include.flashNotifications;\n\nvar SubmissionsQuery_sendQuery = include.sendQuery;\n\nvar SubmissionsQuery_query = include.query;\n\nvar SubmissionsQuery_fetch = include.$$fetch;\n\nvar SubmissionsQuery = {\n SubmissionsQuery_inner: SubmissionsQuery_inner,\n Raw: Raw,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables,\n Graphql_error: SubmissionsQuery_Graphql_error,\n decodeNotification: SubmissionsQuery_decodeNotification,\n decodeObject: SubmissionsQuery_decodeObject,\n decodeNotifications: SubmissionsQuery_decodeNotifications,\n decodeErrors: SubmissionsQuery_decodeErrors,\n flashNotifications: SubmissionsQuery_flashNotifications,\n sendQuery: SubmissionsQuery_sendQuery,\n query: SubmissionsQuery_query,\n $$fetch: SubmissionsQuery_fetch,\n make: make\n};\n\nvar Raw$1 = {};\n\nvar query$1 = \"query CoachesQuery($courseId: ID!) {\\ncoaches(courseId: $courseId) {\\n...UserProxyFragment \\n}\\n\\n}\\n\" + UserProxy.Fragment.query;\n\nfunction parse$1(value) {\n var value$1 = value.coaches;\n return {\n coaches: Js_array.map((function (value) {\n return UserProxy.Fragment.verifyArgsAndParse(\"UserProxyFragment\", value);\n }), value$1)\n };\n}\n\nfunction serialize$1(value) {\n var value$1 = value.coaches;\n var coaches = Js_array.map((function (value) {\n return UserProxy.Fragment.serialize(value);\n }), value$1);\n return {\n coaches: coaches\n };\n}\n\nfunction serializeVariables$1(inp) {\n return {\n courseId: inp.courseId\n };\n}\n\nfunction makeVariables$1(courseId, param) {\n return {\n courseId: courseId\n };\n}\n\nvar CoachesQuery_inner = {\n Raw: Raw$1,\n query: query$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n makeVariables: makeVariables$1\n};\n\nvar include$1 = GraphqlQuery.Extender({\n Raw: Raw$1,\n query: query$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar make$1 = include$1.make;\n\nvar CoachesQuery_Graphql_error = include$1.Graphql_error;\n\nvar CoachesQuery_decodeNotification = include$1.decodeNotification;\n\nvar CoachesQuery_decodeObject = include$1.decodeObject;\n\nvar CoachesQuery_decodeNotifications = include$1.decodeNotifications;\n\nvar CoachesQuery_decodeErrors = include$1.decodeErrors;\n\nvar CoachesQuery_flashNotifications = include$1.flashNotifications;\n\nvar CoachesQuery_sendQuery = include$1.sendQuery;\n\nvar CoachesQuery_query = include$1.query;\n\nvar CoachesQuery_fetch = include$1.$$fetch;\n\nvar CoachesQuery = {\n CoachesQuery_inner: CoachesQuery_inner,\n Raw: Raw$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n makeVariables: makeVariables$1,\n Graphql_error: CoachesQuery_Graphql_error,\n decodeNotification: CoachesQuery_decodeNotification,\n decodeObject: CoachesQuery_decodeObject,\n decodeNotifications: CoachesQuery_decodeNotifications,\n decodeErrors: CoachesQuery_decodeErrors,\n flashNotifications: CoachesQuery_flashNotifications,\n sendQuery: CoachesQuery_sendQuery,\n query: CoachesQuery_query,\n $$fetch: CoachesQuery_fetch,\n make: make$1\n};\n\nvar Raw$2 = {};\n\nvar query$2 = \"query ReviewedTargetsInfoQuery($courseId: ID!) {\\nreviewedTargetsInfo(courseId: $courseId) {\\nid \\ntitle \\nmilestoneNumber \\n}\\n\\n}\\n\";\n\nfunction parse$2(value) {\n var value$1 = value.reviewedTargetsInfo;\n return {\n reviewedTargetsInfo: Js_array.map((function (value) {\n var value$1 = value.milestoneNumber;\n return {\n id: value.id,\n title: value.title,\n milestoneNumber: !(value$1 == null) ? value$1 : undefined\n };\n }), value$1)\n };\n}\n\nfunction serialize$2(value) {\n var value$1 = value.reviewedTargetsInfo;\n var reviewedTargetsInfo = Js_array.map((function (value) {\n var value$1 = value.milestoneNumber;\n var milestoneNumber = value$1 !== undefined ? value$1 : null;\n var value$2 = value.title;\n var value$3 = value.id;\n return {\n id: value$3,\n title: value$2,\n milestoneNumber: milestoneNumber\n };\n }), value$1);\n return {\n reviewedTargetsInfo: reviewedTargetsInfo\n };\n}\n\nfunction serializeVariables$2(inp) {\n return {\n courseId: inp.courseId\n };\n}\n\nfunction makeVariables$2(courseId, param) {\n return {\n courseId: courseId\n };\n}\n\nvar ReviewedTargetsInfoQuery_inner = {\n Raw: Raw$2,\n query: query$2,\n parse: parse$2,\n serialize: serialize$2,\n serializeVariables: serializeVariables$2,\n makeVariables: makeVariables$2\n};\n\nvar include$2 = GraphqlQuery.Extender({\n Raw: Raw$2,\n query: query$2,\n parse: parse$2,\n serialize: serialize$2,\n serializeVariables: serializeVariables$2,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar make$2 = include$2.make;\n\nvar ReviewedTargetsInfoQuery_Graphql_error = include$2.Graphql_error;\n\nvar ReviewedTargetsInfoQuery_decodeNotification = include$2.decodeNotification;\n\nvar ReviewedTargetsInfoQuery_decodeObject = include$2.decodeObject;\n\nvar ReviewedTargetsInfoQuery_decodeNotifications = include$2.decodeNotifications;\n\nvar ReviewedTargetsInfoQuery_decodeErrors = include$2.decodeErrors;\n\nvar ReviewedTargetsInfoQuery_flashNotifications = include$2.flashNotifications;\n\nvar ReviewedTargetsInfoQuery_sendQuery = include$2.sendQuery;\n\nvar ReviewedTargetsInfoQuery_query = include$2.query;\n\nvar ReviewedTargetsInfoQuery_fetch = include$2.$$fetch;\n\nvar ReviewedTargetsInfoQuery = {\n ReviewedTargetsInfoQuery_inner: ReviewedTargetsInfoQuery_inner,\n Raw: Raw$2,\n parse: parse$2,\n serialize: serialize$2,\n serializeVariables: serializeVariables$2,\n makeVariables: makeVariables$2,\n Graphql_error: ReviewedTargetsInfoQuery_Graphql_error,\n decodeNotification: ReviewedTargetsInfoQuery_decodeNotification,\n decodeObject: ReviewedTargetsInfoQuery_decodeObject,\n decodeNotifications: ReviewedTargetsInfoQuery_decodeNotifications,\n decodeErrors: ReviewedTargetsInfoQuery_decodeErrors,\n flashNotifications: ReviewedTargetsInfoQuery_flashNotifications,\n sendQuery: ReviewedTargetsInfoQuery_sendQuery,\n query: ReviewedTargetsInfoQuery_query,\n $$fetch: ReviewedTargetsInfoQuery_fetch,\n make: make$2\n};\n\nfunction getSubmissions(send, courseId, cursor, filter) {\n var coachIds = ArrayUtils.flattenV2([\n CoursesReview__Filter.personalCoachId(filter),\n CoursesReview__Filter.assignedCoachId(filter),\n CoursesReview__Filter.reviewingCoachId(filter)\n ].map(function (__x) {\n return Belt_Option.mapWithDefault(__x, [], (function (t) {\n return [t];\n }));\n }));\n var variables = makeVariables(courseId, CoursesReview__Filter.nameOrEmail(filter), CoursesReview__Filter.targetId(filter), CoursesReview__Filter.tab(filter), CoursesReview__Filter.defaultDirection(filter), CoursesReview__Filter.sortCriterion(filter), CoursesReview__Filter.personalCoachId(filter), CoursesReview__Filter.assignedCoachId(filter), CoursesReview__Filter.reviewingCoachId(filter), CoursesReview__Filter.includeInactive(filter), coachIds, cursor, undefined);\n Js_promise.then_((function (response) {\n var target = OptionUtils.map(CoursesReview__TargetInfo.makeFromJs, response.targetInfo);\n var coaches = response.coaches.map(UserProxy.makeFromJs);\n Curry._1(send, {\n TAG: /* LoadSubmissions */1,\n _0: response.submissions.pageInfo.endCursor,\n _1: response.submissions.pageInfo.hasNextPage,\n _2: Js_array.map(CoursesReview__IndexSubmission.makeFromJS, response.submissions.nodes),\n _3: response.submissions.totalCount,\n _4: target,\n _5: coaches\n });\n return Promise.resolve(undefined);\n }), Curry._3(make, undefined, undefined, variables));\n}\n\nfunction getCoaches(send, courseId, state) {\n if (state.coachesLoaded === /* Unloaded */0) {\n Curry._1(send, /* SetCoachLoading */4);\n Js_promise.then_((function (response) {\n Curry._1(send, {\n TAG: /* LoadCoaches */2,\n _0: Js_array.map(UserProxy.makeFromJs, response.coaches)\n });\n return Promise.resolve(undefined);\n }), Curry._3(make$1, undefined, undefined, {\n courseId: courseId\n }));\n return ;\n }\n \n}\n\nfunction getTargets(send, courseId, state) {\n if (state.targetsLoaded === /* Unloaded */0) {\n Curry._1(send, /* SetTargetLoading */3);\n Js_promise.then_((function (response) {\n Curry._1(send, {\n TAG: /* LoadTargets */3,\n _0: Js_array.map(CoursesReview__TargetInfo.makeFromJs, response.reviewedTargetsInfo)\n });\n return Promise.resolve(undefined);\n }), Curry._3(make$2, undefined, undefined, {\n courseId: courseId\n }));\n return ;\n }\n \n}\n\nfunction criterion(t) {\n if (t === \"EvaluatedAt\") {\n return tc(undefined, undefined, \"reviewed_at\");\n } else {\n return tc(undefined, undefined, \"submitted_at\");\n }\n}\n\nfunction criterionType(_t) {\n return \"Number\";\n}\n\nvar Sortable = {\n criterion: criterion,\n criterionType: criterionType\n};\n\nvar SubmissionsSorter = Sorter.Make(Sortable);\n\nfunction submissionsSorter(filter) {\n var c = CoursesReview__Filter.tab(filter);\n var criteria = c !== undefined ? (\n c === \"Reviewed\" ? [\n \"SubmittedAt\",\n \"EvaluatedAt\"\n ] : [\"SubmittedAt\"]\n ) : [\"SubmittedAt\"];\n return React.createElement(\"div\", {\n \"aria-label\": \"Change submissions sorting\",\n className: \"shrink-0 md:ms-2\"\n }, React.createElement(\"label\", {\n className: \"hidden md:block text-tiny font-semibold uppercase pb-1\"\n }, tc(undefined, undefined, \"sort_by\")), React.createElement(SubmissionsSorter.make, {\n criteria: criteria,\n selectedCriterion: filter.sortCriterion,\n direction: CoursesReview__Filter.defaultDirection(filter),\n onDirectionChange: (function (direction) {\n updateParams({\n nameOrEmail: filter.nameOrEmail,\n personalCoachId: filter.personalCoachId,\n assignedCoachId: filter.assignedCoachId,\n reviewingCoachId: filter.reviewingCoachId,\n targetId: filter.targetId,\n sortCriterion: filter.sortCriterion,\n sortDirection: direction,\n tab: filter.tab,\n includeInactive: filter.includeInactive\n });\n }),\n onCriterionChange: (function (sortCriterion) {\n updateParams({\n nameOrEmail: filter.nameOrEmail,\n personalCoachId: filter.personalCoachId,\n assignedCoachId: filter.assignedCoachId,\n reviewingCoachId: filter.reviewingCoachId,\n targetId: filter.targetId,\n sortCriterion: sortCriterion,\n sortDirection: filter.sortDirection,\n tab: filter.tab,\n includeInactive: filter.includeInactive\n });\n })\n }));\n}\n\nfunction label(t) {\n if (typeof t === \"number\") {\n return tc(undefined, undefined, \"include\");\n }\n switch (t.TAG | 0) {\n case /* AssignedToCoach */0 :\n return tc(undefined, undefined, \"assigned_to\");\n case /* PersonalCoach */1 :\n return tc(undefined, undefined, \"personal_coach\");\n case /* ReviewedBy */2 :\n return tc(undefined, undefined, \"reviewed_by\");\n case /* Loader */3 :\n var l = t._0;\n if (l) {\n return tc(undefined, undefined, coachFilterTranslationKey(l._0));\n } else {\n return tc(undefined, undefined, \"target\");\n }\n case /* Target */4 :\n return tc(undefined, undefined, \"target\");\n case /* Status */5 :\n return tc(undefined, undefined, \"status\");\n case /* NameOrEmail */6 :\n return tc(undefined, undefined, \"name_or_email\");\n \n }\n}\n\nfunction value(t) {\n if (typeof t === \"number\") {\n return tc(undefined, undefined, \"inactive_students\");\n }\n switch (t.TAG | 0) {\n case /* Loader */3 :\n var l = t._0;\n if (l) {\n return tc(undefined, undefined, \"coach_filter_by.\" + coachFilterTranslationKey(l._0) + \"\");\n } else {\n return tc(undefined, undefined, \"filter_by_target\");\n }\n case /* Target */4 :\n return CoursesReview__TargetInfo.title(t._0);\n case /* Status */5 :\n if (t._0 === \"Reviewed\") {\n return tc(undefined, undefined, \"reviewed\");\n } else {\n return tc(undefined, undefined, \"pending\");\n }\n case /* NameOrEmail */6 :\n return t._0;\n default:\n var coach = t._0;\n if (UserProxy.id(coach) === t._1) {\n return tc(undefined, undefined, \"me\");\n } else {\n return UserProxy.name(coach);\n }\n }\n}\n\nfunction searchString(t) {\n if (typeof t === \"number\") {\n return \"\" + tc(undefined, undefined, \"include\") + \": \" + tc(undefined, undefined, \"inactive_students\") + \"\";\n }\n switch (t.TAG | 0) {\n case /* AssignedToCoach */0 :\n var coach = t._0;\n return tc(undefined, undefined, \"search.assigned_to\") + \" \" + (\n UserProxy.id(coach) === t._1 ? tc(undefined, undefined, \"me\") : UserProxy.name(coach)\n );\n case /* PersonalCoach */1 :\n var coach$1 = t._0;\n return tc(undefined, undefined, \"search.personal_coach\") + \" \" + (\n UserProxy.id(coach$1) === t._1 ? tc(undefined, undefined, \"me\") : UserProxy.name(coach$1)\n );\n case /* ReviewedBy */2 :\n var coach$2 = t._0;\n return tc(undefined, undefined, \"search.reviewed_by\") + \" \" + (\n UserProxy.id(coach$2) === t._1 ? tc(undefined, undefined, \"me\") : UserProxy.name(coach$2)\n );\n case /* Loader */3 :\n var key = t._0;\n if (key) {\n return tc(undefined, undefined, \"search.\" + coachFilterTranslationKey(key._0) + \"\");\n } else {\n return tc(undefined, undefined, \"search.target\");\n }\n case /* Target */4 :\n return tc(undefined, undefined, \"search.target\") + \" \" + CoursesReview__TargetInfo.title(t._0);\n case /* Status */5 :\n if (t._0 === \"Reviewed\") {\n return tc(undefined, undefined, \"search.status\") + tc(undefined, undefined, \"reviewed\");\n } else {\n return tc(undefined, undefined, \"search.status\") + tc(undefined, undefined, \"pending\");\n }\n case /* NameOrEmail */6 :\n return t._0;\n \n }\n}\n\nfunction color(t) {\n if (typeof t === \"number\") {\n return \"gray\";\n }\n switch (t.TAG | 0) {\n case /* AssignedToCoach */0 :\n return \"purple\";\n case /* PersonalCoach */1 :\n return \"green\";\n case /* ReviewedBy */2 :\n return \"orange\";\n case /* Loader */3 :\n var match = t._0;\n if (!match) {\n return \"red\";\n }\n switch (match._0) {\n case /* Assigned */0 :\n return \"purple\";\n case /* Personal */1 :\n return \"green\";\n case /* ReviewedBy */2 :\n return \"orange\";\n \n }\n case /* Target */4 :\n return \"red\";\n case /* Status */5 :\n if (t._0 === \"Reviewed\") {\n return \"green\";\n } else {\n return \"yellow\";\n }\n case /* NameOrEmail */6 :\n return \"gray\";\n \n }\n}\n\nfunction assignedToCoach(coach, currentCoachId) {\n return {\n TAG: /* AssignedToCoach */0,\n _0: coach,\n _1: currentCoachId\n };\n}\n\nfunction personalCoach(coach, currentCoachId) {\n return {\n TAG: /* PersonalCoach */1,\n _0: coach,\n _1: currentCoachId\n };\n}\n\nfunction reviewedBy(coach, currentCoachId) {\n return {\n TAG: /* ReviewedBy */2,\n _0: coach,\n _1: currentCoachId\n };\n}\n\nfunction makeLoader(l) {\n return {\n TAG: /* Loader */3,\n _0: l\n };\n}\n\nfunction makecoachLoader(key) {\n return {\n TAG: /* Loader */3,\n _0: /* ShowCoaches */{\n _0: key\n }\n };\n}\n\nfunction target(target$1) {\n return {\n TAG: /* Target */4,\n _0: target$1\n };\n}\n\nfunction status(status$1) {\n return {\n TAG: /* Status */5,\n _0: status$1\n };\n}\n\nfunction nameOrEmail(search) {\n return {\n TAG: /* NameOrEmail */6,\n _0: search\n };\n}\n\nfunction includeInactive(param) {\n return /* IncludeInactive */0;\n}\n\nvar Selectable = {\n label: label,\n value: value,\n searchString: searchString,\n color: color,\n assignedToCoach: assignedToCoach,\n personalCoach: personalCoach,\n reviewedBy: reviewedBy,\n makeLoader: makeLoader,\n makecoachLoader: makecoachLoader,\n target: target,\n status: status,\n nameOrEmail: nameOrEmail,\n includeInactive: includeInactive\n};\n\nvar Multiselect = MultiselectDropdown.Make(Selectable);\n\nfunction unSelectedStatus(filter) {\n var s = CoursesReview__Filter.tab(filter);\n if (s !== undefined) {\n if (s === \"Reviewed\") {\n return [{\n TAG: /* Status */5,\n _0: \"Pending\"\n }];\n } else {\n return [{\n TAG: /* Status */5,\n _0: \"Reviewed\"\n }];\n }\n } else {\n return [\n {\n TAG: /* Status */5,\n _0: \"Pending\"\n },\n {\n TAG: /* Status */5,\n _0: \"Reviewed\"\n }\n ];\n }\n}\n\nfunction nameOrEmailFilter(state) {\n var input = $$String.trim(state.filterInput);\n var firstWord = Caml_array.get(input.split(\" \"), 0);\n if (input === \"\" || firstWord === tc(undefined, undefined, \"search.target\") || firstWord === tc(undefined, undefined, \"search.assigned_to\")) {\n return [];\n } else {\n return [{\n TAG: /* NameOrEmail */6,\n _0: input\n }];\n }\n}\n\nfunction unselected(state, currentCoachId, filter) {\n var unselectedTargets = state.targets.filter(function (target) {\n return OptionUtils.mapWithDefault((function (selectedTarget) {\n return CoursesReview__TargetInfo.id(target) !== selectedTarget;\n }), true, CoursesReview__Filter.targetId(filter));\n }).map(target);\n var unselectedCoaches = function (getCoachId, getSelectable) {\n return state.coaches.filter(function (coach) {\n return Belt_Option.mapWithDefault(Curry._1(getCoachId, filter), true, (function (selectedCoach) {\n return UserProxy.id(coach) !== selectedCoach;\n }));\n }).map(function (coach) {\n return Curry._2(getSelectable, coach, currentCoachId);\n });\n };\n var unselectedAssignedCoaches = unselectedCoaches((function (filter) {\n return filter.assignedCoachId;\n }), assignedToCoach);\n var unselectedPersonalCoaches = unselectedCoaches((function (filter) {\n return filter.personalCoachId;\n }), personalCoach);\n var unselectedReviewers = unselectedCoaches((function (filter) {\n return filter.reviewingCoachId;\n }), reviewedBy);\n return ArrayUtils.flattenV2([\n unSelectedStatus(filter),\n unselectedAssignedCoaches,\n unselectedPersonalCoaches,\n unselectedReviewers,\n unselectedTargets,\n state.coachesLoaded === /* Loaded */2 ? [] : [\n {\n TAG: /* Loader */3,\n _0: /* ShowCoaches */{\n _0: /* Assigned */0\n }\n },\n {\n TAG: /* Loader */3,\n _0: /* ShowCoaches */{\n _0: /* Personal */1\n }\n },\n {\n TAG: /* Loader */3,\n _0: /* ShowCoaches */{\n _0: /* ReviewedBy */2\n }\n }\n ],\n state.targetsLoaded === /* Loaded */2 ? [] : [{\n TAG: /* Loader */3,\n _0: /* ShowTargets */0\n }],\n nameOrEmailFilter(state),\n CoursesReview__Filter.includeInactive(filter) ? [] : [/* IncludeInactive */0]\n ]);\n}\n\nfunction selected(state, filter, currentCoachId) {\n var selectedTarget = Belt_Option.mapWithDefault(CoursesReview__Filter.targetId(filter), [], (function (targetId) {\n return Belt_Option.mapWithDefault(Js_array.find((function (t) {\n return CoursesReview__TargetInfo.id(t) === targetId;\n }), state.targets), [], (function (t) {\n return [{\n TAG: /* Target */4,\n _0: t\n }];\n }));\n }));\n var selectedCoaches = function (getCoachId, getSelectable) {\n return Belt_Option.mapWithDefault(Curry._1(getCoachId, filter), [], (function (coachId) {\n return Belt_Option.mapWithDefault(Js_array.find((function (c) {\n return UserProxy.id(c) === coachId;\n }), state.coaches), [], (function (c) {\n return [Curry._2(getSelectable, c, currentCoachId)];\n }));\n }));\n };\n var selectedAssiginedCoach = selectedCoaches((function (filter) {\n return filter.assignedCoachId;\n }), assignedToCoach);\n var selectedPersonalCoach = selectedCoaches((function (filter) {\n return filter.personalCoachId;\n }), personalCoach);\n var selectedReviewer = selectedCoaches((function (filter) {\n return filter.reviewingCoachId;\n }), reviewedBy);\n var selectedStatus = OptionUtils.mapWithDefault((function (t) {\n return [{\n TAG: /* Status */5,\n _0: t\n }];\n }), [], filter.tab);\n var selectedSearchString = OptionUtils.mapWithDefault((function (nameOrEmail) {\n return [{\n TAG: /* NameOrEmail */6,\n _0: nameOrEmail\n }];\n }), [], filter.nameOrEmail);\n return ArrayUtils.flattenV2([\n selectedStatus,\n selectedAssiginedCoach,\n selectedPersonalCoach,\n selectedReviewer,\n selectedTarget,\n selectedSearchString,\n CoursesReview__Filter.includeInactive(filter) ? [/* IncludeInactive */0] : []\n ]);\n}\n\nfunction onSelectFilter(send, courseId, state, filter, selectable) {\n if (typeof selectable === \"number\" || selectable.TAG !== /* Loader */3) {\n Curry._1(send, /* UnsetSearchString */0);\n }\n if (typeof selectable === \"number\") {\n return updateParams({\n nameOrEmail: filter.nameOrEmail,\n personalCoachId: filter.personalCoachId,\n assignedCoachId: filter.assignedCoachId,\n reviewingCoachId: filter.reviewingCoachId,\n targetId: filter.targetId,\n sortCriterion: filter.sortCriterion,\n sortDirection: filter.sortDirection,\n tab: filter.tab,\n includeInactive: true\n });\n }\n switch (selectable.TAG | 0) {\n case /* AssignedToCoach */0 :\n var otherTab = CoursesReview__Filter.tab(filter);\n var tab = otherTab === \"Reviewed\" ? \"Pending\" : otherTab;\n return updateParams({\n nameOrEmail: filter.nameOrEmail,\n personalCoachId: filter.personalCoachId,\n assignedCoachId: UserProxy.id(selectable._0),\n reviewingCoachId: undefined,\n targetId: filter.targetId,\n sortCriterion: filter.sortCriterion,\n sortDirection: filter.sortDirection,\n tab: tab,\n includeInactive: filter.includeInactive\n });\n case /* PersonalCoach */1 :\n return updateParams({\n nameOrEmail: filter.nameOrEmail,\n personalCoachId: UserProxy.id(selectable._0),\n assignedCoachId: filter.assignedCoachId,\n reviewingCoachId: filter.reviewingCoachId,\n targetId: filter.targetId,\n sortCriterion: filter.sortCriterion,\n sortDirection: filter.sortDirection,\n tab: filter.tab,\n includeInactive: filter.includeInactive\n });\n case /* ReviewedBy */2 :\n return updateParams({\n nameOrEmail: filter.nameOrEmail,\n personalCoachId: filter.personalCoachId,\n assignedCoachId: undefined,\n reviewingCoachId: UserProxy.id(selectable._0),\n targetId: filter.targetId,\n sortCriterion: filter.sortCriterion,\n sortDirection: filter.sortDirection,\n tab: \"Reviewed\",\n includeInactive: filter.includeInactive\n });\n case /* Loader */3 :\n var l = selectable._0;\n Curry._1(send, {\n TAG: /* SetLoader */4,\n _0: l\n });\n if (l) {\n return getCoaches(send, courseId, state);\n } else {\n return getTargets(send, courseId, state);\n }\n case /* Target */4 :\n return updateParams({\n nameOrEmail: filter.nameOrEmail,\n personalCoachId: filter.personalCoachId,\n assignedCoachId: filter.assignedCoachId,\n reviewingCoachId: filter.reviewingCoachId,\n targetId: CoursesReview__TargetInfo.id(selectable._0),\n sortCriterion: filter.sortCriterion,\n sortDirection: filter.sortDirection,\n tab: filter.tab,\n includeInactive: filter.includeInactive\n });\n case /* Status */5 :\n if (selectable._0 === \"Reviewed\") {\n return updateParams({\n nameOrEmail: filter.nameOrEmail,\n personalCoachId: filter.personalCoachId,\n assignedCoachId: undefined,\n reviewingCoachId: filter.reviewingCoachId,\n targetId: filter.targetId,\n sortCriterion: \"EvaluatedAt\",\n sortDirection: filter.sortDirection,\n tab: \"Reviewed\",\n includeInactive: filter.includeInactive\n });\n } else {\n return updateParams({\n nameOrEmail: filter.nameOrEmail,\n personalCoachId: filter.personalCoachId,\n assignedCoachId: filter.assignedCoachId,\n reviewingCoachId: undefined,\n targetId: filter.targetId,\n sortCriterion: \"SubmittedAt\",\n sortDirection: filter.sortDirection,\n tab: \"Pending\",\n includeInactive: filter.includeInactive\n });\n }\n case /* NameOrEmail */6 :\n return updateParams({\n nameOrEmail: selectable._0,\n personalCoachId: filter.personalCoachId,\n assignedCoachId: filter.assignedCoachId,\n reviewingCoachId: filter.reviewingCoachId,\n targetId: filter.targetId,\n sortCriterion: filter.sortCriterion,\n sortDirection: filter.sortDirection,\n tab: filter.tab,\n includeInactive: filter.includeInactive\n });\n \n }\n}\n\nfunction onDeselectFilter(send, filter, selectable) {\n if (typeof selectable === \"number\") {\n return updateParams({\n nameOrEmail: filter.nameOrEmail,\n personalCoachId: filter.personalCoachId,\n assignedCoachId: filter.assignedCoachId,\n reviewingCoachId: filter.reviewingCoachId,\n targetId: filter.targetId,\n sortCriterion: filter.sortCriterion,\n sortDirection: filter.sortDirection,\n tab: filter.tab,\n includeInactive: false\n });\n }\n switch (selectable.TAG | 0) {\n case /* AssignedToCoach */0 :\n return updateParams({\n nameOrEmail: filter.nameOrEmail,\n personalCoachId: filter.personalCoachId,\n assignedCoachId: undefined,\n reviewingCoachId: filter.reviewingCoachId,\n targetId: filter.targetId,\n sortCriterion: filter.sortCriterion,\n sortDirection: filter.sortDirection,\n tab: filter.tab,\n includeInactive: filter.includeInactive\n });\n case /* PersonalCoach */1 :\n return updateParams({\n nameOrEmail: filter.nameOrEmail,\n personalCoachId: undefined,\n assignedCoachId: filter.assignedCoachId,\n reviewingCoachId: filter.reviewingCoachId,\n targetId: filter.targetId,\n sortCriterion: filter.sortCriterion,\n sortDirection: filter.sortDirection,\n tab: filter.tab,\n includeInactive: filter.includeInactive\n });\n case /* ReviewedBy */2 :\n return updateParams({\n nameOrEmail: filter.nameOrEmail,\n personalCoachId: filter.personalCoachId,\n assignedCoachId: filter.assignedCoachId,\n reviewingCoachId: undefined,\n targetId: filter.targetId,\n sortCriterion: filter.sortCriterion,\n sortDirection: filter.sortDirection,\n tab: filter.tab,\n includeInactive: filter.includeInactive\n });\n case /* Loader */3 :\n return Curry._1(send, /* ClearLoader */5);\n case /* Target */4 :\n return updateParams({\n nameOrEmail: filter.nameOrEmail,\n personalCoachId: filter.personalCoachId,\n assignedCoachId: filter.assignedCoachId,\n reviewingCoachId: filter.reviewingCoachId,\n targetId: undefined,\n sortCriterion: filter.sortCriterion,\n sortDirection: filter.sortDirection,\n tab: filter.tab,\n includeInactive: filter.includeInactive\n });\n case /* Status */5 :\n return updateParams({\n nameOrEmail: filter.nameOrEmail,\n personalCoachId: filter.personalCoachId,\n assignedCoachId: filter.assignedCoachId,\n reviewingCoachId: filter.reviewingCoachId,\n targetId: filter.targetId,\n sortCriterion: \"SubmittedAt\",\n sortDirection: filter.sortDirection,\n tab: undefined,\n includeInactive: filter.includeInactive\n });\n case /* NameOrEmail */6 :\n return updateParams({\n nameOrEmail: undefined,\n personalCoachId: filter.personalCoachId,\n assignedCoachId: filter.assignedCoachId,\n reviewingCoachId: filter.reviewingCoachId,\n targetId: filter.targetId,\n sortCriterion: filter.sortCriterion,\n sortDirection: filter.sortDirection,\n tab: filter.tab,\n includeInactive: filter.includeInactive\n });\n \n }\n}\n\nfunction defaultOptions(state, filter) {\n return ArrayUtils.flattenV2([\n nameOrEmailFilter(state),\n [\n {\n TAG: /* Loader */3,\n _0: /* ShowCoaches */{\n _0: /* Assigned */0\n }\n },\n {\n TAG: /* Loader */3,\n _0: /* ShowCoaches */{\n _0: /* Personal */1\n }\n },\n {\n TAG: /* Loader */3,\n _0: /* ShowCoaches */{\n _0: /* ReviewedBy */2\n }\n },\n {\n TAG: /* Loader */3,\n _0: /* ShowTargets */0\n },\n /* IncludeInactive */0\n ],\n unSelectedStatus(filter)\n ]);\n}\n\nfunction reloadSubmissions(courseId, filter, send) {\n Curry._1(send, /* BeginReloading */2);\n getSubmissions(send, courseId, undefined, filter);\n}\n\nfunction submissionsLoadedData(totalSubmissionsCount, loadedSubmissionsCount) {\n return React.createElement(\"p\", {\n className: \"inline-block mt-2 mx-auto text-gray-800 text-xs px-2 text-center font-semibold\",\n tabIndex: 0\n }, totalSubmissionsCount === loadedSubmissionsCount ? tc(undefined, loadedSubmissionsCount, \"submissions_fully_loaded_text\") : tc([\n [\n \"total_submissions\",\n String(totalSubmissionsCount)\n ],\n [\n \"loaded_submissions_count\",\n String(loadedSubmissionsCount)\n ]\n ], loadedSubmissionsCount, \"submissions_partially_loaded_text\"));\n}\n\nfunction submissionsList(submissions, state, filter) {\n return React.createElement(\"div\", undefined, React.createElement(CoursesReview__SubmissionCard.make, {\n submissions: submissions,\n selectedTab: CoursesReview__Filter.tab(filter),\n filterString: CoursesReview__Filter.toQueryString(filter)\n }), ReactUtils.nullIf(React.createElement(\"div\", {\n className: \"text-center pb-4\"\n }, submissionsLoadedData(state.totalEntriesCount, submissions.length)), ArrayUtils.isEmpty(submissions)));\n}\n\nfunction filterPlaceholder(filter) {\n CoursesReview__Filter.assignedCoachId(filter);\n return tc(undefined, undefined, \"filter_by_submissions_assigned\");\n}\n\nfunction loadFilters(send, courseId, state) {\n if (!StringUtils.isPresent(state.filterInput)) {\n return ;\n }\n var input = $$String.lowercase_ascii(state.filterInput);\n if (StringUtils.test(tc(undefined, undefined, \"search.assigned_to\"), input) || StringUtils.test(tc(undefined, undefined, \"search.personal_coach\"), input) || StringUtils.test(tc(undefined, undefined, \"search.reviewed_by\"), input)) {\n getCoaches(send, courseId, state);\n }\n if (StringUtils.test(tc(undefined, undefined, \"search.target\"), input)) {\n return getTargets(send, courseId, state);\n }\n \n}\n\nfunction shortCutClasses(selected) {\n return \"cursor-pointer flex justify-center md:flex-auto rounded-md p-1.5 md:border-b-3 md:rounded-b-none md:border-transparent md:px-4 md:hover:bg-gray-50 md:py-2 text-sm font-semibold text-gray-800 hover:text-primary-600 hover:bg-gray-50 focus:outline-none focus:ring-inset focus:ring-2 focus:bg-gray-50 focus:ring-focusColor-500 md:focus:border-b-none md:focus:rounded-t-md \" + (\n selected ? \"bg-white shadow md:shadow-none rounded-md md:rounded-none md:bg-transparent md:border-b-3 hover:bg-white md:hover:bg-transparent text-primary-500 md:border-primary-500\" : \"\"\n );\n}\n\nfunction computeInitialState(param) {\n return {\n loading: LoadingV2.empty(undefined),\n submissions: /* Unloaded */0,\n coaches: [],\n targets: [],\n filterInput: \"\",\n totalEntriesCount: 0,\n filterLoading: false,\n filterLoader: undefined,\n targetsLoaded: /* Unloaded */0,\n coachesLoaded: /* Unloaded */0\n };\n}\n\nfunction pageTitle(courses, courseId) {\n var currentCourse = ArrayUtils.unsafeFind((function (course) {\n return AppRouter__Course.id(course) === courseId;\n }), \"Could not find currentCourse with ID \" + courseId + \" in CoursesReview__Root\", courses);\n return \"\" + tc(undefined, undefined, \"review\") + \" | \" + AppRouter__Course.name(currentCourse) + \"\";\n}\n\nfunction CoursesReview__Root(Props) {\n var courseId = Props.courseId;\n var currentCoachId = Props.currentCoachId;\n var courses = Props.courses;\n var match = React.useReducer(reducer, computeInitialState(undefined));\n var send = match[1];\n var state = match[0];\n var url = RescriptReactRouter.useUrl(undefined, undefined);\n var filter = CoursesReview__Filter.makeFromQueryParams(url.search);\n React.useEffect((function () {\n reloadSubmissions(courseId, filter, send);\n }), [url]);\n React.useEffect((function () {\n loadFilters(send, courseId, state);\n }), [state.filterInput]);\n var submissions = state.submissions;\n var tmp;\n if (typeof submissions === \"number\") {\n tmp = React.createElement(\"div\", undefined, SkeletonLoading.multiple(6, SkeletonLoading.card(undefined, undefined)));\n } else if (submissions.TAG === /* PartiallyLoaded */0) {\n var cursor = submissions._1;\n var times = state.loading;\n tmp = React.createElement(\"div\", undefined, submissionsList(submissions._0, state, filter), times ? ReactUtils.nullUnless(React.createElement(\"div\", {\n className: \"pb-6\"\n }, React.createElement(\"button\", {\n className: \"btn btn-primary-ghost cursor-pointer w-full\",\n onClick: (function (param) {\n Curry._1(send, /* BeginLoadingMore */1);\n getSubmissions(send, courseId, cursor, filter);\n })\n }, tc(undefined, undefined, \"button_load_more\"))), ArrayUtils.isEmpty(times._0)) : React.createElement(\"div\", undefined, SkeletonLoading.multiple(1, SkeletonLoading.card(undefined, undefined))));\n } else {\n tmp = React.createElement(\"div\", undefined, submissionsList(submissions._0, state, filter));\n }\n var match$1 = state.submissions;\n var tmp$1;\n if (typeof match$1 === \"number\") {\n tmp$1 = null;\n } else {\n var times$1 = state.loading;\n var loading = times$1 ? ArrayUtils.isNotEmpty(times$1._0) : false;\n tmp$1 = React.createElement(LoadingSpinner.make, {\n loading: loading\n });\n }\n return React.createElement(React.Fragment, undefined, React.createElement(ReactHelmet.Helmet, {\n children: React.createElement(\"title\", undefined, pageTitle(courses, courseId))\n }), React.createElement(\"div\", {\n \"aria-label\": \"Review\",\n className: \"flex-1 flex flex-col md:pt-18 pb-20 md:pb-4\",\n role: \"main\"\n }, React.createElement(\"div\", {\n className: \"course-review-root__submissions-list-container\"\n }, React.createElement(\"div\", {\n className: \"bg-gray-50\"\n }, React.createElement(\"div\", {\n className: \"max-w-4xl 2xl:max-w-5xl mx-auto\"\n }, React.createElement(\"div\", {\n className: \"flex items-center justify-between bg-white md:bg-transparent px-4 py-2 md:pt-4 border-b md:border-none\"\n }, React.createElement(\"h4\", {\n className: \"font-semibold\"\n }, tc(undefined, undefined, \"review\")), React.createElement(\"div\", {\n className: \"block md:hidden\"\n }, submissionsSorter(filter))), React.createElement(\"div\", {\n className: \"px-4\"\n }, React.createElement(\"div\", {\n className: \"flex pt-3 md:border-b border-gray-300\"\n }, React.createElement(\"div\", {\n \"aria-label\": \"Status tabs\",\n className: \"flex flex-1 md:flex-none p-1 md:p-0 space-x-1 md:space-x-0 text-center rounded-lg justify-between md:justify-start bg-gray-300 md:bg-transparent \",\n role: \"tablist\"\n }, React.createElement(\"div\", {\n \"aria-selected\": filter.tab === undefined,\n className: \"flex-1\",\n role: \"tab\"\n }, React.createElement(Link.make, {\n href: \"/courses/\" + courseId + \"/review?\" + CoursesReview__Filter.toQueryString({\n nameOrEmail: filter.nameOrEmail,\n personalCoachId: filter.personalCoachId,\n assignedCoachId: filter.assignedCoachId,\n reviewingCoachId: filter.reviewingCoachId,\n targetId: filter.targetId,\n sortCriterion: \"SubmittedAt\",\n sortDirection: CoursesReview__Filter.sortDirection(filter),\n tab: undefined,\n includeInactive: filter.includeInactive\n }),\n className: shortCutClasses(filter.tab === undefined),\n children: React.createElement(\"p\", undefined, I18n.ts(undefined, undefined, \"all\"))\n })), React.createElement(\"div\", {\n \"aria-selected\": filter.tab === \"Pending\",\n className: \"flex-1\",\n role: \"tab\"\n }, React.createElement(Link.make, {\n href: \"/courses/\" + courseId + \"/review?\" + CoursesReview__Filter.toQueryString({\n nameOrEmail: filter.nameOrEmail,\n personalCoachId: filter.personalCoachId,\n assignedCoachId: filter.assignedCoachId,\n reviewingCoachId: filter.reviewingCoachId,\n targetId: filter.targetId,\n sortCriterion: \"SubmittedAt\",\n sortDirection: CoursesReview__Filter.sortDirection(filter),\n tab: \"Pending\",\n includeInactive: filter.includeInactive\n }),\n className: shortCutClasses(filter.tab === \"Pending\"),\n children: React.createElement(\"p\", undefined, tc(undefined, undefined, \"pending\"))\n })), React.createElement(\"div\", {\n \"aria-selected\": filter.tab === \"Reviewed\",\n className: \"flex-1\",\n role: \"tab\"\n }, React.createElement(Link.make, {\n href: \"/courses/\" + courseId + \"/review?\" + CoursesReview__Filter.toQueryString({\n nameOrEmail: filter.nameOrEmail,\n personalCoachId: filter.personalCoachId,\n assignedCoachId: filter.assignedCoachId,\n reviewingCoachId: filter.reviewingCoachId,\n targetId: filter.targetId,\n sortCriterion: \"EvaluatedAt\",\n sortDirection: CoursesReview__Filter.sortDirection(filter),\n tab: \"Reviewed\",\n includeInactive: filter.includeInactive\n }),\n className: shortCutClasses(filter.tab === \"Reviewed\"),\n children: React.createElement(\"p\", undefined, tc(undefined, undefined, \"reviewed\"))\n }))))))), React.createElement(\"div\", {\n className: \"md:sticky md:top-0 bg-gray-50\"\n }, React.createElement(\"div\", {\n className: \"max-w-4xl 2xl:max-w-5xl mx-auto\"\n }, React.createElement(\"div\", {\n className: \"md:flex w-full items-start pt-4 pb-3 px-4 md:pt-6\",\n role: \"form\"\n }, React.createElement(\"div\", {\n className: \"flex-1\"\n }, React.createElement(\"label\", {\n className: \"block text-tiny font-semibold uppercase\",\n htmlFor: \"filter\"\n }, tc(undefined, undefined, \"filter_by\")), React.createElement(Multiselect.make, {\n id: \"filter\",\n placeholder: filterPlaceholder(filter),\n onChange: (function (filterInput) {\n Curry._1(send, {\n TAG: /* UpdateFilterInput */0,\n _0: filterInput\n });\n }),\n value: state.filterInput,\n unselected: unselected(state, currentCoachId, filter),\n selected: selected(state, filter, currentCoachId),\n onSelect: (function (param) {\n return onSelectFilter(send, courseId, state, filter, param);\n }),\n onDeselect: (function (param) {\n return onDeselectFilter(send, filter, param);\n }),\n hint: tc(undefined, undefined, \"filter_hint\"),\n defaultOptions: defaultOptions(state, filter),\n loading: state.filterLoading\n })), React.createElement(\"div\", {\n className: \"hidden md:block\"\n }, submissionsSorter(filter))))), React.createElement(\"div\", {\n className: \"max-w-4xl 2xl:max-w-5xl mx-auto px-4\"\n }, React.createElement(\"div\", undefined, tmp), tmp$1))));\n}\n\nvar UserProxyFragment;\n\nvar make$3 = CoursesReview__Root;\n\nexport {\n str ,\n tc ,\n Item ,\n PagedSubmission ,\n coachFilterTranslationKey ,\n reducer ,\n updateParams ,\n UserProxyFragment ,\n SubmissionsQuery ,\n CoachesQuery ,\n ReviewedTargetsInfoQuery ,\n getSubmissions ,\n getCoaches ,\n getTargets ,\n Sortable ,\n SubmissionsSorter ,\n submissionsSorter ,\n Selectable ,\n Multiselect ,\n unSelectedStatus ,\n nameOrEmailFilter ,\n unselected ,\n selected ,\n onSelectFilter ,\n onDeselectFilter ,\n defaultOptions ,\n reloadSubmissions ,\n submissionsLoadedData ,\n submissionsList ,\n filterPlaceholder ,\n loadFilters ,\n shortCutClasses ,\n computeInitialState ,\n pageTitle ,\n make$3 as make,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\n\nfunction id(t) {\n return t.id;\n}\n\nfunction name(t) {\n return t.name;\n}\n\nfunction makeFromJs(jsObject) {\n return {\n id: jsObject.id,\n name: jsObject.name\n };\n}\n\nexport {\n id ,\n name ,\n makeFromJs ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as DateFns from \"../../../shared/utils/DateFns.bs.js\";\nimport * as UserProxy from \"../../../shared/types/UserProxy.bs.js\";\n\nfunction user(t) {\n return t.user;\n}\n\nfunction assignedAt(t) {\n return t.assignedAt;\n}\n\nfunction makeFromJs(reviewerInfo) {\n return {\n user: UserProxy.makeFromJs(reviewerInfo.user),\n assignedAt: DateFns.decodeISO(reviewerInfo.assignedAt)\n };\n}\n\nfunction setReviewer(reviewer) {\n return {\n user: reviewer,\n assignedAt: new Date()\n };\n}\n\nexport {\n user ,\n assignedAt ,\n makeFromJs ,\n setReviewer ,\n}\n/* DateFns Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as DateFns from \"../../../shared/utils/DateFns.bs.js\";\nimport * as Js_array from \"../../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as Belt_Option from \"../../../../../node_modules/rescript/lib/es6/belt_Option.js\";\n\nfunction id(t) {\n return t.id;\n}\n\nfunction createdAt(t) {\n return t.createdAt;\n}\n\nfunction passedAt(t) {\n return t.passedAt;\n}\n\nfunction evaluatedAt(t) {\n return t.evaluatedAt;\n}\n\nfunction feedbackSent(t) {\n return t.feedbackSent;\n}\n\nfunction archivedAt(t) {\n return t.archivedAt;\n}\n\nfunction make(id, createdAt, passedAt, evaluatedAt, feedbackSent, archivedAt) {\n return {\n id: id,\n createdAt: createdAt,\n passedAt: passedAt,\n feedbackSent: feedbackSent,\n evaluatedAt: evaluatedAt,\n archivedAt: archivedAt\n };\n}\n\nfunction makeFromJs(details) {\n return Js_array.map((function (s) {\n return make(s.id, DateFns.decodeISO(s.createdAt), Belt_Option.map(s.passedAt, DateFns.decodeISO), Belt_Option.map(s.evaluatedAt, DateFns.decodeISO), s.feedbackSent, Belt_Option.map(s.archivedAt, DateFns.decodeISO));\n }), details);\n}\n\nexport {\n id ,\n createdAt ,\n passedAt ,\n evaluatedAt ,\n feedbackSent ,\n archivedAt ,\n make ,\n makeFromJs ,\n}\n/* DateFns Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as DateFns from \"../../../shared/utils/DateFns.bs.js\";\nimport * as Belt_Option from \"../../../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as Caml_option from \"../../../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as Caml_exceptions from \"../../../../../node_modules/rescript/lib/es6/caml_exceptions.js\";\n\nvar InvalidSubmissionReportCompletionStatus = /* @__PURE__ */Caml_exceptions.create(\"CoursesReview__SubmissionReport.InvalidSubmissionReportCompletionStatus\");\n\nfunction decodeStatus(status) {\n if (status === \"queued\") {\n return /* Queued */0;\n } else if (status === \"error\") {\n return /* Error */4;\n } else if (status === \"failure\") {\n return /* Failure */3;\n } else if (status === \"success\") {\n return /* Success */2;\n } else {\n return /* InProgress */1;\n }\n}\n\nfunction makeFromJS(object) {\n return {\n id: object.id,\n status: decodeStatus(object.status),\n startedAt: Belt_Option.map(object.startedAt, DateFns.decodeISO),\n completedAt: Belt_Option.map(object.completedAt, DateFns.decodeISO),\n report: Caml_option.nullable_to_opt(object.report),\n queuedAt: DateFns.decodeISO(object.queuedAt),\n reporter: object.reporter,\n heading: Caml_option.nullable_to_opt(object.heading),\n targetUrl: object.targetUrl\n };\n}\n\nfunction id(t) {\n return t.id;\n}\n\nfunction status(t) {\n return t.status;\n}\n\nfunction report(t) {\n return t.report;\n}\n\nfunction startedAt(t) {\n return t.startedAt;\n}\n\nfunction queuedAt(t) {\n return t.queuedAt;\n}\n\nfunction completedAt(t) {\n return t.completedAt;\n}\n\nfunction reporter(t) {\n return t.reporter;\n}\n\nfunction heading(t) {\n return t.heading;\n}\n\nfunction targetUrl(t) {\n return t.targetUrl;\n}\n\nexport {\n InvalidSubmissionReportCompletionStatus ,\n decodeStatus ,\n makeFromJS ,\n id ,\n status ,\n report ,\n startedAt ,\n queuedAt ,\n completedAt ,\n reporter ,\n heading ,\n targetUrl ,\n}\n/* DateFns Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as $$String from \"../../../../../node_modules/rescript/lib/es6/string.js\";\nimport * as Belt_List from \"../../../../../node_modules/rescript/lib/es6/belt_List.js\";\nimport * as Caml_array from \"../../../../../node_modules/rescript/lib/es6/caml_array.js\";\nimport * as Json_encode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_encode.bs.js\";\n\nfunction title(t) {\n return t.title;\n}\n\nfunction feedback(t) {\n return t.feedback;\n}\n\nfunction make(title, feedback) {\n return {\n title: title,\n feedback: feedback\n };\n}\n\nfunction makeFromJs(data) {\n return data.map(function (r) {\n return {\n title: r.title,\n feedback: r.feedback\n };\n });\n}\n\nfunction emptyTemplate(param) {\n return [\n {\n title: \"Yes\",\n feedback: \"Sample feedback for yes\"\n },\n {\n title: \"No\",\n feedback: \"Sample feedback for no\"\n }\n ];\n}\n\nfunction empty(param) {\n return {\n title: \"\",\n feedback: undefined\n };\n}\n\nfunction replace(checklist, t, index) {\n return checklist.map(function (result, resultIndex) {\n if (resultIndex === index) {\n return t;\n } else {\n return result;\n }\n });\n}\n\nfunction updateTitle(checklist, title, t, index) {\n return replace(checklist, {\n title: title,\n feedback: t.feedback\n }, index);\n}\n\nfunction updateFeedback(resultItems, feedback, index) {\n var optionalFeedback = feedback.trim() === \"\" ? undefined : feedback;\n return replace(resultItems, {\n title: Caml_array.get(resultItems, index).title,\n feedback: optionalFeedback\n }, index);\n}\n\nfunction updateAdditionalFeedback(resultItems, feedback, index) {\n return replace(resultItems, {\n title: Caml_array.get(resultItems, index).title,\n feedback: feedback\n }, index);\n}\n\nfunction trim(t) {\n return {\n title: $$String.trim(t.title),\n feedback: t.feedback\n };\n}\n\nfunction encode(t) {\n var title_0 = [\n \"title\",\n t.title\n ];\n var title = {\n hd: title_0,\n tl: /* [] */0\n };\n var f = t.feedback;\n var feedback = f !== undefined ? ({\n hd: [\n \"feedback\",\n f\n ],\n tl: /* [] */0\n }) : /* [] */0;\n return Json_encode.object_(Belt_List.concat(title, feedback));\n}\n\nexport {\n title ,\n feedback ,\n make ,\n makeFromJs ,\n emptyTemplate ,\n empty ,\n replace ,\n updateTitle ,\n updateFeedback ,\n updateAdditionalFeedback ,\n trim ,\n encode ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as $$String from \"../../../../../node_modules/rescript/lib/es6/string.js\";\nimport * as ArrayUtils from \"../../../shared/utils/ArrayUtils.bs.js\";\nimport * as Json_encode from \"../../../../../node_modules/@glennsl/bs-json/src/Json_encode.bs.js\";\nimport * as CoursesReview__ReviewChecklistResult from \"./CoursesReview__ReviewChecklistResult.bs.js\";\n\nfunction title(t) {\n return t.title;\n}\n\nfunction results(t) {\n return t.results;\n}\n\nfunction make(title, results) {\n return {\n title: title,\n results: results\n };\n}\n\nfunction makeFromJs(data) {\n return data.map(function (rc) {\n return {\n title: rc.title,\n results: CoursesReview__ReviewChecklistResult.makeFromJs(rc.result)\n };\n });\n}\n\nfunction empty(param) {\n return [{\n title: \"\",\n results: [CoursesReview__ReviewChecklistResult.empty(undefined)]\n }];\n}\n\nfunction emptyTemplate(param) {\n return [{\n title: \"Default checklist\",\n results: CoursesReview__ReviewChecklistResult.emptyTemplate(undefined)\n }];\n}\n\nfunction updateTitle(title, t) {\n return {\n title: title,\n results: t.results\n };\n}\n\nfunction updateChecklist(results, t) {\n return {\n title: t.title,\n results: results\n };\n}\n\nfunction replace(t, itemIndex, results) {\n return results.map(function (item, index) {\n if (index === itemIndex) {\n return t;\n } else {\n return item;\n }\n });\n}\n\nfunction appendEmptyChecklistItem(t) {\n return {\n title: t.title,\n results: t.results.concat([CoursesReview__ReviewChecklistResult.empty(undefined)])\n };\n}\n\nfunction moveResultItemUp(index, t) {\n return {\n title: t.title,\n results: ArrayUtils.swapUp(index, t.results)\n };\n}\n\nfunction moveResultItemDown(index, t) {\n return {\n title: t.title,\n results: ArrayUtils.swapDown(index, t.results)\n };\n}\n\nfunction deleteResultItem(index, t) {\n return {\n title: t.title,\n results: t.results.filter(function (_el, i) {\n return i !== index;\n })\n };\n}\n\nfunction trim(t) {\n return {\n title: $$String.trim(t.title),\n results: t.results.map(CoursesReview__ReviewChecklistResult.trim)\n };\n}\n\nfunction encode(t) {\n return Json_encode.object_({\n hd: [\n \"title\",\n t.title\n ],\n tl: {\n hd: [\n \"result\",\n Json_encode.array(CoursesReview__ReviewChecklistResult.encode, t.results)\n ],\n tl: /* [] */0\n }\n });\n}\n\nfunction encodeArray(checklist) {\n return Json_encode.array(encode, checklist);\n}\n\nexport {\n title ,\n results ,\n make ,\n makeFromJs ,\n empty ,\n emptyTemplate ,\n updateTitle ,\n updateChecklist ,\n replace ,\n appendEmptyChecklistItem ,\n moveResultItemUp ,\n moveResultItemDown ,\n deleteResultItem ,\n trim ,\n encode ,\n encodeArray ,\n}\n/* ArrayUtils Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as DateFns from \"../../../shared/utils/DateFns.bs.js\";\nimport * as Js_array from \"../../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as UserProxy from \"../../../shared/types/UserProxy.bs.js\";\nimport * as ArrayUtils from \"../../../shared/utils/ArrayUtils.bs.js\";\nimport * as GradeLabel from \"../../../shared/types/GradeLabel.bs.js\";\nimport * as Belt_Option from \"../../../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as EvaluationCriterion from \"../../../shared/types/EvaluationCriterion.bs.js\";\nimport * as CoursesReview__Student from \"./CoursesReview__Student.bs.js\";\nimport * as CoursesReview__Reviewer from \"./CoursesReview__Reviewer.bs.js\";\nimport * as CoursesReview__SubmissionMeta from \"./CoursesReview__SubmissionMeta.bs.js\";\nimport * as CoursesReview__SubmissionReport from \"./CoursesReview__SubmissionReport.bs.js\";\nimport * as CoursesReview__OverlaySubmission from \"./CoursesReview__OverlaySubmission.bs.js\";\nimport * as CoursesReview__ReviewChecklistItem from \"./CoursesReview__ReviewChecklistItem.bs.js\";\n\nfunction submission(t) {\n return t.submission;\n}\n\nfunction allSubmissions(t) {\n return t.allSubmissions;\n}\n\nfunction targetId(t) {\n return t.targetId;\n}\n\nfunction targetTitle(t) {\n return t.targetTitle;\n}\n\nfunction students(t) {\n return t.students;\n}\n\nfunction evaluationCriteria(t) {\n return t.evaluationCriteria;\n}\n\nfunction reviewChecklist(t) {\n return t.reviewChecklist;\n}\n\nfunction targetEvaluationCriteriaIds(t) {\n return t.targetEvaluationCriteriaIds;\n}\n\nfunction coaches(t) {\n return t.coaches;\n}\n\nfunction teamName(t) {\n return t.teamName;\n}\n\nfunction courseId(t) {\n return t.courseId;\n}\n\nfunction createdAt(t) {\n return t.createdAt;\n}\n\nfunction reviewer(t) {\n return t.reviewer;\n}\n\nfunction submissionReports(t) {\n return t.submissionReports;\n}\n\nfunction submissionReportPollTime(t) {\n return t.submissionReportPollTime;\n}\n\nfunction reviewable(t) {\n return t.reviewable;\n}\n\nfunction warning(t) {\n return t.warning;\n}\n\nfunction make(submission, allSubmissions, targetId, targetTitle, students, evaluationCriteria, reviewChecklist, targetEvaluationCriteriaIds, submissionReports, coaches, teamName, courseId, createdAt, reviewer, submissionReportPollTime, reviewable, warning) {\n return {\n submission: submission,\n createdAt: createdAt,\n allSubmissions: allSubmissions,\n targetId: targetId,\n targetTitle: targetTitle,\n students: students,\n submissionReports: submissionReports,\n evaluationCriteria: evaluationCriteria,\n reviewChecklist: reviewChecklist,\n targetEvaluationCriteriaIds: targetEvaluationCriteriaIds,\n coaches: coaches,\n teamName: teamName,\n courseId: courseId,\n reviewer: reviewer,\n submissionReportPollTime: submissionReportPollTime,\n reviewable: reviewable,\n warning: warning\n };\n}\n\nfunction decodeJs(details) {\n return make(CoursesReview__OverlaySubmission.makeFromJs(details.submission), ArrayUtils.copyAndSort((function (s1, s2) {\n return DateFns.differenceInSeconds(CoursesReview__SubmissionMeta.createdAt(s2), CoursesReview__SubmissionMeta.createdAt(s1));\n }), CoursesReview__SubmissionMeta.makeFromJs(details.allSubmissions)), details.targetId, details.targetTitle, details.students.map(CoursesReview__Student.makeFromJs), details.evaluationCriteria.map(function (ec) {\n return EvaluationCriterion.make(ec.id, ec.name, ec.maxGrade, ec.gradeLabels.map(GradeLabel.makeFromJs));\n }), CoursesReview__ReviewChecklistItem.makeFromJs(details.reviewChecklist), details.targetEvaluationCriteriaIds, details.submissionReports.map(CoursesReview__SubmissionReport.makeFromJS), Js_array.map(UserProxy.makeFromJs, details.coaches), details.teamName, details.courseId, DateFns.decodeISO(details.createdAt), Belt_Option.map(details.reviewerDetails, CoursesReview__Reviewer.makeFromJs), details.submissionReportPollTime, details.reviewable, details.warning);\n}\n\nfunction updateMetaSubmission(submission) {\n return CoursesReview__SubmissionMeta.make(CoursesReview__OverlaySubmission.id(submission), CoursesReview__OverlaySubmission.createdAt(submission), CoursesReview__OverlaySubmission.passedAt(submission), CoursesReview__OverlaySubmission.evaluatedAt(submission), ArrayUtils.isNotEmpty(CoursesReview__OverlaySubmission.feedback(submission)), CoursesReview__OverlaySubmission.archivedAt(submission));\n}\n\nfunction updateOverlaySubmission(submission, t) {\n return {\n submission: submission,\n createdAt: t.createdAt,\n allSubmissions: Js_array.map((function (s) {\n if (CoursesReview__SubmissionMeta.id(s) === CoursesReview__OverlaySubmission.id(submission)) {\n return updateMetaSubmission(submission);\n } else {\n return s;\n }\n }), t.allSubmissions),\n targetId: t.targetId,\n targetTitle: t.targetTitle,\n students: t.students,\n submissionReports: t.submissionReports,\n evaluationCriteria: t.evaluationCriteria,\n reviewChecklist: t.reviewChecklist,\n targetEvaluationCriteriaIds: t.targetEvaluationCriteriaIds,\n coaches: t.coaches,\n teamName: t.teamName,\n courseId: t.courseId,\n reviewer: t.reviewer,\n submissionReportPollTime: t.submissionReportPollTime,\n reviewable: t.reviewable,\n warning: t.warning\n };\n}\n\nfunction updateReviewChecklist(reviewChecklist, t) {\n return {\n submission: t.submission,\n createdAt: t.createdAt,\n allSubmissions: t.allSubmissions,\n targetId: t.targetId,\n targetTitle: t.targetTitle,\n students: t.students,\n submissionReports: t.submissionReports,\n evaluationCriteria: t.evaluationCriteria,\n reviewChecklist: reviewChecklist,\n targetEvaluationCriteriaIds: t.targetEvaluationCriteriaIds,\n coaches: t.coaches,\n teamName: t.teamName,\n courseId: t.courseId,\n reviewer: t.reviewer,\n submissionReportPollTime: t.submissionReportPollTime,\n reviewable: t.reviewable,\n warning: t.warning\n };\n}\n\nfunction updateReviewer(user, t) {\n return {\n submission: t.submission,\n createdAt: t.createdAt,\n allSubmissions: t.allSubmissions,\n targetId: t.targetId,\n targetTitle: t.targetTitle,\n students: t.students,\n submissionReports: t.submissionReports,\n evaluationCriteria: t.evaluationCriteria,\n reviewChecklist: t.reviewChecklist,\n targetEvaluationCriteriaIds: t.targetEvaluationCriteriaIds,\n coaches: t.coaches,\n teamName: t.teamName,\n courseId: t.courseId,\n reviewer: Belt_Option.map(user, CoursesReview__Reviewer.setReviewer),\n submissionReportPollTime: t.submissionReportPollTime,\n reviewable: t.reviewable,\n warning: t.warning\n };\n}\n\nfunction updateSubmissionReport(reports, t) {\n return {\n submission: t.submission,\n createdAt: t.createdAt,\n allSubmissions: t.allSubmissions,\n targetId: t.targetId,\n targetTitle: t.targetTitle,\n students: t.students,\n submissionReports: reports,\n evaluationCriteria: t.evaluationCriteria,\n reviewChecklist: t.reviewChecklist,\n targetEvaluationCriteriaIds: t.targetEvaluationCriteriaIds,\n coaches: t.coaches,\n teamName: t.teamName,\n courseId: t.courseId,\n reviewer: t.reviewer,\n submissionReportPollTime: t.submissionReportPollTime,\n reviewable: t.reviewable,\n warning: t.warning\n };\n}\n\nvar OverlaySubmission;\n\nvar IndexSubmission;\n\nvar Student;\n\nvar ReviewChecklistItem;\n\nvar SubmissionMeta;\n\nvar Coach;\n\nvar Reviewer;\n\nvar SubmissionReport;\n\nexport {\n OverlaySubmission ,\n IndexSubmission ,\n Student ,\n ReviewChecklistItem ,\n SubmissionMeta ,\n Coach ,\n Reviewer ,\n SubmissionReport ,\n submission ,\n allSubmissions ,\n targetId ,\n targetTitle ,\n students ,\n evaluationCriteria ,\n reviewChecklist ,\n targetEvaluationCriteriaIds ,\n coaches ,\n teamName ,\n courseId ,\n createdAt ,\n reviewer ,\n submissionReports ,\n submissionReportPollTime ,\n reviewable ,\n warning ,\n make ,\n decodeJs ,\n updateMetaSubmission ,\n updateOverlaySubmission ,\n updateReviewChecklist ,\n updateReviewer ,\n updateSubmissionReport ,\n}\n/* DateFns Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as Curry from \"../../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as FaIcon from \"../../../shared/components/FaIcon.bs.js\";\nimport * as Spread from \"../../../shared/components/Spread.bs.js\";\nimport * as $$String from \"../../../../../node_modules/rescript/lib/es6/string.js\";\nimport * as Checkbox from \"../../../shared/components/Checkbox.bs.js\";\nimport * as DateTime from \"../../../shared/utils/DateTime.bs.js\";\nimport * as Js_array from \"../../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as ArrayUtils from \"../../../shared/utils/ArrayUtils.bs.js\";\nimport * as Caml_array from \"../../../../../node_modules/rescript/lib/es6/caml_array.js\";\nimport * as ReactUtils from \"../../../shared/utils/ReactUtils.bs.js\";\nimport * as Belt_Option from \"../../../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as CoursesReview__OverlaySubmission from \"../types/CoursesReview__OverlaySubmission.bs.js\";\nimport * as CoursesReview__SubmissionDetails from \"../types/CoursesReview__SubmissionDetails.bs.js\";\nimport * as CoursesReview__ReviewChecklistItem from \"../types/CoursesReview__ReviewChecklistItem.bs.js\";\nimport * as CoursesReview__ReviewChecklistResult from \"../types/CoursesReview__ReviewChecklistResult.bs.js\";\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.CoursesReview__ChecklistShow\";\n\nfunction t(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nfunction selectChecklist(itemIndex, resultIndex, setSelecton) {\n return Curry._1(setSelecton, (function (selection) {\n return selection.concat([{\n itemIndex: itemIndex,\n resultIndex: resultIndex\n }]);\n }));\n}\n\nfunction updateEmptyChecklistResult(itemIndex, resultIndex, feedback, reviewChecklistItem, setChecklist) {\n var partial_arg = CoursesReview__ReviewChecklistItem.updateChecklist(CoursesReview__ReviewChecklistResult.updateAdditionalFeedback(CoursesReview__ReviewChecklistItem.results(reviewChecklistItem), feedback, resultIndex), reviewChecklistItem);\n return Curry._1(setChecklist, (function (param) {\n return CoursesReview__ReviewChecklistItem.replace(partial_arg, itemIndex, param);\n }));\n}\n\nfunction unSelectChecklist(itemIndex, resultIndex, setSelecton) {\n return Curry._1(setSelecton, (function (selection) {\n return Js_array.filter((function (item) {\n return !(item.itemIndex === itemIndex && item.resultIndex === resultIndex);\n }), selection);\n }));\n}\n\nfunction checkboxOnChange(itemIndex, resultIndex, setSelecton, $$event) {\n if ($$event.target.checked) {\n return selectChecklist(itemIndex, resultIndex, setSelecton);\n } else {\n return unSelectChecklist(itemIndex, resultIndex, setSelecton);\n }\n}\n\nfunction generateFeedback(checklist, selection, feedback, setSelecton, updateFeedbackCB) {\n var newFeedback = feedback + ((\n $$String.trim(feedback) === \"\" ? \"\" : \"\\n\\n\"\n ) + ArrayUtils.flattenV2(checklist.map(function (reviewChecklistItem, i) {\n var resultIndexList = selection.filter(function (selectionItem) {\n return selectionItem.itemIndex === i;\n }).map(function (item) {\n return item.resultIndex;\n });\n return ArrayUtils.flattenV2(CoursesReview__ReviewChecklistItem.results(reviewChecklistItem).map(function (resultItem, index) {\n if (!resultIndexList.some(function (i) {\n return i === index;\n })) {\n return [];\n }\n var feedback = CoursesReview__ReviewChecklistResult.feedback(resultItem);\n if (feedback !== undefined) {\n return [feedback];\n } else {\n return [];\n }\n }));\n })).join(\"\\n\\n\"));\n Curry._1(setSelecton, (function (param) {\n return [];\n }));\n return Curry._1(updateFeedbackCB, newFeedback);\n}\n\nfunction checklistItemCheckedClasses(itemIndex, selection) {\n return \"absolute w-1 inset-0 rounded-e-md \" + (\n ArrayUtils.isNotEmpty(Js_array.filter((function (s) {\n return s.itemIndex === itemIndex;\n }), selection)) ? \"bg-green-400\" : \"bg-gray-500\"\n );\n}\n\nfunction feedbackGeneratable(submissionDetails, overlaySubmission) {\n if (Belt_Option.isSome(CoursesReview__SubmissionDetails.reviewer(submissionDetails))) {\n return true;\n } else {\n return Belt_Option.isSome(CoursesReview__OverlaySubmission.evaluatedAt(overlaySubmission));\n }\n}\n\nfunction checklistItemChecked(itemIndex, resultIndex, selection) {\n return ArrayUtils.isNotEmpty(Js_array.filter((function (s) {\n if (s.itemIndex === itemIndex) {\n return s.resultIndex === resultIndex;\n } else {\n return false;\n }\n }), selection));\n}\n\nfunction updateChecklistResultFeedback(itemIndex, resultIndex, feedback, reviewChecklistItem, setChecklist) {\n var partial_arg = CoursesReview__ReviewChecklistItem.updateChecklist(CoursesReview__ReviewChecklistResult.updateFeedback(CoursesReview__ReviewChecklistItem.results(reviewChecklistItem), feedback, resultIndex), reviewChecklistItem);\n return Curry._1(setChecklist, (function (param) {\n return CoursesReview__ReviewChecklistItem.replace(partial_arg, itemIndex, param);\n }));\n}\n\nfunction generateFeedbackButton(checklist, selection, feedback, setSelecton, updateFeedbackCB) {\n return React.createElement(\"button\", {\n className: \"btn btn-primary w-full md:w-auto\",\n disabled: ArrayUtils.isEmpty(selection),\n onClick: (function (param) {\n generateFeedback(checklist, selection, feedback, setSelecton, updateFeedbackCB);\n })\n }, t(undefined, undefined, \"generate_feedback_button\"));\n}\n\nfunction CoursesReview__ChecklistShow(Props) {\n var reviewChecklist = Props.reviewChecklist;\n var feedback = Props.feedback;\n var updateFeedbackCB = Props.updateFeedbackCB;\n var showEditorCB = Props.showEditorCB;\n var cancelCB = Props.cancelCB;\n var overlaySubmission = Props.overlaySubmission;\n var submissionDetails = Props.submissionDetails;\n var match = React.useState(function () {\n return reviewChecklist;\n });\n var setChecklist = match[1];\n var checklist = match[0];\n var match$1 = React.useState(function () {\n return [];\n });\n var setSelecton = match$1[1];\n var selection = match$1[0];\n var match$2 = React.useState(function () {\n return DateTime.randomId(undefined) + \"-review-checkbox-\";\n });\n var id = match$2[0];\n var hasFeedbackTemplate = Js_array.map((function (item) {\n return Js_array.map((function (result) {\n return CoursesReview__ReviewChecklistResult.feedback(result) !== undefined;\n }), CoursesReview__ReviewChecklistItem.results(item));\n }), reviewChecklist);\n return React.createElement(\"div\", undefined, React.createElement(\"div\", {\n className: \"flex items-center px-4 md:px-6 py-3 bg-white border-b sticky top-0 z-50 h-16\"\n }, React.createElement(\"div\", {\n className: \"flex flex-1 items-center justify-between\"\n }, React.createElement(\"button\", {\n className: \"btn btn-subtle focus:ring-2 focus:ring-offset-2 focus:ring-focusColor-500 transition\",\n onClick: cancelCB\n }, React.createElement(FaIcon.make, {\n classes: \"fas fa-arrow-left text-gray-500\"\n }), React.createElement(\"p\", {\n className: \"ps-2 \"\n }, t(undefined, undefined, \"back_to_review\"))))), React.createElement(\"div\", {\n className: \"p-4 md:px-6 pb-0\"\n }, React.createElement(\"div\", {\n className: \"flex items-end justify-between\"\n }, React.createElement(\"h5\", {\n className: \"font-semibold flex items-center tracking-wide text-sm\"\n }, t(undefined, undefined, \"review_checklist\")), React.createElement(\"button\", {\n className: \"btn btn-small btn-default\",\n onClick: (function (param) {\n Curry._1(showEditorCB, undefined);\n })\n }, React.createElement(\"i\", {\n className: \"far fa-edit\"\n }), React.createElement(\"div\", {\n className: \"ms-2\"\n }, t(undefined, undefined, \"edit_checklist_button\")))), React.createElement(\"div\", {\n className: \"border bg-white rounded-lg py-2 md:py-4 mt-2 space-y-4\"\n }, Js_array.mapi((function (reviewChecklistItem, itemIndex) {\n return React.createElement(Spread.make, {\n props: {\n \"data-checklist-item\": String(itemIndex)\n },\n children: React.createElement(\"div\", undefined, React.createElement(\"h4\", {\n className: \"relative text-sm font-semibold mt-2 md:mt-0 px-6 w-full md:w-4/5\"\n }, React.createElement(\"div\", {\n className: checklistItemCheckedClasses(itemIndex, selection)\n }), CoursesReview__ReviewChecklistItem.title(reviewChecklistItem)), React.createElement(\"div\", {\n className: \"space-y-3 pt-3\"\n }, Js_array.mapi((function (reviewChecklistResult, resultIndex) {\n var tmp;\n if (Belt_Option.isSome(CoursesReview__ReviewChecklistResult.feedback(reviewChecklistResult)) && Caml_array.get(Caml_array.get(hasFeedbackTemplate, itemIndex), resultIndex) === true) {\n var isSelected = Belt_Option.isSome(Js_array.find((function (s) {\n if (s.itemIndex === itemIndex) {\n return s.resultIndex === resultIndex;\n } else {\n return false;\n }\n }), selection));\n tmp = React.createElement(\"div\", {\n className: \"px-6\"\n }, React.createElement(Checkbox.make, {\n id: id + (String(itemIndex) + String(resultIndex)),\n onChange: (function (param) {\n return checkboxOnChange(itemIndex, resultIndex, setSelecton, param);\n }),\n checked: checklistItemChecked(itemIndex, resultIndex, selection),\n label: CoursesReview__ReviewChecklistResult.title(reviewChecklistResult),\n disabled: !feedbackGeneratable(submissionDetails, overlaySubmission)\n }), ReactUtils.nullUnless(React.createElement(\"div\", {\n className: \"ps-7 pt-2\",\n id: \"result_item_\" + (String(resultIndex) + \"_feedback\")\n }, React.createElement(\"textarea\", {\n className: \"appearance-none border border-gray-300 bg-white rounded-b text-sm align-top py-2 px-4 leading-relaxed w-full focus:outline-none focus:bg-white focus:border-primary-300\",\n id: \"result_\" + (String(resultIndex) + \"_feedback\"),\n cols: 33,\n disabled: !feedbackGeneratable(submissionDetails, overlaySubmission),\n placeholder: t(undefined, undefined, \"feedback_placeholder\"),\n rows: 4,\n type: \"text\",\n value: Belt_Option.getWithDefault(CoursesReview__ReviewChecklistResult.feedback(reviewChecklistResult), \"\"),\n onChange: (function ($$event) {\n updateChecklistResultFeedback(itemIndex, resultIndex, $$event.target.value, reviewChecklistItem, setChecklist);\n })\n })), (isSelected || !feedbackGeneratable(submissionDetails, overlaySubmission)) && Belt_Option.isSome(CoursesReview__ReviewChecklistResult.feedback(reviewChecklistResult))));\n } else {\n var isSelected$1 = Belt_Option.isSome(Js_array.find((function (s) {\n if (s.itemIndex === itemIndex) {\n return s.resultIndex === resultIndex;\n } else {\n return false;\n }\n }), selection));\n var hasFeedback = Belt_Option.isSome(CoursesReview__ReviewChecklistResult.feedback(reviewChecklistResult));\n tmp = React.createElement(\"div\", {\n className: \"px-6\"\n }, React.createElement(\"div\", {\n className: \"flex flex-wrap\"\n }, React.createElement(Checkbox.make, {\n id: id + (String(itemIndex) + String(resultIndex)),\n onChange: (function (param) {\n return checkboxOnChange(itemIndex, resultIndex, setSelecton, param);\n }),\n checked: checklistItemChecked(itemIndex, resultIndex, selection),\n label: CoursesReview__ReviewChecklistResult.title(reviewChecklistResult),\n disabled: !feedbackGeneratable(submissionDetails, overlaySubmission)\n }), isSelected$1 ? (\n hasFeedback ? React.createElement(\"div\", {\n className: \"pl-7 pt-2 w-full\",\n id: \"result_item_\" + (String(resultIndex) + \"_feedback\")\n }, React.createElement(\"textarea\", {\n className: \"appearance-none border border-gray-300 bg-white rounded-b text-sm align-top py-2 px-4 leading-relaxed w-full focus:outline-none focus:bg-white focus:border-primary-300\",\n id: \"checklist_\" + String(itemIndex) + \"_result_\" + (String(resultIndex) + \"_text_area\"),\n cols: 33,\n disabled: !feedbackGeneratable(submissionDetails, overlaySubmission),\n placeholder: t(undefined, undefined, \"feedback_placeholder\"),\n rows: 4,\n type: \"text\",\n value: Belt_Option.getWithDefault(CoursesReview__ReviewChecklistResult.feedback(reviewChecklistResult), \"\"),\n onChange: (function ($$event) {\n updateChecklistResultFeedback(itemIndex, resultIndex, $$event.target.value, reviewChecklistItem, setChecklist);\n })\n })) : React.createElement(\"button\", {\n className: \"w-auto ps-4 text-sm text-primary-500 text-left rtl:text-right hover:text-primary-600 transition\",\n id: \"add-additional-feedback-\" + String(itemIndex),\n onClick: (function ($$event) {\n updateEmptyChecklistResult(itemIndex, resultIndex, \"\", reviewChecklistItem, setChecklist);\n })\n }, React.createElement(\"i\", {\n className: \"fas fa-plus\"\n }), React.createElement(\"span\", {\n className: \"ps-2 \"\n }, t(undefined, undefined, \"add_additional_feedback\")))\n ) : (\n hasFeedback ? (updateEmptyChecklistResult(itemIndex, resultIndex, undefined, reviewChecklistItem, setChecklist), null) : null\n )));\n }\n return React.createElement(Spread.make, {\n props: {\n \"data-result-item\": String(resultIndex)\n },\n children: tmp,\n key: String(itemIndex) + String(resultIndex)\n });\n }), CoursesReview__ReviewChecklistItem.results(reviewChecklistItem)))),\n key: String(itemIndex)\n });\n }), checklist))), React.createElement(\"div\", {\n className: \"flex justify-end border-t bg-gray-50 opacity-90 sticky bottom-0 px-4 md:px-6 py-2 md:py-4 mt-4\"\n }, feedbackGeneratable(submissionDetails, overlaySubmission) ? generateFeedbackButton(checklist, selection, feedback, setSelecton, updateFeedbackCB) : null));\n}\n\nvar make = CoursesReview__ChecklistShow;\n\nexport {\n str ,\n t ,\n selectChecklist ,\n updateEmptyChecklistResult ,\n unSelectChecklist ,\n checkboxOnChange ,\n generateFeedback ,\n checklistItemCheckedClasses ,\n feedbackGeneratable ,\n checklistItemChecked ,\n updateChecklistResultFeedback ,\n generateFeedbackButton ,\n make ,\n}\n/* I18n Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as Curry from \"../../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as Spread from \"../../../shared/components/Spread.bs.js\";\nimport * as ArrayUtils from \"../../../shared/utils/ArrayUtils.bs.js\";\nimport * as Js_promise from \"../../../../../node_modules/rescript/lib/es6/js_promise.js\";\nimport * as ReactUtils from \"../../../shared/utils/ReactUtils.bs.js\";\nimport * as Belt_Option from \"../../../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as GraphqlQuery from \"../../../shared/utils/GraphqlQuery.bs.js\";\nimport * as DisablingCover from \"../../../shared/components/DisablingCover.bs.js\";\nimport * as School__InputGroupError from \"../../../schools/shared/components/School__InputGroupError.bs.js\";\nimport * as CoursesReview__ReviewChecklistItem from \"../types/CoursesReview__ReviewChecklistItem.bs.js\";\nimport * as CoursesReview__ReviewChecklistResult from \"../types/CoursesReview__ReviewChecklistResult.bs.js\";\n\nimport \"./CoursesReview__ChecklistEditor.css\"\n;\n\nvar partial_arg = \"components.CoursesReview__ChecklistEditor\";\n\nfunction t(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nfunction str(prim) {\n return prim;\n}\n\nvar Raw = {};\n\nvar query = \"mutation UpdateReviewChecklistMutation($targetId: ID!, $reviewChecklist: JSON!) {\\nupdateReviewChecklist(targetId: $targetId, reviewChecklist: $reviewChecklist) {\\nsuccess \\n}\\n\\n}\\n\";\n\nfunction parse(value) {\n var value$1 = value.updateReviewChecklist;\n return {\n updateReviewChecklist: {\n success: value$1.success\n }\n };\n}\n\nfunction serialize(value) {\n var value$1 = value.updateReviewChecklist;\n var value$2 = value$1.success;\n var updateReviewChecklist = {\n success: value$2\n };\n return {\n updateReviewChecklist: updateReviewChecklist\n };\n}\n\nfunction serializeVariables(inp) {\n return {\n targetId: inp.targetId,\n reviewChecklist: inp.reviewChecklist\n };\n}\n\nfunction makeVariables(targetId, reviewChecklist, param) {\n return {\n targetId: targetId,\n reviewChecklist: reviewChecklist\n };\n}\n\nvar UpdateReviewChecklistMutation_inner = {\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables\n};\n\nvar include = GraphqlQuery.Extender({\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar $$fetch = include.$$fetch;\n\nvar UpdateReviewChecklistMutation_Graphql_error = include.Graphql_error;\n\nvar UpdateReviewChecklistMutation_decodeNotification = include.decodeNotification;\n\nvar UpdateReviewChecklistMutation_decodeObject = include.decodeObject;\n\nvar UpdateReviewChecklistMutation_decodeNotifications = include.decodeNotifications;\n\nvar UpdateReviewChecklistMutation_decodeErrors = include.decodeErrors;\n\nvar UpdateReviewChecklistMutation_flashNotifications = include.flashNotifications;\n\nvar UpdateReviewChecklistMutation_sendQuery = include.sendQuery;\n\nvar UpdateReviewChecklistMutation_query = include.query;\n\nvar UpdateReviewChecklistMutation_make = include.make;\n\nvar UpdateReviewChecklistMutation = {\n UpdateReviewChecklistMutation_inner: UpdateReviewChecklistMutation_inner,\n Raw: Raw,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables,\n Graphql_error: UpdateReviewChecklistMutation_Graphql_error,\n decodeNotification: UpdateReviewChecklistMutation_decodeNotification,\n decodeObject: UpdateReviewChecklistMutation_decodeObject,\n decodeNotifications: UpdateReviewChecklistMutation_decodeNotifications,\n decodeErrors: UpdateReviewChecklistMutation_decodeErrors,\n flashNotifications: UpdateReviewChecklistMutation_flashNotifications,\n sendQuery: UpdateReviewChecklistMutation_sendQuery,\n query: UpdateReviewChecklistMutation_query,\n $$fetch: $$fetch,\n make: UpdateReviewChecklistMutation_make\n};\n\nfunction updateReviewChecklist(targetId, reviewChecklist, send, updateReviewChecklistCB) {\n Curry._1(send, /* UpdateSaving */1);\n var trimmedChecklist = reviewChecklist.map(CoursesReview__ReviewChecklistItem.trim);\n Js_promise.then_((function (response) {\n if (response.updateReviewChecklist.success) {\n Curry._1(updateReviewChecklistCB, trimmedChecklist);\n }\n Curry._1(send, /* UpdateSaving */1);\n return Promise.resolve(undefined);\n }), Curry._3($$fetch, undefined, undefined, {\n targetId: targetId,\n reviewChecklist: CoursesReview__ReviewChecklistItem.encodeArray(trimmedChecklist)\n }));\n}\n\nfunction updateChecklistItemTitle(itemIndex, title, checklistItem, send) {\n return Curry._1(send, {\n TAG: /* UpdateChecklistItem */2,\n _0: CoursesReview__ReviewChecklistItem.updateTitle(title, checklistItem),\n _1: itemIndex\n });\n}\n\nfunction updateChecklistResultTitle(itemIndex, resultIndex, title, reviewChecklistItem, resultItem, send) {\n return Curry._1(send, {\n TAG: /* UpdateChecklistItem */2,\n _0: CoursesReview__ReviewChecklistItem.updateChecklist(CoursesReview__ReviewChecklistResult.updateTitle(CoursesReview__ReviewChecklistItem.results(reviewChecklistItem), title, resultItem, resultIndex), reviewChecklistItem),\n _1: itemIndex\n });\n}\n\nfunction updateChecklistResultFeedback(itemIndex, resultIndex, feedback, reviewChecklistItem, send) {\n return Curry._1(send, {\n TAG: /* UpdateChecklistItem */2,\n _0: CoursesReview__ReviewChecklistItem.updateChecklist(CoursesReview__ReviewChecklistResult.updateFeedback(CoursesReview__ReviewChecklistItem.results(reviewChecklistItem), feedback, resultIndex), reviewChecklistItem),\n _1: itemIndex\n });\n}\n\nfunction addEmptyResultItem(send, reviewChecklistItem, itemIndex) {\n return Curry._1(send, {\n TAG: /* UpdateChecklistItem */2,\n _0: CoursesReview__ReviewChecklistItem.appendEmptyChecklistItem(reviewChecklistItem),\n _1: itemIndex\n });\n}\n\nfunction removeChecklistResult(itemIndex, resultIndex, reviewChecklistItem, send) {\n return Curry._1(send, {\n TAG: /* UpdateChecklistItem */2,\n _0: CoursesReview__ReviewChecklistItem.deleteResultItem(resultIndex, reviewChecklistItem),\n _1: itemIndex\n });\n}\n\nfunction initialStateForReviewChecklist(reviewChecklist) {\n if (ArrayUtils.isEmpty(reviewChecklist)) {\n return CoursesReview__ReviewChecklistItem.emptyTemplate(undefined);\n } else {\n return reviewChecklist;\n }\n}\n\nfunction invalidTitle(title) {\n return title.trim() === \"\";\n}\n\nfunction invalidChecklist(reviewChecklist) {\n return ArrayUtils.isNotEmpty(reviewChecklist.map(function (reviewChecklistItem) {\n var title = CoursesReview__ReviewChecklistItem.title(reviewChecklistItem);\n if (title.trim() === \"\") {\n return true;\n } else {\n return ArrayUtils.isNotEmpty(CoursesReview__ReviewChecklistItem.results(reviewChecklistItem).filter(function (resultItem) {\n var title = CoursesReview__ReviewChecklistResult.title(resultItem);\n return title.trim() === \"\";\n }));\n }\n }).filter(function (valid) {\n return valid;\n }));\n}\n\nfunction reducer(state, action) {\n if (typeof action === \"number\") {\n if (action === /* AddEmptyChecklistItem */0) {\n return {\n reviewChecklist: state.reviewChecklist.concat(CoursesReview__ReviewChecklistItem.empty(undefined)),\n saving: state.saving\n };\n } else {\n return {\n reviewChecklist: state.reviewChecklist,\n saving: !state.saving\n };\n }\n }\n switch (action.TAG | 0) {\n case /* SwapUpReviewChecklistItem */0 :\n return {\n reviewChecklist: ArrayUtils.swapUp(action._0, state.reviewChecklist),\n saving: state.saving\n };\n case /* SwapDownReviewChecklistItem */1 :\n return {\n reviewChecklist: ArrayUtils.swapDown(action._0, state.reviewChecklist),\n saving: state.saving\n };\n case /* UpdateChecklistItem */2 :\n return {\n reviewChecklist: CoursesReview__ReviewChecklistItem.replace(action._0, action._1, state.reviewChecklist),\n saving: state.saving\n };\n case /* RemoveChecklistItem */3 :\n var itemIndex = action._0;\n return {\n reviewChecklist: state.reviewChecklist.filter(function (_el, i) {\n return i !== itemIndex;\n }),\n saving: state.saving\n };\n \n }\n}\n\nfunction controlIcon(icon, title, hiddenOpt, handler) {\n var hidden = hiddenOpt !== undefined ? hiddenOpt : false;\n return ReactUtils.nullIf(React.createElement(\"button\", {\n \"aria-label\": title,\n className: \"px-2 py-1 rounded text-sm bg-gray-100 text-gray-500 hover:bg-gray-300 hover:text-gray-900 overflow-hidden focus:outline-none focus:bg-gray-300 focus:text-gray-900\",\n title: title,\n disabled: hidden,\n onClick: handler\n }, React.createElement(\"i\", {\n className: \"fas fa-fw \" + icon\n })), hidden);\n}\n\nfunction CoursesReview__ChecklistEditor(Props) {\n var reviewChecklist = Props.reviewChecklist;\n var updateReviewChecklistCB = Props.updateReviewChecklistCB;\n var closeEditModeCB = Props.closeEditModeCB;\n var targetId = Props.targetId;\n var match = React.useReducer(reducer, {\n reviewChecklist: initialStateForReviewChecklist(reviewChecklist),\n saving: false\n });\n var send = match[1];\n var state = match[0];\n return React.createElement(\"div\", undefined, React.createElement(\"div\", {\n className: \"flex items-center px-4 md:px-6 py-3 bg-white border-b sticky top-0 z-50 h-16\"\n }, React.createElement(\"div\", {\n className: \"flex flex-1 items-center justify-between\"\n }, React.createElement(\"h5\", {\n className: \"font-medium flex items-center tracking-wide\"\n }, ArrayUtils.isEmpty(reviewChecklist) ? t(undefined, undefined, \"create_review_checklist\") : t(undefined, undefined, \"edit_review_checklist\")))), React.createElement(DisablingCover.make, {\n disabled: state.saving,\n children: null\n }, React.createElement(\"div\", {\n className: \"p-4 md:p-6 relative\"\n }, React.createElement(\"div\", undefined, state.reviewChecklist.map(function (reviewChecklistItem, itemIndex) {\n var title = CoursesReview__ReviewChecklistItem.title(reviewChecklistItem);\n return React.createElement(Spread.make, {\n props: {\n \"data-checklist-item\": String(itemIndex)\n },\n children: React.createElement(\"div\", {\n className: \"flex items-start gap-1\"\n }, React.createElement(\"div\", {\n key: String(itemIndex),\n \"aria-label\": \"checklist-item-\" + String(itemIndex),\n className: \"p-3 md:p-5 mb-5 flex flex-col flex-1 bg-gray-100 rounded-lg\"\n }, React.createElement(\"div\", {\n className: \"flex\"\n }, React.createElement(\"div\", {\n className: \"w-full\"\n }, React.createElement(\"input\", {\n className: \"checklist-editor__checklist-item-title h-11 text-sm focus:outline-none focus:bg-white focus:border-primary-300\",\n id: \"checklist_\" + String(itemIndex) + \"_title\",\n placeholder: t(undefined, undefined, \"checklist_title.placeholder\"),\n type: \"text\",\n value: CoursesReview__ReviewChecklistItem.title(reviewChecklistItem),\n onChange: (function ($$event) {\n updateChecklistItemTitle(itemIndex, $$event.target.value, reviewChecklistItem, send);\n })\n }), React.createElement(School__InputGroupError.make, {\n message: t(undefined, undefined, \"checklist_title.error_message\"),\n active: title.trim() === \"\"\n }))), React.createElement(\"div\", undefined, CoursesReview__ReviewChecklistItem.results(reviewChecklistItem).map(function (resultItem, resultIndex) {\n var feedback = Belt_Option.getWithDefault(CoursesReview__ReviewChecklistResult.feedback(resultItem), \"\");\n var title = CoursesReview__ReviewChecklistResult.title(resultItem);\n return React.createElement(Spread.make, {\n props: {\n \"data-result-item\": String(resultIndex)\n },\n children: React.createElement(\"div\", {\n className: \"ps-2 md:ps-4 mt-2\"\n }, React.createElement(\"div\", {\n className: \"flex\"\n }, React.createElement(\"label\", {\n className: \"shrink-0 rounded border border-gray-300 bg-gray-50 w-4 h-4 me-2 mt-3 cursor-not-allowed\",\n title: t(undefined, undefined, \"disabled\")\n }), React.createElement(\"div\", {\n className: \"w-full bg-gray-50 relative\"\n }, React.createElement(\"div\", {\n className: \"flex justify-between gap-2 bg-white border border-gray-300 border-b-transparent rounded-t focus-within:outline-none focus-within:bg-white focus-within:border-primary-300\"\n }, React.createElement(\"input\", {\n className: \"checklist-editor__checklist-result-item-title border-none h-10 pe-0 focus:outline-none\",\n id: \"result_\" + String(itemIndex) + String(resultIndex) + \"_title\",\n placeholder: t(undefined, undefined, \"checklist_item_title.placeholder\"),\n type: \"text\",\n value: CoursesReview__ReviewChecklistResult.title(resultItem),\n onChange: (function ($$event) {\n updateChecklistResultTitle(itemIndex, resultIndex, $$event.target.value, reviewChecklistItem, resultItem, send);\n })\n }), React.createElement(\"div\", {\n className: \"flex h-10 me-1 space-x-1 items-center justify-center\"\n }, controlIcon(\"fa-arrow-up\", t(undefined, undefined, \"checklist_item_title.move_up_button_title\"), resultIndex <= 0, (function (param) {\n Curry._1(send, {\n TAG: /* UpdateChecklistItem */2,\n _0: CoursesReview__ReviewChecklistItem.moveResultItemUp(resultIndex, reviewChecklistItem),\n _1: itemIndex\n });\n })), controlIcon(\"fa-arrow-down\", t(undefined, undefined, \"checklist_item_title.move_down_button_title\"), resultIndex === (CoursesReview__ReviewChecklistItem.results(reviewChecklistItem).length - 1 | 0), (function (param) {\n Curry._1(send, {\n TAG: /* UpdateChecklistItem */2,\n _0: CoursesReview__ReviewChecklistItem.moveResultItemDown(resultIndex, reviewChecklistItem),\n _1: itemIndex\n });\n })), controlIcon(\"fa-trash-alt\", t(undefined, undefined, \"checklist_item_title.remove_button_title\"), undefined, (function (param) {\n removeChecklistResult(itemIndex, resultIndex, reviewChecklistItem, send);\n })))), React.createElement(\"textarea\", {\n className: \"appearance-none border border-gray-300 bg-transparent rounded-b text-sm align-top py-2 px-4 leading-relaxed w-full focus:outline-none focus:bg-white focus:border-primary-300\",\n id: \"result_\" + String(itemIndex) + String(resultIndex) + \"_feedback\",\n cols: 33,\n placeholder: t(undefined, undefined, \"checklist_item_description.placeholder\"),\n rows: 2,\n type: \"text\",\n value: feedback,\n onChange: (function ($$event) {\n updateChecklistResultFeedback(itemIndex, resultIndex, $$event.target.value, reviewChecklistItem, send);\n })\n }), React.createElement(School__InputGroupError.make, {\n message: t(undefined, undefined, \"checklist_item_description.error_message\"),\n active: title.trim() === \"\"\n })))),\n key: String(itemIndex) + String(resultIndex)\n });\n }), React.createElement(\"button\", {\n className: \"checklist-editor__add-result-btn ms-2 md:ms-4 mt-3 flex items-center focus:outline-none\",\n onClick: (function (param) {\n addEmptyResultItem(send, reviewChecklistItem, itemIndex);\n })\n }, React.createElement(\"span\", {\n className: \"checklist-editor__add-result-btn-check shrink-0 rounded border border-gray-300 bg-gray-50 w-4 h-4 me-2\",\n title: t(undefined, undefined, \"add_result\")\n }), React.createElement(\"span\", {\n className: \"checklist-editor__add-result-btn-text flex items-center text-sm font-semibold bg-gray-50 px-3 py-1 rounded border border-dashed border-gray-600\"\n }, React.createElement(\"i\", {\n className: \"fas fa-plus text-xs me-2\"\n }), t(undefined, undefined, \"add_result\"))))), React.createElement(\"div\", {\n className: \"border border-gray-300 bg-white divide-y divide-gray-300 rounded flex flex-col text-xs sticky top-0 overflow-hidden\"\n }, controlIcon(\"fa-arrow-up\", t(undefined, undefined, \"checklist_title.move_up_button_title\"), itemIndex <= 0, (function (param) {\n Curry._1(send, {\n TAG: /* SwapUpReviewChecklistItem */0,\n _0: itemIndex\n });\n })), controlIcon(\"fa-arrow-down\", t(undefined, undefined, \"checklist_title.move_down_button_title\"), itemIndex === (state.reviewChecklist.length - 1 | 0), (function (param) {\n Curry._1(send, {\n TAG: /* SwapDownReviewChecklistItem */1,\n _0: itemIndex\n });\n })), controlIcon(\"fa-trash-alt\", t(undefined, undefined, \"checklist_title.remove_button_title\"), undefined, (function (param) {\n Curry._1(send, {\n TAG: /* RemoveChecklistItem */3,\n _0: itemIndex\n });\n })))),\n key: String(itemIndex)\n });\n }), React.createElement(\"div\", undefined, React.createElement(\"button\", {\n \"aria-label\": t(undefined, undefined, \"add_checklist_item\"),\n className: \"flex items-center text-sm font-semibold bg-white rounded-md border border-dashed border-gray-600 w-full hover:text-primary-500 hover:bg-white hover:border-primary-500 hover:shadow-md focus:outline-none focus:text-primary-500 focus:bg-white focus:border-primary-500 focus:shadow-md\",\n onClick: (function (param) {\n Curry._1(send, /* AddEmptyChecklistItem */0);\n })\n }, React.createElement(\"span\", {\n className: \"bg-gray-100 py-2 w-10 text-center\"\n }, React.createElement(\"i\", {\n className: \"fas fa-plus text-sm\"\n })), React.createElement(\"span\", {\n className: \"px-3 py-2\"\n }, t(undefined, undefined, \"add_checklist_item\")))))), React.createElement(\"div\", {\n className: \"flex bg-gray-50 border-t flex-row-reverse sticky bottom-0 px-4 py-2 md:py-4\"\n }, React.createElement(\"button\", {\n className: \"btn btn-success\",\n disabled: state.saving || invalidChecklist(state.reviewChecklist),\n onClick: (function (param) {\n updateReviewChecklist(targetId, state.reviewChecklist, send, updateReviewChecklistCB);\n })\n }, t(undefined, undefined, \"save_checklist\")), React.createElement(\"button\", {\n className: \"btn btn-subtle me-4\",\n onClick: (function (param) {\n Curry._1(closeEditModeCB, undefined);\n })\n }, t(undefined, undefined, \"cancel\")))));\n}\n\nvar make = CoursesReview__ChecklistEditor;\n\nexport {\n t ,\n str ,\n UpdateReviewChecklistMutation ,\n updateReviewChecklist ,\n updateChecklistItemTitle ,\n updateChecklistResultTitle ,\n updateChecklistResultFeedback ,\n addEmptyResultItem ,\n removeChecklistResult ,\n initialStateForReviewChecklist ,\n invalidTitle ,\n invalidChecklist ,\n reducer ,\n controlIcon ,\n make ,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as Curry from \"../../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as ArrayUtils from \"../../../shared/utils/ArrayUtils.bs.js\";\nimport * as CoursesReview__ChecklistShow from \"./CoursesReview__ChecklistShow.bs.js\";\nimport * as CoursesReview__ChecklistEditor from \"./CoursesReview__ChecklistEditor.bs.js\";\n\nvar partial_arg = \"components.CoursesReview__Checklist\";\n\nfunction t(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nfunction str(prim) {\n return prim;\n}\n\nfunction closeEditMode(setState, param) {\n return Curry._1(setState, (function (param) {\n return /* Show */1;\n }));\n}\n\nfunction showEditor(setState, param) {\n return Curry._1(setState, (function (param) {\n return /* Edit */0;\n }));\n}\n\nfunction updateReviewChecklist(setState, updateReviewChecklistCB, reviewChecklist) {\n Curry._1(updateReviewChecklistCB, reviewChecklist);\n return Curry._1(setState, (function (param) {\n return /* Show */1;\n }));\n}\n\nfunction handleEmpty(setState) {\n return React.createElement(\"div\", {\n className: \"p-4 md:p-6\"\n }, React.createElement(\"button\", {\n className: \"bg-gray-50 border border-primary-500 border-dashed rounded-lg p-3 md:p-5 flex items-center w-full hover:bg-gray-50 hover:border-primary-600 hover:shadow-lg focus:outline-none\",\n onClick: (function (param) {\n Curry._1(setState, (function (param) {\n return /* Edit */0;\n }));\n })\n }, React.createElement(\"span\", {\n className: \"inline-flex shrink-0 bg-white w-14 h-14 border border-dashed border-primary-500 rounded-full items-center justify-center shadow-md\"\n }, React.createElement(\"span\", {\n className: \"inline-flex items-center justify-center shrink-0 w-10 h-10 rounded-full bg-primary-500 text-white\"\n }, React.createElement(\"i\", {\n className: \"fa fa-plus\"\n }))), React.createElement(\"span\", {\n className: \"block ms-4\"\n }, React.createElement(\"span\", {\n className: \"block text-base font-semibold text-primary-500\"\n }, t(undefined, undefined, \"create_review_checklist\")), React.createElement(\"span\", {\n className: \"text-sm block\"\n }, t(undefined, undefined, \"create_review_checklist_description\")))));\n}\n\nfunction CoursesReview__Checklist(Props) {\n var reviewChecklist = Props.reviewChecklist;\n var updateFeedbackCB = Props.updateFeedbackCB;\n var feedback = Props.feedback;\n var updateReviewChecklistCB = Props.updateReviewChecklistCB;\n var targetId = Props.targetId;\n var cancelCB = Props.cancelCB;\n var overlaySubmission = Props.overlaySubmission;\n var submissionDetails = Props.submissionDetails;\n var match = React.useState(function () {\n if (ArrayUtils.isEmpty(reviewChecklist)) {\n return /* Edit */0;\n } else {\n return /* Show */1;\n }\n });\n var setState = match[1];\n return React.createElement(\"div\", undefined, match[0] ? React.createElement(CoursesReview__ChecklistShow.make, {\n reviewChecklist: reviewChecklist,\n feedback: feedback,\n updateFeedbackCB: updateFeedbackCB,\n showEditorCB: (function (param) {\n return Curry._1(setState, (function (param) {\n return /* Edit */0;\n }));\n }),\n cancelCB: cancelCB,\n overlaySubmission: overlaySubmission,\n submissionDetails: submissionDetails\n }) : React.createElement(CoursesReview__ChecklistEditor.make, {\n reviewChecklist: reviewChecklist,\n updateReviewChecklistCB: (function (param) {\n Curry._1(updateReviewChecklistCB, param);\n return Curry._1(setState, (function (param) {\n return /* Show */1;\n }));\n }),\n closeEditModeCB: (function (param) {\n return Curry._1(setState, (function (param) {\n return /* Show */1;\n }));\n }),\n targetId: targetId\n }));\n}\n\nvar make = CoursesReview__Checklist;\n\nexport {\n t ,\n str ,\n closeEditMode ,\n showEditor ,\n updateReviewChecklist ,\n handleEmpty ,\n make ,\n}\n/* I18n Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as Icon from \"../../../shared/Icon.bs.js\";\nimport * as Curry from \"../../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as Avatar from \"../../../shared/Avatar.bs.js\";\nimport * as DateFns from \"../../../shared/utils/DateFns.bs.js\";\nimport * as UserProxy from \"../../../shared/types/UserProxy.bs.js\";\nimport * as Js_promise from \"../../../../../node_modules/rescript/lib/es6/js_promise.js\";\nimport * as GraphqlQuery from \"../../../shared/utils/GraphqlQuery.bs.js\";\nimport * as CoursesReview__Reviewer from \"../types/CoursesReview__Reviewer.bs.js\";\nimport * as CoursesReview__SubmissionDetails from \"../types/CoursesReview__SubmissionDetails.bs.js\";\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.CoursesReview__ReviewerManager\";\n\nfunction t(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nvar Raw = {};\n\nvar query = \"mutation AssignReviewerMutation($submissionId: ID!) {\\nassignReviewer(submissionId: $submissionId) {\\nreviewer {\\n...UserProxyFragment \\n}\\n\\n}\\n\\n}\\n\" + UserProxy.Fragment.query;\n\nfunction parse(value) {\n var value$1 = value.assignReviewer;\n var value$2 = value$1.reviewer;\n return {\n assignReviewer: {\n reviewer: UserProxy.Fragment.verifyArgsAndParse(\"UserProxyFragment\", value$2)\n }\n };\n}\n\nfunction serialize(value) {\n var value$1 = value.assignReviewer;\n var value$2 = value$1.reviewer;\n var reviewer = UserProxy.Fragment.serialize(value$2);\n var assignReviewer = {\n reviewer: reviewer\n };\n return {\n assignReviewer: assignReviewer\n };\n}\n\nfunction serializeVariables(inp) {\n return {\n submissionId: inp.submissionId\n };\n}\n\nfunction makeVariables(submissionId, param) {\n return {\n submissionId: submissionId\n };\n}\n\nvar AssignReviewerMutation_inner = {\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables\n};\n\nvar include = GraphqlQuery.Extender({\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar make = include.make;\n\nvar AssignReviewerMutation_Graphql_error = include.Graphql_error;\n\nvar AssignReviewerMutation_decodeNotification = include.decodeNotification;\n\nvar AssignReviewerMutation_decodeObject = include.decodeObject;\n\nvar AssignReviewerMutation_decodeNotifications = include.decodeNotifications;\n\nvar AssignReviewerMutation_decodeErrors = include.decodeErrors;\n\nvar AssignReviewerMutation_flashNotifications = include.flashNotifications;\n\nvar AssignReviewerMutation_sendQuery = include.sendQuery;\n\nvar AssignReviewerMutation_query = include.query;\n\nvar AssignReviewerMutation_fetch = include.$$fetch;\n\nvar AssignReviewerMutation = {\n AssignReviewerMutation_inner: AssignReviewerMutation_inner,\n Raw: Raw,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables,\n Graphql_error: AssignReviewerMutation_Graphql_error,\n decodeNotification: AssignReviewerMutation_decodeNotification,\n decodeObject: AssignReviewerMutation_decodeObject,\n decodeNotifications: AssignReviewerMutation_decodeNotifications,\n decodeErrors: AssignReviewerMutation_decodeErrors,\n flashNotifications: AssignReviewerMutation_flashNotifications,\n sendQuery: AssignReviewerMutation_sendQuery,\n query: AssignReviewerMutation_query,\n $$fetch: AssignReviewerMutation_fetch,\n make: make\n};\n\nvar Raw$1 = {};\n\nvar query$1 = \"mutation ReassignReviewerMutation($submissionId: ID!) {\\nreassignReviewer(submissionId: $submissionId) {\\nreviewer {\\n...UserProxyFragment \\n}\\n\\n}\\n\\n}\\n\" + UserProxy.Fragment.query;\n\nfunction parse$1(value) {\n var value$1 = value.reassignReviewer;\n var value$2 = value$1.reviewer;\n return {\n reassignReviewer: {\n reviewer: UserProxy.Fragment.verifyArgsAndParse(\"UserProxyFragment\", value$2)\n }\n };\n}\n\nfunction serialize$1(value) {\n var value$1 = value.reassignReviewer;\n var value$2 = value$1.reviewer;\n var reviewer = UserProxy.Fragment.serialize(value$2);\n var reassignReviewer = {\n reviewer: reviewer\n };\n return {\n reassignReviewer: reassignReviewer\n };\n}\n\nfunction serializeVariables$1(inp) {\n return {\n submissionId: inp.submissionId\n };\n}\n\nfunction makeVariables$1(submissionId, param) {\n return {\n submissionId: submissionId\n };\n}\n\nvar ReassignReviewerMutation_inner = {\n Raw: Raw$1,\n query: query$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n makeVariables: makeVariables$1\n};\n\nvar include$1 = GraphqlQuery.Extender({\n Raw: Raw$1,\n query: query$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar make$1 = include$1.make;\n\nvar ReassignReviewerMutation_Graphql_error = include$1.Graphql_error;\n\nvar ReassignReviewerMutation_decodeNotification = include$1.decodeNotification;\n\nvar ReassignReviewerMutation_decodeObject = include$1.decodeObject;\n\nvar ReassignReviewerMutation_decodeNotifications = include$1.decodeNotifications;\n\nvar ReassignReviewerMutation_decodeErrors = include$1.decodeErrors;\n\nvar ReassignReviewerMutation_flashNotifications = include$1.flashNotifications;\n\nvar ReassignReviewerMutation_sendQuery = include$1.sendQuery;\n\nvar ReassignReviewerMutation_query = include$1.query;\n\nvar ReassignReviewerMutation_fetch = include$1.$$fetch;\n\nvar ReassignReviewerMutation = {\n ReassignReviewerMutation_inner: ReassignReviewerMutation_inner,\n Raw: Raw$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n makeVariables: makeVariables$1,\n Graphql_error: ReassignReviewerMutation_Graphql_error,\n decodeNotification: ReassignReviewerMutation_decodeNotification,\n decodeObject: ReassignReviewerMutation_decodeObject,\n decodeNotifications: ReassignReviewerMutation_decodeNotifications,\n decodeErrors: ReassignReviewerMutation_decodeErrors,\n flashNotifications: ReassignReviewerMutation_flashNotifications,\n sendQuery: ReassignReviewerMutation_sendQuery,\n query: ReassignReviewerMutation_query,\n $$fetch: ReassignReviewerMutation_fetch,\n make: make$1\n};\n\nfunction assignReviewer(submissionId, setSaving, updateReviewerCB) {\n Curry._1(setSaving, (function (param) {\n return true;\n }));\n Js_promise.$$catch((function (param) {\n Curry._1(setSaving, (function (param) {\n return false;\n }));\n return Promise.resolve(undefined);\n }), Js_promise.then_((function (response) {\n Curry._1(updateReviewerCB, UserProxy.makeFromJs(response.assignReviewer.reviewer));\n Curry._1(setSaving, (function (param) {\n return false;\n }));\n return Promise.resolve(undefined);\n }), Curry._3(make, false, undefined, {\n submissionId: submissionId\n })));\n}\n\nfunction reassignReviewer(submissionId, setSaving, updateReviewerCB) {\n Curry._1(setSaving, (function (param) {\n return true;\n }));\n Js_promise.$$catch((function (param) {\n Curry._1(setSaving, (function (param) {\n return false;\n }));\n return Promise.resolve(undefined);\n }), Js_promise.then_((function (response) {\n Curry._1(updateReviewerCB, UserProxy.makeFromJs(response.reassignReviewer.reviewer));\n Curry._1(setSaving, (function (param) {\n return false;\n }));\n return Promise.resolve(undefined);\n }), Curry._3(make$1, undefined, undefined, {\n submissionId: submissionId\n })));\n}\n\nfunction CoursesReview__ReviewerManager(Props) {\n var submissionId = Props.submissionId;\n var submissionDetails = Props.submissionDetails;\n var updateReviewerCB = Props.updateReviewerCB;\n var match = React.useState(function () {\n return false;\n });\n var setSaving = match[1];\n var saving = match[0];\n var reviewer = CoursesReview__SubmissionDetails.reviewer(submissionDetails);\n var tmp;\n if (reviewer !== undefined) {\n var avatarUrl = UserProxy.avatarUrl(CoursesReview__Reviewer.user(reviewer));\n tmp = [\n React.createElement(\"div\", {\n key: \"reviewer-details\",\n className: \"inline-flex bg-gray-50 px-3 py-2 mt-2 rounded-md\"\n }, avatarUrl !== undefined ? React.createElement(\"img\", {\n className: \"h-9 w-9 md:h-10 md:w-10 text-xs border border-gray-300 rounded-full overflow-hidden shrink-0 object-cover\",\n src: avatarUrl\n }) : React.createElement(Avatar.make, {\n name: UserProxy.name(CoursesReview__Reviewer.user(reviewer)),\n className: \"h-9 w-9 md:h-10 md:w-10 text-xs border border-gray-300 rounded-full overflow-hidden shrink-0 object-cover\"\n }), React.createElement(\"div\", {\n className: \"ms-2\"\n }, React.createElement(\"p\", {\n className: \"text-sm font-semibold\"\n }, UserProxy.name(CoursesReview__Reviewer.user(reviewer))), React.createElement(\"p\", {\n className: \"text-xs text-gray-800\"\n }, t([[\n \"date\",\n DateFns.formatDistanceToNow(CoursesReview__Reviewer.assignedAt(reviewer), undefined, true, undefined)\n ]], undefined, \"assigned_at\")))),\n React.createElement(\"div\", {\n key: \"change-reviewer-button\",\n className: \"flex flex-col md:flex-row items-center mt-4\"\n }, React.createElement(\"p\", {\n className: \"text-sm pe-4\"\n }, t([[\n \"current_coach_name\",\n UserProxy.name(CoursesReview__Reviewer.user(reviewer))\n ]], undefined, \"remove_reviewer_assign_to_me\")), React.createElement(\"button\", {\n className: \"btn md:btn-small btn-default w-full md:w-auto mt-2 md:mt-0\",\n disabled: saving,\n onClick: (function (param) {\n reassignReviewer(submissionId, setSaving, updateReviewerCB);\n })\n }, t(undefined, undefined, \"change_reviewer_and_start_review\")))\n ];\n } else {\n tmp = [\n React.createElement(\"div\", {\n key: \"no-reviewer\",\n className: \"flex items-center justify-center\"\n }, React.createElement(\"div\", {\n className: \"h-24 w-24 md:h-30 md:w-30 rounded-xl bg-gray-100 flex items-center justify-center\"\n }, React.createElement(Icon.make, {\n className: \"if i-eye-solid text-gray-400 text-4xl\"\n }))),\n React.createElement(\"div\", {\n key: \"start-review\",\n className: \"flex items-center justify-center mt-4\"\n }, React.createElement(\"button\", {\n className: \"btn btn-primary w-full md:w-auto\",\n disabled: saving,\n onClick: (function (param) {\n assignReviewer(submissionId, setSaving, updateReviewerCB);\n })\n }, t(undefined, undefined, \"start_review\")))\n ];\n }\n return React.createElement(\"div\", {\n className: \"w-full p-4 md:p-6 space-y-8 mx-auto\"\n }, React.createElement(\"div\", undefined, tmp));\n}\n\nvar UserProxyFragment;\n\nvar make$2 = CoursesReview__ReviewerManager;\n\nexport {\n str ,\n t ,\n UserProxyFragment ,\n AssignReviewerMutation ,\n ReassignReviewerMutation ,\n assignReviewer ,\n reassignReviewer ,\n make$2 as make,\n}\n/* include Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as Link from \"../../../shared/components/Link.bs.js\";\nimport * as React from \"react\";\nimport * as PfIcon from \"../../../packages/pf-icon/src/PfIcon.bs.js\";\nimport * as $$String from \"../../../../../node_modules/rescript/lib/es6/string.js\";\nimport * as DateFns from \"../../../shared/utils/DateFns.bs.js\";\nimport * as ReactUtils from \"../../../shared/utils/ReactUtils.bs.js\";\nimport * as CoursesReview__SubmissionMeta from \"../types/CoursesReview__SubmissionMeta.bs.js\";\n\nimport \"./CoursesReview__SubmissionInfoCard.css\"\n;\n\nvar partial_arg = \"components.CoursesReview__SubmissionInfoCard\";\n\nfunction t(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nfunction str(prim) {\n return prim;\n}\n\nfunction cardClasses(submission, selected) {\n var match = CoursesReview__SubmissionMeta.archivedAt(submission);\n var match$1 = CoursesReview__SubmissionMeta.passedAt(submission);\n var match$2 = CoursesReview__SubmissionMeta.evaluatedAt(submission);\n return \"inline-block bg-white relative submission-info__tab shrink-0 rounded-lg transition \" + (\n selected ? \"border border-primary-400 \" : \"bg-white/50 border border-gray-300 hover:bg-white \"\n ) + (\n match !== undefined ? \"submission-info__tab-deleted cursor-not-allowed focus:outline-none\" : (\n match$1 !== undefined ? \"submission-info__tab-completed focus:ring focus:ring-focusColor-400 shadow hover:shadow-lg\" : (\n match$2 !== undefined ? \"submission-info__tab-rejected focus:ring focus:ring-focusColor-400 shadow hover:shadow-lg\" : \"submission-info__tab-pending focus:ring focus:ring-focusColor-400 shadow hover:shadow-lg\"\n )\n )\n );\n}\n\nfunction showSubmissionStatus(submission) {\n var match = CoursesReview__SubmissionMeta.archivedAt(submission);\n var match$1 = CoursesReview__SubmissionMeta.passedAt(submission);\n var match$2 = CoursesReview__SubmissionMeta.evaluatedAt(submission);\n var match$3 = match !== undefined ? [\n t(undefined, undefined, \"deleted\"),\n \"bg-gray-300 text-gray-800 \"\n ] : (\n match$1 !== undefined ? [\n t(undefined, undefined, \"completed\"),\n \"bg-green-100 text-green-800\"\n ] : (\n match$2 !== undefined ? [\n t(undefined, undefined, \"rejected\"),\n \"bg-red-100 text-red-700\"\n ] : [\n t(undefined, undefined, \"pending_review\"),\n \"bg-orange-100 text-orange-800 \"\n ]\n )\n );\n return React.createElement(\"div\", {\n className: \"font-semibold px-3 py-px rounded \" + match$3[1]\n }, React.createElement(\"span\", {\n className: \"hidden md:block\"\n }, match$3[0]), React.createElement(\"span\", {\n className: \"md:hidden block\"\n }, React.createElement(PfIcon.make, {\n className: \"if i-check-square-alt-solid if-fw\"\n })));\n}\n\nfunction linkUrl(submissionId, filterString) {\n return \"/submissions/\" + submissionId + \"/review\" + (\n $$String.trim(filterString) === \"\" ? \"\" : \"?\" + filterString\n ) + \"\";\n}\n\nfunction submissionInfoCardContent(submission, submissionNumber) {\n return React.createElement(\"div\", {\n className: \"px-4 py-2 flex flex-row items-center justify-between min-w-min\"\n }, React.createElement(\"div\", {\n className: \"flex flex-col md:pe-6\"\n }, React.createElement(\"h2\", {\n className: \"font-semibold text-sm leading-tight\"\n }, React.createElement(\"p\", {\n className: \"hidden md:block\"\n }, t(undefined, undefined, \"submission_hash\") + \" #\" + String(submissionNumber)), React.createElement(\"p\", {\n className: \"md:hidden\"\n }, \"#\" + String(submissionNumber))), React.createElement(\"span\", {\n className: \"text-xs text-gray-800 pt-px whitespace-nowrap\"\n }, DateFns.formatPreset(CoursesReview__SubmissionMeta.createdAt(submission), undefined, true, undefined, undefined))), React.createElement(\"div\", {\n className: \"hidden md:flex items-center space-x-2 text-xs w-auto\"\n }, ReactUtils.nullUnless(React.createElement(\"div\", {\n className: \"flex items-center justify-center bg-primary-100 text-primary-600 border border-transparent font-semibold p-1 rounded\"\n }, React.createElement(PfIcon.make, {\n className: \"if i-comment-alt-regular if-fw\"\n })), CoursesReview__SubmissionMeta.feedbackSent(submission)), showSubmissionStatus(submission)));\n}\n\nfunction CoursesReview__SubmissionInfoCard(Props) {\n var submission = Props.submission;\n var submissionNumber = Props.submissionNumber;\n var selected = Props.selected;\n var filterString = Props.filterString;\n var _archivedAt = CoursesReview__SubmissionMeta.archivedAt(submission);\n if (_archivedAt !== undefined) {\n return React.createElement(\"div\", {\n key: CoursesReview__SubmissionMeta.id(submission),\n className: cardClasses(submission, selected),\n title: t(undefined, undefined, \"submission_hash\") + \" #\" + String(submissionNumber)\n }, submissionInfoCardContent(submission, submissionNumber));\n } else {\n return React.createElement(Link.make, {\n href: linkUrl(CoursesReview__SubmissionMeta.id(submission), filterString),\n className: cardClasses(submission, selected),\n title: t(undefined, undefined, \"submission_hash\") + \" #\" + String(submissionNumber),\n children: submissionInfoCardContent(submission, submissionNumber),\n key: CoursesReview__SubmissionMeta.id(submission)\n });\n }\n}\n\nvar make = CoursesReview__SubmissionInfoCard;\n\nexport {\n t ,\n str ,\n cardClasses ,\n showSubmissionStatus ,\n linkUrl ,\n submissionInfoCardContent ,\n make ,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as Icon from \"../../../shared/Icon.bs.js\";\nimport * as Curry from \"../../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as FaIcon from \"../../../shared/components/FaIcon.bs.js\";\nimport * as DateFns from \"../../../shared/utils/DateFns.bs.js\";\nimport * as ReactUtils from \"../../../shared/utils/ReactUtils.bs.js\";\nimport * as Belt_Option from \"../../../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as Caml_option from \"../../../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as MarkdownBlock from \"../../../shared/components/MarkdownBlock.bs.js\";\nimport * as CoursesReview__SubmissionReport from \"../types/CoursesReview__SubmissionReport.bs.js\";\n\nvar partial_arg = \"components.CoursesReview__SubmissionReportShow\";\n\nfunction t(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nfunction str(prim) {\n return prim;\n}\n\nfunction reducer(state, action) {\n return {\n showReport: !state.showReport\n };\n}\n\nfunction reportStatusIconClasses(report) {\n var match = CoursesReview__SubmissionReport.status(report);\n switch (match) {\n case /* Queued */0 :\n return \"if i-clock-light text-2xl text-gray-600 rounded-full\";\n case /* InProgress */1 :\n return \"if animate-spin i-dashed-circle-regular text-2xl text-yellow-500 rounded-full\";\n case /* Success */2 :\n return \"if i-check-circle-solid text-2xl text-green-500 bg-white rounded-full\";\n case /* Failure */3 :\n return \"if i-times-circle-solid text-2xl text-red-500 bg-white rounded-full\";\n case /* Error */4 :\n return \"if i-exclamation-triangle-circle-solid text-2xl text-gray-600 bg-white rounded-full\";\n \n }\n}\n\nfunction reportStatusString(report) {\n var heading = CoursesReview__SubmissionReport.heading(report);\n if (heading !== undefined) {\n return heading;\n }\n var match = CoursesReview__SubmissionReport.status(report);\n switch (match) {\n case /* Queued */0 :\n return t(undefined, undefined, \"report_status_string.queued\");\n case /* InProgress */1 :\n return t(undefined, undefined, \"report_status_string.in_progress\");\n case /* Success */2 :\n return t(undefined, undefined, \"report_status_string.success\");\n case /* Failure */3 :\n return t(undefined, undefined, \"report_status_string.failure\");\n case /* Error */4 :\n return t(undefined, undefined, \"report_status_string.error\");\n \n }\n}\n\nfunction reportConclusionTimeString(report) {\n var match = CoursesReview__SubmissionReport.status(report);\n if (match === 1) {\n return \"Started \" + Belt_Option.mapWithDefault(CoursesReview__SubmissionReport.startedAt(report), \"\", (function (t) {\n return DateFns.formatDistanceToNowStrict(t, true, undefined, undefined, undefined);\n }));\n }\n if (match === 0) {\n return \"Queued \" + DateFns.formatDistanceToNowStrict(CoursesReview__SubmissionReport.queuedAt(report), true, undefined, undefined, undefined);\n }\n var match$1 = CoursesReview__SubmissionReport.startedAt(report);\n var match$2 = CoursesReview__SubmissionReport.completedAt(report);\n return \"Finished \" + Belt_Option.mapWithDefault(CoursesReview__SubmissionReport.completedAt(report), \"\", (function (t) {\n return DateFns.formatDistanceToNowStrict(t, true, undefined, undefined, undefined);\n })) + (\n match$1 !== undefined && match$2 !== undefined ? \", and took \" + DateFns.formatDistance(Caml_option.valFromOption(match$2), Caml_option.valFromOption(match$1), true, undefined, undefined) : \"\"\n );\n}\n\nfunction CoursesReview__SubmissionReportShow(Props) {\n var report = Props.report;\n var match = React.useReducer(reducer, {\n showReport: false\n });\n var send = match[1];\n var state = match[0];\n var url = CoursesReview__SubmissionReport.targetUrl(report);\n var toggleTestReportIcon = state.showReport ? \"i-arrows-collapse-light\" : \"i-arrows-expand-light\";\n var match$1 = state.showReport;\n var match$2 = CoursesReview__SubmissionReport.report(report);\n return React.createElement(\"div\", {\n className: \"px-4 py-1 md:py-2\"\n }, React.createElement(\"div\", {\n className: \"bg-gray-100 p-2 md:p-4 rounded-md\"\n }, React.createElement(\"div\", {\n className: \"flex items-center justify-between text-sm\"\n }, React.createElement(\"div\", {\n className: \"flex items-start gap-3\"\n }, React.createElement(\"div\", {\n className: \"pt-1\"\n }, React.createElement(Icon.make, {\n className: reportStatusIconClasses(report)\n })), React.createElement(\"div\", undefined, React.createElement(\"div\", {\n className: \"text-xs\"\n }, url !== undefined ? React.createElement(\"a\", {\n className: \"text-primary-500 underline font-medium hover:text-primary-600\",\n href: url,\n target: \"_blank\"\n }, CoursesReview__SubmissionReport.reporter(report), React.createElement(FaIcon.make, {\n classes: \"if i-external-link-regular ms-1\"\n })) : CoursesReview__SubmissionReport.reporter(report)), React.createElement(\"p\", {\n className: \"font-semibold\"\n }, reportStatusString(report)), React.createElement(\"p\", {\n className: \"text-gray-600 text-xs mt-1\"\n }, reportConclusionTimeString(report)))), ReactUtils.nullIf(React.createElement(\"button\", {\n className: \"inline-flex items-center text-xs text-gray-800 px-2 py-2 rounded font-semibold hover:bg-gray-300 focus:bg-gray-300 focus:ring-2 focus:ring-offset-2 focus:ring-focusColor-500 transition\",\n onClick: (function (param) {\n Curry._1(send, /* ChangeReportVisibility */0);\n })\n }, React.createElement(\"span\", {\n className: \"hidden md:block pe-3 \"\n }, state.showReport ? t(undefined, undefined, \"hide_report_button\") : t(undefined, undefined, \"show_report_button\")), React.createElement(\"span\", {\n className: \"inline-block w-5 h-5\"\n }, React.createElement(Icon.make, {\n className: \"if text-xl \" + toggleTestReportIcon\n }))), Belt_Option.isNone(CoursesReview__SubmissionReport.report(report)))), match$1 && match$2 !== undefined && state.showReport ? React.createElement(\"div\", undefined, React.createElement(\"p\", {\n className: \"text-sm font-semibold mt-4\"\n }, t(undefined, undefined, \"test_report\")), React.createElement(\"div\", {\n className: \"bg-white p-3 rounded-md border mt-1\"\n }, React.createElement(MarkdownBlock.make, {\n markdown: match$2,\n profile: /* Permissive */0\n }))) : null));\n}\n\nvar make = CoursesReview__SubmissionReportShow;\n\nexport {\n t ,\n str ,\n reducer ,\n reportStatusIconClasses ,\n reportStatusString ,\n reportConclusionTimeString ,\n make ,\n}\n/* I18n Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as Icon from \"../../../shared/Icon.bs.js\";\nimport * as Link from \"../../../shared/components/Link.bs.js\";\nimport * as $$Array from \"../../../../../node_modules/rescript/lib/es6/array.js\";\nimport * as Curry from \"../../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as Avatar from \"../../../shared/Avatar.bs.js\";\nimport * as FaIcon from \"../../../shared/components/FaIcon.bs.js\";\nimport * as PfIcon from \"../../../packages/pf-icon/src/PfIcon.bs.js\";\nimport * as Spread from \"../../../shared/components/Spread.bs.js\";\nimport * as DateFns from \"../../../shared/utils/DateFns.bs.js\";\nimport * as Caml_obj from \"../../../../../node_modules/rescript/lib/es6/caml_obj.js\";\nimport * as DomUtils from \"../../../shared/utils/DomUtils.bs.js\";\nimport * as HelpIcon from \"../../../shared/components/HelpIcon.bs.js\";\nimport * as Js_array from \"../../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as UserProxy from \"../../../shared/types/UserProxy.bs.js\";\nimport * as ArrayUtils from \"../../../shared/utils/ArrayUtils.bs.js\";\nimport * as Caml_array from \"../../../../../node_modules/rescript/lib/es6/caml_array.js\";\nimport * as GradeLabel from \"../../../shared/types/GradeLabel.bs.js\";\nimport * as Js_promise from \"../../../../../node_modules/rescript/lib/es6/js_promise.js\";\nimport * as ReactUtils from \"../../../shared/utils/ReactUtils.bs.js\";\nimport * as Belt_Option from \"../../../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as Caml_option from \"../../../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as WindowUtils from \"../../../shared/utils/WindowUtils.bs.js\";\nimport * as GraphqlQuery from \"../../../shared/utils/GraphqlQuery.bs.js\";\nimport * as ReactHelmet from \"react-helmet\";\nimport * as MarkdownBlock from \"../../../shared/components/MarkdownBlock.bs.js\";\nimport * as DisablingCover from \"../../../shared/components/DisablingCover.bs.js\";\nimport * as MarkdownEditor from \"../../../shared/components/MarkdownEditor.bs.js\";\nimport * as AppRouter__User from \"../../../layouts/app_router/types/AppRouter__User.bs.js\";\nimport * as EvaluationCriterion from \"../../../shared/types/EvaluationCriterion.bs.js\";\nimport * as RescriptReactRouter from \"../../../../../node_modules/@rescript/react/src/RescriptReactRouter.bs.js\";\nimport * as CoursesReview__Grade from \"../types/CoursesReview__Grade.bs.js\";\nimport * as CoursesReview__Filter from \"../types/CoursesReview__Filter.bs.js\";\nimport * as CoursesReview__Student from \"../types/CoursesReview__Student.bs.js\";\nimport * as CoursesReview__Feedback from \"../types/CoursesReview__Feedback.bs.js\";\nimport * as CoursesReview__Reviewer from \"../types/CoursesReview__Reviewer.bs.js\";\nimport * as SubmissionChecklistItem from \"../types/SubmissionChecklistItem.bs.js\";\nimport * as SubmissionChecklistShow from \"./SubmissionChecklistShow.bs.js\";\nimport * as CoursesReview__Checklist from \"./CoursesReview__Checklist.bs.js\";\nimport * as CoursesReview__SubmissionMeta from \"../types/CoursesReview__SubmissionMeta.bs.js\";\nimport * as CoursesReview__ReviewerManager from \"./CoursesReview__ReviewerManager.bs.js\";\nimport * as CoursesReview__SubmissionReport from \"../types/CoursesReview__SubmissionReport.bs.js\";\nimport * as CoursesReview__OverlaySubmission from \"../types/CoursesReview__OverlaySubmission.bs.js\";\nimport * as CoursesReview__SubmissionDetails from \"../types/CoursesReview__SubmissionDetails.bs.js\";\nimport * as CoursesStudents__PersonalCoaches from \"../../students/components/CoursesStudents__PersonalCoaches.bs.js\";\nimport * as CoursesReview__SubmissionInfoCard from \"./CoursesReview__SubmissionInfoCard.bs.js\";\nimport * as CoursesReview__SubmissionReportShow from \"./CoursesReview__SubmissionReportShow.bs.js\";\n\nimport \"./CoursesReview__Editor.css\"\n;\n\nvar partial_arg = \"components.CoursesReview__Editor\";\n\nfunction t(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nfunction str(prim) {\n return prim;\n}\n\nfunction reducer(state, action) {\n if (typeof action === \"number\") {\n switch (action) {\n case /* BeginSaving */0 :\n return {\n grades: state.grades,\n isAcceptable: state.isAcceptable,\n newFeedback: state.newFeedback,\n saving: true,\n showReport: state.showReport,\n checklist: state.checklist,\n note: state.note,\n editor: state.editor,\n additonalFeedbackEditorVisible: state.additonalFeedbackEditorVisible,\n feedbackGenerated: state.feedbackGenerated,\n nextSubmission: state.nextSubmission,\n reloadSubmissionReport: state.reloadSubmissionReport\n };\n case /* FinishSaving */1 :\n return {\n grades: state.grades,\n isAcceptable: state.isAcceptable,\n newFeedback: state.newFeedback,\n saving: false,\n showReport: state.showReport,\n checklist: state.checklist,\n note: state.note,\n editor: state.editor,\n additonalFeedbackEditorVisible: state.additonalFeedbackEditorVisible,\n feedbackGenerated: state.feedbackGenerated,\n nextSubmission: state.nextSubmission,\n reloadSubmissionReport: state.reloadSubmissionReport\n };\n case /* ShowGradesEditor */2 :\n return {\n grades: state.grades,\n isAcceptable: state.isAcceptable,\n newFeedback: state.newFeedback,\n saving: state.saving,\n showReport: state.showReport,\n checklist: state.checklist,\n note: state.note,\n editor: /* GradesEditor */1,\n additonalFeedbackEditorVisible: state.additonalFeedbackEditorVisible,\n feedbackGenerated: state.feedbackGenerated,\n nextSubmission: state.nextSubmission,\n reloadSubmissionReport: state.reloadSubmissionReport\n };\n case /* ShowChecklistEditor */3 :\n return {\n grades: state.grades,\n isAcceptable: state.isAcceptable,\n newFeedback: state.newFeedback,\n saving: state.saving,\n showReport: state.showReport,\n checklist: state.checklist,\n note: state.note,\n editor: /* ChecklistEditor */2,\n additonalFeedbackEditorVisible: state.additonalFeedbackEditorVisible,\n feedbackGenerated: state.feedbackGenerated,\n nextSubmission: state.nextSubmission,\n reloadSubmissionReport: state.reloadSubmissionReport\n };\n case /* ShowAdditionalFeedbackEditor */4 :\n return {\n grades: state.grades,\n isAcceptable: state.isAcceptable,\n newFeedback: state.newFeedback,\n saving: state.saving,\n showReport: state.showReport,\n checklist: state.checklist,\n note: state.note,\n editor: state.editor,\n additonalFeedbackEditorVisible: true,\n feedbackGenerated: state.feedbackGenerated,\n nextSubmission: state.nextSubmission,\n reloadSubmissionReport: state.reloadSubmissionReport\n };\n case /* FeedbackAfterSave */5 :\n return {\n grades: state.grades,\n isAcceptable: state.isAcceptable,\n newFeedback: \"\",\n saving: false,\n showReport: state.showReport,\n checklist: state.checklist,\n note: state.note,\n editor: state.editor,\n additonalFeedbackEditorVisible: false,\n feedbackGenerated: state.feedbackGenerated,\n nextSubmission: state.nextSubmission,\n reloadSubmissionReport: state.reloadSubmissionReport\n };\n case /* UnassignReviewer */6 :\n return {\n grades: state.grades,\n isAcceptable: state.isAcceptable,\n newFeedback: state.newFeedback,\n saving: false,\n showReport: state.showReport,\n checklist: state.checklist,\n note: state.note,\n editor: /* AssignReviewer */0,\n additonalFeedbackEditorVisible: state.additonalFeedbackEditorVisible,\n feedbackGenerated: state.feedbackGenerated,\n nextSubmission: state.nextSubmission,\n reloadSubmissionReport: state.reloadSubmissionReport\n };\n case /* ChangeReportVisibility */7 :\n return {\n grades: state.grades,\n isAcceptable: state.isAcceptable,\n newFeedback: state.newFeedback,\n saving: state.saving,\n showReport: !state.showReport,\n checklist: state.checklist,\n note: state.note,\n editor: state.editor,\n additonalFeedbackEditorVisible: state.additonalFeedbackEditorVisible,\n feedbackGenerated: state.feedbackGenerated,\n nextSubmission: state.nextSubmission,\n reloadSubmissionReport: state.reloadSubmissionReport\n };\n case /* SetNextSubmissionDataEmpty */8 :\n return {\n grades: state.grades,\n isAcceptable: state.isAcceptable,\n newFeedback: state.newFeedback,\n saving: state.saving,\n showReport: state.showReport,\n checklist: state.checklist,\n note: state.note,\n editor: state.editor,\n additonalFeedbackEditorVisible: state.additonalFeedbackEditorVisible,\n feedbackGenerated: state.feedbackGenerated,\n nextSubmission: /* DataEmpty */2,\n reloadSubmissionReport: state.reloadSubmissionReport\n };\n case /* SetNextSubmissionDataLoading */9 :\n return {\n grades: state.grades,\n isAcceptable: state.isAcceptable,\n newFeedback: state.newFeedback,\n saving: state.saving,\n showReport: state.showReport,\n checklist: state.checklist,\n note: state.note,\n editor: state.editor,\n additonalFeedbackEditorVisible: state.additonalFeedbackEditorVisible,\n feedbackGenerated: state.feedbackGenerated,\n nextSubmission: /* DataLoading */1,\n reloadSubmissionReport: state.reloadSubmissionReport\n };\n \n }\n } else {\n switch (action.TAG | 0) {\n case /* UpdateFeedback */0 :\n return {\n grades: state.grades,\n isAcceptable: state.isAcceptable,\n newFeedback: action._0,\n saving: state.saving,\n showReport: state.showReport,\n checklist: state.checklist,\n note: state.note,\n editor: state.editor,\n additonalFeedbackEditorVisible: state.additonalFeedbackEditorVisible,\n feedbackGenerated: state.feedbackGenerated,\n nextSubmission: state.nextSubmission,\n reloadSubmissionReport: state.reloadSubmissionReport\n };\n case /* GenerateFeeback */1 :\n return {\n grades: state.grades,\n isAcceptable: state.isAcceptable,\n newFeedback: action._0,\n saving: state.saving,\n showReport: state.showReport,\n checklist: state.checklist,\n note: state.note,\n editor: action._1,\n additonalFeedbackEditorVisible: state.additonalFeedbackEditorVisible,\n feedbackGenerated: true,\n nextSubmission: state.nextSubmission,\n reloadSubmissionReport: state.reloadSubmissionReport\n };\n case /* UpdateGrades */2 :\n return {\n grades: action._0,\n isAcceptable: state.isAcceptable,\n newFeedback: state.newFeedback,\n saving: state.saving,\n showReport: state.showReport,\n checklist: state.checklist,\n note: state.note,\n editor: state.editor,\n additonalFeedbackEditorVisible: state.additonalFeedbackEditorVisible,\n feedbackGenerated: state.feedbackGenerated,\n nextSubmission: state.nextSubmission,\n reloadSubmissionReport: state.reloadSubmissionReport\n };\n case /* UpdateIsAcceptable */3 :\n return {\n grades: state.grades,\n isAcceptable: action._0,\n newFeedback: state.newFeedback,\n saving: state.saving,\n showReport: state.showReport,\n checklist: state.checklist,\n note: state.note,\n editor: state.editor,\n additonalFeedbackEditorVisible: state.additonalFeedbackEditorVisible,\n feedbackGenerated: state.feedbackGenerated,\n nextSubmission: state.nextSubmission,\n reloadSubmissionReport: state.reloadSubmissionReport\n };\n case /* UpdateChecklist */4 :\n return {\n grades: state.grades,\n isAcceptable: state.isAcceptable,\n newFeedback: state.newFeedback,\n saving: state.saving,\n showReport: state.showReport,\n checklist: action._0,\n note: state.note,\n editor: state.editor,\n additonalFeedbackEditorVisible: state.additonalFeedbackEditorVisible,\n feedbackGenerated: state.feedbackGenerated,\n nextSubmission: state.nextSubmission,\n reloadSubmissionReport: state.reloadSubmissionReport\n };\n case /* UpdateNote */5 :\n return {\n grades: state.grades,\n isAcceptable: state.isAcceptable,\n newFeedback: state.newFeedback,\n saving: state.saving,\n showReport: state.showReport,\n checklist: state.checklist,\n note: action._0,\n editor: state.editor,\n additonalFeedbackEditorVisible: state.additonalFeedbackEditorVisible,\n feedbackGenerated: state.feedbackGenerated,\n nextSubmission: state.nextSubmission,\n reloadSubmissionReport: state.reloadSubmissionReport\n };\n case /* UpdateEditor */6 :\n return {\n grades: state.grades,\n isAcceptable: state.isAcceptable,\n newFeedback: state.newFeedback,\n saving: state.saving,\n showReport: state.showReport,\n checklist: state.checklist,\n note: state.note,\n editor: action._0,\n additonalFeedbackEditorVisible: state.additonalFeedbackEditorVisible,\n feedbackGenerated: state.feedbackGenerated,\n nextSubmission: state.nextSubmission,\n reloadSubmissionReport: state.reloadSubmissionReport\n };\n case /* FinishGrading */7 :\n return {\n grades: state.grades,\n isAcceptable: state.isAcceptable,\n newFeedback: \"\",\n saving: false,\n showReport: state.showReport,\n checklist: state.checklist,\n note: undefined,\n editor: /* ReviewedSubmissionEditor */{\n _0: action._0\n },\n additonalFeedbackEditorVisible: state.additonalFeedbackEditorVisible,\n feedbackGenerated: state.feedbackGenerated,\n nextSubmission: state.nextSubmission,\n reloadSubmissionReport: state.reloadSubmissionReport\n };\n case /* SetNextSubmissionDataLoaded */8 :\n return {\n grades: state.grades,\n isAcceptable: state.isAcceptable,\n newFeedback: state.newFeedback,\n saving: state.saving,\n showReport: state.showReport,\n checklist: state.checklist,\n note: state.note,\n editor: state.editor,\n additonalFeedbackEditorVisible: state.additonalFeedbackEditorVisible,\n feedbackGenerated: state.feedbackGenerated,\n nextSubmission: /* DataLoaded */{\n _0: action._0\n },\n reloadSubmissionReport: state.reloadSubmissionReport\n };\n \n }\n }\n}\n\nvar Raw = {};\n\nvar query = \"mutation CreateGradingMutation($submissionId: ID!, $feedback: String, $grades: [GradeInput!], $note: String, $checklist: JSON!) {\\ncreateGrading(submissionId: $submissionId, feedback: $feedback, grades: $grades, note: $note, checklist: $checklist) {\\nsuccess \\n}\\n\\n}\\n\";\n\nfunction parse(value) {\n var value$1 = value.createGrading;\n return {\n createGrading: {\n success: value$1.success\n }\n };\n}\n\nfunction serialize(value) {\n var value$1 = value.createGrading;\n var value$2 = value$1.success;\n var createGrading = {\n success: value$2\n };\n return {\n createGrading: createGrading\n };\n}\n\nfunction serializeInputObjectGradeInput(inp) {\n return {\n evaluationCriterionId: inp.evaluationCriterionId,\n grade: inp.grade\n };\n}\n\nfunction serializeVariables(inp) {\n var a = inp.feedback;\n var a$1 = inp.grades;\n var a$2 = inp.note;\n return {\n submissionId: inp.submissionId,\n feedback: a !== undefined ? a : undefined,\n grades: a$1 !== undefined ? Js_array.map(serializeInputObjectGradeInput, a$1) : undefined,\n note: a$2 !== undefined ? a$2 : undefined,\n checklist: inp.checklist\n };\n}\n\nfunction makeVariables(submissionId, feedback, grades, note, checklist, param) {\n return {\n submissionId: submissionId,\n feedback: feedback,\n grades: grades,\n note: note,\n checklist: checklist\n };\n}\n\nfunction makeInputObjectGradeInput(evaluationCriterionId, grade, param) {\n return {\n evaluationCriterionId: evaluationCriterionId,\n grade: grade\n };\n}\n\nvar CreateGradingMutation_inner = {\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n serializeInputObjectGradeInput: serializeInputObjectGradeInput,\n makeVariables: makeVariables,\n makeInputObjectGradeInput: makeInputObjectGradeInput\n};\n\nvar include = GraphqlQuery.Extender({\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar $$fetch = include.$$fetch;\n\nvar CreateGradingMutation_Graphql_error = include.Graphql_error;\n\nvar CreateGradingMutation_decodeNotification = include.decodeNotification;\n\nvar CreateGradingMutation_decodeObject = include.decodeObject;\n\nvar CreateGradingMutation_decodeNotifications = include.decodeNotifications;\n\nvar CreateGradingMutation_decodeErrors = include.decodeErrors;\n\nvar CreateGradingMutation_flashNotifications = include.flashNotifications;\n\nvar CreateGradingMutation_sendQuery = include.sendQuery;\n\nvar CreateGradingMutation_query = include.query;\n\nvar CreateGradingMutation_make = include.make;\n\nvar CreateGradingMutation = {\n CreateGradingMutation_inner: CreateGradingMutation_inner,\n Raw: Raw,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n serializeInputObjectGradeInput: serializeInputObjectGradeInput,\n makeVariables: makeVariables,\n makeInputObjectGradeInput: makeInputObjectGradeInput,\n Graphql_error: CreateGradingMutation_Graphql_error,\n decodeNotification: CreateGradingMutation_decodeNotification,\n decodeObject: CreateGradingMutation_decodeObject,\n decodeNotifications: CreateGradingMutation_decodeNotifications,\n decodeErrors: CreateGradingMutation_decodeErrors,\n flashNotifications: CreateGradingMutation_flashNotifications,\n sendQuery: CreateGradingMutation_sendQuery,\n query: CreateGradingMutation_query,\n $$fetch: $$fetch,\n make: CreateGradingMutation_make\n};\n\nvar Raw$1 = {};\n\nvar query$1 = \"mutation UndoGradingMutation($submissionId: ID!) {\\nundoGrading(submissionId: $submissionId) {\\nsuccess \\n}\\n\\n}\\n\";\n\nfunction parse$1(value) {\n var value$1 = value.undoGrading;\n return {\n undoGrading: {\n success: value$1.success\n }\n };\n}\n\nfunction serialize$1(value) {\n var value$1 = value.undoGrading;\n var value$2 = value$1.success;\n var undoGrading = {\n success: value$2\n };\n return {\n undoGrading: undoGrading\n };\n}\n\nfunction serializeVariables$1(inp) {\n return {\n submissionId: inp.submissionId\n };\n}\n\nfunction makeVariables$1(submissionId, param) {\n return {\n submissionId: submissionId\n };\n}\n\nvar UndoGradingMutation_inner = {\n Raw: Raw$1,\n query: query$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n makeVariables: makeVariables$1\n};\n\nvar include$1 = GraphqlQuery.Extender({\n Raw: Raw$1,\n query: query$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar $$fetch$1 = include$1.$$fetch;\n\nvar UndoGradingMutation_Graphql_error = include$1.Graphql_error;\n\nvar UndoGradingMutation_decodeNotification = include$1.decodeNotification;\n\nvar UndoGradingMutation_decodeObject = include$1.decodeObject;\n\nvar UndoGradingMutation_decodeNotifications = include$1.decodeNotifications;\n\nvar UndoGradingMutation_decodeErrors = include$1.decodeErrors;\n\nvar UndoGradingMutation_flashNotifications = include$1.flashNotifications;\n\nvar UndoGradingMutation_sendQuery = include$1.sendQuery;\n\nvar UndoGradingMutation_query = include$1.query;\n\nvar UndoGradingMutation_make = include$1.make;\n\nvar UndoGradingMutation = {\n UndoGradingMutation_inner: UndoGradingMutation_inner,\n Raw: Raw$1,\n parse: parse$1,\n serialize: serialize$1,\n serializeVariables: serializeVariables$1,\n makeVariables: makeVariables$1,\n Graphql_error: UndoGradingMutation_Graphql_error,\n decodeNotification: UndoGradingMutation_decodeNotification,\n decodeObject: UndoGradingMutation_decodeObject,\n decodeNotifications: UndoGradingMutation_decodeNotifications,\n decodeErrors: UndoGradingMutation_decodeErrors,\n flashNotifications: UndoGradingMutation_flashNotifications,\n sendQuery: UndoGradingMutation_sendQuery,\n query: UndoGradingMutation_query,\n $$fetch: $$fetch$1,\n make: UndoGradingMutation_make\n};\n\nvar Raw$2 = {};\n\nvar query$2 = \"mutation CreateFeedbackMutation($submissionId: ID!, $feedback: String!) {\\ncreateFeedback(submissionId: $submissionId, feedback: $feedback) {\\nsuccess \\n}\\n\\n}\\n\";\n\nfunction parse$2(value) {\n var value$1 = value.createFeedback;\n return {\n createFeedback: {\n success: value$1.success\n }\n };\n}\n\nfunction serialize$2(value) {\n var value$1 = value.createFeedback;\n var value$2 = value$1.success;\n var createFeedback = {\n success: value$2\n };\n return {\n createFeedback: createFeedback\n };\n}\n\nfunction serializeVariables$2(inp) {\n return {\n submissionId: inp.submissionId,\n feedback: inp.feedback\n };\n}\n\nfunction makeVariables$2(submissionId, feedback, param) {\n return {\n submissionId: submissionId,\n feedback: feedback\n };\n}\n\nvar CreateFeedbackMutation_inner = {\n Raw: Raw$2,\n query: query$2,\n parse: parse$2,\n serialize: serialize$2,\n serializeVariables: serializeVariables$2,\n makeVariables: makeVariables$2\n};\n\nvar include$2 = GraphqlQuery.Extender({\n Raw: Raw$2,\n query: query$2,\n parse: parse$2,\n serialize: serialize$2,\n serializeVariables: serializeVariables$2,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar make = include$2.make;\n\nvar CreateFeedbackMutation_Graphql_error = include$2.Graphql_error;\n\nvar CreateFeedbackMutation_decodeNotification = include$2.decodeNotification;\n\nvar CreateFeedbackMutation_decodeObject = include$2.decodeObject;\n\nvar CreateFeedbackMutation_decodeNotifications = include$2.decodeNotifications;\n\nvar CreateFeedbackMutation_decodeErrors = include$2.decodeErrors;\n\nvar CreateFeedbackMutation_flashNotifications = include$2.flashNotifications;\n\nvar CreateFeedbackMutation_sendQuery = include$2.sendQuery;\n\nvar CreateFeedbackMutation_query = include$2.query;\n\nvar CreateFeedbackMutation_fetch = include$2.$$fetch;\n\nvar CreateFeedbackMutation = {\n CreateFeedbackMutation_inner: CreateFeedbackMutation_inner,\n Raw: Raw$2,\n parse: parse$2,\n serialize: serialize$2,\n serializeVariables: serializeVariables$2,\n makeVariables: makeVariables$2,\n Graphql_error: CreateFeedbackMutation_Graphql_error,\n decodeNotification: CreateFeedbackMutation_decodeNotification,\n decodeObject: CreateFeedbackMutation_decodeObject,\n decodeNotifications: CreateFeedbackMutation_decodeNotifications,\n decodeErrors: CreateFeedbackMutation_decodeErrors,\n flashNotifications: CreateFeedbackMutation_flashNotifications,\n sendQuery: CreateFeedbackMutation_sendQuery,\n query: CreateFeedbackMutation_query,\n $$fetch: CreateFeedbackMutation_fetch,\n make: make\n};\n\nvar Raw$3 = {};\n\nvar query$3 = \"query NextSubmissionQuery($courseId: ID!, $search: String, $targetId: ID, $status: SubmissionStatus, $sortDirection: SortDirection!, $sortCriterion: SubmissionSortCriterion!, $personalCoachId: ID, $assignedCoachId: ID) {\\nsubmissions(courseId: $courseId, search: $search, targetId: $targetId, status: $status, sortDirection: $sortDirection, sortCriterion: $sortCriterion, personalCoachId: $personalCoachId, assignedCoachId: $assignedCoachId) {\\nnodes {\\nid \\n}\\n\\n}\\n\\n}\\n\";\n\nfunction parse$3(value) {\n var value$1 = value.submissions;\n var value$2 = value$1.nodes;\n return {\n submissions: {\n nodes: Js_array.map((function (value) {\n return {\n id: value.id\n };\n }), value$2)\n }\n };\n}\n\nfunction serialize$3(value) {\n var value$1 = value.submissions;\n var value$2 = value$1.nodes;\n var nodes = Js_array.map((function (value) {\n var value$1 = value.id;\n return {\n id: value$1\n };\n }), value$2);\n var submissions = {\n nodes: nodes\n };\n return {\n submissions: submissions\n };\n}\n\nfunction serializeVariables$3(inp) {\n var a = inp.search;\n var a$1 = inp.targetId;\n var a$2 = inp.status;\n var a$3 = inp.sortDirection;\n var a$4 = inp.sortCriterion;\n var a$5 = inp.personalCoachId;\n var a$6 = inp.assignedCoachId;\n return {\n courseId: inp.courseId,\n search: a !== undefined ? a : undefined,\n targetId: a$1 !== undefined ? a$1 : undefined,\n status: a$2 !== undefined ? (\n a$2 === \"Reviewed\" ? \"Reviewed\" : \"Pending\"\n ) : undefined,\n sortDirection: a$3 === \"Descending\" ? \"Descending\" : \"Ascending\",\n sortCriterion: a$4 === \"EvaluatedAt\" ? \"EvaluatedAt\" : \"SubmittedAt\",\n personalCoachId: a$5 !== undefined ? a$5 : undefined,\n assignedCoachId: a$6 !== undefined ? a$6 : undefined\n };\n}\n\nfunction makeVariables$3(courseId, search, targetId, status, sortDirection, sortCriterion, personalCoachId, assignedCoachId, param) {\n return {\n courseId: courseId,\n search: search,\n targetId: targetId,\n status: status,\n sortDirection: sortDirection,\n sortCriterion: sortCriterion,\n personalCoachId: personalCoachId,\n assignedCoachId: assignedCoachId\n };\n}\n\nvar NextSubmissionQuery_inner = {\n Raw: Raw$3,\n query: query$3,\n parse: parse$3,\n serialize: serialize$3,\n serializeVariables: serializeVariables$3,\n makeVariables: makeVariables$3\n};\n\nvar include$3 = GraphqlQuery.Extender({\n Raw: Raw$3,\n query: query$3,\n parse: parse$3,\n serialize: serialize$3,\n serializeVariables: serializeVariables$3,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar $$fetch$2 = include$3.$$fetch;\n\nvar NextSubmissionQuery_Graphql_error = include$3.Graphql_error;\n\nvar NextSubmissionQuery_decodeNotification = include$3.decodeNotification;\n\nvar NextSubmissionQuery_decodeObject = include$3.decodeObject;\n\nvar NextSubmissionQuery_decodeNotifications = include$3.decodeNotifications;\n\nvar NextSubmissionQuery_decodeErrors = include$3.decodeErrors;\n\nvar NextSubmissionQuery_flashNotifications = include$3.flashNotifications;\n\nvar NextSubmissionQuery_sendQuery = include$3.sendQuery;\n\nvar NextSubmissionQuery_query = include$3.query;\n\nvar NextSubmissionQuery_make = include$3.make;\n\nvar NextSubmissionQuery = {\n NextSubmissionQuery_inner: NextSubmissionQuery_inner,\n Raw: Raw$3,\n parse: parse$3,\n serialize: serialize$3,\n serializeVariables: serializeVariables$3,\n makeVariables: makeVariables$3,\n Graphql_error: NextSubmissionQuery_Graphql_error,\n decodeNotification: NextSubmissionQuery_decodeNotification,\n decodeObject: NextSubmissionQuery_decodeObject,\n decodeNotifications: NextSubmissionQuery_decodeNotifications,\n decodeErrors: NextSubmissionQuery_decodeErrors,\n flashNotifications: NextSubmissionQuery_flashNotifications,\n sendQuery: NextSubmissionQuery_sendQuery,\n query: NextSubmissionQuery_query,\n $$fetch: $$fetch$2,\n make: NextSubmissionQuery_make\n};\n\nvar Raw$4 = {};\n\nvar query$4 = \"mutation UnassignReviewerMutation($submissionId: ID!) {\\nunassignReviewer(submissionId: $submissionId) {\\nsuccess \\n}\\n\\n}\\n\";\n\nfunction parse$4(value) {\n var value$1 = value.unassignReviewer;\n return {\n unassignReviewer: {\n success: value$1.success\n }\n };\n}\n\nfunction serialize$4(value) {\n var value$1 = value.unassignReviewer;\n var value$2 = value$1.success;\n var unassignReviewer = {\n success: value$2\n };\n return {\n unassignReviewer: unassignReviewer\n };\n}\n\nfunction serializeVariables$4(inp) {\n return {\n submissionId: inp.submissionId\n };\n}\n\nfunction makeVariables$4(submissionId, param) {\n return {\n submissionId: submissionId\n };\n}\n\nvar UnassignReviewerMutation_inner = {\n Raw: Raw$4,\n query: query$4,\n parse: parse$4,\n serialize: serialize$4,\n serializeVariables: serializeVariables$4,\n makeVariables: makeVariables$4\n};\n\nvar include$4 = GraphqlQuery.Extender({\n Raw: Raw$4,\n query: query$4,\n parse: parse$4,\n serialize: serialize$4,\n serializeVariables: serializeVariables$4,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar $$fetch$3 = include$4.$$fetch;\n\nvar UnassignReviewerMutation_Graphql_error = include$4.Graphql_error;\n\nvar UnassignReviewerMutation_decodeNotification = include$4.decodeNotification;\n\nvar UnassignReviewerMutation_decodeObject = include$4.decodeObject;\n\nvar UnassignReviewerMutation_decodeNotifications = include$4.decodeNotifications;\n\nvar UnassignReviewerMutation_decodeErrors = include$4.decodeErrors;\n\nvar UnassignReviewerMutation_flashNotifications = include$4.flashNotifications;\n\nvar UnassignReviewerMutation_sendQuery = include$4.sendQuery;\n\nvar UnassignReviewerMutation_query = include$4.query;\n\nvar UnassignReviewerMutation_make = include$4.make;\n\nvar UnassignReviewerMutation = {\n UnassignReviewerMutation_inner: UnassignReviewerMutation_inner,\n Raw: Raw$4,\n parse: parse$4,\n serialize: serialize$4,\n serializeVariables: serializeVariables$4,\n makeVariables: makeVariables$4,\n Graphql_error: UnassignReviewerMutation_Graphql_error,\n decodeNotification: UnassignReviewerMutation_decodeNotification,\n decodeObject: UnassignReviewerMutation_decodeObject,\n decodeNotifications: UnassignReviewerMutation_decodeNotifications,\n decodeErrors: UnassignReviewerMutation_decodeErrors,\n flashNotifications: UnassignReviewerMutation_flashNotifications,\n sendQuery: UnassignReviewerMutation_sendQuery,\n query: UnassignReviewerMutation_query,\n $$fetch: $$fetch$3,\n make: UnassignReviewerMutation_make\n};\n\nvar Raw$5 = {};\n\nvar query$5 = \"query SubmissionReportQuery($submissionId: ID!) {\\nsubmissionDetails(submissionId: $submissionId) {\\nsubmissionReports {\\nid \\nreport \\nstatus \\nstartedAt \\ncompletedAt \\nqueuedAt \\nreporter \\nheading \\ntargetUrl \\n}\\n\\n}\\n\\n}\\n\";\n\nfunction parse$5(value) {\n var value$1 = value.submissionDetails;\n var value$2 = value$1.submissionReports;\n return {\n submissionDetails: {\n submissionReports: Js_array.map((function (value) {\n var value$1 = value.report;\n var value$2 = value.status;\n var tmp;\n switch (value$2) {\n case \"error\" :\n tmp = \"error\";\n break;\n case \"failure\" :\n tmp = \"failure\";\n break;\n case \"in_progress\" :\n tmp = \"in_progress\";\n break;\n case \"queued\" :\n tmp = \"queued\";\n break;\n case \"success\" :\n tmp = \"success\";\n break;\n default:\n tmp = {\n NAME: \"FutureAddedValue\",\n VAL: value$2\n };\n }\n var value$3 = value.startedAt;\n var value$4 = value.completedAt;\n var value$5 = value.heading;\n var value$6 = value.targetUrl;\n return {\n id: value.id,\n report: !(value$1 == null) ? value$1 : undefined,\n status: tmp,\n startedAt: !(value$3 == null) ? Caml_option.some(value$3) : undefined,\n completedAt: !(value$4 == null) ? Caml_option.some(value$4) : undefined,\n queuedAt: value.queuedAt,\n reporter: value.reporter,\n heading: !(value$5 == null) ? value$5 : undefined,\n targetUrl: !(value$6 == null) ? value$6 : undefined\n };\n }), value$2)\n }\n };\n}\n\nfunction serialize$5(value) {\n var value$1 = value.submissionDetails;\n var value$2 = value$1.submissionReports;\n var submissionReports = Js_array.map((function (value) {\n var value$1 = value.targetUrl;\n var targetUrl = value$1 !== undefined ? value$1 : null;\n var value$2 = value.heading;\n var heading = value$2 !== undefined ? value$2 : null;\n var value$3 = value.reporter;\n var value$4 = value.queuedAt;\n var value$5 = value.completedAt;\n var completedAt = value$5 !== undefined ? Caml_option.valFromOption(value$5) : null;\n var value$6 = value.startedAt;\n var startedAt = value$6 !== undefined ? Caml_option.valFromOption(value$6) : null;\n var value$7 = value.status;\n var status = typeof value$7 === \"object\" ? value$7.VAL : (\n value$7 === \"queued\" ? \"queued\" : (\n value$7 === \"error\" ? \"error\" : (\n value$7 === \"failure\" ? \"failure\" : (\n value$7 === \"success\" ? \"success\" : \"in_progress\"\n )\n )\n )\n );\n var value$8 = value.report;\n var report = value$8 !== undefined ? value$8 : null;\n var value$9 = value.id;\n return {\n id: value$9,\n report: report,\n status: status,\n startedAt: startedAt,\n completedAt: completedAt,\n queuedAt: value$4,\n reporter: value$3,\n heading: heading,\n targetUrl: targetUrl\n };\n }), value$2);\n var submissionDetails = {\n submissionReports: submissionReports\n };\n return {\n submissionDetails: submissionDetails\n };\n}\n\nfunction serializeVariables$5(inp) {\n return {\n submissionId: inp.submissionId\n };\n}\n\nfunction makeVariables$5(submissionId, param) {\n return {\n submissionId: submissionId\n };\n}\n\nvar SubmissionReportQuery_inner = {\n Raw: Raw$5,\n query: query$5,\n parse: parse$5,\n serialize: serialize$5,\n serializeVariables: serializeVariables$5,\n makeVariables: makeVariables$5\n};\n\nvar include$5 = GraphqlQuery.Extender({\n Raw: Raw$5,\n query: query$5,\n parse: parse$5,\n serialize: serialize$5,\n serializeVariables: serializeVariables$5,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar make$1 = include$5.make;\n\nvar SubmissionReportQuery_Graphql_error = include$5.Graphql_error;\n\nvar SubmissionReportQuery_decodeNotification = include$5.decodeNotification;\n\nvar SubmissionReportQuery_decodeObject = include$5.decodeObject;\n\nvar SubmissionReportQuery_decodeNotifications = include$5.decodeNotifications;\n\nvar SubmissionReportQuery_decodeErrors = include$5.decodeErrors;\n\nvar SubmissionReportQuery_flashNotifications = include$5.flashNotifications;\n\nvar SubmissionReportQuery_sendQuery = include$5.sendQuery;\n\nvar SubmissionReportQuery_query = include$5.query;\n\nvar SubmissionReportQuery_fetch = include$5.$$fetch;\n\nvar SubmissionReportQuery = {\n SubmissionReportQuery_inner: SubmissionReportQuery_inner,\n Raw: Raw$5,\n parse: parse$5,\n serialize: serialize$5,\n serializeVariables: serializeVariables$5,\n makeVariables: makeVariables$5,\n Graphql_error: SubmissionReportQuery_Graphql_error,\n decodeNotification: SubmissionReportQuery_decodeNotification,\n decodeObject: SubmissionReportQuery_decodeObject,\n decodeNotifications: SubmissionReportQuery_decodeNotifications,\n decodeErrors: SubmissionReportQuery_decodeErrors,\n flashNotifications: SubmissionReportQuery_flashNotifications,\n sendQuery: SubmissionReportQuery_sendQuery,\n query: SubmissionReportQuery_query,\n $$fetch: SubmissionReportQuery_fetch,\n make: make$1\n};\n\nfunction booleanButtonClasses(bool) {\n return \"toggle-button__button\" + (\n bool ? \" toggle-button__button--active\" : \"\"\n );\n}\n\nfunction updateIsAcceptable(isAcceptable, send, $$event) {\n $$event.preventDefault();\n Curry._1(send, {\n TAG: /* UpdateIsAcceptable */3,\n _0: isAcceptable\n });\n if (!isAcceptable) {\n return Curry._1(send, {\n TAG: /* UpdateGrades */2,\n _0: []\n });\n }\n \n}\n\nfunction unassignReviewer(submissionId, send, updateReviewerCB) {\n Curry._1(send, /* BeginSaving */0);\n Js_promise.$$catch((function (param) {\n Curry._1(send, /* FinishSaving */1);\n return Promise.resolve(undefined);\n }), Js_promise.then_((function (response) {\n if (response.unassignReviewer.success) {\n Curry._1(updateReviewerCB, undefined);\n Curry._1(send, /* UnassignReviewer */6);\n }\n Curry._1(send, /* FinishSaving */1);\n return Promise.resolve(undefined);\n }), Curry._3($$fetch$3, undefined, undefined, {\n submissionId: submissionId\n })));\n}\n\nfunction getNextSubmission(send, courseId, filter) {\n Curry._1(send, /* SetNextSubmissionDataLoading */9);\n Js_promise.then_((function (response) {\n if (ArrayUtils.isEmpty(response.submissions.nodes)) {\n Curry._1(send, /* SetNextSubmissionDataEmpty */8);\n } else {\n Curry._1(send, {\n TAG: /* SetNextSubmissionDataLoaded */8,\n _0: Caml_array.get(response.submissions.nodes, 0).id\n });\n }\n return Promise.resolve(undefined);\n }), Curry._3($$fetch$2, undefined, undefined, makeVariables$3(courseId, CoursesReview__Filter.nameOrEmail(filter), CoursesReview__Filter.targetId(filter), CoursesReview__Filter.tab({\n nameOrEmail: filter.nameOrEmail,\n personalCoachId: filter.personalCoachId,\n assignedCoachId: filter.assignedCoachId,\n reviewingCoachId: filter.reviewingCoachId,\n targetId: filter.targetId,\n sortCriterion: filter.sortCriterion,\n sortDirection: filter.sortDirection,\n tab: \"Pending\",\n includeInactive: filter.includeInactive\n }), CoursesReview__Filter.defaultDirection({\n nameOrEmail: filter.nameOrEmail,\n personalCoachId: filter.personalCoachId,\n assignedCoachId: filter.assignedCoachId,\n reviewingCoachId: filter.reviewingCoachId,\n targetId: filter.targetId,\n sortCriterion: filter.sortCriterion,\n sortDirection: \"Ascending\",\n tab: filter.tab,\n includeInactive: filter.includeInactive\n }), CoursesReview__Filter.sortCriterion({\n nameOrEmail: filter.nameOrEmail,\n personalCoachId: filter.personalCoachId,\n assignedCoachId: filter.assignedCoachId,\n reviewingCoachId: filter.reviewingCoachId,\n targetId: filter.targetId,\n sortCriterion: \"SubmittedAt\",\n sortDirection: filter.sortDirection,\n tab: filter.tab,\n includeInactive: filter.includeInactive\n }), CoursesReview__Filter.personalCoachId(filter), CoursesReview__Filter.assignedCoachId(filter), undefined)));\n}\n\nfunction isReviewDisabled(submissionDetails) {\n return CoursesReview__SubmissionDetails.reviewable(submissionDetails) === false;\n}\n\nfunction makeFeedback(user, feedback) {\n return CoursesReview__Feedback.make(AppRouter__User.name(user), AppRouter__User.avatarUrl(user), AppRouter__User.title(user), new Date(), feedback);\n}\n\nfunction createFeedback(submissionId, feedback, send, overlaySubmission, user, updateSubmissionCB) {\n Curry._1(send, /* BeginSaving */0);\n Js_promise.then_((function (response) {\n if (response.createFeedback.success) {\n Curry._1(updateSubmissionCB, CoursesReview__OverlaySubmission.updateFeedback(Js_array.concat([makeFeedback(user, feedback)], CoursesReview__OverlaySubmission.feedback(overlaySubmission)), overlaySubmission));\n Curry._1(send, /* FeedbackAfterSave */5);\n } else {\n Curry._1(send, /* FinishSaving */1);\n }\n return Promise.resolve(undefined);\n }), Curry._3(make, undefined, undefined, {\n submissionId: submissionId,\n feedback: feedback\n }));\n}\n\nfunction undoGrading(submissionId, send) {\n Curry._1(send, /* BeginSaving */0);\n Js_promise.then_((function (response) {\n if (response.undoGrading.success) {\n DomUtils.reload(undefined);\n } else {\n Curry._1(send, /* FinishSaving */1);\n }\n return Promise.resolve(undefined);\n }), Curry._3($$fetch$1, undefined, undefined, {\n submissionId: submissionId\n }));\n}\n\nvar passed = ArrayUtils.isNotEmpty;\n\nfunction trimToOption(s) {\n if (s.trim() === \"\") {\n return ;\n } else {\n return s;\n }\n}\n\nfunction trimArraytoOption(arr) {\n if (ArrayUtils.isEmpty(arr)) {\n return ;\n } else {\n return arr;\n }\n}\n\nfunction navigationDisabled(state) {\n if (state.newFeedback.trim() !== \"\" || state.note !== undefined) {\n return true;\n } else {\n return state.saving;\n }\n}\n\nfunction gradeSubmissionQuery(submissionId, state, send, overlaySubmission, currentUser, updateSubmissionCB, courseId, filter) {\n Curry._1(send, /* BeginSaving */0);\n var feedback = trimToOption(state.newFeedback);\n var grades = trimArraytoOption(Js_array.map((function (g) {\n return {\n evaluationCriterionId: CoursesReview__Grade.evaluationCriterionId(g),\n grade: CoursesReview__Grade.value(g)\n };\n }), state.grades));\n var variables = makeVariables(submissionId, feedback, grades, Belt_Option.flatMap(state.note, trimToOption), SubmissionChecklistItem.encodeArray(state.checklist), undefined);\n Js_promise.then_((function (response) {\n if (response.createGrading.success) {\n Curry._1(updateSubmissionCB, CoursesReview__OverlaySubmission.update(ArrayUtils.isNotEmpty(state.grades) ? Caml_option.some(new Date()) : undefined, AppRouter__User.name(currentUser), Js_array.concat(Belt_Option.mapWithDefault(feedback, [], (function (f) {\n return [makeFeedback(currentUser, f)];\n })), CoursesReview__OverlaySubmission.feedback(overlaySubmission)), state.grades, Caml_option.some(new Date()), state.checklist, overlaySubmission));\n Curry._1(send, {\n TAG: /* FinishGrading */7,\n _0: state.grades\n });\n getNextSubmission(send, courseId, filter);\n } else {\n Curry._1(send, /* FinishSaving */1);\n }\n return Promise.resolve(undefined);\n }), Curry._3($$fetch, false, undefined, variables));\n}\n\nfunction warning(submissionDetails) {\n var warning$1 = CoursesReview__SubmissionDetails.warning(submissionDetails);\n if (warning$1 !== undefined) {\n return React.createElement(\"div\", {\n className: \"border border-yellow-400 rounded bg-yellow-200 py-2 px-3 text-xs md:text-sm md:text-center\"\n }, React.createElement(\"i\", {\n className: \"fas fa-exclamation-triangle\"\n }), React.createElement(\"span\", {\n className: \"ms-2\"\n }, warning$1));\n } else {\n return null;\n }\n}\n\nfunction closeOverlay(state, courseId, filter) {\n var path = \"/courses/\" + courseId + \"/review?\" + CoursesReview__Filter.toQueryString(filter);\n if (navigationDisabled(state)) {\n return WindowUtils.confirm((function (param) {\n \n }), t(undefined, undefined, \"close_submission_warning\"), (function (param) {\n RescriptReactRouter.push(path);\n }));\n } else {\n return RescriptReactRouter.push(path);\n }\n}\n\nfunction reviewNextButton(nextSubmission, filter) {\n var buttonStyle = \"next-submission-button flex w-full items-center justify-center text-sm font-semibold bg-white border-t border-gray-200 px-5 py-4 focus:ring-2 focus:ring-focusColor-500 ring-inset\";\n if (typeof nextSubmission !== \"number\") {\n return React.createElement(Link.make, {\n href: \"/submissions/\" + nextSubmission._0 + \"/review?\" + CoursesReview__Filter.toQueryString(filter),\n className: \"\" + buttonStyle + \" hover:bg-primary-50 hover:text-primary-500\",\n children: null\n }, React.createElement(\"p\", {\n className: \"pe-2\"\n }, t(undefined, undefined, \"review_next\")), React.createElement(Icon.make, {\n className: \"if i-arrow-right-short-light text-lg lg:text-2xl rtl:rotate-180\"\n }));\n }\n switch (nextSubmission) {\n case /* DataUnloaded */0 :\n return null;\n case /* DataLoading */1 :\n return React.createElement(\"button\", {\n className: buttonStyle,\n disabled: true\n }, React.createElement(FaIcon.make, {\n classes: \"fas fa-spinner fa-pulse me-2\"\n }));\n case /* DataEmpty */2 :\n return React.createElement(\"div\", {\n className: buttonStyle\n }, React.createElement(Icon.make, {\n className: \"if i-check-circle-alt-light text-lg lg:text-2xl\"\n }), React.createElement(\"p\", {\n className: \"ps-2 block md:hidden\"\n }, t(undefined, undefined, \"you_are_done\")), React.createElement(\"p\", {\n className: \"ps-2 hidden md:block\"\n }, t(undefined, undefined, \"no_more_pending_submissions\")));\n \n }\n}\n\nfunction headerSection(state, submissionDetails, filter) {\n var teamName = CoursesReview__SubmissionDetails.teamName(submissionDetails);\n var studentCount = CoursesReview__SubmissionDetails.students(submissionDetails).length;\n return React.createElement(\"div\", {\n \"aria-label\": \"submissions-overlay-header\",\n className: \"bg-gray-50 border-b border-gray-300 flex justify-center\"\n }, React.createElement(\"div\", {\n className: \"bg-white flex justify-between w-full\"\n }, React.createElement(\"div\", {\n className: \"flex flex-col md:flex-row w-full md:w-auto\"\n }, React.createElement(\"div\", {\n className: \"flex flex-1 md:flex-none justify-between border-b md:border-0\"\n }, React.createElement(\"button\", {\n \"aria-label\": \"submissions-overlay-close\",\n className: \"flex flex-col items-center justify-center leading-tight px-3 py-2 md:px-5 md:py-4 cursor-pointer border-e bg-white text-gray-600 hover:text-gray-900 hover:bg-gray-50 focus:ring-2 focus:ring-focusColor-500 ring-inset \",\n title: t(undefined, undefined, \"close\"),\n onClick: (function (param) {\n closeOverlay(state, CoursesReview__SubmissionDetails.courseId(submissionDetails), filter);\n })\n }, React.createElement(\"div\", {\n className: \"flex items-center justify-center bg-gray-100 rounded-full w-8 h-8\"\n }, React.createElement(Icon.make, {\n className: \"if i-times-regular text-lg lg:text-2xl\"\n })), React.createElement(\"span\", {\n className: \"text-xs mt-0.5\"\n }, t(undefined, undefined, \"close\"))), React.createElement(\"div\", {\n className: \"flex\"\n }, React.createElement(CoursesStudents__PersonalCoaches.make, {\n tooltipPosition: \"Bottom\",\n defaultAvatarSize: \"8\",\n mdAvatarSize: \"8\",\n title: React.createElement(\"span\", {\n className: \"hidden\"\n }, t(undefined, undefined, \"assigned_coaches\")),\n className: \"flex md:hidden items-center shrink-0\",\n coaches: CoursesReview__SubmissionDetails.coaches(submissionDetails)\n }))), React.createElement(\"div\", {\n className: \"px-4 py-3 flex flex-col justify-center\"\n }, React.createElement(\"div\", {\n className: \"block text-sm md:pe-2\"\n }, React.createElement(\"a\", {\n className: \"font-semibold underline text-gray-900 hover:bg-primary-100 hover:text-primary-600 text-base focus:ring-2 focus:ring-offset-2 focus:ring-focusColor-500\",\n href: \"/targets/\" + CoursesReview__SubmissionDetails.targetId(submissionDetails),\n target: \"_blank\"\n }, CoursesReview__SubmissionDetails.targetTitle(submissionDetails))), React.createElement(\"div\", {\n className: \"mt-1 text-xs text-gray-800\"\n }, teamName !== undefined ? React.createElement(\"span\", undefined, React.createElement(\"span\", undefined, t(undefined, undefined, \"submitted_by_team\")), React.createElement(\"span\", {\n className: \"font-semibold\"\n }, teamName), React.createElement(\"span\", undefined, \" - \")) : React.createElement(\"span\", undefined, t(undefined, undefined, \"submitted_by\")), Js_array.mapi((function (student, index) {\n var commaRequired = (index + 1 | 0) !== studentCount;\n return React.createElement(\"span\", {\n key: CoursesReview__Student.id(student)\n }, React.createElement(\"a\", {\n className: \"font-semibold underline focus:ring-2 focus:ring-offset-2 focus:ring-focusColor-500\",\n href: \"/students/\" + CoursesReview__Student.id(student) + \"/report\",\n target: \"_blank\"\n }, CoursesReview__Student.name(student)), commaRequired ? \", \" : \"\");\n }), CoursesReview__SubmissionDetails.students(submissionDetails))))), React.createElement(\"div\", {\n className: \"hidden md:flex shrink-0 gap-6\"\n }, React.createElement(CoursesStudents__PersonalCoaches.make, {\n tooltipPosition: \"Bottom\",\n defaultAvatarSize: \"8\",\n mdAvatarSize: \"8\",\n title: React.createElement(\"span\", {\n className: \"me-2\"\n }, t(undefined, undefined, \"assigned_coaches\")),\n className: \"flex w-full md:w-auto items-center shrink-0\",\n coaches: CoursesReview__SubmissionDetails.coaches(submissionDetails)\n }))));\n}\n\nfunction updateGrading(grade, state, send) {\n var newGrades = Js_array.concat([grade], Js_array.filter((function (g) {\n return CoursesReview__Grade.evaluationCriterionId(g) !== CoursesReview__Grade.evaluationCriterionId(grade);\n }), state.grades));\n return Curry._1(send, {\n TAG: /* UpdateGrades */2,\n _0: newGrades\n });\n}\n\nfunction handleGradePillClick(evaluationCriterionId, value, state, send, $$event) {\n $$event.preventDefault();\n if (send !== undefined) {\n return updateGrading(CoursesReview__Grade.make(evaluationCriterionId, value), state, send);\n }\n \n}\n\nfunction findEvaluationCriterion(evaluationCriteria, evaluationCriterionId) {\n var ec = Js_array.find((function (ec) {\n return EvaluationCriterion.id(ec) === evaluationCriterionId;\n }), evaluationCriteria);\n if (ec !== undefined) {\n return ec;\n } else {\n Rollbar.error(\"Unable to find evaluation Criterion with id: \" + (evaluationCriterionId + \"in CoursesRevew__Editor\"));\n return Caml_array.get(evaluationCriteria, 0);\n }\n}\n\nfunction gradePillHeader(evaluationCriteriaName, selectedGrade, gradeLabels) {\n return React.createElement(\"div\", {\n className: \"flex justify-between\"\n }, React.createElement(\"p\", {\n className: \"text-xs font-semibold\"\n }, evaluationCriteriaName), React.createElement(\"p\", {\n className: \"text-xs font-semibold\"\n }, String(selectedGrade) + (\"/\" + String(GradeLabel.maxGrade($$Array.to_list(gradeLabels))))));\n}\n\nfunction gradePillClasses(selectedGrade, currentGrade, send) {\n var defaultClasses = \"course-review-editor__grade-pill shadow-sm border-gray-300 flex items-center justify-center py-1 px-2 text-sm flex-1 font-semibold transition \" + (\n send !== undefined ? \"cursor-pointer hover:shadow-lg focus:outline-none focus:ring-2 focus:ring-inset focus:ring-focusColor-500 hover:bg-green-500 hover:text-white \" : \"\"\n );\n return defaultClasses + (\n Caml_obj.lessequal(currentGrade, selectedGrade) ? \"cursor-default bg-green-500 text-white shadow-lg\" : \"bg-white text-gray-900\"\n );\n}\n\nfunction showGradePill(key, submissionDetails, evaluationCriterion, gradeValue, state, send) {\n return React.createElement(\"div\", {\n key: String(key),\n \"aria-label\": \"evaluation-criterion-\" + EvaluationCriterion.id(evaluationCriterion),\n className: \"mt-2\"\n }, gradePillHeader(EvaluationCriterion.name(evaluationCriterion), gradeValue, EvaluationCriterion.gradesAndLabels(evaluationCriterion)), React.createElement(\"div\", {\n className: \"course-review-editor__grade-bar inline-flex w-full text-center mt-1\"\n }, EvaluationCriterion.gradesAndLabels(evaluationCriterion).map(function (gradeLabel) {\n var gradeLabelGrade = GradeLabel.grade(gradeLabel);\n var partial_arg = EvaluationCriterion.id(evaluationCriterion);\n return React.createElement(\"button\", {\n key: String(gradeLabelGrade),\n className: gradePillClasses(gradeValue, gradeLabelGrade, send),\n title: GradeLabel.label(gradeLabel),\n disabled: CoursesReview__SubmissionDetails.reviewable(submissionDetails) === false,\n onClick: (function (param) {\n return handleGradePillClick(partial_arg, gradeLabelGrade, state, send, param);\n })\n }, send !== undefined ? String(gradeLabelGrade) : null);\n })));\n}\n\nfunction showGrades(grades, evaluationCriteria, submissionDetails, state) {\n return React.createElement(\"div\", undefined, CoursesReview__Grade.sort(evaluationCriteria, grades).map(function (grade, key) {\n var gradeEcId = CoursesReview__Grade.evaluationCriterionId(grade);\n var ec = ArrayUtils.unsafeFind((function (ec) {\n return EvaluationCriterion.id(ec) === gradeEcId;\n }), \"Unable to find evaluation Criterion with id: \" + (gradeEcId + \"in CoursesRevew__Editor\"), evaluationCriteria);\n return showGradePill(key, submissionDetails, ec, CoursesReview__Grade.value(grade), state, undefined);\n }));\n}\n\nfunction renderGradePills(evaluationCriteria, targetEvaluationCriteriaIds, submissionDetails, state, send) {\n return targetEvaluationCriteriaIds.map(function (evaluationCriterionId, key) {\n var ec = ArrayUtils.unsafeFind((function (e) {\n return EvaluationCriterion.id(e) === evaluationCriterionId;\n }), \"CoursesRevew__Editor: Unable to find evaluation criterion with id - \" + evaluationCriterionId, evaluationCriteria);\n var grade = state.grades.find(function (g) {\n return CoursesReview__Grade.evaluationCriterionId(g) === EvaluationCriterion.id(ec);\n });\n var gradeValue = grade !== undefined ? CoursesReview__Grade.value(grade) : 0;\n return showGradePill(key, submissionDetails, ec, gradeValue, state, send);\n });\n}\n\nfunction badgeColorClasses(statusColor) {\n switch (statusColor) {\n case /* Red */0 :\n return \"bg-red-100 border-red-400\";\n case /* Orange */1 :\n return \"bg-orange-100 border-orange-400\";\n case /* Green */2 :\n return \"bg-green-100 border-green-400\";\n case /* Gray */3 :\n return \"bg-gray-50 border-gray-300\";\n \n }\n}\n\nfunction gradeBadgeClasses(statusColor, status, badge) {\n var tmp;\n if (status !== 0) {\n switch (status) {\n case /* Grading */1 :\n tmp = \"course-review-editor__status-pulse\";\n break;\n case /* Unreviewed */2 :\n case /* Rejected */3 :\n tmp = \"\";\n break;\n \n }\n } else {\n tmp = \"\";\n }\n return (\n badge ? \"px-2 py-2 flex justify-center border rounded items-center space-x-2 \" : \"w-12 h-10 p-1 md:w-26 md:h-22 rounded md:rounded-lg border flex justify-center items-center \"\n ) + badgeColorClasses(statusColor) + tmp;\n}\n\nfunction textColor(statusColor) {\n switch (statusColor) {\n case /* Red */0 :\n return \"text-red-800\";\n case /* Orange */1 :\n return \"text-orange-800\";\n case /* Green */2 :\n return \"text-green-800\";\n case /* Gray */3 :\n return \"text-gray-800\";\n \n }\n}\n\nfunction submissionReviewStatus(status, overlaySubmission) {\n var match;\n switch (status) {\n case /* Passed */0 :\n match = [\n t(undefined, undefined, \"status.completed\"),\n /* Green */2\n ];\n break;\n case /* Grading */1 :\n match = [\n t(undefined, undefined, \"status.reviewing\"),\n /* Orange */1\n ];\n break;\n case /* Unreviewed */2 :\n match = [\n t(undefined, undefined, \"status.pending_review\"),\n /* Gray */3\n ];\n break;\n case /* Rejected */3 :\n match = [\n t(undefined, undefined, \"status.rejected\"),\n /* Red */0\n ];\n break;\n \n }\n var color = match[1];\n var _date = CoursesReview__OverlaySubmission.evaluatedAt(overlaySubmission);\n var tmp;\n if (_date !== undefined) {\n var name = CoursesReview__OverlaySubmission.evaluatorName(overlaySubmission);\n tmp = React.createElement(\"div\", undefined, React.createElement(\"div\", undefined, React.createElement(\"p\", {\n className: \"text-xs text-gray-800\"\n }, t(undefined, undefined, \"evaluated_by\")), React.createElement(\"p\", {\n className: \"text-xs font-semibold\"\n }, name !== undefined ? name : React.createElement(\"em\", undefined, t(undefined, undefined, \"deleted_coach\")))));\n } else {\n tmp = null;\n }\n var tmp$1;\n switch (status) {\n case /* Passed */0 :\n tmp$1 = React.createElement(Icon.make, {\n className: \"if i-badge-check-solid text-xl text-green-500\"\n });\n break;\n case /* Grading */1 :\n tmp$1 = React.createElement(Icon.make, {\n className: \"if i-writing-pad-solid text-xl text-orange-300\"\n });\n break;\n case /* Unreviewed */2 :\n tmp$1 = React.createElement(Icon.make, {\n className: \"if i-eye-solid text-xl text-gray-400\"\n });\n break;\n case /* Rejected */3 :\n tmp$1 = React.createElement(FaIcon.make, {\n classes: \"fas fa-exclamation-triangle text-xl text-red-500\"\n });\n break;\n \n }\n return React.createElement(\"div\", {\n \"aria-label\": \"submission-status\",\n className: \"hidden md:flex gap-4 justify-end w-3/4\"\n }, React.createElement(\"div\", {\n className: \"flex items-center\"\n }, tmp, React.createElement(\"div\", {\n className: \"flex justify-center ms-2 md:ms-4\"\n }, React.createElement(\"div\", {\n className: gradeBadgeClasses(color, status, true)\n }, tmp$1, React.createElement(\"p\", {\n className: \"text-xs font-semibold \" + textColor(color)\n }, match[0])))));\n}\n\nfunction submissionStatusIcon(status, overlaySubmission) {\n var match;\n switch (status) {\n case /* Passed */0 :\n match = [\n t(undefined, undefined, \"status.completed\"),\n /* Green */2\n ];\n break;\n case /* Grading */1 :\n match = [\n t(undefined, undefined, \"status.reviewing\"),\n /* Orange */1\n ];\n break;\n case /* Unreviewed */2 :\n match = [\n t(undefined, undefined, \"status.pending_review\"),\n /* Gray */3\n ];\n break;\n case /* Rejected */3 :\n match = [\n t(undefined, undefined, \"status.rejected\"),\n /* Red */0\n ];\n break;\n \n }\n var color = match[1];\n var date = CoursesReview__OverlaySubmission.evaluatedAt(overlaySubmission);\n var tmp;\n if (date !== undefined) {\n var name = CoursesReview__OverlaySubmission.evaluatorName(overlaySubmission);\n tmp = React.createElement(\"div\", {\n className: \"bg-gray-50 block md:flex flex-col w-full justify-between rounded-lg pt-3 me-2 mt-4 md:mt-0\"\n }, React.createElement(\"div\", undefined, React.createElement(\"p\", {\n className: \"text-xs px-3\"\n }, \"Evaluated By\"), React.createElement(\"p\", {\n className: \"text-sm font-semibold px-3 pb-3\"\n }, name !== undefined ? name : React.createElement(\"em\", undefined, t(undefined, undefined, \"deleted_coach\")))), React.createElement(\"div\", {\n className: \"text-xs bg-gray-300 flex items-center rounded-b-lg px-3 py-2 md:px-3 md:py-1\"\n }, t([[\n \"evaluated_at\",\n DateFns.format(Caml_option.valFromOption(date), \"MMMM d, yyyy\")\n ]], undefined, \"evaluated_at\")));\n } else {\n tmp = null;\n }\n var tmp$1;\n switch (status) {\n case /* Passed */0 :\n tmp$1 = React.createElement(Icon.make, {\n className: \"if i-badge-check-solid text-xl md:text-5xl text-green-500\"\n });\n break;\n case /* Grading */1 :\n tmp$1 = React.createElement(Icon.make, {\n className: \"if i-writing-pad-solid text-xl md:text-5xl text-orange-300\"\n });\n break;\n case /* Unreviewed */2 :\n tmp$1 = React.createElement(Icon.make, {\n className: \"if i-eye-solid text-xl md:text-4xl text-gray-400\"\n });\n break;\n case /* Rejected */3 :\n tmp$1 = React.createElement(FaIcon.make, {\n classes: \"fas fa-exclamation-triangle text-xl md:text-4xl text-red-500\"\n });\n break;\n \n }\n return React.createElement(\"div\", {\n \"aria-label\": \"submission-status\",\n className: \"flex flex-1 flex-col items-center justify-center md:border-s mt-4 md:mt-0\"\n }, React.createElement(\"div\", {\n className: \"flex flex-col-reverse md:flex-row items-start md:items-stretch justify-center w-full md:ps-6\"\n }, tmp, React.createElement(\"div\", {\n className: \"w-full md:w-26 flex gap-1 flex-row md:flex-col md:items-center justify-center\"\n }, React.createElement(\"div\", {\n className: gradeBadgeClasses(color, status, false)\n }, tmp$1), React.createElement(\"p\", {\n className: \"text-xs flex items-center justify-center md:block text-center w-full border rounded px-1 py-px font-semibold \" + badgeColorClasses(color) + \" \" + textColor(color) + \"\"\n }, match[0]))));\n}\n\nfunction gradeSubmission(submissionId, state, send, updateSubmissionCB, status, currentUser, overlaySubmission, $$event, courseId, filter) {\n $$event.preventDefault();\n gradeSubmissionQuery(submissionId, state, send, overlaySubmission, currentUser, updateSubmissionCB, courseId, filter);\n}\n\nfunction reviewButtonDisabled(status) {\n if (status >= 3) {\n return false;\n }\n switch (status) {\n case /* Passed */0 :\n case /* Grading */1 :\n return false;\n case /* Unreviewed */2 :\n return true;\n \n }\n}\n\nfunction computeStatus(overlaySubmission, selectedGrades, isAcceptable, evaluationCriteria, targetEvaluationCriteriaIds) {\n var currentGradingCriteria = evaluationCriteria.filter(function (criterion) {\n return $$Array.mem(EvaluationCriterion.id(criterion), targetEvaluationCriteriaIds);\n });\n var match = CoursesReview__OverlaySubmission.evaluatedAt(overlaySubmission);\n var match$1 = ArrayUtils.isNotEmpty(CoursesReview__OverlaySubmission.grades(overlaySubmission));\n if (match !== undefined) {\n if (match$1) {\n return /* Passed */0;\n } else {\n return /* Rejected */3;\n }\n } else if (isAcceptable) {\n if (Caml_obj.equal(selectedGrades, [])) {\n return /* Unreviewed */2;\n } else if (selectedGrades.length !== currentGradingCriteria.length) {\n return /* Grading */1;\n } else {\n return /* Passed */0;\n }\n } else {\n return /* Rejected */3;\n }\n}\n\nfunction submitButtonText(isAcceptable, feedback, grades) {\n var match = feedback !== \"\";\n var match$1 = ArrayUtils.isNotEmpty(grades);\n if (isAcceptable) {\n if (match) {\n return t(undefined, undefined, \"save_grades_and_send_feedback\");\n } else {\n return t(undefined, undefined, \"save_grades\");\n }\n } else if (match) {\n if (match$1) {\n return t(undefined, undefined, \"save_grades\");\n } else {\n return t(undefined, undefined, \"reject_submission_and_send_feedback\");\n }\n } else if (match$1) {\n return t(undefined, undefined, \"save_grades\");\n } else {\n return t(undefined, undefined, \"reject_submission\");\n }\n}\n\nfunction noteForm(submissionDetails, overlaySubmission, teamSubmission, note, send) {\n var _someGrades = CoursesReview__OverlaySubmission.grades(overlaySubmission);\n if (_someGrades.length !== 0) {\n return null;\n }\n var match = teamSubmission ? [\n t(undefined, undefined, \"team\"),\n t(undefined, undefined, \"team_notice\")\n ] : [\n t(undefined, undefined, \"student\"),\n \"\"\n ];\n var noteAbout = match[0];\n var help = React.createElement(HelpIcon.make, {\n className: \"ms-1\",\n children: t([\n [\n \"note_about\",\n noteAbout\n ],\n [\n \"additional_help\",\n match[1]\n ]\n ], undefined, \"help_text\")\n });\n var textareaId = \"note-for-submission-\" + CoursesReview__OverlaySubmission.id(overlaySubmission);\n return React.createElement(\"div\", undefined, React.createElement(\"div\", {\n className: \"font-medium text-sm flex items-start md:items-center\"\n }, React.createElement(Icon.make, {\n className: \"if i-long-text-light text-gray-800 text-base mt-1 md:mt-0.5\"\n }), note !== undefined ? React.createElement(\"span\", {\n className: \"ms-2 md:ms-4 tracking-wide\"\n }, React.createElement(\"label\", {\n htmlFor: textareaId\n }, t(undefined, undefined, \"write_a_note\")), help) : React.createElement(\"div\", {\n className: \"ms-2 md:ms-4 tracking-wide w-full flex items-center\"\n }, React.createElement(\"div\", undefined, React.createElement(\"span\", undefined, t([[\n \"noteAbout\",\n noteAbout\n ]], undefined, \"note_help\")), help), React.createElement(\"button\", {\n className: \"btn btn-default btn-small ms-4\",\n disabled: CoursesReview__SubmissionDetails.reviewable(submissionDetails) === false,\n onClick: (function (param) {\n Curry._1(send, {\n TAG: /* UpdateNote */5,\n _0: \"\"\n });\n })\n }, React.createElement(\"i\", {\n className: \"far fa-edit\"\n }), React.createElement(\"span\", {\n className: \"ps-2\"\n }, t(undefined, undefined, \"write_a_note\"))))), note !== undefined ? React.createElement(\"div\", {\n className: \"ms-6 md:ms-7 mt-2\"\n }, React.createElement(MarkdownEditor.make, {\n value: note,\n onChange: (function (value) {\n Curry._1(send, {\n TAG: /* UpdateNote */5,\n _0: value\n });\n }),\n profile: /* Permissive */0,\n textareaId: textareaId,\n maxLength: 10000,\n placeholder: t(undefined, undefined, \"note_placeholder\")\n })) : null);\n}\n\nfunction feedbackGenerator(submissionDetails, reviewChecklist, state, showAddFeedbackEditorOpt, send) {\n var showAddFeedbackEditor = showAddFeedbackEditorOpt !== undefined ? showAddFeedbackEditorOpt : true;\n return React.createElement(\"div\", {\n className: \"px-4 md:px-6 pt-4 space-y-8\"\n }, React.createElement(\"div\", undefined, React.createElement(\"div\", {\n className: \"flex h-7 items-end\"\n }, React.createElement(\"h5\", {\n className: \"font-medium text-sm flex items-center\"\n }, React.createElement(PfIcon.make, {\n className: \"if i-check-square-alt-light text-gray-800 text-base md:text-lg inline-block\"\n }), React.createElement(\"span\", {\n className: \"ms-2 md:ms-3 tracking-wide\"\n }, t(undefined, undefined, \"review_checklist\")))), React.createElement(\"div\", {\n className: \"mt-2 md:ms-8\"\n }, React.createElement(\"button\", {\n className: \"bg-primary-100 flex gap-3 items-center justify-between px-4 py-3 border border-dashed border-gray-600 rounded-md w-full font-semibold text-sm text-primary-500 hover:bg-gray-300 hover:text-primary-600 hover:border-primary-300 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-focusColor-500 transition\",\n disabled: CoursesReview__SubmissionDetails.reviewable(submissionDetails) === false,\n onClick: (function (param) {\n Curry._1(send, /* ShowChecklistEditor */3);\n })\n }, React.createElement(\"span\", undefined, ArrayUtils.isEmpty(reviewChecklist) ? t(undefined, undefined, \"create_review_checklist\") : t(undefined, undefined, \"show_review_checklist\")), React.createElement(FaIcon.make, {\n classes: \"fas fa-arrow-right rtl:rotate-180\"\n })))), showAddFeedbackEditor ? React.createElement(\"div\", {\n className: \"course-review__feedback-editor text-sm\"\n }, React.createElement(\"h5\", {\n className: \"font-medium text-sm flex items-center\"\n }, React.createElement(PfIcon.make, {\n className: \"if i-comment-alt-light text-gray-800 text-base md:text-lg inline-block\"\n }), React.createElement(\"span\", {\n className: \"ms-2 md:ms-3 tracking-wide\"\n }, t(undefined, undefined, \"add_your_feedback\"))), ReactUtils.nullUnless(React.createElement(\"div\", {\n className: \"inline-flex items-center bg-green-200 mt-2 md:ms-8 text-green-800 px-2 py-1 rounded-md\"\n }, React.createElement(Icon.make, {\n className: \"if i-check-circle-solid text-green-700 text-base\"\n }), React.createElement(\"span\", {\n className: \"ps-2 text-sm font-semibold\"\n }, t(undefined, undefined, \"feedback_generated_text\"))), state.feedbackGenerated), React.createElement(\"div\", {\n \"aria-label\": \"feedback\",\n className: \"mt-2 md:ms-8\"\n }, React.createElement(MarkdownEditor.make, {\n value: state.newFeedback,\n onChange: (function (feedback) {\n Curry._1(send, {\n TAG: /* UpdateFeedback */0,\n _0: feedback\n });\n }),\n profile: /* Permissive */0,\n maxLength: 10000,\n placeholder: t(undefined, undefined, \"feedback_placeholder\"),\n disabled: CoursesReview__SubmissionDetails.reviewable(submissionDetails) === false\n }))) : null);\n}\n\nfunction showFeedback(feedback) {\n return React.createElement(\"div\", {\n className: \"divide-y space-y-6 md:ms-8\"\n }, Js_array.mapi((function (f, index) {\n var avatarUrl = CoursesReview__Feedback.coachAvatarUrl(f);\n return React.createElement(Spread.make, {\n props: {\n \"data-title\": \"feedback-section\"\n },\n children: React.createElement(\"div\", undefined, React.createElement(\"div\", {\n className: \"pt-6\"\n }, React.createElement(\"div\", {\n className: \"flex\"\n }, React.createElement(\"div\", {\n className: \"shrink-0 w-10 h-10 bg-gray-300 rounded-full overflow-hidden me-4 object-cover\"\n }, avatarUrl !== undefined ? React.createElement(\"img\", {\n src: avatarUrl\n }) : React.createElement(Avatar.make, {\n name: CoursesReview__Feedback.coachName(f)\n })), React.createElement(\"div\", undefined, React.createElement(\"div\", {\n className: \"flex flex-col md:flex-row\"\n }, React.createElement(\"p\", {\n className: \"font-semibold text-sm leading-tight inline-flex\"\n }, CoursesReview__Feedback.coachName(f)), React.createElement(\"p\", {\n className: \"block md:inline-flex text-xs text-gray-800 md:ms-2 leading-tight\"\n }, \"(\" + (CoursesReview__Feedback.coachTitle(f) + \")\"))), React.createElement(\"p\", {\n className: \"text-xs leading-tight font-semibold inline-block text-gray-800\"\n }, CoursesReview__Feedback.createdAtPretty(f)))), React.createElement(\"div\", {\n className: \"md:ms-14\"\n }, React.createElement(MarkdownBlock.make, {\n markdown: CoursesReview__Feedback.value(f),\n className: \"pt-1 text-sm\",\n profile: /* Permissive */0\n })))),\n key: String(index)\n });\n }), ArrayUtils.copyAndSort((function (x, y) {\n return DateFns.differenceInSeconds(CoursesReview__Feedback.createdAt(y), CoursesReview__Feedback.createdAt(x));\n }), feedback)));\n}\n\nfunction showSubmissionStatus(status) {\n var match = status !== 0 ? (\n status >= 3 ? [\n t(undefined, undefined, \"status.rejected\"),\n \"bg-red-100 text-red-700\"\n ] : [\n t(undefined, undefined, \"status.pending_review\"),\n \"bg-yellow-100 text-yellow-800 \"\n ]\n ) : [\n t(undefined, undefined, \"status.completed\"),\n \"bg-green-100 text-green-800\"\n ];\n return React.createElement(\"div\", {\n \"aria-label\": \"submission-leftpane-status\",\n className: \"font-semibold px-2 py-px rounded \" + match[1]\n }, React.createElement(\"p\", undefined, match[0]));\n}\n\nfunction updateReviewChecklist(cb, send, checklist) {\n if (ArrayUtils.isEmpty(checklist)) {\n Curry._1(send, /* ShowGradesEditor */2);\n }\n return Curry._1(cb, checklist);\n}\n\nfunction updateReviewer(cb, send, reviewer) {\n Curry._1(cb, reviewer);\n return Curry._1(send, /* ShowGradesEditor */2);\n}\n\nfunction pageTitle(number, submissionDetails) {\n var teamName = CoursesReview__SubmissionDetails.teamName(submissionDetails);\n var studentOrTeamName = teamName !== undefined ? teamName : CoursesReview__SubmissionDetails.students(submissionDetails).map(CoursesReview__Student.name).join(\", \");\n return t([\n [\n \"submission_number\",\n String(number)\n ],\n [\n \"target_title\",\n CoursesReview__SubmissionDetails.targetTitle(submissionDetails)\n ],\n [\n \"name\",\n studentOrTeamName\n ]\n ], undefined, \"page_title\");\n}\n\nfunction loadSubmissionReport(submissionId, updateSubmissionReportCB) {\n Js_promise.then_((function (response) {\n var updatedReports = response.submissionDetails.submissionReports.map(CoursesReview__SubmissionReport.makeFromJS);\n Curry._1(updateSubmissionReportCB, updatedReports);\n return Promise.resolve(undefined);\n }), Curry._3(make$1, undefined, undefined, {\n submissionId: submissionId\n }));\n}\n\nfunction reloadSubmissionReport(submissionId, reports, updateSubmissionReportCB) {\n var shouldReload = ArrayUtils.isNotEmpty(reports.filter(function (report) {\n var match = CoursesReview__SubmissionReport.status(report);\n return match < 2;\n }));\n if (shouldReload) {\n return loadSubmissionReport(submissionId, updateSubmissionReportCB);\n }\n \n}\n\nfunction CoursesReview__Editor(Props) {\n var overlaySubmission = Props.overlaySubmission;\n var teamSubmission = Props.teamSubmission;\n var evaluationCriteria = Props.evaluationCriteria;\n var reviewChecklist = Props.reviewChecklist;\n var updateSubmissionCB = Props.updateSubmissionCB;\n var updateReviewChecklistCB = Props.updateReviewChecklistCB;\n var targetId = Props.targetId;\n var targetEvaluationCriteriaIds = Props.targetEvaluationCriteriaIds;\n var currentUser = Props.currentUser;\n var number = Props.number;\n var submissionDetails = Props.submissionDetails;\n var submissionId = Props.submissionId;\n var updateReviewerCB = Props.updateReviewerCB;\n var submissionReports = Props.submissionReports;\n var updateSubmissionReportCB = Props.updateSubmissionReportCB;\n var submissionReportPollTime = Props.submissionReportPollTime;\n var match = React.useReducer(reducer, {\n grades: [],\n isAcceptable: true,\n newFeedback: \"\",\n saving: false,\n showReport: false,\n checklist: CoursesReview__OverlaySubmission.checklist(overlaySubmission),\n note: undefined,\n editor: CoursesReview__OverlaySubmission.evaluatedAt(overlaySubmission) === undefined ? (\n Belt_Option.mapWithDefault(CoursesReview__SubmissionDetails.reviewer(submissionDetails), false, (function (r) {\n return UserProxy.userId(CoursesReview__Reviewer.user(r)) === AppRouter__User.id(currentUser);\n })) || CoursesReview__SubmissionDetails.reviewable(submissionDetails) === false ? /* GradesEditor */1 : /* AssignReviewer */0\n ) : /* ReviewedSubmissionEditor */({\n _0: CoursesReview__OverlaySubmission.grades(overlaySubmission)\n }),\n additonalFeedbackEditorVisible: false,\n feedbackGenerated: false,\n nextSubmission: /* DataUnloaded */0,\n reloadSubmissionReport: false\n });\n var send = match[1];\n var state = match[0];\n var newFeedbackRef = React.useRef(state.newFeedback);\n React.useEffect((function () {\n var handleBeforeUnload = function ($$event) {\n if (newFeedbackRef.current !== \"\") {\n $$event.preventDefault();\n $$event.returnValue = \"\";\n return ;\n }\n \n };\n window.addEventListener(\"beforeunload\", handleBeforeUnload);\n return (function (param) {\n window.removeEventListener(\"beforeunload\", handleBeforeUnload);\n });\n }), []);\n React.useEffect((function () {\n newFeedbackRef.current = state.newFeedback;\n }), [state.newFeedback]);\n var status = computeStatus(overlaySubmission, state.grades, state.isAcceptable, evaluationCriteria, targetEvaluationCriteriaIds);\n var match$1 = CoursesReview__OverlaySubmission.grades(overlaySubmission);\n var updateChecklistCB = match$1.length !== 0 ? undefined : (function (checklist) {\n Curry._1(send, {\n TAG: /* UpdateChecklist */4,\n _0: checklist\n });\n });\n var findEditor = function (evaluatedAt, overlaySubmission) {\n if (evaluatedAt !== undefined) {\n return /* ReviewedSubmissionEditor */{\n _0: CoursesReview__OverlaySubmission.grades(overlaySubmission)\n };\n } else if (Belt_Option.mapWithDefault(CoursesReview__SubmissionDetails.reviewer(submissionDetails), false, (function (r) {\n return UserProxy.userId(CoursesReview__Reviewer.user(r)) === AppRouter__User.id(currentUser);\n })) || CoursesReview__SubmissionDetails.reviewable(submissionDetails) === false) {\n return /* GradesEditor */1;\n } else {\n return /* AssignReviewer */0;\n }\n };\n React.useEffect((function () {\n if (!ArrayUtils.isNotEmpty(submissionReports)) {\n return ;\n }\n var intervalId = setInterval((function (param) {\n reloadSubmissionReport(submissionId, submissionReports, updateSubmissionReportCB);\n }), Math.imul(submissionReportPollTime, 1000));\n return (function (param) {\n clearInterval(intervalId);\n });\n }), []);\n var url = RescriptReactRouter.useUrl(undefined, undefined);\n var filter = CoursesReview__Filter.makeFromQueryParams(url.search);\n var grades = state.editor;\n var tmp;\n if (typeof grades === \"number\") {\n switch (grades) {\n case /* AssignReviewer */0 :\n tmp = React.createElement(\"div\", undefined, React.createElement(\"div\", {\n className: \"flex items-center justify-between px-4 md:px-6 py-3 bg-white border-b sticky top-0 z-50 md:h-16\"\n }, React.createElement(\"p\", {\n className: \"font-semibold\"\n }, t(undefined, undefined, \"review\"))), feedbackGenerator(submissionDetails, reviewChecklist, state, false, send), React.createElement(CoursesReview__ReviewerManager.make, {\n submissionId: submissionId,\n submissionDetails: submissionDetails,\n updateReviewerCB: (function (param) {\n Curry._1(updateReviewerCB, param);\n return Curry._1(send, /* ShowGradesEditor */2);\n })\n }));\n break;\n case /* GradesEditor */1 :\n var reviewer = CoursesReview__SubmissionDetails.reviewer(submissionDetails);\n tmp = React.createElement(\"div\", undefined, React.createElement(\"div\", {\n className: \"flex items-center justify-between px-4 md:px-6 py-3 bg-white border-b sticky top-0 z-50 md:h-16\"\n }, React.createElement(\"p\", {\n className: \"font-semibold\"\n }, t(undefined, undefined, \"review\"))), ReactUtils.nullIf(React.createElement(\"div\", {\n \"aria-label\": \"Assigned to\",\n className: \"px-4 py-4 border-b border-gray-300\"\n }, React.createElement(\"div\", {\n className: \"flex items-center justify-between px-3 py-2 rounded-md bg-gray-50\"\n }, reviewer !== undefined ? React.createElement(\"div\", undefined, React.createElement(\"div\", undefined, React.createElement(\"p\", {\n className: \"text-xs text-gray-800\"\n }, t(undefined, undefined, \"assigned_to\")), React.createElement(\"p\", {\n className: \"text-xs font-semibold\"\n }, UserProxy.name(CoursesReview__Reviewer.user(reviewer))))) : null, React.createElement(\"div\", {\n className: \"flex justify-center ms-2 md:ms-4\"\n }, React.createElement(\"button\", {\n className: \"btn btn-small bg-red-100 text-red-800 hover:bg-red-200 focus:ring-2 focus:ring-offset-2 focus:ring-focusColor-500\",\n onClick: (function (param) {\n unassignReviewer(submissionId, send, updateReviewerCB);\n })\n }, React.createElement(Icon.make, {\n className: \"if i-times-regular\"\n }), React.createElement(\"span\", {\n className: \"ms-2\"\n }, t(undefined, undefined, \"remove_assignment\")))))), CoursesReview__SubmissionDetails.reviewable(submissionDetails) === false), feedbackGenerator(submissionDetails, reviewChecklist, state, undefined, send), React.createElement(\"div\", {\n className: \"w-full px-4 md:px-6 pt-8 space-y-8\"\n }, noteForm(submissionDetails, overlaySubmission, teamSubmission, state.note, send), React.createElement(\"div\", {\n className: \"flex items-start md:items-center\"\n }, React.createElement(\"label\", {\n className: \"tracking-wide text-sm font-semibold flex me-4\",\n htmlFor: \"is_acceptable\"\n }, React.createElement(Icon.make, {\n className: \"if i-long-text-light text-gray-800 text-base mt-1 md:mt-0.5 if-w-14 rtlFlip if-h-16\"\n }), React.createElement(\"span\", {\n className: \"ms-2 md:ms-4 tracking-wide w-full\"\n }, t(undefined, undefined, \"submission_acceptable\"))), React.createElement(\"div\", {\n className: \"flex toggle-button__group shrink-0 rounded-lg\",\n id: \"is_acceptable\"\n }, React.createElement(\"button\", {\n className: booleanButtonClasses(state.isAcceptable),\n onClick: (function (param) {\n return updateIsAcceptable(true, send, param);\n })\n }, I18n.ts(undefined, undefined, \"_yes\")), React.createElement(\"button\", {\n className: booleanButtonClasses(!state.isAcceptable),\n onClick: (function (param) {\n return updateIsAcceptable(false, send, param);\n })\n }, I18n.ts(undefined, undefined, \"_no\")))), state.isAcceptable ? React.createElement(\"div\", undefined, React.createElement(\"h5\", {\n className: \"font-medium text-sm flex items-center\"\n }, React.createElement(Icon.make, {\n className: \"if i-tachometer-light text-gray-800 text-base\"\n }), React.createElement(\"span\", {\n className: \"ms-2 md:ms-3 tracking-wide\"\n }, t(undefined, undefined, \"grade_card\"))), React.createElement(\"div\", {\n className: \"flex md:flex-row flex-col md:ms-8 rounded-lg mt-2\"\n }, React.createElement(\"div\", {\n className: \"w-full\"\n }, React.createElement(\"div\", {\n className: \"space-y-6 max-w-2xl\"\n }, renderGradePills(evaluationCriteria, targetEvaluationCriteriaIds, submissionDetails, state, send))))) : React.createElement(\"div\", {\n className: \"md:ps-8 text-sm w-full\"\n }, React.createElement(\"p\", {\n className: \"bg-gray-100 rounded-lg p-4\"\n }, React.createElement(\"span\", {\n className: \"font-semibold\"\n }, t(undefined, undefined, \"rejection_help_note_title\")), t(undefined, undefined, \"rejection_help_note\")))), React.createElement(\"div\", {\n className: \"flex gap-4 overflow-x-auto bg-white md:bg-gray-50 border-t px-4 md:px-6 py-2 md:py-4 mt-4 md:mt-8\"\n }, React.createElement(\"button\", {\n className: \"btn btn-primary btn-large w-full border border-green-600 md:ms-8\",\n disabled: reviewButtonDisabled(status),\n onClick: (function ($$event) {\n gradeSubmission(CoursesReview__OverlaySubmission.id(overlaySubmission), state, send, updateSubmissionCB, status, currentUser, overlaySubmission, $$event, CoursesReview__SubmissionDetails.courseId(submissionDetails), filter);\n })\n }, submitButtonText(state.isAcceptable, state.newFeedback, state.grades))), ReactUtils.nullIf(React.createElement(\"div\", {\n className: \"p-4 md:p-6\"\n }, React.createElement(\"h5\", {\n className: \"font-medium text-sm flex items-center\"\n }, React.createElement(PfIcon.make, {\n className: \"if i-comment-alt-light text-gray-800 text-base md:text-lg inline-block\"\n }), React.createElement(\"span\", {\n className: \"ms-2 md:ms-3 tracking-wide\"\n }, t(undefined, undefined, \"feedback\"))), showFeedback(CoursesReview__OverlaySubmission.feedback(overlaySubmission))), ArrayUtils.isEmpty(CoursesReview__OverlaySubmission.feedback(overlaySubmission))));\n break;\n case /* ChecklistEditor */2 :\n tmp = React.createElement(\"div\", undefined, React.createElement(CoursesReview__Checklist.make, {\n reviewChecklist: reviewChecklist,\n updateFeedbackCB: (function (feedback) {\n Curry._1(send, {\n TAG: /* GenerateFeeback */1,\n _0: feedback,\n _1: findEditor(CoursesReview__OverlaySubmission.evaluatedAt(overlaySubmission), overlaySubmission)\n });\n }),\n feedback: state.newFeedback,\n updateReviewChecklistCB: (function (param) {\n return updateReviewChecklist(updateReviewChecklistCB, send, param);\n }),\n targetId: targetId,\n cancelCB: (function (param) {\n Curry._1(send, {\n TAG: /* UpdateEditor */6,\n _0: findEditor(CoursesReview__OverlaySubmission.evaluatedAt(overlaySubmission), overlaySubmission)\n });\n }),\n overlaySubmission: overlaySubmission,\n submissionDetails: submissionDetails\n }));\n break;\n \n }\n } else {\n var match$2 = CoursesReview__OverlaySubmission.evaluatedAt(overlaySubmission);\n var tmp$1;\n if (match$2 !== undefined) {\n if (status !== 0) {\n if (status >= 3) {\n var name = CoursesReview__OverlaySubmission.evaluatorName(overlaySubmission);\n tmp$1 = React.createElement(\"div\", {\n className: \"flex flex-col md:flex-row md:items-center justify-between bg-red-50 rounded-lg p-4\"\n }, React.createElement(\"div\", undefined, React.createElement(\"p\", {\n className: \"text-sm font-semibold\"\n }, t(undefined, undefined, \"undo_rejection_notice_title\")), React.createElement(\"div\", undefined, React.createElement(\"span\", {\n className: \"text-sm\"\n }, name !== undefined ? name : React.createElement(\"em\", undefined, t(undefined, undefined, \"deleted_coach\"))), React.createElement(\"span\", {\n className: \"text-sm\"\n }, t(undefined, undefined, \"undo_rejection_notice\")))), React.createElement(\"div\", undefined, React.createElement(\"button\", {\n className: \"btn btn-small mt-2 md:mt-0 bg-red-100 md:bg-red-50 text-red-800 hover:bg-red-200 focus:ring-2 focus:ring-offset-2 focus:ring-focusColor-500\",\n disabled: CoursesReview__SubmissionDetails.reviewable(submissionDetails) === false,\n onClick: (function (param) {\n WindowUtils.confirm(undefined, t(undefined, undefined, \"undo_rejection_warning\"), (function (param) {\n undoGrading(CoursesReview__OverlaySubmission.id(overlaySubmission), send);\n }));\n })\n }, React.createElement(\"i\", {\n className: \"fas fa-undo\"\n }), React.createElement(\"span\", {\n className: \"ms-2\"\n }, t(undefined, undefined, \"undo_rejection\")))));\n } else {\n tmp$1 = null;\n }\n } else {\n tmp$1 = React.createElement(\"div\", {\n className: \"flex items-center justify-between\"\n }, React.createElement(\"h5\", {\n className: \"font-medium text-sm flex items-center\"\n }, React.createElement(Icon.make, {\n className: \"if i-tachometer-light text-gray-800 text-base\"\n }), React.createElement(\"span\", {\n className: \"ms-2 md:ms-3 tracking-wide\"\n }, t(undefined, undefined, \"grade_card\"))), React.createElement(\"div\", undefined, React.createElement(\"div\", undefined, React.createElement(\"button\", {\n className: \"btn btn-small bg-red-100 text-red-800 hover:bg-red-200 focus:ring-2 focus:ring-offset-2 focus:ring-focusColor-500\",\n disabled: CoursesReview__SubmissionDetails.reviewable(submissionDetails) === false,\n onClick: (function (param) {\n WindowUtils.confirm(undefined, t(undefined, undefined, \"undo_grade_warning\"), (function (param) {\n undoGrading(CoursesReview__OverlaySubmission.id(overlaySubmission), send);\n }));\n })\n }, React.createElement(\"i\", {\n className: \"fas fa-undo\"\n }), React.createElement(\"span\", {\n className: \"ms-2\"\n }, t(undefined, undefined, \"undo_grading\"))))));\n }\n } else {\n tmp$1 = null;\n }\n var match$3 = CoursesReview__OverlaySubmission.feedback(overlaySubmission);\n tmp = React.createElement(\"div\", undefined, React.createElement(\"div\", {\n className: \"flex items-center justify-between px-4 md:px-6 py-3 bg-white border-b sticky top-0 z-50 md:h-16\"\n }, React.createElement(\"div\", undefined, React.createElement(\"p\", {\n className: \"font-semibold\"\n }, t(undefined, undefined, \"review\")), Belt_Option.mapWithDefault(CoursesReview__OverlaySubmission.evaluatedAt(overlaySubmission), null, (function (date) {\n return React.createElement(\"p\", {\n className: \"text-gray-800 text-xs\"\n }, DateFns.format(date, \"MMMM d, yyyy\"));\n }))), submissionReviewStatus(status, overlaySubmission)), React.createElement(\"div\", {\n className: \"w-full p-4 md:p-6\"\n }, tmp$1, React.createElement(\"div\", {\n className: \"flex md:flex-row flex-col md:ms-8 bg-gray-50 mt-2\"\n }, React.createElement(\"div\", {\n className: \"w-full\"\n }, showGrades(grades._0, evaluationCriteria, submissionDetails, state)), React.createElement(\"div\", {\n className: \"block md:hidden\"\n }, submissionStatusIcon(status, overlaySubmission)))), ReactUtils.nullUnless(React.createElement(\"div\", undefined, feedbackGenerator(submissionDetails, reviewChecklist, state, undefined, send), React.createElement(\"div\", {\n className: \"flex justify-end px-4 md:px-6 py-4\"\n }, React.createElement(\"button\", {\n className: \"btn btn-success border border-green-600 w-full md:w-auto\",\n disabled: state.newFeedback === \"\" || state.saving,\n onClick: (function (param) {\n createFeedback(CoursesReview__OverlaySubmission.id(overlaySubmission), state.newFeedback, send, overlaySubmission, currentUser, updateSubmissionCB);\n })\n }, t(undefined, undefined, \"share_feedback\")))), state.additonalFeedbackEditorVisible), React.createElement(\"div\", {\n className: \"p-4 md:p-6 pb-18 md:pb-20\"\n }, React.createElement(\"h5\", {\n className: \"font-medium text-sm flex items-center\"\n }, React.createElement(PfIcon.make, {\n className: \"if i-comment-alt-light text-gray-800 text-base md:text-lg inline-block\"\n }), React.createElement(\"span\", {\n className: \"ms-2 md:ms-3 tracking-wide\"\n }, t(undefined, undefined, \"feedback\"))), ReactUtils.nullIf(React.createElement(\"div\", {\n className: \"py-4 md:ms-8 text-center\"\n }, React.createElement(\"button\", {\n className: \"bg-primary-100 flex items-center justify-center px-4 py-3 border border-dashed border-primary-500 rounded-md w-full font-semibold text-sm text-primary-600 hover:bg-white hover:text-primary-500 hover:shadow-lg hover:border-primary-300 focus:outline-none transition cursor-pointer focus:ring-2 focus:ring-offset-2 focus:ring-focusColor-500\",\n disabled: CoursesReview__SubmissionDetails.reviewable(submissionDetails) === false,\n onClick: (function (param) {\n Curry._1(send, /* ShowAdditionalFeedbackEditor */4);\n })\n }, React.createElement(Icon.make, {\n className: \"if i-plus-regular\"\n }), React.createElement(\"p\", {\n className: \"ps-2\"\n }, match$3.length !== 0 ? t(undefined, undefined, \"add_another_feedback\") : t(undefined, undefined, \"add_feedback\")))), state.additonalFeedbackEditorVisible), showFeedback(CoursesReview__OverlaySubmission.feedback(overlaySubmission))));\n }\n return [\n React.createElement(ReactHelmet.Helmet, {\n children: React.createElement(\"title\", undefined, pageTitle(number, submissionDetails)),\n key: \"helmet\"\n }),\n React.createElement(\"div\", {\n key: \"submission-header\"\n }, React.createElement(\"div\", undefined, warning(submissionDetails)), headerSection(state, submissionDetails, filter), ReactUtils.nullIf(React.createElement(\"div\", {\n className: \"flex gap-4 overflow-x-auto px-4 md:px-6 py-2 md:py-3 border-b bg-gray-50\"\n }, CoursesReview__SubmissionDetails.allSubmissions(submissionDetails).map(function (submission, index) {\n return React.createElement(CoursesReview__SubmissionInfoCard.make, {\n submission: submission,\n submissionNumber: CoursesReview__SubmissionDetails.allSubmissions(submissionDetails).length - index | 0,\n selected: CoursesReview__SubmissionMeta.id(submission) === submissionId,\n filterString: url.search,\n key: CoursesReview__SubmissionMeta.id(submission)\n });\n })), CoursesReview__SubmissionDetails.allSubmissions(submissionDetails).length === 1)),\n React.createElement(DisablingCover.make, {\n disabled: state.saving,\n containerClasses: \"flex flex-col md:flex-row flex-1 gap-6 md:gap-0 md:overflow-y-auto\",\n children: null,\n key: \"submission-editor\"\n }, React.createElement(\"div\", {\n className: \"md:w-1/2 w-full bg-white md:border-e relative md:overflow-y-auto\"\n }, React.createElement(\"div\", {\n className: \"flex items-center px-4 md:px-6 py-3 bg-white border-b sticky top-0 z-50 h-16\"\n }, React.createElement(\"div\", {\n className: \"flex flex-1 items-center justify-between\"\n }, React.createElement(\"div\", undefined, React.createElement(\"p\", {\n className: \"font-semibold\"\n }, t([[\n \"number\",\n String(number)\n ]], undefined, \"submission_number\")), React.createElement(\"p\", {\n className: \"text-gray-800 text-xs\",\n title: DateFns.formatPreset(CoursesReview__OverlaySubmission.createdAt(overlaySubmission), undefined, true, true, undefined)\n }, DateFns.formatPreset(CoursesReview__OverlaySubmission.createdAt(overlaySubmission), undefined, true, undefined, undefined))), React.createElement(\"div\", {\n className: \"text-sm\"\n }, showSubmissionStatus(status)))), React.createElement(\"div\", {\n className: \"p-4 md:p-6 md:pb-20\"\n }, React.createElement(SubmissionChecklistShow.make, {\n checklist: state.checklist,\n updateChecklistCB: updateChecklistCB\n })), submissionReports.map(function (report) {\n return React.createElement(CoursesReview__SubmissionReportShow.make, {\n report: report,\n key: report.id\n });\n })), React.createElement(\"div\", {\n className: \"md:w-1/2 w-full md:overflow-y-auto\"\n }, tmp, React.createElement(\"div\", {\n className: \"fixed bottom-0 inset-x-0 z-10\"\n }, React.createElement(\"div\", undefined, reviewNextButton(state.nextSubmission, filter)))))\n ];\n}\n\nvar ts = I18n.ts;\n\nvar make$2 = CoursesReview__Editor;\n\nexport {\n t ,\n ts ,\n str ,\n reducer ,\n CreateGradingMutation ,\n UndoGradingMutation ,\n CreateFeedbackMutation ,\n NextSubmissionQuery ,\n UnassignReviewerMutation ,\n SubmissionReportQuery ,\n booleanButtonClasses ,\n updateIsAcceptable ,\n unassignReviewer ,\n getNextSubmission ,\n isReviewDisabled ,\n makeFeedback ,\n createFeedback ,\n undoGrading ,\n passed ,\n trimToOption ,\n trimArraytoOption ,\n navigationDisabled ,\n gradeSubmissionQuery ,\n warning ,\n closeOverlay ,\n reviewNextButton ,\n headerSection ,\n updateGrading ,\n handleGradePillClick ,\n findEvaluationCriterion ,\n gradePillHeader ,\n gradePillClasses ,\n showGradePill ,\n showGrades ,\n renderGradePills ,\n badgeColorClasses ,\n gradeBadgeClasses ,\n textColor ,\n submissionReviewStatus ,\n submissionStatusIcon ,\n gradeSubmission ,\n reviewButtonDisabled ,\n computeStatus ,\n submitButtonText ,\n noteForm ,\n feedbackGenerator ,\n showFeedback ,\n showSubmissionStatus ,\n updateReviewChecklist ,\n updateReviewer ,\n pageTitle ,\n loadSubmissionReport ,\n reloadSubmissionReport ,\n make$2 as make,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Curry from \"../../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as Js_array from \"../../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as UserProxy from \"../../../shared/types/UserProxy.bs.js\";\nimport * as Js_promise from \"../../../../../node_modules/rescript/lib/es6/js_promise.js\";\nimport * as Caml_option from \"../../../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as GraphqlQuery from \"../../../shared/utils/GraphqlQuery.bs.js\";\nimport * as SkeletonLoading from \"../../../shared/components/SkeletonLoading.bs.js\";\nimport * as CoursesReview__Editor from \"./CoursesReview__Editor.bs.js\";\nimport * as CoursesReview__SubmissionMeta from \"../types/CoursesReview__SubmissionMeta.bs.js\";\nimport * as CoursesReview__SubmissionDetails from \"../types/CoursesReview__SubmissionDetails.bs.js\";\n\nfunction str(prim) {\n return prim;\n}\n\nvar Raw = {};\n\nvar query = \"query SubmissionDetailsQuery($submissionId: ID!) {\\nsubmissionDetails(submissionId: $submissionId) {\\ntargetId \\ntargetTitle \\ncreatedAt \\nsubmissionReportPollTime \\nstudents {\\nid \\nname \\n}\\n\\nsubmissionReports {\\nid \\nreport \\nstatus \\nstartedAt \\ncompletedAt \\nqueuedAt \\nreporter \\nheading \\ntargetUrl \\n}\\n\\nevaluationCriteria {\\nid \\nname \\nmaxGrade \\ngradeLabels {\\ngrade \\nlabel \\n}\\n\\n}\\n\\nreviewChecklist {\\ntitle \\nresult {\\ntitle \\nfeedback \\n}\\n\\n}\\n\\ntargetEvaluationCriteriaIds \\nsubmission {\\nid \\nevaluatorName \\npassedAt \\ncreatedAt \\nevaluatedAt \\narchivedAt \\nfiles {\\nurl \\ntitle \\nid \\n}\\n\\ngrades {\\nevaluationCriterionId \\ngrade \\n}\\n\\nfeedback {\\nid \\ncoachName \\ncoachAvatarUrl \\ncoachTitle \\ncreatedAt \\nvalue \\n}\\n\\nchecklist \\n}\\n\\nallSubmissions {\\nid \\npassedAt \\ncreatedAt \\nevaluatedAt \\nfeedbackSent \\narchivedAt \\n}\\n\\ncoaches {\\n...UserProxyFragment \\n}\\n\\nteamName \\ncourseId \\nreviewable \\nwarning \\nreviewerDetails {\\nassignedAt \\nuser {\\n...UserProxyFragment \\n}\\n\\n}\\n\\n}\\n\\n}\\n\" + UserProxy.Fragment.query;\n\nfunction parse(value) {\n var value$1 = value.submissionDetails;\n var value$2 = value$1.students;\n var value$3 = value$1.submissionReports;\n var value$4 = value$1.evaluationCriteria;\n var value$5 = value$1.reviewChecklist;\n var value$6 = value$1.targetEvaluationCriteriaIds;\n var value$7 = value$1.submission;\n var value$8 = value$7.evaluatorName;\n var value$9 = value$7.passedAt;\n var value$10 = value$7.evaluatedAt;\n var value$11 = value$7.archivedAt;\n var value$12 = value$7.files;\n var value$13 = value$7.grades;\n var value$14 = value$7.feedback;\n var value$15 = value$1.allSubmissions;\n var value$16 = value$1.coaches;\n var value$17 = value$1.teamName;\n var value$18 = value$1.warning;\n var value$19 = value$1.reviewerDetails;\n var tmp;\n if (value$19 == null) {\n tmp = undefined;\n } else {\n var value$20 = value$19.user;\n tmp = {\n assignedAt: value$19.assignedAt,\n user: UserProxy.Fragment.verifyArgsAndParse(\"UserProxyFragment\", value$20)\n };\n }\n return {\n submissionDetails: {\n targetId: value$1.targetId,\n targetTitle: value$1.targetTitle,\n createdAt: value$1.createdAt,\n submissionReportPollTime: value$1.submissionReportPollTime,\n students: Js_array.map((function (value) {\n return {\n id: value.id,\n name: value.name\n };\n }), value$2),\n submissionReports: Js_array.map((function (value) {\n var value$1 = value.report;\n var value$2 = value.status;\n var tmp;\n switch (value$2) {\n case \"error\" :\n tmp = \"error\";\n break;\n case \"failure\" :\n tmp = \"failure\";\n break;\n case \"in_progress\" :\n tmp = \"in_progress\";\n break;\n case \"queued\" :\n tmp = \"queued\";\n break;\n case \"success\" :\n tmp = \"success\";\n break;\n default:\n tmp = {\n NAME: \"FutureAddedValue\",\n VAL: value$2\n };\n }\n var value$3 = value.startedAt;\n var value$4 = value.completedAt;\n var value$5 = value.heading;\n var value$6 = value.targetUrl;\n return {\n id: value.id,\n report: !(value$1 == null) ? value$1 : undefined,\n status: tmp,\n startedAt: !(value$3 == null) ? Caml_option.some(value$3) : undefined,\n completedAt: !(value$4 == null) ? Caml_option.some(value$4) : undefined,\n queuedAt: value.queuedAt,\n reporter: value.reporter,\n heading: !(value$5 == null) ? value$5 : undefined,\n targetUrl: !(value$6 == null) ? value$6 : undefined\n };\n }), value$3),\n evaluationCriteria: Js_array.map((function (value) {\n var value$1 = value.gradeLabels;\n return {\n id: value.id,\n name: value.name,\n maxGrade: value.maxGrade,\n gradeLabels: Js_array.map((function (value) {\n return {\n grade: value.grade,\n label: value.label\n };\n }), value$1)\n };\n }), value$4),\n reviewChecklist: Js_array.map((function (value) {\n var value$1 = value.result;\n return {\n title: value.title,\n result: Js_array.map((function (value) {\n var value$1 = value.feedback;\n return {\n title: value.title,\n feedback: !(value$1 == null) ? value$1 : undefined\n };\n }), value$1)\n };\n }), value$5),\n targetEvaluationCriteriaIds: Js_array.map((function (value) {\n return value;\n }), value$6),\n submission: {\n id: value$7.id,\n evaluatorName: !(value$8 == null) ? value$8 : undefined,\n passedAt: !(value$9 == null) ? Caml_option.some(value$9) : undefined,\n createdAt: value$7.createdAt,\n evaluatedAt: !(value$10 == null) ? Caml_option.some(value$10) : undefined,\n archivedAt: !(value$11 == null) ? Caml_option.some(value$11) : undefined,\n files: Js_array.map((function (value) {\n return {\n url: value.url,\n title: value.title,\n id: value.id\n };\n }), value$12),\n grades: Js_array.map((function (value) {\n return {\n evaluationCriterionId: value.evaluationCriterionId,\n grade: value.grade\n };\n }), value$13),\n feedback: Js_array.map((function (value) {\n var value$1 = value.coachName;\n var value$2 = value.coachAvatarUrl;\n return {\n id: value.id,\n coachName: !(value$1 == null) ? value$1 : undefined,\n coachAvatarUrl: !(value$2 == null) ? value$2 : undefined,\n coachTitle: value.coachTitle,\n createdAt: value.createdAt,\n value: value.value\n };\n }), value$14),\n checklist: value$7.checklist\n },\n allSubmissions: Js_array.map((function (value) {\n var value$1 = value.passedAt;\n var value$2 = value.evaluatedAt;\n var value$3 = value.archivedAt;\n return {\n id: value.id,\n passedAt: !(value$1 == null) ? Caml_option.some(value$1) : undefined,\n createdAt: value.createdAt,\n evaluatedAt: !(value$2 == null) ? Caml_option.some(value$2) : undefined,\n feedbackSent: value.feedbackSent,\n archivedAt: !(value$3 == null) ? Caml_option.some(value$3) : undefined\n };\n }), value$15),\n coaches: Js_array.map((function (value) {\n return UserProxy.Fragment.verifyArgsAndParse(\"UserProxyFragment\", value);\n }), value$16),\n teamName: !(value$17 == null) ? value$17 : undefined,\n courseId: value$1.courseId,\n reviewable: value$1.reviewable,\n warning: !(value$18 == null) ? value$18 : undefined,\n reviewerDetails: tmp\n }\n };\n}\n\nfunction serialize(value) {\n var value$1 = value.submissionDetails;\n var value$2 = value$1.reviewerDetails;\n var reviewerDetails;\n if (value$2 !== undefined) {\n var value$3 = value$2.user;\n var user = UserProxy.Fragment.serialize(value$3);\n var value$4 = value$2.assignedAt;\n reviewerDetails = {\n assignedAt: value$4,\n user: user\n };\n } else {\n reviewerDetails = null;\n }\n var value$5 = value$1.warning;\n var warning = value$5 !== undefined ? value$5 : null;\n var value$6 = value$1.reviewable;\n var value$7 = value$1.courseId;\n var value$8 = value$1.teamName;\n var teamName = value$8 !== undefined ? value$8 : null;\n var value$9 = value$1.coaches;\n var coaches = Js_array.map((function (value) {\n return UserProxy.Fragment.serialize(value);\n }), value$9);\n var value$10 = value$1.allSubmissions;\n var allSubmissions = Js_array.map((function (value) {\n var value$1 = value.archivedAt;\n var archivedAt = value$1 !== undefined ? Caml_option.valFromOption(value$1) : null;\n var value$2 = value.feedbackSent;\n var value$3 = value.evaluatedAt;\n var evaluatedAt = value$3 !== undefined ? Caml_option.valFromOption(value$3) : null;\n var value$4 = value.createdAt;\n var value$5 = value.passedAt;\n var passedAt = value$5 !== undefined ? Caml_option.valFromOption(value$5) : null;\n var value$6 = value.id;\n return {\n id: value$6,\n passedAt: passedAt,\n createdAt: value$4,\n evaluatedAt: evaluatedAt,\n feedbackSent: value$2,\n archivedAt: archivedAt\n };\n }), value$10);\n var value$11 = value$1.submission;\n var value$12 = value$11.checklist;\n var value$13 = value$11.feedback;\n var feedback = Js_array.map((function (value) {\n var value$1 = value.value;\n var value$2 = value.createdAt;\n var value$3 = value.coachTitle;\n var value$4 = value.coachAvatarUrl;\n var coachAvatarUrl = value$4 !== undefined ? value$4 : null;\n var value$5 = value.coachName;\n var coachName = value$5 !== undefined ? value$5 : null;\n var value$6 = value.id;\n return {\n id: value$6,\n coachName: coachName,\n coachAvatarUrl: coachAvatarUrl,\n coachTitle: value$3,\n createdAt: value$2,\n value: value$1\n };\n }), value$13);\n var value$14 = value$11.grades;\n var grades = Js_array.map((function (value) {\n var value$1 = value.grade;\n var value$2 = value.evaluationCriterionId;\n return {\n evaluationCriterionId: value$2,\n grade: value$1\n };\n }), value$14);\n var value$15 = value$11.files;\n var files = Js_array.map((function (value) {\n var value$1 = value.id;\n var value$2 = value.title;\n var value$3 = value.url;\n return {\n url: value$3,\n title: value$2,\n id: value$1\n };\n }), value$15);\n var value$16 = value$11.archivedAt;\n var archivedAt = value$16 !== undefined ? Caml_option.valFromOption(value$16) : null;\n var value$17 = value$11.evaluatedAt;\n var evaluatedAt = value$17 !== undefined ? Caml_option.valFromOption(value$17) : null;\n var value$18 = value$11.createdAt;\n var value$19 = value$11.passedAt;\n var passedAt = value$19 !== undefined ? Caml_option.valFromOption(value$19) : null;\n var value$20 = value$11.evaluatorName;\n var evaluatorName = value$20 !== undefined ? value$20 : null;\n var value$21 = value$11.id;\n var submission = {\n id: value$21,\n evaluatorName: evaluatorName,\n passedAt: passedAt,\n createdAt: value$18,\n evaluatedAt: evaluatedAt,\n archivedAt: archivedAt,\n files: files,\n grades: grades,\n feedback: feedback,\n checklist: value$12\n };\n var value$22 = value$1.targetEvaluationCriteriaIds;\n var targetEvaluationCriteriaIds = Js_array.map((function (value) {\n return value;\n }), value$22);\n var value$23 = value$1.reviewChecklist;\n var reviewChecklist = Js_array.map((function (value) {\n var value$1 = value.result;\n var result = Js_array.map((function (value) {\n var value$1 = value.feedback;\n var feedback = value$1 !== undefined ? value$1 : null;\n var value$2 = value.title;\n return {\n title: value$2,\n feedback: feedback\n };\n }), value$1);\n var value$2 = value.title;\n return {\n title: value$2,\n result: result\n };\n }), value$23);\n var value$24 = value$1.evaluationCriteria;\n var evaluationCriteria = Js_array.map((function (value) {\n var value$1 = value.gradeLabels;\n var gradeLabels = Js_array.map((function (value) {\n var value$1 = value.label;\n var value$2 = value.grade;\n return {\n grade: value$2,\n label: value$1\n };\n }), value$1);\n var value$2 = value.maxGrade;\n var value$3 = value.name;\n var value$4 = value.id;\n return {\n id: value$4,\n name: value$3,\n maxGrade: value$2,\n gradeLabels: gradeLabels\n };\n }), value$24);\n var value$25 = value$1.submissionReports;\n var submissionReports = Js_array.map((function (value) {\n var value$1 = value.targetUrl;\n var targetUrl = value$1 !== undefined ? value$1 : null;\n var value$2 = value.heading;\n var heading = value$2 !== undefined ? value$2 : null;\n var value$3 = value.reporter;\n var value$4 = value.queuedAt;\n var value$5 = value.completedAt;\n var completedAt = value$5 !== undefined ? Caml_option.valFromOption(value$5) : null;\n var value$6 = value.startedAt;\n var startedAt = value$6 !== undefined ? Caml_option.valFromOption(value$6) : null;\n var value$7 = value.status;\n var status = typeof value$7 === \"object\" ? value$7.VAL : (\n value$7 === \"queued\" ? \"queued\" : (\n value$7 === \"error\" ? \"error\" : (\n value$7 === \"failure\" ? \"failure\" : (\n value$7 === \"success\" ? \"success\" : \"in_progress\"\n )\n )\n )\n );\n var value$8 = value.report;\n var report = value$8 !== undefined ? value$8 : null;\n var value$9 = value.id;\n return {\n id: value$9,\n report: report,\n status: status,\n startedAt: startedAt,\n completedAt: completedAt,\n queuedAt: value$4,\n reporter: value$3,\n heading: heading,\n targetUrl: targetUrl\n };\n }), value$25);\n var value$26 = value$1.students;\n var students = Js_array.map((function (value) {\n var value$1 = value.name;\n var value$2 = value.id;\n return {\n id: value$2,\n name: value$1\n };\n }), value$26);\n var value$27 = value$1.submissionReportPollTime;\n var value$28 = value$1.createdAt;\n var value$29 = value$1.targetTitle;\n var value$30 = value$1.targetId;\n var submissionDetails = {\n targetId: value$30,\n targetTitle: value$29,\n createdAt: value$28,\n submissionReportPollTime: value$27,\n students: students,\n submissionReports: submissionReports,\n evaluationCriteria: evaluationCriteria,\n reviewChecklist: reviewChecklist,\n targetEvaluationCriteriaIds: targetEvaluationCriteriaIds,\n submission: submission,\n allSubmissions: allSubmissions,\n coaches: coaches,\n teamName: teamName,\n courseId: value$7,\n reviewable: value$6,\n warning: warning,\n reviewerDetails: reviewerDetails\n };\n return {\n submissionDetails: submissionDetails\n };\n}\n\nfunction serializeVariables(inp) {\n return {\n submissionId: inp.submissionId\n };\n}\n\nfunction makeVariables(submissionId, param) {\n return {\n submissionId: submissionId\n };\n}\n\nvar SubmissionDetailsQuery_inner = {\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables\n};\n\nvar include = GraphqlQuery.Extender({\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar make = include.make;\n\nvar SubmissionDetailsQuery_Graphql_error = include.Graphql_error;\n\nvar SubmissionDetailsQuery_decodeNotification = include.decodeNotification;\n\nvar SubmissionDetailsQuery_decodeObject = include.decodeObject;\n\nvar SubmissionDetailsQuery_decodeNotifications = include.decodeNotifications;\n\nvar SubmissionDetailsQuery_decodeErrors = include.decodeErrors;\n\nvar SubmissionDetailsQuery_flashNotifications = include.flashNotifications;\n\nvar SubmissionDetailsQuery_sendQuery = include.sendQuery;\n\nvar SubmissionDetailsQuery_query = include.query;\n\nvar SubmissionDetailsQuery_fetch = include.$$fetch;\n\nvar SubmissionDetailsQuery = {\n SubmissionDetailsQuery_inner: SubmissionDetailsQuery_inner,\n Raw: Raw,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables,\n Graphql_error: SubmissionDetailsQuery_Graphql_error,\n decodeNotification: SubmissionDetailsQuery_decodeNotification,\n decodeObject: SubmissionDetailsQuery_decodeObject,\n decodeNotifications: SubmissionDetailsQuery_decodeNotifications,\n decodeErrors: SubmissionDetailsQuery_decodeErrors,\n flashNotifications: SubmissionDetailsQuery_flashNotifications,\n sendQuery: SubmissionDetailsQuery_sendQuery,\n query: SubmissionDetailsQuery_query,\n $$fetch: SubmissionDetailsQuery_fetch,\n make: make\n};\n\nfunction getSubmissionDetails(submissionId, setState, param) {\n Curry._1(setState, (function (param) {\n return /* Loading */0;\n }));\n Js_promise.then_((function (response) {\n Curry._1(setState, (function (param) {\n return /* Loaded */{\n _0: CoursesReview__SubmissionDetails.decodeJs(response.submissionDetails)\n };\n }));\n return Promise.resolve(undefined);\n }), Curry._3(make, undefined, undefined, {\n submissionId: submissionId\n }));\n}\n\nfunction updateSubmission(setState, submissionDetails, overlaySubmission) {\n var newSubmissionDetails = CoursesReview__SubmissionDetails.updateOverlaySubmission(overlaySubmission, submissionDetails);\n return Curry._1(setState, (function (param) {\n return /* Loaded */{\n _0: newSubmissionDetails\n };\n }));\n}\n\nfunction currentSubmissionIndex(submissionId, allSubmissions) {\n return allSubmissions.length - Js_array.findIndex((function (s) {\n return CoursesReview__SubmissionMeta.id(s) === submissionId;\n }), allSubmissions) | 0;\n}\n\nfunction updateReviewChecklist(submissionDetails, setState, reviewChecklist) {\n return Curry._1(setState, (function (param) {\n return /* Loaded */{\n _0: CoursesReview__SubmissionDetails.updateReviewChecklist(reviewChecklist, submissionDetails)\n };\n }));\n}\n\nfunction updateReviewer(submissionDetails, setState, reviewer) {\n return Curry._1(setState, (function (param) {\n return /* Loaded */{\n _0: CoursesReview__SubmissionDetails.updateReviewer(reviewer, submissionDetails)\n };\n }));\n}\n\nfunction updateSubmissionReport(submissionDetails, setState, submissionReports) {\n return Curry._1(setState, (function (param) {\n return /* Loaded */{\n _0: CoursesReview__SubmissionDetails.updateSubmissionReport(submissionReports, submissionDetails)\n };\n }));\n}\n\nfunction CoursesReview__SubmissionsRoot(Props) {\n var submissionId = Props.submissionId;\n var currentUser = Props.currentUser;\n var match = React.useState(function () {\n return /* Loading */0;\n });\n var setState = match[1];\n var state = match[0];\n React.useEffect((function () {\n return getSubmissionDetails(submissionId, setState, undefined);\n }), [submissionId]);\n var tmp;\n if (state) {\n var submissionDetails = state._0;\n tmp = React.createElement(CoursesReview__Editor.make, {\n overlaySubmission: CoursesReview__SubmissionDetails.submission(submissionDetails),\n teamSubmission: CoursesReview__SubmissionDetails.students(submissionDetails).length > 1,\n evaluationCriteria: CoursesReview__SubmissionDetails.evaluationCriteria(submissionDetails),\n reviewChecklist: CoursesReview__SubmissionDetails.reviewChecklist(submissionDetails),\n updateSubmissionCB: (function (param) {\n return updateSubmission(setState, submissionDetails, param);\n }),\n updateReviewChecklistCB: (function (param) {\n return updateReviewChecklist(submissionDetails, setState, param);\n }),\n targetId: CoursesReview__SubmissionDetails.targetId(submissionDetails),\n targetEvaluationCriteriaIds: CoursesReview__SubmissionDetails.targetEvaluationCriteriaIds(submissionDetails),\n currentUser: currentUser,\n number: currentSubmissionIndex(submissionId, CoursesReview__SubmissionDetails.allSubmissions(submissionDetails)),\n submissionDetails: submissionDetails,\n submissionId: submissionId,\n updateReviewerCB: (function (param) {\n return updateReviewer(submissionDetails, setState, param);\n }),\n submissionReports: CoursesReview__SubmissionDetails.submissionReports(submissionDetails),\n updateSubmissionReportCB: (function (param) {\n return updateSubmissionReport(submissionDetails, setState, param);\n }),\n submissionReportPollTime: CoursesReview__SubmissionDetails.submissionReportPollTime(submissionDetails)\n });\n } else {\n tmp = React.createElement(\"div\", undefined, React.createElement(\"div\", {\n className: \"bg-gray-50 md:px-4\"\n }, React.createElement(\"div\", {\n className: \"mx-auto\"\n }, SkeletonLoading.card(undefined, undefined))), React.createElement(\"div\", {\n className: \"grid md:grid-cols-2 mt-10 border-t h-full\"\n }, React.createElement(\"div\", {\n className: \"md:px-4 bg-white\"\n }, SkeletonLoading.heading(undefined), SkeletonLoading.multiple(3, SkeletonLoading.paragraph(undefined))), React.createElement(\"div\", {\n className: \"md:px-4 bg-gray-50 border-s\"\n }, SkeletonLoading.userDetails(undefined), SkeletonLoading.paragraph(undefined), SkeletonLoading.userDetails(undefined), SkeletonLoading.paragraph(undefined))));\n }\n return React.createElement(\"div\", {\n className: \"flex-1 md:flex md:flex-col md:overflow-hidden fixed z-[50] inset-0 overflow-y-auto bg-white\"\n }, tmp);\n}\n\nvar UserProxyFragment;\n\nvar make$1 = CoursesReview__SubmissionsRoot;\n\nexport {\n str ,\n UserProxyFragment ,\n SubmissionDetailsQuery ,\n getSubmissionDetails ,\n updateSubmission ,\n currentSubmissionIndex ,\n updateReviewChecklist ,\n updateReviewer ,\n updateSubmissionReport ,\n make$1 as make,\n}\n/* include Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as DateFns from \"../utils/DateFns.bs.js\";\nimport * as Js_array from \"../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as Belt_Option from \"../../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as Caml_option from \"../../../../node_modules/rescript/lib/es6/caml_option.js\";\n\nfunction id(t) {\n return t.id;\n}\n\nfunction name(t) {\n return t.name;\n}\n\nfunction avatarUrl(t) {\n return t.avatarUrl;\n}\n\nfunction fullTitle(t) {\n return t.fullTitle;\n}\n\nfunction lastSeenAt(t) {\n return t.lastSeenAt;\n}\n\nfunction taggings(t) {\n return t.taggings;\n}\n\nfunction affiliation(t) {\n return t.affiliation;\n}\n\nfunction title(t) {\n return t.title;\n}\n\nfunction currentStandingName(t) {\n return t.currentStandingName;\n}\n\nvar Raw = {};\n\nfunction parse(value) {\n var value$1 = value.affiliation;\n var value$2 = value.avatarUrl;\n var value$3 = value.taggings;\n var value$4 = value.lastSeenAt;\n var value$5 = value.currentStandingName;\n return {\n id: value.id,\n name: value.name,\n title: value.title,\n affiliation: !(value$1 == null) ? value$1 : undefined,\n fullTitle: value.fullTitle,\n avatarUrl: !(value$2 == null) ? value$2 : undefined,\n taggings: Js_array.map((function (value) {\n return value;\n }), value$3),\n lastSeenAt: !(value$4 == null) ? Caml_option.some(value$4) : undefined,\n currentStandingName: !(value$5 == null) ? value$5 : undefined\n };\n}\n\nfunction serialize(value) {\n var value$1 = value.currentStandingName;\n var currentStandingName = value$1 !== undefined ? value$1 : null;\n var value$2 = value.lastSeenAt;\n var lastSeenAt = value$2 !== undefined ? Caml_option.valFromOption(value$2) : null;\n var value$3 = value.taggings;\n var taggings = Js_array.map((function (value) {\n return value;\n }), value$3);\n var value$4 = value.avatarUrl;\n var avatarUrl = value$4 !== undefined ? value$4 : null;\n var value$5 = value.fullTitle;\n var value$6 = value.affiliation;\n var affiliation = value$6 !== undefined ? value$6 : null;\n var value$7 = value.title;\n var value$8 = value.name;\n var value$9 = value.id;\n return {\n id: value$9,\n name: value$8,\n title: value$7,\n affiliation: affiliation,\n fullTitle: value$5,\n avatarUrl: avatarUrl,\n taggings: taggings,\n lastSeenAt: lastSeenAt,\n currentStandingName: currentStandingName\n };\n}\n\nfunction verifyArgsAndParse(_UserDetailsFragment, value) {\n return parse(value);\n}\n\nfunction verifyName(param) {\n \n}\n\nvar Fragment = {\n Raw: Raw,\n query: \"fragment UserDetailsFragment on User {\\nid \\nname \\ntitle \\naffiliation \\nfullTitle \\navatarUrl \\ntaggings \\nlastSeenAt \\ncurrentStandingName \\n}\\n\",\n parse: parse,\n serialize: serialize,\n verifyArgsAndParse: verifyArgsAndParse,\n verifyName: verifyName\n};\n\nfunction makeFromFragment(user) {\n return {\n id: user.id,\n name: user.name,\n title: user.title,\n affiliation: user.affiliation,\n fullTitle: user.fullTitle,\n avatarUrl: user.avatarUrl,\n taggings: user.taggings,\n lastSeenAt: Belt_Option.map(user.lastSeenAt, DateFns.decodeISO),\n currentStandingName: user.currentStandingName\n };\n}\n\nfunction makeFromJs(jsObject) {\n return {\n id: jsObject.id,\n name: jsObject.name,\n title: jsObject.title,\n affiliation: jsObject.affiliation,\n fullTitle: jsObject.fullTitle,\n avatarUrl: jsObject.avatarUrl,\n taggings: jsObject.taggings,\n lastSeenAt: Belt_Option.map(jsObject.lastSeenAt, DateFns.decodeISO),\n currentStandingName: jsObject.currentStandingName\n };\n}\n\nexport {\n id ,\n name ,\n avatarUrl ,\n fullTitle ,\n lastSeenAt ,\n taggings ,\n affiliation ,\n title ,\n currentStandingName ,\n Fragment ,\n makeFromFragment ,\n makeFromJs ,\n}\n/* DateFns Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as User from \"../../../shared/types/User.bs.js\";\nimport * as DateFns from \"../../../shared/utils/DateFns.bs.js\";\nimport * as ArrayUtils from \"../../../shared/utils/ArrayUtils.bs.js\";\nimport * as OptionUtils from \"../../../shared/utils/OptionUtils.bs.js\";\n\nfunction make(id, note, createdAt, author) {\n return {\n id: id,\n author: author,\n note: note,\n createdAt: createdAt\n };\n}\n\nfunction id(t) {\n return t.id;\n}\n\nfunction note(t) {\n return t.note;\n}\n\nfunction createdAt(t) {\n return t.createdAt;\n}\n\nfunction author(t) {\n return t.author;\n}\n\nfunction noteOn(t) {\n return DateFns.format(t.createdAt, \"MMMM d, yyyy\");\n}\n\nfunction sort(notes) {\n return ArrayUtils.copyAndSort((function (x, y) {\n return DateFns.differenceInSeconds(y.createdAt, x.createdAt);\n }), notes);\n}\n\nfunction makeFromJs(note) {\n return make(note.id, note.note, DateFns.decodeISO(note.createdAt), OptionUtils.map(User.makeFromJs, note.author));\n}\n\nexport {\n make ,\n id ,\n note ,\n createdAt ,\n author ,\n noteOn ,\n sort ,\n makeFromJs ,\n}\n/* User Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as User from \"../../../shared/types/User.bs.js\";\nimport * as Curry from \"../../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as Avatar from \"../../../shared/Avatar.bs.js\";\nimport * as FaIcon from \"../../../shared/components/FaIcon.bs.js\";\nimport * as Js_promise from \"../../../../../node_modules/rescript/lib/es6/js_promise.js\";\nimport * as GraphqlQuery from \"../../../shared/utils/GraphqlQuery.bs.js\";\nimport * as MarkdownBlock from \"../../../shared/components/MarkdownBlock.bs.js\";\nimport * as CoursesStudents__CoachNote from \"../types/CoursesStudents__CoachNote.bs.js\";\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.CoursesStudents__CoachNoteShow\";\n\nfunction tr(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nvar Raw = {};\n\nvar query = \"mutation ArchiveCoachNoteMutation($id: ID!) {\\narchiveCoachNote(id: $id) {\\nsuccess \\n}\\n\\n}\\n\";\n\nfunction parse(value) {\n var value$1 = value.archiveCoachNote;\n return {\n archiveCoachNote: {\n success: value$1.success\n }\n };\n}\n\nfunction serialize(value) {\n var value$1 = value.archiveCoachNote;\n var value$2 = value$1.success;\n var archiveCoachNote = {\n success: value$2\n };\n return {\n archiveCoachNote: archiveCoachNote\n };\n}\n\nfunction serializeVariables(inp) {\n return {\n id: inp.id\n };\n}\n\nfunction makeVariables(id, param) {\n return {\n id: id\n };\n}\n\nvar ArchiveCoachNoteMutation_inner = {\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables\n};\n\nvar include = GraphqlQuery.Extender({\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar $$fetch = include.$$fetch;\n\nvar ArchiveCoachNoteMutation_Graphql_error = include.Graphql_error;\n\nvar ArchiveCoachNoteMutation_decodeNotification = include.decodeNotification;\n\nvar ArchiveCoachNoteMutation_decodeObject = include.decodeObject;\n\nvar ArchiveCoachNoteMutation_decodeNotifications = include.decodeNotifications;\n\nvar ArchiveCoachNoteMutation_decodeErrors = include.decodeErrors;\n\nvar ArchiveCoachNoteMutation_flashNotifications = include.flashNotifications;\n\nvar ArchiveCoachNoteMutation_sendQuery = include.sendQuery;\n\nvar ArchiveCoachNoteMutation_query = include.query;\n\nvar ArchiveCoachNoteMutation_make = include.make;\n\nvar ArchiveCoachNoteMutation = {\n ArchiveCoachNoteMutation_inner: ArchiveCoachNoteMutation_inner,\n Raw: Raw,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables,\n Graphql_error: ArchiveCoachNoteMutation_Graphql_error,\n decodeNotification: ArchiveCoachNoteMutation_decodeNotification,\n decodeObject: ArchiveCoachNoteMutation_decodeObject,\n decodeNotifications: ArchiveCoachNoteMutation_decodeNotifications,\n decodeErrors: ArchiveCoachNoteMutation_decodeErrors,\n flashNotifications: ArchiveCoachNoteMutation_flashNotifications,\n sendQuery: ArchiveCoachNoteMutation_sendQuery,\n query: ArchiveCoachNoteMutation_query,\n $$fetch: $$fetch,\n make: ArchiveCoachNoteMutation_make\n};\n\nfunction removeCoachNote(id, removeNoteCB, setArchiving, $$event) {\n $$event.preventDefault();\n if (window.confirm(tr(undefined, undefined, \"sure_delete\"))) {\n Curry._1(setArchiving, (function (param) {\n return true;\n }));\n Js_promise.then_((function (response) {\n if (response.archiveCoachNote.success) {\n Curry._1(removeNoteCB, id);\n } else {\n Curry._1(setArchiving, (function (param) {\n return false;\n }));\n }\n return Promise.resolve(undefined);\n }), Curry._3($$fetch, undefined, undefined, {\n id: id\n }));\n return ;\n }\n \n}\n\nfunction deleteIcon(note, removeNoteCB, setArchiving, archiving) {\n var partial_arg = CoursesStudents__CoachNote.id(note);\n return React.createElement(\"button\", {\n \"aria-label\": tr(undefined, undefined, \"delete_note\") + CoursesStudents__CoachNote.id(note),\n className: \"w-10 text-sm text-gray-600 hover:text-gray-900 cursor-pointer flex items-center justify-center rounded hover:bg-gray-50 hover:text-red-500 focus:outline-none focus:bg-gray-50 focus:text-red-500 focus:ring-2 focus:ring-inset focus:ring-red-500 \",\n title: tr(undefined, undefined, \"delete_note\") + CoursesStudents__CoachNote.id(note),\n disabled: archiving,\n onClick: (function (param) {\n return removeCoachNote(partial_arg, removeNoteCB, setArchiving, param);\n })\n }, React.createElement(FaIcon.make, {\n classes: archiving ? \"fas fa-spinner fa-spin\" : \"fas fa-trash-alt\"\n }));\n}\n\nfunction CoursesStudents__CoachNoteShow(Props) {\n var note = Props.note;\n var userId = Props.userId;\n var removeNoteCB = Props.removeNoteCB;\n var match = React.useState(function () {\n return false;\n });\n var user = CoursesStudents__CoachNote.author(note);\n var tmp;\n if (user !== undefined) {\n var avatarUrl = User.avatarUrl(user);\n tmp = avatarUrl !== undefined ? React.createElement(\"img\", {\n className: \"w-8 h-8 md:w-10 md:h-10 text-xs border border-gray-300 rounded-full overflow-hidden shrink-0 mt-1 md:mt-0 me-2 md:me-3 object-cover\",\n src: avatarUrl\n }) : React.createElement(Avatar.make, {\n name: User.name(user),\n className: \"w-8 h-8 md:w-10 md:h-10 text-xs border border-gray-300 rounded-full overflow-hidden shrink-0 mt-1 md:mt-0 me-2 md:me-3 object-cover\"\n });\n } else {\n tmp = React.createElement(Avatar.make, {\n name: \"?\",\n className: \"w-8 h-8 md:w-10 md:h-10 text-xs border rounded-full overflow-hidden shrink-0 mt-1 md:mt-0 me-2 md:e-3 object-cover\"\n });\n }\n var user$1 = CoursesStudents__CoachNote.author(note);\n var user$2 = CoursesStudents__CoachNote.author(note);\n var user$3 = CoursesStudents__CoachNote.author(note);\n var showDeleteIcon = user$3 !== undefined ? User.id(user$3) === userId : false;\n return React.createElement(\"div\", {\n key: CoursesStudents__CoachNote.id(note),\n \"aria-label\": \"Note \" + CoursesStudents__CoachNote.id(note),\n className: \"mt-4\"\n }, React.createElement(\"div\", {\n className: \"flex justify-between\"\n }, React.createElement(\"div\", {\n className: \"flex\"\n }, tmp, React.createElement(\"div\", undefined, React.createElement(\"p\", {\n className: \"text-sm font-semibold inline-block leading-snug\"\n }, user$1 !== undefined ? User.name(user$1) : tr(undefined, undefined, \"deleted_coach\")), React.createElement(\"p\", {\n className: \"text-gray-600 text-xs mt-px leading-snug\"\n }, user$2 !== undefined ? User.fullTitle(user$2) : tr(undefined, undefined, \"unknown\")))), showDeleteIcon ? deleteIcon(note, removeNoteCB, match[1], match[0]) : null), React.createElement(\"div\", {\n className: \"ms-10md:ms-13 mt-2\"\n }, React.createElement(\"p\", {\n className: \"inline-block text-xs font-semibold leading-tight bg-gray-300 text-gray-800 mt-px px-1 py-px rounded\"\n }, tr(undefined, undefined, \"coach_on\") + \" \" + CoursesStudents__CoachNote.noteOn(note)), React.createElement(MarkdownBlock.make, {\n markdown: CoursesStudents__CoachNote.note(note),\n className: \"pt-1 text-sm\",\n profile: /* Permissive */0\n })));\n}\n\nvar make = CoursesStudents__CoachNoteShow;\n\nexport {\n str ,\n tr ,\n ArchiveCoachNoteMutation ,\n removeCoachNote ,\n deleteIcon ,\n make ,\n}\n/* include Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as Icon from \"../../../shared/Icon.bs.js\";\nimport * as $$Array from \"../../../../../node_modules/rescript/lib/es6/array.js\";\nimport * as Curry from \"../../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as FaIcon from \"../../../shared/components/FaIcon.bs.js\";\nimport * as HelpIcon from \"../../../shared/components/HelpIcon.bs.js\";\nimport * as ArrayUtils from \"../../../shared/utils/ArrayUtils.bs.js\";\nimport * as Js_promise from \"../../../../../node_modules/rescript/lib/es6/js_promise.js\";\nimport * as Caml_option from \"../../../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as GraphqlQuery from \"../../../shared/utils/GraphqlQuery.bs.js\";\nimport * as DisablingCover from \"../../../shared/components/DisablingCover.bs.js\";\nimport * as MarkdownEditor from \"../../../shared/components/MarkdownEditor.bs.js\";\nimport * as CoursesStudents__CoachNote from \"../types/CoursesStudents__CoachNote.bs.js\";\nimport * as CoursesStudents__CoachNoteShow from \"./CoursesStudents__CoachNoteShow.bs.js\";\n\nimport \"./CoursesStudents__StudentOverlay.css\"\n;\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.CoursesStudents__CoachNotes\";\n\nfunction tr(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nvar Raw = {};\n\nvar query = \"mutation CreateCoachNoteMutation($studentId: ID!, $note: String!) {\\ncreateCoachNote(studentId: $studentId, note: $note) {\\ncoachNote {\\nid \\nnote \\ncreatedAt \\nauthor {\\nid \\navatarUrl \\nname \\nfullTitle \\n}\\n\\n}\\n\\n}\\n\\n}\\n\";\n\nfunction parse(value) {\n var value$1 = value.createCoachNote;\n var value$2 = value$1.coachNote;\n var tmp;\n if (value$2 == null) {\n tmp = undefined;\n } else {\n var value$3 = value$2.author;\n var tmp$1;\n if (value$3 == null) {\n tmp$1 = undefined;\n } else {\n var value$4 = value$3.avatarUrl;\n tmp$1 = {\n id: value$3.id,\n avatarUrl: !(value$4 == null) ? value$4 : undefined,\n name: value$3.name,\n fullTitle: value$3.fullTitle\n };\n }\n tmp = {\n id: value$2.id,\n note: value$2.note,\n createdAt: value$2.createdAt,\n author: tmp$1\n };\n }\n return {\n createCoachNote: {\n coachNote: tmp\n }\n };\n}\n\nfunction serialize(value) {\n var value$1 = value.createCoachNote;\n var value$2 = value$1.coachNote;\n var coachNote;\n if (value$2 !== undefined) {\n var value$3 = value$2.author;\n var author;\n if (value$3 !== undefined) {\n var value$4 = value$3.fullTitle;\n var value$5 = value$3.name;\n var value$6 = value$3.avatarUrl;\n var avatarUrl = value$6 !== undefined ? value$6 : null;\n var value$7 = value$3.id;\n author = {\n id: value$7,\n avatarUrl: avatarUrl,\n name: value$5,\n fullTitle: value$4\n };\n } else {\n author = null;\n }\n var value$8 = value$2.createdAt;\n var value$9 = value$2.note;\n var value$10 = value$2.id;\n coachNote = {\n id: value$10,\n note: value$9,\n createdAt: value$8,\n author: author\n };\n } else {\n coachNote = null;\n }\n var createCoachNote = {\n coachNote: coachNote\n };\n return {\n createCoachNote: createCoachNote\n };\n}\n\nfunction serializeVariables(inp) {\n return {\n studentId: inp.studentId,\n note: inp.note\n };\n}\n\nfunction makeVariables(studentId, note, param) {\n return {\n studentId: studentId,\n note: note\n };\n}\n\nvar CreateCoachNotesMutation_inner = {\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables\n};\n\nvar include = GraphqlQuery.Extender({\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar make = include.make;\n\nvar CreateCoachNotesMutation_Graphql_error = include.Graphql_error;\n\nvar CreateCoachNotesMutation_decodeNotification = include.decodeNotification;\n\nvar CreateCoachNotesMutation_decodeObject = include.decodeObject;\n\nvar CreateCoachNotesMutation_decodeNotifications = include.decodeNotifications;\n\nvar CreateCoachNotesMutation_decodeErrors = include.decodeErrors;\n\nvar CreateCoachNotesMutation_flashNotifications = include.flashNotifications;\n\nvar CreateCoachNotesMutation_sendQuery = include.sendQuery;\n\nvar CreateCoachNotesMutation_query = include.query;\n\nvar CreateCoachNotesMutation_fetch = include.$$fetch;\n\nvar CreateCoachNotesMutation = {\n CreateCoachNotesMutation_inner: CreateCoachNotesMutation_inner,\n Raw: Raw,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables,\n Graphql_error: CreateCoachNotesMutation_Graphql_error,\n decodeNotification: CreateCoachNotesMutation_decodeNotification,\n decodeObject: CreateCoachNotesMutation_decodeObject,\n decodeNotifications: CreateCoachNotesMutation_decodeNotifications,\n decodeErrors: CreateCoachNotesMutation_decodeErrors,\n flashNotifications: CreateCoachNotesMutation_flashNotifications,\n sendQuery: CreateCoachNotesMutation_sendQuery,\n query: CreateCoachNotesMutation_query,\n $$fetch: CreateCoachNotesMutation_fetch,\n make: make\n};\n\nfunction saveNote(studentId, setState, state, addNoteCB) {\n Curry._1(setState, (function (state) {\n return {\n newNote: state.newNote,\n saving: true\n };\n }));\n Js_promise.$$catch((function (_error) {\n Curry._1(setState, (function (state) {\n return {\n newNote: state.newNote,\n saving: false\n };\n }));\n return Promise.resolve(undefined);\n }), Js_promise.then_((function (response) {\n var note = response.createCoachNote.coachNote;\n if (note !== undefined) {\n var newNote = CoursesStudents__CoachNote.makeFromJs(Caml_option.valFromOption(note));\n Curry._1(addNoteCB, newNote);\n Curry._1(setState, (function (param) {\n return {\n newNote: \"\",\n saving: false\n };\n }));\n } else {\n Curry._1(setState, (function (state) {\n return {\n newNote: state.newNote,\n saving: false\n };\n }));\n }\n return Promise.resolve(undefined);\n }), Curry._3(make, undefined, undefined, {\n studentId: studentId,\n note: state.newNote\n })));\n}\n\nfunction updateCoachNoteCB(setState, newNote) {\n return Curry._1(setState, (function (state) {\n return {\n newNote: newNote,\n saving: state.saving\n };\n }));\n}\n\nfunction saveNoteButtonText(title, iconClasses) {\n return React.createElement(\"span\", undefined, React.createElement(FaIcon.make, {\n classes: iconClasses + \" me-2\"\n }), title);\n}\n\nfunction CoursesStudents__CoachNotes(Props) {\n var studentId = Props.studentId;\n var coachNotes = Props.coachNotes;\n var hasArchivedNotes = Props.hasArchivedNotes;\n var canModifyCoachNotes = Props.canModifyCoachNotes;\n var addNoteCB = Props.addNoteCB;\n var removeNoteCB = Props.removeNoteCB;\n var userId = Props.userId;\n var match = React.useState(function () {\n return {\n newNote: \"\",\n saving: false\n };\n });\n var setState = match[1];\n var state = match[0];\n return React.createElement(\"div\", {\n className: \"mt-3 text-sm\"\n }, canModifyCoachNotes ? React.createElement(\"div\", undefined, React.createElement(\"span\", {\n className: \"flex\"\n }, React.createElement(\"label\", {\n className: \"font-semibold text-sm block mb-1\",\n htmlFor: \"course-students__coach-notes-new-note\"\n }, tr(undefined, undefined, \"new_note\")), React.createElement(HelpIcon.make, {\n className: \"ms-1\",\n children: tr(undefined, undefined, \"help_text\")\n })), React.createElement(DisablingCover.make, {\n disabled: state.saving,\n message: \"Saving...\",\n children: React.createElement(MarkdownEditor.make, {\n value: state.newNote,\n onChange: (function (param) {\n return updateCoachNoteCB(setState, param);\n }),\n profile: /* Permissive */0,\n textareaId: \"course-students__coach-notes-new-note\",\n maxLength: 10000\n })\n }), React.createElement(\"button\", {\n className: \"btn btn-primary mt-2\",\n disabled: state.newNote.length < 1 || state.saving,\n onClick: (function (param) {\n saveNote(studentId, setState, state, addNoteCB);\n })\n }, state.saving ? saveNoteButtonText(tr(undefined, undefined, \"saving\"), \"fas fa-spinner\") : saveNoteButtonText(tr(undefined, undefined, \"save_note\"), \"\"))) : null, React.createElement(\"div\", undefined, React.createElement(\"h6\", {\n className: \"font-semibold mt-6\"\n }, tr(undefined, undefined, \"all_notes\")), ArrayUtils.isEmpty(coachNotes) ? React.createElement(\"div\", {\n className: \"bg-gray-100 rounded text-center p-4 md:p-6 items-center justify-center mt-2\"\n }, React.createElement(Icon.make, {\n className: \"if i-long-text-light text-gray-800 text-base\"\n }), React.createElement(\"p\", {\n className: \"text-xs font-semibold text-gray-600 mt-2\"\n }, hasArchivedNotes ? tr(undefined, undefined, \"has_archived_notes\") : tr(undefined, undefined, \"no_notes\"))) : null, $$Array.map((function (note) {\n return React.createElement(CoursesStudents__CoachNoteShow.make, {\n note: note,\n userId: userId,\n removeNoteCB: removeNoteCB,\n key: CoursesStudents__CoachNote.id(note)\n });\n }), CoursesStudents__CoachNote.sort(coachNotes))));\n}\n\nvar make$1 = CoursesStudents__CoachNotes;\n\nexport {\n str ,\n tr ,\n CreateCoachNotesMutation ,\n saveNote ,\n updateCoachNoteCB ,\n saveNoteButtonText ,\n make$1 as make,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\n\nfunction id(t) {\n return t.id;\n}\n\nfunction taggings(t) {\n return t.taggings;\n}\n\nfunction droppedOutAt(t) {\n return t.droppedOutAt;\n}\n\nfunction personalCoaches(t) {\n return t.personalCoaches;\n}\n\nfunction cohort(t) {\n return t.cohort;\n}\n\nfunction user(t) {\n return t.user;\n}\n\nfunction make(id, user, taggings, cohort, droppedOutAt, personalCoaches) {\n return {\n id: id,\n user: user,\n taggings: taggings,\n cohort: cohort,\n droppedOutAt: droppedOutAt,\n personalCoaches: personalCoaches\n };\n}\n\nexport {\n id ,\n taggings ,\n droppedOutAt ,\n personalCoaches ,\n cohort ,\n user ,\n make ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Js_array from \"../../../../../node_modules/rescript/lib/es6/js_array.js\";\n\nfunction id(t) {\n return t.id;\n}\n\nfunction name(t) {\n return t.name;\n}\n\nfunction make(id, name, maxGrade) {\n return {\n id: id,\n name: name,\n maxGrade: maxGrade\n };\n}\n\nfunction makeFromJs(ecData) {\n return Js_array.map((function (ec) {\n return {\n id: ec.id,\n name: ec.name,\n maxGrade: ec.maxGrade\n };\n }), ecData);\n}\n\nexport {\n id ,\n name ,\n make ,\n makeFromJs ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as $$Array from \"../../../../../node_modules/rescript/lib/es6/array.js\";\nimport * as $$String from \"../../../../../node_modules/rescript/lib/es6/string.js\";\nimport * as Js_array from \"../../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as ArrayUtils from \"../../../shared/utils/ArrayUtils.bs.js\";\nimport * as Caml_array from \"../../../../../node_modules/rescript/lib/es6/caml_array.js\";\nimport * as Caml_format from \"../../../../../node_modules/rescript/lib/es6/caml_format.js\";\nimport * as CoursesStudents__CoachNote from \"./CoursesStudents__CoachNote.bs.js\";\nimport * as CoursesStudents__EvaluationCriterion from \"./CoursesStudents__EvaluationCriterion.bs.js\";\n\nfunction student(t) {\n return t.student;\n}\n\nfunction team(t) {\n return t.team;\n}\n\nfunction students(team) {\n return team.students;\n}\n\nfunction coachNotes(t) {\n return t.coachNotes;\n}\n\nfunction hasArchivedNotes(t) {\n return t.hasArchivedNotes;\n}\n\nfunction canModifyCoachNotes(t) {\n return t.canModifyCoachNotes;\n}\n\nfunction courseId(t) {\n return t.courseId;\n}\n\nfunction makeAverageGrade(evaluationCriterionId, grade) {\n return {\n evaluationCriterionId: evaluationCriterionId,\n grade: grade\n };\n}\n\nfunction totalPageReads(t) {\n return t.totalPageReads;\n}\n\nfunction totalTargets(t) {\n return t.totalTargets;\n}\n\nfunction gradeAsPercentage(averageGrade, evaluationCriterion) {\n var maxGrade = evaluationCriterion.maxGrade;\n return String(averageGrade.grade / maxGrade * 100.0 | 0);\n}\n\nfunction assignmentsCompleted(t) {\n return t.assignmentsCompleted;\n}\n\nfunction totalAssignments(t) {\n return t.totalAssignments;\n}\n\nfunction quizzesAttempted(t) {\n return t.quizScores.length;\n}\n\nfunction evaluationCriteria(t) {\n return t.evaluationCriteria;\n}\n\nfunction averageGrades(t) {\n return t.averageGrades;\n}\n\nfunction gradeValue(averageGrade) {\n return averageGrade.grade;\n}\n\nfunction milestonesCompletionStatus(t) {\n return t.milestonesCompletionStatus;\n}\n\nfunction evaluationCriterionForGrade(grade, evaluationCriteria, componentName) {\n return ArrayUtils.unsafeFind((function (ec) {\n return CoursesStudents__EvaluationCriterion.id(ec) === grade.evaluationCriterionId;\n }), \"Unable to find evaluation criterion with id: \" + (grade.evaluationCriterionId + (\" in component: \" + componentName)), evaluationCriteria);\n}\n\nfunction addNewNote(note, t) {\n var notes = $$Array.append(t.coachNotes, [note]);\n return {\n id: t.id,\n coachNotes: notes,\n hasArchivedNotes: t.hasArchivedNotes,\n canModifyCoachNotes: t.canModifyCoachNotes,\n evaluationCriteria: t.evaluationCriteria,\n totalPageReads: t.totalPageReads,\n totalTargets: t.totalTargets,\n assignmentsCompleted: t.assignmentsCompleted,\n totalAssignments: t.totalAssignments,\n quizScores: t.quizScores,\n averageGrades: t.averageGrades,\n student: t.student,\n team: t.team,\n milestonesCompletionStatus: t.milestonesCompletionStatus,\n courseId: t.courseId\n };\n}\n\nfunction removeNote(noteId, t) {\n var notes = Js_array.filter((function (note) {\n return CoursesStudents__CoachNote.id(note) !== noteId;\n }), t.coachNotes);\n return {\n id: t.id,\n coachNotes: notes,\n hasArchivedNotes: true,\n canModifyCoachNotes: t.canModifyCoachNotes,\n evaluationCriteria: t.evaluationCriteria,\n totalPageReads: t.totalPageReads,\n totalTargets: t.totalTargets,\n assignmentsCompleted: t.assignmentsCompleted,\n totalAssignments: t.totalAssignments,\n quizScores: t.quizScores,\n averageGrades: t.averageGrades,\n student: t.student,\n team: t.team,\n milestonesCompletionStatus: t.milestonesCompletionStatus,\n courseId: t.courseId\n };\n}\n\nfunction computeAverageQuizScore(quizScores) {\n var sumOfPercentageScores = Js_array.reduce((function (a, b) {\n return a + b;\n }), 0.0, $$Array.map((function (quizScore) {\n var fractionArray = $$Array.of_list($$String.split_on_char(/* '/' */47, quizScore));\n var numerator = Caml_format.float_of_string(Caml_array.get(fractionArray, 0));\n var denominator = Caml_format.float_of_string(Caml_array.get(fractionArray, 1));\n return numerator / denominator * 100.0;\n }), quizScores));\n return sumOfPercentageScores / quizScores.length;\n}\n\nfunction averageQuizScore(t) {\n if (ArrayUtils.isEmpty(t.quizScores)) {\n return ;\n } else {\n return computeAverageQuizScore(t.quizScores);\n }\n}\n\nfunction makeTeam(id, name, students) {\n return {\n id: id,\n name: name,\n students: students\n };\n}\n\nfunction make(id, coachNotes, hasArchivedNotes, canModifyCoachNotes, evaluationCriteria, totalPageReads, totalTargets, assignmentsCompleted, totalAssignments, quizScores, averageGrades, student, team, courseId, milestonesCompletionStatus) {\n return {\n id: id,\n coachNotes: coachNotes,\n hasArchivedNotes: hasArchivedNotes,\n canModifyCoachNotes: canModifyCoachNotes,\n evaluationCriteria: evaluationCriteria,\n totalPageReads: totalPageReads,\n totalTargets: totalTargets,\n assignmentsCompleted: assignmentsCompleted,\n totalAssignments: totalAssignments,\n quizScores: quizScores,\n averageGrades: averageGrades,\n student: student,\n team: team,\n milestonesCompletionStatus: milestonesCompletionStatus,\n courseId: courseId\n };\n}\n\nexport {\n student ,\n team ,\n students ,\n coachNotes ,\n hasArchivedNotes ,\n canModifyCoachNotes ,\n courseId ,\n makeAverageGrade ,\n totalPageReads ,\n totalTargets ,\n gradeAsPercentage ,\n assignmentsCompleted ,\n totalAssignments ,\n quizzesAttempted ,\n evaluationCriteria ,\n averageGrades ,\n gradeValue ,\n milestonesCompletionStatus ,\n evaluationCriterionForGrade ,\n addNewNote ,\n removeNote ,\n computeAverageQuizScore ,\n averageQuizScore ,\n makeTeam ,\n make ,\n}\n/* ArrayUtils Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as DateFns from \"../../../shared/utils/DateFns.bs.js\";\nimport * as Js_array from \"../../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as ArrayUtils from \"../../../shared/utils/ArrayUtils.bs.js\";\nimport * as Belt_Option from \"../../../../../node_modules/rescript/lib/es6/belt_Option.js\";\n\nfunction make(id, title, createdAt, passedAt, evaluatedAt, milestoneNumber) {\n return {\n id: id,\n title: title,\n createdAt: createdAt,\n passedAt: passedAt,\n evaluatedAt: evaluatedAt,\n milestoneNumber: milestoneNumber\n };\n}\n\nfunction id(t) {\n return t.id;\n}\n\nfunction title(t) {\n return t.title;\n}\n\nfunction evaluatedAt(t) {\n return t.evaluatedAt;\n}\n\nfunction milestoneNumber(t) {\n return t.milestoneNumber;\n}\n\nfunction sort(submissions) {\n return ArrayUtils.copyAndSort((function (x, y) {\n return DateFns.differenceInSeconds(y.createdAt, x.createdAt);\n }), submissions);\n}\n\nfunction failed(t) {\n var _passedAt = t.passedAt;\n return _passedAt === undefined;\n}\n\nfunction createdAtPretty(t) {\n return DateFns.format(t.createdAt, \"MMMM d, yyyy\");\n}\n\nfunction timeDistance(t) {\n return DateFns.formatDistanceToNowStrict(t.createdAt, true, undefined, undefined, undefined);\n}\n\nfunction makeFromJs(submissions) {\n return Js_array.map((function (submission) {\n var createdAt = DateFns.decodeISO(submission.createdAt);\n var passedAt = Belt_Option.map(submission.passedAt, DateFns.decodeISO);\n var evaluatedAt = Belt_Option.map(submission.evaluatedAt, DateFns.decodeISO);\n return make(submission.id, submission.title, createdAt, passedAt, evaluatedAt, submission.milestoneNumber);\n }), submissions);\n}\n\nexport {\n make ,\n id ,\n title ,\n evaluatedAt ,\n milestoneNumber ,\n sort ,\n failed ,\n createdAtPretty ,\n timeDistance ,\n makeFromJs ,\n}\n/* DateFns Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as $$Array from \"../../../../../node_modules/rescript/lib/es6/array.js\";\nimport * as Curry from \"../../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as Js_array from \"../../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as ArrayUtils from \"../../../shared/utils/ArrayUtils.bs.js\";\nimport * as Js_promise from \"../../../../../node_modules/rescript/lib/es6/js_promise.js\";\nimport * as Belt_Option from \"../../../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as Caml_option from \"../../../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as GraphqlQuery from \"../../../shared/utils/GraphqlQuery.bs.js\";\nimport * as SkeletonLoading from \"../../../shared/components/SkeletonLoading.bs.js\";\nimport * as CoursesStudents__Submission from \"../types/CoursesStudents__Submission.bs.js\";\nimport ReviewedEmptySvg from \"../../shared/images/reviewed-empty.svg\";\n\nimport \"./CoursesStudents__StudentOverlay.css\"\n;\n\nvar reviewedEmptyImage = ReviewedEmptySvg;\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.CoursesStudents__SubmissionsList\";\n\nfunction tr(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nvar partial_arg$1 = \"shared\";\n\nfunction ts(param, param$1, param$2) {\n return I18n.t(partial_arg$1, param, param$1, param$2);\n}\n\nvar Raw = {};\n\nvar query = \"query StudentSubmissionsQuery($studentId: ID!, $after: String, $sortDirection: SortDirection!) {\\nstudentSubmissions(studentId: $studentId, after: $after, first: 20, sortDirection: $sortDirection) {\\nnodes {\\nid \\ncreatedAt \\npassedAt \\ntitle \\nevaluatedAt \\nmilestoneNumber \\n}\\n\\npageInfo {\\nhasNextPage \\nendCursor \\n}\\n\\n}\\n\\n}\\n\";\n\nfunction parse(value) {\n var value$1 = value.studentSubmissions;\n var value$2 = value$1.nodes;\n var value$3 = value$1.pageInfo;\n var value$4 = value$3.endCursor;\n return {\n studentSubmissions: {\n nodes: Js_array.map((function (value) {\n var value$1 = value.passedAt;\n var value$2 = value.evaluatedAt;\n var value$3 = value.milestoneNumber;\n return {\n id: value.id,\n createdAt: value.createdAt,\n passedAt: !(value$1 == null) ? Caml_option.some(value$1) : undefined,\n title: value.title,\n evaluatedAt: !(value$2 == null) ? Caml_option.some(value$2) : undefined,\n milestoneNumber: !(value$3 == null) ? value$3 : undefined\n };\n }), value$2),\n pageInfo: {\n hasNextPage: value$3.hasNextPage,\n endCursor: !(value$4 == null) ? value$4 : undefined\n }\n }\n };\n}\n\nfunction serialize(value) {\n var value$1 = value.studentSubmissions;\n var value$2 = value$1.pageInfo;\n var value$3 = value$2.endCursor;\n var endCursor = value$3 !== undefined ? value$3 : null;\n var value$4 = value$2.hasNextPage;\n var pageInfo = {\n hasNextPage: value$4,\n endCursor: endCursor\n };\n var value$5 = value$1.nodes;\n var nodes = Js_array.map((function (value) {\n var value$1 = value.milestoneNumber;\n var milestoneNumber = value$1 !== undefined ? value$1 : null;\n var value$2 = value.evaluatedAt;\n var evaluatedAt = value$2 !== undefined ? Caml_option.valFromOption(value$2) : null;\n var value$3 = value.title;\n var value$4 = value.passedAt;\n var passedAt = value$4 !== undefined ? Caml_option.valFromOption(value$4) : null;\n var value$5 = value.createdAt;\n var value$6 = value.id;\n return {\n id: value$6,\n createdAt: value$5,\n passedAt: passedAt,\n title: value$3,\n evaluatedAt: evaluatedAt,\n milestoneNumber: milestoneNumber\n };\n }), value$5);\n var studentSubmissions = {\n nodes: nodes,\n pageInfo: pageInfo\n };\n return {\n studentSubmissions: studentSubmissions\n };\n}\n\nfunction serializeVariables(inp) {\n var a = inp.after;\n var a$1 = inp.sortDirection;\n return {\n studentId: inp.studentId,\n after: a !== undefined ? a : undefined,\n sortDirection: a$1 === \"Descending\" ? \"Descending\" : \"Ascending\"\n };\n}\n\nfunction makeVariables(studentId, after, sortDirection, param) {\n return {\n studentId: studentId,\n after: after,\n sortDirection: sortDirection\n };\n}\n\nvar StudentSubmissionsQuery_inner = {\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables\n};\n\nvar include = GraphqlQuery.Extender({\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar make = include.make;\n\nvar StudentSubmissionsQuery_Graphql_error = include.Graphql_error;\n\nvar StudentSubmissionsQuery_decodeNotification = include.decodeNotification;\n\nvar StudentSubmissionsQuery_decodeObject = include.decodeObject;\n\nvar StudentSubmissionsQuery_decodeNotifications = include.decodeNotifications;\n\nvar StudentSubmissionsQuery_decodeErrors = include.decodeErrors;\n\nvar StudentSubmissionsQuery_flashNotifications = include.flashNotifications;\n\nvar StudentSubmissionsQuery_sendQuery = include.sendQuery;\n\nvar StudentSubmissionsQuery_query = include.query;\n\nvar StudentSubmissionsQuery_fetch = include.$$fetch;\n\nvar StudentSubmissionsQuery = {\n StudentSubmissionsQuery_inner: StudentSubmissionsQuery_inner,\n Raw: Raw,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables,\n Graphql_error: StudentSubmissionsQuery_Graphql_error,\n decodeNotification: StudentSubmissionsQuery_decodeNotification,\n decodeObject: StudentSubmissionsQuery_decodeObject,\n decodeNotifications: StudentSubmissionsQuery_decodeNotifications,\n decodeErrors: StudentSubmissionsQuery_decodeErrors,\n flashNotifications: StudentSubmissionsQuery_flashNotifications,\n sendQuery: StudentSubmissionsQuery_sendQuery,\n query: StudentSubmissionsQuery_query,\n $$fetch: StudentSubmissionsQuery_fetch,\n make: make\n};\n\nfunction updateStudentSubmissions(setState, updateSubmissionsCB, endCursor, hasNextPage, submissions, nodes) {\n var updatedSubmissions = Js_array.concat(CoursesStudents__Submission.makeFromJs(nodes), submissions);\n var submissionsData = hasNextPage && endCursor !== undefined ? ({\n TAG: /* PartiallyLoaded */0,\n _0: updatedSubmissions,\n _1: endCursor\n }) : ({\n TAG: /* FullyLoaded */1,\n _0: updatedSubmissions\n });\n Curry._1(updateSubmissionsCB, submissionsData);\n return Curry._1(setState, (function (param) {\n return {\n loading: false\n };\n }));\n}\n\nfunction getStudentSubmissions(studentId, cursor, setState, submissions, updateSubmissionsCB) {\n Curry._1(setState, (function (param) {\n return {\n loading: true\n };\n }));\n Js_promise.then_((function (response) {\n updateStudentSubmissions(setState, updateSubmissionsCB, response.studentSubmissions.pageInfo.endCursor, response.studentSubmissions.pageInfo.hasNextPage, submissions, response.studentSubmissions.nodes);\n return Promise.resolve(undefined);\n }), Curry._3(make, undefined, undefined, {\n studentId: studentId,\n after: cursor,\n sortDirection: \"Descending\"\n }));\n}\n\nfunction showSubmissionStatus(submission) {\n var _datetime = CoursesStudents__Submission.evaluatedAt(submission);\n if (_datetime !== undefined) {\n if (CoursesStudents__Submission.failed(submission)) {\n return React.createElement(\"div\", {\n className: \"bg-red-100 border border-red-500 shrink-0 leading-normal text-red-800 font-semibold px-3 py-px rounded\"\n }, ts(undefined, undefined, \"rejected\"));\n } else {\n return React.createElement(\"div\", {\n className: \"bg-green-100 border border-green-500 shrink-0 leading-normal text-green-800 font-semibold px-3 py-px rounded\"\n }, ts(undefined, undefined, \"completed\"));\n }\n } else {\n return React.createElement(\"div\", {\n className: \"bg-orange-100 border border-orange-300 shrink-0 leading-normal text-orange-600 font-semibold px-3 py-px rounded\"\n }, CoursesStudents__Submission.timeDistance(submission));\n }\n}\n\nfunction submissionCardClasses(submission) {\n var _datetime = CoursesStudents__Submission.evaluatedAt(submission);\n return \"flex flex-col md:flex-row items-start md:items-center justify-between bg-white border-s-3 p-3 md:py-6 md:px-5 mt-4 cursor-pointer rounded-e-lg shadow hover:border-primary-500 hover:text-primary-500 hover:shadow-md \" + (\n _datetime !== undefined ? (\n CoursesStudents__Submission.failed(submission) ? \"border-red-500\" : \"border-green-500\"\n ) : \"border-orange-400\"\n );\n}\n\nfunction showSubmission(submissions) {\n return React.createElement(\"div\", undefined, $$Array.map((function (submission) {\n return React.createElement(\"a\", {\n key: CoursesStudents__Submission.id(submission),\n href: \"/submissions/\" + (CoursesStudents__Submission.id(submission) + \"/review\"),\n target: \"_blank\"\n }, React.createElement(\"div\", {\n key: CoursesStudents__Submission.id(submission),\n \"aria-label\": \"student-submission-card-\" + CoursesStudents__Submission.id(submission),\n className: submissionCardClasses(submission)\n }, React.createElement(\"div\", {\n className: \"w-full md:w-3/4\"\n }, React.createElement(\"div\", {\n className: \"block text-sm md:pe-2\"\n }, React.createElement(\"span\", {\n className: \"ms-1 font-semibold text-base\"\n }, Belt_Option.mapWithDefault(CoursesStudents__Submission.milestoneNumber(submission), \"\", (function (number) {\n return ts(undefined, undefined, \"m\") + String(number) + \" - \";\n })) + CoursesStudents__Submission.title(submission))), React.createElement(\"div\", {\n className: \"mt-1 ms-px text-xs text-gray-900\"\n }, React.createElement(\"span\", {\n className: \"ms-1\"\n }, tr(undefined, undefined, \"submitted_on\") + CoursesStudents__Submission.createdAtPretty(submission)))), React.createElement(\"div\", {\n className: \"w-auto md:w-1/4 text-xs flex justify-end mt-2 md:mt-0\"\n }, showSubmissionStatus(submission))));\n }), CoursesStudents__Submission.sort(submissions)));\n}\n\nfunction showSubmissions(submissions) {\n if (ArrayUtils.isEmpty(submissions)) {\n return React.createElement(\"div\", {\n className: \"course-review__reviewed-empty text-lg font-semibold text-center py-4\"\n }, React.createElement(\"h5\", {\n className: \"py-4 mt-4 bg-gray-50 text-gray-800 font-semibold\"\n }, tr(undefined, undefined, \"no_revied_submission\")), React.createElement(\"img\", {\n className: \"w-3/4 md:w-1/2 mx-auto mt-2\",\n src: reviewedEmptyImage\n }));\n } else {\n return showSubmission(submissions);\n }\n}\n\nfunction CoursesStudents__SubmissionsList(Props) {\n var studentId = Props.studentId;\n var submissions = Props.submissions;\n var updateSubmissionsCB = Props.updateSubmissionsCB;\n var match = React.useState(function () {\n return {\n loading: false\n };\n });\n var setState = match[1];\n React.useEffect((function () {\n if (typeof submissions === \"number\") {\n getStudentSubmissions(studentId, undefined, setState, [], updateSubmissionsCB);\n }\n \n }), [studentId]);\n var tmp;\n if (typeof submissions === \"number\") {\n tmp = SkeletonLoading.multiple(3, SkeletonLoading.card(undefined, undefined));\n } else if (submissions.TAG === /* PartiallyLoaded */0) {\n var cursor = submissions._1;\n var submissions$1 = submissions._0;\n tmp = React.createElement(\"div\", undefined, showSubmissions(submissions$1), match[0].loading ? SkeletonLoading.multiple(3, SkeletonLoading.card(undefined, undefined)) : React.createElement(\"button\", {\n className: \"btn btn-primary-ghost cursor-pointer w-full mt-4\",\n onClick: (function (param) {\n getStudentSubmissions(studentId, cursor, setState, submissions$1, updateSubmissionsCB);\n })\n }, ts(undefined, undefined, \"load_more\")));\n } else {\n tmp = showSubmissions(submissions._0);\n }\n return React.createElement(\"div\", {\n \"aria-label\": \"student-submissions\"\n }, tmp);\n}\n\nvar make$1 = CoursesStudents__SubmissionsList;\n\nexport {\n reviewedEmptyImage ,\n str ,\n tr ,\n ts ,\n StudentSubmissionsQuery ,\n updateStudentSubmissions ,\n getStudentSubmissions ,\n showSubmissionStatus ,\n submissionCardClasses ,\n showSubmission ,\n showSubmissions ,\n make$1 as make,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\n\nfunction id(t) {\n return t.id;\n}\n\nfunction title(t) {\n return t.title;\n}\n\nfunction completed(t) {\n return t.completed;\n}\n\nfunction milestoneNumber(t) {\n return t.milestoneNumber;\n}\n\nfunction make(id, title, completed, milestoneNumber) {\n return {\n id: id,\n title: title,\n milestoneNumber: milestoneNumber,\n completed: completed\n };\n}\n\nfunction makeFromJs(data) {\n return data.map(function (data) {\n return make(data.id, data.title, data.completed, data.milestoneNumber);\n });\n}\n\nexport {\n id ,\n title ,\n completed ,\n milestoneNumber ,\n make ,\n makeFromJs ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as I18n from \"../../../shared/utils/I18n.bs.js\";\nimport * as Icon from \"../../../shared/Icon.bs.js\";\nimport * as Link from \"../../../shared/components/Link.bs.js\";\nimport * as User from \"../../../shared/types/User.bs.js\";\nimport * as $$Array from \"../../../../../node_modules/rescript/lib/es6/array.js\";\nimport * as Curry from \"../../../../../node_modules/rescript/lib/es6/curry.js\";\nimport * as React from \"react\";\nimport * as Avatar from \"../../../shared/Avatar.bs.js\";\nimport * as Cohort from \"../../../shared/types/Cohort.bs.js\";\nimport * as PfIcon from \"../../../packages/pf-icon/src/PfIcon.bs.js\";\nimport * as Spread from \"../../../shared/components/Spread.bs.js\";\nimport * as DateFns from \"../../../shared/utils/DateFns.bs.js\";\nimport * as Js_array from \"../../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as UserProxy from \"../../../shared/types/UserProxy.bs.js\";\nimport * as ArrayUtils from \"../../../shared/utils/ArrayUtils.bs.js\";\nimport * as Js_promise from \"../../../../../node_modules/rescript/lib/es6/js_promise.js\";\nimport * as ScrollLock from \"../../../shared/utils/ScrollLock.bs.js\";\nimport * as Belt_Option from \"../../../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as Caml_option from \"../../../../../node_modules/rescript/lib/es6/caml_option.js\";\nimport * as ClickToCopy from \"../../../shared/components/ClickToCopy.bs.js\";\nimport * as OptionUtils from \"../../../shared/utils/OptionUtils.bs.js\";\nimport * as UserDetails from \"../../../shared/types/UserDetails.bs.js\";\nimport * as GraphqlQuery from \"../../../shared/utils/GraphqlQuery.bs.js\";\nimport * as SkeletonLoading from \"../../../shared/components/SkeletonLoading.bs.js\";\nimport * as CoursesStudents__CoachNote from \"../types/CoursesStudents__CoachNote.bs.js\";\nimport * as CoursesStudents__CoachNotes from \"./CoursesStudents__CoachNotes.bs.js\";\nimport * as CoursesStudents__StudentInfo from \"../types/CoursesStudents__StudentInfo.bs.js\";\nimport * as CoursesStudents__StudentDetails from \"../types/CoursesStudents__StudentDetails.bs.js\";\nimport * as CoursesStudents__PersonalCoaches from \"./CoursesStudents__PersonalCoaches.bs.js\";\nimport * as CoursesStudents__SubmissionsList from \"./CoursesStudents__SubmissionsList.bs.js\";\nimport * as CoursesStudents__EvaluationCriterion from \"../types/CoursesStudents__EvaluationCriterion.bs.js\";\nimport * as CoursesStudents__MilestonesCompletionStatus from \"../types/CoursesStudents__MilestonesCompletionStatus.bs.js\";\n\nimport \"./CoursesStudents__StudentOverlay.css\"\n;\n\nfunction str(prim) {\n return prim;\n}\n\nvar partial_arg = \"components.CoursesStudents__StudentOverlay\";\n\nfunction t(param, param$1, param$2) {\n return I18n.t(partial_arg, param, param$1, param$2);\n}\n\nvar partial_arg$1 = \"shared\";\n\nfunction ts(param, param$1, param$2) {\n return I18n.t(partial_arg$1, param, param$1, param$2);\n}\n\nvar initialState = {\n selectedTab: /* Notes */0,\n studentData: /* Loading */0,\n submissions: /* Unloaded */0\n};\n\nfunction closeOverlayLink(student) {\n var search = window.location.search;\n var cohortId = Cohort.id(CoursesStudents__StudentInfo.cohort(student));\n return \"/cohorts/\" + (cohortId + \"/students\") + search;\n}\n\nvar Raw = {};\n\nvar query = \"query StudentDetailsQuery($studentId: ID!) {\\nstudentDetails(studentId: $studentId) {\\nemail \\nevaluationCriteria {\\nid \\nname \\nmaxGrade \\n}\\n\\nstudent {\\nid \\ntaggings \\nuser {\\n...UserDetailsFragment \\n}\\n\\ncohort {\\n...CohortFragment \\n}\\n\\npersonalCoaches {\\n...UserProxyFragment \\n}\\n\\ndroppedOutAt \\ncourse {\\nid \\n}\\n\\n}\\n\\ntotalTargets \\ntotalPageReads \\nassignmentsCompleted \\ntotalAssignments \\nquizScores \\naverageGrades {\\nevaluationCriterionId \\naverageGrade \\n}\\n\\nmilestonesCompletionStatus {\\nid \\ntitle \\nmilestoneNumber \\ncompleted \\n}\\n\\ncanModifyCoachNotes \\nteam {\\nid \\nname \\nstudents {\\nid \\ntaggings \\nuser {\\n...UserDetailsFragment \\n}\\n\\ncohort {\\n...CohortFragment \\n}\\n\\npersonalCoaches {\\n...UserProxyFragment \\n}\\n\\ndroppedOutAt \\n}\\n\\n}\\n\\n}\\n\\ncoachNotes(studentId: $studentId) {\\nid \\nnote \\ncreatedAt \\nauthor {\\n...UserFragment \\n}\\n\\n}\\n\\nhasArchivedCoachNotes(studentId: $studentId) \\n}\\n\" + Cohort.Fragment.query + UserDetails.Fragment.query + User.Fragment.query + UserProxy.Fragment.query;\n\nfunction parse(value) {\n var value$1 = value.studentDetails;\n var value$2 = value$1.evaluationCriteria;\n var value$3 = value$1.student;\n var value$4 = value$3.taggings;\n var value$5 = value$3.user;\n var value$6 = value$3.cohort;\n var value$7 = value$3.personalCoaches;\n var value$8 = value$3.droppedOutAt;\n var value$9 = value$3.course;\n var value$10 = value$1.quizScores;\n var value$11 = value$1.averageGrades;\n var value$12 = value$1.milestonesCompletionStatus;\n var value$13 = value$1.team;\n var tmp;\n if (value$13 == null) {\n tmp = undefined;\n } else {\n var value$14 = value$13.students;\n tmp = {\n id: value$13.id,\n name: value$13.name,\n students: Js_array.map((function (value) {\n var value$1 = value.taggings;\n var value$2 = value.user;\n var value$3 = value.cohort;\n var value$4 = value.personalCoaches;\n var value$5 = value.droppedOutAt;\n return {\n id: value.id,\n taggings: Js_array.map((function (value) {\n return value;\n }), value$1),\n user: UserDetails.Fragment.verifyArgsAndParse(\"UserDetailsFragment\", value$2),\n cohort: Cohort.Fragment.verifyArgsAndParse(\"CohortFragment\", value$3),\n personalCoaches: Js_array.map((function (value) {\n return UserProxy.Fragment.verifyArgsAndParse(\"UserProxyFragment\", value);\n }), value$4),\n droppedOutAt: !(value$5 == null) ? Caml_option.some(value$5) : undefined\n };\n }), value$14)\n };\n }\n var value$15 = value.coachNotes;\n return {\n studentDetails: {\n email: value$1.email,\n evaluationCriteria: Js_array.map((function (value) {\n return {\n id: value.id,\n name: value.name,\n maxGrade: value.maxGrade\n };\n }), value$2),\n student: {\n id: value$3.id,\n taggings: Js_array.map((function (value) {\n return value;\n }), value$4),\n user: UserDetails.Fragment.verifyArgsAndParse(\"UserDetailsFragment\", value$5),\n cohort: Cohort.Fragment.verifyArgsAndParse(\"CohortFragment\", value$6),\n personalCoaches: Js_array.map((function (value) {\n return UserProxy.Fragment.verifyArgsAndParse(\"UserProxyFragment\", value);\n }), value$7),\n droppedOutAt: !(value$8 == null) ? Caml_option.some(value$8) : undefined,\n course: {\n id: value$9.id\n }\n },\n totalTargets: value$1.totalTargets,\n totalPageReads: value$1.totalPageReads,\n assignmentsCompleted: value$1.assignmentsCompleted,\n totalAssignments: value$1.totalAssignments,\n quizScores: Js_array.map((function (value) {\n return value;\n }), value$10),\n averageGrades: Js_array.map((function (value) {\n return {\n evaluationCriterionId: value.evaluationCriterionId,\n averageGrade: value.averageGrade\n };\n }), value$11),\n milestonesCompletionStatus: Js_array.map((function (value) {\n return {\n id: value.id,\n title: value.title,\n milestoneNumber: value.milestoneNumber,\n completed: value.completed\n };\n }), value$12),\n canModifyCoachNotes: value$1.canModifyCoachNotes,\n team: tmp\n },\n coachNotes: Js_array.map((function (value) {\n var value$1 = value.author;\n return {\n id: value.id,\n note: value.note,\n createdAt: value.createdAt,\n author: !(value$1 == null) ? User.Fragment.verifyArgsAndParse(\"UserFragment\", value$1) : undefined\n };\n }), value$15),\n hasArchivedCoachNotes: value.hasArchivedCoachNotes\n };\n}\n\nfunction serialize(value) {\n var value$1 = value.hasArchivedCoachNotes;\n var value$2 = value.coachNotes;\n var coachNotes = Js_array.map((function (value) {\n var value$1 = value.author;\n var author = value$1 !== undefined ? User.Fragment.serialize(value$1) : null;\n var value$2 = value.createdAt;\n var value$3 = value.note;\n var value$4 = value.id;\n return {\n id: value$4,\n note: value$3,\n createdAt: value$2,\n author: author\n };\n }), value$2);\n var value$3 = value.studentDetails;\n var value$4 = value$3.team;\n var team;\n if (value$4 !== undefined) {\n var value$5 = value$4.students;\n var students = Js_array.map((function (value) {\n var value$1 = value.droppedOutAt;\n var droppedOutAt = value$1 !== undefined ? Caml_option.valFromOption(value$1) : null;\n var value$2 = value.personalCoaches;\n var personalCoaches = Js_array.map((function (value) {\n return UserProxy.Fragment.serialize(value);\n }), value$2);\n var value$3 = value.cohort;\n var cohort = Cohort.Fragment.serialize(value$3);\n var value$4 = value.user;\n var user = UserDetails.Fragment.serialize(value$4);\n var value$5 = value.taggings;\n var taggings = Js_array.map((function (value) {\n return value;\n }), value$5);\n var value$6 = value.id;\n return {\n id: value$6,\n taggings: taggings,\n user: user,\n cohort: cohort,\n personalCoaches: personalCoaches,\n droppedOutAt: droppedOutAt\n };\n }), value$5);\n var value$6 = value$4.name;\n var value$7 = value$4.id;\n team = {\n id: value$7,\n name: value$6,\n students: students\n };\n } else {\n team = null;\n }\n var value$8 = value$3.canModifyCoachNotes;\n var value$9 = value$3.milestonesCompletionStatus;\n var milestonesCompletionStatus = Js_array.map((function (value) {\n var value$1 = value.completed;\n var value$2 = value.milestoneNumber;\n var value$3 = value.title;\n var value$4 = value.id;\n return {\n id: value$4,\n title: value$3,\n milestoneNumber: value$2,\n completed: value$1\n };\n }), value$9);\n var value$10 = value$3.averageGrades;\n var averageGrades = Js_array.map((function (value) {\n var value$1 = value.averageGrade;\n var value$2 = value.evaluationCriterionId;\n return {\n evaluationCriterionId: value$2,\n averageGrade: value$1\n };\n }), value$10);\n var value$11 = value$3.quizScores;\n var quizScores = Js_array.map((function (value) {\n return value;\n }), value$11);\n var value$12 = value$3.totalAssignments;\n var value$13 = value$3.assignmentsCompleted;\n var value$14 = value$3.totalPageReads;\n var value$15 = value$3.totalTargets;\n var value$16 = value$3.student;\n var value$17 = value$16.course;\n var value$18 = value$17.id;\n var course = {\n id: value$18\n };\n var value$19 = value$16.droppedOutAt;\n var droppedOutAt = value$19 !== undefined ? Caml_option.valFromOption(value$19) : null;\n var value$20 = value$16.personalCoaches;\n var personalCoaches = Js_array.map((function (value) {\n return UserProxy.Fragment.serialize(value);\n }), value$20);\n var value$21 = value$16.cohort;\n var cohort = Cohort.Fragment.serialize(value$21);\n var value$22 = value$16.user;\n var user = UserDetails.Fragment.serialize(value$22);\n var value$23 = value$16.taggings;\n var taggings = Js_array.map((function (value) {\n return value;\n }), value$23);\n var value$24 = value$16.id;\n var student = {\n id: value$24,\n taggings: taggings,\n user: user,\n cohort: cohort,\n personalCoaches: personalCoaches,\n droppedOutAt: droppedOutAt,\n course: course\n };\n var value$25 = value$3.evaluationCriteria;\n var evaluationCriteria = Js_array.map((function (value) {\n var value$1 = value.maxGrade;\n var value$2 = value.name;\n var value$3 = value.id;\n return {\n id: value$3,\n name: value$2,\n maxGrade: value$1\n };\n }), value$25);\n var value$26 = value$3.email;\n var studentDetails = {\n email: value$26,\n evaluationCriteria: evaluationCriteria,\n student: student,\n totalTargets: value$15,\n totalPageReads: value$14,\n assignmentsCompleted: value$13,\n totalAssignments: value$12,\n quizScores: quizScores,\n averageGrades: averageGrades,\n milestonesCompletionStatus: milestonesCompletionStatus,\n canModifyCoachNotes: value$8,\n team: team\n };\n return {\n studentDetails: studentDetails,\n coachNotes: coachNotes,\n hasArchivedCoachNotes: value$1\n };\n}\n\nfunction serializeVariables(inp) {\n return {\n studentId: inp.studentId\n };\n}\n\nfunction makeVariables(studentId, param) {\n return {\n studentId: studentId\n };\n}\n\nvar StudentDetailsQuery_inner = {\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables\n};\n\nvar include = GraphqlQuery.Extender({\n Raw: Raw,\n query: query,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n variablesToJson: (function (prim) {\n return prim;\n }),\n toJson: (function (prim) {\n return prim;\n })\n });\n\nvar $$fetch = include.$$fetch;\n\nvar StudentDetailsQuery_Graphql_error = include.Graphql_error;\n\nvar StudentDetailsQuery_decodeNotification = include.decodeNotification;\n\nvar StudentDetailsQuery_decodeObject = include.decodeObject;\n\nvar StudentDetailsQuery_decodeNotifications = include.decodeNotifications;\n\nvar StudentDetailsQuery_decodeErrors = include.decodeErrors;\n\nvar StudentDetailsQuery_flashNotifications = include.flashNotifications;\n\nvar StudentDetailsQuery_sendQuery = include.sendQuery;\n\nvar StudentDetailsQuery_query = include.query;\n\nvar StudentDetailsQuery_make = include.make;\n\nvar StudentDetailsQuery = {\n StudentDetailsQuery_inner: StudentDetailsQuery_inner,\n Raw: Raw,\n parse: parse,\n serialize: serialize,\n serializeVariables: serializeVariables,\n makeVariables: makeVariables,\n Graphql_error: StudentDetailsQuery_Graphql_error,\n decodeNotification: StudentDetailsQuery_decodeNotification,\n decodeObject: StudentDetailsQuery_decodeObject,\n decodeNotifications: StudentDetailsQuery_decodeNotifications,\n decodeErrors: StudentDetailsQuery_decodeErrors,\n flashNotifications: StudentDetailsQuery_flashNotifications,\n sendQuery: StudentDetailsQuery_sendQuery,\n query: StudentDetailsQuery_query,\n $$fetch: $$fetch,\n make: StudentDetailsQuery_make\n};\n\nfunction getStudentDetails(studentId, setState) {\n Curry._1(setState, (function (state) {\n return {\n selectedTab: state.selectedTab,\n studentData: /* Loading */0,\n submissions: state.submissions\n };\n }));\n Js_promise.then_((function (response) {\n var s = response.studentDetails.student;\n var coachNotes = response.coachNotes.map(function (coachNote) {\n return CoursesStudents__CoachNote.make(coachNote.id, coachNote.note, DateFns.decodeISO(coachNote.createdAt), Belt_Option.map(coachNote.author, User.makeFromFragment));\n });\n var evaluationCriteria = response.studentDetails.evaluationCriteria.map(function (evaluationCriterion) {\n return CoursesStudents__EvaluationCriterion.make(evaluationCriterion.id, evaluationCriterion.name, evaluationCriterion.maxGrade);\n });\n var averageGrades = response.studentDetails.averageGrades.map(function (gradeData) {\n return CoursesStudents__StudentDetails.makeAverageGrade(gradeData.evaluationCriterionId, gradeData.averageGrade);\n });\n var milestonesCompletionStatus = response.studentDetails.milestonesCompletionStatus.map(function (milestone) {\n return CoursesStudents__MilestonesCompletionStatus.make(milestone.id, milestone.title, milestone.completed, milestone.milestoneNumber);\n });\n var studentDetails = CoursesStudents__StudentDetails.make(studentId, coachNotes, response.hasArchivedCoachNotes, response.studentDetails.canModifyCoachNotes, evaluationCriteria, response.studentDetails.totalPageReads, response.studentDetails.totalTargets, response.studentDetails.assignmentsCompleted, response.studentDetails.totalAssignments, response.studentDetails.quizScores, averageGrades, CoursesStudents__StudentInfo.make(s.id, UserDetails.makeFromFragment(s.user), s.taggings, Cohort.makeFromFragment(s.cohort), Belt_Option.map(s.droppedOutAt, DateFns.decodeISO), s.personalCoaches.map(UserProxy.makeFromFragment)), Belt_Option.map(response.studentDetails.team, (function (team) {\n return CoursesStudents__StudentDetails.makeTeam(team.id, team.name, team.students.map(function (s) {\n return CoursesStudents__StudentInfo.make(s.id, UserDetails.makeFromFragment(s.user), s.taggings, Cohort.makeFromFragment(s.cohort), Belt_Option.map(s.droppedOutAt, DateFns.decodeISO), s.personalCoaches.map(UserProxy.makeFromFragment));\n }));\n })), response.studentDetails.student.course.id, milestonesCompletionStatus);\n Curry._1(setState, (function (state) {\n return {\n selectedTab: state.selectedTab,\n studentData: /* Loaded */{\n _0: studentDetails\n },\n submissions: state.submissions\n };\n }));\n return Promise.resolve(undefined);\n }), Curry._3($$fetch, undefined, undefined, {\n studentId: studentId\n }));\n}\n\nfunction updateSubmissions(setState, submissions) {\n return Curry._1(setState, (function (state) {\n return {\n selectedTab: state.selectedTab,\n studentData: state.studentData,\n submissions: submissions\n };\n }));\n}\n\nfunction doughnutChart(color, percentage) {\n return React.createElement(\"svg\", {\n className: \"student-overlay__doughnut-chart \" + color,\n viewBox: \"0 0 36 36\"\n }, React.createElement(\"path\", {\n className: \"student-overlay__doughnut-chart-bg\",\n d: \"M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831\"\n }), React.createElement(\"path\", {\n className: \"student-overlay__doughnut-chart-stroke\",\n d: \"M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831\",\n strokeDasharray: percentage + \", 100\"\n }), React.createElement(\"text\", {\n className: \"student-overlay__doughnut-chart-text font-semibold\",\n x: \"50%\",\n y: \"58%\"\n }, percentage + \"%\"));\n}\n\nfunction assignmentsCompletionStatus(assignmentsCompleted, totalAssignments) {\n var assignmentsCompletionPercent = String(assignmentsCompleted / totalAssignments * 100.0 | 0);\n return React.createElement(\"div\", {\n \"aria-label\": \"assignments-completion-status\",\n className: \"w-full lg:w-1/2 px-2\"\n }, React.createElement(\"div\", {\n className: \"student-overlay__doughnut-chart-container bg-gray-50\"\n }, doughnutChart(\"purple\", assignmentsCompletionPercent), React.createElement(\"p\", {\n className: \"text-sm font-semibold text-center mt-3\"\n }, ts(undefined, undefined, \"total_assignments_completed\")), React.createElement(\"p\", {\n className: \"text-sm text-gray-600 font-semibold text-center mt-1\"\n }, ts([\n [\n \"completed\",\n String(assignmentsCompleted | 0)\n ],\n [\n \"total\",\n String(totalAssignments | 0)\n ]\n ], undefined, \"assignments_completed\"))));\n}\n\nfunction pagesReadStatus(totalPageReads, totalTargets) {\n var totalPagesReadPercent = String(totalPageReads / totalTargets * 100.0 | 0);\n return React.createElement(\"div\", {\n \"aria-label\": \"targets-read-status\",\n className: \"w-full lg:w-1/2 px-2 mt-2 lg:mt-0\"\n }, React.createElement(\"div\", {\n className: \"student-overlay__doughnut-chart-container bg-gray-50\"\n }, doughnutChart(\"purple\", totalPagesReadPercent), React.createElement(\"p\", {\n className: \"text-sm font-semibold text-center mt-3\"\n }, ts(undefined, undefined, \"total_pages_read\")), React.createElement(\"p\", {\n className: \"text-sm text-gray-600 font-semibold text-center mt-1\"\n }, ts([\n [\n \"read\",\n String(totalPageReads | 0)\n ],\n [\n \"total\",\n String(totalTargets | 0)\n ]\n ], undefined, \"pages_read\"))));\n}\n\nfunction quizPerformanceChart(averageQuizScore, quizzesAttempted) {\n if (averageQuizScore !== undefined) {\n return React.createElement(\"div\", {\n \"aria-label\": \"quiz-performance-chart\",\n className: \"w-full lg:w-1/2 px-2 mt-2\"\n }, React.createElement(\"div\", {\n className: \"student-overlay__doughnut-chart-container bg-gray-50\"\n }, doughnutChart(\"pink\", String(averageQuizScore | 0)), React.createElement(\"p\", {\n className: \"text-sm font-semibold text-center mt-3\"\n }, t(undefined, undefined, \"average_quiz_score\")), React.createElement(\"p\", {\n className: \"text-sm text-gray-600 font-semibold text-center leading-tight mt-1\"\n }, t(undefined, quizzesAttempted, \"quizzes_attempted\"))));\n } else {\n return null;\n }\n}\n\nfunction milestonesCompletionStats(studentDetails) {\n var milestones = CoursesStudents__StudentDetails.milestonesCompletionStatus(studentDetails);\n var totalMilestones = milestones.length;\n var completedMilestones = milestones.filter(function (target) {\n return target.completed === true;\n }).length;\n var milestonesCompletionPercentage = String(completedMilestones / totalMilestones * 100.0 | 0);\n return React.createElement(\"div\", {\n className: \"flex items-center gap-2 flex-shrink-0\"\n }, React.createElement(\"p\", {\n className: \"text-xs font-medium text-gray-500\"\n }, String(completedMilestones) + \" / \" + String(totalMilestones), React.createElement(\"span\", {\n className: \"px-2 text-gray-300\"\n }, \"|\"), ts([[\n \"percentage\",\n milestonesCompletionPercentage\n ]], undefined, \"percentage_completed\")), React.createElement(\"div\", undefined, React.createElement(\"svg\", {\n className: \"courses-milestone-complete__doughnut-chart \",\n viewBox: \"0 0 36 36\"\n }, React.createElement(\"path\", {\n className: \"courses-milestone-complete__doughnut-chart-bg \",\n d: \"M18 2.0845\\n a 15.9155 15.9155 0 0 1 0 31.831\\n a 15.9155 15.9155 0 0 1 0 -31.831\"\n }), React.createElement(\"path\", {\n className: \"courses-milestone-complete__doughnut-chart-stroke\",\n d: \"M18 2.0845\\n a 15.9155 15.9155 0 0 1 0 31.831\\n a 15.9155 15.9155 0 0 1 0 -31.831\",\n strokeDasharray: milestonesCompletionPercentage + \", 100\"\n }))));\n}\n\nfunction averageGradeCharts(evaluationCriteria, averageGrades) {\n return $$Array.map((function (grade) {\n var criterion = CoursesStudents__StudentDetails.evaluationCriterionForGrade(grade, evaluationCriteria, \"CoursesStudents__StudentOverlay\");\n return React.createElement(\"div\", {\n key: CoursesStudents__EvaluationCriterion.id(criterion),\n \"aria-label\": \"average-grade-for-criterion-\" + CoursesStudents__EvaluationCriterion.id(criterion),\n className: \"flex w-full lg:w-1/2 px-2 mt-2\"\n }, React.createElement(\"div\", {\n className: \"student-overlay__pie-chart-container\"\n }, React.createElement(\"div\", {\n className: \"flex px-5 pt-4 text-center items-center\"\n }, React.createElement(\"svg\", {\n className: \"student-overlay__pie-chart student-overlay__pie-chart--pass\",\n viewBox: \"0 0 32 32\"\n }, React.createElement(\"circle\", {\n className: \"student-overlay__pie-chart-circle student-overlay__pie-chart-circle--pass\",\n cx: \"16\",\n cy: \"16\",\n r: \"16\",\n strokeDasharray: CoursesStudents__StudentDetails.gradeAsPercentage(grade, criterion) + \", 100\"\n })), React.createElement(\"span\", {\n className: \"ms-3 text-lg font-semibold\"\n }, grade.grade.toString() + (\"/\" + String(criterion.maxGrade)))), React.createElement(\"p\", {\n className: \"text-sm font-semibold px-5 pt-3 pb-4\"\n }, CoursesStudents__EvaluationCriterion.name(criterion))));\n }), averageGrades);\n}\n\nfunction test(value, url) {\n var tester = new RegExp(value);\n return tester.test(url);\n}\n\nfunction socialLinkIconClass(url) {\n if (test(\"twitter\", url)) {\n return \"fab fa-twitter\";\n } else if (test(\"facebook\", url)) {\n return \"fab fa-facebook-f\";\n } else if (test(\"instagram\", url)) {\n return \"fab fa-instagram\";\n } else if (test(\"youtube\", url)) {\n return \"fab fa-youtube\";\n } else if (test(\"linkedin\", url)) {\n return \"fab fa-linkedin\";\n } else if (test(\"reddit\", url)) {\n return \"fab fa-reddit\";\n } else if (test(\"flickr\", url)) {\n return \"fab fa-flickr\";\n } else if (test(\"github\", url)) {\n return \"fab fa-github\";\n } else {\n return \"fas fa-users\";\n }\n}\n\nfunction showSocialLinks(socialLinks) {\n return React.createElement(\"div\", {\n className: \"inline-flex flex-wrap justify-center text-lg text-gray-800 mt-3 bg-gray-50 px-2 rounded-lg\"\n }, $$Array.mapi((function (index, link) {\n return React.createElement(\"a\", {\n key: String(index),\n className: \"px-2 py-1 inline-block hover:text-primary-500\",\n href: link,\n target: \"_blank\"\n }, React.createElement(\"i\", {\n className: socialLinkIconClass(link)\n }));\n }), socialLinks));\n}\n\nfunction setSelectedTab(selectedTab, setState) {\n return Curry._1(setState, (function (state) {\n return {\n selectedTab: selectedTab,\n studentData: state.studentData,\n submissions: state.submissions\n };\n }));\n}\n\nfunction addNote(setState, studentDetails, onAddCoachNotesCB, note) {\n Curry._1(onAddCoachNotesCB, undefined);\n return Curry._1(setState, (function (state) {\n return {\n selectedTab: state.selectedTab,\n studentData: /* Loaded */{\n _0: CoursesStudents__StudentDetails.addNewNote(note, studentDetails)\n },\n submissions: state.submissions\n };\n }));\n}\n\nfunction removeNote(setState, studentDetails, noteId) {\n return Curry._1(setState, (function (state) {\n return {\n selectedTab: state.selectedTab,\n studentData: /* Loaded */{\n _0: CoursesStudents__StudentDetails.removeNote(noteId, studentDetails)\n },\n submissions: state.submissions\n };\n }));\n}\n\nfunction userInfo(key, avatarUrl, name, fulltitle) {\n return React.createElement(\"div\", {\n key: key,\n className: \"shadow rounded-lg p-4 flex items-center mt-2\"\n }, CoursesStudents__PersonalCoaches.avatar(undefined, avatarUrl, name), React.createElement(\"div\", {\n className: \"ms-2 md:ms-3\"\n }, React.createElement(\"div\", {\n className: \"text-sm font-semibold\"\n }, name), React.createElement(\"div\", {\n className: \"text-xs\"\n }, fulltitle)));\n}\n\nfunction coachInfo(studentDetails) {\n var coaches = CoursesStudents__StudentInfo.personalCoaches(CoursesStudents__StudentDetails.student(studentDetails));\n if (ArrayUtils.isNotEmpty(coaches)) {\n return React.createElement(\"div\", {\n className: \"mb-8\"\n }, React.createElement(\"h6\", {\n className: \"font-semibold\"\n }, t(undefined, undefined, \"personal_coaches\")), $$Array.map((function (coach) {\n return userInfo(UserProxy.userId(coach), UserProxy.avatarUrl(coach), UserProxy.name(coach), UserProxy.fullTitle(coach));\n }), coaches));\n } else {\n return null;\n }\n}\n\nfunction navigateToStudent(setState, _event) {\n return Curry._1(setState, (function (param) {\n return initialState;\n }));\n}\n\nfunction otherTeamMembers(setState, studentId, studentDetails) {\n var team = CoursesStudents__StudentDetails.team(studentDetails);\n if (team !== undefined) {\n return React.createElement(\"div\", {\n className: \"block mt-8\"\n }, React.createElement(\"h6\", {\n className: \"font-semibold\"\n }, t(undefined, undefined, \"other_team_members\")), CoursesStudents__StudentDetails.students(team).filter(function (student) {\n return CoursesStudents__StudentInfo.id(student) !== studentId;\n }).map(function (student) {\n var path = \"/students/\" + (CoursesStudents__StudentInfo.id(student) + \"/report\");\n return React.createElement(Link.make, {\n href: path,\n className: \"block mt-2 rounded-lg border border-transparent hover:bg-primary-50 hover:border-primary-500 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-focusColor-500 transition\",\n onClick: (function (param) {\n return Curry._1(setState, (function (param) {\n return initialState;\n }));\n }),\n children: userInfo(CoursesStudents__StudentInfo.id(student), UserDetails.avatarUrl(CoursesStudents__StudentInfo.user(student)), UserDetails.name(CoursesStudents__StudentInfo.user(student)), UserDetails.fullTitle(CoursesStudents__StudentInfo.user(student))),\n key: CoursesStudents__StudentInfo.id(student)\n });\n }));\n } else {\n return null;\n }\n}\n\nfunction inactiveWarning(student) {\n var match = CoursesStudents__StudentInfo.droppedOutAt(student);\n var match$1 = Cohort.endsAt(CoursesStudents__StudentInfo.cohort(student));\n var warning;\n if (match !== undefined) {\n warning = t([[\n \"date\",\n DateFns.formatPreset(Caml_option.valFromOption(match), true, true, undefined, undefined)\n ]], undefined, \"dropped_out_at\");\n } else if (match$1 !== undefined) {\n var endsAt = Caml_option.valFromOption(match$1);\n warning = DateFns.isPast(endsAt) ? t([[\n \"date\",\n DateFns.formatPreset(endsAt, true, true, undefined, undefined)\n ]], undefined, \"access_ended_at\") : undefined;\n } else {\n warning = undefined;\n }\n return OptionUtils.mapWithDefault((function (warning) {\n return React.createElement(\"div\", {\n className: \"border border-yellow-400 rounded bg-yellow-400 py-2 px-3 mt-3\"\n }, React.createElement(\"i\", {\n className: \"fas fa-exclamation-triangle\"\n }), React.createElement(\"span\", {\n className: \"ms-2\"\n }, warning));\n }), null, warning);\n}\n\nfunction onAddCoachNotesCB(studentId, setState, param) {\n getStudentDetails(studentId, setState);\n}\n\nfunction CoursesStudents__StudentOverlay(Props) {\n var studentId = Props.studentId;\n var userId = Props.userId;\n var match = React.useState(function () {\n return initialState;\n });\n var setState = match[1];\n var state = match[0];\n React.useEffect((function () {\n ScrollLock.activate(undefined);\n return (function (param) {\n ScrollLock.deactivate(undefined);\n });\n }), []);\n React.useEffect((function () {\n getStudentDetails(studentId, setState);\n }), [studentId]);\n var studentDetails = state.studentData;\n var tmp;\n if (studentDetails) {\n var studentDetails$1 = studentDetails._0;\n var student = CoursesStudents__StudentDetails.student(studentDetails$1);\n var avatarUrl = UserDetails.avatarUrl(CoursesStudents__StudentInfo.user(student));\n var name = UserDetails.currentStandingName(CoursesStudents__StudentInfo.user(student));\n var name$1 = UserDetails.affiliation(CoursesStudents__StudentInfo.user(student));\n var match$1 = state.selectedTab;\n var match$2 = state.selectedTab;\n var match$3 = state.selectedTab;\n tmp = React.createElement(\"div\", {\n className: \"flex flex-col md:flex-row md:h-screen\"\n }, React.createElement(\"div\", {\n className: \"w-full md:w-2/5 bg-white p-4 md:p-8 md:py-6 2xl:px-16 2xl:py-12 md:overflow-y-auto\"\n }, React.createElement(\"div\", {\n className: \"student-overlay__student-details pb-4\"\n }, React.createElement(\"div\", undefined, React.createElement(\"div\", {\n className: \"flex items-center justify-start gap-2 flex-wrap\"\n }, React.createElement(\"div\", undefined, React.createElement(\"a\", {\n \"aria-label\": t(undefined, undefined, \"close_student_report\"),\n className: \"z-50 start-0 cursor-pointer top-0 inline-flex p-1 rounded-full bg-gray-50 h-11 w-11 justify-center items-center text-gray-600 hover:text-gray-900 hover:bg-gray-300 focus:outline-none focus:text-gray-900 focus:bg-gray-300 focus:ring-2 focus:ring-inset focus:ring-focusColor-500\",\n title: t(undefined, undefined, \"close_student_report\"),\n href: closeOverlayLink(student)\n }, React.createElement(Icon.make, {\n className: \"if i-arrow-left-light if-fw text-xl lg:text-2xl\"\n }))), React.createElement(\"div\", undefined, React.createElement(\"div\", {\n className: \"student-overlay__student-avatar mx-auto w-14 h-14 md:w-16 md:h-16 text-xs border border-yellow-500 rounded-full overflow-hidden shrink-0\"\n }, avatarUrl !== undefined ? React.createElement(\"img\", {\n className: \"w-full object-cover\",\n src: avatarUrl\n }) : React.createElement(Avatar.make, {\n name: UserDetails.name(CoursesStudents__StudentInfo.user(student)),\n className: \"object-cover\"\n }))), React.createElement(\"div\", {\n className: \"ps-1\"\n }, React.createElement(\"div\", undefined, React.createElement(\"h2\", {\n className: \"text-lg text-left font-semibold\"\n }, UserDetails.name(CoursesStudents__StudentInfo.user(student)))), React.createElement(\"div\", {\n className: \"text-sm font-semibold\"\n }, UserDetails.title(CoursesStudents__StudentInfo.user(student))))), React.createElement(\"div\", {\n className: \"mt-4 space-y-1 flex flex-col\"\n }, React.createElement(\"div\", {\n className: \"flex flex-wrap items-center justify-normal gap-2\"\n }, React.createElement(\"div\", {\n className: \"flex\"\n }, React.createElement(PfIcon.make, {\n className: \"if i-user-regular if-fw text-xl\"\n }), React.createElement(\"span\", {\n className: \"text-gray-500 font-normal\"\n }, t(undefined, undefined, \"user_id\")), React.createElement(ClickToCopy.make, {\n copy: UserDetails.id(CoursesStudents__StudentInfo.user(student)),\n className: \"inline-block hover:text-primary-500\",\n children: React.createElement(\"span\", {\n className: \"ms-2 text-base font-semibold\"\n }, \"#\" + UserDetails.id(CoursesStudents__StudentInfo.user(student)) + \"\")\n })), React.createElement(\"div\", {\n className: \"flex\"\n }, React.createElement(PfIcon.make, {\n className: \"if i-academic-cap-light if-fw text-xl\"\n }), React.createElement(\"span\", {\n className: \"text-gray-500 font-normal\"\n }, t(undefined, undefined, \"student_id\")), React.createElement(ClickToCopy.make, {\n copy: CoursesStudents__StudentInfo.id(student),\n className: \"inline-block hover:text-primary-500\",\n children: React.createElement(\"span\", {\n className: \"ms-2 text-base font-semibold\"\n }, \"#\" + CoursesStudents__StudentInfo.id(student) + \"\")\n }))), React.createElement(\"div\", {\n className: \"flex\"\n }, React.createElement(PfIcon.make, {\n className: \"if i-users-light if-fw text-xl \"\n }), React.createElement(\"span\", {\n className: \"text-gray-500 font-normal\"\n }, ts(undefined, undefined, \"cohort\")), React.createElement(\"span\", {\n className: \"ms-2 text-base font-semibold break-normal\"\n }, Cohort.name(CoursesStudents__StudentInfo.cohort(student)))), name !== undefined ? React.createElement(\"div\", {\n className: \"flex\"\n }, React.createElement(PfIcon.make, {\n className: \"if i-shield-light if-fw text-xl\"\n }), React.createElement(\"span\", {\n className: \"text-gray-500 font-normal\"\n }, ts(undefined, undefined, \"user_standing.standing\")), React.createElement(\"span\", {\n className: \"ms-2 text-base font-semibold\"\n }, name)) : null, name$1 !== undefined ? React.createElement(\"div\", {\n className: \"space-x-1\"\n }, React.createElement(PfIcon.make, {\n className: \"if i-school-light if-fw text-xl\"\n }), React.createElement(\"span\", {\n className: \"text-gray-500 font-normal\"\n }, t(undefined, undefined, \"affiliation\")), React.createElement(\"span\", {\n className: \"ms-2 text-base font-semibold\"\n }, name$1)) : null)), inactiveWarning(student)), React.createElement(\"div\", {\n className: \"mt-8\"\n }, React.createElement(\"h6\", {\n className: \"font-semibold\"\n }, ts(undefined, undefined, \"targets_overview\")), React.createElement(\"div\", {\n className: \"flex -mx-2 flex-wrap mt-2\"\n }, assignmentsCompletionStatus(CoursesStudents__StudentDetails.assignmentsCompleted(studentDetails$1), CoursesStudents__StudentDetails.totalAssignments(studentDetails$1)), pagesReadStatus(CoursesStudents__StudentDetails.totalPageReads(studentDetails$1), CoursesStudents__StudentDetails.totalTargets(studentDetails$1)), quizPerformanceChart(CoursesStudents__StudentDetails.averageQuizScore(studentDetails$1), CoursesStudents__StudentDetails.quizzesAttempted(studentDetails$1)))), ArrayUtils.isNotEmpty(CoursesStudents__StudentDetails.averageGrades(studentDetails$1)) ? React.createElement(\"div\", {\n className: \"mt-8\"\n }, React.createElement(\"h6\", {\n className: \"font-semibold\"\n }, t(undefined, undefined, \"average_grades\")), React.createElement(\"div\", {\n className: \"flex -mx-2 flex-wrap\"\n }, averageGradeCharts(CoursesStudents__StudentDetails.evaluationCriteria(studentDetails$1), CoursesStudents__StudentDetails.averageGrades(studentDetails$1)))) : null, coachInfo(studentDetails$1), otherTeamMembers(setState, studentId, studentDetails$1), React.createElement(\"div\", {\n className: \"mt-4\"\n }, React.createElement(\"div\", {\n className: \"justify-between mt-8 flex space-x-2\"\n }, React.createElement(\"p\", {\n className: \"text-sm font-semibold\"\n }, ts(undefined, undefined, \"milestones\")), milestonesCompletionStats(studentDetails$1)), React.createElement(\"div\", {\n className: \"space-y-2\"\n }, ArrayUtils.copyAndSort((function (a, b) {\n return CoursesStudents__MilestonesCompletionStatus.milestoneNumber(a) - CoursesStudents__MilestonesCompletionStatus.milestoneNumber(b) | 0;\n }), CoursesStudents__StudentDetails.milestonesCompletionStatus(studentDetails$1)).map(function (data) {\n return React.createElement(Spread.make, {\n props: {\n \"data-milestone-id\": CoursesStudents__MilestonesCompletionStatus.id(data)\n },\n children: React.createElement(\"div\", {\n className: \"flex gap-2 mt-2 items-center p-2 rounded-md border bg-gray-100 transition\"\n }, React.createElement(\"div\", undefined, React.createElement(\"span\", {\n className: \"text-xs font-medium inline-flex items-center \" + (\n CoursesStudents__MilestonesCompletionStatus.completed(data) ? \"text-green-700 bg-green-100 px-1 py-0.5 rounded\" : \"text-orange-700 bg-orange-100 px-1 py-0.5 rounded\"\n )\n }, React.createElement(Icon.make, {\n className: CoursesStudents__MilestonesCompletionStatus.completed(data) ? \"if i-check-circle-solid text-green-600\" : \"if i-dashed-circle-light text-orange-600\"\n }))), React.createElement(\"div\", undefined, React.createElement(\"p\", {\n className: \"text-sm font-semibold\"\n }, ts(undefined, undefined, \"m\") + String(CoursesStudents__MilestonesCompletionStatus.milestoneNumber(data)))), React.createElement(\"div\", {\n className: \"flex-1 text-sm truncate\"\n }, CoursesStudents__MilestonesCompletionStatus.title(data)))\n });\n })))), React.createElement(\"div\", {\n className: \"w-full relative md:w-3/5 bg-gray-50 md:border-s pb-20 md:pb-10 overflow-y-auto\"\n }, React.createElement(\"div\", {\n className: \"sticky top-0 bg-gray-50 pt-2 md:pt-4 px-4 md:px-8 2xl:px-16 2xl:pt-10 z-30\"\n }, React.createElement(\"ul\", {\n className: \"flex flex-1 md:flex-none p-1 md:p-0 space-x-1 md:space-x-0 text-center rounded-lg justify-between md:justify-start bg-gray-300 md:bg-transparent\",\n role: \"tablist\"\n }, React.createElement(\"li\", {\n \"aria-selected\": state.selectedTab === /* Notes */0,\n className: \"cursor-pointer flex flex-1 justify-center md:flex-none rounded-md p-1.5 md:px-4 md:hover:bg-gray-50 md:py-2 text-sm font-semibold text-gray-800 hover:text-primary-600 hover:bg-gray-50 focus:outline-none focus:ring-inset focus:ring-2 focus:bg-gray-50 focus:ring-focusColor-500 md:focus:border-b-none md:focus:rounded-t-md \" + (\n match$1 ? \" \" : \"bg-white shadow md:shadow-none rounded-md md:rounded-none md:bg-transparent md:border-b-3 hover:bg-white md:hover:bg-transparent text-primary-500 md:border-primary-500 \"\n ),\n role: \"tab\",\n tabIndex: 0,\n onClick: (function (_event) {\n setSelectedTab(/* Notes */0, setState);\n })\n }, t(undefined, undefined, \"notes\")), React.createElement(\"li\", {\n \"aria-selected\": state.selectedTab === /* Submissions */1,\n className: \"cursor-pointer flex flex-1 justify-center md:flex-none rounded-md p-1.5 md:px-4 md:hover:bg-gray-50 md:py-2 text-sm font-semibold text-gray-800 hover:text-primary-600 hover:bg-gray-50 focus:outline-none focus:ring-inset focus:ring-2 focus:bg-gray-50 focus:ring-focusColor-500 md:focus:border-b-none md:focus:rounded-t-md \" + (\n match$2 ? \"bg-white shadow md:shadow-none rounded-md md:rounded-none md:bg-transparent md:border-b-3 hover:bg-white md:hover:bg-transparent text-primary-500 md:border-primary-500 \" : \" \"\n ),\n role: \"tab\",\n tabIndex: 0,\n onClick: (function (_event) {\n setSelectedTab(/* Submissions */1, setState);\n })\n }, t(undefined, undefined, \"submissions\")))), React.createElement(\"div\", {\n className: \"pt-2 px-4 md:px-8 2xl:px-16\"\n }, match$3 ? React.createElement(CoursesStudents__SubmissionsList.make, {\n studentId: studentId,\n submissions: state.submissions,\n updateSubmissionsCB: (function (param) {\n return updateSubmissions(setState, param);\n })\n }) : React.createElement(CoursesStudents__CoachNotes.make, {\n studentId: studentId,\n coachNotes: CoursesStudents__StudentDetails.coachNotes(studentDetails$1),\n hasArchivedNotes: CoursesStudents__StudentDetails.hasArchivedNotes(studentDetails$1),\n canModifyCoachNotes: CoursesStudents__StudentDetails.canModifyCoachNotes(studentDetails$1),\n addNoteCB: (function (param) {\n return addNote(setState, studentDetails$1, (function (param) {\n return getStudentDetails(studentId, setState);\n }), param);\n }),\n removeNoteCB: (function (param) {\n return removeNote(setState, studentDetails$1, param);\n }),\n userId: userId\n }))));\n } else {\n tmp = React.createElement(\"div\", {\n className: \"flex flex-col md:flex-row md:h-screen\"\n }, React.createElement(\"div\", {\n className: \"w-full md:w-2/5 bg-white p-4 md:p-8 2xl:p-16\"\n }, SkeletonLoading.image(undefined), SkeletonLoading.multiple(2, SkeletonLoading.userDetails(undefined))), React.createElement(\"div\", {\n className: \"w-full relative md:w-3/5 bg-gray-50 md:border-s p-4 md:p-8 2xl:p-16\"\n }, SkeletonLoading.contents(undefined), SkeletonLoading.userDetails(undefined)));\n }\n return React.createElement(\"div\", {\n className: \"fixed z-30 top-0 start-0 w-full h-full overflow-y-scroll md:overflow-hidden bg-white\"\n }, tmp);\n}\n\nvar UserDetailsFragment;\n\nvar CohortFragment;\n\nvar UserProxyFragment;\n\nvar UserFragment;\n\nvar make = CoursesStudents__StudentOverlay;\n\nexport {\n str ,\n t ,\n ts ,\n initialState ,\n closeOverlayLink ,\n UserDetailsFragment ,\n CohortFragment ,\n UserProxyFragment ,\n UserFragment ,\n StudentDetailsQuery ,\n getStudentDetails ,\n updateSubmissions ,\n doughnutChart ,\n assignmentsCompletionStatus ,\n pagesReadStatus ,\n quizPerformanceChart ,\n milestonesCompletionStats ,\n averageGradeCharts ,\n test ,\n socialLinkIconClass ,\n showSocialLinks ,\n setSelectedTab ,\n addNote ,\n removeNote ,\n userInfo ,\n coachInfo ,\n navigateToStudent ,\n otherTeamMembers ,\n inactiveWarning ,\n onAddCoachNotesCB ,\n make ,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as $$Array from \"../../../../node_modules/rescript/lib/es6/array.js\";\nimport * as React from \"react\";\nimport * as Js_array from \"../../../../node_modules/rescript/lib/es6/js_array.js\";\nimport * as Belt_Option from \"../../../../node_modules/rescript/lib/es6/belt_Option.js\";\nimport * as AppRouter__User from \"./types/AppRouter__User.bs.js\";\nimport * as Caml_exceptions from \"../../../../node_modules/rescript/lib/es6/caml_exceptions.js\";\nimport * as CoursesReview__Root from \"../../courses/review/CoursesReview__Root.bs.js\";\nimport * as RescriptReactRouter from \"../../../../node_modules/@rescript/react/src/RescriptReactRouter.bs.js\";\nimport * as CoursesReview__SubmissionsRoot from \"../../courses/review/components/CoursesReview__SubmissionsRoot.bs.js\";\nimport * as CoursesStudents__StudentOverlay from \"../../courses/students/components/CoursesStudents__StudentOverlay.bs.js\";\n\nvar UnknownPathEncountered = /* @__PURE__ */Caml_exceptions.create(\"AppRouter.UnknownPathEncountered\");\n\nimport \"./components/AppRouter__Nav.css\"\n;\n\nfunction AppRouter(Props) {\n var courses = Props.courses;\n var currentUser = Props.currentUser;\n var url = RescriptReactRouter.useUrl(undefined, undefined);\n var match = url.path;\n var component;\n var exit = 0;\n if (match) {\n switch (match.hd) {\n case \"courses\" :\n var match$1 = match.tl;\n if (match$1) {\n var match$2 = match$1.tl;\n if (match$2 && match$2.hd === \"review\" && !match$2.tl) {\n component = React.createElement(CoursesReview__Root.make, {\n courseId: match$1.hd,\n currentCoachId: Belt_Option.getWithDefault(AppRouter__User.coachId(AppRouter__User.defaultUser(currentUser)), \"\"),\n courses: courses\n });\n } else {\n exit = 1;\n }\n } else {\n exit = 1;\n }\n break;\n case \"students\" :\n var match$3 = match.tl;\n if (match$3) {\n var match$4 = match$3.tl;\n if (match$4 && match$4.hd === \"report\" && !match$4.tl) {\n component = React.createElement(CoursesStudents__StudentOverlay.make, {\n studentId: match$3.hd,\n userId: AppRouter__User.id(AppRouter__User.defaultUser(currentUser))\n });\n } else {\n exit = 1;\n }\n } else {\n exit = 1;\n }\n break;\n case \"submissions\" :\n var match$5 = match.tl;\n if (match$5) {\n var match$6 = match$5.tl;\n if (match$6 && match$6.hd === \"review\" && !match$6.tl) {\n component = React.createElement(CoursesReview__SubmissionsRoot.make, {\n submissionId: match$5.hd,\n currentUser: AppRouter__User.defaultUser(currentUser)\n });\n } else {\n exit = 1;\n }\n } else {\n exit = 1;\n }\n break;\n default:\n exit = 1;\n }\n } else {\n exit = 1;\n }\n if (exit === 1) {\n Rollbar.critical(\"Unknown path encountered by app router: \" + Js_array.joinWith(\"/\", $$Array.of_list(url.path)));\n throw {\n RE_EXN_ID: UnknownPathEncountered,\n _1: url.path,\n Error: new Error()\n };\n }\n return React.createElement(\"div\", {\n className: \"md:h-screen md:flex bg-gray-50\"\n }, component);\n}\n\nvar make = AppRouter;\n\nexport {\n UnknownPathEncountered ,\n make ,\n}\n/* Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Psj from \"../shared/utils/Psj.bs.js\";\nimport * as React from \"react\";\nimport * as DomUtils from \"../shared/utils/DomUtils.bs.js\";\nimport * as AppRouter from \"../layouts/app_router/AppRouter.bs.js\";\nimport * as ReactDom from \"react-dom\";\nimport * as Json_decode from \"../../../node_modules/@glennsl/bs-json/src/Json_decode.bs.js\";\nimport * as AppRouter__User from \"../layouts/app_router/types/AppRouter__User.bs.js\";\nimport * as AppRouter__Course from \"../layouts/app_router/types/AppRouter__Course.bs.js\";\n\nfunction decodeProps(json) {\n return [\n Json_decode.field(\"courses\", (function (param) {\n return Json_decode.array(AppRouter__Course.decode, param);\n }), json),\n Json_decode.field(\"currentUser\", (function (param) {\n return Json_decode.optional(AppRouter__User.decode, param);\n }), json)\n ];\n}\n\nPsj.matchPaths(undefined, [\n \"courses/:id/review\",\n \"submissions/:id/review\",\n \"students/:id/report\"\n ], (function (param) {\n var match = decodeProps(DomUtils.parseJSONTag(\"app-router-data\", undefined));\n var root = document.querySelector(\"#app-router\");\n if (!(root == null)) {\n ReactDom.render(React.createElement(AppRouter.make, {\n courses: match[0],\n currentUser: match[1]\n }), root);\n return ;\n }\n \n }));\n\nexport {\n decodeProps ,\n}\n/* Not a pure module */\n"],"names":["title","t","url","local","decode","json","Json_decode.field","Json_decode.string","Json_decode.bool","partial_arg","param","param$1","param$2","I18n.t","additionalLinks","linksVisible","links","React.createElement","Js_array.mapi","link","index","StudentTopNav__NavLink.url","StudentTopNav__NavLink.title","StudentTopNav__DropDown","Props","match","React.useState","setLinksVisible","Curry._1","make","showLink","icon","text","href","FaIcon.make","selected","user","Belt_Option.mapWithDefault","Avatar.make","u","User.avatarUrl","User.name","src","StudentTopNav__UserControls","Dropdown.make","headerLink","key","tmp","tmp$1","StudentTopNav__NavLink.local","Caml_option.valFromOption","tmp$2","signOutLink","editProfileLink","signInLink","notificationButton","hasNotifications","Notifications__Root.make","headerLinks","isLoggedIn","$$Array.to_list","match$1","match$2","$$Array.of_list","match$3","match$4","match$5","match$6","Js_array.concat","match$7","StudentTopNav__UserControls.make","ReactUtils.nullUnless","StudentTopNav__DropDown.make","l","renderLogo","logoUrl","schoolName","additionalClasses","StudentTopNav","logoOnLightBgUrl","logoOnDarkBgUrl","currentUser","toggleMenuHidden","menuHidden","React.useEffect","resizeCB","decodeProps","Caml_option.null_to_opt","Json_decode.nullable","Json_decode.array","StudentTopNav__NavLink.decode","Json_decode.optional","User.decode","element","DomUtils.parseJSONTag","ReactDom.render","StudentTopNav.make","RootAttributeMissing","Caml_exceptions.create","InvalidProfile","parseElement","attribute","props","Json.parseOrRaise","profileType","profile","parseMarkdown","attributeNameOpt","attributeOpt","attributeName","$$Array.map","MarkdownBlock.make","name","id","review","author","description","exited","thumbnailUrl","linkedCommunities","accessEnded","ended","enableLeaderboard","color","path","StringUtils.parameterize","serialNumber","createdAt","courseName","DateFns.decodeISO","headerSection","userName","preferredName","userTitle","avatarUrl","showUserEdit","standing","Belt_Option.getWithDefault","UsersDashboard__Standing.color","UsersDashboard__Standing.name","I18n.ts","StandingShield.make","navButtonClasses","navSection","view","setView","communities","issuedCertificates","ArrayUtils.isNotEmpty","courseLink","ctaButton","ctaText","message","studentLink","courseId","suffix","callToAction","course","currentSchoolAdmin","UsersDashboard__Course.author","UsersDashboard__Course.review","UsersDashboard__Course.exited","UsersDashboard__Course.ended","UsersDashboard__Course.accessEnded","ctaFooter","UsersDashboard__Course.id","communityLinks","communityIds","Js_array.map","community","Js_array.find","c","UsersDashboard__Community.id","UsersDashboard__Community.path","UsersDashboard__Community.name","courseLinks","cta","UsersDashboard__Course.enableLeaderboard","UsersDashboard__Course.linkedCommunities","coursesSection","courses","ArrayUtils.isEmpty","UsersDashboard__Course.thumbnailUrl","UsersDashboard__Course.name","PfIcon.make","UsersDashboard__Course.description","communitiesSection","certificatesSection","issuedCertificate","UsersDashboard__IssuedCertificate.id","UsersDashboard__IssuedCertificate.serialNumber","UsersDashboard__IssuedCertificate.courseName","DateFns.formatPreset","UsersDashboard__IssuedCertificate.createdAt","UsersDashboard__Root","UsersDashboard__Course.decode","UsersDashboard__Community.decode","UsersDashboard__IssuedCertificate.decode","UsersDashboard__Standing.decode","Psj.match","UsersDashboard__Root.make","PermanentDeleteSvg","permanentDeleteIcon","Raw","query","parse","value","value$1","serialize","value$2","deleteAccount","serializeVariables","inp","include","GraphqlQuery.Extender","prim","$$fetch","token","setState","$$event","Js_promise.$$catch","Js_promise.then_","result","DomUtils.redirect","Curry._3","UsersDeleteAccount","root","UsersDeleteAccount.make","StringUtils.toColor","makeFromJs","jsObject","solved","views","lastActivityAt","liveRepliesCount","likesCount","topicCategoryId","creatorName","participants","participantsCount","makeFromJS","topicData","Belt_Option.map","creator","CommunitiesShow__TopicParticipant.makeFromJs","toArray","avatarClasses","size","mdSize","defaultSize","avatar","sizeOpt","CommunitiesShow__Participants","tooltipPositionOpt","defaultAvatarSizeOpt","mdAvatarSizeOpt","className","tooltipPosition","defaultAvatarSize","mdAvatarSize","otherParticipantsCount","participant","Tooltip.make","CommunitiesShow__TopicParticipant.name","CommunitiesShow__TopicParticipant.avatarUrl","CommunitiesShow__TopicParticipant.id","searchBy","search","reducer","state","action","newTopics","endCursor","updatedTopics","$$Array.append","CommunitiesShow__Topics.toArray","value$3","value$4","Caml_option.some","value$5","pageInfo","value$6","nodes","value$7","value$8","value$9","value$10","value$11","value$12","value$13","topics","serializeInputObjectCommunitySearchFilter","a$1","a$2","a$3","a$4","a$5","a$6","makeVariables","communityId","targetId","resolution","searchFilter","after","sortCriterion","sortDirection","getTopics","send","cursor","filter","OptionUtils.map","TopicCategory.id","CommunitiesShow__Target.id","variables","response","CommunitiesShow__Topic.makeFromJS","reloadTopics","filterToQueryString","filterDict","Js_dict.fromArray","Belt_Option.forEach","tc","updateParams","RescriptReactRouter.push","topicsList","topicCategories","topic","CommunitiesShow__Topic.creatorName","date","CommunitiesShow__Topic.lastActivityAt","CommunitiesShow__Topic.topicCategoryId","topicCategory","ArrayUtils.unsafeFind","TopicCategory.name","style","CommunitiesShow__Topic.id","CommunitiesShow__Topic.title","CommunitiesShow__Topic.createdAt","DateFns.formatDistanceToNowStrict","CommunitiesShow__Topic.likesCount","CommunitiesShow__Topic.liveRepliesCount","CommunitiesShow__Topic.views","CommunitiesShow__Topic.solved","CommunitiesShow__Participants.make","CommunitiesShow__Topic.participants","CommunitiesShow__Topic.participantsCount","topicsLoadedData","totalTopicsCount","loadedTopicsCount","label","searchString","topicCategory$1","search$1","solution","on","Selectable","Multiselect","MultiselectDropdown.Make","unselected","unselectedCategories","Js_array.filter","category","OptionUtils.mapWithDefault","selectedCategory","trimmedFilterString","$$String.trim","hasSolution","selectedSearchString","selectedSolutionFilter","onSelectFilter","selectable","onDeselectFilter","filterPlaceholder","categoryDropdownSelected","TopicCategory.color","categoryDropdownContents","availableTopicCategories","selectableTopicCategories","availableTopicCategory","categoryName","criterion","criterionType","_t","Sortable","TopicsSorter","Sorter.Make","topicsSorter","filterFromQueryParams","target","params","criterion$1","direction","Belt_Option.flatMap","Caml_option.nullable_to_opt","cat","CommunitiesShow__Root","React.useReducer","RescriptReactRouter.useUrl","SkeletonLoading.multiple","SkeletonLoading.card","topics$1","topics$2","loading","LoadingSpinner.make","CommunitiesShow__Target.title","ReactUtils.nullIf","filterString","make$1","CommunitiesShow__Target.decode","TopicCategory.decode","CommunitiesShow__Root.make","Radio","onChange","checkedOpt","checked","toLanguageName","inputLanguage","outputLanguage","intlDisplayNames","humanize","languageCode","frequency_lists","frequency_lists_1","adjacency_graphs","adjacency_graphs_1","BRUTEFORCE_CARDINALITY","MIN_GUESSES_BEFORE_GROWING_SEQUENCE","MIN_SUBMATCH_GUESSES_MULTI_CHAR","MIN_SUBMATCH_GUESSES_SINGLE_CHAR","calc_average_degree","k","scoring","require$$0","graph","average","n","neighbors","len","o","results","d","r","ref","f","i","password","matches","_exclude_additive","bruteforce_update","guesses","len1","len2","lst","m","make_bruteforce_match","matches_by_j","optimal","optimal_l","optimal_match_sequence","q","ref1","unwind","update","w","m1","m2","_this","competing_g","competing_l","g","pi","last_m","results1","j","candidate_g","candidate_l","estimation_functions","min_guesses","base_guesses","first_chr","char_class_bases","year_space","L","S","U","possible_turns","ref2","ref3","s","shifted_variations","reversed_variations","chr","regex","variations","word","chrs","p","possibilities","subbed","unsubbed","scoring_1","DATE_MAX_YEAR","DATE_MIN_YEAR","DATE_SPLITS","GRAPHS","L33T_TABLE","RANKED_DICTIONARIES","REGEXEN","build_ranked_dict","matching","require$$1","require$$2","ordered_list","obj","lst2","string","chr_map","matcher","matchers","_ranked_dictionaries","dictionary_name","password_lower","rank","ranked_dict","reversed_password","table","letter","password_chars","relevant_subs","sub","subs","subtable","dedup","helper","keys","l33t_chr","sub_dict","sub_dicts","assoc","deduped","members","v","dup_l33t_index","first_key","next_subs","rest_keys","sub_alternative","sub_extension","_l33t_table","match_sub","subbed_chr","subbed_password","_graphs","graph_name","adj","adjacents","cur_char","cur_direction","found","found_direction","last_direction","prev_char","shifted_count","turns","base_analysis","base_matches","base_token","greedy","greedy_match","lastIndex","lazy","lazy_anchored","lazy_match","delta","last_delta","sequence_name","sequence_space","_regexen","rx_match","best_candidate","candidate","candidates","distance","dmy","maybe_date_no_separator","maybe_date_with_separator","metric","min_distance","ref4","ref5","ref6","ref7","ref8","ref9","is_submatch","len3","other_match","ints","dm","int","over_12","over_31","possible_year_splits","rest","under_1","y","year","matching_1","time_estimates","crack_times_display","crack_times_seconds","scenario","seconds","DELTA","base","century","day","display_num","display_str","hour","minute","month","time_estimates_1","feedback","score","sequence","extra_feedback","longest_match","is_sole_match","warning","suggestions","feedback_1","time","zxcvbn","require$$3","user_inputs","arg","attack_times","prop","sanitized_inputs","start","val","main","UnexpectedZxcvbnScore","ts","colorClass","userInputsOpt","userInputs","formDictionary","zxcvbnResponse","Zxcvbn","ArrayUtils.flattenV2","strength","ConfirmWindow","body","confirmButtonText","cancelButtonText","onConfirm","onCancel","disableConfirm","alertTypeOpt","alertType","partial_arg$1","newrecord","Caml_obj.obj_dup","newrecord$1","newrecord$2","newrecord$3","newrecord$4","newrecord$5","newrecord$6","newrecord$7","newrecord$8","newrecord$9","newrecord$10","newrecord$11","newrecord$12","newrecord$13","newrecord$14","newrecord$15","newrecord$16","newrecord$17","themePreference","ThemeSwitch.setThemeBasedOnPreference","newrecord$18","newrecord$19","newrecord$20","newrecord$21","newrecord$22","newrecord$23","newrecord$24","updateUser","about","locale","currentPassword","newPassword","confirmPassword","dailyDigest","Raw$1","query$1","parse$1","serialize$1","initiateAccountDeletion","serializeVariables$1","include$1","$$fetch$1","Raw$2","query$2","parse$2","serialize$2","sendUpdateEmailToken","serializeVariables$2","include$2","$$fetch$2","Raw$3","query$3","parse$3","serialize$3","initiatePasswordReset","serializeVariables$3","include$3","$$fetch$3","uploadAvatar","formData","Api.sendFormData","$$Notification.success","updateEmail","email","newEmail","submitAvatarForm","formId","handleAvatarInputChange","files","file","Caml_array.get","isInvalidImageFile","error","hasCurrentPassword","hasInvalidPassword","saveDisabled","confirmEmailChangeWindow","currentEmail","ConfirmWindow.make","confirmDeletionWindow","themeChip","theme","UserEdit","availableLocales","isSchoolAdmin","hasValidDeleteAccountToken","initialState_dailyDigest","initialState_themePreference","initialState","Zxcvbn.make","zxcvbn$1","suggestion","ArrayUtils.getOpt","Zxcvbn.suggestions","Zxcvbn.label","Zxcvbn.colorClass","School__InputGroupError.make","StringUtils.isPresent","AuthenticityToken.fromHead","evt","EmailUtils.isInvalid","Radio.make","availableLocale","Locale.humanize","UserEdit.make","creatorId","editorId","replies","editedAt","likedByUser","postNumber","totalLikes","users","User.id","sort","posts","ArrayUtils.copyAndSort","x","repliesToPost","post","$$Array.mem","addReply","newReplyId","addLike","removeLike","markAsSolution","replyId","reply","unmarkSolution","find","postId","highestPostNumber","Js_array.reduce","maxPostNumber","decodeReplyId","Json_decode.$$int","lockedAt","updateTitle","lock","lockedById","unlock","TopicsShow__UserShow","User.fullTitle","DateFns.format","navigateToPost","elementId","TopicsShow__PostReply","TopicsShow__Post.user","tip","TopicsShow__Post.id","TopicsShow__Post.body","tr","createPost","updatePost","dateTime","handlePostCreateResponse","currentUserId","handlePostCB","TopicsShow__Post.make","handlePostUpdateResponse","handleCloseCB","updatedPost","TopicsShow__Post.creatorId","TopicsShow__Post.postNumber","TopicsShow__Post.createdAt","TopicsShow__Post.totalLikes","TopicsShow__Post.likedByUser","TopicsShow__Post.replies","TopicsShow__Post.solution","cb","savePost","editReason","replyToPostId","$$Notification.error","TopicsShow__Topic.id","onBorderAnimationEnd","replyToUserInfo","TopicsShow__PostEditor","editingOpt","removeReplyToPostCB","editing","updateMarkdownCB","setEditReason","newPostNumber","TopicsShow__Post.highestPostNumber","DisablingCover.make","MarkdownEditor.make","reason","createPostLike","deletePostLike","iconClasses","liked","saving","handlePostLike","setSaving","removeLikeCB","handleCreateResponse","addLikeCB","Curry._2","TopicsShow__LikeManager","addPostLikeCB","removePostLikeCB","findUser","userId","User.findById","markPostAsSolution","unmarkPostAsSolution","archivePost","markPostAsSolutionCB","WindowUtils.confirm","unmarkPostAsSolutionCB","isFirstPost","archivePostCB","solutionIcon","userCanUnmarkSolution","solutionIcon$1","iconWithTip","optionsDropdown","isPostCreator","isTopicCreator","moderator","toggleShowPostEdit","editPostButton","showDelete","deletePostButton","_id","TopicsShow__Post.editorId","historyButton","contents","navigateToEditor","TopicsShow__PostShow","updatePostCB","addNewReplyCB","topicSolutionId","editor","TopicsShow__Post.repliesToPost","toggleShowReplies","showReplies","TopicsShow__PostEditor.make","TopicsShow__Post.editedAt","TopicsShow__LikeManager.make","Belt_Option.isNone","TopicsShow__UserShow.make","Belt_Option.isSome","TopicsShow__Topic.lockedAt","TopicsShow__PostReply.make","createTopicSubscription","deleteTopicSubscription","subscribed","handleSubscription","topicId","subscribeCB","unsubscribeCB","TopicsShow__SubscriptionManager","TopicsShow__Post.addLike","TopicsShow__Post.removeLike","TopicsShow__Post.unmarkSolution","TopicsShow__Topic.unlock","newReply","updatedParentPost","TopicsShow__Post.addReply","TopicsShow__Post.find","post$1","updatedPost$1","TopicsShow__Post.markAsSolution","TopicsShow__Topic.lock","firstPost","archiveTopic","TopicsShow__Community.path","updateTopic","variables_id","variables_title","TopicsShow__Topic.updateTitle","lockTopic","unlockTopic","communityLink","TopicsShow__Community.name","topicCategorySelector","selectedTopicCategory","topicCategoryList","TopicsShow__Root","TopicsShow__Topic.title","TopicsShow__Topic.topicCategoryId","TopicsShow__LinkedTarget.id","TopicsShow__LinkedTarget.title","isLocked","TopicsShow__SubscriptionManager.make","_lockedAt","tmp$3","tmp$4","TopicsShow__PostShow.make","TopicsShow__Post.sort","TopicsShow__Topic.decode","TopicsShow__Post.decode","TopicsShow__Community.decode","TopicsShow__LinkedTarget.decode","TopicsShow__Root.make","repliesCount","initialState_similar","similar","similarTopics","searchForSimilarTopics","trimmedTitle","e","$$Notification.warn","CommunitiesNewTopic__TopicSuggestion.makeFromJs","updateTitleAndSearch","timeoutId","createTopic","redirectToNewTopic","redirectPath","handleCreateTopic","OptionUtils.flatMap","suggestions$1","askedOn","CommunitiesNewTopic__TopicSuggestion.createdAt","CommunitiesNewTopic__TopicSuggestion.repliesCount","CommunitiesNewTopic__TopicSuggestion.id","CommunitiesNewTopic__TopicSuggestion.title","searchingIndicator","handleSelectTopicCategory","selectedCategoryId","CommunitiesNewTopic__Root","__x","DomUtils.goBack","newTitle","markdown","CommunitiesNewTopic__Root.make","LevelLockSvg","number","unlockAt","isUnlocked","DateFns.isPast","levels","first","level","unlockDateString","findByLevelNumber","levelNumber","next","previous","previousLevelNumber","LevelEmptySvg","certificateSerialNumber","progressionLimit","limit","progressionBehavior","CannotParseUnknownRole","unknownRole","role","sortIndex","targetGroupId","prerequisiteTargetIds","resubmittable","reviewed","milestone","hasAssignment","status","fileName","fileUrl","makeFile","makeFiles","data","findAudioFile","findFiles","ids","Js_array.includes","makeResult","kind","makeStatus","decodeFile","updateStatus","checklist","$$Array.mapi","makeNoAnswer","makeFailed","encodeKind","encodeResult","t$1","encodeStatus","encode","Json_encode.object_","encodeArray","Json_encode.array","UnexpectedStatusValue","hiddenAt","createdAtPretty","hiddenAtPretty","t1","t2","DateFns.differenceInSeconds","unknownValue","SubmissionChecklistItem.decodeFile","SubmissionChecklistItem.decode","decodeAnswerOption","question","answerOptions","answerId","answerOption","answerValue","lastQuestion","questions","maxIndex","ArrayUtils.last","q1","q2","nextQuestion","isLastQuestion","Caml_obj.equal","criteria","grades","g1","g2","ec1","ec","EvaluationCriterion.id","ec2","$$String.compare","EvaluationCriterion.name","grade","submissionId","evaluationCriterionId","coachId","reactionableId","reactionValue","decodeQuestion","topicTitle","comment","reactions","moderationReports","CoursesCurriculum__User.decode","CoursesCurriculum__Reaction.decode","CoursesCurriculum__ModerationReport.decode","submissions","pendingUserIds","navigation","discussion","allowAnonymous","comments","decodeNavigation","CoursesCurriculum__Submission.decode","CoursesCurriculum__Feedback.decode","CoursesCurriculum__QuizQuestion.decode","ContentBlock.decode","CoursesCurriculum__Community.decode","CoursesCurriculum__SubmissionComment.decode","CoursesCurriculum__Grade.decode","TargetChecklistItem.decode","computeCompletionType","targetDetails","evaluated","hasQuiz","hasChecklist","contentBlocks","quizQuestions","completionInstructions","CoursesCurriculum__Grade.submissionId","addSubmission","submission","clearPendingUserIds","createQuizSubmission","b","selectedAnswersIds","addSubmissionCB","submission$1","CoursesCurriculum__Submission.make","CoursesCurriculum__Target.id","answerOptionClasses","selectedAnswer","defaultClasses","handleSubmit","answer","answerIds","CoursesCurriculum__QuizQuestion.answerId","CoursesCurriculum__Quiz","preview","CoursesCurriculum__TargetDetails.quizQuestions","setSelectedQuestion","selectedQuestion","setSelectedAnswer","setSelectedAnswersIds","CoursesCurriculum__QuizQuestion.isLastQuestion","CoursesCurriculum__QuizQuestion.nextQuestion","CoursesCurriculum__QuizQuestion.index","CoursesCurriculum__QuizQuestion.question","CoursesCurriculum__QuizQuestion.answerValue","CoursesCurriculum__QuizQuestion.answerOptions","CoursesCurriculum__Learn","TargetContentView.make","ContentBlock.sort","CoursesCurriculum__TargetDetails.contentBlocks","linkToCommunity","linkToNewPost","topicCard","CoursesCurriculum__Community.topicId","topicLink","CoursesCurriculum__Community.topicTitle","handleEmpty","actionButtons","CoursesCurriculum__Community.id","communityName","CoursesCurriculum__Community.name","communityTitle","CoursesCurriculum__Discuss","CoursesCurriculum__Community.topics","isModerator","isParticipant","DateFns.parseISO","levelId","endsAt","completedAt","targetGroups","hasPassed","hasBeenEvaluated","pending","makePending","targets","lockTargets","allTargetsAttempted","targetCache","targetIds","Belt_Array.every","ct","compute","student","targetsRead","CoursesCurriculum__Course.ended","CoursesCurriculum__Student.endsAt","targetGroup","tg","CoursesCurriculum__TargetGroup.id","CoursesCurriculum__Target.targetGroupId","CoursesCurriculum__Level.number","CoursesCurriculum__Level.id","CoursesCurriculum__TargetGroup.levelId","CoursesCurriculum__Student.levelId","CoursesCurriculum__LatestSubmission.targetId","submissionStatus","CoursesCurriculum__LatestSubmission.hasPassed","CoursesCurriculum__LatestSubmission.hasBeenEvaluated","CoursesCurriculum__Target.reviewed","CoursesCurriculum__Target.milestone","CoursesCurriculum__Target.hasAssignment","CoursesCurriculum__Target.prerequisiteTargetIds","submissionsPendingReviewCount","CoursesCurriculum__Course.progressionLimit","isPending","isAccessEnded","lockReasonToString","lockReason","statusToString","statusClassesSufix","canSubmit","readable","NoPeerSubmissionsSvg","kindIconClasses","showFiles","SubmissionChecklistItem.fileUrl","SubmissionChecklistItem.fileName","showlink","statusIcon","updateChecklistCB","showChoices","choices","choice","statusButtonSelectedClasses","currentStatus","statusButtonOnClick","bool","callback","_event","SubmissionChecklistItem.makeNoAnswer","SubmissionChecklistItem.makeFailed","statusButton","SubmissionChecklistItemShow","checklistItem","showTitleOpt","showTitle","SubmissionChecklistItem.status","SubmissionChecklistItem.result","SubmissionChecklistItem.title","SubmissionChecklistShow","forDiscussionOpt","forDiscussion","SubmissionChecklistItemShow.make","treeHeight","create","hl","hr","singleton","updateValue","newValue","bal","ll","lr","rl","rr","lengthNode","sizeL","sizeR","fillArray","_n","_i","arr","rnext","get","set","newK","newD","Belt_internalAVLtree.singleton","Belt_internalAVLtree.updateValue","Belt_internalAVLtree.bal","Belt_internalAVLtree.toArray","Belt_internalMapString.get","CoursesCurriculum__ReactionButton","reactionDetails","addReactionCB","removeReactionCB","setIsHovered","currentUserReacted","CoursesCurriculum__CurrentUser.id","onMouseEnter","onMouseLeave","reaction","createReaction","removeReaction","groupByReaction","Belt_Array.reduce","accumulator","currentItem","CoursesCurriculum__Reaction.reactionValue","CoursesCurriculum__Reaction.userName","CoursesCurriculum__Reaction.userId","Belt_MapString.get","Belt_MapString.set","reactionDetails$1","newCount","CoursesCurriculum__Reactions","reactionableType","setReactions","reactions$1","handleCreateReaction","existingReaction","CoursesCurriculum__Reaction.id","reactionId","acc","Js_promise2.then","handleAddNewEmoji","aggregatedReactions","Belt_Array.map","Belt_MapString.toArray","CoursesCurriculum__ReactionButton.make","EmojiPicker.make","reportableId","moderationReport","createModerationReport","reportableType","setModerationReports","setShowReport","setReportReason","moderationReport$1","updateReportReason","updateShowReport","showReport","CoursesCurriculum__ModerationReportButton","reportReason","reported","report","CoursesCurriculum__ModerationReport.userId","Icon.make","hideSubmissionComment","archiveSubmissionComment","hideComment","submissionCommentId","hide","setCommentHidden","archiveComment","setShowConfirmDelete","archiveCommentCB","updateShowConfirmDelete","showConfirmDelete","CoursesCurriculum__SubmissionCommentShow","CoursesCurriculum__SubmissionComment.hiddenAt","commentHidden","CoursesCurriculum__CurrentUser.isModerator","CoursesCurriculum__User.name","CoursesCurriculum__SubmissionComment.user","CoursesCurriculum__SubmissionComment.id","commentDisplay","CoursesCurriculum__User.avatar","CoursesCurriculum__SubmissionComment.createdAtPretty","CoursesCurriculum__SubmissionComment.userId","CoursesCurriculum__ModerationReportButton.make","CoursesCurriculum__SubmissionComment.moderationReports","CoursesCurriculum__SubmissionComment.comment","CoursesCurriculum__Reactions.make","CoursesCurriculum__SubmissionComment.reactions","partial_arg$2","make$2","value$14","createSubmissionComment","toggleComments","setShowComments","prevState","setSubmissionComments","submissionComments","commentId","newComments","CoursesCurriculum__SubmissionComments","commentsInitiallyVisible","showComments","setNewComment","newComment","commentsCount","handleInputChange","handleCreateSubmissionComment","createdComment","createdComment$1","existingComments","Spread.make","CoursesCurriculum__CurrentUser.avatar","CoursesCurriculum__SubmissionCommentShow.make","userNames","teamName","anonymous","pinned","firstUser","pinSubmission","hideSubmission","pin","CoursesCurriculum__DiscussionSubmission.pinned","CoursesCurriculum__DiscussionSubmission.id","CoursesCurriculum__DiscussionSubmission.targetId","setSubmissionHidden","CoursesCurriculum__DiscussSubmission","callBack","CoursesCurriculum__DiscussionSubmission.hiddenAt","submissionHidden","teamStrength","CoursesCurriculum__DiscussionSubmission.users","CoursesCurriculum__DiscussionSubmission.anonymous","CoursesCurriculum__DiscussionSubmission.teamName","CoursesCurriculum__DiscussionSubmission.userNames","CoursesCurriculum__DiscussionSubmission.firstUser","CoursesCurriculum__DiscussionSubmission.createdAtPretty","CoursesCurriculum__DiscussionSubmission.moderationReports","SubmissionChecklistShow.make","CoursesCurriculum__DiscussionSubmission.checklist","CoursesCurriculum__DiscussionSubmission.reactions","CoursesCurriculum__SubmissionComments.make","CoursesCurriculum__DiscussionSubmission.comments","optional","fromTargetChecklistItem","targetChecklist","TargetChecklistItem.title","TargetChecklistItem.optional","TargetChecklistItem.kind","updateResultAtIndex","filename","fileId","fileIds","a","kindAsString","resultAsJson","validString","maxLength","length","validShortText","validFiles","Caml_obj.notequal","validMultiChoice","validResponse","allowBlank","UrlUtils.isValid","validChecklist","validResponses","responses","SubmissionChecklistItem.makeFile","item","bits","curval","newval","newval30","Caml_array.set","$$int","bound","$$default","$$int$1","FormNotFound","UnexpectedResponse","defaultTitle","handleResponseJSON","attachFileCB","apiErrorTitle","uploadFile","Fetch.$$Response","Fetch.RequestInit","submitForm","addFileAttachmentCB","attachFile","attachingCB","$$Notification.notice","errors","ListUtils.isEmpty","CoursesCurriculum__FileForm","Random.$$int","List.map","global","factory","exports","BlobBuilder","URL","origBlob","createObjectURL","revokeObjectURL","strTag","blobSupported","blobSupportsArrayBufferView","arrayBufferSupported","blobBuilderSupported","mapArrayBufferViews","ary","chunk","buf","copy","BlobBuilderConstructor","options","bb","part","BlobConstructor","stringEncode","pos","Arr","at","tlen","extra","stringDecode","end","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","str","textEncode","textDecode","FakeBlobBuilder","isDataView","bufferClone","array","array2base64","input","byteToCharMap","output","byte1","haveByte2","byte2","haveByte3","byte3","outByte1","outByte2","outByte3","outByte4","viewClasses","isArrayBufferView","concatTypedarrays","chunks","offset","Blob","opts","type","slice","File","FileReader","delegate","_read","fr","blob","_send","fixFileAndXHR","isIE","stream","position","controller","buffer","uint8array","bytesRead","promisify","resolve","reject","this","h","module","audioRecorder","authenticity_token","useState","mediaStreamRef","useRef","useEffect","err","startRecording","mediaRecorder","audioURL","track","_a","saveAs","CoursesCurriculum__AudioRecorder","CoursesCurriculum__AudioNavigator.audioRecorder","_e","_url","React.Fragment","computeId","CoursesCurriculum__ChecklistItem.kindAsString","placeholder","CoursesCurriculum__ChecklistItem.title","CoursesCurriculum__ChecklistItem.optional","CoursesCurriculum__ChecklistItem.result","showError","active","updateResultCB","UrlUtils.isInvalid","showShortText","CoursesCurriculum__ChecklistItem.validShortText","longTextWarning","currentLength","showWarning","colors","showLongText","checkboxOnChange","allowMultiple","radioOnChange","showMultiChoice","Checkbox.make","CoursesCurriculum__ChecklistItem.makeFile","attachRecordingFile","removeFile","CoursesCurriculum__ChecklistItem.fileId","CoursesCurriculum__ChecklistItem.filename","CoursesCurriculum__FileForm.make","showAudioRecorder","CoursesCurriculum__AudioRecorder.make","CoursesCurriculum__SubmissionItem","buttonContents","formState","CoursesCurriculum__ChecklistItem.fromTargetChecklistItem","createSubmission","isButtonDisabled","CoursesCurriculum__ChecklistItem.validChecklist","submit","CoursesCurriculum__ChecklistItem.fileIds","CoursesCurriculum__ChecklistItem.encodeArray","_error","CoursesCurriculum__ChecklistItem.makeFiles","submissionChecklist","completionType","CoursesCurriculum__TargetDetails.computeCompletionType","updateResult","CoursesCurriculum__ChecklistItem.updateResultAtIndex","buttonClasses","setAttaching","statusText","tooltipText","CoursesCurriculum__SubmissionBuilder","CoursesCurriculum__SubmissionItem.make","CoursesCurriculum__TargetDetails.discussion","CoursesCurriculum__TargetDetails.allowAnonymous","AssignmentDiscussionIconSvg","CoursesCurriculum__CompletionInstructions","CoursesCurriculum__TargetDetails.completionInstructions","criterionName","updateGrade","newGrade","criterionId","gradeDescription","gradeLabels","grading","CoursesCurriculum__Grading.grade","CoursesCurriculum__Grading.criterionName","GradeLabel.labelFor","gradePillClasses","gradeReceived","pillGrade","resultModifier","Caml_obj.greaterthan","selectableModifier","gradeBarHeader","GradeLabel.maxGrade","handleClick","gradeSelectCB","CoursesCurriculum__Grading.updateGrade","gradeBarPill","gradeLabel","myGrade","GradeLabel.grade","GradeLabel.label","gradeBarPanel","CoursesCurriculum__GradeBar","EvaluationCriterion.gradesAndLabels","undoSubmission","setStatus","undoSubmissionCB","CoursesCurriculum__UndoButton","gradeBar","evaluationCriteria","CoursesCurriculum__Grade.evaluationCriterionId","gradeNumber","CoursesCurriculum__Grade.grade","CoursesCurriculum__Grading.make","CoursesCurriculum__GradeBar.make","statusBar","textColor","bgColor","submissionStatusIcon","passed","gradingSection","Curry.__1","CoursesCurriculum__Grade.sort","handleAddAnotherSubmission","setShowSubmissionForm","showSubmissionForm","targetStatus","coaches","curriedGradeBar","submissions$1","CoursesCurriculum__TargetDetails.submissions","totalSubmissions","CoursesCurriculum__Submission.sort","CoursesCurriculum__TargetDetails.grades","CoursesCurriculum__Submission.id","CoursesCurriculum__Submission.status","CoursesCurriculum__TargetStatus.status","CoursesCurriculum__UndoButton.make","CoursesCurriculum__TargetDetails.comments","CoursesCurriculum__SubmissionComment.submissionId","CoursesCurriculum__TargetDetails.reactions","CoursesCurriculum__Reaction.reactionableId","DomUtils.hasUrlParam","DomUtils.getUrlParam","CoursesCurriculum__Submission.hiddenAt","CoursesCurriculum__Submission.hiddenAtPretty","CoursesCurriculum__Submission.createdAtPretty","CoursesCurriculum__Submission.checklist","coach","CoursesCurriculum__Feedback.coachId","CoursesCurriculum__Coach.id","up","CoursesCurriculum__User.id","CoursesCurriculum__Coach.userId","CoursesCurriculum__User.title","coachTitle","CoursesCurriculum__Feedback.id","CoursesCurriculum__Feedback.feedback","CoursesCurriculum__Feedback.submissionId","CoursesCurriculum__TargetDetails.feedback","CoursesCurriculum__SubmissionsAndFeedback","CoursesCurriculum__TargetStatus.canSubmit","CoursesCurriculum__Target.resubmittable","CoursesCurriculum__SubmissionBuilder.make","UnexpectedSubmissionStatus","noPeerSubmissionIcon","assignmentDiscussionIcon","PagedSubmission","Pagination.Make","initialState_loading","LoadingV2.empty","LoadingV2.setReloading","CoursesCurriculum__TargetDetails.clearPendingUserIds","newSubmissions","updatedSubmissions","LoadingV2.setNotLoading","closeOverlay","CoursesCurriculum__Course.id","hiddenById","discussionSubmissions","getDiscussionSubmissions","CoursesCurriculum__DiscussionSubmission.decode","reloadSubmissions","handleUrlParam","prefix","paramValue","loadTargetDetails","CoursesCurriculum__TargetDetails.decode","CoursesCurriculum__CurrentUser.isParticipant","hasCommentParam","hasSubmissionParam","submissionsLoadedData","totalSubmissionsCount","loadedSubmissionsCount","submissionsList","CoursesCurriculum__DiscussSubmission.make","completionTypeToString","exit","tabToString","tab","selectableTabs","CoursesCurriculum__TargetDetails.communities","tabClasses","selection","tabButton","tabOptions","newTargetDetails","CoursesCurriculum__TargetDetails.addSubmission","CoursesCurriculum__LatestSubmission.make","addVerifiedSubmission","renderTargetStatus","CoursesCurriculum__TargetStatus.statusClassesSufix","CoursesCurriculum__TargetStatus.statusToString","CoursesCurriculum__TargetStatus.isPending","overlayHeaderTitleCardClasses","renderLocked","overlayStatus","CoursesCurriculum__Target.title","prerequisitesIncomplete","statusOfTargets","prerequisiteTargets","CoursesCurriculum__TargetStatus.lockReasonToString","CoursesCurriculum__TargetStatus.targetId","Link.make","handleLocked","reason$1","addPageRead","markReadCB","learnSection","targetRead","suffixLinkInfo","linkToTab","CoursesCurriculum__Learn.make","CoursesCurriculum__TargetStatus.readable","discussSection","CoursesCurriculum__Discuss.make","completeSectionClasses","completeSection","addVerifiedSubmissionCB","exit$1","CoursesCurriculum__CompletionInstructions.make","CoursesCurriculum__TargetDetails.checklist","CoursesCurriculum__Quiz.make","CoursesCurriculum__SubmissionsAndFeedback.make","times","times$1","renderPendingStudents","studentId","handlePendingStudents","CoursesCurriculum__TargetDetails.pendingUserIds","performQuickNavigation","navigationLink","arrow","scrollOverlayToTop","quickNavigationLinks","CoursesCurriculum__TargetDetails.navigation","previousUrl","nextUrl","updatePendingUserIdsWhenAddingSubmission","CoursesCurriculum__Target.role","CoursesCurriculum__Overlay","ScrollLock.activate","ScrollLock.deactivate","targetDetails$1","levelZeroSelectorClasses","isSelected","levelName","LevelLabel.format","CoursesCurriculum__Level.name","selectableLevels","orderedLevels","setSelectedLevelId","CoursesCurriculum__Level.isUnlocked","untabbedLevelSelector","selectedLevel","tabbedLevelSelector","showLevelZero","setShowLevelZero","levelZero","hideCaret","numberedLevelSelector","CoursesCurriculum__LevelSelector","CoursesCurriculum__Level.sort","AccessEndedSvg","CourseEndedSvg","PreviewModeSvg","CourseCompleteSvg","courseEndedImage","courseCompleteImage","accessEndedImage","previewModeImage","showNotice","notice","classesOpt","classes","CoursesCurriculum__Notice.icon","courseCompleteMessage","courseEndedMessage","showPreviewMessage","CoursesCurriculum__Notice.previewModeImage","accessEndedMessage","CoursesCurriculum__NoticeManager","levelLockedImage","levelEmptyImage","targetStatusClasses","statusClasses","rendertarget","CoursesCurriculum__TargetStatus.isAccessEnded","renderTargetGroup","targets$1","CoursesCurriculum__TargetGroup.name","CoursesCurriculum__TargetGroup.description","CoursesCurriculum__Target.sortIndex","latestSubmission","withoutSubmissionForThisTarget","addMarkRead","markedReadTargetId","handleLockedLevel","CoursesCurriculum__Level.unlockAt","dateString","csn","CoursesCurriculum__Course.certificateSerialNumber","computeNotice","CoursesCurriculum__Student.accessEnded","CoursesCurriculum__Student.completedAt","CoursesCurriculum__Level.previous","CoursesCurriculum__Level.next","CoursesCurriculum","accessLockedLevels","selectedTarget","StringUtils.paramToId","studentLevelId","targetLevelId","computeTargetStatus","CoursesCurriculum__TargetStatus.compute","initialRender","React.useRef","CoursesCurriculum__Level.first","currentLevelId","currentLevel","newStatusOfTargets","targetGroupsInLevel","CoursesCurriculum__Overlay.make","CoursesCurriculum__NoticeManager.make","CoursesCurriculum__LevelSelector.make","selectedLevelId","CoursesCurriculum__Level.isLocked","CoursesCurriculum__Level.unlockDateString","CoursesCurriculum__TargetGroup.sort","CoursesCurriculum__CurrentUser.decode","CoursesCurriculum__Course.decode","CoursesCurriculum__Level.decode","CoursesCurriculum__TargetGroup.decode","CoursesCurriculum__Target.decode","CoursesCurriculum__LatestSubmission.decode","CoursesCurriculum__Student.decode","CoursesCurriculum__Coach.decode","EvaluationCriterion.decode","Psj.matchPaths","CoursesCurriculum.make","maxGrade","cohortName","totalPageReads","totalTargets","assignmentsPendingReview","assignmentsCompleted","totalAssignments","quizzesAttempted","averageGrades","makeAverageGrade","milestonesCompletionStatus","evaluationCriterionForGrade","CoursesReport__EvaluationCriterion.id","gradeAsPercentage","averageGrade","evaluationCriterion","computeAverageQuizScore","quizScores","sumOfPercentageScores","quizScore","fractionArray","$$String.split_on_char","numerator","Caml_format.float_of_string","denominator","averageQuizScore","CoursesStudents__PersonalCoaches","listedCoaches","Js_array.slice","otherCoaches","names","UserProxy.userId","UserProxy.name","Js_array.sliceFrom","count","UserProxy.avatarUrl","completed","milestoneNumber","userInfo","CoursesStudents__PersonalCoaches.avatar","coachInfo","CoursesReport__Coach.avatarUrl","CoursesReport__Coach.name","CoursesReport__Coach.title","doughnutChart","percentage","assignmentsCompletionStatus","overview","CoursesReport__StudentOverview.assignmentsCompleted","CoursesReport__StudentOverview.totalAssignments","CoursesReport__StudentOverview.assignmentsPendingReview","incompleteAssignments","assignmentsCompletionPercent","pagesReadStatus","CoursesReport__StudentOverview.totalPageReads","CoursesReport__StudentOverview.totalTargets","pagesReadPercent","pendingTargets","quizPerformanceChart","milestones","CoursesReport__StudentOverview.milestonesCompletionStatus","totalMilestones","completedMilestones","milestonesCompletionPercentage","averageGradeCharts","CoursesReport__StudentOverview.evaluationCriterionForGrade","CoursesReport__StudentOverview.gradeAsPercentage","CoursesReport__EvaluationCriterion.name","CoursesReport__Overview","overviewData","CoursesReport__StudentOverview.cohortName","CoursesReport__StudentOverview.averageQuizScore","CoursesReport__StudentOverview.quizzesAttempted","CoursesReport__StudentOverview.averageGrades","CoursesReport__StudentOverview.evaluationCriteria","HelpIcon.make","CoursesReport__MilestoneCompletionStatus.milestoneNumber","CoursesReport__MilestoneCompletionStatus.id","CoursesReport__MilestoneCompletionStatus.title","CoursesReport__MilestoneCompletionStatus.completed","SkeletonLoading.heading","SkeletonLoading.paragraph","SkeletonLoading.userDetails","targetRole","_passedAt","_time","makeFilter","needsReloading","selectedStatus","sortBy_criterion","sortBy","statusString","studentIds","evaluatedAt","passedAt","studentSubmissions","targetStatus$1","updateSelectedStatusCB","SubmissionsSorter","submissionsSorter","updateSortDirectionCB","updateStudentSubmissions","updateSubmissionsCB","hasNextPage","CoursesReport__Submission.makeFromJs","CoursesReport__Submissions.makeFilter","submissionsData","CoursesReport__Submissions.make","submissionsData$1","getStudentSubmissions","status$1","showSubmissionStatus","CoursesReport__Submission.status","submissionCardClasses","showSubmission","teamStudentIds","CoursesReport__Submission.targetRole","teamMismatch","submissionHref","CoursesReport__Submission.id","CoursesReport__Submission.targetId","CoursesReport__Submission.milestoneNumber","CoursesReport__Submission.title","CoursesReport__Submission.createdAtPretty","showSubmissions","CoursesReport__SubmissionsList","CoursesReport__Submissions.needsReloading","cohort","studentDetails","getOverviewData","CoursesReport__EvaluationCriterion.make","gradeData","CoursesReport__StudentOverview.makeAverageGrade","CoursesReport__MilestoneCompletionStatus.make","CoursesReport__StudentOverview.make","CoursesReport__Root","CoursesReport__Overview.make","CoursesReport__SubmissionsList.make","CoursesReport__Coach.decode","CoursesReport__Root.make","GraduateIconSvg","graduateIcon","printCertificate","setViewMode","heading","DOMPurify.sanitizedHTMLOpt","IssuedCertificate.profileName","DOMPurify.makeOptions","IssuedCertificate.serialNumber","issuedToName","issuedTo","IssuedCertificate.issuedTo","profileName","VerifyCertificate__Root","verifyImageUrl","IssuedCertificate__Root.make","IssuedCertificate.issuedAt","IssuedCertificate.courseName","IssuedCertificate.decode","VerifyCertificate__Root.make","connectLink","courseIds","fullTitle","affiliation","CoachesIndex__Course.name","makeCourse","makeSearch","computeInitialState","studentInCourseIds","filterCourseIds","CoachesIndex__Course.id","Belt_SetString.fromArray","Belt_SetString.add","selectable$1","Belt_SetString.remove","unselectedCourses","Belt_SetString.has","trimmedInput","overlay","CoachesIndex__Coach.avatarUrl","CoachesIndex__Coach.connectLink","CoachesIndex__Coach.name","CoachesIndex__Coach.fullTitle","card","_about","CoachesIndex__Coach.about","CoachesIndex__Coach.id","applyFilter","filterSearch","coaches$1","Belt_SetString.isEmpty","Belt_SetString.intersect","CoachesIndex__Coach.courseIds","StringUtils.includes","selectedCourses","CoachesIndex__Root","subheading","_otherPaths","selectedCoachOverlay","filteredCoaches","coachesToShow","filterInput","CoachesIndex__Coach.decode","CoachesIndex__Course.decode","CoachesIndex__Root.make","SetNewPasswordIconSvg","resetPasswordIcon","handleUpdatePasswordCB","validPassword","updatePassword","payload","Api.create","isDisabled","submitButtonText","renderUpdatePassword","inputClasses","labelClasses","UserSessionResetPassword","authenticityToken","DomUtils.parseJSONAttribute","UserSessionResetPassword.make","nameOrEmail","includeInactive","assignedCoachId","personalCoachId","reviewingCoachId","defaultDirection","makeFromQueryParams","toQueryString","PendingEmptySvg","coachName","coachAvatarUrl","evaluatorName","archivedAt","SubmissionChecklistItem.makeFiles","CoursesReview__Feedback.make","CoursesReview__Grade.make","updateFeedback","reviewer","reviewerName","reviewerAssignedAt","failed","pendingReview","feedbackSent","timeDistance","makeReviewerInfo","ReviewedEmptySvg","reviewedEmptyImage","pendingEmptyImage","CoursesReview__IndexSubmission.pendingReview","CoursesReview__IndexSubmission.timeDistance","CoursesReview__IndexSubmission.failed","feedbackSentNotice","CoursesReview__IndexSubmission.teamName","CoursesReview__IndexSubmission.reviewer","CoursesReview__IndexSubmission.id","CoursesReview__IndexSubmission.userNames","CoursesReview__IndexSubmission.milestoneNumber","CoursesReview__IndexSubmission.title","CoursesReview__IndexSubmission.createdAt","CoursesReview__IndexSubmission.createdAtPretty","CoursesReview__IndexSubmission.reviewerName","CoursesReview__IndexSubmission.reviewerAssignedAt","DateFns.formatDistanceToNow","CoursesReview__IndexSubmission.feedbackSent","CoursesReview__SubmissionCard","selectedTab","imageSrc","coachFilterTranslationKey","coachFilter","loader","CoursesReview__Filter.toQueryString","UserProxy.Fragment","targetInfo","a$7","a$8","a$9","a$10","coachIds","reviewedTargetsInfo","getSubmissions","CoursesReview__Filter.personalCoachId","CoursesReview__Filter.assignedCoachId","CoursesReview__Filter.reviewingCoachId","CoursesReview__Filter.nameOrEmail","CoursesReview__Filter.targetId","CoursesReview__Filter.tab","CoursesReview__Filter.defaultDirection","CoursesReview__Filter.sortCriterion","CoursesReview__Filter.includeInactive","CoursesReview__TargetInfo.makeFromJs","UserProxy.makeFromJs","CoursesReview__IndexSubmission.makeFromJS","getCoaches","getTargets","CoursesReview__TargetInfo.title","UserProxy.id","coach$1","coach$2","assignedToCoach","currentCoachId","personalCoach","reviewedBy","makeLoader","makecoachLoader","target$1","unSelectedStatus","nameOrEmailFilter","firstWord","unselectedTargets","CoursesReview__TargetInfo.id","unselectedCoaches","getCoachId","getSelectable","selectedCoach","unselectedAssignedCoaches","unselectedPersonalCoaches","unselectedReviewers","selectedCoaches","selectedAssiginedCoach","selectedPersonalCoach","selectedReviewer","otherTab","defaultOptions","CoursesReview__SubmissionCard.make","loadFilters","$$String.lowercase_ascii","StringUtils.test","shortCutClasses","pageTitle","currentCourse","AppRouter__Course.id","AppRouter__Course.name","CoursesReview__Root","CoursesReview__Filter.makeFromQueryParams","ReactHelmet.Helmet","CoursesReview__Filter.sortDirection","make$3","assignedAt","reviewerInfo","setReviewer","details","decodeStatus","object","startedAt","queuedAt","reporter","targetUrl","emptyTemplate","empty","replace","resultIndex","resultItems","optionalFeedback","updateAdditionalFeedback","trim","title_0","Belt_List.concat","rc","CoursesReview__ReviewChecklistResult.makeFromJs","CoursesReview__ReviewChecklistResult.empty","CoursesReview__ReviewChecklistResult.emptyTemplate","updateChecklist","itemIndex","appendEmptyChecklistItem","moveResultItemUp","ArrayUtils.swapUp","moveResultItemDown","ArrayUtils.swapDown","deleteResultItem","_el","CoursesReview__ReviewChecklistResult.trim","CoursesReview__ReviewChecklistResult.encode","allSubmissions","targetTitle","students","reviewChecklist","targetEvaluationCriteriaIds","submissionReports","submissionReportPollTime","reviewable","decodeJs","CoursesReview__OverlaySubmission.makeFromJs","s1","s2","CoursesReview__SubmissionMeta.createdAt","CoursesReview__SubmissionMeta.makeFromJs","CoursesReview__Student.makeFromJs","EvaluationCriterion.make","GradeLabel.makeFromJs","CoursesReview__ReviewChecklistItem.makeFromJs","CoursesReview__SubmissionReport.makeFromJS","CoursesReview__Reviewer.makeFromJs","updateMetaSubmission","CoursesReview__SubmissionMeta.make","CoursesReview__OverlaySubmission.id","CoursesReview__OverlaySubmission.createdAt","CoursesReview__OverlaySubmission.passedAt","CoursesReview__OverlaySubmission.evaluatedAt","CoursesReview__OverlaySubmission.feedback","CoursesReview__OverlaySubmission.archivedAt","updateOverlaySubmission","CoursesReview__SubmissionMeta.id","updateReviewChecklist","updateReviewer","CoursesReview__Reviewer.setReviewer","updateSubmissionReport","reports","selectChecklist","setSelecton","updateEmptyChecklistResult","reviewChecklistItem","setChecklist","CoursesReview__ReviewChecklistItem.updateChecklist","CoursesReview__ReviewChecklistResult.updateAdditionalFeedback","CoursesReview__ReviewChecklistItem.results","CoursesReview__ReviewChecklistItem.replace","unSelectChecklist","generateFeedback","updateFeedbackCB","newFeedback","resultIndexList","selectionItem","resultItem","CoursesReview__ReviewChecklistResult.feedback","checklistItemCheckedClasses","feedbackGeneratable","submissionDetails","overlaySubmission","CoursesReview__SubmissionDetails.reviewer","checklistItemChecked","updateChecklistResultFeedback","CoursesReview__ReviewChecklistResult.updateFeedback","generateFeedbackButton","CoursesReview__ChecklistShow","showEditorCB","cancelCB","DateTime.randomId","hasFeedbackTemplate","CoursesReview__ReviewChecklistItem.title","reviewChecklistResult","CoursesReview__ReviewChecklistResult.title","isSelected$1","hasFeedback","updateReviewChecklistCB","trimmedChecklist","CoursesReview__ReviewChecklistItem.trim","CoursesReview__ReviewChecklistItem.encodeArray","updateChecklistItemTitle","CoursesReview__ReviewChecklistItem.updateTitle","updateChecklistResultTitle","CoursesReview__ReviewChecklistResult.updateTitle","addEmptyResultItem","CoursesReview__ReviewChecklistItem.appendEmptyChecklistItem","removeChecklistResult","CoursesReview__ReviewChecklistItem.deleteResultItem","initialStateForReviewChecklist","CoursesReview__ReviewChecklistItem.emptyTemplate","invalidChecklist","valid","CoursesReview__ReviewChecklistItem.empty","controlIcon","hiddenOpt","handler","hidden","CoursesReview__ChecklistEditor","closeEditModeCB","CoursesReview__ReviewChecklistItem.moveResultItemUp","CoursesReview__ReviewChecklistItem.moveResultItemDown","CoursesReview__Checklist","CoursesReview__ChecklistShow.make","CoursesReview__ChecklistEditor.make","assignReviewer","reassignReviewer","updateReviewerCB","CoursesReview__ReviewerManager","CoursesReview__Reviewer.user","CoursesReview__Reviewer.assignedAt","cardClasses","CoursesReview__SubmissionMeta.archivedAt","CoursesReview__SubmissionMeta.passedAt","CoursesReview__SubmissionMeta.evaluatedAt","linkUrl","submissionInfoCardContent","submissionNumber","CoursesReview__SubmissionMeta.feedbackSent","CoursesReview__SubmissionInfoCard","_archivedAt","reportStatusIconClasses","CoursesReview__SubmissionReport.status","reportStatusString","CoursesReview__SubmissionReport.heading","reportConclusionTimeString","CoursesReview__SubmissionReport.startedAt","CoursesReview__SubmissionReport.queuedAt","CoursesReview__SubmissionReport.completedAt","DateFns.formatDistance","CoursesReview__SubmissionReportShow","CoursesReview__SubmissionReport.targetUrl","toggleTestReportIcon","CoursesReview__SubmissionReport.report","CoursesReview__SubmissionReport.reporter","createGrading","serializeInputObjectGradeInput","note","undoGrading","createFeedback","makeVariables$3","Raw$4","query$4","parse$4","serialize$4","unassignReviewer","serializeVariables$4","include$4","Raw$5","query$5","parse$5","serialize$5","serializeVariables$5","include$5","booleanButtonClasses","updateIsAcceptable","isAcceptable","getNextSubmission","makeFeedback","AppRouter__User.name","AppRouter__User.avatarUrl","AppRouter__User.title","updateSubmissionCB","CoursesReview__OverlaySubmission.updateFeedback","DomUtils.reload","trimToOption","trimArraytoOption","navigationDisabled","gradeSubmissionQuery","CoursesReview__Grade.evaluationCriterionId","CoursesReview__Grade.value","SubmissionChecklistItem.encodeArray","CoursesReview__OverlaySubmission.update","warning$1","CoursesReview__SubmissionDetails.warning","reviewNextButton","nextSubmission","buttonStyle","CoursesReview__SubmissionDetails.teamName","studentCount","CoursesReview__SubmissionDetails.students","CoursesReview__SubmissionDetails.courseId","CoursesStudents__PersonalCoaches.make","CoursesReview__SubmissionDetails.coaches","CoursesReview__SubmissionDetails.targetId","CoursesReview__SubmissionDetails.targetTitle","commaRequired","CoursesReview__Student.id","CoursesReview__Student.name","updateGrading","newGrades","handleGradePillClick","gradePillHeader","evaluationCriteriaName","selectedGrade","currentGrade","Caml_obj.lessequal","showGradePill","gradeValue","gradeLabelGrade","CoursesReview__SubmissionDetails.reviewable","showGrades","CoursesReview__Grade.sort","gradeEcId","renderGradePills","badgeColorClasses","statusColor","gradeBadgeClasses","badge","submissionReviewStatus","_date","CoursesReview__OverlaySubmission.evaluatorName","gradeSubmission","reviewButtonDisabled","computeStatus","selectedGrades","currentGradingCriteria","CoursesReview__OverlaySubmission.grades","noteForm","teamSubmission","_someGrades","noteAbout","help","textareaId","feedbackGenerator","showAddFeedbackEditorOpt","showAddFeedbackEditor","showFeedback","CoursesReview__Feedback.coachAvatarUrl","CoursesReview__Feedback.coachName","CoursesReview__Feedback.coachTitle","CoursesReview__Feedback.createdAtPretty","CoursesReview__Feedback.value","CoursesReview__Feedback.createdAt","studentOrTeamName","loadSubmissionReport","updateSubmissionReportCB","updatedReports","reloadSubmissionReport","shouldReload","CoursesReview__Editor","CoursesReview__OverlaySubmission.checklist","AppRouter__User.id","newFeedbackRef","handleBeforeUnload","findEditor","intervalId","CoursesReview__ReviewerManager.make","CoursesReview__Checklist.make","CoursesReview__SubmissionDetails.allSubmissions","CoursesReview__SubmissionInfoCard.make","CoursesReview__SubmissionReportShow.make","value$15","value$16","value$17","value$18","value$19","value$20","reviewerDetails","value$21","value$22","value$23","value$24","value$25","value$26","value$27","value$28","value$29","value$30","getSubmissionDetails","CoursesReview__SubmissionDetails.decodeJs","updateSubmission","newSubmissionDetails","CoursesReview__SubmissionDetails.updateOverlaySubmission","currentSubmissionIndex","Js_array.findIndex","CoursesReview__SubmissionDetails.updateReviewChecklist","CoursesReview__SubmissionDetails.updateReviewer","CoursesReview__SubmissionDetails.updateSubmissionReport","CoursesReview__SubmissionsRoot","CoursesReview__Editor.make","CoursesReview__SubmissionDetails.submission","CoursesReview__SubmissionDetails.evaluationCriteria","CoursesReview__SubmissionDetails.reviewChecklist","CoursesReview__SubmissionDetails.targetEvaluationCriteriaIds","CoursesReview__SubmissionDetails.submissionReports","CoursesReview__SubmissionDetails.submissionReportPollTime","currentStandingName","lastSeenAt","taggings","verifyArgsAndParse","_UserDetailsFragment","verifyName","Fragment","makeFromFragment","noteOn","notes","User.makeFromJs","archiveCoachNote","removeCoachNote","removeNoteCB","setArchiving","deleteIcon","archiving","CoursesStudents__CoachNote.id","CoursesStudents__CoachNoteShow","CoursesStudents__CoachNote.author","user$1","user$2","user$3","showDeleteIcon","CoursesStudents__CoachNote.noteOn","CoursesStudents__CoachNote.note","coachNote","createCoachNote","saveNote","addNoteCB","newNote","CoursesStudents__CoachNote.makeFromJs","updateCoachNoteCB","saveNoteButtonText","CoursesStudents__CoachNotes","coachNotes","hasArchivedNotes","canModifyCoachNotes","CoursesStudents__CoachNoteShow.make","CoursesStudents__CoachNote.sort","droppedOutAt","personalCoaches","team","componentName","CoursesStudents__EvaluationCriterion.id","addNewNote","removeNote","noteId","makeTeam","CoursesStudents__Submission.makeFromJs","_datetime","CoursesStudents__Submission.evaluatedAt","CoursesStudents__Submission.failed","CoursesStudents__Submission.timeDistance","CoursesStudents__Submission.id","CoursesStudents__Submission.milestoneNumber","CoursesStudents__Submission.title","CoursesStudents__Submission.createdAtPretty","CoursesStudents__Submission.sort","CoursesStudents__SubmissionsList","closeOverlayLink","cohortId","Cohort.id","CoursesStudents__StudentInfo.cohort","Cohort.Fragment","UserDetails.Fragment","User.Fragment","getStudentDetails","CoursesStudents__CoachNote.make","User.makeFromFragment","CoursesStudents__EvaluationCriterion.make","CoursesStudents__StudentDetails.makeAverageGrade","CoursesStudents__MilestonesCompletionStatus.make","CoursesStudents__StudentDetails.make","CoursesStudents__StudentInfo.make","UserDetails.makeFromFragment","Cohort.makeFromFragment","UserProxy.makeFromFragment","CoursesStudents__StudentDetails.makeTeam","updateSubmissions","totalPagesReadPercent","milestonesCompletionStats","CoursesStudents__StudentDetails.milestonesCompletionStatus","CoursesStudents__StudentDetails.evaluationCriterionForGrade","CoursesStudents__StudentDetails.gradeAsPercentage","CoursesStudents__EvaluationCriterion.name","setSelectedTab","addNote","onAddCoachNotesCB","CoursesStudents__StudentDetails.addNewNote","CoursesStudents__StudentDetails.removeNote","fulltitle","CoursesStudents__StudentInfo.personalCoaches","CoursesStudents__StudentDetails.student","UserProxy.fullTitle","otherTeamMembers","CoursesStudents__StudentDetails.team","CoursesStudents__StudentDetails.students","CoursesStudents__StudentInfo.id","UserDetails.avatarUrl","CoursesStudents__StudentInfo.user","UserDetails.name","UserDetails.fullTitle","inactiveWarning","CoursesStudents__StudentInfo.droppedOutAt","Cohort.endsAt","CoursesStudents__StudentOverlay","studentDetails$1","UserDetails.currentStandingName","name$1","UserDetails.affiliation","UserDetails.title","ClickToCopy.make","UserDetails.id","Cohort.name","CoursesStudents__StudentDetails.assignmentsCompleted","CoursesStudents__StudentDetails.totalAssignments","CoursesStudents__StudentDetails.totalPageReads","CoursesStudents__StudentDetails.totalTargets","CoursesStudents__StudentDetails.averageQuizScore","CoursesStudents__StudentDetails.quizzesAttempted","CoursesStudents__StudentDetails.averageGrades","CoursesStudents__StudentDetails.evaluationCriteria","CoursesStudents__MilestonesCompletionStatus.milestoneNumber","CoursesStudents__MilestonesCompletionStatus.id","CoursesStudents__MilestonesCompletionStatus.completed","CoursesStudents__MilestonesCompletionStatus.title","CoursesStudents__SubmissionsList.make","CoursesStudents__CoachNotes.make","CoursesStudents__StudentDetails.coachNotes","CoursesStudents__StudentDetails.hasArchivedNotes","CoursesStudents__StudentDetails.canModifyCoachNotes","SkeletonLoading.image","SkeletonLoading.contents","UnknownPathEncountered","AppRouter","component","CoursesReview__Root.make","AppRouter__User.coachId","AppRouter__User.defaultUser","CoursesStudents__StudentOverlay.make","CoursesReview__SubmissionsRoot.make","Js_array.joinWith","AppRouter__Course.decode","AppRouter__User.decode","AppRouter.make"],"mappings":"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AAM,KAAM,KAAM,KAAM,IAAI,EACxC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,IAAK,CAAC,KAAM,KAAM,KAAO,KAAM,KAAM,IAAI,EACzC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAO,KAAM,IAAI,EACzC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAO,KAAM,IAAI,EACzC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,IAAK,CAAC,KAAM,KAAM,KAAO,KAAM,KAAM,IAAI,EACzC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAO,IAAI,EACzC,KAAM,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACzC,IAAK,CAAC,KAAM,KAAM,KAAM,MAAO,KAAM,IAAK,EAC1C,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAO,IAAI,EACzC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,IAAK,CAAC,KAAM,KAAM,KAAM,MAAO,KAAM,IAAK,EAC1C,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,CACzC,EACD,OAAQ,CACN,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAO,IAAI,EACzC,IAAM,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACzC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,IAAK,CAAC,KAAM,KAAM,KAAM,MAAO,KAAM,IAAI,EACzC,IAAK,CAAC,KAAO,KAAM,KAAM,KAAM,KAAM,IAAI,EACzC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAO,IAAI,EACzC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,EACzC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,IAAK,CAAC,KAAO,KAAM,KAAM,KAAM,KAAM,IAAI,EACzC,IAAK,CAAC,KAAM,KAAM,KAAM,MAAO,KAAM,IAAI,EACzC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,EACzC,EAAK,CAAC,KAAM,KAAO,KAAM,KAAM,KAAM,IAAI,EACzC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,KAAM,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACzC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,IAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAO,KAAM,KAAM,KAAM,IAAI,EACzC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAI,EACxC,EAAK,CAAC,KAAM,KAAM,KAAM,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","x_google_ignoreList":[26,27,28,29,30,31,32,79,80,81,90,92,93]}