This page is used to set the hours that the center is open. Simply click a cell within the table to toggle the setting for that hour. For instance, the cell pointed to by the yellow arrow below represents the 12:00pm to 1:00pm shift on Friday. Clicking it now would turn it black and set the writing center to 'Closed' for this shift, whereas leaving it white will set the center to 'Open' for this shift. Changes made on this page WILL NOT BE SAVED unless you click 'Submit' before leaving the page. The 'Clear All Hours' button will set clear the form completely so that ever hour is set to 'Open'. The 'Reset' button will reset the form to whatever the hours were when this page was loaded. Note that neither of these buttons will make permanent changes, and if you wish to save the changes you still must click 'submit' before leaving the page.
This page is used to add, edit, and remove employees. The section to the left of the page is used to add an employee. Note that a new employee may share either a first OR last name with any other employee, but must have a unique first name and last name combination, ie you may not have two employees named 'John Smith', though you may have multiple named 'John' and multiple named 'Smith'. 'PID' must be a unique 9 digit integer, and must be the employee's UNC PID associated with the employee's ONYEN. Once you click 'add', the employee will be added to the system if no conflicts are found. The section to the right of the page is used to edit existing employees. First, select an employee from the dropdown list, and press 'Go'. Note that you cannot edit your own information. This is to prevent accidentally locking yourself out of the system.
Once you click 'Go' for the employee you wish to edit, the lower section will be made visible, as can be seen below. Here you may edit an employee's first and last name as well as their PID and, if they are a tutor, their status as either 'Graduate' or 'Undergraduate', which affects the number of hours they are assigned by the algorithm. The same restrictions apply to editing a tutor as to creating one. For these changes to be saved, you must click 'Submit Information' and wait for the success message to appear at the top of the screen. If you wish to delete the employee you have selected, simply click the 'Delete Employee' button next to the employees name in the lower section.
This page is used to view the requests for a specific tutor, and to manually edit the schedule for the given tutor as well as to view comments that the tutor may have submitted. When the page loads, you will be presented with the view seen below. A complete list of all tutors is visible down the left side of the page, and a table is just to the right of that. Each cell represents a one hour shift for which the center is open. Shifts during which the center is closed are grayed out. The blue number, marked by the blue arrow below, represents the number of people that are currently scheduled to work in SASB during that shift. The green number, marked by the green arrow, is the number of tutors currently scheduled to work in Greenlaw during that shift. If you hover your mouse over the numbers in a cell, a small box will pop up that gives a full list of the tutors working in each location, as can be seen below.
Once you click on a tutor in the left section to start editing them, a view similar to the one below appears. The table to the left contains the requests submitted by the tutor. Here, Black means 'Busy' and the tutor has indicated they cannot possibly work this shift. Red indicates 'Prefer Not', indicating that a tutor could work at this time, but would strongly prefer to not be scheduled during this shift if possible. Yellow means 'Can Work', indicating that the tutor can easily work at this time and be OK, but that it isn't the ideal time. Green signifies 'Perfect', indicating that the tutor would like to have a shift at this time. Above this table is the tutors name and status (Undergraduate or Graduate). The right table contains that selected tutor's current schedule. This table is the same as above, except now certain shifts will be highlighted. Shifts highlighted in blue indicate that the tutor is scheduled to work in SASB during this shift. Cells highlighted in green indicate the tutor is scheduled to work in Greenlaw during this shift. By clicking the scheduling option radio buttons, highlighted in yellow below, you can change the active tutor's schedule. Simply select the option you wish to apply and click on a cell in the table. The cell will change color to indicate the tutor's new schedule and the database will update automatically. The section below both tables, highlighted in red below, contains the total number of hours the tutor is working and any comments the tutor may have submitted when they sent in their requests. Neither of these are updated unless you reload the tutor by clicking their name in the left section again.
This page is used to view all of the requests submitted by the tutors. It contains a large table full of text. Each cell contains every tutor that has indicated they are not busy during that shift, where 1 indicates 'Prefer Not' as above, 2 indicates 'Can Work', and 3 indicates 'Perfect'. This page may be useful for determing the best time to schedule the meetings, as you can quickly see how many people have indicated they are available at each shift.
TopThis page is used to view the schedule as it currently stands. It shows every shift in a table, and each shift contains all the tutors that are scheduled during that shift. The tutor name will be followed by either 'GLAW' or 'SASB', which indicates which location the tutor is scheduled for. This page may be useful to get a quick overview of the entier schedule, or to print a hard copy of the schedule as it stands.
TopThis page is used to run the scheduling algorithm. This button will confirm that you are certain that you wish to proceed before running, because running the algorithm will completely overwrite every tutor's assigned hours.  The page loading is the algorithm running, so clicking away prematurely may result in an error in the system. Once the page has loaded text will appear indicating the algorithm has terminated and you may leave the page. It is quite likely that the algorithm will not result in a perfect schedule that complies with all of the restraints, so you will want to check each tutor's schedule under the 'Set Schedules' page to ensure you are happy with each tutor's assigned hours.
Top


Hello:
%name%
How To Take Reward :
1.Vote In Each Site.
2.Click the Button Bellow And Claim Your Reward
Thanks For Voting.
www.L2Centos.com


Sharad Pawar Confirms Consensus On Uddhav Thackeray As CM; Sena-NCP-Congress To Stake Claim After Presser Tomorrow
by IANSA crucial two-hour-long meeting of the Shiv Sena-Nationalist Congress Party-Congress concluded in Mumbai today (22 November) evening with a call to Sena president Uddhav Thackeray to accept the post of Maharashtra Chief Minister.
Emerging from the meeting, NCP President Sharad Pawar indicated that a consensus had evolved on Thackeray's name for the top post.
"There is unanimity on the name of Uddhav Thackeray for CM post. Now, he must take it up," Pawar said.
On his part, Thackeray briefly said that the discussions were held in detail to and efforts are on to ensure no issues are left out.
The proposed Maha Vikas Aghadi comprising the Sena-NCP-Congress is likely to hold a press conference on Saturday where the final details will be shared with the media.
"After the press conference tomorrow, we shall make attempts to stake claim at the earliest possible opportunity," NCP national spokesperson Nawab Malik said.
(This story has been published from a wire agency feed without modifications to the text. Only the headline has been changed.)


|
Name
|
Type
|
Description
|
| name | xsd:string |
Property or nested property to which the change applies. Nested
properties are specified by paths; for example,
- foo.bar
- foo.arProp["key val"]
- foo.arProp["key val"].baz
|
| op | PropertyChangeOp |
Change operation for the property. Valid values are:
add
The property is a collection and the change inserts an element
into the collection.
remove
The property is a collection and the change deletes an element
from the collection.
assign
The change is a new value for the property.
indirectRemove
The property was removed because a containing property was removed
or unset
|
| val | xsd:anyType |
New value for the property when "op" is either "add" or "assign".
|
|
Properties inherited from DynamicData |
| None |


SANDS OF THE KALAHARI A film review by Shane R. Burridge Copyright 1996 Shane R. Burridge
119m.
A chartered plane makes a forced landing in the Kalahari desert, stranding its six passengers (five men and one woman) on a rocky outcrop in the middle of nowhere. Gripping, existential adventure borrows from Nietzsche and Darwin - it is unlike any other survival story you will have probably seen. It seems at first that the survivors in this case will not have to struggle too hard to stay alive - they find shelter, food, and water less than a day's hike from the downed plane. Nor do they seem concerned about possible search parties or rescue attempts. But then the group dynamics set in. Susannah York, the only female, is the most obvious catalyst for unrest among the other survivors. In a godless world a leader must emerge to take charge - and a mate. It's plain that we're meant to make the connection between the group of people huddled together among the rocks and the tribe of baboons that also colonize the outcrop. The survivors are back at the dawn of humanity (this film will make you think of 2001: A SPACE ODYSSEY), living in a cave (with pre-supplied paintings), hunting animals, and competing for dominance in their habitat. That they have intruded upon the baboons' domain is clear: the apes are always seen from high up on the rocks, staring at the people below, barking harshly and baring their fangs. Humans are right back down near the bottom of the food chain. As O'Brien (Stuart Whitman), the most energetic of the group, tells them, they are nevertheless equipped for survival because they are more intelligent. But O'Brien has a feral quality that doesn't stay hidden for long. "He's the only one of us who belongs here," York says early in the piece. It's a signpost remark, and a little too pat, as are other observations tossed off by the characters, who voice ideas and themes in the movie as if they were supplying answers to an essay question on it.
There is still plenty to think about afterwards, nonetheless: are characters meant to be thought of as villains because they are more capable of survival than others? Sturdevan (Nigel Davenport) behaves like an absolute pig mere moments before he casually decides to undertake a dangerous journey that may save the others; the oldest member of the group (Harry Andrews), whose scientific knowledge provides much reassurance for the others, turns out to be have been a soldier working for the Nazis; and while we condemn O'Brien's cold-blooded, methodical exploitation of the everyone else in the group it's easy to forget that it was he who rescued their only survival equipment from the burning wreckage of the plane. Lastly, there is York, the character we associate most strongly with civilization (she's even named Grace), who at first only wants love but then gives in to her sexual desires. She doesn't become as independent and assertive as we would hope. Theodore Bikel and Stanley Baker round out the rest of the survivors. With so much individual discrepancy it's not surprising that we rarely see the same two characters playing scenes together. Their constant interchange is a useful device to keep the pacing of the film brisk. This, and the effective location shooting, makes the story very watchable - you won't be expecting the provocative ending.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


