text:
Home > Search Results: Biradar, C. M.
HIMALDOC 3 records found Search took 0.01 seconds.
Mapping Forests in Monsoon Asia with Alos Palsar 50-M Mosaic Images and Modis Imagery in 2010
Qin, Y.; Xiao, X.; Dong, J.; Zhang, G.; Roy, P. S.; Joshi, P. K.; Gilani, H.; Murthy, M. S. R.; Jin, C.; Wang, J.; Zhang, Y.; Chen, B.; Menarguez, M. A.; Biradar, C. M.; Bajgain, R.; Li, X.; Dai, S.; Hou, Y.; Xin, F.; Moore III, B.
Extensive forest changes have occurred in monsoon Asia, substantially affecting climate, carbon cycle and biodiversity . Accurate forest cover maps at fine spatial resolutions are required to qualify and quantify these effects. In this study, an algorithm was developed to map forests in 2010, with the use of structure and biomass information from the Advanced Land Observation System (ALOS) Phased Array L-band Synthetic Aperture Radar (PALSAR) mosaic dataset and the phenological information from MODerate Resolution Imaging Spectroradiometer (MOD13Q1 and MOD09A1) products. Our forest map (PALSARMOD50 m F/NF) was assessed through randomly selected ground truth samples from high spatial resolution images and had an overall accuracy of 95%. Total area of forests in monsoon Asia in 2010 was estimated to be ~6.3 × 106 km2. The distribution of evergreen and deciduous forests agreed reasonably well with the median Normalized Difference Vegetation Index (NDVI) in winter. PALSARMOD50 m F/NF map showed good spatial and areal agreements with selected forest maps generated by the Japan Aerospace Exploration Agency (JAXA F/NF), European Space Agency (ESA F/NF), Boston University (MCD12Q1 F/NF), Food and Agricultural Organization (FAO FRA), and University of Maryland (Landsat forests), but relatively large differences and uncertainties in tropical forests and evergreen and deciduous forests
New Vegetation Type Map of India Prepared Using Satellite Remote Sensing: Comparison with Global Vegetation Maps and Utilities
Roy, P. S.; Behera, M. D.; Murthy, M. S. R.; Roy, A.; Singh, S.; Kushwaha, S. P. S.; Jha, C. S.; Sudhakar, S.; Joshi, P. K.; Reddy, C. S.; Gupta, S.; Pujar, G.; Dutt, C. B. S.; Srivastava, V. K.; Porwal, M. C.; Tripathi, P.; Singh, J. S.; Chitale, V.; Skidmore, A. K.; Rajshekhar, G.; Kushwaha, D.; Karnataka, H.; Saran, S.; Giriraj, A.; Padalia, H.; Kale, M.; Nandy, S.; Jeganathan, C.; Singh, C. P.; Biradar, C. M.; Pattanaik, C.; Singh, D. K.; Devagiri, G. M.; Talukdar, G.; Panigrahy, R. K.; Singh, H.; Sharma, J. R.; Haridasan, K.; Trivedi, S.; Singh, K. P.; Kannan, L.; Daniel, M.; Misra, M. K.; Niphadkar, M.; Nagbhatla, N.; Prasad, N.; Tripathi, O. P.; Prasad, P. R. C.; Dash, P.; Qureshi, Q.; Tripathi, S. K.; Ramesh, B. R.; Gowda, B.; Tomar, S.; Romshoo, S.; Giriraj, S.; Ravan, S. A.; Behera, S. K.; Paul, S.; Das, A. K.; Ranganath, B. K.; Singh, T. P.; Sahu, T. R.; Shankar, U.; Menon, A. R. R.; Srivastava, G.; Neeti; Sharma, S.; Mohapatra, U. B.; Peddi, A.; Rashid, H.; Salroo, I.; Krishna, P. H.; Hajra, P. K.; Vergheese, A. O.; Matin, S.; Chaudhary, S. A.; Ghosh, S.; Lakshmi, U.; Rawat, D.; Ambastha, K.; Kalpana, P.; Devi, B. S. S.; Gowda, B.; Sharma, K. C.; Mukharjee, P.; Sharma, A.; Davidar, P.; Raju, R. R. V.; Ketewa, S. S.; Kant, S.; Raju, V. S.; Uniyal, B. P.; Debnath, B.; Rout, D. K.; Thapa, R.; Joseph, S.; Chhetri, P.; Ramchandran, R.
A seamless vegetation type map of India (scale 1: 50,000) prepared using medium-resolution IRS LISS-III images is presented . The map was created using an on-screen visual interpretation technique and has an accuracy of 90%, as assessed using 15,565 ground control points. India has hitherto been using potential vegetation/forest type map prepared by Champion and Seth in 1968. We characterized and mapped further the vegetation type distribution in the country in terms of occurrence and distribution, area occupancy, percentage of protected area (PA) covered by each vegetation type, range of elevation, mean annual temperature and precipitation over the past 100 years. A remote sensing-amenable hierarchical classification scheme that accommodates natural and semi-natural systems was conceptualized, and the natural vegetation was classified into forests, scrub/shrub lands and grasslands on the basis of extent of vegetation cover. We discuss the distribution and potential utility of the vegetation type map in a broad range of ecological, climatic and conservation applications from global, national and local perspectives. We used 15,565 ground control points to assess the accuracy of products available globally (i.e., GlobCover, Holdridge's life zone map and potential natural vegetation (PNV) maps). Hence we recommend that the map prepared herein be used widely. This vegetation type map is the most comprehensive one developed for India so far. It was prepared using 23.5 m seasonal satellite remote sensing data, field samples and information relating to the biogeography, climate and soil. The digital map is now available through a web portal (Error! Hyperlink reference not valid. Typ
Biradar, C. M. in TERI


Two men employed by Fleetwood Town are alleged to have invented "ghost" supporters to carry out a fraud.
The charges relate to the period between July 1, 2015, and March 2016 at the League One club.
David Holloway was an operations manager at the club and David Hart worked in the ticket office.
Holloway, 30,of Rossall Grange Lane,Fleetwood and Hart, 49, of Eamont Place, Fleetwood, are charged with fraud on Fleetwood FC by making out false ticket refunds to fans who did not exist.
Blackpool Magistrates heard that both men no longer work for Fleetwood FC.
Holloway is alleged to have carried out illegal transactions amounting £4,696 the figure facing Hart is £3,857.
Both men were sent for trial at Preston Crown Court where they will appear on December 14. They were both bailed.


BERLIN — In the early years of the Obama administration, the United States developed an elaborate plan for a cyberattack on Iran in case the diplomatic effort to limit its nuclear program failed and led to a military conflict, according to a coming documentary film and interviews with military and intelligence officials involved in the effort.
While the Pentagon was making those preparations, American intelligence agencies developed a separate, far more narrowly focused cyberplan to disable the Fordo nuclear enrichment site, which Iran built deep inside a mountain near the city of Qum. The attack would have been a covert operation, which the president can authorize even in the absence of a continuing conflict.
Fordo has long been considered one of the hardest targets in Iran, buried too deep for all but the most powerful bunker-buster in the American arsenal. The proposed intelligence operation would have inserted a computer "worm" into the facility with the aim of frying Fordo's computer systems — effectively delaying or destroying the ability of Iranian centrifuges to enrich uranium at the site. It was intended as a follow-up to "Olympic Games," the code name of a cyberattack by the United States and Israel that destroyed 1,000 centrifuges and temporarily disrupted production at Natanz, a far larger but less protected enrichment site.
Under the terms of the nuclear agreement with Iran, two-thirds of the centrifuges inside Fordo have been removed in recent months, along with all nuclear material. The facility is banned from any nuclear-related work and is being converted to other uses, eliminating the threat that prompted the attack plan, at least for the next 15 years.
The development of the two secret programs suggest how seriously the Obama administration was concerned that its negotiations with Iran could fail. It also demonstrates the critical role cyberoperations now play in both military planning and covert intelligence operations. American generals began incorporating nuclear weapons into their war plans for protecting Europe or countering the Soviet Union in the 1950s, and in the last 15 years, they have made armed drones a central part of military efforts in Pakistan, Afghanistan and elsewhere. In the same way, cyberwarfare has become a standard element of the arsenal for what are now called "hybrid" conflicts.
"Zero Days" describes the escalating conflict between Iran and the West in the years leading up to the agreement, the discovery of the cyberattack on the Natanz enrichment plant, and the debates inside the Pentagon over whether the United States has a workable doctrine for the use of a new form of weaponry whose ultimate effects are only vaguely understood.
The documentary directed by Alex Gibney, which uncovered the United States' plan for cyberattacks against Iran if nuclear negotiations failed, is scheduled to have its premiere at the Berlin Film Festival on Wednesday.
The New York Times conducted separate interviews to confirm the outlines of the program. The findings were described over the past two weeks to the White House, the Pentagon, and the Office of the Director of National Intelligence, all of which declined to comment, noting that they never discuss planning for military contingencies.
Nitro Zeus had its roots in the Bush administration but took on new life in 2009 and 2010, just as Mr. Obama asked General John R. Allen, at United States Central Command, to develop a detailed military plan for Iran in case diplomacy failed. It was a time of extraordinary tension, as the Iranians accelerated their production of centrifuges and produced near-bomb-grade fuel and Western intelligence agencies feared they might be on the verge of developing a nuclear weapon. It was also a period of extraordinary tension with Israel, partly because of its presumed role in the assassination of Iranian nuclear scientists, and partly because of evidence that Mr. Netanyahu was preparing a pre-emptive strike against Iran, despite warnings from the United States.
At the time, Mr. Obama's aides thought he did not have a credible military contingency plan. In his memoir, "Duty," former Secretary of Defense Robert M. Gates described his concerns — laid out in a highly restricted memorandum to the White House in January 2010 — that America's top national security leadership had not even begun to debate what a fast reaction to Iranian aggression would look like.
Nitro Zeus quickly emerged as one possible response for Mr. Obama, a way to turn off critical elements of the Iranian infrastructure without firing a shot. While cyberoperations have long been contemplated in other war scenarios, Nitro Zeus "took it to a new level," one participant said. Yet the planners warned that depending on how the conflict unfolded, there could be significant effects on civilians, particularly if the United States had to cut vast swaths of the country's electrical grid and communications networks.
While Cyber Command would have executed Nitro Zeus, the National Security Agency's Tailored Access Operations unit was responsible for penetrating adversary networks, which would have required piercing and maintaining a presence in a vast number of Iranian networks, including the country's air defenses and its transportation and command control centers.
It is a tricky business, the war planners say, because their knowledge of how networks are connected in Iran, or any other hard target, is sketchy — and collateral damage is always hard to predict. It is easier to turn off power grids, for example, than to start them up again.
Even as the Pentagon prepared for a broad conflict, American intelligence agencies had a narrower target: how to sabotage the underground Fordo enrichment site, just as they had sabotaged Natanz at the end of the Bush administration and the beginning of the Obama administration.
That effort accelerated in 2012 and 2013, as the Iranians began to fill Fordo's deep underground cavity with more than 3,000 centrifuges. But it was set aside, after the Iranians significantly slowed their enrichment activity during the negotiation over the nuclear deal, and then dismantled part of the Fordo plant.
The program to develop a computer worm to attack Fordo appears to have been initially developed around the time that Mr. Obama and other world leaders revealed the existence of the underground facility at a conference in Pittsburgh in September 2009. It is unclear how American spies planned to get inside the underground nuclear facility — physically or remotely — and whether the United States or an ally like Israel might have had to use human sources inside the country to conduct the network attack.
The Snowden documents revealed a series of technologies that can be used to insert programs remotely in a system disconnected from the Internet. That was done repeatedly at Natanz, as malware was refined and refined again, with each version subtly manipulating the computer controllers for the centrifuges so that the giant, spinning machines would gyrate wildly out of control and destroy themselves. The attack on Fordo appears to have been designed to be more blunt and obvious — a straightforward strike that would destroy the circuitry that powered the centrifuges and their controllers.
It is unclear how successful the strike would have been. While such efforts are usually tested in mock facilities, there almost certainly would have been surprises had it been used against the Fordo plant. It is also unclear the degree to which American and Israeli intelligence agencies may have collaborated on the program, especially after the recriminations in 2010 over evidence that Israel rushed ahead in producing a version of the Stuxnet worm without properly testing it, leading to its exposure.
David E. Sanger reported from Berlin, and Mark Mazzetti from Washington.


Winners of the children's art contest will be chosen by most votes received from now until 5 p.m. Saturday at City Art Works. To vote, visit Her's Bridal, Vintage Affair, La French Gypsy and City Art Works.
Last weekend's downpour caused the rescheduling and cancellation of events, but it has not dampened the holiday spirit in Minden.
Minden's Christmas parade, organized by the Minden Evening Lions Club, was canceled and not rescheduled.
The Children's Art Contest was rescheduled for Saturday.
Children's artwork is on display at shops in downtown Minden. The Minden Main Street board is holding the art contest, and four winners will each be given a $25 gift certificate to Bobbies's Hobbies.
Categories are divided into four age groups, preschool and kindergarten, first and second, third and fourth and fifth and sixth.
Winners will be chosen by most votes received from now until 5 p.m. Saturday at City Art Works. To vote, visit Her's Bridal, Vintage Affair, La French Gypsy and City Art Works.
In addition to the art contest, the board is also selling raffle tickets for a $500 Visa gift card for $5 a piece or five tickets for $20.
Tickets can be purchased at Minden City Hall, TG Garden and Gifts or from any Main Street Board member.
The drawing will take place at 5 p.m. at City Art Works.


How to bypass google verification FRP lge lg volt ii c90nas lgls751 2019?
Easy step by step method Bypass FRP lge lg volt ii c90nas lgls751 device. See full manual for Lock, and Remove Google account verification by Factory Reset Protection on your device.


Leipzig's biggest win of the week occurred when midfield maestro Emil Forsberg announced his contract extension through 2021. It is pretty sweet for RB no matter how this plays out, since Forsberg stays until 2021 or he will be sold for an enormous fee since there is no exit clause worked into his extension. Liverpool tried to sign Forsberg during the winter break and should Forsberg show his best stuff at the Euros alongside Ibrahimovic, Leipzig can sell the Swede for at least 20 million to the right buyer.
Not a bad ROI for a player who only cost 3.7 million.
On the pitch, Leipzig had two winnable matchups in front of them and didn't impress, but also didn't choke.
Stefan Effenberg, we hardly knew you at SC Paderborn.
Remember SC Paderborn? They were last years Darmstadt 98.
Every season, an underdog newly-promoted team surprises everyone during the Hinrunde. After a while relegation rivals like HSV, Hannover or Hoffenheim get active on the winter market, teams adjust to the newcomers' style and a couple month later the fairytale is over. The cute underdog gets sent back to the second tier and has to hard-reset.
That's where Paderborn is at right now. The post-Bundesliga hangover hit the SCP so hard that they are next to last right now. Appointing rookie coach Stefan Effenberg also didn't help, he is gone by now.
Avoiding a 3.Liga drop is all Paderborn cares about and that's how they played against Leipzig. This game was an ugly dogfight on a terrible pitch.
In the end, a set piece goal (Compper 63' assist by Kaiser) was all that separated the two teams. There were enough chances for a 2:2 or 3:3, but finishing was terrible on both ends.
This was a hard earned Arbeitssieg (ugly win) against a physical and motivated squad that wasn't talented enough to hurt Leipzig.
This matwas a real test. Heidenheim played solid counter attacking football and defended their 1:0 lead cleverly fo a long stretch. RB (again) got a little too fancy at times and wasted many great scoring chances. In the end Heidenheim got tired and RB cracked the brick wall.
This was a 17:30 game on a workday, so unfortunately I only caught the last half hour of the match live and only saw the phase of the game when RB was dominating, so check out the video to see for yourself.
The Bulls (1st place/52 points) went 2 for 2 this week. Of course they stay on top, but both Freiburg (2nd/47) and Nürnberg (3rd/44) also took 6 points from their games, so the promotion picture pretty much stayed the same.
And let's not sleep on the fringe contenders St.Pauli (4th/42) and Bochum (5th/39) who are still alive in the promotion race.
According to Buli-Box, 58,7 points secured 3rd place every time since 1996, when the 3-points-per-win model was introduced.
RB only needs two more wins with 10 games left to get to that total.
Of course, nobody in Leipzig wants any part of a 3rd place finish and enter the risky home & away Relegation playoffs (Eintracht Frankfurt would be the opponent if the season ended today).
"Top Two or bust" was the season objective. And the battle for 2nd place could be won over the next 3 games. RB will travel to Freiburg and Nürnberg with a home game against 1860 München (16th/21) in between. If Leipzig protects the three game advantage over Nürnberg during this three game series, it seems highly unlikely that the 1.FCN AND SC Freiburg will catch them over the remaining 7 games.
2016-17 Season Preview: Can 1.FC Nürnberg Survive Last Season's Letdown?


Seeing the ACO perform in these great cities up against the best in the world, including the Boston Symphony, the Budapest Festival Orchestra and soloists like Yuja Wang and Gautier Capucon is sure to be a revelation! Every year the ACO flies its flag overseas to tremendous acclaim. Being so far away from the great centres of the musical world, these foreign tours are essential to maintaining its supreme reputation. Tours to the US, usually every three or four years, are the pinnacle of its international schedule. Join us on the tour, meet the ACO musicians and revel in the excitement of New York and Boston!
Antony's career in music goes back over 40 years. He was the ACO's first general manager (1983- 1989) and ever since has maintained a close association with the Orchestra as a consultant, tour leader and concert goer. He has worked for many of our leading cultural groups as manager, consultant or board member including Opera Australia, Australian Ballet, Melbourne Theatre Company and the Song Company. in 2008, he was awarded an AM for his services to the arts.
Guests arrive in the splendid Sheraton New York Times Square Hotel, our home for the next nine nights. (Please advise in advance if you would like to arrive a day or two earlier to recover from the long journey from Australia).
Early in the evening the whole party will gather in the hotel lounge for Welcome Drinks where introductions and a short talk will be given by Tour Leader Antony Jeffrey.
After breakfast in the hotel, Antony will lead us to Times Square and the Rockefeller Center area, followed by a walk through Central Park and a three course Welcome Lunch at a local restaurant.
Our second full day in New York starts with a talk in the hotel after breakfast by Antony on Mozart's last opera La Clemenza di Tito.
This is a day for informality and relaxation. We will enjoy a tour of the art galleries of SoHo and Chelsea. A 'must' experience is a visit to Chelsea Market, followed by entry to the world famous Whitney Museum of American Art.
The rest of the day and evening is at leisure and is a chance to visit some of the fabulous shopping precincts.
This will be a momentous day, combining a visit to the vast and astonishing Metropolitan Museum of Art and a new production of the ever popular La Traviata at the 'other' Met.
After breakfast, Antony will give a talk in the hotel on Traviata, followed by the visit to the Met Museum on 5th Avenue. For art lovers, the rest of the day could be devoted to its inexhaustible collection.
Our first weekend day starts with a talk by Antony on America's most celebrated concert hall, Carnegie Hall, and the program to be given by the Budapest Festival Orchestra conducted by Ivan Fischer. It includes a concert performance of Bartok's one act opera Bluebeard's Castle.
Later in the morning, we will visit the fascinating American Folk Art Museum, and in the afternoon we will be given a guided tour of Lincoln Center.
Today is another day of fascinating cultural exploration of this great city. We commence with a guided tour of Carnegie Hall followed by a visit to New York's wonderful Museum of Modern Art (MoMA).
After breakfast, Antony will give a talk on the ACO concert being performed in the evening. The rest of the day will be yours to explore the city's byways or continue your shopping.
In the morning, Antony will introduce the evening's program, an exciting recital in Carnegie Hall by leading French cellist Gautier Capucon and the extraordinary young Chinese pianist Yuja Wang who has taken the world by storm. They play Cesar Franck's much loved Violin Sonata in A Major (transcribed for cello) and the passionate Cello Sonata in G Minor by Rachmaninov.
The day starts with a guided tour of Symphony Hall, Boston Symphony Orchestra's legendary concert hall.
Our guide will be the BSO's Artistic Administrator Tony Fogg who will be interviewed by Tour Leader Antony Jeffrey following the tour.
Our last full day of the tour will start with a talk by Antony on the ACO's program for the evening's concert at Jordan Hall. This will be followed by a visit to the Boston Tea Party Ships and Museum, Boston's leading interactive museum that traces the history of the iconic event that precipitated the American Revolution. We will also visit Harvard Yard, the oldest part of Harvard University, enclosed by many of its best known buildings.
We will then gather at a leading restaurant for a three course Farewell Lunch.
Please note that your level of health and fitness must be sufficient to enable you to keep up with the group activities such as walking from the hotel to restaurants or performance venues, or for gallery or museum visits. This can mean getting on or off a coach unassisted, lifting your luggage, or walking for two or three hours with short breaks.
Fill in the online Booking Form, read and agree with our Terms & Conditions, select your payment option for your deposit of AU$1000.00 per person to Alumni Travel and Submit. Upon receipt of your Booking Form and deposit, you will receive a confirmation of your place in writing.
The deposit is accepted as a first installment of the tour cost and is non-refundable due to part payment of performance tickets. A second non-refundable payment of $1000.00 per person will be required by the end of July in order to secure performance tickets.
Final payment for the tour needs to be received at least 60 days prior to tour departure. An invoice will be sent to you about a fortnight before the final payment becomes due.
If a difference occurs between these cancellation conditions and those imposed by our suppliers, then the conditions of the supplier shall apply. There is no refund before or after travel has commenced or for any unused portion of the tour, either in regard to the standard group arrangements or separate independent arrangements.
Any payments by credit card will be subject to the 2% non-refundable Merchant Administration Fee. We do not accept Diners Club.
It is the traveller's responsibility to ensure that you possess the necessary travel documentation for the tour, such as a valid passport and any required visas. Your passport should be valid at least 6 months beyond the end of your journey.
This tour price has been calculated on the basis of exchange rates and tariffs as at April 2018 and is subject to change up until final payment has been received. At the time of final invoicing (approximately two months prior to the tour departure date), Alumni Travel reserves the right to re-cost the tour based on actual exchange rates. This could mean an increase or decrease to the above listed prices. Should you decide to cancel your arrangements on the basis of a change in the tour price, normal cancellation charges will apply.


text:
Chapters I–V
Chapters VI–IX
Chapters X–XIII
Chapters XIV–XVII
Chapters XVIII–XXI
Chapters XXII–XXVI
Chapters XXVII–XXIX
Chapters XXX–XXXII
Chapters XXXIII–XXXVII
Chapters XXXVIII–XLI
Catherine Barkley
The Priest
Themes, Motifs & Symbols
Chapters 1–5
Further study Context
Ernest Hemingway was born in Oak Park, Illinois, in the summer of 1899. He later portrayed his middle-class parents rather harshly, condemning them for their conventional morality and values. As a young man, he left home to become a newspaper writer in Kansas City. Early in 1918, he joined the Italian Red Cross and served as an ambulance driver in Italy during World War I, in which the Italians allied with the British, French, and Americans against Germany and Austria-Hungary. During his time abroad, Hemingway had two experiences that affected him profoundly and that would later inspire one of his most celebrated novels, A Farewell to Arms. The first occurred on July 8, 1918, when a trench mortar shell struck him while he crouched beyond the front lines with three Italian soldiers. Though Hemingway embellished the story over the years, it is certain that he was transferred to a hospital in Milan, where he fell in love with a Red Cross nurse named Agnes von Kurowsky. Scholars are divided over Agnes's role in Hemingway's life and writing, but there is little doubt that his relationship with her informed the relationship between Lieutenant Henry and Catherine Barkley in A Farewell to Arms.
After his recovery, Hemingway spent several years as a reporter, during which time he honed the clear, concise, and emotionally evocative writing style that generations of authors after him would imitate. In September 1921, he married his first of four wives and settled in Paris, where he made valuable connections with American expatriate writers including Gertrude Stein and Ezra Pound. Hemingway's landmark collection of stories, In Our Time, introduced Nick Adams, one of the author's favorite protagonists, whose difficult road from youth into maturity he chronicled. Hemingway's reputation as a writer, however, was most firmly established by the publication of The Sun Also Rises in 1926 and A Farewell to Arms in 1929.
Critics generally agree that A Farewell to Arms is Hemingway's most accomplished novel. It offers powerful descriptions of life during and immediately following World War I and brilliantly maps the psychological complexities of its characters using a revolutionary, pared-down prose style. Furthermore, the novel, like much of Hemingway's writing during what were to be his golden years, helped to establish the author's myth of himself as a master of many trades: writing, soldiering, boxing, bullfighting, big-game hunting.
Hemingway was skilled, to a greater or lesser extent, in each of these arts, but most critics maintain that his writing fizzled after World War II, when his physical and mental health declined. Despite fantastic bouts of depression, Hemingway did muster enough energy to write The Old Man and the Sea, one of his most beloved stories, in 1952. This novella earned him a Pulitzer Prize, and three years later Hemingway was awarded the Nobel Prize in Literature. Still, not even these accolades could soothe the devastating effects of a lifetime of debilitating depression. On July 2, 1961, Hemingway killed himself in his home in Ketchum, Idaho.
Next section Full Book Quiz
Take the Context Quick Quiz
A Farewell to Arms: Popular pages
CHARACTERS Frederic Henry: Character Analysis

redpajama_set_name: RedPajamaCommonCrawl


text:
Q: How can I use more than one comparison with the .equals function or is there another function that I can use to check? BTW, this is only a short version of my code, the only problem I have is from .equalsIgnoreCase over.  I have tried the pipe operator || and that has not worked for "or" either.  Let me know, thanks.  Its in Java too.
if(sWord.substring(0,sWord.length()).equalsIgnoreCase("ch","sh","s","x","z"
    {
        lblPluralOutput.setText(sWord + "es");
    }
}

A: No, you cannot do it directly like that. Put all possible values in an array and check your string is in that array or not.
String[] items ={"ch","sh","s","x","z"};
for (String item : items) {
    if (sWord.substring(0,sWord.length()).equalsIgnoreCase(item)) {
       lblPluralOutput.setText(sWord + "es");
        break;
    }
}

More over sWord.substring(0,sWord.length()) again gives you same string back. Is it a typo ?

A: Those functions only take one parameter.
If you want to check whether a string is equal to either of two things, you need to check separately:
if (a.equals(b) || a.equals(c))

A: You can't use String#equalsIgnoreCase(Str) cause only receives one parameter. But you can
make your util method.
Something like this. We can make it generic.
public final class UtilClass{
    private UtilClass(){}

    public static <T> boolean  isSomeOneEquals(T myParam, T ... a){
        return Arrays.asList(a).contains(myParam);
    }
}

So in your example just put:
UtilClass.isSomeOneEquals( sWord.substring(someIndex,sWord.length()).toLowerCase(), "ch","sh","s","x","z" );

redpajama_set_name: RedPajamaStackExchange


Today was a very full and action-packed day! It was a very early start with our staff getting up at 4.30am for a sunrise sail to Anegada through some fairly rough seas for three hours. The rocking of the boat and swinging of my hammock was a bit too much for my stomach, which made the sail seem like a long one, but once we arrived and I was able to get in the water I felt much better. We then explored a beach on Anegada, cracked open some coconuts, and generally just relaxed on one of the most beautiful beaches I've ever seen. We then set off towards our dive site and made some friends on the way in the form of a pod of dolphins that put on a show just off our bow! They didn't stick around long but made quite an impression, bringing Bella to tears! We then arrive at our first wreck dive, which was rather intimidating seeing as it was our deepest dive yet and the surface conditions were a bit rough. But once we got in the water, there was almost no current and the visibility was great! The wreck was the most incredible thing I've ever seen. The twisted and warped metal overtaken by coral is like nothing I've ever seen before! We saw sting rays, a huge eel, and more species of fish than I can count! It was definitely my favorite dive so far! We then closed off the day with a beautiful sail back to our anchorage for the night. I'm looking forward to tomorrow!


Discussion in 'VaporJoes USA' started by VaporJoe, Sep 7, 2018.
The NX 100W TC Box Mod by Aspire utilizes a 5 button system. You can navigate through the plethora of features with 1 button including wattage and temperature control. The temperature ranges from 200-600 degrees Fahrenheit. The mod supports up to 100W of wattage power output, with a recommended range of 51-100W. The appearance features a sleek design with eye-dazzling lines, constructed from zinc alloy material. The NX TC Box Mod supports a 18650 or 26650 (not included) for enhanced versatility in power and wattage. The mod comes with a magnetic battery cover to protect your preferred battery model. The NX TC Box Mod comes in a bright red finish that catches your eye and the eye of everyone around you every time you pull on it. Who said green is the color of jealousy? We'd beg to differ and you will too when you receive all the envious looks you're guaranteed to get when you whip out your premium quality, sleek, red NX TC Box Mod. This is the mod for beautiful aesthetics, high-powered cloud production and advanced capabilities from superior construction materials.


text:
La villa Dal Ferro, Canneti, Vanzo, Barettoni è una villa veneta ubicata ai margini dell'abitato di Giavenale, una frazione di Schio in provincia di Vicenza; la villa è attribuita a Vincenzo Scamozzi.

Storia
La villa e i relativi annessi furono commissionati nel 1573 dai fratelli Giovanni Giacomo e Giovanni Battista Dal Ferro, nobili avvocati vicentini. La proprietà passò nel secondo Settecento alla famiglia Canneti, la quale fece apportare qualche modifica alla parte posteriore dell'edificio principale e, sempre sul retro, commissionò l'erezione delle barchesse adiacenti al corpo principale della villa. La proprietà passò quindi alla famiglia Vanzo e successivamente ai Barettoni, ancor oggi proprietari del complesso.

Pur non esistendo prove documentarie al riguardo, la villa Dal Ferro viene considerata, sulla base dello stile, un'opera giovanile di Vincenzo Scamozzi.

Popolarmente la villa viene indicata come "palazzo di ferro", una evidente storpiatura del nome dei primi proprietari; tale designazione è diventata la denominazione della strada sulla quale sorge la stessa proprietà.

Descrizione
Il complesso di villa Dal Ferro consiste nel corpo principale, con vari annessi rustici e il giardino di proprietà.

Il corpo principale della villa si sviluppa su due piani: il prospetto principale è caratterizzato dalla sobrietà delle decorazioni e linearità nella distribuzione dei vari elementi. Al centro la porta d'ingresso dell'edificio, architravata, è affiancata da ambo i lati da una coppia di finestre rettangolari dotate di inferriate. Un'altra finestra si apre all'estremità di ogni lato, distanziata dalle prime. La fascia sottotetto presenta delle finestre quadrate, in linea con le aperture sottostanti, anch'esse dotate di inferriate analogamente alle altre aperture. La fascia mediana dell'edificio è arricchita da lapidi commemorative e stemmi murati ordinatamente sopra la porta d'accesso. Un frontone triangolare arricchito alle estremità con vasi ornamentali completa la composizione; ai lati del timpano emergono i comignoli decorati con piccole guglie.
Di fronte al corpo principale dell'edificio si sviluppa parte del giardino di proprietà, simmetrico ed arricchito da una vasca circolare con fontana.

Sul fianco orientale della villa, leggermente discostata dal complesso, si nota la antica cappella dei Dal Ferro, dedicata a Santa Giustina, edificata nel 1581, caratterizzata da un piccolo campanile a vela.

Tra i vari annessi rustici e barchesse, alcune delle quali costruite in epoche successive, e in parte rimaneggiate nel corso dei secoli, vi è la torre colombara decorata in facciata dallo stemma a fresco della famiglia Dal Ferro.

Note

Voci correlate
 Palladianesimo
 Vincenzo Scamozzi
 Ville venete

Dal Ferro

redpajama_set_name: RedPajamaWikipedia


We started our new website back in January this year, with high hopes and low budgets. Nek minnit, it's bigger than Ben Hur. So please bear with us as we get our catalogue of artist's work and our stock room online. We're compiling available work from a wide range of local and significant international artists for your viewing pleasure. Watch this space!


Johnny Winter released his seventh studio album, John Dawson Winter III, in 1974 on his new record label Blue Sky Records. Edgar Winter rocked keyboards, sax and vocals, and Rick Derringer was on Guitar. The album included a cover of "Rock and Roll People"; a rare song written by John Lennon. This official t-shirt features the original vinyl LP center label artwork. Because Bluescentric cares about the music, every sale directly benefits Winter's estate.


Our session will introduce The Desk 1.0, a program developed by teachers for teachers to help them search for and organize all the TEKS with the click of a button.
By the end of this session, teachers old and new will be given a glimpse at a one-stop location where they can plan, search, share, and organize lesson plans all while tracking the state standards that they've used.
The Desk is a forum where we as teachers can leverage the latest technology to meet the needs of our students and provide a classroom experience that moves at the same creative pace as the digital age.


A growing number of breast cancer survivors have turned to ink to help conceal scars received under the knife, which they use to strengthen and empower themselves, according to USA Today.
The growing trend has been noticed, even by health care professionals like radiation oncologist Anthony Dragun, who says that patients are getting inked on their arms, shoulders or scars.
"Think of it as a badge of honor, like people in the military after a tour of duty," said Dragun.
P.ink, an initiative that connects cancer survivors with tattoo artists, says that the move to tattoo is an additional option, besides just whether to get reconstructive surgery or not.
"Our goal is to connect breast cancer survivors with tattoo artists who can provide a form of healing that no one else can," P.ink says on its website.
Dana Donofree, breast cancer survivor and founder of AnaOno, a company that specializes in intimate apparel for women who've had breast cancer related surgery, said that she was looking for other women who had done mastectomy tattoos but wasn't finding them, according to The Courier-Journal.
"I don't think it's because women weren't doing them necessarily, but I think it's because we weren't talking about," said Donofree. "I want women to know they have a choice."


text:
Davis to play softball at DMACC
Staff ReportBoone News-Republican
Shelby Davis of Des Moines Abraham Lincoln High School has signed a national letter of intent to attend Des Moines Area Community College (DMACC) and play softball.
Davis, who pitches and plays first base and third base, said she chose DMACC because the school offers her an opportunity to get a great education for considerably less than she would pay to attend other schools.
"Everyone at DMACC, the coaches, the players, the professors are all so close and everyone knows each other," Davis said. "It will be easy to get a good education, continue to play softball and make many new friends in the process."
Davis said she wants to continue to play softball as long as possible and to learn as much as she can.
"I can further my career goals at DMACC because I am not 100 percent sure what I want to do yet," Davis said, adding that she is leaning toward something in animal science. "Going to DMACC gives me time to decide and also gives me the opportunity to get the general classes out of the way."
Davis has played softball for 11 years and is a three-time letter winner in softball at Des Moines Lincoln. As a junior, she batted .378 with 42 hits in 111 plate appearances. Her 42 hits included six doubles and three home runs. She scored 15 runs, drove in 17 and compiled a .514 slugging percentage and a .425 on-base percentage.
As a pitcher, Davis was 3-1 with a 2.57 earned run average. She pitched 32 2/3 innings, allowing 34 hits and 22 runs, 12 of which were earned. She walked four batters and struck out 15. Opposing hitters batted .234 against Davis.
Davis was also an outstanding fielder, compiling a .985 fielding percentage. She committed just four errors in 263 chances during the 2014 season.
Davis is a three-time all-academic winner and has been named to the first and second teams of the Central Iowa Metro League (CIML).


text:
I am a Convert
I have always been a Misbah Ul Haq critic.
I have always maintained that the biggest mistake in Pakistan's recent cricket history has been replacing Shahid Afridi as ODI captain with Misbah shortly after Afridi led his team to the semifinals of the 2011 World Cup.
I still stick by that statement, but I hate Misbah a little less than I hated him after Mohali. In fact I don't hate him at all.
He captained Pakistan in 87 ODIs, as many as Inzamam Ul Haq, the third highest in Pakistan's history after Imran Khan and Wasim Akram. He didn't win as many ODIs as captain as Imran, Wasim, and Inzamam, but he still won more games than he lost: 45 to 39 with a win % of 53.5.
I have always been a big supporter of Misbah the captain in Tests. He has been one of our best ever, if not the best. But his ODI captaincy always left a lot to be desired. However, this World Cup changed my perception at least.
The biggest criticism of Misbah was his defensive approach. His defensive batting and his defensive captaincy. Misbah defended his tactics by talking about his limited resources and how his statements reflected the performance of Pakistan in this World Cup. Misbah's slow go approach didn't seem as slow any more considering that the team in fact struggled to bat its quota of 50 overs whenever Misbah fell early.
The irony however, would always be that the one day Pakistan required him to go slow and play out overs, he fell holing out to the boundary in his last ever ODI.
I always felt that Misbah's batting in many an ODI resulted in Pakistan scoring less than what they could have or in Pakistan not being able to close a match. However, in more recent games, I started feeling that Misbah was always right. He had no option but to bat that way.
This World Cup was a testament to that fact, Against India, he was the lone man fighting in a chase of 300. Against West Indies, Pakistan folded to 160 as Misbah went early. Against Zimbabwe, Misbah was unable to accelerate as wickets kept tumbling around him as Pakistan struggled to 235. Against South Africa, it was the same story as Misbah was just not allowed to step up the scoring rate with constant wickets falling around him. Against the UAE, he played a free flowing knock since the other batsmen easily scored against weak bowling. Against Ireland, he again played freely as Pakistan were always in charge of the chase. Against Australia, in his final ODI innings, he looked good till he holed out. He should have gone on I felt, but you can't really blame him for playing the stroke that had fetched him two sixes earlier in the innings.
I believe the value of Misbah the batsman will be realized now that he is no longer part of the ODI set up. Someone else will need to take the responsibility to play through the innings. Someone else will be required to anchor the innings. Someone else will need to step up and bail Pakistan out every time they are 2 down for very little.
I don't know who that someone will be, but whoever it is, will really miss having Misbah at the other end.
Misbah's captaincy also shone during this World Cup, especially in the two must win pressure games against Zimbabwe and South Africa. Sure Misbah did not have any option but to attack to win those two games, but he was their instilling the belief in the team. Those two win was redemption in my eyes for Misbah the ODI captain.
There are many sweet memories associated with Misbah's captaincy in ODI cricket. the Asia Cup win in 2012, the series win over India in India, and the first ever series win by an Asian team in South Africa. Those three series will always be remembered by fans and will always be talked about how they were achieved under Misbah.
Moin Khan and Inzamam Ul Haq have also achieved the first two wins in the past for Pakistan. However the win in South Africa is Misbah's alone.
I was a critic in the past, but now that he's left ODI cricket, I am already feeling his absence. I truly believe his value will be realized in our next ODI series. And many more after that too.
Misbah leaves the ODI game without ever scoring an ODI hundred. That will remain the only blemish on his otherwise outstanding record. He retired from ODIs having scored the most runs ever by a batsman without a century. He retired with a batting average of 43.4, which is second only to Zaheer Abbas for all Pakistan batsman with at least 1,000 runs. His batting average was better than Inzamam's, Anwar's, Yousuf's, and Miandad's. He averaged more than Ponting, Lara, Sangakkara, Lloyd, Ganguly, Haynes, Crowe, Waugh, and many other illustrious ODI batsmen. He scored over 3,000 runs as Pakistan captain, second only to the great Imran Khan.
Those are great numbers for a man who was forever criticized for the way he batted.
From being a harsh Misbah critic, I am now a Misbah supporter. Yes I am a convert. He will be missed.
Labels: Misbah, Q
cwolf said...
I'm a rational Misbah hater not because I have anything against him but for what he represents which is totally anaethema to the history of Pakistan cricket which for me has always been about fast aggressive pace bowling making up for our batting deficiency. Misbah's negativity affected the team on all levels and probably showed why he was ignored for so many years during the days of Inzamam and Yousuf. Just as people asked after the retirement of Inzi and MoYo what will become of Pakistan batting they ask again now but we have some very competent youngsters already in Haris, Maqsood and maybe most importantly Fawad Alam. Fawad has the ability to bat long but he does so without detracting from the team but adding to it with his strike rotation capability. So goodbye Misbah but you won't be missed because now Fawad will get the place you have wasted.


Breathless song download pagalworld. Baixar Indir Music Breathless Mp3 Song Download Pagalworld Video. Swv Weak Mp3download; Na Mere Hato Me Teri Lakire Mp3 Song Dow; Epiphany Piano Guys Download; Ladki Deewani Hindi Song 320kbps Free Download; Johnny Flynn Country Mile Live At The Roundhouse Live At The Roundhouse 04 - Breathless ( Mohit Gaur) - Indias Raw Star Mp3 Song by Mohit Gaur in 190kbs & 320Kbps only on Pagalworld. Tips, use query like this to get relevance result: " artist - song title".
Warning: array_ column( ) expects parameter 1 to be array, null given in / srv/ users/ izmp3/ apps/ izmp3- com/ public/ application/ agc/ helpers. Gratis Download Breathless Mp3 Song Download Pagalworld Mp3 Song 320 Kbps.
Download Breathless - Shankar Mahadevan Mp3 Song by in 190kbs & 320Kbps only on Pagalworld. From New Music Album " Hindi".
Tamil Gana Album Songs; Download By Gurlez Akhtar By Himanshi Parashari Mp3 Song; Sarkar Mp3 Songs 8d Free Download; Madras Rockers Hd Movie ; Climb Miley Cyrus Download Mp3 Song. Song Shankar Mahadevan Breathless Song Download Pagalworld Mp3 HD Download, Play and Download Music Shankar Mahadevan Breathless Song Download Pagalworld Mp3 Video 3GP.
Gratis Download Shankar Mahadevan Breathless Song Download Pagalworld no need register and unlimited atis Download Breathless Mp3 Song Download Pagalworld Mp3 Song 320 Kbps. Baixar Indir Music Breathless Mp3 Song Download Pagalworld breathless Full Song Download Pagalworld Song Mp3.
You Can Listen Breathless Full Song Download Pagalworld Video, We Just Retail Information From Other.


On 1 January 2014, the average value of houses based on the Land and Property Appraisal Act (WOZ) was more than 5 percent down from 2013. Currently, the average house price in the Netherlands is 211 thousand euros, which is below the level recorded in 2007.
The WOZ value peaked in 2010, reaching an average level of 242 thousand euros. Subsequently, the WOZ value began to decline; with 5.4 percent, the most substantial decline was recorded in 2013. The average WOZ value of residential property is currently just below the level of 2007.
With 249 thousand euros, the province of Utrecht accounts for the highest average WOZ value, followed by the provinces of North Holland and North Brabant with 235 thousand and 232 thousand euros respectively. The lowest average WOZ value was recorded in the province of Groningen (159 thousand euros). The depreciation rate of the WOZ value ranged from 6.6 percent in the province of Friesland to 1.1 percent in the province of Zeeland.
The differences are even larger on the municipal level. In the municipalities of Bloemendaal, Laren and Blaricum, the average house value exceeds 500 thousand euros and is lowest in the municipality of Heerlen (123 thousand euros). Five of the ten municipalities with the lowest WOZ values are situated in the province of Groningen and three are in the province of Limburg.
The WOZ value follows the price developments of owner-occupied houses (excluding new constructions) with a delay of approximately twelve months. The delay is due to the fact that houses belonging to the Dutch dwelling stock are appraised on 1 January of each year on the basis of the value on 1 January of the previous year. Residential property prices reached the highest level in 2008 and subsequently began to fall. The WOZ value still increased in 2009 and started to decrease in 2010. Prices of owner-occupied dwellings dropped most dramatically in 2012, followed by the most substantial reduction in WOZ value one year later. At the end of August, Statistics Netherlands reported that prices of owner-occupied dwellings had risen for four months in a row.
Apart from the reference date, WOZ value and house price developments are not entirely identical. There are various reasons for the difference. Firstly, the WOZ value covers all houses in the Dutch dwelling stock, including the rentalsegment of the housing market. Secondly, the amount of dwellings varies continually as a result of new constructions being added to the dwelling stock and demolitions. In general, this has a positive effect on the WOZ value.


I hope everyone received their Winter Freebies and enjoyed them! If you're in the California area, you can play some Furoticon with us this weekend! We're heading to San Jose again for Further Confusion!
Further Confusion made a slight mixup in the schedule - we are only listed as having an event Sunday night. But don't worry, we are having events every night. Our events will be in one of the panel rooms at the Marriott. Stop by our Dealer's table to find out where exactly they are going to be held.
Ready to play with you!


SKU: medbigeyecheetah. Category: Nelly Cuddles.
This soft cuddly cheetah will soothe you little one of to sleep! Simply warm in the microwave for 1 minute to ease earaches, tummy aches, growing pains, colic or simply to stay warm.


text:
Rare 1921 GWK on show in Maidenhead Heritage Centre exhibition
Nick Mayo
nicholasm@baylismedia.co.uk
A rare piece of the town's motoring history came back home yesterday in time for a new exhibition at the Maidenhead Heritage Centre.
As part of the new 'Maidenhead's Motor Industry' exhibition a rare 1921 GWK will be on show at the museum in Park Street.
It is the first of three vintage cars to be displayed at the museum for the exhibition which will also feature a selection of photographs from private collections and a chance to see components of classic cars.
The GWK was built on the Cordwallis Estate between 1914 and 1936 and has been loaned to the heritage centre from a private owner in east Sussex.
It is one of a handful left in existence today and features the innovative 'fraction disc transmission' which took away the need for a traditional gearbox.
The last GWK'S were made at Cordwallis Estate in 1931.
Heritage centre chairman Richard Poad, said: "I want everybody to discover a part of Maidenhead's manufacturing history especially since there is very little manufacturing in Maidenhead now.
"It is a part of Maidenhead's history that might have been forgotten but actually we can be very proud of it. We hope that the petrol-heads will really love it."
The GWK will be on display until Saturday, July 19, when it will be the turn of the Burney Streamline and then the Marendaz Special to go on show.
The exhibition opens on Friday and runs until Wednesday, September 13.
Maidenhead man charged with carrying weapon disguised as umbrella
Artisan goods go up on display at Nicholsons Centre
RW 132425
Remember When, Maidenhead Advertiser


Cocktail 3.8.1 (Tiger Edition) has been released.
[prMac.com] Cocktail 3.8.1 (Tiger Edition) is distributed as a Universal Binary and runs natively on both PowerPC and Intel Macs. Cocktail 3.8.1 (Tiger Edition) requires Mac OS X or Mac OS X Server 10.4 - 10.4.10 and is tested for compatibility with Mac OS X and Mac OS X Server 10.4.10 (v1.1).
Cocktail 3.8.1 (Tiger Edition) is available for download from http://www.maintain.se/cocktail/download.html.
Maintain develop tailored applications for Mac users. We work towards creating technical solutions which maintain your computer and make it as efficient and easy to use as possible.
In addition, we offer comprehensive consultancy and support services which cover everything from operation of existing systems to purchase and implementation of new technical solutions.


Anyone who's actually got this issue? It contains some Paul Murry illustrations that I'd like to see.
Allan Holtz has posted some beautiful TS Sullivant drawings over at his Stripper's Guide, earlier this week.
For some strange reason I haven't checked his blog for a few days. Shame on me!!! Good stuff posted there all the time .
Ever wondered about the different stages when an artist plans and layouts a cover?
Here are Bill Wrights cover roughs for Mickey Mouse 142. First out are some false starts. Just rough pencils drawn trying to come up with an idea.
Then we have the pencils submitted to the editor. It's a strong and appealing cover design but as the margin notes says; it gives away part of the story.
Thanks to Germund Von Wowern for allowing me to post these from his collection, and to Don Ault who made sure these were saved for us to enjoy!
PS. The stuff I promised last tuesday will have to wait a day or two more. A little too busy to scan right now. Sorry.
I'm finally getting ready to leave work for today. My friend Germund von Wowern will join me to the studio to scan some rare material wich I'll post here later. What it is? A set of unpublished Bill Wright cover sketches!!!
Havn't seen them myself yet so I'm just sitting here waiting that he will finish his work over at the Disney dept.
Bill Peets storyboards for the Tar baby sequence in Song of the South!
The great Kremos - The Art of Niso Ramponi.
Seems that this is another "must have" book, coming in 2008.
Here's a follow up to the last post with Daan Jippes artwork.
First some Beauty and the Beast sketches featuring Gaston and the Beast.
A drawing from a letter he sent me.
A rough for the Tea for Two album.
If you want more there's of course the special issue of Danish Carl Barks & Co. filled with Jippes non-Disney artwork. Might still be available.
PS. As an extra bonus, here's a childhood drawing by Daan! Enjoy!
Just saw these incredible layouts and the finished page by the great Daan Jippes. Currently for sale from Galerie Laqua in Germany.
Laqua also has a good selection of covers and pages with the Disney ducks for sale.
Damn he's just way too good!
And the Swedish Donald Duck weekly has been running lots of covers and new (!!!) stories drawn by him lately. Always a pleasure to see new artwork by him. It inspires me to draw. It's like an ink injection that makes me run to the drawingboard. Very few artists have that effect on me. Daan is sure one of them.
I know it's still a long time until Christmas but I couldn't resist putting this seasons greetings card up.
It was sent out by Hemmets Journal AB. Probably drawn with felt tip marker.
I've been collecting Bo Michanek artwork for around ten years and I've come across many odd and unusual items drawn by him.
Next a cover drawing from June 1978. It was used in Sweden as a sticker in 1985, but I don't think it was used as a cover.
This scan is from a copy I made many years ago.
This is also from a copy. Probably from the early 80's. As you can see his brushwork is much more slick. It's just amazing how good this piece is inked. Every line shows wich confidence he had when he inked this.
I wonder if it was ever published.
Now it's time for me to hit the sack.
Love Hurts "Anastasia" by Kim W. Andersson!
Released as a supplement on glossy stock in the latest issue of Swedish comic book Nemi.
For a step-by-step on how the cover was made see Kim's homepage. Link can be found in the list of links to the right.
I've seen tons of cartoonists photos but few are as charming as this one. Milton Caniff in a 1947 photo. He had just launched his new strip Steve Canyon and life must have been good for him.
An update with some rare and unseen Disney artwork!
If you are a fan of Milton Caniff's Terry and the Pirates ("Jim och piraterna" in Swedish) you might have heard that during WWII other hands were involved in producing an european version. My guess is that the proofs/stats at some times never reached Europe because of the war. What to do then? The answer was to continue the stories by doing new art and stories with Terry.
Here's a rare example. The very first one I've seen after searching for years. It appeared in the weekly magazine Allers #1 1941( January 1).
I've checked to see if it was just a redrawn version of an american page but the story doesn't seem to fit in anywhere.
Does anyone know who did this? For how long? Does anyone have more examples of this crude but interesting version of Terry and the Pirates?
Sorry if this blog hasn't been updated often this week. I've had a cold (and I still do) and have packaged what feels like a million parcels for stuff I've sold on auctions, that has yet to be weighed and sent out. And Iv'e been working as usual.
But I've got some stuff for this weekend so check back then.
Right now I'm in the studio, waiting for some microwave food to be ready.
Actually it's a note written on one of the many sheets of pasted up Mickey Mouse dailies that he left behind when he passed away in 1984. Myself and my friend Germund has a big stack of proofs for Mickey Mouse, Brer Rabbit etc that he once owned. But there are stuff missing. Anyone else who has parts or maybe the rest of his collection?
Anyhoo, here's a sample of his paste up pages featuring samples of Floyd Gottfredsons work late in his career.
Myself I think Gottfredson did the pencils on that particular daily but it was inked by someone else. It's certainly his lettering. Any thoughts?
Hello everyone who reads this blog!
I recently ended up with an extra set of Floyd Gottfredson's 1956-1957 Mickey Mouse daily strips.
I thought I should check if there's anyone interested in this set? Ca. 100 large sheets with a weeks worth of strips per page. (Missing January 1956. And some weeks are missing a daily. But most are complete weeks. Sharp from proofs.) These are not in the German Floyd Gottfredson portfolio wich covers 1930-1955 and will most likely not appear in any upcoming Gottfredson library since these are after his "adventure period".
Written by Bill Walsh they feature corny and sometimes surrealistic and weird gags. :) And naturally Gottfredsons strong sense of design. I enjoy just flipping through these sheets and beeing inspired by his artwork. He even inked these himself, even if I see a few dailies that are inked by Bill Wright.
Bill Wrights (1917-1984) work resume!
Now, who was Bill Wright? If you are interested in the history of Disney comics and newspaper comics you probably already know. If not, please read about him in his own words. It's fun and interesting reading. Don't skip it.
This edition was printed in only 325 copies for the National Amateur Press Association (That's the info covered up on the back by his business card.) and maybe the original was printed larger than this rather small edition.
And the worst thing is that he'll continue to put it on his blog. Don't tell me I didn't warn you!
Myself, I'm still having a cold. Just don't get any better but today I have at least been able to ink a while and will try to write a script or two. Hopefully I'll be able to lay my hands on the new Terry and the Pirates volume later :) and maybe some other people will come to the studio and cheer me up. Let's hope so.
But now it's time to walk over to Indian Express to grab some lunch!
It's time to update my Comicartfans.com gallery. Something wich I haven't done in a while despite the fact that I've been buying stuff all the time. But you, my loyal followers will see the new stuff first.
First out are some real gems by Swedish artist Rune Andréasson.
Here we see a page from his last comicbook story "Bamse i Trollskogen", from 1990.
This story was actually written back in the seventies as a shorter leadstory for the BAMSE comic book. However he decided to make a movie out of it and I've seen storyboards dated 1981. The film was released in early 1991 if I remember right. It took him 15 years to get that movie/comic done!!! I should add that he and his wife drew and hand painted the whole movie themselves at the same time as they did a monthly comic book... Other people drew the comics, but still.
Then we have two dailies from the 50's and 60's. Rune did Brum for many, many years. Again I was able to pick my two favorites of the more than thousand strips made. They are very different both in size and the way they are made (Brush vs. nib.) but I love them both.
And lastly, my three X-9 dailies from 1942 by Mel Graff. Got the last one by mail yesterday.
Two of these also have stamp on the back of the art. Does the name Chester Kozlak ring any bells?
Wait, hold on a second! I'm not finished yet!


text:
package com.sidemash.redson;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
import com.sidemash.redson.util.ImmutableVector;

import java.util.*;
import java.util.function.BiFunction;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.*;

@SuppressWarnings("unused")
public class JsonArray implements
        JsonStructure, Iterable<JsonValue>, ImmutableVector<JsonValue> {

    /**
     * Common instance for an Empty JsonArray.
     */
    public static final JsonArray EMPTY = new JsonArray(Collections.emptyList());

    /**
     * Storage of the JsonArray contents
     */
    private final List<JsonValue> items;

    /**
     * Construct a JsonArray from List<JsonValue>
     *
     * @param items : List we want to add for the JsonArray storage.
     */
    private JsonArray(List<JsonValue> items) {
        this.items = items;
    }

    /**
     * Method to get a builder for a JsonArray.
     * Example : To construct the [1, 2, 3] Json array ,
     * it is possible to do that :
     * {@code
     * JsonArray array = JsonArray.builder()
     *                              .append(1)
     *                              .append(2)
     *                              .append(3)
     *                              .build();}
     * @return the constructed builder for JsonArray.
     */
    public static Builder builder() {
        return new Builder();
    }

    /**
     * Factory for create JsonArray from List<JsonValue>.
     * Note : As we wanted an immutable JsonArray, we have made this factory
     * private to ensure that no one else can have a reference to the internal
     * items of a JsonArray.
     *
     * @param items : List we want to add for the JsonArray storage.
     * @return The new JsonArray
     */
    private static JsonArray createJsonArray(List<JsonValue> items) {
        if (items.isEmpty()) return EMPTY;
        else return new JsonArray(items);
    }

    /**
     * Construct a JsonArray from a List of Object
     *
     * @param firstValue The first value of the Array
     * @param values the array by which the list will be backed
     * @return The new JsonArray containing all elements passed as parameter
     */
    public static JsonArray of(Object firstValue, Object... values){
        JsonArray.Builder builder = JsonArray.builder();
        return builder
                .append(firstValue)
                .append(Arrays.asList(values))
                .build();
    }

    /**
     * Construct a JsonArray that contains another JsonArray
     *
     * @param array the inner JsonArray to include in the result
     * @return The new JsonArray
     */
    public static JsonArray of(JsonArray array){
        return JsonArray
                .builder()
                .append(array)
                .build();
    }

    /**
     * Construct a JsonArray from a Stream.
     *
     * @param stream stream containing the items to be added in the JsonArray
     * @param <T> Type of the elements contained by this Stream
     * @param <S> Type of of the stream
     * @return The new JsonArray containing all the items in the stream passed as parameter
     */
    public static <T,S extends BaseStream<T, S>> JsonArray of(BaseStream<T, S> stream){
        return JsonArray.of(stream.iterator());
    }

    /**
     * Construct a JsonArray from the Iterator passed as Parameter
     *
     * @param it Iterator of all items to be added in the result JsonArray
     * @param <T> Type of the items contained by this Iterator
     * @return The new JsonArray
     */
    public static <T> JsonArray of(Iterator<T> it) {
        if(!it.hasNext())
            return JsonArray.EMPTY;

        Builder builder = JsonArray.builder();
        while(it.hasNext()){
            builder.append(JsonValue.of(it.next()));
        }
        return builder.build();
    }

    public static <T> JsonArray of(Iterable<T> values) {
        return JsonArray.of(values.iterator());
    }

    public static  JsonArray of(boolean[] values) {
        Builder builder = JsonArray.builder();
        for(boolean value : values){
            builder.append(JsonValue.of(value));
        }
        return builder.build();
    }

    public static  JsonArray of(int[] values) {
        Builder builder = JsonArray.builder();
        for(int value : values){
            builder.append(JsonValue.of(value));
        }
        return builder.build();
    }

    public static  JsonArray of(char[] values) {
        Builder builder = JsonArray.builder();
        for(char value : values){
            builder.append(JsonValue.of(value));
        }
        return builder.build();
    }

    public static  JsonArray of(short[] values) {
        Builder builder = JsonArray.builder();
        for(short value : values){
            builder.append(JsonValue.of(value));
        }
        return builder.build();
    }

    public static  JsonArray of(byte[] values) {
        Builder builder = JsonArray.builder();
        for(byte value : values){
            builder.append(JsonValue.of(value));
        }
        return builder.build();
    }

    public static  JsonArray of(long[] values) {
        Builder builder = JsonArray.builder();
        for(long value : values){
            builder.append(JsonValue.of(value));
        }
        return builder.build();
    }

    public static  JsonArray of(float[] values) {
        Builder builder = JsonArray.builder();
        for(float value : values){
            builder.append(JsonValue.of(value));
        }
        return builder.build();
    }

    public static  JsonArray of(double[] values) {
        Builder builder = JsonArray.builder();
        for(double value : values){
            builder.append(JsonValue.of(value));
        }
        return builder.build();
    }

    /**
     * Append the object passed as parameter at the end of this JsonArray
     *
     * @param object : object to be added to the end of this JsonArray
     * @return JsonArray containing all the items of this JsonArray plus the
     *          last element added.
     */
    public JsonArray append(Object object) {
        List<JsonValue> newEntryList = new ArrayList<>();
        newEntryList.addAll(items);
        newEntryList.add(JsonValue.of(object));
        return createJsonArray(newEntryList);
    }

    @Override
    public List<Object> asDefaultObject() {
        return items.stream()
                .map(JsonValue::asDefaultObject)
                .collect(Collectors.toList());
    }

    @Override
    public <T> List<T> asListOf(Class<T> cl, List<T> list) {
        for (JsonValue item : items)
            list.add(item.asType(cl));

        return list;
    }

    @Override
    public <T> Map<String, T> asMapOf(Class<T> cl, Map<String, T> map) {
        throw new ClassCastException(
                String.format(
                        "This %s could be interpreted as an instance of Map<String, %s>",
                        this.getClass().getSimpleName(),
                        cl.getSimpleName()
                )
        );
    }

    @Override
    public <T> Set<T> asSetOf(Class<T> cl, Set<T> set) {
        for (JsonValue item : items)
            set.add(item.asType(cl));

        return set;
    }

    /**
     * Returns true if this list contains all of the elements of the
     *  specified collection.
     *
     * @param values he array by which the values to be tested will be backed
     * @return Boolean
     */
    public boolean containsAllValues(Object... values) {
        return containsAllValues(Arrays.asList(values));
    }

    /**
     *  Returns <tt>true</tt> if this list contains all of the elements of the
     *  specified collection.
     *
     * @param values collection to be checked for containment in this list
     * @return Boolean
     */
    public boolean containsAllValues(Collection<?> values) {
        return items.containsAll(values);
    }

    /**
     * Returns true if this JsonArray has an item indexed by the integer passed
     * as parameter.
     *
     * @param value index to be tested
     * @return Boolean
     */
    public boolean containsIndex(int value) {
        return (value >= 0 && value < items.size());
    }

    @Override
    public boolean containsValue(Object value) {
        return value instanceof JsonValue
                && items.contains(value);
    }

    /**
     * Returns a new JsonArray containing all unique items of this JsonArray
     *
     * @return The new JsonArray
     */
    public JsonArray distinct() {
        return items.stream()
                .distinct()
                .collect(JsonCollector.toJsonArray());
    }

    private Iterator<JsonEntry<Integer>> entryIterator() {
        return entryStream().iterator();
    }

    public Stream<JsonEntry<Integer>> entryStream() {
        return IntStream.range(0, items.size())
                .mapToObj(index -> JsonEntry.of(index, items.get(index)));
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        JsonArray that = (JsonArray) o;

        return items.equals(that.items);
    }

    public int firstIndexWhere(Predicate<? super JsonEntry<Integer>> predicate) {
        final int from = 0;
        return firstIndexWhere(predicate, from);
    }

    public int firstIndexWhere(Predicate<? super JsonEntry<Integer>> predicate, int from) {
        return this.entryStream()
                .skip(from)
                .filter(predicate)
                .mapToInt(JsonEntry::getKey)
                .findFirst()
                .orElse(-1);
    }

    public JsonArray flatten() {
        if (this.isEmpty())
            return JsonArray.EMPTY;

        Iterator<JsonValue> it = items.iterator();
        JsonValue value;
        Builder builder = JsonArray.builder();
        while (it.hasNext()) {
            value = it.next();
            if (value.isJsonArray())
                builder.append(((JsonArray) value).flatten().items);
            else builder.append(value);
        }
        return builder.build();
    }

    @Override
    public <U> U foldLeft(U seed, BiFunction<U, JsonValue, U> op) {
        U result = seed;
        for (JsonValue jsonValue : items) {
            result = op.apply(result, jsonValue);
        }
        return result;
    }

    @Override
    public JsonValue get(int index) {
        return items.get(index);
    }

    @Override
    public JsonValue get(String key) {
        throw new UnsupportedOperationException("Get an item by key on a JsonArray");
    }

    @Override
    public JsonValue get() {
        throw new NoSuchElementException(
                String.format(
                        "This method is only available for instances of JsonOptional not %s",
                        this.getClass().getSimpleName()
                )
        );
    }

    @Override
    public JsonValue getHead() {
        if(items.isEmpty())
            throw new NoSuchElementException("Head of an empty JsonArray");

        return items.get(0);
    }

    /**
     * Get a Set containing all indexes of this JsonArray.
     *
     * @return instance of HashSet in which all indexes of this JsonArray have been added.
     */
    public Set<Integer> getIndexSet() {
        return getIndexSet(new HashSet<>());
    }

    /**
     * Get a Set containing all indexes of this JsonArray.
     *
     * @param initialSet The precise (HashSet ? TreeSet ? ... ) set to be used
     * @return The set passed as parameter in which all indexes of this JsonArray
     *          have been added.
     */
    public Set<Integer> getIndexSet(Set<Integer> initialSet) {
        for (int i = 0; i < items.size(); i++)
            initialSet.add(i);

        return initialSet;
    }

    public Set<JsonEntry<Integer>> getIntIndexedEntrySet(Set<JsonEntry<Integer>> initialSet) {
        return this.entryStream()
                .collect(
                        Collector.of(
                                () -> initialSet,
                                Set::add,
                                (left, right) -> {
                                    left.addAll(right);
                                    return left;
                                }
                        )
                );
    }

    public Set<JsonEntry<Integer>> getIntIndexedEntrySet() {
        return this.entryStream().collect(Collectors.toSet());
    }

    @Override
    public JsonValue getLast() {
        if (items.isEmpty())
            throw new NoSuchElementException("Last item of an empty JsonArray");

        return items.get(items.size() - 1);
    }

    @Override
    public Optional<JsonValue> getOptional(int index) {
        return (this.containsIndex(index))
                ? Optional.of(items.get(index))
                : Optional.<JsonValue>empty();
    }

    @Override
    public Optional<JsonValue> getOptional(String key) {
        return Optional.empty();
    }

    @Override
    public Optional<JsonValue> getOptional() {
        return Optional.empty();
    }

    @Override
    public JsonValue getOrDefault(int index, JsonValue jsonValue) {
        return (this.containsIndex(index)) ? items.get(index) : jsonValue;
    }

    @Override
    public JsonValue getOrDefault(String key, JsonValue jsonValue) {
        return jsonValue;
    }

    @Override
    public Set<JsonEntry<String>> getStringIndexedEntrySet() {
        return getStringIndexedEntrySet(new HashSet<>());
    }

    public Set<JsonEntry<String>> getStringIndexedEntrySet(Set<JsonEntry<String>> initialSet) {
        for (int i = 0; i < items.size(); i++)
            initialSet.add( JsonEntry.of(String.valueOf(i), items.get(i)));
        return initialSet;
    }

    @Override
    public JsonArray getTail() {
        if (items.isEmpty())
            throw new UnsupportedOperationException("Get the Tail of an empty JsonArray");

        return this.skip(1);
    }

    @Override
    public int hashCode() {
        return items.hashCode();
    }

    public Iterator<Integer> indexIterator() {
        return indexStream().iterator();
    }

    public IntStream indexStream() {
        return IntStream.range(0, items.size());
    }

    public List<Integer> indexesWhere(Predicate<? super JsonEntry<Integer>> predicate) {
        final int from = 0;
        return indexesWhere(predicate, from);
    }

    public List<Integer> indexesWhere(Predicate<? super JsonEntry<Integer>> predicate,
                                      int from) {
        List<Integer> result = new ArrayList<>();
        this.entryStream()
                .skip(from)
                .forEachOrdered(entry -> {
                    if (predicate.test(entry))
                        result.add(entry.getKey());
                });
        return result;
    }

    public JsonArray intersect(JsonArray jsonArray) {
        if (isEmpty() || jsonArray.isEmpty())
            return EMPTY;
        else {
            JsonArray thinner, bigger;
            if (jsonArray.size() < this.size()) {
                thinner = jsonArray;
                bigger = this;
            } else {
                thinner = this;
                bigger = jsonArray;
            }

            return JsonArray.of(
                    thinner.stream()
                            .filter(bigger::containsValue)
            );
        }
    }

    public boolean isDefinedAt(int index) {
        return this.containsIndex(index);
    }

    @Override
    public boolean isEmpty(){
        return items.isEmpty();
    }

    @Override
    public boolean isJsonArray() {
        return true;
    }

    @Override
    public boolean isJsonObject() {
        return false;
    }

    @Override
    public Iterator<JsonValue> iterator() {
        return items.iterator();
    }

    @Override
    public JsonArray limit(int nb) {
        return items.stream()
                .limit(nb)
                .collect(JsonCollector.toJsonArray());
    }

    @Override
    public JsonArray limitRight(int nb) {
        // The idea is the following : If we have a List of 3 items, says [1, 2, 3]
        // then we say that limit 2 items by the Right and return [2,3] is equivalent
        // of skipping 1 value from the left.
        // Hence we ends up with the following formula :
        return this.skip(items.size() - nb);
    }

    public JsonArray limitWhile(Predicate<? super JsonValue> predicate) {
        final Iterator<JsonValue> iterator = items.iterator();
        if (!iterator.hasNext())
            return this;

        boolean keepSkipping = true;
        int index = 0;
        while (keepSkipping && iterator.hasNext()) {
            keepSkipping = predicate.test(iterator.next());
            index++;
        }

        // If all the items have been visited and the last elem have to be taken
        // then we "limit the result to all items of this jsonArray"
        if (!iterator.hasNext() && keepSkipping) return this;

            // If the predicate is false for the first element, then there is
            // no need to iterate we return immediately the Empty JsonArray.
        else if (index == 1 && keepSkipping) return EMPTY;
        else return this.limit(index);
    }

    /**
     * Prepend the JsonValue passed as parameter at the beginning of this JsonArray
     *
     * @param object : Object to be added at the beginning of this JsonArray
     * @return JsonArray containing the elem passed as param PLUS all the items of
     * this JsonArray
     */
    public JsonArray prepend(Object object) {
        Builder builder = JsonArray.builder();
        builder.append(JsonValue.of(object));
        builder.append(items);
        return builder.build();
    }

    @Override
    public String prettyStringifyRecursive(int indent, int incrementAcc, boolean keepingNull, boolean emptyValuesToNull)  {
        String result;
        if (this.isEmpty()) {
            result = "[]";
        }
        else {
            StringBuilder startInc = new StringBuilder();
            for (int i = 0; i < incrementAcc; ++i) {
                startInc.append(" ");
            }
            StringBuilder endInc  = new StringBuilder();
            for (int i = 0; i < incrementAcc - indent; ++i) {
                endInc.append(" ");
            }
            final String startIncrementation = startInc.toString();
            final String endIncrementation = endInc.toString();
            StringJoiner sj = new StringJoiner(",\n", "[\n", String.format("\n%s]", endIncrementation));
            JsonValue value;
            for (JsonValue jsonValue : items) {
                value = jsonValue;
                if (emptyValuesToNull && value.isJsonOptional() && value.isEmpty())
                    value = JsonNull.INSTANCE;
                if(Json.isEligibleForStringify(value, keepingNull)){
                    sj = sj.add(
                            String.format("%s%s",
                                    startIncrementation,
                                    value.prettyStringifyRecursive(indent,
                                            incrementAcc + indent,
                                            keepingNull,
                                            emptyValuesToNull))
                    );
                }
            }
            result = sj.toString();
            if(result.equals(String.format("[\n\n%s]", endIncrementation)))
                result = "[]";
        }

        return result;
    }

    public JsonArray removeAt(int index){
        if(!this.containsIndex(index))
            return this;

        List<JsonValue> newList = new ArrayList<>(items);
        newList.remove(index);
        return createJsonArray(newList);
    }

    public JsonArray reverse() {
        return (this.isEmpty())
                ? JsonArray.EMPTY
                : JsonArray.of(this.reversedIterator());
    }

    public Iterator<JsonEntry<Integer>> reversedEntryIterator() {
        return new Iterator<JsonEntry<Integer>>() {
            int index = items.size();

            @Override
            public boolean hasNext() {
                return (index > 0);
            }

            @Override
            public JsonEntry<Integer> next() {
                index--;
                return JsonEntry.of(index, items.get(index));
            }
        };
    }

    public Stream<JsonEntry<Integer>> reversedEntryStream() {
        return StreamSupport.stream(
                Spliterators.spliterator(
                        reversedEntryIterator(),
                        size(),
                        Spliterator.NONNULL | Spliterator.ORDERED | Spliterator.IMMUTABLE
                ),
                false
        );
    }

    public Iterator<Integer> reversedIndexIterator() {
        return reversedIndexStream().iterator();
    }

    public IntStream reversedIndexStream() {
        final int itemsSize = items.size();
        return IntStream
                .range(0, itemsSize)
                .map(i -> itemsSize - i - 1);
    }

    public Iterator<JsonValue> reversedIterator() {
        return new Iterator<JsonValue>() {
            int index = items.size();

            @Override
            public boolean hasNext() {
                return (index > 0);
            }

            @Override
            public JsonValue next() {
                --index;
                return items.get(index);
            }
        };
    }

    public Stream<JsonValue> reversedStream() {
        return StreamSupport.stream(
                Spliterators.spliterator(
                        reversedIterator(),
                        size(),
                        Spliterator.NONNULL | Spliterator.ORDERED | Spliterator.IMMUTABLE
                ),
                false
        );
    }

    @Override
    public int size() {
        return items.size();
    }

    @Override
    public JsonArray skip(int nb) {
        return items.stream()
                .skip(nb)
                .collect(JsonCollector.toJsonArray());
    }

    @Override
    public JsonArray skipRight(int nb) {
        // The idea is the following : If we have a List of 3 items, says [1, 2, 3]
        // then we say that skip 2 items by the Right and return [1] is equivalent
        // of limiting the list to 1 value.
        // Hence we ends up with the following formula :
        return this.limit(items.size() - nb);
    }

    public JsonArray skipWhile(Predicate<? super JsonValue> predicate) {
        final Iterator<JsonValue> iterator = items.iterator();
        if (!iterator.hasNext())
            return this;

        boolean keepSkipping = true;
        int index = 0;
        while (keepSkipping && iterator.hasNext()) {
            keepSkipping = predicate.test(iterator.next());
            index++;
        }

        // If the predicate is false for the first element, then there is
        // nothing to skip we return immediately the all the elem.
        if (index == 1 && !keepSkipping) return this;

            // If we did get out of the loop because all the items match the predicate AND
            // the predicate was true for the last item, then we have to skip all items
            // of the this JsonArray
        else if (!iterator.hasNext() && !keepSkipping) return EMPTY;
        else return this.skip(index);
    }

    /**
     * Returns a view of the portion of this list between the specified
     * <tt>fromIndex</tt>, inclusive, and <tt>toIndex</tt>, exclusive.  (If
     * <tt>fromIndex</tt> and <tt>toIndex</tt> are equal, the returned list is
     * empty.)
     *
     * @param startInclusive low endpoint (inclusive) of the subList
     * @param endExclusive high endpoint (exclusive) of the subList
     * @return a JsonArray composed by the specified range within this JsonArray
     * @throws IndexOutOfBoundsException for an illegal endpoint index value
     *         (<tt>fromIndex < 0 || toIndex > size ||
     *         fromIndex > toIndex</tt>)
     */
    @Override
    public JsonArray slice(int startInclusive, int endExclusive) {
        if (startInclusive == endExclusive)
            return EMPTY;
        if (startInclusive == 0 && endExclusive == items.size())
            return this;

        return createJsonArray(items.subList(startInclusive, endExclusive));
    }

    /**
     * Returns a JsonArray consisting of the elements of this JsonArray, sorted
     * according to the provided {@code Comparator}.
     * @param comparator {@code Comparator} to be used to compare JsonArray elements
     * @return The new JsonArray
     */
    public JsonArray sorted(Comparator<? super JsonValue> comparator) {
        return JsonArray.of(this.stream().sorted(comparator));
    }

    public Stream<JsonValue> stream() {
        return StreamSupport.stream(
                Spliterators.spliterator(
                        iterator(),
                        items.size(),
                        Spliterator.NONNULL | Spliterator.ORDERED | Spliterator.IMMUTABLE | Spliterator.DISTINCT
                ),
                false
        );
    }

    @Override
    public String stringify(boolean keepingNull, boolean emptyValuesToNull){
        if (this.isEmpty())
            return "[]";

        StringJoiner sj = new StringJoiner(",", "[", "]");
        JsonValue value;
        for(JsonValue jsonValue : items) {
            value = jsonValue;
            if (emptyValuesToNull && value.isJsonOptional() && value.isEmpty())
                value = JsonNull.INSTANCE;
            if(Json.isEligibleForStringify(value, keepingNull)){
                sj = sj.add(value.stringify(keepingNull));
            }
        }
        return sj.toString();
    }

    @Override
    public <T> Map<Integer, T> toIntIndexedMapOf(Class<T> cl, Map<Integer, T> map) {
        int index = 0;
        for (JsonValue item : items) {
            map.put(index, item.asType(cl));
            ++index;
        }

        return map;
    }

    @Override
    public JsonNode toJsonNode() {
        ArrayNode result = JsonNodeFactory.instance.arrayNode();
        items.stream().forEachOrdered(value  ->
                        result.add(value.toJsonNode())
        );
        return result;
    }

    @Override
    public String toString() {
        if(isEmpty()) return "JsonArray.EMPTY";
        return "JsonArray{" +
                "items=" + items +
                '}';
    }

    @Override
    public <T> Map<String, T> toStringIndexedMapOf(Class<T> cl, Map<String, T> map) {
        int index = 0;
        for (JsonValue item : items) {
            map.put(String.valueOf(index), item.asType(cl));
            ++index;
        }

        return map;
    }

    public JsonArray union(JsonArray jsonArray) {
        if(isEmpty())
            return  jsonArray;

        else if(jsonArray.isEmpty())
            return this;

        else {
            List<JsonValue> newList = new ArrayList<>();
            Builder builder = JsonArray.builder();
            return builder
                    .append(this.items)
                    .append(items)
                    .build();
        }
    }

    public JsonArray unionAll(Collection<JsonArray> jsonArrays) {
        Builder builder = JsonArray.builder();
        for (JsonArray array : jsonArrays)
            builder.append(array.items);

        return builder.build();
    }

    public JsonArray updateFirst(Predicate<? super JsonEntry<Integer>> predicate,
                                 JsonValue elem) {
        return updateFirst(predicate, ignored -> elem);
    }

    public JsonArray updateFirst(Predicate<? super JsonEntry<Integer>> predicate,
                                 Function<JsonEntry<Integer>, JsonValue> function) {
        return this.entryStream()
                .filter(predicate)
                .findFirst()
                .map(entry -> this.updateValue(entry.getKey(), function))
                .orElse(this);
    }

    @Override
    public JsonArray updateValue(int index, JsonValue newJsonValue) {
        return updateValue(index, ignored -> newJsonValue);
    }

    public JsonArray updateValue(int index, Function<JsonEntry<Integer>, JsonValue> function) {
        if (!this.containsIndex(index))
            return this;

        int i = 0;
        Iterator<JsonEntry<Integer>> it = this.entryIterator();
        JsonEntry<Integer> entry;
        Builder builder = JsonArray.builder();
        while (it.hasNext()) {
            entry = it.next();
            if (i == index) builder.append(function.apply(entry));
            else builder.append(entry.getValue());
            i++;
        }
        return builder.build();
    }

    public JsonArray updateWhere(Predicate<? super JsonEntry<Integer>> predicate,
                                 JsonValue elem) {
        return updateWhere(predicate, ignored -> elem);
    }

    public JsonArray updateWhere(Predicate<? super JsonEntry<Integer>> predicate,
                                 Function<JsonEntry<Integer>, JsonValue> function) {
        List<JsonValue> newItems = new ArrayList<>();
        Builder builder = JsonArray.builder();
        int i = 0;
        boolean updated = false;
        JsonEntry<Integer> entry;
        for(JsonValue jsonValue : items){
            entry = JsonEntry.of(i, jsonValue);
            if (predicate.test(entry)){
                builder.append(function.apply(entry));
                updated = true;
            } else {
                builder.append(entry.getValue());
            }
            i++;
        }
        if(!updated) return this;
        return builder.build();
    }

    public JsonArray updateWhile(Predicate<? super JsonEntry<Integer>> predicate, JsonValue elem) {
        return updateWhile(predicate, ignored -> elem);
    }

    public JsonArray updateWhile(Predicate<? super JsonEntry<Integer>> predicate,
                                 Function<JsonEntry<Integer>, JsonValue> function) {
        if (isEmpty())
            return this;

        Builder builder = JsonArray.builder();
        Iterator<JsonEntry<Integer>> it = this.entryIterator();
        JsonEntry<Integer> entry;
        while (it.hasNext()) {
            entry = it.next();
            if (predicate.test(entry))
                builder.append(function.apply(entry));
            else
                builder.append(entry.getValue());
        }
        return builder.build();
    }

    /**
     * A builder for a JsonArray to construct a JsonArray
     * by adding values step by step. This a implementation
     * of the Builder pattern.
     */
    public static class Builder {

        /**
         * Storage of the JsonArray contents
         */
        private List<JsonValue> items;

        /**
         * Builder constructor.
         */
        private Builder() {
            this.items = new ArrayList<>();
        }

        public<T> Builder append(final Collection<T> newItems) {
            return insertAt(items.size(), newItems);
        }

        public Builder append(JsonValue value) {
            return insertAt(items.size(), value);
        }

        public Builder append(final Object obj){
            return this.insertAt(items.size(), obj);
        }

        public<T,S extends BaseStream<T, S>> Builder append(final BaseStream<T, S> stream) {
            return this.append(stream.iterator());
        }

        public<T> Builder append(Iterator<T> it) {
            return this.insertAt(items.size(), it);
        }

        public Builder append(final Builder builder) {
            return insertAt(items.size(), builder);
        }

        /**
         * Build an immutable JsonArray from this mutable JsonArray.Builder an return it.
         * After the build, the JsonArray.Builder can still be reused as it is with all
         * of its previous items. Additionally, any further call to append or prepend or
         * whatever else mutable method won't affect the returned JsonArray.
         *
         * @return the constructed JsonArray
         */
        public synchronized JsonArray build() {
            // Don't immediately pass the items, make a shallow copy
             return createJsonArray(new ArrayList<>(items));
        }

        public Builder clear(){
            items.clear();
            return this;
        }

        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;

            Builder builder = (Builder) o;

            return items.equals(builder.items);
        }

        @Override
        public int hashCode() {
            return items.hashCode();
        }

        public<T> Builder insertAt(int index, final Collection<T> newItems){
            Objects.requireNonNull(newItems);
            this.items.addAll(index, newItems.stream().map(JsonValue::of).collect(Collectors.toList()));
            return this;
        }

        public Builder insertAt(int index, JsonValue value){
            Objects.requireNonNull(value);
            this.items.add(index, value);
            return this;
        }

        public Builder insertAt(int index,final Object obj){
            Objects.requireNonNull(obj);
            this.items.add(index, JsonValue.of(obj));
            return this;
        }

        public<T> Builder insertAt(int index, Iterator<T> it) {
            while(it.hasNext())
                this.insertAt(index, JsonValue.of(it.next()));
            return this;
        }

        private Builder insertAt(int index, final Builder builder) {
            this.items.addAll(index, builder.items);
            return this;
        }

        public<T> Builder prepend(final Collection<T> newItems) {
            return insertAt(0, newItems);
        }

        public Builder prepend(JsonValue value) {
            return insertAt(0, value);
        }

        public Builder prepend(final Object obj) {
            return this.insertAt(0, obj);
        }

        public<T,S extends BaseStream<T, S>> Builder prepend(final BaseStream<T, S> stream) {
            return this.prepend(stream.iterator());
        }

        public<T> Builder prepend(final Iterator<T> it) {
            return this.insertAt(0, it);
        }

        public Builder prepend(final Builder builder) {
            return insertAt(0, builder);
        }

        public Builder removeAt(int index){
            items.remove(index);
            return this;
        }

        public int size(){
            return items.size();
        }

        @Override
        public String toString() {
            return "JsonArray.Builder{" +
                    "items=" + items +
                    '}';
        }
    }
}

redpajama_set_name: RedPajamaGithub