"Here, Professor Aronnax, is a manuscript written in several languages. It contains a summary of my research under the sea, and God willing, it won't perish with me. Signed with my name, complete with my life story, this manuscript will be enclosed in a small, unsinkable contrivance. The last surviving man on the Nautilus will throw this contrivance into the sea, and it will go wherever the waves carry it."
The man's name! His life story written by himself! So the secret of his existence might someday be unveiled? But just then I saw this announcement only as a lead–in to my topic.
"Captain," I replied, "I'm all praise for this idea you're putting into effect. The fruits of your research must not be lost. But the methods you're using strike me as primitive. Who knows where the winds will take that contrivance, into whose hands it may fall? Can't you find something better? Can't you or one of your men—"
"Never, sir," the captain said, swiftly interrupting me.
"But my companions and I would be willing to safeguard this manuscript, and if you give us back our freedom—"
"Your freedom!" Captain Nemo put in, standing up.
"Yes, sir, and that's the subject on which I wanted to confer with you. For seven months we've been aboard your vessel, and I ask you today, in the name of my companions as well as myself, if you intend to keep us here forever."
"Professor Aronnax," Captain Nemo said, "I'll answer you today just as I did seven months ago: whomever boards the Nautilus must never leave it."
"What you're inflicting on us is outright slavery!"
"Call it anything you like."
"But every slave has the right to recover his freedom! By any worthwhile, available means!"
"Who has denied you that right?" Captain Nemo replied. "Did I ever try to bind you with your word of honor?"
The captain stared at me, crossing his arms.
"Sir," I told him, "to take up this subject a second time would be distasteful to both of us. So let's finish what we've started. I repeat: it isn't just for myself that I raise this issue. To me, research is a relief, a potent diversion, an enticement, a passion that can make me forget everything else. Like you, I'm a man neglected and unknown, living in the faint hope that someday I can pass on to future generations the fruits of my labors—figuratively speaking, by means of some contrivance left to the luck of winds and waves. In short, I can admire you and comfortably go with you while playing a role I only partly understand; but I still catch glimpses of other aspects of your life that are surrounded by involvements and secrets that, alone on board, my companions and I can't share. And even when our hearts could beat with yours, moved by some of your griefs or stirred by your deeds of courage and genius, we've had to stifle even the slightest token of that sympathy that arises at the sight of something fine and good, whether it comes from friend or enemy. All right then! It's this feeling of being alien to your deepest concerns that makes our situation unacceptable, impossible, even impossible for me but especially for Ned Land. Every man, by virtue of his very humanity, deserves fair treatment. Have you considered how a love of freedom and hatred of slavery could lead to plans of vengeance in a temperament like the Canadian's, what he might think, attempt, endeavor . . . ?"
I fell silent. Captain Nemo stood up.
"Ned Land can think, attempt, or endeavor anything he wants, what difference is it to me? I didn't go looking for him! I don't keep him on board for my pleasure!  I have nothing more to say to you.
I withdrew. From that day forward our position was very strained. I reported this conversation to my two companions.
"Now we know," Ned said, "that we can't expect a thing from this man. The Nautilus is nearing Long Island. We'll escape, no matter what the weather."
But the skies became more and more threatening. There were conspicuous signs of a hurricane on the way. The atmosphere was turning white and milky. Slender sheaves of cirrus clouds were followed on the horizon by layers of nimbocumulus. Other low clouds fled swiftly. The sea grew towering, inflated by long swells. Every bird had disappeared except a few petrels, friends of the storms. The barometer fell significantly, indicating a tremendous tension in the surrounding haze. The mixture in our stormglass decomposed under the influence of the electricity charging the air. A struggle of the elements was approaching.
The storm burst during the daytime of May 13, just as the Nautilus was cruising abreast of Long Island, a few miles from the narrows to Upper New York Bay. I'm able to describe this struggle of the elements because Captain Nemo didn't flee into the ocean depths; instead, from some inexplicable whim, he decided to brave it out on the surface.
The wind was blowing from the southwest, initially a stiff breeze, in other words, with a speed of fifteen meters per second, which built to twenty–five meters near three o'clock in the afternoon. This is the figure for major storms.
Unshaken by these squalls, Captain Nemo stationed himself on the platform. He was lashed around the waist to withstand the monstrous breakers foaming over the deck. I hoisted and attached myself to the same place, dividing my wonderment between the storm and this incomparable man who faced it head–on.
The raging sea was swept with huge tattered clouds drenched by the waves. I saw no more of the small intervening billows that form in the troughs of the big crests. Just long, soot–colored undulations with crests so compact they didn't foam. They kept growing taller. They were spurring each other on. The Nautilus, sometimes lying on its side, sometimes standing on end like a mast, rolled and pitched frightfully.
Near five o'clock a torrential rain fell, but it lulled neither wind nor sea. The hurricane was unleashed at a speed of forty–five meters per second, hence almost forty leagues per hour. Under these conditions houses topple, roof tiles puncture doors, iron railings snap in two, and twenty–four–pounder cannons relocate. And yet in the midst of this turmoil, the Nautilus lived up to that saying of an expert engineer: "A well–constructed hull can defy any sea!" This submersible was no resisting rock that waves could demolish; it was a steel spindle, obediently in motion, without rigging or masting, and able to brave their fury with impunity.
Meanwhile I was carefully examining these unleashed breakers. They measured up to fifteen meters in height over a length of 150 to 175 meters, and the speed of their propagation (half that of the wind) was fifteen meters per second. Their volume and power increased with the depth of the waters. I then understood the role played by these waves, which trap air in their flanks and release it in the depths of the sea where its oxygen brings life. Their utmost pressure—it has been calculated—can build to 3,000 kilograms on every square foot of surface they strike. It was such waves in the Hebrides that repositioned a stone block weighing 84,000 pounds. It was their relatives in the tidal wave on December 23, 1854, that toppled part of the Japanese city of Tokyo, then went that same day at 700 kilometers per hour to break on the beaches of America.
After nightfall the storm grew in intensity. As in the 1860 cyclone on Réunion Island, the barometer fell to 710 millimeters. At the close of day, I saw a big ship passing on the horizon, struggling painfully. It lay to at half steam in an effort to hold steady on the waves. It must have been a steamer on one of those lines out of New York to Liverpool or Le Havre. It soon vanished into the shadows.
At ten o'clock in the evening, the skies caught on fire. The air was streaked with violent flashes of lightning. I couldn't stand this brightness, but Captain Nemo stared straight at it, as if to inhale the spirit of the storm. A dreadful noise filled the air, a complicated noise made up of the roar of crashing breakers, the howl of the wind, claps of thunder. The wind shifted to every point of the horizon, and the cyclone left the east to return there after passing through north, west, and south, moving in the opposite direction of revolving storms in the southern hemisphere.
Oh, that Gulf Stream! It truly lives up to its nickname, the Lord of Storms! All by itself it creates these fearsome cyclones through the difference in temperature between its currents and the superimposed layers of air.
The rain was followed by a downpour of fire. Droplets of water changed into exploding tufts.  In one hideous pitching movement, the Nautilus reared its steel spur into the air like a lightning rod, and I saw long sparks shoot down it.
Shattered, at the end of my strength, I slid flat on my belly to the hatch. I opened it and went below to the lounge. By then the storm had reached its maximum intensity. It was impossible to stand upright inside the Nautilus.
Captain Nemo reentered near midnight. I could hear the ballast tanks filling little by little, and the Nautilus sank gently beneath the surface of the waves.
Through the lounge's open windows, I saw large, frightened fish passing like phantoms in the fiery waters. Some were struck by lightning right before my eyes!
The Nautilus kept descending. I thought it would find calm again at fifteen meters down. No. The upper strata were too violently agitated. It needed to sink to fifty meters, searching for a resting place in the bowels of the sea.
But once there, what tranquility we found, what silence, what peace all around us! Who would have known that a dreadful hurricane was then unleashed on the surface of this ocean?
IN THE AFTERMATH of this storm, we were thrown back to the east. Away went any hope of escaping to the landing places of New York or the St. Lawrence. In despair, poor Ned went into seclusion like Captain Nemo. Conseil and I no longer left each other.
As I said, the Nautilus veered to the east. To be more accurate, I should have said to the northeast. Sometimes on the surface of the waves, sometimes beneath them, the ship wandered for days amid these mists so feared by navigators. These are caused chiefly by melting ice, which keeps the air extremely damp. How many ships have perished in these waterways as they tried to get directions from the hazy lights on the coast! How many casualties have been caused by these opaque mists! How many collisions have occurred with these reefs, where the breaking surf is covered by the noise of the wind! How many vessels have rammed each other, despite their running lights, despite the warnings given by their bosun's pipes and alarm bells!
So the floor of this sea had the appearance of a battlefield where every ship defeated by the ocean still lay, some already old and encrusted, others newer and reflecting our beacon light on their ironwork and copper undersides. Among these vessels, how many went down with all hands, with their crews and hosts of immigrants, at these trouble spots so prominent in the statistics: Cape Race, St. Paul Island, the Strait of Belle Isle, the St. Lawrence estuary! And in only a few years, how many victims have been furnished to the obituary notices by the Royal Mail, Inman, and Montreal lines; by vessels named the Solway, the Isis, the Paramatta, the Hungarian, the Canadian, the Anglo–Saxon, the Humboldt, and the United States, all run aground; by the Arctic and the Lyonnais, sunk in collisions; by the President, the Pacific, and the City of Glasgow, lost for reasons unknown; in the midst of their gloomy rubble, the Nautilus navigated as if passing the dead in review!
By May 15 we were off the southern tip of the Grand Banks of Newfoundland. These banks are the result of marine sedimentation, an extensive accumulation of organic waste brought either from the equator by the Gulf Stream's current, or from the North Pole by the countercurrent of cold water that skirts the American coast. Here, too, erratically drifting chunks collect from the ice breakup. Here a huge boneyard forms from fish, mollusks, and zoophytes dying over it by the billions.
The sea is of no great depth at the Grand Banks. A few hundred fathoms at best. But to the south there is a deep, suddenly occurring depression, a 3,000–meter pit. Here the Gulf Stream widens. Its waters come to full bloom. It loses its speed and temperature, but it turns into a sea.
Among the fish that the Nautilus startled on its way, I'll mention a one–meter lumpfish, blackish on top with orange on the belly and rare among its brethren in that it practices monogamy, a good–sized eelpout, a type of emerald moray whose flavor is excellent, wolffish with big eyes in a head somewhat resembling a canine's, viviparous blennies whose eggs hatch inside their bodies like those of snakes, bloated gobio (or black gudgeon) measuring two decimeters, grenadiers with long tails and gleaming with a silvery glow, speedy fish venturing far from their High Arctic seas.
Our nets also hauled in a bold, daring, vigorous, and muscular fish armed with prickles on its head and stings on its fins, a real scorpion measuring two to three meters, the ruthless enemy of cod, blennies, and salmon; it was the bullhead of the northerly seas, a fish with red fins and a brown body covered with nodules. The Nautilus's fishermen had some trouble getting a grip on this animal, which, thanks to the formation of its gill covers, can protect its respiratory organs from any parching contact with the air and can live out of water for a good while.
And I'll mention—for the record—some little banded blennies that follow ships into the northernmost seas, sharp–snouted carp exclusive to the north Atlantic, scorpionfish, and lastly the gadoid family, chiefly the cod species, which I detected in their waters of choice over these inexhaustible Grand Banks.
Because Newfoundland is simply an underwater peak, you could call these cod mountain fish. While the Nautilus was clearing a path through their tight ranks, Conseil couldn't refrain from making this comment:
"Mercy, look at these cod!" he said. "Why, I thought cod were flat, like dab or sole!"
"Innocent boy!" I exclaimed. "Cod are flat only at the grocery store, where they're cut open and spread out on display. But in the water they're like mullet, spindle–shaped and perfectly built for speed."
"I can easily believe Master," Conseil replied. "But what crowds of them! What swarms!"
"Bah! My friend, there'd be many more without their enemies, scorpionfish and human beings! Do you know how many eggs have been counted in a single female?"
"I'll go all out," Conseil replied. "500,000."
"11,000,000, my friend."
"11,000,000! I refuse to accept that until I count them myself."
"So count them, Conseil. But it would be less work to believe me. Besides, Frenchmen, Englishmen, Americans, Danes, and Norwegians catch these cod by the thousands. They're eaten in prodigious quantities, and without the astonishing fertility of these fish, the seas would soon be depopulated of them. Accordingly, in England and America alone, 5,000 ships manned by 75,000 seamen go after cod. Each ship brings back an average catch of 4,400 fish, making 22,000,000. Off the coast of Norway, the total is the same."
"Fine," Conseil replied, "I'll take Master's word for it. I won't count them."
"Count what?"
"Those 11,000,000 eggs. But I'll make one comment."
"What's that?"
"If all their eggs hatched, just four codfish could feed England, America, and Norway."
As we skimmed the depths of the Grand Banks, I could see perfectly those long fishing lines, each armed with 200 hooks, that every boat dangled by the dozens. The lower end of each line dragged the bottom by means of a small grappling iron, and at the surface it was secured to the buoy–rope of a cork float. The Nautilus had to maneuver shrewdly in the midst of this underwater spiderweb.
But the ship didn't stay long in these heavily traveled waterways. It went up to about latitude 42°. This brought it abreast of St. John's in Newfoundland and Heart's Content, where the Atlantic Cable reaches its end point.
Instead of continuing north, the Nautilus took an easterly heading, as if to go along this plateau on which the telegraph cable rests, where multiple soundings have given the contours of the terrain with the utmost accuracy.
It was on May 17, about 500 miles from Heart's Content and 2,800 meters down, that I spotted this cable lying on the seafloor. Conseil, whom I hadn't alerted, mistook it at first for a gigantic sea snake and was gearing up to classify it in his best manner. But I enlightened the fine lad and let him down gently by giving him various details on the laying of this cable.
The first cable was put down during the years 1857–1858; but after transmitting about 400 telegrams, it went dead. In 1863 engineers built a new cable that measured 3,400 kilometers, weighed 4,500 metric tons, and was shipped aboard the Great Eastern. This attempt also failed.
Now then, on May 25 while submerged to a depth of 3,836 meters, the Nautilus lay in precisely the locality where this second cable suffered the rupture that ruined the undertaking. It happened 638 miles from the coast of Ireland. At around two o'clock in the afternoon, all contact with Europe broke off. The electricians on board decided to cut the cable before fishing it up, and by eleven o'clock that evening they had retrieved the damaged part. They repaired the joint and its splice; then the cable was resubmerged. But a few days later it snapped again and couldn't be recovered from the ocean depths.
These Americans refused to give up. The daring Cyrus Field, who had risked his whole fortune to promote this undertaking, called for a new bond issue. It sold out immediately. Another cable was put down under better conditions. Its sheaves of conducting wire were insulated within a gutta–percha covering, which was protected by a padding of textile material enclosed in a metal sheath. The Great Eastern put back to sea on July 13, 1866.
The operation proceeded apace. Yet there was one hitch. As they gradually unrolled this third cable, the electricians observed on several occasions that someone had recently driven nails into it, trying to damage its core. Captain Anderson, his officers, and the engineers put their heads together, then posted a warning that if the culprit were detected, he would be thrown overboard without a trial. After that, these villainous attempts were not repeated.
By July 23 the Great Eastern was lying no farther than 800 kilometers from Newfoundland when it received telegraphed news from Ireland of an armistice signed between Prussia and Austria after the Battle of Sadova. Through the mists on the 27th, it sighted the port of Heart's Content. The undertaking had ended happily, and in its first dispatch, young America addressed old Europe with these wise words so rarely understood: "Glory to God in the highest, and peace on earth to men of good will."
I didn't expect to find this electric cable in mint condition, as it looked on leaving its place of manufacture. The long snake was covered with seashell rubble and bristling with foraminifera; a crust of caked gravel protected it from any mollusks that might bore into it. It rested serenely, sheltered from the sea's motions, under a pressure favorable to the transmission of that electric spark that goes from America to Europe in 32/100 of a second. This cable will no doubt last indefinitely because, as observers note, its gutta–percha casing is improved by a stay in salt water.
Besides, on this well–chosen plateau, the cable never lies at depths that could cause a break. The Nautilus followed it to its lowest reaches, located 4,431 meters down, and even there it rested without any stress or strain. Then we returned to the locality where the 1863 accident had taken place.
There the ocean floor formed a valley 120 kilometers wide, into which you could fit Mt. Blanc without its summit poking above the surface of the waves. This valley is closed off to the east by a sheer wall 2,000 meters high. We arrived there on May 28, and the Nautilus lay no farther than 150 kilometers from Ireland.
Would Captain Nemo head up north and beach us on the British Isles? No. Much to my surprise, he went back down south and returned to European seas. As we swung around the Emerald Isle, I spotted Cape Clear for an instant, plus the lighthouse on Fastnet Rock that guides all those thousands of ships setting out from Glasgow or Liverpool.
An important question then popped into my head. Would the Nautilus dare to tackle the English Channel? Ned Land (who promptly reappeared after we hugged shore) never stopped questioning me. What could I answer him? Captain Nemo remained invisible. After giving the Canadian a glimpse of American shores, was he about to show me the coast of France?
But the Nautilus kept gravitating southward. On May 30, in sight of Land's End, it passed between the lowermost tip of England and the Scilly Islands, which it left behind to starboard.
If it was going to enter the English Channel, it clearly needed to head east. It did not.
All day long on May 31, the Nautilus swept around the sea in a series of circles that had me deeply puzzled. It seemed to be searching for a locality that it had some trouble finding. At noon Captain Nemo himself came to take our bearings. He didn't address a word to me. He looked gloomier than ever. What was filling him with such sadness? Was it our proximity to these European shores? Was he reliving his memories of that country he had left behind? If so, what did he feel? Remorse or regret? For a good while these thoughts occupied my mind, and I had a hunch that fate would soon give away the captain's secrets.
The next day, June 1, the Nautilus kept to the same tack. It was obviously trying to locate some precise spot in the ocean. Just as on the day before, Captain Nemo came to take the altitude of the sun. The sea was smooth, the skies clear. Eight miles to the east, a big steamship was visible on the horizon line. No flag was flapping from the gaff of its fore–and–aft sail, and I couldn't tell its nationality.
A few minutes before the sun passed its zenith, Captain Nemo raised his sextant and took his sights with the utmost precision. The absolute calm of the waves facilitated this operation. The Nautilus lay motionless, neither rolling nor pitching.
I was on the platform just then. After determining our position, the captain pronounced only these words:
"It's right here!"
He went down the hatch. Had he seen that vessel change course and seemingly head toward us? I'm unable to say.
I returned to the lounge. The hatch closed, and I heard water hissing in the ballast tanks. The Nautilus began to sink on a vertical line, because its propeller was in check and no longer furnished any forward motion.
Some minutes later it stopped at a depth of 833 meters and came to rest on the seafloor.
The ceiling lights in the lounge then went out, the panels opened, and through the windows I saw, for a half–mile radius, the sea brightly lit by the beacon's rays.
I looked to port and saw nothing but the immenseness of these tranquil waters.
To starboard, a prominent bulge on the sea bottom caught my attention. You would have thought it was some ruin enshrouded in a crust of whitened seashells, as if under a mantle of snow. Carefully examining this mass, I could identify the swollen outlines of a ship shorn of its masts, which must have sunk bow first. This casualty certainly dated from some far–off time. To be so caked with the limestone of these waters, this wreckage must have spent many a year on the ocean floor.
What ship was this? Why had the Nautilus come to visit its grave? Was it something other than a maritime accident that had dragged this craft under the waters?
I wasn't sure what to think, but next to me I heard Captain Nemo's voice slowly say:
"Originally this ship was christened the Marseillais. It carried seventy–four cannons and was launched in 1762. On August 13, 1778, commanded by La Poype–Vertrieux, it fought valiantly against the Preston. On July 4, 1779, as a member of the squadron under Admiral d'Estaing, it assisted in the capture of the island of Grenada. On September 5, 1781, under the Count de Grasse, it took part in the Battle of Chesapeake Bay. In 1794 the new Republic of France changed the name of this ship. On April 16 of that same year, it joined the squadron at Brest under Rear Admiral Villaret de Joyeuse, who was entrusted with escorting a convoy of wheat coming from America under the command of Admiral Van Stabel. In this second year of the French Revolutionary Calendar, on the 11th and 12th days in the Month of Pasture, this squadron fought an encounter with English vessels. Sir, today is June 1, 1868, or the 13th day in the Month of Pasture. Seventy–four years ago to the day, at this very spot in latitude 47° 24' and longitude 17° 28', this ship sank after a heroic battle; its three masts gone, water in its hold, a third of its crew out of action, it preferred to go to the bottom with its 356 seamen rather than surrender; and with its flag nailed up on the afterdeck, it disappeared beneath the waves to shouts of 'Long live the Republic!'"
"This is the Avenger!" I exclaimed.
"Yes, sir! The Avenger! A splendid name!" Captain Nemo murmured, crossing his arms.
THE WAY HE SAID THIS, the unexpectedness of this scene, first the biography of this patriotic ship, then the excitement with which this eccentric individual pronounced these last words—the name Avenger whose significance could not escape me—all this, taken together, had a profound impact on my mind. My eyes never left the captain. Hands outstretched toward the sea, he contemplated the proud wreck with blazing eyes. Perhaps I would never learn who he was, where he came from or where he was heading, but more and more I could see a distinction between the man and the scientist. It was no ordinary misanthropy that kept Captain Nemo and his companions sequestered inside the Nautilus's plating, but a hate so monstrous or so sublime that the passing years could never weaken it.
Did this hate also hunger for vengeance? Time would soon tell.
Meanwhile the Nautilus rose slowly to the surface of the sea, and I watched the Avenger's murky shape disappearing little by little. Soon a gentle rolling told me that we were afloat in the open air.
Just then a hollow explosion was audible. I looked at the captain. The captain did not stir.
"Captain?" I said.
He didn't reply.
I left him and climbed onto the platform. Conseil and the Canadian were already there.
"What caused that explosion?" I asked.
"A cannon going off," Ned Land replied.
I stared in the direction of the ship I had spotted. It was heading toward the Nautilus, and you could tell it had put on steam. Six miles separated it from us.
"What sort of craft is it, Ned?"
"From its rigging and its low masts," the Canadian replied, "I bet it's a warship. Here's hoping it pulls up and sinks this damned Nautilus!"
"Ned my friend," Conseil replied, "what harm could it do the Nautilus? Will it attack us under the waves? Will it cannonade us at the bottom of the sea?"
"Tell me, Ned," I asked, "can you make out the nationality of that craft?"
Creasing his brow, lowering his lids, and puckering the corners of his eyes, the Canadian focused the full power of his gaze on the ship for a short while.
"No, sir," he replied. "I can't make out what nation it's from. It's flying no flag. But I'll swear it's a warship, because there's a long pennant streaming from the peak of its mainmast."
For a quarter of an hour, we continued to watch the craft bearing down on us. But it was inconceivable to me that it had discovered the Nautilus at such a distance, still less that it knew what this underwater machine really was.
Soon the Canadian announced that the craft was a big battleship, a double–decker ironclad complete with ram. Dark, dense smoke burst from its two funnels. Its furled sails merged with the lines of its yardarms. The gaff of its fore–and–aft sail flew no flag. Its distance still kept us from distinguishing the colors of its pennant, which was fluttering like a thin ribbon.
It was coming on fast. If Captain Nemo let it approach, a chance for salvation might be available to us.

