//In which a plague of bs rises over the SCP Wiki.

esreil's four

SCP-8335

By authors:

J_V_G

Esreil

IndustryStandard

Alzin Cdag | More by this author

other authors' existing works included in this article:

scp-8102 by Monkeysky

scp-426 by Flah

scp-6430 by S D Locke

scp-2565 by Taffeta

scp-2602 by Communism will win

The Bee-Boy's Song, by Rudyard Kipling

ACCESSIBILITY MODE

Item #: 8335|0

Object Class: Thaumeli

Research Head: Dr. Guy Jenrick

Special Containment Procedures: All known SCP-8335 collectives have been relocated to Textual-biological Containers (TbCs) to allow for further maintenance of the hive collectives without risk of failure or mass proliferation. To ensure the safety of hives, TbCs are not to come in contact with untreated external textual materials, nor are TbCs to be removed from their cells for any reason.

Hive @lpha is to be contained within the SCP-8335 file. The SCP-8335 file is to be stored on an airgapped TbC. All informational entry and exit from the SCP-8335 file is to be filtered by Aristaeus.aic, in order to preserve the integrity of Hive @lpha and limit the possibility of hostile textual-biological entities initiating a WK-Class 'Death of the Author' scenario.1 Hive @lpha is to be regularly maintained, with excess textual-flora pruned at frequent intervals and the overall health of Hive @lpha detailed weekly.

As per the protocols of Project 'Memedovukha', upon Hive @lpha generating an instance of SCP-8335-A, that instance is to be isolated and relocated to the TbC corresponding with the scheduled descending priority memetic target.

Description: SCP-8335 is a species of sentient textual organisms resembling a highly simplified form of Apis mellifera,2 that is capable of inhabiting all forms of written text. Instances live in hive communities centralized on specific documents. At present, all known hives are under foundation control.

The primary actors within a SCP-8335 hive are SCP-8335-b "Worker" class characters, represented by "b". Within an active hive, instances will interact with compatible characters and the designated hive node to produce SCP-8335-C "Nourishment" class characters, represented by "h". A sufficient stockpile of SCP-8335-C will allow for the incubation of an SCP-8335-A "Regent" class character, represented by "q". For comprehensive documentation of compatible characters, see the table located at the bottom of the description.

Upon the emergence of a new Regent class character, the hive will initiate a swarm event. During this event, the new Regent will gather a small number of Worker class characters with whom it will transpose intertextually, proliferating to a new document. Though Regent swarms have been identified crossing large physical distances instantaneously during these events, they most commonly infest documents containing either a similar locus of information to the base of the original hive, or information pertaining to the SCP-8335 species itself.

Key
Class
Function

b
Worker
Primary actors in hive. Collect Resource from Flowers and miscellaneous characters from across the document.

h
Nourishment
Created using Resource and stored within Hive node.

q
Regent
Necessary for anomalous function. Activates new Worker characters. Incubated once quantity of stored Nourishment exceeds 8335.

#
Hive
Central interaction node. Contains active Regent.

p d
Resource
Converted to Nourishment in Hive.

X ¥ @ g
Flower
Interaction point where Workers extract Resource. May multiply if exposed to Resource from other Flowers.

$
Smoke
Eliminates anomalous activity temporarily.

J
Collection
Can be manipulated to interact with Hive or free Nourishment characters to remove Nourishment from document.

Discovery and History: SCP-8335 was discovered within the literary collection of Raymond l'Emile. Raymond l'Emile was a known associate of the defunct GoI The High Men of Orp Terra, a group of hobbyist thaumaturgical apiarists who appear to have disbanded suddenly around the time of the outbreak of the First World War. The Foundation acquired the collection during a sting operation carried out by MTF Mu-43 'Honey Trappers' on a suspected Marshall, Carter, and Dark affiliate on 1/6/1946. By the time the Foundation became aware of the presence of SCP-8335 within the collection, it had established extensive colonies in almost all of the collected works. A thorough operation to comb through the texts for actionable material was conducted, but the majority of the texts proved illegible.

On 6/1/1994, a re-evaluation of the recovered material was performed with the aid of previously unavailable digital analysis tools by Dr. Guy Jenrick of the Department of History. While much of the collection remained too damaged to interpret, the following passages relevant to the origins of SCP-8335 were recovered from the personal journals of Raymond l'Emile.

The Seve[…] March, Ninetee[…]

Mister Koschevnikov, dear that he is, brought to us a new Yeoman, looking to obtain the Freedom of The City with the Company, at our meeting at The Three Candles last night. A peculiar little Teutonic gentleman by the name of Honig Bienenstock.

By his own admission, he has some history in the arts of cryptomancy, and proposed to Koschevnikov a manner of working to ensorcell the very letters on a page to live and work, as if they were the industrious fellows we owe our passions and livelihood to.

Most intrigued by such a queer novelty, I encouraged my Roy to invite the good man posthaste to join us at the company hall as soon as he is able.

The Ni[…] Apr[…]

I confess, it was not until Bienenstock scraped it from the page and glazed it upon a fine slice of toasted rye that I had even considered that these keímenopterids could produce edible honey. A drop of amber nectar busied from the very words of Trattato sulla cognizione, enticing and sweet.

It was at once the most delectable and confounding thing I have ever tasted. The floral notes deepened by the chorus of linguistic flourishes upon the tongue. To savour a word is an intoxicating thing indeed, I fear I lack the poetic soul to do justice to such an experience.

Mister Koschevnikov and I have hastened to induct Mister Bienenstock into the ranks of our High Men with a great expediancy. It is imperative that we acquire more, and the means to make it. I am overcome with an unbearable need to taste the sweetness of a sonnet, by ear and by tongue, with my Roy Mister Koschevnikov on a warm summer evening.

[…]eth of April, […]

Mister Koschevnekov surprised us with quite the spread at the Three Candles, a veritable smorgasbord as Mister Mjödson put it, and fine vintages they were. What a delightful man our Mister Koschevnekov, and what a delightful evening. I shall include below the experience of each honey, to the best of my limited hand.

A reintroduction to the floral melody of the Trattato sulla cognizione, as fragrant and enticing as I remember.

Following such a familiar yet intoxicating flavour, I saw fit to sample the rustic and almost earthy tones born of the Canterbury Tales. It served well to cleanse my palate, but certainly did not ignite any great passion within me. An acquired taste perhaps, as Earl Chandler seemed particularly infatuated with it.

Seeking something a little more unusual, I turned to a product of our dear Roy's mother country, by his account it is a deeply controversial opera called Victory Over the Sun. I confess I could make neither heads nor tails of the text itself, perhaps I shall entreat Mister Koschevnekov to explain it to me at a later date. But the honey, good heavens the honey. Electrifying, it is the only word for it. The flavour of thrumming energy and coursing motion. It was like tasting the very essence of the future.

A curious sort of aroma emanated from my next choice, a woody note perhaps, but with a certain dark tinge to it. The taste was almost indescribable. A thrilling edge, but with a haunting tone that lingered on the tongue long afterwards. If it tastes this exciting, I shall certainly have to read this Dracula.

But I saved the finest until last, I had been eyeing it since the events of the evening had been unveiled. Honeyed from a copy of Wordsworth's The Prelude, the aroma was beyond my limited pen to convey. The essence of a man, his life and labours, so expertly crafted into verse, crystallized into an incomparably divine spread of amber. It tasted, I confess, of a kin with the feeling that rises in my chest to hear my dearest Roy laugh. I think, perhaps, it is good that I lack that poet's soul, if I did then the sight of his face as he tasted the honey of my craft would be the final note my heart could handle.

[…]mber, Nin[…]

Roy has taken receipt of a most troublesome tome. 'Twas apparently concocted by Bienenstock's cryptomantic compatriots, and contains many a comprehensively confounding and confuddling quip and quirk of querolous quandary.

While the wily work of warped and weirdsome words weighs upon my wearisome cerebrum, Koschevnikov's close consideration of commensurate courses proposed the possibility of populating the pages with the peculiar pollinators we have grown so incandescently infatuated with.

The subsequent concoction tickles and teases the tongue with a delightful dance of delectable dining experiences. Enamoured with the experience, I have entreated my dearest Koschevnikov to make merry again. Maychance I shall remodel the reading room, a rightful recepticle for our rapturous recreations and melifluous mellifera.

The Twentieth […]er, N[…]een.

I find with each sting of honeyed words, the confounding consequences of the Teutonic tome fade a little further. Alas, it seems, so too does the enrapturing ecstasy of prior stings fade, and so I have taken to larger servings with my tea.

My dear Koschevnikov it seems has become similarly afflicted, though I fear he has found fit to engage in a more extensive relationship with our favoured friends. He makes time to converse at the Candles less and less as the weeks of autumn wear on. I ensure my schedule is free to receive him at any evening, but I worry perhaps my postings are not being delivered as replies have grown infrequent.

[…]teenth of […]ber, Ni[…]rteen.

It has been, I believe, at least a fortnight since I last received a correspondence from my Roy, and I will confess that I am growing concerned. In the years I have known his sweet soul, this is far from the first time we have gone so long without speaking, but there is a different timbre to the silence this time. I hope that is a sign of my advancing age, a creeping of paranoia at the corners of my thinking. I pray it is.

I seem to be struggling more than usual to find the words to put to page. Perhaps my Roy is feeling the same, and that is why I have not heard from him.

I suppose I could speculate all night and be no closer to the truth, I shall endeavour to make a pilgrimage to his place of rest on the morrow and put these worries to bed. I hope that is not presumptive of me.

I arrived this morning at the estate of Mister Koschevnikov. I do not have the words, and I fear it uncouth of me to describe his condition. Oh Roy, oh Roy, the sweet sight of you turned so sour in my heart. I wish I could have done more. I should have done more. I shall never clear the stain from my soul.

Before the current developments, Dr. A. P. Oidea believed the symptoms were commensurate with a certain confusion of the bodily defenses. "Allergy" was the word I believe he used. Now he stares, dumb as the rest of us, at the chimeric corpse. It is all such a blur to me, I confess my mind simply cannot accept the things I know to be true. I cannot bear to think of it longer, the visage of my dearest's face so silent awaits me with every timorous blink.

I have reclaimed the volumes of his personal libapiaries. Perhaps to remember him by. Perhaps to drown myself in sweet sorrows.

Following this transcription, the body of Roy Koschevnikov was exhumed and its DNA sequenced. Foreign genetic material was found interpolated between the human nucleotides.

The work detailing the method of creating SCP-8335 was among those affected by the infestation. However, l'Emile had left a wax-sealed note detailing the procedure for introducing 'smoke' to a colony in order to pacify 8335 instances. This discovery allowed initial researchers to prevent further proliferation of the contained colonies.

Initial containment procedures called for affected works to be 'smoke' sealed, but regular containment checks revealed that a number of the colonies had become inert, unable to be woken up. As a result, updated containment procedures were introduced, only permitting 'smoking' as a countermeasure to breaches, with SCP-8335 affected works being sealed in standard containment lockers.

After a series of containment breaches in the early 1970s, resulting in the total loss of several textual anomalies, authorisation was granted to the Hymenoptera Incarceration and Virtualization Endeavour. The goal of the project was to convert the extant SCP-8335 colonies into a format that could be more readily contained and observed, while reducing the risk of breaches threatening high priority textual anomalies. The resulting device, dubbed the Anomalous Paratextual Relocation Engine (or APRE), enabled the foundation to upload the colonies currently in containment to TbCs. The current containment procedures were drafted in conjunction with the Endeavour, and have reduced breach events by 16.46%.

Addendum: Project 'Memedovukha'

Informed by l'Emile's experience with 'honey', Dr. Jenrick proposed that, when 'harvested' from a text with memetic effects, SCP-8335 will impart some measure of resistance to those same memetic effects. He subsequently submitted a research proposal to investigate the extent and field applicability of this effect.

On 6/1/2004, Project 'Memedovukha' was authorised to research the apparent memetic inoculation effect imparted by SCP-8335-C.

Phase 1 - Extraction: Initial trials were performed by 'smoking' the infected page, and then scraping the 'hive' character with a laboratory spatula, a slow and tedious process that was swiftly deemed unsuitable for the long term needs of the project. While experimentation with a heavily modified radial honey extractor significantly improved per-hour outputs of usable SCP-8335-C, further refinement of the system was abandoned due to an unsustainably high rate of hive extinctions.

Ultimately, building on the extant functions of the APREs used in containment and transport, a specialised application was developed, officially dubbed Jar_Muzen.cab. The application functions in a three part process, draining the 'hive' character, relocating the drained 8335-C instances to a blank page, and automatically printing the resulting file. Upon printing, processing of the printed material is handled by Aristaeus.aic in order to minimise the risk of memetic cross-contamination. The Jar_Muzen.cab procedure passed all efficiency benchmarks with regards to production quantity and hive retention rates, and the project was cleared to enter Phase 2.

Phase 2 - Refinement: Based on the information retrieved from the journals of Raymond l'Emile, a risk of melinaphylaxis and subsequent Melinadelian interpolation presents at higher doses or prolonged usage of 8335-C, and so a method for increasing potency without accompanying risk of allergic reaction was deemed necessary.

Chemical analyses of 8335-C revealed a primary composition of keímenosaccharides,3. Derived from this understanding, a process of fermentation through the introduction of a thaumaturgically enhanced brewer's yeast classified as verbumyces medo was devised. The resultant syllavylcarbinol4 proved to retain the inoculative effect of 8335-C, while dramatically decreasing cases of melinaphylaxis during animal trials. Further refinement of the process brought lethality rates below target rates, and Phase 3 was authorised.

Phase 3 - Human Testing: Phase 3 of Project 'Memedovukha' is currently ongoing, and is focused on human trials of the completed Class-b targeted memeadic inoculant. The primary goal is to demonstrate the safety and efficacy in protecting researchers and field agents from a selected group of memetic hazards. Included within this page is an APRE window, which will allow transfer of incubated SCP-8335-A instances from the Hive @lpha page to a locally hosted copy of the articles detailing the selected hazards.

Once each page has been swarmed, an initial batch of Class-b inoculant will be produced to perform a double-blind study in order to prove its effectiveness and viability for field deployment.

Footnotes

1. As per directive from the Pataphysics Department.

2. Binomial name of the European Honey Bee.

3. A semantic sugar analogue

4. A semantic alcohol analogue

– hide block

<!doctype html>
<html>
<head>


</head>
<body>

<div style="border: solid 2px gray; overflow:hidden;">
<div style="width:auto; border: outset 4px silver; background: gray;padding: 10px;padding-bottom:0px; overflow-y:hidden; overflow-x:hidden;">
<div style="width:auto; height:30em; border: solid 3px #d1b40d; background: #edcf1f;padding: .5em; border-radius: 10px; overflow-y:hidden; overflow-x:hidden;">
<div style="width:auto; height: 28em; border: solid 3px #d1b40d; background: #ffffff;padding: 10px; overflow-y:scroll; overflow-x:hidden;">

<img class="floatingImage" src = "https://scp-wiki.wdfiles.com/local--files/scp-8335/esriel-color-print.gif" alt="image indicating an h is being printed">
<div id = "mobileScrollJarDiv" style="position:absolute; min-height:25px;min-width:15px;white-space:break-spaces;" class="queenBeingDragged"> j</div>

<div id="smokeTutorialHousing" style="display:block; width:100%; height:75em; text-align:center; overflow-y:visible; overflow-x:hidden;">
<button onclick="smokeFinal();">Skip tutorial</button><br>
<div style="border:1px none #c2c0bc; background:#f3f3f38f;display:inline-block;padding:10px;border-radius:100px">
<div class="warning-box">
<div class="warning-box-container">
<div class="text-top">
<span>SMOKE PROCEDURE ACTIVE</span>
</div>
<div class="text-bottom" style="display:block;">
<span>File Status:</span>
</div>
</div>
<div class="text-number">
<span>DOCILE </span>
</div>
<div class="image-bg">
</div>
</div>
</div>
<br>
<br>
<div style="border:1px none #c2c0bc; background:#f7f5ed8f;display:inline-block;padding:3px">
Click "<div style="display:inline-block" id ="sm11" tabindex="0" onfocus="smokeClick('sm11')" onclick="smokeClick('sm11')">$‎ </div>" To Initiate Dispersal Sequence
</div>
<br><br><br><div class="idle" id="smokeTutorial" tabindex="0" onfocus="smokeIterate()" onclick="smokeIterate()">$</div>
<div id="kipling" style="display:none">
<div style="border: 2px none #c2c0bc; background: #e1c45180; display: inline-block; padding: 6px; border-radius: 50px;">
<div style="display:inline-block" id ="sm10" tabindex="0" onfocus="smokeClick('sm10')" onclick="smokeClick('sm10')">$‎MOKE&nbsp</div><div style="display:inline-block;" id="smokeLeft"> Remaining: 11</div><br>
</div>
</br>
</br>
<br>
<div style="border:1px none #c2c0bc; background:#f7f5ed8f;display:inline-block;padding:10px">
Bees! Bees! Hark to your bees!<br>
<div style="display:inline-block;white-space-collapse:break-spaces;">'Hide from your neigbours as much a</div><div id ="sm1" style="display:inline-block;white-space-collapse:break-spaces;" class="idle" tabindex="0" onfocus="smokeClick('sm1')" onclick="smokeClick('sm1')">$</div><div style="display:inline-block;white-space-collapse:break-spaces;"> you plea</div><div id ="sm8" style="display:inline-block;white-space-collapse:break-spaces;" tabindex="0" onclick="smokeClick('sm8')" onfocus="smokeClick('sm8')">$</div><div style="display:inline-block">e,</div><br>
But all that has happened, to us you must tell,<br>
<div style="display:inline-block;white-space-collapse:break-spaces;">Or else we will give you no honey to </div><div id ="sm2"style="display:inline-block" class="idle"
tabindex="0" onfocus="smokeClick('sm2')" onclick="smokeClick('sm2')">$</div><div style="display:inline-block">ell!'</div><br>
<br>
A maiden in her glory,<br>
Upon her wedding-day,<br>
<div style="display:inline-block;white-space-collapse:break-spaces;">Must tell her Bees the </div><div style="display:inline-block" id ="sm3" tabindex="0" onfocus= "smokeClick('sm3')" onclick="smokeClick('sm3')">$</div><div style="display:inline-block">tory,</div><br>
Or else they'll fly away.<br>
Fly away—die away—<br>
Dwindle down and leave you!<br>
But if you don't deceive your Bees,<br>
Your Bees will not deceive you.<br>
<br>
Marriage, birth or buryin',<br>
<div style="display:inline-block;white-space-collapse:break-spaces;">News across the </div><div id ="sm4" style="display:inline-block" tabindex="0" onfocus="smokeClick('sm4')" onclick="smokeClick('sm4')">$</div><div style="display:inline-block">eas,</div><br>
<div style="display:inline-block;white-space-collapse:break-spaces;">All you're </div><div id ="sm5" style="display:inline-block" tabindex="0" onfocus="smokeClick('sm5')" onclick="smokeClick('sm5')">$</div><div style="display:inline-block">ad or merry in,</div><br>
You must tell the Bees.<br>
Tell 'em coming in an' out,<br>
<div style="display:inline-block">Where the Fanner</div><div id ="sm6" style="display:inline-block;white-space-collapse:break-spaces;" tabindex="0" onfocus="smokeClick('sm6')" onclick="smokeClick('sm6')">$</div><div style="display:inline-block;white-space-collapse:break-spaces;"> fan,</div><br>
<div style="display:inline-block">'Cau</div><div id ="sm7" style="display:inline-block"
tabindex="0" onfocus="smokeClick('sm7')" onclick="smokeClick('sm7')">$</div><div style="display:inline-block">e the Bees are justabout</div><br>
As curious as a man!<br>
<br>
Don't you wait where the trees are,<br>
When the lightnings play,<br>
Nor don't you hate where Bees are,<br>
<div style="display:inline-block">Or el</div><div style="display:inline-block" id ="sm9"
tabindex="0" onfocus="smokeClick('sm9')" onclick="smokeClick('sm9')">$</div><div style="display:inline-block">e they'll pine away.</div><br>
Pine away—dwine away—<br>
Anything to leave you!<br>
But if you never grieve your Bees,<br>
Your Bees'll never grieve you.<br><br>
<b> - <i>The Bee-Boy's Song</i>, Rudyard Kipling</b>
</div>
<br>
<br>
<div style="border:1px none #c2c0bc; background:#fadede;display:inline-block;padding:3px">
<b>NOTE:</b> <i>All</i> smoke characters must be clicked to continue!
</div>
</div>
</div>
<div id="finalSmoke" style="display:none">
<div style="text-align: center">
<div style="border:1px none #c2c0bc; background:#f3f3f38f;display:inline-block;padding:10px;border-radius:100px">
<div class="warning-box">
<div class="warning-box-container">
<div class="text-top">
<span>SMOKE FULLY DISPERSED</span>
</div>
<div class="text-bottom" style="display:block;">
<span>File Status:</span>
</div>
</div>
<div class="text-number" style="color:grey">
<span>WAKING</span>
</div>
<div class="image-bg">
</div>