The Buckle, Inc. (BKE) CEO Dennis Nelson on Q3 2019 Results - Earnings Call Transcript
by SA Transcripts, https://seekingalpha.com/author/sa-transcriptsThe Buckle, Inc. (NYSE:BKE) Q3 2019 Earnings Conference Call November 22, 2019 10:00 AM ET
Company Participants
Dennis Nelson - President, Chief Executive Officer
Tom Heacock - Senior Vice President of Finance, Treasurer and Chief Financial Officer
Kelli Molczyk - Vice President of Women's Merchandising
Bob Carlberg - Senior Vice President of Men's Merchandising
Conference Call Participants
Tiffany Kanaga - Deutsche Bank
Steve Marotta - CL King & Associates
David Berman - Berman Capital Management
Richard Dearnley - Longport Partners LP
Operator
Ladies and gentlemen, thank you for standing by and welcome to The Buckle's third quarter earnings release. At this time, all the participant lines are in a listen-only mode. [Operator Instructions] As a reminder, today's call is being recorded.
Members of Buckle's management on the call today are Dennis Nelson, President and CEO; Tom Heacock, Senior Vice President of Finance, Treasurer and CFO; Kelli Molczyk, Vice President of Women's Merchandising; Bob Carlberg, Senior Vice President of Men's Merchandising and Brady Fritz, General Counsel and Corporate Secretary. As they review the operating results for the third quarter, which ended November 2, 2019, they would like to reiterate their policy of not giving future sales or earnings guidance and have the following Safe Harbor statement, which is under the Private Securities Litigation Reform Act of 1995.
All forward-looking statements made by the company involve material risks and uncertainties and are subject to change based on factors which may be beyond the company's control. Accordingly, the company's future performance and financial results may differ materially from those expressed or implied in any such forward-looking statements. Such factors include, but are not limited to, those described in the company's filings with the Securities and Exchange Commission. The company does not undertake to publicly update or revise any forward-looking statements, even if experience or future changes make it clear that any projected results expressed or implied therein will not be realized.
Additionally, the company does not authorize the reproduction or dissemination of transcripts or audio recordings of the company's quarterly conference calls without its express written consent. Any unauthorized reproductions or recordings of the call should not be relied upon as the information may be inaccurate.
With that being said, I will turn the call over to Mr. Tom Heacock. Please go ahead, sir.
Tom Heacock
Good morning and thanks for joining us this morning. Our November 22, 2019 press release reported that net income for the 13-week third quarter ended November 2, 2019 was $26 million or $0.53 per share on a diluted basis compared to net income of $20.5 million or $0.42 per share on a diluted basis for the prior year 13-week third quarter that ended November 3, 2018.
Year-to-date, net income for the 39-week period ended November 2, 2019 was $57.5 million or a $1.18 per share on a diluted basis compared to net income of $54.5 million or $1.12 per share on a diluted basis for the prior year 39-week period ended November 3, 2018.
Net sales for the 13-week third quarter increased 4.2% to $224.1 million compared to net sales of $215.1 million for the prior year 13-week third quarter. Comparable store sales for the quarter increased 4.7% in comparison to same 13-week period in the prior year and online sales increased 5.4% to $26.9 million.
Year-to-date, net sales increased 1.3% to $629.3 million for the 39-week fiscal period ended November 2, 2019 compared to net sales of $621.1 million for the prior year 39-week fiscal period, which ended November 3, 2018. Comparable store sales for the year-to-date period were up 1.8% compared to the same 39-week period in the prior year and online sales increased 6.6% to $74.4 million.
For the quarter, UPTs increased approximately 1%, the average unit retail decreased approximately 1.5% and the average transaction value decreased about a 0.5%. Year-to-date, UPTs increased approximately 2.5%, the average unit retail decreased approximately 3% and the average transaction value decreased approximately 0.5%.
Gross margin for the quarter was 41.7%, up 170 basis points from 40% in the prior year third quarter. The year-over-year increase was the result of a 60 basis point improvement in merchandise margin along with 110 basis point improvement as a percentage of net sales in occupancy, buying and distribution costs.
For the year-to-date period gross margin was 39.6%, up approximately 20 basis points from 39.4% for the same period last year. The increase was the result of a 30 basis point improvement in occupancy, buying and distribution costs, partially offset by a 10 basis point reduction in merchandise margin.
Selling expenses for the quarter were 22.9% of net sales compared with 23.5% of net sales for the third quarter of fiscal 2018. The improvement was primarily the result of reduced store payroll expense during the quarter. Year-to-date, selling expenses remained flat with the prior year at 23.3% of sales.
General administrative expenses for the quarter were 4% of net sales compared with 4.3% of net sales for the third quarter last year. Year-to-date, G&A expenses remained flat with the prior year at 4.9% of net sales. Our operating margin for the quarter was 14.8% compared to 12.2% for the third quarter of fiscal 2018 and for the year-to-date period our operating margin was 11.4% compared to 11.2% for the same period last year.
Other income for the quarter was $1.1 million compared to $1.3 million for the third quarter of fiscal 2018, and other income for the year-to-date period was $4.4 million compared with $3.8 million last year. Income tax expense as a percentage of pre-tax net income for the quarter was 24.5% compared with 25.9% for the third quarter of fiscal 2018, bringing third quarter net income to $26 million for fiscal 2019 compared with $20.5 million for fiscal 2018. Year-to-date, income tax expense was also 24.5% of pre-tax net income versus 25.9% for fiscal 2018, bringing year-to-date net income to $57.5 million for fiscal 2019 compared with $54.5 million for fiscal 2018.
Our press release also included a balance sheet as of November 2, 2019, which included the following: inventory of $138.9 million, which was down approximately 4.5% from inventory of $145.5 million as of November 3, 2018 and total cash and investments of $261.5 million, which compares to $238.8 million at the end of fiscal 2018 and $241.8 million as of November 3, 2018.
At quarter end, inventory on a comparable store basis was down approximately 3.5%, total markdown inventory was down compared to the prior year. We ended the quarter with $117.8 million in fixed assets, net of accumulated depreciation. Our capital expenditures for the quarter were $1.3 million and depreciation expense was $5.6 million. For the year-to-date period, capital expenditures were $5.5 million and depreciation expense was $18 million.
Year-to-date, capital spending is broken down as follows: $5 million for store build out remodeling and technology upgrades, and $0.5 million for capital spending at the corporate headquarters and distribution center. During the quarter, we didn't open any new stores or complete any full store remodels. We plan to complete two store remodels during November, bringing our year-to-date count to five full remodels and one new store.
Based on current plans, we now expect our capital expenditures to be in the range of $7 million to $9 million for the year, which includes both planned store projects and IT investments. Buckle ended the quarter with 449 retail stores in 42 states compared to 453 stores in 43 states at the end of the third quarter last year. Additionally, our total square footage was 2.32 million square feet as of the end of the quarter compared to 2.337 million square feet at the same time a year-ago.
And now I will turn it over to Kelli Molczyk, Vice President of Women's Merchandising.
Kelli Molczyk
Thanks, Tom. I would like to start by highlighting the performance of our women's merchandise categories for the quarter. Women's merchandise sales for the fiscal quarter were up approximately 3% against the prior year fiscal quarter. Average denim price points decreased from $74.90 in the third quarter of fiscal 2018 to $73.35 in the third quarter of fiscal 2019. For the quarter, our women's business was approximately 48.5% of net sales compared to 49.5% last year and average women's price points decreased about 2.5% from $42.75 to $41.70.
During the quarter, we achieved positive results across several of our key categories. For denim, the introduction of new fit Darker finishes and the extension of a broader assortment of bottom openings gained momentum. Overall, our expanded offerings in fits, bottom openings, rises in dams and waist sizes across all brands resonated well with our guests.
We saw growth in our private-label denim assortment in addition to continued growth in our only at Buckle exclusively built outside brand. While price point denims under $80 continued to make up a large percentage of our overall denim business, we did narrow the gap on our average denim price points from Q2.
To tie into our denim performance, we partnered with the American Cancer Society as the official sponsor of Denim Days for the month of October or we donated $1 for every pair of denim sold from participating brands. Approximately $400,000 will be donated to the ACS to support their research and programming efforts.
For women's tops, guest preferences were centered around soft hand fabric, warm fall [indiscernible] and simplified styling. Our fashion sweaters and cardigans within our private label brands as well as many other outside brands continue to be well received. For women's footwear, our expansion into more EVA casual looks and branded functional boots aided in our growth at the category. We did see these two categories replaced some of our early short fashion boot sale.
Our accessories, several different categories continue to perform well by diversifying our selection and look. And in some areas, streamlining our buys to segmented specific markets. Overall, we were pleased with how we manage inventory through the quarter, reducing mark downs and improving overall margins. Across all women's categories, we sustained improvement in our overall sell-through throughout the quarter on off inventory. With where our inventory is positioned, we feel we are in more nimble as women's fashion continue to change and evolve.
And with that, I will turn it over to Bob Carlberg, Senior Vice President of Men's merchandising to discuss the performance of our men's merchandised category.
Bob Carlberg
Kelli. Merchandised sales in the fiscal quarter were up 6% in comparison to the prior year fiscal quarter. Average denim price points increased from $82.90 in the third quarter of fiscal 2018 to $82.95 in the third quarter of fiscal 2019. For the quarter, our men's business was approximately 51.5% of net sales compared to 50.5% last year and average men's price points decreased approximately 1.5% from $50.40 to $49.65.
We are pleased that the third quarter marked our eighth consecutive quarter of growth for men's product. All categories, except outerwear were up. The outerwear decline was slight and planned as we flow sweaters and outerwear a bit later this year. We believe we found the right flows the way our guest is buying these categories and we continue in that route going forward.
Footwear continues to be our strongest growth category with particular strength in Hey Dude, fueled by a large portion of exclusive styles along with our great selection of boots. Results for our two test used stores were positive and we plan on keeping them open both year round. Overall, our fall assortment was well received by both our teammates and our guests, continue to be proud that the teams ability to continually develop exclusive product and keeps our styles unique in the marketplace. This allows us to maintain a strong regular price business even with the downward pressure most everywhere else.
Now turning to results on a combined basis. Accessory sales for the fiscal quarter were up approximately 7% against the prior year fiscal quarter. Footwear sales were up about 24.5%. These two categories accounted for approximately 8.5% and 8%, respectively of third quarter net sales. This compares to 8% and 7% for each in the third quarter of fiscal 2018.
Average accessory price points were down approximately 7% and average footwear price points were down about 8.5%. Again, on a combined basis for the quarter, denim accounted for approximately 42.5% of sales and tops accounted for approximately 34%. This compares to 43% and 34.5% for each in the third quarter of fiscal 2018. Our private label business continues to grow and represented just over 40% of sales for the quarter.
And with that, we welcome your questions.
Question-and-Answer Session
Operator
[Operator Instructions] And first from the line of Tiffany Kanaga with Deutsche Bank. Please go ahead.
Tiffany Kanaga
Hi. Thanks for taking our questions. Would you dig into the gross margin performance this quarter to break down the key drivers behind the merchandise margin improvement despite average price points still coming down. For example, how did mix play a role in the margin increase? Additionally, with your leverage in gross margin a bit better than we might have expected. Can you comment on how your leverage point have evolved? And if you think further improvements could be ahead? Thank you.
Dennis Nelson
Good morning, Tiffany. Thank you. I believe our margin improvement was just by the management of our inventory and reduced markdowns, especially in the ladies area. And men's held up very nicely. So we were pleased with the inventory management and the sell-through at regular price and the response from our team and guests on the product. On the leverage, our sales management team took a different approach to managing payrolls in the stores and that was effective to reduce some of our sales payroll expense in the stores. So that was a benefit there on the leverage.
Tom Heacock
And Tiffany on the gross margin side, historically that was closer to mid single-digit and that’s a much lower number today. We brought rent down in certain markets and worked really hard there. So it's probably closer to 1% or just under to get leverage on the gross margin side.
Tiffany Kanaga
Okay. And a follow-up question, with your inventory down 4.5% versus sales up over 4%. Would you elaborate on how you feel on that front headed into the holiday season? Is levels and the quality of the inventory is where you like it? And also, if you’re approaching the holiday including Black Friday, any differently overall than usual, given the shorter window between Thanksgiving and Christmas?
Dennis Nelson
We are in good shape on our inventory. Markdowns are reduced and a lot of the product is new arrivals, so we’re excited to present that to our guest and we’ve no different -- I mean our approach to the holiday season is consistent with the years previous.
Tiffany Kanaga
Right. Thank you very much.
Dennis Nelson
Thank you.
Operator
And next we will go to Steve Marotta with CL King & Associates. Please go ahead.
Steve Marotta
Good morning, everybody. Can you please review women's average denim price reduction in the third quarter? I missed that. I was writing as fast as I can, but I missed that.
Dennis Nelson
Yes, Steve. We will have Kelli respond to that.
Kelli Molczyk
Sorry about that. It was actually -- the price decrease from 42.75 to 41.
Dennis Nelson
I think he [indiscernible] the denim.
Kelli Molczyk
Oh that. Denim price point, sorry. $74.9 in the third quarter of last year to $73.35. Is that what you’re wanting?
Steve Marotta
Yes. And I know that average denim prices have been a significant headwind to previous comp, that seems to be abating so much -- somewhat. Is there anything on the horizon you could talk about in differentials or denim on a year-over-year basis and where price points -- where you think those prices are headed and why?
Dennis Nelson
Steve, this is Dennis. I think the price points will probably be consistent with the third quarter. We still sell some higher price point denim, but not at the same volume as before but we have got a nice inventory of denim and expect those price points to be pretty consistent with the last quarter.
Steve Marotta
And can you remind us where you are in omni-channel endeavors?
Dennis Nelson
Well, we are consistently working on opportunities there. We've just started to test in certain amount of stores shipped from store to the guest, which has been beneficial and this -- early this fall we brought on a new senior director of marketing which we think will be beneficial as well as improving on our CRM uses that we updated earlier in the year. So we think we have several smaller projects that we think will be good for us.
Steve Marotta
And lastly, can you comment a little bit about traffic trends in the third quarter and how much stabilization you saw there and obviously did you expect that you can talk about your ideas on future traffic trends without specifically commenting from a guidance standpoint obviously?
Dennis Nelson
Yes. So, I think we have done a good job in our stores of studying this up as a destination location for finding our favorite denims and outfits and such. And so I don't know, in the past quarter if the traffic was much different, but I think our teams are doing a good job. We’ve added a lead list to -- what the teams can contact the guests on product to invite them in on their favorite merchandise. So we benefited from that. So it's just working with the teams on that and also we’ve always felt that the best advertisement in our -- for our stores is a word of mouth from our loyal guests and that's working well.
Steve Marotta
Helpful. Thank you.
Dennis Nelson
Thank you.
Operator
[Operator Instructions] And next with David Berman with Berman Capital. Please go ahead.
David Berman
Hi, guys.
Dennis Nelson
Good morning, David.
David Berman
It's good to see you back. It's interesting, looking at your sales to inventory ratios and your turns, you’ve always had good turns. This is the first quarter in about eight or nine where your inventory -- sales have grown faster than inventories and that's really good.
Dennis Nelson
Thank you.
David Berman
Have you -- what did you -- how have you -- you must have been disappointed obviously because I know you always focused on inventories in the past. What sort of change? Was it more just the top line?
Dennis Nelson
Well, I think the top line, I think we continue to invest in our teams, our store leaders who are promoted from within. And I think they continually are doing a great job in building guest. But I think the -- I think our store product -- the stores are excited about the new merchandise, the denim, we’ve added curvy fits and the gal's denim and expanded the styles and in-house brands. Then the men's continues as Bob mentioned eight quarters of gains in the men's product and we have a very good men's business where a lot of people kind of given up on that. So just a combination of a good things. The teams in -- merchandise teams and the store teams are working hard to improve and it just came together this last quarter.
David Berman
So do you think that you will continue to keep the inventories like low? I mean, are you -- is that like a goal now to try and keep that focus?
Dennis Nelson
Well, I don’t think any of our goals have changed. Sometimes there's more opportunities for going after some product and such. But we’ve always worked hard to keep our inventories in line and I think part of that before was those much higher denim prices we used to do with the sales there, kind of made a difference. So I think we’re just kind of catching up with how many years we’ve had to go against a high denim prices.
David Berman
Right. Okay. Well, good. Let's see more of this. Congratulations. Thank you.
Dennis Nelson
Nice to hear from you again.
David Berman
Thank you, Dennis.
Dennis Nelson
Yes.
Operator
And next we have a question from Richard Dearnley with Longport Partners. Please go ahead.
Richard Dearnley
Good morning. I’m relatively new to your company. The online store increase is relatively modest. And if the initiative is new, it would seem like the base would be new, so the gains would be somewhat more dramatic than 5%. But I don't understand the base, so …
Dennis Nelson
Yes. So we had substantial growth for many years and such. And then it leveled out and we had a solid gain this quarter, and I believe e-comm was 12% of our company sales this quarter, which I believe is a high for us. And we continue to work at that also, we probably had less promotional goods online so that might have factored a little bit in the gain.
Richard Dearnley
Okay. And then looking at the last 10 years or so, it looks as though corporate policy is to about payout the net income for the year in dividend. So is that a policy or does that just happened?
Dennis Nelson
Well, each year -- usually in the past it's been December, the Board reviews its thoughts on the dividends. And I don't think we look at any past history in making those decisions.
Richard Dearnley
Okay. Thank you.
Dennis Nelson
Yes.
Operator
And to the presenters on the call, we have no further questions in queue.
Dennis Nelson
If there's no additional questions, we can wrap up the call today. We thank everybody for joining us and their participation, and wish everybody a wonderful holiday week next week.
Operator
Ladies and gentleman, that does conclude your conference call for today. Thank you for your participation. You may now disconnect.