I didn't reply to the Canadian's proposition but kept watching the ship, which was looming larger on the horizon. Whether it was English, French, American, or Russian, it would surely welcome us aboard if we could just get to it.
"Master may recall," Conseil then said, "that we have some experience with swimming. He can rely on me to tow him to that vessel, if he's agreeable to going with our friend Ned."
Before I could reply, white smoke streamed from the battleship's bow. Then, a few seconds later, the waters splashed astern of the Nautilus, disturbed by the fall of a heavy object. Soon after, an explosion struck my ears.
"What's this? They're firing at us!" I exclaimed.
"Good lads!" the Canadian muttered.
"That means they don't see us as castaways clinging to some wreckage!"
"With all due respect to Master—gracious!" Conseil put in, shaking off the water that had sprayed over him from another shell. "With all due respect to master, they've discovered the narwhale and they're cannonading the same."
"But it must be clear to them," I exclaimed, "that they're dealing with human beings."
"Maybe that's why!" Ned Land replied, staring hard at me.
The full truth dawned on me. Undoubtedly people now knew where they stood on the existence of this so–called monster. Undoubtedly the latter's encounter with the Abraham Lincoln, when the Canadian hit it with his harpoon, had led Commander Farragut to recognize the narwhale as actually an underwater boat, more dangerous than any unearthly cetacean!
Yes, this had to be the case, and undoubtedly they were now chasing this dreadful engine of destruction on every sea!
Dreadful indeed, if, as we could assume, Captain Nemo had been using the Nautilus in works of vengeance! That night in the middle of the Indian Ocean, when he imprisoned us in the cell, hadn't he attacked some ship? That man now buried in the coral cemetery, wasn't he the victim of some collision caused by the Nautilus? Yes, I repeat: this had to be the case. One part of Captain Nemo's secret life had been unveiled.
This whole fearsome sequence of events appeared in my mind's eye. Instead of encountering friends on this approaching ship, we would find only pitiless enemies.
Meanwhile shells fell around us in increasing numbers. Some, meeting the liquid surface, would ricochet and vanish into the sea at considerable distances. But none of them reached the Nautilus.
By then the ironclad was no more than three miles off. Despite its violent cannonade, Captain Nemo hadn't appeared on the platform. And yet if one of those conical shells had scored a routine hit on the Nautilus's hull, it could have been fatal to him.
The Canadian then told me:
"Sir, we've got to do everything we can to get out of this jam! Let's signal them! Damnation! Maybe they'll realize we're decent people!"
Ned Land pulled out his handkerchief to wave it in the air. But he had barely unfolded it when he was felled by an iron fist, and despite his great strength, he tumbled to the deck.
"Scum!" the captain shouted. "Do you want to be nailed to the Nautilus's spur before it charges that ship?"
Dreadful to hear, Captain Nemo was even more dreadful to see. His face was pale from some spasm of his heart, which must have stopped beating for an instant. His pupils were hideously contracted. His voice was no longer speaking, it was bellowing. Bending from the waist, he shook the Canadian by the shoulders.
Then, dropping Ned and turning to the battleship, whose shells were showering around him:
"O ship of an accursed nation, you know who I am!" he shouted in his powerful voice. "And I don't need your colors to recognize you! Look! I'll show you mine!"
And in the bow of the platform, Captain Nemo unfurled a black flag, like the one he had left planted at the South Pole.
Just then a shell hit the Nautilus's hull obliquely, failed to breach it, ricocheted near the captain, and vanished into the sea.
Captain Nemo shrugged his shoulders. Then, addressing me:
"Go below!" he told me in a curt tone. "You and your companions, go below!"
"Sir," I exclaimed, "are you going to attack this ship?"
"Sir, I'm going to sink it."
"You wouldn't!"
"I will," Captain Nemo replied icily. "You're ill–advised to pass judgment on me, sir. Fate has shown you what you weren't meant to see. The attack has come. Our reply will be dreadful. Get back inside!"
"From what country is that ship?"
"You don't know? Fine, so much the better! At least its nationality will remain a secret to you. Go below!"
The Canadian, Conseil, and I could only obey. Some fifteen of the Nautilus's seamen surrounded their captain and stared with a feeling of implacable hate at the ship bearing down on them. You could feel the same spirit of vengeance enkindling their every soul.
I went below just as another projectile scraped the Nautilus's hull, and I heard the captain exclaim:
"Shoot, you demented vessel! Shower your futile shells! You won't escape the Nautilus's spur! But this isn't the place where you'll perish! I don't want your wreckage mingling with that of the Avenger!"
I repaired to my stateroom. The captain and his chief officer stayed on the platform. The propeller was set in motion. The Nautilus swiftly retreated, putting us outside the range of the vessel's shells. But the chase continued, and Captain Nemo was content to keep his distance.
Near four o'clock in the afternoon, unable to control the impatience and uneasiness devouring me, I went back to the central companionway. The hatch was open. I ventured onto the platform. The captain was still strolling there, his steps agitated. He stared at the ship, which stayed to his leeward five or six miles off. He was circling it like a wild beast, drawing it eastward, letting it chase after him. Yet he didn't attack. Was he, perhaps, still undecided?
I tried to intervene one last time. But I had barely queried Captain Nemo when the latter silenced me:
"I'm the law, I'm the tribunal! I'm the oppressed, and there are my oppressors! Thanks to them, I've witnessed the destruction of everything I loved, cherished, and venerated—homeland, wife, children, father, and mother! There lies everything I hate! Not another word out of you!"
I took a last look at the battleship, which was putting on steam. Then I rejoined Ned and Conseil.
"We'll escape!" I exclaimed.
"Good," Ned put in. "Where's that ship from?"
"I've no idea. But wherever it's from, it will sink before nightfall. In any event, it's better to perish with it than be accomplices in some act of revenge whose merits we can't gauge."
"That's my feeling," Ned Land replied coolly. "Let's wait for nightfall."
Night fell. A profound silence reigned on board. The compass indicated that the Nautilus hadn't changed direction. I could hear the beat of its propeller, churning the waves with steady speed. Staying on the surface of the water, it rolled gently, sometimes to one side, sometimes to the other.
My companions and I had decided to escape as soon as the vessel came close enough for us to be heard—or seen, because the moon would wax full in three days and was shining brightly. Once we were aboard that ship, if we couldn't ward off the blow that threatened it, at least we could do everything that circumstances permitted. Several times I thought the Nautilus was about to attack. But it was content to let its adversary approach, and then it would quickly resume its retreating ways.
Part of the night passed without incident. We kept watch for an opportunity to take action. We talked little, being too keyed up. Ned Land was all for jumping overboard. I forced him to wait. As I saw it, the Nautilus would attack the double–decker on the surface of the waves, and then it would be not only possible but easy to escape.
At three o'clock in the morning, full of uneasiness, I climbed onto the platform. Captain Nemo hadn't left it. He stood in the bow next to his flag, which a mild breeze was unfurling above his head. His eyes never left that vessel. The extraordinary intensity of his gaze seemed to attract it, beguile it, and draw it more surely than if he had it in tow!
The moon then passed its zenith. Jupiter was rising in the east. In the midst of this placid natural setting, sky and ocean competed with each other in tranquility, and the sea offered the orb of night the loveliest mirror ever to reflect its image.
And when I compared this deep calm of the elements with all the fury seething inside the plating of this barely perceptible Nautilus, I shivered all over.
The vessel was two miles off. It drew nearer, always moving toward the phosphorescent glow that signaled the Nautilus's presence. I saw its green and red running lights, plus the white lantern hanging from the large stay of its foremast. Hazy flickerings were reflected on its rigging and indicated that its furnaces were pushed to the limit. Showers of sparks and cinders of flaming coal escaped from its funnels, spangling the air with stars.
I stood there until six o'clock in the morning, Captain Nemo never seeming to notice me. The vessel lay a mile and a half off, and with the first glimmers of daylight, it resumed its cannonade. The time couldn't be far away when the Nautilus would attack its adversary, and my companions and I would leave forever this man I dared not judge.
I was about to go below to alert them, when the chief officer climbed onto the platform. Several seamen were with him. Captain Nemo didn't see them, or didn't want to see them. They carried out certain procedures that, on the Nautilus, you could call "clearing the decks for action." They were quite simple. The manropes that formed a handrail around the platform were lowered. Likewise the pilothouse and the beacon housing were withdrawn into the hull until they lay exactly flush with it. The surface of this long sheet–iron cigar no longer offered a single protrusion that could hamper its maneuvers.
I returned to the lounge. The Nautilus still emerged above the surface. A few morning gleams infiltrated the liquid strata. Beneath the undulations of the billows, the windows were enlivened by the blushing of the rising sun. That dreadful day of June 2 had dawned.
At seven o'clock the log told me that the Nautilus had reduced speed. I realized that it was letting the warship approach. Moreover, the explosions grew more intensely audible. Shells furrowed the water around us, drilling through it with an odd hissing sound.
"My friends," I said, "it's time. Let's shake hands, and may God be with us!"
Ned Land was determined, Conseil calm, I myself nervous and barely in control.
We went into the library. Just as I pushed open the door leading to the well of the central companionway, I heard the hatch close sharply overhead.
The Canadian leaped up the steps, but I stopped him. A well–known hissing told me that water was entering the ship's ballast tanks. Indeed, in a few moments the Nautilus had submerged some meters below the surface of the waves.
I understood this maneuver. It was too late to take action. The Nautilus wasn't going to strike the double–decker where it was clad in impenetrable iron armor, but below its waterline, where the metal carapace no longer protected its planking.
We were prisoners once more, unwilling spectators at the performance of this gruesome drama. But we barely had time to think. Taking refuge in my stateroom, we stared at each other without pronouncing a word. My mind was in a total daze. My mental processes came to a dead stop. I hovered in that painful state that predominates during the period of anticipation before some frightful explosion. I waited, I listened, I lived only through my sense of hearing!
Meanwhile the Nautilus's speed had increased appreciably. So it was gathering momentum. Its entire hull was vibrating.
Suddenly I let out a yell. There had been a collision, but it was comparatively mild. I could feel the penetrating force of the steel spur. I could hear scratchings and scrapings. Carried away with its driving power, the Nautilus had passed through the vessel's mass like a sailmaker's needle through canvas!
I couldn't hold still. Frantic, going insane, I leaped out of my stateroom and rushed into the lounge.
Captain Nemo was there. Mute, gloomy, implacable, he was staring through the port panel.
An enormous mass was sinking beneath the waters, and the Nautilus, missing none of its death throes, was descending into the depths with it. Ten meters away, I could see its gaping hull, into which water was rushing with a sound of thunder, then its double rows of cannons and railings. Its deck was covered with dark, quivering shadows.
The water was rising. Those poor men leaped up into the shrouds, clung to the masts, writhed beneath the waters. It was a human anthill that an invading sea had caught by surprise!
 I was glued to the window by an irresistible allure!