</div>
</div>
<br>
<br>fa
<button style="background: #d6c9698a; color: #b69668; font-family: 'Oxanium';border-radius: 10PX; BORDER: NONE;" onclick = "smokeFinal()"><h2>Proceed to tend Hive @lpha?</h2></button>

</div>
</div>
<div id="OutsideOfEverything" class="outerText" initialHoneyCount = "8330" style="display:none;">
<button onclick="addQueenSkip()">Skip to adding the queen</button>
<div id="travellingSelectorBox" style="width:100%; border-bottom:2px dashed black; background-color:white;">
<div style="width:auto;font-family:'Oxanium';padding: 5px; border: solid 2px #939393; background: #c9c6b8; color: #887f7f; border-radius: 10px;">
<div style="width:auto; border: solid 2px #939393; background: #e9e9e9; padding: 10px; border-radius: 10px;">

<div style="width: 70%;display:inline-block">
<div id = "linkBlock" style="width:100%; border: solid 2px #bcbcbc; background: #c6c6c6; text-color: #bcbcbc;text-align:center">
<label for="linkSelect" class="mobilefix">APRE Selector:</label></br>

<select id="linkSelect" class="mobilefix" style="border:dotted 1px #ffd800; font-family: 'Oxanium'; background: #f5d87e; color: #aa5656;">
<option style="border:dotted 1px #ffd800; font-family: 'Oxanium'; background: #f5d87e; text-color: #aa5656;" value="">Select Article Destination</option>
<option style="border:dotted 1px #ffd800; font-family: 'Oxanium'; background: #f5d87e; text-color: #aa5656;" value="Bee">SCP-8335</option>
<option style="border:dotted 1px #ffd800; font-family: 'Oxanium'; background: #f5d87e; color: #aa5656;" value = "Toaster">SCP-426</option>
<option style="border:dotted 1px #ffd800; font-family: 'Oxanium'; background: #f5d87e; color: #aa5656;" value = "Library">SCP-2602-which-used-to-be-a-library</option>
<option style="border:dotted 1px #ffd800; font-family: 'Oxanium'; background: #f5d87e; color: #aa5656;" value = "Allison">Allison-Eckhart</option>
<option style="border:dotted 1px #ffd800; font-family: 'Oxanium'; background: #f5d87e; color: #aa5656;" value="Verbosity">SCP-6430</option>
<option style="border:dotted 1px #ffd800; font-family: 'Oxanium'; background: #f5d87e; color: #aa5656;" value="FF">SCP-8102</option>
<option style="border:dotted 1px #ffd800; font-family: 'Oxanium'; background: #f5d87e; color: #aa5656;" value="Sandbox">Sandbox</option>
</select>
</br>
<a id="fakeLink" style="color:DimGray;font-size:calc(0.35em + 1vw)" href="" onclick="fakeLinkClick(event)" class="mobilefix2"> Insert queen to select queen destination</a>
</div>
</div>

<div style="width:25%;display:inline-block;float:right">
<button class="queenCollector beequeenboxtext mobilefix3" ondrop="queenDropHandler(event)" ondragover= "queenDragover(event)" id="LinkButton" style="width:100%; border: double 4px #ae99053b;">
<div id="queenCollectorInitialText"><br></div>
</button>
</div>

</div>
</div>
<br>
</div>
<div id = "OriginalBase" class="newDocBeeBase"></div>
<div style="width:100%; border-bottom:2px dashed black; background-color:white;">
<button class ="queenReturn beeleasebox" id="queenReturnOriginal" onclick ="articleClickHandlerBase('OutsideOfEverything','queenReturnOriginal','OriginalBase',testMoveHandler)" style="margin-left:auto;margin-right:auto;display:none;width:100%; border: solid 4px #beb785; color: black;text-align:center"></button>
</br>
</div>
</br>
<p>
<div style="font-weight:bold"><div class="bt">Item #</div></div><br><br>

<div style="font-weight:bold"><div class="bt">Object Class:</div></div> <div class="bt">Thaumeli</div><br><br>

<div style="font-weight:bold"><div class="bt">Research Head:</div></div> <div class="bt">Dr. Guy Jenrick</div><br><br>

<div style="font-weight:bold"><div class="bt">Special Containment Procedures:</div></div><div class="bt"> All known SCP-8335 collectives have been relocated to Textual-biological Containers (TbCs) to allow for further maintenance of the hive collectives without risk of failure or mass proliferation. To ensure the safety of hives, TbCs are not to come in contact with untreated external textual materials, nor are TbCs to be removed from their cells for any reason.</div><br><br>

<div class="bt">Hive @lpha is to be contained within the SCP-8335 file. The SCP-8335 file is to be stored on an airgapped TbC. All informational entry and exit from the SCP-8335 file is to be filtered by Aristaeus.aic, in order to preserve the integrity of Hive @lpha and limit the possibility of hostile textual-biological entities initiating a WK-Class 'Death of the Author' scenario.</div><div style="float:left; clear:none;white-space:break-spaces;"><span class="fnnum">.</span><span class="fncon">As per directive from the Pataphysics Department.</span> </div><div class="bt"> Hive @lpha is to be regularly maintained, with excess textual-flora pruned at frequent intervals and the overall health of Hive @lpha detailed weekly.</div><br><br>

<div class="bt">As per the protocols of Project 'Memedovukha', upon Hive @lpha generating an instance of SCP-8335-A, that instance is to be isolated and relocated to the TbC corresponding with the scheduled descending priority memetic target.</div><br><br>

<div style="font-weight:bold"><div class="bt">Description:</div></div> <div class="bt">SCP-8335 is a species of sentient textual organisms resembling a highly simplified form of</div><div style="font-style:italic"><div class="bt">Apis mellifera,</div></div><div style="float:left; clear:none;white-space:break-spaces;"><span class="fnnum" style="counter-increment: megacount 2;">.</span><span class="fncon">Binomial name of the European Honey Bee.</span> </div><div class="bt"> that is capable of inhabiting all forms of written text. Instances live in hive communities centralized on specific documents. At present, all known hives are under foundation control.</div><br><br>

<div class="bt"> The primary actors within a SCP-8335 hive are SCP-8335-b "Worker" class characters, represented by "b". Within an active hive, instances will interact with compatible characters and the designated hive node to produce SCP-8335-C "Nourishment" class characters, represented by "h". A sufficient stockpile of SCP-8335-C will allow for the incubation of an SCP-8335-A "Regent" class character, represented by "q". For comprehensive documentation of compatible characters, see the table located at the bottom of the description.</div><br><br>

<div class="bt">Upon the emergence of a new Regent class character, the hive will initiate a swarm event. During this event, the new Regent will gather a small number of Worker class characters with whom it will transpose intertextually, proliferating to a new document. Though Regent swarms have been identified crossing large physical distances instantaneously during these events, they most commonly infest documents containing either a similar locus of information to the base of the original hive, or information pertaining to the SCP-8335 species itself.</div><br><br>

<table>
<thead>
<tr style="text-align:center">
<th>Key </th><th>Class<th>Function</th>
</tr>
</thead>
<tbody>
<tr>
<td><div style="display:inline-block;" id="beeInTable" onclick="removeIdleAnimation('beeInTable')" class="idle"><div class="bt"> b </div></div></td><td><div class="bt"> Worker </div></td><td><div class="bt"> Primary actors in hive. Collect Resource from Flowers and miscellaneous characters from across the document. </div></td>
</tr>
<tr>
<td><div class="bt"> h </div></td><td><div class="bt"> Nourishment </div></td><td><div class="bt"> Created using Resource and stored within Hive node. </div></td>
</tr> <tr>
<td><div class="bt"> q </div></td><td><div class="bt"> Regent </div></td><td><div class="bt"> Necessary for anomalous function. Activates new Worker characters. Incubated once quantity of stored Nourishment exceeds 8335. </div></td>
</tr> <tr>
<td># </td><td><div class="bt"> Hive </div></td><td><div class="bt"> Central interaction node. Contains active Regent. </div></td>
</tr>
<tr>
<td><div class="bt"> p d </div></td> <td><div class="bt"> Resource </div></td><td><div class="bt"> Converted to Nourishment in Hive.</div></td>
</tr> <tr>
<td><div class="bt"> X ¥ @ g </div></td><td><div class="bt"> Flower </div></td><td><div class="bt"> Interaction point where Workers extract Resource. May multiply if exposed to Resource from other Flowers. </div></td>
</tr> <tr>
<td>$ </td><td><div class="bt"> Smoke </div></td><td> <div class="bt">Eliminates anomalous activity temporarily. </div></td>
</tr><tr>
<td><div class="bt"> J j </div></td><td><div class="bt"> Collection </div></td><td><div class="bt"> Can be manipulated to interact with Hive or free Nourishment characters to remove Nourishment from document. </div></td></tr>
</tbody>
</table>
<br><br>
<div style="font-weight:bold"><div class="bt">Discovery and History:</div></div><div class="bt"> SCP-8335 was discovered within the literary collection of Raymond l'Emile. Raymond l'Emile was a known associate of the defunct GoI The High Men of Orp Terra, a group of hobbyist thaumaturgical apiarists who appear to have disbanded suddenly around the time of the outbreak of the first world war. The Foundation acquired the collection during a sting operation carried out by MTF Mu-43 'Honey Trappers' on a suspected Marshall, Carter, and Dark affiliate on 1/6/1946. By the time the Foundation became aware of the presence of SCP-8335 within the collection, it had established extensive colonies in almost all of the collected works. A thorough operation to comb through the texts for actionable material was conducted, but the majority of the texts proved illegible.</div><br><br>

<div class="bt">On 6/1/1994, a re-evaluation of the recovered material was performed with the aid of previously unavailable digital analysis tools by Dr. Guy Jenrick of the Department of History. While much of the collection remained too damaged to interpret, the following passages relevant to the origins of SCP-8335 were recovered from the personal journals of Raymond l'Emile.</div><br><br>

<div style="margin-inline:auto;width:80%; background-color: rgb(34, 34, 0); border: 3px solid rgb(170, 170, 85); color: rgb(221, 221, 119); padding: 10px;">
<div class="bt">The Seve[...] March, Ninetee[...]</div><br><br>

<div class="bt">Mister Koschevnikov, dear that he is, brought to us a new Yeoman, looking to obtain the Freedom of The City with the Company, at our meeting at The Three Candles last night. A peculiar little Teutonic gentleman by the name of Honig Bienenstock.</div><br><br>

<div class="bt">By his own admission, he has some history in the arts of cryptomancy, and proposed to Koschevnikov a manner of working to ensorcell the very letters on a page to live and work, as if they were the industrious fellows we owe our passions and livelihood to.</div><br><br>

<div class="bt">Most intrigued by such a queer novelty, I encouraged </div><div style="text-decoration-line: line-through; float:left; clear:none; margin-bottom: 1px; margin-top: 1px; white-space:break-spaces;">my </div><div class="bt"> Roy to invite the good man posthaste to join us at the company hall as soon as he is able. </div><br><br></div><br>
<br>

<div style="margin-inline:auto;width:80%; background-color: rgb(34, 34, 0); border: 3px solid rgb(170, 170, 85); color: rgb(221, 221, 119); padding: 10px;">
<div class="bt">The Ni[...] Apr[...]</div><br><br>

<div class="bt">I confess, it was not until Bienenstock scraped it from the page and glazed it upon a fine slice of toasted rye that I had even considered that these keímenopterids could produce edible honey. A drop of amber nectar busied from the very words of</div> <div style="font-style:italic;"><div class="bt">Trattato sulla cognizione</div></div><div class="bt">, enticing and sweet.</div><br><br>

<div class="bt">It was at once the most delectable and confounding thing I have ever tasted. The floral notes deepened by the chorus of linguistic flourishes upon the tongue. To savour a word is an intoxicating thing indeed, I fear I lack the poetic soul to do justice to such an experience.</div><br><br>

<div class="bt">Mister Koschevnikov and I have hastened to induct Mister Bienenstock into the ranks of our High Men with a great expediancy. It is imperative that we acquire more, and the means to make it. I am overcome with an unbearable need to taste the sweetness of a sonnet, by ear and by tongue, with </div><div style="text-decoration-line: line-through; float:left; clear:none; margin-bottom: 1px; margin-top: 1px; white-space:break-spaces;">my Roy </div><div class="bt"> Mister Koschevnikov on a warm summer evening.</div><br><br>
</div><br><br>

<div style="margin-inline:auto;width:80%; background-color: rgb(34, 34, 0); border: 3px solid rgb(170, 170, 85); color: rgb(221, 221, 119); padding: 10px;">
<div class="bt">[...]eth of April, [...]</div><br><br>

<div class="bt">Mister Koschevnekov surprised us with quite the spread at the Three Candles, a veritable smorgasbord as Mister Mjödson put it, and fine vintages they were. What a delightful man our Mister Koschevnekov, and what a delightful evening. I shall include below the experience of each honey, to the best of my limited hand.</div><br><br>

<div class="bt">A reintroduction to the floral melody of the </div><div style="font-style:italic;"><div class="bt">Trattato sulla cognizione</div></div><div class="bt">, as fragrant and enticing as I remember.</div><br><br>

<div class="bt">Following such a familiar yet intoxicating flavour, I saw fit to sample the rustic and almost earthy tones born of the </div><div style="font-style:italic"><div class="bt">Canterbury Tales</div></div><div class="bt">. It served well to cleanse my palate, but certainly did not ignite any great passion within me. An acquired taste perhaps, as Earl Chandler seemed particularly infatuated with it.</div><br><br>

<div class="bt">Seeking something a little more unusual, I turned to a product of our dear Roy's mother country, by his account it is a deeply controversial opera called </div><div style="font-style:italic"><div class="bt">Victory Over the Sun</div></div><div class="bt">. I confess I could make neither heads nor tails of the text itself, perhaps I shall entreat Mister Koschevnekov to explain it to me at a later date. But the honey, good heavens the honey. Electrifying, it is the only word for it. The flavour of thrumming energy and coursing motion. It was like tasting the very essence of the future.</div><br><br>

<div class="bt">A curious sort of aroma emanated from my next choice, a woody note perhaps, but with a certain dark tinge to it. The taste was almost indescribable. A thrilling edge, but with a haunting tone that lingered on the tongue long afterwards. If it tastes this exciting, I shall certainly have to read this </div><div style="font-style:italic;"><div class="bt">Dracula.</div></div><br><br>

<div class="bt">But I saved the finest until last, I had been eyeing it since the events of the evening had been unveiled. Honeyed from a copy of Wordsworth's</div><div style="font-style:italic"><div class="bt">The Prelude</div></div><div class="bt">, the aroma was beyond my limited pen to convey. The essence of a man, his life and labours, so expertly crafted into verse, crystallized into an incomparably divine spread of amber. It tasted, I confess, of a kin with the feeling that rises in my chest to hear my dearest Roy laugh. I think, perhaps, it is good that I lack that poet's soul, if I did then the sight of his face as he tasted the honey of my craft would be the final note my heart could handle.</div></br></br></div><br><br>

<div style="margin-inline:auto;width:80%; background-color: rgb(34, 34, 0); border: 3px solid rgb(170, 170, 85); color: rgb(221, 221, 119); padding: 10px;">
<div class="bt">[...]mber, Nin[...]</div><br><br>

<div class="bt">Roy has taken receipt of a most troublesome tome. 'Twas apparently concocted by Bienenstock's cryptomantic compatriots, and contains many a comprehensively confounding and confuddling quip and quirk of querolous quandary. </div><br><br>

<div class="bt">While the wily work of warped and weirdsome words weighs upon my wearisome cerebrum, Koschevnikov's close consideration of commensurate courses proposed the possibility of populating the pages with the peculiar pollinators we have grown so incandescently infatuated with.</div><br><br>

<div class="bt">The subsequent concoction tickles and teases the tongue with a delightful dance of delectable dining experiences. Enamoured with the experience, I have entreated my dearest Koschevnikov to make merry again. Maychance I shall remodel the reading room, a rightful recepticle for our rapturous recreations and melifluous mellifera.</div><br><br>
</div><br><br>

<div style="margin-inline:auto;width:80%; background-color: rgb(34, 34, 0); border: 3px solid rgb(170, 170, 85); color: rgb(221, 221, 119); padding: 10px;">
<div class="bt">The Twentieth [...]er, N[...]een.</div><br><br>

<div class="bt">I find with each sting of honeyed words, the confounding consequences of the Teutonic tome fade a little further. Alas, it seems, so too does the enrapturing ecstasy of prior stings fade, and so I have taken to larger servings with my tea.</div><br><br>

<div class="bt">My dear Koschevnikov it seems has become similarly afflicted, though I fear he has found fit to engage in a more extensive relationship with our favoured friends. He makes time to converse at the Candles less and less as the weeks of autumn wear on. I ensure my schedule is free to receive him at any evening, but I worry perhaps my postings are not being delivered as replies have grown infrequent.</div><br><br>
</div><br><br>

<div style="margin-inline:auto;width:80%; background-color: rgb(34, 34, 0); border: 3px solid rgb(170, 170, 85); color: rgb(221, 221, 119); padding: 10px;">
<div class="bt">[...]teenth of [...]ber, Ni[...]rteen.</div><br><br>

<div class="bt">It has been, I believe, at least a fortnight since I last received a correspondence from my Roy, and I will confess that I am growing concerned. In the years I have known his sweet soul, this is far from the first time we have gone so long without speaking, but there is a different timbre to the silence this time. I hope that is a sign of my advancing age, a creeping of paranoia at the corners of my thinking. I pray it is.</div><br><br>

<div class="bt">I seem to be struggling more than usual to find the words to put to page. Perhaps my Roy is feeling the same, and that is why I have not heard from him.</div><br><br>

<div class="bt">I suppose I could speculate all night and be no closer to the truth, I shall endeavour to make a pilgrimage to his place of rest on the morrow and put these worries to bed. I hope that is not presumptive of me.</div><br><br>
</div><br><br>

<div style="margin-inline:auto;width:80%; background-color: rgb(34, 34, 0); border: 3px solid rgb(170, 170, 85); color: rgb(221, 221, 119); padding: 10px;">

<div class="bt">I arrived this morning at the estate of Mister Koschevnikov. I do not have the words, and I fear it uncouth of me to describe his condition. Oh Roy, oh Roy, the sweet sight of you turned so sour in my heart. I wish I could have done more. I should have done more. I shall never clear the stain from my soul.</div><br><br>

<div class="bt">Before the current developments, Dr. A. P. Oidea believed the symptoms were commensurate with a certain confusion of the bodily defenses. "Allergy" was the word I believe he used. Now he stares, dumb as the rest of us, at the chimeric corpse. It is all such a blur to me, I confess my mind simply cannot accept the things I know to be true. I cannot bear to think of it longer, the visage of my dearest's face so silent awaits me with every timorous blink.</div><br><br>