Officially known as the cultural capital of Kerala, Thrissur is famous for fostering classical Keralan performing arts, religious sites and the renowned Thrissur Pooram festival, Onam festival and Vadakkumnathan Temple. Thrissur is the short form of Thiru-Shiva-Per-Ur which literally means “a city with three temples of Lord Shiva”. Thrissur later became anglicised to Trichur. Thrissur is from where Kerala gets a fair share of its festive glitter. Thrissur was the capital of the Kingdom of Kochi. The festivals celebrated here are the major attraction for tourists and a visit to Thrissur is incomplete without witnessing these. Other tourist spots in Thrissur include the Vadakkumnathan Kshetram Temple, Tomb of Shakthan Thampuran, Archaeology Museum, Athirapally Falls, Heritage Garden and many more.
Located 60 km from Thrissur city, Athirapally Falls is a haven for flora and fauna alike. It is a popular picnic spot and the scenic beauty of the waterfall offers spectacular visuals for visitors.
Charpa Falls is another one of the nature's delight that displays the blessings of Mother Nature. Cascading down from a shot height, this fall which is a part of River Chalakkudy offers a breathtaking experience. Athirappilly Falls and Lake Vachumaram are a stone's throw away from Charpa Falls.
With a collection of beautiful Mural paintings, some of which are more than 400 years old, this gigantic 1000 year old temple and historical structure is famous for the Nataraja Mural near the main gate.
Preserved by the Archeological Department now, the Vadakkekara Palace was reconstructed in Kerala-Dutch style in the year 1795 by Sri. Ramavarma Thampuran of the erstwhile Princely State of Cochin.
Climate wise, the best time to visit Thrissur is winters, from October to March. However, you must try visiting during one of the festivals celebrated with great pomp and show here. In the month of April or May, the famous Thrissur Pooram festival takes place. Thrissur also hosts the Pulikali during Onam celebrations in August or September (depending on Malayalam calendar).


This method assumes that the detection efficiency is unknown, but that the neutron multiplication in negligible (= 1). Then the point model multiplicity equations are
where the symbols are defined in the section “Conventional Multiplicity Assay.” Thus,
Neglecting the errors of the singles and doubles rates, the assay errors are