The enormous vessel settled slowly. Following it down, the Nautilus kept watch on its every movement. Suddenly there was an eruption. The air compressed inside the craft sent its decks flying, as if the powder stores had been ignited. The thrust of the waters was so great, the Nautilus swerved away.
The poor ship then sank more swiftly. Its mastheads appeared, laden with victims, then its crosstrees bending under clusters of men, finally the peak of its mainmast. Then the dark mass disappeared, and with it a crew of corpses dragged under by fearsome eddies. . . .
I turned to Captain Nemo. This dreadful executioner, this true archangel of hate, was still staring. When it was all over, Captain Nemo headed to the door of his stateroom, opened it, and entered.
On the rear paneling, beneath the portraits of his heroes, I saw the portrait of a still–youthful woman with two little children. Captain Nemo stared at them for a few moments, stretched out his arms to them, sank to his knees, and melted into sobs.
THE PANELS CLOSED over this frightful view, but the lights didn't go on in the lounge. Inside the Nautilus all was gloom and silence. It left this place of devastation with prodigious speed, 100 feet beneath the waters. Where was it going? North or south? Where would the man flee after this horrible act of revenge?
I reentered my stateroom, where Ned and Conseil were waiting silently. Captain Nemo filled me with insurmountable horror. Whatever he had once suffered at the hands of humanity, he had no right to mete out such punishment. He had made me, if not an accomplice, at least an eyewitness to his vengeance! Even this was intolerable.
At eleven o'clock the electric lights came back on. I went into the lounge. It was deserted. I consulted the various instruments. The Nautilus was fleeing northward at a speed of twenty–five miles per hour, sometimes on the surface of the sea, sometimes thirty feet beneath it.
After our position had been marked on the chart, I saw that we were passing into the mouth of the English Channel, that our heading would take us to the northernmost seas with incomparable speed.
I could barely glimpse the swift passing of longnose sharks, hammerhead sharks, spotted dogfish that frequent these waters, big eagle rays, swarms of seahorse looking like knights on a chessboard, eels quivering like fireworks serpents, armies of crab that fled obliquely by crossing their pincers over their carapaces, finally schools of porpoise that held contests of speed with the Nautilus. But by this point observing, studying, and classifying were out of the question.
By evening we had cleared 200 leagues up the Atlantic. Shadows gathered and gloom overran the sea until the moon came up.
I repaired to my stateroom. I couldn't sleep. I was assaulted by nightmares. That horrible scene of destruction kept repeating in my mind's eye.
From that day forward, who knows where the Nautilus took us in the north Atlantic basin? Always at incalculable speed! Always amid the High Arctic mists! Did it call at the capes of Spitzbergen or the shores of Novaya Zemlya? Did it visit such uncharted seas as the White Sea, the Kara Sea, the Gulf of Ob, the Lyakhov Islands, or those unknown beaches on the Siberian coast? I'm unable to say. I lost track of the passing hours. Time was in abeyance on the ship's clocks. As happens in the polar regions, it seemed that night and day no longer followed their normal sequence. I felt myself being drawn into that strange domain where the overwrought imagination of Edgar Allan Poe was at home. Like his fabled Arthur Gordon Pym, I expected any moment to see that "shrouded human figure, very far larger in its proportions than any dweller among men," thrown across the cataract that protects the outskirts of the pole!
I estimate—but perhaps I'm mistaken—that the Nautilus's haphazard course continued for fifteen or twenty days, and I'm not sure how long this would have gone on without the catastrophe that ended our voyage. As for Captain Nemo, he was no longer in the picture. As for his chief officer, the same applied. Not one crewman was visible for a single instant. The Nautilus cruised beneath the waters almost continuously. When it rose briefly to the surface to renew our air, the hatches opened and closed as if automated. No more positions were reported on the world map. I didn't know where we were.
I'll also mention that the Canadian, at the end of his strength and patience, made no further appearances. Conseil couldn't coax a single word out of him and feared that, in a fit of delirium while under the sway of a ghastly homesickness, Ned would kill himself. So he kept a devoted watch on his friend every instant.
You can appreciate that under these conditions, our situation had become untenable.
One morning—whose date I'm unable to specify—I was slumbering near the first hours of daylight, a painful, sickly slumber. Waking up, I saw Ned Land leaning over me, and I heard him tell me in a low voice:
"We're going to escape!"
I sat up.
"When?" I asked.
"Tonight. There doesn't seem to be any supervision left on the Nautilus. You'd think a total daze was reigning on board. Will you be ready, sir?"
"Yes. Where are we?"
"In sight of land. I saw it through the mists just this morning, twenty miles to the east."
"What land is it?"
"I've no idea, but whatever it is, there we'll take refuge."
"Yes, Ned! We'll escape tonight even if the sea swallows us up!"
"The sea's rough, the wind's blowing hard, but a twenty–mile run in the Nautilus's nimble longboat doesn't scare me. Unknown to the crew, I've stowed some food and flasks of water inside."
"I'm with you."
"What's more," the Canadian added, "if they catch me, I'll defend myself, I'll fight to the death."