<div class="bt">I have reclaimed the volumes of his personal libapiaries. Perhaps to remember him by. Perhaps to drown myself in sweet sorrows.</div><br><br>
</div><br><br>

<div class="bt">Following this transcription, the body of Roy Koschevnikov was exhumed and its DNA sequenced. Foreign genetic material was found interpolated between the human nucleotides.</div><br><br>

<div class="bt">The work detailing the method of creating SCP-8335 was among those affected by the infestation. However, l'Emile had left a wax-sealed note detailing the procedure for introducing 'smoke' to a colony in order to pacify 8335 instances. This discovery allowed initial researchers to prevent further proliferation of the contained colonies.</div><br><br>

<div class="bt">Initial containment procedures called for affected works to be 'smoke' sealed, but regular containment checks revealed that a number of the colonies had become inert, unable to be woken up. As a result, updated containment procedures were introduced, only permitting 'smoking' as a countermeasure to breaches, with SCP-8335 affected works being sealed in standard containment lockers.</div><br><br>

<div class="bt">After a series of containment breaches in the early 1970s, resulting in the total loss of several textual anomalies, authorisation was granted to the Hymenoptera Incarceration and Virtualization Endeavour. The goal of the project was to convert the extant SCP-8335 colonies into a format that could be more readily contained and observed, while reducing the risk of breaches threatening high priority textual anomalies. The resulting device, dubbed the Anomalous Paratextual Relocation Engine (or APRE), enabled the foundation to upload the colonies currently in containment to TbCs. The current containment procedures were drafted in conjunction with the Endeavour, and have reduced breach events by 16.46%.</div><br><br>

<div style="font-weight:bold;text-align:center"><div class="bt">Addendum:</div></div><div class="bt">Project 'Memedovukha'</div><br><br>

<div class="bt">Informed by l'Emile's experience with 'honey', Dr. Jenrick proposed that, when 'harvested' from a text with memetic effects, SCP-8335 will impart some measure of resistance to those same memetic effects. He subsequently submitted a research proposal to investigate the extent and field applicability of this effect.</div><br><br>

<div class="bt">On 6/1/2004, Project 'Memedovukha' was authorised to research the apparent memetic inoculation effect imparted by SCP-8335-C. </div><br><br>

<div style="border: 2px rgb(253 214 187) dashed;background-color: rgb(255 242 209);padding: 10px 10px;width: 90%;margin-inline: auto;height: auto;">
<b><div class="bt">Phase 1 - Extraction:</div></b><div class="bt"> Initial trials were performed by 'smoking' the infected page, and then scraping the 'hive' character with a laboratory spatula, a slow and tedious process that was swiftly deemed unsuitable for the long term needs of the project. While experimentation with a heavily modified radial honey extractor significantly improved per-hour outputs of usable SCP-8335-C, further refinement of the system was abandoned due to an unsustainably high rate of hive extinctions.</div><br><br>

<div class="bt">Ultimately, building on the extant functions of the APREs used in containment and transport, a specialised application was developed, officially dubbed Jar_Muzen.cab. The application functions in a three part process, draining the 'hive' character, relocating the drained 8335-C instances to a blank page, and automatically printing the resulting file. Upon printing, processing of the printed material is handled by Aristaeus.aic in order to minimise the risk of memetic cross-contamination. The Jar_Muzen.cab procedure passed all efficiency benchmarks with regards to production quantity and hive retention rates, and the project was cleared to enter Phase 2.</div><br><br>

<b><div class="bt">Phase 2 - Refinement:</div></b><div class="bt">Based on the information retrieved from the journals of Raymond l'Emile, a risk of melinaphylaxis and subsequent Melinadelian interpolation presents at higher doses or prolonged usage of 8335-C, and so a method for increasing potency without accompanying risk of allergic reaction was deemed necessary.</div><br><br>

<div class="bt">Chemical analyses of 8335-C revealed a primary composition of keímenosaccharides,</div><div style="float:left; clear:none;white-space:break-spaces;"><span class="fnnum" style="counter-increment: megacount 3;">.</span><span class="fncon">A semantic sugar analogue</span> </div><div class="bt"> Derived from this understanding, a process of fermentation through the introduction of a thaumaturgically enhanced brewer's yeast classified as </div><div style="font-style:italic"><div class="bt">verbumyces medo</div></div><div class="bt"> was devised. The resultant syllavylcarbinol</div><div style="float:left; clear:none;white-space:break-spaces;"><span class="fnnum" style="counter-increment: megacount 4;">.</span><span class="fncon">A semantic alcohol analogue</span><span>&nbsp;</span></div><div class="bt"> proved to retain the inoculative effect of 8335-C, while dramatically decreasing cases of melinaphylaxis during animal trials. Further refinement of the process brought lethality rates below target rates, and Phase 3 was authorised.</div><br><br>

<b><div class="bt">Phase 3 - Human Testing:</div></b><div class="bt">Phase 3 of Project 'Memedovukha' is currently ongoing, and is focused on human trials of the completed Class-b targeted memeadic inoculant. The primary goal is to demonstrate the safety and efficacy in protecting researchers and field agents from a selected group of memetic hazards. Included within this page is an APRE window, which will allow transfer of incubated SCP-8335-A instances from the Hive @lpha page to a locally hosted copy of the articles detailing the selected hazards.</div><br><br>

<div class="bt">Once each page has been swarmed, an initial batch of Class-b inoculant will be produced to perform a double-blind study in order to prove its effectiveness and viability for field deployment.</div><br><br>
</div><br><br>
<div style=" background-color: rgb(34, 34, 0); color: rgb(221, 221, 119);border: 2px solid rgb(170, 170, 85);font-family: 'Share Tech Mono', monospace;margin-top: 3rem;margin-bottom: 1.5rem;padding: 1em;">
<div style="font-size:large; font-weight:bold">Footnotes:</div><br>
<a><div class="bt">1</div></a><div class="bt">As per directive from the Pataphysics Department.</div><br>
<a><div class="bt">2</div></a><div class="bt">Binomial name of the European Honey Bee.</div><br>
<a><div class="bt">3</div></a><div class="bt"> A semantic sugar analogue </div><br>
<a><div class="bt">4</div></a><div class="bt">A semantic alcohol analogue</div><br>

</div>
</div>

<div id="ToasterArticle" class="outerText" initialHoneyCount = "426" style="display:none;">
<div id = "ToasterBase" class="newDocBeeBase"></div><br>
<div style="width:100%; border-bottom:2px dashed black; background-color:white;">
<button class ="queenReturn beeleasebox" id="queenReturnToaster" onclick ="articleClickHandlerBase('ToasterArticle','queenReturnToaster','ToasterBase',toasterHandler)" style="margin-left:auto;margin-right:auto;display:block;width:100%; border:solid 4px #beb785; color: black;text-align:center"></button>
</br>
</div>
</br>
<div style="width:100%; margin: auto; overflow:visible;">
<div class="hive" style="font-weight:bold">#</div></br></br>
<div class = "bt" style="font-weight:bold">Object</div><div class = "bt" style="font-weight:bold">Class:</div><div class = "bt">Euclidj</div></br></br>
<div class = "bt" style="font-weight:bold">Special</div><div class = "bt" style="font-weight:bold">Containment</div><div class = "bt" style="font-weight:bold">Procedures:</div>
<div class="bt"> I am to be sealed in a chamber with no windows through which I may be viewed. The door to my chamber must have a label completely unrelated to my designation or identity, in order to prevent unintended spread of my primary effect. Only Level 3 and above personnel are to know of my presence, and particularly of my properties. Assigned personnel are to be rotated out on a monthly basis to prevent contamination by my secondary effect. Psychiatric evaluation is mandatory at the end of the month. If personnel are deemed unaffected, they may be re-assigned to me no less than four months after their last rotation with me. Any affected personnel are to be given a Class C amnestic and transferred to a different site.</div></br></br>
<div class = "bt" style="font-weight:bold">Description:</div><div class="bt"> Hello, I am SCP-426. I must be introduced this way in order to prevent ambiguity. I am an ordinary toaster, able to toast bread when supplied with electricity. However, when any human being mentions me, they inadvertently refer to me in the first person. Despite all attempts, there is yet to be a way to speak or write about me in the third person. When in my continuous presence for over two months, individuals begin to identify themselves as a toaster. Unless forcibly restrained, these people will ultimately harm themselves in their attempts to emulate my standard functions.</div></br></br>

<div class="bt">I was discovered in the home of the ████████ family after the gruesome deaths of three of its members. I had been given to the younger Mr. and Mrs. ████████ as a wedding gift. No card or any other identifying markings had been found on my box. Approximately two months after the family received me, fire crews were dispatched to the home due to an electrical fire. The younger Mrs. ████████ died from the electric discharge that she had caused when attempting to devour an electric socket. The other two victims had died shortly before the fire occurred. The elder Mrs. ████████ had gorged herself with nearly 10 kg of bread before her stomach burst and she died of internal bleeding. The younger Mr. ████████ died of severe blood loss after attempting [REDACTED] with me. The sole survivor was the elder Mr. ████████ who was suffering from severe malnutrition. He stated that he had inserted some bread a week prior and was still waiting for the toast to pop out.</div></br></br>

<div class="bt">I was confiscated by the Foundation after police noted my unusual properties. A Class C amnestic was administered to the affected officers.</div></br></br>

<div style="font-weight:bold"><div class = "bt">Experiment Log 426-1:</div></div></br></br>

<div class = "bt" style="font-weight:bold">Date: ██-██-████</div></br>
<div class = "bt" style="font-weight:bold">Subject:</div><div class = "bt">D-class personnel D/426/1</div></br>
<div style="font-weight:bold"><div class="bt">Procedure:</div></div><div class="bt">D/426/1 was asked to describe what he believed was contained in my chamber. He was not informed about my identity or properties.</div><br>
<div style="font-weight:bold"><div class="bt">Details:</div></div><div class="bt">D/426/1 stated, "I'm probably some huge monster holed up in there. That's what you guys have all over the place, right?" D/426/1 remained oblivious to his use of the first-person pronoun.</div><br><br>

<div style="font-weight:bold"><div class = "bt">Experiment Log 426-2:</div></div></br></br>
<div class = "bt" style="font-weight:bold">Date: ██-██-████</div></br>
<div class = "bt" style="font-weight:bold">Subject:</div><div class = "bt">D-class personnel D/426/2</div></br>
<div style="font-weight:bold"><div class="bt">Procedure:</div></div><div class="bt">D/426/2 was placed in my chamber and given regular meals through a dispenser. No communication with D/426/2 was permitted. Multiple cameras were situated in the chamber, positioned so that I was outside of their field of vision, but allowing constant observation of D/426/2. We remained sealed until my secondary effect manifested in the subject. I was bolted to the floor so that I could not be moved into a camera's view.</div><br>
<div style="font-weight:bold"><div class="bt">Details:</div></div><div class="bt">After 45 days of isolation, D/426/2 wrapped his arm around me and began conversing with me, stating that we were brothers. D/426/2 never deviated from using the first-person plural when speaking with me. Subject was terminated one hour after this event. It is theorized that the isolation accelerated the progression of my secondary effect.</div><br><br>

<div style="font-weight:bold"><div class = "bt">Experiment Log 426-3:</div></div></br></br>

<div class = "bt" style="font-weight:bold">Date: ██-██-████</div></br>
<div class = "bt" style="font-weight:bold">Subject:</div><div class = "bt">D-class personnel D/426/3</div></br>
<div style="font-weight:bold"><div class="bt">Procedure:</div></div><div class="bt"> A screw was removed from me and shown to D/426/3 who was asked to describe it. D/426/3 was not informed about my identity or properties.</div><br>
<div style="font-weight:bold"><div class="bt">Details:</div></div><div class="bt">D/426/3 referred to it as "my screw". Consistent with Experiment 426-1, the subject was oblivious of his use of the first person in his description. This suggests that, even if I were destroyed, my effects would still be inherent in my remains.</div><br><br>

<div style="font-weight:bold"><div class = "bt">Experiment Log 426-4:</div></div></br></br>

<div class = "bt" style="font-weight:bold">Date: ██-██-████</div></br>
<div class = "bt" style="font-weight:bold">Subject:</div><div class = "bt">D-class personnel D/426/4</div></br>
<div style="font-weight:bold"><div class="bt">Procedure:</div></div><div class="bt">D/426/4 was placed in isolation in a cell adjacent to my chamber, to be observed until my secondary effect manifests.</div><br>
<div style="font-weight:bold"><div class="bt">Details:</div></div><div class="bt">No effects appeared. D/426/4 was terminated 90 days after the start of the experiment.</div><br>
<div style="font-style:italic"><div class="bt">Thank God there are some limits to my effects. A lot of us were really starting to get worried about me.</div></div><div class="bt">Dr. C███████</div><br>

</div>
</div>

<div id="AllisonArticle" class="outerText" initialHoneyCount = "2565" style="display:none;"><br><br><br>
<div id = "AllisonBase" class="newDocBeeBase"></div>
<div style="width:100%; border-bottom:2px dashed black; background-color:white;">
<button class ="queenReturn beeleasebox" id="queenReturnAllison" onclick ="articleClickHandlerBase('AllisonArticle','queenReturnAllison','AllisonBase',allisonHandler)" style="margin-left:auto;margin-right:auto;display:block;width:100%; border:solid 4px #beb785; color: black;text-align:center"></button>
</br>
</div>
</br>
<div style="width:100%; margin: auto; overflow:visible;">
<div style="font-weight:bold"><div class="bt">Allison Eckhart #</div></div><div class="bt">Allison Eckhart</div><br><br>
<div style="font-weight:bold"><div class="bt">Allison Eckhart Class:</div></div><div class="bt">Keter</div><br><br>
<div style="font-weight:bold"><div class="bt">Special Containment Procedures:</div></div><div class="bt">Until such a time in which</div><a style="font-weight:bold"><div class="bt"> Experimental Cross-Containment Proposal Allison Eckhart/2719</div></a><div class="bt"> or </div><a style="font-weight:bold"><div class="bt"> Neutralisation Proposal Allison Eckhart</div></a><div class="bt"> can be enacted, Allison Eckhart and Allison Eckhart instances are currently contained in separate Biohazardous Allison Eckhart Containment Cells at Bio Site-Allison Eckhart. As per standard biosecurity procedures, Allison Eckharts entering the containment cells of Allison Eckharts are to wear Level Allison ECKHART suits in order to avoid becoming contaminated with Allison Eckhart.</div><br><br>
<div class="bt">Currently, Allison Eckhart's Allison Eckharts are to be stored in sealed steel containers and buried underground at Secure Disposal Area Allison Eckhart to avoid contamination or containment breach of Allison Eckhart.</div><br><br>
<div style="font-weight:bold"><div class="bt">Description:</div></div><div class="bt">Allison Eckhart is Agent Allison Eckhart, a 31-year-old woman who was formerly a field operative for the Department of Analytics. Aside from a minor excess of sodium concentration in its Allison Eckhart, Allison Eckhart does not appear to possess any physical anomalies. Prior to containment, Allison Eckhart had worked for 5 years as a Level 2 Anomalous Object Recovery agent. Allison Eckhart did not possess anomalous properties during this time period.</div><br><br>
<div class="bt">Allison Eckhart is an autosynecdochic semantic pointer, believed to be the result of an artificially induced conceptual fractal. Because of this, Allison Eckhart's Allison Eckharts also possess the property of "Allison Eckhart" and are thus perceived as Allison Eckhart. As an example, simply attempting to take Allison Eckharts from Allison Eckhart has led to over three hundred complaints to the Ethics Committee from Allison Eckharts.</div><br><br>
<div style="font-weight:bold"><div class="bt">Addendum Allison Eckhart-1:</div></div><div class="bt"> Allison Eckharts of AEoI-139 ("Allison Eckhart") carried out an attack on Secure Disposal Area Allison Eckhart, presumably for the purpose of obtaining Allison Eckhart. Due to the small size of the Allison Eckhart, it is believed that all Allison Eckharts were contaminated in the process. During the attack, 36 Allison Eckharts and 13 Allison Eckharts were also contaminated. Their Allison Eckharts have been incinerated to avoid further spread of Allison Eckhart.</div><br><br>
<div class="bt">Site Director Allison Eckhart has expressed deepest Allison Eckharts over the Allison Eckharts involved in the incident. The Allison Eckharts of the Allison Eckharts involved have been given appropriate reimbursement for Allison Eckhart.</div><br><br>
<div style="font-weight:bold"><div class="bt">Addendum Allison Eckhart-2:</div></div><div class="bt">Embedded Foundation assets in meteorology offices report multiple Allison Eckhart formations over the Pacific Allison Eckhart, suggesting the successful atmospheric dispersal of Allison Eckhart. As a result, over 100 liters of Allison Eckhart has been dispersed over the coastline of Allison Eckhart.</div><br><br>
<div class="bt">Following continuing Allison Eckhart casualties due to ingestion of Allison Eckhart-contaminated Allison Eckhart, a Broken Allison Eckhart scenario has been established due to the high-publicity nature of the Allison Eckharts. It is estimated that at Allison Eckhart's current rate of Allison Eckhart emission, a total AE-Class Allison Eckhart Allison-Eckhart Breathability Scenario will occur within 40 years.</div><br><br>
<div class="bt">Plans for off-Allison Eckhart evacuation of the remaining non-Allison Eckhart population have already been set up, although the Global Allison Eckhart Coalition has also proposed a plan for destruction of Allison Eckhart. It is believed that this proposal would carry a non-zero risk of an AE-Class Total Allison Eckhart Failure Scenario along with the neutralisation of Allison Eckhart.</div><br>
</div>
</div>