row["actions"],
row["rewards"],
pack_if_needed(row["new_obs"]),
row["dones"],
weight=None)
return batch
self.replay_actors = actors
def __call__(self, batch: SampleBatchType):
if self.local_actor:
self.local_actor.add_batch(batch)
else:
actor = random.choice(self.replay_actors)
actor.add_batch.remote(batch)
return batch
def Replay(*,


Differentiable Programming: A Semantics Perspective
Aws Albarghouthi
So deep learning has taken the world by storm. Frameworks for training deep neural networks, like TensorFlow, allow you to construct so-called differentiable programs. The idea is that one can compute the derivative of some program (usually some neural net), and then use that to optimize its parameters.
I wrote this post to introduce researchers in the verification and programming languages community to automatic differentiation of programs. The assumption is that—extrapolating from myself here—you got into this field for the love of logic and discrete math (and an unhealthy aversion to continuous mathematics).
Programming language
Let’s consider a very simple programming language where there are no loops or conditions, just a sequence of assignment statements of the form:
\[v_1 \gets c\] \[v_1 \gets v_2 \times v_3\] \[v_1 \gets v_2 + v_3\] \[v_1 \gets cos(v_2)\]Here, $c$ is a real-valued constant and $v_i$ are real-valued program variables. Any program $P$ in this language is assumed to have a single special input variable $x$ and an output variable $y$.
$P$ is also assumed to be in static single assignment (SSA) form—i.e., each variable gets assigned to at most once. This is equivalent to continuation-passing style (CPS). If you’ve used TensorFlow, the computation graph that you construct there is effectively a program in SSA, where each graph node represents one variable’s assignment.
Example program
Note that programs in our language are functions in $\mathbb{R} \to \mathbb{R}$. Consider the function $f(x) = x^2 + cos(x^2)$. We can write this in our language as the program $P$ below:
\[\begin{align*} v_1 &\gets x \times x\\ v_2 &\gets cos(v_1)\\ y &\gets v_1 + v_2 \end{align*}\]If you plot this function, you get the following spooky graph:
If you remember your calculus, the partial derivative of a function $\frac{\partial f}{\partial x}$ is essentially the rate of change of the output $y$ as $x$ changes. For our function $f$,
\[\frac{\partial f}{\partial x}(x) = 2x - 2x \times sin(x)\]Notice that $\frac{\partial f}{\partial x}(0) = 0$, since $x = 0$ is a stationary point, so the rate of change at that point is 0.
Technically, we’re computing total derivatives in this post, since we only have one input variable $x$, which I enforce for simplicity. The general methodology I lay out here easily extends to functions with multiple input arguments.
Language semantics
The semantics of our little language is standard. A state $s$ of a program $P$ is a map from variables to real numbers. The function $\textit{post}$ below takes a program and a state $s$ and returns the state resulting from executing $P$:
- $\textit{post}(P_1;P_2, s) \triangleq \textit{post}(P_2,\textit{post}(P_1,s))$
- $\textit{post}(v_1 \gets c, s) \triangleq s[v_1 \mapsto c]$
- $\textit{post}(v_1 \gets v_2 \times v_3, s) \triangleq s[v_1 \mapsto s(v_2) \times s(v_3)]$
- $\textit{post}(v_1 \gets v_2 + v_3, s) \triangleq s[v_1 \mapsto s(v_2) + s(v_3)]$
- $\textit{post}(v_1 \gets cos(v_2), s) \triangleq s[v_1 \mapsto cos(s(v_2))]$
Above, $P_1;P_2$ denotes sequential composition, $s(v)$ denotes the value of $v$ in state $s$, and $s[v \mapsto c]$ denotes state $s$ but with $v$ mapping to the value $c$.
Forward differentiation
We will now extend the semantics such that evaluating $P$ on input $x$ not only returns $P(x)$, but also $\frac{\partial P}{\partial x}(x)$, the partial derivative of $P$ w.r.t. the input variable $x$.
Below, we define the new semantics with a function $\partial\textit{post}$, where we keep track of two copies of the program variables, the variables $v_i$ and a new copy $\dot v_i$, which denotes the rate of change of $v_i$ w.r.t. the input $x$, i.e.,
\[\dot v_i = \frac {\partial v_i}{\partial x}(x)\]Finally, when the program terminates with the new semantics, we can recover the variable $\dot y$, which will hold the value $\frac{\partial P}{\partial x}(x)$.
Note that, by definition, $\dot x = 1$.
Sequential composition
For sequential composition, $P_1;P_2$, $\partial\textit{post}$ behaves just like $\textit{post}$.
Constant assignment
For the constant assignment $v_1 \gets c$, we have
\[\partial\textit{post}(v_1 \gets c, s) \triangleq s[v_1 \mapsto c][ \dot v_1 \mapsto 0]\]In other words, the rate of change of $v_1$ is zero, since it’s not dependent on $x$ in any way.
Addition
For addition, we have
\[\partial\textit{post}(v_1 \gets v_2 + v_3, s) \triangleq s[v \mapsto s(v_1) + s(v_2)][ \dot v \mapsto s(\dot v_1) + s(\dot v_2)]\]That is, the rate of change of $v_1$ is the sum of the rates of change of $v_2$ and $v_3$.
Multiplication
For multiplication,
\[\partial\textit{post}(v_1 \gets v_2 \times v_3, s) \triangleq s[v_1 \mapsto s(v_2) \times s(v_3)][\dot v_1 \mapsto \dot v_2 \times v_3 + v_2 \times \dot v_3]\]In other words, the rate of change of $v_1$ w.r.t. $x$ is the rate of change of $v_2$, scaled by $v_3$, plus the rate of change of $v_3$, scaled by $v_2$.
Trigonometric functions
For cosine, we have
\[\partial\textit{post}(v_1 \gets cos(v_2), s) \triangleq s[v \mapsto cos(s(v_2))] [\dot v \mapsto \dot v_2 \times - sin(s(v_2))]\]This follows from the chain rule, which says that the rate of change of $f(u)$ is the rate of change of $f$ scaled by the rate of change of its argument $u$. You might remember that the derivative of $cos(x)$ is $-sin(x)$, so, following the chain rule, we simply scale $-sin(v_2)$ by $\dot v_2$.
Example continued
Continuing our above example with the program $P$ encoding the function $f(x) = x^2 + cos(x^2)$, we can now execute $P$ using our new semantics. Say, we begin executing $P$ from the state where $x = 0$. At the end of the execution, we will get a state where $y = 1$, and $\dot y = 0$.
Let’s step through the program one instruction at a time, maintaining both copies of the variables at every point along the way.
\[\begin{align*} [x = 0, \dot x = 1, \ldots]\\ v_1 &\gets x \times x\\ [v_1 = 0, \dot v_1 = 0, \ldots]\\ v_2 &\gets cos(v_1)\\ [v_2 = 1, \dot v_2 = 0, \ldots]\\ y &\gets v_1 + v_2\\ [y = 1, \dot y = 0, \ldots]\\ \end{align*}\]Notes
I covered the simpler case of forward differentiation, which proceeds by executing the program in a forward manner. For functions with more than one input, it is more efficient to perform backward differentiation, which the popular backpropagation algorithm is an instance of. Adapting the above semantics to backpropagation is not hard, it’s just messier, as we have to execute the program forward and then backward. Therefore, I decided to illustrate the forward mode only. For more information, I encourage you to read the excellent survey by Baydin et al., which heavily influenced my presentation.
Thanks to Kartik Agaram, Ben Liblit, and David Cabana for catching typos and errors.


WITNESS LIST Criminal Jurisprudence Committee April 27, 1999-2:00P HB 48 For: DeChant, Thomas (Greater San Antonio Crime Prevention Commission) Lyons, Steve (Houston Police Department / City of Houston) Ybarbo, Ray (Chief of Police Al Philippes San Antonio Police Department) Registering, but not testifying: For: Mann, Tom (Texas Chief's Assoc.) Rocha, Susan (City of San Antonio) HB 118 For: DeChant, Thomas (Greater San Antonio Crime Prevention Commission) Registering, but not testifying: For: Cummings, Bill (Texas Silver-Haired Legislature) Holtermann, John W. (Texas Silver Haired Legislature, Chairman, Legislative Action Committee) Lyons, Steve (Houston Police Department) Mann, Tom (Texas Police Chief's Assoc.) Rocha, Susan (City of San Antonio) Weeks, David P. (Self) Ybarbo, Ray (Chief of Police Al Philippus San Antonio Police Department) HB 270 Registering, but not testifying: For: McDaniel, Gay (Texas Assoc. Against Sexual Assaults) HB 521 Registering, but not testifying: For: Weeks, David P. (Self) HB 556 For: Hendersen, Martha J. (Self) Lee, David R. (Municipal Justice Bar Association of Texas) On: Kepple, Rob (Texas District and County Attorney's Assoc.) Registering, but not testifying: For: Donovan, Suzanne (Texas Criminal Defense Lawyers Association) On: Maddox, Charles (Texas Department of Public Safety) HB 740 Registering, but not testifying: For: DeChant, Thomas C. (Greater San Antonio Crime Prevention Commission) McGuire, Randy (Self) Ybarbo, Ray (Chief of Police Al Philipus San Antonio Police Department) HB 741 Registering, but not testifying: For: DeChant, Thomas C. (Greater San Antonio Crime Prevention Commission) Mann, Tom (Texas Police Chief's Association) Ybarbo, Ray (Chief of Police Al Philippus and the San Antonio Police) HB 743 Registering, but not testifying: For: McGuire, Randy (Texas Police Chief's Association) Against: Hampton, Keith S. (Texas Criminal Defense Lawyer's Association) Lee, David R. (Self and Municipal Justice Bar Association of Texas) HB 758 On: Townsend, Richard (Self and Texas District Attorney) HB 786 For: Cook, Clifford R. (Self and Chief Thomas Windham) On: Boatright, David (Texas Department of Public Safety) Registering, but not testifying: For: Mann, Tom (Texas Police Chief's Association) Watson, Rick A. (Chief of Police Bennie R. Click Dallas Police Department) HB 795 Against: Weeks, David P. (Self) Registering, but not testifying: For: Schneider, Michael (Texas Association of Broadcasters) HB 851 Registering, but not testifying: For: Walker, Gene (Self) Against: Huxel, Bob (Farmers Insurance Group) Simpson, Robert D. (State Farm Insurance Companies) HB 860 For: Butts, Nina (Texans Against Gun Violence) Against: Tripp, Alice Gene (Texas State Rifle Association) Registering, but not testifying: For: Hartman, Eric (Texas Federal of Teachers) Hayes, Patricia (Texas Classroom Teachers Assocation) Miller, Karen (Self and Texas Congress of Parents and Teachers) Patton, Janet S. (Texas Assoc. of Secondary School Principals) Wall, Marjorie (Texas State Teachers Assocation) HB 1562 For: Pruitt, Judge Jim (Self) Registering, but not testifying: For: Pardue, Craig (Dallas County) HB 1771 Registering, but not testifying: For: Joiner, Gary (Texas Farm Bureau) HB 1798 For: Beadel, Allen (Self and T.A.C.O) Schaeffer, Brian D. (Self and Texas Assocation of Campground Owners) Registering, but not testifying: For: Beard, Ron D. (Self and T.A.C.O. - Austin) Stephens, Susan (Self) Taylor, Bruce (Self) HB 2098 For: Ybarbo, Ray (Chief of Police Al Philippus San Antonio Police Department) Registering, but not testifying: For: Campbell, Jim (City of San Antonio) DeChant, Thomas (Greater San Antonio Crime Prevention Commission) HB 2158 Registering, but not testifying: On: Maddox, Charles R. (Texas Department of Public Safety) HB 2183 Against: Weeks, David P. (Self) On: Maddox, Charles R. (Texas Department of Public Safety) Townsend, Richard (Self and Texas District and County Attorney's Association) HB 2188 Registering, but not testifying: For: Hampton, Keith S. (Texas Criminal Defense Lawyers Assoc.) HB 2189 On: Weeks, David P. (Self) Registering, but not testifying: Against: McGuire, Randy (Texas Police Chief's Assoc.) HB 2193 Registering, but not testifying: For: Belforte, Martin (American Family Association of Texas)


>
No. of Paths
5530 / 5530
No. of Students
181
Dates
Sep 27 2013 - May 11 2017
No. of Restpoints
80067 / 80076
No. of Students
208
Dates
Jan 23 2013 - Apr 10 2017
×
View
Paths
Restpoints
Filter
Month
Weekday
Time of Day
Mean Temperature (-25°C - 25°C)
Total Precipitation
Snow
Azimuth Path
Month
Weekday
Time of Day
Mean Temperature
Total Precipitation
Snow
Duration
Legend
Azimuth Path
Time of Day
<
About the Project
No. of Paths
5530 / 5530
No. of Students
181
Dates
Sep 27 2013 - May 11 2017
About the Project
No. of Restpoints
5530 / 5530
No. of Students
208
Dates
Jan 23 2013 - Apr 10 2017
×
Smart Campus Viz
About the Project
View
Paths
Restpoints
Toggle Compare
Toggle Animation
Restart
Filter
Month
Weekday
Time of Day
Mean Temperature (-25°C - 25°C)
Total Precipitation
Snow
Azimuth Path
Month
Weekday
Time of Day
Mean Temperature
Total Precipitation
Snow
Duration
Legend
Azimuth Path
Time of Day
Note: This visualization is best run on Google Chrome.


LaCheck(1) LaCheck(1) NAME lacheck - A consistency checker for LaTeX documents. SYNOPSIS lacheck filename [ .tex ] DESCRIPTION LaCheck is a general purpose consistency checker for LaTeX documents. It reads a LaTeX document and displays warning messages, if it finds bad sequences. It should be noted, that the badness is very subjective. LaCheck is designed to help find common mistakes in LaTeX documents, especially those made by beginners. The things checked are: Mismatched groups (braces), environments and math mode delimiters. When a mismatch is found, line numbers for both start and end of the mismatch is given. The error messages comes in pairs, one for the end match and one for the beginning, marked with `<-´ and `->´ respectively. Bad spacing including missing a `\ ´ after an abbreviation, missing an `\@´ before a punctuation mark in a paragraph that is ended by an capital letter, double spaces like ` ´, bad usage of ellipsis (like using ... instead of \ldots, or using \ldots where \cdots should be used), missing before a \cite or \ref commands, space before footnotes, italic correc‐ tions before comma, point, or italic text, italic correction after normal text, missing italic correction when switching from italic to normal text, and double italic correction. Badly placed punctuation marks around end of math mode delimiters. This is, punctuation placed right after display math end or punctuation placed right before text math end. Sequences of whitespace followed by punctua‐ tion marks are also caught. Bad use of quotation characters, i.e. constructs like "´word" or "word`" are warned about, tabs in verbatim environments are caught, certain TeX primitives are frowned upon, attempts to give font specifiers arguments such as \em{text} are noted, and use of @ in LaTeX macros are reported. LaCheck will read files that are input using \input or \include. Files with suffix `.sty´ are omitted, as they probably will cause LaCheck to crash. LaCheck may be invoked from within Emacs(1) using compile: To run: M-x compile RET lacheck RET , and then C-x ` to parse the mes‐ sages OUTPUT The output is UNIX-error like, and may be parsed using Emacs(1) compile mode. Here is a sample: lacheck compiler "/usr/mef/compiler.tex", line 34: missing `\\\\ ´ after "etc." "/usr/mef/compiler.tex", line 179: double space at " ~" "/usr/mef/compiler.tex", line 186: <- unmatched "}" "/usr/mef/compiler.tex", line 181: -> unmatched "$$" A control space `\ ´ should be inserted at line 34, to prevent an end-of- sentence space. Also, at line 179, the first space of the sequence " ~" should probably be deleted. The last two lines is an example, where the user mistyped, and probably inserted an extra "}" somewhere. DIAGNOSTICS Some special cases should be explained. In cases where a sentence ends with something that LaCheck thinks is an abbreviation an missing `\ ´ error may also occur, if the following sentence begins with a lowercase letter. A mismatch error may cause more to follow, due to the chosen algorithm. In such cases just correct the first error and run LaCheck again Braces, environments and math mode must be balanced within a file. LaCheck may be confused by unmatched stuff placed inside verbatim-like environments called something else than exactly `verbatim´. FILES /usr/bin/lacheck SEE ALSO tex(1), emacs(1), latex(1) BUGS LaCheck gets confused by advanced macros, is fooled by simple macros, can't figure out if you use a non-standard way to switch italic on or off, does not like TeX at all, does not provide any options to turn off specific warnings, and is at best a crude approximation. Ideas for improvements and bug reports are very welcome. Such should be directed to the maintainers, their email address is <auc-tex_mgr@sun‐ site.auc.dk>. AUTHOR Kresten Krab Thorup with modifications by Per Abrahamsen. Release 1.26 12/25/11 LaCheck(1)