My mind was made up. The Canadian left me. I went out on the platform, where I could barely stand upright against the jolts of the billows. The skies were threatening, but land lay inside those dense mists, and we had to escape. Not a single day, or even a single hour, could we afford to lose.
I returned to the lounge, dreading yet desiring an encounter with Captain Nemo, wanting yet not wanting to see him. What would I say to him? How could I hide the involuntary horror he inspired in me? No! It was best not to meet him face to face! Best to try and forget him! And yet . . . !
How long that day seemed, the last I would spend aboard the Nautilus! I was left to myself. Ned Land and Conseil avoided speaking to me, afraid they would give themselves away.
At six o'clock I ate supper, but I had no appetite. Despite my revulsion, I forced it down, wanting to keep my strength up.
At 6:30 Ned Land entered my stateroom. He told me:
"We won't see each other again before we go. At ten o'clock the moon won't be up yet. We'll take advantage of the darkness. Come to the skiff. Conseil and I will be inside waiting for you."
The Canadian left without giving me time to answer him.
I wanted to verify the Nautilus's heading. I made my way to the lounge. We were racing north–northeast with frightful speed, fifty meters down.
I took one last look at the natural wonders and artistic treasures amassed in the museum, this unrivaled collection doomed to perish someday in the depths of the seas, together with its curator. I wanted to establish one supreme impression in my mind. I stayed there an hour, basking in the aura of the ceiling lights, passing in review the treasures shining in their glass cases. Then I returned to my stateroom.
There I dressed in sturdy seafaring clothes. I gathered my notes and packed them tenderly about my person. My heart was pounding mightily. I couldn't curb its pulsations. My anxiety and agitation would certainly have given me away if Captain Nemo had seen me.
What was he doing just then? I listened at the door to his stateroom. I heard the sound of footsteps. Captain Nemo was inside. He hadn't gone to bed. With his every movement I imagined he would appear and ask me why I wanted to escape! I felt in a perpetual state of alarm. My imagination magnified this sensation. The feeling became so acute, I wondered whether it wouldn't be better to enter the captain's stateroom, dare him face to face, brave it out with word and deed!
It was an insane idea. Fortunately I controlled myself and stretched out on the bed to soothe my bodily agitation. My nerves calmed a little, but with my brain so aroused, I did a swift review of my whole existence aboard the Nautilus, every pleasant or unpleasant incident that had crossed my path since I went overboard from the Abraham Lincoln: the underwater hunting trip, the Torres Strait, our running aground, the savages of Papua, the coral cemetery, the Suez passageway, the island of Santorini, the Cretan diver, the Bay of Vigo, Atlantis, the Ice Bank, the South Pole, our imprisonment in the ice, the battle with the devilfish, the storm in the Gulf Stream, the Avenger, and that horrible scene of the vessel sinking with its crew . . . ! All these events passed before my eyes like backdrops unrolling upstage in a theater. In this strange setting Captain Nemo then grew fantastically. His features were accentuated, taking on superhuman proportions. He was no longer my equal, he was the Man of the Waters, the Spirit of the Seas.
By then it was 9:30. I held my head in both hands to keep it from bursting. I closed my eyes. I no longer wanted to think. A half hour still to wait! A half hour of nightmares that could drive me insane!
Just then I heard indistinct chords from the organ, melancholy harmonies from some undefinable hymn, actual pleadings from a soul trying to sever its earthly ties. I listened with all my senses at once, barely breathing, immersed like Captain Nemo in this musical trance that was drawing him beyond the bounds of this world.
Then a sudden thought terrified me. Captain Nemo had left his stateroom. He was in the same lounge I had to cross in order to escape. There I would encounter him one last time. He would see me, perhaps speak to me! One gesture from him could obliterate me, a single word shackle me to his vessel!
Even so, ten o'clock was about to strike. It was time to leave my stateroom and rejoin my companions.
I dared not hesitate, even if Captain Nemo stood before me. I opened the door cautiously, but as it swung on its hinges, it seemed to make a frightful noise. This noise existed, perhaps, only in my imagination!
I crept forward through the Nautilus's dark gangways, pausing after each step to curb the pounding of my heart.
I arrived at the corner door of the lounge. I opened it gently. The lounge was plunged in profound darkness. Chords from the organ were reverberating faintly. Captain Nemo was there. He didn't see me. Even in broad daylight I doubt that he would have noticed me, so completely was he immersed in his trance.
I inched over the carpet, avoiding the tiniest bump whose noise might give me away. It took me five minutes to reach the door at the far end, which led into the library.
I was about to open it when a gasp from Captain Nemo nailed me to the spot. I realized that he was standing up. I even got a glimpse of him because some rays of light from the library had filtered into the lounge. He was coming toward me, arms crossed, silent, not walking but gliding like a ghost. His chest was heaving, swelling with sobs. And I heard him murmur these words, the last of his to reach my ears:
"O almighty God! Enough! Enough!"
Was it a vow of repentance that had just escaped from this man's conscience . . . ?
Frantic, I rushed into the library. I climbed the central companionway, and going along the upper gangway, I arrived at the skiff. I went through the opening that had already given access to my two companions.
"Let's go, let's go!" I exclaimed.
"Right away!" the Canadian replied.
First, Ned Land closed and bolted the opening cut into the Nautilus's sheet iron, using the monkey wrench he had with him. After likewise closing the opening in the skiff, the Canadian began to unscrew the nuts still bolting us to the underwater boat.
Suddenly a noise from the ship's interior became audible. Voices were answering each other hurriedly. What was it? Had they spotted our escape? I felt Ned Land sliding a dagger into my hand.
"Yes," I muttered, "we know how to die!"
The Canadian paused in his work. But one word twenty times repeated, one dreadful word, told me the reason for the agitation spreading aboard the Nautilus. We weren't the cause of the crew's concern.
"Maelstrom! Maelstrom!" they were shouting.
The Maelstrom! Could a more frightening name have rung in our ears under more frightening circumstances? Were we lying in the dangerous waterways off the Norwegian coast? Was the Nautilus being dragged into this whirlpool just as the skiff was about to detach from its plating?
As you know, at the turn of the tide, the waters confined between the Faroe and Lofoten Islands rush out with irresistible violence. They form a vortex from which no ship has ever been able to escape. Monstrous waves race together from every point of the horizon. They form a whirlpool aptly called "the ocean's navel," whose attracting power extends a distance of fifteen kilometers.
This was where the Nautilus had been sent accidentally—or perhaps deliberately—by its captain. It was sweeping around in a spiral whose radius kept growing smaller and smaller. The skiff, still attached to the ship's plating, was likewise carried around at dizzying speed. I could feel us whirling. I was experiencing that accompanying nausea that follows such continuous spinning motions. We were in dread, in the last stages of sheer horror, our blood frozen in our veins, our nerves numb, drenched in cold sweat as if from the throes of dying! And what a noise around our frail skiff! What roars echoing from several miles away! What crashes from the waters breaking against sharp rocks on the seafloor, where the hardest objects are smashed, where tree trunks are worn down and worked into "a shaggy fur," as Norwegians express it!
What a predicament! We were rocking frightfully. The Nautilus defended itself like a human being. Its steel muscles were cracking. Sometimes it stood on end, the three of us along with it!
"We've got to hold on tight," Ned said, "and screw the nuts down again! If we can stay attached to the Nautilus, we can still make it . . . !"
He hadn't finished speaking when a cracking sound occurred. The nuts gave way, and ripped out of its socket, the skiff was hurled like a stone from a sling into the midst of the vortex.
My head struck against an iron timber, and with this violent shock I lost consciousness.
WE COME TO the conclusion of this voyage under the seas. What happened that night, how the skiff escaped from the Maelstrom's fearsome eddies, how Ned Land, Conseil, and I got out of that whirlpool, I'm unable to say. But when I regained consciousness, I was lying in a fisherman's hut on one of the Lofoten Islands. My two companions, safe and sound, were at my bedside clasping my hands. We embraced each other heartily.
Just now we can't even dream of returning to France. Travel between upper Norway and the south is limited. So I have to wait for the arrival of a steamboat that provides bimonthly service from North Cape.
So it is here, among these gallant people who have taken us in, that I'm reviewing my narrative of these adventures. It is accurate. Not a fact has been omitted, not a detail has been exaggerated. It's the faithful record of this inconceivable expedition into an element now beyond human reach, but where progress will someday make great inroads.
Will anyone believe me? I don't know. Ultimately it's unimportant. What I can now assert is that I've earned the right to speak of these seas, beneath which in less than ten months, I've cleared 20,000 leagues in this underwater tour of the world that has shown me so many wonders across the Pacific, the Indian Ocean, the Red Sea, the Mediterranean, the Atlantic, the southernmost and northernmost seas!
But what happened to the Nautilus? Did it withstand the Maelstrom's clutches? Is Captain Nemo alive? Is he still under the ocean pursuing his frightful program of revenge, or did he stop after that latest mass execution? Will the waves someday deliver that manuscript that contains his full life story? Will I finally learn the man's name? Will the nationality of the stricken warship tell us the nationality of Captain Nemo?
I hope so. I likewise hope that his powerful submersible has defeated the sea inside its most dreadful whirlpool, that the Nautilus has survived where so many ships have perished! If this is the case and Captain Nemo still inhabits the ocean—his adopted country—may the hate be appeased in that fierce heart! May the contemplation of so many wonders extinguish the spirit of vengeance in him! May the executioner pass away, and the scientist continue his peaceful exploration of the seas! If his destiny is strange, it's also sublime. Haven't I encompassed it myself? Didn't I lead ten months of this otherworldly existence? Thus to that question asked 6,000 years ago in the Book of Ecclesiastes—"Who can fathom the soundless depths?"—two men out of all humanity have now earned the right to reply. Captain Nemo and I.
*** END OF THE PROJECT GUTENBERG EBOOK, TWENTY THOUSAND LEAGUES UNDER THE SEA *** This file should be named 2000010ah.htm or 2000010ah.zip Corrected EDITIONS of our eBooks get a new NUMBER, 2000011ah.htm VERSIONS based on separate sources get new LETTER, 2000010bh.htm Project Gutenberg eBooks are often created from several printed editions, all of which are confirmed as Public Domain in the US unless a copyright notice is included. Thus, we usually do not keep eBooks in compliance with any particular paper edition. We are now trying to release all our eBooks one year in advance of the official release dates, leaving time for better editing. Please be encouraged to tell us about any error or corrections, even years after the official publication date. Please note neither this listing nor its contents are final til midnight of the last day of the month of any such announcement. The official release date of all Project Gutenberg eBooks is at Midnight, Central Time, of the last day of the stated month. A preliminary version may often be posted for suggestion, comment and editing by those who wish to do so. Most people start at our Web sites at: http://gutenberg.net or http://promo.net/pg These Web sites include award-winning information about Project Gutenberg, including how to donate, how to help produce our new eBooks, and how to subscribe to our email newsletter (free!). Those of you who want to download any eBook before announcement can get to them as follows, and just download by date. This is also a good way to get them instantly upon announcement, as the indexes our cataloguers produce obviously take a while after an announcement goes out in the Project Gutenberg Newsletter. http://www.ibiblio.org/gutenberg/etext05 or ftp://ftp.ibiblio.org/pub/docs/books/gutenberg/etext05 Or /etext05, 04, 03, 02, 01, 00, 99, 98, 97, 96, 95, 94, 93, 92, 92, 91 or 90 Just search by the first five letters of the filename you want, as it appears in our Newsletters. Information about Project Gutenberg (one page) We produce about two million dollars for each hour we work. The time it takes us, a rather conservative estimate, is fifty hours to get any eBook selected, entered, proofread, edited, copyright searched and analyzed, the copyright letters written, etc. Our projected audience is one hundred million readers. If the value per text is nominally estimated at one dollar then we produce $2 million dollars per hour in 2002 as we release over 100 new text files per month: 1240 more eBooks in 2001 for a total of 4000+ We are already on our way to trying for 2000 more eBooks in 2002 If they reach just 1-2% of the world's population then the total will reach over half a trillion eBooks given away by year's end. The Goal of Project Gutenberg is to Give Away 1 Trillion eBooks! This is ten thousand titles each to one hundred million readers, which is only about 4% of the present number of computer users. Here is the briefest record of our progress (* means estimated): eBooks Year Month 1 1971 July 10 1991 January 100 1994 January 1000 1997 August 1500 1998 October 2000 1999 December 2500 2000 December 3000 2001 November 4000 2001 October/November 6000 2002 December* 9000 2003 November* 10000 2004 January* The Project Gutenberg Literary Archive Foundation has been created to secure a future for Project Gutenberg into the next millennium. We need your donations more than ever! As of February, 2002, contributions are being solicited from people and organizations in: Alabama, Alaska, Arkansas, Connecticut, Delaware, District of Columbia, Florida, Georgia, Hawaii, Illinois, Indiana, Iowa, Kansas, Kentucky, Louisiana, Maine, Massachusetts, Michigan, Mississippi, Missouri, Montana, Nebraska, Nevada, New Hampshire, New Jersey, New Mexico, New York, North Carolina, Ohio, Oklahoma, Oregon, Pennsylvania, Rhode Island, South Carolina, South Dakota, Tennessee, Texas, Utah, Vermont, Virginia, Washington, West Virginia, Wisconsin, and Wyoming. We have filed in all 50 states now, but these are the only ones that have responded. As the requirements for other states are met, additions to this list will be made and fund raising will begin in the additional states. Please feel free to ask to check the status of your state. In answer to various questions we have received on this: We are constantly working on finishing the paperwork to legally request donations in all 50 states. If your state is not listed and you would like to know if we have added it since the list you have, just ask. While we cannot solicit donations from people in states where we are not yet registered, we know of no prohibition against accepting donations from donors in these states who approach us with an offer to donate. International donations are accepted, but we don't know ANYTHING about how to make them tax-deductible, or even if they CAN be made deductible, and don't have the staff to handle it even if there are ways. Donations by check or money order may be sent to: Project Gutenberg Literary Archive Foundation PMB 113 1739 University Ave. Oxford, MS 38655-4109 Contact us if you want to arrange for a wire transfer or payment method other than by check or money order. The Project Gutenberg Literary Archive Foundation has been approved by the US Internal Revenue Service as a 501(c)(3) organization with EIN [Employee Identification Number] 64-622154. Donations are tax-deductible to the maximum extent permitted by law. As fund-raising requirements for other states are met, additions to this list will be made and fund-raising will begin in the additional states. We need your donations more than ever! You can get up to date donation information online at: http://www.gutenberg.net/donation.html *** If you can't reach Project Gutenberg, you can always email directly to: Michael S. Hart<EMAIL_ADDRESS>Prof. Hart will answer or forward your message. We would prefer to send you information by email. **The Legal Small Print** (Three Pages) ***START**THE SMALL PRINT!**FOR PUBLIC DOMAIN EBOOKS**START*** Why is this "Small Print!" statement here? You know: lawyers. They tell us you might sue us if there is something wrong with your copy of this eBook, even if you got it for free from someone other than us, and even if what's wrong is not our fault. So, among other things, this "Small Print!" statement disclaims most of our liability to you. It also tells you how you may distribute copies of this eBook if you want to. *BEFORE!* YOU USE OR READ THIS EBOOK By using or reading any part of this PROJECT GUTENBERG-tm eBook, you indicate that you understand, agree to and accept this "Small Print!" statement. If you do not, you can receive a refund of the money (if any) you paid for this eBook by sending a request within 30 days of receiving it to the person you got it from. If you received this eBook on a physical medium (such as a disk), you must return it with your request. ABOUT PROJECT GUTENBERG-TM EBOOKS This PROJECT GUTENBERG-tm eBook, like most PROJECT GUTENBERG-tm eBooks, is a "public domain" work distributed by Professor Michael S. Hart through the Project Gutenberg Association (the "Project"). Among other things, this means that no one owns a United States copyright on or for this work, so the Project (and you!) can copy and distribute it in the United States without permission and without paying copyright royalties. Special rules, set forth below, apply if you wish to copy and distribute this eBook under the "PROJECT GUTENBERG" trademark. Please do not use the "PROJECT GUTENBERG" trademark to market any commercial products without permission. To create these eBooks, the Project expends considerable efforts to identify, transcribe and proofread public domain works. Despite these efforts, the Project's eBooks and any medium they may be on may contain "Defects". Among other things, Defects may take the form of incomplete, inaccurate or corrupt data, transcription errors, a copyright or other intellectual property infringement, a defective or damaged disk or other eBook medium, a computer virus, or computer codes that damage or cannot be read by your equipment. LIMITED WARRANTY; DISCLAIMER OF DAMAGES But for the "Right of Replacement or Refund" described below, [1] Michael Hart and the Foundation (and any other party you may receive this eBook from as a PROJECT GUTENBERG-tm eBook) disclaims all liability to you for damages, costs and expenses, including legal fees, and [2] YOU HAVE NO REMEDIES FOR NEGLIGENCE OR UNDER STRICT LIABILITY, OR FOR BREACH OF WARRANTY OR CONTRACT, INCLUDING BUT NOT LIMITED TO INDIRECT, CONSEQUENTIAL, PUNITIVE OR INCIDENTAL DAMAGES, EVEN IF YOU GIVE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. If you discover a Defect in this eBook within 90 days of receiving it, you can receive a refund of the money (if any) you paid for it by sending an explanatory note within that time to the person you received it from. If you received it on a physical medium, you must return it with your note, and such person may choose to alternatively give you a replacement copy. If you received it electronically, such person may choose to alternatively give you a second opportunity to receive it electronically.  NO OTHER WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, ARE MADE TO YOU AS TO THE EBOOK OR ANY MEDIUM IT MAY BE ON, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimers of implied warranties or the exclusion or limitation of consequential damages, so the above disclaimers and exclusions may not apply to you, and you may have other legal rights. INDEMNITY You will indemnify and hold Michael Hart, the Foundation, and its trustees and agents, and any volunteers associated with the production and distribution of Project Gutenberg-tm texts harmless, from all liability, cost and expense, including legal fees, that arise directly or indirectly from any of the following that you do or cause: [1] distribution of this eBook, [2] alteration, modification, or addition to the eBook, or [3] any Defect. DISTRIBUTION UNDER "PROJECT GUTENBERG-tm" You may distribute copies of this eBook electronically, or by disk, book or any other medium if you either delete this "Small Print!" and all other references to Project Gutenberg, or: [1] Only give exact copies of it. Among other things, this requires that you do not remove, alter or modify the eBook or this "small print!" statement. You may however, if you wish, distribute this eBook in machine readable binary, compressed, mark-up, or proprietary form, including any form resulting from conversion by word processing or hypertext software, but only so long as *EITHER*: [*] The eBook, when displayed, is clearly readable, and does *not* contain characters other than those intended by the author of the work, although tilde (~), asterisk (*) and underline (_) characters may be used to convey punctuation intended by the author, and additional characters may be used to indicate hypertext links; OR [*] The eBook may be readily converted by the reader at no expense into plain ASCII, EBCDIC or equivalent form by the program that displays the eBook (as is the case, for instance, with most word processors); OR [*] You provide, or agree to also provide on request at no additional cost, fee or expense, a copy of the eBook in its original plain ASCII form (or in EBCDIC or other equivalent proprietary form). [2] Honor the eBook refund and replacement provisions of this "Small Print!" statement. [3] Pay a trademark license fee to the Foundation of 20% of the gross profits you derive calculated using the method you already use to calculate your applicable taxes. If you don't derive profits, no royalty is due. Royalties are payable to "Project Gutenberg Literary Archive Foundation" the 60 days following each date you prepare (or were legally required to prepare) your annual (or equivalent periodic) tax return. Please contact us beforehand to let us know your plans and to work out the details. WHAT IF YOU *WANT* TO SEND MONEY EVEN IF YOU DON'T HAVE TO? Project Gutenberg is dedicated to increasing the number of public domain and licensed works that can be freely distributed in machine readable form. The Project gratefully accepts contributions of money, time, public domain materials, or royalty free copyright licenses. Money should be paid to the: "Project Gutenberg Literary Archive Foundation." If you are interested in contributing scanning equipment or software or other items, please contact Michael Hart at<EMAIL_ADDRESS>[Portions of this eBook's header and trailer may be reprinted only when distributed free of all fees. Copyright (C) 2001, 2002 by Michael S. Hart. Project Gutenberg is a TradeMark and may not be used in any sales of Project Gutenberg eBooks or other materials be they hardware or software or any other related product without express permission.] *END THE SMALL PRINT! FOR PUBLIC DOMAIN EBOOKS*Ver.02/11/02*END*