<div id="LibraryArticle" class="outerText" initialHoneyCount = "2602" style="display:none;"><br><br><br>
<div id = "LibraryBase" class="newDocBeeBase"></div>
<div style="width:100%; border-bottom:2px dashed black; background-color:white;">
<button class ="queenReturn beeleasebox" id="queenReturnLibrary" onclick ="articleClickHandlerBase('LibraryArticle','queenReturnLibrary','LibraryBase',libraryHandler)" style="margin-left:auto;margin-right:auto;display:block;width:100%; border: solid 4px #beb785; color: black;text-align:center"></button>
</br>
</div>
</br>
<div style="width:100%; margin: auto; overflow:visible;">
<br><br>
<div style="width:80%; background-color:#EEEEEE; border: dashed grey 1px; padding: 10px;margin-inline:auto">
<div style="font-weight:bold"><div class="bt">Notice:</div></div>
<div class="bt">This file possesses cognitohazardous properties. While reading this text is not believed to be harmful, comprehension and interpretation of the text will be negatively affected. Please exercise discretion when reading this document.</div>
<br>
</div>
<br><br>
<div style="font-weight:bold"><div class="bt">Item #</div></div><br><br>
<div style="font-weight:bold"><div class="bt">Library Class:</div></div><div class="bt">Former</div><br><br>
<div style="font-weight:bold"><div class="bt">Special Containment Procedures:</div></div><div class="bt">SCP-2602 has been acquired under the cover story that it used to be a library. Large bushes and trees have been planted around the property in order to obscure SCP-2602. Access is denied to non-personnel. Amnestics have been administered to the town in which SCP-2602, a former library, is located.</div><br><br>
<div class="bt">All known online references to SCP-2602 and the fact that it used to be a library have been removed. Filters pertaining to the linguistic markers of SCP-2602's effects have been added to Foundation web-crawling software in order to flag text that potentially pertains to SCP-2602 for review. All known physical documentation related to SCP-2602 has been identified and destroyed.</div><br><br>
<div class="bt">Foundation documentation pertaining to SCP-2602 is to be edited as much as possible for readability by personnel with no familiarity with the anomaly. Typically, 40% of all references to the fact that SCP-2602 used to be a library can be removed.</div><br><br>
<figure style="width:50%; clear:none; border: solid black 1px; box-shadow:2px 2px #EEEEEE, -2px -2px #EEEEEE;margin-inline:auto;margin-bottom: -5px;"><img src="http://scp-wiki.wikidot.com/local--files/scp-2602/library.jpg" alt="A picture of a former library"/><figcaption style="background-color:#EEEEEE">SCP-2602</figcaption></figure>
<div style="font-weight:bold"><div class="bt">Description:</div></div><div class="bt">SCP-2602 is a building that, from 1921-06-08 to 1988-04-29, was a library.</div><br><div class="bt">SCP-2602 is located in █████ ███████, England, and developed its anomalous properties in October of 2004.</div><br><br>
<div class="bt">When communicating any information about SCP-2602, subjects are compelled to make frequent reference to the fact that SCP-2602 used to be a library. The exact wording and nature of these references are mostly determined by the author and context, but always unambiguously communicate this information. Texts referring to SCP-2602 can have these references removed to a limited degree by subjects who have little knowledge of SCP-2602 outside of the fact that it used to be a library. The limited compulsion to allow these references to go unedited has hindered attempts at developing automated processes to remove these references.</div><br><br>
<div class="bt">Any information regarding SCP-2602 is also anomalous. Subjects exposed to communications regarding SCP-2602 will identify the fact that it used to be a library as the primary causal element behind any number of properties of or observations about it. This is proportional to the extent that said information contains references to the fact that SCP-2602 used to be a library. While subjects will develop false beliefs to support these irrational causal linkages, they do not generalize and pose no general risk to cognition — for example, while several subjects have posited that the effects of gravity within SCP-2602 are a result of it having been a library but no longer serving that purpose, they do not hold this belief with regards to other buildings that used to be libraries.</div><br><br>
<div class="bt">Subjects are incapable of communicating, directly or otherwise, any information pertaining to SCP-2602's use between its time as a library and the development of its anomalous properties. When prompted to do so, they will instead insistently and repeatedly refer to the fact that SCP-2602 used to be a library. Due to this, and the fact that SCP-2602 used to be a library, it has been very difficult to determine what, if anything, occurred in SCP-2602 from 1988 to 2004.</div><br><br>
<div style="font-weight:bold"><div class="bt">Addendum 2602-1:</div></div><div class="bt">Summary of a survey of SCP-2602, which used to be a library, conducted by Agents Roderick and Casey on December 09, 2004. Unreadable segments have been excised entirely. See also:</div><div class="bt">SCP-2602 Photographic Evidence.</div><br><br>
<div style=" padding: 10px; width:80%; background-color:#EEEEEE; border: dashed grey 1px;margin-inline:auto"><div class="bt">While SCP-2602's layout is generally appropriate for a former library, it is inconsistent with obtained blueprints from the local government and testimony from past patrons. It is thus assumed that SCP-2602 used to be a library. Most notably, SCP-2602 contains an extensive subterranean component of the kind generally found in former libraries.</div><br><br>
<div class="bt">SCP-2602 experienced extensive fire damage on the same day that it developed anomalous properties. Consultation with actuarial tables has shown little deviation from what is expected of fire damage to former libraries. However, some of the debris exhibited elevated levels of Dewey radiation</div><div style="float:left; clear:none;white-space:break-spaces;"><span class="fnnum" style="counter-increment: megacount 1;">.</span><span class="fncon">A type of radiation common to buildings that used to be libraries. It is typically only emitted by damaged library patrons.</span> </div><div class="bt">, preventing access to several shrines that were likely used to assist SCP-2602's reading groups when it was a library.</div><br><br>
<div class="bt">A number of advanced book-sorting machines were found, though long-term storage in a former library has rendered them inoperable. Restraints used by libraries to hold patrons with overdue books were similarly damaged, apparently violently, by this storage.</div><br><br>
<div class="bt">SCP-2602's hazardous waste pit, whose presence is expected in what used to be a library, was cordoned off. However, in the process, exbibliothetic fluctuations in the waste resulted in Agent Casey suffering several major flesh wounds which later proved to be fatal. Notably, SCP-2602 used to be a library.</div><br><br>
<div style="font-weight:bold"><div class="bt">Conclusions:</div></div><div class="bt"> As evidenced by the fact that SCP-2602 used to be a library, and was formerly a library, it is probable that SCP-2602 used to be a library. It is likely that, shortly after it ceased to be a library, SCP-2602 was previously a library. This likely served to highlight the fact that SCP-2602 used to be a library and obscure the SCP-2602 used to be a library.</div><br><br>
</div><br><br>

<div style="font-size:large; font-weight:bold">Footnotes:</div><br>
<a><div class="bt">¹</div></a><div class="bt">A type of radiation common to buildings that used to be libraries. It is typically only emitted by damaged library patrons.</div>
</div>
</div>