You can use /sandbox/ for writing and testing your own code. Nothing in /sandbox/ will get checked into the repo, except files that end in .example (so don't edit or add those files). To get started run `npm start` and open the live.html
npm start
open http://localhost:9999/sandbox/live.html


This package contains a very extensible XML template system used to define
declarativly GWT interfaces. This framework extensively uses the bridge pattern
to uniform the work with various GWT widgets. The main widget traverses XML
nodes and generates a template where dynamic GWT widgets are inserted. All these
GWT widgets are managed by wrapper objects extending the FieldInfo class.
The FieldInfo provides the common interface used to set/get/update the data
managed by various underlying GWT widgets. Individual fields can be accessed by
their names defined in the template. Multiple fields can have the same name. All
widgets with the same names are groupped in a list of fields.


Module: ActiveRecord::Sanitization::ClassMethods
| Relationships & Source Files | |
| Defined in: | activerecord/lib/active_record/sanitization.rb |
Instance Method Summary
-
#sanitize_sql(condition)
Alias for #sanitize_sql_for_conditions.
-
#sanitize_sql_array(ary)
Accepts an array of conditions.
-
#sanitize_sql_for_assignment(assignments, default_table_name = table_name)
Accepts an array or hash of SQL conditions and sanitizes them into a valid SQL fragment for a SET clause.
-
#sanitize_sql_for_conditions(condition)
(also: #sanitize_sql)
Accepts an array of SQL conditions and sanitizes them into a valid SQL fragment for a WHERE clause.
-
#sanitize_sql_for_order(condition)
Accepts an array, or string of SQL conditions and sanitizes them into a valid SQL fragment for an ORDER clause.
-
#sanitize_sql_hash_for_assignment(attrs, table)
Sanitizes a hash of attribute/value pairs into SQL conditions for a SET clause.
-
#sanitize_sql_like(string, escape_character = "\\")
Sanitizes a
string
so that it is safe to use within an SQL LIKE statement. - #quote_bound_value(value, c = connection) private
- #raise_if_bind_arity_mismatch(statement, expected, provided) private
- #replace_bind_variable(value, c = connection) private
- #replace_bind_variables(statement, values) private
- #replace_named_bind_variables(statement, bind_vars) private
- #disallow_raw_sql!(args, permit: connection.column_name_matcher) Internal use only
Instance Method Details
#disallow_raw_sql!(args, permit: connection.column_name_matcher)
# File 'activerecord/lib/active_record/sanitization.rb', line 176
def disallow_raw_sql!(args, permit: connection.column_name_matcher) # :nodoc: unexpected = nil args.each do |arg| next if arg.is_a?(Symbol) || Arel.arel_node?(arg) || permit.match?(arg.to_s.strip) (unexpected ||= []) << arg end if unexpected raise(ActiveRecord::UnknownAttributeReference, "Dangerous query method (method whose arguments are used as raw " \ "SQL) called with non-attribute argument(s): " \ "#{unexpected.map(&:inspect).join(", ")}." \ "This method should not be called with user-provided values, such as request " \ "parameters or model attributes. Known-safe values can be passed " \ "by wrapping them in Arel.sql()." ) end end
#quote_bound_value(value, c = connection) (private)
[ GitHub ]# File 'activerecord/lib/active_record/sanitization.rb', line 227
def quote_bound_value(value, c = connection) if value.respond_to?(:map) && !value.acts_like?(:string) values = value.map { |v| v.respond_to?(:id_for_database) ? v.id_for_database : v } if values.empty? c.quote(c.cast_bound_value(nil)) else values.map! { |v| c.quote(c.cast_bound_value(v)) }.join(",") end else value = value.id_for_database if value.respond_to?(:id_for_database) c.quote(c.cast_bound_value(value)) end end
#raise_if_bind_arity_mismatch(statement, expected, provided) (private)
[ GitHub ]# File 'activerecord/lib/active_record/sanitization.rb', line 241
def raise_if_bind_arity_mismatch(statement, expected, provided) unless expected == provided raise PreparedStatementInvalid, "wrong number of bind variables (#{provided} for #{expected}) in: #{statement}" end end
#replace_bind_variable(value, c = connection) (private)
[ GitHub ]# File 'activerecord/lib/active_record/sanitization.rb', line 205
def replace_bind_variable(value, c = connection) if ActiveRecord::Relation === value value.to_sql else quote_bound_value(value, c) end end
#replace_bind_variables(statement, values) (private)
[ GitHub ]# File 'activerecord/lib/active_record/sanitization.rb', line 196
def replace_bind_variables(statement, values) raise_if_bind_arity_mismatch(statement, statement.count("?"), values.size) bound = values.dup c = connection statement.gsub(/\?/) do replace_bind_variable(bound.shift, c) end end
#replace_named_bind_variables(statement, bind_vars) (private)
[ GitHub ]# File 'activerecord/lib/active_record/sanitization.rb', line 213
def replace_named_bind_variables(statement, bind_vars) statement.gsub(/([:\\]?):([a-zA-Z]\w*)/) do |match| if $1 == ":" # skip postgresql casts match # return the whole match elsif $1 == "\\" # escaped literal colon match[1..-1] # return match with escaping backlash char removed elsif bind_vars.include?(match = $2.to_sym) replace_bind_variable(bind_vars[match]) else raise PreparedStatementInvalid, "missing value for :#{match} in #{statement}" end end end
#sanitize_sql(condition)
Alias for #sanitize_sql_for_conditions.
# File 'activerecord/lib/active_record/sanitization.rb', line 41
alias :sanitize_sql :sanitize_sql_for_conditions
#sanitize_sql_array(ary)
Accepts an array of conditions. The array has each value sanitized and interpolated into the SQL statement. If using named bind variables in SQL statements where a colon is required verbatim use a backslash to escape.
sanitize_sql_array(["name=? and group_id=?", "foo'bar", 4])
# => "name='foo''bar' and group_id=4"
sanitize_sql_array(["name=:name and group_id=:group_id", name: "foo'bar", group_id: 4])
# => "name='foo''bar' and group_id=4"
sanitize_sql_array(["TO_TIMESTAMP(:date, 'YYYY/MM/DD HH12\\:MI\\:SS')", date: "foo"])
# => "TO_TIMESTAMP('foo', 'YYYY/MM/DD HH12:MI:SS')"
sanitize_sql_array(["name='%s' and group_id='%s'", "foo'bar", 4])
# => "name='foo''bar' and group_id='4'"
Note that this sanitization method is not schema-aware, hence won’t do any type casting and will directly use the database adapter’s quote
method. For MySQL specifically this means that numeric parameters will be quoted as strings to prevent query manipulation attacks.
sanitize_sql_array(["role = ?", 0])
# => "role = '0'"
# File 'activerecord/lib/active_record/sanitization.rb', line 163
def sanitize_sql_array(ary) statement, *values = ary if values.first.is_a?(Hash) && /:\w+/.match?(statement) replace_named_bind_variables(statement, values.first) elsif statement.include?("?") replace_bind_variables(statement, values) elsif statement.blank? statement else statement % values.collect { |value| connection.quote_string(value.to_s) } end end
#sanitize_sql_for_assignment(assignments, default_table_name = table_name)
Accepts an array or hash of SQL conditions and sanitizes them into a valid SQL fragment for a SET clause.
sanitize_sql_for_assignment(["name=? and group_id=?", nil, 4])
# => "name=NULL and group_id=4"
sanitize_sql_for_assignment(["name=:name and group_id=:group_id", name: nil, group_id: 4])
# => "name=NULL and group_id=4"
Post.sanitize_sql_for_assignment({ name: nil, group_id: 4 })
# => "`posts`.`name` = NULL, `posts`.`group_id` = 4"
This method will NOT sanitize a SQL string since it won’t contain any conditions in it and will return the string as is.
sanitize_sql_for_assignment("name=NULL and group_id='4'")
# => "name=NULL and group_id='4'"
Note that this sanitization method is not schema-aware, hence won’t do any type casting and will directly use the database adapter’s quote
method. For MySQL specifically this means that numeric parameters will be quoted as strings to prevent query manipulation attacks.
sanitize_sql_for_assignment(["role = ?", 0])
# => "role = '0'"
# File 'activerecord/lib/active_record/sanitization.rb', line 68
def sanitize_sql_for_assignment(assignments, default_table_name = table_name) case assignments when Array; sanitize_sql_array(assignments) when Hash; sanitize_sql_hash_for_assignment(assignments, default_table_name) else assignments end end
#sanitize_sql_for_conditions(condition) Also known as: #sanitize_sql
Accepts an array of SQL conditions and sanitizes them into a valid SQL fragment for a WHERE clause.
sanitize_sql_for_conditions(["name=? and group_id=?", "foo'bar", 4])
# => "name='foo''bar' and group_id=4"
sanitize_sql_for_conditions(["name=:name and group_id=:group_id", name: "foo'bar", group_id: 4])
# => "name='foo''bar' and group_id='4'"
sanitize_sql_for_conditions(["name='%s' and group_id='%s'", "foo'bar", 4])
# => "name='foo''bar' and group_id='4'"
This method will NOT sanitize a SQL string since it won’t contain any conditions in it and will return the string as is.
sanitize_sql_for_conditions("name='foo''bar' and group_id='4'")
# => "name='foo''bar' and group_id='4'"
Note that this sanitization method is not schema-aware, hence won’t do any type casting and will directly use the database adapter’s quote
method. For MySQL specifically this means that numeric parameters will be quoted as strings to prevent query manipulation attacks.
sanitize_sql_for_conditions(["role = ?", 0])
# => "role = '0'"
# File 'activerecord/lib/active_record/sanitization.rb', line 33
def sanitize_sql_for_conditions(condition) return nil if condition.blank? case condition when Array; sanitize_sql_array(condition) else condition end end
#sanitize_sql_for_order(condition)
# File 'activerecord/lib/active_record/sanitization.rb', line 84
def sanitize_sql_for_order(condition) if condition.is_a?(Array) && condition.first.to_s.include?("?") disallow_raw_sql!( [condition.first], permit: connection.column_name_with_order_matcher ) # Ensure we aren't dealing with a subclass of String that might # override methods we use (e.g. Arel::Nodes::SqlLiteral). if condition.first.kind_of?(String) && !condition.first.instance_of?(String) condition = [String.new(condition.first), *condition[1..-1]] end Arel.sql(sanitize_sql_array(condition)) else condition end end
#sanitize_sql_hash_for_assignment(attrs, table)
Sanitizes a hash of attribute/value pairs into SQL conditions for a SET clause.
sanitize_sql_hash_for_assignment({ status: nil, group_id: 1 }, "posts")
# => "`posts`.`status` = NULL, `posts`.`group_id` = 1"
# File 'activerecord/lib/active_record/sanitization.rb', line 107
def sanitize_sql_hash_for_assignment(attrs, table) c = connection attrs.map do |attr, value| type = type_for_attribute(attr) value = type.serialize(type.cast(value)) "#{c.quote_table_name_for_assignment(table, attr)} = #{c.quote(value)}" end.join(", ") end
#sanitize_sql_like(string, escape_character = "\\")
Sanitizes a string
so that it is safe to use within an SQL LIKE statement. This method uses escape_character
to escape all occurrences of itself, “_” and “%”.
sanitize_sql_like("100% true!")
# => "100\\% true!"
sanitize_sql_like("snake_cased_string")
# => "snake\\_cased\\_string"
sanitize_sql_like("100% true!", "!")
# => "100!% true!!"
sanitize_sql_like("snake_cased_string", "!")
# => "snake!_cased!_string"
# File 'activerecord/lib/active_record/sanitization.rb', line 131
def sanitize_sql_like(string, escape_character = "\") if string.include?(escape_character) && escape_character != "%" && escape_character != "_" string = string.gsub(escape_character, '\0\0') end string.gsub(/(?=[%_])/, escape_character) end


AP Top U.S. News at 1:18 a.m. EST
by EndPlayWalmart hires off-duty officers ahead of El Paso reopening
California crisis of fires, blackouts decades in the making
Georgia executes man for store clerk's killing in 1994
Officer: I quit Proud Boys over fears of ‘far-left' attacks
Virginia doctor accused of performing unnecessary surgeries
Asylum-seekers get attorney access before return to Mexico
YouTuber accused of abusing kids for poor performance dies
Ex-insurance exec gets 6 months in college admissions scam
California regulators order inquiry into power outages
Greta Thunberg hitches low-carbon ride across Atlantic


This is a list of the members of the Studio Art Faculty
Courses in art history cover the entire chronological range of the Western tradition, examining artworks from stylistic, historical, and iconographical points of view.
| Name | Judith Pointer Jia | Isabella La Rocca | Sheldon Tapley |
|---|---|---|---|
| Picture |


Life is Beautiful (1998) 4 stars out of 4
Roberto Benigni is a clown in the tradition of Chaplin and Keaton.
This Italian film star, best known in the United States for the poorly received Son of the Pink Panther, has done the near impossible by creating a comic fable about the Holocaust.
But Benigni's Life Is Beautiful (La Vita E Bella) is not so much a story of the Holocaust as it uses that monstrous outrage against humanity as a backdrop to tell a story of familial love, devotion and sacrifice.
The movie starts out as a typical slapstick farce with Benigni's Guido arriving in the small Tuscan town of Arezzo in 1938 to fulfill his dream of owning a bookstore.
Like many of the slapstick clowns who preceded him, most notably the almost-forgotten Harry Langdon, Benigni's Guido has a childlike innocence. He ignores the growing anti-Semitism of the Fascist government.
Instead, Guido ardently falls in love and persues Dora, a local school teacher who already is engaged to a local Fascist official.
In Benigni's tightly wound script this is the same Fascist official with whom Guido had an earlier unfortunate - yet slapstick - encounter.
Guido wins Dora. They marry.
Fast forward about five years. Guido, Dora, and their 5-year-old son, Giosue´ (Giorgio Cantarini) are a happy family. Guido has finally fulfilled his dream of opening a bookstore.
But racial and anti-Semitic tensions are on the rise in Italy, and Guido has determined to do his best to shield his son from these harsh realities.
The task becomes even the more difficult when the family is deported to a concentration camp. Here, Guido must use all his skill and imagination not only to shield his son, but to keep him from being exterminated.
It is at this juncture in Life Is Beautiful may tend to offend those whom the Holocaust has touched. For the scenes in the concentration camp lack the horror, the pain, the unimaginable suffering of a Schindler's List.
True, many Italian Jews were not deported until the war was nearly over, and most were not sent to the death camps, but to work camps where they were used as slave labor.
Unlike Steven Spielberg, Benigni is not out to tell the story of the Holocaust. His story is about family and the lengths a parent will go to protect a child.
For Guido, to save his son, transforms the entire experience into an elaborate game. Giosue´ must follow the rules without question to amass 1,000 points. The winner takes home a tank.
Therefore, Guido tells him, he must remain hidden in the barracks. He cannot make a sound nor allow the guards to see him.
Guido explains this during a hilarious sequence when a German guard barks the camp instructions to the newly arrived inmates. Guido, lying that he understands German and can translate for his fellow prisoners, instead lays down the rules for his son to allow him a chance to survive.
Throughout their imprisonment, Guido's quick thinking continually keeps his son from harm's way.
Ultimately, the allies rescue the camp. In a poignant scene, Giosue´ comes out of hiding just as an American tank rolls into the compound. The boy goes wide-eyed with wonderment and delight, thinking he has won the game.
The price for his victory is most high.
Benigni has succeeded in using the blackest moment in human history to prove that even in hell, a ray of hope and salvation can penetrate the darkness.
Life Is Beautiful is a fantasy, a fable. It is not to be taken as a record of the Holocaust. Those who object to it are missing its point.
And that is simply where there is hope, where there is life and where there is love, the spark of humanity will never be extinguished.
Bloom is the film critic at the Journal and Courier in Lafayette, Ind. He can be reached by e-mail at<EMAIL_ADDRESS>or at<EMAIL_ADDRESS>cb
Carol Bloom of Bloom Ink Publishing Professionals 3312 Indian Rock Lane West Lafayette, IN 47906-1203<PHONE_NUMBER> fax<PHONE_NUMBER><EMAIL_ADDRESS>Committed to Lifelong Learning through Effective Communication
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


RiskDetection extends Entity
RiskDetection class
Tags
Table of Contents
- $_propDict : array<string|int, mixed>
- The array of properties available to the model
- __construct() : mixed
- Construct a new Entity
- getActivity() : ActivityType|null
- Gets the activity Indicates the activity type the detected risk is linked to. . Possible values are: signin, user, unknownFutureValue.
- getActivityDateTime() : DateTime|null
- Gets the activityDateTime Date and time that the risky activity occurred. The DateTimeOffset type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is look like this: 2014-01-01T00:00:00Z
- getAdditionalInfo() : string|null
- Gets the additionalInfo Additional information associated with the risk detection in JSON format.
- getCorrelationId() : string|null
- Gets the correlationId Correlation ID of the sign-in associated with the risk detection. This property is null if the risk detection is not associated with a sign-in.
- getDetectedDateTime() : DateTime|null
- Gets the detectedDateTime Date and time that the risk was detected. The DateTimeOffset type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is look like this: 2014-01-01T00:00:00Z
- getDetectionTimingType() : RiskDetectionTimingType|null
- Gets the detectionTimingType Timing of the detected risk (real-time/offline). Possible values are: notDefined, realtime, nearRealtime, offline, unknownFutureValue.
- getId() : string|null
- Gets the id Read-only.
- getIpAddress() : string|null
- Gets the ipAddress Provides the IP address of the client from where the risk occurred.
- getLastUpdatedDateTime() : DateTime|null
- Gets the lastUpdatedDateTime Date and time that the risk detection was last updated. The DateTimeOffset type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is look like this: 2014-01-01T00:00:00Z
- getLocation() : SignInLocation|null
- Gets the location Location of the sign-in.
- getODataType() : string|null
- Gets the ODataType
- getProperties() : array<string|int, mixed>
- Gets the property dictionary of the Entity
- getRequestId() : string|null
- Gets the requestId Request ID of the sign-in associated with the risk detection. This property is null if the risk detection is not associated with a sign-in.
- getRiskDetail() : RiskDetail|null
- Gets the riskDetail Details of the detected risk. Possible values are: none, adminGeneratedTemporaryPassword, userPerformedSecuredPasswordChange, userPerformedSecuredPasswordReset, adminConfirmedSigninSafe, aiConfirmedSigninSafe, userPassedMFADrivenByRiskBasedPolicy, adminDismissedAllRiskForUser, adminConfirmedSigninCompromised, hidden, adminConfirmedUserCompromised, unknownFutureValue.
- getRiskEventType() : string|null
- Gets the riskEventType The type of risk event detected. The possible values are unlikelyTravel, anonymizedIPAddress, maliciousIPAddress, unfamiliarFeatures, malwareInfectedIPAddress, suspiciousIPAddress, leakedCredentials, investigationsThreatIntelligence, generic,adminConfirmedUserCompromised, mcasImpossibleTravel, mcasSuspiciousInboxManipulationRules, investigationsThreatIntelligenceSigninLinked, maliciousIPAddressValidCredentialsBlockedIP, and unknownFutureValue. If the risk detection is a premium detection, will show generic
- getRiskLevel() : RiskLevel|null
- Gets the riskLevel Level of the detected risk. Possible values are: low, medium, high, hidden, none, unknownFutureValue.
- getRiskState() : RiskState|null
- Gets the riskState The state of a detected risky user or sign-in. Possible values are: none, confirmedSafe, remediated, dismissed, atRisk, confirmedCompromised, unknownFutureValue.
- getRiskType() : RiskEventType|null
- Gets the riskType List of risk event types.Note: This property is deprecated. Use riskEventType instead.
- getSource() : string|null
- Gets the source Source of the risk detection. For example, activeDirectory.
- getTokenIssuerType() : TokenIssuerType|null
- Gets the tokenIssuerType Indicates the type of token issuer for the detected sign-in risk. Possible values are: AzureAD, ADFederationServices, UnknownFutureValue.
- getUserDisplayName() : string|null
- Gets the userDisplayName The user principal name (UPN) of the user.
- getUserId() : string|null
- Gets the userId Unique ID of the user.
- getUserPrincipalName() : string|null
- Gets the userPrincipalName The user principal name (UPN) of the user.
- jsonSerialize() : array<string|int, mixed>
- Serializes the object by property array Manually serialize DateTime into RFC3339 format
- setActivity() : RiskDetection
- Sets the activity Indicates the activity type the detected risk is linked to. . Possible values are: signin, user, unknownFutureValue.
- setActivityDateTime() : RiskDetection
- Sets the activityDateTime Date and time that the risky activity occurred. The DateTimeOffset type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is look like this: 2014-01-01T00:00:00Z
- setAdditionalInfo() : RiskDetection
- Sets the additionalInfo Additional information associated with the risk detection in JSON format.
- setCorrelationId() : RiskDetection
- Sets the correlationId Correlation ID of the sign-in associated with the risk detection. This property is null if the risk detection is not associated with a sign-in.
- setDetectedDateTime() : RiskDetection
- Sets the detectedDateTime Date and time that the risk was detected. The DateTimeOffset type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is look like this: 2014-01-01T00:00:00Z
- setDetectionTimingType() : RiskDetection
- Sets the detectionTimingType Timing of the detected risk (real-time/offline). Possible values are: notDefined, realtime, nearRealtime, offline, unknownFutureValue.
- setId() : Entity
- Sets the id Read-only.
- setIpAddress() : RiskDetection
- Sets the ipAddress Provides the IP address of the client from where the risk occurred.
- setLastUpdatedDateTime() : RiskDetection
- Sets the lastUpdatedDateTime Date and time that the risk detection was last updated. The DateTimeOffset type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is look like this: 2014-01-01T00:00:00Z
- setLocation() : RiskDetection
- Sets the location Location of the sign-in.
- setODataType() : Entity
- Sets the ODataType
- setRequestId() : RiskDetection
- Sets the requestId Request ID of the sign-in associated with the risk detection. This property is null if the risk detection is not associated with a sign-in.
- setRiskDetail() : RiskDetection
- Sets the riskDetail Details of the detected risk. Possible values are: none, adminGeneratedTemporaryPassword, userPerformedSecuredPasswordChange, userPerformedSecuredPasswordReset, adminConfirmedSigninSafe, aiConfirmedSigninSafe, userPassedMFADrivenByRiskBasedPolicy, adminDismissedAllRiskForUser, adminConfirmedSigninCompromised, hidden, adminConfirmedUserCompromised, unknownFutureValue.
- setRiskEventType() : RiskDetection
- Sets the riskEventType The type of risk event detected. The possible values are unlikelyTravel, anonymizedIPAddress, maliciousIPAddress, unfamiliarFeatures, malwareInfectedIPAddress, suspiciousIPAddress, leakedCredentials, investigationsThreatIntelligence, generic,adminConfirmedUserCompromised, mcasImpossibleTravel, mcasSuspiciousInboxManipulationRules, investigationsThreatIntelligenceSigninLinked, maliciousIPAddressValidCredentialsBlockedIP, and unknownFutureValue. If the risk detection is a premium detection, will show generic
- setRiskLevel() : RiskDetection
- Sets the riskLevel Level of the detected risk. Possible values are: low, medium, high, hidden, none, unknownFutureValue.
- setRiskState() : RiskDetection
- Sets the riskState The state of a detected risky user or sign-in. Possible values are: none, confirmedSafe, remediated, dismissed, atRisk, confirmedCompromised, unknownFutureValue.
- setRiskType() : RiskDetection
- Sets the riskType List of risk event types.Note: This property is deprecated. Use riskEventType instead.
- setSource() : RiskDetection
- Sets the source Source of the risk detection. For example, activeDirectory.
- setTokenIssuerType() : RiskDetection
- Sets the tokenIssuerType Indicates the type of token issuer for the detected sign-in risk. Possible values are: AzureAD, ADFederationServices, UnknownFutureValue.
- setUserDisplayName() : RiskDetection
- Sets the userDisplayName The user principal name (UPN) of the user.
- setUserId() : RiskDetection
- Sets the userId Unique ID of the user.
- setUserPrincipalName() : RiskDetection
- Sets the userPrincipalName The user principal name (UPN) of the user.
Properties
$_propDict
The array of properties available to the model
protected
array<string|int, mixed>
$_propDict
Methods
__construct()
Construct a new Entity
public
__construct([array<string|int, mixed> $propDict = array() ]) : mixed
Parameters
- $propDict : array<string|int, mixed> = array()
-
A list of properties to set
Return values
mixed —getActivity()
Gets the activity Indicates the activity type the detected risk is linked to. . Possible values are: signin, user, unknownFutureValue.
public
getActivity() : ActivityType|null
Return values
ActivityType|null —The activity
getActivityDateTime()
Gets the activityDateTime Date and time that the risky activity occurred. The DateTimeOffset type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is look like this: 2014-01-01T00:00:00Z
public
getActivityDateTime() : DateTime|null
Return values
DateTime|null —The activityDateTime
getAdditionalInfo()
Gets the additionalInfo Additional information associated with the risk detection in JSON format.
public
getAdditionalInfo() : string|null
Return values
string|null —The additionalInfo
getCorrelationId()
Gets the correlationId Correlation ID of the sign-in associated with the risk detection. This property is null if the risk detection is not associated with a sign-in.
public
getCorrelationId() : string|null
Return values
string|null —The correlationId
getDetectedDateTime()
Gets the detectedDateTime Date and time that the risk was detected. The DateTimeOffset type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is look like this: 2014-01-01T00:00:00Z
public
getDetectedDateTime() : DateTime|null
Return values
DateTime|null —The detectedDateTime
getDetectionTimingType()
Gets the detectionTimingType Timing of the detected risk (real-time/offline). Possible values are: notDefined, realtime, nearRealtime, offline, unknownFutureValue.
public
getDetectionTimingType() : RiskDetectionTimingType|null
Return values
RiskDetectionTimingType|null —The detectionTimingType
getId()
Gets the id Read-only.
public
getId() : string|null
Return values
string|null —The id
getIpAddress()
Gets the ipAddress Provides the IP address of the client from where the risk occurred.
public
getIpAddress() : string|null
Return values
string|null —The ipAddress
getLastUpdatedDateTime()
Gets the lastUpdatedDateTime Date and time that the risk detection was last updated. The DateTimeOffset type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is look like this: 2014-01-01T00:00:00Z
public
getLastUpdatedDateTime() : DateTime|null
Return values
DateTime|null —The lastUpdatedDateTime
getLocation()
Gets the location Location of the sign-in.
public
getLocation() : SignInLocation|null
Return values
SignInLocation|null —The location
getODataType()
Gets the ODataType
public
getODataType() : string|null
Return values
string|null —The ODataType
getProperties()
Gets the property dictionary of the Entity
public
getProperties() : array<string|int, mixed>
Return values
array<string|int, mixed> —The list of properties
getRequestId()
Gets the requestId Request ID of the sign-in associated with the risk detection. This property is null if the risk detection is not associated with a sign-in.
public
getRequestId() : string|null
Return values
string|null —The requestId
getRiskDetail()
Gets the riskDetail Details of the detected risk. Possible values are: none, adminGeneratedTemporaryPassword, userPerformedSecuredPasswordChange, userPerformedSecuredPasswordReset, adminConfirmedSigninSafe, aiConfirmedSigninSafe, userPassedMFADrivenByRiskBasedPolicy, adminDismissedAllRiskForUser, adminConfirmedSigninCompromised, hidden, adminConfirmedUserCompromised, unknownFutureValue.
public
getRiskDetail() : RiskDetail|null
Return values
RiskDetail|null —The riskDetail
getRiskEventType()
Gets the riskEventType The type of risk event detected. The possible values are unlikelyTravel, anonymizedIPAddress, maliciousIPAddress, unfamiliarFeatures, malwareInfectedIPAddress, suspiciousIPAddress, leakedCredentials, investigationsThreatIntelligence, generic,adminConfirmedUserCompromised, mcasImpossibleTravel, mcasSuspiciousInboxManipulationRules, investigationsThreatIntelligenceSigninLinked, maliciousIPAddressValidCredentialsBlockedIP, and unknownFutureValue. If the risk detection is a premium detection, will show generic
public
getRiskEventType() : string|null
Return values
string|null —The riskEventType
getRiskLevel()
Gets the riskLevel Level of the detected risk. Possible values are: low, medium, high, hidden, none, unknownFutureValue.
public
getRiskLevel() : RiskLevel|null
Return values
RiskLevel|null —The riskLevel
getRiskState()
Gets the riskState The state of a detected risky user or sign-in. Possible values are: none, confirmedSafe, remediated, dismissed, atRisk, confirmedCompromised, unknownFutureValue.
public
getRiskState() : RiskState|null
Return values
RiskState|null —The riskState
getRiskType()
Gets the riskType List of risk event types.Note: This property is deprecated. Use riskEventType instead.
public
getRiskType() : RiskEventType|null
Return values
RiskEventType|null —The riskType
getSource()
Gets the source Source of the risk detection. For example, activeDirectory.
public
getSource() : string|null
Return values
string|null —The source
getTokenIssuerType()
Gets the tokenIssuerType Indicates the type of token issuer for the detected sign-in risk. Possible values are: AzureAD, ADFederationServices, UnknownFutureValue.
public
getTokenIssuerType() : TokenIssuerType|null
Return values
TokenIssuerType|null —The tokenIssuerType
getUserDisplayName()
Gets the userDisplayName The user principal name (UPN) of the user.
public
getUserDisplayName() : string|null
Return values
string|null —The userDisplayName
getUserId()
Gets the userId Unique ID of the user.
public
getUserId() : string|null
Return values
string|null —The userId
getUserPrincipalName()
Gets the userPrincipalName The user principal name (UPN) of the user.
public
getUserPrincipalName() : string|null
Return values
string|null —The userPrincipalName
jsonSerialize()
Serializes the object by property array Manually serialize DateTime into RFC3339 format
public
jsonSerialize() : array<string|int, mixed>
Return values
array<string|int, mixed> —The list of properties
setActivity()
Sets the activity Indicates the activity type the detected risk is linked to. . Possible values are: signin, user, unknownFutureValue.
public
setActivity(ActivityType $val) : RiskDetection
Parameters
- $val : ActivityType
-
The activity
Return values
RiskDetection —setActivityDateTime()
Sets the activityDateTime Date and time that the risky activity occurred. The DateTimeOffset type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is look like this: 2014-01-01T00:00:00Z
public
setActivityDateTime(DateTime $val) : RiskDetection
Parameters
- $val : DateTime
-
The activityDateTime
Return values
RiskDetection —setAdditionalInfo()
Sets the additionalInfo Additional information associated with the risk detection in JSON format.
public
setAdditionalInfo(string $val) : RiskDetection
Parameters
- $val : string
-
The additionalInfo
Return values
RiskDetection —setCorrelationId()
Sets the correlationId Correlation ID of the sign-in associated with the risk detection. This property is null if the risk detection is not associated with a sign-in.
public
setCorrelationId(string $val) : RiskDetection
Parameters
- $val : string
-
The correlationId
Return values
RiskDetection —setDetectedDateTime()
Sets the detectedDateTime Date and time that the risk was detected. The DateTimeOffset type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is look like this: 2014-01-01T00:00:00Z
public
setDetectedDateTime(DateTime $val) : RiskDetection
Parameters
- $val : DateTime
-
The detectedDateTime
Return values
RiskDetection —setDetectionTimingType()
Sets the detectionTimingType Timing of the detected risk (real-time/offline). Possible values are: notDefined, realtime, nearRealtime, offline, unknownFutureValue.
public
setDetectionTimingType(RiskDetectionTimingType $val) : RiskDetection
Parameters
- $val : RiskDetectionTimingType
-
The detectionTimingType
Return values
RiskDetection —setId()
Sets the id Read-only.
public
setId(string $val) : Entity
Parameters
- $val : string
-
The id
Return values
Entity —setIpAddress()
Sets the ipAddress Provides the IP address of the client from where the risk occurred.
public
setIpAddress(string $val) : RiskDetection
Parameters
- $val : string
-
The ipAddress
Return values
RiskDetection —setLastUpdatedDateTime()
Sets the lastUpdatedDateTime Date and time that the risk detection was last updated. The DateTimeOffset type represents date and time information using ISO 8601 format and is always in UTC time. For example, midnight UTC on Jan 1, 2014 is look like this: 2014-01-01T00:00:00Z
public
setLastUpdatedDateTime(DateTime $val) : RiskDetection
Parameters
- $val : DateTime
-
The lastUpdatedDateTime
Return values
RiskDetection —setLocation()
Sets the location Location of the sign-in.
public
setLocation(SignInLocation $val) : RiskDetection
Parameters
- $val : SignInLocation
-
The location
Return values
RiskDetection —setODataType()
Sets the ODataType
public
setODataType(string $val) : Entity
Parameters
- $val : string
-
The ODataType
Return values
Entity —setRequestId()
Sets the requestId Request ID of the sign-in associated with the risk detection. This property is null if the risk detection is not associated with a sign-in.
public
setRequestId(string $val) : RiskDetection
Parameters
- $val : string
-
The requestId
Return values
RiskDetection —setRiskDetail()
Sets the riskDetail Details of the detected risk. Possible values are: none, adminGeneratedTemporaryPassword, userPerformedSecuredPasswordChange, userPerformedSecuredPasswordReset, adminConfirmedSigninSafe, aiConfirmedSigninSafe, userPassedMFADrivenByRiskBasedPolicy, adminDismissedAllRiskForUser, adminConfirmedSigninCompromised, hidden, adminConfirmedUserCompromised, unknownFutureValue.
public
setRiskDetail(RiskDetail $val) : RiskDetection
Parameters
- $val : RiskDetail
-
The riskDetail
Return values
RiskDetection —setRiskEventType()
Sets the riskEventType The type of risk event detected. The possible values are unlikelyTravel, anonymizedIPAddress, maliciousIPAddress, unfamiliarFeatures, malwareInfectedIPAddress, suspiciousIPAddress, leakedCredentials, investigationsThreatIntelligence, generic,adminConfirmedUserCompromised, mcasImpossibleTravel, mcasSuspiciousInboxManipulationRules, investigationsThreatIntelligenceSigninLinked, maliciousIPAddressValidCredentialsBlockedIP, and unknownFutureValue. If the risk detection is a premium detection, will show generic
public
setRiskEventType(string $val) : RiskDetection
Parameters
- $val : string
-
The riskEventType
Return values
RiskDetection —setRiskLevel()
Sets the riskLevel Level of the detected risk. Possible values are: low, medium, high, hidden, none, unknownFutureValue.
public
setRiskLevel(RiskLevel $val) : RiskDetection
Parameters
- $val : RiskLevel
-
The riskLevel
Return values
RiskDetection —setRiskState()
Sets the riskState The state of a detected risky user or sign-in. Possible values are: none, confirmedSafe, remediated, dismissed, atRisk, confirmedCompromised, unknownFutureValue.
public
setRiskState(RiskState $val) : RiskDetection
Parameters
- $val : RiskState
-
The riskState
Return values
RiskDetection —setRiskType()
Sets the riskType List of risk event types.Note: This property is deprecated. Use riskEventType instead.
public
setRiskType(RiskEventType $val) : RiskDetection
Parameters
- $val : RiskEventType
-
The riskType
Return values
RiskDetection —setSource()
Sets the source Source of the risk detection. For example, activeDirectory.
public
setSource(string $val) : RiskDetection
Parameters
- $val : string
-
The source
Return values
RiskDetection —setTokenIssuerType()
Sets the tokenIssuerType Indicates the type of token issuer for the detected sign-in risk. Possible values are: AzureAD, ADFederationServices, UnknownFutureValue.
public
setTokenIssuerType(TokenIssuerType $val) : RiskDetection
Parameters
- $val : TokenIssuerType
-
The tokenIssuerType
Return values
RiskDetection —setUserDisplayName()
Sets the userDisplayName The user principal name (UPN) of the user.
public
setUserDisplayName(string $val) : RiskDetection
Parameters
- $val : string
-
The userDisplayName
Return values
RiskDetection —setUserId()
Sets the userId Unique ID of the user.
public
setUserId(string $val) : RiskDetection
Parameters
- $val : string
-
The userId
Return values
RiskDetection —setUserPrincipalName()
Sets the userPrincipalName The user principal name (UPN) of the user.
public
setUserPrincipalName(string $val) : RiskDetection
Parameters
- $val : string
-
The userPrincipalName


Add
To add watch variables, follow these steps:
- On the right edge of the IDE, click Debug.
- Click the plus icon.
- Enter the name of the variable to watch and then click OK.
Update
To update the name of a watch variable, follow these steps:
- On the debug panel, click the variable name you want to update.
- Enter the new variable name and then click OK.
Remove
To remove a watch variable, on the debug panel, click X next to the watch variable you want to remove.


Toronto Cat Rescue is a non-profit organization that finds homes for cats in need. I’m currently working with them to design a new system to help make this large scale operation easier.
Figma
Service Design, User Research, Wireframing
2 months
This large-scale Toronto based non-profit finds homes for ~2700 cats per year with the help of ~1100 volunteers. They have a network of 400+ foster homes that act as temporary housing for the cats until they can find permanent care.
During my design internship at Shopify, one of my coworkers, Nataly, posted on Slack that she was looking for a designer to volunteer their time. I jumped at the chance since who doesn’t love cats 🐱💓?
Currently, there is no custom technology used for managing this large scale operation so the goal of this project was to design a streamlined and centralized system to easily track and manage cats.
Project KPIs
Reduce time to enter data and reduce data duplication and errors.
We are a 6 person team. My coworker from Shopify who volunteers at the shelter, Nataly, leads the infra team of 3 other student developers and is also the product manager.
For the design team, Miguel is the other designer working on the project with me.
In this project, Miguel and I have worked collaboratively together on all the different stages. We took turns leading the user interviews with the TCR volunteer leads and synthesized the information together after.
Currently, we are both working on design explorations and bouncing ideas off each other to get feedback. Then, we will decide on a few options to start user testing with the volunteers.
No API for Integration
Spreadsheets and PetPoint are used to manage and track cats. After a cat has been adopted, they’re completely moved over to PetPoint (an industry standard data management system) to get the cat microchip, apply for a pet license and archive the cat. PetPoint uses per-seat licensing, which is too expensive for ~1100 volunteers and there is no API to integrate any solution we create with this software.
Unfamiliar with Technology
Majority of the volunteers are older adults that are unfamiliar with technology, so it is important for the designs to be accessible, explicit and reduce cognitive load.
After gathering some context from Nataly, Miguel and I had a lot of questions about how the whole process worked. We interviewed each of the volunteer leads and the TCR Vice President.
We held 7 one hour long interviews where we asked people to walk us through their job and to verbalize their frustrations aloud.
We discovered that this entire large scale operation was managed through spreadsheets and email. PetPoint, an enterprise software was used to manage the data as well, but mainly used for archiving adopted cats, ordering microchip identifiers and applying for pet licenses.
There were pain points at every stage.
It was obvious that there would be pain points at every stage but after the interviews, it was clear there were pain points in between the stages too.
We learned that every stage had a couple volunteer leads, and they had developed their own processes that suited their own team.
This meant that no one knew about what happened outside their team, and how their actions could affect other teams.
Since I learned about service design at my internship at Shopify, I led the creation of a service design blueprint to help our team and the volunteers visualize the relationships between each stage.
We shared this blueprint to our team and the TCR organization so everyone could have a better understanding of the entire process.
We gathered a lot of information through the interviews and follow up discussions so I summarized the insights into 4 categories to help guide our design work.
There is a lot of manual data entry across multiple spreadsheets.
Current State
Thousands of hours are spent every year doing data clean up and fixing errors.
Result
Around 5-10 cats are “lost” every month. One of the leads we spoke to is in charge of finding out what happened. Sometimes cats are linked to the wrong adopter or the data is entered incorrectly.
Some of the cats that come into TCR are emergency cases where the cats need homes right away.
Current State
When this happens, urgency is prioritized over process and certain leads will take action to find homes for these cats right away.
Result
Sometimes, people will forget to backfill the data or notify other volunteers that the cat has already been moved to a different stage.
Everyone is a volunteer so people work when they can so you may hand off work to someone else who is working a couple days later.
Current State
Volunteers try to use colours, notes and abbreviations to indicate important messages or special instructions.
Result
Not everyone will see these notes–cats might end up being matched with unsuitable homes.
TCR is responsible for all cats processed through them so all records must be kept on file: documents, vaccinations, microchip identifiers.
Current State
This history is being kept in a notes column in the spreadsheet whenever there are updates.
Result
Many volunteers are editing and accessing these sheets. Often, they need to revert accidental changes.
Currently, Miguel and I are exploring early concepts. We plan to wireframe a few flows to user test with volunteers.
I’m still working on this project but if you’d like to hear more about it, feel free to send me an email–I’d love to chat ☕.
If you'd like to see more, check out my other projects below!


Logo
Home
About
Login
Sign up
Contact
About
I am a very simple card. I am good at containing small bits of information.
This is a link
I am a very simple card. I am good at containing small bits of information.
This is a link
I am a very simple card. I am good at containing small bits of information.
This is a link
Contact
First Name
Last Name
Email
Messsage
Send