Welcome to the Peril API
There isn't much to do on here TBH, you're probably better off going to
peril.systems


Ramya Srinivasan
My journey with the Art of Living
How I found my Guru
When I was a student in the Delhi University, my friends had forced me into taking the happiness program. I wanted to test how it works and had went to attend it. I liked it and started volunteering and my friends started calling me lady baba :D Nevertheless, I continued my way and after a few days I observed an evident change in their behaviour towards me, in a very good way.
This website will include in this sequence:
- A photo of di in action with her name on overlay
- Upcoming Sessions
- A time line of di's Art of Living journey
- Guru Story Section
- di's teachers (saleel pulekar, rajesh jagasia) and colleagues (Jayant, Ankur, etc.)
- Photo Gallery carousal(slideshow)
- links to Social profiles
- What students say (testimonials)
❮
❯


| SCUO Index {cubfits} | R Documentation |
Calculate the Synonymous Codon Usage Order (SCUO) index for each gene. Used as a substitute for expression in cases of without expression measurements.
calc_scuo_values(codon.counts)
codon.counts |
an object of format |
This function computes SCUO index for each gene. Typically, this method is completely based on entropy and information theory to estimate expression values of sequences according to their codon information.
SCUO
indices are returned.
Drew Schmidt.
http://www.tandfonline.com/doi/abs/10.1080/03081070500502967
Wan X.-F., Zhou J., Xu D. “CodonO: a new informatics method for measuring synonymous codon usage bias within and across genomes” International Journal of General Systems Vol. 35, Iss. 1, 2006.
scuo.random()
, calc_cai_values()
,
calc_scu_values()
.
## Not run: suppressMessages(library(cubfits, quietly = TRUE)) y.scuo <- convert.y.to.scuo(ex.train$y) SCUO <- calc_scuo_values(y.scuo)$SCUO plotprxy(ex.train$phi.Obs, SCUO, ylab = "SCUO (log10)") ## End(Not run)