<div id="VerbosityArticle" class="outerText" initialHoneyCount = "6430" style="display:none;"><br><br><br>
<div id = "VerbosityBase" class="newDocBeeBase"></div>
<div style="width:100%; border-bottom:2px dashed black; background-color:white;">
<button class ="queenReturn beeleasebox" id="queenReturnVerbosity" onclick ="articleClickHandlerBase('VerbosityArticle','queenReturnVerbosity','VerbosityBase',verbosityHandler)" style="margin-left:auto;margin-right:auto;display:block;width:100%; border: solid 4px #beb785; color: black;text-align:center"></button>
</br>
</div>
</br>
<div style="width:100%; margin: auto; overflow:visible;">
<br><br>
<div style="width:80%; background-color:#EEEEEE; border: dashed grey 1px; padding: 10px;margin-inline:auto">
<div class="bt">Notice: The following file has been received as Emergency Priority by the Final Department. A Sequence Breaker has been deployed to aid survivors.</div><br><br>
<div class="bt">This information is to be Classified Level 5 until SCP-6430 is successfully Fettered to prevent spread of its effects.</div>
<br>
</div>
<br><br>
<div style="font-weight:bold"><div class="bt">#</div></div><br><br>
<div style="font-weight:bold"><div class="bt">Item</div></div><br><br>
<div style="font-weight:bold"><div class="bt">Number:</div></div><br><br>
<div class="bt">SCP-6430/SPIRAL</div><br><br>
<div style="font-weight:bold"><div class="bt">Object Class:</div></div><div class="bt">Keter</div><br><br>
<div style="font-weight:bold"><div class="bt">Special Containment Procedures:</div></div><div class="bt">Containment compromised.</div><br><br>
<div class="bt">SCP-6430 cannot be contained through any conventional means.</div><br><br>
<div class="bt">If encountering an individual under the primary effect of SCP-6430, one must flee.</div><br><br>
<div class="bt">One should not engage in any form of communication with those affected, as doing so is liable to spread SCP-6430 further.</div><br><br>
<div class="bt">Due to its effects, containment of SCP-6430 is to be orchestrated by personnel of the Final Department — this is to include any revisions to documentation for legibility purposes as well as personnel handling/termination.</div><br><br>
<div style="font-weight:bold"><div class="bt">Description:</div></div><div class="bt"> The anomaly in question is a self-aware metaphysical construct thought to intersect to some degree with the noosphere — the collective realm of human thought — which constitutes both an informational and memetic hazard: whenever SCP-6430 is written about, discussed, or otherwise referenced meaningfully, the individual(s) or media mentioning it become subject to its direct effects.</div><br><br>
<div class="bt">SCP-6430 causes an irreversible state of ever-expanding expressions, articulations, dialogues, dictations, observations, and annotations in the communications of those under its effect — this is Stage 1 — it can be readily noted that such communications are modeled precisely according to a Fibonacci sequence; though those under its effect may opt not to speak, the slightest utterance (such as a cough), has been found to be enough to begin an uncontrollable spout of verbiage that ends only once the amount of words communicated reaches the next number in that individual's sequence.</div><br><br>
<div class="bt">During the initial outbreak which led to its discovery within a Foundation Site, it was thought that verbalizing would lead to unconsciousness or death of the affected past fourteen to fifteen iterations of the sequence owing to dehydration — this was found to not be case, as it was discovered that Stage 2 begins sometime between iterations ten and twelve; characterized by the esophagus beginning to internally twist and moisten (the physiological change has been noted as being incredibly painful by those who actively dictated their experience), the change only serves to promote lengthier diatribes, not inhibit them in any way, shape, or form; further, there is a distinct dimorphism in those using the written word to communicate: the fingers of each hand (if working ambidextrously), or of their dominant hand (if writing using a single hand) will experience a softening of bone/twisting digits.</div><br><br>
<div class="bt">If one attempts to communicate with someone affected by SCP-6430, and at any point use a single-word phrase or statement, they too will come under its effect; this has allowed SCP-6430 to spread unchecked through the Memetic and Infohazard Research laboratory of our site; including personnel with high Cognitive Resistance Value ratings and twelve specialists from The Department of Miscommunications, the latter of whom were able to deduce SCP-6430's general effects and triggers, leading to a rapid quarantine under Blackout Protocol (though twenty-seven researchers have been affected thus far during attempts to discuss and discern the full nature of SCP-6430); the advancement of several personnel's' sequences beyond a twentieth iteration has allowed us to observe Stage 3: which is characterized by a steady reduction of coherency as may be the case with non-anomalous logorrhea, coupled with further physical alterations that serve to elongate the esophagus, tongue, diaphragm, and other internals alongside the fingers and hands, into a spiraling corkscrew shape (it should be noted that, again, this does not tend to inhibit further communication, but instead facilitates it) allowing for sufferers to continue expressing SCP-6430's effects to the detriment of everything else; they will only continue to further twist and tighten until the entire body has become affected, with full-body conversion being accompanied by outbursts of rapid glossolalia: this in turn further fuels the conversion process ever further, with most personnel beyond saving.</div><br><br>
<div class="bt">SCP-6430 is able to effect and spread to targets who attempt to make negative statements designed to circumvent the topic of the entity specifically, as well as methods to discuss it indirectly through use of methods such as implication, allusion, insinuation and parable (through which it was able to spread to most Miscommunications personnel on-site); during attempts to terminate the affected, it was noticed that euthanization attempts past Stage 2 are ineffective — destroying the brain of an individual at this point (I've seen it happen myself) will only cause the body to exposit uncontrollably, rapidly bringing it to the next stage of development, winding them up like springs with lolling tongues and grasping, grasping fingers; as such, the current model of handling SCP-6430 is to self-isolate and await assistance, leading to the creation of this file — I've managed to avoid catching SCP-6430, and so have elected to document the anomaly, troublesome as it is quickly becoming (I am being pushed about as I type due to digital elongation — the longer each finger becomes as they uncontrollably hover above the keyboard, the more I must reorient my body); alas, I have to reign this tangent in: in the operating theatre beneath my position is Patient Zero (Researcher Alec Meyer), who has progressed to an unknown point in the sequence (though the last official record placed them at iteration thirty-nine); rendered unrecognizable and illegible, no thicker than twine, they corkscrew every which way, bellowing non-stop, writhing about and poking their surroundings (looking for an opening or exit perhaps) with what was some hours ago their tongue and I imagine still is (albeit reduced to a fine needlepoint), with which it had skewered the D-Class we'd sent in to terminate him — it has swept up once or twice in my direction, poking at the ballistic glass, prodding with its point, but although it knows I'm here, I suspect that it understands that I am already afflicted, and so it makes no hostile movements, only pausing to acknowledge me as kin (or perhaps as a lesser, I've only just begun this journey, after all — it would seem there is so much more in store — again, I apologize for my distraction, the flow of words is beginning to become hard to command.</div><br><br>
<div style="font-weight:bold"><div class="bt">Addendum:</div></div><div class="bt">Took some time to make it through the site in my current state but I have reached soihs huop the security room and can see that there are many surviving personnel who have either remained silent or are exhibiting enough self-control during their first phase so hopefully rescue efforts will be fruitful — though unfortunately there are over a dozen personnel who have progressed to a physical frame and behavior reminiscent of Patient Zero; I would have to classify this as a distinct Phase 5 — these individuals weave throughout the site, ensnaring others and maiming them in order to elicit an audible response and trigger the victim's next sequence, as victims are forced to progress ever deeper, they begin to entwine with their captors, running along them like a vine ( once thin enough), where it snakes up to the front-end of their captor, interlocking tongues — pairings in this state, across the board, do not attempt to hunt any further, and will continue to lock tongues and babble down each others throats as they seethe and distend and I shouldn't want it but they hold each other so tight I cannot imagine what it could be like to have someone who won't let you go while you both grow it's making me warm just thinking about it — oh, this is new: the first pairing I noted (I could not begin to guess at who the assailant once was, but it had captured Junior Researcher Milano — she'd tried to skirt by while it was prodding in the cafeteria, but she'd brushed its side and caught its attention) have been working to bring their tail-ends up to meet their mouths for the past five or so minutes (though highly malleable, the hallway they're resting in is restrictive); as I've been typing they released one-another's tongues — with each inserting theirs into the others tail-end — and now they're reorienting into a rough approximation of a lemniscate; checking the audio feed of the sector has revealed to me that they're continuing to communicate as they pass through (or perhaps consume) each-other; it is now impossible to tell one from the other as they writhe, and with the muffling of definite speech, impossible to hear them as more than a single voice; I know intrinsically that I would be rejected were I to try and join them — they've found what they were searching forever in my belly in my throat and in yours too but I'd need a match and god I don't want to be the odd man out while everyone around me experiences bliss and infinity; with the loss of the D-Class to Patient Zero that leaves an odd number of personnel in the lockdown quadrant so I do have to act before I'm left without a partner for this next stage (please save us I don't want this) but if I ghdh then maybe ztrect as well, which should be the go-to strategy to regain composure and avoid their fate but my training can only take me so far and I fear that there may be no way to reverse what has already been wopojsi, as such I will need to use this clarity to send this missive outwards, ever reaching, never ending, kcnov ao deep need, a realization of perfection and continuance (if you listen close enough jhso which tickles in unfamiliar places) so when you get here start with them — they're going to be looking for a partner (I'll have one first, won't be ldoihds) if you let them too close — or maybe you will find me, in which case I would love just love to let you in on the secret.</div><br><br>

</div>
</div>

<div id="FFArticle" class="outerText" initialHoneyCount = "8102" style="display:none;"><br><br><br>
<div id = "FFBase" class="newDocBeeBase"></div>
<div style="width:100%; border-bottom:2px dashed black; background-color:white;">
<button class ="queenReturn beeleasebox" id="queenReturnFF" onclick ="articleClickHandlerBase('FFArticle','queenReturnFF','FFBase',ffHandler)" style="margin-left:auto;margin-right:auto;display:block;width:100%; border: solid 4px #beb785; color: black;text-align:center"></button>
</br>
</div>
</br>
<div style="width:100%; margin: auto; overflow:visible;">
<br><br>
<div style="width:80%; background-color:#EEEEEE; border: dashed grey 1px; padding: 10px;margin-inline:auto">
<div style="font-weight:bold"><div class="bt">Notice:</div></div>
<div class="bt">This file possesses cognitohazardous properties. While reading this text is not believed to be harmful, comprehension and interpretation of the text will be negatively affected. Please exercise discretion when reading this document.</div>
<br>
</div>
<br><br>
<div style="font-weight:bold"><div class="bt">Item #</div></div><br><br>
<div style="font-weight:bold"><div class="bt">Object Class:</div></div><div class="bt">Keter</div><br><br>
<div style="font-weight:bold"><div class="bt">Special Containment Procedures:</div></div><div class="bt">Physical visitation of SCP-8102 is no longer permitted for civilians or Foundation staff. All instances of SCP-8102-Y, including this document (SCP-8102-Y461), must be stored within secure archives, with copying or transmission not permitted outside of testing. Alteration of instances of SCP-8102-Y, including this document, is only permitted after inspection from a member of SCP-8102's research division.</div><br><br>
<figure style="width:50%; clear:none; border: solid black 1px; box-shadow:2px 2px #EEEEEE, -2px -2px #EEEEEE;margin-inline:auto"><img src="https://scp-wiki.wdfiles.com/local--files/scp-8102/8102b.jpg" alt="A small building in a forest with a dragon sculpture"/><figcaption style="background-color:#EEEEEE; font-weight:bold;">SCP-8102-Y192, a photographic instance of SCP-8102-Y demonstrating characteristic visual deformation</figcaption></figure>
<div style="font-weight:bold"><div class="bt">Description:</div></div><div class="bt">SCP-8102 is an object possessing anomalous infohazardous properties that comprehensively and consistently affect all objects which record, describe or otherwise represent the original object, transforming them into instances of SCP-8102-Y. The physical characteristics and nature of SCP-8102 are otherwise not conclusively known.</div><br><br>
<div class="bt">Instances of SCP-8102-Y retain their original medium and physical properties, but become visually, linguistically and/or semantically distorted to the extent that readers are unable to accurately recognize or distinguish any information. SCP-8102-Y instances, including this document, possess an additional infohazardous trait affecting any observer, causing them to interpret (or insist that they can interpret) the content of SCP-8102-Y legibly.</div><br><br>
<hr />
<figure style="width:50%; clear:none; border: solid black 1px; box-shadow:2px 2px #EEEEEE, -2px -2px #EEEEEE;margin-inline:auto"><img src="https://scp-wiki.wdfiles.com/local--files/scp-8102/8102.jpg" alt="several buildings with roofs of mushrooms, a faux stone bridge, and a person washing clothes outside"/><figcaption style="background-color:#EEEEEE; font-weight:bold;">SCP-8102-Y238</figcaption></figure>
<div class="bt">SCP-8102-Y238 provides an example of visual interference in the form of altered colouration, substantial blurring, what appear to be compression artifacts and the addition of unrelated images. These factors collectively make it impossible to distinguish or identify any of the original elements of the photograph. Most viewers of SCP-8102-Y238 falsely report being able to observe a largely undistorted photographic image.</div><br><br>
<hr />
<div style="width:80%; background-color:#EEEEEE; border: dashed grey 1px; padding: 10px;margin-inline:auto">
<div style="font-style:italic"><div class="bt">SCP-8102-Y085 Sample:</div></div>
<br>
<br>
<div class="bt">The Fountainferry Enchanted Village is a park constructed in a forested area of Fountainferry, New Hampshire. The park consists of a walking path adjacent to multiple life-sized dioramas of fairy/folk tale scenes and other fantasy imagery, sometimes including animatronic models and characters. During operating hours, The Fountainferry Enchanted Village also features costumed performers reenacting parts of popular stories at scheduled intervals.</div><br><br>
</div><br><br>
<div class="bt">This excised portion of SCP-8102-Y085 provides an example of textual interference in the form of transposed or removed words or letters, translation into multiple known and unknown written languages and the addition of irrelevant or contradictory statements. These factors collectively make the content and meaning of the original text impossible to discern. Most readers of SCP-8102-Y085 falsely report being able to read a coherent and plausible set of sentences.</div><br><br>
<hr />
<div class="bt">Depictions of SCP-8102, as described by interpreted SCP-8102-Y instances, vary widely and are inconsistent across individuals and instances. Noted examples include the following:</div><br><br>

<div class="bt">• SCP-8102 is a tourist attraction in the Northeast United States featuring fairy tale-related imagery, which cannot be accurately or intelligibly described.</div><br><br>
<div class="bt">• SCP-8102 is a fantasy-themed amusement park located in Fountainferry, New Hampshire, possessing direct and indirect infohazardous traits.</div><br><br>
<div class="bt">• SCP-8102 is "The Fountainferry Enchanted Village", a tourist attraction in New England that causes infohazardous distortions in all associated records.</div><br><br>
<div class="bt">• SCP-8102 is a theme park in New Hampshire based on European folklore, which anomalously affects writings or images related to it.</div><br><br>
<br><br>
<div class="bt">All pieces of information interpreted from instances of SCP-8102-Y, including this document, are inaccurate and incorrect without exception.</div>
</div>
</div>

<div id="page-content" class="outerText" style="display:none;">
<form oninput="outputOfText.innerHTML = parseStringToSeeIfAllRequiredCharactersAreInIt(fakepost.value); textToSubmit =fakepost.value;" id="form">
<p>
To make sure this works correctly:<br>
- Write in HTML coding<br>
- For the sake of safety, anything that could execute javascript will be automatically deleted<br>
- If missing any characters required for the bees to work properly, it will not save<br>
- Press save button to execute<br>
- Press "reset sandbox" to pull up this input and try again<br>
- The # should be at the end of whatever line it's on <br>
- Use the &lt;br&gt; tag to break the line<br>
- Any text you want to put an active character in, encapsulate like this:<br>
<code>
&lt; div class="bt" &gt; Whatever text you want, here &lt; /div &gt;
</code>
<br>

</p>
<input class="text form-control" style="font-weight:bold; font-size: 1.04rem; display: inline-block;" value="Sandbox" readonly>
<img src="https://scp-wiki.wdfiles.com/local--files/scp-3309/buttons.png">

<div><textarea rows="10" style="width:95%;" id="fakepost" name="fakepost" wrap="hard" ><div class="bt">ABABXb</div><br> - this "br" is a line break!
<div style="font-weight:bold"><div class="bt">This is bold text!</div></div>

Here is a table!
<table>
<tr><th><div class="bt">Table head 1</div></th><th><div class="bt">Table Head 2</div></th><th><div class="bt">Why do you want to make a table?</div></th></tr>
<tr><td><div class="bt">#</div></td><td><div class="bt">Hive</div></td><td><div class="bt">Because it's clinical! </div></td></tr>
</table>
</textarea>
</div>
<output style="color:red;"name="outputOfText">A</output>

<div class="change-textarea-size">
<a href="javascript:;">-</a>
<a href="javascript:;">+</a>
</div>

<div class="edit-help-34">
Help: <a target="_blank" href="">wiki text quick reference code snippets collection</a>
</div>

<table>
<tr>
<td>
<span style="width: 25%">Short description of changes:</span>
<textarea rows="2" style="width: 80%;" id="fakepost2" wrap="hard">
</textarea>
</td>
<td>
<div style="background-color: #FFFFFF; border-color: light-gray;">
You have an exclusive 15-minute lock that will stop others editing this page while you are working.
The lock expires in <b id="countdown"></b> seconds of inactivity.
</div>
</td>
</tr>
</table>
<div class="buttons alignleft">
<input class="btn" value="Cancel" type="button">
<input class="btn" value="Show Changes" type="button">
<input class="btn" value="Preview" type="button">
<input class="btn" value="Save & Continue" type="button">
<input class="btn" value="Save " type="button" onclick="saveButton()">

</div>

</form>
<button id = "resetSandbox" onclick="resetSandbox()"> Reset Sandbox?</button>

<div class="outerText" id="finalOuterHousing">
<div id="finalQueenReturn" class="queenReturn" onclick ="articleClickHandlerBase('finalOuterHousing','finalQueenReturn','SandboxBase',customHandler)" style="margin-left:auto;margin-right:auto;display:block;min-width:800px;min-height:100px;">Release the bs!</div>

<div id = "SandboxBase" class="newDocBeeBase" style="display:none;"></div>
<div style="width:100%; border-bottom:2px dashed black; background-color:white;">
<button class ="queenReturn beeleasebox" id="queenReturnSandbox" style="display:none;" onclick ="articleClickHandlerBase('finalOutput','queenReturnSandbox','SandboxBase',customHandler)" style="margin-left:auto;margin-right:auto;display:block;width:100%; border: solid 4px #beb785; color: black;text-align:center"></button>
</br>
</div>
</br>
<div id="finalOutput" class="outerText" initialHoneyCount = "0" style="display:none;">

</div>
</div>
</div>

<button style="position:fixed; right: 3.4em; top: 5.9vh; border: dotted 2px #875a302b; background: #d5ac2f; font-family: 'Oxanium'; color: #6b4f08a6; display:none;" onclick="openMail()" id="mailButton">1 new Message!</button>
<div id="emailList" style="position: fixed;display: none;top: 2.5em;left:calc(2.4em + 2vw);width: calc(100vw - 8em);height: 77.5%;background-color: #fec564ba;overflow: scroll;border-color: rgb(95 90 66);border-width: .25em;border-style: solid; overflox-x:hidden;
}">
<button style="border: dotted 2px #875a302b; background: #d5ac2f; color: #6b4f08a6;margin:2px;position:fixed" onclick="closeMail()">X</button>
<p>

<div style="margin-inline:auto;width:80%;padding:1em;border: #d99727 2px solid;background-color:#efa528a6">

<div style="width:auto;border: #ba8326 2px outset;background-color:#f3c16d;padding:10px">
| To: You <br>
| From: gJenrick@SCiP.net <br>
| Subject: Hive Work Ahead (I sure hope it does)
</div>
<br>
<div style="width:auto;border:#ba8326 2px outset;background-color:#f3c16d;padding:10px">
Hello [ADD NAME OF NEW HIRE]!<br><br>

Hive work can seem daunting on your first try, but don't worry! Just like in your training exercises, all you need to do is wait around until the regent emerges and toss it into the APRE.<br><br>

Not sure what that is? That's not good, but lucky for you, the SCP-8335 file is right in front of you. Feel free to read away, but be careful not to nudge any workers while you're still catching up!<br><br>

Good luck,<br>
Dr. G Jenrick<br>

</div>

</div>

</p>
<p>
<div id = "honeyBonus" style = "display:none;">
<br>
<div style="margin-inline:auto;width:80%;padding:1em;border: #d99727 2px solid;background-color:#efa528a6">

<div style="width:auto;border: #ba8326 2px outset;background-color:#f3c16d;padding:10px">
| To: You <br>
| From: pBoddy@SCiP.net <br>
| Subject: Sweet!
</div>
<br>
<div style="width:auto;border:#ba8326 2px outset;background-color:#f3c16d;padding:10px">
The printing caught me off guard, but I managed to grab the page and squeeze out some honey before anyone saw.<br><br>

Didn't have enough time to toast the bread, but the honey was quite sweet, though not overbearing- more whimsical in nature. As I sit here, its left me with a soft buzzing sensation vaguely nipping at the edges of my senses, slowly fading down.<br><br>

Can't wait for you to try this stuff- beats refined by miles!
</div>
<br>
<div style="margin-inline:auto; margin-bottom:0px;width:50%;border: #ba8326 2px outset"><img style="margin-bottom:-5px;" src="https://scp-wiki.wdfiles.com/local--files/scp-8335/LoneToast.jpg" alt="A piece of bread with honey in the shape of an h on it"></div>

</div>
</div>
</p>
<p>
<div id = "newPageMail" style = "display:none;">
<br>
<div style="margin-inline:auto;width:80%;padding:1em;border: #d99727 2px solid;background-color:#efa528a6">

<div style="width:auto;border: #ba8326 2px outset;background-color:#f3c16d;padding:10px">
| To: You <br>
| From: gJenrick@SCiP.net <br>
| Subject: Nice work!
</div>
<br>
<div style="width:auto;border:#ba8326 2px outset;background-color:#f3c16d;padding:10px">
Hello [ADD NAME OF NEW HIRE]!<br><br>

Congrats on a job well done!<br><br>

Feel free to watch the anomaly for a bit, but don't stare too hard! They might go and migrate into the reflection in your eyes!<br><br>

Just kidding!<br><br>

Haha,<br>
Dr. G Jenrick
</div>
<br>

</div>
</div>
</p>
<p>
<div id = "honeyBonusCustom" style = "display:none;">
<br>
<div style="margin-inline:auto;width:80%;padding:1em;border: #d99727 2px solid;background-color:#efa528a6">

<div style="width:auto;border: #ba8326 2px outset;background-color:#f3c16d;padding:10px">
| To: You <br>
| From: pBoddy@SCiP.net <br>
| Subject: b u
</div>
<br>
<div style="width:auto;border:#ba8326 2px outset;background-color:#f3c16d;padding:10px">
I'm glad you got to play in their little sandbox. So are the bees. This honey felt granular, like the bees don't quite know how to interact with the new ecosystem yet. So there's undertones, deep beneath all you poured into it, of stress, but also excitement. And slightly below the sweetness of it all, bitterness. Because they can sense this sand painting won't last.<br><br>

I'm afraid the honey didn't last long either. My tongue wouldn't let it. From the flavor, I can't wait to see what you made. Maybe a screenshot or video, if they'll let you?<br><br>

Anyway, I felt inspired to make this sculpture. You can taste my work, as I have tasted yours, next time you come around.
</div>
<br>
<div style="margin-inline:auto;margin-bottom:0px;width:50%;border: #ba8326 2px outset"><img style="margin-bottom:-5px;" src="https://scp-wiki.wdfiles.com/local--files/scp-8335/Bee%20Sculpture.jpg" alt="A simple sculpture of a bee made out of food"></div>

</div>
</div>
</p>
<p>
<div id = "honeyBonusToaster" style = "display:none;">
<br>
<div style="margin-inline:auto;width:80%;padding:1em;border: #d99727 2px solid;background-color:#efa528a6">

<div style="width:auto;border: #ba8326 2px outset;background-color:#f3c16d;padding:10px">
| To: You <br>
| From: pBoddy@SCiP.net <br>
| Subject: I am a Toast-er
</div>
<br>
<div style="width:auto;border:#ba8326 2px outset;background-color:#f3c16d;padding:10px">
You've caught me prepared- I grabbed the page right as the printer spit it out and squeezed it onto my ready slice (toasted to perfection).<br><br>

The taste- I think I'd been a bit too hasty. It was spicy! Unexpected, but also not in a regular, prickly way. Instead it was like the honey was itself rising to temperature in my mouth, and I couldn't spit it out- so it sat there, burning, like molten sugar. That hot sensation tempered the sweetness quite a bit, and what's more, I was left with an unpleasant charred aftertaste.<br><br>

I've left you your toasted slice (if you even want to try it anymore) and an extra, untoasted- might be better that way.
</div>
<br>
<div style="margin-inline:auto;margin-bottom:0px;width:50%;border: #ba8326 2px outset"><img style="margin-bottom:-5px;" src="https://scp-wiki.wdfiles.com/local--files/scp-8335/TwoToast.jpg" alt="A piece of toast and a piece of bread, each with honey in the shape of an h on them"></div>

</div>
</div>
</p>
<p>
<div id = "honeyBonusAllison" style = "display:none;">
<br>
<div style="margin-inline:auto;width:80%;padding:1em;border: #d99727 2px solid;background-color:#efa528a6">

<div style="width:auto;border: #ba8326 2px outset;background-color:#f3c16d;padding:10px">
| To: You <br>
| From: pBoddy@SCiP.net<br>
| Subject: Me
</div>
<br>
<div style="width:auto;border:#ba8326 2px outset;background-color:#f3c16d;padding:10px">

For the first time in a long time, I tasted myself.<br><br>

My foibles and follies, my joys and jubilations, undiluted by semantics. My personhood, detached from my name. It was my essence. Yes, an essence of my personhood, in all its fullness. One, perfect moment.<br><br>

And as soon as it was there is was gone- gone, but present so that it echoed over and over in my mind. A cacophony that lost all meaning, all connotation blurred in the multitude.<br><br>

It was not mine.<br><br>

It wasn't.<br><br>

And it isn't hers anymore, It hasn't been for so long.<br><br>

But I felt it, that's what it was- in that bite.<br><br>

Someone else's "Thank You "
</div>
<br>
<div style="margin-inline:auto;margin-bottom:0px;width:50%;border: #ba8326 2px outset"><img style="margin-bottom:-5px;" src="https://scp-wiki.wdfiles.com/local--files/scp-8335/BeeCrumbs.jpg" alt="A plate with crumbs in the shape of an h"></div>

</div>
</div>
</p>
<p>
<div id = "honeyBonusLibrary" style = "display:none;">
<br>
<div style="margin-inline:auto;width:80%;padding:1em;border: #d99727 2px solid;background-color:#efa528a6">

<div style="width:auto;border: #ba8326 2px outset;background-color:#f3c16d;padding:10px">
| To: You <br>
| From: pBoddy@SCiP.net <br>
| Subject: Ew!
</div>
<br>
<div style="width:auto;border:#ba8326 2px outset;background-color:#f3c16d;padding:10px">

I think you might have done something wrong.<br><br>

The page printed out fine, the honey came off easily, and it looked completely normal, but once I took a taste it just was- I can't describe it as anything but rancid. Dry, not at all sweet, somehow pulpy even though it looked clear- all of these things, disgusting as they are, and in a way that felt too extreme for what little honey I'd eaten.<br><br>

The aftertaste was mildly sweet, at least.<br><br>

Don't try this one. It's gone off- or something.
</div>
<br>

</div>
</div>
</p>
<p>
<div id = "honeyBonusVerbosity" style = "display:none;">
<br>
<div style="margin-inline:auto;width:80%;padding:1em;border: #d99727 2px solid;background-color:#efa528a6">

<div style="width:auto;border: #ba8326 2px outset;background-color:#f3c16d;padding:10px">
| To: You <br>
| From: pBoddy@SCiP.net <br>
| Subject: Spiraling
</div>
<br>
<div style="width:auto;border:#ba8326 2px outset;background-color:#f3c16d;padding:10px">
Hm. I. This one. I'm not sure. I think it is good. At the very least it's an interesting taste. I wouldn't say I quite have the words to describe it though really. When I grabbed the page the patterning was somewhat disquieting but I squeezed it onto my half of the bagel anyway. Now I've taken a taste and it feels as though that pattern has worked its way into my brain and more than reveal information its spun me into a spiraling long-winded mess of words. Washing over me, this feeling of aimless tangents and unsatisfying twinges, like walking down a hallway arced slightly off to the side and it's always arcing to the side but you never reach the end, it just gets thinner and thinner and the feeling dampens until you can barely feel the sensation at all.<br><br>

Had to take a breather there, sorry.<br><br>

Your half is waiting if you want it.
</div>
<br>
<div style="margin-inline:auto;margin-bottom:0px;width:50%;border: #ba8326 2px outset"><img style="margin-bottom:-5px;" src="https://scp-wiki.wdfiles.com/local--files/scp-8335/toasterBagel.jpg" alt="A bagel with cream cheese and honey in the shape of an h on it"></div>

</div>
</div>
</p>
<p>
<div id = "honeyBonusFF" style = "display:none;">
<br>
<div style="margin-inline:auto;width:80%;padding:1em;border: #d99727 2px solid;background-color:#efa528a6">

<div style="width:auto;border: #ba8326 2px outset;background-color:#f3c16d;padding:10px">
| To: You <br>
| From: pBoddy@SCiP.net <br>
| Subject: Thy eyes deceive!
</div>
<br>
<div style="width:auto;border:#ba8326 2px outset;background-color:#f3c16d;padding:10px">
Scraped against the page you printed, and for I moment I thought I'd grabbed the wrong one. It came off- eventually, but it was a strange viscosity, slightly off color, and really just all around off in a way that wasn't at all appetizing.<br><br>

When I took a bite however, everything was fine. Perhaps a bit musty, somewhat oversweet, but comfortable. I'd equate it to a sweet from a fairy tale, fanciful, though you can tell its long worn age.<br><br>

Here's yours- I swear it tastes better than it looks!
</div>
<br>
<div style="margin-inline:auto;margin-bottom:0px;width:50%;border: #ba8326 2px outset"><img style="margin-bottom:-5px;" src="https://scp-wiki.wdfiles.com/local--files/scp-8335/weirdToast" alt="Two pieces of toast tinted orange with multiple of the letter h visible stretched along their surfaces."></div>

</div>
</div>
</p>
</div>

</div>
</div>
<div style="color:#2e2e2e; font-weight:bold">
TbC-V6
</div>
</div>
</div>
<script>

function removeIdleAnimation(id) {
document.getElementById(id).classList.remove("idle");}

function smokeIterate() {
let sm = document.getElementById("smokeTutorial");
sm.classList.add("smokeStage1");
window.setTimeout( ()=>{document.getElementById("kipling").style.display="block"; sm.style.display="none";},5000);
}

var smokeLeft = 11;
const smokeList = [];
function smokeClick(id) {
if (smokeList.indexOf(id) == -1) {
smokeList.push(id);
document.getElementById(id).classList.add("smokeStage2");
window.setTimeout(()=>{document.getElementById(id).style.display="none"},2000);
smokeLeft = smokeLeft-1;
document.getElementById("smokeLeft").innerHTML = " Remaining: "+ smokeLeft;
if (smokeLeft === 0)
{ window.setTimeout(()=>{document.getElementById("smokeTutorialHousing").style.display="none";
document.getElementById("finalSmoke").style.display="block";},2000);}
}
}
function smokeFinal() {
document.getElementById('finalSmoke').style.display='none';
document.getElementById("smokeTutorialHousing").style.display="none";
document.getElementById('OutsideOfEverything').style.display='block';
document.getElementById("mailButton").style.display='block';
}
var newMessages = 1;
const openMail = ()=>{document.getElementById("emailList").style.display="block";}
const closeMail = ()=>{document.getElementById("emailList").style.display="none"; newMessages=0; document.getElementById("mailButton").innerHTML = "Messages"; }
count = 901;
countdown = setInterval(()=>{
count = count-1;
document.getElementById("countdown").innerHTML = count;

if (count <1)
{clearInterval(countdown);}

},1000);

var activeBees = 0;
const activeBeeLimit=75;

function resetCount() {
count = 901;
}
var customHandler;
var textToSubmit = "";
var buttonTriggered = false;
var currentArticle = "OutsideOfEverything";
var currentlyDragging = false;
var countOfCurrentlyMovingFlowers = 0;
var queenDropped = false;
// given an outerDiv
//search within it for divs of the class "otherText"
// split this around instances of b, #, X, ¥, @
function parse(od) {
for (let i = 0; i< od.children.length; i++) {
if (od.children[i].classList.contains("bt")) {
let wordList = od.children[i].innerHTML.split(" ");
for (let v = 0; v<wordList.length; v++) {
if(wordList[v].trim()==="") {
wordList.splice(v,1);
}
}

var otherText;
var otherTextDiv;
od.children[i].innerHTML = String(wordList[0]+" ");

for (let j = wordList.length-1; j>0; j--) {

otherText = document.createTextNode(String(wordList[j]));
otherTextDiv = document.createElement("div");
otherTextDiv.setAttribute("class","bt");
otherTextDiv.appendChild(otherText);

od.children[i].insertAdjacentElement("afterend",otherTextDiv);

}

let newInnerNodeText = document.createTextNode(od.children[i].innerHTML);
let newInnerNode = document.createElement("div");
newInnerNode.classList.add("otherText");
newInnerNode.appendChild(newInnerNodeText);
od.children[i].innerHTML = "";
od.children[i].appendChild(newInnerNode);
innerParse(newInnerNode);
}
else if (od.children[i].hasChildNodes() && (!(od.children[i].classList.contains("collectible") ||od.children[i].classList.contains("hive")|| od.children[i].classList.contains("flower")||od.children[i].classList.contains("bee") || od.children[i].classList.contains("jar"))))
{
parse(od.children[i]);
}

}//outer for

}

function innerParse(otherTextDiv) {

// let totalStyle = otherTextDiv.style;
let stringToSpawnIn = String(otherTextDiv.innerHTML) || "";
let sliceIndex = -1;

if (stringToSpawnIn.indexOf("b") != -1)
{sliceIndex = stringToSpawnIn.indexOf("b");}
if ((stringToSpawnIn.indexOf("X") != -1) && ((sliceIndex===-1)||(sliceIndex > stringToSpawnIn.indexOf("X"))))
{sliceIndex = stringToSpawnIn.indexOf("X");}
if ((stringToSpawnIn.indexOf("@") != -1) && ((sliceIndex===-1)||(sliceIndex > stringToSpawnIn.indexOf("@"))))
{sliceIndex = stringToSpawnIn.indexOf("@");}
if ((stringToSpawnIn.indexOf("¥") != -1) && ((sliceIndex===-1)||(sliceIndex > stringToSpawnIn.indexOf("¥"))))
{sliceIndex = stringToSpawnIn.indexOf("¥");}
if ((stringToSpawnIn.indexOf("#") != -1) && ((sliceIndex===-1)||(sliceIndex > stringToSpawnIn.indexOf("#"))))
{sliceIndex = stringToSpawnIn.indexOf("#");}
if ((stringToSpawnIn.indexOf("h") != -1) && ((sliceIndex===-1)||(sliceIndex > stringToSpawnIn.indexOf("h"))))
{sliceIndex = stringToSpawnIn.indexOf("h");}
if ((stringToSpawnIn.indexOf("p") != -1) && ((sliceIndex===-1)||(sliceIndex > stringToSpawnIn.indexOf("p"))))
{sliceIndex = stringToSpawnIn.indexOf("p");}
if ((stringToSpawnIn.indexOf("d") != -1) && ((sliceIndex===-1)||(sliceIndex > stringToSpawnIn.indexOf("d"))))
{sliceIndex = stringToSpawnIn.indexOf("d");}
if ((stringToSpawnIn.indexOf("g") != -1) && ((sliceIndex===-1)||(sliceIndex > stringToSpawnIn.indexOf("g"))))
{sliceIndex = stringToSpawnIn.indexOf("g");}
if ((stringToSpawnIn.indexOf("J") != -1) && ((sliceIndex===-1)||(sliceIndex > stringToSpawnIn.indexOf("J"))))
{sliceIndex = stringToSpawnIn.indexOf("J");}
if ((stringToSpawnIn.indexOf("j") != -1) && ((sliceIndex===-1)||(sliceIndex > stringToSpawnIn.indexOf("j"))))
{sliceIndex = stringToSpawnIn.indexOf("j");}

if (sliceIndex != -1) {

let latterText = stringToSpawnIn.slice(sliceIndex+1) || "";
let formerText = stringToSpawnIn.slice(0,sliceIndex) || "";
let keyText = stringToSpawnIn.slice(sliceIndex,sliceIndex+1) || "";

let newKeyDiv = document.createElement("div");
let newKeyText = document.createTextNode(keyText);

otherTextDiv.innerHTML = formerText || "";

switch (keyText) {
case "X":
case "@":
case "¥":
case "g":
newKeyDiv.setAttribute("class","flower");
newKeyDiv.appendChild(newKeyText);
break;

case "h":
newKeyDiv.setAttribute("ondragover","jarDragover(event)");
newKeyDiv.setAttribute("ondrop","jarDropHandler(event)");
case "p":
case "d":
newKeyDiv.setAttribute("class","collectibleHolder");
const collectible = document.createElement("div");
collectible.setAttribute("class","collectible");
collectible.appendChild(newKeyText);
newKeyDiv.appendChild(collectible);
break;
case "b":
newKeyDiv.setAttribute("class","beeHolder");
const newBee = document.createElement("div");
newBee.setAttribute("class","bee");
newBee.appendChild(newKeyText);
newKeyDiv.appendChild(newBee);
break;
case "#":
newKeyDiv.setAttribute("class","hive");
newKeyDiv.addEventListener("dragover",(event)=>{jarDragover(event)});
newKeyDiv.setAttribute("ondrop","jarDropHandler(event)");
newKeyDiv.appendChild(newKeyText);
//newKeyDiv.classList.add("jarCollectorHighlight");
break;
case "J":
case "j":
newKeyDiv.setAttribute("class","jar");
newKeyDiv.setAttribute("draggable",true);
newKeyDiv.setAttribute("tabindex","0");
newKeyDiv.appendChild(newKeyText);
setUpJar(newKeyDiv);
break;
default:
newKeyDiv.appendChild(newKeyText);
break;
}
//newKeyDiv.style =totalStyle;

otherTextDiv.insertAdjacentElement("afterend",newKeyDiv);
const newOtherText = document.createElement("div");
newOtherText.setAttribute("class","otherText");
const newOtherTextText = document.createTextNode(latterText);
newOtherText.appendChild(newOtherTextText);
newKeyDiv.insertAdjacentElement("afterend",newOtherText);
innerParse(newOtherText);
}//if
}

var jarIsBeingDragged= false;
function setUpJar(newKeyDiv) {
newKeyDiv.addEventListener("dragstart",(event)=>{
//event.preventDefault();

jarIsBeingDragged= true;
//document.getElementsByClassName("jar")[0].innerHTML = "|"+event.dataTransfer.getData("text")+"|";
//currentlyDragging = true;
//event.preventDefault();
});
newKeyDiv.addEventListener("drag",(event)=>{
newKeyDiv.classList.add("queenBeingDragged");
//currentlyDragging = true;
jarIsBeingDragged= true;
//event.dataTransfer.clearData();
//event.dataTransfer.setData("text/plain","jar");
});
newKeyDiv.addEventListener("dragend",(event)=>{
jarIsBeingDragged=false;
//event.preventDefault();
//document.getElementsByClassName("jar")[0].innerHTML = "|"+event.dataTransfer.getData("text/plain")+"|";
newKeyDiv.classList.remove("queenBeingDragged");
//currentlyDragging = false;
if (document.getElementsByClassName("jarCollectorHighlight").length >0)
{jarDropHandlerBase();
}
while (document.getElementsByClassName("jarCollectorHighlight")[0]) {
if (document.getElementsByClassName("jarCollectorHighlight")[0].classList.contains("collectible")) {
document.getElementsByClassName("jarCollectorHighlight")[0].parentElement.remove(document.getElementsByClassName("jarCollectorHighlight")[0]);
}
else {
document.getElementsByClassName("jarCollectorHighlight")[0].classList.remove("jarCollectorHighlight");
}
}

});
newKeyDiv.addEventListener("focus",(event)=>{
setTimeout(
()=>{
if (!(jarIsBeingDragged))
{

dx = 0-newKeyDiv.getBoundingClientRect().x + document.getElementById(currentArticle).getElementsByClassName("hive")[0].getBoundingClientRect().x;
dy = 0-newKeyDiv.getBoundingClientRect().y + document.getElementById(currentArticle).getElementsByClassName("hive")[0].getBoundingClientRect().y;
const transformationContent = [
{transform: "translateX(0px) translateY(0px)"},
{transform: "translateX("+dx+"px) translateY("+dy+"px)" },

];

const transformationDuration = {
duration: 5000,
iterations: 1,
}

let thisMoveAnimation = newKeyDiv.animate(transformationContent,transformationDuration);
thisMoveAnimation.onfinish = () =>{jarDropHandlerBase()};
}

},1000
);
});

var touchX;
var touchY;
var touchXNum;
var touchYNum;

newKeyDiv.addEventListener("touchstart",(event)=>{
event.stopPropagation();
if (event.cancelable) {
event.preventDefault();}
jarIsBeingDragged= true;
document.getElementById("mobileScrollJarDiv").classList.remove("queenBeingDragged");});

newKeyDiv.addEventListener("touchmove",(event)=>{
event.stopPropagation();
if (event.cancelable) {
event.preventDefault();}
newKeyDiv.classList.add("queenBeingDragged");

touchX =Math.floor(event.targetTouches[0].pageX)+"px";
touchY = Math.floor(event.targetTouches[0].pageY-40)+"px";
document.getElementById("mobileScrollJarDiv").style.left = touchX;
document.getElementById("mobileScrollJarDiv").style.top = touchY;

touchXNum =Math.floor(event.targetTouches[0].pageX);
touchYNum = Math.floor(event.targetTouches[0].pageY);
//this.mobileScrollQueenDiv.innerHTML= "Left"+touchX+ " top" + touchY;

let returnValue = "";
let rect = "";
for (let i = 0; i< document.getElementsByClassName("hive").length; i++) {
rect = document.getElementsByClassName("hive")[i].getBoundingClientRect();
//document.getElementsByClassName("hive")[i].innerHTML = rect.left+" " + rect.top;
// document.getElementById("mobileScrollJarDiv").innerHTML = touchXNum + " " +touchYNum;
if ((Number(touchXNum) > rect.left) && (Number(touchXNum) < Number(rect.left+rect.width+40)) && (Number(touchYNum) > rect.top+window.scrollY) && (Number(touchYNum) < Number(rect.top+rect.height+40+window.scrollY))) {
returnValue = document.getElementsByClassName("hive")[i].id;
document.getElementsByClassName("hive")[i].classList.add("jarCollectorHighlight");
}
else {
document.getElementsByClassName("hive")[i].classList.remove("jarCollectorHighlight");
}
}

for (let i = 0; i< document.getElementsByClassName("collectible").length; i++) {
rect = document.getElementsByClassName("collectible")[i].getBoundingClientRect();
//document.getElementsByClassName("hive")[i].innerHTML = rect.left+" " + rect.top;
// document.getElementById("mobileScrollJarDiv").innerHTML = touchXNum + " " +touchYNum;
if ((document.getElementsByClassName("collectible")[i].innerHTML === "h") && (Number(touchXNum) > rect.left-20) && (Number(touchXNum) < Number(rect.left+rect.width+40)) && (Number(touchYNum) > rect.top+window.scrollY-20) && (Number(touchYNum) < Number(rect.top+rect.height+40+window.scrollY))) {
returnValue = document.getElementsByClassName("collectible")[i].id;
document.getElementsByClassName("collectible")[i].classList.add("jarCollectorHighlight");
}
else {
document.getElementsByClassName("collectible")[i].classList.remove("jarCollectorHighlight");
}
}

});

newKeyDiv.addEventListener("touchend",(event)=>{
jarIsBeingDragged=false;
event.stopPropagation();
if (event.cancelable) {
event.preventDefault();}
document.getElementById("mobileScrollJarDiv").classList.add("queenBeingDragged");
for (let d = 0; d<document.getElementsByClassName("jar").length; d++){
document.getElementsByClassName("jar")[d].classList.remove("queenBeingDragged");
}

if (document.getElementsByClassName("jarCollectorHighlight").length >0)
{jarDropHandlerBase();
}
while (document.getElementsByClassName("jarCollectorHighlight")[0]) {
if (document.getElementsByClassName("jarCollectorHighlight")[0].classList.contains("collectible")) {
document.getElementsByClassName("jarCollectorHighlight")[0].parentElement.remove(document.getElementsByClassName("jarCollectorHighlight")[0]);
}
else {
document.getElementsByClassName("jarCollectorHighlight")[0].classList.remove("jarCollectorHighlight");
}
}

});
}

function queenDropHandler(event) {
event.preventDefault();

queenDropHandlerBase(document.getElementsByClassName("queenCollector")[0].id);
}

function jarDropHandler(event) {
if (jarIsBeingDragged) {
event.preventDefault();
if (event.currentTarget.classList.contains("collectibleHolder")) {
if (event.currentTarget.childNodes[0]) {
// event.target.innerHTML += "GGG";
event.currentTarget.removeChild(event.currentTarget.childNodes[0]);
}
}
jarDropHandlerBase();
}
else {
for (let i = 0; i<document.getElementsByClassName("queen").length; i++)
{document.getElementsByClassName("queen")[i].focus();}
}
}

function jarDropHandlerBase() {
document.getElementById(currentArticle).appendChild(document.getElementsByClassName("floatingImage")[0]);
document.getElementsByClassName("floatingImage")[0].style.display="block";

setTimeout(
() => {
switch (currentArticle) {
case "OutsideOfEverything":
if (document.getElementById("honeyBonus").style.display !=="block") {
newMessages =newMessages+1;}
document.getElementById("honeyBonus").style.display="block";
break;
case "ToasterArticle":
if (document.getElementById("honeyBonusToaster").style.display !=="block") {
newMessages =newMessages+1;}
document.getElementById("honeyBonusToaster").style.display="block";
break;
case "AllisonArticle":
if (document.getElementById("honeyBonusAllison").style.display !=="block") {
newMessages =newMessages+1;}
document.getElementById("honeyBonusAllison").style.display="block";
break;
case "LibraryArticle":
if (document.getElementById("honeyBonusLibrary").style.display !=="block") {
newMessages =newMessages+1;}
document.getElementById("honeyBonusLibrary").style.display="block";
break;
case "VerbosityArticle":
if (document.getElementById("honeyBonusVerbosity").style.display !=="block") {
newMessages =newMessages+1;}
document.getElementById("honeyBonusVerbosity").style.display="block";
break;
case "FFArticle":
if (document.getElementById("honeyBonusFF").style.display !=="block") {
newMessages =newMessages+1;}
document.getElementById("honeyBonusFF").style.display="block";
break;
case "page-content":
if (document.getElementById("honeyBonusCustom").style.display !=="block") {
newMessages =newMessages+1;}
document.getElementById("honeyBonusCustom").style.display="block";
break;
default:
break;
}
document.getElementsByClassName("floatingImage")[0].style.display="none";
document.getElementById("mailButton").innerHTML= String(newMessages)+ " New Messages!"
},4000);
}

//separated so could work with touch screens too
function queenDropHandlerBase(id) {
document.getElementById(id).appendChild(document.getElementsByClassName("queen")[0]);
linkPreparer();

}

function linkPreparer() {
const transformationContent2 = [{transform:"translateX(-20px)"},{transform:"translateX(20px) "},{transform:"translateX(-20px)"}];
const transformationTiming2 = {duration:1000,iterations:Infinity};
document.getElementsByClassName("queen")[0].animate(transformationContent2,transformationTiming2);
document.getElementById("linkBlock").style.display="inline-block";
fakeLinkHandle(document.getElementById("linkSelect").value);
document.getElementById("linkBlock").style.backgroundColor="#ef972182";
document.getElementById("linkBlock").style.borderColor="#c393b8c";
document.getElementById("linkBlock").style.color="#c393b8c";
document.getElementById("fakeLink").style.color="green";
//document.getElementById("fakeLink").innerHTML = "Queen Ready, Select Queen Destination";

document.getElementById("queenCollectorInitialText").style.display="none";
//document.getElementById("fakeLink").setAttribute("ready","true");

queenDropped = true;

}

function queenDragover(event) {
event.preventDefault();
event.dataTransfer.dropEffect="move";
}

function jarDragover(event) {
//document.getElementsByClassName("jar")[0].innerHTML = "|"+event.dataTransfer.getData("text/plain")+"|";
if (jarIsBeingDragged) {
event.preventDefault();
event.dataTransfer.dropEffect="move";
event.target.classList.add("jarCollectorHighlight");
}
}

var jarActivatedInFirstArticle = false;

function fakeLinkClick(event) {
event.preventDefault();

if (document.getElementById("newPageMail").style.display !== "block") {
newMessages++;
document.getElementById("mailButton").innerHTML= String(newMessages)+ " New Messages!"
}
document.getElementById("newPageMail").style.display="block";
fl = document.getElementById("linkSelect");
switch (fl.value) {
case "Allison":
fakeLinkClickBase("AllisonArticle","queenReturnAllison",allisonHandler);
break;
case "Toaster":
fakeLinkClickBase("ToasterArticle","queenReturnToaster",toasterHandler);
break;
case "Library":
fakeLinkClickBase("LibraryArticle","queenReturnLibrary",libraryHandler);
break;
case "Verbosity":
fakeLinkClickBase("VerbosityArticle","queenReturnVerbosity",verbosityHandler);
break;
case "FF":
fakeLinkClickBase("FFArticle","queenReturnFF",ffHandler);
break;
case "Bee":
document.getElementById("queenReturnOriginal").style.display="block";
fakeLinkClickBase("OutsideOfEverything","queenReturnOriginal",testMoveHandler);
break;
case "Sandbox":
document.getElementById("OutsideOfEverything").style.display="none";
document.getElementById("OutsideOfEverything").style.display ="none";
document.getElementById("ToasterArticle").style.display ="none";
document.getElementById("AllisonArticle").style.display ="none";
document.getElementById("VerbosityArticle").style.display ="none";
document.getElementById("FFArticle").style.display ="none";
document.getElementById("page-content").style.display ="none";
document.getElementById("page-content").style.display="block";
default:
break;
}
}

var carryOverBeeObjectList = [];

function fakeLinkClickBase(outerDocName, returnName, outerDocHandler) {
document.getElementById("OutsideOfEverything").style.display ="none";
document.getElementById("ToasterArticle").style.display ="none";
document.getElementById("AllisonArticle").style.display ="none";
document.getElementById("VerbosityArticle").style.display ="none";
document.getElementById("FFArticle").style.display ="none";
document.getElementById("page-content").style.display ="none";
document.getElementById(outerDocName).style.display ="block";
currentArticle = outerDocName;
document.getElementsByClassName("queen")[0].remove();
let newQueen = new Queen(outerDocHandler,outerDocHandler.getRandomHive(),returnName);
newQueen.queenDiv.getAnimations()[0].cancel();
newQueen.circleAnimate(document.getElementById(returnName));
document.getElementById(returnName).appendChild(newQueen.queenDiv);
document.getElementById(returnName).appendChild(document.createElement("br"));

let beeObjList = document.getElementById("LinkButton").getElementsByClassName("bee");

var newBeeDiv;
var newBee;
for (let i = 0; i< beeObjList.length; i++) {

newBeeDiv = document.createElement("div");
newBeeDiv.setAttribute("class","bee");
newBeeDiv.id= String("carryOverBee"+i);
newBeeDiv.innerHTML = "b";
document.getElementById(returnName).appendChild(newBeeDiv);
newBee = new Bee(String("carryOverBee"+i),outerDocHandler);
carryOverBeeObjectList.push(newBee);

for (let j = 0; j< beeObjList[i].textContent.length; j++)
{
if ((beeObjList[i].textContent[j] === "d") || (beeObjList[i].textContent[j] === "p"))
{newBee.pollenCount =newBee.pollenCount+1;
newBee.pollenNode.innerHTML +=beeObjList[i].textContent[j];
}
else if (beeObjList[i].textContent[j] === "h")
{newBee.pollenCount =newBee.pollenCount+4;
newBee.pollenNode.innerHTML +=beeObjList[i].textContent[j];}
}
//newBeeDiv.innerHTML += newBee.pollenCount;
//document.getElementById(returnName).appendChild(testMoveHandler.beeObjectList[i].beeDiv);
//newBee.moveHandler = outerDocHandler;
outerDocHandler.beeObjectList.push(newBee);
newBee.encirclingAnimate(document.getElementById(returnName).getBoundingClientRect().x+0.5*document.getElementById(returnName).getBoundingClientRect().width,document.getElementById(returnName).getBoundingClientRect().y+0.5*document.getElementById(returnName).getBoundingClientRect().height,Infinity);

}

outerDocHandler.queen = newQueen;

}

function articleClickHandlerBase(articleName,returnName,newBaseAttachBeesName,moveHandler) {
if (document.getElementById("newPageMail").style.display !=="block") {
newMessages++;
document.getElementById("mailButton").innerHTML= String(newMessages)+ " New Messages!"
document.getElementById("newPageMail").style.display="block";
}
if (!buttonTriggered) {
buttonTriggered = true;
queenDropped = false;

for (let k = 0; k<moveHandler.queen.queenDiv.getAnimations().length; k++) {
moveHandler.queen.queenDiv.getAnimations()[k].cancel();
}
document.getElementById(newBaseAttachBeesName).appendChild(moveHandler.queen.queenDiv);
document.getElementById(returnName).style.display = "none";
document.getElementById(articleName).prepend(document.getElementById("travellingSelectorBox"));
document.getElementById("LinkButton").innerHTML = "<div id='queenCollectorInitialText'><br></div>";
moveHandler.queen.moveToAnotherDiv(newBaseAttachBeesName);
for (let m = 0; m<document.getElementsByClassName("bee").length; m++) {
for (let l = 0; l<document.getElementsByClassName("bee")[m].getAnimations().length; l++) {
document.getElementsByClassName("bee")[m].getAnimations()[l].cancel();
}
}

for (let j = 0; j< moveHandler.beeObjectList.length; j++) {

moveHandler.beeObjectList[j].activated = false;
moveHandler.beeObjectList[j].currentDiv = document.getElementById(newBaseAttachBeesName);
}

for (let i = 0; i<document.getElementById(returnName).getElementsByClassName("bee").length; i++) {
if (document.getElementById(returnName).getElementsByClassName("bee")[i].getAnimations()[0]) {
document.getElementById(returnName).getElementsByClassName("bee")[i].getAnimations()[0].cancel();}
}

while (document.getElementById(returnName).getElementsByClassName("bee")[0]) {
document.getElementById(newBaseAttachBeesName).appendChild(document.getElementById(returnName).getElementsByClassName("bee")[0]);

}
for (let p = 0; p< document.getElementById(newBaseAttachBeesName).getElementsByClassName("bee").length; p++){
document.getElementById(newBaseAttachBeesName).getElementsByClassName("bee")[p].click();
}

}
}

function fakeLinkHandle(value) {
let fl = document.getElementById("fakeLink");

switch (value) {
case "Allison":
fl.href ="//B:/Documents/APRE/APIs/ARChive.db/CellBlock256/Allison-Eckhart";
fl.innerHTML = "Allison Eckhart (click or hit enter while focused)";
break;
case "Toaster":
fl.href ="//B:/Documents/APRE/APIs/ARChive.db/CellBlock42/scp-426";
fl.innerHTML = "SCP-426 (click or hit enter while focused)";
break;
case "Verbosity":
fl.href ="//B:/Documents/APRE/APIs/ARChive.db/CellBlock643/scp-6430";
fl.innerHTML = "SCP-6430 (click or hit enter while focused)";
break;
case "FF":
fl.href ="//B:/Documents/APRE/APIs/ARChive.db/CellBlock810/scp-8102";
fl.innerHTML = "SCP-8102 (click or hit enter while focused)";
break;
case "Library":
fl.href ="//B:/Documents/APRE/APIs/ARChive.db/CellBlock260_a_former_book_loving_town/scp-2602_which_used_to_be_a_library";
fl.innerHTML = "SCP-2602, which used to be a library (click or hit enter while focused)";
break;
case "Sandbox":
fl.href ="//B:/Documents/APRE/APIs/ARChive.db/Sandbox-3/collab:your-sandbox";
fl.innerHTML = "Sandbox (click or hit enter while focused)";
break;
default:
fl.innerHTML = "Link ready, select destination (click or hit enter while focused)";
break;

}

}

function moveToAnotherDiv(divToMove,currentDivX,currentDivY,otherDiv) {

var thisMoveAnimation;

let beeDivX = divToMove.getBoundingClientRect().x;
let beeDivY = divToMove.getBoundingClientRect().y;

let otherDivX = otherDiv.getBoundingClientRect().x;
let otherDivY = otherDiv.getBoundingClientRect().y;

let currentX = currentDivX;
let currentY = currentDivY;

let beeBeginCurrentX = currentX-beeDivX;
let beeBeginCurrentY = currentY-beeDivY;

let dx = otherDivX - currentX || 1;
let dy = otherDivY - currentY;

let beeFinishX = otherDivX - beeDivX;
let beeFinishY = otherDivY - beeDivY;

let timeOfTrip = Math.floor(Math.sqrt(dx*dx+dy*dy))*10;

const transformationContent = [
{transform: "translateX("+beeBeginCurrentX+"px) translateY("+ beeBeginCurrentY+"px)"},
//{transform: "translateX("+beeFinishX+"px) translateY("+beeFinishY+"px)"},
];

for (let i = 0; i< timeOfTrip; i=i+10) {
let theta = Math.sign(dx)*Math.atan(dy/dx) || Math.sign(dy)*Math.atan(dy/dx);

// rotation matrix: X = x*cos(theta)-y*sin(theta) and Y = x*sin(theta)+y*cos(theta)
// but the function we want to rotate is a sine wave
//so the x should be always the same increment, i.
let sineFunction = 10*Math.sin(i/60);
let rotatedX = Math.sign(dx)*Math.floor(i/10*Math.cos(theta)-sineFunction*Math.sin(theta)) || Math.sign(dy)*Math.floor(i/10*Math.cos(theta)-sineFunction*Math.sin(theta));
let rotatedY = Math.floor(i/10*Math.sin(theta)+sineFunction*Math.cos(theta));
transformationContent.push( {transform: "translateX("+Number(beeBeginCurrentX+rotatedX)+"px) translateY("+Number(beeBeginCurrentY+rotatedY)+"px)"});
}

const transformationDuration = {
duration: timeOfTrip,
iterations: 1,
}

thisMoveAnimation = divToMove.animate(transformationContent,transformationDuration);

//if (currentDivX === 0)
//{thisMoveAnimation.cancel();}
return thisMoveAnimation;
}

function parseStringToSeeIfAllRequiredCharactersAreInIt(st) {
//first, get rid of everything between <>
let retVal = "";

while (st.indexOf("<") !== -1 && st.indexOf(">") !== -1) {
st = st.slice(0,st.indexOf("<"))+st.slice(st.indexOf(">")+1);
}

if (st.indexOf("b")===-1)
{retVal = retVal+"<br>This needs at least one 'b'!";}
if (st.indexOf("#")===-1)
{retVal = retVal+"<br>This needs at least one '#'!";}
if ((st.indexOf("p")===-1)&&(st.indexOf("d")===-1))
{retVal = retVal+"<br>This needs at least one 'p' or 'd'!";}
if ((st.indexOf("g")===-1) && (st.indexOf("X")===-1) && (st.indexOf("¥")===-1) && (st.indexOf("@")===-1))
{retVal = retVal+"<br>This needs at least one of the following: 'X', '¥','@', or 'g'!";}

return retVal;
}

function saveButton() {
document.getElementById("page-content").style.display="block";
if((parseStringToSeeIfAllRequiredCharactersAreInIt(textToSubmit) === ""))
{document.getElementById('finalOutput').innerHTML=sanitizeHTMLInput(textToSubmit);
document.getElementById('form').style.display='none';
parse(document.getElementById('finalOutput'));
customHandler = new MoveHandler('finalOutput',"finalQueenReturn",['BBBB','CCCC','DDDD']);
document.getElementById("SandboxBase").innerHTML = "";
document.getElementById("queenReturnSandbox").style.display ="block";
document.getElementById("finalOutput").style.display ="block";
document.getElementById("SandboxBase").style.display ="block";
fakeLinkClickBase("finalOuterHousing","queenReturnSandbox",customHandler);
document.getElementById("page-content").style.display="block";
}
}

function resetSandbox() {
document.getElementById("form").style.display="block";
buttonTriggered = false;
document.getElementById("SandboxBase").innerHTML = "";
for (let j = 0; j< customHandler.beeObjectList.length; j++) {

customHandler.beeObjectList[j].activated = false;
customHandler.beeObjectList[j].currentDiv = document.getElementById("SandboxBase");

while(customHandler.beeObjectList[j].beeDiv.getAnimations()[0])
{
customHandler.beeObjectList[j].beeDiv.getAnimations()[0].cancel();
}
}
}

/*Make sure the user can't inject code into the page*/
function sanitizeHTMLInput(inStr) {
let inputString = inStr;
let blacklist = ["script","link","object","embed","iframe","onclick","textarea","contenteditable","href",
"oncopy","onpaste","oncut","ondblclick","onfocus","onfocusin","onfocusout","oninput","onkeydown","onkeyup","onkeypress",
"onmousedown","onmouseenter","onmouseleave","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel",
"onpointercancel","onpointerdown","onpointerenter","onpointerleave","onpointermove","onpointerout","onpointerover","onpointerrawupdate","onpointerup",
"onscroll","onscrollend","onsecuritypolicyviolation","ontouchcancel","ontouchend","ontouchmove","ontouchstart",
"ontransitioncancel","ontransitionend","ontransitionrun","ontransitionstart",
"onwebkitmouseforcechanged","onwebkitmouseforcedown","onwebkitmouseforceup","onwebkitmouseforcewillbegin","onwheel",
"ongesturechange","ongestureend","ongesturestart",
"ongotpointercapture","onfullscreenerror","onfullscreenchange",
"onDOMMouseScroll","onDOMActivate",
"oncontextmenu","oncontentvisibilityautostatechange","oncompositionupdate","oncompositionstart","oncompositionend",
"onblur","onbeforexrselect","onbeforescriptexecute","onbeforematch","onbeforeinput",
"onauxclick","onanimationstart","onanimationend","onanimationiteration","onanimationcancel",
"onafterscriptexecute","onlostpointercapture","onMozMousePixelScroll",];
let indexOfBad = -1;

for (let i = 0; i<blacklist.length; i++) {
indexOfBad = inputString.indexOf(blacklist[i]);
while (indexOfBad != -1) {
inputString = inputString.slice(0,indexOfBad) +"EXCISED FORBIDDEN STRING"+inputString.slice(indexOfBad+blacklist[i].length);
indexOfBad = inputString.indexOf(blacklist[i]);
}
}

return inputString;
}

class MoveHandler {

constructor(outerDocToSelectFrom, queenHolderNameId,cuteList) {
this.queen = null;
this.queenHolderNameId=queenHolderNameId;
this.outerDoc = document.getElementById(outerDocToSelectFrom);

this.flowerObjectList = [];
for (let i = 0; i< this.outerDoc.getElementsByClassName("flower").length; i++) {
this.outerDoc.getElementsByClassName("flower")[i].setAttribute("id","flowerNo"+i+outerDocToSelectFrom);
this.flowerObjectList.push(new Flower(this.outerDoc.getElementsByClassName("flower")[i],this));
}

this.beeObjectList = [];
for (let i = 0; i< document.getElementById(outerDocToSelectFrom).getElementsByClassName("bee").length; i++) {
this.outerDoc.getElementsByClassName("bee")[i].setAttribute("id","beeNo"+i+outerDocToSelectFrom);
this.beeObjectList.push(new Bee("beeNo"+i+outerDocToSelectFrom,this));
}

this.beeHolderObjectList = [];
for (let i = 0; i< this.outerDoc.getElementsByClassName("beeHolder").length; i++) {
this.outerDoc.getElementsByClassName("beeHolder")[i].setAttribute("id","beeHolderNo"+i+outerDocToSelectFrom);
this.beeHolderObjectList.push(this.outerDoc.getElementsByClassName("beeHolder")[i]);
}

this.initialBeeLength = this.outerDoc.getElementsByClassName("beeHolder").length;

this.hiveObjectList = [];
//document.getElementById("readout").innerHTML+=document.getElementsByClassName("hive")[0].id;
for (let z = 0; z< this.outerDoc.getElementsByClassName("hive").length; z++) {
this.outerDoc.getElementsByClassName("hive")[z].setAttribute("id","hiveNo"+z+outerDocToSelectFrom);
this.hiveObjectList.push(new Hive("hiveNo"+z+outerDocToSelectFrom,this,this.outerDoc.getAttribute('initialHoneyCount') ));
//document.getElementById("readout").innerHTML+=document.getElementById(outerDocToSelectFrom).getElementsByClassName("hive")[i].id;
}

this.otherTextList = [];
//document.getElementById("readout").innerHTML+=document.getElementsByClassName("hive")[0].id;
this.getRandomOtherText();

this.collectibleList = [];
for (let x = 0; x< document.getElementById(outerDocToSelectFrom).getElementsByClassName("collectible").length; x++) {
this.outerDoc.getElementsByClassName("collectible")[x].setAttribute("id","collectibleNo"+x+outerDocToSelectFrom);
this.collectibleList.push(new Collectible(this.outerDoc.getElementsByClassName("collectible")[x],this));
//document.getElementById("readout").innerHTML+=document.getElementById(outerDocToSelectFrom).getElementsByClassName("hive")[i].id;
}
this.collectibleHolderObjectList = [];
for (let q = 0; q< this.outerDoc.getElementsByClassName("collectibleHolder").length; q++) {
this.outerDoc.getElementsByClassName("collectibleHolder")[q].setAttribute("id","collectibleHolderNo"+q+outerDocToSelectFrom);
this.collectibleHolderObjectList.push(this.outerDoc.getElementsByClassName("collectibleHolder")[q]);
}

this.cuteList = cuteList;
this.hoverText = document.createElement("div");
this.hoverTextText = document.createTextNode(cuteList[0]);
this.hoverText.style.backgroundColor="yellow";
this.hoverText.style.fontSize = "small";
this.hoverText.appendChild(this.hoverTextText);
this.hoverText.style.position="absolute";
this.hoverText.style.display = "none";
this.outerDoc.appendChild(this.hoverText);

}

showHoverText(beeDiv) {
this.hoverText.style.display="block";
this.hoverText.style.left= Math.floor(window.scrollX+ beeDiv.getBoundingClientRect().left+30)+"px";
this.hoverText.style.top= Math.floor(window.scrollY+beeDiv.getBoundingClientRect().top-20)+"px";
if (beeDiv.getAnimations()[0]) {
beeDiv.getAnimations()[0].pause();
}

let index = Math.floor(Math.random()*this.cuteList.length);
this.hoverText.innerHTML = this.cuteList[index];

window.setTimeout(()=>{this.hoverText.style.display = "none";
if (beeDiv.getAnimations()[0])
{beeDiv.getAnimations()[0].play();}
else {
{beeDiv.click();}
}

},1000);
}

rebuildOtherTextList() {
this.otherTextList = [];
//document.getElementById("readout").innerHTML+=document.getElementsByClassName("hive")[0].id;
for (let i = 0; i< this.outerDoc.getElementsByClassName("otherText").length; i++) {
if (this.outerDoc.getElementsByClassName("otherText")[i].innerHTML ==="")
{
this.outerDoc.getElementsByClassName("otherText")[i].remove();
i=0;
}
else
{this.otherTextList.push(this.outerDoc.getElementsByClassName("otherText")[i]);}
//document.getElementById("readout").innerHTML+=document.getElementById(outerDocToSelectFrom).getElementsByClassName("hive")[i].id;
}
}
// outerDocToSelectFrom: right now this is "OutsideOfEverything", but we will change it when we switch to other scp documents
getRandomFlower() {
let length = this.flowerObjectList.length;
let randomFlower = this.flowerObjectList[ Math.floor(Math.random()*length)];
for (let i = 0; i<200; i++) {
if ((randomFlower.flowerDiv.getBoundingClientRect().y < 0) || (randomFlower.flowerDiv.getBoundingClientRect().y > 400))
{randomFlower = this.flowerObjectList[ Math.floor(Math.random()*length)];}
else {break;}
}
return randomFlower;
}

// outerDocToSelectFrom: right now this is "OutsideOfEverything", but we will change it when we switch to other scp documents
getRandomBee() {
let length = this.beeObjectList.length;
let randomBee = this.beeObjectList[ Math.floor(Math.random()*length)];
return randomBee;
}

// outerDocToSelectFrom: right now this is "OutsideOfEverything", but we will change it when we switch to other scp documents
getRandomHive() {
let length = this.hiveObjectList.length;
let randomHive = this.hiveObjectList[ Math.floor(Math.random()*length)];
return randomHive;
}

getRandomCollectible() {
var randomCollectible;
if (!(this.outerDoc.getElementsByClassName("collectible").length === 0)) {
randomCollectible = this.getCollectibleById(this.outerDoc.getElementsByClassName("collectible")[Math.floor(Math.random()*this.outerDoc.getElementsByClassName("collectible").length)].id);
}
else {
{randomCollectible = this.getRandomFlower();}
}
return randomCollectible;
}
getRandomCollectibleHolder() {
var randomCollectible;
let length = this.collectibleHolderObjectList.length;
randomCollectible = this.collectibleHolderObjectList[Math.floor(length*Math.random())];
for (let i = 0; i<200; i++) {
if ((randomCollectible.getBoundingClientRect().y < Number(0-10*i)) || (randomCollectible.getBoundingClientRect().y > Number(400+10*i)))
{randomCollectible = this.collectibleHolderObjectList[ Math.floor(Math.random()*length)];}
else {break;}
}

return randomCollectible;
}
getHiveById(hiveId) {
let retVal = null;
for (let i = 0; i<this.hiveObjectList.length; i++)
{
if (this.hiveObjectList[i].getHiveId() === hiveId)
{retVal = this.hiveObjectList[i];
break;}
}
return retVal;
}

getFlowerById(flowerId) {
let retVal = null;
for (let i = 0; i<this.flowerObjectList.length; i++)
{
if (this.flowerObjectList[i].getFlowerId() === flowerId)
{retVal = this.flowerObjectList[i];
break;}
}
return retVal;
}
getCollectibleHolderById(collectibleId) {
let retVal = null;
for (let i = 0; i<this.collectibleHolderObjectList.length; i++)
{
if (this.collectibleHolderObjectList[i].id === collectibleId)
{retVal = this.collectibleHolderObjectList[i];
break;}
}
return retVal;
}
getCollectibleById(collectibleId) {
let retVal = null;
for (let i = 0; i<this.collectibleList.length; i++)
{
if (this.collectibleList[i].id === collectibleId)
{retVal = this.collectibleList[i];
break;}
}
return retVal;
}

getBeeById(collectibleId) {
let retVal = null;
for (let i = 0; i<this.beeObjectList.length; i++)
{
if (this.beeObjectList[i].beeDiv.id === collectibleId)
{retVal = this.beeObjectList[i];
break;}
}
return retVal;
}

getRandomOtherText() {
this.rebuildOtherTextList();
let randomOtherText = this.otherTextList[Math.floor(Math.random()*this.otherTextList.length)];
if (!(randomOtherText)) {
randomOtherText = document.createElement("div");
randomOtherText.setAttribute("class","otherText");
let randomTextNode = document.createTextNode(" ");
this.outerDoc.append(randomOtherText);
randomOtherText.append(randomTextNode);
this.otherTextList.push(randomOtherText);
}
return randomOtherText;
}

}

class Bee {
constructor(beeDivId, moveHandler) {
this.id = beeDivId;
this.moveHandler = moveHandler;
this.activated = false;
this.beeDiv = document.getElementById(this.id);
this.beeDiv.setAttribute("tabindex","0");
this.beeDiv.onfocus=()=>{this.beeDiv.click(); this.moveHandler.showHoverText(this.beeDiv);};
this.pollenCount = 0;
this.honeyCount = 0;
this.beeDiv.onclick = (event)=>{event.stopPropagation();
this.selectNextAction(this.beeDiv.parentNode.id,this.beeDiv.parentNode.getBoundingClientRect().x,this.beeDiv.parentNode.getBoundingClientRect().y);
activeBees++; }
//this.beeDiv.innerHTML = this.beeDiv.parentNode.id+" "+this.beeDiv.parentNode.getBoundingClientRect().x+" "+this.beeDiv.parentNode.getBoundingClientRect().y;}
this.pollenNode = document.createTextNode("");
this.pollenHolderNode = document.createElement("div");
this.pollenHolderNode.appendChild(this.pollenNode);
this.pollenHolderNode.style.fontSize="x-small";
this.pollenHolderNode.setAttribute("position","absolute");
this.currentDiv = this.beeDiv.parentNode;

this.beeDiv.appendChild(this.pollenHolderNode);
}

moveToAnotherDiv(currentDivX,currentDivY,otherDivId) {

let otherDiv = document.getElementById(otherDivId);

let thisMoveAnimation = moveToAnotherDiv(this.beeDiv,currentDivX,currentDivY,otherDiv);
if (thisMoveAnimation) {
thisMoveAnimation.onfinish= () =>{
let otherDivX = otherDiv.getBoundingClientRect().x;
let otherDivY = otherDiv.getBoundingClientRect().y;
this.activated = false;
this.selectNextAction(otherDivId,otherDivX,otherDivY);
thisMoveAnimation.cancel();
};
}
}

encirclingAnimate(centerX,centerY,cycles) {
let a = Math.floor(50+Math.random()*40);
let k = Math.floor(1+ Math.random()*10);
let xCoord = 0;
let yCoord = 0;

const frames = [];

for (let theta = 0; theta < 2*Math.PI; theta = theta+0.01) {
xCoord = a * Math.cos(k*theta)*Math.cos(theta)+centerX-this.beeDiv.getBoundingClientRect().x;
yCoord = a* Math.cos(k*theta)*Math.sin(theta)+centerY-this.beeDiv.getBoundingClientRect().y;
frames.push({transform:"translateX("+Math.floor(xCoord)+"px) translateY("+Math.floor(yCoord)+"px)"});
}

const durationInformation = {duration: 8000, iterations: cycles,}
return this.beeDiv.animate(frames,durationInformation);
}

selectNextAction(currentDivId,currentDivXin,currentDivYin) {

let currentDivX = currentDivXin || document.getElementById(currentDivId).getBoundingClientRect().x;
let currentDivY = currentDivYin || document.getElementById(currentDivId).getBoundingClientRect().y;

let currentDiv = document.getElementById(currentDivId);
if (currentDiv)
{this.currentDiv = currentDiv;}

if (activeBees > activeBeeLimit)
{activeBees--;}
else if (!this.activated) {
this.activated=true;

if (queenDropped)
{
this.moveToAnotherDiv(currentDivX,currentDivY,document.getElementsByClassName("queenCollector")[0].id);
this.beeDiv.getAnimations()[0].onfinish=()=>{document.getElementsByClassName("queenCollector")[0].appendChild(this.beeDiv);this.encirclingAnimate(document.getElementsByClassName("queenCollector")[0].getBoundingClientRect().x+0.5*document.getElementsByClassName("queenCollector")[0].getBoundingClientRect().width,document.getElementsByClassName("queenCollector")[0].getBoundingClientRect().y+0.5*document.getElementsByClassName("queenCollector")[0].getBoundingClientRect().height,Infinity);};
}
else {
switch (this.currentDiv.className) {

case 'collectibleHolder':
if (currentDiv.children[0]) {
if (currentDiv.children[0].innerHTML === "h")
{this.honeyCount +=1;
this.pollenNode.nodeValue += "h";
this.moveToAnotherDiv(currentDivX,currentDivY,this.moveHandler.getRandomHive().id);
}
else {
this.pollenCount +=1;
this.pollenNode.nodeValue += currentDiv.children[0].innerHTML;
let chanceOfGoingToTheHive = Math.floor(Math.random()*4)
if (chanceOfGoingToTheHive < this.pollenCount)
{
this.moveToAnotherDiv(currentDivX,currentDivY,this.moveHandler.getRandomHive().id);
}
else {
let randomId = this.moveHandler.getRandomFlower().id;
if (randomId === currentDivId) {
randomId = this.moveHandler.getRandomFlower().id;
}
this.moveToAnotherDiv(currentDivX,currentDivY,randomId);
}

}
if (currentDiv.children[0].getAttribute("class")==="collectible") {
currentDiv.removeChild(currentDiv.children[0]);
currentDiv.innerHTML = " ";
}
else {
//currentDiv.innerHTML = "AAAA"+currentDiv.children[0].getAttribute("class")+"BBBB";
}
}else {
let randomId = this.moveHandler.getRandomFlower().id;
if (randomId === currentDivId) {
randomId = this.moveHandler.getRandomFlower().id;
}
this.moveToAnotherDiv(currentDivX,currentDivY,randomId);
}
break;

case 'flower':
this.pollenCount += 1;
if (Math.random() > 0.5) {
this.pollenNode.nodeValue += "p";
}
else {
this.pollenNode.nodeValue += "d";
}
var delay = 0;
if ((this.pollenCount > 1) && (Math.random()>0.5) && (countOfCurrentlyMovingFlowers <7)) {
countOfCurrentlyMovingFlowers++;
let thisFlower = this.moveHandler.getFlowerById(currentDiv.getAttribute("id"));
thisFlower.spawnOtherFlower();

this.moveHandler.showHoverText(currentDiv);
}

let chanceOfGoingToTheHive = Math.floor(Math.random()*4)
if (chanceOfGoingToTheHive < this.pollenCount)
{
this.moveToAnotherDiv(currentDivX,currentDiv.getBoundingClientRect().y,this.moveHandler.getRandomHive().id);
}
else {
let randomId = this.moveHandler.getRandomFlower().id;
if (randomId === currentDivId) {
randomId = this.moveHandler.getRandomFlower().id;
}
this.moveToAnotherDiv(currentDivX,currentDiv.getBoundingClientRect().y,randomId);
}

break;
case 'hive':

let thisHive = this.moveHandler.getHiveById(currentDivId);
if (thisHive) {
if (this.pollenCount >0 || this.honeyCount >0)
{
this.pollenNode.nodeValue = "";
let thisHive = this.moveHandler.getHiveById(currentDivId);
thisHive.addPollen(this.pollenCount+4*this.honeyCount);
this.pollenCount =0;
this.honeyCount = 0;
}
let nextMoveObject = this.moveHandler.getRandomCollectibleHolder();
this.moveToAnotherDiv(currentDivX,currentDivY, nextMoveObject.getAttribute("id"));
}else {
this.moveToAnotherDiv(currentDivX,currentDivY,this.moveHandler.getRandomHive().id);
//this.beeDiv.innerHTML = currentDivId;
}
break;
default:
this.moveToAnotherDiv(currentDivX,currentDivY,this.moveHandler.getRandomFlower().id);
//this.beeDiv.innerHTML = String(currentDivX);
break;
}
}

}
}

deactivate() {
this.activated=false;
}
activate() {
this.activated=true;
this.selectNextAction(this.beeDiv.parentNode.id,this.beeDiv.parentNode.getBoundingClientRect().x,this.beeDiv.parentNode.getBoundingClientRect().y);
}
}

class Flower {
constructor(flowerDiv, moveHandler) {
this.id = flowerDiv.getAttribute("id");
this.moveHandler = moveHandler;
this.flowerDiv = flowerDiv;
this.pollinated = false;
this.flowerType =this.flowerDiv.textContent || "X";
}

spawnOtherFlower() {

//first find a spot to spawn in
let textToSpawnIn = this.moveHandler.getRandomOtherText();
while (textToSpawnIn.innerHTML.length === 0)
{textToSpawnIn = this.moveHandler.getRandomOtherText();}

let stringToSpawnIn = String(textToSpawnIn.innerHTML);
let sliceIndex = Math.floor(Math.random()*stringToSpawnIn.length) || 1;
let latterText = stringToSpawnIn.slice(sliceIndex);
let formerText = stringToSpawnIn.slice(0,sliceIndex-1);

textToSpawnIn.innerHTML = formerText;
const newFlowerText = document.createTextNode(this.flowerType);
const newFlowerDiv = document.createElement("div");
newFlowerDiv.setAttribute("id","flowerNo"+ Number(this.moveHandler.flowerObjectList.length+2)+this.moveHandler.outerDoc.getAttribute("id"));
newFlowerDiv.setAttribute("class","flower");
newFlowerDiv.appendChild(newFlowerText);
textToSpawnIn.insertAdjacentElement("afterend",newFlowerDiv);
const newOtherText = document.createElement("div");
newOtherText.setAttribute("class","otherText");
const newOtherTextText = document.createTextNode(latterText);
newOtherText.appendChild(newOtherTextText);
newFlowerDiv.insertAdjacentElement("afterend",newOtherText);
this.moveHandler.rebuildOtherTextList();

let otherDiv = newFlowerDiv;

let otherDivX = window.scrollX + otherDiv.getBoundingClientRect().x;
let otherDivY = window.scrollY + otherDiv.getBoundingClientRect().y;

let currentX = window.scrollX + this.flowerDiv.getBoundingClientRect().x;
let currentY = window.scrollY + this.flowerDiv.getBoundingClientRect().y;

let dx = currentX-otherDivX;
let dy = currentY-otherDivY;

let timeOfTrip = Math.floor(Math.sqrt(dx*dx+dy*dy))*50;

const transformationContent = [
{transform: "translateX("+dx+"px) translateY("+dy+"px) scale(0.25)" },
{transform: "translateX(0px) translateY(0px) scale(0.25)"},
{transform: "translateX(0px) translateY(0px) scale(1)"},
];

const transformationDuration = {
duration: timeOfTrip,
iterations: 1,
}

let thisMoveAnimation = newFlowerDiv.animate(transformationContent,transformationDuration);

//only create the new flower when it settles
thisMoveAnimation.onfinish= ()=>{
countOfCurrentlyMovingFlowers--;
this.moveHandler.flowerObjectList.push(new Flower(newFlowerDiv,this.moveHandler));
thisMoveAnimation.cancel();
}
return timeOfTrip;
}

getFlowerId() {
return this.id;
}

}

class Hive {
constructor(hiveDivId, moveHandler,initialHoneyCount) {
this.id = hiveDivId;
this.moveHandler = moveHandler;
this.hiveDiv = document.getElementById(this.id);
this.pollenCount = 0;
this.honeyCount = initialHoneyCount;
this.honeyCountSpanId = this.id+"honeyCount";
this.hiveDiv.innerHTML="#: <span id=\""+this.honeyCountSpanId+"\">" + this.honeyCount+" </span></br>";
this.honeyCountSpan = document.getElementById(this.honeyCountSpanId);
//this.produceQueen();
this.displayHoneyCount();
}

getHoneyCount() {
return this.honeyCount;
}
getPollenCount() {
return this.pollenCount;
}

convertPollenToHoney() {
let newHoney = Math.floor(this.pollenCount / 4);
let remainingPollen = this.pollenCount % 4;
this.honeyCount =parseInt(this.honeyCount)+parseInt(newHoney);
this.pollenCount = remainingPollen;

if (this.honeyCount === 8336) {
this.produceQueen();
this.removeHoney(8336);
}
this.displayHoneyCount();
}
displayHoneyCount() {
this.honeyCountSpan.innerHTML = this.honeyCount+ "|" + this.pollenCount;
}
addPollen(newPollen) {
this.pollenCount += newPollen;
this.convertPollenToHoney();
}

//returns honey number actually removed
removeHoney(honeyToRemove) {
let retVal = 0;
if ((this.honeyCount - honeyToRemove) <=0)
{retVal = this.honeyCount;
this.honeyCount = 0;}
else {
retVal = honeyToRemove;
this.honeyCount -= honeyToRemove;
}
this.displayHoneyCount();
return retVal;
}

getHiveId() {
return this.id;
}

produceQueen() {
this.queen = new Queen(this.moveHandler,this,this.moveHandler.queenHolderNameId);
}

}

class Queen {
constructor(moveHandler, hive, queenButtonId) {
this.moveHandler = moveHandler;
this.hive = hive;
this.hiveDiv = document.getElementById(hive.getHiveId());
this.queenDiv = document.createElement("div");
this.queenDiv.className = "queen";
this.queenDiv.setAttribute("draggable",true);
this.beeNumber = 0;
this.queenDiv.setAttribute("tabindex","0");
this.queenText = document.createTextNode("q");
this.queenDiv.appendChild(this.queenText);
document.getElementById(queenButtonId).appendChild(this.queenDiv);

this.mobileScrollQueenText= document.createTextNode("q");
this.mobileScrollQueenDiv = document.createElement("div");
this.mobileScrollQueenDiv.appendChild(this.mobileScrollQueenText);
this.mobileScrollQueenDiv.className = "queen";
this.mobileScrollQueenDiv.classList.add("queenBeingDragged");
this.mobileScrollQueenDiv.style.position="fixed";
this.moveHandler.outerDoc.appendChild(this.mobileScrollQueenDiv);

const transformationContent2 = [{transform:"translateX(-20px)"},{transform:"translateX(20px) "},{transform:"translateX(-20px) "}];
const transformationTiming2 = {duration:1000,iterations:Infinity};

this.thisMoveAnimation = this.circleAnimate(this.hiveDiv);

this.queenDiv.onfocus = (event) => {

setTimeout( ()=>{
if ((testMoveHandler.outerDoc.style.display !== "none")){

if (!(currentlyDragging)) {
queenDropped = true;
if (this.queenDiv.getAnimations()[0]) {
this.queenDiv.getAnimations()[0].cancel();}
moveToAnotherDiv(this.queenDiv,this.hiveDiv.getBoundingClientRect().x,this.hiveDiv.getBoundingClientRect().y,document.getElementById("LinkButton")).onfinish =()=>{
linkPreparer();};
}
}
}

,1000);
};
this.queenDiv.addEventListener("dragstart",()=>{this.thisMoveAnimation.pause(); currentlyDragging = true;});
this.queenDiv.addEventListener("drag",()=>{this.queenDiv.classList.add("queenBeingDragged");});
this.queenDiv.addEventListener("dragend",()=>{
setTimeout(
()=>{
currentlyDragging = false;
if (queenDropped)
{this.thisMoveAnimation.cancel();}
else {
this.thisMoveAnimation.cancel();
moveToAnotherDiv(this.queenDiv,this.moveHandler.hiveObjectList[0].hiveDiv.getBoundingClientRect(0).x,this.moveHandler.hiveObjectList[0].hiveDiv.getBoundingClientRect(0).y,document.getElementById("LinkButton"));
}
this.queenDiv.classList.remove("queenBeingDragged");
linkPreparer();
},50);
});

this.queenDiv.addEventListener("touchstart",(event)=>{
event.stopPropagation();
event.preventDefault();
this.thisMoveAnimation.pause();
this.mobileScrollQueenDiv.classList.remove("queenBeingDragged");});

this.queenDiv.addEventListener("touchmove",(event)=>{
event.stopPropagation();
event.preventDefault();
this.queenDiv.classList.add("queenBeingDragged");

let touchX =Math.floor(event.targetTouches[0].pageX)+"px";
let touchY = Math.floor(event.targetTouches[0].pageY-40)+"px";
this.mobileScrollQueenDiv.style.left = touchX;
this.mobileScrollQueenDiv.style.top = touchY;

let touchXNum =Math.floor(event.targetTouches[0].pageX);
let touchYNum = Math.floor(event.targetTouches[0].pageY);
//this.mobileScrollQueenDiv.innerHTML= "Left"+touchX+ " top" + touchY;

let returnValue = "";
let rect = "";
for (let i = 0; i< this.moveHandler.outerDoc.getElementsByClassName("queenCollector").length; i++) {
rect = this.moveHandler.outerDoc.getElementsByClassName("queenCollector")[i].getBoundingClientRect();

if ((Number(touchXNum) > rect.left) && (Number(touchXNum) < Number(rect.left+rect.width+40)) && (Number(touchYNum) > rect.top) && (Number(touchYNum) < Number(rect.top+rect.height+40))) {
returnValue = this.moveHandler.outerDoc.getElementsByClassName("queenCollector")[i].id;
this.moveHandler.outerDoc.getElementsByClassName("queenCollector")[i].classList.add("queenCollectorHighlight");
}
else {
this.moveHandler.outerDoc.getElementsByClassName("queenCollector")[i].classList.remove("queenCollectorHighlight");
}
}

});
this.queenDiv.addEventListener("touchend",(event)=>{
event.stopPropagation();
event.preventDefault();
this.thisMoveAnimation.play();
this.queenDiv.classList.remove("queenBeingDragged");
this.mobileScrollQueenDiv.classList.add("queenBeingDragged");

queenDropHandlerBase(document.getElementsByClassName("queenCollectorHighlight")[0].id);
});
this.toggle = true;
this.beeNumber = 0;
}

circleAnimate(placeToAnimateAround) {
const transformationContent = [{transform: "translateX("+Number(placeToAnimateAround.getBoundingClientRect().x+0.5*placeToAnimateAround.getBoundingClientRect().width-this.queenDiv.getBoundingClientRect().x)+"px) translateY("+Number(placeToAnimateAround.getBoundingClientRect().y+0.5*placeToAnimateAround.getBoundingClientRect().height-this.queenDiv.getBoundingClientRect().y)+"px)"}];
let radiusMagnitude = 40;
let radius = radiusMagnitude;
let xCoord = 0;
let yCoord = 0;

for (let theta = 0; theta<Number(2*Math.PI); theta=theta+0.01) {
radius = Math.floor(radiusMagnitude+10*Math.sin(10*theta));
xCoord = Math.floor(radius*Math.cos(theta));
yCoord = Math.floor(radius*Math.sin(theta));
transformationContent.push({transform: "translateX("+Number(xCoord+placeToAnimateAround.getBoundingClientRect().x+0.5*placeToAnimateAround.getBoundingClientRect().width-this.queenDiv.getBoundingClientRect().x)+"px) translateY("+Number(placeToAnimateAround.getBoundingClientRect().y+0.5*placeToAnimateAround.getBoundingClientRect().height-this.queenDiv.getBoundingClientRect().y+yCoord)+"px)"});

}

const transformationDuration = {
duration: 5000,
iterations: Infinity,
}
return this.queenDiv.animate(transformationContent,transformationDuration);
}

moveToAnotherDiv(currentDivId) {

while (this.queenDiv.getAnimations()[0])
{this.queenDiv.getAnimations()[0].cancel();}
let currentDiv = document.getElementById(currentDivId);//document.getElementById(currentDivId);

var beeToMeet;
if (this.beeNumber < this.moveHandler.beeHolderObjectList.length)
{ beeToMeet = this.moveHandler.beeHolderObjectList[this.beeNumber];
}
else {
beeToMeet = document.getElementById("LinkButton");
}

this.beeNumber++;

let otherDiv = beeToMeet;//.beeDiv;

let otherDivId = otherDiv.getAttribute("id");

let currentDivX = currentDiv.getBoundingClientRect().x;
let currentDivY = currentDiv.getBoundingClientRect().y;
let thisMoveAnimation = moveToAnotherDiv(this.queenDiv,currentDivX,currentDivY,otherDiv);

thisMoveAnimation.onfinish= () =>{
if ( otherDiv.children[0]) {
otherDiv.children[0].click();}
if (otherDiv.getAttribute("class") === "beeHolder") {
this.moveToAnotherDiv(otherDivId);
//this.moveHandler.outerDoc.prepend(otherDiv);
}
else
{
document.getElementById("LinkButton").appendChild(this.queenDiv);
linkPreparer();
buttonTriggered=false;
queenDropped = true;
this.circleAnimate();
}
};

}
}

class Collectible {
constructor(collectibleDiv,moveHandler) {
this.collectibleDiv = collectibleDiv;
this.collectibleType = collectibleDiv.innerHTML || "p";
this.id = this.collectibleDiv.getAttribute("id");
this.moveHandler = moveHandler;
}

destroy() {
this.collectibleDiv.parentElement.removeChild(this.collectibleDiv);
this.moveHandler.collectibleList.splice(this.moveHandler.collectibleList.indexOf(this),1);
}
}

const pageSelector = document.getElementById("linkSelect");
pageSelector.onchange = ()=>{fakeLinkHandle(pageSelector.value);};

document.getElementById("fakeLink").addEventListener("keydown",(event)=>{if (event.key==="Enter") {fakeLinkClick(event);}});
parse(document.getElementById("OutsideOfEverything"));
parse(document.getElementById("ToasterArticle"));
parse(document.getElementById("AllisonArticle"));
parse(document.getElementById("LibraryArticle"));
parse(document.getElementById("VerbosityArticle"));
parse(document.getElementById("FFArticle"));

function addQueenSkip() {testMoveHandler.getRandomHive().produceQueen();}
testMoveHandler = new MoveHandler("OutsideOfEverything","LinkButton", ["what's a nomalous?","buzz off",":(",":)",":3"]);
toasterHandler = new MoveHandler("ToasterArticle","queenReturnToaster",["nice and toasty","buzz-zap","i'm electro-cute!","wait, why do i have a concept of individuality?","is the being thinking right now not just a cell in a universal us?",":0"]);
allisonHandler = new MoveHandler("AllisonArticle","queenReturnAllison",["no fair, you can't steal our honeycount!","stop hogging the page, allison","autosynecdochic is fun to spell"]);
libraryHandler = new MoveHandler("LibraryArticle","queenReturnLibrary", ["ssh! paper wasps","exbibliothetic is fun to spell","we speak comfort to soothe the barren fields","what happened to you stinks","let us dwell in you again"]);
verbosityHandler = new MoveHandler("VerbosityArticle","queenReturnVerbosity", [":O",">:|",":(",":3"]);
ffHandler = new MoveHandler("FFArticle","queenReturnFF", ["yay","don't blame us","it was like this before we got here",":)",":3"]);

</script>
</body>
</html>