An interface for vertices classes. More...
#include <iostream>
#include "Core/EdgeIndexMap.h"
Go to the source code of this file.
An interface for vertices classes.
/
Definition in file IAllVertices.h.


ASUS ROG Phone II update adds new AirTrigger gestures to simulate sliding on screen
by Pranob MehrotraAsus first launched the ROG Phone II in China back in July and the phone finally made its way to the US and Indian markets in September. The device offers top-of-the-line specifications at a competitive price, however, it’s not just the flagship hardware that makes it an awesome device. Asus has also improved its software offering, adding a ton of useful features while dialing back on the gamery aesthetic. With a recent update, the company added even more useful features, like key mapping and squeeze shortcuts, into the mix. And now, the smartphone is getting new AirTrigger gestures.
If you’re familiar with the ROG Phone II, you’d already know that the device features something called AirTriggers on the right edge. These triggers aren’t exactly buttons, but ultrasonic pressure-sensitive regions in the device’s frame and they can be mapped to emulate a tap on the screen.
The latest update for the ROG Phone II adds a new functionality which will essentially allow you to map a horizontal slide on the screen to one of the AirTriggers. This new feature could come in handy in a variety of games that require you to swipe horizontally on the screen to perform a specific function. For example, in Asphalt 9 Legends the horizontal slide to change lanes can now be mapped to the AirTriggers.
Along with the new AirTrigger gestures the update (build number WW1910.35) brings a couple of additional changes and improvements. Here’s the full changelog for the latest build:
- Added grid display for game selection in the Games Library of Armoury Crate
- Added game cover customization in the Games Library of Armoury Crate
- Added AirTriggers slide gesture in Game Genie (Beta)
- Fixed the issue where navigation bar couldn’t be hidden when playing “Black Desert”
- Fixed the issue where Game Genie panel was pulled out easily when Key Mapping was used
While it isn’t mentioned in the changelog, the update also includes the Android security patch for October 2019.
Thanks to XDA Senior Member reg66 for the screenshots!


{% extends 'base.html' %} {% block content %}
Employer: {{ job.Employer }}
Link: {{ job.JobURL }}
Added by: {{ job.User }}
Job Level: {{ job.JobLevel }}
Location: {{ job.Location }}
Availability: {{ job.Availability }}
Description: {{ job.Description }}
{% endblock %}


nsss
Software
skarnet.org
The nsssd-switch program
nsssd-switch is a daemon providing a backend for clients using the
nsss library - more precisely, clients using
the nsss-all or
the nsss-switch functions.
The nsssd-switch backend is the real point of the nsss
package: it allows a complex configuration using different other backends,
similarly to the /etc/nsswitch.conf mechanism
but without its drawbacks:
- Backends that access the user/group/shadow databases are not implemented
via dynamically loaded shared libraries, but executables that are spawned by
nsssd-switch. The executables use the same protocol as nsssd-switch
itself, so the provided nsssd-unix and
nsssd-nslcd programs can be used as backends.
- No configuration file is needed, so no parsing is necessary. Backends
are sequentially listed on the nsssd-switch command line, along with
a single argument telling nsssd-switch what to do in case of failure.
This makes the decision automaton very simple.
Interface
s6-ipcserver -l0 /run/service/nsssd/s nsssd-switch [ -t timeout ] bitfield1 backend1... "" bitfield2 backend2... "" ...
or, in an execline script:
s6-ipcserver -l0 /run/service/nsssd/s
nsssd-switch
bitfield1 { backend1... }
bitfield2 { backend2... }
...
- nsssd-switch is normally spawned by a super-server like
s6-ipcserver.
There is one instance of nsssd-switch per client connection.
- nsssd-switch interprets its command line as a script that
configures all its backends. The script is a series of directives:
- First a bitfield is read: it's a number between 0 and 7.
This number determines how the backend will behave in case of failure.
- Then a backend is read: it is a full command-line, terminated
by an empty word. (In an execline
script, the backend is a block, without the empty word.) The command
line is an implementation of the server side of the nsss protocol: for instance,
nsssd-unix "" declares a Unix backend with user, group and shadow
credentials in /etc/passwd, /etc/group and /etc/shadow.
- nsssd-switch spawns all its declared backends.
- It then reads queries from its client. It transmits every query to
its backends, in the order given on the command line. A success means
that the answer is immediately returned to the client, and no further
backend is contacted. A failure can be handled in different ways, depending
on the type of failure and on the bitfield associated to the
backend.
- nsssd-switch (and all the backends it spawned) exits when
the client connection is closed, or in some cases, after a timeout.
Exit codes
These exit codes are not important because only the super-server can see them.
- 0: normal exit or timeout while waiting for a client query
- 100: wrong usage
- 111: system call failed or timeout during a nsss protocol exchange
Options
- -t timeout : enforce a limit of
timeout milliseconds when communicating with a backend. If a
backend fails to answer a query under timeout milliseconds,
nsssd-switch will return a failure code to the client, and
the backend will be considered permanently failed. The default is 0,
meaning no such timeout - backends can take as much time as they want
to answer queries.
Environment variables
nsssd-switch can read a number x in the NSSSD_TIMEOUT
environment variable. If this variable is present and valid, it means that
nsssd-switch will die if x milliseconds elapse without
the client reading or writing during a nsss protocol exchange, which usually
means the client either is not speaking the protocol correctly or has become
unresponsive. It is a safety measure to avoid having nsssd processes
sticking around forever when a client is buggy.
Note that the NSSSD_TIMEOUT variable refers to a timeout during an exchange
with the client, while the argument to the -t option refers
to a timeout enforced on the backends.
Bitfields
A bitfield is a value between 0 and 7, representing 3 bits. If a
bit is 0, it means that the query resolution will continue to the next
backend if the corresponding failure condition is triggered. If the
bit is 1, it means that the failure will instantly be reported to the client
and the query will not be transmitted to the next backend in the chain.
- Bit 0: the backend is in a state of permanent failure: it failed to start,
it crashed, or it timed out.
- Bit 1: the backend answered the query with a failure.
- Bit 2: the requested entry was not found in the backend's database.
So, for instance, a bitfield of 5 means: report failure to the client if the
current backend is in a failed state or if a requested entry cannot be found.
Proceed to the next backend if the current backend reports failure when
processing a query.
This format allows the administrator to configure various fallback strategies.
Note that in case of success, the requested data is immediately returned to the
client. nsssd-switch does not provide the equivalent of the merge
directive in /etc/nsswitch.conf.
Notes
-
nsssd-switch is not meant to be called directly; instead, it is expected to be run from
a script as a part of a "nsssd"
local service.
-
The examples/ subdirectory of the nsss package provides examples
on how to run such a service.
The simplest way to do so, for testing purposes, is a command line such as:
s6-ipcserver -l0 /run/service/nsssd/s nsssd-switch 0 nsssd-unix ""
-
/run/service/nsssd/s is the default place where nsss's
implementation of the pwd.h, grp.h and shadow.h
functions expects the nsssd
service to be. It can be changed at nsss build time by giving the
--with-nsssd-socket=PATH option to configure.
-
nsssd-switch does not listen to the socket itself: it reads from its
standard input and writes to its standard output. It relies
on a superserver such as
s6-ipcserver
to manage connections to the socket. An instance of nsssd-switch is run
for every client connection.
-
If fine-grained authorizations are required (only allowing
certain users and groups to connect to the service), the superserver
can be configured to enforce them.
-
nsssd-switch does not need to run as root, provided it has all the
permissions needed by the backends it spawns.
It is recommended to create a nsss user and group, dedicated to
the nsssd service, and run the superserver as this user and group.
-
nsssd-switch is limited to 8 backends. If you need more, you can
chain another nsssd-switch invocation as the 8th backend,
which gives you another batch of 8.


?O
1
cm
6
7
8
9
10
copyright
reserved
The
New
York
Botanical
Garden
I
I
I
/
m
•f*
i
s.
L.
Catasus
Diciembre
2003
NUMBER
ClTEr||UNDER
THIS
NAME
by
A.
H.
hitch
M
ck
&
Agnes
Chase*
SEE
CON-
-
m
-
/A1
m/ms
Plant!»
Cubenses
Wrfgntlamer
No.
^
*
*'
“»ite
Colt-
C.
WRIGHT,
1860—1864.
*yr
M
New
York
Botanical
Garden
Ib04fl35
1604835
Legend -
Level of confidence that token is an accurately-transcribed word
extremely low
very low
low
undetermined
medium
high
very high


Veer Collection
Enter Product Details:
Product_name:
Upload file:
Description:
Enter description
Category:
Quantity:
price:


To whom it may concern:
I saw your posting for a {{position}} on {{source}}, and I was very interested in applying! Having reviewed your requirements for the position, I am confident that I have the skills you need to be able to contribute.
{{intro}}
Of your requirements, I wanted to highlight a few which most closely match with my previous experience.
{{conclusion}} I would be a great help to you and your team, and hope you think so too! I look forward to hearing back from you. Please contact me anytime at the number or email address below.


|
My Project
|
Set the texture you want to attach to this frame buffer. More...
#include <frame_buffer_texture_command.hpp>
Public Member Functions | |
| virtual | ~frame_buffer_texture_command () |
| void | accept (graphics_visitor &visitor) override |
| Accept a graphics_visitor object. Invoke this command using the graphics_visitor. More... | |
| frame_buffer_texture_command & | set_texture (texture_handle texture) |
| Set the texture whose image is to be attached. More... | |
| frame_buffer_texture_command & | set_attachment (frame_attachment attachment) |
| Set the attachment to which the texture should be attached. More... | |
| frame_buffer_texture_command & | set_target (image_target target) |
| Set the texture target. More... | |
| frame_buffer_texture_command & | set_mip_level (int level) |
| Set the mipmap level of the texture image to be attached. More... | |
| Public Member Functions inherited from moka::graphics_command | |
| virtual | ~graphics_command ()=default |
Public Attributes | |
| texture_handle | texture |
| frame_attachment | attachment |
| image_target | target |
| int | level |
Set the texture you want to attach to this frame buffer.
|
virtual |
|
overridevirtual |
Accept a graphics_visitor object. Invoke this command using the graphics_visitor.
| visitor | A graphics_visitor object. |
Implements moka::graphics_command.
| frame_buffer_texture_command& moka::frame_buffer_texture_command::set_attachment | ( | frame_attachment | attachment | ) |
Set the attachment to which the texture should be attached.
| attachment | The attachment to which the texture should be attached. |
| frame_buffer_texture_command& moka::frame_buffer_texture_command::set_mip_level | ( | int | level | ) |
Set the mipmap level of the texture image to be attached.
| level | The mipmap level of the texture image to be attached. |
| frame_buffer_texture_command& moka::frame_buffer_texture_command::set_target | ( | image_target | target | ) |
Set the texture target.
| target | The texture target. |
| frame_buffer_texture_command& moka::frame_buffer_texture_command::set_texture | ( | texture_handle | texture | ) |
Set the texture whose image is to be attached.
| texture | The texture whose image is to be attached. |
| frame_attachment moka::frame_buffer_texture_command::attachment |
Specifies the attachment to which the texture should be attached.
| int moka::frame_buffer_texture_command::level |
Specifies the mipmap level of the texture image to be attached, which must be 0.
| image_target moka::frame_buffer_texture_command::target |
Specifies the texture target.
| texture_handle moka::frame_buffer_texture_command::texture |
Specifies the texture object whose image is to be attached.


Builtin Plugins
Builtin Plugins
Kustomize offers a plugin framework allowing people to write their own resource generators and transformers.
Write a plugin when changing generator options or transformer configs doesn’t meet your needs.
A generator plugin could be a helm chart inflator, or a plugin that emits all the components (deployment, service, scaler, ingress, etc.) needed by someone’s 12-factor application, based on a smaller number of free variables.
A transformer plugin might perform special
container command line edits, or any other
transformation beyond those provided by the
builtin (namePrefix
, commonLabels
, etc.)
transformers.
kustomization.yaml
Start by adding a generators
and/or transformers
field to your kustomization.
Each field accepts a string list:
generators: - relative/path/to/some/file.yaml - relative/path/to/some/kustomization - /absolute/path/to/some/kustomization - https://github.com/org/repo/some/kustomization transformers: - {as above}
The value of each entry in a generators
or
transformers
list must be a relative path to a
YAML file, or a path or URL to a kustomization.
This is the same format as demanded by the
resources
field.
YAML files are read from disk directly. Paths or URLs leading to kustomizations trigger an in-process kustomization run. Each of the resulting objects is now further interpreted by kustomize as a plugin configuration object.
A kustomization file could have the following lines:
generators:
- chartInflator.yaml
Given this, the kustomization process would expect
to find a file called chartInflator.yaml
in the
kustomization root.
This is the plugin’s configuration file; it contains a YAML configuration object.
The file chartInflator.yaml
could contain:
apiVersion: someteam.example.com/v1
kind: ChartInflator
metadata:
name: notImportantHere
chartName: minecraft
The apiVersion
and kind
fields are
used to locate the plugin.
Thus, these fields are required. They are also required because a kustomize plugin configuration object is also a k8s object.
To get the plugin ready to generate or transform, it is given the entire contents of the configuration file.
For more examples of plugin configuration YAML, browse the unit tests below the plugins root, e.g. the tests for ChartInflator or NameTransformer.
Each plugin gets its own dedicated directory named
$XDG_CONFIG_HOME/kustomize/plugin
/${apiVersion}/LOWERCASE(${kind})
The default value of XDG_CONFIG_HOME
is
$HOME/.config
.
The one-plugin-per-directory requirement eases creation of a plugin bundle (source, tests, plugin data files, etc.) for sharing.
In the case of a Go plugin, it also
allows one to provide a go.mod
file for the
single plugin, easing resolution of package
version dependency skew.
When loading, kustomize will first look for an executable file called
$XDG_CONFIG_HOME/kustomize/plugin
/${apiVersion}/LOWERCASE(${kind})/${kind}
If this file is not found or is not executable,
kustomize will look for a file called ${kind}.so
in the same directory and attempt to load it as a
Go plugin.
If both checks fail, the plugin load fails the overall
kustomize build
.
Plugins are only used during a run of the
kustomize build
command.
Generator plugins are run after processing the
resources
field (which itself can be viewed as a
generator, simply reading objects from disk).
The full set of resources is then passed into the
transformation pipeline, wherein builtin
transformations like namePrefix
and
commonLabel
are applied (if they were specified
in the kustomization file), followed by the
user-specified transformers in the transformers
field.
The order specified in the transformers
field is
respected, as transformers cannot be expected to
be commutative.
Kustomize plugins do not run in any kind of kustomize-provided sandbox. There’s no notion of “plugin security”.
A kustomize build
that tries to use plugins but
omits the flag
--enable_alpha_plugins
will not load plugins and will fail with a warning about plugin use.
The use of this flag is an opt-in acknowledging the unstable (alpha) plugin API, the absence of plugin provenance, and the fact that a plugin is not part of kustomize.
To be clear, some kustomize plugin downloaded
from the internet might wonderfully transform
k8s config in a desired manner, while also
quietly doing anything the user could do to the
system running kustomize build
.
There are two kinds of plugins, exec and Go.
A exec plugin is any executable that accepts a single argument on its command line - the name of a YAML file containing its configuration (the file name provided in the kustomization file).
TODO: restrictions on plugin to allow the same exec plugin to be targeted by both the
generators
andtransformers
fields.
- first arg could be the fixed string
generate
ortransform
, (the name of the configuration file moves to the 2nd arg), or- or by default an exec plugin behaves as a tranformer unless a flag
-g
is provided, switching the exec plugin to behave as a generator.
A generator plugin accepts nothing on stdin
, but emits
generated resources to stdout
.
A transformer plugin accepts resource YAML on stdin
,
and emits those resources, presumably transformed, to
stdout
.
kustomize uses an exec plugin adapter to provide
marshalled resources on stdin
and capture
stdout
for further processing.
A generator exec plugin can adjust the generator options for the resources it emits by setting one of the following internal annotations.
NOTE: These annotations are local to kustomize and will not be included in the final output.
kustomize.config.k8s.io/needs-hash
Resources can be marked as needing to be processed by the internal hash transformer by including the needs-hash
annotation. When set valid values for the annotation are "true"
and "false"
which respectively enable or disable hash suffixing for the resource. Omitting the annotation is equivalent to setting the value "false"
.
Hashes are determined as follows:
ConfigMap
resources, hashes are based on the values of the name
, data
, and binaryData
fields.Secret
resources, hashes are based on the values of the name
, type
, data
, and stringData
fields.Example:
apiVersion: v1
kind: ConfigMap
metadata:
name: cm-test
annotations:
kustomize.config.k8s.io/needs-hash: "true"
data:
foo: bar
kustomize.config.k8s.io/behavior
The behavior
annotation will influence how conflicts are handled for resources emitted by the plugin. Valid values include “create”, “merge”, and “replace” with “create” being the default.
Example:
apiVersion: v1
kind: ConfigMap
metadata:
name: cm-test
annotations:
kustomize.config.k8s.io/behavior: "merge"
data:
foo: bar
Be sure to read Go plugin caveats.
A .go
file can be a Go plugin if it declares
‘main’ as it’s package, and exports a symbol to
which useful functions are attached.
It can further be used as a kustomize plugin if
the symbol is named ‘KustomizePlugin’ and the
attached functions implement the Configurable
,
Generator
and Transformer
interfaces.
A Go plugin for kustomize looks like this:
package main import ( "sigs.k8s.io/kustomize/api/resmap" ... ) type plugin struct {...} var KustomizePlugin plugin func (p *plugin) Config( h *resmap.PluginHelpers, c []byte) error {...} func (p *plugin) Generate() (resmap.ResMap, error) {...} func (p *plugin) Transform(m resmap.ResMap) error {...}
Use of the identifiers plugin
, KustomizePlugin
and implementation of the method signature
Config
is required.
Implementing the Generator
or Transformer
method allows (respectively) the plugin’s config
file to be added to the generators
or
transformers
field in the kustomization file.
Do one or the other or both as desired.
metadata/name
as the prefix.
This particular example exists to show how a plugin can
transform the behavior of a plugin. See the
TestTransformedTransformers
test in the target
package.A Go plugin can be both a generator and a
transformer. The Generate
method will run along
with all the other generators before the
Transform
method runs.
Here’s a build command that sensibly assumes the
plugin source code sits in the directory where
kustomize expects to find .so
files:
d=$XDG_CONFIG_HOME/kustomize/plugin\
/${apiVersion}/LOWERCASE(${kind})
go build -buildmode plugin \
-o $d/${kind}.so $d/${kind}.go
Builtin Plugins
Exec plugin on linux in 60 seconds
Go plugin Caveats
Go plugin example


| Language documentation | Contents | Index |
|
Concept exceptions are very similar with the C++ exceptions, the only difference is the fact that they don’t belong to a variable type. In a try-catch statement you will have only one type of catch (instead of one or more in C++)
Another difference is that an uncaught exception, it will be caught by the Concept machine automatically, and retrown for the calling function like this: The syntax for throw is: throw expr; expr can be any kind of variable or expression. |
function B() { |
| Documented by Andrei Hanganu, generation time: Sun Jan 27 18:15:22 2013 GMT | (c)2013 Devronium Applications |


{include file="layout/rel" /}
{include file="layout/data" /} {include file="layout/head" /} {__CONTENT__} {include file="layout/footer" /}


#
This page is latest news
This page is dynamically generated by the application server.
It is now ?[DateTime.Now]
@[if (Context.SupportsSession) { Context.NeedsSession(); if (!Context.Session.Items.ContainsKey("COUNTER2")) Context.Session.Items["COUNTER2"] = 0; var ctr = (int)Context.Session.Items["COUNTER2"]; ctr++; Context.Session.Items["COUNTER2"] = ctr; ]You have visited this page ?[ctr] times during this session
@[}] Welcome Page | About Us Page


Files CCore/inc/CharUtils.h CCore/src/CharUtils.cpp
This file contains simple tools to work with text, represented by a Char sequence. In UTF8-compatible mode conversion from char text into Char text is performed.
/* struct FillCharBuf */
struct FillCharBuf
{
ulen len;
bool overflow;
FillCharBuf(PtrLen<Char> out,StrLen text);
};
This Class-function fills a Char buffer with a text. The result fields is the output length and the overflow flag.
/* class PrintCharBuf */
class PrintCharBuf : public PrintBase
{
....
public:
explicit PrintCharBuf(PtrLen<Char> out);
~PrintCharBuf();
PtrLen<const Char> close(bool guard_overflow=true);
};
This class prints into a Char buffer.
close() flushes the stream and returns the output range. If the argument is true, this method throws an exception in case of overflow.
class ScanCharString : public ScanBase
{
....
public:
explicit ScanCharString(PtrLen<const Char> str);
~ScanCharString();
};
This class scans from a Char string.


Gallery
Foundation
About Artist
Contact
2 - 3
<
>
Welcome to
© 2014. SydneyGruber.com. All Rights Reserved.
Personally Yours
Custom | Painted | Furniture


MVP
Persistent Punk
Forgotten Human
Smash
Snobby Spirit
Snarling Jock
Film-Bot
Masterpiece
Canine Critic
Noise
Sleep
High-Tech Twerp
Punchy Pal
Strike
Party
Ungrateful Student
The Darkness
Sketchy Character
Imaginary Love
Daring Dream
Grafitti Artist
Lost Friend
Lost Guardian
Upgraded Tech Twerp
Award Winner
Oda
Brenda
Pandora
Gigi
Gerald
Hope
Memory
Guardian of Acceptance
City Goon
Facility Leader
Facility Manager
Forgotten Idol
All of the Jerks
Tortured Thought
Betrayed Friend
Percy
The Best Thug
Deal Dude
Uncovered Human
Story Weaver
Abandoned Hero
Tech Twerp V3
Kicky Combatant
Difficult Instructor
Popular Fellow
Littering Loser
Wimpy Worker
Facility Attendant
Problem Program
Average Brute
Jeerleader
Lazy Lug
Right Write
Agressive Chestnut
Perfect Exam
Tech Twerp X
Multi-Face Foe
Darkness Fragment
Corrupted Friend
Corrupted Guardian
Unforgiveable Silence
An Expected Fear
An Ironic Fear
A Tragic Fear
A Lonely Fear
Internal Database
Fading Darkness
The Old World


File name repository.
This class stores file names and can check whether a file has been
modified or not since a previous call. A file name is stored by calling
acquire_filename() which returns an ID and a signature of the file. The
signature can later be used to check if the file was modified by calling
is_file_modified(). If the file name is no longer required
release_filename() should be called so that the entry can be removed from
the repository.
|
|
|
|
|
acquire_filename(self,
name)
Acquire a file name and return its id and its signature. |
source code
|
|
|
|
release_filename(self,
id_)
Release a file name. |
source code
|
|
|
|
is_file_modified(self,
id_,
signature)
Check if the file referred to by id_ has been modified. |
source code
|
|
|
|
update_id_counter(self)
Update the id_ counter so that it doesn't grow forever. |
source code
|
|


Hello beautiful adventurer. This is my webpage, which I am SO excited to present you! I hope you enjoy watching it become very awesome... I'm a poet, a Kamelotian... I eat avocado - Fatalgoddess